[nexuiz-commits] r7830 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri Sep 18 03:25:27 EDT 2009


Author: div0
Date: 2009-09-18 03:25:27 -0400 (Fri, 18 Sep 2009)
New Revision: 7830

Modified:
   trunk/data/qcsrc/server/cl_physics.qc
Log:
support sv_gameplayfix_q2airaccelerate


Modified: trunk/data/qcsrc/server/cl_physics.qc
===================================================================
--- trunk/data/qcsrc/server/cl_physics.qc	2009-09-18 06:29:17 UTC (rev 7829)
+++ trunk/data/qcsrc/server/cl_physics.qc	2009-09-18 07:25:27 UTC (rev 7830)
@@ -411,7 +411,7 @@
 	self.velocity_z = zspeed;
 }
 
-void PM_Accelerate(vector wishdir, float wishspeed, float accel, float accelqw, float sidefric)
+void PM_Accelerate(vector wishdir, float wishspeed, float wishspeed0, float accel, float accelqw, float sidefric)
 {
 	float vel_straight;
 	float vel_z;
@@ -419,6 +419,9 @@
 	float addspeed;
 	float savespeed;
 
+	if(cvar("sv_gameplayfix_q2airaccelerate"))
+		wishspeed0 = wishspeed;
+
 	savespeed = self.velocity * self.velocity;
 
 	vel_straight = self.velocity * wishdir;
@@ -427,9 +430,9 @@
 
 	addspeed = wishspeed - vel_straight;
 	if(addspeed > 0)
-		vel_straight = vel_straight + min(addspeed, accel * frametime * wishspeed) * accelqw;
+		vel_straight = vel_straight + min(addspeed, accel * frametime * wishspeed0) * accelqw;
 	if(wishspeed > 0)
-		vel_straight = vel_straight + min(wishspeed, accel * frametime * wishspeed) * (1 - accelqw);
+		vel_straight = vel_straight + min(wishspeed, accel * frametime * wishspeed0) * (1 - accelqw);
 
 	if(sidefric < 0 && (vel_perpend*vel_perpend))
 	{
@@ -856,7 +859,7 @@
 		if (wishspeed > sv_maxspeed*maxspd_mod)
 			wishspeed = sv_maxspeed*maxspd_mod;
 		if (time >= self.teleport_time)
-			PM_Accelerate(wishdir, wishspeed, sv_accelerate*maxspd_mod, 1, 0);
+			PM_Accelerate(wishdir, wishspeed, wishspeed, sv_accelerate*maxspd_mod, 1, 0);
 	}
 	else if (self.waterlevel >= WATERLEVEL_SWIMMING)
 	{
@@ -879,7 +882,7 @@
 		self.velocity = self.velocity * (1 - frametime * sv_friction);
 
 		// water acceleration
-		PM_Accelerate(wishdir, wishspeed, sv_accelerate*maxspd_mod, 1, 0);
+		PM_Accelerate(wishdir, wishspeed, wishspeed, sv_accelerate*maxspd_mod, 1, 0);
 	}
 	else if (time < self.ladder_time)
 	{
@@ -922,7 +925,7 @@
 		if (time >= self.teleport_time)
 		{
 			// water acceleration
-			PM_Accelerate(wishdir, wishspeed, sv_accelerate*maxspd_mod, 1, 0);
+			PM_Accelerate(wishdir, wishspeed, wishspeed, sv_accelerate*maxspd_mod, 1, 0);
 		}
 	}
 	else if ((self.items & IT_JETPACK) && self.BUTTON_HOOK && (!cvar("g_jetpack_fuel") || self.ammo_fuel >= 0.01 || self.items & IT_UNLIMITED_WEAPON_AMMO))
@@ -1082,10 +1085,11 @@
 		if (self.crouch)
 			wishspeed = wishspeed * 0.5;
 		if (time >= self.teleport_time)
-			PM_Accelerate(wishdir, wishspeed, sv_accelerate*maxspd_mod, 1, 0);
+			PM_Accelerate(wishdir, wishspeed, wishspeed, sv_accelerate*maxspd_mod, 1, 0);
 	}
 	else
 	{
+		float wishspeed0;
 		// we get here if we ran out of ammo
 		if((self.items & IT_JETPACK) && self.BUTTON_HOOK && !(buttons_prev & 32))
 			sprint(self, "You don't have any fuel for the ^2Jetpack\n");
@@ -1105,7 +1109,9 @@
 		wishvel = v_forward * self.movement_x + v_right * self.movement_y;
 		// acceleration
 		wishdir = normalize(wishvel);
-		wishspeed = vlen(wishvel);
+		wishspeed = wishspeed0 = vlen(wishvel);
+		if (wishspeed0 > sv_maxspeed*maxspd_mod)
+			wishspeed0 = sv_maxspeed*maxspd_mod;
 		if (wishspeed > maxairspd)
 			wishspeed = maxairspd;
 		if (self.crouch)
@@ -1144,7 +1150,7 @@
 			if(sv_warsowbunny_turnaccel && accelerating && self.movement_y == 0 && self.movement_x != 0)
 				PM_AirAccelerate(wishdir, wishspeed);
 			else
-				PM_Accelerate(wishdir, wishspeed, airaccel, airaccelqw, sv_airaccel_sideways_friction / maxairspd);
+				PM_Accelerate(wishdir, wishspeed, wishspeed0, airaccel, airaccelqw, sv_airaccel_sideways_friction / maxairspd);
 
 			if(sv_aircontrol)
 				CPM_PM_Aircontrol(wishdir, wishspeed2);



More information about the nexuiz-commits mailing list