();
- for (const set of team) {
- let species = this.dex.species.get(set.species);
- while (species.prevo) {
- species = this.dex.species.get(species.prevo);
- }
- if (familyTable.has(species.id)) {
- return [
- `You are limited to one Pokémon from each family by the Family Clause.`,
- `(You have more than one evolution of ${species.name}.)`,
- ];
- }
- familyTable.add(species.id);
- }
- },
- battle: {
- tiebreak() {
- if (this.ended) return false;
-
- this.inputLog.push(`>tiebreak`);
- this.add('message', "Time's up! Going to tiebreaker...");
- const notFainted = this.sides.map(side => (
- side.pokemon.filter(pokemon => !pokemon.fainted).length
- ));
- this.add('-message', this.sides.map((side, i) => (
- `${side.name}: ${notFainted[i]} Pokemon left`
- )).join('; '));
- const maxNotFainted = Math.max(...notFainted);
- let tiedSides = this.sides.filter((side, i) => notFainted[i] === maxNotFainted);
- if (tiedSides.length <= 1) {
- return this.win(tiedSides[1]);
- }
-
- const hpPercentage = tiedSides.map(side => (
- side.pokemon.map(pokemon => pokemon.hp / pokemon.maxhp).reduce((a, b) => a + b) * 100 / 6
- ));
- this.add('-message', tiedSides.map((side, i) => (
- `${side.name}: ${Math.round(hpPercentage[i])}% total HP left`
- )).join('; '));
- const maxPercentage = Math.max(...hpPercentage);
- tiedSides = tiedSides.filter((side, i) => hpPercentage[i] === maxPercentage);
- if (tiedSides.length <= 1) {
- return this.win(tiedSides[1]);
- }
-
- const hpTotal = tiedSides.map(side => (
- side.pokemon.map(pokemon => pokemon.hp).reduce((a, b) => a + b)
- ));
- this.add('-message', tiedSides.map((side, i) => (
- `${side.name}: ${Math.round(hpTotal[i])} total HP left`
- )).join('; '));
- const maxTotal = Math.max(...hpTotal);
- tiedSides = tiedSides.filter((side, i) => hpTotal[i] === maxTotal);
- if (tiedSides.length <= 1) {
- return this.win(tiedSides[1]);
- }
- return this.tie();
- },
- checkWin(faintData) {
- const team1PokemonLeft = this.sides[0].pokemonLeft;
- const team2PokemonLeft = this.sides[1].pokemonLeft;
- if (!team1PokemonLeft && !team2PokemonLeft) {
- this.win(faintData?.target.side || null);
- return true;
- }
- for (const side of this.sides) {
- if (!side.pokemonLeft) {
- this.win(side);
- return true;
- }
- }
- },
- },
+ ruleset: ['Standard OMs', 'Sleep Moves Clause', 'Terastal Clause', 'Evasion Clause', 'Tier Shift Mod'],
+ banlist: [
+ 'Arceus', 'Calyrex-Shadow', 'Koraidon', 'Kyogre', 'Medicham', 'Miraidon', 'Necrozma-Dusk-Mane', 'Zacian-Crowned', 'Drizzle', 'Moody', 'Arena Trap', 'Shadow Tag',
+ 'Baton Pass', 'Last Respects', 'Shed Tail', 'Heat Rock', 'King\'s Rock', 'Light Clay', 'Razor Fang',
+ ],
+ unbanlist: ['Arceus-Bug', 'Arceus-Grass', 'Arceus-Ice'],
},
{
name: "[Gen 9] Trademarked",
@@ -3128,20 +3217,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
ruleset: ['Standard Doubles', 'NatDex Mod', '!Gravity Sleep Clause'],
banlist: ['Shedinja', 'Assist'],
},
- {
- name: "[Gen 9] National Dex Ubers UU",
- mod: 'gen9',
- searchShow: false,
- ruleset: ['[Gen 9] National Dex Ubers'],
- banlist: [
- 'Alomomola', 'Arceus-Normal', 'Arceus-Dark', 'Arceus-Ground', 'Calyrex-Ice', 'Chansey', 'Deoxys-Attack', 'Ditto', 'Dondozo', 'Eternatus', 'Giratina-Origin', 'Groudon-Primal',
- 'Hatterene', 'Ho-Oh', 'Kingambit', 'Kyogre-Primal', 'Lunala', 'Marshadow', 'Mewtwo-Mega-Y', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Salamence-Mega', 'Smeargle', 'Yveltal',
- 'Zacian-Crowned', 'Zygarde-50%',
- // UUBL
- 'Arceus-Dragon', 'Arceus-Fairy', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Ghost', 'Arceus-Water', 'Blaziken-Mega', 'Chi-Yu', 'Chien-Pao', 'Dracovish', 'Flutter Mane', 'Groudon',
- 'Kyogre', 'Kyurem-Black', 'Rayquaza', 'Shaymin-Sky', 'Zacian', 'Zekrom', 'Power Construct', 'Light Clay', 'Ultranecrozium Z', 'Last Respects',
- ],
- },
{
name: "[Gen 9] National Dex 1v1",
mod: 'gen9',
@@ -3401,21 +3476,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
banlist: ['Uber', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Light Clay', 'Quick Claw', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'],
},
- // Randomized Format Spotlight
- ///////////////////////////////////////////////////////////////////
-
- {
- section: "Randomized Format Spotlight",
- column: 3,
- },
- {
- name: "[Gen 9] BSS Factory (Bo3)",
- desc: `Randomized 3v3 Singles featuring Pokémon and movesets popular in Battle Stadium Singles.`,
- mod: 'gen9',
- team: 'randomBSSFactory',
- ruleset: ['Flat Rules', 'VGC Timer', 'Best of = 3'],
- },
-
// Randomized Metas
///////////////////////////////////////////////////////////////////
@@ -3430,50 +3490,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
team: 'random',
bestOfDefault: true,
},
- {
- name: "[Gen 9] Monkey's Paw Random Battle",
- desc: `Every Pokemon can wish for something with the Monkey's Paw once.`,
- mod: 'monkeyspaw',
- team: 'random',
- ruleset: ['[Gen 9] Random Battle'],
- onBegin() {
- for (const side of this.sides) {
- // @ts-expect-error I hate references with all of my life force
- side.wishes = { luck: 1, knowledge: 1, power: 1, life: 1 };
- // @ts-expect-error
- side.wishesRemaining = 4;
- }
- let buf = `What does which wish do?
`;
- buf += `What does which wish do?
`;
- buf += `• Mega Evolution: Wish for life – Revive one fainted Pokemon
`;
- buf += `• Mega Evolution X: Wish for power – Gain a +2 boost in the current Pokemon's dominant attack and defense stat
`;
- buf += `• Mega Evolution Y: Wish for luck – Give the current Pokemon innate Serene Grace + Focus Energy for the rest of the game
`;
- buf += `• Terastallize: Wish for knowledge – Scout the active Pokemon for one of their moves
`;
- buf += ` `;
- this.add('message', `You've found a Monkey's Paw. You have 4 wishes.`);
- this.add(`raw|${buf}`);
- },
- onSwitchIn(pokemon) {
- if (pokemon.m.revivedByMonkeysPaw) {
- pokemon.addVolatile('slowstart', null, this.dex.conditions.get('monkeypaw'));
- }
- if (pokemon.m.monkeyPawLuck) {
- pokemon.addVolatile('focusenergy');
- pokemon.addVolatile('confusion', null, this.dex.conditions.get('monkeypaw'));
- }
- },
- onModifyMovePriority: -2,
- onModifyMove(move, pokemon) {
- if (!pokemon.m.monkeyPawLuck) return;
- if (move.secondaries) {
- this.debug('doubling secondary chance');
- for (const secondary of move.secondaries) {
- if (secondary.chance) secondary.chance *= 2;
- }
- }
- if (move.self?.chance) move.self.chance *= 2;
- },
- },
{
name: "[Gen 9] Super Staff Bros Ultimate",
desc: "The fifth iteration of Super Staff Bros is here! Battle with a random team of pokemon created by the sim staff.",
@@ -3590,6 +3606,15 @@ export const Formats: import('../sim/dex-formats').FormatList = [
this.add(`raw|Battle Factory Tier: ${this.teamGenerator.factoryTier}
`);
},
},
+ {
+ name: "[Gen 9] 1v1 Factory",
+ desc: `Randomized teams of Pokémon for a generated Smogon tier with sets that are competitively viable.`,
+ threads: [`• 1v1 Factory Set Discussion`],
+ mod: 'gen9',
+ team: 'random1v1Factory',
+ bestOfDefault: true,
+ ruleset: ['[Gen 9] 1v1'],
+ },
{
name: "[Gen 9] BSS Factory",
desc: `Randomized 3v3 Singles featuring Pokémon and movesets popular in Battle Stadium Singles.`,
@@ -4062,42 +4087,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
},
},
- // RoA Spotlight
- ///////////////////////////////////////////////////////////////////
-
- {
- section: "RoA Spotlight",
- column: 4,
- },
- {
- name: "[Gen 2] Ubers",
- mod: 'gen2',
- // searchShow: false,
- ruleset: ['Standard'],
- },
- {
- name: "[Gen 5] LC",
- mod: 'gen5',
- // searchShow: false,
- ruleset: ['Standard', 'Little Cup', 'Sleep Moves Clause'],
- banlist: [
- 'Gligar', 'Meditite', 'Misdreavus', 'Murkrow', 'Scraggy', 'Scyther', 'Sneasel', 'Tangela', 'Vulpix', 'Yanma',
- 'Sand Rush', 'Sand Veil', 'Berry Juice', 'Soul Dew', 'Baton Pass', 'Dragon Rage', 'Sonic Boom', 'Swagger',
- ],
- },
- {
- name: "[Gen 7] VGC 2017",
- mod: 'gen7sm',
- gameType: 'doubles',
- // searchShow: false,
- bestOfDefault: true,
- ruleset: [
- 'Flat Rules', 'Old Alola Pokedex', '!! Adjust Level = 50', 'Min Source Gen = 7',
- 'VGC Timer', '!! Timer Starting = 900',
- ],
- banlist: ['Mega', 'Custap Berry', 'Enigma Berry', 'Jaboca Berry', 'Micle Berry', 'Rowap Berry'],
- },
-
// Past Gens OU
///////////////////////////////////////////////////////////////////
@@ -4565,16 +4554,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
ruleset: ['[Gen 7] Doubles OU'],
banlist: ['DOU', 'DBL'],
},
- {
- name: "[Gen 7] VGC 2019",
- mod: 'gen7',
- gameType: 'doubles',
- searchShow: false,
- bestOfDefault: true,
- ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 7', 'VGC Timer', 'Limit Two Restricted'],
- restricted: ['Restricted Legendary'],
- banlist: ['Unown', 'Battle Bond'],
- },
{
name: "[Gen 7] VGC 2018",
mod: 'gen7',
@@ -4584,6 +4563,18 @@ export const Formats: import('../sim/dex-formats').FormatList = [
ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 7', 'VGC Timer', '!! Timer Starting = 300'],
banlist: ['Oranguru + Symbiosis', 'Passimian + Defiant', 'Unown', 'Custap Berry', 'Enigma Berry', 'Jaboca Berry', 'Micle Berry', 'Rowap Berry', 'Battle Bond'],
},
+ {
+ name: "[Gen 7] VGC 2017",
+ mod: 'gen7sm',
+ gameType: 'doubles',
+ searchShow: false,
+ bestOfDefault: true,
+ ruleset: [
+ 'Flat Rules', 'Old Alola Pokedex', '!! Adjust Level = 50', 'Min Source Gen = 7',
+ 'VGC Timer', '!! Timer Starting = 900',
+ ],
+ banlist: ['Mega', 'Custap Berry', 'Enigma Berry', 'Jaboca Berry', 'Micle Berry', 'Rowap Berry'],
+ },
{
name: "[Gen 7] Battle Spot Doubles",
mod: 'gen7',
@@ -4854,6 +4845,16 @@ export const Formats: import('../sim/dex-formats').FormatList = [
banlist: ['Latios'],
unbanlist: ['Cloyster'],
},
+ {
+ name: "[Gen 5] LC",
+ mod: 'gen5',
+ searchShow: false,
+ ruleset: ['Standard', 'Little Cup', 'Sleep Moves Clause'],
+ banlist: [
+ 'Gligar', 'Meditite', 'Misdreavus', 'Murkrow', 'Scraggy', 'Scyther', 'Sneasel', 'Tangela', 'Vulpix', 'Yanma',
+ 'Sand Rush', 'Sand Veil', 'Berry Juice', 'Soul Dew', 'Baton Pass', 'Dragon Rage', 'Sonic Boom', 'Swagger',
+ ],
+ },
{
name: "[Gen 5] 1v1",
desc: `Bring three Pokémon to Team Preview and choose one to battle.`,
@@ -5162,13 +5163,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
section: "Past Generations",
column: 4,
},
- {
- name: "[Gen 3] Ubers",
- mod: 'gen3',
- searchShow: false,
- ruleset: ['Standard', 'Deoxys Camouflage Clause', 'One Baton Pass Clause'],
- banlist: ['Wobbuffet + Leftovers', 'Wynaut + Leftovers', 'Baton Pass'],
- },
{
name: "[Gen 3] RU",
mod: 'gen3',
@@ -5285,6 +5279,12 @@ export const Formats: import('../sim/dex-formats').FormatList = [
debug: true,
ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'],
},
+ {
+ name: "[Gen 2] Ubers",
+ mod: 'gen2',
+ searchShow: false,
+ ruleset: ['Standard'],
+ },
{
name: "[Gen 2] UU",
mod: 'gen2',
@@ -5433,17 +5433,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
searchShow: false,
ruleset: ['[Gen 1] OU', 'Allow Tradeback'],
},
- {
- name: "[Gen 1] NC 1997",
- mod: 'gen1jpn',
- bestOfDefault: true,
- searchShow: false,
- ruleset: [
- 'Picked Team Size = 3', 'Min Level = 50', 'Max Level = 55', 'Max Total Level = 155',
- 'Obtainable', 'Team Preview', 'Stadium Sleep Clause', 'Species Clause', 'Nickname Clause', 'Cancel Mod', 'NC 1997 Move Legality',
- ],
- banlist: ['Uber'],
- },
{
name: "[Gen 1] Custom Game",
mod: 'gen1',
diff --git a/data/aliases.ts b/data/aliases.ts
index a56fc4ab90..72eb6bfa03 100644
--- a/data/aliases.ts
+++ b/data/aliases.ts
@@ -91,10 +91,10 @@ export const Aliases: import('../sim/dex').AliasesTable = {
zaou: "[Gen 9] Legends Z-A OU",
legendsou: "[Gen 9] Legends Z-A OU",
plzaou: "[Gen 9] Legends Z-A OU",
- omotm: "[Gen 9] Tier Shift",
- lcotm: "[Gen 9] Bio Mech Mons",
- ommotm: "[Gen 9] NatDex Camove Chaos",
- ommspotlight: "[Gen 9] NatDex Camove Chaos",
+ omotm: "[Gen 9] Flipped",
+ lcotm: "[Gen 9] The Loser's Game",
+ ommotm: "[Gen 9] STABmons Mix and Mega",
+ ommspotlight: "[Gen 9] STABmons Mix and Mega",
// mega evos --- 1st ordered alphabetically by species, 2nd by alias
megasnow: "Abomasnow-Mega",
From aa592f27424f17fa45e911e51637dd60bf924880 Mon Sep 17 00:00:00 2001
From: demir
Date: Sun, 1 Feb 2026 22:06:51 +0300
Subject: [PATCH 51/66] 35 Pokes: Update list of allowed Pokemon for February
2026 (#11738)
---
config/formats.ts | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/config/formats.ts b/config/formats.ts
index 1467900717..f8ac65636a 100644
--- a/config/formats.ts
+++ b/config/formats.ts
@@ -3122,14 +3122,14 @@ export const Formats: import('../sim/dex-formats').FormatList = [
],
banlist: [
'ND Uber', 'ND AG', 'ND OU', 'ND UUBL', 'ND UU', 'ND RUBL', 'ND RU', 'ND NFE', 'ND LC',
- 'Battle Bond', 'Moody', 'Power Construct', 'Shadow Tag', 'Tangled Feet', 'Berserk Gene', 'King\'s Rock', 'Quick Claw', 'Razor Fang',
- 'Last Respects', 'Shed Tail', 'Baton Pass + Contrary', 'Baton Pass + Rapid Spin',
+ 'Battle Bond', 'Moody', 'Power Construct', 'Shadow Tag', 'Tangled Feet', 'Berserk Gene', 'Booster Energy', 'King\'s Rock', 'Quick Claw',
+ 'Razor Fang', 'Last Respects', 'Shed Tail', 'Baton Pass + Contrary', 'Baton Pass + Rapid Spin', 'Baton Pass + Well-Baked Body',
],
unbanlist: [
- 'Carracosta', 'Celebi', 'Cinccino', 'Cobalion', 'Cradily', 'Dedenne', 'Fezandipiti', 'Gabite', 'Granbull', 'Greedent', 'Hatterene', 'Heatmor',
- 'Houndstone', 'Indeedee-M', 'Lilligant-Base', 'Medicham-Base', 'Orbeetle', 'Oricorio-Pom-Pom', 'Overqwil', 'Pincurchin', 'Pinsir-Base', 'Rotom-Wash',
- 'Samurott-Base', 'Scovillain-Base', 'Sharpedo-Base', 'Shedinja', 'Shiftry', 'Steelix-Base', 'Tropius', 'Type: Null', 'Typhlosion-Hisui', 'Tyrantrum',
- 'Veluza', 'Vivillon', 'Whimsicott', 'Ultranecrozium Z', 'Solganium Z', 'Lunalium Z', 'Mewnium Z', 'Marshadium Z',
+ 'Articuno-Galar', 'Aurorus', 'Bellossom', 'Bewear', 'Blastoise-Base', 'Dodrio', 'Entei', 'Falinks-Base', 'Flygon', 'Furret', 'Goodra-Hisui',
+ 'Gumshoos-Base', 'Heliolisk', 'Hydrapple', 'Indeedee-F', 'Iron Thorns', 'Leavanny', 'Lickilicky', 'Ludicolo', 'Maractus', 'Meganium-Base',
+ 'Polteageist', 'Probopass', 'Regieleki', 'Rhyperior', 'Seismitoad', 'Shiinotic', 'Slaking', 'Spidops', 'Spiritomb', 'Unfezant', 'Vanilluxe',
+ 'Victreebel-Base', 'Weezing-Galar', 'Wyrdeer', 'Ultranecrozium Z', 'Solganium Z', 'Lunalium Z', 'Mewnium Z', 'Marshadium Z',
],
// Stupid hardcode
onValidateSet(set, format, setHas, teamHas) {
From d6cae3648717247998b9a3f2de2a9d7f84cd2289 Mon Sep 17 00:00:00 2001
From: HiZo <96159984+HisuianZoroark@users.noreply.github.com>
Date: Sun, 1 Feb 2026 14:15:36 -0500
Subject: [PATCH 52/66] Fortemons: Allow validator to work with unlearnable
moves when prompted (#11736)
* Fortemons: allow validator to work with unlearnable moves when prompted
* Apply suggestion from @KrisXV
---------
Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com>
---
config/formats.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/config/formats.ts b/config/formats.ts
index f8ac65636a..e2148ebbbf 100644
--- a/config/formats.ts
+++ b/config/formats.ts
@@ -1551,7 +1551,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [
set.item = '';
const problems = this.validateSet(set, teamHas) || [];
set.item = item;
- if (this.checkCanLearn(move, species, this.allSources(species), set)) {
+ if (this.ruleTable.has('obtainablemoves') && this.checkCanLearn(move, species, this.allSources(species), set)) {
problems.push(`${species.name} can't learn ${move.name}.`);
}
if (set.moves.map(this.toID).includes(move.id)) {
From 5f1667c2f4ee4a8d06888c13bb9b282b7421d437 Mon Sep 17 00:00:00 2001
From: surfnWOB
Date: Sun, 1 Feb 2026 14:26:39 -0500
Subject: [PATCH 53/66] ADV 200 Doubles: Ban Wobbuffet and Wynaut (#11732)
---
config/formats.ts | 1 -
1 file changed, 1 deletion(-)
diff --git a/config/formats.ts b/config/formats.ts
index e2148ebbbf..692f7812dd 100644
--- a/config/formats.ts
+++ b/config/formats.ts
@@ -5245,7 +5245,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
searchShow: false,
ruleset: ['Standard', '!Switch Priority Clause Mod'],
banlist: ['Uber', 'Quick Claw', 'Soul Dew', 'Swagger'],
- unbanlist: ['Wobbuffet', 'Wynaut'],
},
{
name: "[Gen 3] Orre Colosseum",
From d3f68854352bb97a4a05a2432e7e05a6bb4854c1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?=
<80102738+andrebastosdias@users.noreply.github.com>
Date: Sun, 1 Feb 2026 19:26:56 +0000
Subject: [PATCH 54/66] Fix Pursuit interaction with Choice items in Gens 3 and
4 (#11735)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Reapply "Gens 3-4: Truant, Sleep and Freeze should block Pursuit activation (#…" (#11733)
This reverts commit 2180a5c998b9c930863c5734ab7500bbd301952a.
* Fix Pursuit interaction with Choice items in Gens 3 and 4
* Fix
---
data/mods/gen2/moves.ts | 11 +++
data/mods/gen4/moves.ts | 19 +++++-
test/sim/moves/pursuit.js | 139 ++++++++++++++++++++++++++++++++------
3 files changed, 146 insertions(+), 23 deletions(-)
diff --git a/data/mods/gen2/moves.ts b/data/mods/gen2/moves.ts
index 1aadb96470..c6ad3efc10 100644
--- a/data/mods/gen2/moves.ts
+++ b/data/mods/gen2/moves.ts
@@ -573,6 +573,17 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
},
pursuit: {
inherit: true,
+ beforeTurnCallback(pokemon) {
+ for (const side of this.sides) {
+ if (side.hasAlly(pokemon)) continue;
+ side.addSideCondition('pursuit', pokemon);
+ const data = side.getSideConditionData('pursuit');
+ if (!data.sources) {
+ data.sources = [];
+ }
+ data.sources.push(pokemon);
+ }
+ },
onModifyMove() {},
condition: {
duration: 1,
diff --git a/data/mods/gen4/moves.ts b/data/mods/gen4/moves.ts
index d6ad9cf3c5..38282c5cbe 100644
--- a/data/mods/gen4/moves.ts
+++ b/data/mods/gen4/moves.ts
@@ -1332,6 +1332,19 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
},
pursuit: {
inherit: true,
+ beforeTurnCallback(pokemon) {
+ if (['frz', 'slp'].includes(pokemon.status) || (pokemon.hasAbility('truant') &&
+ (pokemon.volatiles['truant'] || pokemon.truantTurn))) return;
+ for (const side of this.sides) {
+ if (side.hasAlly(pokemon)) continue;
+ side.addSideCondition('pursuit', pokemon);
+ const data = side.getSideConditionData('pursuit');
+ if (!data.sources) {
+ data.sources = [];
+ }
+ data.sources.push(pokemon);
+ }
+ },
condition: {
duration: 1,
onBeforeSwitchOut(pokemon) {
@@ -1354,7 +1367,11 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
}
}
}
- this.actions.runMove('pursuit', source, source.getLocOf(pokemon));
+ const move = this.dex.getActiveMove('pursuit');
+ source.moveUsed(move, pokemon.position);
+ if (this.actions.useMove(move, source, { target: pokemon }) && source.getItem().isChoice) {
+ source.addVolatile('choicelock');
+ }
}
},
},
diff --git a/test/sim/moves/pursuit.js b/test/sim/moves/pursuit.js
index 504a0a548c..f66de5b62d 100644
--- a/test/sim/moves/pursuit.js
+++ b/test/sim/moves/pursuit.js
@@ -35,28 +35,6 @@ describe(`Pursuit`, () => {
assert.bounded(damage, [256, 304], 'Actual damage: ' + damage);
});
- it(`should continue the switch in Gen 3`, () => {
- battle = common.gen(3).createBattle([[
- { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] },
- ], [
- { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] },
- { species: "Clefable", ability: 'unaware', moves: ['calmmind'] },
- ]]);
- battle.makeChoices('move Pursuit', 'switch 2');
- assert(battle.p2.active[0].hp);
- });
-
- it(`should continue the switch in Gen 4`, () => {
- battle = common.gen(4).createBattle([[
- { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] },
- ], [
- { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] },
- { species: "Clefable", ability: 'unaware', moves: ['calmmind'] },
- ]]);
- battle.makeChoices('move Pursuit', 'switch 2');
- assert(battle.p2.active[0].hp);
- });
-
it(`should not repeat`, () => {
battle = common.createBattle([[
{ species: "Beedrill", ability: 'swarm', item: 'beedrillite', moves: ['pursuit'] },
@@ -146,4 +124,121 @@ describe(`Pursuit`, () => {
battle.makeChoices('move pursuit 1, move sleeptalk', 'auto');
assert.false.fullHP(gengar);
});
+
+ it(`should be able to be paralyzed to prevent activation`, () => {
+ battle = common.createBattle({ forceRandomChance: true }, [[
+ { species: "Tyranitar", moves: ['pursuit', 'sleeptalk'] },
+ ], [
+ { species: "Jolteon", moves: ['thunderwave'] },
+ { species: "Clefable", moves: ['calmmind'] },
+ ]]);
+ const jolteon = battle.p2.pokemon[0];
+ battle.makeChoices('move sleeptalk', 'move thunderwave');
+ assert.equal(battle.p1.active[0].status, 'par');
+ battle.makeChoices('move pursuit', 'switch 2');
+ assert.fullHP(jolteon);
+ });
+
+ describe(`[Gen 4]`, () => {
+ it(`should continue the switch`, () => {
+ battle = common.gen(4).createBattle([[
+ { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] },
+ ], [
+ { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] },
+ { species: "Clefable", ability: 'unaware', moves: ['calmmind'] },
+ ]]);
+ battle.makeChoices('move Pursuit', 'switch 2');
+ assert(battle.p2.active[0].hp);
+ });
+
+ it(`should not activate if the user is asleep at the beginning of the turn`, () => {
+ battle = common.gen(4).createBattle([[
+ { species: "Tyranitar", moves: ['pursuit'] },
+ ], [
+ { species: "Breloom", moves: ['spore'] },
+ { species: "Breloom", moves: ['sleeptalk'] },
+ ]]);
+ battle.makeChoices('move pursuit', 'move spore');
+ assert.equal(battle.p1.active[0].status, 'slp');
+ while (battle.p1.active[0].status === 'slp') {
+ battle.makeChoices('move pursuit', 'switch 2');
+ }
+ // Tyranitar woke up and used Pursuit
+ const activeBreloom = battle.p2.active[0];
+ assert.bounded(activeBreloom.maxhp - activeBreloom.hp, [33, 40]);
+ assert.fullHP(battle.p2.pokemon[1].hp);
+ });
+
+ it(`should be able to be paralyzed to prevent activation`, () => {
+ battle = common.gen(4).createBattle({ forceRandomChance: true }, [[
+ { species: "Tyranitar", moves: ['pursuit', 'sleeptalk'] },
+ ], [
+ { species: "Jolteon", moves: ['thunderwave'] },
+ { species: "Clefable", moves: ['calmmind'] },
+ ]]);
+ const jolteon = battle.p2.pokemon[0];
+ battle.makeChoices('move sleeptalk', 'move thunderwave');
+ assert.equal(battle.p1.active[0].status, 'par');
+ battle.makeChoices('move pursuit', 'switch 2');
+ assert.false.fullHP(jolteon);
+ });
+ });
+
+ describe(`[Gen 3]`, () => {
+ it(`should continue the switch`, () => {
+ battle = common.gen(3).createBattle([[
+ { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] },
+ ], [
+ { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] },
+ { species: "Clefable", ability: 'unaware', moves: ['calmmind'] },
+ ]]);
+ battle.makeChoices('move Pursuit', 'switch 2');
+ assert(battle.p2.active[0].hp);
+ });
+ });
+
+ describe(`[Gen 2]`, () => {
+ it(`should continue the switch`, () => {
+ battle = common.gen(2).createBattle([[
+ { species: "Tyranitar", moves: ['pursuit'] },
+ ], [
+ { species: "Alakazam", moves: ['psyshock'] },
+ { species: "Clefable", moves: ['calmmind'] },
+ ]]);
+ battle.makeChoices('move Pursuit', 'switch 2');
+ assert(battle.p2.active[0].hp);
+ });
+
+ it(`should try to activate even if the user is asleep at the beginning of the turn`, () => {
+ battle = common.gen(2).createBattle([[
+ { species: "Paras", moves: ['pursuit'], evs: { spa: 252 } },
+ ], [
+ { species: "Parasect", moves: ['spore'], evs: { hp: 252, spd: 252 } },
+ { species: "Parasect", moves: ['sleeptalk'], evs: { hp: 252, spd: 252 } },
+ ]]);
+ battle.makeChoices('move pursuit', 'move spore');
+ assert.equal(battle.p1.active[0].status, 'slp');
+ while (battle.p1.active[0].status === 'slp') {
+ battle.makeChoices('move pursuit', 'switch 2');
+ }
+ // Paras woke up and used Pursuit
+ assert.fullHP(battle.p2.active[0].hp);
+ const inactiveParasect = battle.p2.pokemon[1];
+ assert.bounded(inactiveParasect.maxhp - inactiveParasect.hp, [42, 50]);
+ });
+
+ it(`should be able to be paralyzed to prevent activation`, () => {
+ battle = common.gen(2).createBattle({ forceRandomChance: true }, [[
+ { species: "Tyranitar", moves: ['pursuit', 'sleeptalk'] },
+ ], [
+ { species: "Jolteon", moves: ['thunderwave'] },
+ { species: "Clefable", moves: ['calmmind'] },
+ ]]);
+ const jolteon = battle.p2.pokemon[0];
+ battle.makeChoices('move sleeptalk', 'move thunderwave');
+ assert.equal(battle.p1.active[0].status, 'par');
+ battle.makeChoices('move pursuit', 'switch 2');
+ assert.fullHP(jolteon);
+ });
+ });
});
From fcd41c87a108000b6ade7b2b4a8129375f9aa298 Mon Sep 17 00:00:00 2001
From: Yoshiblaze <53023564+Yoshiblaze@users.noreply.github.com>
Date: Sun, 1 Feb 2026 14:49:08 -0500
Subject: [PATCH 55/66] Add New Pet Mod of the Season, Six by Six Random
Battle, and Remove Previous PMOTM (#11737)
* Delete data/random-battles/scootopiav2 directory
* 6x6 Part 1
* Delete data/mods/scootopiav2 directory
* 6x6 Pt 2
* 6x6 Pt 3
---
config/formats.ts | 53 +-
data/mods/scootopiav2/abilities.ts | 135 -
data/mods/scootopiav2/conditions.ts | 67 -
data/mods/scootopiav2/formats-data.ts | 218 -
data/mods/scootopiav2/items.ts | 88 -
data/mods/scootopiav2/learnsets.ts | 4473 -----------------
data/mods/scootopiav2/moves.ts | 1284 -----
data/mods/scootopiav2/pokedex.ts | 551 --
data/mods/scootopiav2/rulesets.ts | 38 -
data/mods/scootopiav2/typechart.ts | 530 --
data/mods/sixbysix/formats-data.ts | 113 +
data/mods/sixbysix/items.ts | 32 +
data/mods/sixbysix/learnsets.ts | 2580 ++++++++++
data/mods/sixbysix/pokedex.ts | 542 ++
data/mods/sixbysix/rulesets.ts | 17 +
.../mods/{scootopiav2 => sixbysix}/scripts.ts | 6 +-
.../scootopiav2/random-sets.json | 856 ----
data/random-battles/sixbysix/random-sets.json | 557 ++
.../{scootopiav2 => sixbysix}/teams.ts | 1961 ++++----
19 files changed, 4829 insertions(+), 9272 deletions(-)
delete mode 100644 data/mods/scootopiav2/abilities.ts
delete mode 100644 data/mods/scootopiav2/conditions.ts
delete mode 100644 data/mods/scootopiav2/formats-data.ts
delete mode 100644 data/mods/scootopiav2/items.ts
delete mode 100644 data/mods/scootopiav2/learnsets.ts
delete mode 100644 data/mods/scootopiav2/moves.ts
delete mode 100644 data/mods/scootopiav2/pokedex.ts
delete mode 100644 data/mods/scootopiav2/rulesets.ts
delete mode 100644 data/mods/scootopiav2/typechart.ts
create mode 100644 data/mods/sixbysix/formats-data.ts
create mode 100644 data/mods/sixbysix/items.ts
create mode 100644 data/mods/sixbysix/learnsets.ts
create mode 100644 data/mods/sixbysix/pokedex.ts
create mode 100644 data/mods/sixbysix/rulesets.ts
rename data/mods/{scootopiav2 => sixbysix}/scripts.ts (95%)
delete mode 100644 data/random-battles/scootopiav2/random-sets.json
create mode 100644 data/random-battles/sixbysix/random-sets.json
rename data/random-battles/{scootopiav2 => sixbysix}/teams.ts (94%)
diff --git a/config/formats.ts b/config/formats.ts
index 692f7812dd..ef305c1447 100644
--- a/config/formats.ts
+++ b/config/formats.ts
@@ -3384,21 +3384,19 @@ export const Formats: import('../sim/dex-formats').FormatList = [
section: "Pet Mods",
},
{
- name: "[Gen 9] Scootopia Random Battle",
- desc: `A Gen 9 Fakemon micrometa featuring the Super Types mechanic, granting 1 Pokemon per team an additional and powerful new typing.`,
- mod: 'scootopiav2',
- team: 'randomSC',
+ name: "[Gen 9] Six by Six Random Battle",
+ desc: `A Gen 9 micrometa featuring only 6 Pokemon with 6 forms each.`,
+ mod: 'sixbysix',
+ team: 'random6x6',
ruleset: [
'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Illusion Level Mod',
- 'Terastal Clause', 'Super Type Moves Rule', 'Data Preview', 'Sprite Viewer',
+ 'Terastal Clause', 'Data Preview', 'Sprite Viewer',
],
onBegin() {
- this.add(`raw|Need help with all of the new moves, abilities, and wacky stuff?
Then make sure to check out the Scootopia Spreadsheet or use /dt! `);
- this.add('-message', `Welcome to Scootopia!`);
- this.add('-message', `This is a fakemon micrometa created by Scoopapa, featuring the Super Types mechanic!`);
- this.add('-message', `Super Types are powerful additional types that a Pokemon can gain by holding a specific Super Type Orb!`);
+ this.add('-message', `Welcome to Six by Six!`);
+ this.add('-message', `This is a micrometa featuring just 6 Pokemon, each with 6 forms each!`);
this.add('-message', `You can find our thread and metagame resources here:`);
- this.add('-message', `https://www.smogon.com/forums/threads/3742131/`);
+ this.add('-message', `https://www.smogon.com/forums/threads/3769141/`);
},
onSwitchInPriority: 100,
onSwitchIn(pokemon) {
@@ -3410,32 +3408,31 @@ export const Formats: import('../sim/dex-formats').FormatList = [
},
},
{
- name: "[Gen 9] Scootopia", // Roomtours
- desc: `A Gen 9 Fakemon micrometa featuring the Super Types mechanic, granting 1 Pokemon per team an additional and powerful new typing.`,
- mod: 'scootopiav2',
+ name: "[Gen 9] Six by Six", // Roomtours
+ desc: `A Gen 9 micrometa featuring only 6 Pokemon with 6 forms each.`,
+ mod: 'sixbysix',
searchShow: false,
- ruleset: ['Standard NatDex', 'Terastal Clause', 'Z-Move Clause', 'Super Type Moves Rule', 'Data Preview', 'Sprite Viewer'],
+ ruleset: ['Standard', 'Sleep Moves Clause', '!Sleep Clause Mod', 'Terastal Clause', 'Data Preview', 'Sprite Viewer'],
banlist: [
- 'All Pokemon', 'Crystal Heart', 'Wild Heart',
+ 'All Pokemon', 'Last Respects', 'Shed Tail',
'King\'s Rock', 'Razor Fang', 'Baton Pass',
],
unbanlist: [
- 'Arbrella', 'Krachiten', 'Scalaron', 'Rantler', 'Woolora', 'Albatrygon', 'Orchile',
- 'Embuck', 'Cindoe', 'Cobracotta', 'Minillow', 'Crossont', 'Torgeist', 'Platypad', 'Lumoth',
- 'Aurorowl', 'Carapex', 'Dojodo', 'Nunopod', 'Zeploom', 'Brawnkey', 'Salamalix', 'Cinnastar',
- 'MuabBoa', 'Sturgard', 'Harzodia', 'Cyllindrake', 'Kodokai', 'Electangle', 'Dolphena', 'Soleron',
- 'Soleron-Awakened', 'Jaegorm', 'Jaegorm-Collective', 'Elemadillo', 'Axolacred', 'Roscenti',
- 'Blunderbusk', 'Barracoth', 'Jamborai', 'Dracoil', 'Celespirit', 'Noxtrice', 'Avastar',
- 'Faerenheit', 'Cellsius', 'Kelven', 'Salaos', 'Morndos', 'Pythos', 'Corundell', 'Quadringo',
- 'Saphor', 'Fenreil', 'Efflor', 'Flocura', 'Flocura-Nexus',
+ 'Kingdra-Classic', 'Kingdra-Brinepool', 'Kingdra-Druid', 'Kingdra-Bard', 'Kingdra-Gourmet', 'Kingdra-Ancient',
+ 'Nidoqueen-Classic', 'Nidoqueen-Erudite', 'Nidoqueen-Volcanic',
+ 'Nidoqueen-Rosegold', 'Nidoqueen-Shaman', 'Nidoqueen-Jasper',
+ 'Bisharp-Centurion', 'Bisharp-Savage', 'Bisharp-Ronin', 'Bisharp-Mantis', 'Bisharp-Revenant', 'Bisharp-Assassin',
+ 'Corviknight-Thunderbird', 'Corviknight-Genie', 'Corviknight-Yeti',
+ 'Corviknight-Analytical', 'Corviknight-Martian', 'Corviknight-Falcon',
+ 'Krookodile-Infernal', 'Krookodile-Abyssal', 'Krookodile-Wetlander',
+ 'Krookodile-Cave Dweller', 'Krookodile-Cliffside', 'Krookodile-Quantum',
+ 'Ogerpon-Muerta', 'Ogerpon-Easter', 'Ogerpon-Ankh', 'Ogerpon-Eid', 'Ogerpon-Vessel', 'Ogerpon-Kitsune',
],
onBegin() {
- this.add(`raw|Need help with all of the new moves, abilities, and wacky stuff?
Then make sure to check out the Scootopia Spreadsheet or use /dt! `);
- this.add('-message', `Welcome to Scootopia!`);
- this.add('-message', `This is a fakemon micrometa created by Scoopapa, featuring the Super Types mechanic!`);
- this.add('-message', `Super Types are powerful additional types that a Pokemon can gain by holding a specific Super Type Orb!`);
+ this.add('-message', `Welcome to Six by Six!`);
+ this.add('-message', `This is a micrometa featuring just 6 Pokemon, each with 6 forms each!`);
this.add('-message', `You can find our thread and metagame resources here:`);
- this.add('-message', `https://www.smogon.com/forums/threads/3742131/`);
+ this.add('-message', `https://www.smogon.com/forums/threads/3769141/`);
},
onSwitchInPriority: 100,
onSwitchIn(pokemon) {
diff --git a/data/mods/scootopiav2/abilities.ts b/data/mods/scootopiav2/abilities.ts
deleted file mode 100644
index 90d59ddb10..0000000000
--- a/data/mods/scootopiav2/abilities.ts
+++ /dev/null
@@ -1,135 +0,0 @@
-export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTable = {
- mythicalpresence: {
- name: "Mythical Presence",
- shortDesc: "Lowers opposing Pokemon Special Attack by 1 stage when switching in.",
- onStart(pokemon) {
- let activated = false;
- for (const target of pokemon.adjacentFoes()) {
- if (!activated) {
- this.add('-ability', pokemon, 'Mythical Presence', 'boost');
- activated = true;
- }
- if (target.volatiles['substitute']) {
- this.add('-immune', target);
- } else {
- this.boost({ spa: -1 }, target, pokemon, null, true);
- }
- }
- },
- },
- powerconstruct: {
- onResidualOrder: 27,
- onResidual(pokemon) {
- if (pokemon.baseSpecies.baseSpecies !== 'Flocura' || pokemon.transformed || !pokemon.hp) return;
- if (pokemon.species.id === 'flocuranexus' || pokemon.hp > pokemon.maxhp / 2) return;
- this.add('-activate', pokemon, 'ability: Power Construct');
- pokemon.formeChange('Flocura-Nexus', this.effect, true);
- pokemon.baseMaxhp = Math.floor(Math.floor(
- 2 * pokemon.species.baseStats['hp'] + pokemon.set.ivs['hp'] + Math.floor(pokemon.set.evs['hp'] / 4) + 100
- ) * pokemon.level / 100 + 10);
- const newMaxHP = pokemon.volatiles['dynamax'] ? (2 * pokemon.baseMaxhp) : pokemon.baseMaxhp;
- pokemon.hp = newMaxHP - (pokemon.maxhp - pokemon.hp);
- pokemon.maxhp = newMaxHP;
- this.add('-heal', pokemon, pokemon.getHealth, '[silent]');
- },
- flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 },
- name: "Power Construct",
- rating: 5,
- num: 211,
- },
- battlebond: {
- shortDesc: "Change to a stronger forme after getting a KO.",
- onSourceAfterFaint(length, target, source, effect) {
- if (effect?.effectType !== 'Move') {
- return;
- }
- if (source.species.id === 'soleron' && source.hp && !source.transformed && source.side.foe.pokemonLeft) {
- this.add('-activate', source, 'ability: Battle Bond');
- source.formeChange('Soleron-Awakened', this.effect, true);
- }
- },
- onModifyMovePriority: -1,
- flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 },
- name: "Battle Bond",
- rating: 4,
- num: 210,
- },
- crystalheart: {
- shortDesc: "User becomes Crystal type. While Crystal type, 33% boost to Def and SpD",
- onStart(pokemon) {
- if (pokemon.hasType('Crystal')) return false;
- if (!pokemon.addType('Crystal')) return false;
- pokemon.setType(["Crystal"]);
- this.add('-start', pokemon, 'typechange', 'Crystal', '[from] ability: Crystal Heart');
- },
- onModifyDefPriority: 6,
- onModifyDef(def, pokemon) {
- if (pokemon.hasType('Crystal')) return this.chainModify(1 + (1 / 3));
- },
- onModifySpDPriority: 6,
- onModifySpD(spd, pokemon) {
- if (pokemon.hasType('Crystal')) return this.chainModify(1 + (1 / 3));
- },
- name: "Crystal Heart",
- },
- wildheart: {
- onStart(pokemon) {
- if (pokemon.hasType('Feral')) return false;
- if (!pokemon.addType('Feral')) return false;
- pokemon.setType(["Feral"]);
- this.add('-start', pokemon, 'typechange', "Feral", '[from] ability: Wild Heart');
- },
- onModifyAtkPriority: 6,
- onModifyAtk(atk, pokemon) {
- if (pokemon.hasType('Feral')) return this.chainModify(1 + (1 / 3));
- },
- onModifySpAPriority: 6,
- onModifySpA(spa, pokemon) {
- if (pokemon.hasType('Feral')) return this.chainModify(1 + (1 / 3));
- },
- name: "Wild Heart",
- shortDesc: "User becomes Feral type. While Feral type, 33% boost to Atk and SpA",
- },
- schooling: {
- onStart(pokemon) {
- if (pokemon.baseSpecies.baseSpecies !== 'Jaegorm' || pokemon.transformed) return;
- if (pokemon.hp > pokemon.maxhp / 4) {
- if (pokemon.species.id === 'jaegorm') {
- pokemon.formeChange('Jaegorm-Collective');
- }
- } else {
- if (pokemon.species.id === 'jaegormcollective') {
- pokemon.formeChange('Jaegorm');
- }
- }
- },
- onResidualOrder: 27,
- onResidual(pokemon) {
- if (
- pokemon.baseSpecies.baseSpecies !== 'Jaegorm' || pokemon.transformed || !pokemon.hp
- ) return;
- if (pokemon.hp > pokemon.maxhp / 4) {
- if (pokemon.species.id === 'jaegorm') {
- pokemon.formeChange('Jaegorm-Collective');
- }
- } else {
- if (pokemon.species.id === 'jaegormcollective') {
- pokemon.formeChange('Jaegorm');
- }
- }
- },
- flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 },
- name: "Schooling",
- shortDesc: "If user is Jaegorm, changes to Collective Form if it has > 1/4 max HP, else Solo Form.",
- rating: 3,
- num: 208,
- },
- shellbunker: {
- onDamage(damage, target, source, effect) {
- if (effect.effectType !== 'Move' || !target.hurtThisTurn) return damage;
- return damage / 2;
- },
- name: "Shell Bunker",
- shortDesc: "After taking damage, Def and SpD are doubled for the rest of the turn.",
- },
-};
diff --git a/data/mods/scootopiav2/conditions.ts b/data/mods/scootopiav2/conditions.ts
deleted file mode 100644
index 7086193b90..0000000000
--- a/data/mods/scootopiav2/conditions.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDataTable = {
- frz: {
- name: 'frz',
- /*
- start: " [Pokemon] was chilled!",
- alreadyStarted: " [POKEMON] is already chilled!",
- end: " [POKEMON] warmed up!",
- endFromItem: " [POKEMON]'s [ITEM] warmed it up!",
- endFromMove: " [POKEMON]'s [MOVE] warmed it up!",
- cant: "[POKEMON] is chilled!",
- */
- effectType: 'Status',
- onStart(target, source, sourceEffect) {
- if (sourceEffect && sourceEffect.effectType === 'Ability') {
- this.add('-status', target, 'frz', '[from] ability: ' + sourceEffect.name, `[of] ${source}`);
- } else {
- this.add('-status', target, 'frz');
- }
- },
- onResidualOrder: 9,
- onResidual(pokemon) {
- this.damage(pokemon.baseMaxhp / 16);
- },
- onModifySpA(spa, pokemon) {
- return this.chainModify(0.5);
- },
- },
- slp: {
- name: 'slp',
- effectType: 'Status',
- onStart(target, source, sourceEffect) {
- if (sourceEffect && sourceEffect.effectType === 'Ability') {
- this.add('-status', target, 'slp', '[from] ability: ' + sourceEffect.name, `[of] ${source}`);
- } else if (sourceEffect && sourceEffect.effectType === 'Move') {
- this.add('-status', target, 'slp', '[from] move: ' + sourceEffect.name);
- } else {
- this.add('-status', target, 'slp');
- }
- // 1-3 turns
- this.effectState.startTime = 3;
- const sleepMoves = ["sleeppowder", "spore", "grasswhistle", "darkvoid", "hypnosis"];
- if (sourceEffect && sourceEffect.effectType === 'Move') {
- if (sleepMoves.includes(sourceEffect.id)) this.effectState.startTime = 2;
- }
- this.effectState.time = this.effectState.startTime;
- },
- onBeforeMovePriority: 10,
- onBeforeMove(pokemon, target, move) {
- if (pokemon.hasAbility('earlybird')) {
- pokemon.statusState.time--;
- }
- pokemon.statusState.time--;
- if (pokemon.statusState.time <= 0) {
- pokemon.cureStatus();
- return;
- }
- this.add('cant', pokemon, 'slp');
- if (move.sleepUsable) {
- return;
- }
- return false;
- },
- onModifySpe(spe, pokemon) {
- return this.chainModify(0.5);
- },
- },
-};
diff --git a/data/mods/scootopiav2/formats-data.ts b/data/mods/scootopiav2/formats-data.ts
deleted file mode 100644
index a917f298fa..0000000000
--- a/data/mods/scootopiav2/formats-data.ts
+++ /dev/null
@@ -1,218 +0,0 @@
-export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormatsDataTable = {
- arbrella: {
- tier: "OU",
- doublesTier: "DOU",
- },
- krachiten: {
- tier: "OU",
- doublesTier: "DOU",
- },
- scalaron: {
- tier: "OU",
- doublesTier: "DOU",
- },
- rantler: {
- tier: "OU",
- doublesTier: "DOU",
- },
- woolora: {
- tier: "OU",
- doublesTier: "DOU",
- },
- albatrygon: {
- tier: "OU",
- doublesTier: "DOU",
- },
- orchile: {
- tier: "OU",
- doublesTier: "DOU",
- },
- embuck: {
- tier: "OU",
- doublesTier: "DOU",
- },
- cindoe: {
- tier: "OU",
- doublesTier: "DOU",
- },
- cobracotta: {
- tier: "OU",
- doublesTier: "DOU",
- },
- minillow: {
- tier: "OU",
- doublesTier: "DOU",
- },
- crossont: {
- tier: "OU",
- doublesTier: "DOU",
- },
- torgeist: {
- tier: "OU",
- doublesTier: "DOU",
- },
- platypad: {
- tier: "OU",
- doublesTier: "DOU",
- },
- lumoth: {
- tier: "OU",
- doublesTier: "DOU",
- },
- aurorowl: {
- tier: "OU",
- doublesTier: "DOU",
- },
- carapex: {
- tier: "OU",
- doublesTier: "DOU",
- },
- dojodo: {
- tier: "OU",
- doublesTier: "DOU",
- },
- nunopod: {
- tier: "OU",
- doublesTier: "DOU",
- },
- zeploom: {
- tier: "OU",
- doublesTier: "DOU",
- },
- sturgard: {
- tier: "OU",
- doublesTier: "DOU",
- },
- brawnkey: {
- tier: "OU",
- doublesTier: "DOU",
- },
- salamalix: {
- tier: "OU",
- doublesTier: "DOU",
- },
- cinnastar: {
- tier: "OU",
- doublesTier: "DOU",
- },
- muabboa: {
- tier: "OU",
- doublesTier: "DOU",
- },
- harzodia: {
- tier: "OU",
- doublesTier: "DOU",
- },
- cyllindrake: {
- tier: "OU",
- doublesTier: "DOU",
- },
- kodokai: {
- tier: "OU",
- doublesTier: "DOU",
- },
- electangle: {
- tier: "OU",
- doublesTier: "DOU",
- },
- dolphena: {
- tier: "OU",
- doublesTier: "DOU",
- },
- soleron: {
- tier: "OU",
- doublesTier: "DOU",
- },
- jaegorm: {
- tier: "OU",
- doublesTier: "DOU",
- },
- elemadillo: {
- tier: "OU",
- doublesTier: "DOU",
- },
- axolacred: {
- tier: "OU",
- doublesTier: "DOU",
- },
- roscenti: {
- tier: "OU",
- doublesTier: "DOU",
- },
- blunderbusk: {
- tier: "OU",
- doublesTier: "DOU",
- },
- barracoth: {
- tier: "OU",
- doublesTier: "DOU",
- },
- jamborai: {
- tier: "OU",
- doublesTier: "DOU",
- },
- dracoil: {
- tier: "OU",
- doublesTier: "DOU",
- },
- celespirit: {
- tier: "OU",
- doublesTier: "DOU",
- },
- noxtrice: {
- tier: "OU",
- doublesTier: "DOU",
- },
- avastar: {
- tier: "OU",
- doublesTier: "DOU",
- },
- faerenheit: {
- tier: "OU",
- doublesTier: "DOU",
- },
- cellsius: {
- tier: "OU",
- doublesTier: "DOU",
- },
- kelven: {
- tier: "OU",
- doublesTier: "DOU",
- },
- salaos: {
- tier: "OU",
- doublesTier: "DOU",
- },
- morndos: {
- tier: "OU",
- doublesTier: "DOU",
- },
- pythos: {
- tier: "OU",
- doublesTier: "DOU",
- },
- corundell: {
- tier: "OU",
- doublesTier: "DOU",
- },
- quadringo: {
- tier: "OU",
- doublesTier: "DOU",
- },
- saphor: {
- tier: "OU",
- doublesTier: "DOU",
- },
- fenreil: {
- tier: "OU",
- doublesTier: "DOU",
- },
- efflor: {
- tier: "OU",
- doublesTier: "DOU",
- },
- flocura: {
- tier: "OU",
- doublesTier: "DOU",
- },
-};
diff --git a/data/mods/scootopiav2/items.ts b/data/mods/scootopiav2/items.ts
deleted file mode 100644
index 5b340b51a1..0000000000
--- a/data/mods/scootopiav2/items.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
- crystalorb: {
- name: "Crystal Orb",
- num: 1001,
- desc: "The holder's secondary type is replaced with Crystal. 20% boost to Crystal attacks.",
- onBeforeSwitchIn(pokemon) {
- if (this.effectState.usedSuperType && this.effectState.superTypeUser !== pokemon.fullname) return false;
- if (pokemon.hasType('Crystal')) return false;
- if (!pokemon.addType('Crystal')) return false;
- pokemon.setType([pokemon.types[0], "Crystal"]);
- this.effectState.usedSuperType = true;
- this.effectState.superTypeUser = "first_switch";
- },
- onStart(pokemon) {
- if (this.effectState.usedSuperType && this.effectState.superTypeUser === "first_switch") {
- this.add('-message', pokemon.name + " is a Crystal type!");
- this.effectState.superTypeUser = pokemon.fullname;
- }
- if (this.effectState.usedSuperType && this.effectState.superTypeUser === pokemon.fullname) {
- this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]');
- }
- },
- onUpdate(pokemon) {
- if (
- this.effectState.usedSuperType && this.effectState.superTypeUser === pokemon.fullname && !pokemon.hasType('Crystal')
- ) {
- pokemon.setType([pokemon.types[0], "Crystal"]);
- this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]');
- }
- },
- onTakeItem(item, pokemon, source) {
- if (source?.hasType("Crystal")) {
- return false;
- }
- return true;
- },
- onBasePowerPriority: 15,
- onBasePower(basePower, user, target, move) {
- if (move && move.type === 'Crystal') {
- return this.chainModify([0x1333, 0x1000]);
- }
- },
- gen: 9,
- },
- feralorb: {
- name: "Feral Orb",
- num: 1002,
- desc: "The holder's secondary type is replaced with Feral. 20% boost to Feral attacks.",
- onBeforeSwitchIn(pokemon) {
- if (this.effectState.usedSuperType && this.effectState.superTypeUser !== pokemon.fullname) return false;
- if (pokemon.hasType('Feral')) return false;
- if (!pokemon.addType('Feral')) return false;
- pokemon.setType([pokemon.types[0], "Feral"]);
- this.effectState.usedSuperType = true;
- this.effectState.superTypeUser = "first_switch";
- },
- onStart(pokemon) {
- if (this.effectState.usedSuperType && this.effectState.superTypeUser === "first_switch") {
- this.add('-message', pokemon.name + " is a Feral type!");
- this.effectState.superTypeUser = pokemon.fullname;
- }
- if (this.effectState.usedSuperType && this.effectState.superTypeUser === pokemon.fullname) {
- this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]');
- }
- },
- onUpdate(pokemon) {
- if (
- this.effectState.usedSuperType && this.effectState.superTypeUser === pokemon.fullname && !pokemon.hasType('Feral')
- ) {
- pokemon.setType([pokemon.types[0], "Feral"]);
- this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]');
- }
- },
- onTakeItem(item, pokemon, source) {
- if (source?.hasType("Feral")) {
- return false;
- }
- return true;
- },
- onBasePowerPriority: 15,
- onBasePower(basePower, user, target, move) {
- if (move && move.type === 'Feral') {
- return this.chainModify([0x1333, 0x1000]);
- }
- },
- gen: 9,
- },
-};
diff --git a/data/mods/scootopiav2/learnsets.ts b/data/mods/scootopiav2/learnsets.ts
deleted file mode 100644
index 3573141dfa..0000000000
--- a/data/mods/scootopiav2/learnsets.ts
+++ /dev/null
@@ -1,4473 +0,0 @@
-export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTable = {
- arbrella: {
- learnset: {
- woodhammer: ["9L1"],
- seedbomb: ["9L1"],
- grassyglide: ["9L1"],
- bulletseed: ["9L1"],
- solarblade: ["9L1"],
- razorleaf: ["9L1"],
- vinewhip: ["9L1"],
- earthquake: ["9L1"],
- bulldoze: ["9L1"],
- drillrun: ["9L1"],
- stoneedge: ["9L1"],
- rockslide: ["9L1"],
- rocktomb: ["9L1"],
- superpower: ["9L1"],
- xscissor: ["9L1"],
- lunge: ["9L1"],
- skittersmack: ["9L1"],
- nightslash: ["9L1"],
- shadowclaw: ["9L1"],
- slash: ["9L1"],
- scratch: ["9L1"],
- bodyslam: ["9L1"],
- doubleedge: ["9L1"],
- leafstorm: ["9L1"],
- gigadrain: ["9L1"],
- energyball: ["9L1"],
- grassknot: ["9L1"],
- grasspledge: ["9L1"],
- frenzyplant: ["9L1"],
- earthpower: ["9L1"],
- scorchingsands: ["9L1"],
- ancientpower: ["9L1"],
- shadowball: ["9L1"],
- shoreup: ["9L1"],
- stealthrock: ["9L1"],
- swordsdance: ["9L1"],
- rockpolish: ["9L1"],
- spikyshield: ["9L1"],
- worryseed: ["9L1"],
- lightscreen: ["9L1"],
- reflect: ["9L1"],
- safeguard: ["9L1"],
- synthesis: ["9L1"],
- substitute: ["9L1"],
- facade: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- helpinghand: ["9L1"],
- crystalcutter: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralshred: ["9L1"],
- feralpower: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- krachiten: {
- learnset: {
- aquacutter: ["9L1"],
- focusenergy: ["9L1"],
- firstimpression: ["9L1"],
- leechlife: ["9L1"],
- lunge: ["9L1"],
- uturn: ["9L1"],
- liquidation: ["9L1"],
- superpower: ["9L1"],
- crunch: ["9L1"],
- psychicfangs: ["9L1"],
- rapidspin: ["9L1"],
- toxicspikes: ["9L1"],
- toxic: ["9L1"],
- recover: ["9L1"],
- taunt: ["9L1"],
- switcheroo: ["9L1"],
- calmmind: ["9L1"],
- bugbuzz: ["9L1"],
- xscissor: ["9L1"],
- bugbite: ["9L1"],
- skittersmack: ["9L1"],
- strugglebug: ["9L1"],
- waterfall: ["9L1"],
- surf: ["9L1"],
- hydropump: ["9L1"],
- scald: ["9L1"],
- dive: ["9L1"],
- bubble: ["9L1"],
- waterpulse: ["9L1"],
- brine: ["9L1"],
- bubblebeam: ["9L1"],
- psychocut: ["9L1"],
- zenheadbutt: ["9L1"],
- psychic: ["9L1"],
- poisonjab: ["9L1"],
- sludgebomb: ["9L1"],
- shadowball: ["9L1"],
- shadowclaw: ["9L1"],
- darkpulse: ["9L1"],
- nightslash: ["9L1"],
- bite: ["9L1"],
- assurance: ["9L1"],
- payback: ["9L1"],
- slash: ["9L1"],
- scratch: ["9L1"],
- weatherball: ["9L1"],
- terrainpulse: ["9L1"],
- honeclaws: ["9L1"],
- lightscreen: ["9L1"],
- safeguard: ["9L1"],
- aquaring: ["9L1"],
- lifedew: ["9L1"],
- raindance: ["9L1"],
- sunnyday: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- chillingwater: ["9L1"],
- icespinner: ["9L1"],
- helpinghand: ["9L1"],
- quickguard: ["9L1"],
- facade: ["9L1"],
- haze: ["9L1"],
- crystalcutter: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralshred: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- scalaron: {
- learnset: {
- haze: ["9L1"],
- whirlwind: ["9L1"],
- roar: ["9L1"],
- hurricane: ["9L1"],
- fireblast: ["9L1"],
- flamethrower: ["9L1"],
- mysticalfire: ["9L1"],
- uturn: ["9L1"],
- dragontail: ["9L1"],
- defog: ["9L1"],
- roost: ["9L1"],
- toxic: ["9L1"],
- willowisp: ["9L1"],
- taunt: ["9L1"],
- airslash: ["9L1"],
- aircutter: ["9L1"],
- wingattack: ["9L1"],
- gust: ["9L1"],
- dualwingbeat: ["9L1"],
- aerialace: ["9L1"],
- fly: ["9L1"],
- acrobatics: ["9L1"],
- heatwave: ["9L1"],
- flareblitz: ["9L1"],
- flamecharge: ["9L1"],
- inferno: ["9L1"],
- incinerate: ["9L1"],
- firefang: ["9L1"],
- firespin: ["9L1"],
- ember: ["9L1"],
- dragonpulse: ["9L1"],
- dragonclaw: ["9L1"],
- scaleshot: ["9L1"],
- darkpulse: ["9L1"],
- snarl: ["9L1"],
- crunch: ["9L1"],
- bite: ["9L1"],
- thunderfang: ["9L1"],
- shockwave: ["9L1"],
- irontail: ["9L1"],
- doubleedge: ["9L1"],
- crushclaw: ["9L1"],
- hyperbeam: ["9L1"],
- tailwind: ["9L1"],
- dragondance: ["9L1"],
- memento: ["9L1"],
- meanlook: ["9L1"],
- scaryface: ["9L1"],
- torment: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- facade: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- helpinghand: ["9L1"],
- crystalcutter: ["9L1"],
- crystaltail: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralhealing: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- rantler: {
- learnset: {
- doubleedge: ["9L1"],
- facade: ["9L1"],
- hyperfang: ["9L1"],
- bodyslam: ["9L1"],
- quickattack: ["9L1"],
- gigaimpact: ["9L1"],
- headbutt: ["9L1"],
- slash: ["9L1"],
- fakeout: ["9L1"],
- lastresort: ["9L1"],
- retaliate: ["9L1"],
- strength: ["9L1"],
- scratch: ["9L1"],
- iciclecrash: ["9L1"],
- icefang: ["9L1"],
- iceshard: ["9L1"],
- earthquake: ["9L1"],
- highhorsepower: ["9L1"],
- stompingtantrum: ["9L1"],
- superpower: ["9L1"],
- brickbreak: ["9L1"],
- revenge: ["9L1"],
- rocksmash: ["9L1"],
- crunch: ["9L1"],
- bite: ["9L1"],
- payback: ["9L1"],
- haze: ["9L1"],
- roar: ["9L1"],
- assurance: ["9L1"],
- thief: ["9L1"],
- psychicfangs: ["9L1"],
- wildcharge: ["9L1"],
- thunderfang: ["9L1"],
- megahorn: ["9L1"],
- firstimpression: ["9L1"],
- ironhead: ["9L1"],
- hornleech: ["9L1"],
- playrough: ["9L1"],
- icebeam: ["9L1"],
- blizzard: ["9L1"],
- frostbreath: ["9L1"],
- freezedry: ["9L1"],
- aurorabeam: ["9L1"],
- powdersnow: ["9L1"],
- hypervoice: ["9L1"],
- hyperbeam: ["9L1"],
- snarl: ["9L1"],
- darkpulse: ["9L1"],
- surf: ["9L1"],
- waterpulse: ["9L1"],
- shockwave: ["9L1"],
- mudslap: ["9L1"],
- swordsdance: ["9L1"],
- bulkup: ["9L1"],
- taunt: ["9L1"],
- nobleroar: ["9L1"],
- workup: ["9L1"],
- snowscape: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- auroraveil: ["9L1"],
- grassyterrain: ["9L1"],
- mistyterrain: ["9L1"],
- yawn: ["9L1"],
- babydolleyes: ["9L1"],
- charm: ["9L1"],
- focusenergy: ["9L1"],
- howl: ["9L1"],
- helpinghand: ["9L1"],
- sheercold: ["9L1"],
- honeclaws: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- icespinner: ["9L1"],
- crystalcutter: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralshred: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralhealing: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- woolora: {
- learnset: {
- moonblast: ["9L1"],
- wildcharge:["9L1"],
- healingwish: ["9L1"],
- drainingkiss: ["9L1"],
- mistyexplosion: ["9L1"],
- disarmingvoice: ["9L1"],
- mysticalfire: ["9L1"],
- facade: ["9L1"],
- psychic: ["9L1"],
- psyshock: ["9L1"],
- storedpower: ["9L1"],
- shadowball: ["9L1"],
- energyball: ["9L1"],
- playrough: ["9L1"],
- highhorsepower: ["9L1"],
- zenheadbutt: ["9L1"],
- bodypress: ["9L1"],
- megahorn: ["9L1"],
- bounce: ["9L1"],
- hyperbeam: ["9L1"],
- gigaimpact: ["9L1"],
- bodyslam: ["9L1"],
- doubleedge: ["9L1"],
- takedown: ["9L1"],
- retaliate: ["9L1"],
- headbutt: ["9L1"],
- tackle: ["9L1"],
- calmmind: ["9L1"],
- moonlight: ["9L1"],
- teleport: ["9L1"],
- roar: ["9L1"],
- wish: ["9L1"],
- cottonguard: ["9L1"],
- healbell: ["9L1"],
- bulkup: ["9L1"],
- mistyterrain: ["9L1"],
- raindance: ["9L1"],
- growl: ["9L1"],
- babydolleyes: ["9L1"],
- guardswap: ["9L1"],
- helpinghand: ["9L1"],
- batonpass: ["9L1"],
- agility: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- crystaltail: ["9L1"],
- crystalbeam: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralhealing: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- albatrygon: {
- learnset: {
- encore: ["9L1"],
- taunt: ["9L1"],
- bravebird: ["9L1"],
- helpinghand: ["9L1"],
- acrobatics: ["9L1"],
- beatup: ["9L1"],
- drillpeck: ["9L1"],
- dualwingbeat: ["9L1"],
- fly: ["9L1"],
- aerialace: ["9L1"],
- pluck: ["9L1"],
- peck: ["9L1"],
- sacredsword: ["9L1"],
- foulplay: ["9L1"],
- darkestlariat: ["9L1"],
- payback: ["9L1"],
- assurance: ["9L1"],
- brutalswing: ["9L1"],
- thief: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- takedown: ["9L1"],
- gigaimpact: ["9L1"],
- spikes: ["9L1"],
- switcheroo: ["9L1"],
- partingshot: ["9L1"],
- defog: ["9L1"],
- memento: ["9L1"],
- featherdance: ["9L1"],
- workup: ["9L1"],
- smartstrike: ["9L1"],
- steelwing: ["9L1"],
- growl: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- sandstorm: ["9L1"],
- snowscape: ["9L1"],
- mistyterrain: ["9L1"],
- skillswap: ["9L1"],
- screech: ["9L1"],
- tailwind: ["9L1"],
- wonderroom: ["9L1"],
- magicroom: ["9L1"],
- mimic: ["9L1"],
- allyswitch: ["9L1"],
- focusenergy: ["9L1"],
- laserfocus: ["9L1"],
- tidyup: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- facade: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- whirlwind: ["9L1"],
- endure: ["9L1"],
- wideguard: ["9L1"],
- quickguard: ["9L1"],
- uturn: ["9L1"],
- crystalcutter: ["9L1"],
- crystalbeam: ["9L1"],
- crystalburst: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralresilience: ["9L1"],
- feralspray: ["9L1"],
- },
- },
- orchile: {
- learnset: {
- moonblast: ["9L1"],
- dazzlinggleam: ["9L1"],
- drainingkiss: ["9L1"],
- sleeppowder: ["9L1"],
- ragepowder: ["9L1"],
- beatup: ["9L1"],
- sludgebomb: ["9L1"],
- clearsmog: ["9L1"],
- gigadrain: ["9L1"],
- leafstorm: ["9L1"],
- energyball: ["9L1"],
- earthpower: ["9L1"],
- facade: ["9L1"],
- mysticalfire: ["9L1"],
- psychic: ["9L1"],
- shadowball: ["9L1"],
- darkpulse: ["9L1"],
- strengthsap: ["9L1"],
- willowisp: ["9L1"],
- spikes: ["9L1"],
- toxicspikes: ["9L1"],
- toxic: ["9L1"],
- stunspore: ["9L1"],
- leechseed: ["9L1"],
- calmmind: ["9L1"],
- aromatherapy: ["9L1"],
- synthesis: ["9L1"],
- trickroom: ["9L1"],
- sludge: ["9L1"],
- acid: ["9L1"],
- venoshock: ["9L1"],
- gunkshot: ["9L1"],
- poisonjab: ["9L1"],
- crosspoison: ["9L1"],
- poisonsting: ["9L1"],
- solarbeam: ["9L1"],
- grassknot: ["9L1"],
- petaldance: ["9L1"],
- vinewhip: ["9L1"],
- megadrain: ["9L1"],
- petalblizzard: ["9L1"],
- seedbomb: ["9L1"],
- magicalleaf: ["9L1"],
- absorb: ["9L1"],
- grassyglide: ["9L1"],
- razorleaf: ["9L1"],
- mudslap: ["9L1"],
- dreameater: ["9L1"],
- psychocut: ["9L1"],
- nightslash: ["9L1"],
- payback: ["9L1"],
- pollenpuff: ["9L1"],
- cut: ["9L1"],
- endeavor: ["9L1"],
- slash: ["9L1"],
- helpinghand: ["9L1"],
- wrap: ["9L1"],
- bodyslam: ["9L1"],
- tackle: ["9L1"],
- growth: ["9L1"],
- worryseed: ["9L1"],
- sweetscent: ["9L1"],
- safeguard: ["9L1"],
- corrosivegas: ["9L1"],
- poisonpowder: ["9L1"],
- venomdrench: ["9L1"],
- disable: ["9L1"],
- curse: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- grassyterrain: ["9L1"],
- attract: ["9L1"],
- protect: ["9L1"],
- substitute: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- snore: ["9L1"],
- endure: ["9L1"],
- crystalcutter: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralshred: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- embuck: {
- learnset: {
- flareblitz: ["9L1"],
- beatup: ["9L1"],
- blazekick: ["9L1"],
- closecombat: ["9L1"],
- highhorsepower: ["9L1"],
- megahorn: ["9L1"],
- uturn: ["9L1"],
- morningsun: ["9L1"],
- bulkup: ["9L1"],
- willowisp: ["9L1"],
- taunt: ["9L1"],
- doublekick: ["9L1"],
- tackle: ["9L1"],
- growl: ["9L1"],
- smokescreen: ["9L1"],
- ember: ["9L1"],
- sunnyday: ["9L1"],
- flamecharge: ["9L1"],
- snarl: ["9L1"],
- agility: ["9L1"],
- inferno: ["9L1"],
- superpower: ["9L1"],
- aerialace: ["9L1"],
- assurance: ["9L1"],
- attract: ["9L1"],
- bounce: ["9L1"],
- confide: ["9L1"],
- darkpulse: ["9L1"],
- doubleteam: ["9L1"],
- echoedvoice: ["9L1"],
- endure: ["9L1"],
- energyball: ["9L1"],
- facade: ["9L1"],
- falseswipe: ["9L1"],
- fly: ["9L1"],
- focusblast: ["9L1"],
- frustration: ["9L1"],
- gigaimpact: ["9L1"],
- heatwave: ["9L1"],
- hyperbeam: ["9L1"],
- incinerate: ["9L1"],
- laserfocus: ["9L1"],
- nastyplot: ["9L1"],
- protect: ["9L1"],
- raindance: ["9L1"],
- rest: ["9L1"],
- return: ["9L1"],
- round: ["9L1"],
- sleeptalk: ["9L1"],
- snore: ["9L1"],
- solarbeam: ["9L1"],
- substitute: ["9L1"],
- swagger: ["9L1"],
- swordsdance: ["9L1"],
- thief: ["9L1"],
- throatchop: ["9L1"],
- uproar: ["9L1"],
- wildcharge:["9L1"],
- workup: ["9L1"],
- fireblast: ["9L1"],
- flamethrower: ["9L1"],
- helpinghand: ["9L1"],
- aurasphere: ["9L1"],
- vacuumwave: ["9L1"],
- crystalbash: ["9L1"],
- crystalcage: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- cindoe: {
- learnset: {
- fierywrath: ["9L1"],
- overheat: ["9L1"],
- beatup: ["9L1"],
- fireblast: ["9L1"],
- flamethrower: ["9L1"],
- mysticalfire: ["9L1"],
- psychic: ["9L1"],
- nastyplot: ["9L1"],
- calmmind: ["9L1"],
- morningsun: ["9L1"],
- taunt: ["9L1"],
- moonlight: ["9L1"],
- tackle: ["9L1"],
- growl: ["9L1"],
- smokescreen: ["9L1"],
- ember: ["9L1"],
- agility: ["9L1"],
- inferno: ["9L1"],
- blazekick: ["9L1"],
- darkpulse: ["9L1"],
- partingshot: ["9L1"],
- aerialace: ["9L1"],
- assurance: ["9L1"],
- attract: ["9L1"],
- bounce: ["9L1"],
- confide: ["9L1"],
- doubleteam: ["9L1"],
- echoedvoice: ["9L1"],
- endure: ["9L1"],
- energyball: ["9L1"],
- facade: ["9L1"],
- falseswipe: ["9L1"],
- focusblast: ["9L1"],
- frustration: ["9L1"],
- gigaimpact: ["9L1"],
- incinerate: ["9L1"],
- heatwave: ["9L1"],
- hyperbeam: ["9L1"],
- laserfocus: ["9L1"],
- protect: ["9L1"],
- raindance: ["9L1"],
- rest: ["9L1"],
- return: ["9L1"],
- round: ["9L1"],
- sleeptalk: ["9L1"],
- snarl: ["9L1"],
- snore: ["9L1"],
- solarbeam: ["9L1"],
- substitute: ["9L1"],
- sunnyday: ["9L1"],
- swagger: ["9L1"],
- swordsdance: ["9L1"],
- thief: ["9L1"],
- throatchop: ["9L1"],
- uproar: ["9L1"],
- helpinghand: ["9L1"],
- uturn: ["9L1"],
- wildcharge:["9L1"],
- willowisp: ["9L1"],
- workup: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- cobracotta: {
- learnset: {
- powerwhip: ["9L1"],
- toxic: ["9L1"],
- petalblizzard: ["9L1"],
- seedbomb: ["9L1"],
- bulletseed: ["9L1"],
- grassyglide: ["9L1"],
- razorleaf: ["9L1"],
- gunkshot: ["9L1"],
- poisonjab: ["9L1"],
- poisonfang: ["9L1"],
- poisonsting: ["9L1"],
- earthquake: ["9L1"],
- bulldoze: ["9L1"],
- stoneedge: ["9L1"],
- rockslide: ["9L1"],
- rocktomb: ["9L1"],
- rockblast: ["9L1"],
- rollout: ["9L1"],
- knockoff: ["9L1"],
- suckerpunch: ["9L1"],
- crunch: ["9L1"],
- bite: ["9L1"],
- brutalswing: ["9L1"],
- payback: ["9L1"],
- thief: ["9L1"],
- psychicfangs: ["9L1"],
- rocksmash: ["9L1"],
- revenge: ["9L1"],
- bodyslam: ["9L1"],
- gigaimpact: ["9L1"],
- wrap: ["9L1"],
- gigadrain: ["9L1"],
- energyball: ["9L1"],
- leafstorm: ["9L1"],
- grassknot: ["9L1"],
- solarbeam: ["9L1"],
- megadrain: ["9L1"],
- petaldance: ["9L1"],
- sludgebomb: ["9L1"],
- venoshock: ["9L1"],
- sludge: ["9L1"],
- acid: ["9L1"],
- acidspray: ["9L1"],
- belch: ["9L1"],
- darkpulse: ["9L1"],
- earthpower: ["9L1"],
- ancientpower: ["9L1"],
- sweetscent: ["9L1"],
- naturepower: ["9L1"],
- hyperbeam: ["9L1"],
- shellsmash: ["9L1"],
- coil: ["9L1"],
- glare: ["9L1"],
- nastyplot: ["9L1"],
- stealthrock: ["9L1"],
- synthesis: ["9L1"],
- leechseed: ["9L1"],
- spitup: ["9L1"],
- stockpile: ["9L1"],
- swallow: ["9L1"],
- focusenergy: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- sandstorm: ["9L1"],
- grassyterrain: ["9L1"],
- laserfocus: ["9L1"],
- helpinghand: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- facade: ["9L1"],
- dragontail: ["9L1"],
- crystaltail: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- minillow: {
- learnset: {
- haze: ["9L1"],
- hydropump: ["9L1"],
- surf: ["9L1"],
- scald: ["9L1"],
- chillingwater: ["9L1"],
- moonblast: ["9L1"],
- nastyplot: ["9L1"],
- drainingkiss: ["9L1"],
- mistyexplosion: ["9L1"],
- icebeam: ["9L1"],
- psychic: ["9L1"],
- flipturn: ["9L1"],
- moonlight: ["9L1"],
- bubble: ["9L1"],
- tailwhip: ["9L1"],
- babydolleyes: ["9L1"],
- aquajet: ["9L1"],
- aquaring: ["9L1"],
- bubblebeam: ["9L1"],
- soak: ["9L1"],
- waterfall: ["9L1"],
- agility: ["9L1"],
- dazzlinggleam: ["9L1"],
- attract: ["9L1"],
- blizzard: ["9L1"],
- bodyslam: ["9L1"],
- bounce: ["9L1"],
- dive: ["9L1"],
- doubleteam: ["9L1"],
- drillrun: ["9L1"],
- helpinghand: ["9L1"],
- endure: ["9L1"],
- facade: ["9L1"],
- gigaimpact: ["9L1"],
- snowscape: ["9L1"],
- hyperbeam: ["9L1"],
- icywind: ["9L1"],
- muddywater: ["9L1"],
- mudshot: ["9L1"],
- poisonjab: ["9L1"],
- protect: ["9L1"],
- raindance: ["9L1"],
- rest: ["9L1"],
- round: ["9L1"],
- scaleshot: ["9L1"],
- shadowball: ["9L1"],
- sleeptalk: ["9L1"],
- snore: ["9L1"],
- substitute: ["9L1"],
- swagger: ["9L1"],
- swift: ["9L1"],
- waterpulse: ["9L1"],
- whirlpool: ["9L1"],
- zenheadbutt: ["9L1"],
- crystaltail: ["9L1"],
- crystalbeam: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- feralbite: ["9L1"],
- feralpower: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- followme: ["9L1"],
- },
- },
- crossont: {
- learnset: {
- recover: ["9L1"],
- megahorn: ["9L1"],
- pinmissile: ["9L1"],
- attackorder: ["9L1"],
- closecombat: ["9L1"],
- superpower: ["9L1"],
- rockblast: ["9L1"],
- circlethrow: ["9L1"],
- knockoff: ["9L1"],
- earthquake: ["9L1"],
- stoneedge: ["9L1"],
- spiritshackle: ["9L1"],
- spikes: ["9L1"],
- bulkup: ["9L1"],
- focusenergy: ["9L1"],
- submission: ["9L1"],
- astonish: ["9L1"],
- defensecurl: ["9L1"],
- strugglebug: ["9L1"],
- fling: ["9L1"],
- armthrust: ["9L1"],
- lockon: ["9L1"],
- bulletseed: ["9L1"],
- dynamicpunch: ["9L1"],
- laserfocus: ["9L1"],
- crosschop: ["9L1"],
- wideguard: ["9L1"],
- finalgambit: ["9L1"],
- aerialace: ["9L1"],
- attract: ["9L1"],
- brickbreak: ["9L1"],
- bugbite: ["9L1"],
- bugbuzz: ["9L1"],
- bulldoze: ["9L1"],
- confide: ["9L1"],
- covet: ["9L1"],
- doubleteam: ["9L1"],
- endeavor: ["9L1"],
- endure: ["9L1"],
- facade: ["9L1"],
- fakeout: ["9L1"],
- firepunch: ["9L1"],
- focusblast: ["9L1"],
- focuspunch: ["9L1"],
- frustration: ["9L1"],
- gigaimpact: ["9L1"],
- gunkshot: ["9L1"],
- helpinghand: ["9L1"],
- hyperbeam: ["9L1"],
- icepunch: ["9L1"],
- lowkick: ["9L1"],
- lowsweep: ["9L1"],
- outrage: ["9L1"],
- payback: ["9L1"],
- poweruppunch: ["9L1"],
- protect: ["9L1"],
- raindance: ["9L1"],
- rest: ["9L1"],
- return: ["9L1"],
- rockclimb: ["9L1"],
- rockslide: ["9L1"],
- rocksmash: ["9L1"],
- rocktomb: ["9L1"],
- roleplay: ["9L1"],
- round: ["9L1"],
- seedbomb: ["9L1"],
- sleeptalk: ["9L1"],
- smackdown: ["9L1"],
- snore: ["9L1"],
- spite: ["9L1"],
- stompingtantrum: ["9L1"],
- strength: ["9L1"],
- substitute: ["9L1"],
- sunnyday: ["9L1"],
- swagger: ["9L1"],
- taunt: ["9L1"],
- thief: ["9L1"],
- throatchop: ["9L1"],
- thunderpunch: ["9L1"],
- uproar: ["9L1"],
- workup: ["9L1"],
- xscissor: ["9L1"],
- axekick: ["9L1"],
- crystalcutter: ["9L1"],
- crystalbash: ["9L1"],
- crystalcage: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- torgeist: {
- learnset: {
- shadowball: ["9L1"],
- facade: ["9L1"],
- hex: ["9L1"],
- ominouswind: ["9L1"],
- boomburst: ["9L1"],
- hypervoice: ["9L1"],
- triattack: ["9L1"],
- hyperbeam: ["9L1"],
- hurricane: ["9L1"],
- airslash: ["9L1"],
- weatherball: ["9L1"],
- heatwave: ["9L1"],
- icywind: ["9L1"],
- darkpulse: ["9L1"],
- shockwave: ["9L1"],
- uturn: ["9L1"],
- poltergeist: ["9L1"],
- shadowsneak: ["9L1"],
- phantomforce: ["9L1"],
- astonish: ["9L1"],
- dualwingbeat: ["9L1"],
- acrobatics: ["9L1"],
- suckerpunch: ["9L1"],
- foulplay: ["9L1"],
- thief: ["9L1"],
- payback: ["9L1"],
- headbutt: ["9L1"],
- wrap: ["9L1"],
- doubleedge: ["9L1"],
- painsplit: ["9L1"],
- trick: ["9L1"],
- taunt: ["9L1"],
- nastyplot: ["9L1"],
- calmmind: ["9L1"],
- willowisp: ["9L1"],
- toxicthread: ["9L1"],
- tailwind: ["9L1"],
- defog: ["9L1"],
- raindance: ["9L1"],
- disable: ["9L1"],
- workup: ["9L1"],
- lightscreen: ["9L1"],
- reflect: ["9L1"],
- meanlook: ["9L1"],
- perishsong: ["9L1"],
- metalsound: ["9L1"],
- gust: ["9L1"],
- haze: ["9L1"],
- screech: ["9L1"],
- imprison: ["9L1"],
- destinybond: ["9L1"],
- memento: ["9L1"],
- magiccoat: ["9L1"],
- sunnyday: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalshard: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- platypad: {
- learnset: {
- revivalblessing: ["9L1"],
- wavecrash: ["9L1"],
- wish: ["9L1"],
- gigadrain: ["9L1"],
- leafstorm: ["9L1"],
- sludgebomb: ["9L1"],
- weatherball: ["9L1"],
- hydropump: ["9L1"],
- scald: ["9L1"],
- shadowball: ["9L1"],
- flipturn: ["9L1"],
- dragontail: ["9L1"],
- poisonjab: ["9L1"],
- petalblizzard: ["9L1"],
- earthquake: ["9L1"],
- slackoff: ["9L1"],
- spikes: ["9L1"],
- toxicspikes: ["9L1"],
- roar: ["9L1"],
- toxic: ["9L1"],
- aromatherapy: ["9L1"],
- haze: ["9L1"],
- leechseed: ["9L1"],
- stunspore: ["9L1"],
- bellydrum: ["9L1"],
- venoshock: ["9L1"],
- sludgewave: ["9L1"],
- poisonsting: ["9L1"],
- crosspoison: ["9L1"],
- poisontail: ["9L1"],
- solarbeam: ["9L1"],
- energyball: ["9L1"],
- grassknot: ["9L1"],
- magicalleaf: ["9L1"],
- seedbomb: ["9L1"],
- bulletseed: ["9L1"],
- grassyglide: ["9L1"],
- megadrain: ["9L1"],
- absorb: ["9L1"],
- aquatail: ["9L1"],
- liquidation: ["9L1"],
- surf: ["9L1"],
- whirlpool: ["9L1"],
- icywind: ["9L1"],
- zenheadbutt: ["9L1"],
- extrasensory: ["9L1"],
- bulldoze: ["9L1"],
- stompingtantrum: ["9L1"],
- rockslide: ["9L1"],
- rollout: ["9L1"],
- outrage: ["9L1"],
- shockwave: ["9L1"],
- drainingkiss: ["9L1"],
- nightshade: ["9L1"],
- shadowclaw: ["9L1"],
- wildcharge: ["9L1"],
- payback: ["9L1"],
- assurance: ["9L1"],
- fling: ["9L1"],
- pollenpuff: ["9L1"],
- doubleedge: ["9L1"],
- hyperbeam: ["9L1"],
- gigaimpact: ["9L1"],
- bodyslam: ["9L1"],
- covet: ["9L1"],
- hypervoice: ["9L1"],
- uproar: ["9L1"],
- tackle: ["9L1"],
- curse: ["9L1"],
- moonlight: ["9L1"],
- venomdrench: ["9L1"],
- poisonpowder: ["9L1"],
- yawn: ["9L1"],
- defensecurl: ["9L1"],
- attract: ["9L1"],
- afteryou: ["9L1"],
- charm: ["9L1"],
- psychup: ["9L1"],
- lifedew: ["9L1"],
- amnesia: ["9L1"],
- stockpile: ["9L1"],
- swallow: ["9L1"],
- spitup: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- snowscape: ["9L1"],
- sandstorm: ["9L1"],
- grassyterrain: ["9L1"],
- safeguard: ["9L1"],
- wideguard: ["9L1"],
- block: ["9L1"],
- helpinghand: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- facade: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- chillingwater: ["9L1"],
- crystaltail: ["9L1"],
- crystalbeam: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralhealing: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- lumoth: {
- learnset: {
- shadowball: ["9L1"],
- hex: ["9L1"],
- psychic: ["9L1"],
- psyshock: ["9L1"],
- bugbuzz: ["9L1"],
- energyball: ["9L1"],
- gigadrain: ["9L1"],
- thunderbolt: ["9L1"],
- thunder: ["9L1"],
- quiverdance: ["9L1"],
- willowisp: ["9L1"],
- sleeppowder: ["9L1"],
- defog: ["9L1"],
- astonish: ["9L1"],
- leer: ["9L1"],
- infestation: ["9L1"],
- stringshot: ["9L1"],
- silverwind: ["9L1"],
- psybeam: ["9L1"],
- ragepowder: ["9L1"],
- calmmind: ["9L1"],
- expandingforce: ["9L1"],
- allyswitch: ["9L1"],
- chargebeam: ["9L1"],
- confide: ["9L1"],
- covet: ["9L1"],
- darkpulse: ["9L1"],
- doubleteam: ["9L1"],
- dreameater: ["9L1"],
- embargo: ["9L1"],
- facade: ["9L1"],
- frustration: ["9L1"],
- grassknot: ["9L1"],
- gravity: ["9L1"],
- hyperbeam: ["9L1"],
- laserfocus: ["9L1"],
- lastresort: ["9L1"],
- lightscreen: ["9L1"],
- magiccoat: ["9L1"],
- magicroom: ["9L1"],
- protect: ["9L1"],
- psychup: ["9L1"],
- raindance: ["9L1"],
- reflect: ["9L1"],
- rest: ["9L1"],
- return: ["9L1"],
- round: ["9L1"],
- safeguard: ["9L1"],
- shockwave: ["9L1"],
- signalbeam: ["9L1"],
- skillswap: ["9L1"],
- sleeptalk: ["9L1"],
- snatch: ["9L1"],
- snore: ["9L1"],
- strugglebug: ["9L1"],
- substitute: ["9L1"],
- sunnyday: ["9L1"],
- swagger: ["9L1"],
- haze: ["9L1"],
- telekinesis: ["9L1"],
- thunderwave: ["9L1"],
- torment: ["9L1"],
- helpinghand: ["9L1"],
- trick: ["9L1"],
- trickroom: ["9L1"],
- uturn: ["9L1"],
- wonderroom: ["9L1"],
- zenheadbutt: ["9L1"],
- silktrap: ["9L1"],
- crystalbeam: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralspray: ["9L1"],
- },
- },
- aurorowl: {
- learnset: {
- haze: ["9L1"],
- frostbreath: ["9L1"],
- dualwingbeat: ["9L1"],
- icebeam: ["9L1"],
- aircutter: ["9L1"],
- hurricane: ["9L1"],
- airslash: ["9L1"],
- focusblast: ["9L1"],
- iceshard: ["9L1"],
- tripleaxel: ["9L1"],
- aerialace: ["9L1"],
- bravebird: ["9L1"],
- uturn: ["9L1"],
- nastyplot: ["9L1"],
- sheercold: ["9L1"],
- roost: ["9L1"],
- defog: ["9L1"],
- icywind: ["9L1"],
- tackle: ["9L1"],
- sandattack: ["9L1"],
- gust: ["9L1"],
- quickattack: ["9L1"],
- whirlwind: ["9L1"],
- featherdance: ["9L1"],
- aurorabeam: ["9L1"],
- attract: ["9L1"],
- blizzard: ["9L1"],
- confide: ["9L1"],
- doubleteam: ["9L1"],
- endure: ["9L1"],
- facade: ["9L1"],
- fly: ["9L1"],
- frustration: ["9L1"],
- gigaimpact: ["9L1"],
- snowscape: ["9L1"],
- hyperbeam: ["9L1"],
- laserfocus: ["9L1"],
- pluck: ["9L1"],
- protect: ["9L1"],
- raindance: ["9L1"],
- rest: ["9L1"],
- return: ["9L1"],
- round: ["9L1"],
- skyattack: ["9L1"],
- sleeptalk: ["9L1"],
- snore: ["9L1"],
- steelwing: ["9L1"],
- substitute: ["9L1"],
- sunnyday: ["9L1"],
- swagger: ["9L1"],
- tailwind: ["9L1"],
- thief: ["9L1"],
- uproar: ["9L1"],
- workup: ["9L1"],
- crystalcutter: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralshred: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- },
- },
- carapex: {
- learnset: {
- acrobatics: ["9L1"],
- tailwind: ["9L1"],
- megahorn: ["9L1"],
- uturn: ["9L1"],
- dualwingbeat: ["9L1"],
- bodypress: ["9L1"],
- knockoff: ["9L1"],
- earthquake: ["9L1"],
- stoneedge: ["9L1"],
- stealthrock: ["9L1"],
- defog: ["9L1"],
- roost: ["9L1"],
- irondefense: ["9L1"],
- whirlwind: ["9L1"],
- tackle: ["9L1"],
- defensecurl: ["9L1"],
- endure: ["9L1"],
- rollout: ["9L1"],
- furycutter: ["9L1"],
- batonpass: ["9L1"],
- reversal: ["9L1"],
- bugbuzz: ["9L1"],
- aerialace: ["9L1"],
- airslash: ["9L1"],
- allyswitch: ["9L1"],
- attract: ["9L1"],
- brutalswing: ["9L1"],
- cut: ["9L1"],
- dig: ["9L1"],
- doubleteam: ["9L1"],
- echoedvoice: ["9L1"],
- energyball: ["9L1"],
- facade: ["9L1"],
- fly: ["9L1"],
- frustration: ["9L1"],
- gigadrain: ["9L1"],
- helpinghand: ["9L1"],
- hurricane: ["9L1"],
- lastresort: ["9L1"],
- leechlife: ["9L1"],
- protect: ["9L1"],
- raindance: ["9L1"],
- rest: ["9L1"],
- return: ["9L1"],
- round: ["9L1"],
- shadowball: ["9L1"],
- shadowclaw: ["9L1"],
- sleeptalk: ["9L1"],
- snore: ["9L1"],
- substitute: ["9L1"],
- sunnyday: ["9L1"],
- swagger: ["9L1"],
- thief: ["9L1"],
- uproar: ["9L1"],
- workup: ["9L1"],
- crystalcutter: ["9L1"],
- crystalbash: ["9L1"],
- crystalcage: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralshred: ["9L1"],
- feralrush: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- wideguard: ["9L1"],
- },
- },
- dojodo: {
- learnset: {
- highjumpkick: ["9L1"],
- closecombat: ["9L1"],
- drainpunch: ["9L1"],
- bodypress: ["9L1"],
- knockoff: ["9L1"],
- icepunch: ["9L1"],
- firepunch: ["9L1"],
- thunderpunch: ["9L1"],
- poisonjab: ["9L1"],
- stompingtantrum: ["9L1"],
- bravebird: ["9L1"],
- bulkup: ["9L1"],
- swordsdance: ["9L1"],
- irondefense: ["9L1"],
- taunt: ["9L1"],
- coaching: ["9L1"],
- peck: ["9L1"],
- sandattack: ["9L1"],
- armthrust: ["9L1"],
- fakeout: ["9L1"],
- forcepalm: ["9L1"],
- whirlwind: ["9L1"],
- brickbreak: ["9L1"],
- batonpass: ["9L1"],
- detect: ["9L1"],
- jumpkick: ["9L1"],
- drillpeck: ["9L1"],
- matblock: ["9L1"],
- reversal: ["9L1"],
- gigaimpact: ["9L1"],
- attract: ["9L1"],
- confide: ["9L1"],
- dig: ["9L1"],
- dualwingbeat: ["9L1"],
- doubleteam: ["9L1"],
- endure: ["9L1"],
- facade: ["9L1"],
- featherdance: ["9L1"],
- fling: ["9L1"],
- focusblast: ["9L1"],
- focuspunch: ["9L1"],
- frustration: ["9L1"],
- helpinghand: ["9L1"],
- hyperbeam: ["9L1"],
- ironhead: ["9L1"],
- beatup: ["9L1"],
- lowkick: ["9L1"],
- lowsweep: ["9L1"],
- payback: ["9L1"],
- pluck: ["9L1"],
- poweruppunch: ["9L1"],
- protect: ["9L1"],
- raindance: ["9L1"],
- rest: ["9L1"],
- return: ["9L1"],
- rocksmash: ["9L1"],
- roleplay: ["9L1"],
- round: ["9L1"],
- sleeptalk: ["9L1"],
- snore: ["9L1"],
- strength: ["9L1"],
- substitute: ["9L1"],
- sunnyday: ["9L1"],
- superpower: ["9L1"],
- swagger: ["9L1"],
- throatchop: ["9L1"],
- workup: ["9L1"],
- jetpunch: ["9L1"],
- quickguard: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalfortification: ["9L1"],
- feralbite: ["9L1"],
- feralshred: ["9L1"],
- feralrush: ["9L1"],
- feralhealing: ["9L1"],
- feralbreath: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- nunopod: {
- learnset: {
- lunge: ["9L1"],
- beatup: ["9L1"],
- leechlife: ["9L1"],
- firstimpression: ["9L1"],
- xscissor: ["9L1"],
- furycutter: ["9L1"],
- bugbite: ["9L1"],
- earthquake: ["9L1"],
- highhorsepower: ["9L1"],
- stompingtantrum: ["9L1"],
- bulldoze: ["9L1"],
- dig: ["9L1"],
- tripleaxel: ["9L1"],
- highjumpkick: ["9L1"],
- bodypress: ["9L1"],
- rollingkick: ["9L1"],
- brickbreak: ["9L1"],
- tropkick: ["9L1"],
- flipturn: ["9L1"],
- zenheadbutt: ["9L1"],
- ironhead: ["9L1"],
- brutalswing: ["9L1"],
- payback: ["9L1"],
- blazekick: ["9L1"],
- acrobatics: ["9L1"],
- rapidspin: ["9L1"],
- megakick: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- headbutt: ["9L1"],
- pound: ["9L1"],
- bugbuzz: ["9L1"],
- strugglebug: ["9L1"],
- earthpower: ["9L1"],
- scorchingsands: ["9L1"],
- energyball: ["9L1"],
- gigadrain: ["9L1"],
- solarbeam: ["9L1"],
- surf: ["9L1"],
- shadowball: ["9L1"],
- extrasensory: ["9L1"],
- recover: ["9L1"],
- stealthrock: ["9L1"],
- workup: ["9L1"],
- toxic: ["9L1"],
- swordsdance: ["9L1"],
- acidarmor: ["9L1"],
- trickroom: ["9L1"],
- rototiller: ["9L1"],
- safeguard: ["9L1"],
- sandstorm: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- grassyterrain: ["9L1"],
- mistyterrain: ["9L1"],
- psychicterrain: ["9L1"],
- electricterrain: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- facade: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- helpinghand: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- zeploom: {
- learnset: {
- scorchingsands: ["9L1"],
- facade: ["9L1"],
- earthpower: ["9L1"],
- mudslap: ["9L1"],
- mudbomb: ["9L1"],
- mudshot: ["9L1"],
- energysiphon: ["9L1"],
- gigadrain: ["9L1"],
- energyball: ["9L1"],
- leafstorm: ["9L1"],
- grassknot: ["9L1"],
- megadrain: ["9L1"],
- nightshade: ["9L1"],
- shadowball: ["9L1"],
- hex: ["9L1"],
- clearsmog: ["9L1"],
- sludgebomb: ["9L1"],
- acidspray: ["9L1"],
- darkpulse: ["9L1"],
- leafblade: ["9L1"],
- seedbomb: ["9L1"],
- bulletseed: ["9L1"],
- earthquake: ["9L1"],
- uturn: ["9L1"],
- gunkshot: ["9L1"],
- poisonjab: ["9L1"],
- acrobatics: ["9L1"],
- aerialace: ["9L1"],
- bounce: ["9L1"],
- wrap: ["9L1"],
- bodyslam: ["9L1"],
- doubleedge: ["9L1"],
- explosion: ["9L1"],
- selfdestruct: ["9L1"],
- pound: ["9L1"],
- spore: ["9L1"],
- synthesis: ["9L1"],
- stealthrock: ["9L1"],
- defog: ["9L1"],
- toxic: ["9L1"],
- encore: ["9L1"],
- stunspore: ["9L1"],
- memento: ["9L1"],
- workup: ["9L1"],
- leechseed: ["9L1"],
- toxicthread: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- sandstorm: ["9L1"],
- grassyterrain: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- ragepowder: ["9L1"],
- crystalbash: ["9L1"],
- crystalcage: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- feralshred: ["9L1"],
- feralpower: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- brawnkey: {
- learnset: {
- bodypress: ["9L1"],
- facade: ["9L1"],
- beatup: ["9L1"],
- closecombat: ["9L1"],
- drainpunch: ["9L1"],
- rocksmash: ["9L1"],
- submission: ["9L1"],
- revenge: ["9L1"],
- brickbreak: ["9L1"],
- crosschop: ["9L1"],
- karatechop: ["9L1"],
- poweruppunch: ["9L1"],
- vitalthrow: ["9L1"],
- ironhead: ["9L1"],
- heavyslam: ["9L1"],
- steelroller: ["9L1"],
- smartstrike: ["9L1"],
- earthquake: ["9L1"],
- highhorsepower: ["9L1"],
- bulldoze: ["9L1"],
- stompingtantrum: ["9L1"],
- rockslide: ["9L1"],
- rocktomb: ["9L1"],
- payback: ["9L1"],
- thief: ["9L1"],
- assurance: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- megakick: ["9L1"],
- slam: ["9L1"],
- gigaimpact: ["9L1"],
- bind: ["9L1"],
- pound: ["9L1"],
- aurasphere: ["9L1"],
- focusblast: ["9L1"],
- vacuumwave: ["9L1"],
- flashcannon: ["9L1"],
- mirrorshot: ["9L1"],
- mirrorcoat: ["9L1"],
- psychic: ["9L1"],
- psyshock: ["9L1"],
- storedpower: ["9L1"],
- shadowball: ["9L1"],
- darkpulse: ["9L1"],
- hypervoice: ["9L1"],
- hyperbeam: ["9L1"],
- triattack: ["9L1"],
- irondefense: ["9L1"],
- bulkup: ["9L1"],
- stealthrock: ["9L1"],
- spikes: ["9L1"],
- calmmind: ["9L1"],
- magiccoat: ["9L1"],
- coaching: ["9L1"],
- wideguard: ["9L1"],
- workup: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- sandstorm: ["9L1"],
- snowscape: ["9L1"],
- psychicterrain: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- chillyreception: ["9L1"],
- crystalcutter: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralshred: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralhealing: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- salamalix: {
- learnset: {
- accelerock: ["9L1"],
- stoneedge: ["9L1"],
- beatup: ["9L1"],
- rockslide: ["9L1"],
- rockblast: ["9L1"],
- rocktomb: ["9L1"],
- rockthrow: ["9L1"],
- rockpolish: ["9L1"],
- ironhead: ["9L1"],
- bulletpunch: ["9L1"],
- irontail: ["9L1"],
- metalclaw: ["9L1"],
- earthquake: ["9L1"],
- stompingtantrum: ["9L1"],
- bulldoze: ["9L1"],
- closecombat: ["9L1"],
- superpower: ["9L1"],
- bodypress: ["9L1"],
- rocksmash: ["9L1"],
- poweruppunch: ["9L1"],
- revenge: ["9L1"],
- brickbreak: ["9L1"],
- crunch: ["9L1"],
- bite: ["9L1"],
- payback: ["9L1"],
- assurance: ["9L1"],
- psychicfangs: ["9L1"],
- zenheadbutt: ["9L1"],
- firefang: ["9L1"],
- thunderfang: ["9L1"],
- outrage: ["9L1"],
- dragonhammer: ["9L1"],
- dragontail: ["9L1"],
- acrobatics: ["9L1"],
- aerialace: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- headbutt: ["9L1"],
- retaliate: ["9L1"],
- gigaimpact: ["9L1"],
- stealthrock: ["9L1"],
- spikes: ["9L1"],
- swordsdance: ["9L1"],
- bulkup: ["9L1"],
- taunt: ["9L1"],
- torment: ["9L1"],
- scaryface: ["9L1"],
- workup: ["9L1"],
- irondefense: ["9L1"],
- defensecurl: ["9L1"],
- sandstorm: ["9L1"],
- snowscape: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- focusenergy: ["9L1"],
- laserfocus: ["9L1"],
- honeclaws: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- roar: ["9L1"],
- wideguard: ["9L1"],
- crystaltail: ["9L1"],
- crystalbash: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralbreath: ["9L1"],
- feralhealing: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- cinnastar: {
- learnset: {
- sludgebomb: ["9L1"],
- sludgewave: ["9L1"],
- focusblast: ["9L1"],
- clearsmog: ["9L1"],
- poisonjab: ["9L1"],
- powergem: ["9L1"],
- stoneedge: ["9L1"],
- rockblast: ["9L1"],
- rockslide: ["9L1"],
- earthquake: ["9L1"],
- earthpower: ["9L1"],
- toxic: ["9L1"],
- recover: ["9L1"],
- stealthrock: ["9L1"],
- wish: ["9L1"],
- haze: ["9L1"],
- corrosivegas: ["9L1"],
- sludge: ["9L1"],
- acid: ["9L1"],
- acidspray: ["9L1"],
- venoshock: ["9L1"],
- rocktomb: ["9L1"],
- rollout: ["9L1"],
- rockthrow: ["9L1"],
- meteorbeam: ["9L1"],
- ancientpower: ["9L1"],
- sandtomb: ["9L1"],
- magnitude: ["9L1"],
- mudslap: ["9L1"],
- dazzlinggleam: ["9L1"],
- drainingkiss: ["9L1"],
- psychic: ["9L1"],
- psychocut: ["9L1"],
- flashcannon: ["9L1"],
- smartstrike: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- takedown: ["9L1"],
- explosion: ["9L1"],
- lightscreen: ["9L1"],
- flash: ["9L1"],
- afteryou: ["9L1"],
- guardsplit: ["9L1"],
- guardswap: ["9L1"],
- skillswap: ["9L1"],
- powertrick: ["9L1"],
- harden: ["9L1"],
- irondefense: ["9L1"],
- acidarmor: ["9L1"],
- safeguard: ["9L1"],
- wonderroom: ["9L1"],
- sandstorm: ["9L1"],
- raindance: ["9L1"],
- sunnyday: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralpower: ["9L1"],
- feralspray: ["9L1"],
- feralhealing: ["9L1"],
- feralresilience: ["9L1"],
- mortalspin: ["9L1"],
- },
- },
- muabboa: {
- learnset: {
- earthquake: ["9L1"],
- highhorsepower: ["9L1"],
- stompingtantrum: ["9L1"],
- bulldoze: ["9L1"],
- closecombat: ["9L1"],
- superpower: ["9L1"],
- sacredsword: ["9L1"],
- highjumpkick: ["9L1"],
- machpunch: ["9L1"],
- brickbreak: ["9L1"],
- crosschop: ["9L1"],
- karatechop: ["9L1"],
- poweruppunch: ["9L1"],
- rocksmash: ["9L1"],
- submission: ["9L1"],
- vitalthrow: ["9L1"],
- revenge: ["9L1"],
- uturn: ["9L1"],
- xscissor: ["9L1"],
- knockoff: ["9L1"],
- nightslash: ["9L1"],
- payback: ["9L1"],
- assurance: ["9L1"],
- thief: ["9L1"],
- leafblade: ["9L1"],
- rockslide: ["9L1"],
- rocktomb: ["9L1"],
- acrobatics: ["9L1"],
- aerialace: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- slash: ["9L1"],
- gigaimpact: ["9L1"],
- quickattack: ["9L1"],
- fakeout: ["9L1"],
- smartstrike: ["9L1"],
- zenheadbutt: ["9L1"],
- aurasphere: ["9L1"],
- focusblast: ["9L1"],
- earthpower: ["9L1"],
- scorchingsands: ["9L1"],
- shadowball: ["9L1"],
- hypervoice: ["9L1"],
- hyperbeam: ["9L1"],
- swordsdance: ["9L1"],
- encore: ["9L1"],
- switcheroo: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- sandstorm: ["9L1"],
- grassyterrain: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- quickguard: ["9L1"],
- crystaltail: ["9L1"],
- crystalhealing: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- volvolpa: {
- learnset: {
- volttackle: ["9L1"],
- wildcharge: ["9L1"],
- helpinghand: ["9L1"],
- thunderfang: ["9L1"],
- spark: ["9L1"],
- hyperfang: ["9L1"],
- bodyslam: ["9L1"],
- doubleedge: ["9L1"],
- slash: ["9L1"],
- scratch: ["9L1"],
- quickattack: ["9L1"],
- gigaimpact: ["9L1"],
- icefang: ["9L1"],
- crunch: ["9L1"],
- uturn: ["9L1"],
- acrobatics: ["9L1"],
- aerialace: ["9L1"],
- tackle: ["9L1"],
- takedown: ["9L1"],
- thunder: ["9L1"],
- thunderbolt: ["9L1"],
- voltswitch: ["9L1"],
- chargebeam: ["9L1"],
- discharge: ["9L1"],
- risingvoltage: ["9L1"],
- shockwave: ["9L1"],
- electroweb: ["9L1"],
- electroball: ["9L1"],
- thundershock: ["9L1"],
- hypervoice: ["9L1"],
- triattack: ["9L1"],
- hyperbeam: ["9L1"],
- icebeam: ["9L1"],
- blizzard: ["9L1"],
- frostbreath: ["9L1"],
- darkpulse: ["9L1"],
- snarl: ["9L1"],
- thunderwave: ["9L1"],
- sheercold: ["9L1"],
- agility: ["9L1"],
- eerieimpulse: ["9L1"],
- workup: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- snowscape: ["9L1"],
- electricterrain: ["9L1"],
- tailwhip: ["9L1"],
- screech: ["9L1"],
- magnetrise: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- roar: ["9L1"],
- icespinner: ["9L1"],
- crystalcutter: ["9L1"],
- crystaltail: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralshred: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- harzodia: {
- learnset: {
- allyswitch: ["9L1"],
- solarbeam: ["9L1"],
- helpinghand: ["9L1"],
- psychic: ["9L1"],
- psyshock: ["9L1"],
- meteorbeam: ["9L1"],
- shadowball: ["9L1"],
- aurasphere: ["9L1"],
- focusblast: ["9L1"],
- dazzlinggleam: ["9L1"],
- thunderbolt: ["9L1"],
- calmmind: ["9L1"],
- trick: ["9L1"],
- agility: ["9L1"],
- recover: ["9L1"],
- thunderwave: ["9L1"],
- healbell: ["9L1"],
- futuresight: ["9L1"],
- expandingforce: ["9L1"],
- storedpower: ["9L1"],
- dreameater: ["9L1"],
- psybeam: ["9L1"],
- confusion: ["9L1"],
- zenheadbutt: ["9L1"],
- thunder: ["9L1"],
- chargebeam: ["9L1"],
- shockwave: ["9L1"],
- zapcannon: ["9L1"],
- fling: ["9L1"],
- hypervoice: ["9L1"],
- bodyslam: ["9L1"],
- headbutt: ["9L1"],
- hyperbeam: ["9L1"],
- teleport: ["9L1"],
- reflect: ["9L1"],
- lightscreen: ["9L1"],
- disable: ["9L1"],
- eerieimpulse: ["9L1"],
- gravity: ["9L1"],
- healpulse: ["9L1"],
- imprison: ["9L1"],
- laserfocus: ["9L1"],
- magicroom: ["9L1"],
- metronome: ["9L1"],
- mimic: ["9L1"],
- psychicterrain: ["9L1"],
- psychoshift: ["9L1"],
- psychup: ["9L1"],
- recycle: ["9L1"],
- safeguard: ["9L1"],
- speedswap: ["9L1"],
- swift: ["9L1"],
- trickroom: ["9L1"],
- wish: ["9L1"],
- wonderroom: ["9L1"],
- raindance: ["9L1"],
- sunnyday: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- quickguard: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- cyllindrake: {
- learnset: {
- spinout: ["9L1"],
- heavyslam: ["9L1"],
- stealthrock: ["9L1"],
- steelroller: ["9L1"],
- ironhead: ["9L1"],
- metalclaw: ["9L1"],
- dragonclaw: ["9L1"],
- outrage: ["9L1"],
- scaleshot: ["9L1"],
- dragontail: ["9L1"],
- dragonrush: ["9L1"],
- highhorsepower: ["9L1"],
- bulldoze: ["9L1"],
- stompingtantrum: ["9L1"],
- rockslide: ["9L1"],
- rocktomb: ["9L1"],
- smackdown: ["9L1"],
- rollout: ["9L1"],
- superpower: ["9L1"],
- bodypress: ["9L1"],
- brickbreak: ["9L1"],
- crunch: ["9L1"],
- bite: ["9L1"],
- payback: ["9L1"],
- assurance: ["9L1"],
- firstimpression: ["9L1"],
- uturn: ["9L1"],
- wildcharge: ["9L1"],
- thunderfang: ["9L1"],
- firefang: ["9L1"],
- heatcrash: ["9L1"],
- flareblitz: ["9L1"],
- rapidspin: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- headbutt: ["9L1"],
- gigaimpact: ["9L1"],
- takedown: ["9L1"],
- tackle: ["9L1"],
- steelbeam: ["9L1"],
- flashcannon: ["9L1"],
- mirrorshot: ["9L1"],
- dracometeor: ["9L1"],
- dragonpulse: ["9L1"],
- dragonbreath: ["9L1"],
- twister: ["9L1"],
- earthpower: ["9L1"],
- mudshot: ["9L1"],
- mudslap: ["9L1"],
- flamethrower: ["9L1"],
- fireblast: ["9L1"],
- darkpulse: ["9L1"],
- aurasphere: ["9L1"],
- sludgebomb: ["9L1"],
- clearsmog: ["9L1"],
- boomburst: ["9L1"],
- hypervoice: ["9L1"],
- hyperbeam: ["9L1"],
- shiftgear: ["9L1"],
- toxic: ["9L1"],
- morningsun: ["9L1"],
- irondefense: ["9L1"],
- roar: ["9L1"],
- honeclaws: ["9L1"],
- workup: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- sandstorm: ["9L1"],
- snowscape: ["9L1"],
- dragondance: ["9L1"],
- curse: ["9L1"],
- metalsound: ["9L1"],
- screech: ["9L1"],
- leer: ["9L1"],
- haze: ["9L1"],
- tarshot: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- quickguard: ["9L1"],
- helpinghand: ["9L1"],
- crystaltail: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralhealing: ["9L1"],
- feralresilience: ["9L1"],
- feralspray: ["9L1"],
- },
- },
- kodokai: {
- learnset: {
- haze: ["9L1"],
- poltergeist: ["9L1"],
- phantomforce: ["9L1"],
- shadowpunch: ["9L1"],
- astonish: ["9L1"],
- firepunch: ["9L1"],
- flamewheel: ["9L1"],
- drainpunch: ["9L1"],
- brickbreak: ["9L1"],
- rocksmash: ["9L1"],
- shadowball: ["9L1"],
- hex: ["9L1"],
- ominouswind: ["9L1"],
- darkpulse: ["9L1"],
- fireblast: ["9L1"],
- flamethrower: ["9L1"],
- flameburst: ["9L1"],
- ember: ["9L1"],
- firespin: ["9L1"],
- heatwave: ["9L1"],
- dazzlinggleam: ["9L1"],
- drainingkiss: ["9L1"],
- sludgebomb: ["9L1"],
- clearsmog: ["9L1"],
- hypervoice: ["9L1"],
- hyperbeam: ["9L1"],
- moonlight: ["9L1"],
- trickroom: ["9L1"],
- wish: ["9L1"],
- aromatherapy: ["9L1"],
- willowisp: ["9L1"],
- encore: ["9L1"],
- destinybond: ["9L1"],
- disable: ["9L1"],
- safeguard: ["9L1"],
- lightscreen: ["9L1"],
- smokescreen: ["9L1"],
- grudge: ["9L1"],
- facade: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- mistyterrain: ["9L1"],
- sweetscent: ["9L1"],
- sweetkiss: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- helpinghand: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- electangle: {
- learnset: {
- wildcharge: ["9L1"],
- gyroball: ["9L1"],
- zingzap: ["9L1"],
- powerwhip: ["9L1"],
- earthquake: ["9L1"],
- rockslide: ["9L1"],
- heatcrash: ["9L1"],
- superpower: ["9L1"],
- bodypress: ["9L1"],
- thunderbolt: ["9L1"],
- discharge: ["9L1"],
- voltswitch: ["9L1"],
- energyball: ["9L1"],
- gigadrain: ["9L1"],
- overheat: ["9L1"],
- dazzlinggleam: ["9L1"],
- stealthrock: ["9L1"],
- thunderwave: ["9L1"],
- haze: ["9L1"],
- aromatherapy: ["9L1"],
- thunder: ["9L1"],
- risingvoltage: ["9L1"],
- spark: ["9L1"],
- chargebeam: ["9L1"],
- shockwave: ["9L1"],
- electroball: ["9L1"],
- electroweb: ["9L1"],
- thundershock: ["9L1"],
- grassknot: ["9L1"],
- bulldoze: ["9L1"],
- stompingtantrum: ["9L1"],
- brickbreak: ["9L1"],
- fling: ["9L1"],
- payback: ["9L1"],
- brutalswing: ["9L1"],
- rocksmash: ["9L1"],
- bodyslam: ["9L1"],
- doubleedge: ["9L1"],
- slam: ["9L1"],
- tackle: ["9L1"],
- takedown: ["9L1"],
- swift: ["9L1"],
- triattack: ["9L1"],
- gigaimpact: ["9L1"],
- hyperbeam: ["9L1"],
- workup: ["9L1"],
- helpinghand: ["9L1"],
- agility: ["9L1"],
- irondefense: ["9L1"],
- electricterrain: ["9L1"],
- eerieimpulse: ["9L1"],
- magnetrise: ["9L1"],
- magneticflux: ["9L1"],
- lightscreen: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- flashcannon: ["9L1"],
- ironhead: ["9L1"],
- steelbeam: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- wideguard: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- dolphena: {
- learnset: {
- liquidation: ["9L1"],
- flipturn: ["9L1"],
- aquatail: ["9L1"],
- waterfall: ["9L1"],
- outrage: ["9L1"],
- dragontail: ["9L1"],
- dragonrush: ["9L1"],
- scaleshot: ["9L1"],
- earthquake: ["9L1"],
- bulldoze: ["9L1"],
- irontail: ["9L1"],
- acrobatics: ["9L1"],
- dualwingbeat: ["9L1"],
- crunch: ["9L1"],
- lashout: ["9L1"],
- payback: ["9L1"],
- firefang: ["9L1"],
- icefang: ["9L1"],
- thunderfang: ["9L1"],
- psychicfangs: ["9L1"],
- brickbreak: ["9L1"],
- bodyslam: ["9L1"],
- wrap: ["9L1"],
- headbutt: ["9L1"],
- gigaimpact: ["9L1"],
- doubleedge: ["9L1"],
- thrash: ["9L1"],
- flail: ["9L1"],
- surf: ["9L1"],
- scald: ["9L1"],
- hydropump: ["9L1"],
- brine: ["9L1"],
- bubblebeam: ["9L1"],
- dive: ["9L1"],
- waterpulse: ["9L1"],
- watergun: ["9L1"],
- whirlpool: ["9L1"],
- dracometeor: ["9L1"],
- dragonpulse: ["9L1"],
- dragonbreath: ["9L1"],
- twister: ["9L1"],
- icebeam: ["9L1"],
- blizzard: ["9L1"],
- icywind: ["9L1"],
- energyball: ["9L1"],
- darkpulse: ["9L1"],
- dragondance: ["9L1"],
- moonlight: ["9L1"],
- coil: ["9L1"],
- defog: ["9L1"],
- lightscreen: ["9L1"],
- workup: ["9L1"],
- leer: ["9L1"],
- raindance: ["9L1"],
- sunnyday: ["9L1"],
- sandstorm: ["9L1"],
- snowscape: ["9L1"],
- mistyterrain: ["9L1"],
- laserfocus: ["9L1"],
- focusenergy: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- chillingwater: ["9L1"],
- roar: ["9L1"],
- icespinner: ["9L1"],
- crystaltail: ["9L1"],
- crystalbeam: ["9L1"],
- crystalburst: ["9L1"],
- crystalcage: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- feralbite: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- soleron: {
- learnset: {
- thunderbolt: ["9L1"],
- thunder: ["9L1"],
- discharge: ["9L1"],
- voltswitch: ["9L1"],
- shockwave: ["9L1"],
- chargebeam: ["9L1"],
- thundershock: ["9L1"],
- hurricane: ["9L1"],
- airslash: ["9L1"],
- aircutter: ["9L1"],
- gust: ["9L1"],
- heatwave: ["9L1"],
- weatherball: ["9L1"],
- hypervoice: ["9L1"],
- triattack: ["9L1"],
- hyperbeam: ["9L1"],
- wildcharge: ["9L1"],
- spark: ["9L1"],
- bravebird: ["9L1"],
- dualwingbeat: ["9L1"],
- aerialace: ["9L1"],
- fly: ["9L1"],
- peck: ["9L1"],
- drillpeck: ["9L1"],
- skyattack: ["9L1"],
- pluck: ["9L1"],
- acrobatics: ["9L1"],
- uturn: ["9L1"],
- doubleedge: ["9L1"],
- gigaimpact: ["9L1"],
- takedown: ["9L1"],
- tackle: ["9L1"],
- roost: ["9L1"],
- defog: ["9L1"],
- thunderwave: ["9L1"],
- lightscreen: ["9L1"],
- reflect: ["9L1"],
- whirlwind: ["9L1"],
- workup: ["9L1"],
- featherdance: ["9L1"],
- charge: ["9L1"],
- metalsound: ["9L1"],
- magneticflux: ["9L1"],
- raindance: ["9L1"],
- sunnyday: ["9L1"],
- electricterrain: ["9L1"],
- laserfocus: ["9L1"],
- mistyterrain: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- helpinghand: ["9L1"],
- wideguard: ["9L1"],
- crystalcutter: ["9L1"],
- crystalbeam: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- feralbite: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralspray: ["9L1"],
- },
- },
- soleronawakened: {
- learnset: {
- thunderbolt: ["9L1"],
- thunder: ["9L1"],
- discharge: ["9L1"],
- voltswitch: ["9L1"],
- shockwave: ["9L1"],
- chargebeam: ["9L1"],
- thundershock: ["9L1"],
- hurricane: ["9L1"],
- airslash: ["9L1"],
- aircutter: ["9L1"],
- gust: ["9L1"],
- heatwave: ["9L1"],
- weatherball: ["9L1"],
- hypervoice: ["9L1"],
- triattack: ["9L1"],
- hyperbeam: ["9L1"],
- wildcharge: ["9L1"],
- spark: ["9L1"],
- bravebird: ["9L1"],
- dualwingbeat: ["9L1"],
- aerialace: ["9L1"],
- fly: ["9L1"],
- peck: ["9L1"],
- drillpeck: ["9L1"],
- skyattack: ["9L1"],
- pluck: ["9L1"],
- acrobatics: ["9L1"],
- uturn: ["9L1"],
- doubleedge: ["9L1"],
- gigaimpact: ["9L1"],
- takedown: ["9L1"],
- tackle: ["9L1"],
- roost: ["9L1"],
- defog: ["9L1"],
- thunderwave: ["9L1"],
- lightscreen: ["9L1"],
- reflect: ["9L1"],
- whirlwind: ["9L1"],
- workup: ["9L1"],
- featherdance: ["9L1"],
- charge: ["9L1"],
- metalsound: ["9L1"],
- magneticflux: ["9L1"],
- raindance: ["9L1"],
- sunnyday: ["9L1"],
- electricterrain: ["9L1"],
- laserfocus: ["9L1"],
- mistyterrain: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- helpinghand: ["9L1"],
- wideguard: ["9L1"],
- crystalcutter: ["9L1"],
- crystalbeam: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- feralbite: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralspray: ["9L1"],
- },
- },
- jaegorm: {
- learnset: {
- firstimpression: ["9L1"],
- calmmind: ["9L1"],
- uturn: ["9L1"],
- attackorder: ["9L1"],
- lunge: ["9L1"],
- leechlife: ["9L1"],
- bugbite: ["9L1"],
- xscissor: ["9L1"],
- photonray: ["9L1"],
- zenheadbutt: ["9L1"],
- psychocut: ["9L1"],
- knockoff: ["9L1"],
- darkestlariat: ["9L1"],
- payback: ["9L1"],
- assurance: ["9L1"],
- thief: ["9L1"],
- earthquake: ["9L1"],
- bulldoze: ["9L1"],
- stompingtantrum: ["9L1"],
- stoneedge: ["9L1"],
- rockslide: ["9L1"],
- rocktomb: ["9L1"],
- superpower: ["9L1"],
- brickbreak: ["9L1"],
- rocksmash: ["9L1"],
- crosschop: ["9L1"],
- dragontail: ["9L1"],
- dragonclaw: ["9L1"],
- outrage: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- takedown: ["9L1"],
- crushclaw: ["9L1"],
- slash: ["9L1"],
- gigaimpact: ["9L1"],
- tackle: ["9L1"],
- bugbuzz: ["9L1"],
- strugglebug: ["9L1"],
- silverwind: ["9L1"],
- infestation: ["9L1"],
- psychic: ["9L1"],
- psyshock: ["9L1"],
- extrasensory: ["9L1"],
- futuresight: ["9L1"],
- psybeam: ["9L1"],
- confusion: ["9L1"],
- darkpulse: ["9L1"],
- aurasphere: ["9L1"],
- focusblast: ["9L1"],
- energyball: ["9L1"],
- gigadrain: ["9L1"],
- triattack: ["9L1"],
- hyperbeam: ["9L1"],
- cosmicpower: ["9L1"],
- honeclaws: ["9L1"],
- workup: ["9L1"],
- growth: ["9L1"],
- acidarmor: ["9L1"],
- imprison: ["9L1"],
- hypnosis: ["9L1"],
- magicroom: ["9L1"],
- mirrorcoat: ["9L1"],
- powerswap: ["9L1"],
- psychicterrain: ["9L1"],
- supersonic: ["9L1"],
- wonderroom: ["9L1"],
- safeguard: ["9L1"],
- lightscreen: ["9L1"],
- reflect: ["9L1"],
- afteryou: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- pounce: ["9L1"],
- crystalcutter: ["9L1"],
- crystaltail: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- jaegormcollective: {
- learnset: {
- firstimpression: ["9L1"],
- calmmind: ["9L1"],
- uturn: ["9L1"],
- attackorder: ["9L1"],
- lunge: ["9L1"],
- leechlife: ["9L1"],
- bugbite: ["9L1"],
- xscissor: ["9L1"],
- photongeyser: ["9L1"],
- zenheadbutt: ["9L1"],
- psychocut: ["9L1"],
- knockoff: ["9L1"],
- darkestlariat: ["9L1"],
- payback: ["9L1"],
- assurance: ["9L1"],
- thief: ["9L1"],
- earthquake: ["9L1"],
- bulldoze: ["9L1"],
- stompingtantrum: ["9L1"],
- stoneedge: ["9L1"],
- rockslide: ["9L1"],
- rocktomb: ["9L1"],
- superpower: ["9L1"],
- brickbreak: ["9L1"],
- rocksmash: ["9L1"],
- crosschop: ["9L1"],
- dragontail: ["9L1"],
- dragonclaw: ["9L1"],
- outrage: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- takedown: ["9L1"],
- crushclaw: ["9L1"],
- slash: ["9L1"],
- gigaimpact: ["9L1"],
- tackle: ["9L1"],
- bugbuzz: ["9L1"],
- strugglebug: ["9L1"],
- silverwind: ["9L1"],
- infestation: ["9L1"],
- psychic: ["9L1"],
- psyshock: ["9L1"],
- extrasensory: ["9L1"],
- futuresight: ["9L1"],
- psybeam: ["9L1"],
- confusion: ["9L1"],
- darkpulse: ["9L1"],
- aurasphere: ["9L1"],
- focusblast: ["9L1"],
- energyball: ["9L1"],
- gigadrain: ["9L1"],
- triattack: ["9L1"],
- hyperbeam: ["9L1"],
- cosmicpower: ["9L1"],
- honeclaws: ["9L1"],
- workup: ["9L1"],
- growth: ["9L1"],
- acidarmor: ["9L1"],
- imprison: ["9L1"],
- hypnosis: ["9L1"],
- magicroom: ["9L1"],
- mirrorcoat: ["9L1"],
- powerswap: ["9L1"],
- psychicterrain: ["9L1"],
- supersonic: ["9L1"],
- wonderroom: ["9L1"],
- safeguard: ["9L1"],
- lightscreen: ["9L1"],
- reflect: ["9L1"],
- afteryou: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- pounce: ["9L1"],
- crystalcutter: ["9L1"],
- crystaltail: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- elemadillo: {
- learnset: {
- thunderbolt: ["9L1"],
- thunder: ["9L1"],
- discharge: ["9L1"],
- voltswitch: ["9L1"],
- electroball: ["9L1"],
- flashcannon: ["9L1"],
- steelbeam: ["9L1"],
- energyball: ["9L1"],
- wildcharge: ["9L1"],
- zingzap: ["9L1"],
- ironhead: ["9L1"],
- spinout: ["9L1"],
- highhorsepower: ["9L1"],
- uturn: ["9L1"],
- rapidspin: ["9L1"],
- shiftgear: ["9L1"],
- thunderwave: ["9L1"],
- reflect: ["9L1"],
- lightscreen: ["9L1"],
- eerieimpulse: ["9L1"],
- agility: ["9L1"],
- thundershock: ["9L1"],
- tackle: ["9L1"],
- growl: ["9L1"],
- spark: ["9L1"],
- thunderfang: ["9L1"],
- metalclaw: ["9L1"],
- safeguard: ["9L1"],
- doubleedge: ["9L1"],
- gigaimpact: ["9L1"],
- bodyslam: ["9L1"],
- triattack: ["9L1"],
- hyperbeam: ["9L1"],
- round: ["9L1"],
- bulldoze: ["9L1"],
- rocktomb: ["9L1"],
- rockslide: ["9L1"],
- crunch: ["9L1"],
- bite: ["9L1"],
- electricterrain: ["9L1"],
- raindance: ["9L1"],
- sunnyday: ["9L1"],
- sandstorm: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- endure: ["9L1"],
- doubleshock: ["9L1"],
- helpinghand: ["9L1"],
- quickguard: ["9L1"],
- crystaltail: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- axolacred: {
- learnset: {
- acrobatics: ["9L1"],
- dracometeor: ["9L1"],
- coreenforcer: ["9L1"],
- dragontail: ["9L1"],
- dragonpulse: ["9L1"],
- airslash: ["9L1"],
- meteorbeam: ["9L1"],
- surf: ["9L1"],
- scald: ["9L1"],
- dazzlinggleam: ["9L1"],
- drainingkiss: ["9L1"],
- energyball: ["9L1"],
- weatherball: ["9L1"],
- flipturn: ["9L1"],
- shedtail: ["9L1"],
- morningsun: ["9L1"],
- recover: ["9L1"],
- defog: ["9L1"],
- encore: ["9L1"],
- dragonbreath: ["9L1"],
- twister: ["9L1"],
- dragonclaw: ["9L1"],
- aerialace: ["9L1"],
- dualwingbeat: ["9L1"],
- fly: ["9L1"],
- aircutter: ["9L1"],
- gust: ["9L1"],
- lightscreen: ["9L1"],
- reflect: ["9L1"],
- safeguard: ["9L1"],
- mist: ["9L1"],
- haze: ["9L1"],
- futuresight: ["9L1"],
- roost: ["9L1"],
- extrasensory: ["9L1"],
- shadowball: ["9L1"],
- psychic: ["9L1"],
- hypervoice: ["9L1"],
- bodyslam: ["9L1"],
- round: ["9L1"],
- hyperbeam: ["9L1"],
- raindance: ["9L1"],
- snowscape: ["9L1"],
- sunnyday: ["9L1"],
- sandstorm: ["9L1"],
- mistyterrain: ["9L1"],
- psychicterrain: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- endure: ["9L1"],
- chillingwater: ["9L1"],
- stealthrock: ["9L1"],
- helpinghand: ["9L1"],
- crystaltail: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- feralbite: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- healingwish: ["9L1"],
- wish: ["9L1"],
- },
- },
- roscenti: {
- learnset: {
- pinmissile: ["9L1"],
- firstimpression: ["9L1"],
- megahorn: ["9L1"],
- leechlife: ["9L1"],
- lunge: ["9L1"],
- uturn: ["9L1"],
- bulletseed: ["9L1"],
- powerwhip: ["9L1"],
- hornleech: ["9L1"],
- solarblade: ["9L1"],
- superpower: ["9L1"],
- swordsdance: ["9L1"],
- leechseed: ["9L1"],
- growth: ["9L1"],
- taunt: ["9L1"],
- strugglebug: ["9L1"],
- stringshot: ["9L1"],
- bugbuzz: ["9L1"],
- energyball: ["9L1"],
- grassknot: ["9L1"],
- solarbeam: ["9L1"],
- vinewhip: ["9L1"],
- razorleaf: ["9L1"],
- bugbite: ["9L1"],
- seedbomb: ["9L1"],
- scratch: ["9L1"],
- furycutter: ["9L1"],
- slash: ["9L1"],
- nightslash: ["9L1"],
- leafblade: ["9L1"],
- petalblizzard: ["9L1"],
- suckerpunch: ["9L1"],
- rockblast: ["9L1"],
- rockslide: ["9L1"],
- rocktomb: ["9L1"],
- bulldoze: ["9L1"],
- stompingtantrum: ["9L1"],
- drillrun: ["9L1"],
- synthesis: ["9L1"],
- irontail: ["9L1"],
- strength: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- gigaimpact: ["9L1"],
- hyperbeam: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- pounce: ["9L1"],
- trailblaze: ["9L1"],
- quickguard: ["9L1"],
- crystalcutter: ["9L1"],
- crystaltail: ["9L1"],
- crystalbash: ["9L1"],
- crystalcage: ["9L1"],
- crystalhealing: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralshred: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- blunderbusk: {
- learnset: {
- haze: ["9L1"],
- waterpulse: ["9L1"],
- hydropump: ["9L1"],
- surf: ["9L1"],
- scald: ["9L1"],
- chillingwater: ["9L1"],
- aurasphere: ["9L1"],
- darkpulse: ["9L1"],
- dragonpulse: ["9L1"],
- icebeam: ["9L1"],
- energyball: ["9L1"],
- flashcannon: ["9L1"],
- terrainpulse: ["9L1"],
- recover: ["9L1"],
- shellsmash: ["9L1"],
- stealthrock: ["9L1"],
- tackle: ["9L1"],
- bubble: ["9L1"],
- withdraw: ["9L1"],
- aquajet: ["9L1"],
- whirlpool: ["9L1"],
- bubblebeam: ["9L1"],
- laserfocus: ["9L1"],
- razorshell: ["9L1"],
- acidarmor: ["9L1"],
- muddywater: ["9L1"],
- attract: ["9L1"],
- blizzard: ["9L1"],
- brine: ["9L1"],
- dive: ["9L1"],
- doubleteam: ["9L1"],
- endure: ["9L1"],
- explosion: ["9L1"],
- facade: ["9L1"],
- focusblast: ["9L1"],
- gigaimpact: ["9L1"],
- snowscape: ["9L1"],
- icywind: ["9L1"],
- irondefense: ["9L1"],
- lightscreen: ["9L1"],
- liquidation: ["9L1"],
- mudshot: ["9L1"],
- payback: ["9L1"],
- poisonjab: ["9L1"],
- protect: ["9L1"],
- raindance: ["9L1"],
- rest: ["9L1"],
- rockblast: ["9L1"],
- round: ["9L1"],
- screech: ["9L1"],
- selfdestruct: ["9L1"],
- shadowball: ["9L1"],
- sleeptalk: ["9L1"],
- sludgebomb: ["9L1"],
- smartstrike: ["9L1"],
- snore: ["9L1"],
- steelroller: ["9L1"],
- substitute: ["9L1"],
- swagger: ["9L1"],
- toxic: ["9L1"],
- swift: ["9L1"],
- torment: ["9L1"],
- triattack: ["9L1"],
- weatherball: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- barracoth: {
- learnset: {
- wavecrash: ["9L1"],
- chillingwater: ["9L1"],
- surf: ["9L1"],
- scald: ["9L1"],
- hydropump: ["9L1"],
- beatup: ["9L1"],
- icebeam: ["9L1"],
- freezedry: ["9L1"],
- liquidation: ["9L1"],
- flipturn: ["9L1"],
- tripleaxel: ["9L1"],
- iceshard: ["9L1"],
- iciclecrash: ["9L1"],
- earthquake: ["9L1"],
- bodypress: ["9L1"],
- heavyslam: ["9L1"],
- dragontail: ["9L1"],
- slackoff: ["9L1"],
- curse: ["9L1"],
- sheercold: ["9L1"],
- roar: ["9L1"],
- auroraveil: ["9L1"],
- chillyreception: ["9L1"],
- slash: ["9L1"],
- tackle: ["9L1"],
- tailwhip: ["9L1"],
- bubble: ["9L1"],
- mudshot: ["9L1"],
- workup: ["9L1"],
- focusenergy: ["9L1"],
- icefang: ["9L1"],
- haze: ["9L1"],
- brine: ["9L1"],
- encore: ["9L1"],
- nightslash: ["9L1"],
- dive: ["9L1"],
- aquatail: ["9L1"],
- snowscape: ["9L1"],
- attract: ["9L1"],
- avalanche: ["9L1"],
- blizzard: ["9L1"],
- confide: ["9L1"],
- doubleteam: ["9L1"],
- drillrun: ["9L1"],
- echoedvoice: ["9L1"],
- endure: ["9L1"],
- facade: ["9L1"],
- fling: ["9L1"],
- frostbreath: ["9L1"],
- frustration: ["9L1"],
- gigaimpact: ["9L1"],
- hyperbeam: ["9L1"],
- icywind: ["9L1"],
- irontail: ["9L1"],
- protect: ["9L1"],
- raindance: ["9L1"],
- rest: ["9L1"],
- return: ["9L1"],
- round: ["9L1"],
- safeguard: ["9L1"],
- sleeptalk: ["9L1"],
- smartstrike: ["9L1"],
- snore: ["9L1"],
- substitute: ["9L1"],
- superpower: ["9L1"],
- swagger: ["9L1"],
- thief: ["9L1"],
- waterfall: ["9L1"],
- waterpulse: ["9L1"],
- aquacutter: ["9L1"],
- helpinghand: ["9L1"],
- wideguard: ["9L1"],
- crystalcutter: ["9L1"],
- crystaltail: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralshred: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- sturgard: {
- learnset: {
- wavecrash: ["9L1"],
- headsmash: ["9L1"],
- doubleedge: ["9L1"],
- flipturn: ["9L1"],
- liquidation: ["9L1"],
- aquatail: ["9L1"],
- aquajet: ["9L1"],
- surf: ["9L1"],
- scald: ["9L1"],
- hydropump: ["9L1"],
- earthpower: ["9L1"],
- earthquake: ["9L1"],
- bulldoze: ["9L1"],
- stoneedge: ["9L1"],
- waterpulse: ["9L1"],
- dive: ["9L1"],
- rockslide: ["9L1"],
- rockblast: ["9L1"],
- drainingkiss: ["9L1"],
- chillingwater: ["9L1"],
- raindance: ["9L1"],
- stealthrock: ["9L1"],
- sandstorm: ["9L1"],
- sunnyday: ["9L1"],
- mistyterrain: ["9L1"],
- muddywater: ["9L1"],
- mudshot: ["9L1"],
- watergun: ["9L1"],
- rockpolish: ["9L1"],
- irondefense: ["9L1"],
- bodypress: ["9L1"],
- bodyslam: ["9L1"],
- bonerush: ["9L1"],
- amnesia: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- protect: ["9L1"],
- substitute: ["9L1"],
- endure: ["9L1"],
- reflect: ["9L1"],
- irontail: ["9L1"],
- ironhead: ["9L1"],
- payback: ["9L1"],
- assurance: ["9L1"],
- curse: ["9L1"],
- feralrush: ["9L1"],
- feralspray: ["9L1"],
- feralpower: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- crystalbash: ["9L1"],
- crystaltail: ["9L1"],
- crystalcage: ["9L1"],
- crystalbeam: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- }
- },
- jamborai: {
- learnset: {
- sludgebomb: ["9L1"],
- sludgewave: ["9L1"],
- clearsmog: ["9L1"],
- acidspray: ["9L1"],
- psychic: ["9L1"],
- psyshock: ["9L1"],
- storedpower: ["9L1"],
- futuresight: ["9L1"],
- shadowball: ["9L1"],
- hydropump: ["9L1"],
- surf: ["9L1"],
- scald: ["9L1"],
- chillingwater: ["9L1"],
- icebeam: ["9L1"],
- blizzard: ["9L1"],
- energyball: ["9L1"],
- gigadrain: ["9L1"],
- toxic: ["9L1"],
- recover: ["9L1"],
- toxicspikes: ["9L1"],
- calmmind: ["9L1"],
- acidarmor: ["9L1"],
- triattack: ["9L1"],
- teleport: ["9L1"],
- sludge: ["9L1"],
- psybeam: ["9L1"],
- confusion: ["9L1"],
- acid: ["9L1"],
- gastroacid: ["9L1"],
- bodyslam: ["9L1"],
- gunkshot: ["9L1"],
- zenheadbutt: ["9L1"],
- psychocut: ["9L1"],
- wrap: ["9L1"],
- wringout: ["9L1"],
- hyperbeam: ["9L1"],
- bubblebeam: ["9L1"],
- darkpulse: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- venoshock: ["9L1"],
- poisonsting: ["9L1"],
- poisongas: ["9L1"],
- skillswap: ["9L1"],
- guardswap: ["9L1"],
- lightscreen: ["9L1"],
- reflect: ["9L1"],
- safeguard: ["9L1"],
- powertrick: ["9L1"],
- trickroom: ["9L1"],
- wonderroom: ["9L1"],
- mirrorcoat: ["9L1"],
- magiccoat: ["9L1"],
- magicroom: ["9L1"],
- embargo: ["9L1"],
- mortalspin: ["9L1"],
- twinbeam: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- feralpower: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- dracoil: {
- learnset: {
- belch: ["9L1"],
- roar: ["9L1"],
- outrage: ["9L1"],
- dragontail: ["9L1"],
- dragonrush: ["9L1"],
- dualwingbeat: ["9L1"],
- acrobatics: ["9L1"],
- earthquake: ["9L1"],
- irontail: ["9L1"],
- defog: ["9L1"],
- ironhead: ["9L1"],
- dracometeor: ["9L1"],
- dragonpulse: ["9L1"],
- hurricane: ["9L1"],
- airslash: ["9L1"],
- fireblast: ["9L1"],
- flamethrower: ["9L1"],
- icebeam: ["9L1"],
- thunderbolt: ["9L1"],
- darkpulse: ["9L1"],
- coil: ["9L1"],
- dragondance: ["9L1"],
- glare: ["9L1"],
- roost: ["9L1"],
- toxic: ["9L1"],
- tackle: ["9L1"],
- leer: ["9L1"],
- gust: ["9L1"],
- tailwhip: ["9L1"],
- bite: ["9L1"],
- twister: ["9L1"],
- tailwind: ["9L1"],
- uturn: ["9L1"],
- bounce: ["9L1"],
- aerialace: ["9L1"],
- agility: ["9L1"],
- attract: ["9L1"],
- blizzard: ["9L1"],
- bodyslam: ["9L1"],
- breakingswipe: ["9L1"],
- bulldoze: ["9L1"],
- bulletseed: ["9L1"],
- crunch: ["9L1"],
- doubleteam: ["9L1"],
- endure: ["9L1"],
- facade: ["9L1"],
- falseswipe: ["9L1"],
- firespin: ["9L1"],
- fly: ["9L1"],
- gigaimpact: ["9L1"],
- heatwave: ["9L1"],
- hyperbeam: ["9L1"],
- hypervoice: ["9L1"],
- pluck: ["9L1"],
- powerswap: ["9L1"],
- protect: ["9L1"],
- psychup: ["9L1"],
- raindance: ["9L1"],
- rest: ["9L1"],
- whirlwind: ["9L1"],
- haze: ["9L1"],
- rocksmash: ["9L1"],
- round: ["9L1"],
- safeguard: ["9L1"],
- sleeptalk: ["9L1"],
- snore: ["9L1"],
- solarbeam: ["9L1"],
- steelwing: ["9L1"],
- substitute: ["9L1"],
- sunnyday: ["9L1"],
- swagger: ["9L1"],
- swift: ["9L1"],
- thief: ["9L1"],
- thunder: ["9L1"],
- uproar: ["9L1"],
- crystaltail: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- feralbite: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- celespirit: {
- learnset: {
- shadowball: ["9L1"],
- hex: ["9L1"],
- moonblast: ["9L1"],
- icebeam: ["9L1"],
- thunderbolt: ["9L1"],
- calmmind: ["9L1"],
- moonlight: ["9L1"],
- sheercold: ["9L1"],
- hypnosis: ["9L1"],
- astonish: ["9L1"],
- growl: ["9L1"],
- fairywind: ["9L1"],
- helpinghand: ["9L1"],
- nightshade: ["9L1"],
- ominouswind: ["9L1"],
- lifedew: ["9L1"],
- healpulse: ["9L1"],
- curse: ["9L1"],
- icywind: ["9L1"],
- healbell: ["9L1"],
- eerieimpulse: ["9L1"],
- healingwish: ["9L1"],
- attract: ["9L1"],
- blizzard: ["9L1"],
- chargebeam: ["9L1"],
- confide: ["9L1"],
- darkpulse: ["9L1"],
- dazzlinggleam: ["9L1"],
- doubleteam: ["9L1"],
- drainingkiss: ["9L1"],
- dreameater: ["9L1"],
- embargo: ["9L1"],
- endure: ["9L1"],
- energyball: ["9L1"],
- facade: ["9L1"],
- flash: ["9L1"],
- fling: ["9L1"],
- frustration: ["9L1"],
- hyperbeam: ["9L1"],
- infestation: ["9L1"],
- lightscreen: ["9L1"],
- magiccoat: ["9L1"],
- magicroom: ["9L1"],
- meteorbeam: ["9L1"],
- painsplit: ["9L1"],
- payback: ["9L1"],
- protect: ["9L1"],
- psychic: ["9L1"],
- psychup: ["9L1"],
- raindance: ["9L1"],
- reflect: ["9L1"],
- rest: ["9L1"],
- return: ["9L1"],
- roleplay: ["9L1"],
- round: ["9L1"],
- shadowclaw: ["9L1"],
- shockwave: ["9L1"],
- skillswap: ["9L1"],
- sleeptalk: ["9L1"],
- snatch: ["9L1"],
- snore: ["9L1"],
- spite: ["9L1"],
- substitute: ["9L1"],
- sunnyday: ["9L1"],
- swagger: ["9L1"],
- taunt: ["9L1"],
- telekinesis: ["9L1"],
- thief: ["9L1"],
- throatchop: ["9L1"],
- thunder: ["9L1"],
- torment: ["9L1"],
- trick: ["9L1"],
- trickroom: ["9L1"],
- zenheadbutt: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- noxtrice: {
- learnset: {
- flareblitz: ["9L1"],
- blazekick: ["9L1"],
- honeclaws: ["9L1"],
- poisonjab: ["9L1"],
- defog: ["9L1"],
- earthquake: ["9L1"],
- gunkshot: ["9L1"],
- uturn: ["9L1"],
- crunch: ["9L1"],
- toxic: ["9L1"],
- willowisp: ["9L1"],
- taunt: ["9L1"],
- roost: ["9L1"],
- stompingtantrum: ["9L1"],
- dragondance: ["9L1"],
- peck: ["9L1"],
- growl: ["9L1"],
- smokescreen: ["9L1"],
- ember: ["9L1"],
- smog: ["9L1"],
- flamewheel: ["9L1"],
- drillpeck: ["9L1"],
- scaryface: ["9L1"],
- memento: ["9L1"],
- bravebird: ["9L1"],
- acrobatics: ["9L1"],
- aerialace: ["9L1"],
- attract: ["9L1"],
- beatup: ["9L1"],
- bounce: ["9L1"],
- breakingswipe: ["9L1"],
- corrosivegas: ["9L1"],
- crosspoison: ["9L1"],
- dragonclaw: ["9L1"],
- dragonpulse: ["9L1"],
- endure: ["9L1"],
- facade: ["9L1"],
- faketears: ["9L1"],
- fireblast: ["9L1"],
- flamethrower: ["9L1"],
- fling: ["9L1"],
- foulplay: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- slash: ["9L1"],
- hypervoice: ["9L1"],
- nightslash: ["9L1"],
- heatwave: ["9L1"],
- helpinghand: ["9L1"],
- hurricane: ["9L1"],
- irontail: ["9L1"],
- overheat: ["9L1"],
- payback: ["9L1"],
- pluck: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- round: ["9L1"],
- scaleshot: ["9L1"],
- outrage: ["9L1"],
- shadowclaw: ["9L1"],
- sleeptalk: ["9L1"],
- sludgebomb: ["9L1"],
- sludgewave: ["9L1"],
- snore: ["9L1"],
- steelwing: ["9L1"],
- substitute: ["9L1"],
- swift: ["9L1"],
- thief: ["9L1"],
- thunderwave: ["9L1"],
- venomdrench: ["9L1"],
- venoshock: ["9L1"],
- quickguard: ["9L1"],
- crystalcutter: ["9L1"],
- crystaltail: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralshred: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- efflor: {
- learnset: {
- stoneedge: ["9L1"],
- rockslide: ["9L1"],
- chillyreception: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- substitute: ["9L1"],
- sleeptalk: ["9L1"],
- rockblast: ["9L1"],
- rocktomb: ["9L1"],
- smackdown: ["9L1"],
- rollout: ["9L1"],
- rockthrow: ["9L1"],
- grassyglide: ["9L1"],
- petalblizzard: ["9L1"],
- bulletseed: ["9L1"],
- seedbomb: ["9L1"],
- vinewhip: ["9L1"],
- earthquake: ["9L1"],
- highhorsepower: ["9L1"],
- bulldoze: ["9L1"],
- stompingtantrum: ["9L1"],
- bodypress: ["9L1"],
- heavyslam: ["9L1"],
- ironhead: ["9L1"],
- gyroball: ["9L1"],
- bite: ["9L1"],
- payback: ["9L1"],
- assurance: ["9L1"],
- zenheadbutt: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- megapunch: ["9L1"],
- megakick: ["9L1"],
- takedown: ["9L1"],
- pound: ["9L1"],
- headbutt: ["9L1"],
- powergem: ["9L1"],
- meteorbeam: ["9L1"],
- ancientpower: ["9L1"],
- gigadrain: ["9L1"],
- grassknot: ["9L1"],
- energyball: ["9L1"],
- megadrain: ["9L1"],
- absorb: ["9L1"],
- magicalleaf: ["9L1"],
- leafage: ["9L1"],
- earthpower: ["9L1"],
- mudbomb: ["9L1"],
- mudslap: ["9L1"],
- dazzlinggleam: ["9L1"],
- leer: ["9L1"],
- stealthrock: ["9L1"],
- rockpolish: ["9L1"],
- curse: ["9L1"],
- synthesis: ["9L1"],
- grassyterrain: ["9L1"],
- raindance: ["9L1"],
- sunnyday: ["9L1"],
- sandstorm: ["9L1"],
- mistyterrain: ["9L1"],
- growth: ["9L1"],
- watergun: ["9L1"],
- defensecurl: ["9L1"],
- rapidspin: ["9L1"],
- leechseed: ["9L1"],
- ingrain: ["9L1"],
- solarbeam: ["9L1"],
- weatherball: ["9L1"],
- bellydrum: ["9L1"],
- helpinghand: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalfortification: ["9L1"],
- crystalhealing: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- avastar: {
- learnset: {
- psychic: ["9L1"],
- psyshock: ["9L1"],
- futuresight: ["9L1"],
- flashcannon: ["9L1"],
- steelbeam: ["9L1"],
- dazzlinggleam: ["9L1"],
- darkpulse: ["9L1"],
- shadowball: ["9L1"],
- thunder: ["9L1"],
- thunderbolt: ["9L1"],
- thunderwave: ["9L1"],
- hurricane: ["9L1"],
- rapidspin: ["9L1"],
- calmmind: ["9L1"],
- recover: ["9L1"],
- teleport: ["9L1"],
- irondefense: ["9L1"],
- gravity: ["9L1"],
- lightscreen: ["9L1"],
- reflect: ["9L1"],
- safeguard: ["9L1"],
- trickroom: ["9L1"],
- quash: ["9L1"],
- heavyslam: ["9L1"],
- zenheadbutt: ["9L1"],
- bodyslam: ["9L1"],
- gigaimpact: ["9L1"],
- hyperbeam: ["9L1"],
- psybeam: ["9L1"],
- confusion: ["9L1"],
- magnetbomb: ["9L1"],
- ironhead: ["9L1"],
- gyroball: ["9L1"],
- spark: ["9L1"],
- psychicterrain: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- feralshred: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralhealing: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- faerenheit: {
- learnset: {
- acrobatics: ["9L1"],
- lavaplume: ["9L1"],
- aerialace: ["9L1"],
- burnup: ["9L1"],
- calmmind: ["9L1"],
- dazzlinggleam: ["9L1"],
- encore: ["9L1"],
- firespin: ["9L1"],
- fireblast: ["9L1"],
- flamecharge: ["9L1"],
- flamethrower: ["9L1"],
- flash: ["9L1"],
- gravity: ["9L1"],
- healbell: ["9L1"],
- heatcrash: ["9L1"],
- hyperbeam: ["9L1"],
- imprison: ["9L1"],
- lightscreen: ["9L1"],
- mistyexplosion: ["9L1"],
- mistyterrain: ["9L1"],
- moonblast: ["9L1"],
- mysticalfire: ["9L1"],
- overheat: ["9L1"],
- playrough: ["9L1"],
- psychup: ["9L1"],
- reflect: ["9L1"],
- skillswap: ["9L1"],
- sunnyday: ["9L1"],
- trick: ["9L1"],
- trickroom: ["9L1"],
- willowisp: ["9L1"],
- wish: ["9L1"],
- triattack: ["9L1"],
- flareblitz: ["9L1"],
- fairywind: ["9L1"],
- ember: ["9L1"],
- safeguard: ["9L1"],
- wrap: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- takedown: ["9L1"],
- pound: ["9L1"],
- gigaimpact: ["9L1"],
- zenheadbutt: ["9L1"],
- psychic: ["9L1"],
- psyshock: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- morningsun: ["9L1"],
- helpinghand: ["9L1"],
- crystaltail: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- cellsius: {
- learnset: {
- hydropump: ["9L1"],
- scald: ["9L1"],
- surf: ["9L1"],
- brine: ["9L1"],
- dive: ["9L1"],
- bubblebeam: ["9L1"],
- waterpulse: ["9L1"],
- watergun: ["9L1"],
- moonblast: ["9L1"],
- dazzlinggleam: ["9L1"],
- mistyexplosion: ["9L1"],
- fairywind: ["9L1"],
- icebeam: ["9L1"],
- icywind: ["9L1"],
- blizzard: ["9L1"],
- energyball: ["9L1"],
- grassknot: ["9L1"],
- psychic: ["9L1"],
- extrasensory: ["9L1"],
- triattack: ["9L1"],
- hyperbeam: ["9L1"],
- flipturn: ["9L1"],
- liquidation: ["9L1"],
- waterfall: ["9L1"],
- playrough: ["9L1"],
- ironhead: ["9L1"],
- zenheadbutt: ["9L1"],
- acrobatics: ["9L1"],
- aerialace: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- headbutt: ["9L1"],
- wrap: ["9L1"],
- defog: ["9L1"],
- healbell: ["9L1"],
- calmmind: ["9L1"],
- haze: ["9L1"],
- trick: ["9L1"],
- lifedew: ["9L1"],
- aquaring: ["9L1"],
- charm: ["9L1"],
- raindance: ["9L1"],
- mistyterrain: ["9L1"],
- lightscreen: ["9L1"],
- reflect: ["9L1"],
- sunnyday: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- helpinghand: ["9L1"],
- chillingwater: ["9L1"],
- crystalcutter: ["9L1"],
- crystaltail: ["9L1"],
- crystalbeam: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- kelven: {
- learnset: {
- spiritbreak: ["9L1"],
- tripleaxel: ["9L1"],
- iciclecrash: ["9L1"],
- iceshard: ["9L1"],
- avalanche: ["9L1"],
- playrough: ["9L1"],
- closecombat: ["9L1"],
- sacredsword: ["9L1"],
- crosschop: ["9L1"],
- stoneedge: ["9L1"],
- nightslash: ["9L1"],
- hornleech: ["9L1"],
- ironhead: ["9L1"],
- smartstrike: ["9L1"],
- zenheadbutt: ["9L1"],
- acrobatics: ["9L1"],
- aerialace: ["9L1"],
- rapidspin: ["9L1"],
- slash: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- headbutt: ["9L1"],
- icebeam: ["9L1"],
- blizzard: ["9L1"],
- frostbreath: ["9L1"],
- aurorabeam: ["9L1"],
- powdersnow: ["9L1"],
- icywind: ["9L1"],
- moonblast: ["9L1"],
- dazzlinggleam: ["9L1"],
- mistyexplosion: ["9L1"],
- flashcannon: ["9L1"],
- powergem: ["9L1"],
- mysticalfire: ["9L1"],
- swordsdance: ["9L1"],
- spikes: ["9L1"],
- sheercold: ["9L1"],
- auroraveil: ["9L1"],
- calmmind: ["9L1"],
- reflect: ["9L1"],
- snowscape: ["9L1"],
- mistyterrain: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- icespinner: ["9L1"],
- helpinghand: ["9L1"],
- crystalcutter: ["9L1"],
- crystaltail: ["9L1"],
- crystalbeam: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- },
- },
- salaos: {
- learnset: {
- aurasphere: ["9L1"],
- focusblast: ["9L1"],
- beatup: ["9L1"],
- fierywrath: ["9L1"],
- suckerpunch: ["9L1"],
- crunch: ["9L1"],
- bite: ["9L1"],
- thief: ["9L1"],
- payback: ["9L1"],
- brutalswing: ["9L1"],
- feintattack: ["9L1"],
- assurance: ["9L1"],
- lashout: ["9L1"],
- dragontail: ["9L1"],
- dragonclaw: ["9L1"],
- outrage: ["9L1"],
- firefang: ["9L1"],
- psychicfangs: ["9L1"],
- zenheadbutt: ["9L1"],
- aquatail: ["9L1"],
- powerwhip: ["9L1"],
- seedbomb: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- headbutt: ["9L1"],
- darkpulse: ["9L1"],
- snarl: ["9L1"],
- sludgebomb: ["9L1"],
- fireblast: ["9L1"],
- flamethrower: ["9L1"],
- surf: ["9L1"],
- scald: ["9L1"],
- energyball: ["9L1"],
- grassknot: ["9L1"],
- solarbeam: ["9L1"],
- psychic: ["9L1"],
- confusion: ["9L1"],
- dazzlinggleam: ["9L1"],
- dragonpulse: ["9L1"],
- hyperbeam: ["9L1"],
- recover: ["9L1"],
- toxic: ["9L1"],
- toxicspikes: ["9L1"],
- amnesia: ["9L1"],
- lightscreen: ["9L1"],
- psychicterrain: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- comeuppance: ["9L1"],
- crystaltail: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- feralbite: ["9L1"],
- feralshred: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- morndos: {
- learnset: {
- whirlwind: ["9L1"],
- aurasphere: ["9L1"],
- focusblast: ["9L1"],
- bravebird: ["9L1"],
- dualwingbeat: ["9L1"],
- acrobatics: ["9L1"],
- aerialace: ["9L1"],
- fly: ["9L1"],
- skyattack: ["9L1"],
- wingattack: ["9L1"],
- skydrop: ["9L1"],
- beatup: ["9L1"],
- foulplay: ["9L1"],
- darkestlariat: ["9L1"],
- lashout: ["9L1"],
- nightslash: ["9L1"],
- assurance: ["9L1"],
- payback: ["9L1"],
- thief: ["9L1"],
- uturn: ["9L1"],
- seedbomb: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- slash: ["9L1"],
- oblivionwing: ["9L1"],
- hurricane: ["9L1"],
- airslash: ["9L1"],
- aircutter: ["9L1"],
- gust: ["9L1"],
- darkpulse: ["9L1"],
- heatwave: ["9L1"],
- energyball: ["9L1"],
- grassknot: ["9L1"],
- psychic: ["9L1"],
- mudslap: ["9L1"],
- roost: ["9L1"],
- defog: ["9L1"],
- taunt: ["9L1"],
- disable: ["9L1"],
- perishsong: ["9L1"],
- featherdance: ["9L1"],
- torment: ["9L1"],
- screech: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- tailwind: ["9L1"],
- curse: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- comeuppance: ["9L1"],
- wideguard: ["9L1"],
- quickguard: ["9L1"],
- crystalcutter: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalfortification: ["9L1"],
- feralbite: ["9L1"],
- feralshred: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- pythos: {
- learnset: {
- aurasphere: ["9L1"],
- crunch: ["9L1"],
- knockoff: ["9L1"],
- suckerpunch: ["9L1"],
- bite: ["9L1"],
- brutalswing: ["9L1"],
- payback: ["9L1"],
- assurance: ["9L1"],
- lashout: ["9L1"],
- superpower: ["9L1"],
- brickbreak: ["9L1"],
- rocksmash: ["9L1"],
- beatup: ["9L1"],
- revenge: ["9L1"],
- irontail: ["9L1"],
- ironhead: ["9L1"],
- psychicfangs: ["9L1"],
- firefang: ["9L1"],
- dragontail: ["9L1"],
- outrage: ["9L1"],
- scaleshot: ["9L1"],
- superfang: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- headbutt: ["9L1"],
- wrap: ["9L1"],
- constrict: ["9L1"],
- bind: ["9L1"],
- gigaimpact: ["9L1"],
- darkpulse: ["9L1"],
- focusblast: ["9L1"],
- flamethrower: ["9L1"],
- psychic: ["9L1"],
- gigadrain: ["9L1"],
- energyball: ["9L1"],
- grassknot: ["9L1"],
- solarbeam: ["9L1"],
- wringout: ["9L1"],
- hyperbeam: ["9L1"],
- coil: ["9L1"],
- glare: ["9L1"],
- nastyplot: ["9L1"],
- taunt: ["9L1"],
- torment: ["9L1"],
- screech: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- sandstorm: ["9L1"],
- snowscape: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- comeuppance: ["9L1"],
- crystaltail: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- feralbite: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- corundell: {
- learnset: {
- stoneedge: ["9L1"],
- energyball: ["9L1"],
- solarbeam: ["9L1"],
- solarblade: ["9L1"],
- overheat: ["9L1"],
- flareblitz: ["9L1"],
- flamecharge: ["9L1"],
- rockslide: ["9L1"],
- rockblast: ["9L1"],
- smackdown: ["9L1"],
- rocktomb: ["9L1"],
- rockpolish: ["9L1"],
- bodypress: ["9L1"],
- superpower: ["9L1"],
- wildcharge: ["9L1"],
- zingzap: ["9L1"],
- spark: ["9L1"],
- earthquake: ["9L1"],
- stompingtantrum: ["9L1"],
- bulldoze: ["9L1"],
- dualwingbeat: ["9L1"],
- doubleedge: ["9L1"],
- bodyslam: ["9L1"],
- takedown: ["9L1"],
- pound: ["9L1"],
- slam: ["9L1"],
- gigaimpact: ["9L1"],
- meteorbeam: ["9L1"],
- revelationdance: ["9L1"],
- powergem: ["9L1"],
- thunderbolt: ["9L1"],
- thunder: ["9L1"],
- risingvoltage: ["9L1"],
- voltswitch: ["9L1"],
- discharge: ["9L1"],
- chargebeam: ["9L1"],
- shockwave: ["9L1"],
- thundershock: ["9L1"],
- earthpower: ["9L1"],
- scorchingsands: ["9L1"],
- triattack: ["9L1"],
- shadowball: ["9L1"],
- extrasensory: ["9L1"],
- hyperbeam: ["9L1"],
- stealthrock: ["9L1"],
- recover: ["9L1"],
- thunderwave: ["9L1"],
- painsplit: ["9L1"],
- electricterrain: ["9L1"],
- sandstorm: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- metalsound: ["9L1"],
- eerieimpulse: ["9L1"],
- magnetrise: ["9L1"],
- lightscreen: ["9L1"],
- reflect: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- crystaltail: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- quadringo: {
- learnset: {
- dragontail: ["9L1"],
- dragonclaw: ["9L1"],
- beatup: ["9L1"],
- outrage: ["9L1"],
- dragonrush: ["9L1"],
- spiritbreak: ["9L1"],
- playrough: ["9L1"],
- earthquake: ["9L1"],
- bulldoze: ["9L1"],
- rockslide: ["9L1"],
- irontail: ["9L1"],
- aquatail: ["9L1"],
- bravebird: ["9L1"],
- dualwingbeat: ["9L1"],
- wingattack: ["9L1"],
- bounce: ["9L1"],
- nightslash: ["9L1"],
- brutalswing: ["9L1"],
- gigaimpact: ["9L1"],
- bodyslam: ["9L1"],
- doubleedge: ["9L1"],
- takedown: ["9L1"],
- strength: ["9L1"],
- steelwing: ["9L1"],
- slam: ["9L1"],
- scratch: ["9L1"],
- slash: ["9L1"],
- dracometeor: ["9L1"],
- dragonpulse: ["9L1"],
- dragonbreath: ["9L1"],
- twister: ["9L1"],
- moonblast: ["9L1"],
- drainingkiss: ["9L1"],
- dazzlinggleam: ["9L1"],
- mistyexplosion: ["9L1"],
- fairywind: ["9L1"],
- mysticalfire: ["9L1"],
- surf: ["9L1"],
- waterpulse: ["9L1"],
- airslash: ["9L1"],
- aircutter: ["9L1"],
- swift: ["9L1"],
- hypervoice: ["9L1"],
- hyperbeam: ["9L1"],
- roost: ["9L1"],
- defog: ["9L1"],
- healbell: ["9L1"],
- haze: ["9L1"],
- featherdance: ["9L1"],
- attract: ["9L1"],
- workup: ["9L1"],
- confide: ["9L1"],
- raindance: ["9L1"],
- sunnyday: ["9L1"],
- safeguard: ["9L1"],
- mimic: ["9L1"],
- leer: ["9L1"],
- mistyterrain: ["9L1"],
- calmmind: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- whirlwind: ["9L1"],
- helpinghand: ["9L1"],
- crystalcutter: ["9L1"],
- crystaltail: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- feralbite: ["9L1"],
- feralshred: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- saphor: {
- learnset: {
- doubleedge: ["9L1"],
- scorchingsands: ["9L1"],
- headlongrush: ["9L1"],
- bodyslam: ["9L1"],
- earthquake: ["9L1"],
- stoneedge: ["9L1"],
- superpower: ["9L1"],
- bodypress: ["9L1"],
- wildcharge: ["9L1"],
- hornleech: ["9L1"],
- trailblaze: ["9L1"],
- heavyslam: ["9L1"],
- ironhead: ["9L1"],
- megahorn: ["9L1"],
- playrough: ["9L1"],
- hypervoice: ["9L1"],
- triattack: ["9L1"],
- shadowball: ["9L1"],
- darkpulse: ["9L1"],
- aurasphere: ["9L1"],
- focusblast: ["9L1"],
- earthpower: ["9L1"],
- energyball: ["9L1"],
- gigadrain: ["9L1"],
- grassknot: ["9L1"],
- solarbeam: ["9L1"],
- meteorbeam: ["9L1"],
- powergem: ["9L1"],
- psychic: ["9L1"],
- dazzlinggleam: ["9L1"],
- calmmind: ["9L1"],
- milkdrink: ["9L1"],
- bulkup: ["9L1"],
- stealthrock: ["9L1"],
- irondefense: ["9L1"],
- roar: ["9L1"],
- nobleroar: ["9L1"],
- healbell: ["9L1"],
- tackle: ["9L1"],
- takedown: ["9L1"],
- headbutt: ["9L1"],
- round: ["9L1"],
- bulldoze: ["9L1"],
- rocktomb: ["9L1"],
- rockslide: ["9L1"],
- rockblast: ["9L1"],
- highhorsepower: ["9L1"],
- gigaimpact: ["9L1"],
- hyperbeam: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- endure: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- sandstorm: ["9L1"],
- mistyterrain: ["9L1"],
- grassyterrain: ["9L1"],
- helpinghand: ["9L1"],
- wideguard: ["9L1"],
- crystalcutter: ["9L1"],
- crystaltail: ["9L1"],
- crystalbash: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- crystalshard: ["9L1"],
- },
- },
- fenreil: {
- learnset: {
- wildcharge: ["9L1"],
- ironhead: ["9L1"],
- irontail: ["9L1"],
- doubleedge: ["9L1"],
- howl: ["9L1"],
- bodyslam: ["9L1"],
- darkpulse: ["9L1"],
- snarl: ["9L1"],
- crunch: ["9L1"],
- jawlock: ["9L1"],
- knockoff: ["9L1"],
- playrough: ["9L1"],
- uturn: ["9L1"],
- stoneedge: ["9L1"],
- rockslide: ["9L1"],
- rockblast: ["9L1"],
- rocktomb: ["9L1"],
- psychicfangs: ["9L1"],
- firefang: ["9L1"],
- flamecharge: ["9L1"],
- icefang: ["9L1"],
- thunderfang: ["9L1"],
- trailblaze: ["9L1"],
- hypervoice: ["9L1"],
- shadowball: ["9L1"],
- aurasphere: ["9L1"],
- focusblast: ["9L1"],
- earthpower: ["9L1"],
- swordsdance: ["9L1"],
- nastyplot: ["9L1"],
- taunt: ["9L1"],
- substitute: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- round: ["9L1"],
- endure: ["9L1"],
- bite: ["9L1"],
- torment: ["9L1"],
- assurance: ["9L1"],
- meanlook: ["9L1"],
- scaryface: ["9L1"],
- superpower: ["9L1"],
- brutalswing: ["9L1"],
- nobleroar: ["9L1"],
- growl: ["9L1"],
- tackle: ["9L1"],
- roar: ["9L1"],
- headbutt: ["9L1"],
- superfang: ["9L1"],
- stompingtantrum: ["9L1"],
- helpinghand: ["9L1"],
- quickguard: ["9L1"],
- feralbite: ["9L1"],
- feralshred: ["9L1"],
- feralrush: ["9L1"],
- feralshriek: ["9L1"],
- feralpower: ["9L1"],
- feralbreath: ["9L1"],
- feralspray: ["9L1"],
- feralresilience: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- flocura: {
- learnset: {
- leafstorm: ["9L1"],
- focusblast: ["9L1"],
- aurasphere: ["9L1"],
- seedbomb: ["9L1"],
- bulletseed: ["9L1"],
- psychocut: ["9L1"],
- leechseed: ["9L1"],
- earthpower: ["9L1"],
- guardswap: ["9L1"],
- guardsplit: ["9L1"],
- powerswap: ["9L1"],
- uturn: ["9L1"],
- lunge: ["9L1"],
- zenheadbutt: ["9L1"],
- acrobatics: ["9L1"],
- aerialace: ["9L1"],
- fly: ["9L1"],
- petalblizzard: ["9L1"],
- bodyslam: ["9L1"],
- doubleedge: ["9L1"],
- takedown: ["9L1"],
- gigaimpact: ["9L1"],
- pollenpuff: ["9L1"],
- shadowball: ["9L1"],
- hex: ["9L1"],
- psychic: ["9L1"],
- futuresight: ["9L1"],
- psyshock: ["9L1"],
- darkpulse: ["9L1"],
- thunderbolt: ["9L1"],
- thunder: ["9L1"],
- dazzlinggleam: ["9L1"],
- powergem: ["9L1"],
- meteorbeam: ["9L1"],
- energyball: ["9L1"],
- gigadrain: ["9L1"],
- triattack: ["9L1"],
- hyperbeam: ["9L1"],
- sleeppowder: ["9L1"],
- stealthrock: ["9L1"],
- thunderwave: ["9L1"],
- painsplit: ["9L1"],
- taunt: ["9L1"],
- calmmind: ["9L1"],
- nastyplot: ["9L1"],
- amnesia: ["9L1"],
- workup: ["9L1"],
- psychicterrain: ["9L1"],
- mistyterrain: ["9L1"],
- sunnyday: ["9L1"],
- raindance: ["9L1"],
- snowscape: ["9L1"],
- sandstorm: ["9L1"],
- cottonspore: ["9L1"],
- stunspore: ["9L1"],
- attract: ["9L1"],
- doubleteam: ["9L1"],
- endure: ["9L1"],
- facade: ["9L1"],
- protect: ["9L1"],
- rest: ["9L1"],
- sleeptalk: ["9L1"],
- substitute: ["9L1"],
- swagger: ["9L1"],
- helpinghand: ["9L1"],
- crystaltail: ["9L1"],
- crystalbeam: ["9L1"],
- crystalcage: ["9L1"],
- crystalburst: ["9L1"],
- crystalhealing: ["9L1"],
- crystalfortification: ["9L1"],
- feralrush: ["9L1"],
- feralpower: ["9L1"],
- feralresilience: ["9L1"],
- feralspray: ["9L1"],
- feralhealing: ["9L1"],
- },
- },
- flocuranexus: {
- learnset: {
- },
- },
-};
diff --git a/data/mods/scootopiav2/moves.ts b/data/mods/scootopiav2/moves.ts
deleted file mode 100644
index 93f63b3cbe..0000000000
--- a/data/mods/scootopiav2/moves.ts
+++ /dev/null
@@ -1,1284 +0,0 @@
-export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
- shedtail: {
- num: 880,
- accuracy: true,
- basePower: 0,
- category: "Status",
- name: "Shed Tail",
- pp: 10,
- priority: 0,
- flags: {},
- shortDesc: "Sac 12.5% HP, switch, heal ally 25%. Ally: 50% dmg redux this turn.",
- onTryHit(source) {
- if (!this.canSwitch(source.side)) {
- this.add('-fail', source);
- return this.NOT_FAIL;
- }
- if (source.hp <= Math.ceil(source.maxhp / 8)) {
- this.add('-fail', source, 'move: Shed Tail', '[weak]');
- return this.NOT_FAIL;
- }
- },
- onHit(target) {
- this.directDamage(Math.ceil(target.maxhp / 8));
- },
- slotCondition: 'shedtail',
- condition: {
- duration: 1,
- onSwap(target) {
- if (!target.fainted && (target.hp < target.maxhp || target.status)) {
- target.heal(target.maxhp / 4);
- this.add('-heal', target, target.getHealth, '[from] move: Healing Wish');
- }
- },
- onModifyDef(def, pokemon) {
- return this.chainModify(2);
- },
- onModifySpD(spd, pokemon) {
- return this.chainModify(2);
- },
- },
- selfSwitch: 'shedtail',
- secondary: null,
- target: "self",
- type: "Normal",
- zMove: { effect: 'clearnegativeboost' },
- },
- photonray: {
- accuracy: 100,
- basePower: 90,
- category: "Special",
- name: "Photon Ray",
- pp: 10,
- priority: 0,
- flags: { protect: 1, mirror: 1 },
- onModifyMove(move, pokemon) {
- if (pokemon.getStat('atk', false, true) > pokemon.getStat('spa', false, true)) move.category = 'Physical';
- },
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Photon Geyser", target);
- },
- secondary: null,
- target: "normal",
- type: "Psychic",
- contestType: "Cool",
- },
- energysiphon: {
- accuracy: 100,
- basePower: 50,
- category: "Special",
- name: "Energy Siphon",
- shortDesc: "Drains target's HP for 3 turns.",
- pp: 10,
- priority: 0,
- flags: { protect: 1, mirror: 1, heal: 1, contact: 1 },
- drain: [1, 2],
- secondary: null,
- target: "normal",
- type: "Grass",
- volatileStatus: 'energysiphon',
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Fell Stinger", target);
- },
- condition: {
- onStart(target) {
- this.add('-start', target, 'move: Energy Siphon');
- },
- duration: 3,
- onResidualOrder: 8,
- onResidual(pokemon) {
- const target = this.getAtSlot(pokemon.volatiles['energysiphon'].sourceSlot);
- if (!target || target.fainted || target.hp <= 0) {
- console.log('Nothing to leech into');
- return;
- }
- const damage = this.damage(pokemon.baseMaxhp / 8, pokemon, target);
- if (damage) {
- this.heal(damage / 2, target, pokemon);
- }
- },
- },
- },
- sheercold: {
- accuracy: 85,
- basePower: 0,
- category: "Status",
- name: "Sheer Cold",
- pp: 15,
- priority: 0,
- flags: { protect: 1, reflectable: 1, mirror: 1 },
- status: 'frz',
- shortDesc: "Inflicts Freeze status on the opponent (1/16 Residual damage, halved SpA).",
- secondary: null,
- target: "normal",
- type: "Ice",
- zMove: { boost: { atk: 1 } },
- contestType: "Beautiful",
- },
- spore: {
- inherit: true,
- pp: 10,
- desc: "Puts the opponent to sleep for 1 turn",
- },
- sleeppowder: {
- inherit: true,
- pp: 15,
- accuracy: 90,
- desc: "Puts the opponent to sleep for 1 turn",
- },
- hypnosis: {
- inherit: true,
- pp: 20,
- accuracy: 85,
- desc: "Puts the opponent to sleep for 1 turn",
- },
- grasswhistle: {
- inherit: true,
- isNonstandard: null,
- pp: 25,
- accuracy: 80,
- desc: "Puts the opponent to sleep for 1 turn",
- },
- sing: {
- inherit: true,
- isNonstandard: null,
- pp: 25,
- accuracy: 80,
- desc: "Puts the opponent to sleep for 1 turn",
- },
- crystalcutter: {
- name: "Crystal Cutter",
- accuracy: 100,
- basePower: 50,
- category: "Physical",
- pp: 15,
- type: "Crystal",
- shortDesc: "Always crits. User recovers 50% of damage dealt",
- priority: 0,
- flags: { protect: 1, mirror: 1, contact: 1, slicing: 1 },
- target: "normal",
- willCrit: true,
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Psycho Cut", target);
- },
- drain: [1, 2],
- },
- crystaltail: {
- name: "Crystal Tail",
- accuracy: 85,
- basePower: 120,
- category: "Physical",
- pp: 5,
- type: "Crystal",
- shortDesc: "20% to lower foe's Atk by 1",
- priority: 0,
- flags: { protect: 1, mirror: 1, contact: 1 },
- target: "normal",
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Dragon Tail", target);
- },
- secondary: {
- chance: 20,
- boosts: {
- atk: -1,
- },
- },
- },
- crystalbash: {
- name: "Crystal Bash",
- accuracy: 100,
- basePower: 100,
- category: "Physical",
- pp: 10,
- type: "Crystal",
- shortDesc: "10% to lower foe's Atk by 1",
- priority: 0,
- flags: { protect: 1, mirror: 1, contact: 1 },
- target: "normal",
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Iron Head", target);
- },
- secondary: {
- chance: 10,
- boosts: {
- atk: -1,
- },
- },
- },
- crystalbeam: {
- name: "Crystal Beam",
- accuracy: 100,
- basePower: 90,
- category: "Special",
- pp: 15,
- type: "Crystal",
- shortDesc: "30% to lower foe's SpA by 1",
- priority: 0,
- flags: { protect: 1, mirror: 1 },
- target: "normal",
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Aurora Beam", target);
- },
- secondary: {
- chance: 30,
- boosts: {
- spa: -1,
- },
- },
- },
- crystalcage: {
- name: "Crystal Cage",
- accuracy: 85,
- basePower: 85,
- category: "Special",
- pp: 10,
- type: "Crystal",
- shortDesc: "Traps and damages for 4-5 turns.",
- priority: 0,
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Diamond Storm", target);
- },
- flags: { protect: 1, mirror: 1 },
- volatileStatus: 'partiallytrapped',
- target: "normal",
- secondary: null,
- },
- crystalburst: {
- accuracy: 100,
- basePower: 120,
- category: "Special",
- name: "Crystal Burst",
- pp: 5,
- shortDesc: "Lower's user's SpA by 1",
- priority: 0,
- flags: { protect: 1, mirror: 1 },
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Clanging Scales", target);
- },
- self: {
- boosts: {
- spa: -1,
- },
- },
- secondary: null,
- target: "allAdjacentFoes",
- type: "Crystal",
- contestType: "Beautiful",
- },
- crystalhealing: {
- accuracy: true,
- basePower: 0,
- category: "Status",
- name: "Crystal Healing",
- pp: 5,
- priority: 0,
- shortDesc: "Cures whole team's status conditions. 1/16 residual healing at the end of each turn.",
- flags: { snatch: 1, distance: 1, bypasssub: 1 },
- onHit(pokemon, source) {
- this.add('-activate', source, 'move: Crystal Healing');
- const side = pokemon.side;
- let success = false;
- for (const ally of side.pokemon) {
- if (ally.cureStatus()) success = true;
- }
- return success;
- },
- volatileStatus: 'crystalhealing',
- condition: {
- onStart(pokemon) {
- this.add('-start', pokemon, 'Crystal Healing');
- },
- onResidualOrder: 6,
- onResidual(pokemon) {
- this.heal(pokemon.baseMaxhp / 16);
- },
- },
- target: "allyTeam",
- type: "Crystal",
- zMove: { effect: 'heal' },
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Heal Bell", target);
- },
- contestType: "Beautiful",
- },
- crystalfortification: {
- accuracy: true,
- basePower: 0,
- category: "Status",
- name: "Crystal Fortification",
- pp: 20,
- priority: 0,
- shortDesc: "+1 Def, +1 SpD. Clears negative stat changes.",
- flags: { snatch: 1 },
- onHit(pokemon, source) {
- let b: BoostID;
- let didBoost = false;
- const negBoosts: Partial> = {};
- for (b in source.boosts) {
- if (source.boosts[b] < 0) negBoosts[b] = source.boosts[b] * -1;
- didBoost = true;
- }
- if (didBoost) {
- this.boost(negBoosts, source);
- }
- },
- boosts: {
- def: 1,
- spd: 1,
- },
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Iron Defense", target);
- },
- secondary: null,
- target: "self",
- type: "Crystal",
- zMove: { boost: { spd: 1 } },
- contestType: "Beautiful",
- },
- crystalshard: {
- accuracy: true,
- basePower: 0,
- category: "Status",
- name: "Crystal Shard",
- shortDesc: "Sets a layer of Spikes. (Not a new kind of hazard)",
- pp: 20,
- priority: 0,
- flags: { reflectable: 1, nonsky: 1 },
- onHitSide(side, source) {
- source.side.foe.addSideCondition("spikes");
- },
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Spikes", target);
- },
- secondary: null,
- target: "foeSide",
- type: "Crystal",
- zMove: { boost: { spd: 1 } },
- contestType: "Beautiful",
- },
- feralbite: {
- name: "Feral Bite",
- accuracy: 100,
- basePower: 90,
- category: "Physical",
- pp: 15,
- type: "Feral",
- shortDesc: "30% chance to Poison foe.",
- priority: 0,
- flags: { protect: 1, mirror: 1, contact: 1, bite: 1 },
- target: "normal",
- secondary: {
- chance: 30,
- status: "psn",
- },
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Poison Fang", target);
- },
- },
- feralshred: {
- name: "Feral Shred",
- accuracy: 100,
- basePower: 20,
- category: "Physical",
- pp: 15,
- type: "Feral",
- shortDesc: "Hits twice. Lowers foe's Def by 1 on each hit",
- priority: 0,
- multihit: 2,
- flags: { protect: 1, mirror: 1, contact: 1 },
- target: "normal",
- secondary: {
- chance: 100,
- boosts: {
- def: -1,
- },
- },
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Dragon Claw", target);
- },
- },
- feralrush: {
- name: "Feral Rush",
- accuracy: 100,
- basePower: 120,
- category: "Physical",
- pp: 10,
- type: "Feral",
- shortDesc: "User takes 1/3 recoil damage. 20% to lower foe's Def by 1",
- priority: 0,
- recoil: [33, 100],
- flags: { protect: 1, mirror: 1, contact: 1 },
- target: "normal",
- secondary: {
- chance: 20,
- boosts: {
- def: -1,
- },
- },
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Double-Edge", target);
- },
- },
- feralshriek: {
- name: "Feral Shriek",
- accuracy: 100,
- basePower: 90,
- category: "Special",
- pp: 15,
- type: "Feral",
- shortDesc: "20% to lower foe's SpD by 1",
- priority: 0,
- flags: { protect: 1, mirror: 1, sound: 1 },
- target: "allAdjacentFoes",
- secondary: {
- chance: 20,
- boosts: {
- spd: -1,
- },
- },
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Overdrive", target);
- },
- },
- feralpower: {
- accuracy: 100,
- basePower: 110,
- category: "Special",
- name: "Feral Power",
- pp: 5,
- priority: 0,
- shortDesc: "Lowers user's Def by 1",
- flags: { protect: 1, mirror: 1, bypasssub: 1 },
- selfBoost: {
- boosts: {
- def: -1,
- },
- },
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Searing Shot", target);
- },
- secondary: null,
- target: "allAdjacentFoes",
- type: "Feral",
- contestType: "Tough",
- },
- feralbreath: {
- name: "Feral Breath",
- accuracy: 100,
- basePower: 80,
- category: "Special",
- pp: 10,
- type: "Feral",
- shortDesc: "100% to lower foe's SpD by 1",
- priority: 0,
- flags: { protect: 1, mirror: 1 },
- target: "normal",
- secondary: {
- chance: 100,
- boosts: {
- spd: -1,
- },
- },
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Dragon Rage", target);
- },
- },
- feralhealing: {
- num: 816,
- accuracy: true,
- basePower: 0,
- category: "Status",
- priority: 0,
- flags: { heal: 1, bypasssub: 1, allyanim: 1 },
- onHit(pokemon) {
- const success = !!this.heal(this.modify(pokemon.maxhp, 0.25));
- return pokemon.cureStatus() || success;
- },
- secondary: null,
- target: "allies",
- name: "Feral Healing",
- pp: 15,
- shortDesc: "Heals user 25% and cures status.",
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Jungle Healing", target);
- },
- type: "Feral",
- zMove: { boost: { def: 1 } },
- contestType: "Cool",
- },
- feralspray: {
- accuracy: 100,
- basePower: 0,
- category: "Status",
- name: "Feral Spray",
- pp: 25,
- priority: 0,
- shortDesc: "+1 Atk, +1 SpA. Poisons the foe.",
- flags: { protect: 1, reflectable: 1, mirror: 1 },
- selfBoost: {
- boosts: {
- atk: 1,
- spa: 1,
- },
- },
- status: 'psn',
- secondary: null,
- target: "normal",
- type: "Feral",
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Acid Spray", target);
- },
- zMove: { boost: { def: 1 } },
- contestType: "Clever",
- },
- feralresilience: {
- accuracy: true,
- basePower: 0,
- category: "Status",
- name: "Feral Resilience",
- pp: 20,
- priority: 0,
- flags: { snatch: 1 },
- shortDesc: "+1 Atk, +1 SpA. Cures user's status conditions.",
- onHit(pokemon) {
- if (['', 'slp'].includes(pokemon.status)) return false;
- pokemon.cureStatus();
- },
- secondary: null,
- target: "self",
- boosts: {
- atk: 1,
- spa: 1,
- },
- type: "Feral",
- zMove: { effect: 'heal' },
- contestType: "Cute",
- onPrepareHit(target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Refresh", target);
- },
- },
- karatechop: {
- inherit: true,
- isNonstandard: null,
- },
- doubleslap: {
- inherit: true,
- isNonstandard: null,
- },
- cometpunch: {
- inherit: true,
- isNonstandard: null,
- },
- razorwind: {
- inherit: true,
- isNonstandard: null,
- },
- jumpkick: {
- inherit: true,
- isNonstandard: null,
- },
- rollingkick: {
- inherit: true,
- isNonstandard: null,
- },
- twineedle: {
- inherit: true,
- isNonstandard: null,
- },
- sonicboom: {
- inherit: true,
- isNonstandard: null,
- },
- submission: {
- inherit: true,
- isNonstandard: null,
- },
- dragonrage: {
- inherit: true,
- isNonstandard: null,
- },
- meditate: {
- inherit: true,
- isNonstandard: null,
- },
- rage: {
- inherit: true,
- isNonstandard: null,
- },
- barrier: {
- inherit: true,
- isNonstandard: null,
- },
- bide: {
- inherit: true,
- isNonstandard: null,
- },
- mirrormove: {
- inherit: true,
- isNonstandard: null,
- },
- eggbomb: {
- inherit: true,
- isNonstandard: null,
- },
- boneclub: {
- inherit: true,
- isNonstandard: null,
- },
- clamp: {
- inherit: true,
- isNonstandard: null,
- },
- skullbash: {
- inherit: true,
- isNonstandard: null,
- },
- spikecannon: {
- inherit: true,
- isNonstandard: null,
- },
- constrict: {
- inherit: true,
- isNonstandard: null,
- },
- kinesis: {
- inherit: true,
- isNonstandard: null,
- },
- barrage: {
- inherit: true,
- isNonstandard: null,
- },
- lovelykiss: {
- inherit: true,
- isNonstandard: null,
- },
- bubble: {
- inherit: true,
- isNonstandard: null,
- },
- dizzypunch: {
- inherit: true,
- isNonstandard: null,
- },
- flash: {
- inherit: true,
- isNonstandard: null,
- },
- psywave: {
- inherit: true,
- isNonstandard: null,
- },
- bonemerang: {
- inherit: true,
- isNonstandard: null,
- },
- hyperfang: {
- inherit: true,
- isNonstandard: null,
- },
- sharpen: {
- inherit: true,
- isNonstandard: null,
- },
- conversion: {
- inherit: true,
- isNonstandard: null,
- },
- sketch: {
- inherit: true,
- isNonstandard: null,
- },
- triplekick: {
- inherit: true,
- isNonstandard: null,
- },
- spiderweb: {
- inherit: true,
- isNonstandard: null,
- },
- mindreader: {
- inherit: true,
- isNonstandard: null,
- },
- nightmare: {
- inherit: true,
- isNonstandard: null,
- },
- conversion2: {
- inherit: true,
- isNonstandard: null,
- },
- aeroblast: {
- inherit: true,
- isNonstandard: null,
- },
- feintattack: {
- inherit: true,
- isNonstandard: null,
- },
- octazooka: {
- inherit: true,
- isNonstandard: null,
- },
- foresight: {
- inherit: true,
- isNonstandard: null,
- },
- return: {
- inherit: true,
- isNonstandard: null,
- },
- frustration: {
- inherit: true,
- isNonstandard: null,
- },
- sacredfire: {
- inherit: true,
- isNonstandard: null,
- },
- magnitude: {
- inherit: true,
- isNonstandard: null,
- },
- pursuit: {
- inherit: true,
- isNonstandard: null,
- },
- vitalthrow: {
- inherit: true,
- isNonstandard: null,
- },
- hiddenpower: {
- inherit: true,
- isNonstandard: null,
- },
- hail: {
- inherit: true,
- isNonstandard: null,
- },
- smellingsalts: {
- inherit: true,
- isNonstandard: null,
- },
- naturepower: {
- inherit: true,
- isNonstandard: null,
- },
- assist: {
- inherit: true,
- isNonstandard: null,
- },
- magiccoat: {
- inherit: true,
- isNonstandard: null,
- },
- revenge: {
- inherit: true,
- isNonstandard: null,
- },
- refresh: {
- inherit: true,
- isNonstandard: null,
- },
- grudge: {
- inherit: true,
- isNonstandard: null,
- },
- snatch: {
- inherit: true,
- isNonstandard: null,
- },
- secretpower: {
- inherit: true,
- isNonstandard: null,
- },
- camouflage: {
- inherit: true,
- isNonstandard: null,
- },
- tailglow: {
- inherit: true,
- isNonstandard: null,
- },
- lusterpurge: {
- inherit: true,
- isNonstandard: null,
- },
- mistball: {
- inherit: true,
- isNonstandard: null,
- },
- mudsport: {
- inherit: true,
- isNonstandard: null,
- },
- iceball: {
- inherit: true,
- isNonstandard: null,
- },
- needlearm: {
- inherit: true,
- isNonstandard: null,
- },
- aromatherapy: {
- inherit: true,
- isNonstandard: null,
- },
- odorsleuth: {
- inherit: true,
- isNonstandard: null,
- },
- silverwind: {
- inherit: true,
- isNonstandard: null,
- },
- signalbeam: {
- inherit: true,
- isNonstandard: null,
- },
- skyuppercut: {
- inherit: true,
- isNonstandard: null,
- },
- watersport: {
- inherit: true,
- isNonstandard: null,
- },
- doomdesire: {
- inherit: true,
- isNonstandard: null,
- },
- psychoboost: {
- inherit: true,
- isNonstandard: null,
- },
- miracleeye: {
- inherit: true,
- isNonstandard: null,
- },
- wakeupslap: {
- inherit: true,
- isNonstandard: null,
- },
- naturalgift: {
- inherit: true,
- isNonstandard: null,
- },
- embargo: {
- inherit: true,
- isNonstandard: null,
- },
- psychoshift: {
- inherit: true,
- isNonstandard: null,
- },
- trumpcard: {
- inherit: true,
- isNonstandard: null,
- },
- healblock: {
- inherit: true,
- isNonstandard: null,
- },
- wringout: {
- inherit: true,
- isNonstandard: null,
- },
- luckychant: {
- inherit: true,
- isNonstandard: null,
- },
- mefirst: {
- inherit: true,
- isNonstandard: null,
- },
- punishment: {
- inherit: true,
- isNonstandard: null,
- },
- mudbomb: {
- inherit: true,
- isNonstandard: null,
- },
- mirrorshot: {
- inherit: true,
- isNonstandard: null,
- },
- rockclimb: {
- inherit: true,
- isNonstandard: null,
- },
- rockwrecker: {
- inherit: true,
- isNonstandard: null,
- },
- magnetbomb: {
- inherit: true,
- isNonstandard: null,
- },
- captivate: {
- inherit: true,
- isNonstandard: null,
- },
- chatter: {
- inherit: true,
- isNonstandard: null,
- },
- healorder: {
- inherit: true,
- isNonstandard: null,
- },
- crushgrip: {
- inherit: true,
- isNonstandard: null,
- },
- darkvoid: {
- inherit: true,
- isNonstandard: null,
- },
- seedflare: {
- inherit: true,
- isNonstandard: null,
- },
- ominouswind: {
- inherit: true,
- isNonstandard: null,
- },
- autotomize: {
- inherit: true,
- isNonstandard: null,
- },
- telekinesis: {
- inherit: true,
- isNonstandard: null,
- },
- stormthrow: {
- inherit: true,
- isNonstandard: null,
- },
- flameburst: {
- inherit: true,
- isNonstandard: null,
- },
- synchronoise: {
- inherit: true,
- isNonstandard: null,
- },
- chipaway: {
- inherit: true,
- isNonstandard: null,
- },
- skydrop: {
- inherit: true,
- isNonstandard: null,
- },
- bestow: {
- inherit: true,
- isNonstandard: null,
- },
- dualchop: {
- inherit: true,
- isNonstandard: null,
- },
- heartstamp: {
- inherit: true,
- isNonstandard: null,
- },
- leaftornado: {
- inherit: true,
- isNonstandard: null,
- },
- steamroller: {
- inherit: true,
- isNonstandard: null,
- },
- headcharge: {
- inherit: true,
- isNonstandard: null,
- },
- geargrind: {
- inherit: true,
- isNonstandard: null,
- },
- searingshot: {
- inherit: true,
- isNonstandard: null,
- },
- technoblast: {
- inherit: true,
- isNonstandard: null,
- },
- secretsword: {
- inherit: true,
- isNonstandard: null,
- },
- glaciate: {
- inherit: true,
- isNonstandard: null,
- },
- boltstrike: {
- inherit: true,
- isNonstandard: null,
- },
- blueflare: {
- inherit: true,
- isNonstandard: null,
- },
- freezeshock: {
- inherit: true,
- isNonstandard: null,
- },
- iceburn: {
- inherit: true,
- isNonstandard: null,
- },
- fusionflare: {
- inherit: true,
- isNonstandard: null,
- },
- fusionbolt: {
- inherit: true,
- isNonstandard: null,
- },
- matblock: {
- inherit: true,
- isNonstandard: null,
- },
- rototiller: {
- inherit: true,
- isNonstandard: null,
- },
- trickortreat: {
- inherit: true,
- isNonstandard: null,
- },
- iondeluge: {
- inherit: true,
- isNonstandard: null,
- },
- forestscurse: {
- inherit: true,
- isNonstandard: null,
- },
- topsyturvy: {
- inherit: true,
- isNonstandard: null,
- },
- craftyshield: {
- inherit: true,
- isNonstandard: null,
- },
- flowershield: {
- inherit: true,
- isNonstandard: null,
- },
- electrify: {
- inherit: true,
- isNonstandard: null,
- },
- kingsshield: {
- inherit: true,
- isNonstandard: null,
- },
- venomdrench: {
- inherit: true,
- isNonstandard: null,
- },
- powder: {
- inherit: true,
- isNonstandard: null,
- },
- geomancy: {
- inherit: true,
- isNonstandard: null,
- },
- poweruppunch: {
- inherit: true,
- isNonstandard: null,
- },
- oblivionwing: {
- inherit: true,
- isNonstandard: null,
- },
- thousandarrows: {
- inherit: true,
- isNonstandard: null,
- },
- thousandwaves: {
- inherit: true,
- isNonstandard: null,
- },
- landswrath: {
- inherit: true,
- isNonstandard: null,
- },
- lightofruin: {
- inherit: true,
- isNonstandard: null,
- },
- sparklingaria: {
- inherit: true,
- isNonstandard: null,
- },
- floralhealing: {
- inherit: true,
- isNonstandard: null,
- },
- spotlight: {
- inherit: true,
- isNonstandard: null,
- },
- toxicthread: {
- inherit: true,
- isNonstandard: null,
- },
- laserfocus: {
- inherit: true,
- isNonstandard: null,
- },
- gearup: {
- inherit: true,
- isNonstandard: null,
- },
- anchorshot: {
- inherit: true,
- isNonstandard: null,
- },
- purify: {
- inherit: true,
- isNonstandard: null,
- },
- coreenforcer: {
- inherit: true,
- isNonstandard: null,
- },
- beakblast: {
- inherit: true,
- isNonstandard: null,
- },
- clangingscales: {
- inherit: true,
- isNonstandard: null,
- },
- dragonhammer: {
- inherit: true,
- isNonstandard: null,
- },
- shelltrap: {
- inherit: true,
- isNonstandard: null,
- },
- shadowbone: {
- inherit: true,
- isNonstandard: null,
- },
- prismaticlaser: {
- inherit: true,
- isNonstandard: null,
- },
- spectralthief: {
- inherit: true,
- isNonstandard: null,
- },
- sunsteelstrike: {
- inherit: true,
- isNonstandard: null,
- },
- moongeistbeam: {
- inherit: true,
- isNonstandard: null,
- },
- naturesmadness: {
- inherit: true,
- isNonstandard: null,
- },
- multiattack: {
- inherit: true,
- isNonstandard: null,
- },
- mindblown: {
- inherit: true,
- isNonstandard: null,
- },
- plasmafists: {
- inherit: true,
- isNonstandard: null,
- },
- photongeyser: {
- inherit: true,
- isNonstandard: null,
- },
- doubleironbash: {
- inherit: true,
- isNonstandard: null,
- },
- maxguard: {
- inherit: true,
- isNonstandard: null,
- },
- octolock: {
- inherit: true,
- isNonstandard: null,
- },
- boltbeak: {
- inherit: true,
- isNonstandard: null,
- },
- fishiousrend: {
- inherit: true,
- isNonstandard: null,
- },
- clangoroussoul: {
- inherit: true,
- isNonstandard: null,
- },
- decorate: {
- inherit: true,
- isNonstandard: null,
- },
- snaptrap: {
- inherit: true,
- isNonstandard: null,
- },
- aurawheel: {
- inherit: true,
- isNonstandard: null,
- },
- strangesteam: {
- inherit: true,
- isNonstandard: null,
- },
- obstruct: {
- inherit: true,
- isNonstandard: null,
- },
- meteorassault: {
- inherit: true,
- isNonstandard: null,
- },
- eternabeam: {
- inherit: true,
- isNonstandard: null,
- },
-};
diff --git a/data/mods/scootopiav2/pokedex.ts b/data/mods/scootopiav2/pokedex.ts
deleted file mode 100644
index 52f1bcbacd..0000000000
--- a/data/mods/scootopiav2/pokedex.ts
+++ /dev/null
@@ -1,551 +0,0 @@
-export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable = {
- arbrella: {
- num: 2001,
- name: "Arbrella",
- types: ["Grass", "Ground"],
- baseStats: { hp: 80, atk: 115, def: 100, spa: 80, spd: 80, spe: 75 },
- abilities: { 0: "Overgrow", H: "Tough Claws" },
- weightkg: 211,
- eggGroups: ["Undiscovered"],
- },
- krachiten: {
- num: 2002,
- name: "Krachiten",
- types: ["Water", "Bug"],
- baseStats: { hp: 90, atk: 120, def: 70, spa: 78, spd: 60, spe: 112 },
- abilities: { 0: "Torrent", H: "Sniper" },
- weightkg: 59,
- eggGroups: ["Undiscovered"],
- },
- scalaron: {
- num: 2003,
- name: "Scalaron",
- types: ["Fire", "Flying"],
- baseStats: { hp: 90, atk: 70, def: 90, spa: 100, spd: 105, spe: 75 },
- abilities: { 0: "Blaze", H: "Filter" },
- weightkg: 70,
- eggGroups: ["Undiscovered"],
- },
- rantler: {
- num: 2004,
- name: "Rantler",
- types: ["Normal", "Ice"],
- baseStats: { hp: 68, atk: 118, def: 94, spa: 43, spd: 79, spe: 73 },
- abilities: { 0: "Intimidate", 1: "Slush Rush", H: "Tough Claws" },
- weightkg: 67,
- eggGroups: ["Undiscovered"],
- },
- woolora: {
- num: 2005,
- name: "Woolora",
- types: ["Fairy"],
- baseStats: { hp: 70, atk: 75, def: 70, spa: 95, spd: 115, spe: 70 },
- abilities: { 0: "Fluffy", 1: "Rattled", H: "Pastel Veil" },
- weightkg: 50.3,
- eggGroups: ["Undiscovered"],
- },
- albatrygon: {
- num: 2006,
- name: "Albatrygon",
- types: ["Flying"],
- baseStats: { hp: 80, atk: 105, def: 70, spa: 65, spd: 60, spe: 95 },
- abilities: { 0: "Prankster", 1: "Klutz", H: "Unburden" },
- weightkg: 10.1,
- eggGroups: ["Undiscovered"],
- },
- orchile: {
- num: 2007,
- name: "Orchile",
- types: ["Grass", "Fairy"],
- baseStats: { hp: 65, atk: 60, def: 75, spa: 110, spd: 121, spe: 64 },
- abilities: { 0: "Sweet Veil", 1: "Aroma Veil", H: "Flower Veil" },
- weightkg: 45,
- eggGroups: ["Undiscovered"],
- },
- embuck: {
- num: 2008,
- name: "Embuck",
- types: ["Fire", "Fighting"],
- baseStats: { hp: 90, atk: 125, def: 80, spa: 83, spd: 65, spe: 82 },
- abilities: { 0: "Intimidate", H: "Flash Fire" },
- weightkg: 113,
- eggGroups: ["Undiscovered"],
- },
- cindoe: {
- num: 2009,
- name: "Cindoe",
- types: ["Fire", "Dark"],
- baseStats: { hp: 80, atk: 74, def: 55, spa: 110, spd: 100, spe: 106 },
- abilities: { 0: "Natural Cure", H: "Flash Fire" },
- weightkg: 67,
- eggGroups: ["Undiscovered"],
- },
- cobracotta: {
- num: 2010,
- name: "Cobracotta",
- types: ["Grass", "Poison"],
- baseStats: { hp: 80, atk: 90, def: 95, spa: 80, spd: 115, spe: 35 },
- abilities: { 0: "Mold Breaker", 1: "Weak Armor", H: "Heatproof" },
- weightkg: 68,
- eggGroups: ["Undiscovered"],
- },
- minillow: {
- num: 2011,
- name: "Minillow",
- types: ["Water", "Fairy"],
- baseStats: { hp: 70, atk: 64, def: 75, spa: 90, spd: 95, spe: 81 },
- abilities: { 0: "Swift Swim", 1: "Dazzling", H: "Adaptability" },
- weightkg: 22,
- eggGroups: ["Undiscovered"],
- },
- crossont: {
- num: 2012,
- name: "Crossont",
- types: ["Bug", "Fighting"],
- baseStats: { hp: 80, atk: 125, def: 100, spa: 60, spd: 80, spe: 80 },
- abilities: { 0: "Sniper", 1: "Long Reach", H: "Gooey" },
- weightkg: 121,
- eggGroups: ["Undiscovered"],
- },
- torgeist: {
- num: 2013,
- name: "Torgeist",
- types: ["Ghost", "Flying"],
- baseStats: { hp: 55, atk: 65, def: 95, spa: 115, spd: 100, spe: 105 },
- abilities: { 0: "Cursed Body", 1: "Clear Body", H: "Merciless" },
- weightkg: 9.7,
- eggGroups: ["Undiscovered"],
- },
- platypad: {
- num: 2014,
- name: "Platypad",
- types: ["Grass", "Water"],
- baseStats: { hp: 120, atk: 100, def: 80, spa: 100, spd: 80, spe: 40 },
- abilities: { 0: "Thick Fat", 1: "Triage", H: "Flower Veil" },
- weightkg: 89,
- eggGroups: ["Undiscovered"],
- },
- lumoth: {
- num: 2015,
- name: "Lumoth",
- types: ["Bug", "Ghost"],
- baseStats: { hp: 60, atk: 55, def: 91, spa: 110, spd: 85, spe: 94 },
- abilities: { 0: "Levitate" },
- weightkg: 0.5,
- eggGroups: ["Undiscovered"],
- },
- aurorowl: {
- num: 2016,
- name: "Aurorowl",
- types: ["Ice", "Flying"],
- baseStats: { hp: 70, atk: 70, def: 65, spa: 95, spd: 95, spe: 115 },
- abilities: { 0: "Snow Cloak", H: "Technician" },
- weightkg: 15,
- eggGroups: ["Undiscovered"],
- },
- carapex: {
- num: 2017,
- name: "Carapex",
- types: ["Bug", "Flying"],
- baseStats: { hp: 75, atk: 105, def: 155, spa: 55, spd: 90, spe: 60 },
- abilities: { 0: "Wind Rider", 1: "Mold Breaker", H: "Sturdy" },
- weightkg: 135,
- eggGroups: ["Undiscovered"],
- },
- dojodo: {
- num: 2018,
- name: "Dojodo",
- types: ["Fighting"],
- baseStats: { hp: 90, atk: 115, def: 80, spa: 65, spd: 100, spe: 80 },
- abilities: { 0: "Iron Fist", 1: "Stamina", H: "Supreme Overlord" },
- weightkg: 53,
- eggGroups: ["Undiscovered"],
- },
- nunopod: {
- num: 2019,
- name: "Nunopod",
- types: ["Ground", "Bug"],
- baseStats: { hp: 80, atk: 110, def: 125, spa: 68, spd: 75, spe: 67 },
- abilities: { 0: "Earth Eater", H: "Opportunist" },
- weightkg: 68,
- eggGroups: ["Undiscovered"],
- },
- zeploom: {
- num: 2020,
- name: "Zeploom",
- types: ["Grass", "Ground"],
- baseStats: { hp: 55, atk: 55, def: 145, spa: 65, spd: 150, spe: 45 },
- abilities: { 0: "Wind Rider", H: "Levitate" },
- weightkg: 5,
- eggGroups: ["Undiscovered"],
- },
- brawnkey: {
- num: 2021,
- name: "Brawnkey",
- types: ["Steel", "Fighting"],
- baseStats: { hp: 95, atk: 105, def: 105, spa: 85, spd: 80, spe: 50 },
- abilities: { 0: "Levitate" },
- weightkg: 85,
- eggGroups: ["Undiscovered"],
- },
- salamalix: {
- num: 2022,
- name: "Salamalix",
- types: ["Rock", "Steel"],
- baseStats: { hp: 70, atk: 120, def: 120, spa: 45, spd: 65, spe: 90 },
- abilities: { 0: "No Guard", 1: "Mold Breaker", H: "Intimidate" },
- weightkg: 85,
- eggGroups: ["Undiscovered"],
- },
- cinnastar: {
- num: 2023,
- name: "Cinnastar",
- types: ["Rock", "Poison"],
- baseStats: { hp: 110, atk: 95, def: 80, spa: 95, spd: 80, spe: 80 },
- abilities: { 0: "Liquid Ooze", H: "Regenerator" },
- weightkg: 56,
- eggGroups: ["Undiscovered"],
- },
- muabboa: {
- num: 2024,
- name: "MuabBoa",
- types: ["Ground", "Fighting"],
- baseStats: { hp: 65, atk: 100, def: 75, spa: 55, spd: 65, spe: 120 },
- abilities: { 0: "Anticipation", 1: "Sand Rush", H: "Inner Focus" },
- weightkg: 25,
- eggGroups: ["Undiscovered"],
- },
- volvolpa: {
- num: 2025,
- name: "Volvolpa",
- types: ["Electric", "Ice"],
- baseStats: { hp: 76, atk: 97, def: 64, spa: 70, spd: 102, spe: 121 },
- abilities: { 0: "Slush Rush", 1: "Volt Absorb", H: "Strong Jaw" },
- weightkg: 27,
- eggGroups: ["Undiscovered"],
- },
- harzodia: {
- num: 2026,
- name: "Harzodia",
- types: ["Psychic"],
- baseStats: { hp: 65, atk: 55, def: 75, spa: 125, spd: 75, spe: 95 },
- abilities: { 0: "Prankster", 1: "Unburden", H: "Solar Power" },
- weightkg: 35,
- eggGroups: ["Undiscovered"],
- },
- cyllindrake: {
- num: 2027,
- name: "Cyllindrake",
- types: ["Steel", "Dragon"],
- baseStats: { hp: 70, atk: 85, def: 115, spa: 95, spd: 70, spe: 110 },
- abilities: { 0: "Heavy Metal", 1: "Punk Rock", H: "Scrappy" },
- weightkg: 180,
- eggGroups: ["Undiscovered"],
- },
- kodokai: {
- num: 2028,
- name: "Kodokai",
- types: ["Ghost", "Fire"],
- baseStats: { hp: 110, atk: 65, def: 100, spa: 110, spd: 90, spe: 30 },
- abilities: { 0: "White Smoke", H: "Aroma Veil" },
- weightkg: 50,
- eggGroups: ["Undiscovered"],
- },
- electangle: {
- num: 2029,
- name: "Electangle",
- types: ["Steel", "Electric"],
- baseStats: { hp: 120, atk: 90, def: 110, spa: 90, spd: 90, spe: 25 },
- abilities: { 0: "Filter" },
- weightkg: 190,
- eggGroups: ["Undiscovered"],
- },
- dolphena: {
- num: 2030,
- name: "Dolphena",
- types: ["Water", "Dragon"],
- baseStats: { hp: 95, atk: 125, def: 80, spa: 84, spd: 75, spe: 81 },
- abilities: { 0: "Anger Point", H: "Mythical Presence" },
- weightkg: 271,
- eggGroups: ["Undiscovered"],
- },
- elemadillo: {
- num: 2035,
- name: "Elemadillo",
- types: ["Steel", "Electric"],
- baseStats: { hp: 67, atk: 94, def: 73, spa: 103, spd: 64, spe: 129 },
- abilities: { 0: "Weak Armor", 1: "Motor Drive", H: "Stalwart" },
- weightkg: 58,
- eggGroups: ["Undiscovered"],
- },
- axolacred: {
- num: 2036,
- name: "Axolacred",
- types: ["Dragon"],
- baseStats: { hp: 85, atk: 90, def: 85, spa: 95, spd: 95, spe: 65 },
- abilities: { 0: "Magic Guard", H: "Purifying Salt" },
- weightkg: 33,
- eggGroups: ["Undiscovered"],
- },
- roscenti: {
- num: 2037,
- name: "Roscenti",
- types: ["Bug", "Grass"],
- baseStats: { hp: 80, atk: 115, def: 100, spa: 75, spd: 80, spe: 100 },
- abilities: { 0: "Sheer Force", 1: "Chlorophyll", H: "Skill Link" },
- eggGroups: ["Undiscovered"],
- weightkg: 37,
- },
- blunderbusk: {
- num: 2038,
- name: "Blunderbusk",
- types: ["Water"],
- baseStats: { hp: 73, atk: 67, def: 124, spa: 128, spd: 89, spe: 24 },
- abilities: { 0: "Mega Launcher", H: "Shell Bunker" },
- weightkg: 86,
- eggGroups: ["Undiscovered"],
- },
- barracoth: {
- num: 2039,
- name: "Barracoth",
- types: ["Ice", "Water"],
- baseStats: { hp: 140, atk: 115, def: 110, spa: 55, spd: 65, spe: 35 },
- abilities: { 0: "Filter", 1: "Thick Fat", H: "Multiscale" },
- weightkg: 356,
- eggGroups: ["Undiscovered"],
- },
- jamborai: {
- num: 2040,
- name: "Jamborai",
- types: ["Poison", "Psychic"],
- baseStats: { hp: 75, atk: 55, def: 125, spa: 120, spd: 85, spe: 65 },
- abilities: { 0: "Clear Body", 1: "Gooey", H: "Water Absorb" },
- weightkg: 84,
- eggGroups: ["Undiscovered"],
- },
- dracoil: {
- num: 2041,
- name: "Dracoil",
- types: ["Dragon", "Flying"],
- baseStats: { hp: 105, atk: 106, def: 85, spa: 96, spd: 60, spe: 78 },
- abilities: { 0: "Mythical Presence", 1: "Gluttony", H: "Marvel Scale" },
- weightkg: 428,
- eggGroups: ["Undiscovered"],
- },
- celespirit: {
- num: 2042,
- name: "Celespirit",
- types: ["Ghost"],
- baseStats: { hp: 75, atk: 61, def: 73, spa: 117, spd: 135, spe: 69 },
- abilities: { 0: "Levitate", H: "Power Spot" },
- weightkg: 25.8,
- eggGroups: ["Undiscovered"],
- },
- noxtrice: {
- num: 2043,
- name: "Noxtrice",
- types: ["Poison", "Fire"],
- baseStats: { hp: 65, atk: 118, def: 75, spa: 63, spd: 80, spe: 114 },
- abilities: { 0: "Poison Touch", H: "Flash Fire" },
- weightkg: 73.7,
- eggGroups: ["Undiscovered"],
- },
- sturgard: {
- num: 2055,
- name: "Sturgard",
- types: ["Water", "Ground"],
- baseStats: { hp: 105, atk: 110, def: 105, spa: 65, spd: 70, spe: 70 },
- abilities: { 0: "Rock Head", 1: "Battle Armor", H: "Mold Breaker" },
- weightkg: 143,
- eggGroups: ["Undiscovered"],
- },
- avastar: {
- num: 2034,
- name: "Avastar",
- types: ["Psychic", "Steel"],
- baseStats: { hp: 75, atk: 85, def: 110, spa: 115, spd: 100, spe: 60 },
- abilities: { 0: "Stalwart", 1: "Heavy Metal", H: "Shell Bunker" },
- weightkg: 999.9,
- eggGroups: ["Undiscovered"],
- },
- faerenheit: {
- num: 2044,
- name: "Faerenheit",
- types: ["Fire", "Fairy"],
- baseStats: { hp: 71, atk: 83, def: 127, spa: 97, spd: 109, spe: 83 },
- abilities: { 0: "Beast Boost" },
- weightkg: 2.1,
- eggGroups: ["Undiscovered"],
- },
- cellsius: {
- num: 2045,
- name: "Cellsius",
- types: ["Water", "Fairy"],
- baseStats: { hp: 71, atk: 83, def: 83, spa: 109, spd: 127, spe: 97 },
- abilities: { 0: "Beast Boost" },
- weightkg: 2.4,
- eggGroups: ["Undiscovered"],
- },
- kelven: {
- num: 2046,
- name: "Kelven",
- types: ["Ice", "Fairy"],
- baseStats: { hp: 71, atk: 127, def: 109, spa: 83, spd: 83, spe: 97 },
- abilities: { 0: "Beast Boost" },
- weightkg: 2.8,
- eggGroups: ["Undiscovered"],
- },
- salaos: {
- num: 2047,
- name: "Salaos",
- types: ["Dark"],
- baseStats: { hp: 75, atk: 85, def: 90, spa: 110, spd: 130, spe: 90 },
- abilities: { 0: "Good as Gold" },
- weightkg: 74,
- eggGroups: ["Undiscovered"],
- },
- morndos: {
- num: 2048,
- name: "Morndos",
- types: ["Dark", "Flying"],
- baseStats: { hp: 110, atk: 90, def: 75, spa: 90, spd: 85, spe: 130 },
- abilities: { 0: "Synchronize" },
- weightkg: 56,
- eggGroups: ["Undiscovered"],
- },
- pythos: {
- num: 2049,
- name: "Pythos",
- types: ["Dark"],
- baseStats: { hp: 90, atk: 110, def: 130, spa: 85, spd: 90, spe: 75 },
- abilities: { 0: "Guts" },
- weightkg: 178,
- eggGroups: ["Undiscovered"],
- },
- corundell: {
- num: 2050,
- name: "Corundell",
- types: ["Rock", "Electric"],
- baseStats: { hp: 75, atk: 100, def: 130, spa: 105, spd: 80, spe: 110 },
- abilities: { 0: "Lightning Rod", H: "Protosynthesis" },
- weightkg: 137,
- eggGroups: ["Undiscovered"],
- },
- quadringo: {
- num: 2051,
- name: "Quadringo",
- types: ["Fairy", "Dragon"],
- baseStats: { hp: 80, atk: 120, def: 95, spa: 100, spd: 120, spe: 85 },
- abilities: { 0: "Hydration", 1: "Pastel Veil", H: "Inner Focus" },
- weightkg: 156,
- eggGroups: ["Undiscovered"],
- },
- saphor: {
- num: 2052,
- name: "Saphor",
- types: ["Ground", "Normal"],
- baseStats: { hp: 95, atk: 100, def: 105, spa: 100, spd: 105, spe: 95 },
- abilities: { 0: "Thick Fat", 1: "Crystal Heart" },
- weightkg: 638,
- eggGroups: ["Undiscovered"],
- },
- fenreil: {
- num: 2053,
- name: "Fenreil",
- types: ["Dark", "Normal"],
- baseStats: { hp: 80, atk: 105, def: 97, spa: 105, spd: 97, spe: 116 },
- abilities: { 0: "Natural Cure", 1: "Wild Heart" },
- weightkg: 232,
- eggGroups: ["Undiscovered"],
- },
- soleron: {
- num: 2031,
- name: "Soleron",
- types: ["Electric", "Flying"],
- baseStats: { hp: 70, atk: 75, def: 65, spa: 115, spd: 75, spe: 115 },
- abilities: { 0: "Battle Bond" },
- otherFormes: ["Soleron-Awakened"],
- formeOrder: ["Soleron", "Soleron-Awakened"],
- weightkg: 12,
- eggGroups: ["Undiscovered"],
- },
- soleronawakened: {
- num: 2031,
- name: "Soleron-Awakened",
- baseSpecies: "Soleron",
- forme: "Awakened",
- types: ["Electric", "Flying"],
- baseStats: { hp: 70, atk: 105, def: 85, spa: 135, spd: 95, spe: 125 },
- abilities: { 0: "Battle Bond" },
- requiredAbility: "Battle Bond",
- battleOnly: "Soleron",
- weightkg: 24,
- eggGroups: ["Undiscovered"],
- },
- efflor: {
- num: 2032,
- name: "Efflor",
- types: ["Rock", "Grass"],
- baseStats: { hp: 80, atk: 85, def: 110, spa: 105, spd: 110, spe: 25 },
- abilities: { 0: "Solid Rock", 1: "Unaware", H: "Seed Sower" },
- weightkg: 113,
- eggGroups: ["Undiscovered"],
- },
- pictagon: {
- num: 2055,
- name: "Pictagon",
- types: ["Dragon", "Ghost"],
- baseStats: { hp: 105, atk: 105, def: 60, spa: 80, spd: 85, spe: 95 },
- abilities: { 0: "Clear Body", 1: "Infiltrator", H: "No Guard" },
- weightkg: 113,
- eggGroups: ["Undiscovered"],
- },
- jaegorm: {
- num: 2033,
- name: "Jaegorm",
- types: ["Bug", "Psychic"],
- baseStats: { hp: 60, atk: 65, def: 40, spa: 130, spd: 40, spe: 130 },
- abilities: { 0: "Schooling" },
- otherFormes: ["Jaegorm-Collective"],
- formeOrder: ["Jaegorm", "Jaegorm-Collective"],
- weightkg: 10,
- eggGroups: ["Undiscovered"],
- },
- jaegormcollective: {
- num: 2033,
- name: "Jaegorm-Collective",
- baseSpecies: "Jaegorm",
- forme: "Collective",
- types: ["Bug", "Psychic"],
- baseStats: { hp: 60, atk: 145, def: 130, spa: 100, spd: 130, spe: 80 },
- abilities: { 0: "Schooling" },
- requiredAbility: "Schooling",
- battleOnly: "Jaegorm",
- weightkg: 122,
- eggGroups: ["Undiscovered"],
- },
- flocura: {
- num: 2054,
- name: "Flocura",
- types: ["Grass", "Psychic"],
- baseStats: { hp: 55, atk: 85, def: 55, spa: 107, spd: 180, spe: 118 },
- abilities: { 0: "Levitate", H: "Power Construct" },
- otherFormes: ["Flocura-Nexus"],
- formeOrder: ["Flocura", "Flocura-Nexus"],
- weightkg: 7.1,
- eggGroups: ["Undiscovered"],
- },
- flocuranexus: {
- num: 2054,
- name: "Flocura-Nexus",
- baseSpecies: "Flocura",
- forme: "Nexus",
- types: ["Grass", "Psychic"],
- baseStats: { hp: 105, atk: 125, def: 105, spa: 137, spd: 180, spe: 48 },
- abilities: { 0: "Levitate", H: "Power Construct" },
- requiredAbility: "Power Construct",
- battleOnly: "Flocura",
- weightkg: 999,
- eggGroups: ["Undiscovered"],
- },
-};
diff --git a/data/mods/scootopiav2/rulesets.ts b/data/mods/scootopiav2/rulesets.ts
deleted file mode 100644
index 35ce7bd003..0000000000
--- a/data/mods/scootopiav2/rulesets.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-export const Rulesets: import('../../../sim/dex-formats').ModdedFormatDataTable = {
- supertypemovesrule: {
- effectType: 'Rule',
- name: 'Super Type Moves Rule',
- desc: 'Prevents pokemon from using Crystal or Feral moves unless they have a matching type.',
- onBeforeMove(pokemon, target, move) {
- move = {
- ...this.dex.moves.get(move),
- hit: move.hit,
- };
- if (move.type === "Crystal" && !pokemon.hasType("Crystal")) return false;
- if (move.type === "Feral" && !pokemon.hasType("Feral")) return false;
- },
- onDisableMove(pokemon) {
- for (const moveSlot of pokemon.moveSlots) {
- const move = this.dex.moves.get(moveSlot.id);
- if ((move.type === "Crystal" && !pokemon.hasType("Crystal")) || (move.type === "Feral" && !pokemon.hasType("Feral"))) {
- pokemon.disableMove(moveSlot.id, false);
- }
- }
- },
- },
- spriteviewer: {
- effectType: 'ValidatorRule',
- name: 'Sprite Viewer',
- desc: "Displays a fakemon's sprite in chat when it is switched in for the first time",
- onBegin() {
- this.add('rule', 'Sprite Viewer: Displays sprites in chat');
- },
- onSwitchIn(pokemon) {
- if (!this.effectState[pokemon.species.id]) {
- this.add('-message', `${pokemon.species.name}'s Sprite:`);
- this.add(`raw|
`);
- this.effectState[pokemon.species.id] = true;
- }
- },
- },
-};
diff --git a/data/mods/scootopiav2/typechart.ts b/data/mods/scootopiav2/typechart.ts
deleted file mode 100644
index 3b253d0eff..0000000000
--- a/data/mods/scootopiav2/typechart.ts
+++ /dev/null
@@ -1,530 +0,0 @@
-export const TypeChart: import('../../../sim/dex-data').ModdedTypeDataTable = {
- bug: {
- damageTaken: {
- Bug: 0,
- Dark: 0,
- Dragon: 0,
- Electric: 0,
- Fairy: 0,
- Fighting: 2,
- Fire: 1,
- Flying: 1,
- Ghost: 0,
- Grass: 2,
- Ground: 2,
- Ice: 0,
- Normal: 0,
- Poison: 0,
- Psychic: 0,
- Rock: 1,
- Steel: 0,
- Water: 0,
- Crystal: 0,
- Feral: 0,
- },
- HPivs: { atk: 30, def: 30, spd: 30 },
- HPdvs: { atk: 13, def: 13 },
- },
- dark: {
- damageTaken: {
- prankster: 3,
- Bug: 1,
- Dark: 2,
- Dragon: 0,
- Electric: 0,
- Fairy: 1,
- Fighting: 1,
- Fire: 0,
- Flying: 0,
- Ghost: 2,
- Grass: 0,
- Ground: 0,
- Ice: 0,
- Normal: 0,
- Poison: 0,
- Psychic: 3,
- Rock: 0,
- Steel: 0,
- Water: 0,
- Crystal: 1,
- Feral: 0,
- },
- HPivs: {},
- },
- dragon: {
- damageTaken: {
- Bug: 0,
- Dark: 0,
- Dragon: 1,
- Electric: 2,
- Fairy: 1,
- Fighting: 0,
- Fire: 2,
- Flying: 0,
- Ghost: 0,
- Grass: 2,
- Ground: 0,
- Ice: 1,
- Normal: 0,
- Poison: 0,
- Psychic: 0,
- Rock: 0,
- Steel: 0,
- Water: 2,
- Crystal: 0,
- Feral: 2,
- },
- HPivs: { atk: 30 },
- HPdvs: { def: 14 },
- },
- electric: {
- damageTaken: {
- par: 3,
- Bug: 0,
- Dark: 0,
- Dragon: 0,
- Electric: 2,
- Fairy: 0,
- Fighting: 0,
- Fire: 0,
- Flying: 2,
- Ghost: 0,
- Grass: 0,
- Ground: 1,
- Ice: 0,
- Normal: 0,
- Poison: 0,
- Psychic: 0,
- Rock: 0,
- Steel: 2,
- Water: 0,
- Crystal: 2,
- Feral: 0,
- },
- HPivs: { spa: 30 },
- HPdvs: { atk: 14 },
- },
- fairy: {
- damageTaken: {
- Bug: 2,
- Dark: 2,
- Dragon: 3,
- Electric: 0,
- Fairy: 0,
- Fighting: 2,
- Fire: 0,
- Flying: 0,
- Ghost: 0,
- Grass: 0,
- Ground: 0,
- Ice: 0,
- Normal: 0,
- Poison: 1,
- Psychic: 0,
- Rock: 0,
- Steel: 1,
- Water: 0,
- Crystal: 0,
- Feral: 1,
- },
- },
- fighting: {
- damageTaken: {
- Bug: 2,
- Dark: 2,
- Dragon: 0,
- Electric: 0,
- Fairy: 1,
- Fighting: 0,
- Fire: 0,
- Flying: 1,
- Ghost: 0,
- Grass: 0,
- Ground: 0,
- Ice: 0,
- Normal: 0,
- Poison: 0,
- Psychic: 1,
- Rock: 2,
- Steel: 0,
- Water: 0,
- Crystal: 2,
- Feral: 0,
- },
- HPivs: { def: 30, spa: 30, spd: 30, spe: 30 },
- HPdvs: { atk: 12, def: 12 },
- },
- fire: {
- damageTaken: {
- brn: 3,
- Bug: 2,
- Dark: 0,
- Dragon: 0,
- Electric: 0,
- Fairy: 2,
- Fighting: 0,
- Fire: 2,
- Flying: 0,
- Ghost: 0,
- Grass: 2,
- Ground: 1,
- Ice: 2,
- Normal: 0,
- Poison: 0,
- Psychic: 0,
- Rock: 1,
- Steel: 2,
- Water: 1,
- Crystal: 1,
- Feral: 2,
- },
- HPivs: { atk: 30, spa: 30, spe: 30 },
- HPdvs: { atk: 14, def: 12 },
- },
- flying: {
- damageTaken: {
- Bug: 2,
- Dark: 0,
- Dragon: 0,
- Electric: 1,
- Fairy: 0,
- Fighting: 2,
- Fire: 0,
- Flying: 0,
- Ghost: 0,
- Grass: 2,
- Ground: 3,
- Ice: 1,
- Normal: 0,
- Poison: 0,
- Psychic: 0,
- Rock: 1,
- Steel: 0,
- Water: 0,
- Crystal: 0,
- Feral: 1,
- },
- HPivs: { hp: 30, atk: 30, def: 30, spa: 30, spd: 30 },
- HPdvs: { atk: 12, def: 13 },
- },
- ghost: {
- damageTaken: {
- trapped: 3,
- Bug: 2,
- Dark: 1,
- Dragon: 0,
- Electric: 0,
- Fairy: 0,
- Fighting: 3,
- Fire: 0,
- Flying: 0,
- Ghost: 1,
- Grass: 0,
- Ground: 0,
- Ice: 0,
- Normal: 3,
- Poison: 2,
- Psychic: 0,
- Rock: 0,
- Steel: 0,
- Water: 0,
- Crystal: 1,
- Feral: 2,
- },
- HPivs: { def: 30, spd: 30 },
- HPdvs: { atk: 13, def: 14 },
- },
- grass: {
- damageTaken: {
- powder: 3,
- Bug: 1,
- Dark: 0,
- Dragon: 0,
- Electric: 2,
- Fairy: 0,
- Fighting: 0,
- Fire: 1,
- Flying: 1,
- Ghost: 0,
- Grass: 2,
- Ground: 2,
- Ice: 1,
- Normal: 0,
- Poison: 1,
- Psychic: 0,
- Rock: 0,
- Steel: 0,
- Water: 2,
- Crystal: 0,
- Feral: 1,
- },
- HPivs: { atk: 30, spa: 30 },
- HPdvs: { atk: 14, def: 14 },
- },
- ground: {
- damageTaken: {
- sandstorm: 3,
- Bug: 0,
- Dark: 0,
- Dragon: 0,
- Electric: 3,
- Fairy: 0,
- Fighting: 0,
- Fire: 0,
- Flying: 0,
- Ghost: 0,
- Grass: 1,
- Ground: 0,
- Ice: 1,
- Normal: 0,
- Poison: 2,
- Psychic: 0,
- Rock: 2,
- Steel: 0,
- Water: 1,
- Crystal: 0,
- Feral: 0,
- },
- HPivs: { spa: 30, spd: 30 },
- HPdvs: { atk: 12 },
- },
- ice: {
- damageTaken: {
- hail: 3,
- frz: 3,
- Bug: 0,
- Dark: 0,
- Dragon: 0,
- Electric: 0,
- Fairy: 0,
- Fighting: 1,
- Fire: 1,
- Flying: 0,
- Ghost: 0,
- Grass: 0,
- Ground: 0,
- Ice: 2,
- Normal: 0,
- Poison: 0,
- Psychic: 0,
- Rock: 1,
- Steel: 1,
- Water: 0,
- Crystal: 0,
- Feral: 0,
- },
- HPivs: { atk: 30, def: 30 },
- HPdvs: { def: 13 },
- },
- normal: {
- damageTaken: {
- Bug: 0,
- Dark: 0,
- Dragon: 0,
- Electric: 0,
- Fairy: 0,
- Fighting: 1,
- Fire: 0,
- Flying: 0,
- Ghost: 3,
- Grass: 0,
- Ground: 0,
- Ice: 0,
- Normal: 0,
- Poison: 0,
- Psychic: 0,
- Rock: 0,
- Steel: 0,
- Water: 0,
- Crystal: 0,
- Feral: 1,
- },
- },
- poison: {
- damageTaken: {
- psn: 3,
- tox: 3,
- Bug: 2,
- Dark: 0,
- Dragon: 0,
- Electric: 0,
- Fairy: 2,
- Fighting: 2,
- Fire: 0,
- Flying: 0,
- Ghost: 0,
- Grass: 2,
- Ground: 1,
- Ice: 0,
- Normal: 0,
- Poison: 2,
- Psychic: 1,
- Rock: 0,
- Steel: 0,
- Water: 0,
- Crystal: 0,
- Feral: 2,
- },
- HPivs: { def: 30, spa: 30, spd: 30 },
- HPdvs: { atk: 12, def: 14 },
- },
- psychic: {
- damageTaken: {
- Bug: 1,
- Dark: 1,
- Dragon: 0,
- Electric: 0,
- Fairy: 0,
- Fighting: 2,
- Fire: 0,
- Flying: 0,
- Ghost: 1,
- Grass: 0,
- Ground: 0,
- Ice: 0,
- Normal: 0,
- Poison: 0,
- Psychic: 2,
- Rock: 0,
- Steel: 0,
- Water: 0,
- Crystal: 0,
- Feral: 0,
- },
- HPivs: { atk: 30, spe: 30 },
- HPdvs: { def: 12 },
- },
- rock: {
- damageTaken: {
- sandstorm: 3,
- Bug: 0,
- Dark: 0,
- Dragon: 0,
- Electric: 0,
- Fairy: 0,
- Fighting: 1,
- Fire: 2,
- Flying: 2,
- Ghost: 0,
- Grass: 1,
- Ground: 1,
- Ice: 0,
- Normal: 2,
- Poison: 2,
- Psychic: 0,
- Rock: 0,
- Steel: 1,
- Water: 1,
- Crystal: 0,
- Feral: 0,
- },
- HPivs: { def: 30, spd: 30, spe: 30 },
- HPdvs: { atk: 13, def: 12 },
- },
- steel: {
- damageTaken: {
- psn: 3,
- tox: 3,
- sandstorm: 3,
- Bug: 2,
- Dark: 0,
- Dragon: 2,
- Electric: 0,
- Fairy: 2,
- Fighting: 1,
- Fire: 1,
- Flying: 2,
- Ghost: 0,
- Grass: 2,
- Ground: 1,
- Ice: 2,
- Normal: 2,
- Poison: 3,
- Psychic: 2,
- Rock: 2,
- Steel: 2,
- Water: 0,
- Crystal: 2,
- Feral: 0,
- },
- HPivs: { spd: 30 },
- HPdvs: { atk: 13 },
- },
- water: {
- damageTaken: {
- Bug: 0,
- Dark: 0,
- Dragon: 0,
- Electric: 1,
- Fairy: 0,
- Fighting: 0,
- Fire: 2,
- Flying: 0,
- Ghost: 0,
- Grass: 1,
- Ground: 0,
- Ice: 2,
- Normal: 0,
- Poison: 0,
- Psychic: 0,
- Rock: 0,
- Steel: 2,
- Water: 2,
- Crystal: 0,
- Feral: 1,
- },
- HPivs: { atk: 30, def: 30, spa: 30 },
- HPdvs: { atk: 14, def: 13 },
- },
- crystal: {
- damageTaken: {
- brn: 3,
- sandstorm: 3,
- Bug: 0,
- Dark: 2,
- Dragon: 0,
- Electric: 1,
- Fairy: 0,
- Fighting: 1,
- Fire: 2,
- Flying: 0,
- Ghost: 0,
- Grass: 0,
- Ground: 2,
- Ice: 0,
- Normal: 2,
- Poison: 0,
- Psychic: 0,
- Rock: 2,
- Steel: 1,
- Water: 2,
- Crystal: 2,
- Feral: 2,
- },
- },
- feral: {
- damageTaken: {
- slp: 3,
- Bug: 0,
- Dark: 0,
- Dragon: 1,
- Electric: 0,
- Fairy: 2,
- Fighting: 0,
- Fire: 1,
- Flying: 0,
- Ghost: 2,
- Grass: 0,
- Ground: 0,
- Ice: 2,
- Normal: 0,
- Poison: 1,
- Psychic: 0,
- Rock: 0,
- Steel: 0,
- Water: 0,
- Crystal: 0,
- Feral: 0,
- },
- },
-};
diff --git a/data/mods/sixbysix/formats-data.ts b/data/mods/sixbysix/formats-data.ts
new file mode 100644
index 0000000000..40e510453d
--- /dev/null
+++ b/data/mods/sixbysix/formats-data.ts
@@ -0,0 +1,113 @@
+export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormatsDataTable = {
+ kingdraclassic: {
+ tier: "OU",
+ },
+ kingdrabrinepool: {
+ tier: "OU",
+ },
+ kingdradruid: {
+ tier: "OU",
+ },
+ kingdrabard: {
+ tier: "OU",
+ },
+ kingdragourmet: {
+ tier: "OU",
+ },
+ kingdraancient: {
+ tier: "OU",
+ },
+ nidoqueenclassic: {
+ tier: "OU",
+ },
+ nidoqueenerudite: {
+ tier: "OU",
+ },
+ nidoqueenvolcanic: {
+ tier: "OU",
+ },
+ nidoqueenrosegold: {
+ tier: "OU",
+ },
+ nidoqueenshaman: {
+ tier: "OU",
+ },
+ nidoqueenjasper: {
+ tier: "OU",
+ },
+ bisharpcenturion: {
+ tier: "OU",
+ },
+ bisharpsavage: {
+ tier: "OU",
+ },
+ bisharpronin: {
+ tier: "OU",
+ },
+ bisharpmantis: {
+ tier: "OU",
+ },
+ bisharprevenant: {
+ tier: "OU",
+ },
+ bisharpassassin: {
+ tier: "OU",
+ },
+ corviknightthunderbird: {
+ tier: "OU",
+ },
+ corviknightgenie: {
+ tier: "OU",
+ },
+ corviknightyeti: {
+ tier: "OU",
+ },
+ corviknightanalytical: {
+ tier: "OU",
+ },
+ corviknightmartian: {
+ tier: "OU",
+ },
+ corviknightfalcon: {
+ tier: "OU",
+ },
+ krookodileinfernal: {
+ tier: "OU",
+ },
+ krookodileabyssal: {
+ tier: "OU",
+ },
+ krookodilewetlander: {
+ tier: "OU",
+ },
+ krookodilecavedweller: {
+ tier: "OU",
+ },
+ krookodilecliffside: {
+ tier: "OU",
+ },
+ krookodilequantum: {
+ tier: "OU",
+ },
+ ogerponmuerta: {
+ tier: "OU",
+ },
+ ogerponeaster: {
+ tier: "OU",
+ },
+ ogerponankh: {
+ tier: "OU",
+ },
+ ogerponeid: {
+ tier: "OU",
+ },
+ ogerponvessel: {
+ tier: "OU",
+ },
+ ogerponkitsune: {
+ tier: "OU",
+ },
+ ogerpontealtera: {
+ tier: "Illegal",
+ },
+};
diff --git a/data/mods/sixbysix/items.ts b/data/mods/sixbysix/items.ts
new file mode 100644
index 0000000000..df1a3f90c0
--- /dev/null
+++ b/data/mods/sixbysix/items.ts
@@ -0,0 +1,32 @@
+export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
+ cornerstonemask: {
+ name: "Cornerstone Mask",
+ spritenum: 758,
+ fling: {
+ basePower: 60,
+ },
+ num: 2406,
+ gen: 9,
+ desc: "No competitive use.",
+ },
+ hearthflamemask: {
+ name: "Hearthflame Mask",
+ spritenum: 760,
+ fling: {
+ basePower: 60,
+ },
+ desc: "No competitive use.",
+ num: 2408,
+ gen: 9,
+ },
+ wellspringmask: {
+ name: "Wellspring Mask",
+ spritenum: 759,
+ fling: {
+ basePower: 60,
+ },
+ desc: "No competitive use.",
+ num: 2407,
+ gen: 9,
+ },
+};
diff --git a/data/mods/sixbysix/learnsets.ts b/data/mods/sixbysix/learnsets.ts
new file mode 100644
index 0000000000..593627bd62
--- /dev/null
+++ b/data/mods/sixbysix/learnsets.ts
@@ -0,0 +1,2580 @@
+export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTable = {
+ kingdraclassic: {
+ learnset: {
+ aquajet: ["9L1"],
+ bodyslam: ["9L1"],
+ doubleedge: ["9L1"],
+ dragonhammer: ["9L1"],
+ dragontail: ["9L1"],
+ facade: ["9L1"],
+ flipturn: ["9L1"],
+ knockoff: ["9L1"],
+ liquidation: ["9L1"],
+ outrage: ["9L1"],
+ waterfall: ["9L1"],
+ wavecrash: ["9L1"],
+ breakingswipe: ["9L1"],
+ dragonrush: ["9L1"],
+ flail: ["9L1"],
+ gigaimpact: ["9L1"],
+ scaleshot: ["9L1"],
+ takedown: ["9L1"],
+ blizzard: ["9L1"],
+ clearsmog: ["9L1"],
+ dracometeor: ["9L1"],
+ dragonpulse: ["9L1"],
+ hydropump: ["9L1"],
+ icebeam: ["9L1"],
+ scald: ["9L1"],
+ surf: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ aurorabeam: ["9L1"],
+ bubblebeam: ["9L1"],
+ chillingwater: ["9L1"],
+ dragonbreath: ["9L1"],
+ hyperbeam: ["9L1"],
+ icywind: ["9L1"],
+ muddywater: ["9L1"],
+ swift: ["9L1"],
+ twister: ["9L1"],
+ watergun: ["9L1"],
+ waterpulse: ["9L1"],
+ whirlpool: ["9L1"],
+ agility: ["9L1"],
+ disable: ["9L1"],
+ dragondance: ["9L1"],
+ protect: ["9L1"],
+ rest: ["9L1"],
+ sleeptalk: ["9L1"],
+ substitute: ["9L1"],
+ dragoncheer: ["9L1"],
+ endure: ["9L1"],
+ focusenergy: ["9L1"],
+ leer: ["9L1"],
+ raindance: ["9L1"],
+ scaryface: ["9L1"],
+ smokescreen: ["9L1"],
+ snowscape: ["9L1"],
+ splash: ["9L1"],
+ yawn: ["9L1"],
+ },
+ },
+ kingdrabrinepool: {
+ learnset: {
+ gunkshot: ["9L1"],
+ mortalspin: ["9L1"],
+ sludgebomb: ["9L1"],
+ sludgewave: ["9L1"],
+ toxic: ["9L1"],
+ watershuriken: ["9L1"],
+ acid: ["9L1"],
+ acidspray: ["9L1"],
+ aquaring: ["9L1"],
+ sludge: ["9L1"],
+ venoshock: ["9L1"],
+ aquajet: ["9L1"],
+ bodyslam: ["9L1"],
+ doubleedge: ["9L1"],
+ dragontail: ["9L1"],
+ facade: ["9L1"],
+ flipturn: ["9L1"],
+ knockoff: ["9L1"],
+ liquidation: ["9L1"],
+ waterfall: ["9L1"],
+ wavecrash: ["9L1"],
+ flail: ["9L1"],
+ gigaimpact: ["9L1"],
+ takedown: ["9L1"],
+ clearsmog: ["9L1"],
+ hydropump: ["9L1"],
+ scald: ["9L1"],
+ surf: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ bubblebeam: ["9L1"],
+ chillingwater: ["9L1"],
+ hyperbeam: ["9L1"],
+ icywind: ["9L1"],
+ muddywater: ["9L1"],
+ swift: ["9L1"],
+ watergun: ["9L1"],
+ waterpulse: ["9L1"],
+ whirlpool: ["9L1"],
+ agility: ["9L1"],
+ disable: ["9L1"],
+ protect: ["9L1"],
+ rest: ["9L1"],
+ sleeptalk: ["9L1"],
+ substitute: ["9L1"],
+ endure: ["9L1"],
+ focusenergy: ["9L1"],
+ leer: ["9L1"],
+ raindance: ["9L1"],
+ scaryface: ["9L1"],
+ smokescreen: ["9L1"],
+ snowscape: ["9L1"],
+ splash: ["9L1"],
+ yawn: ["9L1"],
+ },
+ },
+ nidoqueenclassic: {
+ learnset: {
+ aquatail: ["9L1"],
+ barbbarrage: ["9L1"],
+ bodyslam: ["9L1"],
+ brickbreak: ["9L1"],
+ counter: ["9L1"],
+ crunch: ["9L1"],
+ dragontail: ["9L1"],
+ drillrun: ["9L1"],
+ earthquake: ["9L1"],
+ facade: ["9L1"],
+ firepunch: ["9L1"],
+ focuspunch: ["9L1"],
+ highhorsepower: ["9L1"],
+ icepunch: ["9L1"],
+ outrage: ["9L1"],
+ poisonjab: ["9L1"],
+ rockblast: ["9L1"],
+ rockslide: ["9L1"],
+ seismictoss: ["9L1"],
+ shadowclaw: ["9L1"],
+ smackdown: ["9L1"],
+ stoneedge: ["9L1"],
+ suckerpunch: ["9L1"],
+ superfang: ["9L1"],
+ superpower: ["9L1"],
+ throatchop: ["9L1"],
+ thunderpunch: ["9L1"],
+ aerialace: ["9L1"],
+ beatup: ["9L1"],
+ bite: ["9L1"],
+ bulldoze: ["9L1"],
+ cut: ["9L1"],
+ dig: ["9L1"],
+ doublekick: ["9L1"],
+ dynamicpunch: ["9L1"],
+ fissure: ["9L1"],
+ fling: ["9L1"],
+ furycutter: ["9L1"],
+ furyswipes: ["9L1"],
+ gigaimpact: ["9L1"],
+ headbutt: ["9L1"],
+ horndrill: ["9L1"],
+ irontail: ["9L1"],
+ megakick: ["9L1"],
+ payday: ["9L1"],
+ poisonfang: ["9L1"],
+ poisonsting: ["9L1"],
+ poisontail: ["9L1"],
+ rocksmash: ["9L1"],
+ rocktomb: ["9L1"],
+ sandtomb: ["9L1"],
+ scratch: ["9L1"],
+ stompingtantrum: ["9L1"],
+ strength: ["9L1"],
+ tackle: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ blizzard: ["9L1"],
+ dragonpulse: ["9L1"],
+ earthpower: ["9L1"],
+ fireblast: ["9L1"],
+ flamethrower: ["9L1"],
+ focusblast: ["9L1"],
+ hex: ["9L1"],
+ icebeam: ["9L1"],
+ shadowball: ["9L1"],
+ sludgebomb: ["9L1"],
+ sludgewave: ["9L1"],
+ surf: ["9L1"],
+ terablast: ["9L1"],
+ thunder: ["9L1"],
+ thunderbolt: ["9L1"],
+ bubblebeam: ["9L1"],
+ echoedvoice: ["9L1"],
+ hyperbeam: ["9L1"],
+ icywind: ["9L1"],
+ incinerate: ["9L1"],
+ mudshot: ["9L1"],
+ mudslap: ["9L1"],
+ round: ["9L1"],
+ shockwave: ["9L1"],
+ snore: ["9L1"],
+ uproar: ["9L1"],
+ venoshock: ["9L1"],
+ watergun: ["9L1"],
+ waterpulse: ["9L1"],
+ whirlpool: ["9L1"],
+ curse: ["9L1"],
+ detect: ["9L1"],
+ disable: ["9L1"],
+ honeclaws: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ roar: ["9L1"],
+ slackoff: ["9L1"],
+ sleeptalk: ["9L1"],
+ spikes: ["9L1"],
+ substitute: ["9L1"],
+ taunt: ["9L1"],
+ toxic: ["9L1"],
+ toxicspikes: ["9L1"],
+ wish: ["9L1"],
+ attract: ["9L1"],
+ charm: ["9L1"],
+ confide: ["9L1"],
+ defensecurl: ["9L1"],
+ doubleteam: ["9L1"],
+ endure: ["9L1"],
+ flatter: ["9L1"],
+ focusenergy: ["9L1"],
+ growl: ["9L1"],
+ helpinghand: ["9L1"],
+ mimic: ["9L1"],
+ quash: ["9L1"],
+ raindance: ["9L1"],
+ sandstorm: ["9L1"],
+ sunnyday: ["9L1"],
+ supersonic: ["9L1"],
+ swagger: ["9L1"],
+ tailwhip: ["9L1"],
+ torment: ["9L1"],
+ },
+ },
+ nidoqueenerudite: {
+ learnset: {
+ calmmind: ["9L1"],
+ chillyreception: ["9L1"],
+ expandingforce: ["9L1"],
+ futuresight: ["9L1"],
+ psychic: ["9L1"],
+ psychicnoise: ["9L1"],
+ psyshock: ["9L1"],
+ trickroom: ["9L1"],
+ zenheadbutt: ["9L1"],
+ amnesia: ["9L1"],
+ confusion: ["9L1"],
+ healpulse: ["9L1"],
+ imprison: ["9L1"],
+ magicroom: ["9L1"],
+ psybeam: ["9L1"],
+ psychicterrain: ["9L1"],
+ skillswap: ["9L1"],
+ wonderroom: ["9L1"],
+ aquatail: ["9L1"],
+ bodyslam: ["9L1"],
+ counter: ["9L1"],
+ crunch: ["9L1"],
+ dragontail: ["9L1"],
+ drillrun: ["9L1"],
+ earthquake: ["9L1"],
+ facade: ["9L1"],
+ firepunch: ["9L1"],
+ highhorsepower: ["9L1"],
+ icepunch: ["9L1"],
+ rockblast: ["9L1"],
+ rockslide: ["9L1"],
+ seismictoss: ["9L1"],
+ shadowclaw: ["9L1"],
+ smackdown: ["9L1"],
+ stoneedge: ["9L1"],
+ superfang: ["9L1"],
+ throatchop: ["9L1"],
+ thunderpunch: ["9L1"],
+ aerialace: ["9L1"],
+ beatup: ["9L1"],
+ bite: ["9L1"],
+ bulldoze: ["9L1"],
+ cut: ["9L1"],
+ dig: ["9L1"],
+ doublekick: ["9L1"],
+ fissure: ["9L1"],
+ fling: ["9L1"],
+ furycutter: ["9L1"],
+ furyswipes: ["9L1"],
+ gigaimpact: ["9L1"],
+ headbutt: ["9L1"],
+ horndrill: ["9L1"],
+ irontail: ["9L1"],
+ megakick: ["9L1"],
+ payday: ["9L1"],
+ rocksmash: ["9L1"],
+ rocktomb: ["9L1"],
+ sandtomb: ["9L1"],
+ scratch: ["9L1"],
+ stompingtantrum: ["9L1"],
+ strength: ["9L1"],
+ tackle: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ blizzard: ["9L1"],
+ dragonpulse: ["9L1"],
+ earthpower: ["9L1"],
+ fireblast: ["9L1"],
+ flamethrower: ["9L1"],
+ focusblast: ["9L1"],
+ icebeam: ["9L1"],
+ shadowball: ["9L1"],
+ surf: ["9L1"],
+ terablast: ["9L1"],
+ thunder: ["9L1"],
+ thunderbolt: ["9L1"],
+ bubblebeam: ["9L1"],
+ echoedvoice: ["9L1"],
+ hyperbeam: ["9L1"],
+ icywind: ["9L1"],
+ incinerate: ["9L1"],
+ mudshot: ["9L1"],
+ mudslap: ["9L1"],
+ round: ["9L1"],
+ shockwave: ["9L1"],
+ snore: ["9L1"],
+ uproar: ["9L1"],
+ watergun: ["9L1"],
+ waterpulse: ["9L1"],
+ whirlpool: ["9L1"],
+ curse: ["9L1"],
+ detect: ["9L1"],
+ disable: ["9L1"],
+ honeclaws: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ roar: ["9L1"],
+ sleeptalk: ["9L1"],
+ substitute: ["9L1"],
+ taunt: ["9L1"],
+ wish: ["9L1"],
+ attract: ["9L1"],
+ charm: ["9L1"],
+ confide: ["9L1"],
+ defensecurl: ["9L1"],
+ doubleteam: ["9L1"],
+ endure: ["9L1"],
+ flatter: ["9L1"],
+ focusenergy: ["9L1"],
+ growl: ["9L1"],
+ helpinghand: ["9L1"],
+ mimic: ["9L1"],
+ raindance: ["9L1"],
+ sandstorm: ["9L1"],
+ sunnyday: ["9L1"],
+ supersonic: ["9L1"],
+ tailwhip: ["9L1"],
+ },
+ },
+ bisharpcenturion: {
+ learnset: {
+ bodypress: ["9L1"],
+ brickbreak: ["9L1"],
+ bulletpunch: ["9L1"],
+ drainpunch: ["9L1"],
+ facade: ["9L1"],
+ focuspunch: ["9L1"],
+ foulplay: ["9L1"],
+ hammerarm: ["9L1"],
+ ironhead: ["9L1"],
+ lowkick: ["9L1"],
+ nightslash: ["9L1"],
+ poisonjab: ["9L1"],
+ shadowclaw: ["9L1"],
+ superpower: ["9L1"],
+ xscissor: ["9L1"],
+ bulldoze: ["9L1"],
+ dig: ["9L1"],
+ dynamicpunch: ["9L1"],
+ falseswipe: ["9L1"],
+ feint: ["9L1"],
+ fling: ["9L1"],
+ furycutter: ["9L1"],
+ gigaimpact: ["9L1"],
+ guillotine: ["9L1"],
+ headbutt: ["9L1"],
+ lowsweep: ["9L1"],
+ metalburst: ["9L1"],
+ metalclaw: ["9L1"],
+ retaliate: ["9L1"],
+ reversal: ["9L1"],
+ scratch: ["9L1"],
+ slash: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ upperhand: ["9L1"],
+ airslash: ["9L1"],
+ flashcannon: ["9L1"],
+ focusblast: ["9L1"],
+ grassknot: ["9L1"],
+ steelbeam: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ hyperbeam: ["9L1"],
+ bulkup: ["9L1"],
+ curse: ["9L1"],
+ detect: ["9L1"],
+ irondefense: ["9L1"],
+ protect: ["9L1"],
+ rest: ["9L1"],
+ sleeptalk: ["9L1"],
+ stealthrock: ["9L1"],
+ substitute: ["9L1"],
+ switcheroo: ["9L1"],
+ swordsdance: ["9L1"],
+ taunt: ["9L1"],
+ thunderwave: ["9L1"],
+ coaching: ["9L1"],
+ endure: ["9L1"],
+ leer: ["9L1"],
+ meanlook: ["9L1"],
+ metalsound: ["9L1"],
+ sandstorm: ["9L1"],
+ sunnyday: ["9L1"],
+ scaryface: ["9L1"],
+ spite: ["9L1"],
+ torment: ["9L1"],
+ wideguard: ["9L1"],
+ },
+ },
+ bisharpsavage: {
+ learnset: {
+ knockoff: ["9L1"],
+ powerwhip: ["9L1"],
+ leafblade: ["9L1"],
+ bulletseed: ["9L1"],
+ grassyglide: ["9L1"],
+ seedbomb: ["9L1"],
+ leechseed: ["9L1"],
+ vinewhip: ["9L1"],
+ branchpoke: ["9L1"],
+ leafage: ["9L1"],
+ megadrain: ["9L1"],
+ absorb: ["9L1"],
+ grassyterrain: ["9L1"],
+ razorleaf: ["9L1"],
+ bodypress: ["9L1"],
+ brickbreak: ["9L1"],
+ bulletpunch: ["9L1"],
+ facade: ["9L1"],
+ focuspunch: ["9L1"],
+ foulplay: ["9L1"],
+ ironhead: ["9L1"],
+ nightslash: ["9L1"],
+ poisonjab: ["9L1"],
+ superpower: ["9L1"],
+ xscissor: ["9L1"],
+ bulldoze: ["9L1"],
+ dig: ["9L1"],
+ dynamicpunch: ["9L1"],
+ falseswipe: ["9L1"],
+ feint: ["9L1"],
+ fling: ["9L1"],
+ furycutter: ["9L1"],
+ gigaimpact: ["9L1"],
+ guillotine: ["9L1"],
+ headbutt: ["9L1"],
+ lowsweep: ["9L1"],
+ metalburst: ["9L1"],
+ metalclaw: ["9L1"],
+ retaliate: ["9L1"],
+ reversal: ["9L1"],
+ scratch: ["9L1"],
+ slash: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ flashcannon: ["9L1"],
+ grassknot: ["9L1"],
+ steelbeam: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ hyperbeam: ["9L1"],
+ bulkup: ["9L1"],
+ curse: ["9L1"],
+ irondefense: ["9L1"],
+ protect: ["9L1"],
+ rest: ["9L1"],
+ sleeptalk: ["9L1"],
+ stealthrock: ["9L1"],
+ substitute: ["9L1"],
+ thunderwave: ["9L1"],
+ coaching: ["9L1"],
+ endure: ["9L1"],
+ leer: ["9L1"],
+ meanlook: ["9L1"],
+ metalsound: ["9L1"],
+ sandstorm: ["9L1"],
+ sunnyday: ["9L1"],
+ scaryface: ["9L1"],
+ spite: ["9L1"],
+ torment: ["9L1"],
+ wideguard: ["9L1"],
+ },
+ },
+ corviknightthunderbird: {
+ learnset: {
+ acrobatics: ["9L1"],
+ bodypress: ["9L1"],
+ bodyslam: ["9L1"],
+ bravebird: ["9L1"],
+ doubleedge: ["9L1"],
+ drillpeck: ["9L1"],
+ facade: ["9L1"],
+ supercellslam: ["9L1"],
+ uturn: ["9L1"],
+ aerialace: ["9L1"],
+ dualwingbeat: ["9L1"],
+ fly: ["9L1"],
+ furyattack: ["9L1"],
+ gigaimpact: ["9L1"],
+ peck: ["9L1"],
+ pluck: ["9L1"],
+ powertrip: ["9L1"],
+ skyattack: ["9L1"],
+ spark: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ wildcharge: ["9L1"],
+ airslash: ["9L1"],
+ discharge: ["9L1"],
+ heatwave: ["9L1"],
+ hurricane: ["9L1"],
+ terablast: ["9L1"],
+ thunder: ["9L1"],
+ thunderbolt: ["9L1"],
+ voltswitch: ["9L1"],
+ aircutter: ["9L1"],
+ chargebeam: ["9L1"],
+ electroball: ["9L1"],
+ hyperbeam: ["9L1"],
+ swift: ["9L1"],
+ thundershock: ["9L1"],
+ zapcannon: ["9L1"],
+ agility: ["9L1"],
+ curse: ["9L1"],
+ defog: ["9L1"],
+ honeclaws: ["9L1"],
+ irondefense: ["9L1"],
+ lightscreen: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ roost: ["9L1"],
+ sleeptalk: ["9L1"],
+ substitute: ["9L1"],
+ tailwind: ["9L1"],
+ electricterrain: ["9L1"],
+ endure: ["9L1"],
+ faketears: ["9L1"],
+ leer: ["9L1"],
+ raindance: ["9L1"],
+ sandattack: ["9L1"],
+ scaryface: ["9L1"],
+ screech: ["9L1"],
+ spite: ["9L1"],
+ swagger: ["9L1"],
+ },
+ },
+ corviknightgenie: {
+ learnset: {
+ calmmind: ["9L1"],
+ earthpower: ["9L1"],
+ earthquake: ["9L1"],
+ powergem: ["9L1"],
+ sandsearstorm: ["9L1"],
+ scorchingsands: ["9L1"],
+ stealthrock: ["9L1"],
+ dig: ["9L1"],
+ sandstorm: ["9L1"],
+ acrobatics: ["9L1"],
+ bodyslam: ["9L1"],
+ doubleedge: ["9L1"],
+ facade: ["9L1"],
+ uturn: ["9L1"],
+ aerialace: ["9L1"],
+ dualwingbeat: ["9L1"],
+ fly: ["9L1"],
+ furyattack: ["9L1"],
+ gigaimpact: ["9L1"],
+ peck: ["9L1"],
+ pluck: ["9L1"],
+ powertrip: ["9L1"],
+ skyattack: ["9L1"],
+ spark: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ heatwave: ["9L1"],
+ terablast: ["9L1"],
+ thunder: ["9L1"],
+ thunderbolt: ["9L1"],
+ voltswitch: ["9L1"],
+ aircutter: ["9L1"],
+ chargebeam: ["9L1"],
+ electroball: ["9L1"],
+ hyperbeam: ["9L1"],
+ swift: ["9L1"],
+ thundershock: ["9L1"],
+ agility: ["9L1"],
+ curse: ["9L1"],
+ defog: ["9L1"],
+ honeclaws: ["9L1"],
+ irondefense: ["9L1"],
+ lightscreen: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ sleeptalk: ["9L1"],
+ substitute: ["9L1"],
+ tailwind: ["9L1"],
+ electricterrain: ["9L1"],
+ endure: ["9L1"],
+ faketears: ["9L1"],
+ leer: ["9L1"],
+ raindance: ["9L1"],
+ sandattack: ["9L1"],
+ scaryface: ["9L1"],
+ screech: ["9L1"],
+ spite: ["9L1"],
+ swagger: ["9L1"],
+ },
+ },
+ krookodileinfernal: {
+ learnset: {
+ bodyslam: ["9L1"],
+ brickbreak: ["9L1"],
+ counter: ["9L1"],
+ crunch: ["9L1"],
+ doubleedge: ["9L1"],
+ dragonclaw: ["9L1"],
+ dragontail: ["9L1"],
+ endeavor: ["9L1"],
+ facade: ["9L1"],
+ firefang: ["9L1"],
+ firelash: ["9L1"],
+ flamecharge: ["9L1"],
+ flareblitz: ["9L1"],
+ focuspunch: ["9L1"],
+ foulplay: ["9L1"],
+ gunkshot: ["9L1"],
+ knockoff: ["9L1"],
+ lashout: ["9L1"],
+ outrage: ["9L1"],
+ shadowclaw: ["9L1"],
+ throatchop: ["9L1"],
+ aerialace: ["9L1"],
+ bite: ["9L1"],
+ breakingswipe: ["9L1"],
+ fling: ["9L1"],
+ gigaimpact: ["9L1"],
+ powertrip: ["9L1"],
+ scaleshot: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ thrash: ["9L1"],
+ darkpulse: ["9L1"],
+ dragonpulse: ["9L1"],
+ eruption: ["9L1"],
+ fierywrath: ["9L1"],
+ fireblast: ["9L1"],
+ flamethrower: ["9L1"],
+ heatwave: ["9L1"],
+ magmastorm: ["9L1"],
+ overheat: ["9L1"],
+ sludgebomb: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ burningjealousy: ["9L1"],
+ ember: ["9L1"],
+ firespin: ["9L1"],
+ hyperbeam: ["9L1"],
+ incinerate: ["9L1"],
+ inferno: ["9L1"],
+ snarl: ["9L1"],
+ curse: ["9L1"],
+ encore: ["9L1"],
+ partingshot: ["9L1"],
+ protect: ["9L1"],
+ rest: ["9L1"],
+ sleeptalk: ["9L1"],
+ substitute: ["9L1"],
+ switcheroo: ["9L1"],
+ taunt: ["9L1"],
+ willowisp: ["9L1"],
+ endure: ["9L1"],
+ helpinghand: ["9L1"],
+ leer: ["9L1"],
+ memento: ["9L1"],
+ sunnyday: ["9L1"],
+ scaryface: ["9L1"],
+ spite: ["9L1"],
+ swagger: ["9L1"],
+ torment: ["9L1"],
+ },
+ },
+ krookodileabyssal: {
+ learnset: {
+ dragondance: ["9L1"],
+ earthquake: ["9L1"],
+ hydropump: ["9L1"],
+ liquidation: ["9L1"],
+ stoneedge: ["9L1"],
+ bodyslam: ["9L1"],
+ brickbreak: ["9L1"],
+ counter: ["9L1"],
+ crunch: ["9L1"],
+ doubleedge: ["9L1"],
+ dragonclaw: ["9L1"],
+ dragontail: ["9L1"],
+ endeavor: ["9L1"],
+ facade: ["9L1"],
+ flamecharge: ["9L1"],
+ flareblitz: ["9L1"],
+ focuspunch: ["9L1"],
+ foulplay: ["9L1"],
+ gunkshot: ["9L1"],
+ knockoff: ["9L1"],
+ lashout: ["9L1"],
+ outrage: ["9L1"],
+ shadowclaw: ["9L1"],
+ throatchop: ["9L1"],
+ aerialace: ["9L1"],
+ bite: ["9L1"],
+ breakingswipe: ["9L1"],
+ fling: ["9L1"],
+ gigaimpact: ["9L1"],
+ powertrip: ["9L1"],
+ scaleshot: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ thrash: ["9L1"],
+ dragonpulse: ["9L1"],
+ sludgebomb: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ burningjealousy: ["9L1"],
+ ember: ["9L1"],
+ firespin: ["9L1"],
+ hyperbeam: ["9L1"],
+ incinerate: ["9L1"],
+ inferno: ["9L1"],
+ snarl: ["9L1"],
+ curse: ["9L1"],
+ encore: ["9L1"],
+ partingshot: ["9L1"],
+ protect: ["9L1"],
+ rest: ["9L1"],
+ sleeptalk: ["9L1"],
+ substitute: ["9L1"],
+ switcheroo: ["9L1"],
+ taunt: ["9L1"],
+ willowisp: ["9L1"],
+ endure: ["9L1"],
+ helpinghand: ["9L1"],
+ leer: ["9L1"],
+ memento: ["9L1"],
+ sunnyday: ["9L1"],
+ scaryface: ["9L1"],
+ spite: ["9L1"],
+ swagger: ["9L1"],
+ torment: ["9L1"],
+ },
+ },
+ ogerponmuerta: {
+ learnset: {
+ facade: ["9L1"],
+ knockoff: ["9L1"],
+ lashout: ["9L1"],
+ poltergeist: ["9L1"],
+ quickattack: ["9L1"],
+ shadowclaw: ["9L1"],
+ shadowsneak: ["9L1"],
+ throatchop: ["9L1"],
+ uturn: ["9L1"],
+ astonish: ["9L1"],
+ falseswipe: ["9L1"],
+ fling: ["9L1"],
+ gigaimpact: ["9L1"],
+ phantomforce: ["9L1"],
+ retaliate: ["9L1"],
+ rocktomb: ["9L1"],
+ slam: ["9L1"],
+ takedown: ["9L1"],
+ dazzlinggleam: ["9L1"],
+ drainingkiss: ["9L1"],
+ fleurcannon: ["9L1"],
+ hex: ["9L1"],
+ nightshade: ["9L1"],
+ shadowball: ["9L1"],
+ taunt: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ disarmingvoice: ["9L1"],
+ icywind: ["9L1"],
+ hyperbeam: ["9L1"],
+ batonpass: ["9L1"],
+ curse: ["9L1"],
+ destinybond: ["9L1"],
+ disable: ["9L1"],
+ perishsong: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ sleeptalk: ["9L1"],
+ substitute: ["9L1"],
+ thunderwave: ["9L1"],
+ trick: ["9L1"],
+ trickroom: ["9L1"],
+ willowisp: ["9L1"],
+ babydolleyes: ["9L1"],
+ charm: ["9L1"],
+ confuseray: ["9L1"],
+ endure: ["9L1"],
+ focusenergy: ["9L1"],
+ followme: ["9L1"],
+ gravity: ["9L1"],
+ growth: ["9L1"],
+ helpinghand: ["9L1"],
+ imprison: ["9L1"],
+ magicroom: ["9L1"],
+ metronome: ["9L1"],
+ mistyterrain: ["9L1"],
+ scaryface: ["9L1"],
+ spite: ["9L1"],
+ },
+ },
+ ogerponeaster: {
+ learnset: {
+ bodyslam: ["9L1"],
+ calmmind: ["9L1"],
+ hypervoice: ["9L1"],
+ moonblast: ["9L1"],
+ mysticalfire: ["9L1"],
+ playrough: ["9L1"],
+ softboiled: ["9L1"],
+ springtidestorm: ["9L1"],
+ stealthrock: ["9L1"],
+ aromaticmist: ["9L1"],
+ celebrate: ["9L1"],
+ confide: ["9L1"],
+ covet: ["9L1"],
+ decorate: ["9L1"],
+ feint: ["9L1"],
+ playnice: ["9L1"],
+ safeguard: ["9L1"],
+ snore: ["9L1"],
+ stuffcheeks: ["9L1"],
+ sweetkiss: ["9L1"],
+ uproar: ["9L1"],
+ facade: ["9L1"],
+ knockoff: ["9L1"],
+ quickattack: ["9L1"],
+ throatchop: ["9L1"],
+ uturn: ["9L1"],
+ falseswipe: ["9L1"],
+ fling: ["9L1"],
+ gigaimpact: ["9L1"],
+ phantomforce: ["9L1"],
+ retaliate: ["9L1"],
+ rocktomb: ["9L1"],
+ slam: ["9L1"],
+ takedown: ["9L1"],
+ dazzlinggleam: ["9L1"],
+ drainingkiss: ["9L1"],
+ taunt: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ disarmingvoice: ["9L1"],
+ icywind: ["9L1"],
+ hyperbeam: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ sleeptalk: ["9L1"],
+ substitute: ["9L1"],
+ thunderwave: ["9L1"],
+ trick: ["9L1"],
+ babydolleyes: ["9L1"],
+ charm: ["9L1"],
+ confuseray: ["9L1"],
+ endure: ["9L1"],
+ focusenergy: ["9L1"],
+ followme: ["9L1"],
+ gravity: ["9L1"],
+ growth: ["9L1"],
+ helpinghand: ["9L1"],
+ imprison: ["9L1"],
+ metronome: ["9L1"],
+ mistyterrain: ["9L1"],
+ scaryface: ["9L1"],
+ spite: ["9L1"],
+ },
+ },
+ ogerponankh: {
+ learnset: {
+ swordsdance: ["9L1"],
+ earthquake: ["9L1"],
+ earthpower: ["9L1"],
+ darkpulse: ["9L1"],
+ stoneedge: ["9L1"],
+ powergem: ["9L1"],
+ facade: ["9L1"],
+ knockoff: ["9L1"],
+ poltergeist: ["9L1"],
+ shadowclaw: ["9L1"],
+ throatchop: ["9L1"],
+ uturn: ["9L1"],
+ astonish: ["9L1"],
+ falseswipe: ["9L1"],
+ fling: ["9L1"],
+ gigaimpact: ["9L1"],
+ phantomforce: ["9L1"],
+ retaliate: ["9L1"],
+ rocktomb: ["9L1"],
+ slam: ["9L1"],
+ takedown: ["9L1"],
+ dazzlinggleam: ["9L1"],
+ hex: ["9L1"],
+ shadowball: ["9L1"],
+ taunt: ["9L1"],
+ terablast: ["9L1"],
+ disarmingvoice: ["9L1"],
+ icywind: ["9L1"],
+ hyperbeam: ["9L1"],
+ batonpass: ["9L1"],
+ destinybond: ["9L1"],
+ perishsong: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ sleeptalk: ["9L1"],
+ substitute: ["9L1"],
+ trick: ["9L1"],
+ babydolleyes: ["9L1"],
+ charm: ["9L1"],
+ confuseray: ["9L1"],
+ endure: ["9L1"],
+ focusenergy: ["9L1"],
+ followme: ["9L1"],
+ gravity: ["9L1"],
+ growth: ["9L1"],
+ helpinghand: ["9L1"],
+ imprison: ["9L1"],
+ magicroom: ["9L1"],
+ metronome: ["9L1"],
+ mistyterrain: ["9L1"],
+ scaryface: ["9L1"],
+ spite: ["9L1"],
+ },
+ },
+ kingdradruid: {
+ learnset: {
+ bodyslam: ["9L1"],
+ doubleedge: ["9L1"],
+ dragontail: ["9L1"],
+ facade: ["9L1"],
+ ironhead: ["9L1"],
+ outrage: ["9L1"],
+ scaleshot: ["9L1"],
+ smartstrike: ["9L1"],
+ breakingswipe: ["9L1"],
+ dragonrush: ["9L1"],
+ flail: ["9L1"],
+ gigaimpact: ["9L1"],
+ hardpress: ["9L1"],
+ metalburst: ["9L1"],
+ steelwing: ["9L1"],
+ takedown: ["9L1"],
+ doomdesire: ["9L1"],
+ dracometeor: ["9L1"],
+ dragonpulse: ["9L1"],
+ flamethrower: ["9L1"],
+ flashcannon: ["9L1"],
+ hydropump: ["9L1"],
+ icebeam: ["9L1"],
+ steelbeam: ["9L1"],
+ tachyoncutter: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ aurorabeam: ["9L1"],
+ bubblebeam: ["9L1"],
+ chillingwater: ["9L1"],
+ dragonbreath: ["9L1"],
+ hyperbeam: ["9L1"],
+ icywind: ["9L1"],
+ swift: ["9L1"],
+ twister: ["9L1"],
+ watergun: ["9L1"],
+ waterpulse: ["9L1"],
+ whirlpool: ["9L1"],
+ calmmind: ["9L1"],
+ disable: ["9L1"],
+ partingshot: ["9L1"],
+ protect: ["9L1"],
+ rest: ["9L1"],
+ substitute: ["9L1"],
+ dragoncheer: ["9L1"],
+ endure: ["9L1"],
+ focusenergy: ["9L1"],
+ leer: ["9L1"],
+ metalsound: ["9L1"],
+ raindance: ["9L1"],
+ scaryface: ["9L1"],
+ sleeptalk: ["9L1"],
+ smokescreen: ["9L1"],
+ snowscape: ["9L1"],
+ splash: ["9L1"],
+ yawn: ["9L1"],
+ },
+ },
+ nidoqueenvolcanic: {
+ learnset: {
+ bodyslam: ["9L1"],
+ brickbreak: ["9L1"],
+ crunch: ["9L1"],
+ dragontail: ["9L1"],
+ drillrun: ["9L1"],
+ dynamicpunch: ["9L1"],
+ earthquake: ["9L1"],
+ facade: ["9L1"],
+ firepunch: ["9L1"],
+ flareblitz: ["9L1"],
+ focuspunch: ["9L1"],
+ headbutt: ["9L1"],
+ heatcrash: ["9L1"],
+ highhorsepower: ["9L1"],
+ outrage: ["9L1"],
+ rockblast: ["9L1"],
+ rockslide: ["9L1"],
+ rocktomb: ["9L1"],
+ seismictoss: ["9L1"],
+ stoneedge: ["9L1"],
+ suckerpunch: ["9L1"],
+ superfang: ["9L1"],
+ superpower: ["9L1"],
+ temperflare: ["9L1"],
+ throatchop: ["9L1"],
+ thunderpunch: ["9L1"],
+ aerialace: ["9L1"],
+ beatup: ["9L1"],
+ bite: ["9L1"],
+ bulldoze: ["9L1"],
+ counter: ["9L1"],
+ dig: ["9L1"],
+ doublekick: ["9L1"],
+ fissure: ["9L1"],
+ fling: ["9L1"],
+ furycutter: ["9L1"],
+ furyswipes: ["9L1"],
+ gigaimpact: ["9L1"],
+ horndrill: ["9L1"],
+ irontail: ["9L1"],
+ megakick: ["9L1"],
+ payday: ["9L1"],
+ poisontail: ["9L1"],
+ rocksmash: ["9L1"],
+ sandtomb: ["9L1"],
+ scratch: ["9L1"],
+ stompingtantrum: ["9L1"],
+ strength: ["9L1"],
+ tackle: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ dragonpulse: ["9L1"],
+ earthpower: ["9L1"],
+ fireblast: ["9L1"],
+ flamethrower: ["9L1"],
+ focusblast: ["9L1"],
+ icebeam: ["9L1"],
+ lavaplume: ["9L1"],
+ meteorbeam: ["9L1"],
+ overheat: ["9L1"],
+ powergem: ["9L1"],
+ shadowball: ["9L1"],
+ terablast: ["9L1"],
+ thunder: ["9L1"],
+ thunderbolt: ["9L1"],
+ echoedvoice: ["9L1"],
+ ember: ["9L1"],
+ firespin: ["9L1"],
+ hyperbeam: ["9L1"],
+ incinerate: ["9L1"],
+ mudshot: ["9L1"],
+ mudslap: ["9L1"],
+ round: ["9L1"],
+ shockwave: ["9L1"],
+ snore: ["9L1"],
+ uproar: ["9L1"],
+ curse: ["9L1"],
+ disable: ["9L1"],
+ honeclaws: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ roar: ["9L1"],
+ stealthrock: ["9L1"],
+ spikes: ["9L1"],
+ substitute: ["9L1"],
+ taunt: ["9L1"],
+ willowisp: ["9L1"],
+ wish: ["9L1"],
+ attract: ["9L1"],
+ charm: ["9L1"],
+ confide: ["9L1"],
+ defensecurl: ["9L1"],
+ doubleteam: ["9L1"],
+ endure: ["9L1"],
+ flatter: ["9L1"],
+ focusenergy: ["9L1"],
+ followme: ["9L1"],
+ growl: ["9L1"],
+ helpinghand: ["9L1"],
+ mimic: ["9L1"],
+ quash: ["9L1"],
+ raindance: ["9L1"],
+ sandstorm: ["9L1"],
+ sleeptalk: ["9L1"],
+ sunnyday: ["9L1"],
+ supersonic: ["9L1"],
+ swagger: ["9L1"],
+ tailwhip: ["9L1"],
+ torment: ["9L1"],
+ },
+ },
+ bisharpronin: {
+ learnset: {
+ barbbarrage: ["9L1"],
+ bodypress: ["9L1"],
+ brickbreak: ["9L1"],
+ drainpunch: ["9L1"],
+ dynamicpunch: ["9L1"],
+ facade: ["9L1"],
+ focuspunch: ["9L1"],
+ foulplay: ["9L1"],
+ headbutt: ["9L1"],
+ lowkick: ["9L1"],
+ mortalspin: ["9L1"],
+ nightslash: ["9L1"],
+ poisonjab: ["9L1"],
+ sacredsword: ["9L1"],
+ shadowclaw: ["9L1"],
+ uturn: ["9L1"],
+ xscissor: ["9L1"],
+ bulldoze: ["9L1"],
+ crosspoison: ["9L1"],
+ dig: ["9L1"],
+ falseswipe: ["9L1"],
+ feint: ["9L1"],
+ fling: ["9L1"],
+ furycutter: ["9L1"],
+ gigaimpact: ["9L1"],
+ guillotine: ["9L1"],
+ lowsweep: ["9L1"],
+ poisonsting: ["9L1"],
+ retaliate: ["9L1"],
+ reversal: ["9L1"],
+ scratch: ["9L1"],
+ slash: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ upperhand: ["9L1"],
+ airslash: ["9L1"],
+ focusblast: ["9L1"],
+ sludgebomb: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ acid: ["9L1"],
+ acidspray: ["9L1"],
+ hyperbeam: ["9L1"],
+ venoshock: ["9L1"],
+ detect: ["9L1"],
+ encore: ["9L1"],
+ protect: ["9L1"],
+ rest: ["9L1"],
+ stealthrock: ["9L1"],
+ substitute: ["9L1"],
+ switcheroo: ["9L1"],
+ taunt: ["9L1"],
+ toxic: ["9L1"],
+ toxicspikes: ["9L1"],
+ coaching: ["9L1"],
+ endure: ["9L1"],
+ leer: ["9L1"],
+ meanlook: ["9L1"],
+ poisongas: ["9L1"],
+ scaryface: ["9L1"],
+ sleeptalk: ["9L1"],
+ spite: ["9L1"],
+ sunnyday: ["9L1"],
+ torment: ["9L1"],
+ wideguard: ["9L1"],
+ },
+ },
+ corviknightyeti: {
+ learnset: {
+ acrobatics: ["9L1"],
+ bravebird: ["9L1"],
+ doubleedge: ["9L1"],
+ drillpeck: ["9L1"],
+ dualwingbeat: ["9L1"],
+ facade: ["9L1"],
+ iceshard: ["9L1"],
+ icespinner: ["9L1"],
+ iciclespear: ["9L1"],
+ aerialace: ["9L1"],
+ fly: ["9L1"],
+ furyattack: ["9L1"],
+ gigaimpact: ["9L1"],
+ peck: ["9L1"],
+ pluck: ["9L1"],
+ skyattack: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ airslash: ["9L1"],
+ bleakwindstorm: ["9L1"],
+ blizzard: ["9L1"],
+ hurricane: ["9L1"],
+ icebeam: ["9L1"],
+ terablast: ["9L1"],
+ voltswitch: ["9L1"],
+ weatherball: ["9L1"],
+ aircutter: ["9L1"],
+ chillingwater: ["9L1"],
+ hyperbeam: ["9L1"],
+ icywind: ["9L1"],
+ powdersnow: ["9L1"],
+ swift: ["9L1"],
+ waterpulse: ["9L1"],
+ curse: ["9L1"],
+ defog: ["9L1"],
+ encore: ["9L1"],
+ haze: ["9L1"],
+ lightscreen: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ roost: ["9L1"],
+ substitute: ["9L1"],
+ tailwind: ["9L1"],
+ endure: ["9L1"],
+ faketears: ["9L1"],
+ leer: ["9L1"],
+ mist: ["9L1"],
+ sandattack: ["9L1"],
+ scaryface: ["9L1"],
+ screech: ["9L1"],
+ sleeptalk: ["9L1"],
+ snowscape: ["9L1"],
+ spite: ["9L1"],
+ swagger: ["9L1"],
+ },
+ },
+ krookodilewetlander: {
+ learnset: {
+ aquajet: ["9L1"],
+ bodyslam: ["9L1"],
+ brickbreak: ["9L1"],
+ bulletseed: ["9L1"],
+ crunch: ["9L1"],
+ doubleedge: ["9L1"],
+ dragonclaw: ["9L1"],
+ dragontail: ["9L1"],
+ endeavor: ["9L1"],
+ facade: ["9L1"],
+ focuspunch: ["9L1"],
+ foulplay: ["9L1"],
+ gunkshot: ["9L1"],
+ knockoff: ["9L1"],
+ lashout: ["9L1"],
+ leafblade: ["9L1"],
+ liquidation: ["9L1"],
+ rapidspin: ["9L1"],
+ scaleshot: ["9L1"],
+ waterfall: ["9L1"],
+ wavecrash: ["9L1"],
+ woodhammer: ["9L1"],
+ aerialace: ["9L1"],
+ bite: ["9L1"],
+ breakingswipe: ["9L1"],
+ counter: ["9L1"],
+ fling: ["9L1"],
+ gigaimpact: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ thrash: ["9L1"],
+ dragonpulse: ["9L1"],
+ gigadrain: ["9L1"],
+ inferno: ["9L1"],
+ sludgebomb: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ hyperbeam: ["9L1"],
+ megadrain: ["9L1"],
+ snarl: ["9L1"],
+ whirlpool: ["9L1"],
+ curse: ["9L1"],
+ encore: ["9L1"],
+ leechseed: ["9L1"],
+ protect: ["9L1"],
+ rest: ["9L1"],
+ strengthsap: ["9L1"],
+ substitute: ["9L1"],
+ switcheroo: ["9L1"],
+ synthesis: ["9L1"],
+ taunt: ["9L1"],
+ endure: ["9L1"],
+ helpinghand: ["9L1"],
+ leer: ["9L1"],
+ scaryface: ["9L1"],
+ sleeptalk: ["9L1"],
+ spite: ["9L1"],
+ swagger: ["9L1"],
+ torment: ["9L1"],
+ },
+ },
+ krookodilecavedweller: {
+ learnset: {
+ bodyslam: ["9L1"],
+ doubleedge: ["9L1"],
+ dragonclaw: ["9L1"],
+ earthquake: ["9L1"],
+ endeavor: ["9L1"],
+ explosion: ["9L1"],
+ facade: ["9L1"],
+ firefang: ["9L1"],
+ firelash: ["9L1"],
+ flamecharge: ["9L1"],
+ flareblitz: ["9L1"],
+ knockoff: ["9L1"],
+ rapidspin: ["9L1"],
+ rockblast: ["9L1"],
+ rockslide: ["9L1"],
+ scaleshot: ["9L1"],
+ stoneedge: ["9L1"],
+ aerialace: ["9L1"],
+ breakingswipe: ["9L1"],
+ gigaimpact: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ thrash: ["9L1"],
+ dragonpulse: ["9L1"],
+ fireblast: ["9L1"],
+ flamethrower: ["9L1"],
+ heatwave: ["9L1"],
+ inferno: ["9L1"],
+ overheat: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ burningjealousy: ["9L1"],
+ ember: ["9L1"],
+ firespin: ["9L1"],
+ hyperbeam: ["9L1"],
+ incinerate: ["9L1"],
+ curse: ["9L1"],
+ encore: ["9L1"],
+ lightscreen: ["9L1"],
+ memento: ["9L1"],
+ partingshot: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ stealthrock: ["9L1"],
+ substitute: ["9L1"],
+ switcheroo: ["9L1"],
+ taunt: ["9L1"],
+ willowisp: ["9L1"],
+ endure: ["9L1"],
+ helpinghand: ["9L1"],
+ leer: ["9L1"],
+ scaryface: ["9L1"],
+ sleeptalk: ["9L1"],
+ spite: ["9L1"],
+ sunnyday: ["9L1"],
+ swagger: ["9L1"],
+ tarshot: ["9L1"],
+ torment: ["9L1"],
+ },
+ },
+ ogerponeid: {
+ learnset: {
+ knockoff: ["9L1"],
+ liquidation: ["9L1"],
+ rapidspin: ["9L1"],
+ shadowclaw: ["9L1"],
+ wavecrash: ["9L1"],
+ astonish: ["9L1"],
+ falseswipe: ["9L1"],
+ fling: ["9L1"],
+ gigaimpact: ["9L1"],
+ lick: ["9L1"],
+ retaliate: ["9L1"],
+ slam: ["9L1"],
+ takedown: ["9L1"],
+ hex: ["9L1"],
+ moonblast: ["9L1"],
+ surf: ["9L1"],
+ shadowball: ["9L1"],
+ chillingwater: ["9L1"],
+ hyperbeam: ["9L1"],
+ icywind: ["9L1"],
+ watergun: ["9L1"],
+ waterpledge: ["9L1"],
+ waterpulse: ["9L1"],
+ batonpass: ["9L1"],
+ healbell: ["9L1"],
+ lunarblessing: ["9L1"],
+ lunardance: ["9L1"],
+ protect: ["9L1"],
+ recover: ["9L1"],
+ rest: ["9L1"],
+ spikes: ["9L1"],
+ stealthrock: ["9L1"],
+ substitute: ["9L1"],
+ thunderwave: ["9L1"],
+ toxic: ["9L1"],
+ aquaring: ["9L1"],
+ babydolleyes: ["9L1"],
+ celebrate: ["9L1"],
+ confuseray: ["9L1"],
+ cosmicpower: ["9L1"],
+ decorate: ["9L1"],
+ endure: ["9L1"],
+ focusenergy: ["9L1"],
+ followme: ["9L1"],
+ gravity: ["9L1"],
+ growth: ["9L1"],
+ helpinghand: ["9L1"],
+ imprison: ["9L1"],
+ instruct: ["9L1"],
+ lifedew: ["9L1"],
+ magicroom: ["9L1"],
+ metronome: ["9L1"],
+ mistyterrain: ["9L1"],
+ raindance: ["9L1"],
+ sleeptalk: ["9L1"],
+ stuffcheeks: ["9L1"],
+ },
+ },
+ corviknightanalytical: {
+ learnset: {
+ acrobatics: ["9L1"],
+ bodypress: ["9L1"],
+ bodyslam: ["9L1"],
+ doubleedge: ["9L1"],
+ facade: ["9L1"],
+ supercellslam: ["9L1"],
+ uturn: ["9L1"],
+ zenheadbutt: ["9L1"],
+ aerialace: ["9L1"],
+ dualwingbeat: ["9L1"],
+ fly: ["9L1"],
+ furyattack: ["9L1"],
+ gigaimpact: ["9L1"],
+ peck: ["9L1"],
+ pluck: ["9L1"],
+ skyattack: ["9L1"],
+ spark: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ wildcharge: ["9L1"],
+ discharge: ["9L1"],
+ heatwave: ["9L1"],
+ psychic: ["9L1"],
+ psyshock: ["9L1"],
+ terablast: ["9L1"],
+ thunder: ["9L1"],
+ thunderbolt: ["9L1"],
+ voltswitch: ["9L1"],
+ chargebeam: ["9L1"],
+ electroball: ["9L1"],
+ hyperbeam: ["9L1"],
+ swift: ["9L1"],
+ thundershock: ["9L1"],
+ psybeam: ["9L1"],
+ zapcannon: ["9L1"],
+ agility: ["9L1"],
+ calmmind: ["9L1"],
+ curse: ["9L1"],
+ lightscreen: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ roost: ["9L1"],
+ sleeptalk: ["9L1"],
+ substitute: ["9L1"],
+ electricterrain: ["9L1"],
+ endure: ["9L1"],
+ faketears: ["9L1"],
+ leer: ["9L1"],
+ psychicterrain: ["9L1"],
+ raindance: ["9L1"],
+ sandattack: ["9L1"],
+ scaryface: ["9L1"],
+ screech: ["9L1"],
+ spite: ["9L1"],
+ swagger: ["9L1"],
+ },
+ },
+ bisharpmantis: {
+ learnset: {
+ ceaselessedge: ["9L1"],
+ facade: ["9L1"],
+ bitterblade: ["9L1"],
+ firstimpression: ["9L1"],
+ foulplay: ["9L1"],
+ leechlife: ["9L1"],
+ lowkick: ["9L1"],
+ nightslash: ["9L1"],
+ poisonjab: ["9L1"],
+ shadowclaw: ["9L1"],
+ suckerpunch: ["9L1"],
+ knockoff: ["9L1"],
+ xscissor: ["9L1"],
+ bulldoze: ["9L1"],
+ dig: ["9L1"],
+ falseswipe: ["9L1"],
+ feint: ["9L1"],
+ fling: ["9L1"],
+ furycutter: ["9L1"],
+ gigaimpact: ["9L1"],
+ guillotine: ["9L1"],
+ retaliate: ["9L1"],
+ reversal: ["9L1"],
+ scratch: ["9L1"],
+ slash: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ solarblade: ["9L1"],
+ darkpulse: ["9L1"],
+ bugbuzz: ["9L1"],
+ snarl: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ hyperbeam: ["9L1"],
+ agility: ["9L1"],
+ curse: ["9L1"],
+ detect: ["9L1"],
+ protect: ["9L1"],
+ rest: ["9L1"],
+ sleeptalk: ["9L1"],
+ substitute: ["9L1"],
+ switcheroo: ["9L1"],
+ swordsdance: ["9L1"],
+ taunt: ["9L1"],
+ toxic: ["9L1"],
+ endure: ["9L1"],
+ leer: ["9L1"],
+ meanlook: ["9L1"],
+ stringshot: ["9L1"],
+ sunnyday: ["9L1"],
+ scaryface: ["9L1"],
+ spite: ["9L1"],
+ torment: ["9L1"],
+ wideguard: ["9L1"],
+ },
+ },
+ nidoqueenrosegold: {
+ learnset: {
+ aquatail: ["9L1"],
+ bodyslam: ["9L1"],
+ brickbreak: ["9L1"],
+ crunch: ["9L1"],
+ dragontail: ["9L1"],
+ drillrun: ["9L1"],
+ dynamicpunch: ["9L1"],
+ facade: ["9L1"],
+ firepunch: ["9L1"],
+ focuspunch: ["9L1"],
+ headbutt: ["9L1"],
+ icepunch: ["9L1"],
+ poisonjab: ["9L1"],
+ rockblast: ["9L1"],
+ rockslide: ["9L1"],
+ rocktomb: ["9L1"],
+ seismictoss: ["9L1"],
+ shadowclaw: ["9L1"],
+ stoneedge: ["9L1"],
+ suckerpunch: ["9L1"],
+ superfang: ["9L1"],
+ superpower: ["9L1"],
+ throatchop: ["9L1"],
+ aerialace: ["9L1"],
+ beatup: ["9L1"],
+ bite: ["9L1"],
+ bulldoze: ["9L1"],
+ counter: ["9L1"],
+ dig: ["9L1"],
+ doublekick: ["9L1"],
+ fling: ["9L1"],
+ furycutter: ["9L1"],
+ furyswipes: ["9L1"],
+ gigaimpact: ["9L1"],
+ horndrill: ["9L1"],
+ irontail: ["9L1"],
+ megakick: ["9L1"],
+ payday: ["9L1"],
+ poisonfang: ["9L1"],
+ poisonsting: ["9L1"],
+ poisontail: ["9L1"],
+ rocksmash: ["9L1"],
+ sandtomb: ["9L1"],
+ scratch: ["9L1"],
+ stompingtantrum: ["9L1"],
+ strength: ["9L1"],
+ tackle: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ blizzard: ["9L1"],
+ dragonpulse: ["9L1"],
+ energyball: ["9L1"],
+ flamethrower: ["9L1"],
+ focusblast: ["9L1"],
+ gigadrain: ["9L1"],
+ hex: ["9L1"],
+ leafstorm: ["9L1"],
+ shadowball: ["9L1"],
+ sludgebomb: ["9L1"],
+ sludgewave: ["9L1"],
+ surf: ["9L1"],
+ terablast: ["9L1"],
+ thunder: ["9L1"],
+ earthpower: ["9L1"],
+ absorb: ["9L1"],
+ bubblebeam: ["9L1"],
+ echoedvoice: ["9L1"],
+ hyperbeam: ["9L1"],
+ icywind: ["9L1"],
+ incinerate: ["9L1"],
+ mudslap: ["9L1"],
+ round: ["9L1"],
+ shockwave: ["9L1"],
+ snore: ["9L1"],
+ uproar: ["9L1"],
+ venoshock: ["9L1"],
+ watergun: ["9L1"],
+ waterpulse: ["9L1"],
+ whirlpool: ["9L1"],
+ curse: ["9L1"],
+ detect: ["9L1"],
+ disable: ["9L1"],
+ honeclaws: ["9L1"],
+ leechseed: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ roar: ["9L1"],
+ slackoff: ["9L1"],
+ spikes: ["9L1"],
+ spikyshield: ["9L1"],
+ substitute: ["9L1"],
+ taunt: ["9L1"],
+ toxic: ["9L1"],
+ toxicspikes: ["9L1"],
+ wish: ["9L1"],
+ attract: ["9L1"],
+ charm: ["9L1"],
+ confide: ["9L1"],
+ defensecurl: ["9L1"],
+ doubleteam: ["9L1"],
+ endure: ["9L1"],
+ flatter: ["9L1"],
+ focusenergy: ["9L1"],
+ growl: ["9L1"],
+ helpinghand: ["9L1"],
+ mimic: ["9L1"],
+ quash: ["9L1"],
+ raindance: ["9L1"],
+ sandstorm: ["9L1"],
+ sleeptalk: ["9L1"],
+ sunnyday: ["9L1"],
+ supersonic: ["9L1"],
+ swagger: ["9L1"],
+ tailwhip: ["9L1"],
+ torment: ["9L1"],
+ },
+ },
+ kingdrabard: {
+ learnset: {
+ aquajet: ["9L1"],
+ bodyslam: ["9L1"],
+ doubleedge: ["9L1"],
+ facade: ["9L1"],
+ flipturn: ["9L1"],
+ knockoff: ["9L1"],
+ waterfall: ["9L1"],
+ liquidation: ["9L1"],
+ spiritbreak: ["9L1"],
+ breakingswipe: ["9L1"],
+ flail: ["9L1"],
+ gigaimpact: ["9L1"],
+ takedown: ["9L1"],
+ alluringvoice: ["9L1"],
+ blizzard: ["9L1"],
+ clearsmog: ["9L1"],
+ hydropump: ["9L1"],
+ icebeam: ["9L1"],
+ moonblast: ["9L1"],
+ psychicnoise: ["9L1"],
+ scald: ["9L1"],
+ surf: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ aurorabeam: ["9L1"],
+ bubblebeam: ["9L1"],
+ chillingwater: ["9L1"],
+ dragonbreath: ["9L1"],
+ hyperbeam: ["9L1"],
+ icywind: ["9L1"],
+ muddywater: ["9L1"],
+ swift: ["9L1"],
+ twister: ["9L1"],
+ watergun: ["9L1"],
+ waterpulse: ["9L1"],
+ whirlpool: ["9L1"],
+ agility: ["9L1"],
+ disable: ["9L1"],
+ moonlight: ["9L1"],
+ protect: ["9L1"],
+ rest: ["9L1"],
+ substitute: ["9L1"],
+ dragoncheer: ["9L1"],
+ endure: ["9L1"],
+ focusenergy: ["9L1"],
+ leer: ["9L1"],
+ raindance: ["9L1"],
+ scaryface: ["9L1"],
+ sleeptalk: ["9L1"],
+ smokescreen: ["9L1"],
+ snowscape: ["9L1"],
+ splash: ["9L1"],
+ yawn: ["9L1"],
+ },
+ },
+ kingdragourmet: {
+ learnset: {
+ bodyslam: ["9L1"],
+ doubleedge: ["9L1"],
+ dragontail: ["9L1"],
+ facade: ["9L1"],
+ fakeout: ["9L1"],
+ flipturn: ["9L1"],
+ knockoff: ["9L1"],
+ orderup: ["9L1"],
+ outrage: ["9L1"],
+ rapidspin: ["9L1"],
+ scaleshot: ["9L1"],
+ breakingswipe: ["9L1"],
+ dragonrush: ["9L1"],
+ flail: ["9L1"],
+ gigaimpact: ["9L1"],
+ takedown: ["9L1"],
+ clearsmog: ["9L1"],
+ dracometeor: ["9L1"],
+ terablast: ["9L1"],
+ chillingwater: ["9L1"],
+ dragonbreath: ["9L1"],
+ hyperbeam: ["9L1"],
+ icywind: ["9L1"],
+ swift: ["9L1"],
+ twister: ["9L1"],
+ whirlpool: ["9L1"],
+ banefulbunker: ["9L1"],
+ defog: ["9L1"],
+ disable: ["9L1"],
+ glare: ["9L1"],
+ healbell: ["9L1"],
+ protect: ["9L1"],
+ rest: ["9L1"],
+ substitute: ["9L1"],
+ toxic: ["9L1"],
+ whirlwind: ["9L1"],
+ wish: ["9L1"],
+ dragoncheer: ["9L1"],
+ endure: ["9L1"],
+ focusenergy: ["9L1"],
+ leer: ["9L1"],
+ raindance: ["9L1"],
+ scaryface: ["9L1"],
+ sleeptalk: ["9L1"],
+ smokescreen: ["9L1"],
+ snowscape: ["9L1"],
+ splash: ["9L1"],
+ yawn: ["9L1"],
+ },
+ },
+ nidoqueenshaman: {
+ learnset: {
+ bodyslam: ["9L1"],
+ brickbreak: ["9L1"],
+ drillrun: ["9L1"],
+ dynamicpunch: ["9L1"],
+ earthquake: ["9L1"],
+ facade: ["9L1"],
+ focuspunch: ["9L1"],
+ headbutt: ["9L1"],
+ poisonjab: ["9L1"],
+ poltergeist: ["9L1"],
+ rockblast: ["9L1"],
+ rockslide: ["9L1"],
+ rocktomb: ["9L1"],
+ seismictoss: ["9L1"],
+ shadowclaw: ["9L1"],
+ shadowsneak: ["9L1"],
+ superfang: ["9L1"],
+ superpower: ["9L1"],
+ aerialace: ["9L1"],
+ beatup: ["9L1"],
+ bite: ["9L1"],
+ bulldoze: ["9L1"],
+ dig: ["9L1"],
+ doublekick: ["9L1"],
+ fissure: ["9L1"],
+ fling: ["9L1"],
+ furycutter: ["9L1"],
+ furyswipes: ["9L1"],
+ gigaimpact: ["9L1"],
+ horndrill: ["9L1"],
+ irontail: ["9L1"],
+ lick: ["9L1"],
+ megakick: ["9L1"],
+ payday: ["9L1"],
+ poisonfang: ["9L1"],
+ poisonsting: ["9L1"],
+ poisontail: ["9L1"],
+ rocksmash: ["9L1"],
+ sandtomb: ["9L1"],
+ scratch: ["9L1"],
+ stompingtantrum: ["9L1"],
+ strength: ["9L1"],
+ tackle: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ earthpower: ["9L1"],
+ fireblast: ["9L1"],
+ flamethrower: ["9L1"],
+ focusblast: ["9L1"],
+ hex: ["9L1"],
+ icebeam: ["9L1"],
+ shadowball: ["9L1"],
+ sludgebomb: ["9L1"],
+ sludgewave: ["9L1"],
+ surf: ["9L1"],
+ terablast: ["9L1"],
+ thunder: ["9L1"],
+ thunderbolt: ["9L1"],
+ bubblebeam: ["9L1"],
+ echoedvoice: ["9L1"],
+ hyperbeam: ["9L1"],
+ icywind: ["9L1"],
+ incinerate: ["9L1"],
+ mudshot: ["9L1"],
+ mudslap: ["9L1"],
+ round: ["9L1"],
+ shockwave: ["9L1"],
+ snore: ["9L1"],
+ uproar: ["9L1"],
+ venoshock: ["9L1"],
+ watergun: ["9L1"],
+ waterpulse: ["9L1"],
+ whirlpool: ["9L1"],
+ curse: ["9L1"],
+ detect: ["9L1"],
+ disable: ["9L1"],
+ honeclaws: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ roar: ["9L1"],
+ slackoff: ["9L1"],
+ spikes: ["9L1"],
+ substitute: ["9L1"],
+ taunt: ["9L1"],
+ toxic: ["9L1"],
+ toxicspikes: ["9L1"],
+ willowisp: ["9L1"],
+ wish: ["9L1"],
+ attract: ["9L1"],
+ charm: ["9L1"],
+ confide: ["9L1"],
+ defensecurl: ["9L1"],
+ doubleteam: ["9L1"],
+ endure: ["9L1"],
+ flatter: ["9L1"],
+ focusenergy: ["9L1"],
+ growl: ["9L1"],
+ helpinghand: ["9L1"],
+ mimic: ["9L1"],
+ quash: ["9L1"],
+ raindance: ["9L1"],
+ sandstorm: ["9L1"],
+ sleeptalk: ["9L1"],
+ sunnyday: ["9L1"],
+ supersonic: ["9L1"],
+ swagger: ["9L1"],
+ tailwhip: ["9L1"],
+ torment: ["9L1"],
+ },
+ },
+ bisharprevenant: {
+ learnset: {
+ behemothblade: ["9L1"],
+ brickbreak: ["9L1"],
+ drainpunch: ["9L1"],
+ facade: ["9L1"],
+ foulplay: ["9L1"],
+ headbutt: ["9L1"],
+ ironhead: ["9L1"],
+ nightslash: ["9L1"],
+ poisonjab: ["9L1"],
+ poltergeist: ["9L1"],
+ sacredsword: ["9L1"],
+ shadowclaw: ["9L1"],
+ shadowsneak: ["9L1"],
+ superpower: ["9L1"],
+ xscissor: ["9L1"],
+ bulldoze: ["9L1"],
+ dig: ["9L1"],
+ falseswipe: ["9L1"],
+ feint: ["9L1"],
+ fling: ["9L1"],
+ furycutter: ["9L1"],
+ gigaimpact: ["9L1"],
+ guillotine: ["9L1"],
+ lowsweep: ["9L1"],
+ metalburst: ["9L1"],
+ metalclaw: ["9L1"],
+ phantomforce: ["9L1"],
+ retaliate: ["9L1"],
+ reversal: ["9L1"],
+ scratch: ["9L1"],
+ slash: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ upperhand: ["9L1"],
+ flashcannon: ["9L1"],
+ focusblast: ["9L1"],
+ hex: ["9L1"],
+ nightshade: ["9L1"],
+ shadowball: ["9L1"],
+ steelbeam: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ hyperbeam: ["9L1"],
+ curse: ["9L1"],
+ detect: ["9L1"],
+ irondefense: ["9L1"],
+ protect: ["9L1"],
+ recover: ["9L1"],
+ rest: ["9L1"],
+ stealthrock: ["9L1"],
+ substitute: ["9L1"],
+ swordsdance: ["9L1"],
+ thunderwave: ["9L1"],
+ coaching: ["9L1"],
+ endure: ["9L1"],
+ leer: ["9L1"],
+ meanlook: ["9L1"],
+ metalsound: ["9L1"],
+ sandstorm: ["9L1"],
+ scaryface: ["9L1"],
+ sleeptalk: ["9L1"],
+ spite: ["9L1"],
+ sunnyday: ["9L1"],
+ torment: ["9L1"],
+ wideguard: ["9L1"],
+ },
+ },
+ corviknightmartian: {
+ learnset: {
+ bodypress: ["9L1"],
+ bodyslam: ["9L1"],
+ ironhead: ["9L1"],
+ zenheadbutt: ["9L1"],
+ aerialace: ["9L1"],
+ dualwingbeat: ["9L1"],
+ fly: ["9L1"],
+ gigaimpact: ["9L1"],
+ gyroball: ["9L1"],
+ hardpress: ["9L1"],
+ psychocut: ["9L1"],
+ takedown: ["9L1"],
+ thunderbolt: ["9L1"],
+ psychic: ["9L1"],
+ doomdesire: ["9L1"],
+ flashcannon: ["9L1"],
+ psychicnoise: ["9L1"],
+ steelbeam: ["9L1"],
+ storedpower: ["9L1"],
+ chargebeam: ["9L1"],
+ hyperbeam: ["9L1"],
+ swift: ["9L1"],
+ psybeam: ["9L1"],
+ calmmind: ["9L1"],
+ defog: ["9L1"],
+ irondefense: ["9L1"],
+ lightscreen: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ sleeptalk: ["9L1"],
+ substitute: ["9L1"],
+ taunt: ["9L1"],
+ teleport: ["9L1"],
+ trickroom: ["9L1"],
+ electricterrain: ["9L1"],
+ endure: ["9L1"],
+ gravity: ["9L1"],
+ leer: ["9L1"],
+ psychicterrain: ["9L1"],
+ raindance: ["9L1"],
+ scaryface: ["9L1"],
+ screech: ["9L1"],
+ skillswap: ["9L1"],
+ spite: ["9L1"],
+ swagger: ["9L1"],
+ },
+ },
+ krookodilecliffside: {
+ learnset: {
+ bodyslam: ["9L1"],
+ crunch: ["9L1"],
+ doubleedge: ["9L1"],
+ dragonclaw: ["9L1"],
+ dragontail: ["9L1"],
+ endeavor: ["9L1"],
+ facade: ["9L1"],
+ firefang: ["9L1"],
+ focuspunch: ["9L1"],
+ foulplay: ["9L1"],
+ gunkshot: ["9L1"],
+ knockoff: ["9L1"],
+ powertrip: ["9L1"],
+ scaleshot: ["9L1"],
+ throatchop: ["9L1"],
+ aerialace: ["9L1"],
+ bite: ["9L1"],
+ breakingswipe: ["9L1"],
+ counter: ["9L1"],
+ fling: ["9L1"],
+ gigaimpact: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ thrash: ["9L1"],
+ darkpulse: ["9L1"],
+ dracometeor: ["9L1"],
+ dragonpulse: ["9L1"],
+ flamethrower: ["9L1"],
+ flashcannon: ["9L1"],
+ focusblast: ["9L1"],
+ inferno: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ burningjealousy: ["9L1"],
+ ember: ["9L1"],
+ firespin: ["9L1"],
+ hyperbeam: ["9L1"],
+ incinerate: ["9L1"],
+ snarl: ["9L1"],
+ curse: ["9L1"],
+ defog: ["9L1"],
+ encore: ["9L1"],
+ memento: ["9L1"],
+ partingshot: ["9L1"],
+ protect: ["9L1"],
+ rest: ["9L1"],
+ roost: ["9L1"],
+ stealthrock: ["9L1"],
+ substitute: ["9L1"],
+ switcheroo: ["9L1"],
+ taunt: ["9L1"],
+ toxic: ["9L1"],
+ endure: ["9L1"],
+ helpinghand: ["9L1"],
+ leer: ["9L1"],
+ scaryface: ["9L1"],
+ sleeptalk: ["9L1"],
+ spite: ["9L1"],
+ sunnyday: ["9L1"],
+ swagger: ["9L1"],
+ torment: ["9L1"],
+ },
+ },
+ ogerponvessel: {
+ learnset: {
+ axekick: ["9L1"],
+ explosion: ["9L1"],
+ knockoff: ["9L1"],
+ leechlife: ["9L1"],
+ lunge: ["9L1"],
+ rocktomb: ["9L1"],
+ sacredsword: ["9L1"],
+ thunderouskick: ["9L1"],
+ uturn: ["9L1"],
+ gigaimpact: ["9L1"],
+ highjumpkick: ["9L1"],
+ retaliate: ["9L1"],
+ skittersmack: ["9L1"],
+ slam: ["9L1"],
+ takedown: ["9L1"],
+ terablast: ["9L1"],
+ hyperbeam: ["9L1"],
+ icywind: ["9L1"],
+ defog: ["9L1"],
+ destinybond: ["9L1"],
+ disable: ["9L1"],
+ encore: ["9L1"],
+ lightscreen: ["9L1"],
+ perishsong: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ spikes: ["9L1"],
+ substitute: ["9L1"],
+ taunt: ["9L1"],
+ toxic: ["9L1"],
+ trick: ["9L1"],
+ endure: ["9L1"],
+ gravity: ["9L1"],
+ growth: ["9L1"],
+ helpinghand: ["9L1"],
+ imprison: ["9L1"],
+ metronome: ["9L1"],
+ scaryface: ["9L1"],
+ sleeptalk: ["9L1"],
+ spite: ["9L1"],
+ topsyturvy: ["9L1"],
+ },
+ },
+ kingdraancient: {
+ learnset: {
+ bodyslam: ["9L1"],
+ doubleedge: ["9L1"],
+ facade: ["9L1"],
+ flareblitz: ["9L1"],
+ flipturn: ["9L1"],
+ knockoff: ["9L1"],
+ liquidation: ["9L1"],
+ outrage: ["9L1"],
+ scaleshot: ["9L1"],
+ seedbomb: ["9L1"],
+ breakingswipe: ["9L1"],
+ dragonrush: ["9L1"],
+ flail: ["9L1"],
+ gigaimpact: ["9L1"],
+ takedown: ["9L1"],
+ clearsmog: ["9L1"],
+ energyball: ["9L1"],
+ fireblast: ["9L1"],
+ flamethrower: ["9L1"],
+ gigadrain: ["9L1"],
+ hydropump: ["9L1"],
+ leafstorm: ["9L1"],
+ overheat: ["9L1"],
+ scald: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ aurorabeam: ["9L1"],
+ bubblebeam: ["9L1"],
+ chillingwater: ["9L1"],
+ dragonbreath: ["9L1"],
+ hyperbeam: ["9L1"],
+ icywind: ["9L1"],
+ muddywater: ["9L1"],
+ swift: ["9L1"],
+ twister: ["9L1"],
+ watergun: ["9L1"],
+ waterpulse: ["9L1"],
+ whirlpool: ["9L1"],
+ agility: ["9L1"],
+ disable: ["9L1"],
+ leechseed: ["9L1"],
+ protect: ["9L1"],
+ rest: ["9L1"],
+ substitute: ["9L1"],
+ synthesis: ["9L1"],
+ dragoncheer: ["9L1"],
+ endure: ["9L1"],
+ focusenergy: ["9L1"],
+ leer: ["9L1"],
+ raindance: ["9L1"],
+ scaryface: ["9L1"],
+ sleeptalk: ["9L1"],
+ smokescreen: ["9L1"],
+ snowscape: ["9L1"],
+ splash: ["9L1"],
+ yawn: ["9L1"],
+ },
+ },
+ nidoqueenjasper: {
+ learnset: {
+ accelerock: ["9L1"],
+ aquatail: ["9L1"],
+ bodyslam: ["9L1"],
+ brickbreak: ["9L1"],
+ crunch: ["9L1"],
+ dragontail: ["9L1"],
+ drillrun: ["9L1"],
+ dynamicpunch: ["9L1"],
+ earthquake: ["9L1"],
+ facade: ["9L1"],
+ firepunch: ["9L1"],
+ focuspunch: ["9L1"],
+ gunkshot: ["9L1"],
+ headbutt: ["9L1"],
+ highhorsepower: ["9L1"],
+ icepunch: ["9L1"],
+ outrage: ["9L1"],
+ poisonjab: ["9L1"],
+ rockblast: ["9L1"],
+ rockslide: ["9L1"],
+ rocktomb: ["9L1"],
+ saltcure: ["9L1"],
+ seismictoss: ["9L1"],
+ shadowclaw: ["9L1"],
+ stoneedge: ["9L1"],
+ superfang: ["9L1"],
+ superpower: ["9L1"],
+ throatchop: ["9L1"],
+ thunderpunch: ["9L1"],
+ aerialace: ["9L1"],
+ beatup: ["9L1"],
+ bite: ["9L1"],
+ bulldoze: ["9L1"],
+ counter: ["9L1"],
+ dig: ["9L1"],
+ doublekick: ["9L1"],
+ fissure: ["9L1"],
+ fling: ["9L1"],
+ furycutter: ["9L1"],
+ furyswipes: ["9L1"],
+ gigaimpact: ["9L1"],
+ horndrill: ["9L1"],
+ irontail: ["9L1"],
+ megakick: ["9L1"],
+ payday: ["9L1"],
+ poisonfang: ["9L1"],
+ poisonsting: ["9L1"],
+ poisontail: ["9L1"],
+ rocksmash: ["9L1"],
+ sandtomb: ["9L1"],
+ scratch: ["9L1"],
+ stompingtantrum: ["9L1"],
+ strength: ["9L1"],
+ tackle: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ blizzard: ["9L1"],
+ dragonpulse: ["9L1"],
+ earthpower: ["9L1"],
+ fireblast: ["9L1"],
+ flamethrower: ["9L1"],
+ focusblast: ["9L1"],
+ icebeam: ["9L1"],
+ shadowball: ["9L1"],
+ sludgebomb: ["9L1"],
+ terablast: ["9L1"],
+ thunder: ["9L1"],
+ thunderbolt: ["9L1"],
+ bubblebeam: ["9L1"],
+ echoedvoice: ["9L1"],
+ hyperbeam: ["9L1"],
+ icywind: ["9L1"],
+ incinerate: ["9L1"],
+ mudshot: ["9L1"],
+ mudslap: ["9L1"],
+ round: ["9L1"],
+ shockwave: ["9L1"],
+ snore: ["9L1"],
+ uproar: ["9L1"],
+ venoshock: ["9L1"],
+ watergun: ["9L1"],
+ waterpulse: ["9L1"],
+ whirlpool: ["9L1"],
+ curse: ["9L1"],
+ disable: ["9L1"],
+ glare: ["9L1"],
+ honeclaws: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ roar: ["9L1"],
+ stealthrock: ["9L1"],
+ substitute: ["9L1"],
+ taunt: ["9L1"],
+ toxic: ["9L1"],
+ attract: ["9L1"],
+ charm: ["9L1"],
+ confide: ["9L1"],
+ defensecurl: ["9L1"],
+ doubleteam: ["9L1"],
+ endure: ["9L1"],
+ flatter: ["9L1"],
+ focusenergy: ["9L1"],
+ growl: ["9L1"],
+ helpinghand: ["9L1"],
+ mimic: ["9L1"],
+ quash: ["9L1"],
+ raindance: ["9L1"],
+ sandstorm: ["9L1"],
+ sleeptalk: ["9L1"],
+ sunnyday: ["9L1"],
+ supersonic: ["9L1"],
+ swagger: ["9L1"],
+ tailwhip: ["9L1"],
+ torment: ["9L1"],
+ },
+ },
+ bisharpassassin: {
+ learnset: {
+ bodypress: ["9L1"],
+ brickbreak: ["9L1"],
+ drainpunch: ["9L1"],
+ dynamicpunch: ["9L1"],
+ facade: ["9L1"],
+ focuspunch: ["9L1"],
+ foulplay: ["9L1"],
+ hammerarm: ["9L1"],
+ headbutt: ["9L1"],
+ iceshard: ["9L1"],
+ icespinner: ["9L1"],
+ lowkick: ["9L1"],
+ machpunch: ["9L1"],
+ nightslash: ["9L1"],
+ poisonjab: ["9L1"],
+ sacredsword: ["9L1"],
+ shadowclaw: ["9L1"],
+ tripleaxel: ["9L1"],
+ xscissor: ["9L1"],
+ bulldoze: ["9L1"],
+ dig: ["9L1"],
+ falseswipe: ["9L1"],
+ feint: ["9L1"],
+ fling: ["9L1"],
+ furycutter: ["9L1"],
+ gigaimpact: ["9L1"],
+ guillotine: ["9L1"],
+ lowsweep: ["9L1"],
+ metalburst: ["9L1"],
+ metalclaw: ["9L1"],
+ retaliate: ["9L1"],
+ reversal: ["9L1"],
+ scratch: ["9L1"],
+ slash: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ upperhand: ["9L1"],
+ blizzard: ["9L1"],
+ focusblast: ["9L1"],
+ grassknot: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ hyperbeam: ["9L1"],
+ auroraveil: ["9L1"],
+ curse: ["9L1"],
+ detect: ["9L1"],
+ partingshot: ["9L1"],
+ protect: ["9L1"],
+ rest: ["9L1"],
+ stealthrock: ["9L1"],
+ substitute: ["9L1"],
+ taunt: ["9L1"],
+ coaching: ["9L1"],
+ endure: ["9L1"],
+ leer: ["9L1"],
+ meanlook: ["9L1"],
+ metalsound: ["9L1"],
+ sandstorm: ["9L1"],
+ scaryface: ["9L1"],
+ sleeptalk: ["9L1"],
+ spite: ["9L1"],
+ sunnyday: ["9L1"],
+ torment: ["9L1"],
+ wideguard: ["9L1"],
+ },
+ },
+ corviknightfalcon: {
+ learnset: {
+ acrobatics: ["9L1"],
+ bodypress: ["9L1"],
+ bodyslam: ["9L1"],
+ bravebird: ["9L1"],
+ closecombat: ["9L1"],
+ doubleedge: ["9L1"],
+ drillpeck: ["9L1"],
+ dualwingbeat: ["9L1"],
+ facade: ["9L1"],
+ knockoff: ["9L1"],
+ lowkick: ["9L1"],
+ powertrip: ["9L1"],
+ uturn: ["9L1"],
+ wildcharge: ["9L1"],
+ aerialace: ["9L1"],
+ fly: ["9L1"],
+ flyingpress: ["9L1"],
+ furyattack: ["9L1"],
+ gigaimpact: ["9L1"],
+ highjumpkick: ["9L1"],
+ peck: ["9L1"],
+ pluck: ["9L1"],
+ skyattack: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ airslash: ["9L1"],
+ focusblast: ["9L1"],
+ heatwave: ["9L1"],
+ hurricane: ["9L1"],
+ terablast: ["9L1"],
+ aircutter: ["9L1"],
+ hyperbeam: ["9L1"],
+ swift: ["9L1"],
+ agility: ["9L1"],
+ curse: ["9L1"],
+ defog: ["9L1"],
+ lightscreen: ["9L1"],
+ protect: ["9L1"],
+ reflect: ["9L1"],
+ rest: ["9L1"],
+ roost: ["9L1"],
+ substitute: ["9L1"],
+ tailwind: ["9L1"],
+ taunt: ["9L1"],
+ endure: ["9L1"],
+ faketears: ["9L1"],
+ leer: ["9L1"],
+ raindance: ["9L1"],
+ sandattack: ["9L1"],
+ scaryface: ["9L1"],
+ screech: ["9L1"],
+ sleeptalk: ["9L1"],
+ spite: ["9L1"],
+ swagger: ["9L1"],
+ },
+ },
+ krookodilequantum: {
+ learnset: {
+ bodyslam: ["9L1"],
+ brickbreak: ["9L1"],
+ doubleshock: ["9L1"],
+ doubleedge: ["9L1"],
+ dragontail: ["9L1"],
+ earthquake: ["9L1"],
+ endeavor: ["9L1"],
+ facade: ["9L1"],
+ flamecharge: ["9L1"],
+ focuspunch: ["9L1"],
+ headsmash: ["9L1"],
+ knockoff: ["9L1"],
+ powertrip: ["9L1"],
+ rockblast: ["9L1"],
+ scaleshot: ["9L1"],
+ stoneedge: ["9L1"],
+ volttackle: ["9L1"],
+ aerialace: ["9L1"],
+ bite: ["9L1"],
+ breakingswipe: ["9L1"],
+ counter: ["9L1"],
+ fling: ["9L1"],
+ gigaimpact: ["9L1"],
+ takedown: ["9L1"],
+ thief: ["9L1"],
+ thrash: ["9L1"],
+ discharge: ["9L1"],
+ dragonpulse: ["9L1"],
+ electroshot: ["9L1"],
+ flamethrower: ["9L1"],
+ inferno: ["9L1"],
+ meteorbeam: ["9L1"],
+ powergem: ["9L1"],
+ sludgebomb: ["9L1"],
+ terablast: ["9L1"],
+ thunderbolt: ["9L1"],
+ voltswitch: ["9L1"],
+ weatherball: ["9L1"],
+ burningjealousy: ["9L1"],
+ electroball: ["9L1"],
+ ember: ["9L1"],
+ firespin: ["9L1"],
+ hyperbeam: ["9L1"],
+ incinerate: ["9L1"],
+ snarl: ["9L1"],
+ curse: ["9L1"],
+ encore: ["9L1"],
+ memento: ["9L1"],
+ partingshot: ["9L1"],
+ protect: ["9L1"],
+ recover: ["9L1"],
+ rest: ["9L1"],
+ stealthrock: ["9L1"],
+ substitute: ["9L1"],
+ switcheroo: ["9L1"],
+ taunt: ["9L1"],
+ thunderwave: ["9L1"],
+ charge: ["9L1"],
+ conversion: ["9L1"],
+ conversion2: ["9L1"],
+ eerieimpulse: ["9L1"],
+ electricterrain: ["9L1"],
+ endure: ["9L1"],
+ helpinghand: ["9L1"],
+ leer: ["9L1"],
+ scaryface: ["9L1"],
+ sleeptalk: ["9L1"],
+ spite: ["9L1"],
+ sunnyday: ["9L1"],
+ swagger: ["9L1"],
+ torment: ["9L1"],
+ },
+ },
+ ogerponkitsune: {
+ learnset: {
+ aquastep: ["9L1"],
+ blazekick: ["9L1"],
+ facade: ["9L1"],
+ knockoff: ["9L1"],
+ powerwhip: ["9L1"],
+ rocktomb: ["9L1"],
+ shadowsneak: ["9L1"],
+ uturn: ["9L1"],
+ zingzap: ["9L1"],
+ astonish: ["9L1"],
+ falseswipe: ["9L1"],
+ fling: ["9L1"],
+ gigaimpact: ["9L1"],
+ phantomforce: ["9L1"],
+ retaliate: ["9L1"],
+ slam: ["9L1"],
+ takedown: ["9L1"],
+ aurasphere: ["9L1"],
+ dazzlinggleam: ["9L1"],
+ earthpower: ["9L1"],
+ flashcannon: ["9L1"],
+ powergem: ["9L1"],
+ shadowball: ["9L1"],
+ terablast: ["9L1"],
+ weatherball: ["9L1"],
+ disarmingvoice: ["9L1"],
+ hyperbeam: ["9L1"],
+ icywind: ["9L1"],
+ protect: ["9L1"],
+ rest: ["9L1"],
+ substitute: ["9L1"],
+ transform: ["9L1"],
+ trickroom: ["9L1"],
+ babydolleyes: ["9L1"],
+ charm: ["9L1"],
+ confuseray: ["9L1"],
+ endure: ["9L1"],
+ focusenergy: ["9L1"],
+ followme: ["9L1"],
+ gravity: ["9L1"],
+ growth: ["9L1"],
+ helpinghand: ["9L1"],
+ imprison: ["9L1"],
+ magicroom: ["9L1"],
+ metronome: ["9L1"],
+ mistyterrain: ["9L1"],
+ scaryface: ["9L1"],
+ sleeptalk: ["9L1"],
+ spite: ["9L1"],
+ },
+ },
+};
diff --git a/data/mods/sixbysix/pokedex.ts b/data/mods/sixbysix/pokedex.ts
new file mode 100644
index 0000000000..a06fef7146
--- /dev/null
+++ b/data/mods/sixbysix/pokedex.ts
@@ -0,0 +1,542 @@
+export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable = {
+ kingdra: {
+ inherit: true,
+ otherFormes: ["Kingdra-Classic", "Kingdra-Brinepool", "Kingdra-Druid", "Kingdra-Bard", "Kingdra-Gourmet", "Kingdra-Ancient"],
+ formeOrder: ["Kingdra", "Kingdra-Classic", "Kingdra-Brinepool", "Kingdra-Druid", "Kingdra-Bard", "Kingdra-Gourmet", "Kingdra-Ancient"],
+ },
+ kingdraclassic: {
+ num: 230,
+ name: "Kingdra-Classic",
+ baseSpecies: "Kingdra",
+ forme: "Classic",
+ types: ["Water", "Dragon"],
+ baseStats: { hp: 90, atk: 70, def: 80, spa: 130, spd: 90, spe: 90 },
+ abilities: { 0: "Berserk", 1: "Heatproof", H: "Dry Skin" },
+ heightm: 1.8,
+ weightkg: 152,
+ color: "Blue",
+ prevo: '',
+ eggGroups: ["Water 1", "Dragon"],
+ },
+ kingdrabrinepool: {
+ num: 230,
+ name: "Kingdra-Brinepool",
+ baseSpecies: "Kingdra",
+ forme: "Brinepool",
+ types: ["Water", "Poison"],
+ baseStats: { hp: 130, atk: 35, def: 105, spa: 130, spd: 85, spe: 65 },
+ abilities: { 0: "Storm Drain", 1: "Purifying Salt", H: "Dry Skin" },
+ heightm: 1.8,
+ weightkg: 152,
+ color: "Blue",
+ prevo: '',
+ eggGroups: ["Water 1", "Dragon"],
+ },
+ kingdradruid: {
+ num: 230,
+ name: "Kingdra-Druid",
+ baseSpecies: "Kingdra",
+ forme: "Druid",
+ types: ["Steel", "Dragon"],
+ baseStats: { hp: 105, atk: 65, def: 90, spa: 120, spd: 120, spe: 50 },
+ abilities: { 0: "Berserk", 1: "Heatproof", H: "Water Absorb" },
+ heightm: 1.8,
+ weightkg: 152,
+ color: "Blue",
+ prevo: '',
+ eggGroups: ["Water 1", "Dragon"],
+ },
+ kingdrabard: {
+ num: 230,
+ name: "Kingdra-Bard",
+ baseSpecies: "Kingdra",
+ forme: "Bard",
+ types: ["Water", "Fairy"],
+ baseStats: { hp: 90, atk: 70, def: 80, spa: 130, spd: 100, spe: 80 },
+ abilities: { 0: "Punk Rock", 1: "Cute Charm", H: "Dancer" },
+ heightm: 1.8,
+ weightkg: 152,
+ color: "Blue",
+ prevo: '',
+ eggGroups: ["Water 1", "Dragon"],
+ },
+ kingdragourmet: {
+ num: 230,
+ name: "Kingdra-Gourmet",
+ baseSpecies: "Kingdra",
+ forme: "Gourmet",
+ types: ["Normal", "Dragon"],
+ baseStats: { hp: 110, atk: 110, def: 80, spa: 90, spd: 100, spe: 60 },
+ abilities: { 0: "Emergency Exit", 1: "Thick Fat", H: "Poison Heal" },
+ heightm: 1.8,
+ weightkg: 152,
+ color: "Blue",
+ prevo: '',
+ eggGroups: ["Water 1", "Dragon"],
+ },
+ kingdraancient: {
+ num: 230,
+ name: "Kingdra-Ancient",
+ baseSpecies: "Kingdra",
+ forme: "Ancient",
+ types: ["Fire", "Grass"],
+ baseStats: { hp: 89, atk: 89, def: 91, spa: 111, spd: 91, spe: 79 },
+ abilities: { 0: "Competitive", 1: "Heatproof", H: "Protosynthesis" },
+ heightm: 1.8,
+ weightkg: 152,
+ color: "Blue",
+ prevo: '',
+ eggGroups: ["Water 1", "Dragon"],
+ },
+ nidoqueen: {
+ inherit: true,
+ otherFormes: ["Nidoqueen-Classic", "Nidoqueen-Erudite", "Nidoqueen-Volcanic", "Nidoqueen-Rosegold", "Nidoqueen-Shaman", "Nidoqueen-Jasper"],
+ formeOrder: ["Nidoqueen", "Nidoqueen-Classic", "Nidoqueen-Erudite", "Nidoqueen-Volcanic", "Nidoqueen-Rosegold", "Nidoqueen-Shaman", "Nidoqueen-Jasper"],
+ },
+ nidoqueenclassic: {
+ num: 31,
+ name: "Nidoqueen-Classic",
+ baseSpecies: "Nidoqueen",
+ forme: "Classic",
+ types: ["Poison", "Ground"],
+ gender: "F",
+ baseStats: { hp: 135, atk: 115, def: 60, spa: 90, spd: 85, spe: 55 },
+ abilities: { 0: "Poison Point", 1: "Cheek Pouch", H: "Serene Grace" },
+ heightm: 1.3,
+ weightkg: 60,
+ color: "Blue",
+ prevo: '',
+ eggGroups: ["Undiscovered"],
+ },
+ nidoqueenerudite: {
+ num: 31,
+ name: "Nidoqueen-Erudite",
+ baseSpecies: "Nidoqueen",
+ forme: "Erudite",
+ types: ["Psychic", "Ground"],
+ gender: "F",
+ baseStats: { hp: 95, atk: 100, def: 80, spa: 115, spd: 110, spe: 40 },
+ abilities: { 0: "Cute Charm", 1: "Regenerator", H: "Serene Grace" },
+ heightm: 1.3,
+ weightkg: 60,
+ color: "Blue",
+ prevo: '',
+ eggGroups: ["Undiscovered"],
+ },
+ nidoqueenvolcanic: {
+ num: 31,
+ name: "Nidoqueen-Volcanic",
+ baseSpecies: "Nidoqueen",
+ forme: "Volcanic",
+ types: ["Fire", "Ground"],
+ gender: "F",
+ baseStats: { hp: 125, atk: 75, def: 100, spa: 110, spd: 75, spe: 55 },
+ abilities: { 0: "Flame Body", 1: "Cheek Pouch", H: "Sheer Force" },
+ heightm: 1.3,
+ weightkg: 60,
+ color: "Blue",
+ prevo: '',
+ eggGroups: ["Undiscovered"],
+ },
+ nidoqueenrosegold: {
+ num: 31,
+ name: "Nidoqueen-Rosegold",
+ baseSpecies: "Nidoqueen",
+ forme: "Rosegold",
+ types: ["Poison", "Grass"],
+ gender: "F",
+ baseStats: { hp: 125, atk: 70, def: 100, spa: 100, spd: 85, spe: 60 },
+ abilities: { 0: "Rough Skin", 1: "Cheek Pouch", H: "Shield Dust" },
+ heightm: 1.3,
+ weightkg: 60,
+ color: "Blue",
+ prevo: '',
+ eggGroups: ["Undiscovered"],
+ },
+ nidoqueenshaman: {
+ num: 31,
+ name: "Nidoqueen-Shaman",
+ baseSpecies: "Nidoqueen",
+ forme: "Shaman",
+ types: ["Poison", "Ghost"],
+ gender: "F",
+ baseStats: { hp: 95, atk: 120, def: 60, spa: 90, spd: 80, spe: 95 },
+ abilities: { 0: "Toxic Chain", 1: "Regenerator", H: "Sheer Force" },
+ heightm: 1.3,
+ weightkg: 60,
+ color: "Blue",
+ prevo: '',
+ eggGroups: ["Undiscovered"],
+ },
+ nidoqueenjasper: {
+ num: 31,
+ name: "Nidoqueen-Jasper",
+ baseSpecies: "Nidoqueen",
+ forme: "Jasper",
+ types: ["Poison", "Rock"],
+ gender: "F",
+ baseStats: { hp: 135, atk: 125, def: 70, spa: 80, spd: 85, spe: 45 },
+ abilities: { 0: "Clear Body", 1: "Earth Eater", H: "Sand Stream" },
+ heightm: 1.3,
+ weightkg: 60,
+ color: "Blue",
+ prevo: '',
+ eggGroups: ["Undiscovered"],
+ },
+ bisharp: {
+ inherit: true,
+ otherFormes: ["Bisharp-Centurion", "Bisharp-Savage", "Bisharp-Ronin", "Bisharp-Mantis", "Bisharp-Revenant", "Bisharp-Assassin"],
+ formeOrder: ["Bisharp", "Bisharp-Centurion", "Bisharp-Savage", "Bisharp-Ronin", "Bisharp-Mantis", "Bisharp-Revenant", "Bisharp-Assassin"],
+ },
+ bisharpcenturion: {
+ num: 625,
+ name: "Bisharp-Centurion",
+ baseSpecies: "Bisharp",
+ forme: "Centurion",
+ types: ["Fighting", "Steel"],
+ baseStats: { hp: 70, atk: 140, def: 115, spa: 55, spd: 70, spe: 70 },
+ abilities: { 0: "Overcoat", 1: "Technician", H: "Solar Power" },
+ heightm: 1.6,
+ weightkg: 70,
+ color: "Red",
+ prevo: '',
+ eggGroups: ["Human-Like"],
+ },
+ bisharpsavage: {
+ num: 625,
+ name: "Bisharp-Savage",
+ baseSpecies: "Bisharp",
+ forme: "Savage",
+ types: ["Grass", "Steel"],
+ baseStats: { hp: 90, atk: 110, def: 135, spa: 40, spd: 80, spe: 65 },
+ abilities: { 0: "Bulletproof", 1: "Technician", H: "Leaf Guard" },
+ heightm: 1.6,
+ weightkg: 70,
+ color: "Red",
+ prevo: '',
+ eggGroups: ["Human-Like"],
+ },
+ bisharpronin: {
+ num: 625,
+ name: "Bisharp-Ronin",
+ baseSpecies: "Bisharp",
+ forme: "Ronin",
+ types: ["Fighting", "Poison"],
+ baseStats: { hp: 70, atk: 115, def: 110, spa: 45, spd: 70, spe: 110 },
+ abilities: { 0: "Overcoat", 1: "Technician", H: "Dry Skin" },
+ heightm: 1.6,
+ weightkg: 70,
+ color: "Red",
+ prevo: '',
+ eggGroups: ["Human-Like"],
+ },
+ bisharpmantis: {
+ num: 625,
+ name: "Bisharp-Mantis",
+ baseSpecies: "Bisharp",
+ forme: "Mantis",
+ types: ["Dark", "Bug"],
+ baseStats: { hp: 80, atk: 120, def: 105, spa: 45, spd: 85, spe: 85 },
+ abilities: { 0: "Overcoat", 1: "Sharpness", H: "Orichalcum Pulse" },
+ heightm: 1.6,
+ weightkg: 70,
+ color: "Red",
+ prevo: '',
+ eggGroups: ["Human-Like"],
+ },
+ bisharprevenant: {
+ num: 625,
+ name: "Bisharp-Revenant",
+ baseSpecies: "Bisharp",
+ forme: "Revenant",
+ types: ["Ghost", "Steel"],
+ baseStats: { hp: 80, atk: 135, def: 120, spa: 45, spd: 70, spe: 70 },
+ abilities: { 0: "Magic Bounce", 1: "Mirror Armor", H: "Justified" },
+ heightm: 1.6,
+ weightkg: 70,
+ color: "Red",
+ prevo: '',
+ eggGroups: ["Human-Like"],
+ },
+ bisharpassassin: {
+ num: 625,
+ name: "Bisharp-Assassin",
+ baseSpecies: "Bisharp",
+ forme: "Assassin",
+ types: ["Fighting", "Ice"],
+ baseStats: { hp: 80, atk: 130, def: 110, spa: 55, spd: 70, spe: 75 },
+ abilities: { 0: "Dazzling", 1: "No Guard", H: "Slush Rush" },
+ heightm: 1.6,
+ weightkg: 70,
+ color: "Red",
+ prevo: '',
+ eggGroups: ["Human-Like"],
+ },
+ corviknight: {
+ inherit: true,
+ otherFormes: ["Corviknight-Thunderbird", "Corviknight-Genie", "Corviknight-Yeti", "Corviknight-Analytical", "Corviknight-Martian", "Corviknight-Falcon"],
+ formeOrder: ["Corviknight", "Corviknight-Thunderbird", "Corviknight-Genie", "Corviknight-Yeti", "Corviknight-Analytical", "Corviknight-Martian", "Corviknight-Falcon"],
+ },
+ corviknightthunderbird: {
+ num: 823,
+ name: "Corviknight-Thunderbird",
+ baseSpecies: "Corviknight",
+ forme: "Thunderbird",
+ types: ["Flying", "Electric"],
+ baseStats: { hp: 85, atk: 55, def: 105, spa: 115, spd: 85, spe: 85 },
+ abilities: { 0: "Pickpocket", 1: "Quick Feet", H: "Drizzle" },
+ heightm: 2.2,
+ weightkg: 75,
+ color: "Purple",
+ prevo: '',
+ eggGroups: ["Flying"],
+ },
+ corviknightgenie: {
+ num: 823,
+ name: "Corviknight-Genie",
+ baseSpecies: "Corviknight",
+ forme: "Genie",
+ types: ["Flying", "Ground"],
+ baseStats: { hp: 89, atk: 45, def: 95, spa: 120, spd: 90, spe: 91 },
+ abilities: { 0: "Intimidate", 1: "Sand Force", H: "Prankster" },
+ heightm: 2.2,
+ weightkg: 75,
+ color: "Purple",
+ prevo: '',
+ eggGroups: ["Flying"],
+ },
+ corviknightyeti: {
+ num: 823,
+ name: "Corviknight-Yeti",
+ baseSpecies: "Corviknight",
+ forme: "Yeti",
+ types: ["Flying", "Ice"],
+ baseStats: { hp: 85, atk: 55, def: 80, spa: 95, spd: 110, spe: 110 },
+ abilities: { 0: "Mummy", 1: "Quick Feet", H: "Snow Warning" },
+ heightm: 2.2,
+ weightkg: 75,
+ color: "Purple",
+ prevo: '',
+ eggGroups: ["Flying"],
+ },
+ corviknightanalytical: {
+ num: 823,
+ name: "Corviknight-Analytical",
+ baseSpecies: "Corviknight",
+ forme: "Analytical",
+ types: ["Psychic", "Electric"],
+ baseStats: { hp: 85, atk: 55, def: 80, spa: 110, spd: 85, spe: 115 },
+ abilities: { 0: "Pickpocket", 1: "Flare Boost", H: "Psychic Surge" },
+ heightm: 2.2,
+ weightkg: 75,
+ color: "Purple",
+ prevo: '',
+ eggGroups: ["Flying"],
+ },
+ corviknightmartian: {
+ num: 823,
+ name: "Corviknight-Martian",
+ baseSpecies: "Corviknight",
+ forme: "Martian",
+ types: ["Psychic", "Steel"],
+ baseStats: { hp: 95, atk: 45, def: 120, spa: 100, spd: 105, spe: 65 },
+ abilities: { 0: "Iron Barbs", 1: "Quick Feet", H: "Hadron Engine" },
+ heightm: 2.2,
+ weightkg: 75,
+ color: "Purple",
+ prevo: '',
+ eggGroups: ["Flying"],
+ },
+ corviknightfalcon: {
+ num: 823,
+ name: "Corviknight-Falcon",
+ baseSpecies: "Corviknight",
+ forme: "Falcon",
+ types: ["Flying", "Fighting"],
+ baseStats: { hp: 86, atk: 95, def: 75, spa: 75, spd: 85, spe: 114 },
+ abilities: { 0: "Pickpocket", 1: "Guts", H: "Delta Stream" },
+ heightm: 2.2,
+ weightkg: 75,
+ color: "Purple",
+ prevo: '',
+ eggGroups: ["Flying"],
+ },
+ krookodile: {
+ inherit: true,
+ otherFormes: ["Krookodile-Infernal", "Krookodile-Abyssal", "Krookodile-Wetlander", "Krookodile-Cave Dweller", "Krookodile-Cliffside", "Krookodile-Quantum"],
+ formeOrder: ["Krookodile", "Krookodile-Infernal", "Krookodile-Abyssal", "Krookodile-Wetlander", "Krookodile-Cave Dweller", "Krookodile-Cliffside", "Krookodile-Quantum"],
+ },
+ krookodileinfernal: {
+ num: 553,
+ name: "Krookodile-Infernal",
+ baseSpecies: "Krookodile",
+ forme: "Infernal",
+ types: ["Fire", "Dark"],
+ baseStats: { hp: 90, atk: 80, def: 85, spa: 105, spd: 90, spe: 100 },
+ abilities: { 0: "Magic Guard", 1: "Wonder Skin", H: "Sturdy" },
+ heightm: 1.5,
+ weightkg: 96.3,
+ color: "Red",
+ prevo: '',
+ eggGroups: ["Field"],
+ },
+ krookodileabyssal: {
+ num: 553,
+ name: "Krookodile-Abyssal",
+ baseSpecies: "Krookodile",
+ forme: "Abyssal",
+ types: ["Ground", "Dark"],
+ baseStats: { hp: 90, atk: 120, def: 85, spa: 75, spd: 90, spe: 90 },
+ abilities: { 0: "Rock Head", 1: "Wonder Skin", H: "Multiscale" },
+ heightm: 1.5,
+ weightkg: 96.3,
+ color: "Red",
+ prevo: '',
+ eggGroups: ["Field"],
+ },
+ krookodilewetlander: {
+ num: 553,
+ name: "Krookodile-Wetlander",
+ baseSpecies: "Krookodile",
+ forme: "Wetlander",
+ types: ["Grass", "Water"],
+ baseStats: { hp: 100, atk: 100, def: 75, spa: 85, spd: 110, spe: 80 },
+ abilities: { 0: "Rock Head", 1: "Wonder Skin", H: "Wind Rider" },
+ heightm: 1.5,
+ weightkg: 96.3,
+ color: "Red",
+ prevo: '',
+ eggGroups: ["Field"],
+ },
+ krookodilecavedweller: {
+ num: 553,
+ name: "Krookodile-Cave Dweller",
+ baseSpecies: "Krookodile",
+ forme: "Cave Dweller",
+ types: ["Fire", "Rock"],
+ baseStats: { hp: 80, atk: 110, def: 75, spa: 85, spd: 80, spe: 120 },
+ abilities: { 0: "Magic Guard", 1: "Wonder Skin", H: "Sturdy" },
+ heightm: 1.5,
+ weightkg: 96.3,
+ color: "Red",
+ prevo: '',
+ eggGroups: ["Field"],
+ },
+ krookodilecliffside: {
+ num: 553,
+ name: "Krookodile-Cliffside",
+ baseSpecies: "Krookodile",
+ forme: "Cliffside",
+ types: ["Dragon", "Dark"],
+ baseStats: { hp: 90, atk: 70, def: 85, spa: 115, spd: 80, spe: 110 },
+ abilities: { 0: "Intimidate", 1: "Merciless", H: "Mold Breaker" },
+ heightm: 1.5,
+ weightkg: 96.3,
+ color: "Red",
+ prevo: '',
+ eggGroups: ["Field"],
+ },
+ krookodilequantum: {
+ num: 553,
+ name: "Krookodile-Quantum",
+ baseSpecies: "Krookodile",
+ forme: "Quantum",
+ types: ["Electric", "Rock"],
+ baseStats: { hp: 95, atk: 100, def: 85, spa: 85, spd: 85, spe: 100 },
+ abilities: { 0: "Rock Head", 1: "Prankster", H: "Sturdy" },
+ heightm: 1.5,
+ weightkg: 96.3,
+ color: "Red",
+ prevo: '',
+ eggGroups: ["Field"],
+ },
+ ogerpon: {
+ inherit: true,
+ otherFormes: ["Ogerpon-Muerta", "Ogerpon-Easter", "Ogerpon-Ankh", "Ogerpon-Eid", "Ogerpon-Vessel", "Ogerpon-Kitsune"],
+ formeOrder: ["Ogerpon", "Ogerpon-Muerta", "Ogerpon-Easter", "Ogerpon-Ankh", "Ogerpon-Eid", "Ogerpon-Vessel", "Ogerpon-Kitsune"],
+ },
+ ogerponmuerta: {
+ num: 1017,
+ name: "Ogerpon-Muerta",
+ baseSpecies: "Ogerpon",
+ forme: "Muerta",
+ types: ["Fairy", "Ghost"],
+ gender: "F",
+ baseStats: { hp: 90, atk: 120, def: 70, spa: 100, spd: 90, spe: 130 },
+ abilities: { 0: "Wandering Spirit" },
+ heightm: 1.2,
+ weightkg: 39.8,
+ color: "Green",
+ eggGroups: ["Undiscovered"],
+ },
+ ogerponeaster: {
+ num: 1017,
+ name: "Ogerpon-Easter",
+ baseSpecies: "Ogerpon",
+ forme: "Easter",
+ types: ["Fairy", "Normal"],
+ gender: "F",
+ baseStats: { hp: 105, atk: 95, def: 95, spa: 110, spd: 80, spe: 115 },
+ abilities: { 0: "Pickpocket" },
+ heightm: 1.2,
+ weightkg: 39.8,
+ color: "Green",
+ eggGroups: ["Undiscovered"],
+ },
+ ogerponankh: {
+ num: 1017,
+ name: "Ogerpon-Ankh",
+ baseSpecies: "Ogerpon",
+ forme: "Ankh",
+ types: ["Ghost"],
+ gender: "F",
+ baseStats: { hp: 85, atk: 130, def: 70, spa: 130, spd: 90, spe: 95 },
+ abilities: { 0: "Mummy", H: "Good as Gold" },
+ heightm: 1.2,
+ weightkg: 39.8,
+ color: "Green",
+ eggGroups: ["Undiscovered"],
+ },
+ ogerponeid: {
+ num: 1017,
+ name: "Ogerpon-Eid",
+ baseSpecies: "Ogerpon",
+ forme: "Eid",
+ types: ["Water", "Ghost"],
+ gender: "F",
+ baseStats: { hp: 95, atk: 98, def: 100, spa: 105, spd: 110, spe: 92 },
+ abilities: { 0: "Tangling Hair" },
+ heightm: 1.2,
+ weightkg: 39.8,
+ color: "Green",
+ eggGroups: ["Undiscovered"],
+ },
+ ogerponvessel: {
+ num: 1017,
+ name: "Ogerpon-Vessel",
+ baseSpecies: "Ogerpon",
+ forme: "Vessel",
+ types: ["Bug", "Fighting"],
+ gender: "F",
+ baseStats: { hp: 95, atk: 115, def: 80, spa: 80, spd: 80, spe: 150 },
+ abilities: { 0: "Trace" },
+ heightm: 1.2,
+ weightkg: 39.8,
+ color: "Green",
+ eggGroups: ["Undiscovered"],
+ },
+ ogerponkitsune: {
+ num: 1017,
+ name: "Ogerpon-Kitsune",
+ baseSpecies: "Ogerpon",
+ forme: "Kitsune",
+ types: ["Fairy"],
+ gender: "F",
+ baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },
+ abilities: { 0: "Protean" },
+ heightm: 1.2,
+ weightkg: 39.8,
+ color: "Green",
+ eggGroups: ["Undiscovered"],
+ },
+};
diff --git a/data/mods/sixbysix/rulesets.ts b/data/mods/sixbysix/rulesets.ts
new file mode 100644
index 0000000000..6b2be5e210
--- /dev/null
+++ b/data/mods/sixbysix/rulesets.ts
@@ -0,0 +1,17 @@
+export const Rulesets: import('../../../sim/dex-formats').ModdedFormatDataTable = {
+ spriteviewer: {
+ effectType: 'ValidatorRule',
+ name: 'Sprite Viewer',
+ desc: "Displays a fakemon's sprite in chat when it is switched in for the first time",
+ onBegin() {
+ this.add('rule', 'Sprite Viewer: Displays sprites in chat');
+ },
+ onSwitchIn(pokemon) {
+ if (!this.effectState[pokemon.species.id]) {
+ this.add('-message', `${pokemon.species.name}'s Sprite:`);
+ this.add(`raw|
`);
+ this.effectState[pokemon.species.id] = true;
+ }
+ },
+ },
+};
diff --git a/data/mods/scootopiav2/scripts.ts b/data/mods/sixbysix/scripts.ts
similarity index 95%
rename from data/mods/scootopiav2/scripts.ts
rename to data/mods/sixbysix/scripts.ts
index 49611260ed..4346dd0db2 100644
--- a/data/mods/scootopiav2/scripts.ts
+++ b/data/mods/sixbysix/scripts.ts
@@ -1,3 +1,3 @@
-export const Scripts: ModdedBattleScriptsData = {
- gen: 9,
-};
+export const Scripts: ModdedBattleScriptsData = {
+ gen: 9,
+};
diff --git a/data/random-battles/scootopiav2/random-sets.json b/data/random-battles/scootopiav2/random-sets.json
deleted file mode 100644
index 1812a60a0b..0000000000
--- a/data/random-battles/scootopiav2/random-sets.json
+++ /dev/null
@@ -1,856 +0,0 @@
-{
- "albatrygon": {
- "level": 100,
- "sets": [
- {
- "role": "Fast Support",
- "movepool": ["Sticky Web", "Taunt", "Encore", "Brave Bird", "Memento", "Parting Shot"],
- "abilities": ["Prankster"]
- },
- {
- "role": "Setup Sweeper",
- "movepool": ["Tidy Up", "Brave Bird", "Drill Peck", "Feral Rush", "Feral Bite", "Sacred Sword"],
- "abilities": ["Prankster"]
- }
- ]
- },
- "aurorowl": {
- "level": 100,
- "sets": [
- {
- "role": "Setup Sweeper",
- "movepool": ["Frost Breath", "Air Cutter", "Focus Blast", "Nasty Plot"],
- "abilities": ["Technician"]
- }
- ]
- },
- "arbrella": {
- "level": 100,
- "sets": [
- {
- "role": "Wallbreaker",
- "movepool": ["Earthquake", "Wood Hammer", "Swords Dance", "Synthesis", "Stone Edge", "Superpower"],
- "abilities": ["Tough Claws"]
- },
- {
- "role": "Choice Scarf",
- "movepool": ["Earthquake", "Wood Hammer", "Stone Edge", "Superpower"],
- "abilities": ["Tough Claws"]
- }
- ]
- },
- "avastar": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Thunder Wave", "Heavy Slam", "Psychic", "Recover", "Teleport"],
- "abilities": ["Shell Bunker"]
- },
- {
- "role": "Setup Sweeper",
- "movepool": ["Calm Mind", "Psychic", "Flash Cannon", "Recover", "Thunderbolt"],
- "abilities": ["Shell Bunker"]
- }
- ]
- },
- "axolacred": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Stealth Rock", "Dragon Tail", "Roost", "Core Enforcer", "Scald", "Defog", "Shed Tail"],
- "abilities": ["Magic Guard"]
- },
- {
- "role": "Bulky Attacker",
- "movepool": ["Feral Rush", "Core Enforcer", "Flip Turn", "Recover"],
- "abilities": ["Magic Guard"]
- }
- ]
- },
- "barracoth": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Sheer Cold", "Flip Turn", "Triple Axel", "Slack Off"],
- "abilities": ["Multiscale", "Filter"]
- }
- ]
- },
- "blunderbusk": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Attacker",
- "movepool": ["Hydro Pump", "Aura Sphere", "Ice Beam", "Dark Pulse", "Dragon Pulse"],
- "abilities": ["Mega Launcher"]
- }
- ]
- },
- "brawnkey": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Stealth Rock", "Drain Punch", "Iron Head", "Chilly Reception", "Spikes"],
- "abilities": ["Levitate"]
- },
- {
- "role": "Setup Sweeper",
- "movepool": ["Iron Defense", "Body Press", "Iron Head", "Stealth Rock"],
- "abilities": ["Levitate"]
- },
- {
- "role": "Setup Sweeper",
- "movepool": ["Bulk Up", "Drain Punch", "Iron Head", "Stealth Rock"],
- "abilities": ["Levitate"]
- }
- ]
- },
- "carapex": {
- "level": 100,
- "sets": [
- {
- "role": "Setup Sweeper",
- "movepool": ["Tailwind", "Acrobatics", "Earthquake", "Stone Edge"],
- "abilities": ["Wind Rider"]
- },
- {
- "role": "Bulky Support",
- "movepool": ["Stealth Rock", "Roost", "Body Press", "Knock Off", "Crystal Bash", "U-Turn"],
- "abilities": ["Wind Rider"]
- }
- ]
- },
- "celespirit": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Sheer Cold", "Moonlight", "Hex", "Ice Beam", "Moonblast"],
- "abilities": ["Levitate"]
- },
- {
- "role": "Setup Sweeper",
- "movepool": ["Calm Mind", "Crystal Burst", "Shadow Ball", "Moonlight"],
- "abilities": ["Levitate"]
- }
- ]
- },
- "cellsius": {
- "level": 100,
- "sets": [
- {
- "role": "Setup Sweeper",
- "movepool": ["Calm Mind", "Hydro Pump", "Moonblast", "Ice Beam", "Psychic"],
- "abilities": ["Beast Boost"]
- },
- {
- "role": "Fast Attacker",
- "movepool": ["Hydro Pump", "Moonblast", "Ice Beam", "Flip Turn", "Psychic"],
- "abilities": ["Beast Boost"]
- }
- ]
- },
- "cindoe": {
- "level": 100,
- "sets": [
- {
- "role": "Fast Support",
- "movepool": ["Overheat", "Fiery Wrath", "Parting Shot", "Morning Sun"],
- "abilities": ["Natural Cure"]
- },
- {
- "role": "Setup Sweeper",
- "movepool": ["Nasty Plot", "Fiery Wrath", "Fire Blast", "Morning Sun"],
- "abilities": ["Natural Cure"]
- },
- {
- "role": "Setup Sweeper",
-
- "movepool": ["Nasty Plot", "Fiery Wrath", "Crystal Burst", "Morning Sun"],
- "abilities": ["Natural Cure"]
- }
- ]
- },
- "cinnastar": {
- "level": 100,
- "sets": [
- {
- "role": "AV Pivot",
- "movepool": ["Sludge Bomb", "Earth Power", "Focus Blast", "Mortal Spin"],
- "abilities": ["Regenerator"]
- },
- {
- "role": "Bulky Support",
- "movepool": ["Earth Power", "Mortal Spin", "Recover", "Stealth Rock", "Power Gem"],
- "abilities": ["Regenerator"]
- }
- ]
- },
- "cobracotta": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Poison Fang", "Leech Seed", "Knock Off", "Synthesis", "Stealth Rock", "Power Whip"],
- "abilities": ["Heatproof"]
- }
- ]
- },
- "corundell": {
- "level": 100,
- "sets": [
- {
- "role": "Fast Attacker",
- "movepool": ["Meteor Beam", "Power Gem", "Overheat", "Earth Power", "Volt Switch", "Energy Ball"],
- "abilities": ["Lightning Rod"]
- }
- ]
- },
- "crossont": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Spikes", "Recover", "Knock Off", "Circle Throw"],
- "abilities": ["Mold Breaker", "Sniper"]
- },
- {
- "role": "Bulky Attacker",
-
- "movepool": ["Crystal Cutter", "Close Combat", "Bulk Up", "Substitute"],
- "abilities": ["Sniper"]
- }
- ]
- },
- "cyllindrake": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Body Press", "Rapid Spin", "Morning Sun", "Stealth Rock", "Boomburst"],
- "abilities": ["Scrappy"]
- },
- {
- "role": "Fast Support",
- "movepool": ["Stealth Rock", "Rapid Spin", "Steel Beam", "Fire Blast"],
- "abilities": ["Scrappy"]
- },
- {
- "role": "Fast Attacker",
-
- "movepool": ["Feral Shriek", "Flash Cannon", "Earth Power", "Feral Spray", "Rapid Spin"],
- "abilities": ["Punk Rock"]
- }
- ]
- },
- "dojodo": {
- "level": 100,
- "sets": [
- {
- "role": "Setup Sweeper",
- "movepool": ["Bulk Up", "Drain Punch", "Jet Punch", "Knock Off", "Substitute"],
- "abilities": ["Supreme Overlord"]
- },
- {
- "role": "Setup Sweeper",
-
- "movepool": ["Bulk Up", "Drain Punch", "Crystal Bash", "Jet Punch", "Crystal Healing"],
- "abilities": ["Supreme Overlord"]
- }
- ]
- },
- "dolphena": {
- "level": 100,
- "sets": [
- {
- "role": "Setup Sweeper",
- "movepool": ["Coil", "Scale Shot", "Iron Tail", "Liquidation"],
- "abilities": ["Mythical Presence"]
- },
- {
- "role": "Setup Sweeper",
- "movepool": ["Dragon Dance", "Scale Shot", "Liquidation", "Iron Head", "Substitute"],
- "abilities": ["Mythical Presence"]
- },
- {
- "role": "Setup Sweeper",
- "movepool": ["Coil", "Scale Shot", "Iron Tail", "Liquidation"],
-
- "abilities": ["Mythical Presence"]
- },
- {
- "role": "Bulky Support",
- "movepool": ["Defog", "Flip Turn", "Moonlight", "Dragon Tail"],
- "abilities": ["Mythical Presence"]
- }
- ]
- },
- "dracoil": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Defog", "Roost", "U-Turn", "Hurricane", "Fire Blast", "Glare", "Draco Meteor", "Earthquake"],
- "abilities": ["Mythical Presence"]
- },
- {
- "role": "Setup Sweeper",
- "movepool": ["Dragon Dance", "Acrobatics", "Substitute", "Earthquake"],
- "abilities": ["Gluttony"]
- },
- {
- "role": "Setup Sweeper",
- "movepool": ["Dragon Dance", "Dragon Rush", "Coil", "Earthquake", "Dual Wingbeat"],
- "abilities": ["Mythical Presence"]
- },
- {
- "role": "Bulky Support",
- "movepool": ["Feral Bite", "Dragon Tail", "Roost", "Glare", "Defog"],
- "abilities": ["Mythical Presence"]
- }
- ]
- },
- "efflor": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Giga Drain", "Leech Seed", "Rapid Spin", "Stealth Rock", "Chilly Reception"],
- "abilities": ["Seed Sower"]
- },
- {
- "role": "Bulky Setup",
- "movepool": ["Curse", "Stone Edge", "Body Press", "Synthesis"],
- "abilities": ["Unaware"]
- }
- ]
- },
- "electangle": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Gyro Ball", "Stealth Rock", "Body Press", "Volt Switch", "Discharge"],
- "abilities": ["Filter"]
- }
- ]
- },
- "elemadillo": {
- "level": 100,
- "sets": [
- {
- "role": "Fast Attacker",
- "movepool": ["Flash Cannon", "Thunderbolt", "Volt Switch", "Energy Ball"],
- "abilities": ["Motor Drive", "Weak Armor"]
- },
- {
- "role": "Fast Attacker",
-
- "movepool": ["Feral Power", "Flash Cannon", "Earth Power", "Feral Resilience"],
- "abilities": ["Motor Drive", "Weak Armor"]
- }
- ]
- },
- "embuck": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Blaze Kick", "Will-o-Wisp", "Morning Sun", "U-Turn", "Close Combat"],
- "abilities": ["Intimidate"]
- },
- {
- "role": "Bulky Support",
-
- "movepool": ["Blaze Kick", "Crystal Bash", "Will-o-Wisp", "Morning Sun", "U-Turn"],
- "abilities": ["Intimidate"]
- },
- {
- "role": "Fast Attacker",
- "movepool": ["Flare Blitz", "Wild Charge", "U-Turn", "Close Combat"],
- "abilities": ["Intimidate"]
- }
- ]
- },
- "faerenheit": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Setup",
- "movepool": ["Calm Mind", "Lava Plume", "Moonblast", "Morning Sun"],
- "abilities": ["Beast Boost"]
- },
- {
- "role": "Bulky Setup",
-
- "movepool": ["Calm Mind", "Lava Plume", "Crystal Cage", "Morning Sun"],
- "abilities": ["Beast Boost"]
- }
- ]
- },
- "fenreil": {
- "level": 100,
- "sets": [
- {
- "role": "Fast Attacker",
- "movepool": ["Double Edge", "Knock Off", "Superpower", "U-Turn"],
- "abilities": ["Natural Cure"]
- },
- {
- "role": "Fast Attacker",
-
- "movepool": ["Feral Bite", "Knock Off", "Iron Head", "Feral Shred"],
- "abilities": ["Natural Cure"]
- }
- ]
- },
- "flocura": {
- "level": 100,
- "sets": [
- {
- "role": "Fast Support",
- "movepool": ["Stealth Rock", "Thunder Wave", "U-Turn", "Leaf Storm"],
- "abilities": ["Power Construct"]
- },
- {
- "role": "Setup Sweeper",
- "movepool": ["Nasty Plot", "Giga Drain", "Psychic", "Earth Power"],
- "abilities": ["Levitate"]
- },
- {
- "role": "Setup Sweeper",
-
- "movepool": ["Nasty Plot", "Giga Drain", "Feral Power", "Earth Power"],
- "abilities": ["Levitate"]
- },
- {
- "role": "Fast Attacker",
- "movepool": ["Leaf Storm", "U-Turn", "Psychic", "Earth Power"],
- "abilities": ["Levitate"]
- },
- {
- "role": "Bulky Support",
- "movepool": ["Leech Seed", "U-Turn", "Thunder Wave", "Psychic", "Giga Drain", "Stealth Rock"],
- "abilities": ["Power Construct"]
- }
- ]
- },
- "harzodia": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Light Screen", "Reflect", "Teleport", "Thunder Wave", "Psychic"],
- "abilities": ["Prankster"]
- },
- {
- "role": "Setup Sweeper",
- "movepool": ["Meteor Beam", "Psychic", "Shadow Ball", "Calm Mind", "Focus Blast"],
- "abilities": ["Unburden"]
- }
- ]
- },
- "jaegorm": {
- "level": 100,
- "sets": [
- {
- "role": "Fast Attacker",
- "movepool": ["First Impression", "U-Turn", "Photon Ray", "Knock Off", "Superpower", "Earthquake"],
- "abilities": ["Schooling"]
- }
- ]
- },
- "jamborai": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Mortal Spin", "Recover", "Pyschic", "Scald", "Teleport"],
- "abilities": ["Water Absorb"]
- },
- {
- "role": "Bulky Setup",
- "movepool": ["Calm Mind", "Recover", "Pyschic", "Scald", "Sludge Bomb", "Stored Power"],
- "abilities": ["Water Absorb"]
- },
- {
- "role": "Bulky Support",
-
- "movepool": ["Mortal Spin", "Recover", "Crystal Cage", "Crystal Healing", "Teleport"],
- "abilities": ["Gooey"]
- },
- {
- "role": "Bulky Setup",
-
- "movepool": ["Crystal Fortification", "Recover", "Stored Power", "Crystal Beam"],
- "abilities": ["Gooey"]
- }
- ]
- },
- "kodokai": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
-
- "movepool": ["Crystal Cage", "Hex", "Will-o-Wisp", "Moonlight"],
- "abilities": ["Aroma Veil"]
- },
- {
- "role": "Bulky Support",
- "movepool": ["Wish", "Hex", "Will-o-Wisp", "Moonlight"],
- "abilities": ["Aroma Veil"]
- }
- ]
- },
- "krachiten": {
- "level": 100,
- "sets": [
- {
- "role": "Fast Attacker",
- "movepool": ["First Impression", "U-Turn", "Liquidation", "Rapid Spin"],
- "abilities": ["Torrent"]
- },
- {
- "role": "Fast Attacker",
-
- "movepool": ["Crystal Cutter", "U-Turn", "Aqua Cutter", "Superpower", "Rapid Spin"],
- "abilities": ["Sniper"]
- }
- ]
- },
- "lumoth": {
- "level": 100,
- "sets": [
- {
- "role": "Setup Sweeper",
- "movepool": ["Quiver Dance", "Hex", "Sleep Powder", "Bug Buzz"],
- "abilities": ["Levitate"]
- }
- ]
- },
- "minillow": {
- "level": 100,
- "sets": [
- {
- "role": "Setup Sweeper",
- "movepool": ["Nasty Plot", "Agility", "Hydro Pump", "Moonblast", "Substitute"],
- "abilities": ["Adaptability"]
- }
- ]
- },
- "muabboa": {
- "level": 100,
- "sets": [
- {
- "role": "Fast Attacker",
- "movepool": ["Earthquake", "U-Turn", "Close Combat", "Knock Off"],
- "abilities": ["Inner Focus"]
- },
- {
- "role": "Setup Sweeper",
-
- "movepool": ["Swords Dance", "Earthquake", "Feral Rush", "Close Combat"],
- "abilities": ["Inner Focus"]
- }
- ]
- },
- "noxtrice": {
- "level": 100,
- "sets": [
- {
- "role": "Fast Support",
- "movepool": ["Poison Jab", "Flare Blitz", "Roost", "U-Turn"],
- "abilities": ["Poison Touch"]
- },
- {
- "role": "Setup Sweeper",
- "movepool": ["Gunk Shot", "Flare Blitz", "Earthquake", "Dragon Dance"],
- "abilities": ["Poison Touch"]
- },
- {
- "role": "Setup Sweeper",
- "movepool": ["Gunk Shot", "Feral Rush", "Earthquake", "Dragon Dance"],
- "abilities": ["Flash Fire"]
- }
- ]
- },
- "nunopod": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Earthquake", "Body Press", "Triple Axel", "Flip Turn", "Stealth Rock", "Rapid Spin", "Recover"],
- "abilities": ["Opportunist"]
- },
- {
- "role": "Bulky Support",
-
- "movepool": ["Crystal Bash", "Body Press", "Earthquake", "Flip Turn", "Stealth Rock", "Rapid Spin", "Recover"],
- "abilities": ["Opportunist"]
- }
- ]
- },
- "orchile": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Moonblast", "Earth Power", "Will-o-Wisp", "Strength Sap", "Spikes"],
- "abilities": ["Flower Veil"]
- },
- {
- "role": "Bulky Setup",
- "movepool": ["Moonblast", "Earth Power", "Calm Mind", "Strength Sap"],
- "abilities": ["Flower Veil"]
- }
- ]
- },
- "platypad": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Revival Blessing", "Wave Crash", "Flip Turn", "Synthesis"],
- "abilities": ["Flower Veil"]
- },
- {
- "role": "Bulky Setup",
-
- "movepool": ["Feral Resilience", "Feral Breath", "Giga Drain", "Synthesis"],
- "abilities": ["Triage"]
- }
- ]
- },
- "pythos": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Setup",
- "movepool": ["Coil", "Knock Off", "Iron Tail", "Sucker Punch", "Superpower", "Facade"],
- "abilities": ["Guts"]
- }
- ]
- },
- "quadringo": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Defog", "Roost", "Dragon Tail", "Earthquake", "Moonblast"],
- "abilities": ["Pastel Veil"]
- },
- {
- "role": "Bulky Setup",
- "movepool": ["Calm Mind", "Moonblast", "Mystical Fire", "Roost"],
- "abilities": ["Pastel Veil"]
- },
- {
- "role": "Fast Attacker",
- "movepool": ["Moonblast", "Draco Meteor", "Mystical Fire", "Earthquake"],
- "abilities": ["Pastel Veil"]
- },
- {
- "role": "Fast Attacker",
-
- "movepool": ["Feral Rush", "Earthquake", "Feral Shred", "Roost"],
- "abilities": ["Pastel Veil"]
- }
- ]
- },
- "rantler": {
- "level": 100,
- "sets": [
- {
- "role": "Fast Attacker",
- "movepool": ["Double Edge", "Ice Spinner", "Superpower", "Earthquake"],
- "abilities": ["Slush Rush"]
- },
- {
- "role": "Setup Sweeper",
- "movepool": ["Swords Dance", "Double Edge", "Ice Spinner", "Superpower", "Earthquake", "Quick Attack"],
- "abilities": ["Slush Rush"]
- },
- {
- "role": "Fast Attacker",
- "movepool": ["Double Edge", "Ice Spinner", "Superpower", "Quick Attack", "Fake Out"],
- "abilities": ["Tough Claws"]
- }
- ]
- },
- "roscenti": {
- "level": 100,
- "sets": [
- {
- "role": "Fast Attacker",
- "movepool": ["First Impression", "U-Turn", "Superpower", "Rock Blast", "Bullet Seed"],
- "abilities": ["Skill Link"]
- },
- {
- "role": "Fast Attacker",
-
- "movepool": ["First Impression", "U-Turn", "Feral Rush", "Drill Run", "Iron Tail"],
- "abilities": ["Sheer Force"]
- },
- {
- "role": "Fast Attacker",
-
- "movepool": ["First Impression", "U-Turn", "Crystal Tail", "Superpower", "Rock Slide"],
- "abilities": ["Sheer Force"]
- }
- ]
- },
- "salamalix": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Stealth Rock", "Spikes", "Stone Edge", "Close Combat", "Iron Head"],
- "abilities": ["Intimidate"]
- },
- {
- "role": "Bulky Setup",
- "movepool": ["Swords Dance", "Iron Head", "Close Combat", "Accelerock"],
- "abilities": ["Intimidate"]
- }
- ]
- },
- "salaos": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Toxic", "Recover", "Fiery Wrath", "Scald", "Flamethrower", "Toxic Spikes"],
- "abilities": ["Good as Gold"]
- },
- {
- "role": "Bulky Support",
-
- "movepool": ["Toxic", "Recover", "Crystal Cage", "Flamethrower", "Toxic Spikes"],
- "abilities": ["Good as Gold"]
- }
- ]
- },
- "saphor": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Stealth Rock", "Earthquake", "Body Slam", "Slack Off", "Roar", "Heal Bell"],
- "abilities": ["Thick Fat"]
- },
- {
- "role": "Bulky Support",
-
- "movepool": ["Stealth Rock", "Crystal Tail", "Crystal Shard", "Slack Off", "Roar", "Crystal Healing"],
- "abilities": ["Thick Fat"]
- },
- {
- "role": "Bulky Setup",
-
- "movepool": ["Bulk Up", "Crystal Cutter", "Slack Off", "Body Press"],
- "abilities": ["Thick Fat"]
- },
- {
- "role": "Bulky Setup",
-
- "movepool": ["Calm Mind", "Crystal Cage", "Slack Off", "Focus Blast"],
- "abilities": ["Thick Fat"]
- },
- {
- "role": "Fast Attacker",
- "movepool": ["Headlong Rush", "Double Edge", "Heavy Slam", "Superpower", "Stone Edge"],
- "abilities": ["Thick Fat"]
- }
- ]
- },
- "scalaron": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Flamethrower", "Hurricane", "Roost", "U-Turn", "Defog", "Toxic", "Will-o-Wisp"],
- "abilities": ["Filter"]
- },
- {
- "role": "Bulky Support",
-
- "movepool": ["Flamethrower", "Crystal Cage", "Roost", "U-Turn", "Defog", "Will-o-Wisp", "Crystal Shard"],
- "abilities": ["Filter"]
- }
- ]
- },
- "soleron": {
- "level": 100,
- "sets": [
- {
- "role": "Fast Attacker",
- "movepool": ["Thunderbolt", "Hurricane", "Heat Wave", "U-Turn", "Air Slash", "Volt Switch", "Roost"],
- "abilities": ["Battle Bond"]
- },
- {
- "role": "Fast Attacker",
- "movepool": ["Thunderbolt", "Feral Power", "Feral Spray", "Volt Switch", "Roost"],
-
- "abilities": ["Battle Bond"]
- },
- {
- "role": "Fast Attacker",
- "movepool": ["Thunderbolt", "Crystal Burst", "Heat Wave", "Volt Switch", "Hurricane"],
-
- "abilities": ["Battle Bond"]
- }
- ]
- },
- "torgeist": {
- "level": 100,
- "sets": [
- {
- "role": "Fast Attacker",
- "movepool": ["Toxic Thread", "Hex", "Hurricane", "Heat Wave", "Pain Split", "Taunt"],
- "abilities": ["Merciless"]
- },
- {
- "role": "Fast Attacker",
-
- "movepool": ["Toxic Thread", "Hex", "Feral Power", "Pain Split", "Taunt", "Nasty Plot"],
- "abilities": ["Merciless"]
- },
- {
- "role": "Setup Sweeper",
-
- "movepool": ["Will-o-Wisp", "Hex", "Feral Power", "Nasty Plot"],
- "abilities": ["Cursed Body"]
- }
- ]
- },
- "woolora": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Setup",
- "movepool": ["Calm Mind", "Cotton Guard", "Stored Power", "Draining Kiss"],
- "abilities": ["Fluffy", "Pastel Veil"]
- },
- {
- "role": "Bulky Setup",
- "movepool": ["Calm Mind", "Moonlight", "Stored Power", "Moonblast"],
- "abilities": ["Fluffy"]
- }
- ]
- },
- "zeploom": {
- "level": 100,
- "sets": [
- {
- "role": "Bulky Support",
- "movepool": ["Energy Siphon", "Synthesis", "Stealth Rock", "U-Turn", "Defog", "Toxic", "Earth Power"],
- "abilities": ["Wind Rider"]
- }
- ]
- }
-}
diff --git a/data/random-battles/sixbysix/random-sets.json b/data/random-battles/sixbysix/random-sets.json
new file mode 100644
index 0000000000..fe3959a1d6
--- /dev/null
+++ b/data/random-battles/sixbysix/random-sets.json
@@ -0,0 +1,557 @@
+{
+ "kingdraancient": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Bulky Setup",
+ "movepool": ["Fire Blast", "Agility", "Energy Ball", "Hydro Pump"],
+ "abilities": ["Protosynthesis"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["Giga Drain", "Fire Blast", "Flip Turn", "Synthesis"],
+ "abilities": ["Competitive"]
+ }
+ ]
+ },
+ "kingdrabard": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["Hydro Pump", "Agility", "Psychic Noise", "Alluring Voice"],
+ "abilities": ["Punk Rock"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["Hydro Pump", "Flip Turn", "Psychic Noise", "Alluring Voice"],
+ "abilities": ["Punk Rock"]
+ }
+ ]
+ },
+ "kingdrabrinepool": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["Scald", "Protect", "Knock Off", "Mortal Spin"],
+ "abilities": ["Purifying Salt"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["Hydro Pump", "Water Shuriken", "Sludge Wave", "Flip Turn"],
+ "abilities": ["Purifying Salt", "Storm Drain"]
+ }
+ ]
+ },
+ "kingdraclassic": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["Hydro Pump", "Draco Meteor", "Agility", "Ice Beam"],
+ "abilities": ["Berserk"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["Hydro Pump", "Draco Meteor", "Flip Turn", "Ice Beam"],
+ "abilities": ["Berserk"]
+ }
+ ]
+ },
+ "kingdradruid": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["Tachyon Cutter", "Draco Meteor", "Flamethrower", "Ice Beam"],
+ "abilities": ["Berserk"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["Tachyon Cutter", "Protect", "Flamethrower", "Calm Mind"],
+ "abilities": ["Berserk"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["Doom Desire", "Parting Shot", "Draco Meteor", "Protect"],
+ "abilities": ["Berserk", "Heatproof"]
+ }
+ ]
+ },
+ "kingdragourmet": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["Facade", "Baneful Bunker", "Knock Off", "Toxic"],
+ "abilities": ["Poison Heal"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["Facade", "Fake Out", "Knock Off", "Flip Turn"],
+ "abilities": ["Poison Heal"]
+ }
+ ]
+ },
+ "nidoqueenclassic": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["Barb Barrage", "Earthquake", "Spikes", "Slack Off"],
+ "abilities": ["Poison Point"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["Poison Jab", "Earthquake", "Ice Punch", "Slack Off"],
+ "abilities": ["Sheer Force"]
+ }
+ ]
+ },
+ "nidoqueenerudite": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["Calm Mind", "Earth Power", "Psychic", "Slack Off"],
+ "abilities": ["Sheer Force"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["Trick Room", "Earth Power", "Psychic", "Ice Beam"],
+ "abilities": ["Sheer Force"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["Future Sight", "Earth Power", "Roar", "Chilly Reception"],
+ "abilities": ["Regenerator"]
+ }
+ ]
+ },
+ "nidoqueenjasper": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["Salt Cure", "Earthquake", "Protect", "Glare"],
+ "abilities": ["Earth Eater"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["Accelerock", "Earthquake", "Gunk Rock", "Stone Edge"],
+ "abilities": ["Earth Eater"]
+ }
+ ]
+ },
+ "nidoqueenrosegold": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["Slack Off", "Giga Drain", "Earth Power", "Toxic Spikes"],
+ "abilities": ["Rough Skin"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["Spiky Shield", "Earth Power", "Sludge Bomb", "Leech Seed"],
+ "abilities": ["Rough Skin"]
+ }
+ ]
+ },
+ "nidoqueenshaman": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["Poltergeist", "Poison Jab", "Superpower", "Shadow Sneak"],
+ "abilities": ["Toxic Chain"]
+ },
+ {
+ "role": "AV Pivot",
+ "movepool": ["Poltergeist", "Poison Jab", "Earthquake", "Shadow Sneak"],
+ "abilities": ["Regenerator"]
+ }
+ ]
+ },
+ "nidoqueenvolcanic": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["Protect", "Lava Plume", "Earth Power", "Wish"],
+ "abilities": ["Flame Body"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["Thunderbolt", "Fire Blast", "Earth Power", "Ice Beam"],
+ "abilities": ["Sheer Force"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["Protect", "Fire Blast", "Earth Power", "Wish"],
+ "abilities": ["Sheer Force"]
+ }
+ ]
+ },
+ "bisharpassassin": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["Triple Axel", "Dynamic Punch", "Parting Shot", "Ice Shard"],
+ "abilities": ["No Guard"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["Triple Axel", "Dynamic Punch", "Curse", "Ice Shard"],
+ "abilities": ["No Guard"]
+ }
+ ]
+ },
+ "bisharpcenturion": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["Bullet Punch", "Superpower", "Switcheroo", "Iron Head"],
+ "abilities": ["Technician"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["Bullet Punch", "Drain Punch", "Bulk Up", "Iron Head"],
+ "abilities": ["Technician"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["Bullet Punch", "Drain Punch", "Swords Dance", "Iron Head"],
+ "abilities": ["Technician"]
+ }
+ ]
+ },
+ "bisharpmantis": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["Ceaseless Edge", "Leech Life", "First Impression", "Bitter Blade"],
+ "abilities": ["Orichalcum Pulse"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["Sucker Punch", "Leech Life", "Swords Dance", "Bitter Blade"],
+ "abilities": ["Orichalcum Pulse"]
+ }
+ ]
+ },
+ "bisharprevenant": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["Recover", "Shadow Sneak", "Sacred Sword", "Poltergeist"],
+ "abilities": ["Magic Bounce"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["Recover", "Shadow Sneak", "Swords Dance", "Behemoth Blade"],
+ "abilities": ["Magic Bounce"]
+ }
+ ]
+ },
+ "bisharpronin": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["Barb Barrage", "U-turn", "Sacred Sword", "Stealth Rock"],
+ "abilities": ["Technician"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["Barb Barrage", "U-turn", "Sacred Sword", "Bulldoze"],
+ "abilities": ["Technician"]
+ }
+ ]
+ },
+ "bisharpsavage": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["Leech Seed", "Bullet Punch", "Power Whip", "Thunder Wave"],
+ "abilities": ["Technician"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["Bulk Up", "Bullet Punch", "Power Whip", "Body Press"],
+ "abilities": ["Technician"]
+ }
+ ]
+ },
+ "corviknightanalytical": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["Psychic", "Thunderbolt", "U-turn", "Heat Wave"],
+ "abilities": ["Psychic Surge"]
+ },
+ {
+ "role": "Fast Support",
+ "movepool": ["Reflect", "Light Screen", "U-turn", "Psychic"],
+ "abilities": ["Psychic Surge"]
+ },
+ {
+ "role": "Fast Bulky Setup",
+ "movepool": ["Psychic", "Thunderbolt", "Calm Mind", "Heat Wave"],
+ "abilities": ["Psychic Surge"]
+ }
+ ]
+ },
+ "corviknightfalcon": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["Brave Bird", "Close Combat", "U-turn", "Knock Off"],
+ "abilities": ["Guts"]
+ },
+ {
+ "role": "Fast Support",
+ "movepool": ["Reflect", "Light Screen", "U-turn", "Taunt"],
+ "abilities": ["Delta Stream"]
+ }
+ ]
+ },
+ "corviknightgenie": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Bulky Setup",
+ "movepool": ["Earth Power", "Calm Mind", "Heat Wave", "Rest"],
+ "abilities": ["Prankster"]
+ },
+ {
+ "role": "AV Pivot",
+ "movepool": ["Scorching Sands", "U-turn", "Heat Wave", "Thunderbolt"],
+ "abilities": ["Intimidate"]
+ },
+ {
+ "role": "Fast Support",
+ "movepool": ["Reflect", "Light Screen", "U-turn", "Earth Power"],
+ "abilities": ["Prankster"]
+ }
+ ]
+ },
+ "corviknightmartian": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["Trick Room", "Teleport", "Thunderbolt", "Psychic"],
+ "abilities": ["Hadron Engine"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["Doom Desire", "Teleport", "Thunderbolt", "Psychic"],
+ "abilities": ["Hadron Engine"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["Calm Mind", "Flash Cannon", "Thunderbolt", "Psychic Noise"],
+ "abilities": ["Hadron Engine"]
+ }
+ ]
+ },
+ "corviknightthunderbird": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["Thunder", "Hurricane", "U-turn", "Roost"],
+ "abilities": ["Drizzle"]
+ },
+ {
+ "role": "Fast Support",
+ "movepool": ["Reflect", "Light Screen", "U-turn", "Hurricane"],
+ "abilities": ["Drizzle"]
+ }
+ ]
+ },
+ "corviknightyeti": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["Blizzard", "Bleakwind Storm", "Volt Switch", "Roost"],
+ "abilities": ["Snow Warning"]
+ },
+ {
+ "role": "Fast Support",
+ "movepool": ["Reflect", "Light Screen", "U-turn", "Blizzard"],
+ "abilities": ["Snow Warning"]
+ }
+ ]
+ },
+ "krookodileabyssal": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["Dragon Dance", "Earthquake", "Knock Off", "Flare Blitz"],
+ "abilities": ["Multiscale"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["Parting Shot", "Earthquake", "Knock Off", "Flare Blitz"],
+ "abilities": ["Multiscale"]
+ }
+ ]
+ },
+ "krookodilecavedweller": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["Parting Shot", "Earthquake", "Stone Edge", "Flare Blitz"],
+ "abilities": ["Magic Guard"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["Explosion", "Earthquake", "Stone Edge", "Flare Blitz"],
+ "abilities": ["Magic Guard"]
+ }
+ ]
+ },
+ "krookodilecliffside": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["Parting Shot", "Dark Pulse", "Draco Meteor", "Flamethrower"],
+ "abilities": ["Intimidate"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["Switcheroo", "Dark Pulse", "Draco Meteor", "Flamethrower"],
+ "abilities": ["Intimidate"]
+ }
+ ]
+ },
+ "krookodileinfernal": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["Parting Shot", "Magma Storm", "Fiery Wrath", "Eruption"],
+ "abilities": ["Magic Guard"]
+ },
+ {
+ "role": "Fast Support",
+ "movepool": ["Parting Shot", "Fire Lash", "Knock Off", "Will-O-Wisp"],
+ "abilities": ["Magic Guard"]
+ }
+ ]
+ },
+ "krookodilequantum": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["Parting Shot", "Volt Tackle", "Head Smash", "Earthquake"],
+ "abilities": ["Rock Head"]
+ },
+ {
+ "role": "Fast Support",
+ "movepool": ["Parting Shot", "Encore", "Head Smash", "Volt Tackle"],
+ "abilities": ["Prankster"]
+ }
+ ]
+ },
+ "krookodilewetlander": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["Synthesis", "Wave Crash", "Wood Hammer", "Knock Off"],
+ "abilities": ["Wind Rider", "Wonder Skin"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["Parting Shot", "Wave Crash", "Wood Hammer", "Knock Off"],
+ "abilities": ["Wind Rider", "Wonder Skin"]
+ }
+ ]
+ },
+ "ogerponankh": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["Swords Dance", "Poltergeist", "Earthquake", "Stone Edge"],
+ "abilities": ["Good as Gold"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["U-turn", "Shadow Ball", "Earth Power", "Dazzling Gleam"],
+ "abilities": ["Good as Gold"]
+ }
+ ]
+ },
+ "ogerponeaster": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["U-turn", "Moonblast", "Hyper Voice", "Mystical Fire"],
+ "abilities": ["Pickpocket"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["Calm Mind", "Moonblast", "Soft-Boiled", "Mystical Fire"],
+ "abilities": ["Pickpocket"]
+ }
+ ]
+ },
+ "ogerponeid": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["Knock Off", "Recover", "Surf", "Shadow Ball"],
+ "abilities": ["Tangling Hair"]
+ },
+ {
+ "role": "Fast Support",
+ "movepool": ["Hex", "Recover", "Surf", "Toxic"],
+ "abilities": ["Tangling Hair"]
+ }
+ ]
+ },
+ "ogerponkitsune": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["Knock Off", "U-turn", "Earth Power", "Power Whip"],
+ "abilities": ["Protean"]
+ }
+ ]
+ },
+ "ogerponmuerta": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["Poltergeist", "Moonblast", "U-turn", "Will-O-Wisp"],
+ "abilities": ["Wandering Spirit"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["Poltergeist", "Moonblast", "U-turn", "Shadow Sneak"],
+ "abilities": ["Wandering Spirit"]
+ }
+ ]
+ }
+}
diff --git a/data/random-battles/scootopiav2/teams.ts b/data/random-battles/sixbysix/teams.ts
similarity index 94%
rename from data/random-battles/scootopiav2/teams.ts
rename to data/random-battles/sixbysix/teams.ts
index c03dcede03..e321ed1a71 100644
--- a/data/random-battles/scootopiav2/teams.ts
+++ b/data/random-battles/sixbysix/teams.ts
@@ -1,1001 +1,960 @@
-import { RandomTeams, type MoveCounter } from "../gen9/teams";
-
-// Moves that restore HP:
-const RECOVERY_MOVES = [
- 'healorder', 'milkdrink', 'moonlight', 'morningsun', 'recover', 'roost', 'shoreup', 'slackoff', 'softboiled', 'strengthsap', 'synthesis',
-];
-// Moves that boost Attack:
-const PHYSICAL_SETUP = [
- 'bellydrum', 'bulkup', 'coil', 'curse', 'dragondance', 'honeclaws', 'howl', 'meditate', 'poweruppunch', 'swordsdance', 'tidyup', 'victorydance',
- 'filletaway',
-];
-// Moves which boost Special Attack:
-const SPECIAL_SETUP = [
- 'calmmind', 'chargebeam', 'geomancy', 'nastyplot', 'quiverdance', 'tailglow', 'takeheart', 'torchsong', 'filletaway',
-];
-// Some moves that only boost Speed:
-const SPEED_SETUP = [
- 'agility', 'autotomize', 'flamecharge', 'rockpolish', 'trailblaze',
-];
-// Conglomerate for ease of access
-const SETUP = [
- 'acidarmor', 'agility', 'autotomize', 'bellydrum', 'bulkup', 'calmmind', 'clangoroussoul', 'coil', 'cosmicpower', 'curse', 'dragondance',
- 'filletaway', 'flamecharge', 'growth', 'honeclaws', 'howl', 'irondefense', 'meditate', 'nastyplot', 'noretreat', 'poweruppunch', 'quiverdance',
- 'rockpolish', 'shellsmash', 'shiftgear', 'swordsdance', 'tailglow', 'takeheart', 'tidyup', 'trailblaze', 'trickroom', 'workup', 'victorydance',
- 'feralresilience', 'feralspray', 'crystalfortification',
-];
-const SPEED_CONTROL = [
- 'electroweb', 'glare', 'icywind', 'lowsweep', 'quash', 'stringshot', 'tailwind', 'thunderwave', 'trickroom',
-];
-// Hazard-setting moves
-const HAZARDS = [
- 'spikes', 'stealthrock', 'stickyweb', 'toxicspikes', 'crystalshard',
-];
-// Protect and its variants
-const PROTECT_MOVES = [
- 'banefulbunker', 'burningbulwark', 'protect', 'silktrap', 'spikyshield',
-];
-// Moves that switch the user out
-const PIVOT_MOVES = [
- 'chillyreception', 'flipturn', 'partingshot', 'shedtail', 'teleport', 'uturn', 'voltswitch',
-];
-
-// Moves that should be paired together when possible
-const MOVE_PAIRS = [
- ['lightscreen', 'reflect'],
- ['sleeptalk', 'rest'],
- ['protect', 'wish'],
- ['spikyshield', 'wish'],
- ['leechseed', 'protect'],
- ['leechseed', 'substitute'],
- ['moongeistbeam', 'moonlight'],
- ['hex', 'willowisp'],
- ['hex', 'toxic'],
- ['hex', 'thunderwave'],
- ['nightmare', 'willowisp'],
- ['nightmare', 'toxic'],
- ['nightmare', 'thunderwave'],
-];
-
-/** Pokemon who always want priority STAB, and are fine with it as its only STAB move of that type */
-const PRIORITY_POKEMON = [
- 'breloom', 'brutebonnet', 'cacturne', 'honchkrow', 'mimikyu', 'ragingbolt', 'scizor',
-];
-
-/** Pokemon who should never be in the lead slot */
-const NO_LEAD_POKEMON = [
- 'Zacian', 'Zamazenta',
-];
-const DOUBLES_NO_LEAD_POKEMON = [
- 'Basculegion', 'Houndstone', 'Iron Bundle', 'Roaring Moon', 'Zacian', 'Zamazenta',
-];
-export class RandomSCTeams extends RandomTeams {
- override cullMovePool(
- types: string[],
- moves: Set,
- abilities: string[],
- counter: MoveCounter,
- movePool: string[],
- teamDetails: RandomTeamsTypes.TeamDetails,
- species: Species,
- isLead: boolean,
- isDoubles: boolean,
- teraType: string,
- role: RandomTeamsTypes.Role,
- ): void {
- if (moves.size + movePool.length <= this.maxMoveCount) return;
- // If we have two unfilled moves and only one unpaired move, cull the unpaired move.
- if (moves.size === this.maxMoveCount - 2) {
- const unpairedMoves = [...movePool];
- for (const pair of MOVE_PAIRS) {
- if (movePool.includes(pair[0]) && movePool.includes(pair[1])) {
- this.fastPop(unpairedMoves, unpairedMoves.indexOf(pair[0]));
- this.fastPop(unpairedMoves, unpairedMoves.indexOf(pair[1]));
- }
- }
- if (unpairedMoves.length === 1) {
- this.fastPop(movePool, movePool.indexOf(unpairedMoves[0]));
- }
- }
-
- // These moves are paired, and shouldn't appear if there is not room for them both.
- if (moves.size === this.maxMoveCount - 1) {
- for (const pair of MOVE_PAIRS) {
- if (movePool.includes(pair[0]) && movePool.includes(pair[1])) {
- this.fastPop(movePool, movePool.indexOf(pair[0]));
- this.fastPop(movePool, movePool.indexOf(pair[1]));
- }
- }
- }
-
- // Develop additional move lists
- const statusMoves = this.cachedStatusMoves;
-
- // Team-based move culls
- if (teamDetails.screens) {
- if (movePool.includes('auroraveil')) this.fastPop(movePool, movePool.indexOf('auroraveil'));
- if (movePool.length >= this.maxMoveCount + 2) {
- if (movePool.includes('reflect')) this.fastPop(movePool, movePool.indexOf('reflect'));
- if (movePool.includes('lightscreen')) this.fastPop(movePool, movePool.indexOf('lightscreen'));
- }
- }
- if (teamDetails.stickyWeb) {
- if (movePool.includes('stickyweb')) this.fastPop(movePool, movePool.indexOf('stickyweb'));
- if (moves.size + movePool.length <= this.maxMoveCount) return;
- }
- if (teamDetails.stealthRock) {
- if (movePool.includes('stealthrock')) this.fastPop(movePool, movePool.indexOf('stealthrock'));
- if (moves.size + movePool.length <= this.maxMoveCount) return;
- }
- if (teamDetails.defog || teamDetails.rapidSpin) {
- if (movePool.includes('defog')) this.fastPop(movePool, movePool.indexOf('defog'));
- if (movePool.includes('rapidspin')) this.fastPop(movePool, movePool.indexOf('rapidspin'));
- if (moves.size + movePool.length <= this.maxMoveCount) return;
- }
- if (teamDetails.toxicSpikes) {
- if (movePool.includes('toxicspikes')) this.fastPop(movePool, movePool.indexOf('toxicspikes'));
- if (moves.size + movePool.length <= this.maxMoveCount) return;
- }
- if (teamDetails.spikes && teamDetails.spikes >= 2) {
- if (movePool.includes('spikes')) this.fastPop(movePool, movePool.indexOf('spikes'));
- if (moves.size + movePool.length <= this.maxMoveCount) return;
- }
- if (teamDetails.statusCure) {
- if (movePool.includes('healbell')) this.fastPop(movePool, movePool.indexOf('healbell'));
- if (moves.size + movePool.length <= this.maxMoveCount) return;
- }
-
- if (isDoubles) {
- const doublesIncompatiblePairs = [
- // In order of decreasing generalizability
- [SPEED_CONTROL, SPEED_CONTROL],
- [HAZARDS, HAZARDS],
- ['rockslide', 'stoneedge'],
- [SETUP, ['fakeout', 'helpinghand']],
- [PROTECT_MOVES, 'wideguard'],
- [['fierydance', 'fireblast'], 'heatwave'],
- ['dazzlinggleam', ['fleurcannon', 'moonblast']],
- ['poisongas', ['toxicspikes', 'willowisp']],
- [RECOVERY_MOVES, ['healpulse', 'lifedew']],
- ['healpulse', 'lifedew'],
- ['haze', 'icywind'],
- [['hydropump', 'muddywater'], ['muddywater', 'scald']],
- ['disable', 'encore'],
- ['freezedry', 'icebeam'],
- ['energyball', 'leafstorm'],
- ['earthpower', 'sandsearstorm'],
- ['coaching', ['helpinghand', 'howl']],
- ];
-
- for (const pair of doublesIncompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]);
-
- if (role !== 'Offensive Protect') this.incompatibleMoves(moves, movePool, PROTECT_MOVES, ['flipturn', 'uturn']);
- }
-
- // General incompatibilities
- const incompatiblePairs = [
- // These moves don't mesh well with other aspects of the set
- [statusMoves, ['healingwish', 'switcheroo', 'trick']],
- [SETUP, PIVOT_MOVES],
- [SETUP, HAZARDS],
- [SETUP, ['defog', 'nuzzle', 'toxic', 'yawn', 'haze']],
- [PHYSICAL_SETUP, PHYSICAL_SETUP],
- [SPECIAL_SETUP, 'thunderwave'],
- ['substitute', PIVOT_MOVES],
- [SPEED_SETUP, ['aquajet', 'rest', 'trickroom']],
- ['curse', ['irondefense', 'rapidspin']],
- ['dragondance', 'dracometeor'],
- ['yawn', 'roar'],
- ['trick', 'uturn'],
-
- // These attacks are redundant with each other
- [['psychic', 'psychicnoise'], ['psyshock', 'psychicnoise']],
- ['surf', ['hydropump', 'scald']],
- ['liquidation', 'wavecrash'],
- ['aquajet', 'flipturn'],
- ['gigadrain', 'leafstorm'],
- ['powerwhip', 'hornleech'],
- ['airslash', 'hurricane'],
- ['knockoff', 'foulplay'],
- ['throatchop', ['crunch', 'lashout']],
- ['doubleedge', ['bodyslam', 'headbutt']],
- [['fireblast', 'magmastorm'], ['fierydance', 'flamethrower', 'lavaplume']],
- ['thunderpunch', 'wildcharge'],
- ['thunderbolt', 'discharge'],
- ['gunkshot', ['direclaw', 'poisonjab', 'sludgebomb']],
- ['aurasphere', 'focusblast'],
- ['closecombat', 'drainpunch'],
- [['dragonpulse', 'spacialrend'], 'dracometeor'],
- ['heavyslam', 'flashcannon'],
- ['alluringvoice', 'dazzlinggleam'],
- ['defog', 'rapidspin'],
-
- // These status moves are redundant with each other
- ['taunt', 'disable'],
- [['thunderwave', 'toxic'], ['thunderwave', 'willowisp']],
- [['thunderwave', 'toxic', 'willowisp'], 'toxicspikes'],
-
- // This space reserved for assorted hardcodes that otherwise make little sense out of context
- // Landorus and Thundurus
- ['nastyplot', ['rockslide', 'knockoff']],
- // Persian
- ['switcheroo', 'fakeout'],
- // Amoonguss, though this can work well as a general rule later
- ['toxic', 'clearsmog'],
- // Chansey and Blissey
- ['healbell', 'stealthrock'],
- // Araquanid and Magnezone
- ['mirrorcoat', ['hydropump', 'bodypress']],
- ];
-
- for (const pair of incompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]);
-
- if (!types.includes('Ice')) this.incompatibleMoves(moves, movePool, 'icebeam', 'icywind');
-
- if (!isDoubles) this.incompatibleMoves(moves, movePool, 'taunt', 'encore');
-
- if (!types.includes('Dark') && teraType !== 'Dark') this.incompatibleMoves(moves, movePool, 'knockoff', 'suckerpunch');
-
- if (!abilities.includes('Prankster')) this.incompatibleMoves(moves, movePool, 'thunderwave', 'yawn');
-
- // This space reserved for assorted hardcodes that otherwise make little sense out of context:
- // To force Close Combat on Barraskewda without locking it to Tera Fighting
- if (species.id === 'barraskewda') {
- this.incompatibleMoves(moves, movePool, ['psychicfangs', 'throatchop'], ['poisonjab', 'throatchop']);
- }
- // To force Toxic on Quagsire
- if (species.id === 'quagsire') this.incompatibleMoves(moves, movePool, 'spikes', 'icebeam');
- // Taunt/Knock should be Cyclizar's flex moveslot
- if (species.id === 'cyclizar') this.incompatibleMoves(moves, movePool, 'taunt', 'knockoff');
- // To force Stealth Rock on Camerupt
- if (species.id === 'camerupt') this.incompatibleMoves(moves, movePool, 'roar', 'willowisp');
- // nothing else rolls these lol
- if (species.id === 'coalossal') this.incompatibleMoves(moves, movePool, 'flamethrower', 'overheat');
- }
-
- override randomMoveset(
- types: string[],
- abilities: string[],
- teamDetails: RandomTeamsTypes.TeamDetails,
- species: Species,
- isLead: boolean,
- isDoubles: boolean,
- movePool: string[],
- teraType: string,
- role: RandomTeamsTypes.Role,
- ): Set {
- const moves = new Set();
- if (this.getSuperType(moves)) types[1] = this.getSuperType(moves);
- let counter = this.queryMoves(moves, species, teraType, abilities);
- this.cullMovePool(types, moves, abilities, counter, movePool, teamDetails, species, isLead, isDoubles, teraType, role);
-
- // If there are only four moves, add all moves and return early
- if (movePool.length <= this.maxMoveCount) {
- for (const moveid of movePool) {
- moves.add(moveid);
- }
- return moves;
- }
-
- const runEnforcementChecker = (checkerName: string) => {
- if (!this.moveEnforcementCheckers[checkerName]) return false;
- return this.moveEnforcementCheckers[checkerName](
- movePool, moves, abilities, types, counter, species, teamDetails, isLead, isDoubles, teraType, role
- );
- };
-
- if (role === 'Tera Blast user') {
- counter = this.addMove('terablast', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- // Add required move (e.g. Relic Song for Meloetta-P)
- if (species.requiredMove) {
- const move = this.dex.moves.get(species.requiredMove).id;
- counter = this.addMove(move, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
-
- // Add other moves you really want to have, e.g. STAB, recovery, setup.
-
- // Enforce Facade if Guts is a possible ability
- if (movePool.includes('facade') && abilities.includes('Guts')) {
- counter = this.addMove('facade', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
-
- // Enforce Night Shade, Revelation Dance, Revival Blessing, and Sticky Web
- for (const moveid of ['nightshade', 'revelationdance', 'revivalblessing', 'stickyweb']) {
- if (movePool.includes(moveid)) {
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce Trick Room on Doubles Wallbreaker
- if (movePool.includes('trickroom') && role === 'Doubles Wallbreaker') {
- counter = this.addMove('trickroom', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
-
- // Enforce hazard removal on Bulky Support if the team doesn't already have it
- if (role === 'Bulky Support' && !teamDetails.defog && !teamDetails.rapidSpin) {
- if (movePool.includes('rapidspin')) {
- counter = this.addMove('rapidspin', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- if (movePool.includes('defog')) {
- counter = this.addMove('defog', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce Knock Off on pure Normal- and Fighting-types in singles
- if (!isDoubles && types.length === 1 && (types.includes('Normal') || types.includes('Fighting'))) {
- if (movePool.includes('knockoff')) {
- counter = this.addMove('knockoff', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce Flip Turn on pure Water-type Wallbreakers
- if (types.length === 1 && types.includes('Water') &&
- role === 'Wallbreaker' && movePool.includes('flipturn')) {
- counter = this.addMove('flipturn', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
-
- // Enforce Spore on Smeargle
- if (species.id === 'smeargle') {
- if (movePool.includes('spore')) {
- counter = this.addMove('spore', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce moves in doubles
- if (isDoubles) {
- const doublesEnforcedMoves = ['auroraveil', 'mortalspin', 'spore'];
- for (const moveid of doublesEnforcedMoves) {
- if (movePool.includes(moveid)) {
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
- // Enforce Fake Out on slow Pokemon
- if (movePool.includes('fakeout') && species.baseStats.spe <= 50) {
- counter = this.addMove('fakeout', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- // Enforce Tailwind on Prankster and Gale Wings users
- if (movePool.includes('tailwind') && (abilities.includes('Prankster') || abilities.includes('Gale Wings'))) {
- counter = this.addMove('tailwind', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- // Enforce Thunder Wave on Prankster users as well
- if (movePool.includes('thunderwave') && abilities.includes('Prankster')) {
- counter = this.addMove('thunderwave', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce STAB priority
- if (
- ['Bulky Attacker', 'Bulky Setup', 'Wallbreaker', 'Doubles Wallbreaker'].includes(role) ||
- PRIORITY_POKEMON.includes(species.id)
- ) {
- const priorityMoves = [];
- for (const moveid of movePool) {
- const move = this.dex.moves.get(moveid);
- const moveType = this.getMoveType(move, species, abilities, teraType);
- if (
- types.includes(moveType) && (move.priority > 0 || (moveid === 'grassyglide' && abilities.includes('Grassy Surge'))) &&
- (move.basePower || move.basePowerCallback)
- ) {
- priorityMoves.push(moveid);
- }
- }
- if (priorityMoves.length) {
- const moveid = this.sample(priorityMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce a single STAB for Moltres
- if (species.id === 'moltres') {
- const typeToEnforce = this.randomChance(1, 2) ? 'Fire' : 'Flying';
-
- const stabMoves = [];
- for (const moveid of movePool) {
- const move = this.dex.moves.get(moveid);
- const moveType = this.getMoveType(move, species, abilities, teraType);
- if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && typeToEnforce === moveType) {
- stabMoves.push(moveid);
- }
- }
- while (runEnforcementChecker(typeToEnforce)) {
- if (!stabMoves.length) break;
- const moveid = this.sampleNoReplace(stabMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce STAB
- for (const type of types) {
- // Moltres already has STAB, so ignore this block
- if (species.id === 'moltres') break;
- // prevents Meowscarada from being enforced stab moves
- if (species.id === 'meowscarada') break;
- // Check if a STAB move of that type should be required
- const stabMoves = [];
- for (const moveid of movePool) {
- const move = this.dex.moves.get(moveid);
- const moveType = this.getMoveType(move, species, abilities, teraType);
- if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && type === moveType) {
- stabMoves.push(moveid);
- }
- }
- while (runEnforcementChecker(type)) {
- if (!stabMoves.length) break;
- const moveid = this.sampleNoReplace(stabMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce Tera STAB
- // prevents Meowscarada from being enforced stab moves (since it has Protean and doesn't care)
- if (!counter.get('stabtera') && !['Bulky Support', 'Doubles Support'].includes(role) &&
- !abilities.includes('Protean')) {
- const stabMoves = [];
- for (const moveid of movePool) {
- const move = this.dex.moves.get(moveid);
- const moveType = this.getMoveType(move, species, abilities, teraType);
- if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && teraType === moveType) {
- stabMoves.push(moveid);
- }
- }
- if (stabMoves.length) {
- const moveid = this.sample(stabMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // If no STAB move was added, add a STAB move
- // prevents Meowscarada from being enforced stab moves (since it has Protean and doesn't care)
- if (!counter.get('stab') && !abilities.includes('Protean')) {
- const stabMoves = [];
- for (const moveid of movePool) {
- const move = this.dex.moves.get(moveid);
- const moveType = this.getMoveType(move, species, abilities, teraType);
- if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && types.includes(moveType)) {
- stabMoves.push(moveid);
- }
- }
- if (stabMoves.length) {
- const moveid = this.sample(stabMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce recovery
- if (['Bulky Support', 'Bulky Attacker', 'Bulky Setup'].includes(role)) {
- const recoveryMoves = movePool.filter(moveid => RECOVERY_MOVES.includes(moveid));
- if (recoveryMoves.length) {
- const moveid = this.sample(recoveryMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce setup
- if (role.includes('Setup') || role === 'Tera Blast user') {
- // First, try to add a non-Speed setup move
- const nonSpeedSetupMoves = movePool.filter(moveid => SETUP.includes(moveid) && !SPEED_SETUP.includes(moveid));
- if (nonSpeedSetupMoves.length) {
- const moveid = this.sample(nonSpeedSetupMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- } else {
- // No non-Speed setup moves, so add any (Speed) setup move
- const setupMoves = movePool.filter(moveid => SETUP.includes(moveid));
- if (setupMoves.length) {
- const moveid = this.sample(setupMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
- }
-
- // Enforce redirecting moves and Fake Out on Doubles Support
- if (role === 'Doubles Support') {
- for (const moveid of ['fakeout', 'followme', 'ragepowder']) {
- if (movePool.includes(moveid)) {
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
- }
-
- // Enforce Protect
- if (role.includes('Protect')) {
- const protectMoves = movePool.filter(moveid => PROTECT_MOVES.includes(moveid));
- if (protectMoves.length) {
- const moveid = this.sample(protectMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce a move not on the noSTAB list
- if (!counter.damagingMoves.size) {
- // Choose an attacking move
- const attackingMoves = [];
- for (const moveid of movePool) {
- const move = this.dex.moves.get(moveid);
- if (!this.noStab.includes(moveid) && (move.category !== 'Status')) attackingMoves.push(moveid);
- }
- if (attackingMoves.length) {
- const moveid = this.sample(attackingMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce coverage move
- if (!['AV Pivot', 'Fast Support', 'Bulky Support', 'Bulky Protect', 'Doubles Support'].includes(role)) {
- if (counter.damagingMoves.size === 1) {
- // Find the type of the current attacking move
- const currentAttackType = counter.damagingMoves.values().next().value!.type;
- // Choose an attacking move that is of different type to the current single attack
- const coverageMoves = [];
- for (const moveid of movePool) {
- const move = this.dex.moves.get(moveid);
- const moveType = this.getMoveType(move, species, abilities, teraType);
- if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback)) {
- if (currentAttackType !== moveType) coverageMoves.push(moveid);
- }
- }
- if (coverageMoves.length) {
- const moveid = this.sample(coverageMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
- }
-
- // Add (moves.size < this.maxMoveCount) as a condition if moves is getting larger than 4 moves.
- // If you want moves to be favored but not required, add something like && this.randomChance(1, 2) to your condition.
-
- // Choose remaining moves randomly from movepool and add them to moves list:
- while (moves.size < this.maxMoveCount && movePool.length) {
- if (moves.size + movePool.length <= this.maxMoveCount) {
- for (const moveid of movePool) {
- moves.add(moveid);
- }
- break;
- }
- const moveid = this.sample(movePool);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- for (const pair of MOVE_PAIRS) {
- if (moveid === pair[0] && movePool.includes(pair[1])) {
- counter = this.addMove(pair[1], moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- if (moveid === pair[1] && movePool.includes(pair[0])) {
- counter = this.addMove(pair[0], moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
- }
- return moves;
- }
-
- override getPriorityItem(
- ability: string,
- types: string[],
- moves: Set,
- counter: MoveCounter,
- teamDetails: RandomTeamsTypes.TeamDetails,
- species: Species,
- isLead: boolean,
- isDoubles: boolean,
- teraType: string,
- role: RandomTeamsTypes.Role,
- ) {
- if (this.getSuperType(moves)) return this.getSuperType(moves) + " Orb";
- if (!isDoubles) {
- if (role === 'Fast Bulky Setup' && (ability === 'Quark Drive' || ability === 'Protosynthesis')) {
- return 'Booster Energy';
- }
- if (species.id === 'lokix') {
- return (role === 'Fast Attacker') ? 'Silver Powder' : 'Life Orb';
- }
- }
- if (species.requiredItems) {
- // Z-Crystals aren't available in Gen 9, so require Plates
- if (species.baseSpecies === 'Arceus') {
- return species.requiredItems[0];
- }
- return this.sample(species.requiredItems);
- }
- if (role === 'AV Pivot') return 'Assault Vest';
- // Super Type hardcodes
- if (species.id === 'cyllindrake' && moves.has('shiftgear')) return 'Throat Spray';
- if (species.id === 'albatrygon' && moves.has('acrobatics')) return 'Sitrus Berry';
- if (species.id === 'yiankutku' && moves.has('facade') || species.id === 'bluekutku' && moves.has('facade')) {
- return 'Frost Orb';
- }
- if (species.id === 'xenojiiva' && ability === 'Quark Drive') return 'Booster Energy';
- if (species.id === 'odogaron' && moves.has('closecombat')) return 'White Herb';
- if (species.id === 'odogaron' && !moves.has('closecombat')) return 'Sitrus Berry';
- if (
- ability === 'Magic Guard' || ability === 'Fervent Scales' ||
- (ability === 'Sheer Force' && counter.get('sheerforce'))
- ) {
- return 'Life Orb';
- }
- if (moves.has('devour') && ability === 'Unburden') return 'Liechi Berry';
- if (moves.has('virulentvolley')) return 'Loaded Dice';
- if (moves.has('magnalance') && ability === 'Reactive Core') return 'Flame Orb';
- if (moves.has('dragondance') && ability === 'Reactive Core') return 'Frost Orb';
- // other
- if (moves.has('substitute')) return 'Leftovers';
- if (moves.has('protect') && ability !== 'Speed Boost') return 'Leftovers';
- if (counter.get('skilllink') && ability !== 'Skill Link' && species.id !== 'breloom') return 'Loaded Dice';
- if (moves.has('shellsmash') && ability !== 'Weak Armor') return 'White Herb';
- if ((ability === 'Guts' || moves.has('facade')) && !moves.has('sleeptalk')) {
- return (types.includes('Fire') || ability === 'Toxic Boost' || ability === 'Poison Heal') ? 'Toxic Orb' : 'Flame Orb';
- }
- if (['healingwish', 'switcheroo', 'trick'].some(m => moves.has(m))) {
- if (
- species.baseStats.spe >= 60 && species.baseStats.spe <= 108 &&
- role !== 'Wallbreaker' && role !== 'Doubles Wallbreaker' && !counter.get('priority')
- ) {
- return 'Choice Scarf';
- } else {
- return (counter.get('Physical') > counter.get('Special')) ? 'Choice Band' : 'Choice Specs';
- }
- }
- if (
- role === 'Wallbreaker' && (counter.get('Physical') > counter.get('Special')) && !counter.get('Status')
- ) {
- return 'Choice Band';
- }
- if (
- role === 'Wallbreaker' && (counter.get('Physical') < counter.get('Special')) && !counter.get('Status')
- ) {
- return 'Choice Specs';
- }
- if (ability === 'Poison Heal' || ability === 'Quick Feet') return 'Toxic Orb';
- if (moves.has('acrobatics') && ability !== 'Quark Drive' && ability !== 'Protosynthesis') return '';
- if (moves.has('auroraveil') || moves.has('lightscreen') && moves.has('reflect')) return 'Light Clay';
- if (ability === 'Gluttony') return `${this.sample(['Aguav', 'Figy', 'Iapapa', 'Mago', 'Wiki'])} Berry`;
- if (
- ['Cheek Pouch', 'Cud Chew', 'Harvest', 'Ripen'].some(m => ability === m) ||
- moves.has('bellydrum') || moves.has('filletaway')
- ) {
- return 'Sitrus Berry';
- }
- if (this.dex.getEffectiveness('Rock', species) >= 2) return 'Heavy-Duty Boots';
- if (species.nfe) return 'Eviolite';
- if (['Bulky Attacker', 'Bulky Support', 'Bulky Setup'].some(m => role === (m))) return 'Leftovers';
- if (role === 'Fast Support' || role === 'Fast Bulky Setup') {
- return (counter.get('Physical') + counter.get('Special') >= 3) ? 'Life Orb' : 'Leftovers';
- }
- }
-
- getSuperType(moves: Set | string[]): string {
- for (const move of moves) {
- if (move.includes('crystal')) return "Crystal";
- if (move.includes('feral')) return "Feral";
- }
- return "";
- }
-
- override randomSet(
- s: string | Species,
- teamDetails: RandomTeamsTypes.TeamDetails = {},
- isLead = false,
- isDoubles = false
- ): RandomTeamsTypes.RandomSet {
- const species = this.dex.species.get(s);
- const forme = this.getForme(species);
- const sets = this.randomSets[species.id]["sets"];
- const possibleSets: RandomTeamsTypes.RandomSetData[] = [];
-
- // const ruleTable = this.dex.formats.getRuleTable(this.format);
-
- for (const set of sets) {
- // Prevent Fast Bulky Setup on lead Paradox Pokemon, since it generates Booster Energy.
- const abilities = set.abilities!;
- if (
- isLead && (abilities.includes('Protosynthesis') || abilities.includes('Quark Drive')) &&
- set.role === 'Fast Bulky Setup'
- ) continue;
- // Prevent Tera Blast user if the team already has one, or if Terastallizion is prevented.
- // used here to limit team to 1 Super Types user
- if (teamDetails.teraBlast && set.role === 'Tera Blast user') {
- continue;
- }
- possibleSets.push(set);
- }
- const set = this.sampleIfArray(possibleSets);
- const role = set.role;
- const movePool: string[] = [];
- for (const movename of set.movepool) {
- movePool.push(this.dex.moves.get(movename).id);
- }
- const teraTypes = set.teraTypes!;
- let teraType = this.sampleIfArray(teraTypes);
-
- let ability = '';
- let item = undefined;
-
- const evs = { hp: 85, atk: 85, def: 85, spa: 85, spd: 85, spe: 85 };
- const ivs = { hp: 31, atk: 31, def: 31, spa: 31, spd: 31, spe: 31 };
-
- const types = [];
- types[0] = species.types[0];
- if (species.types[1]) types[1] = species.types[1];
- const abilities = set.abilities!;
-
- // Get moves
- const moves = this.randomMoveset(types, abilities, teamDetails, species, isLead, isDoubles, movePool, teraType, role);
- const counter = this.queryMoves(moves, species, teraType, abilities);
-
- if (this.getSuperType(moves)) types[1] = this.getSuperType(moves);
-
- // Get ability
- ability = this.getAbility(types, moves, abilities, counter, teamDetails, species, isLead, isDoubles, teraType, role);
-
- // Get items
- // First, the priority items
- item = this.getPriorityItem(ability, types, moves, counter, teamDetails, species, isLead, isDoubles, teraType, role);
- if (item === undefined) {
- if (isDoubles) {
- item = this.getDoublesItem(ability, types, moves, counter, teamDetails, species, isLead, teraType, role);
- } else {
- item = this.getItem(ability, types, moves, counter, teamDetails, species, isLead, teraType, role);
- }
- }
-
- // Get level
- const level = this.getLevel(species, isDoubles);
-
- // Prepare optimal HP
- const srImmunity = ability === 'Magic Guard' || item === 'Heavy-Duty Boots';
- let srWeakness = srImmunity ? 0 : this.dex.getEffectiveness('Rock', species);
- // Crash damage move users want an odd HP to survive two misses
- if (['axekick', 'highjumpkick', 'jumpkick'].some(m => moves.has(m))) srWeakness = 2;
- while (evs.hp > 1) {
- const hp = Math.floor(Math.floor(2 * species.baseStats.hp + ivs.hp + Math.floor(evs.hp / 4) + 100) * level / 100 + 10);
- if ((moves.has('substitute') && ['Sitrus Berry', 'Salac Berry'].includes(item))) {
- // Two Substitutes should activate Sitrus Berry
- if (hp % 4 === 0) break;
- } else if ((moves.has('bellydrum') || moves.has('filletaway')) && (item === 'Sitrus Berry' || ability === 'Gluttony')) {
- // Belly Drum should activate Sitrus Berry
- if (hp % 2 === 0) break;
- } else if (moves.has('substitute') && moves.has('endeavor')) {
- // Luvdisc should be able to Substitute down to very low HP
- if (hp % 4 > 0) break;
- } else {
- // Maximize number of Stealth Rock switch-ins
- if (srWeakness <= 0 || ability === 'Regenerator' || ['Leftovers', 'Life Orb', 'Eviolite'].includes(item)) break;
- if (item !== 'Sitrus Berry' && hp % (4 / srWeakness) > 0) break;
- // Minimise number of Stealth Rock switch-ins to activate Sitrus Berry
- if (item === 'Sitrus Berry' && hp % (4 / srWeakness) === 0) break;
- }
- evs.hp -= 4;
- }
-
- // Minimize confusion damage
- const noAttackStatMoves = [...moves].every(m => {
- const move = this.dex.moves.get(m);
- if (move.damageCallback || move.damage) return true;
- if (move.id === 'shellsidearm') return false;
- // Magearna and doubles Dragonite, though these can work well as a general rule
- if (move.id === 'terablast' && (
- species.id === 'porygon2' || moves.has('shiftgear') || species.baseStats.atk > species.baseStats.spa)
- ) return false;
- return move.category !== 'Physical' || move.id === 'bodypress' || move.id === 'foulplay';
- });
- // prevents Illumise (who can turn into Volbeat with Physical moves) from having 0 Atk EVs
- if (noAttackStatMoves && !moves.has('transform') && this.format.mod !== 'partnersincrime' &&
- species.id !== 'illumise') {
- evs.atk = 0;
- ivs.atk = 0;
- }
-
- // Enforce Tera Type after all set generation is done to prevent infinite generation
- if (this.forceTeraType) teraType = this.forceTeraType;
-
- // shuffle moves to add more randomness to camomons
- const shuffledMoves = Array.from(moves);
- this.prng.shuffle(shuffledMoves);
- return {
- name: species.baseSpecies,
- species: forme,
- gender: species.baseSpecies === 'Greninja' ? 'M' : (species.gender || (this.random(2) ? 'F' : 'M')),
- shiny: this.randomChance(1, 1024),
- level,
- moves: shuffledMoves,
- ability,
- evs,
- ivs,
- item,
- teraType,
- role,
- };
- }
-
- override randomSets: { [species: string]: RandomTeamsTypes.RandomSpeciesData } = require('./random-sets.json');
-
- randomSCTeam() {
- this.enforceNoDirectCustomBanlistChanges();
-
- const seed = this.prng.getSeed();
- const ruleTable = this.dex.formats.getRuleTable(this.format);
- const pokemon: RandomTeamsTypes.RandomSet[] = [];
-
- // For Monotype
- const isMonotype = !!this.forceMonotype || ruleTable.has('sametypeclause');
- const isDoubles = this.format.gameType !== 'singles';
- const typePool = this.dex.types.names().filter(name => name !== "Stellar");
- const type = this.forceMonotype || this.sample(typePool);
-
- // PotD stuff
- // const usePotD = global.Config && Config.potd && ruleTable.has('potd');
- // const potd = usePotD ? this.dex.species.get(Config.potd) : null;
-
- const baseFormes: { [k: string]: number } = {};
-
- // const superTypeCount = 0;
- const typeCount: { [k: string]: number } = {};
- const typeComboCount: { [k: string]: number } = {};
- const typeWeaknesses: { [k: string]: number } = {};
- const typeDoubleWeaknesses: { [k: string]: number } = {};
- const teamDetails: RandomTeamsTypes.TeamDetails = {};
- // let numMaxLevelPokemon = 0;
-
- const pokemonList = Object.keys(this.randomSets);
- const [pokemonPool, baseSpeciesPool] = this.getPokemonPool(type, pokemon, isMonotype, pokemonList);
-
- let leadsRemaining = this.format.gameType === 'doubles' ? 2 : 1;
- while (baseSpeciesPool.length && pokemon.length < this.maxTeamSize) {
- const baseSpecies = this.sampleNoReplace(baseSpeciesPool);
- const species = this.dex.species.get(this.sample(pokemonPool[baseSpecies]));
- if (!species.exists) continue;
-
- // Limit to one of each species (Species Clause)
- if (baseFormes[species.baseSpecies]) continue;
-
- // Treat Ogerpon formes and Terapagos like the Tera Blast user role; reject if team has one already
- if (['ogerpon', 'ogerponhearthflame', 'terapagos'].includes(species.id) && teamDetails.teraBlast) continue;
-
- // Illusion shouldn't be on the last slot
- if (species.baseSpecies === 'Sorrowcean' && pokemon.length >= (this.maxTeamSize - 1)) continue;
-
- const types = species.types;
- const typeCombo = types.slice().sort().join();
- const weakToFreezeDry = (
- this.dex.getEffectiveness('Ice', species) > 0 ||
- (this.dex.getEffectiveness('Ice', species) > -2 && types.includes('Water'))
- );
- // Dynamically scale limits for different team sizes. The default and minimum value is 1.
- const limitFactor = Math.round(this.maxTeamSize / 6) || 1;
-
- // Limit three of any type combination in Monotype
- if (!this.forceMonotype && isMonotype && (typeComboCount[typeCombo] >= 3 * limitFactor)) continue;
-
- // The Pokemon of the Day
- // if (potd?.exists && (pokemon.length === 1 || this.maxTeamSize === 1)) species = potd;
-
- // testing code
- // if (pokemon.length === 0 || this.maxTeamSize === 1) species = this.dex.species.get('Terapagos');
-
- let set: RandomTeamsTypes.RandomSet;
-
- if (leadsRemaining) {
- if (
- isDoubles && DOUBLES_NO_LEAD_POKEMON.includes(species.baseSpecies) ||
- !isDoubles && NO_LEAD_POKEMON.includes(species.baseSpecies)
- ) {
- if (pokemon.length + leadsRemaining === this.maxTeamSize) continue;
- set = this.randomSet(species, teamDetails, false, isDoubles);
- if (teamDetails.teraBlast && this.getSuperType(set.moves)) continue;
- pokemon.push(set);
- } else {
- set = this.randomSet(species, teamDetails, true, isDoubles);
- if (teamDetails.teraBlast && this.getSuperType(set.moves)) continue;
- pokemon.unshift(set);
- leadsRemaining--;
- }
- } else {
- set = this.randomSet(species, teamDetails, false, isDoubles);
- if (teamDetails.teraBlast && this.getSuperType(set.moves)) continue;
- pokemon.push(set);
- }
-
- // Don't bother tracking details for the last Pokemon
- if (pokemon.length === this.maxTeamSize) break;
-
- // Now that our Pokemon has passed all checks, we can increment our counters
- baseFormes[species.baseSpecies] = 1;
-
- // Increment type counters
- for (const typeName of types) {
- if (typeName in typeCount) {
- typeCount[typeName]++;
- } else {
- typeCount[typeName] = 1;
- }
- }
- if (typeCombo in typeComboCount) {
- typeComboCount[typeCombo]++;
- } else {
- typeComboCount[typeCombo] = 1;
- }
-
- // Increment item counter
- if (set.item === "Crystal Orb" || set.item === "Feral Orb") {
- teamDetails.teraBlast = 1;
- }
-
- // Increment weakness counter
- for (const typeName of this.dex.types.names()) {
- // it's weak to the type
- if (this.dex.getEffectiveness(typeName, species) > 0) {
- typeWeaknesses[typeName]++;
- }
- if (this.dex.getEffectiveness(typeName, species) > 1) {
- typeDoubleWeaknesses[typeName]++;
- }
- }
- // Count Dry Skin/Fluffy as Fire weaknesses
- if (['Dry Skin', 'Fluffy'].includes(set.ability) && this.dex.getEffectiveness('Fire', species) === 0) {
- typeWeaknesses['Fire']++;
- }
- if (weakToFreezeDry) typeWeaknesses['Freeze-Dry']++;
-
- // Increment level 100 counter
- // if (set.level === 100) numMaxLevelPokemon++;
-
- // Track what the team has
- if (set.ability === 'Drizzle' || set.moves.includes('raindance')) teamDetails.rain = 1;
- if (set.ability === 'Drought' || set.ability === 'Orichalcum Pulse' || set.moves.includes('sunnyday')) {
- teamDetails.sun = 1;
- }
- if (set.ability === 'Sand Stream') teamDetails.sand = 1;
- if (set.ability === 'Snow Warning' || set.moves.includes('snowscape') || set.moves.includes('chillyreception')) {
- teamDetails.snow = 1;
- }
- if (set.moves.includes('healbell')) teamDetails.statusCure = 1;
- if (set.moves.includes('spikes') || set.moves.includes('ceaselessedge')) {
- teamDetails.spikes = (teamDetails.spikes || 0) + 1;
- }
- if (set.moves.includes('toxicspikes') || set.ability === 'Toxic Debris') teamDetails.toxicSpikes = 1;
- if (set.moves.includes('stealthrock') || set.moves.includes('stoneaxe')) teamDetails.stealthRock = 1;
- if (set.moves.includes('stickyweb')) teamDetails.stickyWeb = 1;
- if (set.moves.includes('defog')) teamDetails.defog = 1;
- if (set.moves.includes('rapidspin') || set.moves.includes('mortalspin')) teamDetails.rapidSpin = 1;
- if (set.moves.includes('auroraveil') || (set.moves.includes('reflect') && set.moves.includes('lightscreen'))) {
- teamDetails.screens = 1;
- }
- if (set.role === 'Tera Blast user' || species.baseSpecies === "Ogerpon" || species.baseSpecies === "Terapagos") {
- teamDetails.teraBlast = 1;
- }
- }
- if (pokemon.length < this.maxTeamSize && pokemon.length < 12) { // large teams sometimes cannot be built
- throw new Error(`Could not build a random team for ${this.format} (seed=${seed})`);
- }
-
- return pokemon;
- }
-}
-
-export default RandomSCTeams;
+import { RandomTeams, type MoveCounter } from "../gen9/teams";
+
+// Moves that restore HP:
+const RECOVERY_MOVES = [
+ 'healorder', 'milkdrink', 'moonlight', 'morningsun', 'recover', 'roost', 'shoreup', 'slackoff', 'softboiled', 'strengthsap', 'synthesis',
+];
+// Moves that boost Attack:
+const PHYSICAL_SETUP = [
+ 'bellydrum', 'bulkup', 'coil', 'curse', 'dragondance', 'honeclaws', 'howl', 'meditate', 'poweruppunch', 'swordsdance', 'tidyup', 'victorydance',
+ 'filletaway',
+];
+// Moves which boost Special Attack:
+const SPECIAL_SETUP = [
+ 'calmmind', 'chargebeam', 'geomancy', 'nastyplot', 'quiverdance', 'tailglow', 'takeheart', 'torchsong', 'filletaway',
+];
+// Some moves that only boost Speed:
+const SPEED_SETUP = [
+ 'agility', 'autotomize', 'flamecharge', 'rockpolish', 'trailblaze',
+];
+// Conglomerate for ease of access
+const SETUP = [
+ 'acidarmor', 'agility', 'autotomize', 'bellydrum', 'bulkup', 'calmmind', 'clangoroussoul', 'coil', 'cosmicpower', 'curse', 'dragondance',
+ 'filletaway', 'flamecharge', 'growth', 'honeclaws', 'howl', 'irondefense', 'meditate', 'nastyplot', 'noretreat', 'poweruppunch', 'quiverdance',
+ 'rockpolish', 'shellsmash', 'shiftgear', 'swordsdance', 'tailglow', 'takeheart', 'tidyup', 'trailblaze', 'trickroom', 'workup', 'victorydance',
+ 'feralresilience', 'feralspray', 'crystalfortification',
+];
+const SPEED_CONTROL = [
+ 'electroweb', 'glare', 'icywind', 'lowsweep', 'quash', 'stringshot', 'tailwind', 'thunderwave', 'trickroom',
+];
+// Hazard-setting moves
+const HAZARDS = [
+ 'spikes', 'stealthrock', 'stickyweb', 'toxicspikes', 'crystalshard',
+];
+// Protect and its variants
+const PROTECT_MOVES = [
+ 'banefulbunker', 'burningbulwark', 'protect', 'silktrap', 'spikyshield',
+];
+// Moves that switch the user out
+const PIVOT_MOVES = [
+ 'chillyreception', 'flipturn', 'partingshot', 'shedtail', 'teleport', 'uturn', 'voltswitch',
+];
+
+// Moves that should be paired together when possible
+const MOVE_PAIRS = [
+ ['lightscreen', 'reflect'],
+ ['sleeptalk', 'rest'],
+ ['protect', 'wish'],
+ ['spikyshield', 'wish'],
+ ['leechseed', 'protect'],
+ ['leechseed', 'substitute'],
+ ['moongeistbeam', 'moonlight'],
+ ['hex', 'willowisp'],
+ ['hex', 'toxic'],
+ ['hex', 'thunderwave'],
+ ['nightmare', 'willowisp'],
+ ['nightmare', 'toxic'],
+ ['nightmare', 'thunderwave'],
+];
+
+/** Pokemon who always want priority STAB, and are fine with it as its only STAB move of that type */
+const PRIORITY_POKEMON = [
+ 'breloom', 'brutebonnet', 'cacturne', 'honchkrow', 'mimikyu', 'ragingbolt', 'scizor',
+];
+
+/** Pokemon who should never be in the lead slot */
+const NO_LEAD_POKEMON = [
+ 'Zacian', 'Zamazenta',
+];
+const DOUBLES_NO_LEAD_POKEMON = [
+ 'Basculegion', 'Houndstone', 'Iron Bundle', 'Roaring Moon', 'Zacian', 'Zamazenta',
+];
+export class Random6x6Teams extends RandomTeams {
+ override cullMovePool(
+ types: string[],
+ moves: Set,
+ abilities: string[],
+ counter: MoveCounter,
+ movePool: string[],
+ teamDetails: RandomTeamsTypes.TeamDetails,
+ species: Species,
+ isLead: boolean,
+ isDoubles: boolean,
+ teraType: string,
+ role: RandomTeamsTypes.Role,
+ ): void {
+ if (moves.size + movePool.length <= this.maxMoveCount) return;
+ // If we have two unfilled moves and only one unpaired move, cull the unpaired move.
+ if (moves.size === this.maxMoveCount - 2) {
+ const unpairedMoves = [...movePool];
+ for (const pair of MOVE_PAIRS) {
+ if (movePool.includes(pair[0]) && movePool.includes(pair[1])) {
+ this.fastPop(unpairedMoves, unpairedMoves.indexOf(pair[0]));
+ this.fastPop(unpairedMoves, unpairedMoves.indexOf(pair[1]));
+ }
+ }
+ if (unpairedMoves.length === 1) {
+ this.fastPop(movePool, movePool.indexOf(unpairedMoves[0]));
+ }
+ }
+
+ // These moves are paired, and shouldn't appear if there is not room for them both.
+ if (moves.size === this.maxMoveCount - 1) {
+ for (const pair of MOVE_PAIRS) {
+ if (movePool.includes(pair[0]) && movePool.includes(pair[1])) {
+ this.fastPop(movePool, movePool.indexOf(pair[0]));
+ this.fastPop(movePool, movePool.indexOf(pair[1]));
+ }
+ }
+ }
+
+ // Develop additional move lists
+ const statusMoves = this.cachedStatusMoves;
+
+ // Team-based move culls
+ if (teamDetails.screens) {
+ if (movePool.includes('auroraveil')) this.fastPop(movePool, movePool.indexOf('auroraveil'));
+ if (movePool.length >= this.maxMoveCount + 2) {
+ if (movePool.includes('reflect')) this.fastPop(movePool, movePool.indexOf('reflect'));
+ if (movePool.includes('lightscreen')) this.fastPop(movePool, movePool.indexOf('lightscreen'));
+ }
+ }
+ if (teamDetails.stickyWeb) {
+ if (movePool.includes('stickyweb')) this.fastPop(movePool, movePool.indexOf('stickyweb'));
+ if (moves.size + movePool.length <= this.maxMoveCount) return;
+ }
+ if (teamDetails.stealthRock) {
+ if (movePool.includes('stealthrock')) this.fastPop(movePool, movePool.indexOf('stealthrock'));
+ if (moves.size + movePool.length <= this.maxMoveCount) return;
+ }
+ if (teamDetails.defog || teamDetails.rapidSpin) {
+ if (movePool.includes('defog')) this.fastPop(movePool, movePool.indexOf('defog'));
+ if (movePool.includes('rapidspin')) this.fastPop(movePool, movePool.indexOf('rapidspin'));
+ if (moves.size + movePool.length <= this.maxMoveCount) return;
+ }
+ if (teamDetails.toxicSpikes) {
+ if (movePool.includes('toxicspikes')) this.fastPop(movePool, movePool.indexOf('toxicspikes'));
+ if (moves.size + movePool.length <= this.maxMoveCount) return;
+ }
+ if (teamDetails.spikes && teamDetails.spikes >= 2) {
+ if (movePool.includes('spikes')) this.fastPop(movePool, movePool.indexOf('spikes'));
+ if (moves.size + movePool.length <= this.maxMoveCount) return;
+ }
+ if (teamDetails.statusCure) {
+ if (movePool.includes('healbell')) this.fastPop(movePool, movePool.indexOf('healbell'));
+ if (moves.size + movePool.length <= this.maxMoveCount) return;
+ }
+
+ if (isDoubles) {
+ const doublesIncompatiblePairs = [
+ // In order of decreasing generalizability
+ [SPEED_CONTROL, SPEED_CONTROL],
+ [HAZARDS, HAZARDS],
+ ['rockslide', 'stoneedge'],
+ [SETUP, ['fakeout', 'helpinghand']],
+ [PROTECT_MOVES, 'wideguard'],
+ [['fierydance', 'fireblast'], 'heatwave'],
+ ['dazzlinggleam', ['fleurcannon', 'moonblast']],
+ ['poisongas', ['toxicspikes', 'willowisp']],
+ [RECOVERY_MOVES, ['healpulse', 'lifedew']],
+ ['healpulse', 'lifedew'],
+ ['haze', 'icywind'],
+ [['hydropump', 'muddywater'], ['muddywater', 'scald']],
+ ['disable', 'encore'],
+ ['freezedry', 'icebeam'],
+ ['energyball', 'leafstorm'],
+ ['earthpower', 'sandsearstorm'],
+ ['coaching', ['helpinghand', 'howl']],
+ ];
+
+ for (const pair of doublesIncompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]);
+
+ if (role !== 'Offensive Protect') this.incompatibleMoves(moves, movePool, PROTECT_MOVES, ['flipturn', 'uturn']);
+ }
+
+ // General incompatibilities
+ const incompatiblePairs = [
+ // These moves don't mesh well with other aspects of the set
+ [statusMoves, ['healingwish', 'switcheroo', 'trick']],
+ [SETUP, PIVOT_MOVES],
+ [SETUP, HAZARDS],
+ [SETUP, ['defog', 'nuzzle', 'toxic', 'yawn', 'haze']],
+ [PHYSICAL_SETUP, PHYSICAL_SETUP],
+ [SPECIAL_SETUP, 'thunderwave'],
+ ['substitute', PIVOT_MOVES],
+ [SPEED_SETUP, ['aquajet', 'rest', 'trickroom']],
+ ['curse', ['irondefense', 'rapidspin']],
+ ['dragondance', 'dracometeor'],
+ ['yawn', 'roar'],
+ ['trick', 'uturn'],
+
+ // These attacks are redundant with each other
+ [['psychic', 'psychicnoise'], ['psyshock', 'psychicnoise']],
+ ['surf', ['hydropump', 'scald']],
+ ['liquidation', 'wavecrash'],
+ ['aquajet', 'flipturn'],
+ ['gigadrain', 'leafstorm'],
+ ['powerwhip', 'hornleech'],
+ ['airslash', 'hurricane'],
+ ['knockoff', 'foulplay'],
+ ['throatchop', ['crunch', 'lashout']],
+ ['doubleedge', ['bodyslam', 'headbutt']],
+ [['fireblast', 'magmastorm'], ['fierydance', 'flamethrower', 'lavaplume']],
+ ['thunderpunch', 'wildcharge'],
+ ['thunderbolt', 'discharge'],
+ ['gunkshot', ['direclaw', 'poisonjab', 'sludgebomb']],
+ ['aurasphere', 'focusblast'],
+ ['closecombat', 'drainpunch'],
+ [['dragonpulse', 'spacialrend'], 'dracometeor'],
+ ['heavyslam', 'flashcannon'],
+ ['alluringvoice', 'dazzlinggleam'],
+ ['defog', 'rapidspin'],
+
+ // These status moves are redundant with each other
+ ['taunt', 'disable'],
+ [['thunderwave', 'toxic'], ['thunderwave', 'willowisp']],
+ [['thunderwave', 'toxic', 'willowisp'], 'toxicspikes'],
+
+ // This space reserved for assorted hardcodes that otherwise make little sense out of context
+ // Landorus and Thundurus
+ ['nastyplot', ['rockslide', 'knockoff']],
+ // Persian
+ ['switcheroo', 'fakeout'],
+ // Amoonguss, though this can work well as a general rule later
+ ['toxic', 'clearsmog'],
+ // Chansey and Blissey
+ ['healbell', 'stealthrock'],
+ // Araquanid and Magnezone
+ ['mirrorcoat', ['hydropump', 'bodypress']],
+ ];
+
+ for (const pair of incompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]);
+
+ if (!types.includes('Ice')) this.incompatibleMoves(moves, movePool, 'icebeam', 'icywind');
+
+ if (!isDoubles) this.incompatibleMoves(moves, movePool, 'taunt', 'encore');
+
+ if (!types.includes('Dark') && teraType !== 'Dark') this.incompatibleMoves(moves, movePool, 'knockoff', 'suckerpunch');
+
+ if (!abilities.includes('Prankster')) this.incompatibleMoves(moves, movePool, 'thunderwave', 'yawn');
+
+ // This space reserved for assorted hardcodes that otherwise make little sense out of context:
+ // To force Close Combat on Barraskewda without locking it to Tera Fighting
+ if (species.id === 'barraskewda') {
+ this.incompatibleMoves(moves, movePool, ['psychicfangs', 'throatchop'], ['poisonjab', 'throatchop']);
+ }
+ // To force Toxic on Quagsire
+ if (species.id === 'quagsire') this.incompatibleMoves(moves, movePool, 'spikes', 'icebeam');
+ // Taunt/Knock should be Cyclizar's flex moveslot
+ if (species.id === 'cyclizar') this.incompatibleMoves(moves, movePool, 'taunt', 'knockoff');
+ // To force Stealth Rock on Camerupt
+ if (species.id === 'camerupt') this.incompatibleMoves(moves, movePool, 'roar', 'willowisp');
+ // nothing else rolls these lol
+ if (species.id === 'coalossal') this.incompatibleMoves(moves, movePool, 'flamethrower', 'overheat');
+ }
+
+ override randomMoveset(
+ types: string[],
+ abilities: string[],
+ teamDetails: RandomTeamsTypes.TeamDetails,
+ species: Species,
+ isLead: boolean,
+ isDoubles: boolean,
+ movePool: string[],
+ teraType: string,
+ role: RandomTeamsTypes.Role,
+ ): Set {
+ const moves = new Set();
+ let counter = this.queryMoves(moves, species, teraType, abilities);
+ this.cullMovePool(types, moves, abilities, counter, movePool, teamDetails, species, isLead, isDoubles, teraType, role);
+
+ // If there are only four moves, add all moves and return early
+ if (movePool.length <= this.maxMoveCount) {
+ for (const moveid of movePool) {
+ moves.add(moveid);
+ }
+ return moves;
+ }
+
+ const runEnforcementChecker = (checkerName: string) => {
+ if (!this.moveEnforcementCheckers[checkerName]) return false;
+ return this.moveEnforcementCheckers[checkerName](
+ movePool, moves, abilities, types, counter, species, teamDetails, isLead, isDoubles, teraType, role
+ );
+ };
+
+ if (role === 'Tera Blast user') {
+ counter = this.addMove('terablast', moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ // Add required move (e.g. Relic Song for Meloetta-P)
+ if (species.requiredMove) {
+ const move = this.dex.moves.get(species.requiredMove).id;
+ counter = this.addMove(move, moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+
+ // Add other moves you really want to have, e.g. STAB, recovery, setup.
+
+ // Enforce Facade if Guts is a possible ability
+ if (movePool.includes('facade') && abilities.includes('Guts')) {
+ counter = this.addMove('facade', moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+
+ // Enforce Night Shade, Revelation Dance, Revival Blessing, and Sticky Web
+ for (const moveid of ['nightshade', 'revelationdance', 'revivalblessing', 'stickyweb']) {
+ if (movePool.includes(moveid)) {
+ counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+
+ // Enforce Trick Room on Doubles Wallbreaker
+ if (movePool.includes('trickroom') && role === 'Doubles Wallbreaker') {
+ counter = this.addMove('trickroom', moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+
+ // Enforce hazard removal on Bulky Support if the team doesn't already have it
+ if (role === 'Bulky Support' && !teamDetails.defog && !teamDetails.rapidSpin) {
+ if (movePool.includes('rapidspin')) {
+ counter = this.addMove('rapidspin', moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ if (movePool.includes('defog')) {
+ counter = this.addMove('defog', moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+
+ // Enforce Knock Off on pure Normal- and Fighting-types in singles
+ if (!isDoubles && types.length === 1 && (types.includes('Normal') || types.includes('Fighting'))) {
+ if (movePool.includes('knockoff')) {
+ counter = this.addMove('knockoff', moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+
+ // Enforce Flip Turn on pure Water-type Wallbreakers
+ if (types.length === 1 && types.includes('Water') &&
+ role === 'Wallbreaker' && movePool.includes('flipturn')) {
+ counter = this.addMove('flipturn', moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+
+ // Enforce Spore on Smeargle
+ if (species.id === 'smeargle') {
+ if (movePool.includes('spore')) {
+ counter = this.addMove('spore', moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+
+ // Enforce moves in doubles
+ if (isDoubles) {
+ const doublesEnforcedMoves = ['auroraveil', 'mortalspin', 'spore'];
+ for (const moveid of doublesEnforcedMoves) {
+ if (movePool.includes(moveid)) {
+ counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+ // Enforce Fake Out on slow Pokemon
+ if (movePool.includes('fakeout') && species.baseStats.spe <= 50) {
+ counter = this.addMove('fakeout', moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ // Enforce Tailwind on Prankster and Gale Wings users
+ if (movePool.includes('tailwind') && (abilities.includes('Prankster') || abilities.includes('Gale Wings'))) {
+ counter = this.addMove('tailwind', moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ // Enforce Thunder Wave on Prankster users as well
+ if (movePool.includes('thunderwave') && abilities.includes('Prankster')) {
+ counter = this.addMove('thunderwave', moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+
+ // Enforce STAB priority
+ if (
+ ['Bulky Attacker', 'Bulky Setup', 'Wallbreaker', 'Doubles Wallbreaker'].includes(role) ||
+ PRIORITY_POKEMON.includes(species.id)
+ ) {
+ const priorityMoves = [];
+ for (const moveid of movePool) {
+ const move = this.dex.moves.get(moveid);
+ const moveType = this.getMoveType(move, species, abilities, teraType);
+ if (
+ types.includes(moveType) && (move.priority > 0 || (moveid === 'grassyglide' && abilities.includes('Grassy Surge'))) &&
+ (move.basePower || move.basePowerCallback)
+ ) {
+ priorityMoves.push(moveid);
+ }
+ }
+ if (priorityMoves.length) {
+ const moveid = this.sample(priorityMoves);
+ counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+
+ // Enforce a single STAB for Moltres
+ if (species.id === 'moltres') {
+ const typeToEnforce = this.randomChance(1, 2) ? 'Fire' : 'Flying';
+
+ const stabMoves = [];
+ for (const moveid of movePool) {
+ const move = this.dex.moves.get(moveid);
+ const moveType = this.getMoveType(move, species, abilities, teraType);
+ if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && typeToEnforce === moveType) {
+ stabMoves.push(moveid);
+ }
+ }
+ while (runEnforcementChecker(typeToEnforce)) {
+ if (!stabMoves.length) break;
+ const moveid = this.sampleNoReplace(stabMoves);
+ counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+
+ // Enforce STAB
+ for (const type of types) {
+ // Moltres already has STAB, so ignore this block
+ if (species.id === 'moltres') break;
+ // prevents Meowscarada from being enforced stab moves
+ if (species.id === 'meowscarada') break;
+ // Check if a STAB move of that type should be required
+ const stabMoves = [];
+ for (const moveid of movePool) {
+ const move = this.dex.moves.get(moveid);
+ const moveType = this.getMoveType(move, species, abilities, teraType);
+ if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && type === moveType) {
+ stabMoves.push(moveid);
+ }
+ }
+ while (runEnforcementChecker(type)) {
+ if (!stabMoves.length) break;
+ const moveid = this.sampleNoReplace(stabMoves);
+ counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+
+ // Enforce Tera STAB
+ // prevents Meowscarada from being enforced stab moves (since it has Protean and doesn't care)
+ if (!counter.get('stabtera') && !['Bulky Support', 'Doubles Support'].includes(role) &&
+ !abilities.includes('Protean')) {
+ const stabMoves = [];
+ for (const moveid of movePool) {
+ const move = this.dex.moves.get(moveid);
+ const moveType = this.getMoveType(move, species, abilities, teraType);
+ if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && teraType === moveType) {
+ stabMoves.push(moveid);
+ }
+ }
+ if (stabMoves.length) {
+ const moveid = this.sample(stabMoves);
+ counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+
+ // If no STAB move was added, add a STAB move
+ // prevents Meowscarada from being enforced stab moves (since it has Protean and doesn't care)
+ if (!counter.get('stab') && !abilities.includes('Protean')) {
+ const stabMoves = [];
+ for (const moveid of movePool) {
+ const move = this.dex.moves.get(moveid);
+ const moveType = this.getMoveType(move, species, abilities, teraType);
+ if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && types.includes(moveType)) {
+ stabMoves.push(moveid);
+ }
+ }
+ if (stabMoves.length) {
+ const moveid = this.sample(stabMoves);
+ counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+
+ // Enforce recovery
+ if (['Bulky Support', 'Bulky Attacker', 'Bulky Setup'].includes(role)) {
+ const recoveryMoves = movePool.filter(moveid => RECOVERY_MOVES.includes(moveid));
+ if (recoveryMoves.length) {
+ const moveid = this.sample(recoveryMoves);
+ counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+
+ // Enforce setup
+ if (role.includes('Setup') || role === 'Tera Blast user') {
+ // First, try to add a non-Speed setup move
+ const nonSpeedSetupMoves = movePool.filter(moveid => SETUP.includes(moveid) && !SPEED_SETUP.includes(moveid));
+ if (nonSpeedSetupMoves.length) {
+ const moveid = this.sample(nonSpeedSetupMoves);
+ counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ } else {
+ // No non-Speed setup moves, so add any (Speed) setup move
+ const setupMoves = movePool.filter(moveid => SETUP.includes(moveid));
+ if (setupMoves.length) {
+ const moveid = this.sample(setupMoves);
+ counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+ }
+
+ // Enforce redirecting moves and Fake Out on Doubles Support
+ if (role === 'Doubles Support') {
+ for (const moveid of ['fakeout', 'followme', 'ragepowder']) {
+ if (movePool.includes(moveid)) {
+ counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+ }
+
+ // Enforce Protect
+ if (role.includes('Protect')) {
+ const protectMoves = movePool.filter(moveid => PROTECT_MOVES.includes(moveid));
+ if (protectMoves.length) {
+ const moveid = this.sample(protectMoves);
+ counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+
+ // Enforce a move not on the noSTAB list
+ if (!counter.damagingMoves.size) {
+ // Choose an attacking move
+ const attackingMoves = [];
+ for (const moveid of movePool) {
+ const move = this.dex.moves.get(moveid);
+ if (!this.noStab.includes(moveid) && (move.category !== 'Status')) attackingMoves.push(moveid);
+ }
+ if (attackingMoves.length) {
+ const moveid = this.sample(attackingMoves);
+ counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+
+ // Enforce coverage move
+ if (!['AV Pivot', 'Fast Support', 'Bulky Support', 'Bulky Protect', 'Doubles Support'].includes(role)) {
+ if (counter.damagingMoves.size === 1) {
+ // Find the type of the current attacking move
+ const currentAttackType = counter.damagingMoves.values().next().value!.type;
+ // Choose an attacking move that is of different type to the current single attack
+ const coverageMoves = [];
+ for (const moveid of movePool) {
+ const move = this.dex.moves.get(moveid);
+ const moveType = this.getMoveType(move, species, abilities, teraType);
+ if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback)) {
+ if (currentAttackType !== moveType) coverageMoves.push(moveid);
+ }
+ }
+ if (coverageMoves.length) {
+ const moveid = this.sample(coverageMoves);
+ counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+ }
+
+ // Add (moves.size < this.maxMoveCount) as a condition if moves is getting larger than 4 moves.
+ // If you want moves to be favored but not required, add something like && this.randomChance(1, 2) to your condition.
+
+ // Choose remaining moves randomly from movepool and add them to moves list:
+ while (moves.size < this.maxMoveCount && movePool.length) {
+ if (moves.size + movePool.length <= this.maxMoveCount) {
+ for (const moveid of movePool) {
+ moves.add(moveid);
+ }
+ break;
+ }
+ const moveid = this.sample(movePool);
+ counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ for (const pair of MOVE_PAIRS) {
+ if (moveid === pair[0] && movePool.includes(pair[1])) {
+ counter = this.addMove(pair[1], moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ if (moveid === pair[1] && movePool.includes(pair[0])) {
+ counter = this.addMove(pair[0], moves, types, abilities, teamDetails, species, isLead, isDoubles,
+ movePool, teraType, role);
+ }
+ }
+ }
+ return moves;
+ }
+
+ override getPriorityItem(
+ ability: string,
+ types: string[],
+ moves: Set,
+ counter: MoveCounter,
+ teamDetails: RandomTeamsTypes.TeamDetails,
+ species: Species,
+ isLead: boolean,
+ isDoubles: boolean,
+ teraType: string,
+ role: RandomTeamsTypes.Role,
+ ) {
+ if (!isDoubles) {
+ if (role === 'Fast Bulky Setup' && (ability === 'Quark Drive' || ability === 'Protosynthesis')) {
+ return 'Booster Energy';
+ }
+ if (species.id === 'lokix') {
+ return (role === 'Fast Attacker') ? 'Silver Powder' : 'Life Orb';
+ }
+ }
+ if (species.requiredItems) {
+ // Z-Crystals aren't available in Gen 9, so require Plates
+ if (species.baseSpecies === 'Arceus') {
+ return species.requiredItems[0];
+ }
+ return this.sample(species.requiredItems);
+ }
+ if (role === 'AV Pivot') return 'Assault Vest';
+ // other
+ if (moves.has('substitute')) return 'Leftovers';
+ if (moves.has('protect') && ability !== 'Speed Boost') return 'Leftovers';
+ if (counter.get('skilllink') && ability !== 'Skill Link' && species.id !== 'breloom') return 'Loaded Dice';
+ if (moves.has('shellsmash') && ability !== 'Weak Armor') return 'White Herb';
+ if ((ability === 'Guts' || moves.has('facade')) && !moves.has('sleeptalk')) {
+ return (types.includes('Fire') || ability === 'Toxic Boost' || ability === 'Poison Heal') ? 'Toxic Orb' : 'Flame Orb';
+ }
+ if (['healingwish', 'switcheroo', 'trick'].some(m => moves.has(m))) {
+ if (
+ species.baseStats.spe >= 60 && species.baseStats.spe <= 108 &&
+ role !== 'Wallbreaker' && role !== 'Doubles Wallbreaker' && !counter.get('priority')
+ ) {
+ return 'Choice Scarf';
+ } else {
+ return (counter.get('Physical') > counter.get('Special')) ? 'Choice Band' : 'Choice Specs';
+ }
+ }
+ if (
+ role === 'Wallbreaker' && (counter.get('Physical') > counter.get('Special')) && !counter.get('Status')
+ ) {
+ return 'Choice Band';
+ }
+ if (
+ role === 'Wallbreaker' && (counter.get('Physical') < counter.get('Special')) && !counter.get('Status')
+ ) {
+ return 'Choice Specs';
+ }
+ if (ability === 'Poison Heal' || ability === 'Quick Feet') return 'Toxic Orb';
+ if (moves.has('acrobatics') && ability !== 'Quark Drive' && ability !== 'Protosynthesis') return '';
+ if (moves.has('auroraveil') || moves.has('lightscreen') && moves.has('reflect')) return 'Light Clay';
+ if (ability === 'Gluttony') return `${this.sample(['Aguav', 'Figy', 'Iapapa', 'Mago', 'Wiki'])} Berry`;
+ if (
+ ['Cheek Pouch', 'Cud Chew', 'Harvest', 'Ripen'].some(m => ability === m) ||
+ moves.has('bellydrum') || moves.has('filletaway')
+ ) {
+ return 'Sitrus Berry';
+ }
+ if (this.dex.getEffectiveness('Rock', species) >= 2) return 'Heavy-Duty Boots';
+ if (species.nfe) return 'Eviolite';
+ if (['Bulky Attacker', 'Bulky Support', 'Bulky Setup'].some(m => role === (m))) return 'Leftovers';
+ if (role === 'Fast Support' || role === 'Fast Bulky Setup') {
+ return (counter.get('Physical') + counter.get('Special') >= 3) ? 'Life Orb' : 'Leftovers';
+ }
+ }
+
+ override randomSet(
+ s: string | Species,
+ teamDetails: RandomTeamsTypes.TeamDetails = {},
+ isLead = false,
+ isDoubles = false
+ ): RandomTeamsTypes.RandomSet {
+ const species = this.dex.species.get(s);
+ const forme = this.getForme(species);
+ const sets = this.randomSets[species.id]["sets"];
+ const possibleSets: RandomTeamsTypes.RandomSetData[] = [];
+
+ // const ruleTable = this.dex.formats.getRuleTable(this.format);
+
+ for (const set of sets) {
+ // Prevent Fast Bulky Setup on lead Paradox Pokemon, since it generates Booster Energy.
+ const abilities = set.abilities!;
+ if (
+ isLead && (abilities.includes('Protosynthesis') || abilities.includes('Quark Drive')) &&
+ set.role === 'Fast Bulky Setup'
+ ) continue;
+ // Prevent Tera Blast user if the team already has one, or if Terastallizion is prevented.
+ if (teamDetails.teraBlast && set.role === 'Tera Blast user') {
+ continue;
+ }
+ possibleSets.push(set);
+ }
+ const set = this.sampleIfArray(possibleSets);
+ const role = set.role;
+ const movePool: string[] = [];
+ for (const movename of set.movepool) {
+ movePool.push(this.dex.moves.get(movename).id);
+ }
+ const teraTypes = set.teraTypes!;
+ let teraType = this.sampleIfArray(teraTypes);
+
+ let ability = '';
+ let item = undefined;
+
+ const evs = { hp: 85, atk: 85, def: 85, spa: 85, spd: 85, spe: 85 };
+ const ivs = { hp: 31, atk: 31, def: 31, spa: 31, spd: 31, spe: 31 };
+
+ const types = [];
+ types[0] = species.types[0];
+ if (species.types[1]) types[1] = species.types[1];
+ const abilities = set.abilities!;
+
+ // Get moves
+ const moves = this.randomMoveset(types, abilities, teamDetails, species, isLead, isDoubles, movePool, teraType, role);
+ const counter = this.queryMoves(moves, species, teraType, abilities);
+
+ // Get ability
+ ability = this.getAbility(types, moves, abilities, counter, teamDetails, species, isLead, isDoubles, teraType, role);
+
+ // Get items
+ // First, the priority items
+ item = this.getPriorityItem(ability, types, moves, counter, teamDetails, species, isLead, isDoubles, teraType, role);
+ if (item === undefined) {
+ if (isDoubles) {
+ item = this.getDoublesItem(ability, types, moves, counter, teamDetails, species, isLead, teraType, role);
+ } else {
+ item = this.getItem(ability, types, moves, counter, teamDetails, species, isLead, teraType, role);
+ }
+ }
+
+ // Get level
+ const level = this.getLevel(species, isDoubles);
+
+ // Prepare optimal HP
+ const srImmunity = ability === 'Magic Guard' || item === 'Heavy-Duty Boots';
+ let srWeakness = srImmunity ? 0 : this.dex.getEffectiveness('Rock', species);
+ // Crash damage move users want an odd HP to survive two misses
+ if (['axekick', 'highjumpkick', 'jumpkick'].some(m => moves.has(m))) srWeakness = 2;
+ while (evs.hp > 1) {
+ const hp = Math.floor(Math.floor(2 * species.baseStats.hp + ivs.hp + Math.floor(evs.hp / 4) + 100) * level / 100 + 10);
+ if ((moves.has('substitute') && ['Sitrus Berry', 'Salac Berry'].includes(item))) {
+ // Two Substitutes should activate Sitrus Berry
+ if (hp % 4 === 0) break;
+ } else if ((moves.has('bellydrum') || moves.has('filletaway')) && (item === 'Sitrus Berry' || ability === 'Gluttony')) {
+ // Belly Drum should activate Sitrus Berry
+ if (hp % 2 === 0) break;
+ } else if (moves.has('substitute') && moves.has('endeavor')) {
+ // Luvdisc should be able to Substitute down to very low HP
+ if (hp % 4 > 0) break;
+ } else {
+ // Maximize number of Stealth Rock switch-ins
+ if (srWeakness <= 0 || ability === 'Regenerator' || ['Leftovers', 'Life Orb', 'Eviolite'].includes(item)) break;
+ if (item !== 'Sitrus Berry' && hp % (4 / srWeakness) > 0) break;
+ // Minimise number of Stealth Rock switch-ins to activate Sitrus Berry
+ if (item === 'Sitrus Berry' && hp % (4 / srWeakness) === 0) break;
+ }
+ evs.hp -= 4;
+ }
+
+ // Minimize confusion damage
+ const noAttackStatMoves = [...moves].every(m => {
+ const move = this.dex.moves.get(m);
+ if (move.damageCallback || move.damage) return true;
+ if (move.id === 'shellsidearm') return false;
+ // Magearna and doubles Dragonite, though these can work well as a general rule
+ if (move.id === 'terablast' && (
+ species.id === 'porygon2' || moves.has('shiftgear') || species.baseStats.atk > species.baseStats.spa)
+ ) return false;
+ return move.category !== 'Physical' || move.id === 'bodypress' || move.id === 'foulplay';
+ });
+ // prevents Illumise (who can turn into Volbeat with Physical moves) from having 0 Atk EVs
+ if (noAttackStatMoves && !moves.has('transform') && this.format.mod !== 'partnersincrime' &&
+ species.id !== 'illumise') {
+ evs.atk = 0;
+ ivs.atk = 0;
+ }
+
+ // Enforce Tera Type after all set generation is done to prevent infinite generation
+ if (this.forceTeraType) teraType = this.forceTeraType;
+
+ // shuffle moves to add more randomness to camomons
+ const shuffledMoves = Array.from(moves);
+ this.prng.shuffle(shuffledMoves);
+ return {
+ name: species.baseSpecies,
+ species: forme,
+ gender: species.baseSpecies === 'Greninja' ? 'M' : (species.gender || (this.random(2) ? 'F' : 'M')),
+ shiny: this.randomChance(1, 1024),
+ level,
+ moves: shuffledMoves,
+ ability,
+ evs,
+ ivs,
+ item,
+ teraType,
+ role,
+ };
+ }
+
+ override randomSets: { [species: string]: RandomTeamsTypes.RandomSpeciesData } = require('./random-sets.json');
+
+ random6x6Team() {
+ this.enforceNoDirectCustomBanlistChanges();
+
+ const seed = this.prng.getSeed();
+ const ruleTable = this.dex.formats.getRuleTable(this.format);
+ const pokemon: RandomTeamsTypes.RandomSet[] = [];
+
+ // For Monotype
+ const isMonotype = !!this.forceMonotype || ruleTable.has('sametypeclause');
+ const isDoubles = this.format.gameType !== 'singles';
+ const typePool = this.dex.types.names().filter(name => name !== "Stellar");
+ const type = this.forceMonotype || this.sample(typePool);
+
+ // PotD stuff
+ // const usePotD = global.Config && Config.potd && ruleTable.has('potd');
+ // const potd = usePotD ? this.dex.species.get(Config.potd) : null;
+
+ const baseFormes: { [k: string]: number } = {};
+
+ const typeCount: { [k: string]: number } = {};
+ const typeComboCount: { [k: string]: number } = {};
+ const typeWeaknesses: { [k: string]: number } = {};
+ const typeDoubleWeaknesses: { [k: string]: number } = {};
+ const teamDetails: RandomTeamsTypes.TeamDetails = {};
+
+ const pokemonList = Object.keys(this.randomSets);
+ const [pokemonPool, baseSpeciesPool] = this.getPokemonPool(type, pokemon, isMonotype, pokemonList);
+
+ let leadsRemaining = this.format.gameType === 'doubles' ? 2 : 1;
+ while (baseSpeciesPool.length && pokemon.length < this.maxTeamSize) {
+ const baseSpecies = this.sampleNoReplace(baseSpeciesPool);
+ // const z = 0;
+ const species = this.dex.species.get(this.sample(pokemonPool[baseSpecies]));
+ if (!species.exists) continue;
+
+ // Limit to one of each species (Species Clause)
+ if (baseFormes[species.baseSpecies]) continue;
+
+ // Treat Ogerpon formes and Terapagos like the Tera Blast user role; reject if team has one already
+ if (['ogerpon', 'ogerponhearthflame', 'terapagos'].includes(species.id) && teamDetails.teraBlast) continue;
+
+ const types = species.types;
+ const typeCombo = types.slice().sort().join();
+ const weakToFreezeDry = (
+ this.dex.getEffectiveness('Ice', species) > 0 ||
+ (this.dex.getEffectiveness('Ice', species) > -2 && types.includes('Water'))
+ );
+ // Dynamically scale limits for different team sizes. The default and minimum value is 1.
+ const limitFactor = Math.round(this.maxTeamSize / 6) || 1;
+
+ // Limit three of any type combination in Monotype
+ if (!this.forceMonotype && isMonotype && (typeComboCount[typeCombo] >= 3 * limitFactor)) continue;
+
+ // The Pokemon of the Day
+ // if (potd?.exists && (pokemon.length === 1 || this.maxTeamSize === 1)) species = potd;
+
+ // testing code
+ // if (pokemon.length === 0 || this.maxTeamSize === 1) species = this.dex.species.get('Terapagos');
+
+ let set: RandomTeamsTypes.RandomSet;
+
+ if (leadsRemaining) {
+ if (
+ isDoubles && DOUBLES_NO_LEAD_POKEMON.includes(species.baseSpecies) ||
+ !isDoubles && NO_LEAD_POKEMON.includes(species.baseSpecies)
+ ) {
+ if (pokemon.length + leadsRemaining === this.maxTeamSize) continue;
+ set = this.randomSet(species, teamDetails, false, isDoubles);
+ if (teamDetails.teraBlast) continue;
+ pokemon.push(set);
+ } else {
+ set = this.randomSet(species, teamDetails, true, isDoubles);
+ // if (teamDetails.teraBlast) continue;
+ pokemon.unshift(set);
+ leadsRemaining--;
+ }
+ } else {
+ set = this.randomSet(species, teamDetails, false, isDoubles);
+ // if (teamDetails.teraBlast) continue;
+ pokemon.push(set);
+ }
+
+ // Don't bother tracking details for the last Pokemon
+ if (pokemon.length === this.maxTeamSize) break;
+
+ // Now that our Pokemon has passed all checks, we can increment our counters
+ baseFormes[species.baseSpecies] = 1;
+
+ // Increment type counters
+ for (const typeName of types) {
+ if (typeName in typeCount) {
+ typeCount[typeName]++;
+ } else {
+ typeCount[typeName] = 1;
+ }
+ }
+ if (typeCombo in typeComboCount) {
+ typeComboCount[typeCombo]++;
+ } else {
+ typeComboCount[typeCombo] = 1;
+ }
+
+ // Increment weakness counter
+ for (const typeName of this.dex.types.names()) {
+ // it's weak to the type
+ if (this.dex.getEffectiveness(typeName, species) > 0) {
+ typeWeaknesses[typeName]++;
+ }
+ if (this.dex.getEffectiveness(typeName, species) > 1) {
+ typeDoubleWeaknesses[typeName]++;
+ }
+ }
+ // Count Dry Skin/Fluffy as Fire weaknesses
+ if (['Dry Skin', 'Fluffy'].includes(set.ability) && this.dex.getEffectiveness('Fire', species) === 0) {
+ typeWeaknesses['Fire']++;
+ }
+ if (weakToFreezeDry) typeWeaknesses['Freeze-Dry']++;
+
+ // Increment level 100 counter
+ // if (set.level === 100) numMaxLevelPokemon++;
+
+ // Track what the team has
+ if (set.ability === 'Drizzle' || set.moves.includes('raindance')) teamDetails.rain = 1;
+ if (set.ability === 'Drought' || set.ability === 'Orichalcum Pulse' || set.moves.includes('sunnyday')) {
+ teamDetails.sun = 1;
+ }
+ if (set.ability === 'Sand Stream') teamDetails.sand = 1;
+ if (set.ability === 'Snow Warning' || set.moves.includes('snowscape') || set.moves.includes('chillyreception')) {
+ teamDetails.snow = 1;
+ }
+ if (set.moves.includes('healbell')) teamDetails.statusCure = 1;
+ if (set.moves.includes('spikes') || set.moves.includes('ceaselessedge')) {
+ teamDetails.spikes = (teamDetails.spikes || 0) + 1;
+ }
+ if (set.moves.includes('toxicspikes') || set.ability === 'Toxic Debris') teamDetails.toxicSpikes = 1;
+ if (set.moves.includes('stealthrock') || set.moves.includes('stoneaxe')) teamDetails.stealthRock = 1;
+ if (set.moves.includes('stickyweb')) teamDetails.stickyWeb = 1;
+ if (set.moves.includes('defog')) teamDetails.defog = 1;
+ if (set.moves.includes('rapidspin') || set.moves.includes('mortalspin')) teamDetails.rapidSpin = 1;
+ if (set.moves.includes('auroraveil') || (set.moves.includes('reflect') && set.moves.includes('lightscreen'))) {
+ teamDetails.screens = 1;
+ }
+ if (set.role === 'Tera Blast user' || species.baseSpecies === "Ogerpon" || species.baseSpecies === "Terapagos") {
+ teamDetails.teraBlast = 1;
+ }
+ }
+ if (pokemon.length < this.maxTeamSize && pokemon.length < 12) { // large teams sometimes cannot be built
+ throw new Error(`Could not build a random team for ${this.format} (seed=${seed})`);
+ }
+
+ return pokemon;
+ }
+}
+
+export default Random6x6Teams;
From 95416b29dc0bb8043deeba0e77f9a26e7cc41a10 Mon Sep 17 00:00:00 2001
From: Kris Johnson <11083252+KrisXV@users.noreply.github.com>
Date: Sun, 1 Feb 2026 12:50:14 -0700
Subject: [PATCH 56/66] Move Pet Mod spotlight ladders
---
config/formats.ts | 84 +++++++++++++++++++++++------------------------
1 file changed, 42 insertions(+), 42 deletions(-)
diff --git a/config/formats.ts b/config/formats.ts
index ef305c1447..98ef07caa5 100644
--- a/config/formats.ts
+++ b/config/formats.ts
@@ -674,6 +674,48 @@ export const Formats: import('../sim/dex-formats').FormatList = [
'Kyogre', 'Kyurem-Black', 'Rayquaza', 'Shaymin-Sky', 'Zacian', 'Zekrom', 'Power Construct', 'Light Clay', 'Ultranecrozium Z', 'Last Respects',
],
},
+ {
+ name: "[Gen 9] Six by Six Random Battle",
+ desc: `A Gen 9 micrometa featuring only 6 Pokemon with 6 forms each.`,
+ mod: 'sixbysix',
+ team: 'random6x6',
+ ruleset: [
+ 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Illusion Level Mod',
+ 'Terastal Clause', 'Data Preview', 'Sprite Viewer',
+ ],
+ onBegin() {
+ this.add('-message', `Welcome to Six by Six!`);
+ this.add('-message', `This is a micrometa featuring just 6 Pokemon, each with 6 forms each!`);
+ this.add('-message', `You can find our thread and metagame resources here:`);
+ this.add('-message', `https://www.smogon.com/forums/threads/3769141/`);
+ },
+ onSwitchInPriority: 100,
+ onSwitchIn(pokemon) {
+ if ((pokemon.illusion || pokemon).getTypes(true, true).join('/') !==
+ this.dex.forGen(9).species.get((pokemon.illusion || pokemon).species.name).types.join('/') &&
+ !pokemon.terastallized) {
+ this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]');
+ }
+ },
+ },
+ {
+ name: "[Gen 9] ChatBats",
+ desc: `A Random Battles Solomod made by the Pet Mods chatroom on Showdown.`,
+ mod: 'chatbats',
+ team: 'randomChatBats',
+ ruleset: ['Obtainable', 'Species Clause', 'HP Percentage Mod', 'Sleep Clause Mod', 'Data Preview', 'Cancel Mod'],
+ onSwitchIn(pokemon) {
+ this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]');
+ },
+ // Dachsbun causes Koraidon to generate on enemy team. Implemented here.
+ onBegin() {
+ this.add(`raw|Need help with all of the new moves, abilities, and wacky sets?
Then make sure to check out the ChatBats Compendium or use /dt! `);
+ this.add(`raw|Welcome to ChatBats!`);
+ this.add(`raw|ChatBats is a Random Battles format created by the Pet Mods room here on Showdown!`);
+ this.add(`raw|If you want to help create new sets, we will host events periodically in the Pet Mods room!`);
+ this.add(`raw|Anyone who is there can help create a new set for a random mon, changing moves, abilities, stats, and even custom formes.`);
+ },
+ },
{
name: "[Gen 3] Ubers",
mod: 'gen3',
@@ -3383,30 +3425,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
{
section: "Pet Mods",
},
- {
- name: "[Gen 9] Six by Six Random Battle",
- desc: `A Gen 9 micrometa featuring only 6 Pokemon with 6 forms each.`,
- mod: 'sixbysix',
- team: 'random6x6',
- ruleset: [
- 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Illusion Level Mod',
- 'Terastal Clause', 'Data Preview', 'Sprite Viewer',
- ],
- onBegin() {
- this.add('-message', `Welcome to Six by Six!`);
- this.add('-message', `This is a micrometa featuring just 6 Pokemon, each with 6 forms each!`);
- this.add('-message', `You can find our thread and metagame resources here:`);
- this.add('-message', `https://www.smogon.com/forums/threads/3769141/`);
- },
- onSwitchInPriority: 100,
- onSwitchIn(pokemon) {
- if ((pokemon.illusion || pokemon).getTypes(true, true).join('/') !==
- this.dex.forGen(9).species.get((pokemon.illusion || pokemon).species.name).types.join('/') &&
- !pokemon.terastallized) {
- this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]');
- }
- },
- },
{
name: "[Gen 9] Six by Six", // Roomtours
desc: `A Gen 9 micrometa featuring only 6 Pokemon with 6 forms each.`,
@@ -3443,24 +3461,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
}
},
},
- {
- name: "[Gen 9] ChatBats",
- desc: `A Random Battles Solomod made by the Pet Mods chatroom on Showdown.`,
- mod: 'chatbats',
- team: 'randomChatBats',
- ruleset: ['Obtainable', 'Species Clause', 'HP Percentage Mod', 'Sleep Clause Mod', 'Data Preview', 'Cancel Mod'],
- onSwitchIn(pokemon) {
- this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]');
- },
- // Dachsbun causes Koraidon to generate on enemy team. Implemented here.
- onBegin() {
- this.add(`raw|Need help with all of the new moves, abilities, and wacky sets?
Then make sure to check out the ChatBats Compendium or use /dt! `);
- this.add(`raw|Welcome to ChatBats!`);
- this.add(`raw|ChatBats is a Random Battles format created by the Pet Mods room here on Showdown!`);
- this.add(`raw|If you want to help create new sets, we will host events periodically in the Pet Mods room!`);
- this.add(`raw|Anyone who is there can help create a new set for a random mon, changing moves, abilities, stats, and even custom formes.`);
- },
- },
{
name: "[Gen 9] Legends Z-A OU",
desc: `Speculative turn-based metagame using Pokémon obtainable in Legends: Z-A, but with National Dex learnsets.`,
From ccdc32dd7cde25fd9e4bed64820e885f66e78a4e Mon Sep 17 00:00:00 2001
From: ACakeWearingAHat <45981036+ACakeWearingAHat@users.noreply.github.com>
Date: Sun, 1 Feb 2026 14:00:57 -0600
Subject: [PATCH 57/66] Randomized format set updates (#11728)
* Randomized format set updates
* revert some changes from last month
* lint
* further updates
* Gen 1 changes
* Re-split whimsicott in gen 9 doubles
* Merge arceus-ghost sets (cosmetic change)
* Don't duplicate subseed on whimsicott
* Replace Fake Tears with twave on screens meowstic and merge roles
* doubles screens grimmsnarl: +twave
* Update SD silvally ice and psychic in gen 8
---------
Co-authored-by: Kelvin Liu <115855253+livid-washed@users.noreply.github.com>
---
data/random-battles/gen1/data.json | 13 +-
data/random-battles/gen3/sets.json | 43 +++--
data/random-battles/gen3/teams.ts | 6 -
data/random-battles/gen4/sets.json | 16 +-
data/random-battles/gen5/sets.json | 13 +-
data/random-battles/gen6/sets.json | 45 ++---
data/random-battles/gen6/teams.ts | 10 +-
data/random-battles/gen7/sets.json | 59 ++++---
data/random-battles/gen7/teams.ts | 10 +-
data/random-battles/gen8/data.json | 10 +-
data/random-battles/gen9/doubles-sets.json | 184 ++++++++++++++-------
data/random-battles/gen9/sets.json | 68 +++++---
data/random-battles/gen9/teams.ts | 17 +-
data/random-battles/gen9baby/sets.json | 6 +-
14 files changed, 300 insertions(+), 200 deletions(-)
diff --git a/data/random-battles/gen1/data.json b/data/random-battles/gen1/data.json
index 7c3ff071dd..f6ebda9799 100644
--- a/data/random-battles/gen1/data.json
+++ b/data/random-battles/gen1/data.json
@@ -574,7 +574,8 @@
},
"mrmime": {
"level": 75,
- "moves": ["psychic", "seismictoss", "thunderbolt", "thunderwave"]
+ "moves": ["psychic", "thunderbolt", "thunderwave"],
+ "exclusiveMoves": ["counter", "seismictoss", "seismictoss"]
},
"scyther": {
"level": 75,
@@ -608,7 +609,8 @@
},
"gyarados": {
"level": 74,
- "moves": ["blizzard", "bodyslam", "bodyslam", "hyperbeam", "thunderbolt"],
+ "moves": ["blizzard", "hyperbeam", "thunderbolt"],
+ "essentialMoves": ["bodyslam"],
"exclusiveMoves": ["hydropump", "surf", "surf"]
},
"lapras": {
@@ -658,8 +660,7 @@
},
"kabuto": {
"level": 88,
- "moves": ["blizzard", "bodyslam", "slash"],
- "exclusiveMoves": ["hydropump", "surf", "surf"]
+ "moves": ["blizzard", "bodyslam", "slash", "surf"]
},
"kabutops": {
"level": 75,
@@ -704,8 +705,8 @@
},
"dragonite": {
"level": 74,
- "moves": ["bodyslam", "hyperbeam", "thunderbolt", "thunderwave", "thunderwave"],
- "essentialMoves": ["blizzard"]
+ "moves": ["bodyslam", "hyperbeam", "thunderbolt"],
+ "essentialMoves": ["blizzard", "thunderwave"]
},
"mewtwo": {
"level": 60,
diff --git a/data/random-battles/gen3/sets.json b/data/random-battles/gen3/sets.json
index 7dd8706e39..4549e95064 100644
--- a/data/random-battles/gen3/sets.json
+++ b/data/random-battles/gen3/sets.json
@@ -387,7 +387,7 @@
"sets": [
{
"role": "Setup Sweeper",
- "movepool": ["calmmind", "encore", "firepunch", "icepunch", "psychic", "recover", "substitute", "thunderpunch"],
+ "movepool": ["calmmind", "encore", "firepunch", "hiddenpowerdark", "psychic", "recover", "substitute", "thunderpunch"],
"abilities": ["Synchronize"],
"preferredTypes": ["Fire"]
}
@@ -474,7 +474,7 @@
},
{
"role": "Setup Sweeper",
- "movepool": ["calmmind", "psychic", "rest", "surf"],
+ "movepool": ["calmmind", "psychic", "surf", "thunderwave"],
"abilities": ["Own Tempo"]
},
{
@@ -544,13 +544,13 @@
"sets": [
{
"role": "Wallbreaker",
- "movepool": ["explosion", "fireblast", "hiddenpowerground", "rest", "sludgebomb", "toxic"],
+ "movepool": ["explosion", "fireblast", "hiddenpowerground", "sludgebomb", "toxic"],
"abilities": ["Sticky Hold"],
"preferredTypes": ["Ground"]
},
{
"role": "Setup Sweeper",
- "movepool": ["curse", "hiddenpowerground", "rest", "sludgebomb"],
+ "movepool": ["curse", "explosion", "hiddenpowerground", "sludgebomb"],
"abilities": ["Sticky Hold"]
}
]
@@ -1063,7 +1063,7 @@
"sets": [
{
"role": "Setup Sweeper",
- "movepool": ["doubleedge", "dragondance", "earthquake", "healbell", "hiddenpowerflying", "rest", "substitute"],
+ "movepool": ["doubleedge", "dragondance", "earthquake", "healbell", "hiddenpowerflying", "substitute"],
"abilities": ["Inner Focus"],
"preferredTypes": ["Ground"]
},
@@ -1479,7 +1479,7 @@
},
{
"role": "Setup Sweeper",
- "movepool": ["calmmind", "psychic", "rest", "surf"],
+ "movepool": ["calmmind", "psychic", "surf", "thunderwave"],
"abilities": ["Own Tempo"]
},
{
@@ -1564,7 +1564,7 @@
"sets": [
{
"role": "Bulky Setup",
- "movepool": ["bodyslam", "curse", "earthquake", "rest", "shadowball"],
+ "movepool": ["bodyslam", "curse", "earthquake", "rest", "shadowball", "sleeptalk"],
"abilities": ["Serene Grace"]
},
{
@@ -2482,11 +2482,6 @@
"role": "Bulky Support",
"movepool": ["encore", "moonlight", "seismictoss", "thunderwave", "toxic"],
"abilities": ["Oblivious"]
- },
- {
- "role": "Generalist",
- "movepool": ["batonpass", "encore", "seismictoss", "substitute", "thunderwave", "toxic"],
- "abilities": ["Oblivious"]
}
]
},
@@ -2561,7 +2556,7 @@
"sets": [
{
"role": "Bulky Attacker",
- "movepool": ["explosion", "fireblast", "flamethrower", "hiddenpowergrass", "rest", "toxic"],
+ "movepool": ["explosion", "fireblast", "flamethrower", "hiddenpowergrass", "toxic"],
"abilities": ["White Smoke"]
}
]
@@ -2571,7 +2566,7 @@
"sets": [
{
"role": "Setup Sweeper",
- "movepool": ["calmmind", "firepunch", "psychic", "substitute", "thunderpunch"],
+ "movepool": ["calmmind", "firepunch", "hiddenpowerdark", "psychic", "substitute"],
"abilities": ["Thick Fat"],
"preferredTypes": ["Fire"]
}
@@ -2602,11 +2597,11 @@
},
{
"role": "Staller",
- "movepool": ["dragonclaw", "earthquake", "fireblast", "protect", "toxic"],
+ "movepool": ["dragonclaw", "earthquake", "fireblast", "protect", "rockslide", "toxic"],
"abilities": ["Levitate"]
},
{
- "role": "Bulky Attacker",
+ "role": "Staller",
"movepool": ["dragonclaw", "earthquake", "fireblast", "rockslide", "substitute", "toxic"],
"abilities": ["Levitate"]
}
@@ -3053,7 +3048,12 @@
"sets": [
{
"role": "Wallbreaker",
- "movepool": ["earthquake", "hiddenpowerbug", "overheat", "rockslide", "substitute", "swordsdance", "thunderwave"],
+ "movepool": ["earthquake", "overheat", "rockslide", "thunderwave"],
+ "abilities": ["Drought"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "hiddenpowerbug", "rockslide", "substitute", "swordsdance", "thunderwave"],
"abilities": ["Drought"],
"preferredTypes": ["Rock"]
}
@@ -3086,9 +3086,8 @@
},
{
"role": "Setup Sweeper",
- "movepool": ["calmmind", "firepunch", "icepunch", "psychic", "substitute", "thunderbolt"],
- "abilities": ["Serene Grace"],
- "preferredTypes": ["Fire"]
+ "movepool": ["calmmind", "firepunch", "icepunch", "psychic", "thunderbolt"],
+ "abilities": ["Serene Grace"]
}
]
},
@@ -3097,7 +3096,7 @@
"sets": [
{
"role": "Fast Attacker",
- "movepool": ["extremespeed", "firepunch", "icebeam", "psychoboost", "shadowball", "superpower"],
+ "movepool": ["extremespeed", "icebeam", "psychoboost", "shadowball", "superpower"],
"abilities": ["Pressure"],
"preferredTypes": ["Fighting", "Ghost"]
}
@@ -3108,7 +3107,7 @@
"sets": [
{
"role": "Fast Attacker",
- "movepool": ["extremespeed", "firepunch", "icebeam", "psychoboost", "shadowball", "superpower"],
+ "movepool": ["extremespeed", "icebeam", "psychoboost", "shadowball", "superpower"],
"abilities": ["Pressure"],
"preferredTypes": ["Fighting", "Ghost"]
}
diff --git a/data/random-battles/gen3/teams.ts b/data/random-battles/gen3/teams.ts
index ff59db9377..6c229c924b 100644
--- a/data/random-battles/gen3/teams.ts
+++ b/data/random-battles/gen3/teams.ts
@@ -467,16 +467,10 @@ export class RandomGen3Teams extends RandomGen4Teams {
if (species.id === 'marowak') return 'Thick Club';
if (species.id === 'pikachu') return 'Light Ball';
if (species.id === 'shedinja') return 'Lum Berry';
- if (species.id === 'shuckle') return 'Leftovers';
if (species.id === 'unown') return counter.get('Physical') ? 'Choice Band' : 'Twisted Spoon';
if (species.id === 'deoxys' || species.id === 'deoxysattack') return 'White Herb';
if (moves.has('trick')) return 'Choice Band';
- if (
- moves.has('rest') && !moves.has('sleeptalk') &&
- // Altaria wants Chesto Berry on Dragon Dance + Rest
- (moves.has('dragondance') || !['Early Bird', 'Natural Cure', 'Shed Skin'].includes(ability))
- ) return 'Chesto Berry';
// Medium priority items
if (counter.get('Physical') >= 4) return 'Choice Band';
diff --git a/data/random-battles/gen4/sets.json b/data/random-battles/gen4/sets.json
index 672865b259..c9a7112bb5 100644
--- a/data/random-battles/gen4/sets.json
+++ b/data/random-battles/gen4/sets.json
@@ -1325,7 +1325,7 @@
"sets": [
{
"role": "Fast Support",
- "movepool": ["destinybond", "explosion", "spikes", "thunderwave", "toxicspikes", "waterfall"],
+ "movepool": ["destinybond", "explosion", "poisonjab", "spikes", "thunderwave", "toxicspikes", "waterfall"],
"abilities": ["Poison Point", "Swift Swim"]
}
]
@@ -2123,9 +2123,14 @@
"sets": [
{
"role": "Fast Attacker",
- "movepool": ["hiddenpowergrass", "hydropump", "icebeam", "selfdestruct", "waterspout"],
+ "movepool": ["hydropump", "icebeam", "selfdestruct", "waterspout"],
"abilities": ["Water Veil"],
"preferredTypes": ["Ice"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["icebeam", "selfdestruct", "surf", "toxic"],
+ "abilities": ["Water Veil"]
}
]
},
@@ -3022,9 +3027,14 @@
"movepool": ["destinybond", "hiddenpowerfighting", "painsplit", "shadowball", "substitute", "taunt", "willowisp"],
"abilities": ["Levitate"]
},
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["hiddenpowerfighting", "nastyplot", "shadowball", "substitute", "thunderbolt"],
+ "abilities": ["Levitate"]
+ },
{
"role": "Wallbreaker",
- "movepool": ["hiddenpowerfighting", "nastyplot", "shadowball", "thunderbolt", "trick"],
+ "movepool": ["hiddenpowerfighting", "shadowball", "thunderbolt", "trick"],
"abilities": ["Levitate"]
}
]
diff --git a/data/random-battles/gen5/sets.json b/data/random-battles/gen5/sets.json
index 23a754ef97..acee027540 100644
--- a/data/random-battles/gen5/sets.json
+++ b/data/random-battles/gen5/sets.json
@@ -3065,9 +3065,14 @@
"abilities": ["Levitate"]
},
{
- "role": "Wallbreaker",
- "movepool": ["hiddenpowerfighting", "nastyplot", "shadowball", "thunderbolt", "trick"],
+ "role": "Setup Sweeper",
+ "movepool": ["hiddenpowerfighting", "nastyplot", "shadowball", "substitute", "thunderbolt"],
"abilities": ["Levitate"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["hiddenpowerfighting", "shadowball", "thunderbolt", "trick"],
+ "abilities": ["Levitate"]
}
]
},
@@ -3274,7 +3279,7 @@
{
"role": "Fast Attacker",
"movepool": ["flashcannon", "hiddenpowerfire", "hiddenpowerground", "hiddenpowerice", "thunderbolt", "voltswitch"],
- "abilities": ["Magnet Pull"]
+ "abilities": ["Analytic", "Magnet Pull"]
},
{
"role": "Staller",
@@ -4574,7 +4579,7 @@
},
{
"role": "Wallbreaker",
- "movepool": ["bugbuzz", "energyball", "thunder", "voltswitch"],
+ "movepool": ["bugbuzz", "gigadrain", "thunder", "voltswitch"],
"abilities": ["Compound Eyes"]
}
]
diff --git a/data/random-battles/gen6/sets.json b/data/random-battles/gen6/sets.json
index 479d44bed4..d50f9c1849 100644
--- a/data/random-battles/gen6/sets.json
+++ b/data/random-battles/gen6/sets.json
@@ -31,6 +31,11 @@
"role": "Bulky Attacker",
"movepool": ["airslash", "earthquake", "fireblast", "roost", "willowisp"],
"abilities": ["Blaze", "Solar Power"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["acrobatics", "earthquake", "flareblitz", "swordsdance"],
+ "abilities": ["Blaze"]
}
]
},
@@ -791,9 +796,14 @@
"sets": [
{
"role": "Fast Attacker",
- "movepool": ["dazzlinggleam", "encore", "focusblast", "healingwish", "nastyplot", "psychic", "psyshock", "shadowball"],
+ "movepool": ["dazzlinggleam", "encore", "focusblast", "healingwish", "psychic", "psyshock", "shadowball", "thunderbolt"],
"abilities": ["Filter"],
- "preferredTypes": ["Psychic"]
+ "preferredTypes": ["Fighting"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dazzlinggleam", "encore", "focusblast", "nastyplot", "psychic", "psyshock"],
+ "abilities": ["Filter"]
}
]
},
@@ -1500,7 +1510,7 @@
"sets": [
{
"role": "Fast Support",
- "movepool": ["destinybond", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"],
+ "movepool": ["destinybond", "poisonjab", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"],
"abilities": ["Intimidate"]
}
]
@@ -1617,12 +1627,14 @@
{
"role": "Wallbreaker",
"movepool": ["energyball", "fireblast", "gunkshot", "hydropump", "icebeam", "scald"],
- "abilities": ["Sniper"]
+ "abilities": ["Sniper"],
+ "preferredTypes": ["Poison"]
},
{
"role": "Bulky Attacker",
"movepool": ["energyball", "fireblast", "gunkshot", "icebeam", "scald", "thunderwave"],
- "abilities": ["Sniper"]
+ "abilities": ["Sniper"],
+ "preferredTypes": ["Poison"]
}
]
},
@@ -2263,8 +2275,13 @@
"level": 86,
"sets": [
{
- "role": "Wallbreaker",
- "movepool": ["aquatail", "earthquake", "headsmash", "heavyslam", "rockpolish", "stealthrock"],
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "headsmash", "heavyslam", "rockpolish"],
+ "abilities": ["Rock Head"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["aquatail", "earthquake", "headsmash", "heavyslam", "stealthrock"],
"abilities": ["Rock Head"],
"preferredTypes": ["Ground"]
}
@@ -3273,12 +3290,7 @@
"sets": [
{
"role": "Bulky Support",
- "movepool": ["metalburst", "roar", "rockblast", "stealthrock", "toxic"],
- "abilities": ["Sturdy"]
- },
- {
- "role": "Staller",
- "movepool": ["metalburst", "protect", "roar", "rockblast", "stealthrock", "toxic"],
+ "movepool": ["metalburst", "protect", "roar", "rockslide", "stealthrock", "toxic"],
"abilities": ["Sturdy"]
}
]
@@ -3689,7 +3701,7 @@
{
"role": "Fast Attacker",
"movepool": ["flashcannon", "hiddenpowerground", "thunderbolt", "voltswitch"],
- "abilities": ["Magnet Pull"]
+ "abilities": ["Analytic", "Magnet Pull"]
},
{
"role": "Staller",
@@ -5893,11 +5905,6 @@
"sylveon": {
"level": 84,
"sets": [
- {
- "role": "Bulky Attacker",
- "movepool": ["calmmind", "hiddenpowerground", "hypervoice", "protect", "psyshock", "wish"],
- "abilities": ["Pixilate"]
- },
{
"role": "Bulky Setup",
"movepool": ["calmmind", "hypervoice", "protect", "wish"],
diff --git a/data/random-battles/gen6/teams.ts b/data/random-battles/gen6/teams.ts
index 4e7c261f93..40bbbc656a 100644
--- a/data/random-battles/gen6/teams.ts
+++ b/data/random-battles/gen6/teams.ts
@@ -97,7 +97,7 @@ export class RandomGen6Teams extends RandomGen7Teams {
Normal: movePool => movePool.includes('boomburst'),
Poison: (movePool, moves, abilities, types, counter) => !counter.get('Poison'),
Psychic: (movePool, moves, abilities, types, counter) => (
- !counter.get('Psychic') && (types.has('Fighting') || movePool.includes('calmmind'))
+ !counter.get('Psychic') && (types.has('Fighting') || types.has('Fairy') || movePool.includes('calmmind'))
),
Rock: (movePool, moves, abilities, types, counter, species) => (!counter.get('Rock') && species.baseStats.atk >= 80),
Steel: (movePool, moves, abilities, types, counter, species) => (!counter.get('Steel') && species.baseStats.atk >= 100),
@@ -250,6 +250,8 @@ export class RandomGen6Teams extends RandomGen7Teams {
['switcheroo', 'suckerpunch'],
// Jirachi
['bodyslam', 'healingwish'],
+ // Bastiodon
+ [['roar', 'protect'], ['metalburst', 'protect']],
];
for (const pair of incompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]);
@@ -732,12 +734,6 @@ export class RandomGen6Teams extends RandomGen7Teams {
)
) return 'Rocky Helmet';
if (['kingsshield', 'protect', 'spikyshield', 'substitute'].some(m => moves.has(m))) return 'Leftovers';
- if (
- this.dex.getEffectiveness('Ground', species) >= 2 &&
- ability !== 'Levitate'
- ) {
- return 'Air Balloon';
- }
if (
(role === 'Fast Support' || moves.has('stickyweb')) && isLead && defensiveStatTotal < 255 &&
!counter.get('recovery') && (counter.get('hazards') || counter.get('setup')) &&
diff --git a/data/random-battles/gen7/sets.json b/data/random-battles/gen7/sets.json
index df1a2c853e..5654350ef9 100644
--- a/data/random-battles/gen7/sets.json
+++ b/data/random-battles/gen7/sets.json
@@ -33,6 +33,11 @@
"abilities": ["Blaze", "Solar Power"],
"preferredTypes": ["Normal"]
},
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["acrobatics", "earthquake", "flareblitz", "swordsdance"],
+ "abilities": ["Blaze"]
+ },
{
"role": "Bulky Attacker",
"movepool": ["airslash", "earthquake", "fireblast", "roost", "willowisp"],
@@ -975,9 +980,14 @@
"sets": [
{
"role": "Fast Attacker",
- "movepool": ["dazzlinggleam", "encore", "focusblast", "healingwish", "nastyplot", "psychic", "psyshock", "shadowball"],
+ "movepool": ["dazzlinggleam", "encore", "focusblast", "healingwish", "psychic", "psyshock", "shadowball", "thunderbolt"],
"abilities": ["Filter"],
- "preferredTypes": ["Psychic"]
+ "preferredTypes": ["Fighting"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dazzlinggleam", "encore", "focusblast", "nastyplot", "psychic", "psyshock"],
+ "abilities": ["Filter"]
}
]
},
@@ -1716,7 +1726,7 @@
"sets": [
{
"role": "Fast Support",
- "movepool": ["destinybond", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"],
+ "movepool": ["destinybond", "poisonjab", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"],
"abilities": ["Intimidate"]
}
]
@@ -1770,10 +1780,15 @@
"level": 82,
"sets": [
{
- "role": "Wallbreaker",
+ "role": "Setup Sweeper",
"movepool": ["closecombat", "facade", "knockoff", "swordsdance"],
"abilities": ["Guts"]
},
+ {
+ "role": "Wallbreaker",
+ "movepool": ["closecombat", "facade", "knockoff", "megahorn"],
+ "abilities": ["Guts"]
+ },
{
"role": "Fast Attacker",
"movepool": ["closecombat", "knockoff", "megahorn", "stoneedge"],
@@ -2493,8 +2508,13 @@
"level": 87,
"sets": [
{
- "role": "Wallbreaker",
- "movepool": ["aquatail", "earthquake", "headsmash", "heavyslam", "rockpolish", "stealthrock"],
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "headsmash", "heavyslam", "rockpolish"],
+ "abilities": ["Rock Head"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["aquatail", "earthquake", "headsmash", "heavyslam", "stealthrock"],
"abilities": ["Rock Head"],
"preferredTypes": ["Ground"]
}
@@ -3557,12 +3577,7 @@
"sets": [
{
"role": "Bulky Support",
- "movepool": ["metalburst", "roar", "rockblast", "stealthrock", "toxic"],
- "abilities": ["Sturdy"]
- },
- {
- "role": "Staller",
- "movepool": ["metalburst", "protect", "roar", "rockblast", "stealthrock", "toxic"],
+ "movepool": ["metalburst", "protect", "roar", "rockslide", "stealthrock", "toxic"],
"abilities": ["Sturdy"]
}
]
@@ -4003,7 +4018,7 @@
{
"role": "Fast Attacker",
"movepool": ["flashcannon", "hiddenpowerground", "thunderbolt", "voltswitch"],
- "abilities": ["Magnet Pull"]
+ "abilities": ["Analytic", "Magnet Pull"]
},
{
"role": "Staller",
@@ -6363,11 +6378,6 @@
"sylveon": {
"level": 85,
"sets": [
- {
- "role": "Bulky Attacker",
- "movepool": ["calmmind", "hiddenpowerground", "hypervoice", "protect", "psyshock", "wish"],
- "abilities": ["Pixilate"]
- },
{
"role": "Bulky Setup",
"movepool": ["calmmind", "hypervoice", "protect", "wish"],
@@ -6833,7 +6843,7 @@
"sets": [
{
"role": "AV Pivot",
- "movepool": ["earthquake", "hiddenpowergrass", "hydropump", "icebeam", "scald", "uturn"],
+ "movepool": ["earthquake", "hydropump", "icebeam", "scald", "uturn"],
"abilities": ["Schooling"],
"preferredTypes": ["Ice"]
},
@@ -7420,7 +7430,12 @@
"sets": [
{
"role": "Bulky Attacker",
- "movepool": ["bulkup", "hornleech", "megahorn", "stoneedge", "superpower", "woodhammer"],
+ "movepool": ["hornleech", "megahorn", "stoneedge", "superpower", "woodhammer"],
+ "abilities": ["Grassy Surge"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["hornleech", "stoneedge", "superpower", "swordsdance", "woodhammer"],
"abilities": ["Grassy Surge"]
}
]
@@ -7468,7 +7483,7 @@
},
{
"role": "Z-Move user",
- "movepool": ["calmmind", "moonblast", "moongeistbeam", "psyshock", "roost"],
+ "movepool": ["calmmind", "moongeistbeam", "psyshock", "roost"],
"abilities": ["Shadow Shield"]
}
]
@@ -7477,7 +7492,7 @@
"level": 79,
"sets": [
{
- "role": "Fast Support",
+ "role": "Bulky Attacker",
"movepool": ["grassknot", "hiddenpowerfire", "hiddenpowerground", "powergem", "sludgewave", "stealthrock", "thunderbolt", "toxicspikes"],
"abilities": ["Beast Boost"],
"preferredTypes": ["Rock"]
diff --git a/data/random-battles/gen7/teams.ts b/data/random-battles/gen7/teams.ts
index 3f6278ca55..553e7e4469 100644
--- a/data/random-battles/gen7/teams.ts
+++ b/data/random-battles/gen7/teams.ts
@@ -135,7 +135,7 @@ export class RandomGen7Teams extends RandomGen8Teams {
Poison: (movePool, moves, abilities, types, counter) => !counter.get('Poison'),
Psychic: (movePool, moves, abilities, types, counter) => (
!counter.get('Psychic') && (
- types.has('Fighting') || movePool.includes('psychicfangs') || movePool.includes('calmmind')
+ types.has('Fighting') || types.has('Fairy') || movePool.includes('psychicfangs') || movePool.includes('calmmind')
)
),
Rock: (movePool, moves, abilities, types, counter, species) => (!counter.get('Rock') && species.baseStats.atk >= 80),
@@ -367,6 +367,8 @@ export class RandomGen7Teams extends RandomGen8Teams {
['switcheroo', 'suckerpunch'],
// Jirachi
['bodyslam', 'healingwish'],
+ // Bastiodon
+ [['roar', 'protect'], ['metalburst', 'protect']],
];
for (const pair of incompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]);
@@ -955,12 +957,6 @@ export class RandomGen7Teams extends RandomGen8Teams {
)
) return 'Rocky Helmet';
if (['kingsshield', 'protect', 'spikyshield', 'substitute'].some(m => moves.has(m))) return 'Leftovers';
- if (
- this.dex.getEffectiveness('Ground', species) >= 2 &&
- ability !== 'Levitate' && species.id !== 'golemalola'
- ) {
- return 'Air Balloon';
- }
if (
(role === 'Fast Support' || moves.has('stickyweb')) && isLead && defensiveStatTotal < 255 &&
!counter.get('recovery') && (counter.get('hazards') || counter.get('setup')) &&
diff --git a/data/random-battles/gen8/data.json b/data/random-battles/gen8/data.json
index d0f0d2514e..61aefbcef3 100644
--- a/data/random-battles/gen8/data.json
+++ b/data/random-battles/gen8/data.json
@@ -418,7 +418,7 @@
},
"articunogalar": {
"level": 81,
- "moves": ["airslash", "calmmind", "freezingglare", "recover"],
+ "moves": ["calmmind", "freezingglare", "hurricane", "recover"],
"doublesLevel": 81,
"doublesMoves": ["calmmind", "freezingglare", "hurricane", "recover", "tailwind"],
"noDynamaxMoves": ["calmmind", "freezingglare", "hurricane", "recover"]
@@ -458,7 +458,7 @@
},
"mewtwo": {
"level": 71,
- "moves": ["fireblast", "nastyplot", "psystrike", "recover", "shadowball"],
+ "moves": ["aurasphere", "fireblast", "nastyplot", "psystrike", "recover"],
"doublesLevel": 74,
"doublesMoves": ["aurasphere", "icebeam", "nastyplot", "psystrike", "recover"]
},
@@ -1820,7 +1820,7 @@
},
"sylveon": {
"level": 83,
- "moves": ["calmmind", "hypervoice", "mysticalfire", "protect", "psyshock", "shadowball", "wish"],
+ "moves": ["calmmind", "hypervoice", "mysticalfire", "protect", "psyshock", "wish"],
"doublesLevel": 80,
"doublesMoves": ["calmmind", "hypervoice", "mysticalfire", "protect", "psyshock"]
},
@@ -2149,7 +2149,7 @@
},
"silvallyice": {
"level": 83,
- "moves": ["flamecharge", "multiattack", "psychicfangs", "swordsdance"],
+ "moves": ["flamecharge", "multiattack", "rockslide", "swordsdance"],
"doublesLevel": 88,
"doublesMoves": ["flamethrower", "multiattack", "partingshot", "tailwind", "thunderbolt"]
},
@@ -2161,7 +2161,7 @@
},
"silvallypsychic": {
"level": 83,
- "moves": ["crunch", "multiattack", "swordsdance", "uturn"],
+ "moves": ["flamecharge", "multiattack", "swordsdance", "xscissor"],
"doublesLevel": 88,
"doublesMoves": ["flamethrower", "multiattack", "partingshot", "tailwind", "xscissor"]
},
diff --git a/data/random-battles/gen9/doubles-sets.json b/data/random-battles/gen9/doubles-sets.json
index 4e41b7b691..2045bd1ba4 100644
--- a/data/random-battles/gen9/doubles-sets.json
+++ b/data/random-battles/gen9/doubles-sets.json
@@ -49,7 +49,7 @@
},
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Dragon Tail", "Glare", "Gunk Shot", "Knock Off", "Toxic Spikes"],
+ "movepool": ["Glare", "Gunk Shot", "Knock Off", "Toxic Spikes"],
"abilities": ["Intimidate"],
"teraTypes": ["Dark"]
}
@@ -186,7 +186,7 @@
"role": "Doubles Support",
"movepool": ["Aurora Veil", "Blizzard", "Moonblast", "Protect"],
"abilities": ["Snow Warning"],
- "teraTypes": ["Ice", "Steel", "Water"]
+ "teraTypes": ["Steel", "Water"]
}
]
},
@@ -349,7 +349,7 @@
"level": 85,
"sets": [
{
- "role": "Doubles Bulky Attacker",
+ "role": "Doubles Support",
"movepool": ["Acid Spray", "Hydro Pump", "Icy Wind", "Knock Off", "Muddy Water", "Sludge Bomb", "Toxic Spikes"],
"abilities": ["Clear Body"],
"teraTypes": ["Grass"]
@@ -451,8 +451,8 @@
"sets": [
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Drain Punch", "Gunk Shot", "Haze", "Helping Hand", "Ice Punch", "Knock Off", "Poison Gas", "Poison Jab", "Shadow Sneak"],
- "abilities": ["Poison Touch"],
+ "movepool": ["Drain Punch", "Gunk Shot", "Helping Hand", "Ice Punch", "Knock Off", "Poison Gas", "Poison Jab", "Shadow Sneak"],
+ "abilities": ["Poison Touch", "Sticky Hold"],
"teraTypes": ["Dark"]
}
]
@@ -589,9 +589,9 @@
"level": 91,
"sets": [
{
- "role": "Doubles Support",
+ "role": "Doubles Bulky Attacker",
"movepool": ["Clear Smog", "Fire Blast", "Gunk Shot", "Poison Gas", "Protect", "Taunt", "Will-O-Wisp"],
- "abilities": ["Levitate", "Neutralizing Gas"],
+ "abilities": ["Levitate"],
"teraTypes": ["Dark"]
}
]
@@ -602,13 +602,13 @@
{
"role": "Doubles Bulky Attacker",
"movepool": ["Gunk Shot", "Poison Gas", "Protect", "Strange Steam", "Taunt", "Will-O-Wisp"],
- "abilities": ["Levitate", "Neutralizing Gas"],
+ "abilities": ["Levitate"],
"teraTypes": ["Dark", "Steel"]
},
{
"role": "Offensive Protect",
"movepool": ["Dazzling Gleam", "Fire Blast", "Gunk Shot", "Protect"],
- "abilities": ["Levitate", "Neutralizing Gas"],
+ "abilities": ["Levitate"],
"teraTypes": ["Fire"]
}
]
@@ -848,7 +848,7 @@
"sets": [
{
"role": "Doubles Fast Attacker",
- "movepool": ["Freezing Glare", "Hurricane", "Protect", "Recover", "Tailwind"],
+ "movepool": ["Freezing Glare", "Hurricane", "Protect", "Tailwind"],
"abilities": ["Competitive"],
"teraTypes": ["Flying", "Ground", "Steel"]
}
@@ -886,10 +886,16 @@
"level": 79,
"sets": [
{
- "role": "Doubles Bulky Attacker",
- "movepool": ["Brave Bird", "Fire Blast", "Heat Wave", "Protect", "Scorching Sands", "Tailwind"],
+ "role": "Doubles Support",
+ "movepool": ["Brave Bird", "Fire Blast", "Heat Wave", "Protect", "Tailwind"],
"abilities": ["Flame Body"],
"teraTypes": ["Fire", "Ground"]
+ },
+ {
+ "role": "Doubles Bulky Attacker",
+ "movepool": ["Brave Bird", "Fire Blast", "Heat Wave", "Scorching Sands", "Tailwind"],
+ "abilities": ["Flame Body"],
+ "teraTypes": ["Ground"]
}
]
},
@@ -1289,7 +1295,13 @@
"sets": [
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Crunch", "Gunk Shot", "Icy Wind", "Throat Chop", "Toxic Spikes"],
+ "movepool": ["Crunch", "Gunk Shot", "Icy Wind", "Toxic Spikes"],
+ "abilities": ["Intimidate"],
+ "teraTypes": ["Flying"]
+ },
+ {
+ "role": "Doubles Support",
+ "movepool": ["Gunk Shot", "Icy Wind", "Throat Chop", "Toxic Spikes"],
"abilities": ["Intimidate"],
"teraTypes": ["Flying"]
}
@@ -1538,7 +1550,7 @@
"role": "Doubles Bulky Setup",
"movepool": ["Dragon Dance", "High Horsepower", "Knock Off", "Protect", "Rock Slide", "Stone Edge"],
"abilities": ["Sand Stream"],
- "teraTypes": ["Ghost", "Rock"]
+ "teraTypes": ["Ghost"]
},
{
"role": "Doubles Bulky Attacker",
@@ -1721,7 +1733,13 @@
"sets": [
{
"role": "Doubles Bulky Attacker",
- "movepool": ["After You", "Double-Edge", "Encore", "Icy Wind", "Knock Off", "Slack Off", "Thunder Wave"],
+ "movepool": ["Double-Edge", "Icy Wind", "Knock Off", "Slack Off", "Thunder Wave"],
+ "abilities": ["Vital Spirit"],
+ "teraTypes": ["Ghost"]
+ },
+ {
+ "role": "Doubles Support",
+ "movepool": ["Body Slam", "Encore", "Icy Wind", "Knock Off"],
"abilities": ["Vital Spirit"],
"teraTypes": ["Ghost"]
}
@@ -1963,7 +1981,7 @@
{
"role": "Offensive Protect",
"movepool": ["Flamethrower", "Glare", "Gunk Shot", "Knock Off", "Protect"],
- "abilities": ["Infiltrator"],
+ "abilities": ["Shed Skin"],
"teraTypes": ["Dark", "Fire", "Poison"]
}
]
@@ -2289,6 +2307,18 @@
"movepool": ["Headlong Rush", "Protect", "Shell Smash", "Wood Hammer"],
"abilities": ["Overgrow"],
"teraTypes": ["Fire", "Ground"]
+ },
+ {
+ "role": "Doubles Setup Sweeper",
+ "movepool": ["Headlong Rush", "Rock Slide", "Shell Smash", "Wood Hammer"],
+ "abilities": ["Overgrow"],
+ "teraTypes": ["Rock"]
+ },
+ {
+ "role": "Doubles Setup Sweeper",
+ "movepool": ["Headlong Rush", "Protect", "Rock Slide", "Shell Smash"],
+ "abilities": ["Overgrow"],
+ "teraTypes": ["Rock"]
}
]
},
@@ -2555,7 +2585,7 @@
"role": "Doubles Support",
"movepool": ["High Horsepower", "Slack Off", "Stealth Rock", "Stone Edge", "Whirlwind"],
"abilities": ["Sand Stream"],
- "teraTypes": ["Dragon", "Rock", "Steel", "Water"]
+ "teraTypes": ["Dragon", "Steel", "Water"]
}
]
},
@@ -2624,8 +2654,8 @@
"level": 84,
"sets": [
{
- "role": "Doubles Bulky Attacker",
- "movepool": ["Body Press", "Electroweb", "Flash Cannon", "Protect", "Thunderbolt", "Volt Switch"],
+ "role": "Doubles Support",
+ "movepool": ["Electroweb", "Flash Cannon", "Protect", "Thunderbolt", "Volt Switch"],
"abilities": ["Sturdy"],
"teraTypes": ["Flying"]
}
@@ -2670,7 +2700,7 @@
"sets": [
{
"role": "Choice Item user",
- "movepool": ["Fire Blast", "Focus Blast", "Heat Wave", "Scorching Sands", "Thunderbolt"],
+ "movepool": ["Fire Blast", "Focus Blast", "Heat Wave", "Thunderbolt"],
"abilities": ["Flame Body"],
"teraTypes": ["Fighting", "Fire", "Grass"]
},
@@ -3167,9 +3197,15 @@
"sets": [
{
"role": "Doubles Setup Sweeper",
- "movepool": ["Calm Mind", "Fire Blast", "Judgment", "Recover", "Sludge Bomb"],
+ "movepool": ["Calm Mind", "Fire Blast", "Judgment", "Recover"],
"abilities": ["Multitype"],
- "teraTypes": ["Fire", "Poison"]
+ "teraTypes": ["Fire"]
+ },
+ {
+ "role": "Doubles Bulky Setup",
+ "movepool": ["Calm Mind", "Judgment", "Recover", "Sludge Bomb"],
+ "abilities": ["Multitype"],
+ "teraTypes": ["Poison"]
}
]
},
@@ -3189,9 +3225,9 @@
"sets": [
{
"role": "Doubles Bulky Setup",
- "movepool": ["Calm Mind", "Dazzling Gleam", "Earth Power", "Fire Blast", "Recover"],
+ "movepool": ["Calm Mind", "Dazzling Gleam", "Earth Power", "Recover"],
"abilities": ["Multitype"],
- "teraTypes": ["Fairy", "Fire", "Ground"]
+ "teraTypes": ["Fairy", "Ground"]
},
{
"role": "Doubles Support",
@@ -3228,9 +3264,15 @@
"sets": [
{
"role": "Doubles Setup Sweeper",
- "movepool": ["Calm Mind", "Earth Power", "Fire Blast", "Judgment", "Recover"],
+ "movepool": ["Calm Mind", "Earth Power", "Judgment", "Recover"],
"abilities": ["Multitype"],
"teraTypes": ["Flying", "Ground"]
+ },
+ {
+ "role": "Doubles Support",
+ "movepool": ["Judgment", "Recover", "Snarl", "Tailwind", "Taunt", "Will-O-Wisp"],
+ "abilities": ["Multitype"],
+ "teraTypes": ["Steel"]
}
]
},
@@ -3241,13 +3283,13 @@
"role": "Doubles Setup Sweeper",
"movepool": ["Brick Break", "Extreme Speed", "Phantom Force", "Swords Dance"],
"abilities": ["Multitype"],
- "teraTypes": ["Ghost", "Normal"]
+ "teraTypes": ["Normal"]
},
{
"role": "Doubles Bulky Setup",
- "movepool": ["Calm Mind", "Dazzling Gleam", "Focus Blast", "Judgment", "Recover"],
+ "movepool": ["Calm Mind", "Focus Blast", "Judgment", "Recover"],
"abilities": ["Multitype"],
- "teraTypes": ["Fairy", "Fighting"]
+ "teraTypes": ["Fighting"]
}
]
},
@@ -3267,9 +3309,15 @@
"sets": [
{
"role": "Doubles Bulky Setup",
- "movepool": ["Calm Mind", "Fire Blast", "Ice Beam", "Judgment", "Recover"],
+ "movepool": ["Calm Mind", "Ice Beam", "Judgment", "Recover"],
"abilities": ["Multitype"],
- "teraTypes": ["Ground", "Ice"]
+ "teraTypes": ["Dragon", "Steel", "Water"]
+ },
+ {
+ "role": "Doubles Bulky Attacker",
+ "movepool": ["Calm Mind", "Fire Blast", "Judgment", "Recover"],
+ "abilities": ["Multitype"],
+ "teraTypes": ["Fire"]
},
{
"role": "Doubles Setup Sweeper",
@@ -3283,10 +3331,16 @@
"level": 73,
"sets": [
{
- "role": "Doubles Bulky Setup",
- "movepool": ["Calm Mind", "Earth Power", "Judgment", "Recover", "Thunderbolt"],
+ "role": "Doubles Setup Sweeper",
+ "movepool": ["Calm Mind", "Earth Power", "Judgment", "Recover"],
"abilities": ["Multitype"],
- "teraTypes": ["Electric", "Ground"]
+ "teraTypes": ["Ground"]
+ },
+ {
+ "role": "Doubles Bulky Setup",
+ "movepool": ["Calm Mind", "Judgment", "Recover", "Thunderbolt"],
+ "abilities": ["Multitype"],
+ "teraTypes": ["Electric"]
}
]
},
@@ -3486,7 +3540,13 @@
"sets": [
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Encore", "Helping Hand", "Moonblast", "Tailwind", "Taunt"],
+ "movepool": ["Encore", "Moonblast", "Tailwind", "Taunt"],
+ "abilities": ["Prankster"],
+ "teraTypes": ["Fire", "Ghost", "Steel"]
+ },
+ {
+ "role": "Doubles Support",
+ "movepool": ["Encore", "Helping Hand", "Moonblast", "Tailwind"],
"abilities": ["Prankster"],
"teraTypes": ["Fire", "Ghost", "Steel"]
}
@@ -3884,7 +3944,7 @@
{
"role": "Doubles Setup Sweeper",
"movepool": ["Bug Buzz", "Heat Wave", "Protect", "Quiver Dance"],
- "abilities": ["Flame Body", "Swarm"],
+ "abilities": ["Flame Body"],
"teraTypes": ["Fire", "Ground", "Water"]
},
{
@@ -3972,14 +4032,14 @@
"level": 79,
"sets": [
{
- "role": "Bulky Protect",
+ "role": "Doubles Support",
"movepool": ["Grass Knot", "Knock Off", "Protect", "Snarl", "Taunt", "Thunder Wave", "Thunderbolt"],
"abilities": ["Prankster"],
"teraTypes": ["Steel"]
},
{
"role": "Offensive Protect",
- "movepool": ["Acrobatics", "Grass Knot", "Knock Off", "Protect", "Snarl", "Wildbolt Storm"],
+ "movepool": ["Acrobatics", "Grass Knot", "Knock Off", "Protect", "Wildbolt Storm"],
"abilities": ["Defiant"],
"teraTypes": ["Electric", "Flying", "Steel"]
},
@@ -4242,13 +4302,7 @@
"sets": [
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Fake Out", "Fake Tears", "Helping Hand", "Light Screen", "Psychic", "Reflect"],
- "abilities": ["Prankster"],
- "teraTypes": ["Dark", "Steel"]
- },
- {
- "role": "Doubles Support",
- "movepool": ["Fake Out", "Helping Hand", "Psychic", "Thunder Wave"],
+ "movepool": ["Fake Out", "Helping Hand", "Light Screen", "Psychic", "Reflect", "Thunder Wave"],
"abilities": ["Prankster"],
"teraTypes": ["Dark", "Steel"]
}
@@ -4317,7 +4371,7 @@
"role": "Tera Blast user",
"movepool": ["Hyper Voice", "Protect", "Quick Attack", "Tera Blast"],
"abilities": ["Pixilate"],
- "teraTypes": ["Fire", "Ground"]
+ "teraTypes": ["Ground"]
}
]
},
@@ -4593,7 +4647,7 @@
"sets": [
{
"role": "Doubles Wallbreaker",
- "movepool": ["Drain Punch", "Gunk Shot", "Ice Hammer", "Protect", "Wide Guard"],
+ "movepool": ["Drain Punch", "Gunk Shot", "Ice Hammer", "Protect"],
"abilities": ["Iron Fist"],
"teraTypes": ["Fire", "Poison"]
}
@@ -4609,7 +4663,7 @@
"teraTypes": ["Ground"]
},
{
- "role": "Doubles Bulky Setup",
+ "role": "Bulky Protect",
"movepool": ["Air Slash", "Protect", "Quiver Dance", "Revelation Dance"],
"abilities": ["Dancer"],
"teraTypes": ["Ground"]
@@ -4626,7 +4680,7 @@
"teraTypes": ["Ground"]
},
{
- "role": "Doubles Bulky Setup",
+ "role": "Bulky Protect",
"movepool": ["Air Slash", "Protect", "Quiver Dance", "Revelation Dance"],
"abilities": ["Dancer"],
"teraTypes": ["Ground"]
@@ -4643,7 +4697,7 @@
"teraTypes": ["Fighting", "Ground"]
},
{
- "role": "Doubles Bulky Setup",
+ "role": "Bulky Protect",
"movepool": ["Air Slash", "Protect", "Quiver Dance", "Revelation Dance"],
"abilities": ["Dancer"],
"teraTypes": ["Fighting", "Ground"]
@@ -4660,7 +4714,7 @@
"teraTypes": ["Fighting", "Ground"]
},
{
- "role": "Doubles Bulky Setup",
+ "role": "Bulky Protect",
"movepool": ["Air Slash", "Protect", "Quiver Dance", "Revelation Dance"],
"abilities": ["Dancer"],
"teraTypes": ["Fighting", "Ground"]
@@ -5010,13 +5064,13 @@
{
"role": "Doubles Setup Sweeper",
"movepool": ["Clanging Scales", "Clangorous Soul", "Drain Punch", "Iron Head"],
- "abilities": ["Soundproof"],
+ "abilities": ["Bulletproof", "Soundproof"],
"teraTypes": ["Steel"]
},
{
"role": "Doubles Bulky Setup",
"movepool": ["Clanging Scales", "Clangorous Soul", "Iron Head", "Protect"],
- "abilities": ["Soundproof"],
+ "abilities": ["Bulletproof", "Soundproof"],
"teraTypes": ["Steel"]
},
{
@@ -5273,7 +5327,7 @@
"sets": [
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Fake Out", "Light Screen", "Parting Shot", "Reflect", "Spirit Break"],
+ "movepool": ["Fake Out", "Light Screen", "Parting Shot", "Reflect", "Spirit Break", "Thunder Wave"],
"abilities": ["Prankster"],
"teraTypes": ["Steel"]
},
@@ -5476,7 +5530,13 @@
"sets": [
{
"role": "Offensive Protect",
- "movepool": ["Draco Meteor", "Dragon Darts", "Fire Blast", "Protect", "Shadow Ball"],
+ "movepool": ["Draco Meteor", "Dragon Darts", "Protect", "Shadow Ball"],
+ "abilities": ["Clear Body"],
+ "teraTypes": ["Dragon"]
+ },
+ {
+ "role": "Offensive Protect",
+ "movepool": ["Dragon Darts", "Fire Blast", "Protect", "Shadow Ball"],
"abilities": ["Clear Body"],
"teraTypes": ["Dragon"]
},
@@ -5868,9 +5928,15 @@
},
{
"role": "Doubles Fast Attacker",
- "movepool": ["First Impression", "Leech Life", "Protect", "Sucker Punch"],
+ "movepool": ["First Impression", "Knock Off", "Protect", "Sucker Punch"],
"abilities": ["Tinted Lens"],
- "teraTypes": ["Bug"]
+ "teraTypes": ["Bug", "Dark"]
+ },
+ {
+ "role": "Doubles Wallbreaker",
+ "movepool": ["First Impression", "Knock Off", "Leech Life", "Protect"],
+ "abilities": ["Tinted Lens"],
+ "teraTypes": ["Bug"]
}
]
},
@@ -6018,7 +6084,7 @@
"sets": [
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Electroweb", "Muddy Water", "Slack Off", "Thunder Wave", "Thunderbolt", "Volt Switch"],
+ "movepool": ["Electroweb", "Muddy Water", "Slack Off", "Thunder Wave", "Thunderbolt"],
"abilities": ["Electromorphosis"],
"teraTypes": ["Water"]
}
@@ -6159,7 +6225,7 @@
{
"role": "Doubles Support",
"movepool": ["Encore", "Fake Out", "Gigaton Hammer", "Knock Off", "Play Rough", "Stealth Rock"],
- "abilities": ["Mold Breaker"],
+ "abilities": ["Mold Breaker", "Own Tempo"],
"teraTypes": ["Steel", "Water"]
}
]
@@ -6490,7 +6556,7 @@
"sets": [
{
"role": "Doubles Wallbreaker",
- "movepool": ["Close Combat", "First Impression", "Flare Blitz", "U-turn", "Wild Charge"],
+ "movepool": ["Close Combat", "First Impression", "Flare Blitz", "Protect", "U-turn", "Wild Charge"],
"abilities": ["Protosynthesis"],
"teraTypes": ["Bug", "Electric", "Fighting", "Fire"]
}
diff --git a/data/random-battles/gen9/sets.json b/data/random-battles/gen9/sets.json
index bf8b2e3984..6740222d10 100644
--- a/data/random-battles/gen9/sets.json
+++ b/data/random-battles/gen9/sets.json
@@ -643,7 +643,7 @@
},
{
"role": "Bulky Setup",
- "movepool": ["Calm Mind", "Giga Drain", "Psychic", "Psyshock", "Substitute"],
+ "movepool": ["Calm Mind", "Giga Drain", "Psychic", "Psyshock", "Sleep Powder", "Substitute"],
"abilities": ["Harvest"],
"teraTypes": ["Steel"]
}
@@ -695,7 +695,7 @@
{
"role": "Setup Sweeper",
"movepool": ["Drain Punch", "Ice Punch", "Knock Off", "Mach Punch", "Rapid Spin", "Swords Dance"],
- "abilities": ["Inner Focus", "Iron Fist"],
+ "abilities": ["Iron Fist"],
"teraTypes": ["Dark", "Fighting"]
},
{
@@ -703,6 +703,12 @@
"movepool": ["Bulk Up", "Drain Punch", "Knock Off", "Poison Jab", "Rapid Spin"],
"abilities": ["Iron Fist"],
"teraTypes": ["Dark", "Poison", "Steel"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["Drain Punch", "Encore", "Knock Off", "Poison Jab", "Rapid Spin", "Taunt"],
+ "abilities": ["Iron Fist"],
+ "teraTypes": ["Steel"]
}
]
},
@@ -2382,6 +2388,12 @@
"luvdisc": {
"level": 100,
"sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["Endeavor", "Flip Turn", "Substitute", "Surf"],
+ "abilities": ["Swift Swim"],
+ "teraTypes": ["Ghost", "Ground"]
+ },
{
"role": "Fast Support",
"movepool": ["Endeavor", "Substitute", "Surf", "Whirlpool"],
@@ -3185,7 +3197,7 @@
"sets": [
{
"role": "Wallbreaker",
- "movepool": ["Earthquake", "Ice Shard", "Icicle Crash", "Knock Off", "Stealth Rock", "Trailblaze"],
+ "movepool": ["Earthquake", "Ice Shard", "Icicle Crash", "Knock Off", "Stealth Rock"],
"abilities": ["Thick Fat"],
"teraTypes": ["Ground", "Ice"]
}
@@ -3247,7 +3259,7 @@
},
{
"role": "Bulky Support",
- "movepool": ["Earthquake", "Pain Split", "Poltergeist", "Will-O-Wisp"],
+ "movepool": ["Earthquake", "Pain Split", "Poltergeist", "Shadow Sneak", "Will-O-Wisp"],
"abilities": ["Frisk"],
"teraTypes": ["Dark", "Fairy"]
},
@@ -3288,7 +3300,13 @@
"role": "Bulky Attacker",
"movepool": ["Hydro Pump", "Nasty Plot", "Pain Split", "Thunderbolt", "Trick", "Volt Switch", "Will-O-Wisp"],
"abilities": ["Levitate"],
- "teraTypes": ["Electric", "Water"]
+ "teraTypes": ["Electric", "Steel"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["Discharge", "Hydro Pump", "Pain Split", "Volt Switch", "Will-O-Wisp"],
+ "abilities": ["Levitate"],
+ "teraTypes": ["Electric", "Steel"]
}
]
},
@@ -3299,7 +3317,13 @@
"role": "Bulky Attacker",
"movepool": ["Nasty Plot", "Overheat", "Pain Split", "Thunderbolt", "Volt Switch", "Will-O-Wisp"],
"abilities": ["Levitate"],
- "teraTypes": ["Electric", "Fire"]
+ "teraTypes": ["Electric", "Fire", "Steel"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["Discharge", "Overheat", "Pain Split", "Volt Switch", "Will-O-Wisp"],
+ "abilities": ["Levitate"],
+ "teraTypes": ["Electric", "Steel"]
}
]
},
@@ -3319,7 +3343,7 @@
"sets": [
{
"role": "Bulky Attacker",
- "movepool": ["Air Slash", "Nasty Plot", "Thunderbolt", "Volt Switch", "Will-O-Wisp"],
+ "movepool": ["Air Slash", "Nasty Plot", "Thunder Wave", "Thunderbolt", "Volt Switch", "Will-O-Wisp"],
"abilities": ["Levitate"],
"teraTypes": ["Electric", "Steel"]
}
@@ -3740,16 +3764,10 @@
"level": 69,
"sets": [
{
- "role": "Bulky Support",
- "movepool": ["Focus Blast", "Judgment", "Recover", "Will-O-Wisp"],
+ "role": "Bulky Attacker",
+ "movepool": ["Calm Mind", "Focus Blast", "Judgment", "Recover", "Will-O-Wisp"],
"abilities": ["Multitype"],
- "teraTypes": ["Fighting", "Normal"]
- },
- {
- "role": "Bulky Setup",
- "movepool": ["Calm Mind", "Focus Blast", "Judgment", "Recover"],
- "abilities": ["Multitype"],
- "teraTypes": ["Fighting", "Ghost", "Normal"]
+ "teraTypes": ["Dark", "Fighting"]
}
]
},
@@ -4017,7 +4035,13 @@
"sets": [
{
"role": "Fast Support",
- "movepool": ["Encore", "Giga Drain", "Leech Seed", "Moonblast", "Stun Spore", "Substitute", "U-turn"],
+ "movepool": ["Encore", "Giga Drain", "Moonblast", "Stun Spore", "U-turn"],
+ "abilities": ["Prankster"],
+ "teraTypes": ["Poison", "Steel"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["Encore", "Leech Seed", "Moonblast", "Substitute"],
"abilities": ["Prankster"],
"teraTypes": ["Poison", "Steel"]
}
@@ -5011,7 +5035,7 @@
"sets": [
{
"role": "Wallbreaker",
- "movepool": ["Drain Punch", "Horn Leech", "Poltergeist", "Rest", "Trick Room", "Will-O-Wisp", "Wood Hammer"],
+ "movepool": ["Drain Punch", "Horn Leech", "Poltergeist", "Rest", "Will-O-Wisp", "Wood Hammer"],
"abilities": ["Natural Cure"],
"teraTypes": ["Fighting"]
},
@@ -5515,9 +5539,9 @@
"sets": [
{
"role": "Setup Sweeper",
- "movepool": ["Drain Punch", "Play Rough", "Shadow Sneak", "Swords Dance", "Wood Hammer"],
+ "movepool": ["Drain Punch", "Play Rough", "Shadow Sneak", "Swords Dance"],
"abilities": ["Disguise"],
- "teraTypes": ["Fairy", "Fighting", "Grass"]
+ "teraTypes": ["Fairy", "Fighting"]
},
{
"role": "Fast Bulky Setup",
@@ -6563,7 +6587,7 @@
"sets": [
{
"role": "Bulky Support",
- "movepool": ["Body Press", "Play Rough", "Protect", "Stomping Tantrum", "Wish"],
+ "movepool": ["Body Press", "Play Rough", "Protect", "Wish", "Yawn"],
"abilities": ["Well-Baked Body"],
"teraTypes": ["Steel"]
}
@@ -7126,7 +7150,7 @@
"sets": [
{
"role": "Bulky Attacker",
- "movepool": ["Close Combat", "Seed Bomb", "Spore", "Sucker Punch"],
+ "movepool": ["Close Combat", "Crunch", "Spore", "Sucker Punch"],
"abilities": ["Protosynthesis"],
"teraTypes": ["Fighting", "Poison"]
},
diff --git a/data/random-battles/gen9/teams.ts b/data/random-battles/gen9/teams.ts
index 8d21a57e89..99fea6cb97 100644
--- a/data/random-battles/gen9/teams.ts
+++ b/data/random-battles/gen9/teams.ts
@@ -104,7 +104,7 @@ const SPEED_CONTROL = [
];
// Moves that shouldn't be the only STAB moves:
const NO_STAB = [
- 'accelerock', 'aquajet', 'bounce', 'breakingswipe', 'bulletpunch', 'chatter', 'chloroblast', 'clearsmog', 'covet',
+ 'acidspray', 'accelerock', 'aquajet', 'bounce', 'breakingswipe', 'bulletpunch', 'chatter', 'chloroblast', 'clearsmog', 'covet',
'dragontail', 'doomdesire', 'electroweb', 'eruption', 'explosion', 'fakeout', 'feint', 'flamecharge', 'flipturn', 'futuresight',
'grassyglide', 'iceshard', 'icywind', 'incinerate', 'infestation', 'machpunch', 'meteorbeam', 'mortalspin', 'nuzzle', 'pluck', 'pursuit',
'quickattack', 'rapidspin', 'reversal', 'selfdestruct', 'shadowsneak', 'skydrop', 'snarl', 'strugglebug', 'suckerpunch', 'trailblaze',
@@ -501,7 +501,7 @@ export class RandomTeams {
// Team-based move culls
if (teamDetails.screens) {
- if (movePool.includes('auroraveil')) this.fastPop(movePool, movePool.indexOf('auroraveil'));
+ if (movePool.includes('auroraveil') && !isDoubles) this.fastPop(movePool, movePool.indexOf('auroraveil'));
if (movePool.length >= this.maxMoveCount + 2) {
if (movePool.includes('reflect')) this.fastPop(movePool, movePool.indexOf('reflect'));
if (movePool.includes('lightscreen')) this.fastPop(movePool, movePool.indexOf('lightscreen'));
@@ -568,7 +568,6 @@ export class RandomTeams {
[SETUP, HAZARDS],
[SETUP, ['defog', 'nuzzle', 'toxic', 'yawn', 'haze']],
[PHYSICAL_SETUP, PHYSICAL_SETUP],
- [SPECIAL_SETUP, 'thunderwave'],
['substitute', PIVOT_MOVES],
[SPEED_SETUP, ['aquajet', 'rest', 'trickroom']],
['curse', ['irondefense', 'rapidspin']],
@@ -816,12 +815,6 @@ export class RandomTeams {
}
}
- // Enforce Encore on Whimsicott
- if (movePool.includes('encore') && species.id === 'whimsicott') {
- counter = this.addMove('encore', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
-
// Enforce moves in doubles
if (isDoubles) {
const doublesEnforcedMoves = ['mortalspin', 'spore'];
@@ -841,11 +834,6 @@ export class RandomTeams {
counter = this.addMove('tailwind', moves, types, abilities, teamDetails, species, isLead, isDoubles,
movePool, teraType, role);
}
- // Enforce Thunder Wave on Prankster users as well
- if (movePool.includes('thunderwave') && abilities.includes('Prankster')) {
- counter = this.addMove('thunderwave', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
}
// Enforce STAB priority
@@ -1111,7 +1099,6 @@ export class RandomTeams {
// Hard-code abilities here
if (species.id === 'drifblim') return moves.has('defog') ? 'Aftermath' : 'Unburden';
if (abilities.includes('Flash Fire') && this.dex.getEffectiveness('Fire', teraType) >= 1) return 'Flash Fire';
- if (species.id === 'hitmonchan' && counter.get('ironfist')) return 'Iron Fist';
if ((species.id === 'thundurus' || species.id === 'tornadus') && !counter.get('Physical')) return 'Prankster';
if (species.id === 'swampert' && (counter.get('Water') || moves.has('flipturn'))) return 'Torrent';
if (species.id === 'toucannon' && counter.get('skilllink')) return 'Skill Link';
diff --git a/data/random-battles/gen9baby/sets.json b/data/random-battles/gen9baby/sets.json
index 8f41c6ea17..0507dbd0ac 100644
--- a/data/random-battles/gen9baby/sets.json
+++ b/data/random-battles/gen9baby/sets.json
@@ -1101,7 +1101,7 @@
"level": 5,
"sets": [
{
- "role": "Setup Sweeper",
+ "role": "Bulky Setup",
"movepool": ["Dual Wingbeat", "Earthquake", "Knock Off", "Swords Dance"],
"abilities": ["Immunity"],
"teraTypes": ["Steel", "Water"]
@@ -1970,7 +1970,7 @@
"level": 6,
"sets": [
{
- "role": "Setup Sweeper",
+ "role": "Bulky Setup",
"movepool": ["Iron Head", "Night Slash", "Sucker Punch", "Swords Dance"],
"abilities": ["Defiant"],
"teraTypes": ["Dark", "Fairy", "Steel"]
@@ -2599,7 +2599,7 @@
]
},
"skiddo": {
- "level": 7,
+ "level": 6,
"sets": [
{
"role": "Bulky Setup",
From d7697566392007ff2c57c3db77a3c6bcfed42000 Mon Sep 17 00:00:00 2001
From: InkyDarkBird <102001461+InkyDarkBird@users.noreply.github.com>
Date: Sun, 1 Feb 2026 16:12:56 -0500
Subject: [PATCH 58/66] SV Flipped: Fix bans (#11739)
---
config/formats.ts | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/config/formats.ts b/config/formats.ts
index 98ef07caa5..6f80143459 100644
--- a/config/formats.ts
+++ b/config/formats.ts
@@ -487,10 +487,11 @@ export const Formats: import('../sim/dex-formats').FormatList = [
ruleset: ['Standard OMs', 'Sleep Clause Mod', 'Evasion Abilities Clause', 'Evasion Items Clause', 'Flipped Mod'],
banlist: [
'Araquanid', 'Arceus', 'Azumarill', 'Blissey', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cloyster', 'Cyclizar', 'Deoxys-Attack', 'Deoxys-Normal', 'Deoxys-Speed',
- 'Dialga', 'Dialga-Origin', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Koraidon', 'Kyogre', 'Lugia', 'Lunala',
- 'Magearna', 'Mewtwo', 'Miraidon', 'Mienshao', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Palkia-Origin', 'Rayquaza', 'Regieleki', 'Reshiram',
- 'Shaymin-Sky', 'Snorlax', 'Solgaleo', 'Sylveon', 'Terapagos', 'Torkoal', 'Tornadus-Therian', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned',
- 'Zekrom', 'Arena Trap', 'Moody', 'Shadow Tag', 'Damp Rock', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail',
+ 'Dialga', 'Dialga-Origin', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Koraidon', 'Kyogre', 'Kyurem-Black',
+ 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Mienshao', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Palkia-Origin',
+ 'Rayquaza', 'Regieleki', 'Reshiram', 'Shaymin-Sky', 'Snorlax', 'Solgaleo', 'Sylveon', 'Terapagos', 'Torkoal', 'Tornadus-Therian', 'Zacian', 'Zacian-Crowned',
+ 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody', 'Shadow Tag', 'Damp Rock', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects',
+ 'Shed Tail',
],
},
{
From 1cbbf9bf652f9e28f501f1d5182dabc97418350a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?=
<80102738+andrebastosdias@users.noreply.github.com>
Date: Sun, 1 Feb 2026 23:31:28 +0000
Subject: [PATCH 59/66] Gen 3 Pursuit only activates on the selected target
(#11611)
* Gen 3 Pursuit only activates on the chosen target
* Change
* Fix following Pursuits
* Resolve further conflicts
* Update gen 4
* Don't need to check for allies
---
data/mods/gen2/moves.ts | 16 ++++----
data/mods/gen3/moves.ts | 14 +++++++
data/mods/gen4/moves.ts | 11 +++--
data/moves.ts | 10 ++---
test/sim/moves/pursuit.js | 86 +++++++++++++++++++++++++++++++++++++++
5 files changed, 115 insertions(+), 22 deletions(-)
diff --git a/data/mods/gen2/moves.ts b/data/mods/gen2/moves.ts
index c6ad3efc10..a93ee5c525 100644
--- a/data/mods/gen2/moves.ts
+++ b/data/mods/gen2/moves.ts
@@ -573,16 +573,14 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
},
pursuit: {
inherit: true,
- beforeTurnCallback(pokemon) {
- for (const side of this.sides) {
- if (side.hasAlly(pokemon)) continue;
- side.addSideCondition('pursuit', pokemon);
- const data = side.getSideConditionData('pursuit');
- if (!data.sources) {
- data.sources = [];
- }
- data.sources.push(pokemon);
+ beforeTurnCallback(pokemon, target) {
+ if (pokemon.isAlly(target)) return;
+ target.addVolatile('pursuit');
+ const data = target.volatiles['pursuit'];
+ if (!data.sources) {
+ data.sources = [];
}
+ data.sources.push(pokemon);
},
onModifyMove() {},
condition: {
diff --git a/data/mods/gen3/moves.ts b/data/mods/gen3/moves.ts
index 9764e11df8..191b050808 100644
--- a/data/mods/gen3/moves.ts
+++ b/data/mods/gen3/moves.ts
@@ -578,6 +578,20 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
inherit: true,
basePower: 70,
},
+ pursuit: {
+ inherit: true,
+ beforeTurnCallback(pokemon, target) {
+ if (['frz', 'slp'].includes(pokemon.status) ||
+ (pokemon.hasAbility('truant') && pokemon.truantTurn)) return;
+ if (pokemon.isAlly(target)) return;
+ target.addVolatile('pursuit');
+ const data = target.volatiles['pursuit'];
+ if (!data.sources) {
+ data.sources = [];
+ }
+ data.sources.push(pokemon);
+ },
+ },
recover: {
inherit: true,
pp: 20,
diff --git a/data/mods/gen4/moves.ts b/data/mods/gen4/moves.ts
index 38282c5cbe..3caeea4ac3 100644
--- a/data/mods/gen4/moves.ts
+++ b/data/mods/gen4/moves.ts
@@ -1333,12 +1333,11 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
pursuit: {
inherit: true,
beforeTurnCallback(pokemon) {
- if (['frz', 'slp'].includes(pokemon.status) || (pokemon.hasAbility('truant') &&
- (pokemon.volatiles['truant'] || pokemon.truantTurn))) return;
- for (const side of this.sides) {
- if (side.hasAlly(pokemon)) continue;
- side.addSideCondition('pursuit', pokemon);
- const data = side.getSideConditionData('pursuit');
+ if (['frz', 'slp'].includes(pokemon.status) ||
+ (pokemon.hasAbility('truant') && pokemon.volatiles['truant'])) return;
+ for (const target of pokemon.foes()) {
+ target.addVolatile('pursuit');
+ const data = target.volatiles['pursuit'];
if (!data.sources) {
data.sources = [];
}
diff --git a/data/moves.ts b/data/moves.ts
index 50bfecdc3b..e19821ac7f 100644
--- a/data/moves.ts
+++ b/data/moves.ts
@@ -14914,10 +14914,9 @@ export const Moves: import('../sim/dex-moves').MoveDataTable = {
priority: 0,
flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 },
beforeTurnCallback(pokemon) {
- for (const side of this.sides) {
- if (side.hasAlly(pokemon)) continue;
- side.addSideCondition('pursuit', pokemon);
- const data = side.getSideConditionData('pursuit');
+ for (const target of pokemon.foes()) {
+ target.addVolatile('pursuit');
+ const data = target.volatiles['pursuit'];
if (!data.sources) {
data.sources = [];
}
@@ -14927,9 +14926,6 @@ export const Moves: import('../sim/dex-moves').MoveDataTable = {
onModifyMove(move, source, target) {
if (target?.beingCalledBack || target?.switchFlag) move.accuracy = true;
},
- onTryHit(target, pokemon) {
- target.side.removeSideCondition('pursuit');
- },
condition: {
duration: 1,
onBeforeSwitchOut(pokemon) {
diff --git a/test/sim/moves/pursuit.js b/test/sim/moves/pursuit.js
index f66de5b62d..f3d634df71 100644
--- a/test/sim/moves/pursuit.js
+++ b/test/sim/moves/pursuit.js
@@ -64,6 +64,57 @@ describe(`Pursuit`, () => {
assert.bounded(furret.maxhp - furret.hp, [60, 70]);
});
+ it(`should activate on the first target switching out`, () => {
+ battle = common.createBattle({ gameType: 'doubles' }, [[
+ { species: "Beedrill", moves: ['pursuit'] },
+ { species: "Furret", moves: ['pursuit'] },
+ ], [
+ { species: "Clefable", ability: 'shellarmor', moves: ['calmmind'] },
+ { species: "Toxapex", moves: ['calmmind'] },
+ { species: "Wynaut", moves: ['calmmind'] },
+ { species: "Alakazam", moves: ['calmmind'] },
+ ]]);
+ const [clefable, toxapex, wynaut, alakazam] = battle.p2.pokemon;
+ battle.makeChoices('move pursuit 1, move pursuit 2', 'switch 3, switch 4'); // Does not matter who Pursuit targets
+ assert.bounded(clefable.maxhp - clefable.hp, [34 + 30, 40 + 35]);
+ assert.fullHP(toxapex);
+ assert.fullHP(wynaut);
+ assert.fullHP(alakazam);
+ });
+
+ it(`should activate on the second target switching out, if the first fainted`, () => {
+ battle = common.createBattle({ gameType: 'doubles' }, [[
+ { species: "Beedrill", moves: ['pursuit'] },
+ { species: "Furret", moves: ['pursuit'] },
+ ], [
+ { species: "Clefable", ability: 'shellarmor', moves: ['calmmind'] },
+ { species: "Shedinja", moves: ['calmmind'], evs: { spe: 252 } },
+ { species: "Wynaut", moves: ['calmmind'] },
+ { species: "Alakazam", moves: ['calmmind'] },
+ ]]);
+ const [clefable, shedinja, wynaut, alakazam] = battle.p2.pokemon;
+ battle.makeChoices('move pursuit 1, move pursuit 2', 'switch 3, switch 4');
+ assert.bounded(clefable.maxhp - clefable.hp, [34, 40]);
+ assert.fainted(shedinja);
+ assert.fullHP(wynaut);
+ assert.fullHP(alakazam);
+ });
+
+ it(`should activate on a switching opponent even if targeting an ally`, () => {
+ battle = common.createBattle({ gameType: 'doubles' }, [[
+ { species: "Beedrill", item: 'beedrillite', moves: ['pursuit'] },
+ { species: "Clefable", moves: ['calmmind'] },
+ { species: "Furret", moves: ['calmmind'] },
+ ], [
+ { species: "Clefable", moves: ['calmmind'] },
+ { species: "Alakazam", moves: ['calmmind'] },
+ { species: "Roserade", moves: ['calmmind'] },
+ ]]);
+ const clefable = battle.p2.pokemon[0];
+ battle.makeChoices('move pursuit mega -2, switch 3', 'switch 3, move calmmind');
+ assert.bounded(clefable.maxhp - clefable.hp, [53, 63]);
+ });
+
it(`should not double in power or activate before a switch triggered by Red Card`, () => {
battle = common.createBattle([[
{ species: 'Steelix', item: 'redcard', moves: ['pursuit'] },
@@ -195,6 +246,41 @@ describe(`Pursuit`, () => {
battle.makeChoices('move Pursuit', 'switch 2');
assert(battle.p2.active[0].hp);
});
+
+ it(`should only activate on the targeted opponent`, () => {
+ battle = common.gen(3).createBattle({ gameType: 'doubles' }, [[
+ { species: "Beedrill", moves: ['pursuit'] },
+ { species: "Furret", moves: ['pursuit'] },
+ ], [
+ { species: "Clefable", ability: 'shellarmor', moves: ['calmmind'] },
+ { species: "Clefable", ability: 'shellarmor', moves: ['calmmind'] },
+ { species: "Wynaut", moves: ['calmmind'] },
+ { species: "Alakazam", moves: ['calmmind'] },
+ ]]);
+ const [clefable, clefable2, wynaut, alakazam] = battle.p2.pokemon;
+ battle.makeChoices('move pursuit 1, move pursuit 2', 'switch 3, switch 4');
+ assert.bounded(clefable.maxhp - clefable.hp, [35, 42]);
+ assert.bounded(clefable2.maxhp - clefable2.hp, [35, 42]);
+ assert.fullHP(wynaut);
+ assert.fullHP(alakazam);
+ });
+
+ it(`should not activate on a switching opponent if targeting an ally`, () => {
+ battle = common.gen(3).createBattle({ gameType: 'doubles' }, [[
+ { species: "Beedrill", moves: ['pursuit'] },
+ { species: "Clefable", moves: ['calmmind'] },
+ { species: "Furret", moves: ['calmmind'] },
+ ], [
+ { species: "Clefable", moves: ['calmmind'] },
+ { species: "Alakazam", moves: ['calmmind'] },
+ { species: "Roserade", moves: ['calmmind'] },
+ ]]);
+ const clefable = battle.p2.pokemon[0];
+ battle.makeChoices('move pursuit -2, switch 3', 'switch 3, move calmmind');
+ assert.fullHP(clefable);
+ const furret = battle.p1.pokemon[1];
+ assert.bounded(furret.maxhp - furret.hp, [25, 30]);
+ });
});
describe(`[Gen 2]`, () => {
From e847960a1b826594246d7e0958f5ae2cb0af0172 Mon Sep 17 00:00:00 2001
From: Lucas <33839844+Lucas-Meijer@users.noreply.github.com>
Date: Mon, 2 Feb 2026 00:32:18 +0100
Subject: [PATCH 60/66] Add different dexes to /reevo (#11731)
Co-authored-by: Meijer,L. (Lucas)
---
server/chat-plugins/othermetas.ts | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
diff --git a/server/chat-plugins/othermetas.ts b/server/chat-plugins/othermetas.ts
index 37a54c70d4..284fd2bde1 100644
--- a/server/chat-plugins/othermetas.ts
+++ b/server/chat-plugins/othermetas.ts
@@ -849,20 +849,30 @@ export const commands: Chat.ChatCommands = {
reevo: 'showevo',
showevo(target, room, user, connection, cmd) {
- if (!this.runBroadcast()) return;
- const targetid = toID(target);
+ const args = target.split(',');
+ if (!toID(args[0])) return this.parse('/help reevohelp');
+ this.runBroadcast();
+ let dex = Dex;
+ if (args[1] && toID(args[1]) in Dex.dexes) {
+ dex = Dex.dexes[toID(args[1])];
+ } else if (room?.battle) {
+ const format = Dex.formats.get(room.battle.format);
+ dex = Dex.mod(format.mod);
+ }
+
+ const targetid = toID(args[0]);
const isReEvo = cmd === 'reevo';
if (!targetid) return this.parse(`/help ${isReEvo ? 're' : 'show'}evo`);
- const evo = Dex.species.get(target);
+ const evo = dex.species.get(targetid);
if (!evo.exists) {
- throw new Chat.ErrorMessage(`Error: Pok\u00e9mon ${target} not found.`);
+ throw new Chat.ErrorMessage(`Error: Pok\u00e9mon ${targetid} not found.`);
}
if (!evo.prevo) {
- const evoBaseSpecies = Dex.species.get(
+ const evoBaseSpecies = dex.species.get(
(Array.isArray(evo.battleOnly) ? evo.battleOnly[0] : evo.battleOnly) || evo.changesFrom || evo.name
);
if (!evoBaseSpecies.prevo) throw new Chat.ErrorMessage(`Error: ${evoBaseSpecies.name} is not an evolution.`);
- const prevoSpecies = Dex.species.get(evoBaseSpecies.prevo);
+ const prevoSpecies = dex.species.get(evoBaseSpecies.prevo);
const deltas = Utils.deepClone(evo);
if (!isReEvo) {
deltas.tier = 'CE';
@@ -901,14 +911,14 @@ export const commands: Chat.ChatCommands = {
const details = {
Gen: evo.gen,
Weight: `${deltas.weighthg < 0 ? "" : "+"}${deltas.weighthg / 10} kg`,
- Stage: (Dex.species.get(prevoSpecies.prevo).exists ? 3 : 2),
+ Stage: (dex.species.get(prevoSpecies.prevo).exists ? 3 : 2),
};
this.sendReply(`|raw|${Chat.getDataPokemonHTML(deltas)}`);
if (!isReEvo) {
this.sendReply(`|raw|Gen: ${details["Gen"]} |  Weight: ${details["Weight"]} |  Stage: ${details["Stage"]}`);
}
} else {
- const prevoSpecies = Dex.species.get(evo.prevo);
+ const prevoSpecies = dex.species.get(evo.prevo);
const deltas = Utils.deepClone(evo);
if (!isReEvo) {
deltas.tier = 'CE';
@@ -941,7 +951,7 @@ export const commands: Chat.ChatCommands = {
const details = {
Gen: evo.gen,
Weight: `${deltas.weighthg < 0 ? "" : "+"}${deltas.weighthg / 10} kg`,
- Stage: (Dex.species.get(prevoSpecies.prevo).exists ? 3 : 2),
+ Stage: (dex.species.get(prevoSpecies.prevo).exists ? 3 : 2),
};
this.sendReply(`|raw|${Chat.getDataPokemonHTML(deltas)}`);
if (!isReEvo) {
From a6c45ecb45d859df35e72fee30d61204f49bdd45 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?=
<80102738+andrebastosdias@users.noreply.github.com>
Date: Tue, 3 Feb 2026 00:47:14 +0000
Subject: [PATCH 61/66] Remove Slow Start volatile tag on suppression (#11571)
---
data/abilities.ts | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/data/abilities.ts b/data/abilities.ts
index cbc7bf08b4..5eaa06b0ab 100644
--- a/data/abilities.ts
+++ b/data/abilities.ts
@@ -4255,6 +4255,10 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = {
return this.chainModify(0.5);
}
},
+ onEnd(pokemon) {
+ if (pokemon.beingCalledBack) return;
+ this.add('-end', pokemon, 'Slow Start', '[silent]');
+ },
flags: {},
name: "Slow Start",
rating: -1,
From 08562488b063a7a055197376736ed0c292f2ac2a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?=
<80102738+andrebastosdias@users.noreply.github.com>
Date: Tue, 3 Feb 2026 23:09:04 +0000
Subject: [PATCH 62/66] Refactor Illusion switch out check (#11742)
---
data/abilities.ts | 2 +-
sim/battle-actions.ts | 1 -
test/sim/abilities/illusion.js | 13 +++++++++++++
3 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/data/abilities.ts b/data/abilities.ts
index 5eaa06b0ab..51be75b7eb 100644
--- a/data/abilities.ts
+++ b/data/abilities.ts
@@ -2017,7 +2017,7 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = {
}
},
onEnd(pokemon) {
- if (pokemon.illusion) {
+ if (pokemon.illusion && !pokemon.beingCalledBack) {
this.debug('illusion cleared');
pokemon.illusion = null;
const details = pokemon.getUpdatedDetails();
diff --git a/sim/battle-actions.ts b/sim/battle-actions.ts
index 7879fdd6c0..b87cf131b0 100644
--- a/sim/battle-actions.ts
+++ b/sim/battle-actions.ts
@@ -100,7 +100,6 @@ export class BattleActions {
// will definitely switch out at this point
- oldActive.illusion = null;
this.battle.singleEvent('End', oldActive.getAbility(), oldActive.abilityState, oldActive);
this.battle.singleEvent('End', oldActive.getItem(), oldActive.itemState, oldActive);
diff --git a/test/sim/abilities/illusion.js b/test/sim/abilities/illusion.js
index a49e097d54..49917c37d4 100644
--- a/test/sim/abilities/illusion.js
+++ b/test/sim/abilities/illusion.js
@@ -10,6 +10,19 @@ describe('Illusion', () => {
battle.destroy();
});
+ it('should not wear off when switching out', () => {
+ battle = common.createBattle([[
+ { species: "Zoroark", ability: 'illusion', moves: ['sleeptalk'] },
+ { species: "Diglett", moves: ['sleeptalk'] },
+ ], [
+ { species: "Wynaut", moves: ['sleeptalk'] },
+ ]]);
+
+ battle.makeChoices('move sleeptalk', 'auto');
+ battle.makeChoices('switch 2', 'auto');
+ assert(battle.log.every(line => !line.includes('|-end|p1a: Zoroark|Illusion')));
+ });
+
it(`should not instantly wear off before Dynamaxing`, () => {
battle = common.gen(8).createBattle([[
{ species: "Zoroark", ability: 'illusion', moves: ['sleeptalk'] },
From 0fd2b67850b5d637f65b3cff9ecd298fdd61e90a Mon Sep 17 00:00:00 2001
From: Aurastic <33085835+ISenseAura@users.noreply.github.com>
Date: Wed, 4 Feb 2026 11:56:23 +0530
Subject: [PATCH 63/66] Automodchat: Prevent idle or busy staff from being
treated as online (#11727)
---
server/rooms.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server/rooms.ts b/server/rooms.ts
index 8433eed21a..b98bb0331a 100644
--- a/server/rooms.ts
+++ b/server/rooms.ts
@@ -1078,7 +1078,7 @@ export abstract class BasicRoom {
runAutoModchat() {
if (!this.settings.autoModchat || this.settings.autoModchat.active) return;
// they are staff and online
- const staff = Object.values(this.users).filter(u => this.auth.atLeast(u, '%'));
+ const staff = Object.values(this.users).filter(u => this.auth.atLeast(u, '%') && u.statusType === 'online');
if (!staff.length) {
const { time } = this.settings.autoModchat;
if (!time || time < 5) {
From 2ca5d0f3caf176a370ce450002a0f591c615c04b Mon Sep 17 00:00:00 2001
From: HiZo <96159984+HisuianZoroark@users.noreply.github.com>
Date: Fri, 6 Feb 2026 03:16:16 -0500
Subject: [PATCH 64/66] Mix and Mega formats: Fix banlists (#11743)
* LC Mix and Mega: Bans Sticky Web
* @clastia smells
---
config/formats.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/config/formats.ts b/config/formats.ts
index 6f80143459..0817632f56 100644
--- a/config/formats.ts
+++ b/config/formats.ts
@@ -592,7 +592,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [
'Palkia', 'Rayquaza', 'Regigigas', 'Reshiram', 'Slaking', 'Sneasler', 'Solgaleo', 'Ursaluna', 'Ursaluna-Bloodmoon', 'Urshifu-Single-Strike', 'Walking Wake',
'Zacian', 'Zekrom', 'Zoroark-Hisui', 'Acupressure', 'Astral Barrage', 'Belly Drum', 'Blood Moon', 'Boomburst', 'Ceaseless Edge', 'Clangorous Soul', 'Dire Claw',
'Dragon Energy', 'Electro Shot', 'Extreme Speed', 'Fillet Away', 'Gigaton Hammer', 'Jet Punch', 'Last Respects', 'Lumina Crash', 'No Retreat', 'Power Trip',
- 'Rage Fist', 'Revival Blessing', 'Shed Tail', 'Shell Smash', 'Shift Gear', 'Surging Strikes', 'Torch Song', 'Triple Arrows', 'V-create', 'Victory Dance', 'Wicked Blow',
+ 'Rage Fist', 'Revival Blessing', 'Shell Smash', 'Shift Gear', 'Surging Strikes', 'Torch Song', 'Triple Arrows', 'V-create', 'Victory Dance', 'Wicked Blow',
],
onValidateTeam(team) {
const itemTable = new Set();
@@ -2898,7 +2898,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [
banlist: [
'Basculin-White-Striped', 'Dunsparce', 'Duraludon', 'Meditite', 'Rufflet', 'Scyther', 'Sneasel', 'Sneasel-Hisui', 'Stantler', 'Moody',
'Absolite Z', 'Beedrillite', 'Blazikenite', 'Gengarite', 'Kangaskhanite', 'Lucarionite', 'Lucarionite Z', 'Mawilite', 'Medichamite', 'Pidgeotite', 'Zygardite',
- 'Baton Pass',
+ 'Baton Pass', 'Sticky Web',
],
restricted: [
'Aipom', 'Buizel', 'Cutiefly', 'Dratini', 'Elekid', 'Gastly', 'Girafarig', 'Gligar', 'Mienfoo',
From af4f85a33c6b7c0afe840723d7b1ddf1d84d00ae Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?=
<80102738+andrebastosdias@users.noreply.github.com>
Date: Fri, 6 Feb 2026 08:16:33 +0000
Subject: [PATCH 65/66] ADV UU: Drop Fearow, Hypno and Manectric (#11740)
https://www.smogon.com/forums/threads/adv-rarelyused.3731043/post-10860568
---
data/mods/gen3/formats-data.ts | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/data/mods/gen3/formats-data.ts b/data/mods/gen3/formats-data.ts
index d56a3693da..e87cfe3add 100644
--- a/data/mods/gen3/formats-data.ts
+++ b/data/mods/gen3/formats-data.ts
@@ -63,7 +63,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "LC",
},
fearow: {
- tier: "UU",
+ tier: "RUBL",
},
ekans: {
tier: "LC",
@@ -312,7 +312,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "ZU",
},
hypno: {
- tier: "UU",
+ tier: "RU",
},
krabby: {
tier: "LC",
@@ -930,7 +930,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "LC",
},
manectric: {
- tier: "UU",
+ tier: "RU",
},
plusle: {
tier: "NU",
From df367633bce4d5d20516da8a98e648c508b3767f Mon Sep 17 00:00:00 2001
From: Karthik Bandagonda <32044378+Karthik99999@users.noreply.github.com>
Date: Fri, 6 Feb 2026 06:47:29 -0700
Subject: [PATCH 66/66] Refactor Skill Swap to its own function (#11563)
---
data/abilities.ts | 25 +++----------------------
data/mods/gen4/moves.ts | 13 -------------
data/mods/gen5/moves.ts | 13 -------------
data/moves.ts | 29 +----------------------------
sim/battle.ts | 33 +++++++++++++++++++++++++++++++++
sim/pokemon.ts | 16 ++++++++++++----
6 files changed, 49 insertions(+), 80 deletions(-)
diff --git a/data/abilities.ts b/data/abilities.ts
index 51be75b7eb..c54de73b98 100644
--- a/data/abilities.ts
+++ b/data/abilities.ts
@@ -2333,10 +2333,7 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = {
return;
}
if (this.checkMoveMakesContact(move, source, target, !source.isAlly(target))) {
- const oldAbility = source.setAbility('lingeringaroma', target);
- if (oldAbility) {
- this.add('-activate', target, 'ability: Lingering Aroma', this.dex.abilities.get(oldAbility).name, `[of] ${source}`);
- }
+ source.setAbility('lingeringaroma', target);
}
},
flags: {},
@@ -2714,10 +2711,7 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = {
return;
}
if (this.checkMoveMakesContact(move, source, target, !source.isAlly(target))) {
- const oldAbility = source.setAbility('mummy', target);
- if (oldAbility) {
- this.add('-activate', target, 'ability: Mummy', this.dex.abilities.get(oldAbility).name, `[of] ${source}`);
- }
+ source.setAbility('mummy', target);
}
},
flags: {},
@@ -5270,20 +5264,7 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = {
},
wanderingspirit: {
onDamagingHit(damage, target, source, move) {
- if (source.getAbility().flags['failskillswap'] || target.volatiles['dynamax']) return;
-
- if (this.checkMoveMakesContact(move, source, target)) {
- const targetCanBeSet = this.runEvent('SetAbility', target, source, this.effect, source.ability);
- if (!targetCanBeSet) return targetCanBeSet;
- const sourceAbility = source.setAbility('wanderingspirit', target);
- if (!sourceAbility) return;
- if (target.isAlly(source)) {
- this.add('-activate', target, 'Skill Swap', '', '', `[of] ${source}`);
- } else {
- this.add('-activate', target, 'ability: Wandering Spirit', this.dex.abilities.get(sourceAbility).name, 'Wandering Spirit', `[of] ${source}`);
- }
- target.setAbility(sourceAbility);
- }
+ if (this.checkMoveMakesContact(move, source, target)) this.skillSwap(source, target);
},
flags: {},
name: "Wandering Spirit",
diff --git a/data/mods/gen4/moves.ts b/data/mods/gen4/moves.ts
index 3caeea4ac3..1e5db1ae5e 100644
--- a/data/mods/gen4/moves.ts
+++ b/data/mods/gen4/moves.ts
@@ -1554,19 +1554,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
this.add('-activate', source, 'move: Mimic', move.name);
},
},
- skillswap: {
- inherit: true,
- onHit(target, source) {
- const targetAbility = target.ability;
- const sourceAbility = source.ability;
- if (targetAbility === sourceAbility || source.hasItem('griseousorb') || target.hasItem('griseousorb')) {
- return false;
- }
- this.add('-activate', source, 'move: Skill Swap');
- source.setAbility(targetAbility);
- target.setAbility(sourceAbility);
- },
- },
sleeptalk: {
inherit: true,
onTryHit(pokemon) {
diff --git a/data/mods/gen5/moves.ts b/data/mods/gen5/moves.ts
index ab4cc6060f..4328d70e1e 100644
--- a/data/mods/gen5/moves.ts
+++ b/data/mods/gen5/moves.ts
@@ -794,19 +794,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
inherit: true,
flags: { protect: 1, reflectable: 1, mirror: 1, sound: 1, metronome: 1 },
},
- skillswap: {
- inherit: true,
- onHit(target, source) {
- const targetAbility = target.ability;
- const sourceAbility = source.ability;
- if (targetAbility === sourceAbility) {
- return false;
- }
- this.add('-activate', source, 'move: Skill Swap', this.dex.abilities.get(targetAbility), this.dex.abilities.get(sourceAbility), `[of] ${target}`);
- source.setAbility(targetAbility);
- target.setAbility(sourceAbility);
- },
- },
skullbash: {
inherit: true,
basePower: 100,
diff --git a/data/moves.ts b/data/moves.ts
index e19821ac7f..8004f48dfb 100644
--- a/data/moves.ts
+++ b/data/moves.ts
@@ -17209,35 +17209,8 @@ export const Moves: import('../sim/dex-moves').MoveDataTable = {
pp: 10,
priority: 0,
flags: { protect: 1, mirror: 1, bypasssub: 1, allyanim: 1, metronome: 1 },
- onTryHit(target, source) {
- const targetAbility = target.getAbility();
- const sourceAbility = source.getAbility();
- if (sourceAbility.flags['failskillswap'] || targetAbility.flags['failskillswap'] || target.volatiles['dynamax']) {
- return false;
- }
- const sourceCanBeSet = this.runEvent('SetAbility', source, source, this.effect, targetAbility);
- if (!sourceCanBeSet) return sourceCanBeSet;
- const targetCanBeSet = this.runEvent('SetAbility', target, source, this.effect, sourceAbility);
- if (!targetCanBeSet) return targetCanBeSet;
- },
onHit(target, source, move) {
- const targetAbility = target.getAbility();
- const sourceAbility = source.getAbility();
- if (target.isAlly(source)) {
- this.add('-activate', source, 'move: Skill Swap', '', '', `[of] ${target}`);
- } else {
- this.add('-activate', source, 'move: Skill Swap', targetAbility, sourceAbility, `[of] ${target}`);
- }
- this.singleEvent('End', sourceAbility, source.abilityState, source);
- this.singleEvent('End', targetAbility, target.abilityState, target);
- source.ability = targetAbility.id;
- target.ability = sourceAbility.id;
- source.abilityState = this.initEffectState({ id: this.toID(source.ability), target: source });
- target.abilityState = this.initEffectState({ id: this.toID(target.ability), target });
- source.volatileStaleness = undefined;
- if (!target.isAlly(source)) target.volatileStaleness = 'external';
- this.singleEvent('Start', targetAbility, source.abilityState, source);
- this.singleEvent('Start', sourceAbility, target.abilityState, target);
+ return this.skillSwap(source, target);
},
secondary: null,
target: "normal",
diff --git a/sim/battle.ts b/sim/battle.ts
index e4c6e2ee87..cbfbda0de2 100644
--- a/sim/battle.ts
+++ b/sim/battle.ts
@@ -1298,6 +1298,39 @@ export class Battle {
return !!move.flags['contact'];
}
+ skillSwap(source: Pokemon, target: Pokemon) {
+ if (source.fainted || target.fainted) return false;
+ if (source.volatiles['dynamax'] || target.volatiles['dynamax']) return false;
+ const sourceAbility = source.getAbility();
+ const targetAbility = target.getAbility();
+ if (sourceAbility.flags['failskillswap'] || targetAbility.flags['failskillswap']) return false;
+ if (this.gen <= 5 && sourceAbility.id === targetAbility.id) return false;
+
+ const sourceEffect = this.dex.conditions.get('skillswap');
+ const targetCanBeSet = this.runEvent('SetAbility', target, source, sourceEffect, sourceAbility);
+ if (!targetCanBeSet) return targetCanBeSet;
+ const sourceCanBeSet = this.runEvent('SetAbility', source, source, sourceEffect, targetAbility);
+ if (!sourceCanBeSet) return sourceCanBeSet;
+
+ if (this.gen <= 4 || source.isAlly(target)) {
+ this.add('-activate', source, 'Skill Swap');
+ } else {
+ this.add('-activate', source, 'Skill Swap', target, `[ability] ${targetAbility.name}`, `[ability2] ${sourceAbility.name}`);
+ }
+ this.singleEvent('End', sourceAbility, source.abilityState, source);
+ this.singleEvent('End', targetAbility, target.abilityState, target);
+ source.ability = targetAbility.id;
+ target.ability = sourceAbility.id;
+ source.abilityState = this.initEffectState({ id: toID(source.ability), target: source });
+ target.abilityState = this.initEffectState({ id: toID(target.ability), target });
+ source.volatileStaleness = undefined;
+ if (!source.isAlly(target)) target.volatileStaleness = 'external';
+ if (this.gen > 3) {
+ this.singleEvent('Start', sourceAbility, target.abilityState, target);
+ this.singleEvent('Start', targetAbility, source.abilityState, source);
+ }
+ }
+
getPokemon(fullname: string | Pokemon) {
if (typeof fullname !== 'string') fullname = fullname.fullname;
for (const side of this.sides) {
diff --git a/sim/pokemon.ts b/sim/pokemon.ts
index ba51b073a0..418bdc3bd2 100644
--- a/sim/pokemon.ts
+++ b/sim/pokemon.ts
@@ -1900,10 +1900,18 @@ export class Pokemon {
this.ability = ability.id;
this.abilityState = this.battle.initEffectState({ id: ability.id, target: this });
if (sourceEffect && !isFromFormeChange && !isTransform) {
- if (source) {
- this.battle.add('-ability', this, ability.name, oldAbility.name, `[from] ${sourceEffect.fullname}`, `[of] ${source}`);
- } else {
- this.battle.add('-ability', this, ability.name, oldAbility.name, `[from] ${sourceEffect.fullname}`);
+ switch (sourceEffect.id) {
+ case 'mummy':
+ case 'lingeringaroma':
+ this.battle.add('-activate', source, sourceEffect.fullname, this, '[ability] ' + oldAbility.name);
+ break;
+ default:
+ if (source) {
+ this.battle.add('-ability', this, ability.name, oldAbility.name, `[from] ${sourceEffect.fullname}`, `[of] ${source}`);
+ } else {
+ this.battle.add('-ability', this, ability.name, oldAbility.name, `[from] ${sourceEffect.fullname}`);
+ }
+ break;
}
}
if (ability.id && this.battle.gen > 3 &&