X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_physics.qc;h=f42e1420916deb3b52e04c9d9801050f8e370bd9;hp=defb1f93925d014e3da2d9078d989c436b194de5;hb=e4c4af7662d3ec8b3302fe7b5d0fd73fb094d64c;hpb=1b2f1672f06badb535650eeef71354eec80a7eee diff --git a/qcsrc/server/cl_physics.qc b/qcsrc/server/cl_physics.qc index defb1f9392..f42e142091 100644 --- a/qcsrc/server/cl_physics.qc +++ b/qcsrc/server/cl_physics.qc @@ -605,6 +605,7 @@ string GetMapname(void); float speedaward_lastupdate; float speedaward_lastsent; .float jumppadusetime; +var float autocvar_g_movement_highspeed = 1; void SV_PlayerPhysics() { local vector wishvel, wishdir, v; @@ -614,6 +615,13 @@ void SV_PlayerPhysics() float not_allowed_to_move; string c; + // fix physics stats for g_movement_highspeed + self.stat_sv_airaccel_qw = copysign(bound(0, 1-(1-fabs(sv_airaccel_qw))*autocvar_g_movement_highspeed, 1), sv_airaccel_qw); + if(sv_airstrafeaccel_qw) + self.stat_sv_airstrafeaccel_qw = copysign(bound(0.001, 1-(1-fabs(sv_airstrafeaccel_qw))*autocvar_g_movement_highspeed, 1), sv_airstrafeaccel_qw); + else + self.stat_sv_airstrafeaccel_qw = 0; + if(self.PlayerPhysplug) if(self.PlayerPhysplug()) return; @@ -1160,7 +1168,7 @@ void SV_PlayerPhysics() float airaccelqw; float strafity; - airaccelqw = sv_airaccel_qw; + airaccelqw = self.stat_sv_airaccel_qw; accelerating = (self.velocity * wishdir > 0); wishspeed2 = wishspeed; @@ -1168,9 +1176,6 @@ void SV_PlayerPhysics() if(sv_airstopaccelerate) if(self.velocity * wishdir < 0) airaccel = sv_airstopaccelerate*maxspd_mod; - // this doesn't play well with analog input, but can't r - // fixed like the AirControl can. So, don't set the maxa - // cvars when you want to support analog input. // note that for straight forward jumping: // step = accel * frametime * wishspeed0; // accel = bound(0, wishspeed - vel_xy_current, step) * accelqw + step * (1 - accelqw); @@ -1184,8 +1189,8 @@ void SV_PlayerPhysics() wishspeed = min(wishspeed, GeomLerp(sv_maxairspeed*maxspd_mod, strafity, sv_maxairstrafespeed*maxspd_mod)); if(sv_airstrafeaccelerate) airaccel = GeomLerp(airaccel, strafity, sv_airstrafeaccelerate*maxspd_mod); - if(sv_airstrafeaccel_qw) - airaccelqw = sign((strafity > 0.5) ? sv_airstrafeaccel_qw : sv_airaccel_qw) * (1-GeomLerp(1-fabs(airaccelqw), strafity, 1-fabs(sv_airstrafeaccel_qw))); + if(self.stat_sv_airstrafeaccel_qw) + airaccelqw = copysign(1-GeomLerp(1-fabs(self.stat_sv_airaccel_qw), strafity, 1-fabs(self.stat_sv_airstrafeaccel_qw)), ((strafity > 0.5) ? self.stat_sv_airstrafeaccel_qw : self.stat_sv_airaccel_qw)); // !CPM if(sv_warsowbunny_turnaccel && accelerating && self.movement_y == 0 && self.movement_x != 0)