Skip to content

Commit 3b49522

Browse files
authored
Allow l4d2_slowdown_control to change crouch speed (#392)
* Update l4d2_slowdown_control.sp * Add files via upload * Update l4d2_slowdown_control.sp * Add files via upload * Update shared_settings.cfg * Update shared_settings.cfg * Update shared_settings.cfg * Update pmelite.cfg * Update shared_settings.cfg * Update shared_settings.cfg * Update shared_settings.cfg * Update shared_settings.cfg * Update l4d2_slowdown_control.sp * Add files via upload * Update l4d2_slowdown_control.sp * Add files via upload * Update l4d2_slowdown_control.sp * Add files via upload * Update l4d2_slowdown_control.sp * Add files via upload * Update l4d2_slowdown_control.sp * Add files via upload * Update l4d2_slowdown_control.sp * Add files via upload * Update l4d2_slowdown_control.sp * Add files via upload * Update l4d2_slowdown_control.sp * Add files via upload * Update l4d2_slowdown_control.sp * Add files via upload
1 parent 911f352 commit 3b49522

10 files changed

Lines changed: 86 additions & 5 deletions

File tree

1.12 KB
Binary file not shown.

addons/sourcemod/scripting/l4d2_slowdown_control.sp

Lines changed: 78 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#pragma newdecls required
2323

2424
#include <sourcemod>
25+
#include <sdktools>
2526
#include <left4dhooks>
2627
#include <l4d2util_stocks>
2728

@@ -52,22 +53,26 @@ ConVar
5253
hCvarSdInwaterSurvivor,
5354
hCvarSdInwaterDuringTank,
5455
hCvarSurvivorLimpspeed,
55-
hCvarTankSpeedVS;
56+
hCvarTankSpeedVS,
57+
hCvarCrouchSpeedMod;
5658

5759
float
5860
fTankWaterSpeed,
5961
fSurvWaterSpeed,
6062
fSurvWaterSpeedDuringTank,
61-
fTankRunSpeed;
63+
fTankRunSpeed,
64+
fCrouchSpeedMod;
6265

6366
bool
64-
tankInPlay = false;
67+
tankInPlay = false,
68+
bFoundCrouchTrigger = false,
69+
bPlayerInCrouchTrigger[MAXPLAYERS + 1];
6570

6671
public Plugin myinfo =
6772
{
6873
name = "L4D2 Slowdown Control",
69-
author = "Visor, Sir, darkid, Forgetest, A1m`",
70-
version = "2.6.6",
74+
author = "Visor, Sir, darkid, Forgetest, A1m`, Derpduck",
75+
version = "2.6.7",
7176
description = "Manages the water/gunfire slowdown for both teams",
7277
url = "https://github.com/SirPlease/L4D2-Competitive-Rework"
7378
};
@@ -79,6 +84,7 @@ public void OnPluginStart()
7984
hCvarSdInwaterTank = CreateConVar("l4d2_slowdown_water_tank", "-1", "Maximum tank speed in the water (-1: ignore setting; 0: default; 210: default Tank Speed)", _, true, -1.0);
8085
hCvarSdInwaterSurvivor = CreateConVar("l4d2_slowdown_water_survivors", "-1", "Maximum survivor speed in the water outside of Tank fights (-1: ignore setting; 0: default; 220: default Survivor speed)", _, true, -1.0);
8186
hCvarSdInwaterDuringTank = CreateConVar("l4d2_slowdown_water_survivors_during_tank", "0", "Maximum survivor speed in the water during Tank fights (0: ignore setting; 220: default Survivor speed)", _, true, 0.0);
87+
hCvarCrouchSpeedMod = CreateConVar("l4d2_slowdown_crouch_speed_mod", "1.0", "Modifier of player crouch speed when inside a designated trigger, 75 is the defualt for everyone (1: default speed)", _, true, 0.0);
8288

8389
hCvarSdPistolMod = CreateConVar("l4d2_slowdown_pistol_percent", "0.0", "Pistols cause this much slowdown * l4d2_slowdown_gunfire at maximum damage.");
8490
hCvarSdDeagleMod = CreateConVar("l4d2_slowdown_deagle_percent", "0.1", "Deagles cause this much slowdown * l4d2_slowdown_gunfire at maximum damage.");
@@ -101,6 +107,7 @@ public void OnPluginStart()
101107
hCvarSdInwaterSurvivor.AddChangeHook(OnConVarChanged);
102108
hCvarSdInwaterDuringTank.AddChangeHook(OnConVarChanged);
103109
hCvarTankSpeedVS.AddChangeHook(OnConVarChanged);
110+
hCvarCrouchSpeedMod.AddChangeHook(OnConVarChanged);
104111

105112
HookEvent("tank_spawn", TankSpawn, EventHookMode_PostNoCopy);
106113
HookEvent("round_start", RoundStart, EventHookMode_PostNoCopy);
@@ -124,6 +131,7 @@ void CvarsToType()
124131
fSurvWaterSpeed = hCvarSdInwaterSurvivor.FloatValue;
125132
fSurvWaterSpeedDuringTank = hCvarSdInwaterDuringTank.FloatValue;
126133
fTankRunSpeed = hCvarTankSpeedVS.FloatValue;
134+
fCrouchSpeedMod = hCvarCrouchSpeedMod.FloatValue;
127135
}
128136

