From 458faf90eb72d96f3e1b59222b04c850af024e9d Mon Sep 17 00:00:00 2001 From: Dean Date: Tue, 17 Jun 2025 19:21:46 -0700 Subject: [PATCH] Move checks to canApply --- src/data/abilities/ability.ts | 36 ++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/src/data/abilities/ability.ts b/src/data/abilities/ability.ts index 8596fb8926d..498bccec7c5 100644 --- a/src/data/abilities/ability.ts +++ b/src/data/abilities/ability.ts @@ -1176,23 +1176,37 @@ export class ReverseDrainAbAttr extends PostDefendAbAttr { override canApplyPostDefend( _pokemon: Pokemon, _passive: boolean, - _simulated: boolean, - _attacker: Pokemon, + simulated: boolean, + attacker: Pokemon, move: Move, _hitResult: HitResult | null, _args: any[], ): boolean { - return move.hasAttr("HitHealAttr"); + const cancelled = new BooleanHolder(false); + applyAbAttrs("BlockNonDirectDamageAbAttr", attacker, cancelled, simulated); + this.attacker = attacker; + return !cancelled.value && move.hasAttr("HitHealAttr"); } - override applyPostDefend(pokemon: Pokemon, _passive: boolean, _simulated: boolean, attacker: Pokemon, move: Move, _hitResult: HitResult | null, _args: any[]): void { - const cancelled = new BooleanHolder(false); - applyAbAttrs("BlockNonDirectDamageAbAttr", attacker, cancelled); - if (!cancelled.value) { - const damageAmount = move.getAttrs<"HitHealAttr">("HitHealAttr")[0].getHealAmount(attacker, pokemon); - pokemon.turnData.damageTaken += damageAmount; - globalScene.phaseManager.unshiftNew("PokemonHealPhase", attacker.getBattlerIndex(), -damageAmount, null, false, true); - } + override applyPostDefend( + pokemon: Pokemon, + _passive: boolean, + _simulated: boolean, + attacker: Pokemon, + move: Move, + _hitResult: HitResult | null, + _args: any[], + ): void { + const damageAmount = move.getAttrs<"HitHealAttr">("HitHealAttr")[0].getHealAmount(attacker, pokemon); + pokemon.turnData.damageTaken += damageAmount; + globalScene.phaseManager.unshiftNew( + "PokemonHealPhase", + attacker.getBattlerIndex(), + -damageAmount, + null, + false, + true, + ); } public override getTriggerMessage(_pokemon: Pokemon, _abilityName: string, ..._args: any[]): string | null {