From e6b26aa0997e2019f328c2a1562d371ad124f85c Mon Sep 17 00:00:00 2001 From: Frederico Santos Date: Fri, 10 May 2024 17:21:30 +0100 Subject: [PATCH] Update changeStat method to use summonData for Pokemon stats This commit modifies the `changeStat` method in the `Pokemon` class to use the `summonData` object for updating Pokemon stats instead of directly modifying the `stats` object. This change ensures that the updated stats are correctly reflected in the `summonData` object, which is used for battle calculations and other related operations. Refactor the `getStat` method to check if `summonData` exists and return the corresponding stat value from `summonData.stats` if it does. Otherwise, return the stat value from the `stats` object. This change improves the accuracy of stat calculations during battles and ensures consistency between the `stats` and `summonData` objects. --- src/data/move.ts | 8 ++++---- src/field/pokemon.ts | 12 +++++++++--- src/system/pokemon-data.ts | 1 + 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index 3a1e40155a4..d706d3f1e82 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -1765,15 +1765,15 @@ export class PowerSplitAttr extends MoveEffectAttr { const infoUpdates = []; const attackValue = Math.floor((target.getStat(Stat.ATK) + user.getStat(Stat.ATK)) / 2); - user.changeStat(Stat.ATK, attackValue); + user.changeSummonStat(Stat.ATK, attackValue); infoUpdates.push(user.updateInfo()); - target.changeStat(Stat.ATK, attackValue); + target.changeSummonStat(Stat.ATK, attackValue); infoUpdates.push(target.updateInfo()); const specialAttackValue = Math.floor((target.getStat(Stat.SPATK) + user.getStat(Stat.SPATK)) / 2); - user.changeStat(Stat.SPATK, specialAttackValue); + user.changeSummonStat(Stat.SPATK, specialAttackValue); infoUpdates.push(user.updateInfo()); - target.changeStat(Stat.SPATK, specialAttackValue); + target.changeSummonStat(Stat.SPATK, specialAttackValue); infoUpdates.push(target.updateInfo()); return Promise.all(infoUpdates).then(() => resolve(true)); diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index fea5157a219..1922958e08f 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -543,7 +543,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } getStat(stat: Stat): integer { - return this.stats[stat]; + if (!this.summonData) + { + return this.stats[stat]; + } + + return this.summonData.stats[stat]; } getBattleStat(stat: Stat, opponent?: Pokemon, move?: Move, isCritical: boolean = false): integer { @@ -1552,9 +1557,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return healAmount; } - changeStat(stat: Stat, value: integer) : void + changeSummonStat(stat: Stat, value: integer) : void { - this.stats[stat] = value; + this.summonData.stats[stat] = value; } isBossImmune(): boolean { @@ -1994,6 +1999,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (!this.battleData) this.resetBattleData(); this.resetBattleSummonData(); + this.summonData.stats = this.stats; if (this.summonDataPrimer) { for (let k of Object.keys(this.summonData)) { if (this.summonDataPrimer[k]) diff --git a/src/system/pokemon-data.ts b/src/system/pokemon-data.ts index dfbb9be570b..dcf4a5744b6 100644 --- a/src/system/pokemon-data.ts +++ b/src/system/pokemon-data.ts @@ -112,6 +112,7 @@ export default class PokemonData { this.summonData = new PokemonSummonData(); if (!forHistory && source.summonData) { this.summonData.battleStats = source.summonData.battleStats; + this.summonData.stats = source.summonData.stats; this.summonData.moveQueue = source.summonData.moveQueue; this.summonData.disabledMove = source.summonData.disabledMove; this.summonData.disabledTurns = source.summonData.disabledTurns;