]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/stats.qh
Merge branch 'master' into Mario/bulldozer
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / stats.qh
1 #ifndef STATS_H
2 #define STATS_H
3
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
6
7 const int MAX_CL_STATS                = 256;
8 // -Wdouble-declaration
9 // const int STAT_HEALTH                 = 0;
10 // 1 empty?
11 const int STAT_WEAPON                 = 2;
12 // -Wdouble-declaration
13 // const int STAT_AMMO                   = 3;
14 // -Wdouble-declaration
15 // const int STAT_ARMOR                  = 4;
16 // -Wdouble-declaration
17 // const int STAT_WEAPONFRAME            = 5;
18 // -Wdouble-declaration
19 // const int STAT_SHELLS                 = 6;
20 // -Wdouble-declaration
21 // const int STAT_NAILS                  = 7;
22 // -Wdouble-declaration
23 // const int STAT_ROCKETS                = 8;
24 // -Wdouble-declaration
25 // const int STAT_CELLS                  = 9;
26 // -Wdouble-declaration
27 // const int STAT_ACTIVEWEAPON           = 10;
28 // -Wdouble-declaration
29 // const int STAT_TOTALSECRETS           = 11;
30 // -Wdouble-declaration
31 // const int STAT_TOTALMONSTERS          = 12;
32 // -Wdouble-declaration
33 // const int STAT_SECRETS                = 13;
34 // -Wdouble-declaration
35 // const int STAT_MONSTERS               = 14;
36 // -Wdouble-declaration
37 // const int STAT_ITEMS                  = 15;
38 // -Wdouble-declaration
39 // const int STAT_VIEWHEIGHT             = 16;
40 // 17 empty?
41 // 18 empty?
42 // 19 empty?
43 // 20 empty?
44 const int STAT_VIEWZOOM               = 21;
45 // 22 empty?
46 // 23 empty?
47 // 24 empty?
48 // 25 empty?
49 // 26 empty?
50 // 27 empty?
51 // 28 empty?
52 // 29 empty?
53 // 30 empty?
54 // 31 empty?
55
56 enum {
57     STAT_WEAPONS = 32,
58     STAT_WEAPONS2,
59     STAT_WEAPONS3,
60
61     STAT_WEAPONSINMAP,
62     STAT_WEAPONSINMAP2,
63     STAT_WEAPONSINMAP3,
64
65     STAT_PL_VIEW_OFS1,
66     STAT_PL_VIEW_OFS2,
67     STAT_PL_VIEW_OFS3,
68
69     STAT_PL_CROUCH_VIEW_OFS1,
70     STAT_PL_CROUCH_VIEW_OFS2,
71     STAT_PL_CROUCH_VIEW_OFS3,
72
73     STAT_PL_MIN1,
74     STAT_PL_MIN2,
75     STAT_PL_MIN3,
76
77     STAT_PL_MAX1,
78     STAT_PL_MAX2,
79     STAT_PL_MAX3,
80
81     STAT_PL_CROUCH_MIN1,
82     STAT_PL_CROUCH_MIN2,
83     STAT_PL_CROUCH_MIN3,
84
85     STAT_PL_CROUCH_MAX1,
86     STAT_PL_CROUCH_MAX2,
87     STAT_PL_CROUCH_MAX3,
88
89     STAT_LAST_VECTOR
90 };
91
92 const int REGISTERED_STATS = 6;
93
94 REGISTER_STAT(KH_KEYS, int)
95 /** weapon requested to switch to; next WANTED weapon (for HUD) */
96 REGISTER_STAT(SWITCHWEAPON, int)
97 REGISTER_STAT(GAMESTARTTIME, float)
98 REGISTER_STAT(STRENGTH_FINISHED, float)
99 REGISTER_STAT(INVINCIBLE_FINISHED, float)
100 /** arc heat in [0,1] */
101 REGISTER_STAT(ARC_HEAT, float)
102
103 enum {
104     STAT_FIRST_MAIN = (STAT_LAST_VECTOR - 1) + REGISTERED_STATS,
105
106     STAT_PRESSED_KEYS,
107     /** this stat could later contain some other bits of info, like, more server-side particle config */ STAT_ALLOW_OLDVORTEXBEAM,
108     STAT_FUEL,
109     STAT_NB_METERSTART,
110     /** compressShotOrigin */ STAT_SHOTORG,
111     STAT_LEADLIMIT,
112     STAT_WEAPON_CLIPLOAD,
113     STAT_WEAPON_CLIPSIZE,
114     STAT_VORTEX_CHARGE,
115     STAT_LAST_PICKUP,
116     STAT_HUD,
117     STAT_VORTEX_CHARGEPOOL,
118     STAT_HIT_TIME,
119     STAT_DAMAGE_DEALT_TOTAL,
120     STAT_TYPEHIT_TIME,
121     STAT_LAYED_MINES,
122     STAT_HAGAR_LOAD,
123     STAT_SWITCHINGWEAPON,
124     STAT_SUPERWEAPONS_FINISHED,
125     STAT_VEHICLESTAT_HEALTH,
126     STAT_VEHICLESTAT_SHIELD,
127     STAT_VEHICLESTAT_ENERGY,
128     STAT_VEHICLESTAT_AMMO1,
129     STAT_VEHICLESTAT_RELOAD1,
130     STAT_VEHICLESTAT_AMMO2,
131     STAT_VEHICLESTAT_RELOAD2,
132     STAT_VEHICLESTAT_W2MODE,
133     STAT_NADE_TIMER,
134     STAT_SECRETS_TOTAL,
135     STAT_SECRETS_FOUND,
136     STAT_RESPAWN_TIME,
137     STAT_ROUNDSTARTTIME,
138     STAT_MONSTERS_TOTAL,
139     STAT_MONSTERS_KILLED,
140     STAT_BUFFS,
141     STAT_NADE_BONUS,
142     STAT_NADE_BONUS_TYPE,
143     STAT_NADE_BONUS_SCORE,
144     STAT_HEALING_ORB,
145     STAT_HEALING_ORB_ALPHA,
146     STAT_PLASMA,
147     STAT_OK_AMMO_CHARGE,
148     STAT_OK_AMMO_CHARGEPOOL,
149     STAT_FROZEN,
150     STAT_REVIVE_PROGRESS,
151     STAT_ROUNDLOST,
152     STAT_BUFF_TIME,
153     STAT_CTF_FLAGSTATUS,
154     STAT_MULTIJUMP_DODGING,
155     STAT_MULTIJUMP_MAXSPEED,
156     STAT_GAMEPLAYFIX_UPVELOCITYCLEARSONGROUND,
157     STAT_BUGRIGS_REVERSE_STOPPING,
158     STAT_BUGRIGS_REVERSE_SPINNING,
159     STAT_BUGRIGS_CAR_JUMPING,
160     STAT_BUGRIGS_FRICTION_AIR,
161     STAT_BUGRIGS_STEER,
162     STAT_BUGRIGS_SPEED_POW,
163     STAT_BUGRIGS_SPEED_REF,
164     STAT_BUGRIGS_ACCEL,
165     STAT_BUGRIGS_FRICTION_BRAKE,
166     STAT_BUGRIGS_AIR_STEERING,
167     STAT_BUGRIGS_FRICTION_FLOOR,
168     STAT_BUGRIGS_REVERSE_SPEEDING,
169     STAT_BUGRIGS_PLANAR_MOVEMENT,
170     STAT_BUGRIGS_ANGLE_SMOOTHING,
171     STAT_BUGRIGS,
172     STAT_GAMEPLAYFIX_STEPDOWN,
173     STAT_MOVEVARS_JUMPSTEP,
174     STAT_NOSTEP,
175     STAT_GAMEPLAYFIX_UNSTICKPLAYERS,
176     STAT_GAMEPLAYFIX_STEPMULTIPLETIMES,
177     STAT_GAMEPLAYFIX_DOWNTRACEONGROUND,
178     STAT_GAMEPLAYFIX_EASIERWATERJUMP,
179     STAT_MOVEVARS_FRICTION_SLICK,
180     STAT_MOVEVARS_FRICTION_ONLAND,
181     STAT_MOVEVARS_JUMPSPEEDCAP_DISABLE_ONRAMPS,
182     STAT_MOVEVARS_TRACK_CANJUMP,
183     STAT_DOUBLEJUMP,
184     STAT_MOVEVARS_CL_TRACK_CANJUMP,
185     STAT_MULTIJUMP_ADD,
186     STAT_MULTIJUMP_SPEED,
187     STAT_MULTIJUMP,
188     STAT_DODGING_TIMEOUT,
189     STAT_DODGING_WALL,
190     STAT_DODGING_UP_SPEED,
191     STAT_DODGING_RAMP_TIME,
192     STAT_DODGING_HEIGHT_THRESHOLD,
193     STAT_DODGING_DISTANCE_THRESHOLD,
194     STAT_DODGING_HORIZ_SPEED,
195     STAT_DODGING_DELAY,
196     STAT_DODGING_FROZEN_NO_DOUBLETAP,
197     STAT_DODGING_HORIZ_SPEED_FROZEN,
198     STAT_DODGING,
199     STAT_DODGING_FROZEN,
200     STAT_JETPACK_MAXSPEED_UP,
201     STAT_JETPACK_MAXSPEED_SIDE,
202     STAT_JETPACK_FUEL,
203     STAT_JETPACK_ANTIGRAVITY,
204     STAT_JETPACK_ACCEL_SIDE,
205     STAT_JETPACK_ACCEL_UP,
206     STAT_MOVEVARS_HIGHSPEED,
207
208     STAT_LAST_MAIN
209 };
210
211 const int STAT_LAST = STAT_LAST_MAIN + 5;
212
213 /* The following stats change depending on the gamemode, so can share the same ID */
214
215 // freeze tag, clan arena, jailbreak
216 enum {
217     STAT_REDALIVE = STAT_LAST_MAIN,
218     STAT_BLUEALIVE,
219     STAT_YELLOWALIVE,
220     STAT_PINKALIVE,
221 };
222
223 // domination
224 enum {
225     STAT_DOM_TOTAL_PPS = STAT_LAST_MAIN,
226     STAT_DOM_PPS_RED,
227     STAT_DOM_PPS_BLUE,
228     STAT_DOM_PPS_YELLOW,
229     STAT_DOM_PPS_PINK,
230 };
231
232 // vip
233 enum {
234     STAT_VIP = STAT_LAST_MAIN,
235     STAT_VIP_RED,
236     STAT_VIP_BLUE,
237     STAT_VIP_YELLOW,
238     STAT_VIP_PINK,
239 };
240
241 // key hunt
242 enum {
243     STAT_KH_REDKEY_TEAM = STAT_LAST_MAIN,
244     STAT_KH_BLUEKEY_TEAM,
245     STAT_KH_YELLOWKEY_TEAM,
246     STAT_KH_PINKKEY_TEAM,
247 };
248
249 #define ASSERT_LESS(name, var, const) noref int name[(const - var + 1)];
250 ASSERT_LESS(stat_limit, STAT_LAST, 220)
251
252 const int STAT_MOVEVARS_AIRACCEL_QW_STRETCHFACTOR     = 220;
253 const int STAT_MOVEVARS_AIRCONTROL_PENALTY            = 221;
254 const int STAT_MOVEVARS_AIRSPEEDLIMIT_NONQW           = 222;
255 const int STAT_MOVEVARS_AIRSTRAFEACCEL_QW             = 223;
256 const int STAT_MOVEVARS_AIRCONTROL_POWER              = 224;
257 const int STAT_MOVEFLAGS                              = 225;
258 const int STAT_MOVEVARS_WARSOWBUNNY_AIRFORWARDACCEL   = 226;
259 const int STAT_MOVEVARS_WARSOWBUNNY_ACCEL             = 227;
260 const int STAT_MOVEVARS_WARSOWBUNNY_TOPSPEED          = 228;
261 const int STAT_MOVEVARS_WARSOWBUNNY_TURNACCEL         = 229;
262 const int STAT_MOVEVARS_WARSOWBUNNY_BACKTOSIDERATIO   = 230;
263 const int STAT_MOVEVARS_AIRSTOPACCELERATE             = 231;
264 const int STAT_MOVEVARS_AIRSTRAFEACCELERATE           = 232;
265 const int STAT_MOVEVARS_MAXAIRSTRAFESPEED             = 233;
266 const int STAT_MOVEVARS_AIRCONTROL                    = 234;
267 // -Wdouble-declaration
268 // const int STAT_FRAGLIMIT                              = 235;
269 // -Wdouble-declaration
270 // const int STAT_TIMELIMIT                              = 236;
271 const int STAT_MOVEVARS_WALLFRICTION                  = 237;
272 const int STAT_MOVEVARS_FRICTION                      = 238;
273 const int STAT_MOVEVARS_WATERFRICTION                 = 239;
274 // -Wdouble-declaration
275 // const int STAT_MOVEVARS_TICRATE                       = 240;
276 // -Wdouble-declaration
277 // const int STAT_MOVEVARS_TIMESCALE                     = 241;
278 // -Wdouble-declaration
279 // const int STAT_MOVEVARS_GRAVITY                       = 242;
280 const int STAT_MOVEVARS_STOPSPEED                     = 243;
281 const int STAT_MOVEVARS_MAXSPEED                      = 244;
282 const int STAT_MOVEVARS_SPECTATORMAXSPEED             = 245;
283 const int STAT_MOVEVARS_ACCELERATE                    = 246;
284 const int STAT_MOVEVARS_AIRACCELERATE                 = 247;
285 const int STAT_MOVEVARS_WATERACCELERATE               = 248;
286 const int STAT_MOVEVARS_ENTGRAVITY                    = 249;
287 const int STAT_MOVEVARS_JUMPVELOCITY                  = 250;
288 const int STAT_MOVEVARS_EDGEFRICTION                  = 251;
289 const int STAT_MOVEVARS_MAXAIRSPEED                   = 252;
290 const int STAT_MOVEVARS_STEPHEIGHT                    = 253;
291 const int STAT_MOVEVARS_AIRACCEL_QW                   = 254;
292 const int STAT_MOVEVARS_AIRACCEL_SIDEWAYS_FRICTION    = 255;
293 #endif