diff --git a/src/k_menufunc.c b/src/k_menufunc.c index 3250cff23..ae1d672ed 100644 --- a/src/k_menufunc.c +++ b/src/k_menufunc.c @@ -368,6 +368,8 @@ menu_t *M_SpecificMenuRestore(menu_t *torestore) || torestore == &PLAY_TimeAttackDef) { // Handle unlock restrictions + cupheader_t *currentcup = levellist.levelsearch.cup; + M_SetupGametypeMenu(-1); M_SetupRaceMenu(-1); @@ -382,15 +384,27 @@ menu_t *M_SpecificMenuRestore(menu_t *torestore) torestore = PLAY_LevelSelectDef.prevMenu; } } - else if (torestore == &PLAY_TimeAttackDef) + else { - M_PrepareTimeAttack(0); + if (currentcup != NULL && levellist.levelsearch.cup == NULL) + { + torestore = &PLAY_CupSelectDef; + } + else if (torestore == &PLAY_TimeAttackDef) + { + M_PrepareTimeAttack(0); + } } } else if (torestore == &EXTRAS_ReplayHutDef) { // Handle modifications to the folder while playing M_ReplayHut(0); + + if (demo.inreplayhut == false) + { + torestore = &EXTRAS_MainDef; + } } if (setup_numplayers == 0) diff --git a/src/menus/extras-replay-hut.c b/src/menus/extras-replay-hut.c index 2b96d118e..1131dff3a 100644 --- a/src/menus/extras-replay-hut.c +++ b/src/menus/extras-replay-hut.c @@ -116,12 +116,7 @@ void M_ReplayHut(INT32 choice) if (!preparefilemenu(false, true)) { M_StartMessage("No replays found.\n\nPress (B)\n", NULL, MM_NOTHING); - - if (restoreMenu == &EXTRAS_ReplayHutDef) - { - restoreMenu = &EXTRAS_MainDef; - } - + demo.inreplayhut = false; return; } else if (!demo.inreplayhut) diff --git a/src/menus/transient/level-select.c b/src/menus/transient/level-select.c index 8088909aa..1a123b8c1 100644 --- a/src/menus/transient/level-select.c +++ b/src/menus/transient/level-select.c @@ -321,10 +321,6 @@ boolean M_LevelListFromGametype(INT16 gt) if (currentvalid == false) { levellist.levelsearch.cup = NULL; - if (gt == -1 && restoreMenu != &PLAY_CupSelectDef) - { - restoreMenu = &PLAY_CupSelectDef; - } } cupgrid.numpages = (highestunlockedid / (CUPMENU_COLUMNS * CUPMENU_ROWS)) + 1;