From 1f97198267a4af39788246db08f583df0fc85682 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Fri, 15 Oct 2021 05:02:14 -0300 Subject: [PATCH] Oops, I forgot to take the opponent's side into account --- include/battle.h | 3 ++- src/battle_main.c | 6 ++++-- src/battle_script_commands.c | 3 ++- src/battle_util.c | 7 +++++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/include/battle.h b/include/battle.h index aaecb9ea11..7958c40f5b 100644 --- a/include/battle.h +++ b/include/battle.h @@ -908,6 +908,7 @@ extern u8 gBattleControllerData[MAX_BATTLERS_COUNT]; extern bool8 gHasFetchedBall; extern u8 gLastUsedBall; extern u16 gLastThrownBall; -extern bool8 gCanRetaliate; +extern bool8 gCanPlayerRetaliate; +extern bool8 gCanOpponentRetaliate; #endif // GUARD_BATTLE_H diff --git a/src/battle_main.c b/src/battle_main.c index 7d4ae76dda..ffb33da103 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -231,7 +231,8 @@ EWRAM_DATA struct TotemBoost gTotemBoosts[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA bool8 gHasFetchedBall = FALSE; EWRAM_DATA u8 gLastUsedBall = 0; EWRAM_DATA u16 gLastThrownBall = 0; -EWRAM_DATA bool8 gCanRetaliate = FALSE; +EWRAM_DATA bool8 gCanPlayerRetaliate = FALSE; +EWRAM_DATA bool8 gCanOpponentRetaliate = FALSE; // IWRAM common vars void (*gPreBattleCallback1)(void); @@ -2877,7 +2878,8 @@ static void BattleStartClearSetData(void) gHasFetchedBall = FALSE; gLastUsedBall = 0; - gCanRetaliate = FALSE; + gCanPlayerRetaliate = FALSE; + gCanOpponentRetaliate = FALSE; gBattlerAttacker = 0; gBattlerTarget = 0; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index b3ac598635..132a434cb3 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3499,13 +3499,14 @@ static void Cmd_tryfaintmon(void) if (gBattleResults.playerFaintCounter < 0xFF) gBattleResults.playerFaintCounter++; AdjustFriendshipOnBattleFaint(gActiveBattler); - gCanRetaliate = TRUE; + gCanPlayerRetaliate = TRUE; } else { if (gBattleResults.opponentFaintCounter < 0xFF) gBattleResults.opponentFaintCounter++; gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES, NULL); + gCanOpponentRetaliate = TRUE; } if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBattlerAttacker].hp != 0) { diff --git a/src/battle_util.c b/src/battle_util.c index d588d5b08f..689a846d64 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -7933,10 +7933,13 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe MulModifier(&modifier, UQ_4_12(2.0)); break; case EFFECT_RETALIATE: - if (gCanRetaliate) + if (gCanPlayerRetaliate || gCanOpponentRetaliate) { MulModifier(&modifier, UQ_4_12(2.0)); - gCanRetaliate = FALSE; + if (gCanPlayerRetaliate) + gCanPlayerRetaliate = FALSE; + else if (gCanOpponentRetaliate) + gCanOpponentRetaliate = FALSE; } break; case EFFECT_SOLARBEAM: