From 89d38a3b6bae56d8e4e86a29ddad33908a9b3b56 Mon Sep 17 00:00:00 2001 From: flx-sta <50131232+flx-sta@users.noreply.github.com> Date: Thu, 1 Aug 2024 19:10:43 -0700 Subject: [PATCH] [Bug] fixed switch out bug when fainted single -> double (#3288) Mirror of PR #1333. Thanks to 0zuzu (https://github.com/0zuzu) for providing the original fix. Co-authored-by: 0zuzu <63069680+0zuzu@users.noreply.github.com> --- src/phases.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/phases.ts b/src/phases.ts index d77ff7c29df..dfadcaf2767 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -4449,9 +4449,10 @@ export class SwitchPhase extends BattlePhase { start() { super.start(); + const availablePartyMembers = this.scene.getParty().filter(p => !p.isFainted()); // Skip modal switch if impossible - if (this.isModal && !this.scene.getParty().filter(p => p.isAllowedInBattle() && !p.isActive(true)).length) { + if (this.isModal && (!availablePartyMembers.filter(p => !p.isActive(true)).length || (!this.scene.currentBattle.started && availablePartyMembers.length === 1))) { return super.end(); } @@ -4461,7 +4462,7 @@ export class SwitchPhase extends BattlePhase { } // Override field index to 0 in case of double battle where 2/3 remaining legal party members fainted at once - const fieldIndex = this.scene.currentBattle.getBattlerCount() === 1 || this.scene.getParty().filter(p => p.isAllowedInBattle()).length > 1 ? this.fieldIndex : 0; + const fieldIndex = this.scene.currentBattle.getBattlerCount() === 1 || availablePartyMembers.length > 1 ? this.fieldIndex : 0; this.scene.ui.setMode(Mode.PARTY, this.isModal ? PartyUiMode.FAINT_SWITCH : PartyUiMode.POST_BATTLE_SWITCH, fieldIndex, (slotIndex: integer, option: PartyOption) => { if (slotIndex >= this.scene.currentBattle.getBattlerCount() && slotIndex < 6) {