GetBattlerHoldEffect usage optimizations (#3330)

* GetBattlerHoldEffect optimizations

* Type fix
This commit is contained in:
Eduardo Quezada D'Ottone 2023-09-21 16:43:52 -03:00 committed by GitHub
parent 8bf8c9e7a7
commit f564d4492b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 8 deletions

View File

@ -11431,8 +11431,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr
{ {
bool32 certain = FALSE; bool32 certain = FALSE;
bool32 notProtectAffected = FALSE; bool32 notProtectAffected = FALSE;
u32 index, battler; u32 index, battler, battlerAbility, battlerHoldEffect;
u16 battlerAbility;
bool32 affectsUser = (flags & MOVE_EFFECT_AFFECTS_USER); bool32 affectsUser = (flags & MOVE_EFFECT_AFFECTS_USER);
bool32 mirrorArmored = (flags & STAT_CHANGE_MIRROR_ARMOR); bool32 mirrorArmored = (flags & STAT_CHANGE_MIRROR_ARMOR);
@ -11442,6 +11441,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr
battler = gBattlerTarget; battler = gBattlerTarget;
battlerAbility = GetBattlerAbility(battler); battlerAbility = GetBattlerAbility(battler);
battlerHoldEffect = GetBattlerHoldEffect(battler, TRUE);
gSpecialStatuses[battler].changedStatsBattlerId = gBattlerAttacker; gSpecialStatuses[battler].changedStatsBattlerId = gBattlerAttacker;
@ -11500,13 +11500,13 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr
gBattlescriptCurrInstr = BattleScript_ButItFailed; gBattlescriptCurrInstr = BattleScript_ButItFailed;
return STAT_CHANGE_DIDNT_WORK; return STAT_CHANGE_DIDNT_WORK;
} }
else if ((GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_CLEAR_AMULET else if ((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET
|| battlerAbility == ABILITY_CLEAR_BODY || battlerAbility == ABILITY_CLEAR_BODY
|| battlerAbility == ABILITY_FULL_METAL_BODY || battlerAbility == ABILITY_FULL_METAL_BODY
|| battlerAbility == ABILITY_WHITE_SMOKE) || battlerAbility == ABILITY_WHITE_SMOKE)
&& (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE) && (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE)
{ {
if (GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_CLEAR_AMULET) if (battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET)
{ {
RecordItemEffectBattle(battler, HOLD_EFFECT_CLEAR_AMULET); RecordItemEffectBattle(battler, HOLD_EFFECT_CLEAR_AMULET);
} }
@ -11521,7 +11521,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr
{ {
BattleScriptPush(BS_ptr); BattleScriptPush(BS_ptr);
gBattleScripting.battler = battler; gBattleScripting.battler = battler;
if (GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_CLEAR_AMULET) if (battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET)
{ {
gBattlescriptCurrInstr = BattleScript_ItemNoStatLoss; gBattlescriptCurrInstr = BattleScript_ItemNoStatLoss;
} }
@ -11591,7 +11591,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr
RecordAbilityBattle(battler, ABILITY_SHIELD_DUST); RecordAbilityBattle(battler, ABILITY_SHIELD_DUST);
return STAT_CHANGE_DIDNT_WORK; return STAT_CHANGE_DIDNT_WORK;
} }
else if (flags == 0 && GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_COVERT_CLOAK) else if (flags == 0 && battlerHoldEffect == HOLD_EFFECT_COVERT_CLOAK)
{ {
RecordItemEffectBattle(battler, HOLD_EFFECT_COVERT_CLOAK); RecordItemEffectBattle(battler, HOLD_EFFECT_COVERT_CLOAK);
return STAT_CHANGE_DIDNT_WORK; return STAT_CHANGE_DIDNT_WORK;

View File

@ -8288,7 +8288,9 @@ bool32 IsBattlerProtected(u8 battler, u16 move)
// Only called directly when calculating damage type effectiveness // Only called directly when calculating damage type effectiveness
static bool32 IsBattlerGrounded2(u8 battler, bool32 considerInverse) static bool32 IsBattlerGrounded2(u8 battler, bool32 considerInverse)
{ {
if (GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_IRON_BALL) u32 holdEffect = GetBattlerHoldEffect(battler, TRUE);
if (holdEffect == HOLD_EFFECT_IRON_BALL)
return TRUE; return TRUE;
if (gFieldStatuses & STATUS_FIELD_GRAVITY) if (gFieldStatuses & STATUS_FIELD_GRAVITY)
return TRUE; return TRUE;
@ -8302,7 +8304,7 @@ static bool32 IsBattlerGrounded2(u8 battler, bool32 considerInverse)
return FALSE; return FALSE;
if (gStatuses3[battler] & STATUS3_MAGNET_RISE) if (gStatuses3[battler] & STATUS3_MAGNET_RISE)
return FALSE; return FALSE;
if (GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_AIR_BALLOON) if (holdEffect == HOLD_EFFECT_AIR_BALLOON)
return FALSE; return FALSE;
if (GetBattlerAbility(battler) == ABILITY_LEVITATE) if (GetBattlerAbility(battler) == ABILITY_LEVITATE)
return FALSE; return FALSE;