From 56354fe4cb8e9311e03482a071356938eb6904f6 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Tue, 17 May 2011 10:09:35 +0200 Subject: [PATCH] dd a var "speedclamp" (macro -DSPEEDCLAMP=...) to influence the strafe accel reduction; try -DSPEEDCLAMP=-0.2 and -DSPEEDCLAMP=50 --- qcsrc/server/cl_physics.qc | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/qcsrc/server/cl_physics.qc b/qcsrc/server/cl_physics.qc index 08368676d..b28073b9d 100644 --- a/qcsrc/server/cl_physics.qc +++ b/qcsrc/server/cl_physics.qc @@ -516,9 +516,20 @@ void PM_Accelerate(vector wishdir, float wishspeed, float wishspeed0, float acce float vel_xy_backward, vel_xy_forward; float speedclamp; - speedclamp = (accelqw < 0); - if(speedclamp) + if(accelqw < 0) + { +#ifdef SPEEDCLAMP + speedclamp = SPEEDCLAMP; +#else + speedclamp = 0.000001; // no strafe accel +#endif accelqw = -accelqw; + } + else + speedclamp = 0; + // speedclamp usage: + // > 0: max acceleration in qu/s^2 in excess of regular (try 50, 100) + // < 0: max acceleration factor in excess of regular (try -0.1) if(autocvar_sv_gameplayfix_q2airaccelerate) wishspeed0 = wishspeed; @@ -560,10 +571,13 @@ void PM_Accelerate(vector wishdir, float wishspeed, float wishspeed0, float acce vel_xy = vel_straight * wishdir + vel_perpend; - if(speedclamp) + if(speedclamp != 0) { // ensure we don't get too fast or decelerate faster than we should - vel_xy_current = min(vlen(vel_xy), vel_xy_forward); + if(speedclamp > 0) + vel_xy_current = min(vlen(vel_xy), vel_xy_forward + frametime * speedclamp); + else + vel_xy_current = min(vlen(vel_xy), vel_xy_current + (vel_xy_forward - vel_xy_current) * (1 - frametime * speedclamp)); if(vel_xy_current > 0) // prevent division by zero vel_xy = normalize(vel_xy) * vel_xy_current; } -- 2.39.2