# HG changeset patch
# User geNia
# Date 1599518250 14400
#      Mon Sep 07 18:37:30 2020 -0400
# Node ID 61393f3baeebdc077e6007e7499ff22d722ed44c
# Parent  fcb5f59ae8910fbde2ef473cf33b7ea104b43395
Made jumptics configurable by setting sv_jumptics cvar

diff -r fcb5f59ae891 -r 61393f3baeeb src/cl_main.cpp
--- a/src/cl_main.cpp	Thu Sep 03 10:28:04 2020 -0400
+++ b/src/cl_main.cpp	Mon Sep 07 18:37:30 2020 -0400
@@ -2353,6 +2353,8 @@
 	// see SERVERCOMMANDS_SetGameModeLimits.
 	sv_gravity.ResetToDefault();
 
+	sv_jumptics.ResetToDefault();
+
 	// If we're recording a demo, then finish it!
 	if ( CLIENTDEMO_IsRecording( ))
 		CLIENTDEMO_FinishRecording( );
@@ -5743,6 +5745,10 @@
 	Value.Float = pByteStream->ReadFloat();
 	sv_gravity.ForceSet( Value, CVAR_Float );
 
+	// [BB] Read in, and set the value for sv_gravity.
+	Value.Int = pByteStream->ReadByte();
+	sv_jumptics.ForceSet(Value, CVAR_Int);
+
 	// [BB] Read in, and set the value for sv_aircontrol.
 	Value.Float = pByteStream->ReadFloat();
 	sv_aircontrol.ForceSet( Value, CVAR_Float );
diff -r fcb5f59ae891 -r 61393f3baeeb src/p_mobj.cpp
--- a/src/p_mobj.cpp	Thu Sep 03 10:28:04 2020 -0400
+++ b/src/p_mobj.cpp	Mon Sep 07 18:37:30 2020 -0400
@@ -3147,7 +3147,7 @@
 					// The old behavior is necessary for existing jumpmaze wads.
 					if ( ( zacompatflags & ZACOMPATF_SKULLTAG_JUMPING ) || mo->player->jumpTics < 0 || mo->velz < minvel)
 					{ // delay any jumping for a short while
-						mo->player->jumpTics = 7;
+						mo->player->jumpTics = sv_jumptics;
 
 						// [Leo] Inform the client of the jumpTics change.
 						if ( NETWORK_GetState() == NETSTATE_SERVER )
diff -r fcb5f59ae891 -r 61393f3baeeb src/sv_commands.cpp
--- a/src/sv_commands.cpp	Thu Sep 03 10:28:04 2020 -0400
+++ b/src/sv_commands.cpp	Mon Sep 07 18:37:30 2020 -0400
@@ -2153,6 +2153,7 @@
 	// and the map has a custom gravity value in MAPINFO. level.gravity always contains the used gravity value,
 	// so we just send this one instead of sv_gravity.
 	command.addFloat( level.gravity );
+	command.addByte( sv_jumptics );
 	// [BB] sv_aircontrol needs to be handled similarly to sv_gravity.
 	command.addFloat( static_cast<float>(level.aircontrol) / 65536.f );
 	// [WS] Send in sv_coop_damagefactor.
diff -r fcb5f59ae891 -r 61393f3baeeb src/sv_main.cpp
--- a/src/sv_main.cpp	Thu Sep 03 10:28:04 2020 -0400
+++ b/src/sv_main.cpp	Mon Sep 07 18:37:30 2020 -0400
@@ -380,6 +380,25 @@
 		SERVERCOMMANDS_SetGameModeLimits();
 }
 
+//*****************************************************************************
+// Tics cooldown until actors can jump again
+//
+CUSTOM_CVAR(Int, sv_jumptics, 7, CVAR_ARCHIVE | CVAR_SERVERINFO)
+{
+	if (self < 0)
+	{
+		self = 0;
+	}
+	if (self > 35)
+	{
+		self = 35;
+	}
+
+	// [TP] The client also enforces command limits so this cvar must be synced.
+	if (NETWORK_GetState() == NETSTATE_SERVER)
+		SERVERCOMMANDS_SetGameModeLimits();
+}
+
 //*****************************************************************************
 //	FUNCTIONS
 
diff -r fcb5f59ae891 -r 61393f3baeeb src/sv_main.h
--- a/src/sv_main.h	Thu Sep 03 10:28:04 2020 -0400
+++ b/src/sv_main.h	Mon Sep 07 18:37:30 2020 -0400
@@ -562,6 +562,7 @@
 EXTERN_CVAR( Int, sv_queryignoretime )
 EXTERN_CVAR( Bool, sv_forcelogintojoin )
 EXTERN_CVAR( Bool, sv_limitcommands )
+EXTERN_CVAR( Int, sv_jumptics )
 
 // From sv_master.cpp
 EXTERN_CVAR( Bool, sv_updatemaster );
