From 45275fee1707385480de6e9373d58829e0086586 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Sat, 13 Jul 2024 22:38:06 +0200 Subject: [PATCH] Fix Infinite Tera Orb racharging (#4863) * Fix Infinte Tera Orb charges * trainer_parties.h --- src/battle_terastal.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/battle_terastal.c b/src/battle_terastal.c index 9734833d4e..5f9277b025 100644 --- a/src/battle_terastal.c +++ b/src/battle_terastal.c @@ -63,19 +63,21 @@ bool32 CanTerastallize(u32 battler) { u32 holdEffect = GetBattlerHoldEffect(battler, FALSE); - if (GetBattlerSide(battler) == B_SIDE_PLAYER) + if (TESTING || GetBattlerSide(battler) == B_SIDE_OPPONENT) { - // Check if Player has Tera Orb and has charge. - if (!TESTING && !CheckBagHasItem(ITEM_TERA_ORB, 1)) - return FALSE; - - if (!TESTING - && !(B_FLAG_TERA_ORB_NO_COST != 0 && FlagGet(B_FLAG_TERA_ORB_NO_COST)) - && (battler == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && battler == B_POSITION_PLAYER_RIGHT))) - { - if (B_FLAG_TERA_ORB_CHARGED != 0 && !FlagGet(B_FLAG_TERA_ORB_CHARGED)) - return FALSE; - } + // Skip all other checks in this block, go to HasTrainerUsedGimmick + } + else if (!CheckBagHasItem(ITEM_TERA_ORB, 1)) + { + return FALSE; + } + else if (FlagGet(B_FLAG_TERA_ORB_NO_COST)) + { + // Tera Orb is not depleted, go to HasTrainerUsedGimmick + } + else if (!FlagGet(B_FLAG_TERA_ORB_CHARGED)) + { + return FALSE; } // Check if Trainer has already Terastallized.