View Issue Details

IDProjectCategoryView StatusLast Update
0006242The Dark ModCodingpublic26.01.2023 20:18
ReporterDaft Mugi Assigned Tonbohr1more  
PrioritynormalSeveritynormalReproducibilityalways
Status suspendedResolutionopen 
Product VersionSVN 
Target VersionTDM 2.12Fixed in VersionTDM 2.12 
Summary0006242: cvar 'tdm_toggle_creep' does nothing
DescriptionThe cvar 'tdm_toggle_creep' does nothing.

game/gamesys/SysCvar.cpp
258:idCVar cv_tdm_creep_toggle( "tdm_toggle_creep", "0", CVAR_GAME | CVAR_BOOL, "Set to 1 to make creep toggleable." );

This is awkward, because 'tdm_toggle_creep' is available in the in-game console.

Proposal:
1. delete line
2. comment out line
TagsNo tags attached.

Relationships

related to 0000558 resolvednbohr1more Add ability to toggle creeping 
related to 0005320 resolvedAluminumHaste When Always Run is enabled, the Creep modifier does nothing 

Activities

nbohr1more

nbohr1more

23.01.2023 13:20

developer   ~0015853

This cvar used to work in 2.06. I wonder what broke it?
nbohr1more

nbohr1more

23.01.2023 15:51

developer   ~0015854

Just to be clear, this cvar should allow players to click the creep key once and you will remain in creep mode until you click it again.

You must pair this cvar with a key bind:

bind "<preferred key>" "toggle tdm_toggle_creep 0 1"

The default behavior requires you to hold-down the creep key to remain in creep mode.
Daft Mugi

Daft Mugi

23.01.2023 15:58

reporter   ~0015855

I searched for 'toggle_creep' throughout the codebase and found no reference to it other than that single line.

Did I miss something?

Also, there was a recent discussion about toggle creep:
https://forums.thedarkmod.com/index.php?/topic/21692-any-way-to-toggle-creep-instead-of-holding-down-ctrl/
nbohr1more

nbohr1more

23.01.2023 16:17

developer   ~0015856

Looks like someone reverted my code for some reason:

else if( AI_CREEP )
    {
        returnval = (isCrouched) ? m_stepvol_crouch_creep : m_stepvol_creep;
    }

Should look like:

else if( AI_CREEP || in_toggleCreep )
nbohr1more

nbohr1more

23.01.2023 16:27

developer   ~0015858

Nevermind, all the conditionals for "cv_tdm_creep_toggle.GetBool()" are intact.

Just need to update the thread and see what's happening if players implement things correctly.
Daft Mugi

Daft Mugi

23.01.2023 16:34

reporter   ~0015859

Oh, I see what happened.

The cvar is "tdm_toggle_creep" but the variable name is "cv_tdm_creep_toggle".
"toggle_creep" and "creep_toggle" are reversed. That's why my search failed.

It would be good to change that variable name to match the cvar name.
Daft Mugi

Daft Mugi

23.01.2023 16:47

reporter   ~0015861

Also, it would be good to change how this works.

bind "<preferred key>" "toggle tdm_toggle_creep 0 1"
That works differently than the other "tdm_toggle_*" cvars: tdm_toggle_crouch, tdm_toggle_sheath, pm_toggle_lean.

When tdm_toggle_creep is 1, the creep key should toggle creep on or off by setting a different variable.
This would work like toggle crouch.
When always run is enabled and creeping, bypass always run behavior and creep.

What do you think?
nbohr1more

nbohr1more

23.01.2023 16:51

developer   ~0015862

If you wish to offer a patch to change it, I would gladly review it.
My changes were just a way to offer the feature before 2.06 arrived.
Daft Mugi

Daft Mugi

23.01.2023 19:55

reporter   ~0015865

@nbohr1more All right. Done. That was more involved than I expected. =)

There are two patches: one for code, one for assets.

