From da51d6ae123b227902f91d006cf4c754077f508d Mon Sep 17 00:00:00 2001 From: schmidtc1 <62030095+schmidtc1@users.noreply.github.com> Date: Tue, 6 Aug 2024 16:59:17 -0400 Subject: [PATCH] [Bug] Fix moveset flyout not updating PP from Spite (#3388) --- src/data/move.ts | 3 ++- src/phases.ts | 4 ++-- src/ui/battle-flyout.ts | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/data/move.ts b/src/data/move.ts index 8ddc984e304..28cfc6f2668 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -27,6 +27,7 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { Biome } from "#enums/biome"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; +import { MoveUsedEvent } from "#app/events/battle-scene.js"; export enum MoveCategory { PHYSICAL, @@ -5337,7 +5338,7 @@ export class ReducePpMoveAttr extends MoveEffectAttr { movesetMove.ppUsed = Math.min(movesetMove.ppUsed + this.reduction, movesetMove.getMovePp()); const message = i18next.t("battle:ppReduced", {targetName: getPokemonNameWithAffix(target), moveName: movesetMove.getName(), reduction: movesetMove.ppUsed - lastPpUsed}); - + user.scene.eventTarget.dispatchEvent(new MoveUsedEvent(target?.id, movesetMove.getMove(), movesetMove.ppUsed)); user.scene.queueMessage(message); return true; diff --git a/src/phases.ts b/src/phases.ts index c4062b470a2..e88f0699918 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -2733,7 +2733,7 @@ export class MovePhase extends BattlePhase { if (this.cancelled || this.failed) { if (this.failed) { this.move.usePp(ppUsed); // Only use PP if the move failed - this.scene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon?.id, this.move.getMove(), ppUsed)); + this.scene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon?.id, this.move.getMove(), this.move.ppUsed)); } // Record a failed move so Abilities like Truant don't trigger next turn and soft-lock @@ -2766,7 +2766,7 @@ export class MovePhase extends BattlePhase { if (!moveQueue.length || !moveQueue.shift().ignorePP) { // using .shift here clears out two turn moves once they've been used this.move.usePp(ppUsed); - this.scene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon?.id, this.move.getMove(), ppUsed)); + this.scene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon?.id, this.move.getMove(), this.move.ppUsed)); } if (!allMoves[this.move.moveId].hasAttr(CopyMoveAttr)) { diff --git a/src/ui/battle-flyout.ts b/src/ui/battle-flyout.ts index fdce9661793..6204fa2f928 100644 --- a/src/ui/battle-flyout.ts +++ b/src/ui/battle-flyout.ts @@ -147,7 +147,7 @@ export default class BattleFlyout extends Phaser.GameObjects.Container { const foundInfo = this.moveInfo.find(x => x?.move.id === moveUsedEvent.move.id); if (foundInfo) { - foundInfo.ppUsed = Math.min(foundInfo.ppUsed + moveUsedEvent.ppUsed, foundInfo.maxPp); + foundInfo.ppUsed = moveUsedEvent.ppUsed; } else { this.moveInfo.push({move: moveUsedEvent.move, maxPp: moveUsedEvent.move.pp, ppUsed: moveUsedEvent.ppUsed}); }