From 20799f5a4cc123bb1441df567a48b8ea1ecfffb1 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Thu, 28 Mar 2024 21:18:07 -0400 Subject: [PATCH] Fix multi target attacks missing when a target is fainted --- src/data/move.ts | 16 ++++++++++++++++ src/phases.ts | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/data/move.ts b/src/data/move.ts index 35dd31675b7..9ba591bc493 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -145,6 +145,22 @@ export default class Move { return !!(this.flags & flag); } + isMultiTarget(): boolean { + switch (this.moveTarget) { + case MoveTarget.ALL_OTHERS: + case MoveTarget.ALL_NEAR_OTHERS: + case MoveTarget.ALL_NEAR_ENEMIES: + case MoveTarget.ALL_ENEMIES: + case MoveTarget.USER_AND_ALLIES: + case MoveTarget.ALL: + case MoveTarget.USER_SIDE: + case MoveTarget.ENEMY_SIDE: + case MoveTarget.BOTH_SIDES: + return true; + } + return false; + } + condition(condition: MoveCondition | MoveConditionFunc): this { if (typeof condition === 'function') condition = new MoveCondition(condition as MoveConditionFunc); diff --git a/src/phases.ts b/src/phases.ts index 691a7eed426..67e4612bf36 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -2202,7 +2202,7 @@ export class MoveEffectPhase extends PokemonPhase { const targetHitChecks = Object.fromEntries(targets.map(p => [ p.getBattlerIndex(), this.hitCheck(p) ])); const activeTargets = targets.map(t => t.isActive(true)); - if (targets.length === 1 && !targetHitChecks[this.targets[0]] || !activeTargets.length) { + if (!activeTargets.length || (!this.move.getMove().isMultiTarget() && !targetHitChecks[this.targets[0]])) { user.turnData.hitCount = 1; user.turnData.hitsLeft = 1; if (activeTargets.length) {