Note:
1. Converts creep from a button to an impulse.
2. When toggle creep is active and tdm_drag2_rigid_silentmode is set to 1, silent mode will be active. Just like holding down the creep key.
3. mainmenu_settings_controls.gui needs a "#str_" string for "Toggle Creep".
4. Players will need to rebind their creep key from "_button5" to "_creep". This shouldn't be much of an issue, because the player will see that Creep has become unbound in the settings menu and rebind it.
r10259-change-toggle-creep.diff (9,262 bytes)   
diff --git framework/Console.cpp framework/Console.cpp
index 7f68858..f139421 100644
--- framework/Console.cpp
+++ framework/Console.cpp
@@ -425,7 +425,6 @@ void idConsoleLocal::Close() {
 	displayFrac = 0;	// don't scroll to that point, go immediately
 
 	ClearNotifyLines();
-	cv_tdm_creep_toggle.SetBool( 0 );
 }
 
 /*
diff --git framework/UsercmdGen.cpp framework/UsercmdGen.cpp
index 33eefe8..50591be 100644
--- framework/UsercmdGen.cpp
+++ framework/UsercmdGen.cpp
@@ -164,7 +164,6 @@ userCmdString_t	userCmdStrings[] = {
 	// self-explanatory names
 	{ "_jump",			UB_UP },
 	{ "_parry",			UB_PARRY_MANIPULATE },
-	{ "_creep",			UB_CREEP },
 
 	{ "_weapon0",		UB_WEAPON0 },
 	{ "_weapon1",		UB_WEAPON1 },
@@ -198,6 +197,7 @@ userCmdString_t	userCmdStrings[] = {
 	{ "_inventory_group_next", UB_INVENTORY_GROUP_NEXT },
 	{ "_inventory_use",	UB_INVENTORY_USE },
 	{ "_inventory_drop",	UB_INVENTORY_DROP },
+	{ "_creep",	UB_CREEP },
 
 	// legacy names
 	{ "_moveUp",		UB_UP },
@@ -223,7 +223,7 @@ userCmdString_t	userCmdStrings[] = {
 	{ "_button2",		UB_BUTTON2 },
 	{ "_button3",		UB_BUTTON3 },
 	{ "_button4",		UB_BUTTON4 },
-	{ "_button5",		UB_CREEP },
+	{ "_button5",		UB_BUTTON5 },
 	{ "_button6",		UB_BUTTON6 },
 	{ "_button7",		UB_BUTTON7 },
 
@@ -280,7 +280,7 @@ userCmdString_t	userCmdStrings[] = {
 	{ "_impulse50",		UB_INVENTORY_GROUP_NEXT },
 	{ "_impulse51",		UB_INVENTORY_USE },
 	{ "_impulse52",		UB_INVENTORY_DROP },
-	{ "_impulse53",		UB_IMPULSE53 },
+	{ "_impulse53",		UB_CREEP },
 	{ "_impulse54",		UB_IMPULSE54 },
 	{ "_impulse55",		UB_IMPULSE55 },
 	{ "_impulse56",		UB_IMPULSE56 },
diff --git framework/UsercmdGen.h framework/UsercmdGen.h
index 03132d6..ab6d74e 100644
--- framework/UsercmdGen.h
+++ framework/UsercmdGen.h
@@ -49,7 +49,7 @@ typedef enum {
    UB_BUTTON2,
    UB_BUTTON3,
    UB_BUTTON4,
-   UB_CREEP,
+   UB_BUTTON5,
    UB_BUTTON6,
    UB_BUTTON7,
 
@@ -118,7 +118,7 @@ typedef enum {
    UB_INVENTORY_GROUP_NEXT,
    UB_INVENTORY_USE,
    UB_INVENTORY_DROP,
-   UB_IMPULSE53,
+   UB_CREEP,
    UB_IMPULSE54,
    UB_IMPULSE55,
    UB_IMPULSE56,
@@ -140,7 +140,7 @@ const int BUTTON_RUN			= BIT(1);
 const int BUTTON_ZOOM			= BIT(2);
 const int BUTTON_SCORES			= BIT(3);
 const int BUTTON_MLOOK			= BIT(4);
-const int BUTTON_CREEP			= BIT(5);
+const int BUTTON_5			= BIT(5);
 const int BUTTON_6				= BIT(6);
 const int BUTTON_7				= BIT(7);
 
@@ -190,6 +190,7 @@ enum {
 	IMPULSE_INVENTORY_GROUP_NEXT,
 	IMPULSE_INVENTORY_USE,
 	IMPULSE_INVENTORY_DROP,
+	IMPULSE_CREEP,
 	IMPULSE_MAX
 };
 
diff --git game/Grabber.cpp game/Grabber.cpp
index 8cabe6e..27ff7ca 100755
--- game/Grabber.cpp
+++ game/Grabber.cpp
@@ -378,7 +378,7 @@ void CGrabber::Update( idPlayer *player, bool hold, bool preservePosition )
 		//stgatilov #5599: new grabber, detect if we should set silent mode
 		switch (cv_drag_rigid_silentmode.GetInteger()) {
 			case 1:
-				if (player->usercmd.buttons & BUTTON_CREEP)
+				if (player->m_CreepIntent)
 					m_silentMode = true;
 				break;
 			case 2:
diff --git game/Player.cpp game/Player.cpp
index 2dc7dab..f9af53c 100644
--- game/Player.cpp
+++ game/Player.cpp
@@ -718,6 +718,8 @@ idPlayer::idPlayer() :
 	m_CrouchIntent			= false;
 	m_CrouchToggleBypassed	= false;
 
+	m_CreepIntent			= false;
+
 	m_LeanButtonTimeStamp	= 0;
 	m_InventoryOverlay		= -1;
 	objectivesOverlay		= -1;
@@ -2329,6 +2331,8 @@ void idPlayer::Save( idSaveGame *savefile ) const {
 	savefile->WriteBool( m_IdealCrouchState );
 	savefile->WriteBool( m_CrouchIntent );
 
+	savefile->WriteBool( m_CreepIntent );
+
 	savefile->WriteInt(m_InventoryOverlay);
 
 	savefile->WriteInt(m_WaitUntilReadyGuiHandle);
@@ -2678,6 +2682,8 @@ void idPlayer::Restore( idRestoreGame *savefile ) {
 	// stgatilov: no need to save it, but better reset it on load
 	m_CrouchToggleBypassed = false;
 
+	savefile->ReadBool( m_CreepIntent );
+
 	savefile->ReadInt(m_InventoryOverlay);
 
 	savefile->ReadInt(m_WaitUntilReadyGuiHandle);
@@ -3434,12 +3440,12 @@ void idPlayer::UpdateConditions( void )
 	AI_DEAD			= ( health <= 0 );
 	
 	// DarkMod: Catch the creep modifier
-	if (cv_tdm_creep_toggle.GetBool()){
+	if (m_CreepIntent) {
 		AI_CREEP = true;
 	}
 	else {
 		int creepLimit = cv_pm_creepmod.GetFloat() * 127;
-		AI_CREEP = (usercmd.buttons & BUTTON_CREEP) ||
+		AI_CREEP = m_CreepIntent ||
 			(idMath::Abs(usercmd.forwardmove) <= creepLimit && idMath::Abs(usercmd.rightmove) <= creepLimit);
 	}
 }
@@ -4934,7 +4940,7 @@ void idPlayer::BobCycle( const idVec3 &pushVelocity ) {
 		}
 
 		// greebo: is the player creeping? (Only kicks in when not running, run key cancels out creep key)
-		if ( (cv_tdm_creep_toggle.GetBool() || (usercmd.buttons & BUTTON_CREEP)) && !(usercmd.buttons & BUTTON_RUN)) 
+		if ( m_CreepIntent && !(usercmd.buttons & BUTTON_RUN) )
 		{
 			bobmove *= 0.5f * (1 - bobFrac);
 		}
@@ -5711,6 +5717,24 @@ void idPlayer::PerformImpulse( int impulse ) {
 		}
 		break;
 
+		case IMPULSE_CREEP:		// Creep
+		{
+			if (cv_tdm_toggle_creep.GetBool())
+			{
+					if (entityNumber == gameLocal.localClientNum)
+					{
+						m_CreepIntent = !m_CreepIntent;
+					}
+			}
+			else
+			{
+				m_CreepIntent = true;
+			}
+
+			m_ButtonStateTracker.StartTracking(impulse);
+		}
+		break;
+
 		case IMPULSE_MANTLE:
 		{
 			if ( entityNumber == gameLocal.localClientNum )
@@ -6048,6 +6072,13 @@ void idPlayer::PerformKeyRelease(int impulse, int holdTime)
 
 		break;
 
+		case IMPULSE_CREEP:		// TDM creep
+			if (!cv_tdm_toggle_creep.GetBool())
+			{
+				m_CreepIntent = false;
+			}
+		break;
+
 		case IMPULSE_FROB:		// TDM Use/Frob
 		{
 			PerformFrobKeyRelease(holdTime);
@@ -6467,7 +6498,7 @@ void idPlayer::AdjustSpeed( void )
 			speed = pm_noclipspeed.GetFloat() * cv_pm_runmod.GetFloat();
 			bobFrac = 0.0f;
 		} 
-		else if ((usercmd.buttons & BUTTON_CREEP) || cv_tdm_creep_toggle.GetBool())
+		else if (m_CreepIntent)
 		{
 			// slow "creep" noclip
 			speed = pm_noclipspeed.GetFloat() * cv_pm_creepmod.GetFloat();
@@ -6488,8 +6519,7 @@ void idPlayer::AdjustSpeed( void )
 
 		speed = walkSpeed * cv_pm_runmod.GetFloat();
 		// apply creep modifier; creep is on button_5
-		const bool bCreeping = (usercmd.buttons & BUTTON_CREEP) || cv_tdm_creep_toggle.GetBool();
-		if (bCreeping)
+		if (m_CreepIntent)
 		{
 			speed *= (cv_pm_running_creepmod.GetFloat());
 		}
@@ -6527,9 +6557,8 @@ void idPlayer::AdjustSpeed( void )
 		speed = pm_walkspeed.GetFloat();
 		bobFrac = 0.0f;
 
-		// apply creep modifier; creep is on button_5
-		const bool bCreeping = (usercmd.buttons & BUTTON_CREEP) || cv_tdm_creep_toggle.GetBool();
-		if(bCreeping)
+		// apply creep modifier
+		if (m_CreepIntent)
 		{
 			speed *= cv_pm_creepmod.GetFloat();
 		}		
@@ -6537,7 +6566,7 @@ void idPlayer::AdjustSpeed( void )
 		// STiFU #1932: Apply hinderance not only to max speed but to all speeds.
 		if (cv_pm_softhinderance_active.GetBool())
 		{
-			if (bCreeping)
+			if (m_CreepIntent)
 			{
 				speed *= (cv_pm_softhinderance_creep.GetFloat() * fCurrentHinderance 
 					+ 1.0f - cv_pm_softhinderance_creep.GetFloat());
diff --git game/Player.h game/Player.h
index 228d48f..a51a589 100644
--- game/Player.h
+++ game/Player.h
@@ -396,6 +396,10 @@ public:
 	// player has pressed toggle crouch while on a rope or ladder/vine.
 	bool					m_CrouchToggleBypassed;
 
+	// Daft Mugi: For new toggle creep, this is set to true when the
+	// player is holding the creep button or toggle creep is active.
+	bool					m_CreepIntent;
+
 	// STiFU: FrobHelper alpha calculation
 	CFrobHelper				m_FrobHelper;
 
diff --git game/gamesys/SysCvar.cpp game/gamesys/SysCvar.cpp
index 05a15de..0bc7994 100644
--- game/gamesys/SysCvar.cpp
+++ game/gamesys/SysCvar.cpp
@@ -253,7 +253,7 @@ idCVar cv_tdm_crouch_toggle_hold_time(	"tdm_crouch_toggle_hold_time",	"400",			C
 idCVar cv_tdm_reattach_delay(			"tdm_reattach_delay",			"100",			CVAR_GAME | CVAR_ARCHIVE | CVAR_FLOAT, "Delay (in ms) for reattaching to ropes/ladders after detaching using crouch." );
 
 // nbohr1more: #558 Toggle Creep
-idCVar cv_tdm_creep_toggle(			    "tdm_toggle_creep",			"0",			CVAR_GAME | CVAR_BOOL, "Set to 1 to make creep toggleable." );
+idCVar cv_tdm_toggle_creep(			    "tdm_toggle_creep",			"0",			CVAR_GAME | CVAR_ARCHIVE | CVAR_BOOL, "Set to 1 to make creep toggleable." );
 
 // #6232: Player choice of sheathe key behavior
 idCVar cv_tdm_toggle_sheathe(
diff --git game/gamesys/SysCvar.h game/gamesys/SysCvar.h
index 708363f..0d558ff 100644
--- game/gamesys/SysCvar.h
+++ game/gamesys/SysCvar.h
@@ -222,7 +222,7 @@ extern idCVar cv_tdm_crouch_toggle_hold_time;
 extern idCVar cv_tdm_reattach_delay;
 
 // nbohr1more: #558 TDM toggle creep
-extern idCVar cv_tdm_creep_toggle;
+extern idCVar cv_tdm_toggle_creep;
 
 // #6232: Player choice of sheathe key behavior
 extern idCVar cv_tdm_toggle_sheathe;
diff --git game/physics/Physics_Player.cpp game/physics/Physics_Player.cpp
index f3aa820..e610f28 100644
--- game/physics/Physics_Player.cpp
+++ game/physics/Physics_Player.cpp
@@ -915,7 +915,7 @@ void idPhysics_Player::PlaySwimBurstSound()
 		return;
 
 	// speed mod
-	if ((pPlayer->usercmd.buttons & BUTTON_CREEP) || cv_tdm_creep_toggle.GetBool())
+	if (pPlayer->m_CreepIntent)
 	{
 		sSound += "_creep";
 	} else if (pPlayer->usercmd.buttons & BUTTON_RUN)
r16758-assets-change-toggle-creep.diff (7,350 bytes)   
diff --git default.cfg default.cfg
index 6df96d5..d5590e0 100644
--- default.cfg
+++ default.cfg
@@ -68,7 +68,7 @@ bind "LEFTARROW" "_left"
 bind "RIGHTARROW" "_right"
 bind "ALT" "_strafe"
 // creep
-bind "CTRL" "_button5"
+bind "CTRL" "_creep"
 bind "SHIFT" "_speed"
 bind "DEL" "_lookdown"
 bind "PGDN" "_lookup"
diff --git guis/mainmenu_settings_controls.gui guis/mainmenu_settings_controls.gui
index f6ad6f6..9273cd9 100644
--- guis/mainmenu_settings_controls.gui
+++ guis/mainmenu_settings_controls.gui
@@ -553,7 +553,7 @@ windowDef SettingsControlsCanvas
 		bindDef CreepKey
 		{
 			rect		SETTINGS_X_OFFSET_CONTROLS, 85, 110, MM_LINE_H
-			bind		"_button5"
+			bind		"_creep"
 			BINDINGS_TEXT
 		}
 
@@ -1209,107 +1209,100 @@ windowDef SettingsControlsCanvas
 		windowDef SCGeneralText1
 		{
 			rect		TEXT_X_OFFSET, 0, 230, MM_LINE_H
-			text		"#str_02382"	// Toggle Crouch
+			text		"#str_02383"	// Always Run
 			SETTINGS_TEXT
 		}
 
 		windowDef SCGeneralText2
 		{
 			rect		TEXT_X_OFFSET, 17, 230, MM_LINE_H
-			text		"#str_02383"	// Always Run
+			text		"Toggle Creep"	// Toggle Creep
 			SETTINGS_TEXT
 		}
 
 		windowDef SCGeneralText3
 		{
 			rect		TEXT_X_OFFSET, 34, 230, MM_LINE_H
-			text		"#str_02384"	// Toggle Lean
+			text		"#str_02382"	// Toggle Crouch
 			SETTINGS_TEXT
 		}
 
 		windowDef SCGeneralText4
 		{
 			rect		TEXT_X_OFFSET, 51, 230, MM_LINE_H
-			text		"#str_02385"	// Free Look
+			text		"#str_02384"	// Toggle Lean
 			SETTINGS_TEXT
 		}
 
-		windowDef SCGeneralText41
+		windowDef SCGeneralText5
 		{
 			rect		TEXT_X_OFFSET, 68, 230, MM_LINE_H
 			text		"#str_menu_ToggleSheathe"	// Toggle Sheathe
 			SETTINGS_TEXT
 		}
 
-		windowDef SCGeneralText5
+		windowDef SCGeneralText6
 		{
 			rect		TEXT_X_OFFSET, 85, 230, MM_LINE_H
-			text		"#str_02441"		// Invert Mouse
+			text		"#str_02385"	// Free Look
 			SETTINGS_TEXT
 		}
 
-		windowDef SCGeneralText6
+		windowDef SCGeneralText7
 		{
 			rect		TEXT_X_OFFSET, 102, 230, MM_LINE_H
-			text		"#str_02442"		// Smooth Mouse
+			text		"#str_02441"		// Invert Mouse
 			SETTINGS_TEXT
 		}
 
-		windowDef SCGeneralText7
+		windowDef SCGeneralText8
 		{
 			rect		TEXT_X_OFFSET, 119, 230, MM_LINE_H
-			text		"#str_02443"		// Mouse Sensitivity
+			text		"#str_02442"		// Smooth Mouse
 			SETTINGS_TEXT
 		}
 
-		/*windowDef SCGeneralText8
-		{
-			rect		TEXT_X_OFFSET, 119, 230, MM_LINE_H
-			text		"Empty"
-			SETTINGS_TEXT
-		}*/
-
 		windowDef SCGeneralText9
 		{
 			rect		TEXT_X_OFFSET, 136, 230, MM_LINE_H
-			text		"#str_07312"		// Objectives
+			text		"#str_02443"		// Mouse Sensitivity
 			SETTINGS_TEXT
 		}
 
 		windowDef SCGeneralText10
 		{
 			rect		TEXT_X_OFFSET, 153, 230, MM_LINE_H
-			text		"#str_07178"	// Quicksave
+			text		"#str_07312"		// Objectives
 			SETTINGS_TEXT
 		}
 
 		windowDef SCGeneralText11
 		{
 			rect		TEXT_X_OFFSET, 170, 230, MM_LINE_H
-			text		"#str_07177"	// Quickload
+			text		"#str_07178"	// Quicksave
 			SETTINGS_TEXT
 		}
 
 		windowDef SCGeneralText12
 		{
 			rect		TEXT_X_OFFSET, 187, 230, MM_LINE_H
- 			text		"#str_02917"	// Save Screenshot
+			text		"#str_07177"	// Quickload
 			SETTINGS_TEXT
 		}
 
-		/*windowDef SCGeneralText13
+		windowDef SCGeneralText13
 		{
-			rect		TEXT_X_OFFSET, 203, 230, MM_LINE_H
-			text		"Empty"
+			rect		TEXT_X_OFFSET, 204, 230, MM_LINE_H
+ 			text		"#str_02917"	// Save Screenshot
 			SETTINGS_TEXT
-		}*/
+		}
 
 		choiceDef SCGeneralBind1
 		{
 			rect		SETTINGS_X_OFFSET, 0, 80, MM_LINE_H
 			choices		"#str_07300"		// Disabled;Enabled
 			values		"0;1"
-			cvar		"tdm_toggle_crouch"
+			cvar		"in_alwaysRun"
 			CHOICE_DEF
 		}
 
@@ -1318,7 +1311,7 @@ windowDef SettingsControlsCanvas
 			rect		SETTINGS_X_OFFSET, 17, 80, MM_LINE_H
 			choices		"#str_07300"		// Disabled;Enabled
 			values		"0;1"
-			cvar		"in_alwaysRun"
+			cvar		"tdm_toggle_creep"
 			CHOICE_DEF
 		}
 
@@ -1327,7 +1320,7 @@ windowDef SettingsControlsCanvas
 			rect		SETTINGS_X_OFFSET, 34, 80, MM_LINE_H
 			choices		"#str_07300"		// Disabled;Enabled
 			values		"0;1"
-			cvar		"pm_lean_toggle"
+			cvar		"tdm_toggle_crouch"
 			CHOICE_DEF
 		}
 
