*/
void PlayerJump (void)
{
+ if(g_freezetag && self.freezetag_frozen)
+ return; // no jumping in freezetag when frozen
+
float mjumpheight;
float doublejump;
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);
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)
{
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)
{
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())
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");
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;
// 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);
}
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
// 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
// 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)
// 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)
rr = RACE_RECORD;
race_send_speedaward(MSG_ALL);
speedaward_lastsent = speedaward_speed;
- if (speedaward_speed > speedaward_alltimebest) {
+ if (speedaward_speed > speedaward_alltimebest && speedaward_uid != "") {
speedaward_alltimebest = speedaward_speed;
speedaward_alltimebest_holder = speedaward_holder;
speedaward_alltimebest_uid = speedaward_uid;