exec balanceXonotic.cfg
exec ctfscoring-ai.cfg
exec effects-normal.cfg
-exec physicsX0.cfg
+exec physicsX.cfg
exec turrets.cfg
// hud cvar descriptions
sv_waterfriction 1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 1
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 2.5
sv_airstrafeaccelerate 70
sv_maxairstrafespeed 30
sv_waterfriction -1
sv_airaccel_sideways_friction 0 // breaks strafing?
sv_airaccel_qw 0.92
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 2.5
sv_airstrafeaccelerate 20
sv_maxairstrafespeed 100
sv_waterfriction -1
sv_airaccel_sideways_friction 0.65
sv_airaccel_qw 0.95
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction -1
sv_airaccel_sideways_friction 0 // breaks strafing?
sv_airaccel_qw -0.8
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate -0.95
sv_airstrafeaccelerate 24
sv_waterfriction -1
sv_airaccel_sideways_friction 0
sv_airaccel_qw -0.8
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 3
sv_airstrafeaccelerate 24
sv_waterfriction -1
sv_airaccel_sideways_friction 0 // pain in the ass to tweak without screwing up the strafing
sv_airaccel_qw -0.93 //given a negative value to combat potential cheats, was told by divVerent not to mess with it
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_waterfriction -1
sv_airaccel_sideways_friction 0.35
sv_airaccel_qw 0.95
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction -1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 0
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction -1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 0
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction -1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 0
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction -1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 0
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction -1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 0
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction -1
sv_airaccel_sideways_friction 0.3
sv_airaccel_qw 0.93
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction -1
sv_airaccel_sideways_friction 0.35
sv_airaccel_qw 0.95
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction -1
sv_airaccel_sideways_friction 0.35
sv_airaccel_qw 0.95
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction -1
sv_airaccel_sideways_friction 0
sv_airaccel_qw -0.9475
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 3
sv_airstrafeaccelerate 24
sv_waterfriction -1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 1
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction 1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 1
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction 1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 1
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction 1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 1
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction -1
sv_airaccel_sideways_friction 0.8
sv_airaccel_qw 1
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction -1
sv_airaccel_sideways_friction 0.5
sv_airaccel_qw 0.93
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction -1
sv_airaccel_sideways_friction 0.3
sv_airaccel_qw 0.93
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_waterfriction 1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 1
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 2.5
sv_airstrafeaccelerate 70
sv_maxairstrafespeed 30
sv_waterfriction 1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 1
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 2.5
sv_airstrafeaccelerate 70
sv_maxairstrafespeed 30
sv_waterfriction 1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 1
+sv_airaccel_qw_stretchfactor 0
sv_airstopaccelerate 2
sv_airstrafeaccelerate 70
sv_maxairstrafespeed 30
--- /dev/null
+// current Xonotic physics
+sv_gravity 800
+sv_maxspeed 360
+sv_maxairspeed 360
+
+sv_stopspeed 100
+sv_accelerate 15
+sv_airaccelerate 2
+sv_friction 8
+edgefriction 1
+sv_stepheight 26
+// Q1: 16+2
+// Nex: 32+2
+// we try: 24+2
+
+// actually, what we want is 266.6666 for 180bpm
+// but 260 takes same amount of frames and is nicer to mappers
+sv_jumpvelocity 260
+sv_wateraccelerate -1
+sv_waterfriction -1
+sv_airaccel_sideways_friction 0
+sv_airaccel_qw -0.8
+sv_airaccel_qw_stretchfactor 2
+
+sv_airstopaccelerate 3
+sv_airstrafeaccelerate 24
+sv_maxairstrafespeed 100
+sv_airstrafeaccel_qw -0.95
+sv_aircontrol 125
+sv_aircontrol_penalty 180
+sv_aircontrol_power 2
+sv_airspeedlimit_nonqw 800
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
+sv_friction_on_land 0
+sv_doublejump 0
+sv_jumpspeedcap_min ""
+sv_jumpspeedcap_max ""
+sv_jumpspeedcap_max_disable_on_ramps 1
+g_teleport_maxspeed 0
+++ /dev/null
-// "NoQWBunny" physics based on XPM
-sv_gravity 800
-sv_maxspeed 360
-sv_maxairspeed 360
-
-sv_stopspeed 100
-sv_accelerate 15
-sv_airaccelerate 2
-sv_friction 8
-edgefriction 1
-sv_stepheight 26
-// Q1: 16+2
-// Nex: 32+2
-// we try: 24+2
-
-// actually, what we want is 266.6666 for 180bpm
-// but 260 takes same amount of frames and is nicer to mappers
-sv_jumpvelocity 260
-sv_wateraccelerate -1
-sv_waterfriction -1
-sv_airaccel_sideways_friction 0
-sv_airaccel_qw -0.8
-
-sv_airstopaccelerate 3
-sv_airstrafeaccelerate 24
-sv_maxairstrafespeed 100
-sv_airstrafeaccel_qw -0.95
-sv_aircontrol 125
-sv_aircontrol_penalty 180
-sv_aircontrol_power 2
-sv_airspeedlimit_nonqw 700
-sv_warsowbunny_turnaccel 0
-sv_warsowbunny_accel 0.1593
-sv_warsowbunny_topspeed 925
-sv_warsowbunny_backtosideratio 0.8
-sv_friction_on_land 0
-sv_doublejump 0
-sv_jumpspeedcap_min ""
-sv_jumpspeedcap_max ""
-sv_jumpspeedcap_max_disable_on_ramps 1
-g_teleport_maxspeed 0
--- /dev/null
+// Xonotic 0.1.0preview physics
+sv_gravity 800
+sv_maxspeed 360
+sv_maxairspeed 400
+
+sv_stopspeed 100
+sv_accelerate 15
+sv_airaccelerate 2
+sv_friction 8
+edgefriction 1
+sv_stepheight 26
+// Q1: 16+2
+// Nex: 32+2
+// we try: 24+2
+
+// actually, what we want is 266.6666 for 180bpm
+// but 260 takes same amount of frames and is nicer to mappers
+sv_jumpvelocity 260
+sv_wateraccelerate -1
+sv_waterfriction -1
+sv_airaccel_sideways_friction 0
+sv_airaccel_qw -0.8
+sv_airaccel_qw_stretchfactor 0
+
+sv_airstopaccelerate 3
+sv_airstrafeaccelerate 24
+sv_maxairstrafespeed 100
+sv_airstrafeaccel_qw -0.95
+sv_aircontrol 125
+sv_aircontrol_penalty 150
+sv_aircontrol_power 2
+sv_airspeedlimit_nonqw 800
+sv_warsowbunny_turnaccel 0
+sv_warsowbunny_accel 0.1593
+sv_warsowbunny_topspeed 925
+sv_warsowbunny_backtosideratio 0.8
+sv_friction_on_land 0
+sv_doublejump 0
+sv_jumpspeedcap_min ""
+sv_jumpspeedcap_max ""
+sv_jumpspeedcap_max_disable_on_ramps 1
+g_teleport_maxspeed 0
sv_waterfriction 1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 0.95
+sv_airaccel_qw_stretchfactor 0
// CPMA: 1
sv_airstopaccelerate 2.5
sv_airstrafeaccelerate 70
sv_waterfriction 1
sv_airaccel_sideways_friction 0
sv_airaccel_qw -0.9146875
+sv_airaccel_qw_stretchfactor 0
+sv_airaccel_qw_stretchfactor 0
// CPMA: 1
sv_airstopaccelerate 6.5625 // matches strafe-stopping speed
sv_airstrafeaccelerate 14
var float autocvar_sv_accuracy_data_share = 1;
string autocvar_sv_adminnick;
float autocvar_sv_airaccel_qw;
+float autocvar_sv_airaccel_qw_stretchfactor;
float autocvar_sv_airaccel_sideways_friction;
float autocvar_sv_airaccelerate;
float autocvar_sv_aircontrol;
set_dom_state(self);
CheatInitClient();
-
- PlayerStats_AddPlayer(self);
}
/*
// sv_airaccel_sideways_friction 0
// prvm_globalset server speedclamp_mode 1
// (or 2)
-void PM_Accelerate(vector wishdir, float wishspeed, float wishspeed0, float accel, float accelqw, float sidefric, float speedlimit)
+void PM_Accelerate(vector wishdir, float wishspeed, float wishspeed0, float accel, float accelqw, float stretchfactor, float sidefric, float speedlimit)
{
float vel_straight;
float vel_z;
float vel_xy_backward, vel_xy_forward;
float speedclamp;
- speedclamp = (accelqw < 0);
- if(speedclamp)
+ if(stretchfactor > 0)
+ speedclamp = stretchfactor;
+ else if(accelqw < 0)
+ speedclamp = 1; // full clamping, no stretch
+ else
+ speedclamp = -1; // no clamping
+
+ if(accelqw < 0)
accelqw = -accelqw;
if(autocvar_sv_gameplayfix_q2airaccelerate)
vel_xy = vel_straight * wishdir + vel_perpend;
- if(speedclamp)
+ if(speedclamp >= 0)
{
- // ensure we don't get too fast or decelerate faster than we should
- vel_xy_current = min(vlen(vel_xy), vel_xy_forward);
- if(vel_xy_current > 0) // prevent division by zero
- vel_xy = normalize(vel_xy) * vel_xy_current;
+ float vel_xy_preclamp;
+ vel_xy_preclamp = vlen(vel_xy);
+ if(vel_xy_preclamp > 0) // prevent division by zero
+ {
+ vel_xy_current += (vel_xy_forward - vel_xy_current) * speedclamp;
+ if(vel_xy_current < vel_xy_preclamp)
+ vel_xy = vel_xy * (vel_xy_current / vel_xy_preclamp);
+ }
}
self.velocity = vel_xy + vel_z * '0 0 1';
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, autocvar_sv_accelerate*maxspd_mod, 1, 0, 0);
+ PM_Accelerate(wishdir, wishspeed, wishspeed, autocvar_sv_accelerate*maxspd_mod, 1, 0, 0, 0);
}
else if (self.waterlevel >= WATERLEVEL_SWIMMING)
{
self.velocity = self.velocity * (1 - frametime * autocvar_sv_friction);
// water acceleration
- PM_Accelerate(wishdir, wishspeed, wishspeed, autocvar_sv_accelerate*maxspd_mod, 1, 0, 0);
+ PM_Accelerate(wishdir, wishspeed, wishspeed, autocvar_sv_accelerate*maxspd_mod, 1, 0, 0, 0);
}
else if (time < self.ladder_time)
{
if (time >= self.teleport_time)
{
// water acceleration
- PM_Accelerate(wishdir, wishspeed, wishspeed, autocvar_sv_accelerate*maxspd_mod, 1, 0, 0);
+ PM_Accelerate(wishdir, wishspeed, wishspeed, autocvar_sv_accelerate*maxspd_mod, 1, 0, 0, 0);
}
}
else if ((self.items & IT_JETPACK) && self.BUTTON_HOOK && (!autocvar_g_jetpack_fuel || self.ammo_fuel >= 0.01 || self.items & IT_UNLIMITED_WEAPON_AMMO))
if (self.crouch)
wishspeed = wishspeed * 0.5;
if (time >= self.teleport_time)
- PM_Accelerate(wishdir, wishspeed, wishspeed, autocvar_sv_accelerate*maxspd_mod, 1, 0, 0);
+ PM_Accelerate(wishdir, wishspeed, wishspeed, autocvar_sv_accelerate*maxspd_mod, 1, 0, 0, 0);
}
else
{
if(autocvar_sv_warsowbunny_turnaccel && accelerating && self.movement_y == 0 && self.movement_x != 0)
PM_AirAccelerate(wishdir, wishspeed);
else
- PM_Accelerate(wishdir, wishspeed, wishspeed0, airaccel, airaccelqw, autocvar_sv_airaccel_sideways_friction / maxairspd, self.stat_sv_airspeedlimit_nonqw);
+ PM_Accelerate(wishdir, wishspeed, wishspeed0, airaccel, airaccelqw, autocvar_sv_airaccel_qw_stretchfactor, autocvar_sv_airaccel_sideways_friction / maxairspd, self.stat_sv_airspeedlimit_nonqw);
if(autocvar_sv_aircontrol)
CPM_PM_Aircontrol(wishdir, wishspeed2);
{
if (s == "cl_weaponpriority")
self.switchweapon = w_getbestweapon(self);
+ if (s == "cl_allow_uidtracking")
+ PlayerStats_AddPlayer(self);
}
}
{
if(playerstats_db < 0)
return;
+ if(e.playerstats_id)
+ return;
if(e.crypto_idfp != "" && e.cvar_cl_allow_uidtracking == 1)
e.playerstats_id = strzone(e.crypto_idfp);