@@ -1336,11 +1329,11 @@ windowDef SettingsControlsCanvas
 			rect		SETTINGS_X_OFFSET, 51, 80, MM_LINE_H
 			choices		"#str_07300"		// Disabled;Enabled
 			values		"0;1"
-			cvar		"in_freeLook"
+			cvar		"pm_lean_toggle"
 			CHOICE_DEF
 		}
 
-		choiceDef SCGeneralBind41
+		choiceDef SCGeneralBind5
 		{
 			rect		SETTINGS_X_OFFSET, 68, 80, MM_LINE_H
 			choices		"#str_07300"		// Disabled;Enabled
@@ -1349,9 +1342,18 @@ windowDef SettingsControlsCanvas
 			CHOICE_DEF
 		}
 
-		choiceDef SCGeneralBind5
+		choiceDef SCGeneralBind6
 		{
 			rect		SETTINGS_X_OFFSET, 85, 80, MM_LINE_H
+			choices		"#str_07300"		// Disabled;Enabled
+			values		"0;1"
+			cvar		"in_freeLook"
+			CHOICE_DEF
+		}
+
+		choiceDef SCGeneralBind7
+		{
+			rect		SETTINGS_X_OFFSET, 102, 80, MM_LINE_H
 			choices		"#str_04221"		// No;Yes
 			values		"0.022;-0.022"
 			cvar		"m_pitch"
@@ -1360,7 +1362,7 @@ windowDef SettingsControlsCanvas
 
 		windowDef SmoothMouseSlider
 		{
-			rect		SETTINGS_X_OFFSET_CONTROLS_GENERAL + 10, 107, 128, MM_SLIDER_H
+			rect		SETTINGS_X_OFFSET_CONTROLS_GENERAL + 10, 124, 128, MM_SLIDER_H
 			background	"guis/assets/mainmenu/buttons_settingsmenu/slider_bg"
 			matcolor	0, 0, 0, 1
 			noevents	1
@@ -1368,7 +1370,7 @@ windowDef SettingsControlsCanvas
 
 		sliderDef SmoothMouse
 		{
-			rect		SETTINGS_X_OFFSET_CONTROLS_GENERAL + 10, 107, 71, 8
+			rect		SETTINGS_X_OFFSET_CONTROLS_GENERAL + 10, 124, 71, 8
 			forecolor	1, .8, .8, .85
 			matcolor	1, 1, 1, 1
 			low		1
@@ -1380,7 +1382,7 @@ windowDef SettingsControlsCanvas
 
 		windowDef SensitivitySlider
 		{
-			rect		SETTINGS_X_OFFSET_CONTROLS_GENERAL + 10, 124, 128, MM_SLIDER_H
+			rect		SETTINGS_X_OFFSET_CONTROLS_GENERAL + 10, 141, 128, MM_SLIDER_H
 			background	"guis/assets/mainmenu/buttons_settingsmenu/slider_bg"
 			matcolor	0, 0, 0, 1
 			noevents	1
@@ -1388,7 +1390,7 @@ windowDef SettingsControlsCanvas
 
 		sliderDef MouseSensitivity
 		{
-			rect		SETTINGS_X_OFFSET_CONTROLS_GENERAL + 10, 124, 71, 8
+			rect		SETTINGS_X_OFFSET_CONTROLS_GENERAL + 10, 141, 71, 8
 			forecolor	1, .8, .8, .85
 			matcolor	1, 1, 1, 1
 			low		1
@@ -1398,46 +1400,32 @@ windowDef SettingsControlsCanvas
 			cvar		"sensitivity"
 		}
 
-		/*bindDef SCGeneralBind8
-		{
-			rect		SETTINGS_X_OFFSET_CONTROLS_GENERAL, 119, 110, MM_LINE_H
-			bind		"_impulse51"
-			BINDINGS_TEXT
-		}*/
-
-		bindDef SCGeneralBind9
-		{
-			rect		SETTINGS_X_OFFSET_CONTROLS, 136, 110, MM_LINE_H
-			bind		"_impulse19"
-			BINDINGS_TEXT
-		}
-
 		bindDef SCGeneralBind10
 		{
 			rect		SETTINGS_X_OFFSET_CONTROLS, 153, 110, MM_LINE_H
-			bind		"savegame quick"
+			bind		"_impulse19"
 			BINDINGS_TEXT
 		}
 
 		bindDef SCGeneralBind11
 		{
 			rect		SETTINGS_X_OFFSET_CONTROLS, 170, 110, MM_LINE_H
-			bind		"loadgame quick"
+			bind		"savegame quick"
 			BINDINGS_TEXT
 		}
 
 		bindDef SCGeneralBind12
 		{
 			rect		SETTINGS_X_OFFSET_CONTROLS, 187, 110, MM_LINE_H
-			bind		"screenshot"
+			bind		"loadgame quick"
 			BINDINGS_TEXT
 		}
 
-		/*bindDef SCGeneralBind13
+		bindDef SCGeneralBind13
 		{
-			rect		SETTINGS_X_OFFSET_CONTROLS, 203, 110, MM_LINE_H
-			bind		"none"
+			rect		SETTINGS_X_OFFSET_CONTROLS, 204, 110, MM_LINE_H
+			bind		"screenshot"
 			BINDINGS_TEXT
-		}*/
+		}
 	}
 }
toggle-creep-menu.jpg (306,020 bytes)
Daft Mugi

Daft Mugi

23.01.2023 20:41

reporter   ~0015866

Attached v2 of code patch, because I found some extraneous code.

1. Apply r10259-remove-extraneous-code.diff after r10259-change-toggle-creep.diff (version 1).
2. Or, only apply r10259-change-toggle-creep-v2.diff (version 2).
r10259-remove-extraneous-code.diff (741 bytes)   
diff --git game/Player.cpp game/Player.cpp
index f9af53c..baf93a9 100644
--- game/Player.cpp
+++ game/Player.cpp
@@ -3439,15 +3439,9 @@ void idPlayer::UpdateConditions( void )
 	AI_RUN = ( usercmd.buttons & BUTTON_RUN ) && true ;
 	AI_DEAD			= ( health <= 0 );
 	
-	// DarkMod: Catch the creep modifier
-	if (m_CreepIntent) {
-		AI_CREEP = true;
-	}
-	else {
-		int creepLimit = cv_pm_creepmod.GetFloat() * 127;
-		AI_CREEP = m_CreepIntent ||
-			(idMath::Abs(usercmd.forwardmove) <= creepLimit && idMath::Abs(usercmd.rightmove) <= creepLimit);
-	}
+	int creepLimit = cv_pm_creepmod.GetFloat() * 127;
+	AI_CREEP = m_CreepIntent ||
+		(idMath::Abs(usercmd.forwardmove) <= creepLimit && idMath::Abs(usercmd.rightmove) <= creepLimit);
 }
 
 /*
r10259-change-toggle-creep-v2.diff (9,450 bytes)   
diff --git framework/Console.cpp framework/Console.cpp
index 7f68858..f139421 100644
--- framework/Console.cpp
+++ framework/Console.cpp
@@ -425,7 +425,6 @@ void idConsoleLocal::Close() {
 	displayFrac = 0;	// don't scroll to that point, go immediately
 
 	ClearNotifyLines();
-	cv_tdm_creep_toggle.SetBool( 0 );
 }
 
 /*
diff --git framework/UsercmdGen.cpp framework/UsercmdGen.cpp
index 33eefe8..50591be 100644
--- framework/UsercmdGen.cpp
+++ framework/UsercmdGen.cpp
@@ -164,7 +164,6 @@ userCmdString_t	userCmdStrings[] = {
 	// self-explanatory names
 	{ "_jump",			UB_UP },
 	{ "_parry",			UB_PARRY_MANIPULATE },
-	{ "_creep",			UB_CREEP },
 
 	{ "_weapon0",		UB_WEAPON0 },
 	{ "_weapon1",		UB_WEAPON1 },
@@ -198,6 +197,7 @@ userCmdString_t	userCmdStrings[] = {
 	{ "_inventory_group_next", UB_INVENTORY_GROUP_NEXT },
 	{ "_inventory_use",	UB_INVENTORY_USE },
 	{ "_inventory_drop",	UB_INVENTORY_DROP },
+	{ "_creep",	UB_CREEP },
 
 	// legacy names
 	{ "_moveUp",		UB_UP },
@@ -223,7 +223,7 @@ userCmdString_t	userCmdStrings[] = {
 	{ "_button2",		UB_BUTTON2 },
 	{ "_button3",		UB_BUTTON3 },
 	{ "_button4",		UB_BUTTON4 },
-	{ "_button5",		UB_CREEP },
+	{ "_button5",		UB_BUTTON5 },
 	{ "_button6",		UB_BUTTON6 },
 	{ "_button7",		UB_BUTTON7 },
 
@@ -280,7 +280,7 @@ userCmdString_t	userCmdStrings[] = {
 	{ "_impulse50",		UB_INVENTORY_GROUP_NEXT },
 	{ "_impulse51",		UB_INVENTORY_USE },
 	{ "_impulse52",		UB_INVENTORY_DROP },
-	{ "_impulse53",		UB_IMPULSE53 },
+	{ "_impulse53",		UB_CREEP },
 	{ "_impulse54",		UB_IMPULSE54 },
 	{ "_impulse55",		UB_IMPULSE55 },
 	{ "_impulse56",		UB_IMPULSE56 },
diff --git framework/UsercmdGen.h framework/UsercmdGen.h
index 03132d6..ab6d74e 100644
--- framework/UsercmdGen.h
+++ framework/UsercmdGen.h
@@ -49,7 +49,7 @@ typedef enum {
    UB_BUTTON2,
    UB_BUTTON3,
    UB_BUTTON4,
-   UB_CREEP,
+   UB_BUTTON5,
    UB_BUTTON6,
    UB_BUTTON7,
 
@@ -118,7 +118,7 @@ typedef enum {
    UB_INVENTORY_GROUP_NEXT,
    UB_INVENTORY_USE,
    UB_INVENTORY_DROP,
-   UB_IMPULSE53,
+   UB_CREEP,
    UB_IMPULSE54,
    UB_IMPULSE55,
    UB_IMPULSE56,
@@ -140,7 +140,7 @@ const int BUTTON_RUN			= BIT(1);
 const int BUTTON_ZOOM			= BIT(2);
 const int BUTTON_SCORES			= BIT(3);
 const int BUTTON_MLOOK			= BIT(4);
-const int BUTTON_CREEP			= BIT(5);
+const int BUTTON_5			= BIT(5);
 const int BUTTON_6				= BIT(6);
 const int BUTTON_7				= BIT(7);
 
@@ -190,6 +190,7 @@ enum {
 	IMPULSE_INVENTORY_GROUP_NEXT,
 	IMPULSE_INVENTORY_USE,
 	IMPULSE_INVENTORY_DROP,
+	IMPULSE_CREEP,
 	IMPULSE_MAX
 };
 
diff --git game/Grabber.cpp game/Grabber.cpp
index 8cabe6e..27ff7ca 100755
--- game/Grabber.cpp
+++ game/Grabber.cpp
@@ -378,7 +378,7 @@ void CGrabber::Update( idPlayer *player, bool hold, bool preservePosition )
 		//stgatilov #5599: new grabber, detect if we should set silent mode
 		switch (cv_drag_rigid_silentmode.GetInteger()) {
 			case 1:
-				if (player->usercmd.buttons & BUTTON_CREEP)
+				if (player->m_CreepIntent)
 					m_silentMode = true;
 				break;
 			case 2:
diff --git game/Player.cpp game/Player.cpp
index 2dc7dab..baf93a9 100644
--- game/Player.cpp
+++ game/Player.cpp
@@ -718,6 +718,8 @@ idPlayer::idPlayer() :
 	m_CrouchIntent			= false;
 	m_CrouchToggleBypassed	= false;
 
+	m_CreepIntent			= false;
+
 	m_LeanButtonTimeStamp	= 0;
 	m_InventoryOverlay		= -1;
 	objectivesOverlay		= -1;
@@ -2329,6 +2331,8 @@ void idPlayer::Save( idSaveGame *savefile ) const {
 	savefile->WriteBool( m_IdealCrouchState );
 	savefile->WriteBool( m_CrouchIntent );
 
+	savefile->WriteBool( m_CreepIntent );
+
 	savefile->WriteInt(m_InventoryOverlay);
 
 	savefile->WriteInt(m_WaitUntilReadyGuiHandle);
@@ -2678,6 +2682,8 @@ void idPlayer::Restore( idRestoreGame *savefile ) {
 	// stgatilov: no need to save it, but better reset it on load
 	m_CrouchToggleBypassed = false;
 
+	savefile->ReadBool( m_CreepIntent );
+
 	savefile->ReadInt(m_InventoryOverlay);
 
 	savefile->ReadInt(m_WaitUntilReadyGuiHandle);
@@ -3433,15 +3439,9 @@ void idPlayer::UpdateConditions( void )
 	AI_RUN = ( usercmd.buttons & BUTTON_RUN ) && true ;
 	AI_DEAD			= ( health <= 0 );
 	
-	// DarkMod: Catch the creep modifier
-	if (cv_tdm_creep_toggle.GetBool()){
-		AI_CREEP = true;
-	}
-	else {
-		int creepLimit = cv_pm_creepmod.GetFloat() * 127;
-		AI_CREEP = (usercmd.buttons & BUTTON_CREEP) ||
-			(idMath::Abs(usercmd.forwardmove) <= creepLimit && idMath::Abs(usercmd.rightmove) <= creepLimit);
-	}
+	int creepLimit = cv_pm_creepmod.GetFloat() * 127;
+	AI_CREEP = m_CreepIntent ||
+		(idMath::Abs(usercmd.forwardmove) <= creepLimit && idMath::Abs(usercmd.rightmove) <= creepLimit);
 }
 
 /*
@@ -4934,7 +4934,7 @@ void idPlayer::BobCycle( const idVec3 &pushVelocity ) {
 		}
 
 		// greebo: is the player creeping? (Only kicks in when not running, run key cancels out creep key)
-		if ( (cv_tdm_creep_toggle.GetBool() || (usercmd.buttons & BUTTON_CREEP)) && !(usercmd.buttons & BUTTON_RUN)) 
+		if ( m_CreepIntent && !(usercmd.buttons & BUTTON_RUN) )
 		{
 			bobmove *= 0.5f * (1 - bobFrac);
 		}
@@ -5711,6 +5711,24 @@ void idPlayer::PerformImpulse( int impulse ) {
 		}
 		break;
 
+		case IMPULSE_CREEP:		// Creep
+		{
+			if (cv_tdm_toggle_creep.GetBool())
+			{
+					if (entityNumber == gameLocal.localClientNum)
+					{
+						m_CreepIntent = !m_CreepIntent;
+					}
+			}
+			else
+			{
+				m_CreepIntent = true;
+			}
+
+			m_ButtonStateTracker.StartTracking(impulse);
+		}
+		break;
+
 		case IMPULSE_MANTLE:
 		{
 			if ( entityNumber == gameLocal.localClientNum )
@@ -6048,6 +6066,13 @@ void idPlayer::PerformKeyRelease(int impulse, int holdTime)
 
 		break;
 
+		case IMPULSE_CREEP:		// TDM creep
+			if (!cv_tdm_toggle_creep.GetBool())
+			{
+				m_CreepIntent = false;
+			}
+		break;
+
 		case IMPULSE_FROB:		// TDM Use/Frob
 		{
 			PerformFrobKeyRelease(holdTime);
@@ -6467,7 +6492,7 @@ void idPlayer::AdjustSpeed( void )
 			speed = pm_noclipspeed.GetFloat() * cv_pm_runmod.GetFloat();
 			bobFrac = 0.0f;
 		} 
-		else if ((usercmd.buttons & BUTTON_CREEP) || cv_tdm_creep_toggle.GetBool())
+		else if (m_CreepIntent)
 		{
 			// slow "creep" noclip
 			speed = pm_noclipspeed.GetFloat() * cv_pm_creepmod.GetFloat();
@@ -6488,8 +6513,7 @@ void idPlayer::AdjustSpeed( void )
 
 		speed = walkSpeed * cv_pm_runmod.GetFloat();
 		// apply creep modifier; creep is on button_5
-		const bool bCreeping = (usercmd.buttons & BUTTON_CREEP) || cv_tdm_creep_toggle.GetBool();
-		if (bCreeping)
+		if (m_CreepIntent)
 		{
 			speed *= (cv_pm_running_creepmod.GetFloat());
 		}
@@ -6527,9 +6551,8 @@ void idPlayer::AdjustSpeed( void )
 		speed = pm_walkspeed.GetFloat();
 		bobFrac = 0.0f;
 
-		// apply creep modifier; creep is on button_5
-		const bool bCreeping = (usercmd.buttons & BUTTON_CREEP) || cv_tdm_creep_toggle.GetBool();
-		if(bCreeping)
+		// apply creep modifier
+		if (m_CreepIntent)
 		{
 			speed *= cv_pm_creepmod.GetFloat();
 		}		
@@ -6537,7 +6560,7 @@ void idPlayer::AdjustSpeed( void )
 		// STiFU #1932: Apply hinderance not only to max speed but to all speeds.
 		if (cv_pm_softhinderance_active.GetBool())
 		{
-			if (bCreeping)
+			if (m_CreepIntent)
 			{
 				speed *= (cv_pm_softhinderance_creep.GetFloat() * fCurrentHinderance 
 					+ 1.0f - cv_pm_softhinderance_creep.GetFloat());
diff --git game/Player.h game/Player.h
index 228d48f..a51a589 100644
--- game/Player.h
+++ game/Player.h
@@ -396,6 +396,10 @@ public:
 	// player has pressed toggle crouch while on a rope or ladder/vine.
 	bool					m_CrouchToggleBypassed;
 
+	// Daft Mugi: For new toggle creep, this is set to true when the
+	// player is holding the creep button or toggle creep is active.
+	bool					m_CreepIntent;
+
 	// STiFU: FrobHelper alpha calculation
 	CFrobHelper				m_FrobHelper;
 
diff --git game/gamesys/SysCvar.cpp game/gamesys/SysCvar.cpp
index 05a15de..0bc7994 100644
--- game/gamesys/SysCvar.cpp
+++ game/gamesys/SysCvar.cpp
@@ -253,7 +253,7 @@ idCVar cv_tdm_crouch_toggle_hold_time(	"tdm_crouch_toggle_hold_time",	"400",			C
 idCVar cv_tdm_reattach_delay(			"tdm_reattach_delay",			"100",			CVAR_GAME | CVAR_ARCHIVE | CVAR_FLOAT, "Delay (in ms) for reattaching to ropes/ladders after detaching using crouch." );
 
 // nbohr1more: #558 Toggle Creep
-idCVar cv_tdm_creep_toggle(			    "tdm_toggle_creep",			"0",			CVAR_GAME | CVAR_BOOL, "Set to 1 to make creep toggleable." );
+idCVar cv_tdm_toggle_creep(			    "tdm_toggle_creep",			"0",			CVAR_GAME | CVAR_ARCHIVE | CVAR_BOOL, "Set to 1 to make creep toggleable." );
 
 // #6232: Player choice of sheathe key behavior
 idCVar cv_tdm_toggle_sheathe(
diff --git game/gamesys/SysCvar.h game/gamesys/SysCvar.h
index 708363f..0d558ff 100644
--- game/gamesys/SysCvar.h
+++ game/gamesys/SysCvar.h
@@ -222,7 +222,7 @@ extern idCVar cv_tdm_crouch_toggle_hold_time;
 extern idCVar cv_tdm_reattach_delay;
 
 // nbohr1more: #558 TDM toggle creep
-extern idCVar cv_tdm_creep_toggle;
+extern idCVar cv_tdm_toggle_creep;
 
 // #6232: Player choice of sheathe key behavior
 extern idCVar cv_tdm_toggle_sheathe;
diff --git game/physics/Physics_Player.cpp game/physics/Physics_Player.cpp
index f3aa820..e610f28 100644
--- game/physics/Physics_Player.cpp
+++ game/physics/Physics_Player.cpp
@@ -915,7 +915,7 @@ void idPhysics_Player::PlaySwimBurstSound()
 		return;
 
 	// speed mod
-	if ((pPlayer->usercmd.buttons & BUTTON_CREEP) || cv_tdm_creep_toggle.GetBool())
+	if (pPlayer->m_CreepIntent)
 	{
 		sSound += "_creep";
 	} else if (pPlayer->usercmd.buttons & BUTTON_RUN)
Daft Mugi

Daft Mugi

23.01.2023 21:33

reporter   ~0015868

I'm going to explore a different way of doing the patch that keeps it as a button.
That may require less of a code change.
If successful, I'll post that.
Daft Mugi

Daft Mugi

23.01.2023 21:45

reporter   ~0015869

Nope. That's not going to work. It's better as an impulse as far as I can tell.
nbohr1more

nbohr1more

24.01.2023 02:16

developer   ~0015871

Source revision 10260

Assets revision 16760
Daft Mugi

Daft Mugi

24.01.2023 04:35

reporter   ~0015873

Thanks!

Could you please post an SVN assets diff here, since I don't have read access to the SVN assets?
Daft Mugi

Daft Mugi

24.01.2023 04:47

reporter   ~0015874

For the code, there's a small edit to the comments that can be made to remove references to the old "button_5" to reduce confusion for future coders.
r10260-edit-comments.diff (676 bytes)   
diff --git game/Player.cpp game/Player.cpp
index 1d2712a..c6f71dd 100644
--- game/Player.cpp
+++ game/Player.cpp
@@ -6512,7 +6512,7 @@ void idPlayer::AdjustSpeed( void )
 		float walkSpeed = pm_walkspeed.GetFloat();
 
 		speed = walkSpeed * cv_pm_runmod.GetFloat();
-		// apply creep modifier; creep is on button_5
+		// apply creep modifier
 		if (m_CreepIntent)
 		{
 			speed *= (cv_pm_running_creepmod.GetFloat());
@@ -6551,7 +6551,7 @@ void idPlayer::AdjustSpeed( void )
 		speed = pm_walkspeed.GetFloat();
 		bobFrac = 0.0f;
 
-		// apply creep modifier; creep is on button_5
+		// apply creep modifier
 		if (m_CreepIntent)
 		{
 			speed *= cv_pm_creepmod.GetFloat();
r10260-edit-comments.diff (676 bytes)   
nbohr1more

nbohr1more

24.01.2023 12:31

developer   ~0015875

Source Rev 10261

Also attached modified assets
default.cfg (3,652 bytes)   
unbindall
// use inventory item
bind "ENTER" "_impulse51"
bind "ESCAPE" "togglemenu"
bind "SPACE" "_moveup"
// console
bind "^" "_impulse0"
// next inv group
bind "-" "_impulse50"
bind "0" "_impulse10"
bind "1" "_impulse1"
bind "2" "_impulse2"
bind "3" "_impulse3"
bind "4" "_impulse4"
bind "5" "_impulse5"
bind "6" "_impulse6"
bind "7" "_impulse7"
bind "8" "_impulse8"
bind "9" "_impulse9"
// prev inv group
bind "=" "_impulse49"
// previous item
bind "[" "_impulse48"
bind "\" "_mlook"
// next item
bind "]" "_impulse47"
bind "a" "_moveleft"
// crouch
bind "x" "_impulse23"
bind "d" "_moveright"
// Lean Right 
bind "e" "_impulse46"
// lean forward
bind "f" "_impulse44"
// Readables
bind "i" "inventory_cycle_group '#str_02391'"
// spyglass
bind "g" "inventory_use '#str_02396'"
// compass
bind "v" "inventory_hotkey '#str_02397'"
// lantern
bind "l" "inventory_use '#str_02395'"
// maps
bind "m" "inventory_cycle_maps"
// objectives
bind "o" "_impulse19"
// keys
bind "k" "inventory_cycle_group '#str_02392'"
// lockpicks
bind "p" "inventory_cycle_group '#str_02389'"
// lean left
bind "q" "_impulse45"
// inventory use item
bind "u" "_impulse51"
// Inventory Drop item
bind "r" "_impulse52"
bind "s" "_back"
bind "w" "_forward"
// Mantle (without jumping)
bind "c" "_impulse24"
bind "y" "clientMessageMode 1"
bind "z" "_zoom"
bind "BACKSPACE" "inventory_hotkey"
bind "PAUSE" "pause"
bind "UPARROW" "_forward"
bind "DOWNARROW" "_back"
bind "LEFTARROW" "_left"
bind "RIGHTARROW" "_right"
bind "ALT" "_strafe"
// creep
bind "CTRL" "_creep"
bind "SHIFT" "_speed"
bind "DEL" "_lookdown"
bind "PGDN" "_lookup"
bind "END" "_impulse18"
bind "F3" "_impulse17"
bind "F5" "savegame quick"
bind "F6" "_impulse20"
bind "F7" "_impulse22"
bind "F9" "loadgame quick"
bind "F12" "screenshot"
bind "MOUSE1" "_attack"
// frob
bind "MOUSE2" "_impulse41"
bind "MOUSE3" "_zoom"
bind "MWHEELDOWN" "_impulse14"
bind "MWHEELUP" "_impulse15"

// Gamepad bindings
unbindPad

// MODIFIER KEY
bindPadButton MODIFIER PAD_L2

// ATTACK
bindPadButton MOD_PRESS PAD_R2 "_attack"
bindPadButton MOD_PRESS PAD_R1 "_parry"
bindPadButton PRESS PAD_X "_attack"

// WEAPONS
bindPadButton MOD_LONG_PRESS PAD_UP "_weapon0"
bindPadButton MOD_PRESS PAD_UP "_weapon_next"
bindPadButton MOD_PRESS PAD_DOWN "_weapon_prev"
bindPadButton MOD_PRESS PAD_LEFT "_weapon1"
bindPadButton MOD_LONG_PRESS PAD_LEFT "_weapon2"
bindPadButton MOD_PRESS PAD_RIGHT "_weapon3"
bindPadButton MOD_LONG_PRESS PAD_RIGHT "_weapon4"

// MOVEMENT / INTERACTION
bindPadButton PRESS PAD_A "_jump"
bindPadButton PRESS PAD_B "_crouch"
bindPadButton LONG_PRESS PAD_B "_mantle"
bindPadButton PRESS PAD_L1 "_lean_left"
bindPadButton PRESS PAD_R1 "_lean_right"
bindPadButton PRESS PAD_L3 "_speed"
bindPadButton PRESS PAD_R2 "_frob"

// INVENTORY
bindPadButton PRESS PAD_Y "_inventory_use"
bindPadButton LONG_PRESS PAD_Y "_inventory_grid"
bindPadButton PRESS PAD_UP "_inventory_prev"
bindPadButton PRESS PAD_DOWN "_inventory_next"
// cycle keys
bindPadButton PRESS PAD_LEFT "inventory_cycle_group '#str_02392'"
// cycle picks
bindPadButton PRESS PAD_RIGHT "inventory_cycle_group '#str_02389'"
bindPadButton LONG_PRESS PAD_UP "inventory_hotkey ''"
bindPadButton LONG_PRESS PAD_DOWN "_inventory_drop"
// spyglass
bindPadButton LONG_PRESS PAD_R3 "inventory_use '#str_02396'"
// lantern
bindPadButton MOD_LONG_PRESS PAD_R3 "inventory_use '#str_02395'"

// MISC
bindPadButton PRESS PAD_BACK "_objectives"
bindPadButton LONG_PRESS PAD_BACK "savegame quick"
bindPadButton PRESS PAD_START "escape"
default.cfg (3,652 bytes)   
mainmenu_settings_controls.gui (30,814 bytes)   
/* =============================================================================================
 *
 * This file is part of The Dark Mod's Main Menu GUI
 *
 * Mission Authors: DO NOT EDIT, INCLUDE OR OVERRIDE THIS FILE IN YOUR MISSION PK4.
 *
 * ============================================================================================= */

