From e5cc11dee7409a470173affd8bebc7c37b593cb1 Mon Sep 17 00:00:00 2001 From: Dean <69436131+emdeann@users.noreply.github.com> Date: Thu, 25 Sep 2025 06:18:23 -0700 Subject: [PATCH] [Bug] Fix `CheckSwitchPhase` not appearing on new wave (#6591) --- src/phases/encounter-phase.ts | 8 ++++++-- src/phases/mystery-encounter-phases.ts | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/phases/encounter-phase.ts b/src/phases/encounter-phase.ts index 9345170e718..19dafbda873 100644 --- a/src/phases/encounter-phase.ts +++ b/src/phases/encounter-phase.ts @@ -583,18 +583,22 @@ export class EncounterPhase extends BattlePhase { const phaseManager = globalScene.phaseManager; if (!availablePartyMembers[0].isOnField()) { phaseManager.pushNew("SummonPhase", 0, true, false, checkSwitch); + } else if (checkSwitch) { + globalScene.phaseManager.pushNew("CheckSwitchPhase", 0, globalScene.currentBattle.double); } if (currentBattle.double) { if (availablePartyMembers.length > 1) { phaseManager.pushNew("ToggleDoublePositionPhase", true); if (!availablePartyMembers[1].isOnField()) { - phaseManager.pushNew("SummonPhase", 1, true, false, checkSwitch); + phaseManager.pushNew("SummonPhase", 1); + } else if (checkSwitch) { + globalScene.phaseManager.pushNew("CheckSwitchPhase", 1, globalScene.currentBattle.double); } } } else { if (availablePartyMembers.length > 1 && availablePartyMembers[1].isOnField()) { - globalScene.phaseManager.pushNew("ReturnPhase", 1); + phaseManager.pushNew("ReturnPhase", 1); } phaseManager.pushNew("ToggleDoublePositionPhase", false); } diff --git a/src/phases/mystery-encounter-phases.ts b/src/phases/mystery-encounter-phases.ts index bb3f4a92033..93b5b67de90 100644 --- a/src/phases/mystery-encounter-phases.ts +++ b/src/phases/mystery-encounter-phases.ts @@ -417,6 +417,8 @@ export class MysteryEncounterBattlePhase extends Phase { if (!availablePartyMembers[0].isOnField()) { globalScene.phaseManager.pushNew("SummonPhase", 0, true, false, checkSwitch); + } else if (checkSwitch) { + globalScene.phaseManager.pushNew("CheckSwitchPhase", 0, globalScene.currentBattle.double); } if (globalScene.currentBattle.double) { @@ -424,6 +426,8 @@ export class MysteryEncounterBattlePhase extends Phase { globalScene.phaseManager.pushNew("ToggleDoublePositionPhase", true); if (!availablePartyMembers[1].isOnField()) { globalScene.phaseManager.pushNew("SummonPhase", 1, true, false, checkSwitch); + } else if (checkSwitch) { + globalScene.phaseManager.pushNew("CheckSwitchPhase", 0, globalScene.currentBattle.double); } } } else { @@ -434,6 +438,16 @@ export class MysteryEncounterBattlePhase extends Phase { globalScene.phaseManager.pushNew("ToggleDoublePositionPhase", false); } + if (encounterMode !== MysteryEncounterMode.TRAINER_BATTLE && !this.disableSwitch) { + const minPartySize = globalScene.currentBattle.double ? 2 : 1; + if (availablePartyMembers.length > minPartySize) { + globalScene.phaseManager.pushNew("CheckSwitchPhase", 0, globalScene.currentBattle.double); + if (globalScene.currentBattle.double) { + globalScene.phaseManager.pushNew("CheckSwitchPhase", 1, globalScene.currentBattle.double); + } + } + } + this.end(); }