From 39b63505f1861482403e85503cae36e90efebb75 Mon Sep 17 00:00:00 2001 From: toaster Date: Thu, 13 Oct 2022 17:37:35 +0100 Subject: [PATCH] Rework exit timing nittygritty G: can't change any of this for compat reasons - ~~exitcountdown is now used for both No Contest and regular exits~~ - ~~Set in P_DoPlayerExit~~ - ~~Handles sending XD_EXITLEVEL in P_Ticker~~ - ~~player->exiting is now 0 or 1 (we can make it a bool or a new timer later)~~ - ~~Fixes a longstanding bug where failing a GP round could restart multiple times~~ Also: - Fix a possible waiting-in-the-wings issue where mapchanges would occour client-side in K_CheckBumpers - Add `gptest` cheat - sets numlaps to 1 lap on mapload for quick but legitimate(ish) progression --- src/d_netcmd.c | 1 + src/d_netcmd.h | 1 + src/k_battle.c | 3 ++- src/k_kart.c | 8 +++++++- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index e667c3051..9740bdff0 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -633,6 +633,7 @@ consvar_t cv_kartdebugcheckpoint = CVAR_INIT ("kartdebugcheckpoint", "Off", 0, C consvar_t cv_kartdebugnodes = CVAR_INIT ("kartdebugnodes", "Off", 0, CV_OnOff, NULL); consvar_t cv_kartdebugcolorize = CVAR_INIT ("kartdebugcolorize", "Off", 0, CV_OnOff, NULL); consvar_t cv_kartdebugdirector = CVAR_INIT ("kartdebugdirector", "Off", 0, CV_OnOff, NULL); +consvar_t cv_gptest = CVAR_INIT ("gptest", "Off", CV_CHEAT|CV_NETVAR, CV_OnOff, NULL); static CV_PossibleValue_t votetime_cons_t[] = {{10, "MIN"}, {3600, "MAX"}, {0, NULL}}; consvar_t cv_votetime = CVAR_INIT ("votetime", "20", CV_NETVAR, votetime_cons_t, NULL); diff --git a/src/d_netcmd.h b/src/d_netcmd.h index f4f47c94c..3854d8886 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -224,6 +224,7 @@ extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartdebugdistribution, extern consvar_t cv_kartdebugshrink; extern consvar_t cv_kartdebugcheckpoint, cv_kartdebugnodes, cv_kartdebugcolorize, cv_kartdebugdirector; extern consvar_t cv_kartdebugwaypoints, cv_kartdebuglap, cv_kartdebugbot, cv_kartdebugcluster, cv_kartdebugrings; +extern consvar_t cv_gptest; extern consvar_t cv_itemfinder; diff --git a/src/k_battle.c b/src/k_battle.c index e37cfee39..f0a8a4e07 100644 --- a/src/k_battle.c +++ b/src/k_battle.c @@ -274,7 +274,8 @@ void K_CheckBumpers(void) if (!itembreaker && cv_kartitembreaker.value) { // Reset map to turn on battle capsules - D_MapChange(gamemap, gametype, encoremode, true, 0, false, false); + if (server) + D_MapChange(gamemap, gametype, encoremode, true, 0, false, false); } else { diff --git a/src/k_kart.c b/src/k_kart.c index 06945d6da..559fa9b14 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -6604,7 +6604,13 @@ UINT8 K_RaceLapCount(INT16 mapNum) return 0; } - if (cv_numlaps.value == -1 || modeattacking != ATTACKING_NONE) + if (cv_gptest.value) + { + // For testing + return 1; + } + + if (cv_numlaps.value == -1 || K_CanChangeRules() == false) { // Use map default return mapheaderinfo[mapNum]->numlaps;