From 39b50d09dd9c18da8a0a81da355565338943c031 Mon Sep 17 00:00:00 2001 From: Bassoonian Date: Mon, 1 May 2023 11:19:10 +0200 Subject: [PATCH] Add missing CanGetFrostbite --- include/battle_util.h | 1 + src/battle_script_commands.c | 2 +- src/battle_util.c | 14 ++++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/include/battle_util.h b/include/battle_util.h index b83209a697..2644ca64a9 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -228,6 +228,7 @@ bool32 CanBePoisoned(u8 battlerAttacker, u8 battlerTarget); bool32 CanBeBurned(u8 battlerId); bool32 CanBeParalyzed(u8 battlerId); bool32 CanBeFrozen(u8 battlerId); +bool32 CanGetFrostbite(u8 battlerId); bool32 CanBeConfused(u8 battlerId); bool32 IsBattlerTerrainAffected(u8 battlerId, u32 terrainFlag); u32 GetBattlerFriendshipScore(u8 battlerId); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index fecea28927..d81b3575dd 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3212,7 +3212,7 @@ void SetMoveEffect(bool32 primary, u32 certain) } break; case STATUS1_FROSTBITE: - if (!CanBeFrozen(gEffectBattler)) + if (!CanGetFrostbite(gEffectBattler)) break; statusChanged = TRUE; diff --git a/src/battle_util.c b/src/battle_util.c index 98b0b6744f..aa3c1ecac8 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6507,6 +6507,20 @@ bool32 CanBeFrozen(u8 battlerId) return TRUE; } +bool32 CanGetFrostbite(u8 battlerId) +{ + u16 ability = GetBattlerAbility(battlerId); + if (IS_BATTLER_OF_TYPE(battlerId, TYPE_ICE) + || gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_SAFEGUARD + || ability == ABILITY_MAGMA_ARMOR + || ability == ABILITY_COMATOSE + || gBattleMons[battlerId].status1 & STATUS1_ANY + || IsAbilityStatusProtected(battlerId) + || IsBattlerTerrainAffected(battlerId, STATUS_FIELD_MISTY_TERRAIN)) + return FALSE; + return TRUE; +} + bool32 CanBeConfused(u8 battlerId) { if (GetBattlerAbility(battlerId) == ABILITY_OWN_TEMPO