129137
public Action TankSpawn(Event event, const char[] name, bool dontBroadcast)
@@ -158,6 +166,48 @@ public Action Timer_CheckTank(Handle timer)
158166
public Action RoundStart(Event event, const char[] name, bool dontBroadcast)
159167
{
160168
tankInPlay = false;
169+
HookCrouchTriggers();
170+
}
171+
172+
public void HookCrouchTriggers()
173+
{
174+
bFoundCrouchTrigger = false;
175+
176+
// Hook trigger_multiple entities that are named "l4d2_slowdown_crouch_speed"
177+
if (fCrouchSpeedMod != 1.0) {
178+
// Reset array
179+
for (int i = 1; i <= MaxClients; i++) {
180+
bPlayerInCrouchTrigger[i] = false;
181+
}
182+
183+
int iEntity = -1;
184+
char targetname[128];
185+
186+
while ((iEntity = FindEntityByClassname(iEntity, "trigger_multiple")) != -1) {
187+
GetEntPropString(iEntity, Prop_Data, "m_iName", targetname, sizeof(targetname));
188+
189+
if (StrEqual(targetname, "l4d2_slowdown_crouch_speed", false)) {
190+
HookSingleEntityOutput(iEntity, "OnStartTouch", CrouchSpeedStartTouch);
191+
HookSingleEntityOutput(iEntity, "OnEndTouch", CrouchSpeedEndTouch);
192+
193+
bFoundCrouchTrigger = true;
194+
}
195+
}
196+
}
197+
}
198+
199+
public void CrouchSpeedStartTouch(const char[] output, int caller, int activator, float delay)
200+
{
201+
if (0 < activator <= MaxClients && IsClientInGame(activator)) {
202+
bPlayerInCrouchTrigger[activator] = true;
203+
}
204+
}
205+
206+
public void CrouchSpeedEndTouch(const char[] output, int caller, int activator, float delay)
207+
{
208+
if (0 < activator <= MaxClients && IsClientInGame(activator)) {
209+
bPlayerInCrouchTrigger[activator] = false;
210+
}
161211
}
162212

