diff --git a/src/battle_main.c b/src/battle_main.c index e023080d3e..24e3627e59 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3250,6 +3250,17 @@ static void BattleMainCB1(void) gBattlerControllerFuncs[battler](battler); } +static void ClearSetBScriptingStruct(void) +{ + // windowsType is set up earlier in BattleInitBgsAndWindows, so we need to save the value + u32 temp = gBattleScripting.windowsType; + memset(&gBattleScripting, 0, sizeof(gBattleScripting)); + + gBattleScripting.windowsType = temp; + gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle; + gBattleScripting.expOnCatch = (B_EXP_CATCH >= GEN_6); +} + static void BattleStartClearSetData(void) { s32 i; @@ -3263,10 +3274,7 @@ static void BattleStartClearSetData(void) memset(&gSideTimers, 0, sizeof(gSideTimers)); memset(&gWishFutureKnock, 0, sizeof(gWishFutureKnock)); memset(&gBattleResults, 0, sizeof(gBattleResults)); - memset(&gBattleScripting, 0, sizeof(gBattleScripting)); - - gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle; - gBattleScripting.expOnCatch = (B_EXP_CATCH >= GEN_6); + ClearSetBScriptingStruct(); for (i = 0; i < MAX_BATTLERS_COUNT; i++) {