diff --git a/src/command.c b/src/command.c index 651540b5f..24d58a28c 100644 --- a/src/command.c +++ b/src/command.c @@ -2241,6 +2241,11 @@ void CV_AddValue(consvar_t *var, INT32 increment) if (var->PossibleValue == kartspeed_cons_t) max++; // Accommodate KARTSPEED_AUTO } + else if (var->PossibleValue == gpdifficulty_cons_t + && !M_SecretUnlocked(SECRET_MASTERMODE, false)) + { + max = KARTSPEED_HARD+1; + } } #ifdef PARANOIA if (currentindice == -1) diff --git a/src/deh_soc.c b/src/deh_soc.c index 5da9a4173..1cf6f5d57 100644 --- a/src/deh_soc.c +++ b/src/deh_soc.c @@ -2280,10 +2280,10 @@ void readunlockable(MYFILE *f, INT32 num) unlockables[num].type = SECRET_FOLLOWER; else if (fastcmp(word2, "HARDSPEED")) unlockables[num].type = SECRET_HARDSPEED; + else if (fastcmp(word2, "MASTERMODE")) + unlockables[num].type = SECRET_MASTERMODE; else if (fastcmp(word2, "ENCORE")) unlockables[num].type = SECRET_ENCORE; - else if (fastcmp(word2, "LEGACYBOXRUMMAGE")) - unlockables[num].type = SECRET_LEGACYBOXRUMMAGE; else if (fastcmp(word2, "TIMEATTACK")) unlockables[num].type = SECRET_TIMEATTACK; else if (fastcmp(word2, "BREAKTHECAPSULES")) diff --git a/src/k_menudraw.c b/src/k_menudraw.c index 735f82134..5ad49a066 100644 --- a/src/k_menudraw.c +++ b/src/k_menudraw.c @@ -4711,8 +4711,8 @@ static void M_DrawChallengeTile(INT16 i, INT16 j, INT32 x, INT32 y, boolean hili case SECRET_CUP: categoryid = '4'; break; - //case SECRET_MASTERBOTS: case SECRET_HARDSPEED: + case SECRET_MASTERMODE: case SECRET_ENCORE: categoryid = '5'; break; @@ -4773,12 +4773,12 @@ static void M_DrawChallengeTile(INT16 i, INT16 j, INT32 x, INT32 y, boolean hili break; } - /*case SECRET_MASTERBOTS: - iconid = 4; - break;*/ case SECRET_HARDSPEED: iconid = 3; break; + case SECRET_MASTERMODE: + iconid = 4; + break; case SECRET_ENCORE: iconid = 5; break; @@ -5026,6 +5026,16 @@ static void M_DrawChallengePreview(INT32 x, INT32 y) specialmap = hardmapcache; break; } + case SECRET_MASTERMODE: + { + static UINT16 mastermapcache = NEXTMAP_INVALID; + if (mastermapcache > nummapheaders) + { + mastermapcache = G_RandMap(G_TOLFlag(GT_RACE), -1, 2, 0, false, NULL); + } + specialmap = mastermapcache; + break; + } case SECRET_ALTTITLE: { x = 8; @@ -5066,6 +5076,13 @@ static void M_DrawChallengePreview(INT32 x, INT32 y) W_CachePatchName(K_GetItemPatch(KITEM_ROCKETSNEAKER, false), PU_CACHE), NULL); } + else if (ref->type == SECRET_MASTERMODE) + { + V_DrawFixedPatch((x+40-25)<