From f2a120a84843bb1887a57d2d8e7dac96aa8c79c6 Mon Sep 17 00:00:00 2001 From: Lylian Date: Sun, 6 Apr 2025 16:46:58 +0200 Subject: [PATCH] bug fix to save illusion status --- src/battle-scene.ts | 3 +-- src/data/ability.ts | 1 + src/field/pokemon.ts | 6 +++++- src/system/pokemon-data.ts | 2 ++ 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 3830838d84a..44d9d651b72 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -888,8 +888,7 @@ export default class BattleScene extends SceneBase { } public getPlayerParty(): PlayerPokemon[] { - const party = this.party; - return party; + return this.party; } /** diff --git a/src/data/ability.ts b/src/data/ability.ts index e5ebcda99b5..f78aad3c574 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -5232,6 +5232,7 @@ export class IllusionPreSummonAbAttr extends PreSummonAbAttr { } override canApplyPreSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean { + pokemon.initSummondata() if(pokemon.hasTrainer()){ const party: Pokemon[] = (pokemon.isPlayer() ? globalScene.getPlayerParty() : globalScene.getEnemyParty()).filter(p => p.isAllowedInBattle()); const lastPokemon: Pokemon = party.filter(p => p !==pokemon).at(-1) || pokemon; diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index bb3af5c93e9..a0483076002 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -560,7 +560,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { init(): void { this.fieldPosition = FieldPosition.CENTER; - this.summonData = new PokemonSummonData(); // Need to be init for illusion to work this.initBattleInfo(); globalScene.fieldUI.addAt(this.battleInfo, 0); @@ -5797,6 +5796,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.summonDataPrimer = summonDataPrimer; } + // For PreSummonAbAttr to get access to summonData + initSummondata(): void { + this.summonData = this.summonData ?? this.summonDataPrimer ?? new PokemonSummonData() + } + resetSummonData(): void { const illusion: IllusionData | null = this.summonData?.illusion; if (this.summonData?.speciesForm) { diff --git a/src/system/pokemon-data.ts b/src/system/pokemon-data.ts index e6c28330756..879f1d0349d 100644 --- a/src/system/pokemon-data.ts +++ b/src/system/pokemon-data.ts @@ -180,6 +180,7 @@ export default class PokemonData { this.summonData.types = source.summonData.types; this.summonData.speciesForm = source.summonData.speciesForm; this.summonDataSpeciesFormIndex = source.summonDataSpeciesFormIndex; + this.summonData.illusionBroken = source.summonData.illusionBroken; if (source.summonData.tags) { this.summonData.tags = source.summonData.tags?.map(t => loadBattlerTag(t)); @@ -225,6 +226,7 @@ export default class PokemonData { if (this.summonData) { // when loading from saved session, recover summonData.speciesFrom and form index species object // used to stay transformed on reload session + if (this.summonData.speciesForm) { this.summonData.speciesForm = getPokemonSpeciesForm( this.summonData.speciesForm.speciesId,