]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/stats.qh
Merge branch 'master' into Mario/bulldozer
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / stats.qh
index f888e1b2c8a10e00668841e8048c2eb9119b8549..cbf54fef2918cc9f694c08913afe1c7251303926 100644 (file)
@@ -52,224 +52,203 @@ const int STAT_VIEWZOOM               = 21;
 // 29 empty?
 // 30 empty?
 // 31 empty?
-const int STAT_KH_KEYS                = 32;
-const int STAT_CTF_STATE              = 33;
-// 34 empty?
-const int STAT_WEAPONS                = 35;
-const int STAT_SWITCHWEAPON           = 36;
-const int STAT_GAMESTARTTIME          = 37;
-const int STAT_STRENGTH_FINISHED      = 38;
-const int STAT_INVINCIBLE_FINISHED    = 39;
-// 40 empty?
-const int STAT_ARC_HEAT               = 41;
-const int STAT_PRESSED_KEYS           = 42;
-const int STAT_ALLOW_OLDVORTEXBEAM    = 43; // this stat could later contain some other bits of info, like, more server-side particle config
-const int STAT_FUEL                   = 44;
-const int STAT_NB_METERSTART          = 45;
-const int STAT_SHOTORG                = 46; // compressShotOrigin
-const int STAT_LEADLIMIT              = 47;
-const int STAT_WEAPON_CLIPLOAD        = 48;
-const int STAT_WEAPON_CLIPSIZE        = 49;
-const int STAT_VORTEX_CHARGE          = 50;
-const int STAT_LAST_PICKUP            = 51;
-const int STAT_HUD                    = 52;
-const int STAT_VORTEX_CHARGEPOOL      = 53;
-const int STAT_HIT_TIME               = 54;
-const int STAT_DAMAGE_DEALT_TOTAL     = 55;
-const int STAT_TYPEHIT_TIME           = 56;
-const int STAT_LAYED_MINES            = 57;
-const int STAT_HAGAR_LOAD             = 58;
-const int STAT_SWITCHINGWEAPON        = 59;
-const int STAT_SUPERWEAPONS_FINISHED  = 60;
-const int STAT_VEHICLESTAT_HEALTH     = 61;
-const int STAT_VEHICLESTAT_SHIELD     = 62;
-const int STAT_VEHICLESTAT_ENERGY     = 63;
-const int STAT_VEHICLESTAT_AMMO1      = 64;
-const int STAT_VEHICLESTAT_RELOAD1    = 65;
-const int STAT_VEHICLESTAT_AMMO2      = 66;
-const int STAT_VEHICLESTAT_RELOAD2    = 67;
-const int STAT_VEHICLESTAT_W2MODE     = 68;
-const int STAT_NADE_TIMER             = 69;
-const int STAT_SECRETS_TOTAL          = 70;
-const int STAT_SECRETS_FOUND          = 71;
-const int STAT_RESPAWN_TIME           = 72;
-const int STAT_ROUNDSTARTTIME         = 73;
-const int STAT_WEAPONS2               = 74;
-const int STAT_WEAPONS3               = 75;
-const int STAT_MONSTERS_TOTAL         = 76;
-const int STAT_MONSTERS_KILLED        = 77;
-const int STAT_BUFFS                  = 78;
-const int STAT_NADE_BONUS             = 79;
-const int STAT_NADE_BONUS_TYPE        = 80;
-const int STAT_NADE_BONUS_SCORE       = 81;
-const int STAT_HEALING_ORB            = 82;
-const int STAT_HEALING_ORB_ALPHA      = 83;
-const int STAT_PLASMA                 = 84;
-const int STAT_OK_AMMO_CHARGE         = 85;
-const int STAT_OK_AMMO_CHARGEPOOL     = 86;
-// 87 empty?
-// 88 empty?
-// 89 empty?
-// 90 empty?
-// 91 empty?
-// 92 empty?
-// 93 empty?
-// 94 empty?
-// 95 empty?
-// 96 empty?
-// 97 empty?
-// 98 empty?
-// 99 empty?
 
