FRLG accuracy check clean up (#9224)
Some checks failed
CI / build (push) Has been cancelled
CI / docs_validate (push) Has been cancelled
CI / allcontributors (push) Has been cancelled

This commit is contained in:
Alex 2026-02-20 11:39:34 +01:00 committed by GitHub
parent 199d7ae2cb
commit 3ea6bd1872
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1106,15 +1106,15 @@ static bool32 ShouldSkipAccuracyCalcPastFirstHit(enum BattlerId battlerAtk, enum
return TRUE; // multiHitOn is set so skip Acc check for everything else
}
static bool32 ShouldBypassAccuracyCheckFrlg(void)
static bool32 ShouldSkipFRLGAccuracyCheck(void)
{
if (!IS_FRLG)
return FALSE;
if ((gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE
&& (!BtlCtrl_OakOldMan_TestState2Flag(1) || !BtlCtrl_OakOldMan_TestState2Flag(2))
&& gMovesInfo[gCurrentMove].power != 0
&& GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER))
&& (!BtlCtrl_OakOldMan_TestState2Flag(1) || !BtlCtrl_OakOldMan_TestState2Flag(2))
&& GetMovePower(gCurrentMove) != 0
&& GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER))
{
return TRUE;
}
@ -1130,23 +1130,8 @@ static void AccuracyCheck(bool32 recalcDragonDarts, const u8 *nextInstr, const u
enum Ability abilityAtk = GetBattlerAbility(gBattlerAttacker);
enum HoldEffect holdEffectAtk = GetBattlerHoldEffect(gBattlerAttacker);
if (ShouldBypassAccuracyCheckFrlg())
{
if (gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_MISSED)
{
gBattleStruct->moveResultFlags[gBattlerTarget] = MOVE_RESULT_MISSED;
gLastLandedMoves[gBattlerTarget] = 0;
gLastHitByType[gBattlerTarget] = 0;
gBattlescriptCurrInstr = failInstr;
}
else
{
gBattlescriptCurrInstr = nextInstr;
}
return;
}
if (ShouldSkipAccuracyCalcPastFirstHit(gBattlerAttacker, abilityAtk, holdEffectAtk, GetMoveEffect(gCurrentMove))
if (ShouldSkipFRLGAccuracyCheck()
|| ShouldSkipAccuracyCalcPastFirstHit(gBattlerAttacker, abilityAtk, holdEffectAtk, GetMoveEffect(gCurrentMove))
|| IsMaxMove(gCurrentMove)
|| IsZMove(gCurrentMove))
{