From 2e2864c0f1d6d8d8a407712131251afe9f2bff4f Mon Sep 17 00:00:00 2001 From: Dean Date: Tue, 11 Mar 2025 21:39:06 -0700 Subject: [PATCH] Move logic to PostSummonPhase --- src/phases/post-summon-phase.ts | 19 +++++++++++++++++++ src/phases/summon-phase.ts | 9 +-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/phases/post-summon-phase.ts b/src/phases/post-summon-phase.ts index a7aa9389505..25fac6eb453 100644 --- a/src/phases/post-summon-phase.ts +++ b/src/phases/post-summon-phase.ts @@ -6,6 +6,7 @@ import { StatusEffect } from "#app/enums/status-effect"; import { PokemonPhase } from "./pokemon-phase"; import { MysteryEncounterPostSummonTag } from "#app/data/battler-tags"; import { BattlerTagType } from "#enums/battler-tag-type"; +import { Stat } from "#enums/stat"; export class PostSummonPhase extends PokemonPhase { start() { @@ -13,6 +14,24 @@ export class PostSummonPhase extends PokemonPhase { const pokemon = this.getPokemon(); + // If another PostSummonPhase exists which should go first, move this one back + globalScene.phaseQueue; + const fasterPhase = globalScene.findPhase( + phase => + phase instanceof PostSummonPhase && + phase.getPokemon().getEffectiveStat(Stat.SPD) > pokemon.getEffectiveStat(Stat.SPD), + ); + if (fasterPhase) { + globalScene.prependToPhaseWithCondition( + new PostSummonPhase(this.getPokemon().getBattlerIndex()), + PostSummonPhase, + (newPhase: PostSummonPhase, prependPhase: PostSummonPhase) => + prependPhase.getPokemon().getEffectiveStat(Stat.SPD) < newPhase.getPokemon().getEffectiveStat(Stat.SPD), + ); + this.end(); + return; + } + if (pokemon.status?.effect === StatusEffect.TOXIC) { pokemon.status.toxicTurnCount = 0; } diff --git a/src/phases/summon-phase.ts b/src/phases/summon-phase.ts index 6a82665d9d1..31cd2645e68 100644 --- a/src/phases/summon-phase.ts +++ b/src/phases/summon-phase.ts @@ -14,7 +14,6 @@ import { GameOverPhase } from "./game-over-phase"; import { ShinySparklePhase } from "./shiny-sparkle-phase"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; import { globalScene } from "#app/global-scene"; -import { Stat } from "#enums/stat"; export class SummonPhase extends PartyMemberPokemonPhase { private loaded: boolean; @@ -284,13 +283,7 @@ export class SummonPhase extends PartyMemberPokemonPhase { } queuePostSummon(): void { - // Insert PostSummonPhase in speed order - globalScene.prependToPhaseWithCondition( - new PostSummonPhase(this.getPokemon().getBattlerIndex()), - PostSummonPhase, - (newPhase: PostSummonPhase, prependPhase: PostSummonPhase) => - prependPhase.getPokemon().getEffectiveStat(Stat.SPD) < newPhase.getPokemon().getEffectiveStat(Stat.SPD), - ); + globalScene.pushPhase(new PostSummonPhase(this.getPokemon().getBattlerIndex())); } end() {