From 6544e95c01a56e8afcb06e9dfbfa09ab4f2b37c7 Mon Sep 17 00:00:00 2001 From: toaster Date: Sun, 4 Sep 2022 14:56:07 +0100 Subject: [PATCH] Rework gamespeed cvar handling a little bit. - Make the menu-only dummykartspeed and dummygpdifficulty cvars also affected by the unlock system. - Master mode is currently behind SECRET_HARDSPEED, this can be changed later when we're seriously thinking about unlock progression. - Complete forwardport of changes to cv_kartspeed from 1.4+, since I missed a spot previously. --- src/command.c | 25 +++++++++++++++++++++++-- src/command.h | 2 +- src/d_netcmd.c | 7 ------- src/k_menufunc.c | 7 ++----- 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/command.c b/src/command.c index acdc93d1c..c6e048fdb 100644 --- a/src/command.c +++ b/src/command.c @@ -82,6 +82,13 @@ CV_PossibleValue_t kartspeed_cons_t[] = { {KARTSPEED_HARD, "Hard"}, {0, NULL} }; +CV_PossibleValue_t gpdifficulty_cons_t[] = { + {KARTSPEED_EASY, "Easy"}, + {KARTSPEED_NORMAL, "Normal"}, + {KARTSPEED_HARD, "Hard"}, + {KARTGP_MASTER, "Master"}, + {0, NULL} +}; // Filter consvars by EXECVERSION // First implementation is 2 (1.0.2), so earlier configs default at 1 (1.0.0) @@ -1804,6 +1811,15 @@ static void CV_SetCVar(consvar_t *var, const char *value, boolean stealth) return; } + if (var == &cv_kartspeed && !M_SecretUnlocked(SECRET_HARDSPEED)) + { + if (!stricmp(value, "Hard") || atoi(value) >= KARTSPEED_HARD) + { + CONS_Printf(M_GetText("You haven't unlocked this yet!\n")); + return; + } + } + if (var == &cv_forceskin) { INT32 skin = R_SkinAvailable(value); @@ -2082,9 +2098,14 @@ void CV_AddValue(consvar_t *var, INT32 increment) return; } } - else if (var == &cv_kartspeed) + else if (var->PossibleValue == kartspeed_cons_t || var->PossibleValue == gpdifficulty_cons_t) { - max = (M_SecretUnlocked(SECRET_HARDSPEED) ? 3 : 2); + if (!M_SecretUnlocked(SECRET_HARDSPEED)) + { + max = KARTSPEED_NORMAL+1; + if (var->PossibleValue == kartspeed_cons_t) + max++; // Accommodate KARTSPEED_AUTO + } } #ifdef PARANOIA if (currentindice == -1) diff --git a/src/command.h b/src/command.h index 322892b74..9e52df9e4 100644 --- a/src/command.h +++ b/src/command.h @@ -175,7 +175,7 @@ extern CV_PossibleValue_t CV_Natural[]; #define KARTSPEED_NORMAL 1 #define KARTSPEED_HARD 2 #define KARTGP_MASTER 3 // Not a speed setting, gives the hardest speed with maxed out bots -extern CV_PossibleValue_t kartspeed_cons_t[]; +extern CV_PossibleValue_t kartspeed_cons_t[], gpdifficulty_cons_t[]; extern consvar_t cv_execversion; diff --git a/src/d_netcmd.c b/src/d_netcmd.c index c53235467..b7db898d3 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -5812,13 +5812,6 @@ static void KartFrantic_OnChange(void) static void KartSpeed_OnChange(void) { - if (!M_SecretUnlocked(SECRET_HARDSPEED) && cv_kartspeed.value == KARTSPEED_HARD) - { - CONS_Printf(M_GetText("You haven't earned this yet.\n")); - CV_StealthSet(&cv_kartspeed, cv_kartspeed.defaultvalue); - return; - } - if (K_CanChangeRules() == false) { return; diff --git a/src/k_menufunc.c b/src/k_menufunc.c index 1556bd60b..77a211953 100644 --- a/src/k_menufunc.c +++ b/src/k_menufunc.c @@ -187,9 +187,6 @@ static CV_PossibleValue_t dummyscramble_cons_t[] = {{0, "Random"}, {1, "Points"} static CV_PossibleValue_t dummystaff_cons_t[] = {{0, "MIN"}, {100, "MAX"}, {0, NULL}}; static CV_PossibleValue_t dummygametype_cons_t[] = {{0, "Race"}, {1, "Battle"}, {0, NULL}}; -static CV_PossibleValue_t dummygpdifficulty_cons_t[] = {{0, "Easy"}, {1, "Normal"}, {2, "Hard"}, {3, "Master"}, {0, NULL}}; -static CV_PossibleValue_t dummykartspeed_cons_t[] = {{-1, "Auto"}, {0, "Easy"}, {1, "Normal"}, {2, "Hard"}, {0, NULL}}; - //static consvar_t cv_dummymenuplayer = CVAR_INIT ("dummymenuplayer", "P1", CV_HIDDEN|CV_CALL, dummymenuplayer_cons_t, Dummymenuplayer_OnChange); static consvar_t cv_dummyteam = CVAR_INIT ("dummyteam", "Spectator", CV_HIDDEN, dummyteam_cons_t, NULL); //static cv_dummyspectate = CVAR_INITconsvar_t ("dummyspectate", "Spectator", CV_HIDDEN, dummyspectate_cons_t, NULL); @@ -204,8 +201,8 @@ consvar_t cv_dummyprofilename = CVAR_INIT ("dummyprofilename", "", CV_HIDDEN, NU consvar_t cv_dummyprofileplayername = CVAR_INIT ("dummyprofileplayername", "", CV_HIDDEN, NULL, NULL); consvar_t cv_dummyprofilekickstart = CVAR_INIT ("dummyprofilekickstart", "Off", CV_HIDDEN, CV_OnOff, NULL); -consvar_t cv_dummygpdifficulty = CVAR_INIT ("dummygpdifficulty", "Normal", CV_HIDDEN, dummygpdifficulty_cons_t, NULL); -consvar_t cv_dummykartspeed = CVAR_INIT ("dummykartspeed", "Auto", CV_HIDDEN, dummykartspeed_cons_t, NULL); +consvar_t cv_dummygpdifficulty = CVAR_INIT ("dummygpdifficulty", "Normal", CV_HIDDEN, gpdifficulty_cons_t, NULL); +consvar_t cv_dummykartspeed = CVAR_INIT ("dummykartspeed", "Auto", CV_HIDDEN, kartspeed_cons_t, NULL); consvar_t cv_dummygpencore = CVAR_INIT ("dummygpencore", "No", CV_HIDDEN, CV_YesNo, NULL); static void M_UpdateAddonsSearch(void);