From 06a9165f753063f2d4d4e01b9d04e92508965b90 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 18 Jan 2020 19:18:57 +0100 Subject: [PATCH] Fix Ice Body not working --- data/battle_scripts_1.s | 1 + src/battle_script_commands.c | 27 +++++++-------------------- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 463d23a250..286a224a2a 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -5111,6 +5111,7 @@ BattleScript_DamagingWeatherLoop:: hitanimation BS_ATTACKER goto BattleScript_DamagingWeatherHpChange BattleScript_DamagingWeatherHeal: + call BattleScript_AbilityPopUp printstring STRINGID_ICEBODYHPGAIN waitmessage 0x40 BattleScript_DamagingWeatherHpChange: diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 6199dd17d2..fb41226e49 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -8963,11 +8963,8 @@ static void Cmd_setsandstorm(void) static void Cmd_weatherdamage(void) { - if (!IsBattlerAlive(gBattlerAttacker) || !WEATHER_HAS_EFFECT) - { - gBattleMoveDamage = 0; - } - else + gBattleMoveDamage = 0; + if (IsBattlerAlive(gBattlerAttacker) && WEATHER_HAS_EFFECT) { u32 ability = GetBattlerAbility(gBattlerAttacker); if (gBattleWeather & WEATHER_SANDSTORM_ANY) @@ -8979,27 +8976,22 @@ static void Cmd_weatherdamage(void) && ability != ABILITY_SAND_FORCE && ability != ABILITY_SAND_RUSH && ability != ABILITY_OVERCOAT - && !(gStatuses3[gBattlerAttacker] & STATUS3_UNDERGROUND) - && !(gStatuses3[gBattlerAttacker] & STATUS3_UNDERWATER) + && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_SAFETY_GOOGLES) { gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; } - else - { - gBattleMoveDamage = 0; - } } if (gBattleWeather & WEATHER_HAIL_ANY) { if (ability == ABILITY_ICE_BODY - && !(gStatuses3[gBattlerAttacker] & STATUS3_UNDERGROUND) - && !(gStatuses3[gBattlerAttacker] & STATUS3_UNDERWATER) + && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) && !BATTLER_MAX_HP(gBattlerAttacker) - && !gStatuses3[gBattlerAttacker] & STATUS3_HEAL_BLOCK) + && !(gStatuses3[gBattlerAttacker] & STATUS3_HEAL_BLOCK)) { + gBattlerAbility = gBattlerAttacker; gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -9009,18 +9001,13 @@ static void Cmd_weatherdamage(void) && ability != ABILITY_SNOW_CLOAK && ability != ABILITY_OVERCOAT && ability != ABILITY_ICE_BODY - && !(gStatuses3[gBattlerAttacker] & STATUS3_UNDERGROUND) - && !(gStatuses3[gBattlerAttacker] & STATUS3_UNDERWATER) + && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_SAFETY_GOOGLES) { gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; } - else - { - gBattleMoveDamage = 0; - } } }