diff --git a/src/d_main.c b/src/d_main.c index 7cbddf194..2f75bb5a9 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -1828,23 +1828,32 @@ void D_SRB2Main(void) newskill = (INT16)j; } - if (grandprixinfo.gp == true) + // Invalidate if locked. + if ((newskill >= KARTSPEED_HARD && !M_SecretUnlocked(SECRET_HARDSPEED, true)) + || (newskill >= KARTGP_MASTER && !M_SecretUnlocked(SECRET_MASTERMODE, true))) { - if (newskill == KARTGP_MASTER) - { - grandprixinfo.masterbots = true; - newskill = KARTSPEED_HARD; - } - - grandprixinfo.gamespeed = newskill; - } - else if (newskill == KARTGP_MASTER) - { - newskill = KARTSPEED_HARD; + newskill = -1; } if (newskill != -1) + { + if (grandprixinfo.gp == true) + { + if (newskill == KARTGP_MASTER) + { + grandprixinfo.masterbots = true; + newskill = KARTSPEED_HARD; + } + + grandprixinfo.gamespeed = newskill; + } + else if (newskill == KARTGP_MASTER) + { + newskill = KARTSPEED_HARD; + } + CV_SetValue(&cv_kartspeed, newskill); + } } if (server && (dedicated || !M_CheckParm("+map")))