1 #ifndef COMMON_PHYSICS_H
2 #define COMMON_PHYSICS_H
4 // Client/server mappings
11 .float swamp_slowdown;
15 .float spectatorspeed;
20 .string lastclassname;
22 .float() PlayerPhysplug;
23 float AdjustAirAccelQW(float accelqw, float factor);
27 float PM_multijump_checkjump();
33 #define IS_CLIENT(s) (s).isplayermodel
34 #define IS_PLAYER(s) (s).isplayermodel
35 #define isPushable(s) (s).isplayermodel
37 float player_multijump;
38 float player_jumpheight;
40 #define PHYS_INPUT_ANGLES(s) input_angles
42 #define PHYS_WORLD_ANGLES(s) input_angles
44 #define PHYS_INPUT_TIMELENGTH input_timelength
45 #define PHYS_INPUT_FRAMETIME serverdeltatime
47 #define PHYS_INPUT_MOVEVALUES(s) input_movevalues
49 #define PHYS_INPUT_BUTTON_MASK(s) (input_buttons | 128 * (input_movevalues_x < 0) | 256 * (input_movevalues_x > 0) | 512 * (input_movevalues_y < 0) | 1024 * (input_movevalues_y > 0))
50 #define PHYS_INPUT_BUTTON_ATCK(s) !!(input_buttons & 1)
51 #define PHYS_INPUT_BUTTON_JUMP(s) !!(input_buttons & 2)
52 #define PHYS_INPUT_BUTTON_ATCK2(s) !!(input_buttons & 4)
53 #define PHYS_INPUT_BUTTON_ZOOM(s) !!(input_buttons & 8)
54 #define PHYS_INPUT_BUTTON_CROUCH(s) !!(input_buttons & 16)
55 #define PHYS_INPUT_BUTTON_HOOK(s) !!(input_buttons & 32)
56 #define PHYS_INPUT_BUTTON_USE(s) !!(input_buttons & 64)
57 #define PHYS_INPUT_BUTTON_BACKWARD(s) !!(input_buttons & 128)
58 #define PHYS_INPUT_BUTTON_FORWARD(s) !!(input_buttons & 256)
59 #define PHYS_INPUT_BUTTON_LEFT(s) !!(input_buttons & 512)
60 #define PHYS_INPUT_BUTTON_RIGHT(s) !!(input_buttons & 1024)
61 #define PHYS_INPUT_BUTTON_JETPACK(s) !!(input_buttons & 2048)
63 #define PHYS_DEAD(s) s.csqcmodel_isdead
65 #define GAMEPLAYFIX_GRAVITYUNAFFECTEDBYTICRATE !!(moveflags & MOVEFLAG_GRAVITYUNAFFECTEDBYTICRATE)
66 #define GAMEPLAYFIX_NOGRAVITYONGROUND cvar("sv_gameplayfix_nogravityonground")
67 #define GAMEPLAYFIX_Q2AIRACCELERATE cvar("sv_gameplayfix_q2airaccelerate")
69 #define IS_DUCKED(s) !!(s.pmove_flags & PMF_DUCKED)
70 #define SET_DUCKED(s) s.pmove_flags |= PMF_DUCKED
71 #define UNSET_DUCKED(s) s.pmove_flags &= ~PMF_DUCKED
73 #define IS_JUMP_HELD(s) !!(s.pmove_flags & PMF_JUMP_HELD)
74 #define SET_JUMP_HELD(s) s.pmove_flags |= PMF_JUMP_HELD
75 #define UNSET_JUMP_HELD(s) s.pmove_flags &= ~PMF_JUMP_HELD
77 #define IS_ONGROUND(s) !!(s.pmove_flags & PMF_ONGROUND)
78 #define SET_ONGROUND(s) s.pmove_flags |= PMF_ONGROUND
79 #define UNSET_ONGROUND(s) s.pmove_flags &= ~PMF_ONGROUND
81 #define WAS_ONGROUND(s) !!(s.lastflags & PMF_ONGROUND)
83 #define ITEMS(s) getstati(STAT_ITEMS, 0, 24)
85 #define PHYS_AMMO_FUEL(s) getstati(STAT_FUEL)
87 #define PHYS_FROZEN(s) getstati(STAT_FROZEN)
89 #define PHYS_DOUBLEJUMP getstati(STAT_DOUBLEJUMP)
91 #define PHYS_JUMPSPEEDCAP_MIN getstatf(STAT_MOVEVARS_JUMPSPEEDCAP_MIN)
92 #define PHYS_JUMPSPEEDCAP_MAX getstatf(STAT_MOVEVARS_JUMPSPEEDCAP_MAX)
93 #define PHYS_JUMPSPEEDCAP_DISABLE_ONRAMPS getstati(STAT_MOVEVARS_JUMPSPEEDCAP_DISABLE_ONRAMPS)
95 #define PHYS_TRACK_CANJUMP(s) getstati(STAT_MOVEVARS_TRACK_CANJUMP)
96 #define PHYS_ACCELERATE getstatf(STAT_MOVEVARS_ACCELERATE)
97 #define PHYS_AIRACCEL_QW(s) getstatf(STAT_MOVEVARS_AIRACCEL_QW)
98 #define PHYS_AIRACCEL_QW_STRETCHFACTOR(s) getstatf(STAT_MOVEVARS_AIRACCEL_QW_STRETCHFACTOR)
99 #define PHYS_AIRACCEL_SIDEWAYS_FRICTION getstatf(STAT_MOVEVARS_AIRACCEL_SIDEWAYS_FRICTION)
100 #define PHYS_AIRACCELERATE getstatf(STAT_MOVEVARS_AIRACCELERATE)
101 #define PHYS_AIRCONTROL getstatf(STAT_MOVEVARS_AIRCONTROL)
102 #define PHYS_AIRCONTROL_PENALTY getstatf(STAT_MOVEVARS_AIRCONTROL_PENALTY)
103 #define PHYS_AIRCONTROL_POWER getstatf(STAT_MOVEVARS_AIRCONTROL_POWER)
104 #define PHYS_AIRSPEEDLIMIT_NONQW(s) getstatf(STAT_MOVEVARS_AIRSPEEDLIMIT_NONQW)
105 #define PHYS_AIRSTOPACCELERATE getstatf(STAT_MOVEVARS_AIRSTOPACCELERATE)
106 #define PHYS_AIRSTRAFEACCEL_QW(s) getstatf(STAT_MOVEVARS_AIRSTRAFEACCEL_QW)
107 #define PHYS_AIRSTRAFEACCELERATE getstatf(STAT_MOVEVARS_AIRSTRAFEACCELERATE)
108 #define PHYS_ENTGRAVITY(s) getstatf(STAT_MOVEVARS_ENTGRAVITY)
109 #define PHYS_FRICTION getstatf(STAT_MOVEVARS_FRICTION)
110 #define PHYS_FRICTION_SLICK getstatf(STAT_MOVEVARS_FRICTION_SLICK)
111 #define PHYS_FRICTION_ONLAND getstatf(STAT_MOVEVARS_FRICTION_ONLAND)
112 #define PHYS_GRAVITY getstatf(STAT_MOVEVARS_GRAVITY)
113 #define PHYS_HIGHSPEED getstatf(STAT_MOVEVARS_HIGHSPEED)
114 #define PHYS_JUMPVELOCITY getstatf(STAT_MOVEVARS_JUMPVELOCITY)
115 #define PHYS_MAXAIRSPEED getstatf(STAT_MOVEVARS_MAXAIRSPEED)
116 #define PHYS_MAXAIRSTRAFESPEED getstatf(STAT_MOVEVARS_MAXAIRSTRAFESPEED)
117 #define PHYS_MAXSPEED(s) getstatf(STAT_MOVEVARS_MAXSPEED)
118 #define PHYS_STEPHEIGHT getstatf(STAT_MOVEVARS_STEPHEIGHT)
119 #define PHYS_STOPSPEED getstatf(STAT_MOVEVARS_STOPSPEED)
120 #define PHYS_WARSOWBUNNY_ACCEL getstatf(STAT_MOVEVARS_WARSOWBUNNY_ACCEL)
121 #define PHYS_WARSOWBUNNY_BACKTOSIDERATIO getstatf(STAT_MOVEVARS_WARSOWBUNNY_BACKTOSIDERATIO)
122 #define PHYS_WARSOWBUNNY_AIRFORWARDACCEL getstatf(STAT_MOVEVARS_WARSOWBUNNY_AIRFORWARDACCEL)
123 #define PHYS_WARSOWBUNNY_TOPSPEED getstatf(STAT_MOVEVARS_WARSOWBUNNY_TOPSPEED)
124 #define PHYS_WARSOWBUNNY_TURNACCEL getstatf(STAT_MOVEVARS_WARSOWBUNNY_TURNACCEL)
126 #define PHYS_JETPACK_ACCEL_UP getstatf(STAT_JETPACK_ACCEL_UP)
127 #define PHYS_JETPACK_ACCEL_SIDE getstatf(STAT_JETPACK_ACCEL_SIDE)
128 #define PHYS_JETPACK_ANTIGRAVITY getstatf(STAT_JETPACK_ANTIGRAVITY)
129 #define PHYS_JETPACK_FUEL getstatf(STAT_JETPACK_FUEL)
130 #define PHYS_JETPACK_MAXSPEED_UP getstatf(STAT_JETPACK_MAXSPEED_UP)
131 #define PHYS_JETPACK_MAXSPEED_SIDE getstatf(STAT_JETPACK_MAXSPEED_SIDE)
133 #define PHYS_DODGING_FROZEN getstati(STAT_DODGING_FROZEN)
137 .float stat_sv_airaccel_qw;
138 .float stat_sv_airstrafeaccel_qw;
139 .float stat_sv_airspeedlimit_nonqw;
140 .float stat_sv_maxspeed;
141 .float stat_movement_highspeed;
143 .float stat_sv_friction_on_land;
144 .float stat_sv_friction_slick;
146 .float stat_doublejump;
148 .float stat_jumpspeedcap_min;
149 .float stat_jumpspeedcap_max;
150 .float stat_jumpspeedcap_disable_onramps;
152 .float stat_jetpack_accel_side;
153 .float stat_jetpack_accel_up;
154 .float stat_jetpack_antigravity;
155 .float stat_jetpack_fuel;
156 .float stat_jetpack_maxspeed_up;
157 .float stat_jetpack_maxspeed_side;
159 #define PHYS_INPUT_ANGLES(s) s.v_angle
160 #define PHYS_WORLD_ANGLES(s) s.angles
162 #define PHYS_INPUT_TIMELENGTH frametime
163 #define PHYS_INPUT_FRAMETIME sys_frametime
165 #define PHYS_INPUT_MOVEVALUES(s) s.movement
167 #define PHYS_INPUT_BUTTON_MASK(s) (s.BUTTON_ATCK | 2 * s.BUTTON_JUMP | 4 * s.BUTTON_ATCK2 | 8 * s.BUTTON_ZOOM | 16 * s.BUTTON_CROUCH | 32 * s.BUTTON_HOOK | 64 * s.BUTTON_USE | 128 * (s.movement_x < 0) | 256 * (s.movement_x > 0) | 512 * (s.movement_y < 0) | 1024 * (s.movement_y > 0))
168 #define PHYS_INPUT_BUTTON_ATCK(s) s.BUTTON_ATCK
169 #define PHYS_INPUT_BUTTON_JUMP(s) s.BUTTON_JUMP
170 #define PHYS_INPUT_BUTTON_ATCK2(s) s.BUTTON_ATCK2
171 #define PHYS_INPUT_BUTTON_ZOOM(s) s.BUTTON_ZOOM
172 #define PHYS_INPUT_BUTTON_CROUCH(s) s.BUTTON_CROUCH
173 #define PHYS_INPUT_BUTTON_HOOK(s) s.BUTTON_HOOK
174 #define PHYS_INPUT_BUTTON_USE(s) s.BUTTON_USE
175 #define PHYS_INPUT_BUTTON_BACKWARD(s) (s.movement_x < 0)
176 #define PHYS_INPUT_BUTTON_FORWARD(s) (s.movement_x > 0)
177 #define PHYS_INPUT_BUTTON_LEFT(s) (s.movement_y < 0)
178 #define PHYS_INPUT_BUTTON_RIGHT(s) (s.movement_y > 0)
179 #define PHYS_INPUT_BUTTON_JETPACK(s) s.BUTTON_JETPACK
181 #define PHYS_DEAD(s) s.deadflag != DEAD_NO
183 #define GAMEPLAYFIX_GRAVITYUNAFFECTEDBYTICRATE autocvar_sv_gameplayfix_gravityunaffectedbyticrate
184 #define GAMEPLAYFIX_NOGRAVITYONGROUND cvar("sv_gameplayfix_nogravityonground")
185 #define GAMEPLAYFIX_Q2AIRACCELERATE autocvar_sv_gameplayfix_q2airaccelerate
187 #define IS_DUCKED(s) s.crouch
188 #define SET_DUCKED(s) s.crouch = true
189 #define UNSET_DUCKED(s) s.crouch = false
191 #define IS_JUMP_HELD(s) !(s.flags & FL_JUMPRELEASED)
192 #define SET_JUMP_HELD(s) s.flags &= ~FL_JUMPRELEASED
193 #define UNSET_JUMP_HELD(s) s.flags |= FL_JUMPRELEASED
195 #define IS_ONGROUND(s) !!(self.flags & FL_ONGROUND)
196 #define SET_ONGROUND(s) s.flags |= FL_ONGROUND
197 #define UNSET_ONGROUND(s) s.flags &= ~FL_ONGROUND
199 #define WAS_ONGROUND(s) !!((s).lastflags & FL_ONGROUND)
201 #define ITEMS(s) s.items
203 #define PHYS_AMMO_FUEL(s) s.ammo_fuel
205 #define PHYS_FROZEN(s) s.frozen
207 #define PHYS_DOUBLEJUMP autocvar_sv_doublejump
209 #define PHYS_JUMPSPEEDCAP_MIN autocvar_sv_jumpspeedcap_min
210 #define PHYS_JUMPSPEEDCAP_MAX autocvar_sv_jumpspeedcap_max
211 #define PHYS_JUMPSPEEDCAP_DISABLE_ONRAMPS autocvar_sv_jumpspeedcap_max_disable_on_ramps
213 #define PHYS_TRACK_CANJUMP(s) s.cvar_cl_movement_track_canjump
214 #define PHYS_ACCELERATE autocvar_sv_accelerate
215 #define PHYS_AIRACCEL_QW(s) s.stat_sv_airaccel_qw
216 #define PHYS_AIRACCEL_QW_STRETCHFACTOR(s) autocvar_sv_airaccel_qw_stretchfactor
217 #define PHYS_AIRACCEL_SIDEWAYS_FRICTION autocvar_sv_airaccel_sideways_friction
218 #define PHYS_AIRACCELERATE autocvar_sv_airaccelerate
219 #define PHYS_AIRCONTROL autocvar_sv_aircontrol
220 #define PHYS_AIRCONTROL_PENALTY autocvar_sv_aircontrol_penalty
221 #define PHYS_AIRCONTROL_POWER autocvar_sv_aircontrol_power
222 #define PHYS_AIRSPEEDLIMIT_NONQW(s) s.stat_sv_airspeedlimit_nonqw
223 #define PHYS_AIRSTOPACCELERATE autocvar_sv_airstopaccelerate
224 #define PHYS_AIRSTRAFEACCEL_QW(s) s.stat_sv_airstrafeaccel_qw
225 #define PHYS_AIRSTRAFEACCELERATE autocvar_sv_airstrafeaccelerate
226 #define PHYS_ENTGRAVITY(s) s.gravity
227 #define PHYS_FRICTION autocvar_sv_friction
228 #define PHYS_FRICTION_SLICK autocvar_sv_friction_slick
229 #define PHYS_FRICTION_ONLAND autocvar_sv_friction_on_land
230 #define PHYS_GRAVITY autocvar_sv_gravity
231 #define PHYS_HIGHSPEED autocvar_g_movement_highspeed
232 #define PHYS_JUMPVELOCITY autocvar_sv_jumpvelocity
233 #define PHYS_MAXAIRSPEED autocvar_sv_maxairspeed
234 #define PHYS_MAXAIRSTRAFESPEED autocvar_sv_maxairstrafespeed
235 #define PHYS_MAXSPEED(s) s.stat_sv_maxspeed
236 #define PHYS_STEPHEIGHT autocvar_sv_stepheight
237 #define PHYS_STOPSPEED autocvar_sv_stopspeed
238 #define PHYS_WARSOWBUNNY_ACCEL autocvar_sv_warsowbunny_accel
239 #define PHYS_WARSOWBUNNY_BACKTOSIDERATIO autocvar_sv_warsowbunny_backtosideratio
240 #define PHYS_WARSOWBUNNY_AIRFORWARDACCEL autocvar_sv_warsowbunny_airforwardaccel
241 #define PHYS_WARSOWBUNNY_TOPSPEED autocvar_sv_warsowbunny_topspeed
242 #define PHYS_WARSOWBUNNY_TURNACCEL autocvar_sv_warsowbunny_turnaccel
244 #define PHYS_JETPACK_ACCEL_UP autocvar_g_jetpack_acceleration_up
245 #define PHYS_JETPACK_ACCEL_SIDE autocvar_g_jetpack_acceleration_side
246 #define PHYS_JETPACK_ANTIGRAVITY autocvar_g_jetpack_antigravity
247 #define PHYS_JETPACK_FUEL autocvar_g_jetpack_fuel
248 #define PHYS_JETPACK_MAXSPEED_UP autocvar_g_jetpack_maxspeed_up
249 #define PHYS_JETPACK_MAXSPEED_SIDE autocvar_g_jetpack_maxspeed_side
251 #define PHYS_DODGING_FROZEN autocvar_sv_dodging_frozen