Skip to content

Commit

Permalink
Clean up - Add ability args instead of calcing the ability again (#6186)
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexOn1ine authored Feb 4, 2025
1 parent a642759 commit b90b1e2
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 25 deletions.
6 changes: 3 additions & 3 deletions include/battle_script_commands.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ bool32 CanPoisonType(u8 battlerAttacker, u8 battlerTarget);
bool32 CanParalyzeType(u8 battlerAttacker, u8 battlerTarget);
bool32 CanUseLastResort(u8 battlerId);
u32 IsFlowerVeilProtected(u32 battler);
u32 IsLeafGuardProtected(u32 battler);
bool32 IsShieldsDownProtected(u32 battler);
u32 IsAbilityStatusProtected(u32 battler);
u32 IsLeafGuardProtected(u32 battler, u32 ability);
bool32 IsShieldsDownProtected(u32 battler, u32 ability);
u32 IsAbilityStatusProtected(u32 battler, u32 ability);
bool32 TryResetBattlerStatChanges(u8 battler);
bool32 CanCamouflage(u8 battlerId);
u32 GetNaturePowerMove(u32 battler);
Expand Down
2 changes: 1 addition & 1 deletion src/battle_ai_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -983,7 +983,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
RETURN_SCORE_MINUS(10);
break;
case ABILITY_SHIELDS_DOWN:
if (IsShieldsDownProtected(battlerAtk) && IsNonVolatileStatusMoveEffect(moveEffect))
if (IsShieldsDownProtected(battlerAtk, aiData->abilities[battlerAtk]) && IsNonVolatileStatusMoveEffect(moveEffect))
RETURN_SCORE_MINUS(10);
break;
case ABILITY_LEAF_GUARD:
Expand Down
6 changes: 3 additions & 3 deletions src/battle_ai_switch_items.c
Original file line number Diff line number Diff line change
Expand Up @@ -1312,9 +1312,9 @@ static u32 GetSwitchinHazardsDamage(u32 battler, struct BattlePokemon *battleMon
&& ability != ABILITY_IMMUNITY && ability != ABILITY_POISON_HEAL && ability != ABILITY_COMATOSE
&& status == 0
&& !(hazardFlags & SIDE_STATUS_SAFEGUARD)
&& !(IsAbilityOnSide(battler, ABILITY_PASTEL_VEIL))
&& !(IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN))
&& !(IsAbilityStatusProtected(battler))
&& !IsAbilityOnSide(battler, ABILITY_PASTEL_VEIL)
&& !IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)
&& !IsAbilityStatusProtected(battler, ability)
&& heldItemEffect != HOLD_EFFECT_CURE_PSN && heldItemEffect != HOLD_EFFECT_CURE_STATUS
&& IsMonGrounded(heldItemEffect, ability, defType1, defType2)))
{
Expand Down
2 changes: 1 addition & 1 deletion src/battle_ai_util.c
Original file line number Diff line number Diff line change
Expand Up @@ -3031,7 +3031,7 @@ bool32 AI_CanGetFrostbite(u32 battler, u32 ability)
|| ability == ABILITY_COMATOSE
|| IS_BATTLER_OF_TYPE(battler, TYPE_ICE)
|| gBattleMons[battler].status1 & STATUS1_ANY
|| IsAbilityStatusProtected(battler)
|| IsAbilityStatusProtected(battler, ability)
|| gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD)
return FALSE;
return TRUE;
Expand Down
20 changes: 10 additions & 10 deletions src/battle_script_commands.c
Original file line number Diff line number Diff line change
Expand Up @@ -9320,25 +9320,25 @@ u32 IsFlowerVeilProtected(u32 battler)
return 0;
}

u32 IsLeafGuardProtected(u32 battler)
u32 IsLeafGuardProtected(u32 battler, u32 ability)
{
if (IsBattlerWeatherAffected(battler, B_WEATHER_SUN))
return GetBattlerAbility(battler) == ABILITY_LEAF_GUARD;
return ability == ABILITY_LEAF_GUARD;
else
return 0;
}

