apply biome formatting

This commit is contained in:
Bertie690 2025-08-23 00:25:04 -04:00 committed by Sirz Benjie
parent 495dd9cabe
commit 2bffccd7f9
No known key found for this signature in database
GPG Key ID: 4A524B4D196C759E
29 changed files with 538 additions and 507 deletions

View File

@ -10,4 +10,4 @@
"aaron-bond.better-comments", "aaron-bond.better-comments",
"MuTsunTsai.jsdoc-link" "MuTsunTsai.jsdoc-link"
] ]
} }

View File

@ -67,7 +67,11 @@
"useJsonImportAttributes": "off" // "Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'nodenext', or 'preserve'. ts(2823)" "useJsonImportAttributes": "off" // "Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'nodenext', or 'preserve'. ts(2823)"
}, },
"style": { "style": {
"noNegationElse": "warn", // TODO: Promote to error eventually "noNegationElse": {
"level": "warn", // TODO: Promote to error eventually
"fix": "none", // duplicates else blocks
"options": {}
},
// TODO: Fix all instances of this and promote to `error` - this and enums are the 2 things // TODO: Fix all instances of this and promote to `error` - this and enums are the 2 things
// barring us from `esModuleInterop` // barring us from `esModuleInterop`
"noParameterProperties": "warn", "noParameterProperties": "warn",
@ -140,7 +144,14 @@
} }
} }
}, },
"useUnifiedTypeSignatures": "error",
// TODO: Wait until the rule gets options for ignoring doc comments and/or different parameter names,
// and THEN enable it codebase-wide
"useUnifiedTypeSignatures": {
"level": "info",
"fix": "none",
"options": {}
},
"useGroupedAccessorPairs": "error", "useGroupedAccessorPairs": "error",
"useObjectSpread": "error", "useObjectSpread": "error",
"useNumericSeparators": "off" // TODO: Consider enabling? "useNumericSeparators": "off" // TODO: Consider enabling?

View File

@ -129,7 +129,7 @@ async function scrapeTrainerNames(classes) {
reason = `Server produced error code of ${+errCode}`; reason = `Server produced error code of ${+errCode}`;
} }
throw new Error( throw new Error(
chalk.red.bold(`Failed to parse URL for ${chalk.hex("#7fff00")(`\"${trainerClass}\"`)}!\nReason: ${reason}`), chalk.red.bold(`Failed to parse URL for ${chalk.hex("#7fff00")(`"${trainerClass}"`)}!\nReason: ${reason}`),
); );
} }
}), }),
@ -191,9 +191,7 @@ async function doFetch(trainerClass, seenClasses) {
const [female, counterpartURLs] = checkGenderAndType(document); const [female, counterpartURLs] = checkGenderAndType(document);
const names = fetchNames(trainerListHeader, female); const names = fetchNames(trainerListHeader, female);
if (names === INVALID_URL) { if (names === INVALID_URL) {
return Promise.reject( return Promise.reject(new Error(chalk.red.bold(`URL "${classURL}" did not correspond to a valid trainer class!`)));
new Error(chalk.red.bold(`URL \"${classURL}\" did not correspond to a valid trainer class!`)),
);
} }
// Recurse into all unseen gender counterparts' URLs, using the first male name we find // Recurse into all unseen gender counterparts' URLs, using the first male name we find
@ -285,7 +283,7 @@ async function promptExisting(outFile) {
{ {
type: "confirm", type: "confirm",
name: "continue", name: "continue",
message: `File ${chalk.blue(outFile)} already exists!` + "\nDo you want to replace it?", message: `File ${chalk.blue(outFile)} already exists!\nDo you want to replace it?`,
default: false, default: false,
}, },
]) ])

View File

