[Bug] Fix CheckSwitchPhase not appearing on new wave (#6591)

This commit is contained in:
Dean 2025-09-25 06:18:23 -07:00 committed by GitHub
parent 6766940fa1
commit e5cc11dee7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 2 deletions

View File

@ -583,18 +583,22 @@ export class EncounterPhase extends BattlePhase {
const phaseManager = globalScene.phaseManager; const phaseManager = globalScene.phaseManager;
if (!availablePartyMembers[0].isOnField()) { if (!availablePartyMembers[0].isOnField()) {
phaseManager.pushNew("SummonPhase", 0, true, false, checkSwitch); phaseManager.pushNew("SummonPhase", 0, true, false, checkSwitch);
} else if (checkSwitch) {
globalScene.phaseManager.pushNew("CheckSwitchPhase", 0, globalScene.currentBattle.double);
} }
if (currentBattle.double) { if (currentBattle.double) {
if (availablePartyMembers.length > 1) { if (availablePartyMembers.length > 1) {
phaseManager.pushNew("ToggleDoublePositionPhase", true); phaseManager.pushNew("ToggleDoublePositionPhase", true);
if (!availablePartyMembers[1].isOnField()) { 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 { } else {
if (availablePartyMembers.length > 1 && availablePartyMembers[1].isOnField()) { if (availablePartyMembers.length > 1 && availablePartyMembers[1].isOnField()) {
globalScene.phaseManager.pushNew("ReturnPhase", 1); phaseManager.pushNew("ReturnPhase", 1);
} }
phaseManager.pushNew("ToggleDoublePositionPhase", false); phaseManager.pushNew("ToggleDoublePositionPhase", false);
} }

View File

@ -417,6 +417,8 @@ export class MysteryEncounterBattlePhase extends Phase {
if (!availablePartyMembers[0].isOnField()) { if (!availablePartyMembers[0].isOnField()) {
globalScene.phaseManager.pushNew("SummonPhase", 0, true, false, checkSwitch); globalScene.phaseManager.pushNew("SummonPhase", 0, true, false, checkSwitch);
} else if (checkSwitch) {
globalScene.phaseManager.pushNew("CheckSwitchPhase", 0, globalScene.currentBattle.double);
} }
if (globalScene.currentBattle.double) { if (globalScene.currentBattle.double) {
@ -424,6 +426,8 @@ export class MysteryEncounterBattlePhase extends Phase {
globalScene.phaseManager.pushNew("ToggleDoublePositionPhase", true); globalScene.phaseManager.pushNew("ToggleDoublePositionPhase", true);
if (!availablePartyMembers[1].isOnField()) { if (!availablePartyMembers[1].isOnField()) {
globalScene.phaseManager.pushNew("SummonPhase", 1, true, false, checkSwitch); globalScene.phaseManager.pushNew("SummonPhase", 1, true, false, checkSwitch);
} else if (checkSwitch) {
globalScene.phaseManager.pushNew("CheckSwitchPhase", 0, globalScene.currentBattle.double);
} }
} }
} else { } else {
@ -434,6 +438,16 @@ export class MysteryEncounterBattlePhase extends Phase {
globalScene.phaseManager.pushNew("ToggleDoublePositionPhase", false); 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(); this.end();
} }