From 165e7502bc38232b769e306bab5f63e9663273b0 Mon Sep 17 00:00:00 2001 From: AlexOn1ine Date: Sun, 13 Jul 2025 16:21:37 +0200 Subject: [PATCH] Instant Win option in Battle Debug --- include/battle_main.h | 1 + src/battle_debug.c | 10 ++++++++++ src/battle_main.c | 7 +++++++ 3 files changed, 18 insertions(+) diff --git a/include/battle_main.h b/include/battle_main.h index 6367f7e0f4..bf8e88fc5d 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -116,6 +116,7 @@ u32 GeneratePersonalityForGender(u32 gender, u32 species); void CustomTrainerPartyAssignMoves(struct Pokemon *mon, const struct TrainerMon *partyEntry); bool32 CanPlayerForfeitNormalTrainerBattle(void); bool32 DidPlayerForfeitNormalTrainerBattle(void); +void BattleDebug_WonBattle(void); extern struct MultiPartnerMenuPokemon gMultiPartnerParty[MULTI_PARTY_SIZE]; diff --git a/src/battle_debug.c b/src/battle_debug.c index cd3b3cd253..e746ee619d 100644 --- a/src/battle_debug.c +++ b/src/battle_debug.c @@ -114,6 +114,7 @@ enum LIST_ITEM_AI_INFO, LIST_ITEM_AI_PARTY, LIST_ITEM_VARIOUS, + LIST_ITEM_INSTANT_WIN, LIST_ITEM_COUNT }; @@ -376,6 +377,7 @@ static const struct ListMenuItem sMainListItems[] = {COMPOUND_STRING("AI Info"), LIST_ITEM_AI_INFO}, {COMPOUND_STRING("AI Party"), LIST_ITEM_AI_PARTY}, {COMPOUND_STRING("Various"), LIST_ITEM_VARIOUS}, + {COMPOUND_STRING("Instant Win"), LIST_ITEM_INSTANT_WIN}, }; static const struct ListMenuItem sStatsListItems[] = @@ -1243,6 +1245,13 @@ static void Task_DebugMenuProcessInput(u8 taskId) SwitchToAiPartyView(taskId); return; } + else if (listItemId == LIST_ITEM_INSTANT_WIN && JOY_NEW(A_BUTTON)) + { + BattleDebug_WonBattle(); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskId].func = Task_DebugMenuFadeOut; + return; + } data->currentMainListItemId = listItemId; // Create the secondary menu list. @@ -1445,6 +1454,7 @@ static void CreateSecondaryListMenu(struct BattleDebugMenu *data) listTemplate.items = sSideStatusListItems; itemsCount = ARRAY_COUNT(sSideStatusListItems); break; + case LIST_ITEM_INSTANT_WIN: case LIST_ITEM_AI_MOVES_PTS: case LIST_ITEM_AI_INFO: return; diff --git a/src/battle_main.c b/src/battle_main.c index 22c27ea460..eeb9cd5065 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -6142,3 +6142,10 @@ bool32 DidPlayerForfeitNormalTrainerBattle(void) return (gBattleOutcome == B_OUTCOME_FORFEITED); } + +// Wins the battle instantly. Used in the battle debug with LIST_ITEM_INSTANT_WIN +void BattleDebug_WonBattle(void) +{ + gBattleOutcome |= B_OUTCOME_WON; + gBattleMainFunc = sEndTurnFuncsTable[gBattleOutcome & 0x7F]; +} \ No newline at end of file