set sv_slick_applygravity 0
set sv_aircontrol_backwards 0 "apply forward aircontrol options to backward movement"
+set sv_aircontrol_sidewards 0 "apply forward aircontrol options to sideward movement"
set sv_player_viewoffset "0 0 35" "view offset of the player model"
set sv_player_mins "-16 -16 -24" "playermodel mins"
set g_physics_xonotic_aircontrol 100
set g_physics_xonotic_aircontrol_power 2
set g_physics_xonotic_aircontrol_backwards 0
+set g_physics_xonotic_aircontrol_sidewards 0
set g_physics_xonotic_aircontrol_penalty 0
set g_physics_xonotic_warsowbunny_airforwardaccel 1.00001
set g_physics_xonotic_warsowbunny_topspeed 925
set g_physics_nexuiz_aircontrol 0
set g_physics_nexuiz_aircontrol_power 2
set g_physics_nexuiz_aircontrol_backwards 0
+set g_physics_nexuiz_aircontrol_sidewards 0
set g_physics_nexuiz_aircontrol_penalty 0
set g_physics_nexuiz_warsowbunny_airforwardaccel 1.00001
set g_physics_nexuiz_warsowbunny_topspeed 925
set g_physics_quake_aircontrol 0
set g_physics_quake_aircontrol_power 2
set g_physics_quake_aircontrol_backwards 0
+set g_physics_quake_aircontrol_sidewards 0
set g_physics_quake_aircontrol_penalty 0
set g_physics_quake_warsowbunny_airforwardaccel 1.00001
set g_physics_quake_warsowbunny_topspeed 925
set g_physics_warsow_aircontrol 0
set g_physics_warsow_aircontrol_power 2
set g_physics_warsow_aircontrol_backwards 0
+set g_physics_warsow_aircontrol_sidewards 0
set g_physics_warsow_aircontrol_penalty 0
set g_physics_warsow_warsowbunny_airforwardaccel 1.00001
set g_physics_warsow_warsowbunny_topspeed 925
set g_physics_defrag_aircontrol 150
set g_physics_defrag_aircontrol_power 2
set g_physics_defrag_aircontrol_backwards 0
+set g_physics_defrag_aircontrol_sidewards 0
set g_physics_defrag_aircontrol_penalty 0
set g_physics_defrag_warsowbunny_airforwardaccel 1.00001
set g_physics_defrag_warsowbunny_topspeed 925
set g_physics_quake3_aircontrol 0
set g_physics_quake3_aircontrol_power 2
set g_physics_quake3_aircontrol_backwards 0
+set g_physics_quake3_aircontrol_sidewards 0
set g_physics_quake3_aircontrol_penalty 0
set g_physics_quake3_warsowbunny_airforwardaccel 1.00001
set g_physics_quake3_warsowbunny_topspeed 925
set g_physics_vecxis_aircontrol 0
set g_physics_vecxis_aircontrol_power 2
set g_physics_vecxis_aircontrol_backwards 0
+set g_physics_vecxis_aircontrol_sidewards 0
set g_physics_vecxis_aircontrol_penalty 0
set g_physics_vecxis_warsowbunny_airforwardaccel 1.00001
set g_physics_vecxis_warsowbunny_topspeed 925
set g_physics_quake2_aircontrol 0
set g_physics_quake2_aircontrol_power 2
set g_physics_quake2_aircontrol_backwards 0
+set g_physics_quake2_aircontrol_sidewards 0
set g_physics_quake2_aircontrol_penalty 0
set g_physics_quake2_warsowbunny_airforwardaccel 1.00001
set g_physics_quake2_warsowbunny_topspeed 925
set g_physics_bones_aircontrol 150
set g_physics_bones_aircontrol_power 2
set g_physics_bones_aircontrol_backwards 0
+set g_physics_bones_aircontrol_sidewards 0
set g_physics_bones_aircontrol_penalty 0
set g_physics_bones_warsowbunny_airforwardaccel 1.00001
set g_physics_bones_warsowbunny_topspeed 925
set g_physics_overkill_aircontrol 125
set g_physics_overkill_aircontrol_power 2
set g_physics_overkill_aircontrol_backwards 0
+set g_physics_overkill_aircontrol_sidewards 0
set g_physics_overkill_aircontrol_penalty 180
set g_physics_overkill_warsowbunny_airforwardaccel 1.00001
set g_physics_overkill_warsowbunny_topspeed 925
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol 125
sv_aircontrol_power 2.5
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 150
sv_aircontrol_power 2.5
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 800
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 150
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 800
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 100
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 180
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 900
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 9 // activates warsow movement mode
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 6 // activates warsow movement mode
sv_warsowbunny_accel 0.1585
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 900
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 150
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 800
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 180
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 800
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 0
sv_aircontrol_power 2
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
sv_aircontrol_penalty 100
sv_aircontrol_power 2.5
sv_aircontrol_backwards 0
+sv_aircontrol_sidewards 0
sv_airspeedlimit_nonqw 0
sv_warsowbunny_turnaccel 0
sv_warsowbunny_accel 0.1593
STAT(MOVEVARS_AIRCONTROL, this) = Physics_ClientOption(this, "aircontrol", autocvar_sv_aircontrol);
STAT(MOVEVARS_AIRCONTROL_POWER, this) = Physics_ClientOption(this, "aircontrol_power", autocvar_sv_aircontrol_power);
STAT(MOVEVARS_AIRCONTROL_BACKWARDS, this) = Physics_ClientOption(this, "aircontrol_backwards", autocvar_sv_aircontrol_backwards);
+ STAT(MOVEVARS_AIRCONTROL_SIDEWARDS, this) = Physics_ClientOption(this, "aircontrol_sidewards", autocvar_sv_aircontrol_sidewards);
STAT(MOVEVARS_AIRCONTROL_PENALTY, this) = Physics_ClientOption(this, "aircontrol_penalty", autocvar_sv_aircontrol_penalty);
STAT(MOVEVARS_WARSOWBUNNY_AIRFORWARDACCEL, this) = Physics_ClientOption(this, "warsowbunny_airforwardaccel", autocvar_sv_warsowbunny_airforwardaccel);
STAT(MOVEVARS_WARSOWBUNNY_TOPSPEED, this) = Physics_ClientOption(this, "warsowbunny_topspeed", autocvar_sv_warsowbunny_topspeed);
float movity = IsMoveInDirection(this.movement, 0);
if(PHYS_AIRCONTROL_BACKWARDS(this))
movity += IsMoveInDirection(this.movement, 180);
+ if(PHYS_AIRCONTROL_SIDEWARDS(this))
+ {
+ movity += IsMoveInDirection(this.movement, 90);
+ movity += IsMoveInDirection(this.movement, -90);
+ }
float k = 32 * (2 * movity - 1);
if (k <= 0)
#define PHYS_AIRCONTROL_PENALTY(s) STAT(MOVEVARS_AIRCONTROL_PENALTY, s)
#define PHYS_AIRCONTROL_POWER(s) STAT(MOVEVARS_AIRCONTROL_POWER, s)
#define PHYS_AIRCONTROL_BACKWARDS(s) STAT(MOVEVARS_AIRCONTROL_BACKWARDS, s)
+#define PHYS_AIRCONTROL_SIDEWARDS(s) STAT(MOVEVARS_AIRCONTROL_SIDEWARDS, s)
#define PHYS_AIRSPEEDLIMIT_NONQW(s) STAT(MOVEVARS_AIRSPEEDLIMIT_NONQW, s)
#define PHYS_AIRSTOPACCELERATE(s) STAT(MOVEVARS_AIRSTOPACCELERATE, s)
#define PHYS_AIRSTRAFEACCELERATE(s) STAT(MOVEVARS_AIRSTRAFEACCELERATE, s)
REGISTER_STAT(MOVEVARS_AIRSTRAFEACCEL_QW, float)
REGISTER_STAT(MOVEVARS_AIRCONTROL_POWER, float)
REGISTER_STAT(MOVEVARS_AIRCONTROL_BACKWARDS, bool)
+REGISTER_STAT(MOVEVARS_AIRCONTROL_SIDEWARDS, bool)
noref bool autocvar_sv_gameplayfix_nogravityonground;
REGISTER_STAT(MOVEFLAGS, int, MOVEFLAG_VALID
| (autocvar_sv_gameplayfix_q2airaccelerate ? MOVEFLAG_Q2AIRACCELERATE : 0)
float autocvar_sv_aircontrol;
float autocvar_sv_aircontrol_power;
float autocvar_sv_aircontrol_backwards;
+float autocvar_sv_aircontrol_sidewards;
float autocvar_sv_aircontrol_penalty;
float autocvar_sv_warsowbunny_airforwardaccel;
float autocvar_sv_warsowbunny_topspeed;