diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 823df36de1..4f0451883c 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -10524,7 +10524,8 @@ static void FinalizeCapture(void) { u32 ballId = ItemIdToBallId(gLastThrownBall); enum NationalDexOrder natDexNo = SpeciesToNationalPokedexNum(gBattleMons[gBattlerTarget].species); - if (GetConfig(B_CRITICAL_CAPTURE_IF_OWNED) >= GEN_9 && GetSetPokedexFlag(natDexNo, FLAG_GET_CAUGHT)) + if ((GetConfig(B_CRITICAL_CAPTURE_IF_OWNED) >= GEN_9 && GetSetPokedexFlag(natDexNo, FLAG_GET_CAUGHT)) + || IsCriticalCapture()) { gBattleSpritesDataPtr->animationData->isCriticalCapture = TRUE; gBattleSpritesDataPtr->animationData->criticalCaptureSuccess = TRUE; @@ -10907,6 +10908,9 @@ static void Cmd_handleballthrow(void) if (gBattleResults.catchAttempts[ballId] < 255) gBattleResults.catchAttempts[ballId]++; + gBattleSpritesDataPtr->animationData->isCriticalCapture = FALSE; + gBattleSpritesDataPtr->animationData->criticalCaptureSuccess = FALSE; + //Master Ball check occurs before critical capture check if (odds == CAPTURE_GUARANTEED) { @@ -10917,9 +10921,6 @@ static void Cmd_handleballthrow(void) u8 shakes; u8 maxShakes; - gBattleSpritesDataPtr->animationData->isCriticalCapture = FALSE; - gBattleSpritesDataPtr->animationData->criticalCaptureSuccess = FALSE; - if (CriticalCapture(odds)) { maxShakes = BALL_1_SHAKE; // critical capture doesn't guarantee capture @@ -10944,8 +10945,6 @@ static void Cmd_handleballthrow(void) if (shakes == maxShakes) // mon caught, copy of the code above { - if (IsCriticalCapture()) - gBattleSpritesDataPtr->animationData->criticalCaptureSuccess = TRUE; FinalizeCapture(); return; }