diff --git a/src/cvars.cpp b/src/cvars.cpp index 4519bfe8e..f55dcd02b 100644 --- a/src/cvars.cpp +++ b/src/cvars.cpp @@ -1331,7 +1331,7 @@ consvar_t cv_chatwidth = Player("chatwidth", "150").min_max(64, 150); // old shit console chat. (mostly exists for stuff like terminal, not because I cared if anyone liked the old chat.) consvar_t cv_consolechat = Player("chatmode", "Yes").values({{0, "Yes"}, {2, "No"}}); -consvar_t cv_gamestochat = Player("gamestochat", "0").values(CV_Unsigned); +consvar_t cv_gamestochat = Player("gamestochat", "0").min_max(0, 99); void Mute_OnChange(void); consvar_t cv_mute = UnsavedNetVar("mute", "Off").on_off().onchange(Mute_OnChange); diff --git a/src/k_serverstats.c b/src/k_serverstats.c index 7ac610b0d..4e5177d32 100644 --- a/src/k_serverstats.c +++ b/src/k_serverstats.c @@ -282,7 +282,24 @@ void SV_BumpMatchStats(void) serverplayer_t *stat = SV_GetStatsByPlayerIndex(i); - if (!(players[i].pflags & PF_NOCONTEST)) + // It should never be advantageous to idle, only count rounds where the player accomplishes something. + // If you NO CONTESTed, assume no participation... + boolean participated = !(players[i].pflags & PF_NOCONTEST); + + if (gametyperules & GTR_CIRCUIT) + { + // ...unless you completed at least one lap... + if (players[i].laps > 1) + participated = true; + } + else if (gametyperules & GTR_POINTLIMIT) + { + // ...or scored at least 2 points. + if (players[i].roundscore > 1) + participated = true; + } + + if (participated) stat->finishedrounds++; } } \ No newline at end of file diff --git a/src/menus/options-server-1.c b/src/menus/options-server-1.c index 288fa3a47..e489045c8 100644 --- a/src/menus/options-server-1.c +++ b/src/menus/options-server-1.c @@ -81,6 +81,9 @@ menuitem_t OPTIONS_Server[] = {IT_STRING | IT_CVAR, "Chat Spam Protection", "Prevent too many messages from a single player.", NULL, {.cvar = &cv_chatspamprotection}, 0, 0}, + {IT_STRING | IT_CVAR, "Rounds Needed To Chat", "How many rounds players must complete before they can chat. Good vs. ban evaders.", + NULL, {.cvar = &cv_gamestochat}, 0, 0}, + {IT_SPACE | IT_DYBIGSPACE, NULL, NULL, NULL, {NULL}, 0, 0},