X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_physics.qc;h=b852e3f05b8652b6c35a242148167f2180034156;hb=84de176ec42eeaeaa7f9b415b0f2b67adb1aa708;hp=3455fde9a375e1007a1f005ded2801d7135edeb7;hpb=21a6985a5568f9ade821c914c5d66595ddc4619d;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cl_physics.qc b/qcsrc/server/cl_physics.qc index 3455fde9a..b852e3f05 100644 --- a/qcsrc/server/cl_physics.qc +++ b/qcsrc/server/cl_physics.qc @@ -133,26 +133,6 @@ void PlayerJump (void) if(self.health <= g_bloodloss) return; - if(g_runematch) - { - if(self.runes & RUNE_SPEED) - { - if(self.runes & CURSE_SLOW) - mjumpheight = mjumpheight * cvar("g_balance_rune_speed_combo_jumpheight"); - else - mjumpheight = mjumpheight * cvar("g_balance_rune_speed_jumpheight"); - } - else if(self.runes & CURSE_SLOW) - { - mjumpheight = mjumpheight * cvar("g_balance_curse_slow_jumpheight"); - } - } - - if(g_minstagib && (self.items & IT_INVINCIBLE)) - { - mjumpheight = mjumpheight * cvar("g_minstagib_speed_jumpheight"); - } - // sv_jumpspeedcap_min/sv_jumpspeedcap_max act as baseline // velocity bounds. Final velocity is bound between (jumpheight * // min + jumpheight) and (jumpheight * max + jumpheight); @@ -273,8 +253,8 @@ void RaceCarPhysics() vector angles_save, rigvel; angles_save = self.angles; - accel = bound(-1, self.movement_x / sv_maxspeed, 1); - steer = bound(-1, self.movement_y / sv_maxspeed, 1); + accel = bound(-1, self.movement_x / self.stat_sv_maxspeed, 1); + steer = bound(-1, self.movement_y / self.stat_sv_maxspeed, 1); if(g_bugrigs_reverse_speeding) { @@ -628,19 +608,19 @@ void PM_AirAccelerate(vector wishdir, float wishspeed) if(wishspeed > curspeed * 1.01) { - wishspeed = min(wishspeed, curspeed + sv_warsowbunny_airforwardaccel * sv_maxspeed * frametime); + wishspeed = min(wishspeed, curspeed + sv_warsowbunny_airforwardaccel * self.stat_sv_maxspeed * frametime); } else { - f = max(0, (sv_warsowbunny_topspeed - curspeed) / (sv_warsowbunny_topspeed - sv_maxspeed)); - wishspeed = max(curspeed, sv_maxspeed) + sv_warsowbunny_accel * f * sv_maxspeed * frametime; + f = max(0, (sv_warsowbunny_topspeed - curspeed) / (sv_warsowbunny_topspeed - self.stat_sv_maxspeed)); + wishspeed = max(curspeed, self.stat_sv_maxspeed) + sv_warsowbunny_accel * f * self.stat_sv_maxspeed * frametime; } wishvel = wishdir * wishspeed; acceldir = wishvel - curvel; addspeed = vlen(acceldir); acceldir = normalize(acceldir); - accelspeed = min(addspeed, sv_warsowbunny_turnaccel * sv_maxspeed * frametime); + accelspeed = min(addspeed, sv_warsowbunny_turnaccel * self.stat_sv_maxspeed * frametime); if(sv_warsowbunny_backtosideratio < 1) { @@ -710,13 +690,39 @@ void SV_PlayerPhysics() float not_allowed_to_move; string c; + maxspd_mod = 1; + if(g_minstagib && (self.items & IT_INVINCIBLE)) + maxspd_mod *= cvar("g_minstagib_speed_highspeed"); + if(self.ballcarried) + if(g_nexball) + maxspd_mod *= cvar("g_nexball_basketball_carrier_highspeed"); + else if(g_keepaway) + maxspd_mod *= cvar("g_keepaway_ballcarrier_highspeed"); + + if(g_runematch) + { + if(self.runes & RUNE_SPEED) + { + if(self.runes & CURSE_SLOW) + maxspd_mod *= cvar("g_balance_rune_speed_combo_highspeed"); + else + maxspd_mod *= cvar("g_balance_rune_speed_highspeed"); + } + else if(self.runes & CURSE_SLOW) + { + maxspd_mod *= cvar("g_balance_curse_slow_highspeed"); + } + } + maxspd_mod *= autocvar_g_movement_highspeed; + // fix physics stats for g_movement_highspeed - self.stat_sv_airaccel_qw = AdjustAirAccelQW(sv_airaccel_qw, autocvar_g_movement_highspeed); + self.stat_sv_airaccel_qw = AdjustAirAccelQW(sv_airaccel_qw, maxspd_mod); if(sv_airstrafeaccel_qw) - self.stat_sv_airstrafeaccel_qw = AdjustAirAccelQW(sv_airstrafeaccel_qw, autocvar_g_movement_highspeed); + self.stat_sv_airstrafeaccel_qw = AdjustAirAccelQW(sv_airstrafeaccel_qw, maxspd_mod); else self.stat_sv_airstrafeaccel_qw = 0; - self.stat_sv_airspeedlimit_nonqw = sv_airspeedlimit_nonqw * autocvar_g_movement_highspeed; + self.stat_sv_airspeedlimit_nonqw = sv_airspeedlimit_nonqw * maxspd_mod; + self.stat_sv_maxspeed = sv_maxspeed * maxspd_mod; // also slow walking if(self.PlayerPhysplug) if(self.PlayerPhysplug()) @@ -849,31 +855,6 @@ void SV_PlayerPhysics() maxspd_mod = 1; - if(g_runematch) - { - if(self.runes & RUNE_SPEED) - { - if(self.runes & CURSE_SLOW) - maxspd_mod = maxspd_mod * cvar("g_balance_rune_speed_combo_moverate"); - else - maxspd_mod = maxspd_mod * cvar("g_balance_rune_speed_moverate"); - } - else if(self.runes & CURSE_SLOW) - { - maxspd_mod = maxspd_mod * cvar("g_balance_curse_slow_moverate"); - } - } - - if(g_minstagib && (self.items & IT_INVINCIBLE)) - { - maxspd_mod = cvar("g_minstagib_speed_moverate"); - } - - if(g_nexball && self.ballcarried) - { - maxspd_mod = cvar("g_nexball_basketball_carrier_speed"); - } - swampspd_mod = 1; if(self.in_swamp) { swampspd_mod = self.swamp_slowdown; //cvar("g_balance_swamp_moverate"); @@ -902,7 +883,7 @@ void SV_PlayerPhysics() maxspd_mod = self.spectatorspeed; } - spd = max(sv_maxspeed, sv_maxairspeed) * maxspd_mod * swampspd_mod; + spd = max(self.stat_sv_maxspeed, sv_maxairspeed) * maxspd_mod * swampspd_mod; if(self.speed != spd) { self.speed = spd; @@ -998,8 +979,8 @@ void SV_PlayerPhysics() // acceleration wishdir = normalize(wishvel); wishspeed = vlen(wishvel); - if (wishspeed > sv_maxspeed*maxspd_mod) - wishspeed = sv_maxspeed*maxspd_mod; + if (wishspeed > self.stat_sv_maxspeed*maxspd_mod) + wishspeed = self.stat_sv_maxspeed*maxspd_mod; if (time >= self.teleport_time) PM_Accelerate(wishdir, wishspeed, wishspeed, sv_accelerate*maxspd_mod, 1, 0, 0); } @@ -1016,8 +997,8 @@ void SV_PlayerPhysics() wishdir = normalize(wishvel); wishspeed = vlen(wishvel); - if (wishspeed > sv_maxspeed*maxspd_mod) - wishspeed = sv_maxspeed*maxspd_mod; + if (wishspeed > self.stat_sv_maxspeed*maxspd_mod) + wishspeed = self.stat_sv_maxspeed*maxspd_mod; wishspeed = wishspeed * 0.7; // water friction @@ -1062,8 +1043,8 @@ void SV_PlayerPhysics() // acceleration wishdir = normalize(wishvel); wishspeed = vlen(wishvel); - if (wishspeed > sv_maxspeed*maxspd_mod) - wishspeed = sv_maxspeed*maxspd_mod; + if (wishspeed > self.stat_sv_maxspeed*maxspd_mod) + wishspeed = self.stat_sv_maxspeed*maxspd_mod; if (time >= self.teleport_time) { // water acceleration @@ -1222,8 +1203,8 @@ void SV_PlayerPhysics() // acceleration wishdir = normalize(wishvel); wishspeed = vlen(wishvel); - if (wishspeed > sv_maxspeed*maxspd_mod) - wishspeed = sv_maxspeed*maxspd_mod; + if (wishspeed > self.stat_sv_maxspeed*maxspd_mod) + wishspeed = self.stat_sv_maxspeed*maxspd_mod; if (self.crouch) wishspeed = wishspeed * 0.5; if (time >= self.teleport_time) @@ -1252,8 +1233,8 @@ void SV_PlayerPhysics() // acceleration wishdir = normalize(wishvel); wishspeed = wishspeed0 = vlen(wishvel); - if (wishspeed0 > sv_maxspeed*maxspd_mod) - wishspeed0 = sv_maxspeed*maxspd_mod; + if (wishspeed0 > self.stat_sv_maxspeed*maxspd_mod) + wishspeed0 = self.stat_sv_maxspeed*maxspd_mod; if (wishspeed > maxairspd) wishspeed = maxairspd; if (self.crouch)