diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index eec20beb01c..983494b36c8 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -5721,17 +5721,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } /** - * Reset this Pokemon's {@linkcode PokemonSummonData | SummonData} and {@linkcode PokemonTempSummonData | TempSummonData} - * in preparation for switching pokemon, as well as removing any relevant on-switch tags. + * Performs miscellaneous setup for when the Pokemon is summoned, like generating the substitute sprite + * @param resetSummonData - Whether to additionally reset the Pokemon's summon data (default: `false`) */ - resetSummonData(): void { - const illusion: IllusionData | null = this.summonData.illusion; - if (this.summonData.speciesForm) { - this.summonData.speciesForm = null; - this.updateFusionPalette(); - } - this.summonData = new PokemonSummonData(); - this.tempSummonData = new PokemonTempSummonData(); + public fieldSetup(resetSummonData?: boolean): void { this.setSwitchOutStatus(false); if (globalScene) { globalScene.triggerPokemonFormChange( @@ -5740,7 +5733,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { true, ); } - // If this Pokemon has a Substitute when loading in, play an animation to add its sprite if (this.getTag(SubstituteTag)) { globalScene.triggerPokemonBattleAnim( @@ -5758,6 +5750,24 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ) { this.setVisible(false); } + + if (resetSummonData) { + this.resetSummonData(); + } + } + + /** + * Reset this Pokemon's {@linkcode PokemonSummonData | SummonData} and {@linkcode PokemonTempSummonData | TempSummonData} + * in preparation for switching pokemon, as well as removing any relevant on-switch tags. + */ + resetSummonData(): void { + const illusion: IllusionData | null = this.summonData.illusion; + if (this.summonData.speciesForm) { + this.summonData.speciesForm = null; + this.updateFusionPalette(); + } + this.summonData = new PokemonSummonData(); + this.tempSummonData = new PokemonTempSummonData(); this.summonData.illusion = illusion this.updateInfo(); } diff --git a/src/phases/encounter-phase.ts b/src/phases/encounter-phase.ts index 5b799bd9316..3cfd2b9a901 100644 --- a/src/phases/encounter-phase.ts +++ b/src/phases/encounter-phase.ts @@ -146,7 +146,7 @@ export class EncounterPhase extends BattlePhase { const enemyPokemon = globalScene.getEnemyParty()[e]; if (e < (battle.double ? 2 : 1)) { enemyPokemon.setX(-66 + enemyPokemon.getFieldPositionOffset()[0]); - enemyPokemon.resetSummonData(); + enemyPokemon.fieldSetup(true); } if (!this.loaded) { diff --git a/src/phases/summon-phase.ts b/src/phases/summon-phase.ts index fef9b356348..c217583f163 100644 --- a/src/phases/summon-phase.ts +++ b/src/phases/summon-phase.ts @@ -196,6 +196,7 @@ export class SummonPhase extends PartyMemberPokemonPhase { onComplete: () => { pokemon.cry(pokemon.getHpRatio() > 0.25 ? undefined : { rate: 0.85 }); pokemon.getSprite().clearTint(); + pokemon.fieldSetup(); // necessary to stay transformed during wild waves if (pokemon.summonData.speciesForm) { pokemon.loadAssets(false); @@ -261,6 +262,7 @@ export class SummonPhase extends PartyMemberPokemonPhase { onComplete: () => { pokemon.cry(pokemon.getHpRatio() > 0.25 ? undefined : { rate: 0.85 }); pokemon.getSprite().clearTint(); + pokemon.fieldSetup(); globalScene.updateFieldScale(); globalScene.time.delayedCall(1000, () => this.end()); }, diff --git a/src/phases/switch-summon-phase.ts b/src/phases/switch-summon-phase.ts index bb31f87cc3d..a063b6e6863 100644 --- a/src/phases/switch-summon-phase.ts +++ b/src/phases/switch-summon-phase.ts @@ -193,7 +193,7 @@ export class SwitchSummonPhase extends SummonPhase { switchedInPokemon.setAlpha(0.5); } } else { - switchedInPokemon.resetSummonData(); + switchedInPokemon.fieldSetup(true); } this.summon(); };