+enum {
+    STAT_WEAPONS = 32,
+    STAT_WEAPONS2,
+    STAT_WEAPONS3,
+
+    STAT_WEAPONSINMAP,
+    STAT_WEAPONSINMAP2,
+    STAT_WEAPONSINMAP3,
+
+    STAT_PL_VIEW_OFS1,
+    STAT_PL_VIEW_OFS2,
+    STAT_PL_VIEW_OFS3,
+
+    STAT_PL_CROUCH_VIEW_OFS1,
+    STAT_PL_CROUCH_VIEW_OFS2,
+    STAT_PL_CROUCH_VIEW_OFS3,
+
+    STAT_PL_MIN1,
+    STAT_PL_MIN2,
+    STAT_PL_MIN3,
+
+    STAT_PL_MAX1,
+    STAT_PL_MAX2,
+    STAT_PL_MAX3,
+
+    STAT_PL_CROUCH_MIN1,
+    STAT_PL_CROUCH_MIN2,
+    STAT_PL_CROUCH_MIN3,
+
+    STAT_PL_CROUCH_MAX1,
+    STAT_PL_CROUCH_MAX2,
+    STAT_PL_CROUCH_MAX3,
+
+    STAT_LAST_VECTOR
+};
+
+const int REGISTERED_STATS = 6;
+
+REGISTER_STAT(KH_KEYS, int)
+/** weapon requested to switch to; next WANTED weapon (for HUD) */
+REGISTER_STAT(SWITCHWEAPON, int)
+REGISTER_STAT(GAMESTARTTIME, float)
+REGISTER_STAT(STRENGTH_FINISHED, float)
+REGISTER_STAT(INVINCIBLE_FINISHED, float)
+/** arc heat in [0,1] */
+REGISTER_STAT(ARC_HEAT, float)
+
+enum {
+    STAT_FIRST_MAIN = (STAT_LAST_VECTOR - 1) + REGISTERED_STATS,
+
+    STAT_PRESSED_KEYS,
+    /** this stat could later contain some other bits of info, like, more server-side particle config */ STAT_ALLOW_OLDVORTEXBEAM,
+    STAT_FUEL,
+    STAT_NB_METERSTART,
+    /** compressShotOrigin */ STAT_SHOTORG,
+    STAT_LEADLIMIT,
+    STAT_WEAPON_CLIPLOAD,
+    STAT_WEAPON_CLIPSIZE,
+    STAT_VORTEX_CHARGE,
+    STAT_LAST_PICKUP,
+    STAT_HUD,
+    STAT_VORTEX_CHARGEPOOL,
+    STAT_HIT_TIME,
+    STAT_DAMAGE_DEALT_TOTAL,
+    STAT_TYPEHIT_TIME,
+    STAT_LAYED_MINES,
+    STAT_HAGAR_LOAD,
+    STAT_SWITCHINGWEAPON,
+    STAT_SUPERWEAPONS_FINISHED,
+    STAT_VEHICLESTAT_HEALTH,
+    STAT_VEHICLESTAT_SHIELD,
+    STAT_VEHICLESTAT_ENERGY,
+    STAT_VEHICLESTAT_AMMO1,
+    STAT_VEHICLESTAT_RELOAD1,
+    STAT_VEHICLESTAT_AMMO2,
+    STAT_VEHICLESTAT_RELOAD2,
+    STAT_VEHICLESTAT_W2MODE,
+    STAT_NADE_TIMER,
+    STAT_SECRETS_TOTAL,
+    STAT_SECRETS_FOUND,
+    STAT_RESPAWN_TIME,
+    STAT_ROUNDSTARTTIME,
+    STAT_MONSTERS_TOTAL,
+    STAT_MONSTERS_KILLED,
+    STAT_BUFFS,
+    STAT_NADE_BONUS,
+    STAT_NADE_BONUS_TYPE,
+    STAT_NADE_BONUS_SCORE,
+    STAT_HEALING_ORB,
+    STAT_HEALING_ORB_ALPHA,
+    STAT_PLASMA,
+    STAT_OK_AMMO_CHARGE,
+    STAT_OK_AMMO_CHARGEPOOL,
+    STAT_FROZEN,
+    STAT_REVIVE_PROGRESS,
+    STAT_ROUNDLOST,
+    STAT_BUFF_TIME,
+    STAT_CTF_FLAGSTATUS,
+    STAT_MULTIJUMP_DODGING,
+    STAT_MULTIJUMP_MAXSPEED,
+    STAT_GAMEPLAYFIX_UPVELOCITYCLEARSONGROUND,
+    STAT_BUGRIGS_REVERSE_STOPPING,
+    STAT_BUGRIGS_REVERSE_SPINNING,
+    STAT_BUGRIGS_CAR_JUMPING,
+    STAT_BUGRIGS_FRICTION_AIR,
+    STAT_BUGRIGS_STEER,
+    STAT_BUGRIGS_SPEED_POW,
+    STAT_BUGRIGS_SPEED_REF,
+    STAT_BUGRIGS_ACCEL,
+    STAT_BUGRIGS_FRICTION_BRAKE,
+    STAT_BUGRIGS_AIR_STEERING,
+    STAT_BUGRIGS_FRICTION_FLOOR,
+    STAT_BUGRIGS_REVERSE_SPEEDING,
+    STAT_BUGRIGS_PLANAR_MOVEMENT,
+    STAT_BUGRIGS_ANGLE_SMOOTHING,
+    STAT_BUGRIGS,
+    STAT_GAMEPLAYFIX_STEPDOWN,
+    STAT_MOVEVARS_JUMPSTEP,
+    STAT_NOSTEP,
+    STAT_GAMEPLAYFIX_UNSTICKPLAYERS,
+    STAT_GAMEPLAYFIX_STEPMULTIPLETIMES,
+    STAT_GAMEPLAYFIX_DOWNTRACEONGROUND,
+    STAT_GAMEPLAYFIX_EASIERWATERJUMP,
+    STAT_MOVEVARS_FRICTION_SLICK,
+    STAT_MOVEVARS_FRICTION_ONLAND,
+    STAT_MOVEVARS_JUMPSPEEDCAP_DISABLE_ONRAMPS,
+    STAT_MOVEVARS_TRACK_CANJUMP,
+    STAT_DOUBLEJUMP,
+    STAT_MOVEVARS_CL_TRACK_CANJUMP,
+    STAT_MULTIJUMP_ADD,
+    STAT_MULTIJUMP_SPEED,
+    STAT_MULTIJUMP,
+    STAT_DODGING_TIMEOUT,
+    STAT_DODGING_WALL,
+    STAT_DODGING_UP_SPEED,
+    STAT_DODGING_RAMP_TIME,
+    STAT_DODGING_HEIGHT_THRESHOLD,
+    STAT_DODGING_DISTANCE_THRESHOLD,
+    STAT_DODGING_HORIZ_SPEED,
+    STAT_DODGING_DELAY,
+    STAT_DODGING_FROZEN_NO_DOUBLETAP,
+    STAT_DODGING_HORIZ_SPEED_FROZEN,
+    STAT_DODGING,
+    STAT_DODGING_FROZEN,
+    STAT_JETPACK_MAXSPEED_UP,
+    STAT_JETPACK_MAXSPEED_SIDE,
+    STAT_JETPACK_FUEL,
+    STAT_JETPACK_ANTIGRAVITY,
+    STAT_JETPACK_ACCEL_SIDE,
+    STAT_JETPACK_ACCEL_UP,
+    STAT_MOVEVARS_HIGHSPEED,
+
+    STAT_LAST_MAIN
+};
+
+const int STAT_LAST = STAT_LAST_MAIN + 5;
 
 /* The following stats change depending on the gamemode, so can share the same ID */
