diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 5983871654b..f4ac1801861 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -281,8 +281,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { getNameToRender(useIllusion: boolean = true) { - const name: string = (!useIllusion && this.battleData.illusion.active) ? this.battleData.illusion.name! : this.name; - const nickname: string = (!useIllusion && this.battleData.illusion.active) ? this.battleData.illusion.nickname! : this.nickname; + const name: string = (!useIllusion && this.battleData?.illusion.active) ? this.battleData?.illusion.name! : this.name; + const nickname: string = (!useIllusion && this.battleData?.illusion.active) ? this.battleData?.illusion.nickname! : this.nickname; try { if (nickname) { return decodeURIComponent(escape(atob(nickname))); @@ -400,7 +400,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const lastPokemon: Pokemon = party.filter(p => p !== this).at(-1) || this; const speciesId = lastPokemon.species.speciesId; - if ( lastPokemon === this || this.battleData.illusion.active || + if ( lastPokemon === this || this.battleData?.illusion.active || ((speciesId === Species.OGERPON || speciesId === Species.TERAPAGOS) && (lastPokemon.isTerastallized() || this.isTerastallized()))) { return false; } @@ -478,12 +478,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return false; } - this.name = this.battleData.illusion.name!; - this.nickname = this.battleData.illusion.nickname!; - this.shiny = this.battleData.illusion.shiny!; - this.variant = this.battleData.illusion.variant!; - this.fusionVariant = this.battleData.illusion.fusionVariant!; - this.fusionShiny = this.battleData.illusion.fusionShiny!; + this.name = this.battleData?.illusion.name!; + this.nickname = this.battleData?.illusion.nickname!; + this.shiny = this.battleData?.illusion.shiny!; + this.variant = this.battleData?.illusion.variant!; + this.fusionVariant = this.battleData?.illusion.fusionVariant!; + this.fusionShiny = this.battleData?.illusion.fusionShiny!; this.battleData.illusion = { active: false, available: false }; if (this.isOnField()) { this.scene.playSound("PRSFX- Transform"); @@ -513,15 +513,15 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { Promise.allSettled(moveIds.map(m => initMoveAnim(this.scene, m))) .then(() => { loadMoveAnimAssets(this.scene, moveIds); - const formIndex = this.battleData.illusion.active && useIllusion ? this.battleData.illusion.formIndex : this.formIndex; + const formIndex = this.battleData?.illusion.active && useIllusion ? this.battleData?.illusion.formIndex : this.formIndex; this.getSpeciesForm(false, useIllusion).loadAssets(this.scene, this.getGender(useIllusion) === Gender.FEMALE, formIndex, this.isShiny(useIllusion), this.getVariant(useIllusion)); if (this.isPlayer() || this.getFusionSpeciesForm(false, useIllusion)) { this.scene.loadPokemonAtlas(this.getBattleSpriteKey(true, ignoreOverride), this.getBattleSpriteAtlasPath(true, ignoreOverride)); } if (this.getFusionSpeciesForm(false, useIllusion)) { - const fusionFormIndex = this.battleData.illusion.active && useIllusion ? this.battleData.illusion.fusionFormIndex : this.fusionFormIndex; - const fusionShiny = this.battleData.illusion.active && !useIllusion ? this.battleData.illusion.fusionShiny : this.fusionShiny; - const fusionVariant = this.battleData.illusion.active && !useIllusion ? this.battleData.illusion.fusionVariant : this.fusionVariant; + const fusionFormIndex = this.battleData?.illusion.active && useIllusion ? this.battleData?.illusion.fusionFormIndex : this.fusionFormIndex; + const fusionShiny = this.battleData?.illusion.active && !useIllusion ? this.battleData?.illusion.fusionShiny : this.fusionShiny; + const fusionVariant = this.battleData?.illusion.active && !useIllusion ? this.battleData?.illusion.fusionVariant : this.fusionVariant; this.getFusionSpeciesForm(false, useIllusion).loadAssets(this.scene, this.getFusionGender(false, useIllusion) === Gender.FEMALE, fusionFormIndex, fusionShiny, fusionVariant); this.scene.loadPokemonAtlas(this.getFusionBattleSpriteKey(true, ignoreOverride), this.getFusionBattleSpriteAtlasPath(true, ignoreOverride)); } @@ -622,7 +622,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } getSpriteId(ignoreOverride?: boolean): string { - const formIndex: integer = this.battleData.illusion.active ? this.battleData.illusion.formIndex! : this.formIndex; + const formIndex: integer = this.battleData?.illusion.active ? this.battleData?.illusion.formIndex! : this.formIndex; return this.getSpeciesForm(ignoreOverride, true).getSpriteId(this.getGender(ignoreOverride, true) === Gender.FEMALE, formIndex, this.shiny, this.variant); } @@ -631,7 +631,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { back = this.isPlayer(); } - const formIndex: integer = this.battleData.illusion.active ? this.battleData.illusion.formIndex! : this.formIndex; + const formIndex: integer = this.battleData?.illusion.active ? this.battleData?.illusion.formIndex! : this.formIndex; return this.getSpeciesForm(ignoreOverride, true).getSpriteId(this.getGender(ignoreOverride, true) === Gender.FEMALE, formIndex, this.shiny, this.variant, back); } @@ -640,8 +640,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return this.getSpeciesForm(ignoreOverride, false).getSpriteKey( this.getGender(ignoreOverride) === Gender.FEMALE, this.formIndex, - this.battleData.illusion.shiny ?? this.shiny, - this.battleData.illusion.variant ?? this.variant + this.battleData?.illusion.shiny ?? this.shiny, + this.battleData?.illusion.variant ?? this.variant ); } @@ -650,7 +650,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } getFusionSpriteId(ignoreOverride?: boolean): string { - const fusionFormIndex: integer = this.battleData.illusion.active ? this.battleData.illusion.fusionFormIndex! : this.fusionFormIndex; + const fusionFormIndex: integer = this.battleData?.illusion.active ? this.battleData?.illusion.fusionFormIndex! : this.fusionFormIndex; return this.getFusionSpeciesForm(ignoreOverride, true).getSpriteId(this.getFusionGender(ignoreOverride, true) === Gender.FEMALE, fusionFormIndex, this.fusionShiny, this.fusionVariant); } @@ -659,7 +659,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { back = this.isPlayer(); } - const fusionFormIndex: integer = this.battleData.illusion.active ? this.battleData.illusion.fusionFormIndex! : this.fusionFormIndex; + const fusionFormIndex: integer = this.battleData?.illusion.active ? this.battleData?.illusion.fusionFormIndex! : this.fusionFormIndex; return this.getFusionSpeciesForm(ignoreOverride, true).getSpriteId(this.getFusionGender(ignoreOverride, true) === Gender.FEMALE, fusionFormIndex, this.fusionShiny, this.fusionVariant, back); } @@ -673,7 +673,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } getIconAtlasKey(ignoreOverride?: boolean): string { - const formIndex: integer = this.battleData.illusion.active ? this.battleData.illusion.formIndex! : this.formIndex; + const formIndex: integer = this.battleData?.illusion.active ? this.battleData?.illusion.formIndex! : this.formIndex; return this.getSpeciesForm(ignoreOverride, true).getIconAtlasKey(formIndex, this.shiny, this.variant); } @@ -682,12 +682,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } getIconId(ignoreOverride?: boolean): string { - const formIndex: integer = this.battleData.illusion.active ? this.battleData.illusion.formIndex! : this.formIndex; + const formIndex: integer = this.battleData?.illusion.active ? this.battleData?.illusion.formIndex! : this.formIndex; return this.getSpeciesForm(ignoreOverride, true).getIconId(this.getGender(ignoreOverride, true) === Gender.FEMALE, formIndex, this.shiny, this.variant); } getFusionIconId(ignoreOverride?: boolean): string { - const fusionFormIndex: integer = this.battleData.illusion.active ? this.battleData.illusion.fusionFormIndex! : this.fusionFormIndex; + const fusionFormIndex: integer = this.battleData?.illusion.active ? this.battleData?.illusion.fusionFormIndex! : this.fusionFormIndex; return this.getFusionSpeciesForm(ignoreOverride, true).getIconId(this.getFusionGender(ignoreOverride, true) === Gender.FEMALE, fusionFormIndex, this.fusionShiny, this.fusionVariant); } @@ -695,9 +695,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param {boolean} useIllusion - Whether we want the speciesForm of the illusion or not. */ getSpeciesForm(ignoreOverride?: boolean, useIllusion: boolean = false): PokemonSpeciesForm { - const species: PokemonSpecies = useIllusion && this.battleData.illusion.active ? this.battleData.illusion.species! : this.species; + const species: PokemonSpecies = useIllusion && this.battleData?.illusion.active ? this.battleData?.illusion.species! : this.species; - const formIndex: integer = useIllusion && this.battleData.illusion.active ? this.battleData.illusion.formIndex! : this.formIndex; + const formIndex: integer = useIllusion && this.battleData?.illusion.active ? this.battleData?.illusion.formIndex! : this.formIndex; if (!ignoreOverride && this.summonData?.speciesForm) { return this.summonData.speciesForm; @@ -713,8 +713,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param {boolean} useIllusion - Whether we want the fusionSpeciesForm of the illusion or not. */ getFusionSpeciesForm(ignoreOverride?: boolean, useIllusion: boolean = false): PokemonSpeciesForm { - const fusionSpecies: PokemonSpecies = useIllusion && this.battleData.illusion.active ? this.battleData.illusion.fusionSpecies! : this.fusionSpecies!; - const fusionFormIndex: integer = useIllusion && this.battleData.illusion.active ? this.battleData.illusion.fusionFormIndex! : this.fusionFormIndex; + const fusionSpecies: PokemonSpecies = useIllusion && this.battleData?.illusion.active ? this.battleData?.illusion.fusionSpecies! : this.fusionSpecies!; + const fusionFormIndex: integer = useIllusion && this.battleData?.illusion.active ? this.battleData?.illusion.fusionFormIndex! : this.fusionFormIndex; if (!ignoreOverride && this.summonData?.speciesForm) { return this.summonData.fusionSpeciesForm; @@ -1210,8 +1210,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param {boolean} useIllusion - Whether we want the gender of the illusion or not. */ getGender(ignoreOverride?: boolean, useIllusion: boolean = false): Gender { - if (useIllusion && this.battleData.illusion.active) { - return this.battleData.illusion.gender!; + if (useIllusion && this.battleData?.illusion.active) { + return this.battleData?.illusion.gender!; } else if (!ignoreOverride && this.summonData?.gender !== undefined) { return this.summonData.gender; } @@ -1222,8 +1222,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * @param {boolean} useIllusion - Whether we want the fusionGender of the illusion or not. */ getFusionGender(ignoreOverride?: boolean, useIllusion: boolean = false): Gender { - if (useIllusion && this.battleData.illusion.active) { - return this.battleData.illusion.fusionGender!; + if (useIllusion && this.battleData?.illusion.active) { + return this.battleData?.illusion.fusionGender!; } else if (!ignoreOverride && this.summonData?.fusionGender !== undefined) { return this.summonData.fusionGender; } @@ -1231,24 +1231,24 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } isShiny(useIllusion: boolean = false): boolean { - if (!useIllusion && this.battleData.illusion.active) { - return this.battleData.illusion.shiny || (!!this.battleData.illusion.fusionSpecies && this.battleData.illusion.fusionShiny) || false; + if (!useIllusion && this.battleData?.illusion.active) { + return this.battleData?.illusion.shiny || (!!this.battleData?.illusion.fusionSpecies && this.battleData?.illusion.fusionShiny) || false; } else { return this.shiny || (this.isFusion(useIllusion) && this.fusionShiny); } } isDoubleShiny(useIllusion: boolean = false): boolean { - if (!useIllusion && this.battleData.illusion.active) { - return this.isFusion(false) && this.battleData.illusion.shiny! && this.battleData.illusion.fusionShiny!; + if (!useIllusion && this.battleData?.illusion.active) { + return this.isFusion(false) && this.battleData?.illusion.shiny! && this.battleData?.illusion.fusionShiny!; } else { return this.isFusion(useIllusion) && this.shiny && this.fusionShiny; } } getVariant(useIllusion: boolean = false): Variant { - if (!useIllusion && this.battleData.illusion.active) { - return !this.isFusion(false) ? this.battleData.illusion.variant! : Math.max(this.variant, this.fusionVariant) as Variant; + if (!useIllusion && this.battleData?.illusion.active) { + return !this.isFusion(false) ? this.battleData?.illusion.variant! : Math.max(this.variant, this.fusionVariant) as Variant; } else { return !this.isFusion(true) ? this.variant : Math.max(this.variant, this.fusionVariant) as Variant; } @@ -1257,7 +1257,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { getBaseVariant(doubleShiny: boolean): Variant { if (doubleShiny) { - return this.battleData.illusion.active ? this.battleData.illusion.variant! : this.variant; + return this.battleData?.illusion.active ? this.battleData?.illusion.variant! : this.variant; } else { return this.getVariant(); } @@ -1268,15 +1268,15 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } isFusion(useIllusion: boolean = false): boolean { - if (useIllusion && this.battleData.illusion.active) { - return !!this.battleData.illusion.fusionSpecies; + if (useIllusion && this.battleData?.illusion.active) { + return !!this.battleData?.illusion.fusionSpecies; } else { return !!this.fusionSpecies; } } getName(illusion: boolean = false): string { - return (!illusion && this.battleData.illusion.active && this.battleData.illusion.name) ? this.battleData.illusion.name : this.name; + return (!illusion && this.battleData?.illusion.active && this.battleData?.illusion.name) ? this.battleData?.illusion.name : this.name; } /** @@ -1380,7 +1380,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.mysteryEncounterPokemonData.types && this.mysteryEncounterPokemonData.types.length > 0) { // "Permanent" override for a Pokemon's normal types, currently only used by Mystery Encounters this.mysteryEncounterPokemonData.types.forEach(t => types.push(t)); - } else if (!ignoreOverride && this.summonData?.types && this.summonData.types.length > 0 && (!this.battleData.illusion.active || !doIllusion)) { + } else if (!ignoreOverride && this.summonData?.types && this.summonData.types.length > 0 && (!this.battleData?.illusion.active || !doIllusion)) { this.summonData.types.forEach(t => types.push(t)); } else if (this.mysteryEncounterPokemonData.types && this.mysteryEncounterPokemonData.types.length > 0) { // "Permanent" override for a Pokemon's normal types, currently only used by Mystery Encounters