4 // Full list of all stat constants, included in a single location for easy reference
5 // 255 is the current limit (MAX_CL_STATS - 1), engine will need to be modified if you wish to add more stats
7 const int MAX_CL_STATS = 256;
9 const int STAT_HEALTH = 0; // .health
10 const int STAT_ARMOR = 4; // .armorvalue
11 const int STAT_SHELLS = 6; // .ammo_shells
12 const int STAT_NAILS = 7; // .ammo_nails
13 const int STAT_ROCKETS = 8; // .ammo_rockets
14 const int STAT_CELLS = 9; // .ammo_cells
15 const int STAT_ACTIVEWEAPON = 10; // .weapon
16 const int STAT_ITEMS = 15; // .items | .items2 << 23 | serverflags << 28
17 const int STAT_VIEWHEIGHT = 16; // .view_ofs_z
33 STAT_PL_CROUCH_VIEW_OFS1,
34 STAT_PL_CROUCH_VIEW_OFS2,
35 STAT_PL_CROUCH_VIEW_OFS3,
56 const int REGISTERED_STATS = 64;
58 REGISTER_STAT(KH_KEYS, int)
59 /** weapon requested to switch to; next WANTED weapon (for HUD) */
60 REGISTER_STAT(SWITCHWEAPON, int)
61 REGISTER_STAT(GAMESTARTTIME, float)
62 REGISTER_STAT(STRENGTH_FINISHED, float)
63 REGISTER_STAT(INVINCIBLE_FINISHED, float)
64 /** arc heat in [0,1] */
65 REGISTER_STAT(ARC_HEAT, float)
66 REGISTER_STAT(PRESSED_KEYS, int)
67 /** this stat could later contain some other bits of info, like, more server-side particle config */
68 REGISTER_STAT(ALLOW_OLDVORTEXBEAM, bool)
69 REGISTER_STAT(FUEL, int)
70 REGISTER_STAT(NB_METERSTART, float)
71 /** compressShotOrigin */
72 REGISTER_STAT(SHOTORG, int)
73 REGISTER_STAT(LEADLIMIT, float)
74 REGISTER_STAT(WEAPON_CLIPLOAD, int)
75 REGISTER_STAT(WEAPON_CLIPSIZE, int)
77 REGISTER_STAT(VORTEX_CHARGE, float)
78 REGISTER_STAT(LAST_PICKUP, float)
79 REGISTER_STAT(HUD, int)
80 REGISTER_STAT(VORTEX_CHARGEPOOL, float)
81 REGISTER_STAT(HIT_TIME, float)
82 REGISTER_STAT(DAMAGE_DEALT_TOTAL, int)
83 REGISTER_STAT(TYPEHIT_TIME, float)
84 REGISTER_STAT(LAYED_MINES, int)
85 REGISTER_STAT(HAGAR_LOAD, int)
86 REGISTER_STAT(SWITCHINGWEAPON, int)
87 REGISTER_STAT(SUPERWEAPONS_FINISHED, float)
88 REGISTER_STAT(VEHICLESTAT_HEALTH, int)
89 REGISTER_STAT(VEHICLESTAT_SHIELD, int)
90 REGISTER_STAT(VEHICLESTAT_ENERGY, int)
91 REGISTER_STAT(VEHICLESTAT_AMMO1, int)
92 REGISTER_STAT(VEHICLESTAT_RELOAD1, int)
93 REGISTER_STAT(VEHICLESTAT_AMMO2, int)
94 REGISTER_STAT(VEHICLESTAT_RELOAD2, int)
95 REGISTER_STAT(VEHICLESTAT_W2MODE, int)
96 REGISTER_STAT(NADE_TIMER, float)
97 REGISTER_STAT(SECRETS_TOTAL, float)
98 REGISTER_STAT(SECRETS_FOUND, float)
99 REGISTER_STAT(RESPAWN_TIME, float)
100 REGISTER_STAT(ROUNDSTARTTIME, float)
101 REGISTER_STAT(MONSTERS_TOTAL, int)
102 REGISTER_STAT(MONSTERS_KILLED, int)
103 REGISTER_STAT(BUFFS, int)
104 REGISTER_STAT(NADE_BONUS, float)
105 REGISTER_STAT(NADE_BONUS_TYPE, int)
106 REGISTER_STAT(NADE_BONUS_SCORE, float)
107 REGISTER_STAT(HEALING_ORB, float)
108 REGISTER_STAT(HEALING_ORB_ALPHA, float)
109 REGISTER_STAT(PLASMA, int)
110 REGISTER_STAT(OK_AMMO_CHARGE, float)
111 REGISTER_STAT(OK_AMMO_CHARGEPOOL, float)
112 REGISTER_STAT(FROZEN, int)
115 STAT_FIRST_MAIN = (STAT_LAST_VECTOR - 1) + REGISTERED_STATS,
117 STAT_REVIVE_PROGRESS,
121 STAT_MULTIJUMP_DODGING,
122 STAT_MULTIJUMP_MAXSPEED,
123 STAT_GAMEPLAYFIX_UPVELOCITYCLEARSONGROUND,
124 STAT_BUGRIGS_REVERSE_STOPPING,
125 STAT_BUGRIGS_REVERSE_SPINNING,
126 STAT_BUGRIGS_CAR_JUMPING,
127 STAT_BUGRIGS_FRICTION_AIR,
129 STAT_BUGRIGS_SPEED_POW,
130 STAT_BUGRIGS_SPEED_REF,
132 STAT_BUGRIGS_FRICTION_BRAKE,
133 STAT_BUGRIGS_AIR_STEERING,
134 STAT_BUGRIGS_FRICTION_FLOOR,
135 STAT_BUGRIGS_REVERSE_SPEEDING,
136 STAT_BUGRIGS_PLANAR_MOVEMENT,
137 STAT_BUGRIGS_ANGLE_SMOOTHING,
139 STAT_GAMEPLAYFIX_STEPDOWN,
140 STAT_MOVEVARS_JUMPSTEP,
142 STAT_GAMEPLAYFIX_UNSTICKPLAYERS,
143 STAT_GAMEPLAYFIX_STEPMULTIPLETIMES,
144 STAT_GAMEPLAYFIX_DOWNTRACEONGROUND,
145 STAT_GAMEPLAYFIX_EASIERWATERJUMP,
146 STAT_MOVEVARS_FRICTION_SLICK,
147 STAT_MOVEVARS_FRICTION_ONLAND,
148 STAT_MOVEVARS_JUMPSPEEDCAP_DISABLE_ONRAMPS,
149 STAT_MOVEVARS_TRACK_CANJUMP,
151 STAT_MOVEVARS_CL_TRACK_CANJUMP,
153 STAT_MULTIJUMP_SPEED,
155 STAT_DODGING_TIMEOUT,
157 STAT_DODGING_UP_SPEED,
158 STAT_DODGING_RAMP_TIME,
159 STAT_DODGING_HEIGHT_THRESHOLD,
160 STAT_DODGING_DISTANCE_THRESHOLD,
161 STAT_DODGING_HORIZ_SPEED,
163 STAT_DODGING_FROZEN_NO_DOUBLETAP,
164 STAT_DODGING_HORIZ_SPEED_FROZEN,
167 STAT_JETPACK_MAXSPEED_UP,
168 STAT_JETPACK_MAXSPEED_SIDE,
170 STAT_JETPACK_ANTIGRAVITY,
171 STAT_JETPACK_ACCEL_SIDE,
172 STAT_JETPACK_ACCEL_UP,
173 STAT_MOVEVARS_HIGHSPEED,
178 const int STAT_LAST = STAT_LAST_MAIN + 5;
180 /* The following stats change depending on the gamemode, so can share the same ID */
182 // freeze tag, clan arena, jailbreak
184 STAT_REDALIVE = STAT_LAST_MAIN,
192 STAT_DOM_TOTAL_PPS = STAT_LAST_MAIN,
201 STAT_VIP = STAT_LAST_MAIN,
210 STAT_KH_REDKEY_TEAM = STAT_LAST_MAIN,
211 STAT_KH_BLUEKEY_TEAM,
212 STAT_KH_YELLOWKEY_TEAM,
213 STAT_KH_PINKKEY_TEAM,
216 #define ASSERT_LESS(name, var, const) noref int name[(const - var + 1)];
217 ASSERT_LESS(stat_limit, STAT_LAST, 220)
220 void GlobalStats_update(entity e) {}
221 #define STAT_GLOBAL(T, x, expr) REGISTER_STAT(x, T); [[accumulate]] void GlobalStats_update(entity e) { STAT(x, e) = (expr); }
222 #include "movetypes/movetypes.qh"
224 #define STAT_GLOBAL(T, x, expr) REGISTER_STAT(x, T)
227 REGISTER_STAT(MOVEVARS_AIRACCEL_QW_STRETCHFACTOR, float)
228 REGISTER_STAT(MOVEVARS_AIRCONTROL_PENALTY, float)
229 REGISTER_STAT(MOVEVARS_AIRSPEEDLIMIT_NONQW, float)
230 REGISTER_STAT(MOVEVARS_AIRSTRAFEACCEL_QW, float)
231 REGISTER_STAT(MOVEVARS_AIRCONTROL_POWER, float)
232 noref bool autocvar_sv_gameplayfix_nogravityonground;
233 STAT_GLOBAL(int, MOVEFLAGS, MOVEFLAG_VALID
234 | (autocvar_sv_gameplayfix_q2airaccelerate ? MOVEFLAG_Q2AIRACCELERATE : 0)
235 | (autocvar_sv_gameplayfix_nogravityonground ? MOVEFLAG_NOGRAVITYONGROUND : 0)
236 | (autocvar_sv_gameplayfix_gravityunaffectedbyticrate ? MOVEFLAG_GRAVITYUNAFFECTEDBYTICRATE : 0))
237 const int STAT_MOVEVARS_WARSOWBUNNY_AIRFORWARDACCEL = 226;
238 const int STAT_MOVEVARS_WARSOWBUNNY_ACCEL = 227;
239 const int STAT_MOVEVARS_WARSOWBUNNY_TOPSPEED = 228;
240 const int STAT_MOVEVARS_WARSOWBUNNY_TURNACCEL = 229;
241 const int STAT_MOVEVARS_WARSOWBUNNY_BACKTOSIDERATIO = 230;
242 const int STAT_MOVEVARS_AIRSTOPACCELERATE = 231;
243 const int STAT_MOVEVARS_AIRSTRAFEACCELERATE = 232;
244 const int STAT_MOVEVARS_MAXAIRSTRAFESPEED = 233;
245 const int STAT_MOVEVARS_AIRCONTROL = 234;
246 STAT_GLOBAL(float, FRAGLIMIT, autocvar_fraglimit)
247 STAT_GLOBAL(float, TIMELIMIT, autocvar_timelimit)
248 noref float autocvar_sv_wallfriction;
249 STAT_GLOBAL(int, MOVEVARS_WALLFRICTION, autocvar_sv_wallfriction)
250 const int STAT_MOVEVARS_FRICTION = 238;
251 STAT_GLOBAL(float, MOVEVARS_TICRATE, autocvar_sys_ticrate)
252 STAT_GLOBAL(float, MOVEVARS_TIMESCALE, autocvar_slowmo)
253 STAT_GLOBAL(float, MOVEVARS_GRAVITY, autocvar_sv_gravity)
254 const int STAT_MOVEVARS_STOPSPEED = 243;
255 const int STAT_MOVEVARS_MAXSPEED = 244;
256 const int STAT_MOVEVARS_ACCELERATE = 246;
257 const int STAT_MOVEVARS_AIRACCELERATE = 247;
259 STAT_GLOBAL(float, MOVEVARS_ENTGRAVITY, (e.gravity) ? e.gravity : 1)
260 const int STAT_MOVEVARS_JUMPVELOCITY = 250;
261 const int STAT_MOVEVARS_MAXAIRSPEED = 252;
262 STAT_GLOBAL(float, MOVEVARS_STEPHEIGHT, autocvar_sv_stepheight)
263 const int STAT_MOVEVARS_AIRACCEL_QW = 254;
264 const int STAT_MOVEVARS_AIRACCEL_SIDEWAYS_FRICTION = 255;