-// IDs 100 to 104 reserved for gamemodes
 
 // freeze tag, clan arena, jailbreak
-const int STAT_REDALIVE               = 100;
-const int STAT_BLUEALIVE              = 101;
-const int STAT_YELLOWALIVE            = 102;
-const int STAT_PINKALIVE              = 103;
+enum {
+    STAT_REDALIVE = STAT_LAST_MAIN,
+    STAT_BLUEALIVE,
+    STAT_YELLOWALIVE,
+    STAT_PINKALIVE,
+};
 
 // domination
-const int STAT_DOM_TOTAL_PPS          = 100;
-const int STAT_DOM_PPS_RED            = 101;
-const int STAT_DOM_PPS_BLUE           = 102;
-const int STAT_DOM_PPS_YELLOW         = 103;
-const int STAT_DOM_PPS_PINK           = 104;
+enum {
+    STAT_DOM_TOTAL_PPS = STAT_LAST_MAIN,
+    STAT_DOM_PPS_RED,
+    STAT_DOM_PPS_BLUE,
+    STAT_DOM_PPS_YELLOW,
+    STAT_DOM_PPS_PINK,
+};
 
 // vip
-const int STAT_VIP                    = 100;
-const int STAT_VIP_RED                = 101;
-const int STAT_VIP_BLUE               = 102;
-const int STAT_VIP_YELLOW             = 103;
-const int STAT_VIP_PINK               = 104;
+enum {
+    STAT_VIP = STAT_LAST_MAIN,
+    STAT_VIP_RED,
+    STAT_VIP_BLUE,
+    STAT_VIP_YELLOW,
+    STAT_VIP_PINK,
+};
 
 // key hunt
