Rename AttacksThisTurn to GetAttackTiming and replace macro with enum

This commit is contained in:
mitsunee 2025-11-26 15:10:28 +01:00
parent 8282cf1edd
commit 4b1be97473
No known key found for this signature in database
GPG Key ID: 787CB9492B826E28

View File

@ -61,11 +61,12 @@ extern const u8 *const gBattleScriptsForMoveEffects[];
#define TAG_LVLUP_BANNER_MON_ICON 55130
#define ATTACKS_THIS_TURN(battler, move) (AttacksThisTurn(battler, move) == 2)
#define TIMING_CHARGING 1
#define TIMING_ATTACKING 2
static bool8 IsTwoTurnsMove(u16 move);
static void TrySetDestinyBondToHappen(void);
static u8 AttacksThisTurn(u8 battler, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2.
static u8 GetAttackTiming(u8 battler, u16 move);
static void CheckWonderGuardAndLevitate(void);
static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8 *BS_ptr);
static bool32 IsMonGettingExpSentOut(void);
@ -1408,7 +1409,8 @@ static void Cmd_typecalc(void)
}
}
if (gBattleMons[gBattlerTarget].ability == ABILITY_WONDER_GUARD && ATTACKS_THIS_TURN(gBattlerAttacker, gCurrentMove)
if (gBattleMons[gBattlerTarget].ability == ABILITY_WONDER_GUARD
&& GetAttackTiming(gBattlerAttacker, gCurrentMove) == TIMING_ATTACKING
&& (!(gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE) || ((gMoveResultFlags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)))
&& gBattleMoves[gCurrentMove].power)
{
@ -1489,7 +1491,8 @@ static void CheckWonderGuardAndLevitate(void)
i += 3;
}
if (gBattleMons[gBattlerTarget].ability == ABILITY_WONDER_GUARD && ATTACKS_THIS_TURN(gBattlerAttacker, gCurrentMove))
if (gBattleMons[gBattlerTarget].ability == ABILITY_WONDER_GUARD
&& GetAttackTiming(gBattlerAttacker, gCurrentMove) == TIMING_ATTACKING)
{
if (((flags & 2) || !(flags & 1)) && gBattleMoves[gCurrentMove].power)
{
@ -1584,7 +1587,7 @@ u8 TypeCalc(u16 move, u8 attacker, u8 defender)
}
if (gBattleMons[defender].ability == ABILITY_WONDER_GUARD && !(flags & MOVE_RESULT_MISSED)
&& ATTACKS_THIS_TURN(attacker, move)
&& GetAttackTiming(attacker, move) == TIMING_ATTACKING
&& (!(flags & MOVE_RESULT_SUPER_EFFECTIVE) || ((flags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)))
&& gBattleMoves[move].power)
{
@ -4578,7 +4581,7 @@ static void Cmd_typecalc2(void)
if (gBattleMons[gBattlerTarget].ability == ABILITY_WONDER_GUARD
&& !(flags & MOVE_RESULT_NO_EFFECT)
&& ATTACKS_THIS_TURN(gBattlerAttacker, gCurrentMove)
&& GetAttackTiming(gBattlerAttacker, gCurrentMove) == TIMING_ATTACKING
&& (!(flags & MOVE_RESULT_SUPER_EFFECTIVE) || ((flags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)))
&& gBattleMoves[gCurrentMove].power)
{
@ -8220,12 +8223,12 @@ static bool8 IsInvalidForSleepTalkOrAssist(u16 move)
return FALSE;
}
static u8 AttacksThisTurn(u8 battler, u16 move) // Note: returns 1 if it's a charging turn, otherwise 2
static u8 GetAttackTiming(u8 battler, u16 move)
{
// first argument is unused
if (gBattleMoves[move].effect == EFFECT_SOLAR_BEAM
&& (gBattleWeather & B_WEATHER_SUN))
return 2;
return TIMING_ATTACKING;
if (gBattleMoves[move].effect == EFFECT_SKULL_BASH
|| gBattleMoves[move].effect == EFFECT_RAZOR_WIND
@ -8235,9 +8238,9 @@ static u8 AttacksThisTurn(u8 battler, u16 move) // Note: returns 1 if it's a cha
|| gBattleMoves[move].effect == EFFECT_BIDE)
{
if ((gHitMarker & HITMARKER_CHARGING))
return 1;
return TIMING_CHARGING;
}
return 2;
return TIMING_ATTACKING;
}
static void Cmd_trychoosesleeptalkmove(void)