From 8d1cbfb2c54513e6df758b6e9f19a17157a013d9 Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Fri, 15 Nov 2024 19:34:51 -0800 Subject: [PATCH] Fix conditionals checking `SwitchType` Use `prependToPhase()` instead of `unshiftPhase()` --- src/data/move.ts | 95 ++++++++++++++++++++++++---------------- src/enums/switch-type.ts | 3 +- 2 files changed, 59 insertions(+), 39 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index 75b0d63af95..ed9b2ad0f15 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -5979,24 +5979,35 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { return false; } - if (switchOutTarget.hp && SwitchType.FORCE_SWITCH) { - switchOutTarget.leaveField(this.switchType === SwitchType.FORCE_SWITCH); - const slotIndex = Utils.randIntRange(user.scene.currentBattle.getBattlerCount(), user.scene.getPlayerParty().length); - user.scene.unshiftPhase( - new SwitchSummonPhase( - user.scene, - this.switchType, - switchOutTarget.getFieldIndex(), - slotIndex, - false, - true - ) - ); - } - if (switchOutTarget.hp > 0 && !SwitchType.FORCE_SWITCH) { - switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); - user.scene.prependToPhase(new SwitchPhase(user.scene, this.switchType, switchOutTarget.getFieldIndex(), true, true), MoveEndPhase); - return true; + if (switchOutTarget.hp > 0) { + if (this.switchType === SwitchType.FORCE_SWITCH) { + switchOutTarget.leaveField(true); + const slotIndex = Utils.randIntRange(user.scene.currentBattle.getBattlerCount(), user.scene.getPlayerParty().length); + user.scene.prependToPhase( + new SwitchSummonPhase( + user.scene, + this.switchType, + switchOutTarget.getFieldIndex(), + slotIndex, + false, + true + ), + MoveEndPhase + ); + } else { + switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); + user.scene.prependToPhase( + new SwitchPhase( + user.scene, + this.switchType, + switchOutTarget.getFieldIndex(), + true, + true + ), + MoveEndPhase + ); + return true; + } } return false; } else if (user.scene.currentBattle.battleType !== BattleType.WILD) { @@ -6004,26 +6015,36 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { if (switchOutTarget.scene.getEnemyParty().filter((p) => p.isAllowedInBattle() && !p.isOnField()).length < 1) { return false; } - if (switchOutTarget.hp && SwitchType.FORCE_SWITCH) { - switchOutTarget.leaveField(this.switchType === SwitchType.FORCE_SWITCH); - const slotIndex = Utils.randIntRange(user.scene.currentBattle.getBattlerCount(), user.scene.getEnemyParty().length); - user.scene.unshiftPhase( - new SwitchSummonPhase( - user.scene, - this.switchType, - switchOutTarget.getFieldIndex(), - slotIndex, - false, - false - ) - ); - } - if (switchOutTarget.hp > 0 && !SwitchType.FORCE_SWITCH) { + if (switchOutTarget.hp > 0) { + if (this.switchType === SwitchType.FORCE_SWITCH) { + switchOutTarget.leaveField(true); + const slotIndex = Utils.randIntRange(user.scene.currentBattle.getBattlerCount(), user.scene.getEnemyParty().length); + user.scene.prependToPhase( + new SwitchSummonPhase( + user.scene, + this.switchType, + switchOutTarget.getFieldIndex(), + slotIndex, + false, + false + ), + MoveEndPhase + ); + } else { // for opponent switching out - switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); - user.scene.prependToPhase(new SwitchSummonPhase(user.scene, this.switchType, switchOutTarget.getFieldIndex(), - (user.scene.currentBattle.trainer ? user.scene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0), - false, false), MoveEndPhase); + switchOutTarget.leaveField(this.switchType === SwitchType.SWITCH); + user.scene.prependToPhase( + new SwitchSummonPhase( + user.scene, + this.switchType, + switchOutTarget.getFieldIndex(), + (user.scene.currentBattle.trainer ? user.scene.currentBattle.trainer.getNextSummonIndex((switchOutTarget as EnemyPokemon).trainerSlot) : 0), + false, + false + ), + MoveEndPhase + ); + } } } else { /** diff --git a/src/enums/switch-type.ts b/src/enums/switch-type.ts index 86fd848c019..d55872ae83b 100644 --- a/src/enums/switch-type.ts +++ b/src/enums/switch-type.ts @@ -12,6 +12,5 @@ export enum SwitchType { /** Transfers the returning Pokemon's Substitute to the switched in Pokemon */ SHED_TAIL, /** Force switchout to a random party member */ - FORCE_SWITCH - + FORCE_SWITCH, }