From 0ed8d09d4777608d7749a66d171c438fca655f0c Mon Sep 17 00:00:00 2001 From: WillKolada <57021938+WillKolada@users.noreply.github.com> Date: Fri, 31 May 2024 15:33:31 -0500 Subject: [PATCH] Revert Dynamax HP on fainting (#4681) * Revert Dynamax HP on fainting Calls UndoDynamax whenever a mon faints to ensure that its HP is reverted and the relevant data is cleared. Updates UndoDynamax to CalculateMonStats after applying the HP reversion to prevent fainted mons from retaining their boosted Max HP until the end of the battle. * Update src/battle_main.c --------- Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com> --- src/battle_dynamax.c | 1 + src/battle_main.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 7286045684..557ed604fe 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -207,6 +207,7 @@ void UndoDynamax(u16 battlerId) u16 mult = UQ_4_12(1.0/1.5); // placeholder gBattleMons[battlerId].hp = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_HP) * mult + 1) + UQ_4_12_ROUND); // round up SetMonData(mon, MON_DATA_HP, &gBattleMons[battlerId].hp); + CalculateMonStats(mon); } // Makes sure there are no Dynamax flags set, including on switch / faint. diff --git a/src/battle_main.c b/src/battle_main.c index 3bf3a3e638..0ab3a67fa8 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3677,6 +3677,9 @@ const u8* FaintClearSetData(u32 battler) gBattleStruct->zmove.active = FALSE; gBattleStruct->zmove.toBeUsed[battler] = MOVE_NONE; gBattleStruct->zmove.effect = EFFECT_HIT; + // Clear Dynamax data + UndoDynamax(battler); + return result; }