From b65b55a00ee6f4351ee4003ed7cba2a366df00b3 Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Sun, 25 Aug 2024 11:46:44 -0400 Subject: [PATCH] Resolves bugs with freezy frost vs ally, and freezy frost fainting opp --- src/data/move.ts | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index b1b82009f3e..742f3b4d6e7 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -2773,28 +2773,27 @@ export class ResetStatsAttr extends MoveEffectAttr { super(); this.targetAllPokemon = targetAllPokemon; } - apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - if (!super.apply(user, target, move, args)) { - return false; - } + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise { + return new Promise((resolve) => { + const promises: Promise[] = []; + if (this.targetAllPokemon) { // Target all pokemon on the field when Freezy Frost or Haze are used + const activePokemon = user.scene.getField(true); + activePokemon.forEach(p => promises.push(this.resetStats(p))); + target.scene.queueMessage(i18next.t("moveTriggers:statEliminated")); + } else { // Affects only the single target when Clear Smog is used + promises.push(this.resetStats(target)); + target.scene.queueMessage(i18next.t("moveTriggers:resetStats", {pokemonName: getPokemonNameWithAffix(target)})); + } - if (this.targetAllPokemon) { // Target all pokemon on the field when Freezy Frost or Haze are used - const activePokemon = user.scene.getField(true); - activePokemon.forEach(p => this.resetStats(p)); - target.scene.queueMessage(i18next.t("moveTriggers:statEliminated")); - } else { // Affects only the single target when Clear Smog is used - this.resetStats(target); - target.scene.queueMessage(i18next.t("moveTriggers:resetStats", {pokemonName: getPokemonNameWithAffix(target)})); - } - - return true; + Promise.all(promises).then(() => resolve(true)); + }); } - resetStats(pokemon: Pokemon) { + resetStats(pokemon: Pokemon): Promise { for (let s = 0; s < pokemon.summonData.battleStats.length; s++) { pokemon.summonData.battleStats[s] = 0; } - pokemon.updateInfo(); + return pokemon.updateInfo(); } }