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[] =