@ -3154,7 +3154,7 @@ export class PostSummonTransformAbAttr extends PostSummonAbAttr {
// If none are eligible to copy, it will not activate. // If none are eligible to copy, it will not activate.
const targets = user.getOpponents().filter(opp => user.canTransformInto(opp)); const targets = user.getOpponents().filter(opp => user.canTransformInto(opp));
if (targets.length === 0) { if (targets.length === 0) {
return undefined; return;
} }
const mon = targets[user.randBattleSeedInt(targets.length)]; const mon = targets[user.randBattleSeedInt(targets.length)];

View File

@ -765,9 +765,10 @@ export abstract class EntryHazardTag extends SerializableArenaTag {
const source = this.getSourcePokemon(); const source = this.getSourcePokemon();
if (!source) { if (!source) {
console.warn( console.warn(
"Failed to get source Pokemon for AernaTrapTag on add message!" + // biome-ignore lint/complexity/noUselessStringConcat: Rule bugs out with operator linebreaks set to `before`
`\nTag type: ${this.tagType}` + "Failed to get source Pokemon for AernaTrapTag on add message!"
`\nPID: ${this.sourceId}`, + `\nTag type: ${this.tagType}`
+ `\nPID: ${this.sourceId}`,
); );
return; return;
} }

View File

@ -8,74 +8,74 @@ import { SpeciesId } from "#enums/species-id";
* Generated by the `eggMoves:parse` script using a CSV sourced from the current Balance Team spreadsheet. * Generated by the `eggMoves:parse` script using a CSV sourced from the current Balance Team spreadsheet.
*/ */
export const speciesEggMoves = { export const speciesEggMoves = {
[SpeciesId.BULBASAUR]: [ MoveId.SAPPY_SEED, MoveId.MALIGNANT_CHAIN, MoveId.EARTH_POWER, MoveId.MATCHA_GOTCHA ], [SpeciesId.BULBASAUR]: [MoveId.SAPPY_SEED, MoveId.MALIGNANT_CHAIN, MoveId.EARTH_POWER, MoveId.MATCHA_GOTCHA],
[SpeciesId.CHARMANDER]: [ MoveId.DRAGON_DANCE, MoveId.AEROBLAST, MoveId.EARTH_POWER, MoveId.BITTER_BLADE ], [SpeciesId.CHARMANDER]: [MoveId.DRAGON_DANCE, MoveId.AEROBLAST, MoveId.EARTH_POWER, MoveId.BITTER_BLADE],
[SpeciesId.SQUIRTLE]: [ MoveId.FREEZE_DRY, MoveId.ARMOR_CANNON, MoveId.SHORE_UP, MoveId.ORIGIN_PULSE ], [SpeciesId.SQUIRTLE]: [MoveId.FREEZE_DRY, MoveId.ARMOR_CANNON, MoveId.SHORE_UP, MoveId.ORIGIN_PULSE],
[SpeciesId.CATERPIE]: [ MoveId.SANDSEAR_STORM, MoveId.SILK_TRAP, MoveId.TWIN_BEAM, MoveId.BLEAKWIND_STORM ], [SpeciesId.CATERPIE]: [MoveId.SANDSEAR_STORM, MoveId.SILK_TRAP, MoveId.TWIN_BEAM, MoveId.BLEAKWIND_STORM],
[SpeciesId.WEEDLE]: [ MoveId.THOUSAND_ARROWS, MoveId.NOXIOUS_TORQUE, MoveId.ATTACK_ORDER, MoveId.VICTORY_DANCE ], [SpeciesId.WEEDLE]: [MoveId.THOUSAND_ARROWS, MoveId.NOXIOUS_TORQUE, MoveId.ATTACK_ORDER, MoveId.VICTORY_DANCE],
[SpeciesId.PIDGEY]: [ MoveId.BLEAKWIND_STORM, MoveId.SANDSEAR_STORM, MoveId.CALM_MIND, MoveId.BOOMBURST ], [SpeciesId.PIDGEY]: [MoveId.BLEAKWIND_STORM, MoveId.SANDSEAR_STORM, MoveId.CALM_MIND, MoveId.BOOMBURST],
[SpeciesId.RATTATA]: [ MoveId.HYPER_FANG, MoveId.PSYCHIC_FANGS, MoveId.FIRE_FANG, MoveId.EXTREME_SPEED ], [SpeciesId.RATTATA]: [MoveId.HYPER_FANG, MoveId.PSYCHIC_FANGS, MoveId.FIRE_FANG, MoveId.EXTREME_SPEED],
[SpeciesId.SPEAROW]: [ MoveId.FLOATY_FALL, MoveId.EXTREME_SPEED, MoveId.KNOCK_OFF, MoveId.TRIPLE_ARROWS ], [SpeciesId.SPEAROW]: [MoveId.FLOATY_FALL, MoveId.EXTREME_SPEED, MoveId.KNOCK_OFF, MoveId.TRIPLE_ARROWS],
[SpeciesId.EKANS]: [ MoveId.NOXIOUS_TORQUE, MoveId.DRAGON_DANCE, MoveId.SLACK_OFF, MoveId.SHED_TAIL ], [SpeciesId.EKANS]: [MoveId.NOXIOUS_TORQUE, MoveId.DRAGON_DANCE, MoveId.SLACK_OFF, MoveId.SHED_TAIL],
[SpeciesId.SANDSHREW]: [ MoveId.HIGH_HORSEPOWER, MoveId.DIRE_CLAW, MoveId.SHORE_UP, MoveId.MIGHTY_CLEAVE ], [SpeciesId.SANDSHREW]: [MoveId.HIGH_HORSEPOWER, MoveId.DIRE_CLAW, MoveId.SHORE_UP, MoveId.MIGHTY_CLEAVE],
[SpeciesId.NIDORAN_F]: [ MoveId.BANEFUL_BUNKER, MoveId.MOONLIGHT, MoveId.BARB_BARRAGE, MoveId.THOUSAND_WAVES ], [SpeciesId.NIDORAN_F]: [MoveId.BANEFUL_BUNKER, MoveId.MOONLIGHT, MoveId.BARB_BARRAGE, MoveId.THOUSAND_WAVES],
[SpeciesId.NIDORAN_M]: [ MoveId.DRAGON_DANCE, MoveId.MOUNTAIN_GALE, MoveId.NOXIOUS_TORQUE, MoveId.PRECIPICE_BLADES ], [SpeciesId.NIDORAN_M]: [MoveId.DRAGON_DANCE, MoveId.MOUNTAIN_GALE, MoveId.NOXIOUS_TORQUE, MoveId.PRECIPICE_BLADES],
[SpeciesId.VULPIX]: [ MoveId.MOONBLAST, MoveId.INFERNAL_PARADE, MoveId.MORNING_SUN, MoveId.TAIL_GLOW ], [SpeciesId.VULPIX]: [MoveId.MOONBLAST, MoveId.INFERNAL_PARADE, MoveId.MORNING_SUN, MoveId.TAIL_GLOW],
[SpeciesId.ZUBAT]: [ MoveId.FLOATY_FALL, MoveId.DIRE_CLAW, MoveId.SWORDS_DANCE, MoveId.COLLISION_COURSE ], [SpeciesId.ZUBAT]: [MoveId.FLOATY_FALL, MoveId.DIRE_CLAW, MoveId.SWORDS_DANCE, MoveId.COLLISION_COURSE],
[SpeciesId.ODDISH]: [ MoveId.SLUDGE_BOMB, MoveId.FIERY_DANCE, MoveId.STRENGTH_SAP, MoveId.SPORE ], [SpeciesId.ODDISH]: [MoveId.SLUDGE_BOMB, MoveId.FIERY_DANCE, MoveId.STRENGTH_SAP, MoveId.SPORE],
[SpeciesId.PARAS]: [ MoveId.LEECH_LIFE, MoveId.HORN_LEECH, MoveId.CRABHAMMER, MoveId.SAPPY_SEED ], [SpeciesId.PARAS]: [MoveId.LEECH_LIFE, MoveId.HORN_LEECH, MoveId.CRABHAMMER, MoveId.SAPPY_SEED],
[SpeciesId.VENONAT]: [ MoveId.SLUDGE_BOMB, MoveId.TOXIC_THREAD, MoveId.EARTH_POWER, MoveId.STORED_POWER ], [SpeciesId.VENONAT]: [MoveId.SLUDGE_BOMB, MoveId.TOXIC_THREAD, MoveId.EARTH_POWER, MoveId.STORED_POWER],
[SpeciesId.DIGLETT]: [ MoveId.TRIPLE_DIVE, MoveId.SWORDS_DANCE, MoveId.TRIPLE_AXEL, MoveId.HEADLONG_RUSH ], [SpeciesId.DIGLETT]: [MoveId.TRIPLE_DIVE, MoveId.SWORDS_DANCE, MoveId.TRIPLE_AXEL, MoveId.HEADLONG_RUSH],
[SpeciesId.MEOWTH]: [ MoveId.HEART_STAMP, MoveId.SWORDS_DANCE, MoveId.SIZZLY_SLIDE, MoveId.TAIL_SLAP ], [SpeciesId.MEOWTH]: [MoveId.HEART_STAMP, MoveId.SWORDS_DANCE, MoveId.SIZZLY_SLIDE, MoveId.TAIL_SLAP],
[SpeciesId.PSYDUCK]: [ MoveId.FROST_BREATH, MoveId.AQUA_STEP, MoveId.MYSTICAL_POWER, MoveId.BOUNCY_BUBBLE ], [SpeciesId.PSYDUCK]: [MoveId.FROST_BREATH, MoveId.AQUA_STEP, MoveId.MYSTICAL_POWER, MoveId.BOUNCY_BUBBLE],
[SpeciesId.MANKEY]: [ MoveId.DRAIN_PUNCH, MoveId.SLACK_OFF, MoveId.METEOR_MASH, MoveId.NO_RETREAT ], [SpeciesId.MANKEY]: [MoveId.DRAIN_PUNCH, MoveId.SLACK_OFF, MoveId.METEOR_MASH, MoveId.NO_RETREAT],
[SpeciesId.GROWLITHE]: [ MoveId.ZING_ZAP, MoveId.DRAGON_DANCE, MoveId.MORNING_SUN, MoveId.SACRED_FIRE ], [SpeciesId.GROWLITHE]: [MoveId.ZING_ZAP, MoveId.DRAGON_DANCE, MoveId.MORNING_SUN, MoveId.SACRED_FIRE],
[SpeciesId.POLIWAG]: [ MoveId.SLACK_OFF, MoveId.WILDBOLT_STORM, MoveId.DRAIN_PUNCH, MoveId.SURGING_STRIKES ], [SpeciesId.POLIWAG]: [MoveId.SLACK_OFF, MoveId.WILDBOLT_STORM, MoveId.DRAIN_PUNCH, MoveId.SURGING_STRIKES],
[SpeciesId.ABRA]: [ MoveId.AURA_SPHERE, MoveId.BADDY_BAD, MoveId.ICE_BEAM, MoveId.PSYSTRIKE ], [SpeciesId.ABRA]: [MoveId.AURA_SPHERE, MoveId.BADDY_BAD, MoveId.ICE_BEAM, MoveId.PSYSTRIKE],
[SpeciesId.MACHOP]: [ MoveId.DRAIN_PUNCH, MoveId.METEOR_MASH, MoveId.MOUNTAIN_GALE, MoveId.FISSURE ], [SpeciesId.MACHOP]: [MoveId.DRAIN_PUNCH, MoveId.METEOR_MASH, MoveId.MOUNTAIN_GALE, MoveId.FISSURE],
[SpeciesId.BELLSPROUT]: [ MoveId.SOLAR_BLADE, MoveId.STRENGTH_SAP, MoveId.FIRE_LASH, MoveId.VICTORY_DANCE ], [SpeciesId.BELLSPROUT]: [MoveId.SOLAR_BLADE, MoveId.STRENGTH_SAP, MoveId.FIRE_LASH, MoveId.VICTORY_DANCE],
[SpeciesId.TENTACOOL]: [ MoveId.BANEFUL_BUNKER, MoveId.MALIGNANT_CHAIN, MoveId.BOUNCY_BUBBLE, MoveId.STRENGTH_SAP ], [SpeciesId.TENTACOOL]: [MoveId.BANEFUL_BUNKER, MoveId.MALIGNANT_CHAIN, MoveId.BOUNCY_BUBBLE, MoveId.STRENGTH_SAP],
[SpeciesId.GEODUDE]: [ MoveId.FLARE_BLITZ, MoveId.HEAD_SMASH, MoveId.SHORE_UP, MoveId.SHELL_SMASH ], [SpeciesId.GEODUDE]: [MoveId.FLARE_BLITZ, MoveId.HEAD_SMASH, MoveId.SHORE_UP, MoveId.SHELL_SMASH],
[SpeciesId.PONYTA]: [ MoveId.HEADLONG_RUSH, MoveId.HIGH_JUMP_KICK, MoveId.SWORDS_DANCE, MoveId.VOLT_TACKLE ], [SpeciesId.PONYTA]: [MoveId.HEADLONG_RUSH, MoveId.HIGH_JUMP_KICK, MoveId.SWORDS_DANCE, MoveId.VOLT_TACKLE],
[SpeciesId.SLOWPOKE]: [ MoveId.SPLISHY_SPLASH, MoveId.FROST_BREATH, MoveId.SHED_TAIL, MoveId.MYSTICAL_POWER ], [SpeciesId.SLOWPOKE]: [MoveId.SPLISHY_SPLASH, MoveId.FROST_BREATH, MoveId.SHED_TAIL, MoveId.MYSTICAL_POWER],
[SpeciesId.MAGNEMITE]: [ MoveId.PARABOLIC_CHARGE, MoveId.FLAMETHROWER, MoveId.ICE_BEAM, MoveId.THUNDERCLAP ], [SpeciesId.MAGNEMITE]: [MoveId.PARABOLIC_CHARGE, MoveId.FLAMETHROWER, MoveId.ICE_BEAM, MoveId.THUNDERCLAP],
[SpeciesId.FARFETCHD]: [ MoveId.IVY_CUDGEL, MoveId.TRIPLE_ARROWS, MoveId.DRILL_RUN, MoveId.VICTORY_DANCE ], [SpeciesId.FARFETCHD]: [MoveId.IVY_CUDGEL, MoveId.TRIPLE_ARROWS, MoveId.DRILL_RUN, MoveId.VICTORY_DANCE],
[SpeciesId.DODUO]: [ MoveId.TRIPLE_AXEL, MoveId.HYPER_DRILL, MoveId.FLOATY_FALL, MoveId.TRIPLE_ARROWS ], [SpeciesId.DODUO]: [MoveId.TRIPLE_AXEL, MoveId.HYPER_DRILL, MoveId.FLOATY_FALL, MoveId.TRIPLE_ARROWS],
[SpeciesId.SEEL]: [ MoveId.FREEZE_DRY, MoveId.BOUNCY_BUBBLE, MoveId.SLACK_OFF, MoveId.STEAM_ERUPTION ], [SpeciesId.SEEL]: [MoveId.FREEZE_DRY, MoveId.BOUNCY_BUBBLE, MoveId.SLACK_OFF, MoveId.STEAM_ERUPTION],
[SpeciesId.GRIMER]: [ MoveId.SUCKER_PUNCH, MoveId.CURSE, MoveId.NOXIOUS_TORQUE, MoveId.STRENGTH_SAP ], [SpeciesId.GRIMER]: [MoveId.SUCKER_PUNCH, MoveId.CURSE, MoveId.NOXIOUS_TORQUE, MoveId.STRENGTH_SAP],
[SpeciesId.SHELLDER]: [ MoveId.ROCK_BLAST, MoveId.WATER_SHURIKEN, MoveId.BANEFUL_BUNKER, MoveId.BONE_RUSH ], [SpeciesId.SHELLDER]: [MoveId.ROCK_BLAST, MoveId.WATER_SHURIKEN, MoveId.BANEFUL_BUNKER, MoveId.BONE_RUSH],
[SpeciesId.GASTLY]: [ MoveId.MALIGNANT_CHAIN, MoveId.AURA_SPHERE, MoveId.PARTING_SHOT, MoveId.DARK_VOID ], [SpeciesId.GASTLY]: [MoveId.MALIGNANT_CHAIN, MoveId.AURA_SPHERE, MoveId.PARTING_SHOT, MoveId.DARK_VOID],
[SpeciesId.ONIX]: [ MoveId.SHORE_UP, MoveId.THOUSAND_WAVES, MoveId.COIL, MoveId.DIAMOND_STORM ], [SpeciesId.ONIX]: [MoveId.SHORE_UP, MoveId.THOUSAND_WAVES, MoveId.COIL, MoveId.DIAMOND_STORM],
[SpeciesId.DROWZEE]: [ MoveId.BADDY_BAD, MoveId.STRENGTH_SAP, MoveId.LUMINA_CRASH, MoveId.DARK_VOID ], [SpeciesId.DROWZEE]: [MoveId.BADDY_BAD, MoveId.STRENGTH_SAP, MoveId.LUMINA_CRASH, MoveId.DARK_VOID],
[SpeciesId.KRABBY]: [ MoveId.DIRE_CLAW, MoveId.DRAGON_HAMMER, MoveId.IVY_CUDGEL, MoveId.JET_PUNCH ], [SpeciesId.KRABBY]: [MoveId.DIRE_CLAW, MoveId.DRAGON_HAMMER, MoveId.IVY_CUDGEL, MoveId.JET_PUNCH],
[SpeciesId.VOLTORB]: [ MoveId.NASTY_PLOT, MoveId.FUSION_FLARE, MoveId.FROST_BREATH, MoveId.ELECTRO_DRIFT ], [SpeciesId.VOLTORB]: [MoveId.NASTY_PLOT, MoveId.FUSION_FLARE, MoveId.FROST_BREATH, MoveId.ELECTRO_DRIFT],
[SpeciesId.EXEGGCUTE]: [ MoveId.FICKLE_BEAM, MoveId.APPLE_ACID, MoveId.HEAT_WAVE, MoveId.LUMINA_CRASH ], [SpeciesId.EXEGGCUTE]: [MoveId.FICKLE_BEAM, MoveId.APPLE_ACID, MoveId.HEAT_WAVE, MoveId.LUMINA_CRASH],
[SpeciesId.CUBONE]: [ MoveId.HEAD_SMASH, MoveId.WOOD_HAMMER, MoveId.SHADOW_SNEAK, MoveId.BITTER_BLADE ], [SpeciesId.CUBONE]: [MoveId.HEAD_SMASH, MoveId.WOOD_HAMMER, MoveId.SHADOW_SNEAK, MoveId.BITTER_BLADE],
[SpeciesId.LICKITUNG]: [ MoveId.CRUSH_GRIP, MoveId.FIRE_LASH, MoveId.SLACK_OFF, MoveId.MAGICAL_TORQUE ], [SpeciesId.LICKITUNG]: [MoveId.CRUSH_GRIP, MoveId.FIRE_LASH, MoveId.SLACK_OFF, MoveId.MAGICAL_TORQUE],
[SpeciesId.KOFFING]: [ MoveId.SCALD, MoveId.RECOVER, MoveId.BODY_PRESS, MoveId.MALIGNANT_CHAIN ], [SpeciesId.KOFFING]: [MoveId.SCALD, MoveId.RECOVER, MoveId.BODY_PRESS, MoveId.MALIGNANT_CHAIN],
[SpeciesId.RHYHORN]: [ MoveId.SHORE_UP, MoveId.ICE_HAMMER, MoveId.ACCELEROCK, MoveId.HEAD_SMASH ], [SpeciesId.RHYHORN]: [MoveId.SHORE_UP, MoveId.ICE_HAMMER, MoveId.ACCELEROCK, MoveId.HEAD_SMASH],
[SpeciesId.TANGELA]: [ MoveId.NATURES_MADNESS, MoveId.SNAP_TRAP, MoveId.PARTING_SHOT, MoveId.SAPPY_SEED ], [SpeciesId.TANGELA]: [MoveId.NATURES_MADNESS, MoveId.SNAP_TRAP, MoveId.PARTING_SHOT, MoveId.SAPPY_SEED],
[SpeciesId.KANGASKHAN]: [ MoveId.POWER_UP_PUNCH, MoveId.TRAILBLAZE, MoveId.COVET, MoveId.SEISMIC_TOSS ], [SpeciesId.KANGASKHAN]: [MoveId.POWER_UP_PUNCH, MoveId.TRAILBLAZE, MoveId.COVET, MoveId.SEISMIC_TOSS],
[SpeciesId.HORSEA]: [ MoveId.SNIPE_SHOT, MoveId.TAKE_HEART, MoveId.SHELL_SIDE_ARM, MoveId.DRAGON_ENERGY ], [SpeciesId.HORSEA]: [MoveId.SNIPE_SHOT, MoveId.TAKE_HEART, MoveId.SHELL_SIDE_ARM, MoveId.DRAGON_ENERGY],
[SpeciesId.GOLDEEN]: [ MoveId.GLACIAL_LANCE, MoveId.SUPERCELL_SLAM, MoveId.DRAGON_DANCE, MoveId.FISHIOUS_REND ], [SpeciesId.GOLDEEN]: [MoveId.GLACIAL_LANCE, MoveId.SUPERCELL_SLAM, MoveId.DRAGON_DANCE, MoveId.FISHIOUS_REND],
[SpeciesId.STARYU]: [ MoveId.CALM_MIND, MoveId.BOUNCY_BUBBLE, MoveId.MOONBLAST, MoveId.MYSTICAL_POWER ], [SpeciesId.STARYU]: [MoveId.CALM_MIND, MoveId.BOUNCY_BUBBLE, MoveId.MOONBLAST, MoveId.MYSTICAL_POWER],
[SpeciesId.SCYTHER]: [ MoveId.MIGHTY_CLEAVE, MoveId.GEAR_GRIND, MoveId.STORM_THROW, MoveId.BITTER_BLADE ], [SpeciesId.SCYTHER]: [MoveId.MIGHTY_CLEAVE, MoveId.GEAR_GRIND, MoveId.STORM_THROW, MoveId.BITTER_BLADE],
[SpeciesId.PINSIR]: [ MoveId.HEADLONG_RUSH, MoveId.LEECH_LIFE, MoveId.CRUSH_GRIP, MoveId.EXTREME_SPEED ], [SpeciesId.PINSIR]: [MoveId.HEADLONG_RUSH, MoveId.LEECH_LIFE, MoveId.CRUSH_GRIP, MoveId.EXTREME_SPEED],
[SpeciesId.TAUROS]: [ MoveId.SWORDS_DANCE, MoveId.FIRE_LASH, MoveId.WICKED_TORQUE, MoveId.COLLISION_COURSE ], [SpeciesId.TAUROS]: [MoveId.SWORDS_DANCE, MoveId.FIRE_LASH, MoveId.WICKED_TORQUE, MoveId.COLLISION_COURSE],
[SpeciesId.MAGIKARP]: [ MoveId.FLIP_TURN, MoveId.ICE_SPINNER, MoveId.KNOCK_OFF, MoveId.DRAGON_ASCENT ], [SpeciesId.MAGIKARP]: [MoveId.FLIP_TURN, MoveId.ICE_SPINNER, MoveId.KNOCK_OFF, MoveId.DRAGON_ASCENT],
[SpeciesId.LAPRAS]: [ MoveId.RECOVER, MoveId.FREEZE_DRY, MoveId.SCALD, MoveId.SHELL_SMASH ], [SpeciesId.LAPRAS]: [MoveId.RECOVER, MoveId.FREEZE_DRY, MoveId.SCALD, MoveId.SHELL_SMASH],
[SpeciesId.DITTO]: [ MoveId.MIMIC, MoveId.SKETCH, MoveId.METRONOME, MoveId.IMPRISON ], [SpeciesId.DITTO]: [MoveId.MIMIC, MoveId.SKETCH, MoveId.METRONOME, MoveId.IMPRISON],
[SpeciesId.EEVEE]: [ MoveId.WISH, MoveId.NO_RETREAT, MoveId.ZIPPY_ZAP, MoveId.BOOMBURST ], [SpeciesId.EEVEE]: [MoveId.WISH, MoveId.NO_RETREAT, MoveId.ZIPPY_ZAP, MoveId.BOOMBURST],
[SpeciesId.PORYGON]: [ MoveId.THUNDERCLAP, MoveId.DAZZLING_GLEAM, MoveId.FLAMETHROWER, MoveId.TECHNO_BLAST ], [SpeciesId.PORYGON]: [MoveId.THUNDERCLAP, MoveId.DAZZLING_GLEAM, MoveId.FLAMETHROWER, MoveId.TECHNO_BLAST],
[SpeciesId.OMANYTE]: [ MoveId.FREEZE_DRY, MoveId.GIGA_DRAIN, MoveId.POWER_GEM, MoveId.STEAM_ERUPTION ], [SpeciesId.OMANYTE]: [MoveId.FREEZE_DRY, MoveId.GIGA_DRAIN, MoveId.POWER_GEM, MoveId.STEAM_ERUPTION],
[SpeciesId.KABUTO]: [ MoveId.CEASELESS_EDGE, MoveId.HIGH_HORSEPOWER, MoveId.MIGHTY_CLEAVE, MoveId.CRABHAMMER ], [SpeciesId.KABUTO]: [MoveId.CEASELESS_EDGE, MoveId.HIGH_HORSEPOWER, MoveId.MIGHTY_CLEAVE, MoveId.CRABHAMMER],
[SpeciesId.AERODACTYL]: [ MoveId.FLOATY_FALL, MoveId.HIGH_HORSEPOWER, MoveId.STONE_AXE, MoveId.SWORDS_DANCE ], [SpeciesId.AERODACTYL]: [MoveId.FLOATY_FALL, MoveId.HIGH_HORSEPOWER, MoveId.STONE_AXE, MoveId.SWORDS_DANCE],
[SpeciesId.ARTICUNO]: [ MoveId.EARTH_POWER, MoveId.CALM_MIND, MoveId.AURORA_VEIL, MoveId.AEROBLAST ], [SpeciesId.ARTICUNO]: [MoveId.EARTH_POWER, MoveId.CALM_MIND, MoveId.AURORA_VEIL, MoveId.AEROBLAST],
[SpeciesId.ZAPDOS]: [ MoveId.BLEAKWIND_STORM, MoveId.CALM_MIND, MoveId.SANDSEAR_STORM, MoveId.ELECTRO_SHOT ], [SpeciesId.ZAPDOS]: [MoveId.BLEAKWIND_STORM, MoveId.CALM_MIND, MoveId.SANDSEAR_STORM, MoveId.ELECTRO_SHOT],
[SpeciesId.MOLTRES]: [ MoveId.EARTH_POWER, MoveId.CALM_MIND, MoveId.AEROBLAST, MoveId.TORCH_SONG ], [SpeciesId.MOLTRES]: [MoveId.EARTH_POWER, MoveId.CALM_MIND, MoveId.AEROBLAST, MoveId.TORCH_SONG],
[SpeciesId.DRATINI]: [ MoveId.DRAGON_HAMMER, MoveId.CRUSH_GRIP, MoveId.FIRE_LASH, MoveId.GIGATON_HAMMER ], [SpeciesId.DRATINI]: [MoveId.DRAGON_HAMMER, MoveId.CRUSH_GRIP, MoveId.FIRE_LASH, MoveId.GIGATON_HAMMER],
[SpeciesId.MEWTWO]: [ MoveId.METEOR_MASH, MoveId.MOONBLAST, MoveId.THUNDEROUS_KICK, MoveId.PHOTON_GEYSER ], [SpeciesId.MEWTWO]: [MoveId.METEOR_MASH, MoveId.MOONBLAST, MoveId.THUNDEROUS_KICK, MoveId.PHOTON_GEYSER],
[SpeciesId.MEW]: [ MoveId.PHOTON_GEYSER, MoveId.MOONBLAST, MoveId.ASTRAL_BARRAGE, MoveId.SHELL_SMASH ], [SpeciesId.MEW]: [MoveId.PHOTON_GEYSER, MoveId.MOONBLAST, MoveId.ASTRAL_BARRAGE, MoveId.SHELL_SMASH],
[SpeciesId.CHIKORITA]: [MoveId.SAPPY_SEED, MoveId.STONE_AXE, MoveId.DRAGON_DANCE, MoveId.SPORE], [SpeciesId.CHIKORITA]: [MoveId.SAPPY_SEED, MoveId.STONE_AXE, MoveId.DRAGON_DANCE, MoveId.SPORE],
[SpeciesId.CYNDAQUIL]: [MoveId.BURNING_BULWARK, MoveId.EARTH_POWER, MoveId.FIERY_DANCE, MoveId.ELECTRO_DRIFT], [SpeciesId.CYNDAQUIL]: [MoveId.BURNING_BULWARK, MoveId.EARTH_POWER, MoveId.FIERY_DANCE, MoveId.ELECTRO_DRIFT],
@ -206,309 +206,314 @@ export const speciesEggMoves = {
[SpeciesId.JIRACHI]: [ MoveId.TACHYON_CUTTER, MoveId.TRIPLE_ARROWS, MoveId.ROCK_SLIDE, MoveId.SHELL_SMASH ], [SpeciesId.JIRACHI]: [ MoveId.TACHYON_CUTTER, MoveId.TRIPLE_ARROWS, MoveId.ROCK_SLIDE, MoveId.SHELL_SMASH ],
[SpeciesId.DEOXYS]: [ MoveId.COLLISION_COURSE, MoveId.FUSION_FLARE, MoveId.PARTING_SHOT, MoveId.LUMINA_CRASH ], [SpeciesId.DEOXYS]: [ MoveId.COLLISION_COURSE, MoveId.FUSION_FLARE, MoveId.PARTING_SHOT, MoveId.LUMINA_CRASH ],
[SpeciesId.TURTWIG]: [ MoveId.SHELL_SMASH, MoveId.STONE_AXE, MoveId.ICE_SPINNER, MoveId.SAPPY_SEED ], [SpeciesId.TURTWIG]: [MoveId.SHELL_SMASH, MoveId.STONE_AXE, MoveId.ICE_SPINNER, MoveId.SAPPY_SEED],
[SpeciesId.CHIMCHAR]: [ MoveId.THUNDERBOLT, MoveId.SECRET_SWORD, MoveId.TRIPLE_AXEL, MoveId.SACRED_FIRE ], [SpeciesId.CHIMCHAR]: [MoveId.THUNDERBOLT, MoveId.SECRET_SWORD, MoveId.TRIPLE_AXEL, MoveId.SACRED_FIRE],
[SpeciesId.PIPLUP]: [ MoveId.KINGS_SHIELD, MoveId.TACHYON_CUTTER, MoveId.FREEZE_DRY, MoveId.STEAM_ERUPTION ], [SpeciesId.PIPLUP]: [MoveId.KINGS_SHIELD, MoveId.TACHYON_CUTTER, MoveId.FREEZE_DRY, MoveId.STEAM_ERUPTION],
[SpeciesId.STARLY]: [ MoveId.SWORDS_DANCE, MoveId.HEAD_CHARGE, MoveId.FLARE_BLITZ, MoveId.EXTREME_SPEED ], [SpeciesId.STARLY]: [MoveId.SWORDS_DANCE, MoveId.HEAD_CHARGE, MoveId.FLARE_BLITZ, MoveId.EXTREME_SPEED],
[SpeciesId.BIDOOF]: [ MoveId.EXTREME_SPEED, MoveId.COSMIC_POWER, MoveId.POWER_TRIP, MoveId.AQUA_STEP ], [SpeciesId.BIDOOF]: [MoveId.EXTREME_SPEED, MoveId.COSMIC_POWER, MoveId.POWER_TRIP, MoveId.AQUA_STEP],
[SpeciesId.KRICKETOT]: [ MoveId.BONEMERANG, MoveId.VICTORY_DANCE, MoveId.STONE_AXE, MoveId.POPULATION_BOMB ], [SpeciesId.KRICKETOT]: [MoveId.BONEMERANG, MoveId.VICTORY_DANCE, MoveId.STONE_AXE, MoveId.POPULATION_BOMB],
[SpeciesId.SHINX]: [ MoveId.THUNDEROUS_KICK, MoveId.TRIPLE_AXEL, MoveId.ZIPPY_ZAP, MoveId.BOLT_STRIKE ], [SpeciesId.SHINX]: [MoveId.THUNDEROUS_KICK, MoveId.TRIPLE_AXEL, MoveId.ZIPPY_ZAP, MoveId.BOLT_STRIKE],
[SpeciesId.BUDEW]: [ MoveId.FIERY_DANCE, MoveId.ACID_SPRAY, MoveId.BOUNCY_BUBBLE, MoveId.QUIVER_DANCE ], [SpeciesId.BUDEW]: [MoveId.FIERY_DANCE, MoveId.ACID_SPRAY, MoveId.BOUNCY_BUBBLE, MoveId.QUIVER_DANCE],
[SpeciesId.CRANIDOS]: [ MoveId.VOLT_TACKLE, MoveId.ACCELEROCK, MoveId.FLARE_BLITZ, MoveId.SHIFT_GEAR ], [SpeciesId.CRANIDOS]: [MoveId.VOLT_TACKLE, MoveId.ACCELEROCK, MoveId.FLARE_BLITZ, MoveId.SHIFT_GEAR],
[SpeciesId.SHIELDON]: [ MoveId.SHORE_UP, MoveId.BODY_PRESS, MoveId.KINGS_SHIELD, MoveId.DIAMOND_STORM ], [SpeciesId.SHIELDON]: [MoveId.SHORE_UP, MoveId.BODY_PRESS, MoveId.KINGS_SHIELD, MoveId.DIAMOND_STORM],
[SpeciesId.BURMY]: [ MoveId.FIERY_DANCE, MoveId.DEFEND_ORDER, MoveId.HEAL_ORDER, MoveId.SAPPY_SEED ], [SpeciesId.BURMY]: [MoveId.FIERY_DANCE, MoveId.DEFEND_ORDER, MoveId.HEAL_ORDER, MoveId.SAPPY_SEED],
[SpeciesId.COMBEE]: [ MoveId.SPORE, MoveId.FLOATY_FALL, MoveId.KINGS_SHIELD, MoveId.VICTORY_DANCE ], [SpeciesId.COMBEE]: [MoveId.SPORE, MoveId.FLOATY_FALL, MoveId.KINGS_SHIELD, MoveId.VICTORY_DANCE],
[SpeciesId.PACHIRISU]: [ MoveId.FREEZY_FROST, MoveId.SIZZLY_SLIDE, MoveId.SLACK_OFF, MoveId.THUNDER_CAGE ], [SpeciesId.PACHIRISU]: [MoveId.FREEZY_FROST, MoveId.SIZZLY_SLIDE, MoveId.SLACK_OFF, MoveId.THUNDER_CAGE],
[SpeciesId.BUIZEL]: [ MoveId.JET_PUNCH, MoveId.TRIPLE_AXEL, MoveId.SUPERCELL_SLAM, MoveId.SURGING_STRIKES ], [SpeciesId.BUIZEL]: [MoveId.JET_PUNCH, MoveId.TRIPLE_AXEL, MoveId.SUPERCELL_SLAM, MoveId.SURGING_STRIKES],
[SpeciesId.CHERUBI]: [ MoveId.SLEEP_POWDER, MoveId.STRENGTH_SAP, MoveId.FIRE_LASH, MoveId.FLOWER_TRICK ], [SpeciesId.CHERUBI]: [MoveId.SLEEP_POWDER, MoveId.STRENGTH_SAP, MoveId.FIRE_LASH, MoveId.FLOWER_TRICK],
[SpeciesId.SHELLOS]: [ MoveId.BOUNCY_BUBBLE, MoveId.SCORCHING_SANDS, MoveId.FREEZE_DRY, MoveId.STEAM_ERUPTION ], [SpeciesId.SHELLOS]: [MoveId.BOUNCY_BUBBLE, MoveId.SCORCHING_SANDS, MoveId.FREEZE_DRY, MoveId.STEAM_ERUPTION],
[SpeciesId.DRIFLOON]: [ MoveId.PSYCHO_SHIFT, MoveId.MIND_BLOWN, MoveId.CALM_MIND, MoveId.OBLIVION_WING ], [SpeciesId.DRIFLOON]: [MoveId.PSYCHO_SHIFT, MoveId.MIND_BLOWN, MoveId.CALM_MIND, MoveId.OBLIVION_WING],
[SpeciesId.BUNEARY]: [ MoveId.TRIPLE_AXEL, MoveId.EXTREME_SPEED, MoveId.THUNDEROUS_KICK, MoveId.SWORDS_DANCE ], [SpeciesId.BUNEARY]: [MoveId.TRIPLE_AXEL, MoveId.EXTREME_SPEED, MoveId.THUNDEROUS_KICK, MoveId.SWORDS_DANCE],
[SpeciesId.GLAMEOW]: [ MoveId.PARTING_SHOT, MoveId.HIGH_HORSEPOWER, MoveId.SWORDS_DANCE, MoveId.EXTREME_SPEED ], [SpeciesId.GLAMEOW]: [MoveId.PARTING_SHOT, MoveId.HIGH_HORSEPOWER, MoveId.SWORDS_DANCE, MoveId.EXTREME_SPEED],
[SpeciesId.CHINGLING]: [ MoveId.ALLURING_VOICE, MoveId.EERIE_SPELL, MoveId.TORCH_SONG, MoveId.BOOMBURST ], [SpeciesId.CHINGLING]: [MoveId.ALLURING_VOICE, MoveId.EERIE_SPELL, MoveId.TORCH_SONG, MoveId.BOOMBURST],
[SpeciesId.STUNKY]: [ MoveId.CEASELESS_EDGE, MoveId.FIRE_LASH, MoveId.RECOVER, MoveId.DIRE_CLAW ], [SpeciesId.STUNKY]: [MoveId.CEASELESS_EDGE, MoveId.FIRE_LASH, MoveId.RECOVER, MoveId.DIRE_CLAW],
[SpeciesId.BRONZOR]: [ MoveId.RECOVER, MoveId.TACHYON_CUTTER, MoveId.GLARE, MoveId.LUMINA_CRASH ], [SpeciesId.BRONZOR]: [MoveId.RECOVER, MoveId.TACHYON_CUTTER, MoveId.GLARE, MoveId.LUMINA_CRASH],
[SpeciesId.BONSLY]: [ MoveId.ACCELEROCK, MoveId.SWORDS_DANCE, MoveId.STRENGTH_SAP, MoveId.SAPPY_SEED ], [SpeciesId.BONSLY]: [MoveId.ACCELEROCK, MoveId.SWORDS_DANCE, MoveId.STRENGTH_SAP, MoveId.SAPPY_SEED],
[SpeciesId.MIME_JR]: [ MoveId.CHILLY_RECEPTION, MoveId.MOONBLAST, MoveId.FROST_BREATH, MoveId.LUMINA_CRASH ], [SpeciesId.MIME_JR]: [MoveId.CHILLY_RECEPTION, MoveId.MOONBLAST, MoveId.FROST_BREATH, MoveId.LUMINA_CRASH],
[SpeciesId.HAPPINY]: [ MoveId.COTTON_GUARD, MoveId.SEISMIC_TOSS, MoveId.SIZZLY_SLIDE, MoveId.REVIVAL_BLESSING ], [SpeciesId.HAPPINY]: [MoveId.COTTON_GUARD, MoveId.SEISMIC_TOSS, MoveId.SIZZLY_SLIDE, MoveId.REVIVAL_BLESSING],
[SpeciesId.CHATOT]: [ MoveId.SPARKLING_ARIA, MoveId.BOOMBURST, MoveId.BATON_PASS, MoveId.TORCH_SONG ], [SpeciesId.CHATOT]: [MoveId.SPARKLING_ARIA, MoveId.BOOMBURST, MoveId.BATON_PASS, MoveId.TORCH_SONG],
[SpeciesId.SPIRITOMB]: [ MoveId.PARTING_SHOT, MoveId.BADDY_BAD, MoveId.BITTER_MALICE, MoveId.STRENGTH_SAP ], [SpeciesId.SPIRITOMB]: [MoveId.PARTING_SHOT, MoveId.BADDY_BAD, MoveId.BITTER_MALICE, MoveId.STRENGTH_SAP],
[SpeciesId.GIBLE]: [ MoveId.METEOR_MASH, MoveId.BITTER_BLADE, MoveId.LANDS_WRATH, MoveId.DRAGON_DANCE ], [SpeciesId.GIBLE]: [MoveId.METEOR_MASH, MoveId.BITTER_BLADE, MoveId.LANDS_WRATH, MoveId.DRAGON_DANCE],
[SpeciesId.MUNCHLAX]: [ MoveId.STUFF_CHEEKS, MoveId.GRAV_APPLE, MoveId.SLACK_OFF, MoveId.EXTREME_SPEED ], [SpeciesId.MUNCHLAX]: [MoveId.STUFF_CHEEKS, MoveId.GRAV_APPLE, MoveId.SLACK_OFF, MoveId.EXTREME_SPEED],
[SpeciesId.RIOLU]: [ MoveId.THUNDEROUS_KICK, MoveId.TACHYON_CUTTER, MoveId.TRIPLE_AXEL, MoveId.SUNSTEEL_STRIKE ], [SpeciesId.RIOLU]: [MoveId.THUNDEROUS_KICK, MoveId.TACHYON_CUTTER, MoveId.TRIPLE_AXEL, MoveId.SUNSTEEL_STRIKE],
[SpeciesId.HIPPOPOTAS]: [ MoveId.SHORE_UP, MoveId.STONE_AXE, MoveId.BULK_UP, MoveId.SALT_CURE ], [SpeciesId.HIPPOPOTAS]: [MoveId.SHORE_UP, MoveId.STONE_AXE, MoveId.BULK_UP, MoveId.SALT_CURE],
[SpeciesId.SKORUPI]: [ MoveId.COIL, MoveId.DIRE_CLAW, MoveId.CRABHAMMER, MoveId.WICKED_BLOW ], [SpeciesId.SKORUPI]: [MoveId.COIL, MoveId.DIRE_CLAW, MoveId.CRABHAMMER, MoveId.WICKED_BLOW],
[SpeciesId.CROAGUNK]: [ MoveId.DIRE_CLAW, MoveId.TRIPLE_AXEL, MoveId.THUNDEROUS_KICK, MoveId.VICTORY_DANCE ], [SpeciesId.CROAGUNK]: [MoveId.DIRE_CLAW, MoveId.TRIPLE_AXEL, MoveId.THUNDEROUS_KICK, MoveId.VICTORY_DANCE],
[SpeciesId.CARNIVINE]: [ MoveId.STRENGTH_SAP, MoveId.FIRE_LASH, MoveId.COIL, MoveId.SAPPY_SEED ], [SpeciesId.CARNIVINE]: [MoveId.STRENGTH_SAP, MoveId.FIRE_LASH, MoveId.COIL, MoveId.SAPPY_SEED],
[SpeciesId.FINNEON]: [ MoveId.QUIVER_DANCE, MoveId.SPLISHY_SPLASH, MoveId.FREEZE_DRY, MoveId.OBLIVION_WING ], [SpeciesId.FINNEON]: [MoveId.QUIVER_DANCE, MoveId.SPLISHY_SPLASH, MoveId.FREEZE_DRY, MoveId.OBLIVION_WING],
[SpeciesId.MANTYKE]: [ MoveId.SPLISHY_SPLASH, MoveId.FREEZY_FROST, MoveId.NASTY_PLOT, MoveId.OBLIVION_WING ], [SpeciesId.MANTYKE]: [MoveId.SPLISHY_SPLASH, MoveId.FREEZY_FROST, MoveId.NASTY_PLOT, MoveId.OBLIVION_WING],
[SpeciesId.SNOVER]: [ MoveId.LANDS_WRATH, MoveId.POWDER, MoveId.CALM_MIND, MoveId.MATCHA_GOTCHA ], [SpeciesId.SNOVER]: [MoveId.LANDS_WRATH, MoveId.POWDER, MoveId.CALM_MIND, MoveId.MATCHA_GOTCHA],
[SpeciesId.ROTOM]: [ MoveId.STRENGTH_SAP, MoveId.FIERY_DANCE, MoveId.SPLISHY_SPLASH, MoveId.ELECTRO_DRIFT ], [SpeciesId.ROTOM]: [MoveId.STRENGTH_SAP, MoveId.FIERY_DANCE, MoveId.SPLISHY_SPLASH, MoveId.ELECTRO_DRIFT],
[SpeciesId.UXIE]: [ MoveId.LUMINA_CRASH, MoveId.AURA_SPHERE, MoveId.RECOVER, MoveId.TAIL_GLOW ], [SpeciesId.UXIE]: [MoveId.LUMINA_CRASH, MoveId.AURA_SPHERE, MoveId.RECOVER, MoveId.TAIL_GLOW],
[SpeciesId.MESPRIT]: [ MoveId.PHOTON_GEYSER, MoveId.AURA_SPHERE, MoveId.RECOVER, MoveId.TAIL_GLOW ], [SpeciesId.MESPRIT]: [MoveId.PHOTON_GEYSER, MoveId.AURA_SPHERE, MoveId.RECOVER, MoveId.TAIL_GLOW],
[SpeciesId.AZELF]: [ MoveId.PSYSTRIKE, MoveId.AURA_SPHERE, MoveId.ICE_BEAM, MoveId.TAIL_GLOW ], [SpeciesId.AZELF]: [MoveId.PSYSTRIKE, MoveId.AURA_SPHERE, MoveId.ICE_BEAM, MoveId.TAIL_GLOW],
[SpeciesId.DIALGA]: [ MoveId.CORE_ENFORCER, MoveId.TAKE_HEART, MoveId.RECOVER, MoveId.MAKE_IT_RAIN ], [SpeciesId.DIALGA]: [MoveId.CORE_ENFORCER, MoveId.TAKE_HEART, MoveId.RECOVER, MoveId.MAKE_IT_RAIN],
[SpeciesId.PALKIA]: [ MoveId.MALIGNANT_CHAIN, MoveId.TAKE_HEART, MoveId.RECOVER, MoveId.ORIGIN_PULSE ], [SpeciesId.PALKIA]: [MoveId.MALIGNANT_CHAIN, MoveId.TAKE_HEART, MoveId.RECOVER, MoveId.ORIGIN_PULSE],
[SpeciesId.HEATRAN]: [ MoveId.ENERGY_BALL, MoveId.RECOVER, MoveId.ERUPTION, MoveId.TACHYON_CUTTER ], [SpeciesId.HEATRAN]: [MoveId.ENERGY_BALL, MoveId.RECOVER, MoveId.ERUPTION, MoveId.TACHYON_CUTTER],
[SpeciesId.REGIGIGAS]: [ MoveId.OBSTRUCT, MoveId.RECOVER, MoveId.STORM_THROW, MoveId.LANDS_WRATH ], [SpeciesId.REGIGIGAS]: [MoveId.OBSTRUCT, MoveId.RECOVER, MoveId.STORM_THROW, MoveId.LANDS_WRATH],
[SpeciesId.GIRATINA]: [ MoveId.DRAGON_DANCE, MoveId.SPECTRAL_THIEF, MoveId.RECOVER, MoveId.COLLISION_COURSE ], [SpeciesId.GIRATINA]: [MoveId.DRAGON_DANCE, MoveId.SPECTRAL_THIEF, MoveId.RECOVER, MoveId.COLLISION_COURSE],
[SpeciesId.CRESSELIA]: [ MoveId.COSMIC_POWER, MoveId.BODY_PRESS, MoveId.SIZZLY_SLIDE, MoveId.LUMINA_CRASH ], [SpeciesId.CRESSELIA]: [MoveId.COSMIC_POWER, MoveId.BODY_PRESS, MoveId.SIZZLY_SLIDE, MoveId.LUMINA_CRASH],
[SpeciesId.PHIONE]: [ MoveId.BOUNCY_BUBBLE, MoveId.FREEZE_DRY, MoveId.STORED_POWER, MoveId.ORIGIN_PULSE ], [SpeciesId.PHIONE]: [MoveId.BOUNCY_BUBBLE, MoveId.FREEZE_DRY, MoveId.STORED_POWER, MoveId.ORIGIN_PULSE],
[SpeciesId.MANAPHY]: [ MoveId.BOUNCY_BUBBLE, MoveId.FROST_BREATH, MoveId.WILDBOLT_STORM, MoveId.ORIGIN_PULSE ], [SpeciesId.MANAPHY]: [MoveId.BOUNCY_BUBBLE, MoveId.FROST_BREATH, MoveId.WILDBOLT_STORM, MoveId.ORIGIN_PULSE],
[SpeciesId.DARKRAI]: [ MoveId.FIERY_WRATH, MoveId.MOONBLAST, MoveId.FIERY_DANCE, MoveId.MAKE_IT_RAIN ], [SpeciesId.DARKRAI]: [MoveId.FIERY_WRATH, MoveId.MOONBLAST, MoveId.FIERY_DANCE, MoveId.MAKE_IT_RAIN],
[SpeciesId.SHAYMIN]: [ MoveId.MATCHA_GOTCHA, MoveId.HEAT_WAVE, MoveId.AEROBLAST, MoveId.QUIVER_DANCE ], [SpeciesId.SHAYMIN]: [MoveId.MATCHA_GOTCHA, MoveId.HEAT_WAVE, MoveId.AEROBLAST, MoveId.QUIVER_DANCE],
[SpeciesId.ARCEUS]: [ MoveId.NO_RETREAT, MoveId.COLLISION_COURSE, MoveId.ASTRAL_BARRAGE, MoveId.MULTI_ATTACK ], [SpeciesId.ARCEUS]: [MoveId.NO_RETREAT, MoveId.COLLISION_COURSE, MoveId.ASTRAL_BARRAGE, MoveId.MULTI_ATTACK],
[SpeciesId.VICTINI]: [ MoveId.BLUE_FLARE, MoveId.BOLT_STRIKE, MoveId.LUSTER_PURGE, MoveId.VICTORY_DANCE ], [SpeciesId.VICTINI]: [MoveId.BLUE_FLARE, MoveId.BOLT_STRIKE, MoveId.LUSTER_PURGE, MoveId.VICTORY_DANCE],
[SpeciesId.SNIVY]: [ MoveId.FLAMETHROWER, MoveId.CLANGING_SCALES, MoveId.MAKE_IT_RAIN, MoveId.FLEUR_CANNON ], [SpeciesId.SNIVY]: [MoveId.FLAMETHROWER, MoveId.CLANGING_SCALES, MoveId.MAKE_IT_RAIN, MoveId.FLEUR_CANNON],
[SpeciesId.TEPIG]: [ MoveId.WAVE_CRASH, MoveId.VOLT_TACKLE, MoveId.AXE_KICK, MoveId.VICTORY_DANCE ], [SpeciesId.TEPIG]: [MoveId.WAVE_CRASH, MoveId.VOLT_TACKLE, MoveId.AXE_KICK, MoveId.VICTORY_DANCE],
[SpeciesId.OSHAWOTT]: [ MoveId.FREEZE_DRY, MoveId.SHELL_SIDE_ARM, MoveId.SACRED_SWORD, MoveId.SHELL_SMASH ], [SpeciesId.OSHAWOTT]: [MoveId.FREEZE_DRY, MoveId.SHELL_SIDE_ARM, MoveId.SACRED_SWORD, MoveId.SHELL_SMASH],
[SpeciesId.PATRAT]: [ MoveId.FAKE_OUT, MoveId.INSTRUCT, MoveId.DYNAMIC_PUNCH, MoveId.EXTREME_SPEED ], [SpeciesId.PATRAT]: [MoveId.FAKE_OUT, MoveId.INSTRUCT, MoveId.DYNAMIC_PUNCH, MoveId.EXTREME_SPEED],
[SpeciesId.LILLIPUP]: [ MoveId.CLOSE_COMBAT, MoveId.BODY_SLAM, MoveId.HIGH_HORSEPOWER, MoveId.LAST_RESPECTS ], [SpeciesId.LILLIPUP]: [MoveId.CLOSE_COMBAT, MoveId.BODY_SLAM, MoveId.HIGH_HORSEPOWER, MoveId.LAST_RESPECTS],
[SpeciesId.PURRLOIN]: [ MoveId.ENCORE, MoveId.OBSTRUCT, MoveId.PARTING_SHOT, MoveId.WICKED_BLOW ], [SpeciesId.PURRLOIN]: [MoveId.ENCORE, MoveId.OBSTRUCT, MoveId.PARTING_SHOT, MoveId.WICKED_BLOW],
[SpeciesId.PANSAGE]: [ MoveId.SWORDS_DANCE, MoveId.FIRE_LASH, MoveId.EARTHQUAKE, MoveId.IVY_CUDGEL ], [SpeciesId.PANSAGE]: [MoveId.SWORDS_DANCE, MoveId.FIRE_LASH, MoveId.EARTHQUAKE, MoveId.IVY_CUDGEL],
[SpeciesId.PANSEAR]: [ MoveId.NASTY_PLOT, MoveId.HYDRO_STEAM, MoveId.EARTH_POWER, MoveId.ERUPTION ], [SpeciesId.PANSEAR]: [MoveId.NASTY_PLOT, MoveId.HYDRO_STEAM, MoveId.EARTH_POWER, MoveId.ERUPTION],
[SpeciesId.PANPOUR]: [ MoveId.NASTY_PLOT, MoveId.ENERGY_BALL, MoveId.EARTH_POWER, MoveId.WATER_SPOUT ], [SpeciesId.PANPOUR]: [MoveId.NASTY_PLOT, MoveId.ENERGY_BALL, MoveId.EARTH_POWER, MoveId.WATER_SPOUT],
[SpeciesId.MUNNA]: [ MoveId.COSMIC_POWER, MoveId.AURA_SPHERE, MoveId.LUNAR_BLESSING, MoveId.MYSTICAL_POWER ], [SpeciesId.MUNNA]: [MoveId.COSMIC_POWER, MoveId.AURA_SPHERE, MoveId.LUNAR_BLESSING, MoveId.MYSTICAL_POWER],
[SpeciesId.PIDOVE]: [ MoveId.SLASH, MoveId.TIDY_UP, MoveId.FLOATY_FALL, MoveId.TRIPLE_ARROWS ], [SpeciesId.PIDOVE]: [MoveId.SLASH, MoveId.TIDY_UP, MoveId.FLOATY_FALL, MoveId.TRIPLE_ARROWS],
[SpeciesId.BLITZLE]: [ MoveId.HORN_LEECH, MoveId.SWORDS_DANCE, MoveId.FLARE_BLITZ, MoveId.BOLT_STRIKE ], [SpeciesId.BLITZLE]: [MoveId.HORN_LEECH, MoveId.SWORDS_DANCE, MoveId.FLARE_BLITZ, MoveId.BOLT_STRIKE],
[SpeciesId.ROGGENROLA]: [ MoveId.BODY_PRESS, MoveId.SPIKY_SHIELD, MoveId.SHORE_UP, MoveId.DIAMOND_STORM ], [SpeciesId.ROGGENROLA]: [MoveId.BODY_PRESS, MoveId.SPIKY_SHIELD, MoveId.SHORE_UP, MoveId.DIAMOND_STORM],
[SpeciesId.WOOBAT]: [ MoveId.ESPER_WING, MoveId.STORED_POWER, MoveId.MYSTICAL_FIRE, MoveId.OBLIVION_WING ], [SpeciesId.WOOBAT]: [MoveId.ESPER_WING, MoveId.STORED_POWER, MoveId.MYSTICAL_FIRE, MoveId.OBLIVION_WING],
[SpeciesId.DRILBUR]: [ MoveId.METEOR_MASH, MoveId.ICE_SPINNER, MoveId.SHIFT_GEAR, MoveId.THOUSAND_ARROWS ], [SpeciesId.DRILBUR]: [MoveId.METEOR_MASH, MoveId.ICE_SPINNER, MoveId.SHIFT_GEAR, MoveId.THOUSAND_ARROWS],
[SpeciesId.AUDINO]: [ MoveId.TAKE_HEART, MoveId.MOONBLAST, MoveId.WISH, MoveId.MATCHA_GOTCHA ], [SpeciesId.AUDINO]: [MoveId.TAKE_HEART, MoveId.MOONBLAST, MoveId.WISH, MoveId.MATCHA_GOTCHA],
[SpeciesId.TIMBURR]: [ MoveId.MACH_PUNCH, MoveId.DRAIN_PUNCH, MoveId.ICE_HAMMER, MoveId.DOUBLE_IRON_BASH ], [SpeciesId.TIMBURR]: [MoveId.MACH_PUNCH, MoveId.DRAIN_PUNCH, MoveId.ICE_HAMMER, MoveId.DOUBLE_IRON_BASH],
[SpeciesId.TYMPOLE]: [ MoveId.JET_PUNCH, MoveId.HIGH_HORSEPOWER, MoveId.BULK_UP, MoveId.SURGING_STRIKES ], [SpeciesId.TYMPOLE]: [MoveId.JET_PUNCH, MoveId.HIGH_HORSEPOWER, MoveId.BULK_UP, MoveId.SURGING_STRIKES],
[SpeciesId.THROH]: [ MoveId.MACH_PUNCH, MoveId.SLACK_OFF, MoveId.METEOR_MASH, MoveId.RAGE_FIST ], [SpeciesId.THROH]: [MoveId.MACH_PUNCH, MoveId.SLACK_OFF, MoveId.METEOR_MASH, MoveId.RAGE_FIST],
[SpeciesId.SAWK]: [ MoveId.DRAIN_PUNCH, MoveId.SUCKER_PUNCH, MoveId.METEOR_MASH, MoveId.VICTORY_DANCE ], [SpeciesId.SAWK]: [MoveId.DRAIN_PUNCH, MoveId.SUCKER_PUNCH, MoveId.METEOR_MASH, MoveId.VICTORY_DANCE],
[SpeciesId.SEWADDLE]: [ MoveId.STONE_AXE, MoveId.PSYCHO_CUT, MoveId.BITTER_BLADE, MoveId.VICTORY_DANCE ], [SpeciesId.SEWADDLE]: [MoveId.STONE_AXE, MoveId.PSYCHO_CUT, MoveId.BITTER_BLADE, MoveId.VICTORY_DANCE],
[SpeciesId.VENIPEDE]: [ MoveId.BANEFUL_BUNKER, MoveId.LEECH_LIFE, MoveId.NOXIOUS_TORQUE, MoveId.POWER_TRIP ], [SpeciesId.VENIPEDE]: [MoveId.BANEFUL_BUNKER, MoveId.LEECH_LIFE, MoveId.NOXIOUS_TORQUE, MoveId.POWER_TRIP],
[SpeciesId.COTTONEE]: [ MoveId.POLLEN_PUFF, MoveId.PARTING_SHOT, MoveId.SLEEP_POWDER, MoveId.SEED_FLARE ], [SpeciesId.COTTONEE]: [MoveId.POLLEN_PUFF, MoveId.PARTING_SHOT, MoveId.SLEEP_POWDER, MoveId.SEED_FLARE],
[SpeciesId.PETILIL]: [ MoveId.THUNDEROUS_KICK, MoveId.SPARKLING_ARIA, MoveId.FIERY_DANCE, MoveId.FLOWER_TRICK ], [SpeciesId.PETILIL]: [MoveId.THUNDEROUS_KICK, MoveId.SPARKLING_ARIA, MoveId.FIERY_DANCE, MoveId.FLOWER_TRICK],
[SpeciesId.BASCULIN]: [ MoveId.LAST_RESPECTS, MoveId.CLOSE_COMBAT, MoveId.SPLISHY_SPLASH, MoveId.NO_RETREAT ], [SpeciesId.BASCULIN]: [MoveId.LAST_RESPECTS, MoveId.CLOSE_COMBAT, MoveId.SPLISHY_SPLASH, MoveId.NO_RETREAT],
[SpeciesId.SANDILE]: [ MoveId.DIRE_CLAW, MoveId.SUCKER_PUNCH, MoveId.FIRE_LASH, MoveId.HEADLONG_RUSH ], [SpeciesId.SANDILE]: [MoveId.DIRE_CLAW, MoveId.SUCKER_PUNCH, MoveId.FIRE_LASH, MoveId.HEADLONG_RUSH],
[SpeciesId.DARUMAKA]: [ MoveId.DRAIN_PUNCH, MoveId.ZIPPY_ZAP, MoveId.HEADLONG_RUSH, MoveId.PYRO_BALL ], [SpeciesId.DARUMAKA]: [MoveId.DRAIN_PUNCH, MoveId.ZIPPY_ZAP, MoveId.HEADLONG_RUSH, MoveId.PYRO_BALL],
[SpeciesId.MARACTUS]: [ MoveId.EARTH_POWER, MoveId.SIZZLY_SLIDE, MoveId.FIERY_DANCE, MoveId.QUIVER_DANCE ], [SpeciesId.MARACTUS]: [MoveId.EARTH_POWER, MoveId.SIZZLY_SLIDE, MoveId.FIERY_DANCE, MoveId.QUIVER_DANCE],
[SpeciesId.DWEBBLE]: [ MoveId.CRABHAMMER, MoveId.STONE_AXE, MoveId.LEECH_LIFE, MoveId.MIGHTY_CLEAVE ], [SpeciesId.DWEBBLE]: [MoveId.CRABHAMMER, MoveId.STONE_AXE, MoveId.LEECH_LIFE, MoveId.MIGHTY_CLEAVE],
[SpeciesId.SCRAGGY]: [ MoveId.SUCKER_PUNCH, MoveId.BULLET_PUNCH, MoveId.NOXIOUS_TORQUE, MoveId.VICTORY_DANCE ], [SpeciesId.SCRAGGY]: [MoveId.SUCKER_PUNCH, MoveId.BULLET_PUNCH, MoveId.NOXIOUS_TORQUE, MoveId.VICTORY_DANCE],
[SpeciesId.SIGILYPH]: [ MoveId.MOONBLAST, MoveId.PSYCHO_SHIFT, MoveId.ESPER_WING, MoveId.OBLIVION_WING ], [SpeciesId.SIGILYPH]: [MoveId.MOONBLAST, MoveId.PSYCHO_SHIFT, MoveId.ESPER_WING, MoveId.OBLIVION_WING],
[SpeciesId.YAMASK]: [ MoveId.STRENGTH_SAP, MoveId.GLARE, MoveId.AURA_SPHERE, MoveId.ASTRAL_BARRAGE ], [SpeciesId.YAMASK]: [MoveId.STRENGTH_SAP, MoveId.GLARE, MoveId.AURA_SPHERE, MoveId.ASTRAL_BARRAGE],
[SpeciesId.TIRTOUGA]: [ MoveId.ICE_SPINNER, MoveId.AQUA_STEP, MoveId.SHORE_UP, MoveId.MIGHTY_CLEAVE ], [SpeciesId.TIRTOUGA]: [MoveId.ICE_SPINNER, MoveId.AQUA_STEP, MoveId.SHORE_UP, MoveId.MIGHTY_CLEAVE],
[SpeciesId.ARCHEN]: [ MoveId.ROOST, MoveId.EARTHQUAKE, MoveId.FLOATY_FALL, MoveId.MIGHTY_CLEAVE ], [SpeciesId.ARCHEN]: [MoveId.ROOST, MoveId.EARTHQUAKE, MoveId.FLOATY_FALL, MoveId.MIGHTY_CLEAVE],
[SpeciesId.TRUBBISH]: [ MoveId.COIL, MoveId.RECOVER, MoveId.DIRE_CLAW, MoveId.GIGATON_HAMMER ], [SpeciesId.TRUBBISH]: [MoveId.COIL, MoveId.RECOVER, MoveId.DIRE_CLAW, MoveId.GIGATON_HAMMER],
[SpeciesId.ZORUA]: [ MoveId.MALIGNANT_CHAIN, MoveId.MOONBLAST, MoveId.SECRET_SWORD, MoveId.FIERY_WRATH ], [SpeciesId.ZORUA]: [MoveId.MALIGNANT_CHAIN, MoveId.MOONBLAST, MoveId.SECRET_SWORD, MoveId.FIERY_WRATH],
[SpeciesId.MINCCINO]: [ MoveId.ICICLE_SPEAR, MoveId.TIDY_UP, MoveId.LOW_KICK, MoveId.POPULATION_BOMB ], [SpeciesId.MINCCINO]: [MoveId.ICICLE_SPEAR, MoveId.TIDY_UP, MoveId.LOW_KICK, MoveId.POPULATION_BOMB],
[SpeciesId.GOTHITA]: [ MoveId.RECOVER, MoveId.MOONBLAST, MoveId.AURA_SPHERE, MoveId.LUMINA_CRASH ], [SpeciesId.GOTHITA]: [MoveId.RECOVER, MoveId.MOONBLAST, MoveId.AURA_SPHERE, MoveId.LUMINA_CRASH],
[SpeciesId.SOLOSIS]: [ MoveId.MIST_BALL, MoveId.SPEED_SWAP, MoveId.FLAMETHROWER, MoveId.LIGHT_OF_RUIN ], [SpeciesId.SOLOSIS]: [MoveId.MIST_BALL, MoveId.SPEED_SWAP, MoveId.FLAMETHROWER, MoveId.LIGHT_OF_RUIN],
[SpeciesId.DUCKLETT]: [ MoveId.SPLISHY_SPLASH, MoveId.SANDSEAR_STORM, MoveId.WILDBOLT_STORM, MoveId.QUIVER_DANCE ], [SpeciesId.DUCKLETT]: [MoveId.SPLISHY_SPLASH, MoveId.SANDSEAR_STORM, MoveId.WILDBOLT_STORM, MoveId.QUIVER_DANCE],
[SpeciesId.VANILLITE]: [ MoveId.EARTH_POWER, MoveId.AURORA_VEIL, MoveId.CALM_MIND, MoveId.SPARKLY_SWIRL ], [SpeciesId.VANILLITE]: [MoveId.EARTH_POWER, MoveId.AURORA_VEIL, MoveId.CALM_MIND, MoveId.SPARKLY_SWIRL],
[SpeciesId.DEERLING]: [ MoveId.TIDY_UP, MoveId.HEADBUTT, MoveId.AXE_KICK, MoveId.FLOWER_TRICK ], [SpeciesId.DEERLING]: [MoveId.TIDY_UP, MoveId.HEADBUTT, MoveId.AXE_KICK, MoveId.FLOWER_TRICK],
[SpeciesId.EMOLGA]: [ MoveId.ICICLE_CRASH, MoveId.ZING_ZAP, MoveId.FLOATY_FALL, MoveId.ELECTRIFY ], [SpeciesId.EMOLGA]: [MoveId.ICICLE_CRASH, MoveId.ZING_ZAP, MoveId.FLOATY_FALL, MoveId.ELECTRIFY],
[SpeciesId.KARRABLAST]: [ MoveId.LEECH_LIFE, MoveId.BITTER_BLADE, MoveId.OBSTRUCT, MoveId.DOUBLE_IRON_BASH ], [SpeciesId.KARRABLAST]: [MoveId.LEECH_LIFE, MoveId.BITTER_BLADE, MoveId.OBSTRUCT, MoveId.DOUBLE_IRON_BASH],
[SpeciesId.FOONGUS]: [ MoveId.POLLEN_PUFF, MoveId.PARTING_SHOT, MoveId.FOUL_PLAY, MoveId.SAPPY_SEED ], [SpeciesId.FOONGUS]: [MoveId.POLLEN_PUFF, MoveId.PARTING_SHOT, MoveId.FOUL_PLAY, MoveId.SAPPY_SEED],
[SpeciesId.FRILLISH]: [ MoveId.CALM_MIND, MoveId.BUZZY_BUZZ, MoveId.FREEZE_DRY, MoveId.STEAM_ERUPTION ], [SpeciesId.FRILLISH]: [MoveId.CALM_MIND, MoveId.BUZZY_BUZZ, MoveId.FREEZE_DRY, MoveId.STEAM_ERUPTION],
[SpeciesId.ALOMOMOLA]: [ MoveId.FLIP_TURN, MoveId.HEART_SWAP, MoveId.GLITZY_GLOW, MoveId.REVIVAL_BLESSING ], [SpeciesId.ALOMOMOLA]: [MoveId.FLIP_TURN, MoveId.HEART_SWAP, MoveId.GLITZY_GLOW, MoveId.REVIVAL_BLESSING],
[SpeciesId.JOLTIK]: [ MoveId.WILDBOLT_STORM, MoveId.PARABOLIC_CHARGE, MoveId.EARTH_POWER, MoveId.QUIVER_DANCE ], [SpeciesId.JOLTIK]: [MoveId.WILDBOLT_STORM, MoveId.PARABOLIC_CHARGE, MoveId.EARTH_POWER, MoveId.QUIVER_DANCE],
[SpeciesId.FERROSEED]: [ MoveId.SYNTHESIS, MoveId.CEASELESS_EDGE, MoveId.SPIKY_SHIELD, MoveId.SAPPY_SEED ], [SpeciesId.FERROSEED]: [MoveId.SYNTHESIS, MoveId.CEASELESS_EDGE, MoveId.SPIKY_SHIELD, MoveId.SAPPY_SEED],
[SpeciesId.KLINK]: [ MoveId.TRIPLE_AXEL, MoveId.HIGH_HORSEPOWER, MoveId.RECOVER, MoveId.AURA_WHEEL ], [SpeciesId.KLINK]: [MoveId.TRIPLE_AXEL, MoveId.HIGH_HORSEPOWER, MoveId.RECOVER, MoveId.AURA_WHEEL],
[SpeciesId.TYNAMO]: [ MoveId.SCALD, MoveId.STRENGTH_SAP, MoveId.FIRE_LASH, MoveId.AURA_WHEEL ], [SpeciesId.TYNAMO]: [MoveId.SCALD, MoveId.STRENGTH_SAP, MoveId.FIRE_LASH, MoveId.AURA_WHEEL],
[SpeciesId.ELGYEM]: [ MoveId.THUNDERCLAP, MoveId.BADDY_BAD, MoveId.AURA_SPHERE, MoveId.PHOTON_GEYSER ], [SpeciesId.ELGYEM]: [MoveId.THUNDERCLAP, MoveId.BADDY_BAD, MoveId.AURA_SPHERE, MoveId.PHOTON_GEYSER],
[SpeciesId.LITWICK]: [ MoveId.GIGA_DRAIN, MoveId.EARTH_POWER, MoveId.MOONBLAST, MoveId.TORCH_SONG ], [SpeciesId.LITWICK]: [MoveId.GIGA_DRAIN, MoveId.EARTH_POWER, MoveId.MOONBLAST, MoveId.TORCH_SONG],
[SpeciesId.AXEW]: [ MoveId.STONE_AXE, MoveId.DIRE_CLAW, MoveId.RAGING_FURY, MoveId.BITTER_BLADE ], [SpeciesId.AXEW]: [MoveId.STONE_AXE, MoveId.DIRE_CLAW, MoveId.RAGING_FURY, MoveId.BITTER_BLADE],
[SpeciesId.CUBCHOO]: [ MoveId.MOUNTAIN_GALE, MoveId.AQUA_STEP, MoveId.ICE_SHARD, MoveId.COLLISION_COURSE ], [SpeciesId.CUBCHOO]: [MoveId.MOUNTAIN_GALE, MoveId.AQUA_STEP, MoveId.ICE_SHARD, MoveId.COLLISION_COURSE],
[SpeciesId.CRYOGONAL]: [ MoveId.FREEZING_GLARE, MoveId.AURORA_VEIL, MoveId.NASTY_PLOT, MoveId.ORIGIN_PULSE ], [SpeciesId.CRYOGONAL]: [MoveId.FREEZING_GLARE, MoveId.AURORA_VEIL, MoveId.NASTY_PLOT, MoveId.ORIGIN_PULSE],
[SpeciesId.SHELMET]: [ MoveId.POWER_GEM, MoveId.NASTY_PLOT, MoveId.EARTH_POWER, MoveId.STEAM_ERUPTION ], [SpeciesId.SHELMET]: [MoveId.POWER_GEM, MoveId.NASTY_PLOT, MoveId.EARTH_POWER, MoveId.STEAM_ERUPTION],
[SpeciesId.STUNFISK]: [ MoveId.THUNDERCLAP, MoveId.SANDSEAR_STORM, MoveId.STRENGTH_SAP, MoveId.THUNDER_CAGE ], [SpeciesId.STUNFISK]: [MoveId.THUNDERCLAP, MoveId.SANDSEAR_STORM, MoveId.STRENGTH_SAP, MoveId.THUNDER_CAGE],
[SpeciesId.MIENFOO]: [ MoveId.GUNK_SHOT, MoveId.SUPERCELL_SLAM, MoveId.MOUNTAIN_GALE, MoveId.WICKED_BLOW ], [SpeciesId.MIENFOO]: [MoveId.GUNK_SHOT, MoveId.SUPERCELL_SLAM, MoveId.MOUNTAIN_GALE, MoveId.WICKED_BLOW],
[SpeciesId.DRUDDIGON]: [ MoveId.FIRE_LASH, MoveId.MORNING_SUN, MoveId.DRAGON_DARTS, MoveId.CLANGOROUS_SOUL ], [SpeciesId.DRUDDIGON]: [MoveId.FIRE_LASH, MoveId.MORNING_SUN, MoveId.DRAGON_DARTS, MoveId.CLANGOROUS_SOUL],
[SpeciesId.GOLETT]: [ MoveId.SHIFT_GEAR, MoveId.DRAIN_PUNCH, MoveId.HEADLONG_RUSH, MoveId.RAGE_FIST ], [SpeciesId.GOLETT]: [MoveId.SHIFT_GEAR, MoveId.DRAIN_PUNCH, MoveId.HEADLONG_RUSH, MoveId.RAGE_FIST],
[SpeciesId.PAWNIARD]: [ MoveId.SUCKER_PUNCH, MoveId.SPIRIT_BREAK, MoveId.LAST_RESPECTS, MoveId.BITTER_BLADE ], [SpeciesId.PAWNIARD]: [MoveId.SUCKER_PUNCH, MoveId.SPIRIT_BREAK, MoveId.LAST_RESPECTS, MoveId.BITTER_BLADE],
[SpeciesId.BOUFFALANT]: [ MoveId.HORN_LEECH, MoveId.HIGH_JUMP_KICK, MoveId.HEAD_SMASH, MoveId.FLARE_BLITZ ], [SpeciesId.BOUFFALANT]: [MoveId.HORN_LEECH, MoveId.HIGH_JUMP_KICK, MoveId.HEAD_SMASH, MoveId.FLARE_BLITZ],
[SpeciesId.RUFFLET]: [ MoveId.FLOATY_FALL, MoveId.AURA_SPHERE, MoveId.NO_RETREAT, MoveId.BOLT_BEAK ], [SpeciesId.RUFFLET]: [MoveId.FLOATY_FALL, MoveId.AURA_SPHERE, MoveId.NO_RETREAT, MoveId.BOLT_BEAK],
[SpeciesId.VULLABY]: [ MoveId.FOUL_PLAY, MoveId.BODY_PRESS, MoveId.ROOST, MoveId.RUINATION ], [SpeciesId.VULLABY]: [MoveId.FOUL_PLAY, MoveId.BODY_PRESS, MoveId.ROOST, MoveId.RUINATION],
[SpeciesId.HEATMOR]: [ MoveId.EARTH_POWER, MoveId.OVERHEAT, MoveId.SUPERCELL_SLAM, MoveId.V_CREATE ], [SpeciesId.HEATMOR]: [MoveId.EARTH_POWER, MoveId.OVERHEAT, MoveId.SUPERCELL_SLAM, MoveId.V_CREATE],
[SpeciesId.DURANT]: [ MoveId.HIGH_HORSEPOWER, MoveId.FIRST_IMPRESSION, MoveId.U_TURN, MoveId.BEHEMOTH_BASH ], [SpeciesId.DURANT]: [MoveId.HIGH_HORSEPOWER, MoveId.FIRST_IMPRESSION, MoveId.U_TURN, MoveId.BEHEMOTH_BASH],
[SpeciesId.DEINO]: [ MoveId.FIERY_WRATH, MoveId.ESPER_WING, MoveId.SLUDGE_BOMB, MoveId.FICKLE_BEAM ], [SpeciesId.DEINO]: [MoveId.FIERY_WRATH, MoveId.ESPER_WING, MoveId.SLUDGE_BOMB, MoveId.FICKLE_BEAM],
[SpeciesId.LARVESTA]: [ MoveId.THUNDERBOLT, MoveId.DAZZLING_GLEAM, MoveId.EARTH_POWER, MoveId.HYDRO_STEAM ], [SpeciesId.LARVESTA]: [MoveId.THUNDERBOLT, MoveId.DAZZLING_GLEAM, MoveId.EARTH_POWER, MoveId.HYDRO_STEAM],
[SpeciesId.COBALION]: [ MoveId.BEHEMOTH_BLADE, MoveId.MIGHTY_CLEAVE, MoveId.CEASELESS_EDGE, MoveId.VICTORY_DANCE ], [SpeciesId.COBALION]: [MoveId.BEHEMOTH_BLADE, MoveId.MIGHTY_CLEAVE, MoveId.CEASELESS_EDGE, MoveId.VICTORY_DANCE],
[SpeciesId.TERRAKION]: [ MoveId.MIGHTY_CLEAVE, MoveId.HEADLONG_RUSH, MoveId.KNOCK_OFF, MoveId.VICTORY_DANCE ], [SpeciesId.TERRAKION]: [MoveId.MIGHTY_CLEAVE, MoveId.HEADLONG_RUSH, MoveId.KNOCK_OFF, MoveId.VICTORY_DANCE],
[SpeciesId.VIRIZION]: [ MoveId.SAPPY_SEED, MoveId.PSYBLADE, MoveId.STONE_AXE, MoveId.VICTORY_DANCE ], [SpeciesId.VIRIZION]: [MoveId.SAPPY_SEED, MoveId.PSYBLADE, MoveId.STONE_AXE, MoveId.VICTORY_DANCE],
[SpeciesId.TORNADUS]: [ MoveId.SANDSEAR_STORM, MoveId.PARTING_SHOT, MoveId.SPLISHY_SPLASH, MoveId.OBLIVION_WING ], [SpeciesId.TORNADUS]: [MoveId.SANDSEAR_STORM, MoveId.PARTING_SHOT, MoveId.SPLISHY_SPLASH, MoveId.OBLIVION_WING],
[SpeciesId.THUNDURUS]: [ MoveId.SANDSEAR_STORM, MoveId.HURRICANE, MoveId.FROST_BREATH, MoveId.ELECTRO_SHOT ], [SpeciesId.THUNDURUS]: [MoveId.SANDSEAR_STORM, MoveId.HURRICANE, MoveId.FROST_BREATH, MoveId.ELECTRO_SHOT],
[SpeciesId.RESHIRAM]: [ MoveId.ENERGY_BALL, MoveId.TAKE_HEART, MoveId.FICKLE_BEAM, MoveId.ERUPTION ], [SpeciesId.RESHIRAM]: [MoveId.ENERGY_BALL, MoveId.TAKE_HEART, MoveId.FICKLE_BEAM, MoveId.ERUPTION],
[SpeciesId.ZEKROM]: [ MoveId.TRIPLE_AXEL, MoveId.THUNDEROUS_KICK, MoveId.DRAGON_HAMMER, MoveId.DRAGON_ENERGY ], [SpeciesId.ZEKROM]: [MoveId.TRIPLE_AXEL, MoveId.THUNDEROUS_KICK, MoveId.DRAGON_HAMMER, MoveId.DRAGON_ENERGY],
[SpeciesId.LANDORUS]: [ MoveId.STONE_AXE, MoveId.FLOATY_FALL, MoveId.ROOST, MoveId.THOUSAND_WAVES ], [SpeciesId.LANDORUS]: [MoveId.STONE_AXE, MoveId.FLOATY_FALL, MoveId.ROOST, MoveId.THOUSAND_WAVES],
[SpeciesId.KYUREM]: [ MoveId.DRAGON_DARTS, MoveId.GLACIAL_LANCE, MoveId.NO_RETREAT, MoveId.DRAGON_ENERGY ], [SpeciesId.KYUREM]: [MoveId.DRAGON_DARTS, MoveId.GLACIAL_LANCE, MoveId.NO_RETREAT, MoveId.DRAGON_ENERGY],
[SpeciesId.KELDEO]: [ MoveId.BOUNCY_BUBBLE, MoveId.THUNDERBOLT, MoveId.ICE_BEAM, MoveId.STEAM_ERUPTION ], [SpeciesId.KELDEO]: [MoveId.BOUNCY_BUBBLE, MoveId.THUNDERBOLT, MoveId.ICE_BEAM, MoveId.STEAM_ERUPTION],
[SpeciesId.MELOETTA]: [ MoveId.BODY_SLAM, MoveId.PSYCHIC_NOISE, MoveId.TRIPLE_ARROWS, MoveId.TORCH_SONG ], [SpeciesId.MELOETTA]: [MoveId.BODY_SLAM, MoveId.PSYCHIC_NOISE, MoveId.TRIPLE_ARROWS, MoveId.TORCH_SONG],
[SpeciesId.GENESECT]: [ MoveId.EXTREME_SPEED, MoveId.SHIFT_GEAR, MoveId.BEHEMOTH_BASH, MoveId.TACHYON_CUTTER ], [SpeciesId.GENESECT]: [MoveId.EXTREME_SPEED, MoveId.SHIFT_GEAR, MoveId.BEHEMOTH_BASH, MoveId.TACHYON_CUTTER],
[SpeciesId.CHESPIN]: [ MoveId.COMBAT_TORQUE, MoveId.SYNTHESIS, MoveId.CEASELESS_EDGE, MoveId.SAPPY_SEED ], [SpeciesId.CHESPIN]: [MoveId.COMBAT_TORQUE, MoveId.SYNTHESIS, MoveId.CEASELESS_EDGE, MoveId.SAPPY_SEED],
[SpeciesId.FENNEKIN]: [ MoveId.TWIN_BEAM, MoveId.FIERY_DANCE, MoveId.THUNDERBOLT, MoveId.SPARKLY_SWIRL ], [SpeciesId.FENNEKIN]: [MoveId.TWIN_BEAM, MoveId.FIERY_DANCE, MoveId.THUNDERBOLT, MoveId.SPARKLY_SWIRL],
[SpeciesId.FROAKIE]: [ MoveId.MOONBLAST, MoveId.SHELL_SIDE_ARM, MoveId.FIERY_WRATH, MoveId.STEAM_ERUPTION ], [SpeciesId.FROAKIE]: [MoveId.MOONBLAST, MoveId.SHELL_SIDE_ARM, MoveId.FIERY_WRATH, MoveId.STEAM_ERUPTION],
[SpeciesId.BUNNELBY]: [ MoveId.DRAIN_PUNCH, MoveId.TIDY_UP, MoveId.LANDS_WRATH, MoveId.EXTREME_SPEED ], [SpeciesId.BUNNELBY]: [MoveId.DRAIN_PUNCH, MoveId.TIDY_UP, MoveId.LANDS_WRATH, MoveId.EXTREME_SPEED],
[SpeciesId.FLETCHLING]: [ MoveId.DRILL_RUN, MoveId.BURNING_BULWARK, MoveId.HEAD_SMASH, MoveId.VOLT_TACKLE ], [SpeciesId.FLETCHLING]: [MoveId.DRILL_RUN, MoveId.BURNING_BULWARK, MoveId.HEAD_SMASH, MoveId.VOLT_TACKLE],
[SpeciesId.SCATTERBUG]: [ MoveId.FOCUS_BLAST, MoveId.AFTER_YOU, MoveId.DECORATE, MoveId.BLIZZARD ], [SpeciesId.SCATTERBUG]: [MoveId.FOCUS_BLAST, MoveId.AFTER_YOU, MoveId.DECORATE, MoveId.BLIZZARD],
[SpeciesId.LITLEO]: [ MoveId.EARTH_POWER, MoveId.NASTY_PLOT, MoveId.BURNING_BULWARK, MoveId.BLUE_FLARE ], [SpeciesId.LITLEO]: [MoveId.EARTH_POWER, MoveId.NASTY_PLOT, MoveId.BURNING_BULWARK, MoveId.BLUE_FLARE],
[SpeciesId.FLABEBE]: [ MoveId.GLITZY_GLOW, MoveId.MYSTICAL_FIRE, MoveId.TAKE_HEART, MoveId.SEED_FLARE ], [SpeciesId.FLABEBE]: [MoveId.GLITZY_GLOW, MoveId.MYSTICAL_FIRE, MoveId.TAKE_HEART, MoveId.SEED_FLARE],
[SpeciesId.SKIDDO]: [ MoveId.HIGH_HORSEPOWER, MoveId.GRASSY_GLIDE, MoveId.STONE_AXE, MoveId.SAPPY_SEED ], [SpeciesId.SKIDDO]: [MoveId.HIGH_HORSEPOWER, MoveId.GRASSY_GLIDE, MoveId.STONE_AXE, MoveId.SAPPY_SEED],
[SpeciesId.PANCHAM]: [ MoveId.DRAIN_PUNCH, MoveId.SUCKER_PUNCH, MoveId.METEOR_MASH, MoveId.WICKED_BLOW ], [SpeciesId.PANCHAM]: [MoveId.DRAIN_PUNCH, MoveId.SUCKER_PUNCH, MoveId.METEOR_MASH, MoveId.WICKED_BLOW],
[SpeciesId.FURFROU]: [ MoveId.TIDY_UP, MoveId.SLACK_OFF, MoveId.COMBAT_TORQUE, MoveId.MULTI_ATTACK ], [SpeciesId.FURFROU]: [MoveId.TIDY_UP, MoveId.SLACK_OFF, MoveId.COMBAT_TORQUE, MoveId.MULTI_ATTACK],
[SpeciesId.ESPURR]: [ MoveId.LUSTER_PURGE, MoveId.MOONBLAST, MoveId.AURA_SPHERE, MoveId.DARK_VOID ], [SpeciesId.ESPURR]: [MoveId.LUSTER_PURGE, MoveId.MOONBLAST, MoveId.AURA_SPHERE, MoveId.DARK_VOID],
[SpeciesId.HONEDGE]: [ MoveId.TACHYON_CUTTER, MoveId.SPIRIT_SHACKLE, MoveId.BITTER_BLADE, MoveId.BEHEMOTH_BLADE ], [SpeciesId.HONEDGE]: [MoveId.TACHYON_CUTTER, MoveId.SPIRIT_SHACKLE, MoveId.BITTER_BLADE, MoveId.BEHEMOTH_BLADE],
[SpeciesId.SPRITZEE]: [ MoveId.SPEED_SWAP, MoveId.REVIVAL_BLESSING, MoveId.ROOST, MoveId.TORCH_SONG ], [SpeciesId.SPRITZEE]: [MoveId.SPEED_SWAP, MoveId.REVIVAL_BLESSING, MoveId.ROOST, MoveId.TORCH_SONG],
[SpeciesId.SWIRLIX]: [ MoveId.BELLY_DRUM, MoveId.HEADLONG_RUSH, MoveId.MAGICAL_TORQUE, MoveId.REVIVAL_BLESSING ], [SpeciesId.SWIRLIX]: [MoveId.BELLY_DRUM, MoveId.HEADLONG_RUSH, MoveId.MAGICAL_TORQUE, MoveId.REVIVAL_BLESSING],
[SpeciesId.INKAY]: [ MoveId.POWER_TRIP, MoveId.SPIN_OUT, MoveId.RECOVER, MoveId.PSYCHO_BOOST ], [SpeciesId.INKAY]: [MoveId.POWER_TRIP, MoveId.SPIN_OUT, MoveId.RECOVER, MoveId.PSYCHO_BOOST],
[SpeciesId.BINACLE]: [ MoveId.TRIPLE_AXEL, MoveId.CRABHAMMER, MoveId.DIRE_CLAW, MoveId.MIGHTY_CLEAVE ], [SpeciesId.BINACLE]: [MoveId.TRIPLE_AXEL, MoveId.CRABHAMMER, MoveId.DIRE_CLAW, MoveId.MIGHTY_CLEAVE],
[SpeciesId.SKRELP]: [ MoveId.STRENGTH_SAP, MoveId.TRICK_ROOM, MoveId.CALM_MIND, MoveId.CORE_ENFORCER ], [SpeciesId.SKRELP]: [MoveId.STRENGTH_SAP, MoveId.TRICK_ROOM, MoveId.CALM_MIND, MoveId.CORE_ENFORCER],
[SpeciesId.CLAUNCHER]: [ MoveId.SHELL_SMASH, MoveId.ARMOR_CANNON, MoveId.ENERGY_BALL, MoveId.ORIGIN_PULSE ], [SpeciesId.CLAUNCHER]: [MoveId.SHELL_SMASH, MoveId.ARMOR_CANNON, MoveId.ENERGY_BALL, MoveId.ORIGIN_PULSE],
[SpeciesId.HELIOPTILE]: [ MoveId.WEATHER_BALL, MoveId.HYDRO_STEAM, MoveId.EARTH_POWER, MoveId.BOOMBURST ], [SpeciesId.HELIOPTILE]: [MoveId.WEATHER_BALL, MoveId.HYDRO_STEAM, MoveId.EARTH_POWER, MoveId.BOOMBURST],
[SpeciesId.TYRUNT]: [ MoveId.DRAGON_HAMMER, MoveId.FLARE_BLITZ, MoveId.VOLT_TACKLE, MoveId.SHIFT_GEAR ], [SpeciesId.TYRUNT]: [MoveId.DRAGON_HAMMER, MoveId.FLARE_BLITZ, MoveId.VOLT_TACKLE, MoveId.SHIFT_GEAR],
[SpeciesId.AMAURA]: [ MoveId.RECOVER, MoveId.TERA_STARSTORM, MoveId.POWER_GEM, MoveId.GEOMANCY ], [SpeciesId.AMAURA]: [MoveId.RECOVER, MoveId.TERA_STARSTORM, MoveId.POWER_GEM, MoveId.GEOMANCY],
[SpeciesId.HAWLUCHA]: [ MoveId.TRIPLE_AXEL, MoveId.HIGH_HORSEPOWER, MoveId.FLOATY_FALL, MoveId.WICKED_BLOW ], [SpeciesId.HAWLUCHA]: [MoveId.TRIPLE_AXEL, MoveId.HIGH_HORSEPOWER, MoveId.FLOATY_FALL, MoveId.WICKED_BLOW],
[SpeciesId.DEDENNE]: [ MoveId.BOOMBURST, MoveId.FAKE_OUT, MoveId.NASTY_PLOT, MoveId.REVIVAL_BLESSING ], [SpeciesId.DEDENNE]: [MoveId.BOOMBURST, MoveId.FAKE_OUT, MoveId.NASTY_PLOT, MoveId.REVIVAL_BLESSING],
[SpeciesId.CARBINK]: [ MoveId.BODY_PRESS, MoveId.SHORE_UP, MoveId.SPARKLY_SWIRL, MoveId.DIAMOND_STORM ], [SpeciesId.CARBINK]: [MoveId.BODY_PRESS, MoveId.SHORE_UP, MoveId.SPARKLY_SWIRL, MoveId.DIAMOND_STORM],
[SpeciesId.GOOMY]: [ MoveId.DRAGON_HAMMER, MoveId.RECOVER, MoveId.CALM_MIND, MoveId.MAKE_IT_RAIN ], [SpeciesId.GOOMY]: [MoveId.DRAGON_HAMMER, MoveId.RECOVER, MoveId.CALM_MIND, MoveId.MAKE_IT_RAIN],
[SpeciesId.KLEFKI]: [ MoveId.HEAL_BELL, MoveId.ENCORE, MoveId.INSTRUCT, MoveId.TOPSY_TURVY ], [SpeciesId.KLEFKI]: [MoveId.HEAL_BELL, MoveId.ENCORE, MoveId.INSTRUCT, MoveId.TOPSY_TURVY],
[SpeciesId.PHANTUMP]: [ MoveId.RAGE_FIST, MoveId.SLEEP_POWDER, MoveId.BULK_UP, MoveId.SAPPY_SEED ], [SpeciesId.PHANTUMP]: [MoveId.RAGE_FIST, MoveId.SLEEP_POWDER, MoveId.BULK_UP, MoveId.SAPPY_SEED],
[SpeciesId.PUMPKABOO]: [ MoveId.SPIRIT_SHACKLE, MoveId.FIRE_LASH, MoveId.DIRE_CLAW, MoveId.SAPPY_SEED ], [SpeciesId.PUMPKABOO]: [MoveId.SPIRIT_SHACKLE, MoveId.FIRE_LASH, MoveId.DIRE_CLAW, MoveId.SAPPY_SEED],
[SpeciesId.BERGMITE]: [ MoveId.STONE_AXE, MoveId.METAL_BURST, MoveId.BODY_PRESS, MoveId.GLACIAL_LANCE ], [SpeciesId.BERGMITE]: [MoveId.STONE_AXE, MoveId.METAL_BURST, MoveId.BODY_PRESS, MoveId.GLACIAL_LANCE],
[SpeciesId.NOIBAT]: [ MoveId.AEROBLAST, MoveId.OVERDRIVE, MoveId.NASTY_PLOT, MoveId.CLANGING_SCALES ], [SpeciesId.NOIBAT]: [MoveId.AEROBLAST, MoveId.OVERDRIVE, MoveId.NASTY_PLOT, MoveId.CLANGING_SCALES],
[SpeciesId.XERNEAS]: [ MoveId.EARTH_POWER, MoveId.SPRINGTIDE_STORM, MoveId.STORED_POWER, MoveId.STRENGTH_SAP ], [SpeciesId.XERNEAS]: [MoveId.EARTH_POWER, MoveId.SPRINGTIDE_STORM, MoveId.STORED_POWER, MoveId.STRENGTH_SAP],
[SpeciesId.YVELTAL]: [ MoveId.SLUDGE_WAVE, MoveId.POWER_TRIP, MoveId.FIERY_WRATH, MoveId.CLANGOROUS_SOUL ], [SpeciesId.YVELTAL]: [MoveId.SLUDGE_WAVE, MoveId.POWER_TRIP, MoveId.FIERY_WRATH, MoveId.CLANGOROUS_SOUL],
[SpeciesId.ZYGARDE]: [ MoveId.DRAGON_DARTS, MoveId.V_CREATE, MoveId.CLANGOROUS_SOUL, MoveId.HEAL_ORDER ], [SpeciesId.ZYGARDE]: [MoveId.DRAGON_DARTS, MoveId.V_CREATE, MoveId.CLANGOROUS_SOUL, MoveId.HEAL_ORDER],
[SpeciesId.DIANCIE]: [ MoveId.MAGICAL_TORQUE, MoveId.FIERY_DANCE, MoveId.SHORE_UP, MoveId.GEOMANCY ], [SpeciesId.DIANCIE]: [MoveId.MAGICAL_TORQUE, MoveId.FIERY_DANCE, MoveId.SHORE_UP, MoveId.GEOMANCY],
[SpeciesId.HOOPA]: [ MoveId.PHOTON_GEYSER, MoveId.SECRET_SWORD, MoveId.FIERY_WRATH, MoveId.SHELL_SMASH ], [SpeciesId.HOOPA]: [MoveId.PHOTON_GEYSER, MoveId.SECRET_SWORD, MoveId.FIERY_WRATH, MoveId.SHELL_SMASH],
[SpeciesId.VOLCANION]: [ MoveId.HYDRO_STEAM, MoveId.CALM_MIND, MoveId.SEARING_SHOT, MoveId.THUNDERCLAP ], [SpeciesId.VOLCANION]: [MoveId.HYDRO_STEAM, MoveId.CALM_MIND, MoveId.SEARING_SHOT, MoveId.THUNDERCLAP],
[SpeciesId.ETERNAL_FLOETTE]: [ MoveId.MIND_BLOWN, MoveId.CHLOROBLAST, MoveId.LUSTER_PURGE, MoveId.QUIVER_DANCE ], [SpeciesId.ETERNAL_FLOETTE]: [MoveId.MIND_BLOWN, MoveId.CHLOROBLAST, MoveId.LUSTER_PURGE, MoveId.QUIVER_DANCE],
[SpeciesId.ROWLET]: [ MoveId.THOUSAND_ARROWS, MoveId.SHADOW_BONE, MoveId.FIRST_IMPRESSION, MoveId.VICTORY_DANCE ], [SpeciesId.ROWLET]: [MoveId.THOUSAND_ARROWS, MoveId.SHADOW_BONE, MoveId.FIRST_IMPRESSION, MoveId.VICTORY_DANCE],
[SpeciesId.LITTEN]: [ MoveId.SUCKER_PUNCH, MoveId.PARTING_SHOT, MoveId.SLACK_OFF, MoveId.SACRED_FIRE ], [SpeciesId.LITTEN]: [MoveId.SUCKER_PUNCH, MoveId.PARTING_SHOT, MoveId.SLACK_OFF, MoveId.SACRED_FIRE],
[SpeciesId.POPPLIO]: [ MoveId.PSYCHIC_NOISE, MoveId.MOONLIGHT, MoveId.OVERDRIVE, MoveId.TORCH_SONG ], [SpeciesId.POPPLIO]: [MoveId.PSYCHIC_NOISE, MoveId.MOONLIGHT, MoveId.OVERDRIVE, MoveId.TORCH_SONG],
[SpeciesId.PIKIPEK]: [ MoveId.TRAILBLAZE, MoveId.BONE_RUSH, MoveId.BURNING_BULWARK, MoveId.POPULATION_BOMB ], [SpeciesId.PIKIPEK]: [MoveId.TRAILBLAZE, MoveId.BONE_RUSH, MoveId.BURNING_BULWARK, MoveId.POPULATION_BOMB],
[SpeciesId.YUNGOOS]: [ MoveId.FAKE_OUT, MoveId.HIGH_HORSEPOWER, MoveId.TIDY_UP, MoveId.EXTREME_SPEED ], [SpeciesId.YUNGOOS]: [MoveId.FAKE_OUT, MoveId.HIGH_HORSEPOWER, MoveId.TIDY_UP, MoveId.EXTREME_SPEED],
[SpeciesId.GRUBBIN]: [ MoveId.ICE_BEAM, MoveId.EARTH_POWER, MoveId.CALM_MIND, MoveId.THUNDERCLAP ], [SpeciesId.GRUBBIN]: [MoveId.ICE_BEAM, MoveId.EARTH_POWER, MoveId.CALM_MIND, MoveId.THUNDERCLAP],
[SpeciesId.CRABRAWLER]: [ MoveId.JET_PUNCH, MoveId.SHORE_UP, MoveId.MACH_PUNCH, MoveId.SURGING_STRIKES ], [SpeciesId.CRABRAWLER]: [MoveId.JET_PUNCH, MoveId.SHORE_UP, MoveId.MACH_PUNCH, MoveId.SURGING_STRIKES],
[SpeciesId.ORICORIO]: [ MoveId.QUIVER_DANCE, MoveId.FIERY_DANCE, MoveId.THUNDERCLAP, MoveId.OBLIVION_WING ], [SpeciesId.ORICORIO]: [MoveId.QUIVER_DANCE, MoveId.FIERY_DANCE, MoveId.THUNDERCLAP, MoveId.OBLIVION_WING],
[SpeciesId.CUTIEFLY]: [ MoveId.STICKY_WEB, MoveId.SLEEP_POWDER, MoveId.HEAT_WAVE, MoveId.SPARKLY_SWIRL ], [SpeciesId.CUTIEFLY]: [MoveId.STICKY_WEB, MoveId.SLEEP_POWDER, MoveId.HEAT_WAVE, MoveId.SPARKLY_SWIRL],
[SpeciesId.ROCKRUFF]: [ MoveId.HIGH_HORSEPOWER, MoveId.TIDY_UP, MoveId.ICE_SPINNER, MoveId.MIGHTY_CLEAVE ], [SpeciesId.ROCKRUFF]: [MoveId.HIGH_HORSEPOWER, MoveId.TIDY_UP, MoveId.ICE_SPINNER, MoveId.MIGHTY_CLEAVE],
[SpeciesId.WISHIWASHI]: [ MoveId.HEAL_ORDER, MoveId.FREEZE_DRY, MoveId.WATER_SHURIKEN, MoveId.TAIL_GLOW ], [SpeciesId.WISHIWASHI]: [MoveId.HEAL_ORDER, MoveId.FREEZE_DRY, MoveId.WATER_SHURIKEN, MoveId.TAIL_GLOW],
[SpeciesId.MAREANIE]: [ MoveId.CEASELESS_EDGE, MoveId.SIZZLY_SLIDE, MoveId.BODY_PRESS, MoveId.LEECH_SEED ], [SpeciesId.MAREANIE]: [MoveId.CEASELESS_EDGE, MoveId.SIZZLY_SLIDE, MoveId.BODY_PRESS, MoveId.LEECH_SEED],
[SpeciesId.MUDBRAY]: [ MoveId.BODY_PRESS, MoveId.YAWN, MoveId.SHORE_UP, MoveId.THOUSAND_WAVES ], [SpeciesId.MUDBRAY]: [MoveId.BODY_PRESS, MoveId.YAWN, MoveId.SHORE_UP, MoveId.THOUSAND_WAVES],
[SpeciesId.DEWPIDER]: [ MoveId.AQUA_STEP, MoveId.SILK_TRAP, MoveId.SWORDS_DANCE, MoveId.JET_PUNCH ], [SpeciesId.DEWPIDER]: [MoveId.AQUA_STEP, MoveId.SILK_TRAP, MoveId.SWORDS_DANCE, MoveId.JET_PUNCH],
[SpeciesId.FOMANTIS]: [ MoveId.SUPERPOWER, MoveId.HEADLONG_RUSH, MoveId.ICE_HAMMER, MoveId.BITTER_BLADE ], [SpeciesId.FOMANTIS]: [MoveId.SUPERPOWER, MoveId.HEADLONG_RUSH, MoveId.ICE_HAMMER, MoveId.BITTER_BLADE],
[SpeciesId.MORELULL]: [ MoveId.CALM_MIND, MoveId.SAPPY_SEED, MoveId.DRAINING_KISS, MoveId.MATCHA_GOTCHA ], [SpeciesId.MORELULL]: [MoveId.CALM_MIND, MoveId.SAPPY_SEED, MoveId.DRAINING_KISS, MoveId.MATCHA_GOTCHA],
[SpeciesId.SALANDIT]: [ MoveId.SCALD, MoveId.MALIGNANT_CHAIN, MoveId.CORE_ENFORCER, MoveId.ERUPTION ], [SpeciesId.SALANDIT]: [MoveId.SCALD, MoveId.MALIGNANT_CHAIN, MoveId.CORE_ENFORCER, MoveId.ERUPTION],
[SpeciesId.STUFFUL]: [ MoveId.DRAIN_PUNCH, MoveId.METEOR_MASH, MoveId.TRIPLE_AXEL, MoveId.RAGE_FIST ], [SpeciesId.STUFFUL]: [MoveId.DRAIN_PUNCH, MoveId.METEOR_MASH, MoveId.TRIPLE_AXEL, MoveId.RAGE_FIST],
[SpeciesId.BOUNSWEET]: [ MoveId.TRIPLE_AXEL, MoveId.AQUA_STEP, MoveId.THUNDEROUS_KICK, MoveId.FLOWER_TRICK ], [SpeciesId.BOUNSWEET]: [MoveId.TRIPLE_AXEL, MoveId.AQUA_STEP, MoveId.THUNDEROUS_KICK, MoveId.FLOWER_TRICK],
[SpeciesId.COMFEY]: [ MoveId.REVIVAL_BLESSING, MoveId.TAKE_HEART, MoveId.STRENGTH_SAP, MoveId.MATCHA_GOTCHA ], [SpeciesId.COMFEY]: [MoveId.REVIVAL_BLESSING, MoveId.TAKE_HEART, MoveId.STRENGTH_SAP, MoveId.MATCHA_GOTCHA],
[SpeciesId.ORANGURU]: [ MoveId.JUNGLE_HEALING, MoveId.YAWN, MoveId.FOLLOW_ME, MoveId.LUMINA_CRASH ], [SpeciesId.ORANGURU]: [MoveId.JUNGLE_HEALING, MoveId.YAWN, MoveId.FOLLOW_ME, MoveId.LUMINA_CRASH],
[SpeciesId.PASSIMIAN]: [ MoveId.PYRO_BALL, MoveId.SUCKER_PUNCH, MoveId.ZING_ZAP, MoveId.VICTORY_DANCE ], [SpeciesId.PASSIMIAN]: [MoveId.PYRO_BALL, MoveId.SUCKER_PUNCH, MoveId.ZING_ZAP, MoveId.VICTORY_DANCE],
[SpeciesId.WIMPOD]: [ MoveId.TRIPLE_AXEL, MoveId.OBSTRUCT, MoveId.JET_PUNCH, MoveId.SURGING_STRIKES ], [SpeciesId.WIMPOD]: [MoveId.TRIPLE_AXEL, MoveId.OBSTRUCT, MoveId.JET_PUNCH, MoveId.SURGING_STRIKES],
[SpeciesId.SANDYGAST]: [ MoveId.BITTER_MALICE, MoveId.SPLISHY_SPLASH, MoveId.TAKE_HEART, MoveId.SALT_CURE ], [SpeciesId.SANDYGAST]: [MoveId.BITTER_MALICE, MoveId.SPLISHY_SPLASH, MoveId.TAKE_HEART, MoveId.SALT_CURE],
[SpeciesId.PYUKUMUKU]: [ MoveId.COMEUPPANCE, MoveId.BANEFUL_BUNKER, MoveId.TOXIC_SPIKES, MoveId.SALT_CURE ], [SpeciesId.PYUKUMUKU]: [MoveId.COMEUPPANCE, MoveId.BANEFUL_BUNKER, MoveId.TOXIC_SPIKES, MoveId.SALT_CURE],
[SpeciesId.TYPE_NULL]: [ MoveId.DIRE_CLAW, MoveId.RECOVER, MoveId.COMBAT_TORQUE, MoveId.NO_RETREAT ], [SpeciesId.TYPE_NULL]: [MoveId.DIRE_CLAW, MoveId.RECOVER, MoveId.COMBAT_TORQUE, MoveId.NO_RETREAT],
[SpeciesId.MINIOR]: [ MoveId.EARTH_POWER, MoveId.FLOATY_FALL, MoveId.TRI_ATTACK, MoveId.DIAMOND_STORM ], [SpeciesId.MINIOR]: [MoveId.EARTH_POWER, MoveId.FLOATY_FALL, MoveId.TRI_ATTACK, MoveId.DIAMOND_STORM],
[SpeciesId.KOMALA]: [ MoveId.SLACK_OFF, MoveId.EXTREME_SPEED, MoveId.KNOCK_OFF, MoveId.COLLISION_COURSE ], [SpeciesId.KOMALA]: [MoveId.SLACK_OFF, MoveId.EXTREME_SPEED, MoveId.KNOCK_OFF, MoveId.COLLISION_COURSE],
[SpeciesId.TURTONATOR]: [ MoveId.BURNING_BULWARK, MoveId.MORNING_SUN, MoveId.BODY_PRESS, MoveId.CORE_ENFORCER ], [SpeciesId.TURTONATOR]: [MoveId.BURNING_BULWARK, MoveId.MORNING_SUN, MoveId.BODY_PRESS, MoveId.CORE_ENFORCER],
[SpeciesId.TOGEDEMARU]: [ MoveId.FAKE_OUT, MoveId.METAL_BURST, MoveId.METEOR_MASH, MoveId.AURA_WHEEL ], [SpeciesId.TOGEDEMARU]: [MoveId.FAKE_OUT, MoveId.METAL_BURST, MoveId.METEOR_MASH, MoveId.AURA_WHEEL],
[SpeciesId.MIMIKYU]: [ MoveId.SPIRIT_BREAK, MoveId.TIDY_UP, MoveId.FIRE_LASH, MoveId.SPECTRAL_THIEF ], [SpeciesId.MIMIKYU]: [MoveId.SPIRIT_BREAK, MoveId.TIDY_UP, MoveId.FIRE_LASH, MoveId.SPECTRAL_THIEF],
[SpeciesId.BRUXISH]: [ MoveId.PLAY_ROUGH, MoveId.FIRE_FANG, MoveId.DRAGON_DANCE, MoveId.SURGING_STRIKES ], [SpeciesId.BRUXISH]: [MoveId.PLAY_ROUGH, MoveId.FIRE_FANG, MoveId.DRAGON_DANCE, MoveId.SURGING_STRIKES],
[SpeciesId.DRAMPA]: [ MoveId.SLACK_OFF, MoveId.TRICK_ROOM, MoveId.CORE_ENFORCER, MoveId.BOOMBURST ], [SpeciesId.DRAMPA]: [MoveId.SLACK_OFF, MoveId.TRICK_ROOM, MoveId.CORE_ENFORCER, MoveId.BOOMBURST],
[SpeciesId.DHELMISE]: [ MoveId.SHADOW_BONE, MoveId.IVY_CUDGEL, MoveId.TRIPLE_DIVE, MoveId.STRENGTH_SAP ], [SpeciesId.DHELMISE]: [MoveId.SHADOW_BONE, MoveId.IVY_CUDGEL, MoveId.TRIPLE_DIVE, MoveId.STRENGTH_SAP],
[SpeciesId.JANGMO_O]: [ MoveId.BODY_PRESS, MoveId.SHELL_SIDE_ARM, MoveId.SECRET_SWORD, MoveId.GLAIVE_RUSH ], [SpeciesId.JANGMO_O]: [MoveId.BODY_PRESS, MoveId.SHELL_SIDE_ARM, MoveId.SECRET_SWORD, MoveId.GLAIVE_RUSH],
[SpeciesId.TAPU_KOKO]: [ MoveId.MAGICAL_TORQUE, MoveId.TRIPLE_AXEL, MoveId.SWORDS_DANCE, MoveId.BOLT_STRIKE ], [SpeciesId.TAPU_KOKO]: [MoveId.MAGICAL_TORQUE, MoveId.TRIPLE_AXEL, MoveId.SWORDS_DANCE, MoveId.BOLT_STRIKE],
[SpeciesId.TAPU_LELE]: [ MoveId.MOONLIGHT, MoveId.NASTY_PLOT, MoveId.HEAT_WAVE, MoveId.EXPANDING_FORCE ], [SpeciesId.TAPU_LELE]: [MoveId.MOONLIGHT, MoveId.NASTY_PLOT, MoveId.HEAT_WAVE, MoveId.EXPANDING_FORCE],
[SpeciesId.TAPU_BULU]: [ MoveId.SAPPY_SEED, MoveId.LANDS_WRATH, MoveId.MAGICAL_TORQUE, MoveId.VICTORY_DANCE ], [SpeciesId.TAPU_BULU]: [MoveId.SAPPY_SEED, MoveId.LANDS_WRATH, MoveId.MAGICAL_TORQUE, MoveId.VICTORY_DANCE],
[SpeciesId.TAPU_FINI]: [ MoveId.SPRINGTIDE_STORM, MoveId.EARTH_POWER, MoveId.RECOVER, MoveId.QUIVER_DANCE ], [SpeciesId.TAPU_FINI]: [MoveId.SPRINGTIDE_STORM, MoveId.EARTH_POWER, MoveId.RECOVER, MoveId.QUIVER_DANCE],
[SpeciesId.COSMOG]: [ MoveId.PHOTON_GEYSER, MoveId.PRECIPICE_BLADES, MoveId.SACRED_FIRE, MoveId.ASTRAL_BARRAGE ], [SpeciesId.COSMOG]: [MoveId.PHOTON_GEYSER, MoveId.PRECIPICE_BLADES, MoveId.SACRED_FIRE, MoveId.ASTRAL_BARRAGE],
[SpeciesId.NIHILEGO]: [ MoveId.STRENGTH_SAP, MoveId.MALIGNANT_CHAIN, MoveId.EARTH_POWER, MoveId.QUIVER_DANCE ], [SpeciesId.NIHILEGO]: [MoveId.STRENGTH_SAP, MoveId.MALIGNANT_CHAIN, MoveId.EARTH_POWER, MoveId.QUIVER_DANCE],
[SpeciesId.BUZZWOLE]: [ MoveId.FIRST_IMPRESSION, MoveId.COMBAT_TORQUE, MoveId.ROCK_BLAST, MoveId.DOUBLE_IRON_BASH ], [SpeciesId.BUZZWOLE]: [MoveId.FIRST_IMPRESSION, MoveId.COMBAT_TORQUE, MoveId.ROCK_BLAST, MoveId.DOUBLE_IRON_BASH],
[SpeciesId.PHEROMOSA]: [ MoveId.SECRET_SWORD, MoveId.MAKE_IT_RAIN, MoveId.ATTACK_ORDER, MoveId.DIAMOND_STORM ], [SpeciesId.PHEROMOSA]: [MoveId.SECRET_SWORD, MoveId.MAKE_IT_RAIN, MoveId.ATTACK_ORDER, MoveId.DIAMOND_STORM],
[SpeciesId.XURKITREE]: [ MoveId.FLAMETHROWER, MoveId.GIGA_DRAIN, MoveId.TAIL_GLOW, MoveId.THUNDERCLAP ], [SpeciesId.XURKITREE]: [MoveId.FLAMETHROWER, MoveId.GIGA_DRAIN, MoveId.TAIL_GLOW, MoveId.THUNDERCLAP],
[SpeciesId.CELESTEELA]: [ MoveId.RECOVER, MoveId.BUZZY_BUZZ, MoveId.EARTH_POWER, MoveId.OBLIVION_WING ], [SpeciesId.CELESTEELA]: [MoveId.RECOVER, MoveId.BUZZY_BUZZ, MoveId.EARTH_POWER, MoveId.OBLIVION_WING],
[SpeciesId.KARTANA]: [ MoveId.MIGHTY_CLEAVE, MoveId.DUAL_CHOP, MoveId.BEHEMOTH_BLADE, MoveId.BITTER_BLADE ], [SpeciesId.KARTANA]: [MoveId.MIGHTY_CLEAVE, MoveId.DUAL_CHOP, MoveId.BEHEMOTH_BLADE, MoveId.BITTER_BLADE],
[SpeciesId.GUZZLORD]: [ MoveId.SUCKER_PUNCH, MoveId.COMEUPPANCE, MoveId.SLACK_OFF, MoveId.SHED_TAIL ], [SpeciesId.GUZZLORD]: [MoveId.SUCKER_PUNCH, MoveId.COMEUPPANCE, MoveId.SLACK_OFF, MoveId.SHED_TAIL],
[SpeciesId.NECROZMA]: [ MoveId.DYNAMAX_CANNON, MoveId.SACRED_FIRE, MoveId.ASTRAL_BARRAGE, MoveId.CLANGOROUS_SOUL ], [SpeciesId.NECROZMA]: [MoveId.DYNAMAX_CANNON, MoveId.SACRED_FIRE, MoveId.ASTRAL_BARRAGE, MoveId.CLANGOROUS_SOUL],
[SpeciesId.MAGEARNA]: [ MoveId.STRENGTH_SAP, MoveId.EARTH_POWER, MoveId.MOONBLAST, MoveId.MAKE_IT_RAIN ], [SpeciesId.MAGEARNA]: [MoveId.STRENGTH_SAP, MoveId.EARTH_POWER, MoveId.MOONBLAST, MoveId.MAKE_IT_RAIN],
[SpeciesId.MARSHADOW]: [ MoveId.POWER_UP_PUNCH, MoveId.BONEMERANG, MoveId.METEOR_MASH, MoveId.TRIPLE_AXEL ], [SpeciesId.MARSHADOW]: [MoveId.POWER_UP_PUNCH, MoveId.BONEMERANG, MoveId.METEOR_MASH, MoveId.TRIPLE_AXEL],
[SpeciesId.POIPOLE]: [ MoveId.MALIGNANT_CHAIN, MoveId.ICE_BEAM, MoveId.ARMOR_CANNON, MoveId.CLANGING_SCALES ], [SpeciesId.POIPOLE]: [MoveId.MALIGNANT_CHAIN, MoveId.ICE_BEAM, MoveId.ARMOR_CANNON, MoveId.CLANGING_SCALES],
[SpeciesId.STAKATAKA]: [ MoveId.HEAVY_SLAM, MoveId.HEAL_ORDER, MoveId.CURSE, MoveId.SALT_CURE ], [SpeciesId.STAKATAKA]: [MoveId.HEAVY_SLAM, MoveId.HEAL_ORDER, MoveId.CURSE, MoveId.SALT_CURE],
[SpeciesId.BLACEPHALON]: [ MoveId.STEEL_BEAM, MoveId.MOONBLAST, MoveId.CHLOROBLAST, MoveId.MOONGEIST_BEAM ], [SpeciesId.BLACEPHALON]: [MoveId.STEEL_BEAM, MoveId.MOONBLAST, MoveId.CHLOROBLAST, MoveId.MOONGEIST_BEAM],
[SpeciesId.ZERAORA]: [ MoveId.SWORDS_DANCE, MoveId.FIRE_LASH, MoveId.COLLISION_COURSE, MoveId.TRIPLE_AXEL ], [SpeciesId.ZERAORA]: [MoveId.SWORDS_DANCE, MoveId.FIRE_LASH, MoveId.COLLISION_COURSE, MoveId.TRIPLE_AXEL],
[SpeciesId.MELTAN]: [ MoveId.BULLET_PUNCH, MoveId.DRAIN_PUNCH, MoveId.BULK_UP, MoveId.PLASMA_FISTS ], [SpeciesId.MELTAN]: [MoveId.BULLET_PUNCH, MoveId.DRAIN_PUNCH, MoveId.BULK_UP, MoveId.PLASMA_FISTS],
[SpeciesId.ALOLA_RATTATA]: [ MoveId.FALSE_SURRENDER, MoveId.PSYCHIC_FANGS, MoveId.COIL, MoveId.EXTREME_SPEED ], [SpeciesId.ALOLA_RATTATA]: [MoveId.FALSE_SURRENDER, MoveId.PSYCHIC_FANGS, MoveId.COIL, MoveId.EXTREME_SPEED],
[SpeciesId.ALOLA_SANDSHREW]: [ MoveId.SPIKY_SHIELD, MoveId.LIQUIDATION, MoveId.SHIFT_GEAR, MoveId.GLACIAL_LANCE ], [SpeciesId.ALOLA_SANDSHREW]: [MoveId.SPIKY_SHIELD, MoveId.LIQUIDATION, MoveId.SHIFT_GEAR, MoveId.GLACIAL_LANCE],
[SpeciesId.ALOLA_VULPIX]: [ MoveId.MOONBLAST, MoveId.GLARE, MoveId.MYSTICAL_FIRE, MoveId.LUNAR_BLESSING ], [SpeciesId.ALOLA_VULPIX]: [MoveId.MOONBLAST, MoveId.GLARE, MoveId.MYSTICAL_FIRE, MoveId.LUNAR_BLESSING],
[SpeciesId.ALOLA_DIGLETT]: [ MoveId.THOUSAND_WAVES, MoveId.SWORDS_DANCE, MoveId.TRIPLE_DIVE, MoveId.PYRO_BALL ], [SpeciesId.ALOLA_DIGLETT]: [MoveId.THOUSAND_WAVES, MoveId.SWORDS_DANCE, MoveId.TRIPLE_DIVE, MoveId.PYRO_BALL],
[SpeciesId.ALOLA_MEOWTH]: [ MoveId.BADDY_BAD, MoveId.BUZZY_BUZZ, MoveId.PARTING_SHOT, MoveId.MAKE_IT_RAIN ], [SpeciesId.ALOLA_MEOWTH]: [MoveId.BADDY_BAD, MoveId.BUZZY_BUZZ, MoveId.PARTING_SHOT, MoveId.MAKE_IT_RAIN],
[SpeciesId.ALOLA_GEODUDE]: [ MoveId.LANDS_WRATH, MoveId.FUSION_BOLT, MoveId.STONE_AXE, MoveId.EXTREME_SPEED ], [SpeciesId.ALOLA_GEODUDE]: [MoveId.LANDS_WRATH, MoveId.FUSION_BOLT, MoveId.STONE_AXE, MoveId.EXTREME_SPEED],
[SpeciesId.ALOLA_GRIMER]: [ MoveId.SUCKER_PUNCH, MoveId.BARB_BARRAGE, MoveId.RECOVER, MoveId.SURGING_STRIKES ], [SpeciesId.ALOLA_GRIMER]: [MoveId.SUCKER_PUNCH, MoveId.BARB_BARRAGE, MoveId.RECOVER, MoveId.SURGING_STRIKES],
[SpeciesId.GROOKEY]: [ MoveId.ROCK_SLIDE, MoveId.PLAY_ROUGH, MoveId.GRASSY_GLIDE, MoveId.CLANGOROUS_SOUL ], [SpeciesId.GROOKEY]: [MoveId.ROCK_SLIDE, MoveId.PLAY_ROUGH, MoveId.GRASSY_GLIDE, MoveId.CLANGOROUS_SOUL],
[SpeciesId.SCORBUNNY]: [ MoveId.EXTREME_SPEED, MoveId.HIGH_JUMP_KICK, MoveId.SUPERCELL_SLAM, MoveId.TRIPLE_AXEL ], [SpeciesId.SCORBUNNY]: [MoveId.EXTREME_SPEED, MoveId.HIGH_JUMP_KICK, MoveId.SUPERCELL_SLAM, MoveId.TRIPLE_AXEL],
[SpeciesId.SOBBLE]: [ MoveId.AEROBLAST, MoveId.FROST_BREATH, MoveId.ENERGY_BALL, MoveId.NASTY_PLOT ], [SpeciesId.SOBBLE]: [MoveId.AEROBLAST, MoveId.FROST_BREATH, MoveId.ENERGY_BALL, MoveId.NASTY_PLOT],
[SpeciesId.SKWOVET]: [ MoveId.SUCKER_PUNCH, MoveId.SLACK_OFF, MoveId.COIL, MoveId.POPULATION_BOMB ], [SpeciesId.SKWOVET]: [MoveId.SUCKER_PUNCH, MoveId.SLACK_OFF, MoveId.COIL, MoveId.POPULATION_BOMB],
[SpeciesId.ROOKIDEE]: [ MoveId.ROOST, MoveId.BODY_PRESS, MoveId.KINGS_SHIELD, MoveId.BEHEMOTH_BASH ], [SpeciesId.ROOKIDEE]: [MoveId.ROOST, MoveId.BODY_PRESS, MoveId.KINGS_SHIELD, MoveId.BEHEMOTH_BASH],
[SpeciesId.BLIPBUG]: [ MoveId.HEAL_ORDER, MoveId.LUSTER_PURGE, MoveId.SLEEP_POWDER, MoveId.TAIL_GLOW ], [SpeciesId.BLIPBUG]: [MoveId.HEAL_ORDER, MoveId.LUSTER_PURGE, MoveId.SLEEP_POWDER, MoveId.TAIL_GLOW],
[SpeciesId.NICKIT]: [ MoveId.BADDY_BAD, MoveId.MYSTICAL_FIRE, MoveId.SPARKLY_SWIRL, MoveId.MAKE_IT_RAIN ], [SpeciesId.NICKIT]: [MoveId.BADDY_BAD, MoveId.MYSTICAL_FIRE, MoveId.SPARKLY_SWIRL, MoveId.MAKE_IT_RAIN],
[SpeciesId.GOSSIFLEUR]: [ MoveId.BATON_PASS, MoveId.TAILWIND, MoveId.SAPPY_SEED, MoveId.SPORE ], [SpeciesId.GOSSIFLEUR]: [MoveId.BATON_PASS, MoveId.TAILWIND, MoveId.SAPPY_SEED, MoveId.SPORE],
[SpeciesId.WOOLOO]: [ MoveId.NUZZLE, MoveId.MILK_DRINK, MoveId.BODY_PRESS, MoveId.MULTI_ATTACK ], [SpeciesId.WOOLOO]: [MoveId.NUZZLE, MoveId.MILK_DRINK, MoveId.BODY_PRESS, MoveId.MULTI_ATTACK],
[SpeciesId.CHEWTLE]: [ MoveId.ICE_FANG, MoveId.PSYCHIC_FANGS, MoveId.SHELL_SMASH, MoveId.MIGHTY_CLEAVE ], [SpeciesId.CHEWTLE]: [MoveId.ICE_FANG, MoveId.PSYCHIC_FANGS, MoveId.SHELL_SMASH, MoveId.MIGHTY_CLEAVE],
[SpeciesId.YAMPER]: [ MoveId.ICE_FANG, MoveId.SWORDS_DANCE, MoveId.THUNDER_FANG, MoveId.BOLT_STRIKE ], [SpeciesId.YAMPER]: [MoveId.ICE_FANG, MoveId.SWORDS_DANCE, MoveId.THUNDER_FANG, MoveId.BOLT_STRIKE],
[SpeciesId.ROLYCOLY]: [ MoveId.BITTER_BLADE, MoveId.BODY_PRESS, MoveId.BULK_UP, MoveId.DIAMOND_STORM ], [SpeciesId.ROLYCOLY]: [MoveId.BITTER_BLADE, MoveId.BODY_PRESS, MoveId.BULK_UP, MoveId.DIAMOND_STORM],
[SpeciesId.APPLIN]: [ MoveId.CORE_ENFORCER, MoveId.COMBAT_TORQUE, MoveId.SAPPY_SEED, MoveId.MATCHA_GOTCHA ], [SpeciesId.APPLIN]: [MoveId.CORE_ENFORCER, MoveId.COMBAT_TORQUE, MoveId.SAPPY_SEED, MoveId.MATCHA_GOTCHA],
[SpeciesId.SILICOBRA]: [ MoveId.SHORE_UP, MoveId.SHED_TAIL, MoveId.MOUNTAIN_GALE, MoveId.THOUSAND_ARROWS ], [SpeciesId.SILICOBRA]: [MoveId.SHORE_UP, MoveId.SHED_TAIL, MoveId.MOUNTAIN_GALE, MoveId.THOUSAND_ARROWS],
[SpeciesId.CRAMORANT]: [ MoveId.APPLE_ACID, MoveId.SURF, MoveId.BOLT_BEAK, MoveId.OBLIVION_WING ], [SpeciesId.CRAMORANT]: [MoveId.APPLE_ACID, MoveId.SURF, MoveId.BOLT_BEAK, MoveId.OBLIVION_WING],
[SpeciesId.ARROKUDA]: [ MoveId.SUPERCELL_SLAM, MoveId.TRIPLE_DIVE, MoveId.ICE_SPINNER, MoveId.SWORDS_DANCE ], [SpeciesId.ARROKUDA]: [MoveId.SUPERCELL_SLAM, MoveId.TRIPLE_DIVE, MoveId.ICE_SPINNER, MoveId.SWORDS_DANCE],
[SpeciesId.TOXEL]: [ MoveId.BUZZY_BUZZ, MoveId.BUG_BUZZ, MoveId.SPARKLING_ARIA, MoveId.TORCH_SONG ], [SpeciesId.TOXEL]: [MoveId.BUZZY_BUZZ, MoveId.BUG_BUZZ, MoveId.SPARKLING_ARIA, MoveId.TORCH_SONG],
[SpeciesId.SIZZLIPEDE]: [ MoveId.BURNING_BULWARK, MoveId.ZING_ZAP, MoveId.FIRST_IMPRESSION, MoveId.BITTER_BLADE ], [SpeciesId.SIZZLIPEDE]: [MoveId.BURNING_BULWARK, MoveId.ZING_ZAP, MoveId.FIRST_IMPRESSION, MoveId.BITTER_BLADE],
[SpeciesId.CLOBBOPUS]: [ MoveId.STORM_THROW, MoveId.JET_PUNCH, MoveId.MACH_PUNCH, MoveId.SURGING_STRIKES ], [SpeciesId.CLOBBOPUS]: [MoveId.STORM_THROW, MoveId.JET_PUNCH, MoveId.MACH_PUNCH, MoveId.SURGING_STRIKES],
[SpeciesId.SINISTEA]: [ MoveId.SPLISHY_SPLASH, MoveId.MATCHA_GOTCHA, MoveId.DRAINING_KISS, MoveId.MOONGEIST_BEAM ], [SpeciesId.SINISTEA]: [MoveId.SPLISHY_SPLASH, MoveId.MATCHA_GOTCHA, MoveId.DRAINING_KISS, MoveId.MOONGEIST_BEAM],
[SpeciesId.HATENNA]: [ MoveId.RECOVER, MoveId.MOONBLAST, MoveId.BUZZY_BUZZ, MoveId.TORCH_SONG ], [SpeciesId.HATENNA]: [MoveId.RECOVER, MoveId.MOONBLAST, MoveId.BUZZY_BUZZ, MoveId.TORCH_SONG],
[SpeciesId.IMPIDIMP]: [ MoveId.SLACK_OFF, MoveId.PARTING_SHOT, MoveId.OCTOLOCK, MoveId.WICKED_BLOW ], [SpeciesId.IMPIDIMP]: [MoveId.SLACK_OFF, MoveId.PARTING_SHOT, MoveId.OCTOLOCK, MoveId.WICKED_BLOW],
[SpeciesId.MILCERY]: [ MoveId.MOONBLAST, MoveId.CHILLY_RECEPTION, MoveId.EARTH_POWER, MoveId.GEOMANCY ], [SpeciesId.MILCERY]: [MoveId.MOONBLAST, MoveId.CHILLY_RECEPTION, MoveId.EARTH_POWER, MoveId.GEOMANCY],
[SpeciesId.FALINKS]: [ MoveId.BATON_PASS, MoveId.POWER_TRIP, MoveId.COMBAT_TORQUE, MoveId.HEAL_ORDER ], [SpeciesId.FALINKS]: [MoveId.BATON_PASS, MoveId.POWER_TRIP, MoveId.COMBAT_TORQUE, MoveId.HEAL_ORDER],
[SpeciesId.PINCURCHIN]: [ MoveId.TRICK_ROOM, MoveId.VOLT_SWITCH, MoveId.STRENGTH_SAP, MoveId.THUNDERCLAP ], [SpeciesId.PINCURCHIN]: [MoveId.TRICK_ROOM, MoveId.VOLT_SWITCH, MoveId.STRENGTH_SAP, MoveId.THUNDERCLAP],
[SpeciesId.SNOM]: [ MoveId.FROST_BREATH, MoveId.HEAL_ORDER, MoveId.EARTH_POWER, MoveId.SPORE ], [SpeciesId.SNOM]: [MoveId.FROST_BREATH, MoveId.HEAL_ORDER, MoveId.EARTH_POWER, MoveId.SPORE],
[SpeciesId.STONJOURNER]: [ MoveId.AXE_KICK, MoveId.HELPING_HAND, MoveId.ACCELEROCK, MoveId.DIAMOND_STORM ], [SpeciesId.STONJOURNER]: [MoveId.AXE_KICK, MoveId.HELPING_HAND, MoveId.ACCELEROCK, MoveId.DIAMOND_STORM],
[SpeciesId.EISCUE]: [ MoveId.TRIPLE_AXEL, MoveId.AQUA_STEP, MoveId.AXE_KICK, MoveId.SHELL_SMASH ], [SpeciesId.EISCUE]: [MoveId.TRIPLE_AXEL, MoveId.AQUA_STEP, MoveId.AXE_KICK, MoveId.SHELL_SMASH],
[SpeciesId.INDEEDEE]: [ MoveId.MATCHA_GOTCHA, MoveId.EXPANDING_FORCE, MoveId.MOONBLAST, MoveId.REVIVAL_BLESSING ], [SpeciesId.INDEEDEE]: [MoveId.MATCHA_GOTCHA, MoveId.EXPANDING_FORCE, MoveId.MOONBLAST, MoveId.REVIVAL_BLESSING],
[SpeciesId.MORPEKO]: [ MoveId.TRIPLE_AXEL, MoveId.OBSTRUCT, MoveId.SWORDS_DANCE, MoveId.COLLISION_COURSE ], [SpeciesId.MORPEKO]: [MoveId.TRIPLE_AXEL, MoveId.OBSTRUCT, MoveId.SWORDS_DANCE, MoveId.COLLISION_COURSE],
[SpeciesId.CUFANT]: [ MoveId.LIQUIDATION, MoveId.CURSE, MoveId.COMBAT_TORQUE, MoveId.GIGATON_HAMMER ], [SpeciesId.CUFANT]: [MoveId.LIQUIDATION, MoveId.CURSE, MoveId.COMBAT_TORQUE, MoveId.GIGATON_HAMMER],
[SpeciesId.DRACOZOLT]: [ MoveId.TRIPLE_AXEL, MoveId.GUNK_SHOT, MoveId.FIRE_LASH, MoveId.DRAGON_DANCE ], [SpeciesId.DRACOZOLT]: [MoveId.TRIPLE_AXEL, MoveId.GUNK_SHOT, MoveId.FIRE_LASH, MoveId.DRAGON_DANCE],
[SpeciesId.ARCTOZOLT]: [ MoveId.MOUNTAIN_GALE, MoveId.AQUA_STEP, MoveId.HIGH_HORSEPOWER, MoveId.SHIFT_GEAR ], [SpeciesId.ARCTOZOLT]: [MoveId.MOUNTAIN_GALE, MoveId.AQUA_STEP, MoveId.HIGH_HORSEPOWER, MoveId.SHIFT_GEAR],
[SpeciesId.DRACOVISH]: [ MoveId.TRIPLE_AXEL, MoveId.DRAGON_HAMMER, MoveId.THUNDER_FANG, MoveId.DRAGON_DANCE ], [SpeciesId.DRACOVISH]: [MoveId.TRIPLE_AXEL, MoveId.DRAGON_HAMMER, MoveId.THUNDER_FANG, MoveId.DRAGON_DANCE],
[SpeciesId.ARCTOVISH]: [ MoveId.ICE_FANG, MoveId.THUNDER_FANG, MoveId.HIGH_HORSEPOWER, MoveId.SHIFT_GEAR ], [SpeciesId.ARCTOVISH]: [MoveId.ICE_FANG, MoveId.THUNDER_FANG, MoveId.HIGH_HORSEPOWER, MoveId.SHIFT_GEAR],
[SpeciesId.DURALUDON]: [ MoveId.CORE_ENFORCER, MoveId.BODY_PRESS, MoveId.RECOVER, MoveId.TACHYON_CUTTER ], [SpeciesId.DURALUDON]: [MoveId.CORE_ENFORCER, MoveId.BODY_PRESS, MoveId.RECOVER, MoveId.TACHYON_CUTTER],
[SpeciesId.DREEPY]: [ MoveId.SHADOW_BONE, MoveId.POWER_UP_PUNCH, MoveId.FIRE_LASH, MoveId.DIRE_CLAW ], [SpeciesId.DREEPY]: [MoveId.SHADOW_BONE, MoveId.POWER_UP_PUNCH, MoveId.FIRE_LASH, MoveId.DIRE_CLAW],
[SpeciesId.ZACIAN]: [ MoveId.MAGICAL_TORQUE, MoveId.MIGHTY_CLEAVE, MoveId.EARTHQUAKE, MoveId.BITTER_BLADE ], [SpeciesId.ZACIAN]: [MoveId.MAGICAL_TORQUE, MoveId.MIGHTY_CLEAVE, MoveId.EARTHQUAKE, MoveId.BITTER_BLADE],
[SpeciesId.ZAMAZENTA]: [ MoveId.BULK_UP, MoveId.BODY_PRESS, MoveId.POWER_TRIP, MoveId.SLACK_OFF ], [SpeciesId.ZAMAZENTA]: [MoveId.BULK_UP, MoveId.BODY_PRESS, MoveId.POWER_TRIP, MoveId.SLACK_OFF],
[SpeciesId.ETERNATUS]: [ MoveId.BODY_PRESS, MoveId.NASTY_PLOT, MoveId.MALIGNANT_CHAIN, MoveId.DRAGON_ENERGY ], [SpeciesId.ETERNATUS]: [MoveId.BODY_PRESS, MoveId.NASTY_PLOT, MoveId.MALIGNANT_CHAIN, MoveId.DRAGON_ENERGY],
[SpeciesId.KUBFU]: [ MoveId.METEOR_MASH, MoveId.DRAIN_PUNCH, MoveId.JET_PUNCH, MoveId.DRAGON_DANCE ], [SpeciesId.KUBFU]: [MoveId.METEOR_MASH, MoveId.DRAIN_PUNCH, MoveId.JET_PUNCH, MoveId.DRAGON_DANCE],
[SpeciesId.ZARUDE]: [ MoveId.LEAF_BLADE, MoveId.HEADLONG_RUSH, MoveId.WICKED_BLOW, MoveId.VICTORY_DANCE ], [SpeciesId.ZARUDE]: [MoveId.LEAF_BLADE, MoveId.HEADLONG_RUSH, MoveId.WICKED_BLOW, MoveId.VICTORY_DANCE],
[SpeciesId.REGIELEKI]: [ MoveId.NASTY_PLOT, MoveId.ICE_BEAM, MoveId.EARTH_POWER, MoveId.ELECTRO_DRIFT ], [SpeciesId.REGIELEKI]: [MoveId.NASTY_PLOT, MoveId.ICE_BEAM, MoveId.EARTH_POWER, MoveId.ELECTRO_DRIFT],
[SpeciesId.REGIDRAGO]: [ MoveId.SHELL_SIDE_ARM, MoveId.FLAMETHROWER, MoveId.TAKE_HEART, MoveId.DRAGON_DARTS ], [SpeciesId.REGIDRAGO]: [MoveId.SHELL_SIDE_ARM, MoveId.FLAMETHROWER, MoveId.TAKE_HEART, MoveId.DRAGON_DARTS],
[SpeciesId.GLASTRIER]: [ MoveId.SPEED_SWAP, MoveId.SLACK_OFF, MoveId.HIGH_HORSEPOWER, MoveId.GLACIAL_LANCE ], [SpeciesId.GLASTRIER]: [MoveId.SPEED_SWAP, MoveId.SLACK_OFF, MoveId.HIGH_HORSEPOWER, MoveId.GLACIAL_LANCE],
[SpeciesId.SPECTRIER]: [ MoveId.EARTH_POWER, MoveId.MOONLIGHT, MoveId.AURA_SPHERE, MoveId.ASTRAL_BARRAGE ], [SpeciesId.SPECTRIER]: [MoveId.EARTH_POWER, MoveId.MOONLIGHT, MoveId.AURA_SPHERE, MoveId.ASTRAL_BARRAGE],
[SpeciesId.CALYREX]: [ MoveId.SAPPY_SEED, MoveId.RECOVER, MoveId.SECRET_SWORD, MoveId.PHOTON_GEYSER ], [SpeciesId.CALYREX]: [MoveId.SAPPY_SEED, MoveId.RECOVER, MoveId.SECRET_SWORD, MoveId.PHOTON_GEYSER],
[SpeciesId.ENAMORUS]: [ MoveId.AEROBLAST, MoveId.THOUSAND_ARROWS, MoveId.STORED_POWER, MoveId.FLEUR_CANNON ], [SpeciesId.ENAMORUS]: [MoveId.AEROBLAST, MoveId.THOUSAND_ARROWS, MoveId.STORED_POWER, MoveId.FLEUR_CANNON],
[SpeciesId.GALAR_MEOWTH]: [ MoveId.LIQUIDATION, MoveId.HORN_LEECH, MoveId.BULLET_PUNCH, MoveId.BEHEMOTH_BASH ], [SpeciesId.GALAR_MEOWTH]: [MoveId.LIQUIDATION, MoveId.HORN_LEECH, MoveId.BULLET_PUNCH, MoveId.BEHEMOTH_BASH],
[SpeciesId.GALAR_PONYTA]: [ MoveId.MAGICAL_TORQUE, MoveId.EXTREME_SPEED, MoveId.FLARE_BLITZ, MoveId.PHOTON_GEYSER ], [SpeciesId.GALAR_PONYTA]: [MoveId.MAGICAL_TORQUE, MoveId.EXTREME_SPEED, MoveId.FLARE_BLITZ, MoveId.PHOTON_GEYSER],
[SpeciesId.GALAR_SLOWPOKE]: [ MoveId.SHED_TAIL, MoveId.BADDY_BAD, MoveId.MOONBLAST, MoveId.PHOTON_GEYSER ], [SpeciesId.GALAR_SLOWPOKE]: [MoveId.SHED_TAIL, MoveId.BADDY_BAD, MoveId.MOONBLAST, MoveId.PHOTON_GEYSER],
[SpeciesId.GALAR_FARFETCHD]: [ MoveId.ROOST, MoveId.SACRED_SWORD, MoveId.KINGS_SHIELD, MoveId.BEHEMOTH_BLADE ], [SpeciesId.GALAR_FARFETCHD]: [MoveId.ROOST, MoveId.SACRED_SWORD, MoveId.KINGS_SHIELD, MoveId.BEHEMOTH_BLADE],
[SpeciesId.GALAR_ARTICUNO]: [ MoveId.SECRET_SWORD, MoveId.NIGHT_DAZE, MoveId.ICE_BEAM, MoveId.OBLIVION_WING ], [SpeciesId.GALAR_ARTICUNO]: [MoveId.SECRET_SWORD, MoveId.NIGHT_DAZE, MoveId.ICE_BEAM, MoveId.OBLIVION_WING],
[SpeciesId.GALAR_ZAPDOS]: [ MoveId.POISON_JAB, MoveId.FLOATY_FALL, MoveId.ROOST, MoveId.BOLT_BEAK ], [SpeciesId.GALAR_ZAPDOS]: [MoveId.POISON_JAB, MoveId.FLOATY_FALL, MoveId.ROOST, MoveId.BOLT_BEAK],
[SpeciesId.GALAR_MOLTRES]: [ MoveId.ROOST, MoveId.SLUDGE_BOMB, MoveId.FLAMETHROWER, MoveId.OBLIVION_WING ], [SpeciesId.GALAR_MOLTRES]: [MoveId.ROOST, MoveId.SLUDGE_BOMB, MoveId.FLAMETHROWER, MoveId.OBLIVION_WING],
[SpeciesId.GALAR_CORSOLA]: [ MoveId.SHELL_SMASH, MoveId.AURA_SPHERE, MoveId.INFERNAL_PARADE, MoveId.ASTRAL_BARRAGE ], [SpeciesId.GALAR_CORSOLA]: [MoveId.SHELL_SMASH, MoveId.AURA_SPHERE, MoveId.INFERNAL_PARADE, MoveId.ASTRAL_BARRAGE],
[SpeciesId.GALAR_ZIGZAGOON]: [ MoveId.CEASELESS_EDGE, MoveId.FACADE, MoveId.PARTING_SHOT, MoveId.EXTREME_SPEED ], [SpeciesId.GALAR_ZIGZAGOON]: [MoveId.CEASELESS_EDGE, MoveId.FACADE, MoveId.PARTING_SHOT, MoveId.EXTREME_SPEED],
[SpeciesId.GALAR_DARUMAKA]: [ MoveId.ICE_SPINNER, MoveId.ZING_ZAP, MoveId.DRAIN_PUNCH, MoveId.PYRO_BALL ], [SpeciesId.GALAR_DARUMAKA]: [MoveId.ICE_SPINNER, MoveId.ZING_ZAP, MoveId.DRAIN_PUNCH, MoveId.PYRO_BALL],
[SpeciesId.GALAR_YAMASK]: [ MoveId.STRENGTH_SAP, MoveId.DIRE_CLAW, MoveId.THOUSAND_WAVES, MoveId.SPECTRAL_THIEF ], [SpeciesId.GALAR_YAMASK]: [MoveId.STRENGTH_SAP, MoveId.DIRE_CLAW, MoveId.THOUSAND_WAVES, MoveId.SPECTRAL_THIEF],
[SpeciesId.GALAR_STUNFISK]: [ MoveId.SPIKY_SHIELD, MoveId.THOUSAND_ARROWS, MoveId.STRENGTH_SAP, MoveId.DOUBLE_IRON_BASH ], [SpeciesId.GALAR_STUNFISK]: [
[SpeciesId.HISUI_GROWLITHE]: [ MoveId.WAVE_CRASH, MoveId.HEAD_SMASH, MoveId.VOLT_TACKLE, MoveId.DRAGON_DANCE ], MoveId.SPIKY_SHIELD,
[SpeciesId.HISUI_VOLTORB]: [ MoveId.FROST_BREATH, MoveId.NASTY_PLOT, MoveId.APPLE_ACID, MoveId.ELECTRO_DRIFT ], MoveId.THOUSAND_ARROWS,
[SpeciesId.HISUI_QWILFISH]: [ MoveId.CEASELESS_EDGE, MoveId.BANEFUL_BUNKER, MoveId.RECOVER, MoveId.FISHIOUS_REND ], MoveId.STRENGTH_SAP,
[SpeciesId.HISUI_SNEASEL]: [ MoveId.DRAIN_PUNCH, MoveId.KNOCK_OFF, MoveId.PSYCHIC_FANGS, MoveId.TRIPLE_AXEL ], MoveId.DOUBLE_IRON_BASH,
[SpeciesId.HISUI_ZORUA]: [ MoveId.MOONBLAST, MoveId.SECRET_SWORD, MoveId.PARTING_SHOT, MoveId.BLOOD_MOON ], ],
[SpeciesId.HISUI_GROWLITHE]: [MoveId.WAVE_CRASH, MoveId.HEAD_SMASH, MoveId.VOLT_TACKLE, MoveId.DRAGON_DANCE],
[SpeciesId.HISUI_VOLTORB]: [MoveId.FROST_BREATH, MoveId.NASTY_PLOT, MoveId.APPLE_ACID, MoveId.ELECTRO_DRIFT],
[SpeciesId.HISUI_QWILFISH]: [MoveId.CEASELESS_EDGE, MoveId.BANEFUL_BUNKER, MoveId.RECOVER, MoveId.FISHIOUS_REND],
[SpeciesId.HISUI_SNEASEL]: [MoveId.DRAIN_PUNCH, MoveId.KNOCK_OFF, MoveId.PSYCHIC_FANGS, MoveId.TRIPLE_AXEL],
[SpeciesId.HISUI_ZORUA]: [MoveId.MOONBLAST, MoveId.SECRET_SWORD, MoveId.PARTING_SHOT, MoveId.BLOOD_MOON],
[SpeciesId.SPRIGATITO]: [ MoveId.FIRE_LASH, MoveId.TRIPLE_AXEL, MoveId.SUCKER_PUNCH, MoveId.WICKED_BLOW ], [SpeciesId.SPRIGATITO]: [ MoveId.FIRE_LASH, MoveId.TRIPLE_AXEL, MoveId.SUCKER_PUNCH, MoveId.WICKED_BLOW ],
[SpeciesId.FUECOCO]: [ MoveId.ALLURING_VOICE, MoveId.SLACK_OFF, MoveId.OVERDRIVE, MoveId.MOONGEIST_BEAM ], [SpeciesId.FUECOCO]: [ MoveId.ALLURING_VOICE, MoveId.SLACK_OFF, MoveId.OVERDRIVE, MoveId.MOONGEIST_BEAM ],

View File

@ -78,7 +78,7 @@ export enum EvolutionItem {
} }
const tyrogueMoves = [MoveId.LOW_SWEEP, MoveId.MACH_PUNCH, MoveId.RAPID_SPIN] as const; const tyrogueMoves = [MoveId.LOW_SWEEP, MoveId.MACH_PUNCH, MoveId.RAPID_SPIN] as const;
type TyrogueMove = typeof tyrogueMoves[number]; type TyrogueMove = (typeof tyrogueMoves)[number];
/** /**
* Pokemon Evolution tuple type consisting of: * Pokemon Evolution tuple type consisting of:
@ -203,7 +203,10 @@ export class SpeciesEvolutionCondition {
case EvoCondKey.WEATHER: case EvoCondKey.WEATHER:
return cond.weather.includes(globalScene.arena.getWeatherType()); return cond.weather.includes(globalScene.arena.getWeatherType());
case EvoCondKey.TYROGUE: case EvoCondKey.TYROGUE:
return pokemon.getMoveset(true).find(m => (tyrogueMoves as readonly MoveId[]) .includes(m.moveId))?.moveId === cond.move; return (
pokemon.getMoveset(true).find(m => (tyrogueMoves as readonly MoveId[]).includes(m.moveId))?.moveId
=== cond.move
);
case EvoCondKey.NATURE: case EvoCondKey.NATURE:
return cond.nature.includes(pokemon.getNature()); return cond.nature.includes(pokemon.getNature());
case EvoCondKey.RANDOM_FORM: { case EvoCondKey.RANDOM_FORM: {
@ -513,7 +516,13 @@ export const pokemonEvolutions: PokemonEvolutions = {
[SpeciesId.RALTS]: [new SpeciesEvolution(SpeciesId.KIRLIA, 20, null, null)], [SpeciesId.RALTS]: [new SpeciesEvolution(SpeciesId.KIRLIA, 20, null, null)],
[SpeciesId.KIRLIA]: [ [SpeciesId.KIRLIA]: [
new SpeciesEvolution(SpeciesId.GARDEVOIR, 30, null, null), new SpeciesEvolution(SpeciesId.GARDEVOIR, 30, null, null),
new SpeciesEvolution(SpeciesId.GALLADE, 1, EvolutionItem.DAWN_STONE, {key: EvoCondKey.GENDER, gender: Gender.MALE}, SpeciesWildEvolutionDelay.LONG), new SpeciesEvolution(
SpeciesId.GALLADE,
1,
EvolutionItem.DAWN_STONE,
{ key: EvoCondKey.GENDER, gender: Gender.MALE },
SpeciesWildEvolutionDelay.LONG,
),
], ],
[SpeciesId.SURSKIT]: [new SpeciesEvolution(SpeciesId.MASQUERAIN, 22, null, null)], [SpeciesId.SURSKIT]: [new SpeciesEvolution(SpeciesId.MASQUERAIN, 22, null, null)],
[SpeciesId.SHROOMISH]: [new SpeciesEvolution(SpeciesId.BRELOOM, 23, null, null)], [SpeciesId.SHROOMISH]: [new SpeciesEvolution(SpeciesId.BRELOOM, 23, null, null)],
@ -548,7 +557,13 @@ export const pokemonEvolutions: PokemonEvolutions = {
[SpeciesId.DUSKULL]: [new SpeciesEvolution(SpeciesId.DUSCLOPS, 37, null, null)], [SpeciesId.DUSKULL]: [new SpeciesEvolution(SpeciesId.DUSCLOPS, 37, null, null)],
[SpeciesId.SNORUNT]: [ [SpeciesId.SNORUNT]: [
new SpeciesEvolution(SpeciesId.GLALIE, 42, null, null), new SpeciesEvolution(SpeciesId.GLALIE, 42, null, null),
new SpeciesEvolution(SpeciesId.FROSLASS, 1, EvolutionItem.DAWN_STONE, {key: EvoCondKey.GENDER, gender: Gender.FEMALE}, SpeciesWildEvolutionDelay.LONG), new SpeciesEvolution(
SpeciesId.FROSLASS,
1,
EvolutionItem.DAWN_STONE,
{ key: EvoCondKey.GENDER, gender: Gender.FEMALE },
SpeciesWildEvolutionDelay.LONG,
),
], ],
[SpeciesId.SPHEAL]: [new SpeciesEvolution(SpeciesId.SEALEO, 32, null, null)], [SpeciesId.SPHEAL]: [new SpeciesEvolution(SpeciesId.SEALEO, 32, null, null)],
[SpeciesId.SEALEO]: [new SpeciesEvolution(SpeciesId.WALREIN, 44, null, null)], [SpeciesId.SEALEO]: [new SpeciesEvolution(SpeciesId.WALREIN, 44, null, null)],
@ -2039,7 +2054,7 @@ export const pokemonPrevolutions: PokemonPrevolutions = {};
export function initPokemonPrevolutions(): void { export function initPokemonPrevolutions(): void {
// TODO: Why do we have empty strings in our array? // TODO: Why do we have empty strings in our array?
const megaFormKeys = [ SpeciesFormKey.MEGA, "", SpeciesFormKey.MEGA_X, "", SpeciesFormKey.MEGA_Y ]; const megaFormKeys = [SpeciesFormKey.MEGA, "", SpeciesFormKey.MEGA_X, "", SpeciesFormKey.MEGA_Y];
for (const [pk, evolutions] of Object.entries(pokemonEvolutions)) { for (const [pk, evolutions] of Object.entries(pokemonEvolutions)) {
for (const ev of evolutions) { for (const ev of evolutions) {
if (ev.evoFormKey && megaFormKeys.indexOf(ev.evoFormKey) > -1) { if (ev.evoFormKey && megaFormKeys.indexOf(ev.evoFormKey) > -1) {

View File

@ -823,11 +823,11 @@ export class FreshStartChallenge extends Challenge {
// Remove natures except for the default ones // Remove natures except for the default ones
const neutralNaturesAttr = const neutralNaturesAttr =
(1 << (Nature.HARDY + 1)) | (1 << (Nature.HARDY + 1))
(1 << (Nature.DOCILE + 1)) | | (1 << (Nature.DOCILE + 1))
(1 << (Nature.SERIOUS + 1)) | | (1 << (Nature.SERIOUS + 1))
(1 << (Nature.BASHFUL + 1)) | | (1 << (Nature.BASHFUL + 1))
(1 << (Nature.QUIRKY + 1)); | (1 << (Nature.QUIRKY + 1));
dexEntry.natureAttr &= neutralNaturesAttr; dexEntry.natureAttr &= neutralNaturesAttr;
// Cap all ivs at 15 // Cap all ivs at 15

View File

@ -220,7 +220,7 @@ export class MysteryEncounterOptionBuilder implements Partial<IMysteryEncounterO
requirement: EncounterSceneRequirement, requirement: EncounterSceneRequirement,
): this & Required<Pick<IMysteryEncounterOption, "requirements">> { ): this & Required<Pick<IMysteryEncounterOption, "requirements">> {
if (requirement instanceof EncounterPokemonRequirement) { if (requirement instanceof EncounterPokemonRequirement) {
Error("Incorrectly added pokemon requirement as scene requirement."); new Error("Incorrectly added pokemon requirement as scene requirement.");
} }
this.requirements.push(requirement); this.requirements.push(requirement);
@ -265,7 +265,7 @@ export class MysteryEncounterOptionBuilder implements Partial<IMysteryEncounterO
requirement: EncounterPokemonRequirement, requirement: EncounterPokemonRequirement,
): this & Required<Pick<IMysteryEncounterOption, "primaryPokemonRequirements">> { ): this & Required<Pick<IMysteryEncounterOption, "primaryPokemonRequirements">> {
if (requirement instanceof EncounterSceneRequirement) { if (requirement instanceof EncounterSceneRequirement) {
Error("Incorrectly added scene requirement as pokemon requirement."); new Error("Incorrectly added scene requirement as pokemon requirement.");
} }
this.primaryPokemonRequirements.push(requirement); this.primaryPokemonRequirements.push(requirement);
@ -315,7 +315,7 @@ export class MysteryEncounterOptionBuilder implements Partial<IMysteryEncounterO
excludePrimaryFromSecondaryRequirements = true, excludePrimaryFromSecondaryRequirements = true,
): this & Required<Pick<IMysteryEncounterOption, "secondaryPokemonRequirements">> { ): this & Required<Pick<IMysteryEncounterOption, "secondaryPokemonRequirements">> {
if (requirement instanceof EncounterSceneRequirement) { if (requirement instanceof EncounterSceneRequirement) {
Error("Incorrectly added scene requirement as pokemon requirement."); new Error("Incorrectly added scene requirement as pokemon requirement.");
} }
this.secondaryPokemonRequirements.push(requirement); this.secondaryPokemonRequirements.push(requirement);

View File

@ -821,7 +821,7 @@ export class MysteryEncounterBuilder implements Partial<IMysteryEncounter> {
requirement: EncounterSceneRequirement, requirement: EncounterSceneRequirement,
): this & Required<Pick<IMysteryEncounter, "requirements">> { ): this & Required<Pick<IMysteryEncounter, "requirements">> {
if (requirement instanceof EncounterPokemonRequirement) { if (requirement instanceof EncounterPokemonRequirement) {
Error("Incorrectly added pokemon requirement as scene requirement."); new Error("Incorrectly added pokemon requirement as scene requirement.");
} }
this.requirements.push(requirement); this.requirements.push(requirement);
return this; return this;
@ -864,7 +864,7 @@ export class MysteryEncounterBuilder implements Partial<IMysteryEncounter> {
requirement: EncounterPokemonRequirement, requirement: EncounterPokemonRequirement,
): this & Required<Pick<IMysteryEncounter, "primaryPokemonRequirements">> { ): this & Required<Pick<IMysteryEncounter, "primaryPokemonRequirements">> {
if (requirement instanceof EncounterSceneRequirement) { if (requirement instanceof EncounterSceneRequirement) {
Error("Incorrectly added scene requirement as pokemon requirement."); new Error("Incorrectly added scene requirement as pokemon requirement.");
} }
this.primaryPokemonRequirements.push(requirement); this.primaryPokemonRequirements.push(requirement);
@ -917,7 +917,7 @@ export class MysteryEncounterBuilder implements Partial<IMysteryEncounter> {
excludePrimaryFromSecondaryRequirements = false, excludePrimaryFromSecondaryRequirements = false,
): this & Required<Pick<IMysteryEncounter, "secondaryPokemonRequirements">> { ): this & Required<Pick<IMysteryEncounter, "secondaryPokemonRequirements">> {
if (requirement instanceof EncounterSceneRequirement) { if (requirement instanceof EncounterSceneRequirement) {
Error("Incorrectly added scene requirement as pokemon requirement."); new Error("Incorrectly added scene requirement as pokemon requirement.");
} }
this.secondaryPokemonRequirements.push(requirement); this.secondaryPokemonRequirements.push(requirement);

View File

@ -53,8 +53,8 @@ const SEASONAL_WEIGHT_MULTIPLIER = 15;
//#region Common Messages //#region Common Messages
const commonSplashMessages = [ const commonSplashMessages = [
...Array(BATTLES_WON_WEIGHT_MULTIPLIER).fill("battlesWon"), ...new Array(BATTLES_WON_WEIGHT_MULTIPLIER).fill("battlesWon"),
...Array(POKEMON_NAMES_WEIGHT_MULTIPLIER).fill("underratedPokemon"), ...new Array(POKEMON_NAMES_WEIGHT_MULTIPLIER).fill("underratedPokemon"),
"joinTheDiscord", "joinTheDiscord",
"infiniteLevels", "infiniteLevels",
"everythingIsStackable", "everythingIsStackable",
@ -333,7 +333,7 @@ export function getSplashMessages(): string[] {
if (now >= startDate && now <= endDate) { if (now >= startDate && now <= endDate) {
console.log(`Adding ${messages.length} ${name} splash messages (weight: x${SEASONAL_WEIGHT_MULTIPLIER})`); console.log(`Adding ${messages.length} ${name} splash messages (weight: x${SEASONAL_WEIGHT_MULTIPLIER})`);
for (const message of messages) { for (const message of messages) {
const weightedMessage = Array(SEASONAL_WEIGHT_MULTIPLIER).fill(message); const weightedMessage = new Array(SEASONAL_WEIGHT_MULTIPLIER).fill(message);
splashMessages.push(...weightedMessage); splashMessages.push(...weightedMessage);
} }
} }

View File

@ -286,7 +286,7 @@ export function getTypeDamageMultiplierColor(
case 0.5: case 0.5:
return "#FE8E00"; return "#FE8E00";
case 1: case 1:
return undefined; return;
case 2: case 2:
return "#4AA500"; return "#4AA500";
case 4: case 4:
@ -306,7 +306,7 @@ export function getTypeDamageMultiplierColor(
case 0.5: case 0.5:
return "#0093FF"; return "#0093FF";
case 1: case 1:
return undefined; return;
case 2: case 2:
return "#FE8E00"; return "#FE8E00";
case 4: case 4:

View File

@ -315,7 +315,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container {
super(globalScene, x, y); super(globalScene, x, y);
if (!species.isObtainable() && this.isPlayer()) { if (!species.isObtainable() && this.isPlayer()) {
throw `Cannot create a player Pokemon for species "${species.getName(formIndex)}"`; throw new Error(`Cannot create a player Pokemon for species "${species.getName(formIndex)}"`);
} }
this.species = species; this.species = species;
@ -4114,7 +4114,7 @@ export abstract class Pokemon extends Phaser.GameObjects.Container {
isCritical = false, isCritical = false,
ignoreSegments = false, ignoreSegments = false,
ignoreFaintPhase = false, ignoreFaintPhase = false,
source = undefined, source,
}: { }: {
result?: DamageResult; result?: DamageResult;
isCritical?: boolean; isCritical?: boolean;
@ -5100,10 +5100,8 @@ export abstract class Pokemon extends Phaser.GameObjects.Container {
const lastStatus = this.status?.effect; const lastStatus = this.status?.effect;
this.status = null; this.status = null;
this.setFrameRate(10); this.setFrameRate(10);
if (lastStatus === StatusEffect.SLEEP) { if (lastStatus === StatusEffect.SLEEP && this.getTag(BattlerTagType.NIGHTMARE)) {
if (this.getTag(BattlerTagType.NIGHTMARE)) { this.lapseTag(BattlerTagType.NIGHTMARE);
this.lapseTag(BattlerTagType.NIGHTMARE);
}
} }
if (confusion && this.getTag(BattlerTagType.CONFUSED)) { if (confusion && this.getTag(BattlerTagType.CONFUSED)) {
this.lapseTag(BattlerTagType.CONFUSED); this.lapseTag(BattlerTagType.CONFUSED);
@ -5797,9 +5795,8 @@ export class PlayerPokemon extends Pokemon {
if (!dataSource) { if (!dataSource) {
if ( if (
globalScene.gameMode.isDaily || globalScene.gameMode.isDaily // Keldeo is excluded due to crashes involving its signature move and the associated form change
// Keldeo is excluded due to crashes involving its signature move and the associated form change || (Overrides.STARTER_SPECIES_OVERRIDE && Overrides.STARTER_SPECIES_OVERRIDE !== SpeciesId.KELDEO)
(Overrides.STARTER_SPECIES_OVERRIDE && Overrides.STARTER_SPECIES_OVERRIDE !== SpeciesId.KELDEO)
) { ) {
this.generateAndPopulateMoveset(); this.generateAndPopulateMoveset();
} else { } else {

View File

@ -54,8 +54,8 @@ export class Trainer extends Phaser.GameObjects.Container {
) { ) {
super(globalScene, -72, 80); super(globalScene, -72, 80);
this.config = this.config =
trainerConfigOverride ?? trainerConfigOverride
(trainerConfigs.hasOwnProperty(trainerType) ?? (trainerConfigs.hasOwnProperty(trainerType)
? trainerConfigs[trainerType] ? trainerConfigs[trainerType]
: trainerConfigs[TrainerType.ACE_TRAINER]); : trainerConfigs[TrainerType.ACE_TRAINER]);

View File

@ -458,10 +458,9 @@ export class CommandPhase extends FieldPhase {
if (cursor < numBallTypes) { if (cursor < numBallTypes) {
const targetPokemon = globalScene.getEnemyPokemon(false); const targetPokemon = globalScene.getEnemyPokemon(false);
if ( if (
targetPokemon?.isBoss() && targetPokemon?.isBoss()
targetPokemon?.bossSegmentIndex >= 1 && && targetPokemon?.bossSegmentIndex >= 1 // TODO: Decouple this hardcoded exception for wonder guard and just check the target...
// TODO: Decouple this hardcoded exception for wonder guard and just check the target... && !targetPokemon?.hasAbility(AbilityId.WONDER_GUARD, false, true)
!targetPokemon?.hasAbility(AbilityId.WONDER_GUARD, false, true)
) { ) {
// When facing the final boss, it must be weakened unless a Master Ball is used AND no challenges are active. // When facing the final boss, it must be weakened unless a Master Ball is used AND no challenges are active.
// The message is customized for the final boss. // The message is customized for the final boss.

View File

@ -92,7 +92,7 @@ export class MoveEffectPhase extends PokemonPhase {
} }
this.targets = targets; this.targets = targets;
this.hitChecks = Array(this.targets.length).fill([HitCheckResult.PENDING, 0]); this.hitChecks = new Array(this.targets.length).fill([HitCheckResult.PENDING, 0]);
} }
/** /**

View File

@ -244,11 +244,11 @@ export class TitlePhase extends Phase {
regenerateModifierPoolThresholds(party, ModifierPoolType.DAILY_STARTER); regenerateModifierPoolThresholds(party, ModifierPoolType.DAILY_STARTER);
const modifiers: Modifier[] = Array(3) const modifiers: Modifier[] = new Array(3)
.fill(null) .fill(null)
.map(() => modifierTypes.EXP_SHARE().withIdFromFunc(modifierTypes.EXP_SHARE).newModifier()) .map(() => modifierTypes.EXP_SHARE().withIdFromFunc(modifierTypes.EXP_SHARE).newModifier())
.concat( .concat(
Array(3) new Array(3)
.fill(null) .fill(null)
.map(() => modifierTypes.GOLDEN_EXP_CHARM().withIdFromFunc(modifierTypes.GOLDEN_EXP_CHARM).newModifier()), .map(() => modifierTypes.GOLDEN_EXP_CHARM().withIdFromFunc(modifierTypes.GOLDEN_EXP_CHARM).newModifier()),
) )

View File

@ -226,8 +226,8 @@ export class TurnStartPhase extends FieldPhase {
// TODO: This seems somewhat dubious // TODO: This seems somewhat dubious
const move = const move =
pokemon.getMoveset().find(m => m.moveId === queuedMove.move && m.ppUsed < m.getMovePp()) ?? pokemon.getMoveset().find(m => m.moveId === queuedMove.move && m.ppUsed < m.getMovePp())
new PokemonMove(queuedMove.move); ?? new PokemonMove(queuedMove.move);
if (move.getMove().hasAttr("MoveHeaderAttr")) { if (move.getMove().hasAttr("MoveHeaderAttr")) {
globalScene.phaseManager.unshiftNew("MoveHeaderPhase", pokemon, move); globalScene.phaseManager.unshiftNew("MoveHeaderPhase", pokemon, move);

View File

@ -519,9 +519,9 @@ export const achvs = {
"reviver_seed", "reviver_seed",
100, 100,
c => c =>
c instanceof FreshStartChallenge && c instanceof FreshStartChallenge
c.value === 1 && && c.value === 1
!globalScene.gameMode.challenges.some( && !globalScene.gameMode.challenges.some(
c => [Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT].includes(c.id) && c.value > 0, c => [Challenges.INVERSE_BATTLE, Challenges.FLIP_STAT].includes(c.id) && c.value > 0,
), ),
), ),

View File

@ -103,23 +103,23 @@ export class UiInputs {
getActionsKeyUp(): ActionKeys { getActionsKeyUp(): ActionKeys {
const actions: ActionKeys = { const actions: ActionKeys = {
[Button.UP]: () => undefined, [Button.UP]: () => {},
[Button.DOWN]: () => undefined, [Button.DOWN]: () => {},
[Button.LEFT]: () => undefined, [Button.LEFT]: () => {},
[Button.RIGHT]: () => undefined, [Button.RIGHT]: () => {},
[Button.SUBMIT]: () => undefined, [Button.SUBMIT]: () => {},
[Button.ACTION]: () => undefined, [Button.ACTION]: () => {},
[Button.CANCEL]: () => undefined, [Button.CANCEL]: () => {},
[Button.MENU]: () => undefined, [Button.MENU]: () => {},
[Button.STATS]: () => this.buttonStats(false), [Button.STATS]: () => this.buttonStats(false),
[Button.CYCLE_SHINY]: () => undefined, [Button.CYCLE_SHINY]: () => {},
[Button.CYCLE_FORM]: () => undefined, [Button.CYCLE_FORM]: () => {},
[Button.CYCLE_GENDER]: () => undefined, [Button.CYCLE_GENDER]: () => {},
[Button.CYCLE_ABILITY]: () => undefined, [Button.CYCLE_ABILITY]: () => {},
[Button.CYCLE_NATURE]: () => undefined, [Button.CYCLE_NATURE]: () => {},
[Button.CYCLE_TERA]: () => this.buttonInfo(false), [Button.CYCLE_TERA]: () => this.buttonInfo(false),
[Button.SPEED_UP]: () => undefined, [Button.SPEED_UP]: () => {},
[Button.SLOW_DOWN]: () => undefined, [Button.SLOW_DOWN]: () => {},
}; };
return actions; return actions;
} }

View File

@ -70,7 +70,7 @@ export class BaseStatsOverlay extends Phaser.GameObjects.Container implements In
show(values: number[], total: number): boolean { show(values: number[], total: number): boolean {
for (let i = 0; i < 6; i++) { for (let i = 0; i < 6; i++) {
this.statsLabels[i].setText( this.statsLabels[i].setText(
i18next.t(`pokemonInfo:stat.${toCamelCase(shortStats[i])}Shortened`) + ": " + `${values[i]}`, i18next.t(`pokemonInfo:stat.${toCamelCase(shortStats[i])}Shortened`) + `: ${values[i]}`,
); );
// This accounts for base stats up to 200, might not be enough. // This accounts for base stats up to 200, might not be enough.
// TODO: change color based on value. // TODO: change color based on value.

View File

@ -1506,14 +1506,14 @@ export class PokedexPageUiHandler extends MessageUiHandler {
this.biomes.map(b => { this.biomes.map(b => {
options.push({ options.push({
label: label:
i18next.t(`biome:${toCamelCase(BiomeId[b.biome])}`) + i18next.t(`biome:${toCamelCase(BiomeId[b.biome])}`)
" - " + + " - "
i18next.t(`biome:${toCamelCase(BiomePoolTier[b.tier])}`) + + i18next.t(`biome:${toCamelCase(BiomePoolTier[b.tier])}`)
(b.tod.length === 1 && b.tod[0] === -1 + (b.tod.length === 1 && b.tod[0] === -1
? "" ? ""
: " (" + : " ("
b.tod.map(tod => i18next.t(`biome:${toCamelCase(TimeOfDay[tod])}`)).join(", ") + + b.tod.map(tod => i18next.t(`biome:${toCamelCase(TimeOfDay[tod])}`)).join(", ")
")"), + ")"),
handler: () => false, handler: () => false,
}); });
}); });
@ -1527,14 +1527,14 @@ export class PokedexPageUiHandler extends MessageUiHandler {
this.preBiomes.map(b => { this.preBiomes.map(b => {
options.push({ options.push({
label: label:
i18next.t(`biome:${toCamelCase(BiomeId[b.biome])}`) + i18next.t(`biome:${toCamelCase(BiomeId[b.biome])}`)
" - " + + " - "
i18next.t(`biome:${toCamelCase(BiomePoolTier[b.tier])}`) + + i18next.t(`biome:${toCamelCase(BiomePoolTier[b.tier])}`)
(b.tod.length === 1 && b.tod[0] === -1 + (b.tod.length === 1 && b.tod[0] === -1
? "" ? ""
: " (" + : " ("
b.tod.map(tod => i18next.t(`biome:${toCamelCase(TimeOfDay[tod])}`)).join(", ") + + b.tod.map(tod => i18next.t(`biome:${toCamelCase(TimeOfDay[tod])}`)).join(", ")
")"), + ")"),
handler: () => false, handler: () => false,
}); });
}); });

View File

@ -525,7 +525,7 @@ export class EggGachaUiHandler extends MessageUiHandler {
} }
const eggSprite = globalScene.add.sprite(127, 75, "egg", `egg_${eggs[i].getKey()}`).setScale(0.5); const eggSprite = globalScene.add.sprite(127, 75, "egg", `egg_${eggs[i].getKey()}`).setScale(0.5);
gachaContainer.addAt(eggSprite, 2); gachaContainer.addAt(eggSprite, 2);
// biome-ignore lint/nursery/noAwaitInLoop: The point of this loop is to play the animations, one after another // biome-ignore lint/performance/noAwaitInLoops: The point of this loop is to play the animations, one after another
await this.doPullAnim(eggSprite, i).finally(() => gachaContainer.remove(eggSprite, true)); await this.doPullAnim(eggSprite, i).finally(() => gachaContainer.remove(eggSprite, true));
} }

View File

@ -372,12 +372,12 @@ export class FightUiHandler extends UiHandler implements InfoToggle {
*/ */
private getMoveColor(pokemon: Pokemon, pokemonMove: PokemonMove): string | undefined { private getMoveColor(pokemon: Pokemon, pokemonMove: PokemonMove): string | undefined {
if (!globalScene.typeHints) { if (!globalScene.typeHints) {
return undefined; return;
} }
const opponents = pokemon.getOpponents(); const opponents = pokemon.getOpponents();
if (opponents.length <= 0) { if (opponents.length <= 0) {
return undefined; return;
} }
const moveColors = opponents const moveColors = opponents
@ -394,7 +394,7 @@ export class FightUiHandler extends UiHandler implements InfoToggle {
.sort((a, b) => b - a) .sort((a, b) => b - a)
.map(effectiveness => { .map(effectiveness => {
if (pokemonMove.getMove().category === MoveCategory.STATUS && effectiveness !== 0) { if (pokemonMove.getMove().category === MoveCategory.STATUS && effectiveness !== 0) {
return undefined; return;
} }
return getTypeDamageMultiplierColor(effectiveness ?? 0, "offense"); return getTypeDamageMultiplierColor(effectiveness ?? 0, "offense");
}); });

View File

@ -595,9 +595,9 @@ export class PartyUiHandler extends MessageUiHandler {
matchingModifiers.push( matchingModifiers.push(
globalScene.findModifier( globalScene.findModifier(
m => m =>
m.is("PokemonHeldItemModifier") && m.is("PokemonHeldItemModifier")
m.pokemonId === newPokemon.id && && m.pokemonId === newPokemon.id
m.matchType(allItems[this.transferOptionCursor]), && m.matchType(allItems[this.transferOptionCursor]),
) as PokemonHeldItemModifier | undefined, ) as PokemonHeldItemModifier | undefined,
); );
} }
@ -860,9 +860,9 @@ export class PartyUiHandler extends MessageUiHandler {
// This is only relevant for PartyUiMode.CHECK // This is only relevant for PartyUiMode.CHECK
// TODO: This risks hitting the other options (.MOVE_i and ALL) so does it? Do we need an extra check? // TODO: This risks hitting the other options (.MOVE_i and ALL) so does it? Do we need an extra check?
if ( if (
option >= PartyOption.FORM_CHANGE_ITEM && option >= PartyOption.FORM_CHANGE_ITEM
globalScene.phaseManager.getCurrentPhase().is("SelectModifierPhase") && && globalScene.phaseManager.getCurrentPhase().is("SelectModifierPhase")
this.partyUiMode === PartyUiMode.CHECK && this.partyUiMode === PartyUiMode.CHECK
) { ) {
const formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon); const formChangeItemModifiers = this.getFormChangeItemsModifiers(pokemon);
const modifier = formChangeItemModifiers[option - PartyOption.FORM_CHANGE_ITEM]; const modifier = formChangeItemModifiers[option - PartyOption.FORM_CHANGE_ITEM];
@ -912,8 +912,8 @@ export class PartyUiHandler extends MessageUiHandler {
// This is used when switching out using the Pokemon command (possibly holding a Baton held item). In this case there is no callback. // This is used when switching out using the Pokemon command (possibly holding a Baton held item). In this case there is no callback.
if ( if (
(option === PartyOption.PASS_BATON || option === PartyOption.SEND_OUT) && (option === PartyOption.PASS_BATON || option === PartyOption.SEND_OUT)
this.partyUiMode === PartyUiMode.SWITCH && this.partyUiMode === PartyUiMode.SWITCH
) { ) {
this.clearOptions(); this.clearOptions();
(globalScene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand( (globalScene.phaseManager.getCurrentPhase() as CommandPhase).handleCommand(
@ -935,8 +935,8 @@ export class PartyUiHandler extends MessageUiHandler {
PartyOption.MOVE_3, PartyOption.MOVE_3,
PartyOption.MOVE_4, PartyOption.MOVE_4,
PartyOption.SELECT, PartyOption.SELECT,
].includes(option) && ].includes(option)
this.selectCallback && this.selectCallback
) { ) {
this.clearOptions(); this.clearOptions();
const selectCallback = this.selectCallback; const selectCallback = this.selectCallback;
@ -1042,15 +1042,15 @@ export class PartyUiHandler extends MessageUiHandler {
const ui = this.getUi(); const ui = this.getUi();
if (this.cursor < 6) { if (this.cursor < 6) {
if ( if (
(this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER && !this.transferMode) || (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER && !this.transferMode)
this.partyUiMode === PartyUiMode.DISCARD || this.partyUiMode === PartyUiMode.DISCARD
) { ) {
/** Initialize item quantities for the selected Pokemon */ /** Initialize item quantities for the selected Pokemon */
const itemModifiers = globalScene.findModifiers( const itemModifiers = globalScene.findModifiers(
m => m =>
m.is("PokemonHeldItemModifier") && m.is("PokemonHeldItemModifier")
m.isTransferable && && m.isTransferable
m.pokemonId === globalScene.getPlayerParty()[this.cursor].id, && m.pokemonId === globalScene.getPlayerParty()[this.cursor].id,
) as PokemonHeldItemModifier[]; ) as PokemonHeldItemModifier[];
this.transferQuantities = itemModifiers.map(item => item.getStackCount()); this.transferQuantities = itemModifiers.map(item => item.getStackCount());
this.transferQuantitiesMax = itemModifiers.map(item => item.getStackCount()); this.transferQuantitiesMax = itemModifiers.map(item => item.getStackCount());
@ -1092,8 +1092,8 @@ export class PartyUiHandler extends MessageUiHandler {
private processPartyCancelInput(): boolean { private processPartyCancelInput(): boolean {
const ui = this.getUi(); const ui = this.getUi();
if ( if (
(this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER || this.partyUiMode === PartyUiMode.SPLICE) && (this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER || this.partyUiMode === PartyUiMode.SPLICE)
this.transferMode && this.transferMode
) { ) {
this.clearTransfer(); this.clearTransfer();
ui.playSelect(); ui.playSelect();
@ -1366,8 +1366,8 @@ export class PartyUiHandler extends MessageUiHandler {
private allowBatonModifierSwitch(): boolean { private allowBatonModifierSwitch(): boolean {
return !!( return !!(
this.partyUiMode !== PartyUiMode.FAINT_SWITCH && this.partyUiMode !== PartyUiMode.FAINT_SWITCH
globalScene.findModifier( && globalScene.findModifier(
m => m.is("SwitchEffectTransferModifier") && m.pokemonId === globalScene.getPlayerField()[this.fieldIndex].id, m => m.is("SwitchEffectTransferModifier") && m.pokemonId === globalScene.getPlayerField()[this.fieldIndex].id,
) )
); );
@ -1378,9 +1378,9 @@ export class PartyUiHandler extends MessageUiHandler {
private isBatonPassMove(): boolean { private isBatonPassMove(): boolean {
const lastMove: TurnMove | undefined = globalScene.getPlayerField()[this.fieldIndex].getLastXMoves()[0]; const lastMove: TurnMove | undefined = globalScene.getPlayerField()[this.fieldIndex].getLastXMoves()[0];
return ( return (
this.partyUiMode === PartyUiMode.FAINT_SWITCH && this.partyUiMode === PartyUiMode.FAINT_SWITCH
lastMove?.result === MoveResult.SUCCESS && && lastMove?.result === MoveResult.SUCCESS
allMoves[lastMove.move].getAttrs("ForceSwitchOutAttr")[0]?.isBatonPass() && allMoves[lastMove.move].getAttrs("ForceSwitchOutAttr")[0]?.isBatonPass()
); );
} }
@ -1426,8 +1426,10 @@ export class PartyUiHandler extends MessageUiHandler {
this.options.push(PartyOption.RENAME); this.options.push(PartyOption.RENAME);
if ( if (
pokemonEvolutions.hasOwnProperty(pokemon.species.speciesId) || pokemonEvolutions.hasOwnProperty(pokemon.species.speciesId)
(pokemon.isFusion() && pokemon.fusionSpecies && pokemonEvolutions.hasOwnProperty(pokemon.fusionSpecies.speciesId)) || (pokemon.isFusion()
&& pokemon.fusionSpecies
&& pokemonEvolutions.hasOwnProperty(pokemon.fusionSpecies.speciesId))
) { ) {
this.options.push(PartyOption.UNPAUSE_EVOLUTION); this.options.push(PartyOption.UNPAUSE_EVOLUTION);
} }
@ -1621,10 +1623,10 @@ export class PartyUiHandler extends MessageUiHandler {
} else if (option === PartyOption.SCROLL_DOWN) { } else if (option === PartyOption.SCROLL_DOWN) {
optionName = "↓"; optionName = "↓";
} else if ( } else if (
(this.partyUiMode !== PartyUiMode.REMEMBER_MOVE_MODIFIER && (this.partyUiMode !== PartyUiMode.REMEMBER_MOVE_MODIFIER
(this.partyUiMode !== PartyUiMode.MODIFIER_TRANSFER || this.transferMode) && && (this.partyUiMode !== PartyUiMode.MODIFIER_TRANSFER || this.transferMode)
this.partyUiMode !== PartyUiMode.DISCARD) || && this.partyUiMode !== PartyUiMode.DISCARD)
option === PartyOption.CANCEL || option === PartyOption.CANCEL
) { ) {
switch (option) { switch (option) {
case PartyOption.MOVE_1: case PartyOption.MOVE_1:
@ -1686,11 +1688,11 @@ export class PartyUiHandler extends MessageUiHandler {
const itemModifiers = this.getItemModifiers(pokemon); const itemModifiers = this.getItemModifiers(pokemon);
const itemModifier = itemModifiers[option]; const itemModifier = itemModifiers[option];
if ( if (
this.isItemManageMode() && this.isItemManageMode()
this.transferQuantitiesMax[option] > 1 && && this.transferQuantitiesMax[option] > 1
!this.transferMode && && !this.transferMode
itemModifier !== undefined && && itemModifier !== undefined
itemModifier.type.name === optionName && itemModifier.type.name === optionName
) { ) {
let amountText = ` (${this.transferQuantities[option]})`; let amountText = ` (${this.transferQuantities[option]})`;
@ -1832,9 +1834,9 @@ export class PartyUiHandler extends MessageUiHandler {
getOptionsCursorWithScroll(): number { getOptionsCursorWithScroll(): number {
return ( return (
this.optionsCursor + this.optionsCursor
this.optionsScrollCursor + + this.optionsScrollCursor
(this.options && this.options[0] === PartyOption.SCROLL_UP ? -1 : 0) + (this.options && this.options[0] === PartyOption.SCROLL_UP ? -1 : 0)
); );
} }

View File

@ -689,25 +689,25 @@ export class RunInfoUiHandler extends UiHandler {
*/ */
private challengeParser(): string[] { private challengeParser(): string[] {
const rules: string[] = []; const rules: string[] = [];
for (const challenge of this.runInfo.challenges) { for (const chal of this.runInfo.challenges) {
if (challenge.value === 0) { if (chal.value === 0) {
continue; continue;
} }
switch (challenge.id) { switch (chal.id) {
case Challenges.SINGLE_GENERATION: case Challenges.SINGLE_GENERATION:
rules.push(i18next.t(`runHistory:challengeMonoGen${challenge.value}`)); rules.push(i18next.t(`runHistory:challengeMonoGen${chal.value}`));
break; break;
case Challenges.SINGLE_TYPE: { case Challenges.SINGLE_TYPE: {
const typeRule = PokemonType[challenge.value - 1]; const typeRule = PokemonType[chal.value - 1];
const typeTextColor = `[color=${TypeColor[typeRule]}]`; const typeTextColor = `[color=${TypeColor[typeRule]}]`;
const typeShadowColor = `[shadow=${TypeShadow[typeRule]}]`; const typeShadowColor = `[shadow=${TypeShadow[typeRule]}]`;
const typeText = const typeText =
typeTextColor + typeTextColor
typeShadowColor + + typeShadowColor
i18next.t(`pokemonInfo:type.${toCamelCase(typeRule)}`)! + + i18next.t(`pokemonInfo:type.${toCamelCase(typeRule)}`)!
"[/color]" + + "[/color]"
"[/shadow]"; + "[/shadow]";
rules.push(typeText); rules.push(typeText);
break; break;
} }
@ -715,7 +715,7 @@ export class RunInfoUiHandler extends UiHandler {
rules.push(i18next.t("challenges:inverseBattle.shortName")); rules.push(i18next.t("challenges:inverseBattle.shortName"));
break; break;
default: { default: {
const localizationKey = toCamelCase(Challenges[challenge.id]); const localizationKey = toCamelCase(Challenges[chal.id]);
rules.push(i18next.t(`challenges:${localizationKey}.name`)); rules.push(i18next.t(`challenges:${localizationKey}.name`));
break; break;
} }

View File

@ -4,7 +4,7 @@ import { CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER } from "#balance/starters";
/** Mock TimedEventManager so that ongoing events don't impact tests */ /** Mock TimedEventManager so that ongoing events don't impact tests */
export class MockTimedEventManager extends TimedEventManager { export class MockTimedEventManager extends TimedEventManager {
override activeEvent() { override activeEvent() {
return undefined; return;
} }
override isEventActive(): boolean { override isEventActive(): boolean {
return false; return false;

View File

@ -395,7 +395,8 @@ export class PhaseInterceptor {
&& currentPhase === actionForNextPrompt.phaseTarget && currentPhase === actionForNextPrompt.phaseTarget
&& currentHandler.active && currentHandler.active
&& (!actionForNextPrompt.awaitingActionInput && (!actionForNextPrompt.awaitingActionInput
|| (actionForNextPrompt.awaitingActionInput && (currentHandler as AwaitableUiHandler)["awaitingActionInput"])) || (actionForNextPrompt.awaitingActionInput
&& (currentHandler as AwaitableUiHandler)["awaitingActionInput"]))
) { ) {
const prompt = this.prompts.shift(); const prompt = this.prompts.shift();
if (prompt?.callback) { if (prompt?.callback) {

View File

@ -70,7 +70,9 @@ describe("UI - Transfer Items", () => {
handler.optionsContainer.list.some(option => (option as BBCodeText).text?.includes("Apicot Berry (2)")), handler.optionsContainer.list.some(option => (option as BBCodeText).text?.includes("Apicot Berry (2)")),
).toBe(true); ).toBe(true);
expect( expect(
handler.optionsContainer.list.some(option => RegExp(/Lum Berry\[color.*(2)/).exec((option as BBCodeText).text)), handler.optionsContainer.list.some(option =>
new RegExp(/Lum Berry\[color.*(2)/).exec((option as BBCodeText).text),
),
).toBe(true); ).toBe(true);
}); });