bool32 IsShieldsDownProtected(u32 battler)
bool32 IsShieldsDownProtected(u32 battler, u32 ability)
{
return (GetBattlerAbility(battler) == ABILITY_SHIELDS_DOWN
return (ability == ABILITY_SHIELDS_DOWN
&& GetFormIdFromFormSpeciesId(gBattleMons[battler].species) < GetFormIdFromFormSpeciesId(SPECIES_MINIOR_CORE_RED)); // Minior is not in core form
}

u32 IsAbilityStatusProtected(u32 battler)
u32 IsAbilityStatusProtected(u32 battler, u32 ability)
{
return IsFlowerVeilProtected(battler)
|| IsLeafGuardProtected(battler)
|| IsShieldsDownProtected(battler);
return IsLeafGuardProtected(battler, ability)
|| IsShieldsDownProtected(battler, ability)
|| IsFlowerVeilProtected(battler);
}

u32 GetHighestStatId(u32 battler)
Expand Down Expand Up @@ -9612,7 +9612,7 @@ static void Cmd_various(void)
case VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED:
{
VARIOUS_ARGS(const u8 *jumpInstr);
if (IsShieldsDownProtected(battler))
if (IsShieldsDownProtected(battler, GetBattlerAbility(battler)))
{
gBattlerAbility = battler;
gBattlescriptCurrInstr = cmd->jumpInstr;
Expand Down Expand Up @@ -11169,7 +11169,7 @@ static void Cmd_various(void)
case VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED:
{
VARIOUS_ARGS(const u8 *jumpInstr);
if (IsLeafGuardProtected(battler))
if (IsLeafGuardProtected(battler, GetBattlerAbility(battler)))
{
gBattlerAbility = battler;
gBattlescriptCurrInstr = cmd->jumpInstr;
Expand Down
14 changes: 7 additions & 7 deletions src/battle_util.c
Original file line number Diff line number Diff line change
Expand Up @@ -2687,7 +2687,7 @@ u8 DoBattlerEndTurnEffects(void)
if (!(gStatuses3[battler] & STATUS3_YAWN) && !(gBattleMons[battler].status1 & STATUS1_ANY)
&& battlerAbility != ABILITY_VITAL_SPIRIT
&& battlerAbility != ABILITY_INSOMNIA && !UproarWakeUpCheck(battler)
&& !IsLeafGuardProtected(battler))
&& !IsLeafGuardProtected(battler, battlerAbility))
{
CancelMultiTurnMoves(battler);
gEffectBattler = gBattlerTarget = battler;
Expand Down Expand Up @@ -6810,7 +6810,7 @@ bool32 CanBeSlept(u32 battler, u32 ability, enum SleepClauseBlock isBlockedBySle
|| gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD
|| gBattleMons[battler].status1 & STATUS1_ANY
|| IsAbilityOnSide(battler, ABILITY_SWEET_VEIL)
|| IsAbilityStatusProtected(battler)
|| IsAbilityStatusProtected(battler, ability)
|| IsBattlerTerrainAffected(battler, STATUS_FIELD_ELECTRIC_TERRAIN | STATUS_FIELD_MISTY_TERRAIN))
return FALSE;
return TRUE;
Expand All @@ -6825,7 +6825,7 @@ bool32 CanBePoisoned(u32 battlerAtk, u32 battlerDef, u32 defAbility)
|| defAbility == ABILITY_COMATOSE
|| defAbility == ABILITY_PURIFYING_SALT
|| IsAbilityOnSide(battlerDef, ABILITY_PASTEL_VEIL)
|| IsAbilityStatusProtected(battlerDef)
|| IsAbilityStatusProtected(battlerDef, defAbility)
|| IsBattlerTerrainAffected(battlerDef, STATUS_FIELD_MISTY_TERRAIN))
return FALSE;
return TRUE;
Expand All @@ -6841,7 +6841,7 @@ bool32 CanBeBurned(u32 battler, u32 ability)
|| ability == ABILITY_COMATOSE
|| ability == ABILITY_THERMAL_EXCHANGE
|| ability == ABILITY_PURIFYING_SALT
|| IsAbilityStatusProtected(battler)
|| IsAbilityStatusProtected(battler, ability)
|| IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN))
return FALSE;
return TRUE;
Expand All @@ -6855,7 +6855,7 @@ bool32 CanBeParalyzed(u32 battler, u32 ability)
|| ability == ABILITY_COMATOSE
|| ability == ABILITY_PURIFYING_SALT
|| gBattleMons[battler].status1 & STATUS1_ANY
|| IsAbilityStatusProtected(battler)
|| IsAbilityStatusProtected(battler, ability)
|| IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN))
return FALSE;
return TRUE;
Expand All @@ -6871,7 +6871,7 @@ bool32 CanBeFrozen(u32 battler)
|| ability == ABILITY_COMATOSE
|| ability == ABILITY_PURIFYING_SALT
|| gBattleMons[battler].status1 & STATUS1_ANY
|| IsAbilityStatusProtected(battler)
|| IsAbilityStatusProtected(battler, ability)
|| IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN))
return FALSE;
return TRUE;
Expand All @@ -6886,7 +6886,7 @@ bool32 CanGetFrostbite(u32 battler)
|| ability == ABILITY_COMATOSE
|| ability == ABILITY_PURIFYING_SALT
|| gBattleMons[battler].status1 & STATUS1_ANY
|| IsAbilityStatusProtected(battler)
|| IsAbilityStatusProtected(battler, ability)
|| IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN))
return FALSE;
return TRUE;
Expand Down

0 comments on commit b90b1e2

Please sign in to comment.