X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_physics.qc;h=70e702505cd2d5d9c482d968552b8f377619e4b9;hb=04e26d20ce0bf24514128a1e89b5fd37bc3e2fd5;hp=3a405c40be8f52fe179c71cb631ec044da90213c;hpb=1f27398e6b469fee0b07704fc135f12359b9bde5;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cl_physics.qc b/qcsrc/server/cl_physics.qc index 3a405c40b..70e702505 100644 --- a/qcsrc/server/cl_physics.qc +++ b/qcsrc/server/cl_physics.qc @@ -16,6 +16,7 @@ float sv_maxairstrafespeed; float sv_airstrafeaccel_qw; float sv_aircontrol; float sv_aircontrol_power; +float sv_aircontrol_penalty; float sv_warsowbunny_airforwardaccel; float sv_warsowbunny_accel; float sv_warsowbunny_topspeed; @@ -470,7 +471,9 @@ void CPM_PM_Aircontrol(vector wishdir, float wishspeed) if(dot > 0) // we can't change direction while slowing down { - k *= fabs(sv_aircontrol)*pow(dot, sv_aircontrol_power)*frametime; + k *= pow(dot, sv_aircontrol_power)*frametime; + xyspeed = max(0, xyspeed - sv_aircontrol_penalty * sqrt(max(0, 1 - dot*dot)) * k/32); + k *= sv_aircontrol; self.velocity = normalize(self.velocity * xyspeed + wishdir * k); } @@ -641,7 +644,6 @@ void race_send_speedaward_alltimebest(float msg) string GetMapname(void); float speedaward_lastupdate; float speedaward_lastsent; -var float autocvar_g_movement_highspeed = 1; void SV_PlayerPhysics() { local vector wishvel, wishdir, v; @@ -1203,8 +1205,13 @@ void SV_PlayerPhysics() // CPM if(sv_airstopaccelerate) - if(self.velocity * wishdir < 0) - airaccel = sv_airstopaccelerate*maxspd_mod; + { + vector curdir; + curdir = self.velocity; + curdir_z = 0; + curdir = normalize(curdir); + airaccel = airaccel + (sv_airstopaccelerate*maxspd_mod - airaccel) * max(0, -(curdir * wishdir)); + } // note that for straight forward jumping: // step = accel * frametime * wishspeed0; // accel = bound(0, wishspeed - vel_xy_current, step) * accelqw + step * (1 - accelqw);