From 41529f91218c0309311d99b5c37c896a6f92e467 Mon Sep 17 00:00:00 2001 From: div0 Date: Mon, 27 Mar 2006 20:00:55 +0000 Subject: [PATCH] Bunnyhopping now controllable to more closely match 1.5's physics; Please test: test_less_bunnyhopping_more_aircontrol test_less_bunnyhopping_more_aircontrol_like15 These also set sv_maxairspeed back to 1.5's setting git-svn-id: svn://svn.icculus.org/nexuiz/trunk@1193 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/default.cfg | 6 ++++++ data/qcsrc/server/gamec/cl_physics.c | 11 ++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/data/default.cfg b/data/default.cfg index a0c56ba26..54a286e17 100644 --- a/data/default.cfg +++ b/data/default.cfg @@ -104,6 +104,7 @@ sv_accelerate 5.5 sv_friction 5 sv_maxspeed 400 sv_stepheight 34 +set sv_friction_factor_bunnyhopping 0 seta sv_spectate 1 seta sv_defaultcharacter 0 seta sv_defaultplayermodel models/player/nexus.zym @@ -112,6 +113,11 @@ set sv_autoscreenshot 0 set net_messagetimeout 60 sv_jumpstep 1 // step up stairs while jumping, makes it easier to reach ledges +// TODO accept or reject? Please test -- div0 +alias test_less_bunnyhopping_more_aircontrol "sv_friction_factor_bunnyhopping 0.4; sv_maxairspeed 50" +alias test_less_bunnyhopping_more_aircontrol_like15 "sv_friction_factor_bunnyhopping 1; sv_maxairspeed 50" +alias test_less_bunnyhopping_more_aircontrol_undo "sv_friction_factor_bunnyhopping 0; sv_maxairspeed 25" + set g_navnodeedit 0 pausable 0 diff --git a/data/qcsrc/server/gamec/cl_physics.c b/data/qcsrc/server/gamec/cl_physics.c index 7e5a1093c..839f24559 100644 --- a/data/qcsrc/server/gamec/cl_physics.c +++ b/data/qcsrc/server/gamec/cl_physics.c @@ -206,20 +206,25 @@ void SV_PlayerPhysics() } else if (self.flags & FL_ONGROUND) { + float friction; // walking makevectors(self.v_angle_y * '0 1 0'); wishvel = v_forward * self.movement_x + v_right * self.movement_y; + // friction + friction = sv_friction; + if ((self.flags & FL_JUMPRELEASED) && self.button2) + friction = friction * cvar("sv_friction_factor_bunnyhopping");//0.4 + if (self.velocity_x || self.velocity_y) - if (!(self.flags & FL_JUMPRELEASED) || !self.button2) // don't apply friction if bunnyhopping { v = self.velocity; v_z = 0; f = vlen(v); if (f < sv_stopspeed) - f = 1 - frametime * (sv_stopspeed / f) * sv_friction; + f = 1 - frametime * (sv_stopspeed / f) * friction; else - f = 1 - frametime * sv_friction; + f = 1 - frametime * friction; if (f > 0) self.velocity = self.velocity * f; else -- 2.39.2