From 67d007f4fb811b2e72a773fb282213b4dddd2741 Mon Sep 17 00:00:00 2001 From: PhallenTree <168426989+PhallenTree@users.noreply.github.com> Date: Wed, 16 Jul 2025 21:29:25 +0100 Subject: [PATCH] Fixes Grassy Terrain healing when Heal Blocked/Semi-Invulnerable (#7353) --- src/battle_end_turn.c | 8 +++++++- src/battle_message.c | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/battle_end_turn.c b/src/battle_end_turn.c index 6cf45ded4d..efc790aadd 100644 --- a/src/battle_end_turn.c +++ b/src/battle_end_turn.c @@ -490,10 +490,16 @@ static bool32 HandleEndTurnFirstEventBlock(u32 battler) gBattleStruct->eventBlockCounter++; break; case FIRST_EVENT_BLOCK_GRASSY_TERRAIN_HEAL: - if (gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN && IsBattlerAlive(battler) && !IsBattlerAtMaxHp(battler) && IsBattlerGrounded(battler)) + if (gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN + && IsBattlerAlive(battler) + && !IsBattlerAtMaxHp(battler) + && !(gStatuses3[battler] & (STATUS3_SEMI_INVULNERABLE | STATUS3_HEAL_BLOCK)) + && IsBattlerGrounded(battler)) { gBattlerAttacker = battler; gBattleStruct->moveDamage[battler] = -(GetNonDynamaxMaxHP(battler) / 16); + if (gBattleStruct->moveDamage[battler] == 0) + gBattleStruct->moveDamage[battler] = -1; BattleScriptExecute(BattleScript_GrassyTerrainHeals); effect = TRUE; } diff --git a/src/battle_message.c b/src/battle_message.c index 350cddd374..ab1ec0659f 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1205,7 +1205,8 @@ const u16 gGotBurnedStringIds[] = const u16 gGotFrostbiteStringIds[] = { - [B_MSG_STATUSED] = STRINGID_PKMNGOTFROSTBITE + [B_MSG_STATUSED] = STRINGID_PKMNGOTFROSTBITE, + [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNGOTFROSTBITE, }; const u16 gFrostbiteHealedStringIds[] =