163213
/**
@@ -250,6 +300,29 @@ public Action L4D_OnGetRunTopSpeed(int client, float &retVal)
250300
return Plugin_Continue;
251301
}
252302

303+
/**
304+
*
305+
* Slowdown from crouching: All players
306+
*
307+
**/
308+
public Action L4D_OnGetCrouchTopSpeed(int client, float &retVal)
309+
{
310+
if (fCrouchSpeedMod == 1.0 || !bFoundCrouchTrigger || !IsClientInGame(client)) {
311+
return Plugin_Continue;
312+
}
313+
314+
if (bPlayerInCrouchTrigger[client]) {
315+
bool bGrounded = (GetEntityFlags(client) & FL_ONGROUND) ? true : false;
316+
317+
if (bGrounded) {
318+
retVal = retVal * fCrouchSpeedMod; // 75 * modifier
319+
return Plugin_Handled;
320+
}
321+
}
322+
323+
return Plugin_Continue;
324+
}
325+
253326
// The old slowdown plugin's cvars weren't quite intuitive, so I'll try to fix it this time
254327
float GetActualValue(ConVar cvar)
255328
{

cfg/cfgogl/apex/shared_settings.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ confogl_addcvar l4d2_slowdown_gunfire_tank 0.23
8383
confogl_addcvar l4d2_slowdown_water_tank 0
8484
confogl_addcvar l4d2_slowdown_water_survivors -1
8585
confogl_addcvar l4d2_slowdown_water_survivors_during_tank 220
86+
confogl_addcvar l4d2_slowdown_crouch_speed_mod 1
8687
confogl_addcvar l4d2_slowdown_pistol_percent 0.5
8788
confogl_addcvar l4d2_slowdown_deagle_percent 0.8
8889
confogl_addcvar l4d2_slowdown_uzi_percent 0.7

cfg/cfgogl/eq/shared_settings.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ confogl_addcvar l4d2_slowdown_gunfire_tank 0
7979
confogl_addcvar l4d2_slowdown_water_tank 0
8080
confogl_addcvar l4d2_slowdown_water_survivors 220
8181
confogl_addcvar l4d2_slowdown_water_survivors_during_tank 0
82+
confogl_addcvar l4d2_slowdown_crouch_speed_mod 1
8283

8384
// [l4d_tank_damage_announce.smx]
8485
confogl_addcvar l4d_tankdamage_enabled 1

cfg/cfgogl/nextmod/shared_settings.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ confogl_addcvar l4d2_slowdown_gunfire_tank 0
8888
confogl_addcvar l4d2_slowdown_water_tank 0
8989
confogl_addcvar l4d2_slowdown_water_survivors -1
9090
confogl_addcvar l4d2_slowdown_water_survivors_during_tank 220
91+
confogl_addcvar l4d2_slowdown_crouch_speed_mod 1
9192

9293
// [l4d2_horde_equaliser.smx]
9394
confogl_addcvar l4d2_heq_checkpoint_sound 1

cfg/cfgogl/pmelite/pmelite.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,7 @@ confogl_addcvar l4d2_slowdown_gunfire_tank 0.24
271271
confogl_addcvar l4d2_slowdown_water_tank 0
272272
confogl_addcvar l4d2_slowdown_water_survivors -1
273273
confogl_addcvar l4d2_slowdown_water_survivors_during_tank 220
274+
confogl_addcvar l4d2_slowdown_crouch_speed_mod 1
274275
confogl_addcvar l4d2_slowdown_pistol_percent 0.5
275276
confogl_addcvar l4d2_slowdown_deagle_percent 0.8
276277
confogl_addcvar l4d2_slowdown_uzi_percent 0.7

cfg/cfgogl/zonehunters/shared_settings.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ confogl_addcvar l4d2_slowdown_gunfire_tank 0
7575
confogl_addcvar l4d2_slowdown_water_tank 0
7676
confogl_addcvar l4d2_slowdown_water_survivors -1
7777
confogl_addcvar l4d2_slowdown_water_survivors_during_tank 220
78+
confogl_addcvar l4d2_slowdown_crouch_speed_mod 1.4
7879

7980
// [l4d_tank_damage_announce.smx]
8081
confogl_addcvar l4d_tankdamage_enabled 1

cfg/cfgogl/zonemod/shared_settings.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ confogl_addcvar l4d2_slowdown_gunfire_tank 0
7979
confogl_addcvar l4d2_slowdown_water_tank 0
8080
confogl_addcvar l4d2_slowdown_water_survivors -1
8181
confogl_addcvar l4d2_slowdown_water_survivors_during_tank 220
82+
confogl_addcvar l4d2_slowdown_crouch_speed_mod 1.4
8283

8384
// [l4d_tank_damage_announce.smx]
8485
confogl_addcvar l4d_tankdamage_enabled 1

cfg/cfgogl/zonemodold/shared_settings.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ confogl_addcvar l4d2_slowdown_gunfire_tank 0
7878
confogl_addcvar l4d2_slowdown_water_tank 0
7979
confogl_addcvar l4d2_slowdown_water_survivors -1
8080
confogl_addcvar l4d2_slowdown_water_survivors_during_tank 220
81+
confogl_addcvar l4d2_slowdown_crouch_speed_mod 1
8182

8283
// [l4d2_horde_equaliser.smx]
8384
confogl_addcvar l4d2_heq_checkpoint_sound 1

cfg/cfgogl/zoneretro/shared_settings.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ confogl_addcvar l4d2_slowdown_gunfire_tank 0
7676
confogl_addcvar l4d2_slowdown_water_tank 0
7777
confogl_addcvar l4d2_slowdown_water_survivors -1
7878
confogl_addcvar l4d2_slowdown_water_survivors_during_tank 220
79+
confogl_addcvar l4d2_slowdown_crouch_speed_mod 1.4
7980

8081
// [l4d_tank_damage_announce.smx]
8182
confogl_addcvar l4d_tankdamage_enabled 1

0 commit comments

Comments
 (0)