diff --git a/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts b/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts index 5b2805f9310..ac3d4def654 100644 --- a/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts +++ b/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts @@ -63,12 +63,12 @@ export const ATrainersTestEncounter: MysteryEncounter = MysteryEncounterBuilder. break; case 3: trainerType = TrainerType.MIRA; - spriteKeys = getSpriteKeysFromSpecies(SpeciesId.ALAKAZAM, false, 1); + spriteKeys = getSpriteKeysFromSpecies(SpeciesId.ALAKAZAM); trainerNameKey = "mira"; break; case 4: trainerType = TrainerType.RILEY; - spriteKeys = getSpriteKeysFromSpecies(SpeciesId.LUCARIO, false, 1); + spriteKeys = getSpriteKeysFromSpecies(SpeciesId.LUCARIO); trainerNameKey = "riley"; break; default: @@ -164,8 +164,8 @@ export const ATrainersTestEncounter: MysteryEncounter = MysteryEncounterBuilder. encounter.setDialogueToken("eggType", i18next.t(`${namespace}:eggTypes.epic`)); setEncounterRewards( { - guaranteedModifierTypeFuncs: [modifierTypes.SACRED_ASH], - guaranteedModifierTiers: [ModifierTier.ROGUE, ModifierTier.ULTRA], + guaranteedModifierTypeFuncs: [modifierTypes.RELIC_GOLD], + guaranteedModifierTiers: [ModifierTier.ROGUE, ModifierTier.ROGUE], fillRemaining: true, }, [eggOptions], diff --git a/src/data/mystery-encounters/encounters/dark-deal-encounter.ts b/src/data/mystery-encounters/encounters/dark-deal-encounter.ts index 29517ac2531..d90e207cc9a 100644 --- a/src/data/mystery-encounters/encounters/dark-deal-encounter.ts +++ b/src/data/mystery-encounters/encounters/dark-deal-encounter.ts @@ -23,12 +23,8 @@ const namespace = "mysteryEncounters/darkDeal"; /** Exclude Ultra Beasts (inludes Cosmog/Solgaleo/Lunala/Necrozma), Paradox (includes Miraidon/Koraidon), Eternatus, and Mythicals */ const excludedBosses = [ - SpeciesId.NECROZMA, - SpeciesId.COSMOG, - SpeciesId.COSMOEM, - SpeciesId.SOLGALEO, - SpeciesId.LUNALA, SpeciesId.ETERNATUS, + /** UBs */ SpeciesId.NIHILEGO, SpeciesId.BUZZWOLE, SpeciesId.PHEROMOSA, @@ -40,6 +36,12 @@ const excludedBosses = [ SpeciesId.NAGANADEL, SpeciesId.STAKATAKA, SpeciesId.BLACEPHALON, + SpeciesId.COSMOG, + SpeciesId.COSMOEM, + SpeciesId.SOLGALEO, + SpeciesId.LUNALA, + SpeciesId.NECROZMA, + /** Paradox */ SpeciesId.GREAT_TUSK, SpeciesId.SCREAM_TAIL, SpeciesId.BRUTE_BONNET, @@ -47,10 +49,10 @@ const excludedBosses = [ SpeciesId.SLITHER_WING, SpeciesId.SANDY_SHOCKS, SpeciesId.ROARING_MOON, - SpeciesId.KORAIDON, SpeciesId.WALKING_WAKE, SpeciesId.GOUGING_FIRE, SpeciesId.RAGING_BOLT, + SpeciesId.KORAIDON, SpeciesId.IRON_TREADS, SpeciesId.IRON_BUNDLE, SpeciesId.IRON_HANDS, @@ -58,22 +60,23 @@ const excludedBosses = [ SpeciesId.IRON_MOTH, SpeciesId.IRON_THORNS, SpeciesId.IRON_VALIANT, - SpeciesId.MIRAIDON, SpeciesId.IRON_LEAVES, SpeciesId.IRON_BOULDER, SpeciesId.IRON_CROWN, + SpeciesId.MIRAIDON, + /** Mythical */ SpeciesId.MEW, SpeciesId.CELEBI, - SpeciesId.DEOXYS, SpeciesId.JIRACHI, - SpeciesId.DARKRAI, + SpeciesId.DEOXYS, SpeciesId.PHIONE, SpeciesId.MANAPHY, - SpeciesId.ARCEUS, + SpeciesId.DARKRAI, SpeciesId.SHAYMIN, + SpeciesId.ARCEUS, SpeciesId.VICTINI, - SpeciesId.MELOETTA, SpeciesId.KELDEO, + SpeciesId.MELOETTA, SpeciesId.GENESECT, SpeciesId.DIANCIE, SpeciesId.HOOPA, @@ -81,9 +84,9 @@ const excludedBosses = [ SpeciesId.MAGEARNA, SpeciesId.MARSHADOW, SpeciesId.ZERAORA, - SpeciesId.ZARUDE, SpeciesId.MELTAN, SpeciesId.MELMETAL, + SpeciesId.ZARUDE, SpeciesId.PECHARUNT, ]; diff --git a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts index 235bd322ef8..1f00bdeba74 100644 --- a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts @@ -52,37 +52,6 @@ class BreederSpeciesEvolution { } const POOL_1_POKEMON: (SpeciesId | BreederSpeciesEvolution)[][] = [ - [SpeciesId.MUNCHLAX, new BreederSpeciesEvolution(SpeciesId.SNORLAX, SECOND_STAGE_EVOLUTION_WAVE)], - [ - SpeciesId.HAPPINY, - new BreederSpeciesEvolution(SpeciesId.CHANSEY, FIRST_STAGE_EVOLUTION_WAVE), - new BreederSpeciesEvolution(SpeciesId.BLISSEY, FINAL_STAGE_EVOLUTION_WAVE), - ], - [ - SpeciesId.MAGBY, - new BreederSpeciesEvolution(SpeciesId.MAGMAR, FIRST_STAGE_EVOLUTION_WAVE), - new BreederSpeciesEvolution(SpeciesId.MAGMORTAR, FINAL_STAGE_EVOLUTION_WAVE), - ], - [ - SpeciesId.ELEKID, - new BreederSpeciesEvolution(SpeciesId.ELECTABUZZ, FIRST_STAGE_EVOLUTION_WAVE), - new BreederSpeciesEvolution(SpeciesId.ELECTIVIRE, FINAL_STAGE_EVOLUTION_WAVE), - ], - [SpeciesId.RIOLU, new BreederSpeciesEvolution(SpeciesId.LUCARIO, SECOND_STAGE_EVOLUTION_WAVE)], - [ - SpeciesId.BUDEW, - new BreederSpeciesEvolution(SpeciesId.ROSELIA, FIRST_STAGE_EVOLUTION_WAVE), - new BreederSpeciesEvolution(SpeciesId.ROSERADE, FINAL_STAGE_EVOLUTION_WAVE), - ], - [SpeciesId.TOXEL, new BreederSpeciesEvolution(SpeciesId.TOXTRICITY, SECOND_STAGE_EVOLUTION_WAVE)], - [ - SpeciesId.MIME_JR, - new BreederSpeciesEvolution(SpeciesId.GALAR_MR_MIME, FIRST_STAGE_EVOLUTION_WAVE), - new BreederSpeciesEvolution(SpeciesId.MR_RIME, FINAL_STAGE_EVOLUTION_WAVE), - ], -]; - -const POOL_2_POKEMON: (SpeciesId | BreederSpeciesEvolution)[][] = [ [ SpeciesId.PICHU, new BreederSpeciesEvolution(SpeciesId.PIKACHU, FIRST_STAGE_EVOLUTION_WAVE), @@ -93,24 +62,103 @@ const POOL_2_POKEMON: (SpeciesId | BreederSpeciesEvolution)[][] = [ new BreederSpeciesEvolution(SpeciesId.PIKACHU, FIRST_STAGE_EVOLUTION_WAVE), new BreederSpeciesEvolution(SpeciesId.ALOLA_RAICHU, FINAL_STAGE_EVOLUTION_WAVE), ], - [SpeciesId.SMOOCHUM, new BreederSpeciesEvolution(SpeciesId.JYNX, SECOND_STAGE_EVOLUTION_WAVE)], - [SpeciesId.TYROGUE, new BreederSpeciesEvolution(SpeciesId.HITMONLEE, SECOND_STAGE_EVOLUTION_WAVE)], - [SpeciesId.TYROGUE, new BreederSpeciesEvolution(SpeciesId.HITMONCHAN, SECOND_STAGE_EVOLUTION_WAVE)], - [SpeciesId.TYROGUE, new BreederSpeciesEvolution(SpeciesId.HITMONTOP, SECOND_STAGE_EVOLUTION_WAVE)], [ SpeciesId.IGGLYBUFF, new BreederSpeciesEvolution(SpeciesId.JIGGLYPUFF, FIRST_STAGE_EVOLUTION_WAVE), new BreederSpeciesEvolution(SpeciesId.WIGGLYTUFF, FINAL_STAGE_EVOLUTION_WAVE), ], + [ + SpeciesId.TOGEPI, + new BreederSpeciesEvolution(SpeciesId.TOGETIC, SECOND_STAGE_EVOLUTION_WAVE), + new BreederSpeciesEvolution(SpeciesId.TOGEKISS, FINAL_STAGE_EVOLUTION_WAVE), + ], + [ + SpeciesId.TYROGUE, + new BreederSpeciesEvolution(SpeciesId.HITMONLEE, SECOND_STAGE_EVOLUTION_WAVE) + ], + [ + SpeciesId.TYROGUE, + new BreederSpeciesEvolution(SpeciesId.HITMONCHAN, SECOND_STAGE_EVOLUTION_WAVE) + ], + [ + SpeciesId.TYROGUE, + new BreederSpeciesEvolution(SpeciesId.HITMONTOP, SECOND_STAGE_EVOLUTION_WAVE) + ], + [ + SpeciesId.SMOOCHUM, + new BreederSpeciesEvolution(SpeciesId.JYNX, SECOND_STAGE_EVOLUTION_WAVE) + ], [ SpeciesId.AZURILL, new BreederSpeciesEvolution(SpeciesId.MARILL, FIRST_STAGE_EVOLUTION_WAVE), new BreederSpeciesEvolution(SpeciesId.AZUMARILL, FINAL_STAGE_EVOLUTION_WAVE), ], - [SpeciesId.WYNAUT, new BreederSpeciesEvolution(SpeciesId.WOBBUFFET, SECOND_STAGE_EVOLUTION_WAVE)], - [SpeciesId.CHINGLING, new BreederSpeciesEvolution(SpeciesId.CHIMECHO, SECOND_STAGE_EVOLUTION_WAVE)], - [SpeciesId.BONSLY, new BreederSpeciesEvolution(SpeciesId.SUDOWOODO, SECOND_STAGE_EVOLUTION_WAVE)], - [SpeciesId.MANTYKE, new BreederSpeciesEvolution(SpeciesId.MANTINE, SECOND_STAGE_EVOLUTION_WAVE)], + [ + SpeciesId.BUDEW, + new BreederSpeciesEvolution(SpeciesId.ROSELIA, FIRST_STAGE_EVOLUTION_WAVE), + new BreederSpeciesEvolution(SpeciesId.ROSERADE, FINAL_STAGE_EVOLUTION_WAVE), + ], + [ + SpeciesId.CHINGLING, + new BreederSpeciesEvolution(SpeciesId.CHIMECHO, SECOND_STAGE_EVOLUTION_WAVE) + ], + [ + SpeciesId.BONSLY, + new BreederSpeciesEvolution(SpeciesId.SUDOWOODO, SECOND_STAGE_EVOLUTION_WAVE) + ], + [ + SpeciesId.MIME_JR, + new BreederSpeciesEvolution(SpeciesId.MR_MIME, SECOND_STAGE_EVOLUTION_WAVE), + ], + [ + SpeciesId.MIME_JR, + new BreederSpeciesEvolution(SpeciesId.GALAR_MR_MIME, SECOND_STAGE_EVOLUTION_WAVE), + new BreederSpeciesEvolution(SpeciesId.MR_RIME, FINAL_STAGE_EVOLUTION_WAVE), + ], + [ + SpeciesId.HAPPINY, + new BreederSpeciesEvolution(SpeciesId.CHANSEY, FIRST_STAGE_EVOLUTION_WAVE), + new BreederSpeciesEvolution(SpeciesId.BLISSEY, FINAL_STAGE_EVOLUTION_WAVE), + ], + [ + SpeciesId.MANTYKE, + new BreederSpeciesEvolution(SpeciesId.MANTINE, SECOND_STAGE_EVOLUTION_WAVE) + ], + [ + SpeciesId.TOXEL, + new BreederSpeciesEvolution(SpeciesId.TOXTRICITY, SECOND_STAGE_EVOLUTION_WAVE) + ], +]; + +const POOL_2_POKEMON: (SpeciesId | BreederSpeciesEvolution)[][] = [ + [ + SpeciesId.DITTO + ], + [ + SpeciesId.ELEKID, + new BreederSpeciesEvolution(SpeciesId.ELECTABUZZ, FIRST_STAGE_EVOLUTION_WAVE), + new BreederSpeciesEvolution(SpeciesId.ELECTIVIRE, FINAL_STAGE_EVOLUTION_WAVE), + ], + [ + SpeciesId.MAGBY, + new BreederSpeciesEvolution(SpeciesId.MAGMAR, FIRST_STAGE_EVOLUTION_WAVE), + new BreederSpeciesEvolution(SpeciesId.MAGMORTAR, FINAL_STAGE_EVOLUTION_WAVE), + ], + [ + SpeciesId.WYNAUT, + new BreederSpeciesEvolution(SpeciesId.WOBBUFFET, SECOND_STAGE_EVOLUTION_WAVE) + ], + [ + SpeciesId.MUNCHLAX, + new BreederSpeciesEvolution(SpeciesId.SNORLAX, SECOND_STAGE_EVOLUTION_WAVE) + ], + [ + SpeciesId.RIOLU, + new BreederSpeciesEvolution(SpeciesId.LUCARIO, SECOND_STAGE_EVOLUTION_WAVE) + ], + [ + SpeciesId.AUDINO + ], ]; /** @@ -502,7 +550,7 @@ function getPartyConfig(): EnemyPartyConfig { shiny: true, variant: 1, nature: Nature.MODEST, - moveSet: [MoveId.MOONBLAST, MoveId.MYSTICAL_FIRE, MoveId.ICE_BEAM, MoveId.THUNDERBOLT], + moveSet: [MoveId.DAZZLING_GLEAM, MoveId.MYSTICAL_FIRE, MoveId.ICE_BEAM, MoveId.THUNDERBOLT], // Make this one have an item gimmick when we have more items/finish implementations ivs: [31, 31, 31, 31, 31, 31], }, { @@ -515,7 +563,7 @@ function getPartyConfig(): EnemyPartyConfig { shiny: true, variant: 2, nature: Nature.BOLD, - moveSet: [MoveId.TRI_ATTACK, MoveId.STORED_POWER, MoveId.TAKE_HEART, MoveId.MOONLIGHT], + moveSet: [MoveId.TRI_ATTACK, MoveId.STORED_POWER, MoveId.CALM_MIND, MoveId.MOONLIGHT], ivs: [31, 31, 31, 31, 31, 31], }, ); diff --git a/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts b/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts index 452a9a8bb4b..74a36a280d3 100644 --- a/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts +++ b/src/data/mystery-encounters/encounters/trash-to-treasure-encounter.ts @@ -13,8 +13,9 @@ import { HitHealModifier, PokemonHeldItemModifier, TurnHealModifier } from "#mod import type { PokemonHeldItemModifierType } from "#modifiers/modifier-type"; import { PokemonMove } from "#moves/pokemon-move"; import { showEncounterText } from "#mystery-encounters/encounter-dialogue-utils"; -import type { EnemyPartyConfig, EnemyPokemonConfig } from "#mystery-encounters/encounter-phase-utils"; import { + type EnemyPartyConfig, + type EnemyPokemonConfig, generateModifierType, initBattleWithEnemyConfig, leaveEncounterWithoutBattle, @@ -23,8 +24,7 @@ import { transitionMysteryEncounterIntroVisuals, } from "#mystery-encounters/encounter-phase-utils"; import { applyModifierTypeToPlayerPokemon } from "#mystery-encounters/encounter-pokemon-utils"; -import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; -import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; +import { type MysteryEncounter, MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; import i18next from "#plugins/i18n"; import { randSeedInt } from "#utils/common"; @@ -200,7 +200,8 @@ export const TrashToTreasureEncounter: MysteryEncounter = MysteryEncounterBuilde const encounter = globalScene.currentBattle.mysteryEncounter!; setEncounterRewards({ - guaranteedModifierTiers: [ModifierTier.ROGUE, ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.GREAT], + guaranteedModifierTypeFuncs: [modifierTypes.LEFTOVERS], + guaranteedModifierTiers: [ModifierTier.ROGUE, ModifierTier.ULTRA, ModifierTier.GREAT], fillRemaining: true, }); encounter.startOfBattleEffects.push( diff --git a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts index 1164d2ca7ca..b4a2ba4abd5 100644 --- a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts +++ b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts @@ -47,6 +47,7 @@ const namespace = "mysteryEncounters/weirdDream"; /** Exclude Ultra Beasts, Paradox, Eternatus, and all legendary/mythical/trio pokemon that are below 570 BST */ const EXCLUDED_TRANSFORMATION_SPECIES = [ + SpeciesId.ARCEUS, SpeciesId.ETERNATUS, /** UBs */ SpeciesId.NIHILEGO, @@ -82,20 +83,19 @@ const EXCLUDED_TRANSFORMATION_SPECIES = [ SpeciesId.IRON_BOULDER, SpeciesId.IRON_CROWN, /** These are banned so they don't appear in the < 570 BST pool */ + SpeciesId.PHIONE, + SpeciesId.TYPE_NULL, SpeciesId.COSMOG, + SpeciesId.COSMOEM, SpeciesId.MELTAN, SpeciesId.KUBFU, - SpeciesId.COSMOEM, - SpeciesId.POIPOLE, - SpeciesId.TERAPAGOS, - SpeciesId.TYPE_NULL, - SpeciesId.CALYREX, - SpeciesId.NAGANADEL, SpeciesId.URSHIFU, + SpeciesId.CALYREX, SpeciesId.OGERPON, SpeciesId.OKIDOGI, SpeciesId.MUNKIDORI, SpeciesId.FEZANDIPITI, + SpeciesId.TERAPAGOS, ]; const SUPER_LEGENDARY_BST_THRESHOLD = 600; @@ -226,6 +226,7 @@ export const WeirdDreamEncounter: MysteryEncounter = MysteryEncounterBuilder.wit modifierTypes.MINT, modifierTypes.MINT, modifierTypes.MINT, + modifierTypes.MINT, ], fillRemaining: false, }); diff --git a/test/mystery-encounter/encounters/weird-dream-encounter.test.ts b/test/mystery-encounter/encounters/weird-dream-encounter.test.ts index e9fcc9797d1..ed0d612e967 100644 --- a/test/mystery-encounter/encounters/weird-dream-encounter.test.ts +++ b/test/mystery-encounter/encounters/weird-dream-encounter.test.ts @@ -147,12 +147,13 @@ describe("Weird Dream - Mystery Encounter", () => { const modifierSelectHandler = scene.ui.handlers.find( h => h instanceof ModifierSelectUiHandler, ) as ModifierSelectUiHandler; - expect(modifierSelectHandler.options.length).toEqual(5); + expect(modifierSelectHandler.options.length).toEqual(6); expect(modifierSelectHandler.options[0].modifierTypeOption.type.id).toEqual("MEMORY_MUSHROOM"); expect(modifierSelectHandler.options[1].modifierTypeOption.type.id).toEqual("ROGUE_BALL"); expect(modifierSelectHandler.options[2].modifierTypeOption.type.id).toEqual("MINT"); expect(modifierSelectHandler.options[3].modifierTypeOption.type.id).toEqual("MINT"); - expect(modifierSelectHandler.options[3].modifierTypeOption.type.id).toEqual("MINT"); + expect(modifierSelectHandler.options[4].modifierTypeOption.type.id).toEqual("MINT"); + expect(modifierSelectHandler.options[5].modifierTypeOption.type.id).toEqual("MINT"); }); it("should leave encounter without battle", async () => {