From 4bc810207e15f6dc4469f43ec48c78a2a5401f50 Mon Sep 17 00:00:00 2001 From: yamamama Date: Mon, 16 Feb 2026 20:26:41 -0500 Subject: [PATCH] Add a customizable decay timer to the S-Monitor --- src/d_netcmd.c | 7 +++++-- src/d_netcmd.h | 1 + src/k_kart.c | 3 ++- src/k_kart.h | 1 + 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 81dd1c225..0aeee83e5 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -672,8 +672,11 @@ consvar_t cv_kartinvindamage = CVAR_INIT ("kartinvindamage", "Flip-over", CV_NET // How far the player must be from the cluster to roll an S-Monitor. static CV_PossibleValue_t smonitordist_cons_t[] = {{1, "MIN"}, {32000, "MAX"}, {0, NULL}}; -consvar_t cv_kartsmonitordist = CVAR_INIT ("smonitordist", "17000", CV_NETVAR|CV_CHEAT|CV_GUARD, smonitordist_cons_t, NULL); -consvar_t cv_kartsmonitor_decaydist = CVAR_INIT ("smonitor_decaydist", "2500", CV_NETVAR|CV_CHEAT|CV_GUARD, smonitordist_cons_t, NULL); +consvar_t cv_kartsmonitordist = CVAR_INIT ("smonitor_startdist", "17000", CV_NETVAR|CV_CHEAT|CV_GUARD, smonitordist_cons_t, NULL); +consvar_t cv_kartsmonitor_decaydist = CVAR_INIT ("smonitor_decaydist", "3600", CV_NETVAR|CV_CHEAT|CV_GUARD, smonitordist_cons_t, NULL); + +static CV_PossibleValue_t smonitordecaytime_cons_t[] = {{1, "MIN"}, {6, "MAX"}, {0, NULL}}; +consvar_t cv_kartsmonitor_decaytime = CVAR_INIT ("smonitor_decaytime", "2", CV_NETVAR|CV_CHEAT|CV_GUARD, smonitordecaytime_cons_t, NULL); // opinionated stuff for testing balance tweaks on the shields consvar_t cv_kartbubble_defense_canidle = CVAR_INIT ("kartbubble_defense_canidle", "On", CV_NETVAR, CV_OnOff, NULL); diff --git a/src/d_netcmd.h b/src/d_netcmd.h index be88e96a6..12f3a0e85 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -215,6 +215,7 @@ extern consvar_t cv_kartinvintheme; extern consvar_t cv_kartinvindamage; extern consvar_t cv_kartsmonitordist; extern consvar_t cv_kartsmonitor_decaydist; +extern consvar_t cv_kartsmonitor_decaytime; // opinionated stuff for testing extern consvar_t cv_kartbubble_defense_canidle; diff --git a/src/k_kart.c b/src/k_kart.c index 28e4b6e8e..65bb76cd1 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -437,6 +437,7 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartsmonitordist); CV_RegisterVar(&cv_kartsmonitor_decaydist); + CV_RegisterVar(&cv_kartsmonitor_decaytime); // experimental stuff CV_RegisterVar(&cv_kartbubble_defense_canidle); @@ -7471,7 +7472,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) } // Value to subtract from the S-Monitor timer. - INT16 smonitor_subtrahend = (pingame > 1) ? 3 : 1; + INT16 smonitor_subtrahend = (pingame > 1) ? SMONITORDECAYTIME : 1; if (player->distancefromcluster > SMONITORDECAYDIST) { diff --git a/src/k_kart.h b/src/k_kart.h index 2afbe2711..22ed4f94d 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -91,6 +91,7 @@ extern vector3_t clusterpoint, clusterdtf; // S-Monitor distance value #define SMONITORDIST CV_Get(&cv_kartsmonitordist) #define SMONITORDECAYDIST CV_Get(&cv_kartsmonitor_decaydist) +#define SMONITORDECAYTIME CV_Get(&cv_kartsmonitor_decaytime) // Precalculated constants for stacked boost diminishing // *Somewhat* matches old calc but doesn't use arrays, which makes it faster and more memory efficent