Fixes Rage Fist counter increment (#7582)

Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
This commit is contained in:
Alex 2025-08-21 15:46:31 +02:00 committed by GitHub
parent 95eb3ba1a7
commit c0231c9bb1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 29 additions and 1 deletions

View File

@ -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)
{

View File

@ -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: &timesGotHit[0]);
ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGA_DRAIN, opponent);
HP_BAR(player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player);
HP_BAR(opponent, captureDamage: &timesGotHit[1]);
} THEN {
EXPECT_MUL_EQ(timesGotHit[0], Q_4_12(2.0), timesGotHit[1]);
}
}