#define SETTINGS_CONTROLS_FIRST_ROW_Y 130
#define SETTINGS_CONTROLS_SECOND_ROW_Y 147

windowDef SettingsControlsCanvas
{
	rect		280, 0, 320, 640
	visible		0
	SETTINGS_BACKGROUND( "guis/assets/mainmenu/settings_controls_watermark" )

	// Settings controls page selection
	windowDef SettingsControlsPageSelect
	{
		rect 0,0,0,0
		visible 1
		notime 1

		onTime 0
		{
			set "cmd" "log 'SettingsControlsPageSelect called.'";

			// First, set all to invisible
			set "SCMovementParent::visible" 0;
			set "SCWeaponsParent::visible" 0;
			set "SCToolsParent::visible" 0;
			set "SCActionsParent::visible" 0;
			set "SCInventoryParent::visible" 0;
			set "SCGeneralParent::visible" 0;

			set "SettingsMovementText::forecolor" SNORMAL_COLOR;
			set "SettingsMovementHText::forecolor" SINVISIBLE;
			set "SettingsActionsText::forecolor" SNORMAL_COLOR;
			set "SettingsActionsHText::forecolor" SINVISIBLE;
			set "SettingsInventoryText::forecolor" SNORMAL_COLOR;
			set "SettingsInventoryHText::forecolor" SINVISIBLE;
			set "SettingsWeaponsText::forecolor" SNORMAL_COLOR;
			set "SettingsWeaponsHText::forecolor" SINVISIBLE;
			set "SettingsToolsText::forecolor" SNORMAL_COLOR;
			set "SettingsToolsHText::forecolor" SINVISIBLE;
			set "SettingsGeneralText::forecolor" SNORMAL_COLOR;
			set "SettingsGeneralHText::forecolor" SINVISIBLE;

			// Adjust the button position and width according to the language
			set "gui::movement_pos"		"#str_02280";
			set "gui::actions_pos"		"#str_02281";
			set "gui::inventory_pos"	"#str_02282";
			set "gui::weapons_pos"		"#str_02283";
			set "gui::general_pos"		"#str_02284";
			set "gui::tools_pos"		"#str_02285";
			set "gui::movement_width"	"#str_02286";
			set "gui::actions_width"	"#str_02287";
			set "gui::inventory_width"	"#str_02288";
			set "gui::weapons_width"	"#str_02289";
			set "gui::general_width"	"#str_02290";
			set "gui::tools_width"		"#str_02291";

			// Then select the desired page
			if ("gui::controlspage" == CONTROLS_PAGE_NONE)
			{
				set "cmd" "log 'Selecting CONTROLS_PAGE_NONE.'";
			}
			else if ("gui::controlspage" == CONTROLS_PAGE_MOVEMENT)
			{
				set "cmd" "log 'Selecting CONTROLS_PAGE_MOVEMENT.'";

				set "SCMovementParent::visible" 1;
				set "SettingsMovementText::forecolor" SBOLDGLOW_WHITE_COLOR;
				set "SettingsMovementHText::forecolor" SGLOW_DARKRED_COLOR;
			}
			else if ("gui::controlspage" == CONTROLS_PAGE_ACTIONS)
			{
				set "cmd" "log 'Selecting CONTROLS_PAGE_ACTIONS.'";

				set "SCActionsParent::visible" 1;
				set "SettingsActionsText::forecolor" SBOLDGLOW_WHITE_COLOR;
				set "SettingsActionsHText::forecolor" SGLOW_DARKRED_COLOR;
			}
			else if ("gui::controlspage" == CONTROLS_PAGE_INVENTORY)
			{
				set "cmd" "log 'Selecting CONTROLS_PAGE_INVENTORY.'";

				set "SCInventoryParent::visible" 1;
				set "SettingsInventoryText::forecolor" SBOLDGLOW_WHITE_COLOR;
				set "SettingsInventoryHText::forecolor" SGLOW_DARKRED_COLOR;
			}
			else if ("gui::controlspage" == CONTROLS_PAGE_WEAPONS)
			{
				set "cmd" "log 'Selecting CONTROLS_PAGE_WEAPONS.'";

				set "SCWeaponsParent::visible" 1;
				set "SettingsWeaponsText::forecolor" SBOLDGLOW_WHITE_COLOR;
				set "SettingsWeaponsHText::forecolor" SGLOW_DARKRED_COLOR;
			}
			else if ("gui::controlspage" == CONTROLS_PAGE_TOOLS)
			{
				set "cmd" "log 'Selecting CONTROLS_PAGE_TOOLS.'";

				set "SCToolsParent::visible" 1;
				set "SettingsToolsText::forecolor" SBOLDGLOW_WHITE_COLOR;
				set "SettingsToolsHText::forecolor" SGLOW_DARKRED_COLOR;
			}
			else if ("gui::controlspage" == CONTROLS_PAGE_GENERAL)
			{
				set "cmd" "log 'Selecting CONTROLS_PAGE_GENERAL.'";

				set "SCGeneralParent::visible" 1;
				set "SettingsGeneralText::forecolor" SBOLDGLOW_WHITE_COLOR;
				set "SettingsGeneralHText::forecolor" SGLOW_DARKRED_COLOR;
			}
			else
			{
				set "cmd" "log 'Error: Unknown controlspage value.'";
			}

			set "cmd" "log 'SettingsControlsPageSelect done.'";
		}
	}

	windowDef SettingsCategories
	{
		rect	0,0,320,640
		visible	1

		windowDef SettingsMovementHText
		{
			MM_POS_SETTINGS_CONTROLS_MOVEMENT_GLOW
			text		"#str_02128"		// Movement
			MM_FONT_CENTER_GLOW
		}
		windowDef SettingsMovementText
		{
			MM_POS_SETTINGS_CONTROLS_MOVEMENT
			text		"#str_02128"		// Movement
			MM_FONT_CENTER
		}

		windowDef SettingsMovementAction
		{
			MM_POS_SETTINGS_CONTROLS_MOVEMENT
			visible		1

			onMouseEnter
			{
				if ("gui::controlspage" != CONTROLS_PAGE_MOVEMENT)
				{
					transition "SettingsMovementText::forecolor" SNORMAL_COLOR SBOLDGLOW_WHITE_COLOR "50";
					transition "SettingsMovementHText::forecolor" SINVISIBLE SGLOW_DARKRED_COLOR "50";
					set "cmd" "play sound/meta/menu/mnu_hover";
				}
			}

			onMouseExit
			{
				if ("gui::controlspage" != CONTROLS_PAGE_MOVEMENT)
				{
					transition "SettingsMovementText::forecolor" SBOLDGLOW_WHITE_COLOR SNORMAL_COLOR "50";
					transition "SettingsMovementHText::forecolor" SGLOW_DARKRED_COLOR SINVISIBLE "50";
				}
			}

			onAction
			{
				set "cmd" "play sound/meta/menu/mnu_select";

				set "gui::controlspage" CONTROLS_PAGE_MOVEMENT;

				set "SettingsControlsPageSelect::notime" "0";
				resetTime "SettingsControlsPageSelect" 0;
			}
		}

		windowDef SettingsActionsHText
		{
			MM_POS_SETTINGS_CONTROLS_ACTIONS_GLOW
			text		"#str_02129"		// Actions
			MM_FONT_CENTER_GLOW
		}
		windowDef SettingsActionsText
		{
			MM_POS_SETTINGS_CONTROLS_ACTIONS
			text		"#str_02129"		// Actions
			MM_FONT_CENTER
		}

		windowDef SettingsActionsAction
		{
			MM_POS_SETTINGS_CONTROLS_ACTIONS
			visible		1

			onMouseEnter
			{
				if ("gui::controlspage" != CONTROLS_PAGE_ACTIONS)
				{
					transition "SettingsActionsText::forecolor" SNORMAL_COLOR SBOLDGLOW_WHITE_COLOR "50";
					transition "SettingsActionsHText::forecolor" SINVISIBLE SGLOW_DARKRED_COLOR "50";
					set "cmd" "play sound/meta/menu/mnu_hover";
				}
			}

			onMouseExit
			{
				if ("gui::controlspage" != CONTROLS_PAGE_ACTIONS)
				{
					transition "SettingsActionsText::forecolor" SBOLDGLOW_WHITE_COLOR SNORMAL_COLOR "50";
					transition "SettingsActionsHText::forecolor" SGLOW_DARKRED_COLOR SINVISIBLE "50";
				}
			}

			onAction
			{
				set "cmd" "play sound/meta/menu/mnu_select";

				set "gui::controlspage" CONTROLS_PAGE_ACTIONS;

				set "SettingsControlsPageSelect::notime" "0";
				resetTime "SettingsControlsPageSelect" 0;
			}
		}

		windowDef SettingsInventoryHText
		{
			MM_POS_SETTINGS_CONTROLS_INVENTORY_GLOW
			text		"#str_02130"		// Inventory
			MM_FONT_CENTER_GLOW
		}

		windowDef SettingsInventoryText
		{
			MM_POS_SETTINGS_CONTROLS_INVENTORY
			text		"#str_02130"		// Inventory
			MM_FONT_CENTER
		}

		windowDef SettingsInventoryAction
		{
			MM_POS_SETTINGS_CONTROLS_INVENTORY
			visible		1

			onMouseEnter
			{
				if ("gui::controlspage" != CONTROLS_PAGE_INVENTORY)
				{
					transition "SettingsInventoryText::forecolor" SNORMAL_COLOR SBOLDGLOW_WHITE_COLOR "50";
					transition "SettingsInventoryHText::forecolor" SINVISIBLE SGLOW_DARKRED_COLOR "50";
					set "cmd" "play sound/meta/menu/mnu_hover";
				}
			}

			onMouseExit
			{
				if ("gui::controlspage" != CONTROLS_PAGE_INVENTORY)
				{
					transition "SettingsInventoryText::forecolor" SBOLDGLOW_WHITE_COLOR SNORMAL_COLOR "50";
					transition "SettingsInventoryHText::forecolor" SGLOW_DARKRED_COLOR SINVISIBLE "50";
				}
			}

			onAction
			{
				set "cmd" "play sound/meta/menu/mnu_select";

				set "gui::controlspage" CONTROLS_PAGE_INVENTORY;

				set "SettingsControlsPageSelect::notime" "0";
				resetTime "SettingsControlsPageSelect" 0;
			}
		}

		windowDef SettingsWeaponsHText
		{
			MM_POS_SETTINGS_CONTROLS_WEAPONS_GLOW
			text		"#str_02131"		// Weapons
			MM_FONT_CENTER_GLOW
		}
		windowDef SettingsWeaponsText
		{
			MM_POS_SETTINGS_CONTROLS_WEAPONS
			text		"#str_02131"		// Weapons
			MM_FONT_CENTER
		}

		windowDef SettingsWeaponsAction
		{
			MM_POS_SETTINGS_CONTROLS_WEAPONS
			visible		1

			onMouseEnter
			{
				if ("gui::controlspage" != CONTROLS_PAGE_WEAPONS)
				{
					transition "SettingsWeaponsText::forecolor" SNORMAL_COLOR SBOLDGLOW_WHITE_COLOR "50";
					transition "SettingsWeaponsHText::forecolor" SINVISIBLE SGLOW_DARKRED_COLOR "50";
					set "cmd" "play sound/meta/menu/mnu_hover";
				}
			}

			onMouseExit
			{
				if ("gui::controlspage" != CONTROLS_PAGE_WEAPONS)
				{
					transition "SettingsWeaponsText::forecolor" SBOLDGLOW_WHITE_COLOR SNORMAL_COLOR "50";
					transition "SettingsWeaponsHText::forecolor" SGLOW_DARKRED_COLOR SINVISIBLE "50";
				}
			}

			onAction
			{
				set "cmd" "play sound/meta/menu/mnu_select";

				set "gui::controlspage" CONTROLS_PAGE_WEAPONS;

				set "SettingsControlsPageSelect::notime" "0";
				resetTime "SettingsControlsPageSelect" 0;
			}
		}

		windowDef SettingsGeneralHText
		{
			MM_POS_SETTINGS_CONTROLS_GENERAL_GLOW
			text		"#str_02249"		// General
			MM_FONT_CENTER_GLOW
		}
		windowDef SettingsGeneralText
		{
			MM_POS_SETTINGS_CONTROLS_GENERAL
			text		"#str_02249"		// General
			MM_FONT_CENTER
		}

		windowDef SettingsGeneralAction
		{
			MM_POS_SETTINGS_CONTROLS_GENERAL
			visible		1

			onMouseEnter
			{
				if ("gui::controlspage" != CONTROLS_PAGE_GENERAL)
				{
					transition "SettingsGeneralText::forecolor" SNORMAL_COLOR SBOLDGLOW_WHITE_COLOR "50";
					transition "SettingsGeneralHText::forecolor" SINVISIBLE SGLOW_DARKRED_COLOR "50";
					set "cmd" "play sound/meta/menu/mnu_hover";
				}
			}

			onMouseExit
			{
				if ("gui::controlspage" != CONTROLS_PAGE_GENERAL)
				{
					transition "SettingsGeneralText::forecolor" SBOLDGLOW_WHITE_COLOR SNORMAL_COLOR "50";
					transition "SettingsGeneralHText::forecolor" SGLOW_DARKRED_COLOR SINVISIBLE "50";
				}
			}

			onAction
			{
				set "cmd" "play sound/meta/menu/mnu_select";

				set "gui::controlspage" CONTROLS_PAGE_GENERAL;

				set "SettingsControlsPageSelect::notime" "0";
				resetTime "SettingsControlsPageSelect" 0;
			}
		}

		windowDef SettingsToolsHText
		{
			MM_POS_SETTINGS_CONTROLS_TOOLS_GLOW
			text		"#str_02248"		// Tools
			MM_FONT_CENTER_GLOW
		}

		windowDef SettingsToolsText
		{
			MM_POS_SETTINGS_CONTROLS_TOOLS
			text		"#str_02248"		// Tools
			MM_FONT_CENTER
		}

		windowDef SettingsToolsAction
		{
			MM_POS_SETTINGS_CONTROLS_TOOLS
			visible		1

			onMouseEnter
			{
				if ("gui::controlspage" != CONTROLS_PAGE_TOOLS)
				{
					transition "SettingsToolsText::forecolor" SNORMAL_COLOR SBOLDGLOW_WHITE_COLOR "50";
					transition "SettingsToolsHText::forecolor" SINVISIBLE SGLOW_DARKRED_COLOR "50";
					set "cmd" "play sound/meta/menu/mnu_hover";
				}
			}

			onMouseExit
			{
				if ("gui::controlspage" != CONTROLS_PAGE_TOOLS)
				{
					transition "SettingsToolsText::forecolor" SBOLDGLOW_WHITE_COLOR SNORMAL_COLOR "50";
					transition "SettingsToolsHText::forecolor" SGLOW_DARKRED_COLOR SINVISIBLE "50";
				}
			}

			onAction
			{
				set "cmd" "play sound/meta/menu/mnu_select";

				set "gui::controlspage" CONTROLS_PAGE_TOOLS;

				set "SettingsControlsPageSelect::notime" "0";
				resetTime "SettingsControlsPageSelect" 0;
			}
		}
	}

	windowDef SCMovementParent
	{
		rect	45,185,320,640
		visible 0

		windowDef SCMovementText1
		{
			rect		TEXT_X_OFFSET, 0, 230, MM_LINE_H
			text		"#str_02414"	// Forward
			SETTINGS_TEXT
		}

		windowDef SCMovementText2
		{
			rect		TEXT_X_OFFSET, 17, 230, MM_LINE_H
			text		"#str_02415"	// Backward
			SETTINGS_TEXT
		}

		windowDef SCMovementText3
		{
			rect		TEXT_X_OFFSET, 34, 230, MM_LINE_H
			text		"#str_02416"	// Strafe Left
			SETTINGS_TEXT
		}

		windowDef SCMovementText4
		{
			rect		TEXT_X_OFFSET, 51, 230, MM_LINE_H
			text		"#str_02417"	// Strafe Right
			SETTINGS_TEXT
		}

		windowDef SCMovementText5
		{
			rect		TEXT_X_OFFSET, 68, 230, MM_LINE_H
			text		"#str_02423"	// Run
			SETTINGS_TEXT
		}

		windowDef SCMovementText6
		{
			rect		TEXT_X_OFFSET, 85, 230, MM_LINE_H
			text		"#str_02422"	// Creep
			SETTINGS_TEXT
		}

		windowDef SCMovementText7
		{
			rect		TEXT_X_OFFSET, 102, 230, MM_LINE_H
			text		"#str_02420"	// Turn Left
			SETTINGS_TEXT
		}

		windowDef SCMovementText8
		{
			rect		TEXT_X_OFFSET, 119, 230, MM_LINE_H
			text		"#str_02421"	// Turn Right
			SETTINGS_TEXT
		}

		windowDef SCMovementText9
		{
			rect		TEXT_X_OFFSET, 136, 230, MM_LINE_H
			text		"#str_02412"	// Lean Left
			SETTINGS_TEXT
		}

		windowDef SCMovementText10
		{
			rect		TEXT_X_OFFSET, 153, 230, MM_LINE_H
			text		"#str_02413"	// Lean Right
			SETTINGS_TEXT
		}

		windowDef SCMovementText11
		{
			rect		TEXT_X_OFFSET, 170, 230, MM_LINE_H
			text		"#str_02407"	// Lean Forward
			SETTINGS_TEXT
		}

		windowDef SCMovementText12
		{
			rect		TEXT_X_OFFSET, 187, 230, MM_LINE_H
			text		"#str_02317"	// Look Up, added by wesp
			SETTINGS_TEXT
		}

		windowDef SCMovementText13
		{
			rect		TEXT_X_OFFSET, 204, 230, MM_LINE_H
			text		"#str_02318"	// Look Down, added by wesp
			SETTINGS_TEXT
		}

		bindDef Forward
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 0, 110, MM_LINE_H
			bind		"_forward"
			BINDINGS_TEXT
		}

		bindDef BackPedal
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 17, 110, MM_LINE_H
			bind		"_back"
			BINDINGS_TEXT
		}

		bindDef StrafeLeft
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 34, 110, MM_LINE_H
			bind		"_moveLeft"
			BINDINGS_TEXT
		}

		bindDef StrafeRight
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 51, 110, MM_LINE_H
			bind		"_moveRight"
			BINDINGS_TEXT
		}

		bindDef RunKey
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 68, 110, MM_LINE_H
			bind		"_speed"
			BINDINGS_TEXT
		}

		bindDef CreepKey
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 85, 110, MM_LINE_H
			bind		"_creep"
			BINDINGS_TEXT
		}

		bindDef TurnLeft
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 102, 110, MM_LINE_H
			bind		"_left"
			BINDINGS_TEXT
		}

		bindDef TurnRight
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 119, 110, MM_LINE_H
			bind		"_right"
			BINDINGS_TEXT
		}

		bindDef LeanLeft
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 136, 110, MM_LINE_H
			bind		"_impulse45"
			BINDINGS_TEXT
		}

		bindDef LeanRight
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 153, 110, MM_LINE_H
			bind		"_impulse46"
			BINDINGS_TEXT
		}

		bindDef LeanForward
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 170, 110, MM_LINE_H
			bind		"_impulse44"
			BINDINGS_TEXT
		}

		bindDef LookUp		// added by wesp
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 187, 110, MM_LINE_H
			bind		"_lookup"
			BINDINGS_TEXT
		}

		bindDef LookDown	// added by wesp
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 204, 110, MM_LINE_H
			bind		"_lookdown"
			BINDINGS_TEXT
		}
	}

	windowDef SCWeaponsParent
	{
		rect	45,185,320,640
		visible 0

		windowDef SCWeaponText1
		{
			rect		TEXT_X_OFFSET, 0, 230, MM_LINE_H
			text		"#str_02427"		// Put away Weapons
			SETTINGS_TEXT
		}

		windowDef SCWeaponText2
		{
			rect		TEXT_X_OFFSET, 17, 230, MM_LINE_H
			text		"#str_02428"	// Blackjack
			SETTINGS_TEXT
		}

		windowDef SCWeaponText3
		{
			rect		TEXT_X_OFFSET, 34, 230, MM_LINE_H
			text		"#str_02429"	// Shortsword
			SETTINGS_TEXT
		}

		windowDef SCWeaponText4
		{
			rect		TEXT_X_OFFSET, 51, 230, MM_LINE_H
			text		"#str_02430"	// Broadhead
			SETTINGS_TEXT
		}

		windowDef SCWeaponText5
		{
			rect		TEXT_X_OFFSET, 68, 230, MM_LINE_H
			text		"#str_02431"	// Water Arrow
			SETTINGS_TEXT
		}

		windowDef SCWeaponText6
		{
			rect		TEXT_X_OFFSET, 85, 230, MM_LINE_H
			text		"#str_02432"	// Fire Arrow
			SETTINGS_TEXT
		}

		windowDef SCWeaponText7
		{
			rect		TEXT_X_OFFSET, 102, 230, MM_LINE_H
			text		"#str_02433"	// Rope Arrow
			SETTINGS_TEXT
		}

		windowDef SCWeaponText8
		{
			rect		TEXT_X_OFFSET, 119, 230, MM_LINE_H
			text		"#str_02434"	// Gas Arrow
			SETTINGS_TEXT
		}

		windowDef SCWeaponText9
		{
			rect		TEXT_X_OFFSET, 136, 230, MM_LINE_H
			text		"#str_02435"	// Noisemaker
			SETTINGS_TEXT
		}

		windowDef SCWeaponText10
		{
			rect		TEXT_X_OFFSET, 153, 230, MM_LINE_H
			text		"#str_02436"	// Moss Arrow
			SETTINGS_TEXT
		}

		windowDef SCWeaponText11
		{
			rect		TEXT_X_OFFSET, 170, 230, MM_LINE_H
			text		"#str_02437"	// Vine Arrow
			SETTINGS_TEXT
		}

		windowDef SCWeaponText12
		{
			rect		TEXT_X_OFFSET, 187, 230, MM_LINE_H
			text		"#str_02426"	// Next Weapon
			SETTINGS_TEXT
		}

		windowDef SCWeaponText13
		{
			rect		TEXT_X_OFFSET, 203, 230, MM_LINE_H
			text		"#str_02425"	// Previous Weapon
			SETTINGS_TEXT
		}

		bindDef SCWeaponBind1
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 0, 110, MM_LINE_H
			bind		"_impulse0"
			BINDINGS_TEXT
		}

		bindDef SCWeaponBind2
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 17, 110, MM_LINE_H
			bind		"_impulse1"
			BINDINGS_TEXT
		}

		bindDef SCWeaponBind3
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 34, 110, MM_LINE_H
			bind		"_impulse2"
			BINDINGS_TEXT
		}

		bindDef SCWeaponBind4
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 51, 110, MM_LINE_H
			bind		"_impulse3"
			BINDINGS_TEXT
		}

		bindDef SCWeaponBind5
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 68, 110, MM_LINE_H
			bind		"_impulse4"
			BINDINGS_TEXT
		}

		bindDef SCWeaponBind6
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 85, 110, MM_LINE_H
			bind		"_impulse5"
			BINDINGS_TEXT
		}

		bindDef SCWeaponBind7
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 102, 110, MM_LINE_H
			bind		"_impulse6"
			BINDINGS_TEXT
		}

		bindDef SCWeaponBind8
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 119, 110, MM_LINE_H
			bind		"_impulse7"
			BINDINGS_TEXT
		}

		bindDef SCWeaponBind9
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 136, 110, MM_LINE_H
			bind		"_impulse8"
			BINDINGS_TEXT
		}

		bindDef SCWeaponBind10
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 153, 110, MM_LINE_H
			bind		"_impulse9"
			BINDINGS_TEXT
		}

		bindDef SCWeaponBind11
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 170, 110, MM_LINE_H
			bind		"_impulse10"
			BINDINGS_TEXT
		}

		bindDef SCWeaponBind12
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 187, 110, MM_LINE_H
			bind		"_impulse14"
			BINDINGS_TEXT
		}

		bindDef SCWeaponBind13
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 203, 110, MM_LINE_H
			bind		"_impulse15"
			BINDINGS_TEXT
		}
	}

	windowDef SCToolsParent
	{
		rect	45,185,320,640
		visible 0

		windowDef SCToolsText1
		{
			rect		TEXT_X_OFFSET, 0, 230, MM_LINE_H
			text		"#str_02386"	// Toggle Lantern
			SETTINGS_TEXT
		}

		windowDef SCToolsText2
		{
			rect		TEXT_X_OFFSET, 17, 230, MM_LINE_H
			text		"#str_02387"	// Toggle Compass
			SETTINGS_TEXT
		}

		windowDef SCToolsText3
		{
			rect		TEXT_X_OFFSET, 34, 230, MM_LINE_H
			text		"#str_02388"	// Toggle Spyglass
			SETTINGS_TEXT
		}

		windowDef SCToolsText4
		{
			rect		TEXT_X_OFFSET, 68, 230, MM_LINE_H
			text		"#str_02438"	// Flashbomb
			SETTINGS_TEXT
		}

		windowDef SCToolsText5
		{
			rect		TEXT_X_OFFSET, 85, 230, MM_LINE_H
			text		"#str_02439"	// Flashmine
			SETTINGS_TEXT
		}

		windowDef SCToolsText6
		{
			rect		TEXT_X_OFFSET, 102, 230, MM_LINE_H
			text		"#str_02440"	// Explosive Mine
			SETTINGS_TEXT
		}

		windowDef SCToolsText7
		{
			rect		TEXT_X_OFFSET, 119, 230, MM_LINE_H
			text		"#str_02398"	// Health Potion
			SETTINGS_TEXT
		}

		windowDef SCToolsText8
		{
			rect		TEXT_X_OFFSET, 136, 230, MM_LINE_H
			text		"#str_02399"    // Air Potion
			SETTINGS_TEXT
		}

		windowDef SCToolsText9
		{
			rect		TEXT_X_OFFSET, 153, 230, MM_LINE_H
			text		"#str_02400"    // Holy Water
			SETTINGS_TEXT
		}


		bindDef SCToolsBind1
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 0, 110, MM_LINE_H
			bind		"inventory_use '#str_02395'"		// Lantern
			BINDINGS_TEXT
		}

		bindDef SCToolsBind2
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 17, 110, MM_LINE_H
			bind		"inventory_hotkey '#str_02397'"		// Compass
			BINDINGS_TEXT
		}

		bindDef SCToolsBind3
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 34, 110, MM_LINE_H
			bind		"inventory_use '#str_02396'"		// Spyglass
			BINDINGS_TEXT
		}

		bindDef SCToolsBind8
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 68, 110, MM_LINE_H
			bind		"inventory_hotkey '#str_02438'"
			BINDINGS_TEXT
		}

		bindDef SCToolsBind9
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 85, 110, MM_LINE_H
			bind		"inventory_hotkey '#str_02439'"
			BINDINGS_TEXT
		}

		bindDef SCToolsBind10
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 102, 110, MM_LINE_H
			bind		"inventory_hotkey '#str_02202'"
			BINDINGS_TEXT
		}

		bindDef SCToolsBind11
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 119, 110, MM_LINE_H
			bind		"inventory_hotkey '#str_02398'"		// Health Potion
			BINDINGS_TEXT
		}

		bindDef SCToolsBind12
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 136, 110, MM_LINE_H
			bind		"inventory_hotkey '#str_02399'"		// Breath Potion
			BINDINGS_TEXT
		}

		bindDef SCToolsBind13
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 153, 110, MM_LINE_H
			bind		"inventory_hotkey '#str_02400'"		// Holy Water
			BINDINGS_TEXT
		}
	}

	windowDef SCActionsParent
	{
		rect	45,185,320,640
		visible 0

		windowDef SCActionsText1
		{
			rect		TEXT_X_OFFSET, 0, 230, MM_LINE_H
			text		"#str_02405"	// Frob/Interact
			SETTINGS_TEXT
		}

		windowDef SCActionsText2
		{
			rect		TEXT_X_OFFSET, 17, 230, MM_LINE_H
			text		"#str_02424"	// Attack
			SETTINGS_TEXT
		}

		windowDef SCActionsText3
		{
			rect		TEXT_X_OFFSET, 34, 230, MM_LINE_H
			text		"#str_02406"	// Parry/Manipulate
			SETTINGS_TEXT
		}

		windowDef SCActionsText4
		{
			rect		TEXT_X_OFFSET, 51, 230, MM_LINE_H
			text		"#str_02419" 	// Crouch
			SETTINGS_TEXT
		}

		windowDef SCActionsText5
		{
			rect		TEXT_X_OFFSET, 68, 230, MM_LINE_H
			text		"#str_02418"	// Jump/Mantle
			SETTINGS_TEXT
		}

		windowDef SCActionsText6
		{
			rect		TEXT_X_OFFSET, 85, 230, MM_LINE_H
			text		"#str_02408"	// Mantle
			SETTINGS_TEXT
		}

		/*windowDef SCActionsText7
		{
			rect		TEXT_X_OFFSET, 102, 230, MM_LINE_H
			text		"Empty"
			SETTINGS_TEXT
		}*/

		bindDef SCActionsBind1
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 0, 110, MM_LINE_H
			bind		"_impulse41"
			BINDINGS_TEXT
		}

		bindDef SCActionsBind2
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 17, 110, MM_LINE_H
			bind		"_attack"
			BINDINGS_TEXT
		}

		bindDef SCActionsBind3
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 34, 110, MM_LINE_H
			bind		"_zoom"
			BINDINGS_TEXT
		}

		bindDef SCActionsBind4
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 51, 110, MM_LINE_H
			bind		"_impulse23"
			BINDINGS_TEXT
		}

		bindDef SCActionsBind5
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 68, 110, MM_LINE_H
			bind		"_moveUp"
			BINDINGS_TEXT
		}

		bindDef SCActionsBind6
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 85, 110, MM_LINE_H
			bind		"_impulse24"
			BINDINGS_TEXT
		}

	}

	windowDef SCInventoryParent
	{
		rect	45,185,320,640
		visible 0

		windowDef SCInventoryText1
		{
			rect		TEXT_X_OFFSET, 0, 230, MM_LINE_H
			text		"#str_02190"		// Use Inv. Item
			SETTINGS_TEXT
		}

		windowDef SCInventoryText2
		{
			rect		TEXT_X_OFFSET, 17, 230, MM_LINE_H
			text		"#str_02191"		// Drop Inv. Item
			SETTINGS_TEXT
		}

		windowDef SCInventoryText3
		{
			rect		TEXT_X_OFFSET, 34, 230, MM_LINE_H
			text		"#str_02192"		// Next Inv. Item
			SETTINGS_TEXT
		}

		windowDef SCInventoryText4
		{
			rect		TEXT_X_OFFSET, 51, 230, MM_LINE_H
			text		"#str_02193"		// Prev Inv. Item
			SETTINGS_TEXT
		}

		windowDef SCInventoryText5
		{
			rect		TEXT_X_OFFSET, 68, 230, MM_LINE_H
			text		"#str_02194"		// Next Inv. Group
			SETTINGS_TEXT
		}

		windowDef SCInventoryText6
		{
			rect		TEXT_X_OFFSET, 85, 230, MM_LINE_H
			text		"#str_02195"		// Prev Inv. Group
			SETTINGS_TEXT
		}

		windowDef SCInventoryText7
		{
			rect		TEXT_X_OFFSET, 102, 230, MM_LINE_H
			text		"#str_02196"		// Clear Inventory
			SETTINGS_TEXT
		}

		windowDef SCInventoryText8
		{
			rect		TEXT_X_OFFSET, 119, 230, MM_LINE_H
			text		"#str_02401"		// Cycle Maps
			SETTINGS_TEXT
		}

		windowDef SCInventoryText9
		{
			rect		TEXT_X_OFFSET, 136, 230, MM_LINE_H
			text		"#str_02402"		// Cycle Lockpicks
			SETTINGS_TEXT
		}

		windowDef SCInventoryText10
		{
			rect		TEXT_X_OFFSET, 153, 230, MM_LINE_H
			text		"#str_02403"		// Cycle Keys
			SETTINGS_TEXT
		}

		windowDef SCInventoryText11
		{
			rect		TEXT_X_OFFSET, 170, 230, MM_LINE_H
			text		"#str_02404"		// Cycle Readables
			SETTINGS_TEXT
		}

    windowDef SCInventoryText12
    {
      rect    TEXT_X_OFFSET, 187, 230, MM_LINE_H
      text    "#str_02935"    // Inventory Grid
      SETTINGS_TEXT
    }

		bindDef SCInventoryBind1
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 0, 110, MM_LINE_H
			bind		"_impulse51"
			BINDINGS_TEXT
		}

		bindDef SCInventoryBind2
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 17, 110, MM_LINE_H
			bind		"_impulse52"
			BINDINGS_TEXT
		}

		bindDef SCInventoryBind3
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 34, 110, MM_LINE_H
			bind		"_impulse48"
			BINDINGS_TEXT
		}

		bindDef SCInventoryBind4
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 51, 110, MM_LINE_H
			bind		"_impulse47"
			BINDINGS_TEXT
		}

		bindDef SCInventoryBind5
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 68, 110, MM_LINE_H
			bind		"_impulse50"
			BINDINGS_TEXT
		}

		bindDef SCInventoryBind6
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 85, 110, MM_LINE_H
			bind		"_impulse49"
			BINDINGS_TEXT
		}

		bindDef SCInventoryBind7
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 102, 110, MM_LINE_H
			bind		"inventory_hotkey ''"
			BINDINGS_TEXT
		}

		bindDef SCInventoryBind8
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 119, 110, MM_LINE_H
			bind		"inventory_cycle_maps"
			BINDINGS_TEXT
		}

		bindDef SCInventoryBind9
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 136, 110, MM_LINE_H
			bind		"inventory_cycle_group '#str_02389'"		// Lockpicks
			BINDINGS_TEXT
		}

		bindDef SCInventoryBind10
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 153, 110, MM_LINE_H
			bind		"inventory_cycle_group '#str_02392'"		// Keys
			BINDINGS_TEXT
		}

		bindDef SCInventoryBind11
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 170, 110, MM_LINE_H
			bind		"inventory_cycle_group '#str_02391'"		// Readables
			BINDINGS_TEXT
		}

		bindDef SCInventoryBind12
		{
			rect    SETTINGS_X_OFFSET_CONTROLS, 187, 110, MM_LINE_H
			bind    "_impulse30"
			BINDINGS_TEXT
		}

	}

	windowDef SCGeneralParent
	{
		rect	45,185,320,640
		visible 0

		windowDef SCGeneralText1
		{
			rect		TEXT_X_OFFSET, 0, 230, MM_LINE_H
			text		"#str_02383"	// Always Run
			SETTINGS_TEXT
		}

		windowDef SCGeneralText2
		{
			rect		TEXT_X_OFFSET, 17, 230, MM_LINE_H
			text		"Toggle Creep"	// Toggle Creep
			SETTINGS_TEXT
		}

		windowDef SCGeneralText3
		{
			rect		TEXT_X_OFFSET, 34, 230, MM_LINE_H
			text		"#str_02382"	// Toggle Crouch
			SETTINGS_TEXT
		}

		windowDef SCGeneralText4
		{
			rect		TEXT_X_OFFSET, 51, 230, MM_LINE_H
			text		"#str_02384"	// Toggle Lean
			SETTINGS_TEXT
		}

		windowDef SCGeneralText5
		{
			rect		TEXT_X_OFFSET, 68, 230, MM_LINE_H
			text		"#str_menu_ToggleSheathe"	// Toggle Sheathe
			SETTINGS_TEXT
		}

		windowDef SCGeneralText6
		{
			rect		TEXT_X_OFFSET, 85, 230, MM_LINE_H
			text		"#str_02385"	// Free Look
			SETTINGS_TEXT
		}

		windowDef SCGeneralText7
		{
			rect		TEXT_X_OFFSET, 102, 230, MM_LINE_H
			text		"#str_02441"		// Invert Mouse
			SETTINGS_TEXT
		}

		windowDef SCGeneralText8
		{
			rect		TEXT_X_OFFSET, 119, 230, MM_LINE_H
			text		"#str_02442"		// Smooth Mouse
			SETTINGS_TEXT
		}

		
		windowDef SCGeneralText9
		{
			rect		TEXT_X_OFFSET, 136, 230, MM_LINE_H
			text		"#str_02443"		// Mouse Sensitivity
			SETTINGS_TEXT
		}

		windowDef SCGeneralText10
		{
			rect		TEXT_X_OFFSET, 153, 230, MM_LINE_H
			text		"#str_07312"		// Objectives
			SETTINGS_TEXT
		}

		windowDef SCGeneralText11
		{
			rect		TEXT_X_OFFSET, 170, 230, MM_LINE_H
			text		"#str_07178"	// Quicksave
			SETTINGS_TEXT
		}

		windowDef SCGeneralText12
		{
			rect		TEXT_X_OFFSET, 187, 230, MM_LINE_H
 			text		"#str_07177"	// Quickload
			SETTINGS_TEXT
		}

		windowDef SCGeneralText13
		{
			rect		TEXT_X_OFFSET, 204, 230, MM_LINE_H
			text		"#str_02917"	// Save Screenshot
			SETTINGS_TEXT
		}

		choiceDef SCGeneralBind1
		{
			rect		SETTINGS_X_OFFSET, 0, 80, MM_LINE_H
			choices		"#str_07300"		// Disabled;Enabled
			values		"0;1"
			cvar		"in_alwaysRun"
			CHOICE_DEF
		}

		choiceDef SCGeneralBind2
		{
			rect		SETTINGS_X_OFFSET, 17, 80, MM_LINE_H
			choices		"#str_07300"		// Disabled;Enabled
			values		"0;1"
			cvar		"tdm_toggle_creep"
			CHOICE_DEF
		}

		choiceDef SCGeneralBind3
		{
			rect		SETTINGS_X_OFFSET, 34, 80, MM_LINE_H
			choices		"#str_07300"		// Disabled;Enabled
			values		"0;1"
			cvar		"tdm_toggle_crouch"
			CHOICE_DEF
		}

		choiceDef SCGeneralBind4
		{
			rect		SETTINGS_X_OFFSET, 51, 80, MM_LINE_H
			choices		"#str_07300"		// Disabled;Enabled
			values		"0;1"
			cvar		"pm_lean_toggle"
			CHOICE_DEF
		}

		choiceDef SCGeneralBind5
		{
			rect		SETTINGS_X_OFFSET, 68, 80, MM_LINE_H
			choices		"#str_07300"		// Disabled;Enabled
			values		"0;1"
			cvar		"tdm_toggle_sheathe"
			CHOICE_DEF
		}

		choiceDef SCGeneralBind6
		{
			rect		SETTINGS_X_OFFSET, 85, 80, MM_LINE_H
			choices		"#str_07300"		// Disabled;Enabled
			values		"0;1"
			cvar		"in_freeLook"
			CHOICE_DEF
		}

		choiceDef SCGeneralBind7
		{
			rect		SETTINGS_X_OFFSET, 102, 80, MM_LINE_H
			choices		"#str_04221"		// No;Yes
			values		"0.022;-0.022"
			cvar		"m_pitch"
			CHOICE_DEF
		}

		windowDef SmoothMouseSlider
		{
			rect		SETTINGS_X_OFFSET_CONTROLS_GENERAL + 10, 124, 128, MM_SLIDER_H
			background	"guis/assets/mainmenu/buttons_settingsmenu/slider_bg"
			matcolor	0, 0, 0, 1
			noevents	1
		}

		sliderDef SmoothMouse
		{
			rect		SETTINGS_X_OFFSET_CONTROLS_GENERAL + 10, 124, 71, 8
			forecolor	1, .8, .8, .85
			matcolor	1, 1, 1, 1
			low		1
			high		8
			step		1
			thumbShader	"guis/assets/mainmenu/buttons_settingsmenu/slider_bar1"
			cvar		"m_smooth"
		}

		windowDef SensitivitySlider
		{
			rect		SETTINGS_X_OFFSET_CONTROLS_GENERAL + 10, 141, 128, MM_SLIDER_H
			background	"guis/assets/mainmenu/buttons_settingsmenu/slider_bg"
			matcolor	0, 0, 0, 1
			noevents	1
		}

		sliderDef MouseSensitivity
		{
			rect		SETTINGS_X_OFFSET_CONTROLS_GENERAL + 10, 141, 71, 8
			forecolor	1, .8, .8, .85
			matcolor	1, 1, 1, 1
			low		1
			high		30
			step		0.5
			thumbShader	"guis/assets/mainmenu/buttons_settingsmenu/slider_bar1"
			cvar		"sensitivity"
		}

		bindDef SCGeneralBind10
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 153, 110, MM_LINE_H
			bind		"_impulse19"
			BINDINGS_TEXT
		}

		bindDef SCGeneralBind11
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 170, 110, MM_LINE_H
			bind		"savegame quick"
			BINDINGS_TEXT
		}

		bindDef SCGeneralBind12
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 187, 110, MM_LINE_H
			bind		"loadgame quick"
			BINDINGS_TEXT
		}

		bindDef SCGeneralBind13
		{
			rect		SETTINGS_X_OFFSET_CONTROLS, 204, 110, MM_LINE_H
			bind		"screenshot"
			BINDINGS_TEXT
		}
	}
}
mainmenu_settings_controls.gui (30,814 bytes)   
stgatilov

