Fixes timesGotHit not increasing on forced switch out (#6493)
This commit is contained in:
parent
c1364e14d4
commit
adf4928fe0
@ -274,7 +274,6 @@ enum MoveEndEffects
|
||||
MOVEEND_SYMBIOSIS,
|
||||
MOVEEND_HIT_SWITCH_TARGET,
|
||||
MOVEEND_KINGSROCK, // These item effects will occur each strike of a multi-hit move
|
||||
MOVEEND_NUM_HITS,
|
||||
MOVEEND_SUBSTITUTE,
|
||||
MOVEEND_SKY_DROP_CONFUSE,
|
||||
MOVEEND_UPDATE_LAST_MOVES,
|
||||
|
||||
@ -2108,6 +2108,7 @@ static void Cmd_adjustdamage(void)
|
||||
gSpecialStatuses[battlerDef].enduredDamage = TRUE;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (GetBattlerAbility(battlerDef) == ABILITY_ICE_FACE && IsBattleMovePhysical(gCurrentMove) && gBattleMons[battlerDef].species == SPECIES_EISCUE)
|
||||
{
|
||||
// Damage deals typeless 0 HP.
|
||||
@ -2118,6 +2119,7 @@ static void Cmd_adjustdamage(void)
|
||||
// Form change will be done after attack animation in Cmd_resultmessage.
|
||||
continue;
|
||||
}
|
||||
|
||||
if (gBattleMons[gBattlerTarget].hp > gBattleStruct->moveDamage[battlerDef])
|
||||
continue;
|
||||
|
||||
@ -2669,6 +2671,11 @@ static void Cmd_datahpupdate(void)
|
||||
BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_HP_BATTLE, 0, sizeof(gBattleMons[battler].hp), &gBattleMons[battler].hp);
|
||||
MarkBattlerForControllerExec(battler);
|
||||
}
|
||||
|
||||
if (gBattlerAttacker != gBattlerTarget
|
||||
&& GetMoveCategory(gCurrentMove) != DAMAGE_CATEGORY_STATUS
|
||||
&& IsBattlerTurnDamaged(gBattlerTarget))
|
||||
gBattleStruct->timesGotHit[GetBattlerSide(gBattlerTarget)][gBattlerPartyIndexes[gBattlerTarget]]++;
|
||||
}
|
||||
|
||||
TryRestoreDamageAfterCheeckPouch(battler);
|
||||
@ -6749,16 +6756,6 @@ static void Cmd_moveend(void)
|
||||
}
|
||||
gBattleScripting.moveendState++;
|
||||
break;
|
||||
case MOVEEND_NUM_HITS:
|
||||
if (gBattlerAttacker != gBattlerTarget
|
||||
&& GetMoveCategory(gCurrentMove) != DAMAGE_CATEGORY_STATUS
|
||||
&& !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)
|
||||
&& IsBattlerTurnDamaged(gBattlerTarget))
|
||||
{
|
||||
gBattleStruct->timesGotHit[GetBattlerSide(gBattlerTarget)][gBattlerPartyIndexes[gBattlerTarget]]++;
|
||||
}
|
||||
gBattleScripting.moveendState++;
|
||||
break;
|
||||
case MOVEEND_SUBSTITUTE: // update substitute
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
|
||||
@ -296,3 +296,49 @@ SINGLE_BATTLE_TEST("Rage Fist number of hits is copied by Transform")
|
||||
EXPECT_MUL_EQ(timesGotHit[0], Q_4_12(2.0), timesGotHit[1]);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Rage Fist base power is increased by 50 if user was hit and forces out")
|
||||
{
|
||||
s16 timesGotHit[2];
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_REGIROCK);
|
||||
OPPONENT(SPECIES_REGIROCK);
|
||||
OPPONENT(SPECIES_WYNAUT);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_RAGE_FIST); MOVE(player, MOVE_DRAGON_TAIL); }
|
||||
TURN { MOVE(player, MOVE_CELEBRATE); SWITCH(opponent, 0); }
|
||||
TURN { MOVE(opponent, MOVE_RAGE_FIST); MOVE(player, MOVE_CELEBRATE); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, opponent);
|
||||
HP_BAR(player, captureDamage: ×GotHit[0]);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_TAIL, player);
|
||||
HP_BAR(opponent);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, opponent);
|
||||
HP_BAR(player, captureDamage: ×GotHit[1]);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
|
||||
} THEN {
|
||||
EXPECT_MUL_EQ(timesGotHit[0], Q_4_12(2.0), timesGotHit[1]);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Rage Fist doesn't get increased power if Substitute is hit")
|
||||
{
|
||||
s16 timesGotHit[2];
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_RAGE_FIST); MOVE(player, MOVE_CELEBRATE); }
|
||||
TURN { MOVE(opponent, MOVE_SUBSTITUTE); MOVE(player, MOVE_TACKLE); }
|
||||
TURN { MOVE(opponent, MOVE_RAGE_FIST); MOVE(player, MOVE_CELEBRATE); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, opponent);
|
||||
HP_BAR(player, captureDamage: ×GotHit[0]);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, opponent);
|
||||
HP_BAR(player, captureDamage: ×GotHit[1]);
|
||||
} THEN {
|
||||
EXPECT_EQ(timesGotHit[0], timesGotHit[1]);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user