From 5676a2ec3f5cf1109e858b9acb26bf08f4773d90 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Mon, 31 Mar 2025 13:58:45 -0400 Subject: [PATCH] Apply challenges to MEs --- .../encounters/global-trade-system-encounter.ts | 5 +++-- src/data/mystery-encounters/utils/encounter-phase-utils.ts | 3 +++ src/data/mystery-encounters/utils/encounter-pokemon-utils.ts | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts index 2b922d5bf9e..df2322a38b7 100644 --- a/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts +++ b/src/data/mystery-encounters/encounters/global-trade-system-encounter.ts @@ -46,7 +46,7 @@ import { addPokemonDataToDexAndValidateAchievements } from "#app/data/mystery-en import type { PokeballType } from "#enums/pokeball"; import { doShinySparkleAnim } from "#app/field/anims"; import { TrainerType } from "#enums/trainer-type"; -import { Challenges } from "#enums/challenges"; +import { applyChallenges, ChallengeType } from "#app/data/challenge"; /** the i18n namespace for the encounter */ const namespace = "mysteryEncounters/globalTradeSystem"; @@ -101,7 +101,6 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = MysteryEncounterBuil MysteryEncounterType.GLOBAL_TRADE_SYSTEM, ) .withEncounterTier(MysteryEncounterTier.COMMON) - .withDisallowedChallenges(Challenges.METRONOME) .withSceneWaveRangeRequirement(...CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES) .withAutoHideIntroVisuals(false) .withIntroSpriteConfigs([ @@ -210,6 +209,7 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = MysteryEncounterBuil const encounter = globalScene.currentBattle.mysteryEncounter!; const tradedPokemon: PlayerPokemon = encounter.misc.tradedPokemon; const receivedPokemonData: EnemyPokemon = encounter.misc.receivedPokemon; + applyChallenges(ChallengeType.ENEMY_POKEMON_MODIFY, receivedPokemonData); const modifiers = tradedPokemon .getHeldItems() .filter(m => !(m instanceof PokemonFormChangeItemModifier) && !(m instanceof SpeciesStatBoosterModifier)); @@ -331,6 +331,7 @@ export const GlobalTradeSystemEncounter: MysteryEncounter = MysteryEncounterBuil const encounter = globalScene.currentBattle.mysteryEncounter!; const tradedPokemon: PlayerPokemon = encounter.misc.tradedPokemon; const receivedPokemonData: EnemyPokemon = encounter.misc.receivedPokemon; + applyChallenges(ChallengeType.ENEMY_POKEMON_MODIFY, receivedPokemonData); const modifiers = tradedPokemon .getHeldItems() .filter(m => !(m instanceof PokemonFormChangeItemModifier) && !(m instanceof SpeciesStatBoosterModifier)); diff --git a/src/data/mystery-encounters/utils/encounter-phase-utils.ts b/src/data/mystery-encounters/utils/encounter-phase-utils.ts index 5c6acf43e26..9d8d055a478 100644 --- a/src/data/mystery-encounters/utils/encounter-phase-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-phase-utils.ts @@ -65,6 +65,7 @@ import { getPokemonSpecies } from "#app/data/pokemon-species"; import { PokemonType } from "#enums/pokemon-type"; import { getNatureName } from "#app/data/nature"; import { getPokemonNameWithAffix } from "#app/messages"; +import { applyChallenges, ChallengeType } from "#app/data/challenge"; /** * Animates exclamation sprite over trainer's head at start of encounter @@ -394,6 +395,8 @@ export async function initBattleWithEnemyConfig(partyConfig: EnemyPartyConfig): enemyPokemon.mysteryEncounterBattleEffects = config.mysteryEncounterBattleEffects; } + applyChallenges(ChallengeType.ENEMY_POKEMON_MODIFY, enemyPokemon); + // Requires re-priming summon data to update everything properly enemyPokemon.primeSummonData(enemyPokemon.summonData); diff --git a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts index a4787e819b8..ed48a64d375 100644 --- a/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-pokemon-utils.ts @@ -38,6 +38,7 @@ import { CustomPokemonData } from "#app/data/custom-pokemon-data"; import type { Abilities } from "#enums/abilities"; import type { PokeballType } from "#enums/pokeball"; import { StatusEffect } from "#enums/status-effect"; +import { applyChallenges, ChallengeType } from "#app/data/challenge"; /** Will give +1 level every 10 waves */ export const STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER = 1; @@ -643,6 +644,7 @@ export async function catchPokemon( showCatchObtainMessage = true, isObtain = false, ): Promise { + applyChallenges(ChallengeType.ENEMY_POKEMON_MODIFY, pokemon); const speciesForm = !pokemon.fusionSpecies ? pokemon.getSpeciesForm() : pokemon.getFusionSpeciesForm(); if (