From c0231c9bb10f604e6f48a17d356c5365a27ce797 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Thu, 21 Aug 2025 15:46:31 +0200 Subject: [PATCH] Fixes Rage Fist counter increment (#7582) Co-authored-by: Bassoonian --- src/battle_script_commands.c | 5 ++++- test/battle/move_effect/rage_fist.c | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index b1cab2f717..ba64832ed6 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2635,6 +2635,7 @@ static void Cmd_healthbarupdate(void) static void Cmd_datahpupdate(void) { CMD_ARGS(u8 battler); + bool32 isPassiveDamageOrHealing = gHitMarker & HITMARKER_PASSIVE_DAMAGE; if (gBattleControllerExecFlags) return; @@ -2750,11 +2751,13 @@ static void Cmd_datahpupdate(void) } if (gBattlerAttacker != gBattlerTarget + && !isPassiveDamageOrHealing && GetMoveCategory(gCurrentMove) != DAMAGE_CATEGORY_STATUS && IsBattlerTurnDamaged(gBattlerTarget)) gBattleStruct->timesGotHit[GetBattlerSide(gBattlerTarget)][gBattlerPartyIndexes[gBattlerTarget]]++; if (GetMoveEffect(gCurrentMove) == EFFECT_KNOCK_OFF + && !isPassiveDamageOrHealing && IsBattlerTurnDamaged(gBattlerTarget) && gBattleMons[gBattlerTarget].item != ITEM_NONE && !DoesSubstituteBlockMove(gBattlerAttacker, battler, gCurrentMove) @@ -6630,7 +6633,7 @@ static void Cmd_moveend(void) { gBattleStruct->moveDamage[gBattlerAttacker] = max(1, (gBattleStruct->moveDamage[gBattlerTarget] * GetMoveAbsorbPercentage(gCurrentMove) / 100)); gBattleStruct->moveDamage[gBattlerAttacker] = GetDrainedBigRootHp(gBattlerAttacker, gBattleStruct->moveDamage[gBattlerAttacker]); - gHitMarker |= HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_DISGUISE; + gHitMarker |= HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_DISGUISE | HITMARKER_PASSIVE_DAMAGE; effect = TRUE; if (GetBattlerAbility(gBattlerTarget) == ABILITY_LIQUID_OOZE) { diff --git a/test/battle/move_effect/rage_fist.c b/test/battle/move_effect/rage_fist.c index e803a05a9d..ba8fcecc06 100644 --- a/test/battle/move_effect/rage_fist.c +++ b/test/battle/move_effect/rage_fist.c @@ -342,3 +342,28 @@ SINGLE_BATTLE_TEST("Rage Fist doesn't get increased power if Substitute is hit") EXPECT_EQ(timesGotHit[0], timesGotHit[1]); } } + +SINGLE_BATTLE_TEST("Rage Fist - X") +{ + s16 timesGotHit[2]; + + GIVEN { + ASSUME(GetMoveEffect(MOVE_GIGA_DRAIN) == EFFECT_ABSORB); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_GIGA_DRAIN); } + TURN { MOVE(player, MOVE_RAGE_FIST); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[0]); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGA_DRAIN, opponent); + HP_BAR(player); + + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[1]); + } THEN { + EXPECT_MUL_EQ(timesGotHit[0], Q_4_12(2.0), timesGotHit[1]); + } +}