From 0834bc0b30e33346a83696491e4cc9615263d7d1 Mon Sep 17 00:00:00 2001 From: toaster Date: Fri, 15 May 2020 21:32:54 +0100 Subject: [PATCH] * Swap location of Tutorial and Marathon Run, per sphere's suggestion. * Lock Marathon Run if Record Attack isn't available, to avoid confusing new players. --- src/m_menu.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/m_menu.c b/src/m_menu.c index 8e9bb87fd..e71c2cad4 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -764,8 +764,8 @@ static menuitem_t SP_MainMenu[] = {IT_CALL | IT_STRING, NULL, "Start Game", M_LoadGame, 76}, {IT_SECRET, NULL, "Record Attack", M_TimeAttack, 84}, {IT_SECRET, NULL, "NiGHTS Mode", M_NightsAttack, 92}, - {IT_CALL | IT_STRING, NULL, "Tutorial", M_StartTutorial, 100}, - {IT_CALL | IT_STRING | IT_CALL_NOTMODIFIED, NULL, "Marathon Run", M_Marathon, 108}, + {IT_CALL | IT_STRING | IT_CALL_NOTMODIFIED, NULL, "Marathon Run", M_Marathon, 100}, + {IT_CALL | IT_STRING, NULL, "Tutorial", M_StartTutorial, 108}, {IT_CALL | IT_STRING | IT_CALL_NOTMODIFIED, NULL, "Statistics", M_Statistics, 116} }; @@ -774,8 +774,8 @@ enum sploadgame, sprecordattack, spnightsmode, - sptutorial, spmarathon, + sptutorial, spstatistics }; @@ -8073,10 +8073,11 @@ static void M_SinglePlayerMenu(INT32 choice) SP_MainMenu[sptutorial].status = tutorialmap ? IT_CALL|IT_STRING : IT_NOTHING|IT_DISABLED; // If the FIRST stage immediately leads to the ending, or itself (which gets converted to the title screen in G_DoCompleted for marathonmode only), there's no point in having this option on the menu. You should use Record Attack in that circumstance, although if marathonnext is set this behaviour can be overridden if you make some weird mod that requires multiple playthroughs of the same map in sequence and has some in-level mechanism to break the cycle. - if (mapheaderinfo[spmarathon_start-1] + if (!M_SecretUnlocked(SECRET_RECORDATTACK) // also if record attack is locked + || (mapheaderinfo[spmarathon_start-1] && !mapheaderinfo[spmarathon_start-1]->marathonnext && (mapheaderinfo[spmarathon_start-1]->nextlevel == spmarathon_start - || mapheaderinfo[spmarathon_start-1]->nextlevel >= 1100)) + || mapheaderinfo[spmarathon_start-1]->nextlevel >= 1100))) SP_MainMenu[spmarathon].status = IT_NOTHING|IT_DISABLED; else SP_MainMenu[spmarathon].status = IT_CALL|IT_STRING|IT_CALL_NOTMODIFIED;