From 0b631d3b15b4717eb30d2b5847eb9dab0543020d Mon Sep 17 00:00:00 2001 From: Dean Date: Sun, 23 Feb 2025 00:24:46 -0800 Subject: [PATCH] Re-add bug fix --- src/data/move.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index 12edf4b963e..cc9ef9737ae 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -57,10 +57,6 @@ import { applyChallenges, ChallengeType } from "./challenge"; import { SwitchType } from "#enums/switch-type"; import { StatusEffect } from "#enums/status-effect"; import { globalScene } from "#app/global-scene"; -import { Mode } from "#app/ui/ui"; -import type { PartyOption } from "#app/ui/party-ui-handler"; -import PartyUiHandler, { PartyUiMode } from "#app/ui/party-ui-handler"; -import { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase"; import { RevivalBlessingPhase } from "#app/phases/revival-blessing-phase"; import { LoadMoveAnimPhase } from "#app/phases/load-move-anim-phase"; import { PokemonTransformPhase } from "#app/phases/pokemon-transform-phase"; @@ -6098,9 +6094,16 @@ export class RevivalBlessingAttr extends MoveEffectAttr { if (globalScene.currentBattle.double && globalScene.getEnemyParty().length > 1) { const allyPokemon = user.getAlly(); - if (slotIndex <= 1) { - globalScene.unshiftPhase(new SwitchSummonPhase(SwitchType.SWITCH, pokemon.getFieldIndex(), slotIndex, false, false)); - } else if (allyPokemon.isFainted()) { + // Handle cases where revived pokemon needs to get switched in on same turn + if (allyPokemon.isFainted() || allyPokemon === pokemon) { + // Enemy switch phase should be removed and replaced with the revived pkmn switching in + globalScene.tryRemovePhase((phase: SwitchSummonPhase) => phase instanceof SwitchSummonPhase && phase.getPokemon() === pokemon); + // If the pokemon being revived was alive earlier in the turn, cancel its move + // (revived pokemon can't move in the turn they're brought back) + globalScene.findPhase((phase: MovePhase) => phase.pokemon === pokemon)?.cancel(); + if (user.fieldPosition === FieldPosition.CENTER) { + user.setFieldPosition(FieldPosition.LEFT); + } globalScene.unshiftPhase(new SwitchSummonPhase(SwitchType.SWITCH, allyPokemon.getFieldIndex(), slotIndex, false, false)); } }