-const int STAT_KH_REDKEY_TEAM         = 100;
-const int STAT_KH_BLUEKEY_TEAM        = 101;
-const int STAT_KH_YELLOWKEY_TEAM      = 102;
-const int STAT_KH_PINKKEY_TEAM        = 103;
-
-/* Gamemode-specific stats end here */
+enum {
+    STAT_KH_REDKEY_TEAM = STAT_LAST_MAIN,
+    STAT_KH_BLUEKEY_TEAM,
+    STAT_KH_YELLOWKEY_TEAM,
+    STAT_KH_PINKKEY_TEAM,
+};
 
+#define ASSERT_LESS(name, var, const) noref int name[(const - var + 1)];
+ASSERT_LESS(stat_limit, STAT_LAST, 220)
 
-const int STAT_FROZEN                 = 105;
-const int STAT_REVIVE_PROGRESS        = 106;
-// 107 empty?
-// 108 empty?
-// 109 empty?
-// 110 empty?
-// 111 empty?
-// 112 empty?
-// 113 empty?
-// 114 empty?
-// 115 empty?
-// 116 empty?
-// 117 empty?
-// 118 empty?
-// 119 empty?
-// 120 empty?
-// 121 empty?
-// 122 empty?
-// 123 empty?
-// 124 empty?
-// 125 empty?
-// 126 empty?
-// 127 empty?
-// 128 empty?
-// 129 empty?
-// 130 empty?
-// 131 empty?
-// 132 empty?
-// 133 empty?
-// 134 empty?
-// 135 empty?
-// 136 empty?
-// 137 empty?
-// 138 empty?
-// 139 empty?
-// 140 empty?
-// 141 empty?
-// 142 empty?
-// 143 empty?
-// 144 empty?
-// 145 empty?
-// 146 empty?
-// 147 empty?
-// 148 empty?
-// 149 empty?
-// 150 empty?
-// 151 empty?
-// 152 empty?
-// 153 empty?
-// 154 empty?
-// 155 empty?
-// 156 empty?
-// 157 empty?
-// 158 empty?
-// 159 empty?
-// 160 empty?
-// 161 empty?
-// 162 empty?
-// 162 empty?
-// 163 empty?
-// 164 empty?
-// 165 empty?
-// 166 empty?
-// 167 empty?
-// 168 empty?
-// 169 empty?
-// 170 empty?
-// 171 empty?
-// 172 empty?
-// 173 empty?
-// 174 empty?
-// 175 empty?
-// 176 empty?
-// 177 empty?
-// 178 empty?
-// 179 empty?
-// 180 empty?
-// 181 empty?
-// 182 empty?
-// 183 empty?
-// 184 empty?
-// 185 empty?
-// 186 empty?
-// 187 empty?
-// 188 empty?
-// 189 empty?
-// 190 empty?
-// 191 empty?
-// 192 empty?
-// 193 empty?
-// 194 empty?
-// 195 empty?
-// 196 empty?
-// 197 empty?
-// 198 empty?
-// 199 empty?
-// 200 empty?
-// 201 empty?
-// 202 empty?
-// 203 empty?
-// 204 empty?
-// 205 empty?
-// 206 empty?
-// 207 empty?
-// 208 empty?
-// 209 empty?
-// 210 empty?
-// 211 empty?
-// 212 empty?
-// 213 empty?
-// 214 empty?
-// 215 empty?
-// 216 empty?
-// 217 empty?
-// 218 empty?
-// 219 empty?
 const int STAT_MOVEVARS_AIRACCEL_QW_STRETCHFACTOR     = 220;
 const int STAT_MOVEVARS_AIRCONTROL_PENALTY            = 221;
 const int STAT_MOVEVARS_AIRSPEEDLIMIT_NONQW           = 222;