stgatilov

26.01.2023 20:18

administrator   ~0015896

Suspended until 2.11 is over.

Issue History

Date Modified Username Field Change
23.01.2023 03:03 Daft Mugi New Issue
23.01.2023 13:17 nbohr1more Relationship added related to 0000558
23.01.2023 13:18 nbohr1more Relationship added related to 0005320
23.01.2023 13:20 nbohr1more Note Added: 0015853
23.01.2023 15:51 nbohr1more Note Added: 0015854
23.01.2023 15:58 Daft Mugi Note Added: 0015855
23.01.2023 16:17 nbohr1more Note Added: 0015856
23.01.2023 16:27 nbohr1more Note Added: 0015858
23.01.2023 16:34 Daft Mugi Note Added: 0015859
23.01.2023 16:47 Daft Mugi Note Added: 0015861
23.01.2023 16:51 nbohr1more Note Added: 0015862
23.01.2023 19:55 Daft Mugi Note Added: 0015865
23.01.2023 19:55 Daft Mugi File Added: r10259-change-toggle-creep.diff
23.01.2023 19:55 Daft Mugi File Added: r16758-assets-change-toggle-creep.diff
23.01.2023 19:55 Daft Mugi File Added: toggle-creep-menu.jpg
23.01.2023 20:41 Daft Mugi Note Added: 0015866
23.01.2023 20:41 Daft Mugi File Added: r10259-remove-extraneous-code.diff
23.01.2023 20:41 Daft Mugi File Added: r10259-change-toggle-creep-v2.diff
23.01.2023 21:33 Daft Mugi Note Added: 0015868
23.01.2023 21:45 Daft Mugi Note Added: 0015869
24.01.2023 02:14 nbohr1more Assigned To => nbohr1more
24.01.2023 02:14 nbohr1more Status new => feedback
24.01.2023 02:14 nbohr1more Fixed in Version => TDM 2.11
24.01.2023 02:14 nbohr1more Target Version => TDM 2.11
24.01.2023 02:16 nbohr1more Note Added: 0015871
24.01.2023 04:35 Daft Mugi Note Added: 0015873
24.01.2023 04:35 Daft Mugi Status feedback => assigned
24.01.2023 04:47 Daft Mugi Note Added: 0015874
24.01.2023 04:47 Daft Mugi File Added: r10260-edit-comments.diff
24.01.2023 12:31 nbohr1more Note Added: 0015875
24.01.2023 12:31 nbohr1more File Added: default.cfg
24.01.2023 12:31 nbohr1more File Added: mainmenu_settings_controls.gui
24.01.2023 12:31 nbohr1more Status assigned => feedback
26.01.2023 20:18 stgatilov Status feedback => suspended
26.01.2023 20:18 stgatilov Note Added: 0015896
26.01.2023 20:18 stgatilov Fixed in Version TDM 2.11 => TDM 2.12
26.01.2023 20:18 stgatilov Target Version TDM 2.11 => TDM 2.12