├── .gitignore ├── README.md ├── abilities.h ├── activity_enum.h ├── baseclient.h ├── collision_property.h ├── director.h ├── director_vtables.h ├── eiface.h ├── game_events.h ├── gamerules.h ├── globalvars.h ├── glow_property.h ├── handle.h ├── l4d2_linux.h ├── l4d2_windows.h ├── lunge.h ├── mem.h ├── nav_mesh.h ├── network_var.h ├── steam_api.h ├── terror_bots.h ├── terror_player.h ├── terror_player_vtables.h ├── timers.h ├── typestuff.h ├── util.h ├── weapon_info.h └── zombie_manager.h /.gitignore: -------------------------------------------------------------------------------- 1 | L4D2_Structs.sln 2 | L4D2_Structs.vcxproj 3 | L4D2_Structs.vcxproj.filters 4 | L4D2_Structs.vcxproj.user 5 | *.db 6 | *.opendb 7 | .vs/L4D2_Structs/v15/.suo 8 | *.ipch 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | l4d2_structs 2 | ============ 3 | 4 | These are some simple C-style struct definitions which are formatted for use with IDA for examining Left 4 Dead 2's server binaries. 5 | 6 | All information about these data structures and their members was obtained through one of two methods: 7 | 8 | 1. Reading publicly available class data in the Half Life 2 SDKs 9 | 2. Reverse engineering Left 4 Dead 2 server and/or client binaries 10 | 11 | Note that no code has been copied from the HL2SDKs, only variable offset information. 12 | 13 | The reverse engineering involved in this project was done in order to support interoperability between the L4D2 server code and third party plugins. It should be protected under the DMCA. 14 | 15 | Usage 16 | ===== 17 | In IDA, go to File -> Load File -> Parse C Header File or hit Ctrl+F9. 18 | 19 | Then, select l4d2_linux.h or l4d2_windows.h depending on which platform's server binary you are reading. 20 | 21 | 22 | LuxLuma fork: 23 | 24 | Windows offsets have not been maintained at all they are all likely wrong 25 | 26 | Credits: 27 | silvershot fixing errors that would happen from main repo. -------------------------------------------------------------------------------- /abilities.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_ABILITIES_H_ 2 | #define _INCLUDE_ABILITIES_H_ 3 | 4 | #include "terror_player.h" 5 | 6 | struct CBaseAbility_iface 7 | { 8 | void * OnOwnerLeaveActiveState; 9 | void * OnOwnerLeaveActiveState2; // OnOwnerLeaveActiveState(void) 10 | void * OnOwnerChanged; // OnOwnerChanged(CTerrorPlayer *) 11 | void * IsAbilityReadyToFire; // IsAbilityReadyToFire(void)const 12 | void * ActivateAbility; // ActivateAbility(void) 13 | void * UpdateAbility; // UpdateAbility(void) 14 | void * OnCreate; // OnCreate(CTerrorPlayer *) 15 | void * HasAbilityTarget; // HasAbilityTarget(void)const 16 | void * SetSupressionTimer; // SetSupressionTimer(float) 17 | void * GetActivationTimeRemaining; // GetActivationTimeRemaining(void)const 18 | void * GetButton; // GetButton(void)const 19 | void * OnButtonPressed; // OnButtonPressed(void) 20 | void * OnButtonReleased; // OnButtonReleased(void) 21 | void * IsActive; // IsActive(void)const 22 | void * IsPredicted; // IsPredicted(void)const 23 | void * GetJumpVector; // GetJumpVector(bool) 24 | void * OnTouch; // OnTouch(CBaseEntity *) 25 | void * OnCrouched; // OnCrouched(void) 26 | void * OnCrouchStart; // OnCrouchStart(void) 27 | void * GetSpeedOverride; // GetSpeedOverride(void)const 28 | void * GetMaxSpeedOverride; // GetMaxSpeedOverride(void)const 29 | void * GetFrictionMultiplier; // GetFrictionMultiplier(void)const 30 | void * CanPlayerMove; // CanPlayerMove(void)const 31 | void * OnOwnerTakeDamage; // OnOwnerTakeDamage(CTakeDamageInfo const&) 32 | void * Operator_HandleAnimEvent; // Operator_HandleAnimEvent(animevent_t *,CBaseCombatCharacter *) 33 | void * OnStunned; // OnStunned(float) 34 | void * HandleCustomCollision; // HandleCustomCollision(CBaseEntity *,Vector const&,Vector const&,CGameTrace *,CMoveData *) 35 | void * OnDestroy; // OnDestroy(void) 36 | void * AbilityDebug; // AbilityDebug(char const*,...) 37 | void * AbilityDebug2; // AbilityDebug(CTerrorPlayer *,char const*,...) 38 | }; 39 | 40 | struct CBaseAbility_vtable { 41 | void * dtor1; // 0 42 | void * dtor0; // 4 43 | IHandleEntity_iface IHandleEntity; // 8 44 | IServerUnknown_iface IServerUnknown; // 16 45 | IServerEntity_iface IServerEntity; // 28 46 | CBaseEntity_iface CBaseEntity; // 40 47 | CBaseAbility_iface CBaseAbility; 48 | }; 49 | 50 | 51 | struct CBaseAbility_data 52 | { 53 | char unknown1072[16]; 54 | CountdownTimer m_activationSupressedTimer; // 1088 55 | int m_owner; // 1100 set to -1 in constructor 56 | CountdownTimer _m_nextActivationTimer; // 1104 57 | bool m_hasBeenUsed; // 1116 58 | }; //1120 59 | 60 | struct CCharge_data 61 | { 62 | int m_chargeStartTime; // 1120 63 | bool m_isCharging; // 1124 64 | int m_unknown1128; 65 | float m_initialVelocity[3]; //1132 66 | float m_initialOrigin[3]; // 1144 67 | CountdownTimer m_unknownTimer1156; 68 | CountdownTimer m_unknownTimer1168; // set to 0.1 in begincharge 69 | bool m_hitSurvivors[8]; // 1180 70 | bool m_Unknown1188; // 1188 71 | float m_carryStartVelocity[3]; // 1192 72 | }; 73 | 74 | struct CBaseAbility 75 | { 76 | CBaseAbility_vtable *vptr; 77 | CBaseEntity_data CBaseEntity; // 4 78 | CBaseAbility_data CBaseAbility; // 1072 79 | }; 80 | 81 | struct CCharge 82 | { 83 | CBaseAbility_vtable *vptr; 84 | CBaseEntity_data CBaseEntity; // 4 85 | CBaseAbility_data CBaseAbility; // 1072 86 | CCharge_data CCharge; 87 | }; 88 | 89 | #endif // _INCLUDE_ABILITIES_H_ -------------------------------------------------------------------------------- /activity_enum.h: -------------------------------------------------------------------------------- 1 | enum Activity 2 | { 3 | ACT_RESET = 0, 4 | ACT_IDLE, 5 | ACT_TRANSITION, 6 | ACT_COVER, 7 | ACT_COVER_MED, 8 | ACT_COVER_LOW, 9 | ACT_WALK, 10 | ACT_WALK_AIM, 11 | ACT_WALK_CROUCH, 12 | ACT_WALK_CROUCH_AIM, 13 | ACT_RUN, 14 | ACT_RUN_AIM, 15 | ACT_RUN_CROUCH, 16 | ACT_RUN_CROUCH_AIM, 17 | ACT_RUN_PROTECTED, 18 | ACT_SCRIPT_CUSTOM_MOVE, 19 | ACT_RANGE_ATTACK1, 20 | ACT_RANGE_ATTACK2, 21 | ACT_RANGE_ATTACK1_LOW, 22 | ACT_RANGE_ATTACK2_LOW, 23 | ACT_DIESIMPLE, 24 | ACT_DIEBACKWARD, 25 | ACT_DIEFORWARD, 26 | ACT_DIEVIOLENT, 27 | ACT_DIERAGDOLL, 28 | ACT_FLY, 29 | ACT_HOVER, 30 | ACT_GLIDE, 31 | ACT_SWIM, 32 | ACT_JUMP, 33 | ACT_HOP, 34 | ACT_LEAP, 35 | ACT_LAND, 36 | ACT_CLIMB_UP, 37 | ACT_CLIMB_DOWN, 38 | ACT_CLIMB_DISMOUNT, 39 | ACT_SHIPLADDER_UP, 40 | ACT_SHIPLADDER_DOWN, 41 | ACT_STRAFE_LEFT, 42 | ACT_STRAFE_RIGHT, 43 | ACT_ROLL_LEFT, 44 | ACT_ROLL_RIGHT, 45 | ACT_TURN_LEFT, 46 | ACT_TURN_RIGHT, 47 | ACT_CROUCH, 48 | ACT_CROUCHIDLE, 49 | ACT_STAND, 50 | ACT_USE, 51 | ACT_SIGNAL1, 52 | ACT_SIGNAL2, 53 | ACT_SIGNAL3, 54 | ACT_SIGNAL_ADVANCE, 55 | ACT_SIGNAL_FORWARD, 56 | ACT_SIGNAL_GROUP, 57 | ACT_SIGNAL_HALT, 58 | ACT_SIGNAL_LEFT, 59 | ACT_SIGNAL_RIGHT, 60 | ACT_SIGNAL_TAKECOVER, 61 | ACT_LOOKBACK_RIGHT, 62 | ACT_LOOKBACK_LEFT, 63 | ACT_COWER, 64 | ACT_SMALL_FLINCH, 65 | ACT_BIG_FLINCH, 66 | ACT_MELEE_ATTACK1, 67 | ACT_MELEE_ATTACK2, 68 | ACT_RELOAD, 69 | ACT_RELOAD_START, 70 | ACT_RELOAD_FINISH, 71 | ACT_RELOAD_LOW, 72 | ACT_ARM, 73 | ACT_DISARM, 74 | ACT_DROP_WEAPON, 75 | ACT_DROP_WEAPON_SHOTGUN, 76 | ACT_PICKUP_GROUND, 77 | ACT_PICKUP_RACK, 78 | ACT_IDLE_ANGRY, 79 | ACT_IDLE_RELAXED, 80 | ACT_IDLE_STIMULATED, 81 | ACT_IDLE_AGITATED, 82 | ACT_IDLE_STEALTH, 83 | ACT_IDLE_HURT, 84 | ACT_WALK_RELAXED, 85 | ACT_WALK_STIMULATED, 86 | ACT_WALK_AGITATED, 87 | ACT_WALK_STEALTH, 88 | ACT_RUN_RELAXED, 89 | ACT_RUN_STIMULATED, 90 | ACT_RUN_AGITATED, 91 | ACT_RUN_STEALTH, 92 | ACT_IDLE_AIM_RELAXED, 93 | ACT_IDLE_AIM_STIMULATED, 94 | ACT_IDLE_AIM_AGITATED, 95 | ACT_IDLE_AIM_STEALTH, 96 | ACT_WALK_AIM_RELAXED, 97 | ACT_WALK_AIM_STIMULATED, 98 | ACT_WALK_AIM_AGITATED, 99 | ACT_WALK_AIM_STEALTH, 100 | ACT_RUN_AIM_RELAXED, 101 | ACT_RUN_AIM_STIMULATED, 102 | ACT_RUN_AIM_AGITATED, 103 | ACT_RUN_AIM_STEALTH, 104 | ACT_CROUCHIDLE_STIMULATED, 105 | ACT_CROUCHIDLE_AIM_STIMULATED, 106 | ACT_CROUCHIDLE_AGITATED, 107 | ACT_WALK_HURT, 108 | ACT_RUN_HURT, 109 | ACT_SPECIAL_ATTACK1, 110 | ACT_SPECIAL_ATTACK2, 111 | ACT_COMBAT_IDLE, 112 | ACT_WALK_SCARED, 113 | ACT_RUN_SCARED, 114 | ACT_VICTORY_DANCE, 115 | ACT_DIE_HEADSHOT, 116 | ACT_DIE_CHESTSHOT, 117 | ACT_DIE_GUTSHOT, 118 | ACT_DIE_BACKSHOT, 119 | ACT_FLINCH_HEAD, 120 | ACT_FLINCH_CHEST, 121 | ACT_FLINCH_STOMACH, 122 | ACT_FLINCH_LEFTARM, 123 | ACT_FLINCH_RIGHTARM, 124 | ACT_FLINCH_LEFTLEG, 125 | ACT_FLINCH_RIGHTLEG, 126 | ACT_FLINCH_PHYSICS, 127 | ACT_FLINCH_HEAD_BACK, 128 | ACT_FLINCH_CHEST_BACK, 129 | ACT_FLINCH_STOMACH_BACK, 130 | ACT_FLINCH_CROUCH_FRONT, 131 | ACT_FLINCH_CROUCH_BACK, 132 | ACT_FLINCH_CROUCH_LEFT, 133 | ACT_FLINCH_CROUCH_RIGHT, 134 | ACT_IDLE_ON_FIRE, 135 | ACT_WALK_ON_FIRE, 136 | ACT_RUN_ON_FIRE, 137 | ACT_RAPPEL_LOOP, 138 | ACT_180_LEFT, 139 | ACT_180_RIGHT, 140 | ACT_90_LEFT, 141 | ACT_90_RIGHT, 142 | ACT_STEP_LEFT, 143 | ACT_STEP_RIGHT, 144 | ACT_STEP_BACK, 145 | ACT_STEP_FORE, 146 | ACT_GESTURE_RANGE_ATTACK1, 147 | ACT_GESTURE_RANGE_ATTACK2, 148 | ACT_GESTURE_MELEE_ATTACK1, 149 | ACT_GESTURE_MELEE_ATTACK2, 150 | ACT_GESTURE_RANGE_ATTACK1_LOW, 151 | ACT_GESTURE_RANGE_ATTACK2_LOW, 152 | ACT_MELEE_ATTACK_SWING_GESTURE, 153 | ACT_GESTURE_SMALL_FLINCH, 154 | ACT_GESTURE_BIG_FLINCH, 155 | ACT_GESTURE_FLINCH_BLAST, 156 | ACT_GESTURE_FLINCH_BLAST_SHOTGUN, 157 | ACT_GESTURE_FLINCH_BLAST_DAMAGED, 158 | ACT_GESTURE_FLINCH_BLAST_DAMAGED_SHOTGUN, 159 | ACT_GESTURE_FLINCH_HEAD, 160 | ACT_GESTURE_FLINCH_CHEST, 161 | ACT_GESTURE_FLINCH_STOMACH, 162 | ACT_GESTURE_FLINCH_LEFTARM, 163 | ACT_GESTURE_FLINCH_RIGHTARM, 164 | ACT_GESTURE_FLINCH_LEFTLEG, 165 | ACT_GESTURE_FLINCH_RIGHTLEG, 166 | ACT_GESTURE_TURN_LEFT, 167 | ACT_GESTURE_TURN_RIGHT, 168 | ACT_GESTURE_TURN_LEFT45, 169 | ACT_GESTURE_TURN_RIGHT45, 170 | ACT_GESTURE_TURN_LEFT90, 171 | ACT_GESTURE_TURN_RIGHT90, 172 | ACT_GESTURE_TURN_LEFT45_FLAT, 173 | ACT_GESTURE_TURN_RIGHT45_FLAT, 174 | ACT_GESTURE_TURN_LEFT90_FLAT, 175 | ACT_GESTURE_TURN_RIGHT90_FLAT, 176 | ACT_BARNACLE_HIT, 177 | ACT_BARNACLE_PULL, 178 | ACT_BARNACLE_CHOMP, 179 | ACT_BARNACLE_CHEW, 180 | ACT_DO_NOT_DISTURB, 181 | ACT_SPECIFIC_SEQUENCE, 182 | ACT_VM_DEPLOY, 183 | ACT_VM_RELOAD_EMPTY, 184 | ACT_VM_DRAW, 185 | ACT_VM_HOLSTER, 186 | ACT_VM_IDLE, 187 | ACT_VM_FIDGET, 188 | ACT_VM_PULLBACK, 189 | ACT_VM_PULLBACK_HIGH, 190 | ACT_VM_PULLBACK_LOW, 191 | ACT_VM_THROW, 192 | ACT_VM_DROP, 193 | ACT_VM_PULLPIN, 194 | ACT_VM_PRIMARYATTACK, 195 | ACT_VM_SECONDARYATTACK, 196 | ACT_VM_RELOAD, 197 | ACT_VM_DRYFIRE, 198 | ACT_VM_HITLEFT, 199 | ACT_VM_HITLEFT2, 200 | ACT_VM_HITRIGHT, 201 | ACT_VM_HITRIGHT2, 202 | ACT_VM_HITCENTER, 203 | ACT_VM_HITCENTER2, 204 | ACT_VM_MISSLEFT, 205 | ACT_VM_MISSLEFT2, 206 | ACT_VM_MISSRIGHT, 207 | ACT_VM_MISSRIGHT2, 208 | ACT_VM_MISSCENTER, 209 | ACT_VM_MISSCENTER2, 210 | ACT_VM_HAULBACK, 211 | ACT_VM_SWINGHARD, 212 | ACT_VM_SWINGMISS, 213 | ACT_VM_SWINGHIT, 214 | ACT_VM_IDLE_TO_LOWERED, 215 | ACT_VM_IDLE_LOWERED, 216 | ACT_VM_LOWERED_TO_IDLE, 217 | ACT_VM_RECOIL1, 218 | ACT_VM_RECOIL2, 219 | ACT_VM_RECOIL3, 220 | ACT_VM_PICKUP, 221 | ACT_VM_RELEASE, 222 | ACT_VM_MAUL_LOOP, 223 | ACT_VM_ATTACH_SILENCER, 224 | ACT_VM_DETACH_SILENCER, 225 | ACT_SLAM_STICKWALL_IDLE, 226 | ACT_SLAM_STICKWALL_ND_IDLE, 227 | ACT_SLAM_STICKWALL_ATTACH, 228 | ACT_SLAM_STICKWALL_ATTACH2, 229 | ACT_SLAM_STICKWALL_ND_ATTACH, 230 | ACT_SLAM_STICKWALL_ND_ATTACH2, 231 | ACT_SLAM_STICKWALL_DETONATE, 232 | ACT_SLAM_STICKWALL_DETONATOR_HOLSTER, 233 | ACT_SLAM_STICKWALL_DRAW, 234 | ACT_SLAM_STICKWALL_ND_DRAW, 235 | ACT_SLAM_STICKWALL_TO_THROW, 236 | ACT_SLAM_STICKWALL_TO_THROW_ND, 237 | ACT_SLAM_STICKWALL_TO_TRIPMINE_ND, 238 | ACT_SLAM_THROW_IDLE, 239 | ACT_SLAM_THROW_ND_IDLE, 240 | ACT_SLAM_THROW_THROW, 241 | ACT_SLAM_THROW_THROW2, 242 | ACT_SLAM_THROW_THROW_ND, 243 | ACT_SLAM_THROW_THROW_ND2, 244 | ACT_UNKNOWN_241, 245 | ACT_SLAM_THROW_ND_DRAW, 246 | ACT_SLAM_THROW_TO_STICKWALL, 247 | ACT_SLAM_THROW_TO_STICKWALL_ND, 248 | ACT_SLAM_THROW_DETONATE, 249 | ACT_SLAM_THROW_DETONATOR_HOLSTER, 250 | ACT_SLAM_THROW_TO_TRIPMINE_ND, 251 | ACT_SLAM_TRIPMINE_IDLE, 252 | ACT_SLAM_TRIPMINE_DRAW, 253 | ACT_SLAM_TRIPMINE_ATTACH, 254 | ACT_SLAM_TRIPMINE_ATTACH2, 255 | ACT_SLAM_TRIPMINE_TO_STICKWALL_ND, 256 | ACT_SLAM_TRIPMINE_TO_THROW_ND, 257 | ACT_SLAM_DETONATOR_IDLE, 258 | ACT_UNKNOWN_255, 259 | ACT_SLAM_DETONATOR_DETONATE, 260 | ACT_SLAM_DETONATOR_HOLSTER, 261 | ACT_SLAM_DETONATOR_STICKWALL_DRAW, 262 | ACT_SLAM_DETONATOR_THROW_DRAW, 263 | ACT_SHOTGUN_RELOAD_START, 264 | ACT_SHOTGUN_RELOAD_FINISH, 265 | ACT_SHOTGUN_PUMP, 266 | ACT_SMG2_IDLE2, 267 | ACT_SMG2_FIRE2, 268 | ACT_SMG2_DRAW2, 269 | ACT_SMG2_RELOAD2, 270 | ACT_SMG2_DRYFIRE2, 271 | ACT_SMG2_TOAUTO, 272 | ACT_SMG2_TOBURST, 273 | ACT_PHYSCANNON_UPGRADE, 274 | ACT_RANGE_ATTACK_AR1, 275 | ACT_RANGE_ATTACK_AR2, 276 | ACT_RANGE_ATTACK_AR2_LOW, 277 | ACT_RANGE_ATTACK_AR2_GRENADE, 278 | ACT_RANGE_ATTACK_HMG1, 279 | ACT_RANGE_ATTACK_ML, 280 | ACT_RANGE_ATTACK_SMG1, 281 | ACT_RANGE_ATTACK_SMG1_LOW, 282 | ACT_RANGE_ATTACK_SMG2, 283 | ACT_RANGE_ATTACK_SHOTGUN, 284 | ACT_RANGE_ATTACK_SHOTGUN_LOW, 285 | ACT_RANGE_ATTACK_PISTOL, 286 | ACT_RANGE_ATTACK_PISTOL_LOW, 287 | ACT_RANGE_ATTACK_SLAM, 288 | ACT_RANGE_ATTACK_TRIPWIRE, 289 | ACT_RANGE_ATTACK_THROW, 290 | ACT_RANGE_ATTACK_SNIPER_RIFLE, 291 | ACT_RANGE_ATTACK_RPG, 292 | ACT_MELEE_ATTACK_SWING, 293 | ACT_RANGE_AIM_LOW, 294 | ACT_RANGE_AIM_SMG1_LOW, 295 | ACT_RANGE_AIM_PISTOL_LOW, 296 | ACT_RANGE_AIM_AR2_LOW, 297 | ACT_COVER_PISTOL_LOW, 298 | ACT_COVER_SMG1_LOW, 299 | ACT_GESTURE_RANGE_ATTACK_AR1, 300 | ACT_GESTURE_RANGE_ATTACK_AR2, 301 | ACT_GESTURE_RANGE_ATTACK_AR2_GRENADE, 302 | ACT_GESTURE_RANGE_ATTACK_HMG1, 303 | ACT_GESTURE_RANGE_ATTACK_ML, 304 | ACT_GESTURE_RANGE_ATTACK_SMG1, 305 | ACT_GESTURE_RANGE_ATTACK_SMG1_LOW, 306 | ACT_GESTURE_RANGE_ATTACK_SMG2, 307 | ACT_GESTURE_RANGE_ATTACK_SHOTGUN, 308 | ACT_GESTURE_RANGE_ATTACK_PISTOL, 309 | ACT_GESTURE_RANGE_ATTACK_PISTOL_LOW, 310 | ACT_GESTURE_RANGE_ATTACK_SLAM, 311 | ACT_GESTURE_RANGE_ATTACK_TRIPWIRE, 312 | ACT_GESTURE_RANGE_ATTACK_THROW, 313 | ACT_GESTURE_RANGE_ATTACK_SNIPER_RIFLE, 314 | ACT_GESTURE_MELEE_ATTACK_SWING, 315 | ACT_IDLE_RIFLE, 316 | ACT_IDLE_SMG1, 317 | ACT_IDLE_ANGRY_SMG1, 318 | ACT_IDLE_PISTOL, 319 | ACT_IDLE_ANGRY_PISTOL, 320 | ACT_IDLE_ANGRY_SHOTGUN, 321 | ACT_IDLE_STEALTH_PISTOL, 322 | ACT_IDLE_PACKAGE, 323 | ACT_WALK_PACKAGE, 324 | ACT_IDLE_SUITCASE, 325 | ACT_WALK_SUITCASE, 326 | ACT_IDLE_SMG1_RELAXED, 327 | ACT_IDLE_SMG1_STIMULATED, 328 | ACT_WALK_RIFLE_RELAXED, 329 | ACT_RUN_RIFLE_RELAXED, 330 | ACT_WALK_RIFLE_STIMULATED, 331 | ACT_RUN_RIFLE_STIMULATED, 332 | ACT_IDLE_AIM_RIFLE_STIMULATED, 333 | ACT_WALK_AIM_RIFLE_STIMULATED, 334 | ACT_RUN_AIM_RIFLE_STIMULATED, 335 | ACT_IDLE_SHOTGUN_RELAXED, 336 | ACT_IDLE_SHOTGUN_STIMULATED, 337 | ACT_IDLE_SHOTGUN_AGITATED, 338 | ACT_WALK_ANGRY, 339 | ACT_POLICE_HARASS1, 340 | ACT_POLICE_HARASS2, 341 | ACT_IDLE_MANNEDGUN, 342 | ACT_IDLE_MELEE, 343 | ACT_IDLE_ANGRY_MELEE, 344 | ACT_IDLE_RPG_RELAXED, 345 | ACT_IDLE_RPG, 346 | ACT_IDLE_ANGRY_RPG, 347 | ACT_COVER_LOW_RPG, 348 | ACT_WALK_RPG, 349 | ACT_RUN_RPG, 350 | ACT_WALK_CROUCH_RPG, 351 | ACT_RUN_CROUCH_RPG, 352 | ACT_WALK_RPG_RELAXED, 353 | ACT_RUN_RPG_RELAXED, 354 | ACT_WALK_RIFLE, 355 | ACT_WALK_AIM_RIFLE, 356 | ACT_WALK_CROUCH_RIFLE, 357 | ACT_WALK_CROUCH_AIM_RIFLE, 358 | ACT_RUN_RIFLE, 359 | ACT_RUN_AIM_RIFLE, 360 | ACT_RUN_CROUCH_RIFLE, 361 | ACT_RUN_CROUCH_AIM_RIFLE, 362 | ACT_RUN_STEALTH_PISTOL, 363 | ACT_WALK_AIM_SHOTGUN, 364 | ACT_RUN_AIM_SHOTGUN, 365 | ACT_WALK_PISTOL, 366 | ACT_RUN_PISTOL, 367 | ACT_WALK_AIM_PISTOL, 368 | ACT_RUN_AIM_PISTOL, 369 | ACT_WALK_STEALTH_PISTOL, 370 | ACT_WALK_AIM_STEALTH_PISTOL, 371 | ACT_RUN_AIM_STEALTH_PISTOL, 372 | ACT_RELOAD_PISTOL, 373 | ACT_RELOAD_PISTOL_LOW, 374 | ACT_RELOAD_SMG1, 375 | ACT_RELOAD_SMG1_LOW, 376 | ACT_RELOAD_SHOTGUN, 377 | ACT_RELOAD_SHOTGUN_LOW, 378 | ACT_GESTURE_RELOAD, 379 | ACT_GESTURE_RELOAD_PISTOL, 380 | ACT_GESTURE_RELOAD_SMG1, 381 | ACT_GESTURE_RELOAD_SHOTGUN, 382 | ACT_BUSY_LEAN_LEFT, 383 | ACT_BUSY_LEAN_LEFT_ENTRY, 384 | ACT_UNKNOWN_381, 385 | ACT_BUSY_LEAN_BACK, 386 | ACT_BUSY_LEAN_BACK_ENTRY, 387 | ACT_BUSY_LEAN_BACK_EXIT, 388 | ACT_BUSY_SIT_GROUND, 389 | ACT_BUSY_SIT_GROUND_ENTRY, 390 | ACT_BUSY_SIT_GROUND_EXIT, 391 | ACT_BUSY_SIT_CHAIR, 392 | ACT_BUSY_SIT_CHAIR_ENTRY, 393 | ACT_BUSY_SIT_CHAIR_EXIT, 394 | ACT_BUSY_STAND, 395 | ACT_BUSY_QUEUE, 396 | ACT_DUCK_DODGE, 397 | ACT_DIE_BARNACLE_SWALLOW, 398 | ACT_GESTURE_BARNACLE_STRANGLE, 399 | ACT_PHYSCANNON_DETACH, 400 | ACT_PHYSCANNON_ANIMATE, 401 | ACT_PHYSCANNON_ANIMATE_PRE, 402 | ACT_PHYSCANNON_ANIMATE_POST, 403 | ACT_DIE_FRONTSIDE, 404 | ACT_DIE_RIGHTSIDE, 405 | ACT_DIE_BACKSIDE, 406 | ACT_DIE_LEFTSIDE, 407 | ACT_DIE_CROUCH_FRONTSIDE, 408 | ACT_DIE_CROUCH_RIGHTSIDE, 409 | ACT_DIE_CROUCH_BACKSIDE, 410 | ACT_DIE_CROUCH_LEFTSIDE, 411 | ACT_DIE_INCAP, 412 | ACT_DIE_STANDING, 413 | ACT_OPEN_DOOR, 414 | ACT_DI_ALYX_ZOMBIE_MELEE, 415 | ACT_DI_ALYX_ZOMBIE_TORSO_MELEE, 416 | ACT_DI_ALYX_HEADCRAB_MELEE, 417 | ACT_DI_ALYX_ANTLION, 418 | ACT_DI_ALYX_ZOMBIE_SHOTGUN64, 419 | ACT_DI_ALYX_ZOMBIE_SHOTGUN26, 420 | ACT_READINESS_RELAXED_TO_STIMULATED, 421 | ACT_READINESS_RELAXED_TO_STIMULATED_WALK, 422 | ACT_READINESS_AGITATED_TO_STIMULATED, 423 | ACT_READINESS_STIMULATED_TO_RELAXED, 424 | ACT_READINESS_PISTOL_RELAXED_TO_STIMULATED, 425 | ACT_READINESS_PISTOL_RELAXED_TO_STIMULATED_WALK, 426 | ACT_READINESS_PISTOL_AGITATED_TO_STIMULATED, 427 | ACT_READINESS_PISTOL_STIMULATED_TO_RELAXED, 428 | ACT_IDLE_CARRY, 429 | ACT_WALK_CARRY, 430 | ACT_STARTDYING, 431 | ACT_DYINGLOOP, 432 | ACT_DYINGTODEAD, 433 | ACT_RIDE_MANNED_GUN, 434 | ACT_VM_SPRINT_ENTER, 435 | ACT_VM_SPRINT_IDLE, 436 | ACT_VM_SPRINT_LEAVE, 437 | ACT_FIRE_START, 438 | ACT_FIRE_LOOP, 439 | ACT_FIRE_END, 440 | ACT_CROUCHING_GRENADEIDLE, 441 | ACT_CROUCHING_GRENADEREADY, 442 | ACT_CROUCHING_PRIMARYATTACK, 443 | ACT_OVERLAY_GRENADEIDLE, 444 | ACT_OVERLAY_GRENADEREADY, 445 | ACT_OVERLAY_PRIMARYATTACK, 446 | ACT_OVERLAY_SHIELD_UP, 447 | ACT_OVERLAY_SHIELD_DOWN, 448 | ACT_OVERLAY_SHIELD_UP_IDLE, 449 | ACT_OVERLAY_SHIELD_ATTACK, 450 | ACT_OVERLAY_SHIELD_KNOCKBACK, 451 | ACT_SHIELD_UP, 452 | ACT_SHIELD_DOWN, 453 | ACT_SHIELD_UP_IDLE, 454 | ACT_SHIELD_ATTACK, 455 | ACT_SHIELD_KNOCKBACK, 456 | ACT_CROUCHING_SHIELD_UP, 457 | ACT_CROUCHING_SHIELD_DOWN, 458 | ACT_CROUCHING_SHIELD_UP_IDLE, 459 | ACT_CROUCHING_SHIELD_ATTACK, 460 | ACT_CROUCHING_SHIELD_KNOCKBACK, 461 | ACT_TURNRIGHT45, 462 | ACT_TURNLEFT45, 463 | ACT_TURN, 464 | ACT_OBJ_ASSEMBLING, 465 | ACT_OBJ_DISMANTLING, 466 | ACT_OBJ_STARTUP, 467 | ACT_OBJ_RUNNING, 468 | ACT_OBJ_IDLE, 469 | ACT_OBJ_PLACING, 470 | ACT_OBJ_DETERIORATING, 471 | ACT_OBJ_UPGRADING, 472 | ACT_DEPLOY, 473 | ACT_DEPLOY_IDLE, 474 | ACT_UNDEPLOY, 475 | ACT_CROSSBOW_DRAW_UNLOADED, 476 | ACT_GAUSS_SPINUP, 477 | ACT_GAUSS_SPINCYCLE, 478 | ACT_VM_PRIMARYATTACK_SILENCED, 479 | ACT_VM_RELOAD_SILENCED, 480 | ACT_VM_DRYFIRE_SILENCED, 481 | ACT_VM_IDLE_SILENCED, 482 | ACT_VM_DRAW_SILENCED, 483 | ACT_VM_IDLE_EMPTY_LEFT, 484 | ACT_VM_DRYFIRE_LEFT, 485 | ACT_VM_IS_DRAW, 486 | ACT_VM_IS_HOLSTER, 487 | ACT_VM_IS_IDLE, 488 | ACT_VM_IS_PRIMARYATTACK, 489 | ACT_PLAYER_IDLE_FIRE, 490 | ACT_PLAYER_CROUCH_FIRE, 491 | ACT_PLAYER_CROUCH_WALK_FIRE, 492 | ACT_PLAYER_WALK_FIRE, 493 | ACT_PLAYER_RUN_FIRE, 494 | ACT_IDLETORUN, 495 | ACT_RUNTOIDLE, 496 | ACT_VM_DRAW_DEPLOYED, 497 | ACT_HL2MP_IDLE_MELEE, 498 | ACT_HL2MP_RUN_MELEE, 499 | ACT_HL2MP_IDLE_CROUCH_MELEE, 500 | ACT_HL2MP_WALK_CROUCH_MELEE, 501 | ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE, 502 | ACT_HL2MP_GESTURE_RELOAD_MELEE, 503 | ACT_HL2MP_JUMP_MELEE, 504 | ACT_VM_SHRIEK, 505 | ACT_VM_VOMIT, 506 | ACT_VM_COUGH, 507 | ACT_VM_LUNGE, 508 | ACT_VM_PUMMEL_ATTACK, 509 | ACT_VM_IDLE2REV, 510 | ACT_VM_REV2IDLE, 511 | ACT_IDLE_INJURED, 512 | ACT_IDLE_INCAP, 513 | ACT_WALK_INJURED, 514 | ACT_RUN_INJURED, 515 | ACT_IDLE_CALM, 516 | ACT_WALK_CALM, 517 | ACT_RUN_CALM, 518 | ACT_JUMP_SHOTGUN, 519 | ACT_JUMP_RIFLE, 520 | ACT_JUMP_SMG, 521 | ACT_JUMP_PISTOL, 522 | ACT_JUMP_DUAL_PISTOL, 523 | ACT_JUMP_ITEM, 524 | ACT_TERROR_HIT_BY_TANKPUNCH, 525 | ACT_TERROR_IDLE_FALL_FROM_TANKPUNCH, 526 | ACT_TERROR_TANKPUNCH_LAND, 527 | ACT_TERROR_HIT_BY_CHARGER, 528 | ACT_TERROR_IDLE_FALL_FROM_CHARGERHIT, 529 | ACT_TERROR_CHARGERHIT_LAND_SLOW, 530 | ACT_TERROR_CHARGER_PUMMELED, 531 | ACT_TERROR_CARRIED, 532 | ACT_TERROR_SLAMMED_WALL, 533 | ACT_TERROR_SLAMMED_GROUND, 534 | ACT_TERROR_CHARGER_POUNDED_NORTH, 535 | ACT_TERROR_CHARGER_POUNDED_UP, 536 | ACT_TERROR_CHARGER_POUNDED_INCAP, 537 | ACT_TERROR_CHARGER_POUNDED_DOWN, 538 | ACT_TERROR_CHARGER_PUMMEL, 539 | ACT_TERROR_SLAM_GROUND, 540 | ACT_TERROR_CHARGER_POUND_NORTH, 541 | ACT_TERROR_CHARGER_POUND_UP, 542 | ACT_TERROR_CHARGER_POUND_DOWN_PRODUCER, 543 | ACT_TERROR_CHARGER_POUND_DOWN_COACH, 544 | ACT_TERROR_CHARGER_POUND_DOWN, 545 | ACT_TERROR_PUMMELED_LOOP, 546 | ACT_TERROR_SPITTER_SPIT, 547 | ACT_TERROR_HEAL_SELF, 548 | ACT_TERROR_HEAL_FRIEND, 549 | ACT_TERROR_HEAL_INCAPACITATED, 550 | ACT_TERROR_CROUCH_HEAL_SELF, 551 | ACT_TERROR_CROUCH_HEAL_FRIEND, 552 | ACT_TERROR_CROUCH_HEAL_INCAPACITATED, 553 | ACT_TERROR_HEAL_INCAPACITATED_ABOVE, 554 | ACT_TERROR_CROUCH_HEAL_INCAPACITATED_ABOVE, 555 | ACT_TERROR_USE_PILLS, 556 | ACT_TERROR_USE_ADRENALINE, 557 | ACT_TERROR_USE_ADRENALINE_CROUCHING, 558 | ACT_TERROR_USE_DEFIBRILLATOR, 559 | ACT_TERROR_CROUCH_USE_DEFIBRILLATOR, 560 | ACT_TERROR_REVIVE_FROM_DEATH, 561 | ACT_TERROR_DEFIBRILLATOR_SHOCK, 562 | ACT_TERROR_USE_UPGRADEPACK, 563 | ACT_TERROR_CROUCH_USE_UPGRADEPACK, 564 | ACT_TERROR_USE_GAS_CAN, 565 | ACT_TERROR_USE_COLA, 566 | ACT_TERROR_IDLE_NEUTRAL, 567 | ACT_TERROR_IDLE_ALERT, 568 | ACT_TERROR_IDLE_INTENSE, 569 | ACT_TERROR_IDLE_ALERT_INJURED_AHEAD, 570 | ACT_TERROR_IDLE_ALERT_AHEAD, 571 | ACT_TERROR_IDLE_ALERT_INJURED_BEHIND, 572 | ACT_TERROR_IDLE_ALERT_BEHIND, 573 | ACT_TERROR_IDLE_ALERT_INJURED_LEFT, 574 | ACT_TERROR_IDLE_ALERT_LEFT, 575 | ACT_TERROR_IDLE_ALERT_INJURED_RIGHT, 576 | ACT_TERROR_IDLE_ALERT_RIGHT, 577 | ACT_TERROR_IDLE_ACQUIRE, 578 | ACT_TERROR_LEAN_FORWARD_IDLE, 579 | ACT_TERROR_LEAN_BACKWARD_IDLE, 580 | ACT_TERROR_LEAN_LEFTWARD_IDLE, 581 | ACT_TERROR_LEAN_RIGHTWARD_IDLE, 582 | ACT_TERROR_FIDGET, 583 | ACT_TERROR_NEUTRAL_TO_ALERT, 584 | ACT_TERROR_ALERT_TO_NEUTRAL, 585 | ACT_TERROR_FACE_LEFT_NEUTRAL, 586 | ACT_TERROR_FACE_LEFT_ALERT, 587 | ACT_TERROR_FACE_LEFT_INTENSE, 588 | ACT_TERROR_FACE_RIGHT_NEUTRAL, 589 | ACT_TERROR_FACE_RIGHT_ALERT, 590 | ACT_TERROR_FACE_RIGHT_INTENSE, 591 | ACT_TERROR_ABOUT_FACE_NEUTRAL, 592 | ACT_TERROR_ABOUT_FACE_ALERT, 593 | ACT_TERROR_ABOUT_FACE_INTENSE, 594 | ACT_TERROR_SHAMBLE, 595 | ACT_TERROR_WALK_NEUTRAL, 596 | ACT_TERROR_WALK_ALERT, 597 | ACT_TERROR_WALK_INTENSE, 598 | ACT_TERROR_RUN_NEUTRAL, 599 | ACT_TERROR_RUN_ALERT, 600 | ACT_TERROR_RUN_INTENSE, 601 | ACT_TERROR_RUN_ON_FIRE_INTENSE, 602 | ACT_TERROR_RUN_INTENSE_TO_STAND_ALERT, 603 | ACT_TERROR_CROUCH_IDLE_NEUTRAL, 604 | ACT_TERROR_CROUCH_IDLE_ALERT, 605 | ACT_TERROR_CROUCH_IDLE_INTENSE, 606 | ACT_TERROR_CROUCH_WALK_NEUTRAL, 607 | ACT_TERROR_CROUCH_WALK_ALERT, 608 | ACT_TERROR_CROUCH_WALK_INTENSE, 609 | ACT_TERROR_CROUCH_RUN_NEUTRAL, 610 | ACT_TERROR_CROUCH_RUN_ALERT, 611 | ACT_TERROR_CROUCH_RUN_INTENSE, 612 | ACT_TERROR_CRAWL_RUN, 613 | ACT_TERROR_IDLE_ON_FIRE, 614 | ACT_TERROR_WALK_ON_FIRE, 615 | ACT_TERROR_RUN_ON_FIRE, 616 | ACT_TERROR_ATTACK, 617 | ACT_TERROR_ATTACK_CONTINUOUSLY, 618 | ACT_TERROR_ATTACK_LOW, 619 | ACT_TERROR_ATTACK_LOW_CONTINUOUSLY, 620 | ACT_TERROR_ATTACK_DOOR, 621 | ACT_TERROR_ATTACK_DOOR_CONTINUOUSLY, 622 | ACT_TERROR_UNABLE_TO_REACH_TARGET, 623 | ACT_TERROR_REACH_THROUGH_DOOR, 624 | ACT_TERROR_SHOVED_FORWARD, 625 | ACT_TERROR_SHOVED_BACKWARD, 626 | ACT_TERROR_SHOVED_LEFTWARD, 627 | ACT_TERROR_SHOVED_RIGHTWARD, 628 | ACT_TERROR_SHOVED_FORWARD_CHAINSAW, 629 | ACT_TERROR_SHOVED_BACKWARD_CHAINSAW, 630 | ACT_TERROR_SHOVED_LEFTWARD_CHAINSAW, 631 | ACT_TERROR_SHOVED_RIGHTWARD_CHAINSAW, 632 | ACT_TERROR_SHOVED_FORWARD_BAT, 633 | ACT_TERROR_SHOVED_BACKWARD_BAT, 634 | ACT_TERROR_SHOVED_LEFTWARD_BAT, 635 | ACT_TERROR_SHOVED_RIGHTWARD_BAT, 636 | ACT_TERROR_SHOVED_FORWARD_MELEE, 637 | ACT_TERROR_SHOVED_BACKWARD_MELEE, 638 | ACT_TERROR_SHOVED_LEFTWARD_MELEE, 639 | ACT_TERROR_SHOVED_RIGHTWARD_MELEE, 640 | ACT_TERROR_SHOVED_BACKWARD_INTO_WALL, 641 | ACT_TERROR_SHOVED_FORWARD_INTO_WALL, 642 | ACT_TERROR_SHOVED_LEFTWARD_INTO_WALL, 643 | ACT_TERROR_SHOVED_RIGHTWARD_INTO_WALL, 644 | ACT_TERROR_SHOVED_BACKWARD_FROM_SIT, 645 | ACT_TERROR_SHOVED_RIGHTWARD_FROM_SIT, 646 | ACT_TERROR_SHOVED_LEFTWARD_FROM_SIT, 647 | ACT_TERROR_TUGGED_FORWARD, 648 | ACT_TERROR_TUGGED_BACKWARD, 649 | ACT_TERROR_TUGGED_LEFTWARD, 650 | ACT_TERROR_TUGGED_RIGHTWARD, 651 | ACT_TERROR_SIT_IDLE, 652 | ACT_TERROR_SIT_FROM_STAND, 653 | ACT_TERROR_SIT_TO_STAND, 654 | ACT_TERROR_SIT_TO_STAND_ALERT, 655 | ACT_TERROR_SIT_TO_LIE, 656 | ACT_TERROR_LIE_IDLE, 657 | ACT_TERROR_LIE_FROM_STAND, 658 | ACT_TERROR_LIE_TO_STAND, 659 | ACT_TERROR_LIE_TO_STAND_ALERT, 660 | ACT_TERROR_LIE_TO_SIT, 661 | ACT_TERROR_JUMP, 662 | ACT_TERROR_JUMP_UP_TO_LEDGE, 663 | ACT_TERROR_JUMP_DOWN_FROM_LEDGE, 664 | ACT_TERROR_JUMP_OVER_GAP, 665 | ACT_TERROR_JUMP_LANDING, 666 | ACT_TERROR_JUMP_LANDING_HARD, 667 | ACT_TERROR_JUMP_LANDING_NEUTRAL, 668 | ACT_TERROR_JUMP_LANDING_HARD_NEUTRAL, 669 | ACT_TERROR_FALL, 670 | ACT_TERROR_DIE_FROM_STAND, 671 | ACT_TERROR_DIE_FROM_CROUCH, 672 | ACT_TERROR_DIE_WHILE_RUNNING, 673 | ACT_TERROR_DIE_BACKWARD_FROM_SHOTGUN, 674 | ACT_TERROR_DIE_FORWARD_FROM_SHOTGUN, 675 | ACT_TERROR_DIE_LEFTWARD_FROM_SHOTGUN, 676 | ACT_TERROR_DIE_RIGHTWARD_FROM_SHOTGUN, 677 | ACT_BLUDGEON_DEATH_BACK, 678 | ACT_BLUDGEON_DEATH_FORWARD, 679 | ACT_BLUDGEON_DEATH_LEFT, 680 | ACT_BLUDGEON_DEATH_RIGHT, 681 | ACT_SLICING_DEATH_BACK, 682 | ACT_SLICING_DEATH_FORWARD, 683 | ACT_SLICING_DEATH_LEFT, 684 | ACT_SLICING_DEATH_RIGHT, 685 | ACT_TERROR_WITCH_ANGRY, 686 | ACT_TERROR_WITCH_ANGRY_HIGH, 687 | ACT_TERROR_WITCH_IDLE, 688 | ACT_TERROR_WITCH_IDLE_PRE_RETREAT, 689 | ACT_TERROR_WITCH_RETREAT, 690 | ACT_TERROR_WITCH_KILL_DISPLAY, 691 | ACT_TERROR_WITCH_KILL_LOOP, 692 | ACT_TERROR_WITCH_WANDER_WALK, 693 | ACT_TERROR_WITCH_WANDER_IDLE, 694 | ACT_TERROR_WITCH_WANDER_ACQUIRE, 695 | ACT_TERROR_TUG, 696 | ACT_TERROR_FLINCH, 697 | ACT_TERROR_FLINCH_LEDGE, 698 | ACT_SECONDARYATTACK, 699 | ACT_TERROR_INCAP_CRAWL, 700 | ACT_TERROR_INCAP_TO_STAND, 701 | ACT_TERROR_INCAP_TO_CROUCH, 702 | ACT_TERROR_ITEM_PICKUP, 703 | ACT_IDLE_INCAP_PISTOL, 704 | ACT_IDLE_INCAP_ELITES, 705 | ACT_FALL, 706 | ACT_CALL_FOR_RESCUE, 707 | ACT_PUSH, 708 | ACT_IDLE_MINIGUN, 709 | ACT_PRIMARYATTACK_MINIGUN, 710 | ACT_GEST_HEAD_NOD, 711 | ACT_GEST_HEAD_YES, 712 | ACT_GEST_HEAD_NO, 713 | ACT_TERROR_LEDGE_CLIMB, 714 | ACT_TERROR_LEDGE_CLIMB_TO_CROUCH, 715 | ACT_TERROR_FALL_GRAB_LEDGE, 716 | ACT_TERROR_LEDGE_HANG_FIRM, 717 | ACT_TERROR_LEDGE_HANG_WEAK, 718 | ACT_TERROR_LEDGE_HANG_DANGLE, 719 | ACT_TERROR_IDLE_LADDER, 720 | ACT_TERROR_LADDER_DISMOUNT, 721 | ACT_TERROR_CLIMB_24_FROM_STAND, 722 | ACT_TERROR_CLIMB_36_FROM_STAND, 723 | ACT_TERROR_CLIMB_38_FROM_STAND, 724 | ACT_TERROR_CLIMB_48_FROM_STAND, 725 | ACT_TERROR_CLIMB_50_FROM_STAND, 726 | ACT_TERROR_CLIMB_60_FROM_STAND, 727 | ACT_TERROR_CLIMB_70_FROM_STAND, 728 | ACT_TERROR_CLIMB_72_FROM_STAND, 729 | ACT_TERROR_CLIMB_84_FROM_STAND, 730 | ACT_TERROR_CLIMB_96_FROM_STAND, 731 | ACT_TERROR_CLIMB_108_FROM_STAND, 732 | ACT_TERROR_CLIMB_115_FROM_STAND, 733 | ACT_TERROR_CLIMB_120_FROM_STAND, 734 | ACT_TERROR_CLIMB_130_FROM_STAND, 735 | ACT_TERROR_CLIMB_132_FROM_STAND, 736 | ACT_TERROR_CLIMB_144_FROM_STAND, 737 | ACT_TERROR_CLIMB_150_FROM_STAND, 738 | ACT_TERROR_CLIMB_156_FROM_STAND, 739 | ACT_TERROR_CLIMB_166_FROM_STAND, 740 | ACT_TERROR_CLIMB_168_FROM_STAND, 741 | ACT_TERROR_HUNTER_LUNGE_INTO_SURVIVOR, 742 | ACT_TERROR_HUNTER_LUNGE, 743 | ACT_TERROR_HUNTER_LUNGE_WHILE_RUNNING, 744 | ACT_TERROR_HUNTER_LANDING_HARD, 745 | ACT_TERROR_HUNTER_LUNGE_OFF_WALL_SPIN_RIGHT, 746 | ACT_TERROR_HUNTER_LUNGE_OFF_WALL_SPIN_LEFT, 747 | ACT_TERROR_HUNTER_LUNGE_OFF_WALL_BACK, 748 | ACT_TERROR_HUNTER_LUNGE_IDLE, 749 | ACT_TERROR_HUNTER_LUNGE_ONTO_WALL, 750 | ACT_TERROR_HUNTER_POUNCE, 751 | ACT_TERROR_HUNTER_POUNCE_IDLE, 752 | ACT_TERROR_SMOKER_PREPARE_TONGUE_LAUNCH, 753 | ACT_TERROR_SMOKER_SENDING_OUT_TONGUE, 754 | ACT_TERROR_SMOKER_SENDING_OUT_TONGUE_IDLE, 755 | ACT_TERROR_SMOKER_REELING_IN_TONGUE, 756 | ACT_TERROR_SMOKER_REELING_IN_TONGUE_IDLE, 757 | ACT_TERROR_SMOKER_CRITICAL_ATTACK, 758 | ACT_TERROR_SMOKER_CRITICAL_ATTACK_IDLE, 759 | ACT_TERROR_SMOKER_END_TONGUE_ATTACK, 760 | ACT_TERROR_RUN_LEAKER, 761 | ACT_TERROR_CROUCH_LEAKER, 762 | ACT_TERROR_CROUCHIDLE_LEAKER, 763 | ACT_TERROR_GUARD, 764 | ACT_HULK_THROW, 765 | ACT_TANK_OVERHEAD_THROW, 766 | ACT_HULK_ATTACK_LOW, 767 | ACT_TERROR_HUNTER_POUNCE_MELEE, 768 | ACT_TERROR_HUNTER_POUNCE_KNOCKOFF_L, 769 | ACT_TERROR_HUNTER_POUNCE_KNOCKOFF_R, 770 | ACT_TERROR_HUNTER_POUNCE_KNOCKOFF_BACKWARD, 771 | ACT_TERROR_HUNTER_POUNCE_KNOCKOFF_FORWARD, 772 | ACT_TERROR_CHARGER_CHARGE, 773 | ACT_IDLE_POUNCED, 774 | ACT_TERROR_POUNCED_TO_STAND, 775 | ACT_TERROR_INCAP_FROM_POUNCE, 776 | ACT_TERROR_INCAP_FROM_TONGUE, 777 | ACT_TERROR_IDLE_FALL_FROM_TONGUE, 778 | ACT_TERROR_HANGING_FROM_TONGUE, 779 | ACT_TERROR_HANGING_FROM_TONGUE_MALE, 780 | ACT_TERROR_HANGING_FROM_TONGUE_FEMALE, 781 | ACT_TERROR_STANDING_CHOKE_FROM_TONGUE, 782 | ACT_TERROR_DRAGGING_FROM_TONGUE, 783 | ACT_TERROR_DRAGGING_FROM_TONGUE_MALE, 784 | ACT_TERROR_DRAGGING_FROM_TONGUE_FEMALE, 785 | ACT_TERROR_DRAGGING_FROM_TONGUE_DEPLOY, 786 | ACT_TERROR_CHOKING_TONGUE_GROUND, 787 | ACT_TERROR_CHOKING_TONGUE_GROUND_MALE, 788 | ACT_TERROR_CHOKING_TONGUE_GROUND_FEMALE, 789 | ACT_TERROR_INCAP_FROM_TONGUE_GERMANY, 790 | ACT_TERROR_HANGING_FROM_TONGUE_GERMANY, 791 | ACT_TERROR_IDLE_FALL_FROM_TONGUE_GERMANY, 792 | ACT_TERROR_STANDING_CHOKE_FROM_TONGUE_GERMANY, 793 | ACT_TERROR_ATTACK_MOVING, 794 | ACT_TERROR_TANKROCK_TO_STAND, 795 | ACT_TERROR_HULK_VICTORY, 796 | ACT_TERROR_HULK_VICTORY_B, 797 | ACT_TERROR_RAGE_AT_ENEMY, 798 | ACT_TERROR_RAGE_AT_KNOCKDOWN, 799 | ACT_TERROR_SMASH_LEFT, 800 | ACT_TERROR_SMASH_RIGHT, 801 | ACT_TERROR_JOCKEY_RIDE, 802 | ACT_TERROR_JOCKEY_RIDDEN, 803 | ACT_VM_LUNGE_LAYER, 804 | ACT_VM_LUNGE_PUSH, 805 | ACT_VM_LUNGE_PUSH_LAYER, 806 | ACT_VM_LUNGE_OFFWALL, 807 | ACT_VM_LUNGE_OFFWALL_LAYER, 808 | ACT_VM_LUNGE_POUNCE, 809 | ACT_VM_LUNGE_POUNCE_LAYER, 810 | ACT_VM_POUNCE, 811 | ACT_VM_POUNCE_LAYER, 812 | ACT_VM_VOMIT_LAYER, 813 | ACT_VM_TONGUE, 814 | ACT_VM_TONGUE_LAYER, 815 | ACT_VM_BITE, 816 | ACT_VM_BITE_LAYER, 817 | ACT_VM_COUGH_LAYER, 818 | ACT_VM_FIDGET_LAYER, 819 | ACT_DOOR_OPEN, 820 | ACT_DOOR_OPENFAIL, 821 | ACT_DOOR_ANIMTOLOCK, 822 | ACT_DOOR_ANIMTOUNLOCK, 823 | ACT_VM_ITEMPICKUP_EXTEND, 824 | ACT_VM_ITEMPICKUP_EXTEND_LAYER, 825 | ACT_VM_ITEMPICKUP_LOOP, 826 | ACT_VM_ITEMPICKUP_LOOP_LAYER, 827 | ACT_VM_ITEMPICKUP_RETRACT, 828 | ACT_VM_ITEMPICKUP_RETRACT_LAYER, 829 | ACT_VM_HELPINGHAND_EXTEND, 830 | ACT_VM_HELPINGHAND_EXTEND_LAYER, 831 | ACT_VM_HELPINGHAND_LOOP, 832 | ACT_VM_HELPINGHAND_LOOP_LAYER, 833 | ACT_VM_HELPINGHAND_RETRACT, 834 | ACT_VM_HELPINGHAND_RETRACT_LAYER, 835 | ACT_VM_ITEMPICKUP_LOOP_PISTOL, 836 | ACT_VM_ITEMPICKUP_LOOP_PISTOL_LAYER, 837 | ACT_VM_ITEMPICKUP_EXTEND_PISTOL, 838 | ACT_VM_ITEMPICKUP_EXTEND_PISTOL_LAYER, 839 | ACT_VM_ITEMPICKUP_RETRACT_PISTOL, 840 | ACT_VM_ITEMPICKUP_RETRACT_PISTOL_LAYER, 841 | ACT_VM_HELPINGHAND_LOOP_PISTOL, 842 | ACT_VM_HELPINGHAND_LOOP_PISTOL_LAYER, 843 | ACT_VM_HELPINGHAND_EXTEND_PISTOL, 844 | ACT_VM_HELPINGHAND_EXTEND_PISTOL_LAYER, 845 | ACT_VM_HELPINGHAND_RETRACT_PISTOL, 846 | ACT_VM_HELPINGHAND_RETRACT_PISTOL_LAYER, 847 | ACT_VM_ITEMPICKUP_LOOP_DUAL_PISTOL, 848 | ACT_VM_ITEMPICKUP_LOOP_DUAL_PISTOL_LAYER, 849 | ACT_VM_ITEMPICKUP_EXTEND_DUAL_PISTOL, 850 | ACT_VM_ITEMPICKUP_EXTEND_DUAL_PISTOL_LAYER, 851 | ACT_VM_ITEMPICKUP_RETRACT_DUAL_PISTOL, 852 | ACT_VM_ITEMPICKUP_RETRACT_DUAL_PISTOL_LAYER, 853 | ACT_VM_HELPINGHAND_LOOP_DUAL_PISTOL, 854 | ACT_VM_HELPINGHAND_LOOP_DUAL_PISTOL_LAYER, 855 | ACT_VM_HELPINGHAND_EXTEND_DUAL_PISTOL, 856 | ACT_VM_HELPINGHAND_EXTEND_DUAL_PISTOL_LAYER, 857 | ACT_VM_HELPINGHAND_RETRACT_DUAL_PISTOL, 858 | ACT_VM_HELPINGHAND_RETRACT_DUAL_PISTOL_LAYER, 859 | ACT_VM_ITEMPICKUP_LOOP_RIFLE, 860 | ACT_VM_ITEMPICKUP_LOOP_RIFLE_LAYER, 861 | ACT_VM_ITEMPICKUP_EXTEND_RIFLE, 862 | ACT_VM_ITEMPICKUP_EXTEND_RIFLE_LAYER, 863 | ACT_VM_ITEMPICKUP_RETRACT_RIFLE, 864 | ACT_VM_ITEMPICKUP_RETRACT_RIFLE_LAYER, 865 | ACT_VM_HELPINGHAND_LOOP_RIFLE, 866 | ACT_VM_HELPINGHAND_LOOP_RIFLE_LAYER, 867 | ACT_VM_HELPINGHAND_EXTEND_RIFLE, 868 | ACT_VM_HELPINGHAND_EXTEND_RIFLE_LAYER, 869 | ACT_VM_HELPINGHAND_RETRACT_RIFLE, 870 | ACT_VM_HELPINGHAND_RETRACT_RIFLE_LAYER, 871 | ACT_VM_ITEMPICKUP_LOOP_SMG, 872 | ACT_VM_ITEMPICKUP_LOOP_SMG_LAYER, 873 | ACT_VM_ITEMPICKUP_EXTEND_SMG, 874 | ACT_VM_ITEMPICKUP_EXTEND_SMG_LAYER, 875 | ACT_VM_ITEMPICKUP_RETRACT_SMG, 876 | ACT_VM_ITEMPICKUP_RETRACT_SMG_LAYER, 877 | ACT_VM_HELPINGHAND_LOOP_SMG, 878 | ACT_VM_HELPINGHAND_LOOP_SMG_LAYER, 879 | ACT_VM_HELPINGHAND_EXTEND_SMG, 880 | ACT_VM_HELPINGHAND_EXTEND_SMG_LAYER, 881 | ACT_VM_HELPINGHAND_RETRACT_SMG, 882 | ACT_VM_HELPINGHAND_RETRACT_SMG_LAYER, 883 | ACT_VM_ITEMPICKUP_LOOP_SNIPER, 884 | ACT_VM_ITEMPICKUP_LOOP_SNIPER_LAYER, 885 | ACT_VM_ITEMPICKUP_EXTEND_SNIPER, 886 | ACT_VM_ITEMPICKUP_EXTEND_SNIPER_LAYER, 887 | ACT_VM_ITEMPICKUP_RETRACT_SNIPER, 888 | ACT_VM_ITEMPICKUP_RETRACT_SNIPER_LAYER, 889 | ACT_VM_HELPINGHAND_LOOP_SNIPER, 890 | ACT_VM_HELPINGHAND_LOOP_SNIPER_LAYER, 891 | ACT_VM_HELPINGHAND_EXTEND_SNIPER, 892 | ACT_VM_HELPINGHAND_EXTEND_SNIPER_LAYER, 893 | ACT_VM_HELPINGHAND_RETRACT_SNIPER, 894 | ACT_VM_HELPINGHAND_RETRACT_SNIPER_LAYER, 895 | ACT_VM_ITEMPICKUP_LOOP_PIPEBOMB, 896 | ACT_VM_ITEMPICKUP_LOOP_PIPEBOMB_LAYER, 897 | ACT_VM_ITEMPICKUP_EXTEND_PIPEBOMB, 898 | ACT_VM_ITEMPICKUP_EXTEND_PIPEBOMB_LAYER, 899 | ACT_VM_ITEMPICKUP_RETRACT_PIPEBOMB, 900 | ACT_VM_ITEMPICKUP_RETRACT_PIPEBOMB_LAYER, 901 | ACT_VM_HELPINGHAND_LOOP_PIPEBOMB, 902 | ACT_VM_HELPINGHAND_LOOP_PIPEBOMB_LAYER, 903 | ACT_VM_HELPINGHAND_EXTEND_PIPEBOMB, 904 | ACT_VM_HELPINGHAND_EXTEND_PIPEBOMB_LAYER, 905 | ACT_VM_HELPINGHAND_RETRACT_PIPEBOMB, 906 | ACT_VM_HELPINGHAND_RETRACT_PIPEBOMB_LAYER, 907 | ACT_VM_ITEMPICKUP_LOOP_MOLOTOV, 908 | ACT_VM_ITEMPICKUP_LOOP_MOLOTOV_LAYER, 909 | ACT_VM_ITEMPICKUP_EXTEND_MOLOTOV, 910 | ACT_VM_ITEMPICKUP_EXTEND_MOLOTOV_LAYER, 911 | ACT_VM_ITEMPICKUP_RETRACT_MOLOTOV, 912 | ACT_VM_ITEMPICKUP_RETRACT_MOLOTOV_LAYER, 913 | ACT_VM_HELPINGHAND_LOOP_MOLOTOV, 914 | ACT_VM_HELPINGHAND_LOOP_MOLOTOV_LAYER, 915 | ACT_VM_HELPINGHAND_EXTEND_MOLOTOV, 916 | ACT_VM_HELPINGHAND_EXTEND_MOLOTOV_LAYER, 917 | ACT_VM_HELPINGHAND_RETRACT_MOLOTOV, 918 | ACT_VM_HELPINGHAND_RETRACT_MOLOTOV_LAYER, 919 | ACT_VM_ITEMPICKUP_LOOP_MEDKIT, 920 | ACT_VM_ITEMPICKUP_LOOP_MEDKIT_LAYER, 921 | ACT_VM_ITEMPICKUP_EXTEND_MEDKIT, 922 | ACT_VM_ITEMPICKUP_EXTEND_MEDKIT_LAYER, 923 | ACT_VM_ITEMPICKUP_RETRACT_MEDKIT, 924 | ACT_VM_ITEMPICKUP_RETRACT_MEDKIT_LAYER, 925 | ACT_VM_HELPINGHAND_LOOP_MEDKIT, 926 | ACT_VM_HELPINGHAND_LOOP_MEDKIT_LAYER, 927 | ACT_VM_HELPINGHAND_EXTEND_MEDKIT, 928 | ACT_VM_HELPINGHAND_EXTEND_MEDKIT_LAYER, 929 | ACT_VM_HELPINGHAND_RETRACT_MEDKIT, 930 | ACT_VM_HELPINGHAND_RETRACT_MEDKIT_LAYER, 931 | ACT_VM_ITEMPICKUP_LOOP_PAINPILLS, 932 | ACT_VM_ITEMPICKUP_LOOP_PAINPILLS_LAYER, 933 | ACT_VM_ITEMPICKUP_EXTEND_PAINPILLS, 934 | ACT_VM_ITEMPICKUP_EXTEND_PAINPILLS_LAYER, 935 | ACT_VM_ITEMPICKUP_RETRACT_PAINPILLS, 936 | ACT_VM_ITEMPICKUP_RETRACT_PAINPILLS_LAYER, 937 | ACT_VM_HELPINGHAND_LOOP_PAINPILLS, 938 | ACT_VM_HELPINGHAND_LOOP_PAINPILLS_LAYER, 939 | ACT_VM_HELPINGHAND_EXTEND_PAINPILLS, 940 | ACT_VM_HELPINGHAND_EXTEND_PAINPILLS_LAYER, 941 | ACT_VM_HELPINGHAND_RETRACT_PAINPILLS, 942 | ACT_VM_HELPINGHAND_RETRACT_PAINPILLS_LAYER, 943 | ACT_VM_CANCEL, 944 | ACT_VM_CANCEL_LAYER, 945 | ACT_CROUCHIDLE_RIFLE, 946 | ACT_IDLE_INJURED_RIFLE, 947 | ACT_WALK_INJURED_RIFLE, 948 | ACT_RUN_INJURED_RIFLE, 949 | ACT_DEPLOY_RIFLE, 950 | ACT_PRIMARYATTACK_RIFLE, 951 | ACT_RELOAD_RIFLE, 952 | ACT_IDLE_CALM_RIFLE, 953 | ACT_WALK_CALM_RIFLE, 954 | ACT_RUN_CALM_RIFLE, 955 | ACT_MELEE_SWEEP_RIFLE_IDLE, 956 | ACT_MELEE_SHOVE_RIFLE_IDLE, 957 | ACT_MELEE_STRAIGHT_RIFLE_IDLE, 958 | ACT_MELEE_SWEEP_RIFLE_RUN, 959 | ACT_MELEE_SHOVE_RIFLE_RUN, 960 | ACT_MELEE_STRAIGHT_RIFLE_RUN, 961 | ACT_TERROR_PULLED_RUN_RIFLE, 962 | ACT_MELEE_STOMP_RIFLE_IDLE, 963 | ACT_MELEE_STOMP_RIFLE_WALK, 964 | ACT_IDLE_SHOTGUN, 965 | ACT_WALK_SHOTGUN, 966 | ACT_RUN_SHOTGUN, 967 | ACT_IDLE_CALM_SHOTGUN, 968 | ACT_CROUCHIDLE_SHOTGUN, 969 | ACT_RUN_CROUCH_SHOTGUN, 970 | ACT_DEPLOY_SHOTGUN, 971 | ACT_PRIMARYATTACK_SHOTGUN, 972 | ACT_RELOAD_SHOTGUN_START, 973 | ACT_RELOAD_SHOTGUN_LOOP, 974 | ACT_RELOAD_SHOTGUN_END, 975 | ACT_IDLE_PUMPSHOTGUN, 976 | ACT_CROUCHIDLE_PUMPSHOTGUN, 977 | ACT_IDLE_CALM_PUMPSHOTGUN, 978 | ACT_IDLE_INJURED_PUMPSHOTGUN, 979 | ACT_WALK_PUMPSHOTGUN, 980 | ACT_RUN_CROUCH_PUMPSHOTGUN, 981 | ACT_RUN_PUMPSHOTGUN, 982 | ACT_WALK_CALM_PUMPSHOTGUN, 983 | ACT_RUN_CALM_PUMPSHOTGUN, 984 | ACT_WALK_INJURED_PUMPSHOTGUN, 985 | ACT_RUN_INJURED_PUMPSHOTGUN, 986 | ACT_PRIMARYATTACK_PUMPSHOTGUN, 987 | ACT_RELOAD_PUMPSHOTGUN_START, 988 | ACT_RELOAD_PUMPSHOTGUN_LOOP, 989 | ACT_RELOAD_PUMPSHOTGUN_END, 990 | ACT_RELOAD_GRENADE_LAUNCHER, 991 | ACT_IDLE_GREN, 992 | ACT_CROUCHIDLE_GREN, 993 | ACT_IDLE_INJURED_GREN, 994 | ACT_RUN_GREN, 995 | ACT_WALK_GREN, 996 | ACT_RUN_CROUCH_GREN, 997 | ACT_DEPLOY_GREN, 998 | ACT_WALK_INJURED_GREN, 999 | ACT_RUN_INJURED_GREN, 1000 | ACT_PRIMARYATTACK_GREN1_IDLE, 1001 | ACT_PRIMARYATTACK_GREN2_IDLE, 1002 | ACT_PRIMARYATTACK_GREN1_RUN, 1003 | ACT_PRIMARYATTACK_GREN2_RUN, 1004 | ACT_IDLE_GREN_PULL_BACK, 1005 | ACT_CROUCHIDLE_GREN_PULL_BACK, 1006 | ACT_IDLE_INJURED_GREN_PULL_BACK, 1007 | ACT_RUN_GREN_PULL_BACK, 1008 | ACT_WALK_GREN_PULL_BACK, 1009 | ACT_RUN_CROUCH_GREN_PULL_BACK, 1010 | ACT_WALK_INJURED_GREN_PULL_BACK, 1011 | ACT_RUN_INJURED_GREN_PULL_BACK, 1012 | ACT_IDLE_SNIPER, 1013 | ACT_CROUCHIDLE_SNIPER, 1014 | ACT_IDLE_CALM_SNIPER, 1015 | ACT_IDLE_INJURED_SNIPER, 1016 | ACT_WALK_SNIPER, 1017 | ACT_RUN_CROUCH_SNIPER, 1018 | ACT_RUN_SNIPER, 1019 | ACT_WALK_CALM_SNIPER, 1020 | ACT_RUN_CALM_SNIPER, 1021 | ACT_WALK_INJURED_SNIPER, 1022 | ACT_RUN_INJURED_SNIPER, 1023 | ACT_IDLE_SNIPER_ZOOMED, 1024 | ACT_CROUCHIDLE_SNIPER_ZOOMED, 1025 | ACT_IDLE_INJURED_SNIPER_ZOOMED, 1026 | ACT_IDLE_SNIPER_MILITARY, 1027 | ACT_IDLE_SNIPER_MILITARYZOOMED, 1028 | ACT_CROUCHIDLE_SNIPER_MILITARY, 1029 | ACT_CROUCHIDLE_SNIPER_MILITARYZOOMED, 1030 | ACT_IDLE_CALM_SNIPER_MILITARY, 1031 | ACT_IDLE_INJURED_SNIPER_MILITARY, 1032 | ACT_IDLE_INJURED_SNIPER_MILITARYZOOMED, 1033 | ACT_RUN_CROUCH_SNIPER_MILITARY, 1034 | ACT_WALK_SNIPER_MILITARY, 1035 | ACT_RUN_SNIPER_MILITARY, 1036 | ACT_WALK_CALM_SNIPER_MILITARY, 1037 | ACT_RUN_CALM_SNIPER_MILITARY, 1038 | ACT_WALK_INJURED_SNIPER_MILITARY, 1039 | ACT_RUN_INJURED_SNIPER_MILITARY, 1040 | ACT_IDLE_SMG, 1041 | ACT_WALK_SMG, 1042 | ACT_RUN_SMG, 1043 | ACT_CROUCHIDLE_SMG, 1044 | ACT_RUN_CROUCH_SMG, 1045 | ACT_IDLE_INJURED_SMG, 1046 | ACT_WALK_INJURED_SMG, 1047 | ACT_RUN_INJURED_SMG, 1048 | ACT_IDLE_CALM_SMG, 1049 | ACT_WALK_CALM_SMG, 1050 | ACT_RUN_CALM_SMG, 1051 | ACT_PRIMARYATTACK_SMG, 1052 | ACT_RELOAD_SMG, 1053 | ACT_IDLE_FIRSTAIDKIT, 1054 | ACT_CROUCHIDLE_FIRSTAIDKIT, 1055 | ACT_IDLE_INJURED_FIRSTAIDKIT, 1056 | ACT_RUN_FIRSTAIDKIT, 1057 | ACT_WALK_FIRSTAIDKIT, 1058 | ACT_RUN_CROUCH_FIRSTAIDKIT, 1059 | ACT_WALK_INJURED_FIRSTAIDKIT, 1060 | ACT_RUN_INJURED_FIRSTAIDKIT, 1061 | ACT_MELEE_SWEEP_FIRSTAIDKIT, 1062 | ACT_MELEE_SWEEP_COLA, 1063 | ACT_MELEE_SWEEP_DEFIBRILLATOR, 1064 | ACT_MELEE_SWEEP_UPGRADE_PACK, 1065 | ACT_CROUCHIDLE_PISTOL, 1066 | ACT_RUN_CROUCH_PISTOL, 1067 | ACT_IDLE_INJURED_PISTOL, 1068 | ACT_WALK_INJURED_PISTOL, 1069 | ACT_RUN_INJURED_PISTOL, 1070 | ACT_DEPLOY_PISTOL, 1071 | ACT_PRIMARYATTACK_PISTOL, 1072 | ACT_IDLE_CALM_PISTOL, 1073 | ACT_WALK_CALM_PISTOL, 1074 | ACT_RUN_CALM_PISTOL, 1075 | ACT_IDLE_ELITES, 1076 | ACT_WALK_ELITES, 1077 | ACT_RUN_ELITES, 1078 | ACT_CROUCHIDLE_ELITES, 1079 | ACT_RUN_CROUCH_ELITES, 1080 | ACT_IDLE_INJURED_ELITES, 1081 | ACT_WALK_INJURED_ELITES, 1082 | ACT_RUN_INJURED_ELITES, 1083 | ACT_DEPLOY_ELITES, 1084 | ACT_PRIMARYATTACK_ELITES_R, 1085 | ACT_PRIMARYATTACK_ELITES_L, 1086 | ACT_IDLE_CALM_ELITES, 1087 | ACT_WALK_CALM_ELITES, 1088 | ACT_RUN_CALM_ELITES, 1089 | ACT_RELOAD_ELITES, 1090 | ACT_RELOAD_M4, 1091 | ACT_PRIMARYATTACK_XM1014, 1092 | ACT_PRIMARYATTACK_M3S90, 1093 | ACT_IDLE_GASCAN, 1094 | ACT_CROUCHIDLE_GASCAN, 1095 | ACT_IDLE_CALM_GASCAN, 1096 | ACT_IDLE_INJURED_GASCAN, 1097 | ACT_RUN_GASCAN, 1098 | ACT_WALK_GASCAN, 1099 | ACT_RUN_CROUCH_GASCAN, 1100 | ACT_RUN_INJURED_GASCAN, 1101 | ACT_JUMP_GASCAN, 1102 | ACT_MELEE_SWEEP_GASCAN, 1103 | ACT_IDLE_O2, 1104 | ACT_CROUCHIDLE_O2, 1105 | ACT_IDLE_CALM_O2, 1106 | ACT_IDLE_INJURED_O2, 1107 | ACT_RUN_O2, 1108 | ACT_WALK_O2, 1109 | ACT_RUN_CROUCH_O2, 1110 | ACT_RUN_INJURED_O2, 1111 | ACT_JUMP_O2, 1112 | ACT_MELEE_SWEEP_O2, 1113 | ACT_IDLE_GNOME, 1114 | ACT_CROUCHIDLE_GNOME, 1115 | ACT_IDLE_CALM_GNOME, 1116 | ACT_IDLE_INJURED_GNOME, 1117 | ACT_RUN_CROUCH_GNOME, 1118 | ACT_WALK_GNOME, 1119 | ACT_RUN_GNOME, 1120 | ACT_WALK_CALM_GNOME, 1121 | ACT_RUN_CALM_GNOME, 1122 | ACT_WALK_INJURED_GNOME, 1123 | ACT_RUN_INJURED_GNOME, 1124 | ACT_JUMP_GNOME, 1125 | ACT_MELEE_SWEEP_GNOME, 1126 | ACT_SHOOT_E2W_AXE, 1127 | ACT_SHOOT_E2W_IDLE_AXE, 1128 | ACT_SHOOT_W2E_AXE, 1129 | ACT_SHOOT_W2E_IDLE_AXE, 1130 | ACT_SHOOT_N2S_AXE, 1131 | ACT_SHOOT_N2S_IDLE_AXE, 1132 | ACT_SHOOT_S2N_AXE, 1133 | ACT_SHOOT_S2N_IDLE_AXE, 1134 | ACT_SHOOT_STRONG_AXE, 1135 | ACT_SHOOT_STRONG_IDLE_AXE, 1136 | ACT_SHOOT_SECONDARY_AXE, 1137 | ACT_SHOOT_SECONDARY_IDLE_AXE, 1138 | ACT_IDLE_AXE, 1139 | ACT_CROUCHIDLE_AXE, 1140 | ACT_IDLE_CALM_AXE, 1141 | ACT_IDLE_INJURED_AXE, 1142 | ACT_RUN_AXE, 1143 | ACT_WALK_AXE, 1144 | ACT_WALK_INJURED_AXE, 1145 | ACT_RUN_CROUCH_AXE, 1146 | ACT_RUN_INJURED_AXE, 1147 | ACT_JUMP_AXE, 1148 | ACT_SHOOT_E2W_BAT, 1149 | ACT_SHOOT_E2W_IDLE_BAT, 1150 | ACT_SHOOT_W2E_BAT, 1151 | ACT_SHOOT_W2E_IDLE_BAT, 1152 | ACT_SHOOT_N2S_BAT, 1153 | ACT_SHOOT_N2S_IDLE_BAT, 1154 | ACT_SHOOT_S2N_BAT, 1155 | ACT_SHOOT_S2N_IDLE_BAT, 1156 | ACT_SHOOT_STRONG_BAT, 1157 | ACT_SHOOT_STRONG_IDLE_BAT, 1158 | ACT_SHOOT_SECONDARY_BAT, 1159 | ACT_SHOOT_SECONDARY_IDLE_BAT, 1160 | ACT_IDLE_BAT, 1161 | ACT_CROUCHIDLE_BAT, 1162 | ACT_IDLE_CALM_BAT, 1163 | ACT_IDLE_INJURED_BAT, 1164 | ACT_RUN_BAT, 1165 | ACT_WALK_BAT, 1166 | ACT_WALK_INJURED_BAT, 1167 | ACT_RUN_CROUCH_BAT, 1168 | ACT_RUN_INJURED_BAT, 1169 | ACT_JUMP_BAT, 1170 | ACT_SHOOT_E2W_KATANA, 1171 | ACT_SHOOT_E2W_IDLE_KATANA, 1172 | ACT_SHOOT_W2E_KATANA, 1173 | ACT_SHOOT_W2E_IDLE_KATANA, 1174 | ACT_SHOOT_E2W_FRYINGPAN, 1175 | ACT_SHOOT_E2W_IDLE_FRYINGPAN, 1176 | ACT_SHOOT_W2E_FRYINGPAN, 1177 | ACT_SHOOT_W2E_IDLE_FRYINGPAN, 1178 | ACT_SHOOT_N2S_FRYINGPAN, 1179 | ACT_SHOOT_N2S_IDLE_FRYINGPAN, 1180 | ACT_SHOOT_S2N_FRYINGPAN, 1181 | ACT_SHOOT_S2N_IDLE_FRYINGPAN, 1182 | ACT_SHOOT_STRONG_FRYINGPAN, 1183 | ACT_SHOOT_STRONG_IDLE_FRYINGPAN, 1184 | ACT_SHOOT_SECONDARY_FRYINGPAN, 1185 | ACT_SHOOT_SECONDARY_IDLE_FRYINGPAN, 1186 | ACT_IDLE_FRYINGPAN, 1187 | ACT_CROUCHIDLE_FRYINGPAN, 1188 | ACT_IDLE_CALM_FRYINGPAN, 1189 | ACT_IDLE_INJURED_FRYINGPAN, 1190 | ACT_RUN_FRYINGPAN, 1191 | ACT_WALK_FRYINGPAN, 1192 | ACT_WALK_INJURED_FRYINGPAN, 1193 | ACT_RUN_CROUCH_FRYINGPAN, 1194 | ACT_RUN_INJURED_FRYINGPAN, 1195 | ACT_JUMP_FRYINGPAN, 1196 | ACT_SHOOT_E2W_GUITAR, 1197 | ACT_SHOOT_E2W_IDLE_GUITAR, 1198 | ACT_SHOOT_W2E_GUITAR, 1199 | ACT_SHOOT_W2E_IDLE_GUITAR, 1200 | ACT_SHOOT_N2S_GUITAR, 1201 | ACT_SHOOT_N2S_IDLE_GUITAR, 1202 | ACT_SHOOT_S2N_GUITAR, 1203 | ACT_SHOOT_S2N_IDLE_GUITAR, 1204 | ACT_SHOOT_STRONG_GUITAR, 1205 | ACT_SHOOT_STRONG_IDLE_GUITAR, 1206 | ACT_SHOOT_SECONDARY_GUITAR, 1207 | ACT_SHOOT_SECONDARY_IDLE_GUITAR, 1208 | ACT_IDLE_GUITAR, 1209 | ACT_CROUCHIDLE_GUITAR, 1210 | ACT_IDLE_CALM_GUITAR, 1211 | ACT_IDLE_INJURED_GUITAR, 1212 | ACT_RUN_GUITAR, 1213 | ACT_WALK_GUITAR, 1214 | ACT_WALK_INJURED_GUITAR, 1215 | ACT_RUN_CROUCH_GUITAR, 1216 | ACT_RUN_INJURED_GUITAR, 1217 | ACT_JUMP_GUITAR, 1218 | ACT_IDLE_CHAINSAW, 1219 | ACT_IDLE_ATTACK_CHAINSAW, 1220 | ACT_WALK_CHAINSAW, 1221 | ACT_RUN_CHAINSAW, 1222 | ACT_CROUCHIDLE_CHAINSAW, 1223 | ACT_IDLE_CALM_CHAINSAW, 1224 | ACT_IDLE_INJURED_CHAINSAW, 1225 | ACT_RUN_CALM_CHAINSAW, 1226 | ACT_WALK_CALM_CHAINSAW, 1227 | ACT_WALK_INJURED_CHAINSAW, 1228 | ACT_RUN_CROUCH_CHAINSAW, 1229 | ACT_RUN_INJURED_CHAINSAW, 1230 | ACT_JUMP_CHAINSAW, 1231 | ACT_MELEE_SWEEP_CHAINSAW, 1232 | ACT_PRIMARYATTACK_CHAINSAW, 1233 | ACT_DEPLOY_CHAINSAW, 1234 | ACT_TERROR_CHAINSAW_START, 1235 | ACT_SHOOT_W2E_CHAINSAW, 1236 | ACT_SHOOT_CHAINSAW, 1237 | ACT_CHAINSAW_STARTUP, 1238 | ACT_IDLE_GRENADELAUNCHER, 1239 | ACT_WALK_GRENADELAUNCHER, 1240 | ACT_RUN_GRENADELAUNCHER, 1241 | ACT_CROUCHIDLE_GRENADELAUNCHER, 1242 | ACT_IDLE_CALM_GRENADELAUNCHER, 1243 | ACT_IDLE_INJURED_GRENADELAUNCHER, 1244 | ACT_RUN_CALM_GRENADELAUNCHER, 1245 | ACT_WALK_CALM_GRENADELAUNCHER, 1246 | ACT_WALK_INJURED_GRENADELAUNCHER, 1247 | ACT_RUN_CROUCH_GRENADELAUNCHER, 1248 | ACT_RUN_INJURED_GRENADELAUNCHER, 1249 | ACT_JUMP_GRENADELAUNCHER, 1250 | ACT_MELEE_SWEEP_GRENADELAUNCHER, 1251 | ACT_PRIMARYATTACK_GRENADELAUNCHER, 1252 | ACT_DEPLOY_GRENADELAUNCHER, 1253 | ACT_VM_MELEE, 1254 | ACT_VM_SHOOT_LAYER, 1255 | ACT_VM_PRIMARYATTACK_LAYER, 1256 | ACT_VM_SECONDARYATTACK_LAYER, 1257 | ACT_VM_MELEE_LAYER, 1258 | ACT_VM_PICKUP_LAYER, 1259 | ACT_VM_PICKUP_CLIPIN, 1260 | ACT_VM_PICKUP_CLIPIN_LAYER, 1261 | ACT_VM_PICKUP_CHARGING, 1262 | ACT_VM_PICKUP_CHARGING_LAYER, 1263 | ACT_VM_PICKUP_FASSIST, 1264 | ACT_VM_PICKUP_FASSIST_LAYER, 1265 | ACT_VM_RELOAD_PUMP, 1266 | ACT_VM_RELOAD_PUMP_LAYER, 1267 | ACT_VM_RELOAD_LAYER, 1268 | ACT_VM_RELOAD_CLIPOUT, 1269 | ACT_VM_RELOAD_CLIPOUT_LAYER, 1270 | ACT_VM_RELOAD_CLIPIN, 1271 | ACT_VM_RELOAD_CLIPIN_LAYER, 1272 | ACT_VM_RELOAD_EMPTY_LAYER, 1273 | ACT_VM_RELOAD_EMPTY_CLIPOUT, 1274 | ACT_VM_RELOAD_EMPTY_CLIPOUT_LAYER, 1275 | ACT_VM_RELOAD_EMPTY_CLIPIN, 1276 | ACT_VM_RELOAD_EMPTY_CLIPIN_LAYER, 1277 | ACT_VM_RELOAD_EMPTY_CLIPIN2, 1278 | ACT_VM_RELOAD_EMPTY_CLIPIN2_LAYER, 1279 | ACT_VM_DEPLOY_LAYER, 1280 | ACT_VM_THROW_LAYER, 1281 | ACT_VM_PULLPIN_LAYER, 1282 | ACT_VM_IDLE_BAREHAND, 1283 | ACT_VM_DEPLOY_BAREHAND, 1284 | ACT_VM_DEPLOY_BAREHAND_LAYER, 1285 | ACT_VM_MELEE_BAREHAND, 1286 | ACT_VM_MELEE_BAREHAND_LAYER, 1287 | ACT_VM_ITEMPICKUP_EXTEND_BAREHAND, 1288 | ACT_VM_ITEMPICKUP_EXTEND_BAREHAND_LAYER, 1289 | ACT_VM_ITEMPICKUP_LOOP_BAREHAND, 1290 | ACT_VM_ITEMPICKUP_LOOP_BAREHAND_LAYER, 1291 | ACT_VM_ITEMPICKUP_RETRACT_BAREHAND, 1292 | ACT_VM_ITEMPICKUP_RETRACT_BAREHAND_LAYER, 1293 | ACT_VM_HELPINGHAND_EXTEND_BAREHAND, 1294 | ACT_VM_HELPINGHAND_EXTEND_BAREHAND_LAYER, 1295 | ACT_VM_HELPINGHAND_LOOP_BAREHAND, 1296 | ACT_VM_HELPINGHAND_LOOP_BAREHAND_LAYER, 1297 | ACT_VM_HELPINGHAND_RETRACT_BAREHAND, 1298 | ACT_VM_HELPINGHAND_RETRACT_BAREHAND_LAYER, 1299 | ACT_VM_IDLE_DUAL_PISTOL, 1300 | ACT_VM_DEPLOY_DUAL_PISTOL, 1301 | ACT_VM_DEPLOY_DUAL_PISTOL_LAYER, 1302 | ACT_VM_PRIMARYATTACK_DUAL_PISTOL, 1303 | ACT_VM_SHOOT_DUAL_PISTOL_LAYER, 1304 | ACT_VM_SECONDARYATTACK_DUAL_PISTOL, 1305 | ACT_VM_SECONDARYATTACK_DUAL_PISTOL_LAYER, 1306 | ACT_VM_RELOAD_DUAL_PISTOL, 1307 | ACT_VM_RELOAD_DUAL_PISTOL_LAYER, 1308 | ACT_VM_RELOAD_CLIPOUT_DUAL_PISTOL, 1309 | ACT_VM_RELOAD_CLIPOUT_DUAL_PISTOL_LAYER, 1310 | ACT_VM_RELOAD_CLIPIN_DUAL_PISTOL, 1311 | ACT_VM_RELOAD_CLIPIN_DUAL_PISTOL_LAYER, 1312 | ACT_VM_RELOAD_EMPTY_DUAL_PISTOL, 1313 | ACT_VM_RELOAD_EMPTY_DUAL_PISTOL_LAYER, 1314 | ACT_VM_RELOAD_EMPTY_CLIPOUT_DUAL_PISTOL, 1315 | ACT_VM_RELOAD_EMPTY_CLIPOUT_DUAL_PISTOL_LAYER, 1316 | ACT_VM_RELOAD_EMPTY_CLIPIN_DUAL_PISTOL, 1317 | ACT_VM_RELOAD_EMPTY_CLIPIN_DUAL_PISTOL_LAYER, 1318 | ACT_VM_RELOAD_EMPTY_CLIPIN2_DUAL_PISTOL, 1319 | ACT_VM_RELOAD_EMPTY_CLIPIN2_DUAL_PISTOL_LAYER, 1320 | ACT_VM_PICKUP_DUAL_PISTOL, 1321 | ACT_VM_PICKUP_DUAL_PISTOL_LAYER, 1322 | ACT_VM_PICKUP_CLIPIN_DUAL_PISTOL, 1323 | ACT_VM_PICKUP_CLIPIN_DUAL_PISTOL_LAYER, 1324 | ACT_VM_PICKUP_CHARGING_DUAL_PISTOL, 1325 | ACT_VM_PICKUP_CHARGING_DUAL_PISTOL_LAYER, 1326 | ACT_VM_MELEE_DUAL_PISTOL, 1327 | ACT_VM_MELEE_DUAL_PISTOL_LAYER, 1328 | ACT_VM_IDLE_PISTOL, 1329 | ACT_VM_DEPLOY_PISTOL, 1330 | ACT_VM_DEPLOY_PISTOL_LAYER, 1331 | ACT_VM_PRIMARYATTACK_PISTOL, 1332 | ACT_VM_SHOOT_PISTOL_LAYER, 1333 | ACT_VM_RELOAD_PISTOL, 1334 | ACT_VM_RELOAD_PISTOL_LAYER, 1335 | ACT_VM_RELOAD_CLIPOUT_PISTOL, 1336 | ACT_VM_RELOAD_CLIPOUT_PISTOL_LAYER, 1337 | ACT_VM_RELOAD_EMPTY_PISTOL, 1338 | ACT_VM_RELOAD_EMPTY_PISTOL_LAYER, 1339 | ACT_VM_RELOAD_EMPTY_CLIPOUT_PISTOL, 1340 | ACT_VM_RELOAD_EMPTY_CLIPOUT_PISTOL_LAYER, 1341 | ACT_VM_RELOAD_EMPTY_CLIPIN_PISTOL, 1342 | ACT_VM_RELOAD_EMPTY_CLIPIN_PISTOL_LAYER, 1343 | ACT_VM_MELEE_PISTOL, 1344 | ACT_VM_MELEE_PISTOL_LAYER, 1345 | ACT_VM_IDLE_RIFLE, 1346 | ACT_VM_PICKUP_RIFLE, 1347 | ACT_VM_PICKUP_RIFLE_LAYER, 1348 | ACT_VM_PICKUP_CLIPIN_RIFLE, 1349 | ACT_VM_PICKUP_CLIPIN_RIFLE_LAYER, 1350 | ACT_VM_PICKUP_CHARGING_RIFLE, 1351 | ACT_VM_PICKUP_CHARGING_RIFLE_LAYER, 1352 | ACT_VM_PICKUP_FASSIST_RIFLE, 1353 | ACT_VM_PICKUP_FASSIST_RIFLE_LAYER, 1354 | ACT_VM_DEPLOY_RIFLE, 1355 | ACT_VM_DEPLOY_RIFLE_LAYER, 1356 | ACT_VM_PRIMARYATTACK_RIFLE, 1357 | ACT_VM_SHOOT_RIFLE_LAYER, 1358 | ACT_VM_RELOAD_RIFLE, 1359 | ACT_VM_RELOAD_RIFLE_LAYER, 1360 | ACT_VM_RELOAD_CLIPOUT_RIFLE, 1361 | ACT_VM_RELOAD_CLIPOUT_RIFLE_LAYER, 1362 | ACT_VM_RELOAD_EMPTY_RIFLE, 1363 | ACT_VM_RELOAD_EMPTY_RIFLE_LAYER, 1364 | ACT_VM_RELOAD_EMPTY_CLIPOUT_RIFLE, 1365 | ACT_VM_RELOAD_EMPTY_CLIPOUT_RIFLE_LAYER, 1366 | ACT_VM_RELOAD_EMPTY_CLIPIN_RIFLE, 1367 | ACT_VM_RELOAD_EMPTY_CLIPIN_RIFLE_LAYER, 1368 | ACT_VM_MELEE_RIFLE, 1369 | ACT_VM_MELEE_RIFLE_LAYER, 1370 | ACT_VM_FIDGET_RIFLE_LAYER, 1371 | ACT_VM_IDLE_SMG, 1372 | ACT_VM_PICKUP_SMG, 1373 | ACT_VM_PICKUP_SMG_LAYER, 1374 | ACT_VM_PICKUP_CLIPIN_SMG, 1375 | ACT_VM_PICKUP_CLIPIN_SMG_LAYER, 1376 | ACT_VM_PICKUP_CHARGING_SMG, 1377 | ACT_VM_PICKUP_CHARGING_SMG_LAYER, 1378 | ACT_VM_DEPLOY_SMG, 1379 | ACT_VM_DEPLOY_SMG_LAYER, 1380 | ACT_VM_PRIMARYATTACK_SMG, 1381 | ACT_VM_SHOOT_SMG_LAYER, 1382 | ACT_VM_RELOAD_SMG, 1383 | ACT_VM_RELOAD_SMG_LAYER, 1384 | ACT_VM_RELOAD_CLIPOUT_SMG, 1385 | ACT_VM_RELOAD_CLIPOUT_SMG_LAYER, 1386 | ACT_VM_RELOAD_EMPTY_SMG, 1387 | ACT_VM_RELOAD_EMPTY_SMG_LAYER, 1388 | ACT_VM_RELOAD_EMPTY_CLIPOUT_SMG, 1389 | ACT_VM_RELOAD_EMPTY_CLIPOUT_SMG_LAYER, 1390 | ACT_VM_RELOAD_EMPTY_CLIPIN_SMG, 1391 | ACT_VM_RELOAD_EMPTY_CLIPIN_SMG_LAYER, 1392 | ACT_VM_MELEE_SMG, 1393 | ACT_VM_MELEE_SMG_LAYER, 1394 | ACT_VM_FIDGET_SMG_LAYER, 1395 | ACT_VM_IDLE_SNIPER, 1396 | ACT_VM_PICKUP_SNIPER, 1397 | ACT_VM_PICKUP_SNIPER_LAYER, 1398 | ACT_VM_PICKUP_CLIPIN_SNIPER, 1399 | ACT_VM_PICKUP_CLIPIN_SNIPER_LAYER, 1400 | ACT_VM_PICKUP_CHARGING_SNIPER, 1401 | ACT_VM_PICKUP_CHARGING_SNIPER_LAYER, 1402 | ACT_VM_DEPLOY_SNIPER, 1403 | ACT_VM_DEPLOY_SNIPER_LAYER, 1404 | ACT_VM_PRIMARYATTACK_SNIPER, 1405 | ACT_VM_SHOOT_SNIPER_LAYER, 1406 | ACT_VM_RELOAD_SNIPER, 1407 | ACT_VM_RELOAD_SNIPER_LAYER, 1408 | ACT_VM_RELOAD_CLIPOUT_SNIPER, 1409 | ACT_VM_RELOAD_CLIPOUT_SNIPER_LAYER, 1410 | ACT_VM_RELOAD_EMPTY_SNIPER, 1411 | ACT_VM_RELOAD_EMPTY_SNIPER_LAYER, 1412 | ACT_VM_RELOAD_EMPTY_CLIPOUT_SNIPER, 1413 | ACT_VM_RELOAD_EMPTY_CLIPOUT_SNIPER_LAYER, 1414 | ACT_VM_RELOAD_EMPTY_CLIPIN_SNIPER, 1415 | ACT_VM_RELOAD_EMPTY_CLIPIN_SNIPER_LAYER, 1416 | ACT_VM_MELEE_SNIPER, 1417 | ACT_VM_MELEE_SNIPER_LAYER, 1418 | ACT_VM_FIDGET_SNIPER_LAYER, 1419 | ACT_VM_RELOAD_LOOP, 1420 | ACT_VM_RELOAD_LOOP_LAYER, 1421 | ACT_VM_RELOAD_END, 1422 | ACT_VM_RELOAD_END_LAYER, 1423 | ACT_VM_IDLE_PIPEBOMB, 1424 | ACT_VM_DEPLOY_PIPEBOMB, 1425 | ACT_VM_DEPLOY_PIPEBOMB_LAYER, 1426 | ACT_VM_PULLPIN_PIPEBOMB, 1427 | ACT_VM_PULLPIN_PIPEBOMB_LAYER, 1428 | ACT_VM_THROW_PIPEBOMB, 1429 | ACT_VM_THROW_PIPEBOMB_LAYER, 1430 | ACT_VM_MELEE_PIPEBOMB, 1431 | ACT_VM_MELEE_PIPEBOMB_LAYER, 1432 | ACT_VM_IDLE_MOLOTOV, 1433 | ACT_VM_DEPLOY_MOLOTOV, 1434 | ACT_VM_DEPLOY_MOLOTOV_LAYER, 1435 | ACT_VM_PULLPIN_MOLOTOV, 1436 | ACT_VM_PULLPIN_MOLOTOV_LAYER, 1437 | ACT_VM_THROW_MOLOTOV, 1438 | ACT_VM_THROW_MOLOTOV_LAYER, 1439 | ACT_VM_MELEE_MOLOTOV, 1440 | ACT_VM_MELEE_MOLOTOV_LAYER, 1441 | ACT_VM_IDLE_PAINPILLS, 1442 | ACT_VM_DEPLOY_PAINPILLS, 1443 | ACT_VM_DEPLOY_PAINPILLS_LAYER, 1444 | ACT_VM_MELEE_PAINPILLS, 1445 | ACT_VM_MELEE_PAINPILLS_LAYER, 1446 | ACT_VM_USE_PAINPILLS, 1447 | ACT_VM_USE_PAINPILLS_LAYER, 1448 | ACT_VM_IDLE_MEDKIT, 1449 | ACT_VM_DEPLOY_MEDKIT, 1450 | ACT_VM_DEPLOY_MEDKIT_LAYER, 1451 | ACT_VM_MELEE_MEDKIT, 1452 | ACT_VM_MELEE_MEDKIT_LAYER, 1453 | ACT_VM_IDLE_GASCAN, 1454 | ACT_VM_DEPLOY_GASCAN, 1455 | ACT_VM_PULLPIN_GASCAN, 1456 | ACT_VM_THROW_GASCAN, 1457 | ACT_VM_MELEE_GASCAN, 1458 | ACT_VM_FIZZLE, 1459 | ACT_MP_STAND_IDLE, 1460 | ACT_MP_CROUCH_IDLE, 1461 | ACT_MP_CROUCH_DEPLOYED_IDLE, 1462 | ACT_MP_CROUCH_DEPLOYED, 1463 | ACT_MP_DEPLOYED_IDLE, 1464 | ACT_MP_RUN, 1465 | ACT_MP_WALK, 1466 | ACT_MP_AIRWALK, 1467 | ACT_MP_CROUCHWALK, 1468 | ACT_MP_SPRINT, 1469 | ACT_MP_JUMP, 1470 | ACT_MP_JUMP_START, 1471 | ACT_MP_JUMP_FLOAT, 1472 | ACT_MP_JUMP_LAND, 1473 | ACT_MP_DOUBLEJUMP, 1474 | ACT_MP_SWIM, 1475 | ACT_MP_DEPLOYED, 1476 | ACT_MP_SWIM_DEPLOYED, 1477 | ACT_MP_VCD, 1478 | ACT_MP_ATTACK_STAND_PRIMARYFIRE, 1479 | ACT_MP_ATTACK_STAND_PRIMARYFIRE_DEPLOYED, 1480 | ACT_MP_ATTACK_STAND_SECONDARYFIRE, 1481 | ACT_MP_ATTACK_STAND_GRENADE, 1482 | ACT_MP_ATTACK_CROUCH_PRIMARYFIRE, 1483 | ACT_MP_ATTACK_CROUCH_PRIMARYFIRE_DEPLOYED, 1484 | ACT_MP_ATTACK_CROUCH_SECONDARYFIRE, 1485 | ACT_MP_ATTACK_CROUCH_GRENADE, 1486 | ACT_MP_ATTACK_SWIM_PRIMARYFIRE, 1487 | ACT_MP_ATTACK_SWIM_SECONDARYFIRE, 1488 | ACT_MP_ATTACK_SWIM_GRENADE, 1489 | ACT_MP_ATTACK_AIRWALK_PRIMARYFIRE, 1490 | ACT_MP_ATTACK_AIRWALK_SECONDARYFIRE, 1491 | ACT_MP_ATTACK_AIRWALK_GRENADE, 1492 | ACT_MP_RELOAD_STAND, 1493 | ACT_MP_RELOAD_STAND_LOOP, 1494 | ACT_MP_RELOAD_STAND_END, 1495 | ACT_MP_RELOAD_CROUCH, 1496 | ACT_MP_RELOAD_CROUCH_LOOP, 1497 | ACT_MP_RELOAD_CROUCH_END, 1498 | ACT_MP_RELOAD_SWIM, 1499 | ACT_MP_RELOAD_SWIM_LOOP, 1500 | ACT_MP_RELOAD_SWIM_END, 1501 | ACT_MP_RELOAD_AIRWALK, 1502 | ACT_MP_RELOAD_AIRWALK_LOOP, 1503 | ACT_MP_RELOAD_AIRWALK_END, 1504 | ACT_MP_ATTACK_STAND_PREFIRE, 1505 | ACT_MP_ATTACK_STAND_POSTFIRE, 1506 | ACT_MP_ATTACK_STAND_STARTFIRE, 1507 | ACT_MP_ATTACK_CROUCH_PREFIRE, 1508 | ACT_MP_ATTACK_CROUCH_POSTFIRE, 1509 | ACT_MP_ATTACK_SWIM_PREFIRE, 1510 | ACT_MP_ATTACK_SWIM_POSTFIRE, 1511 | ACT_MP_STAND_PRIMARY, 1512 | ACT_MP_CROUCH_PRIMARY, 1513 | ACT_MP_RUN_PRIMARY, 1514 | ACT_MP_WALK_PRIMARY, 1515 | ACT_MP_AIRWALK_PRIMARY, 1516 | ACT_MP_CROUCHWALK_PRIMARY, 1517 | ACT_MP_JUMP_PRIMARY, 1518 | ACT_MP_JUMP_START_PRIMARY, 1519 | ACT_MP_JUMP_FLOAT_PRIMARY, 1520 | ACT_MP_JUMP_LAND_PRIMARY, 1521 | ACT_MP_SWIM_PRIMARY, 1522 | ACT_MP_DEPLOYED_PRIMARY, 1523 | ACT_MP_SWIM_DEPLOYED_PRIMARY, 1524 | ACT_MP_ATTACK_STAND_PRIMARY, 1525 | ACT_MP_ATTACK_STAND_PRIMARY_DEPLOYED, 1526 | ACT_MP_ATTACK_CROUCH_PRIMARY, 1527 | ACT_MP_ATTACK_CROUCH_PRIMARY_DEPLOYED, 1528 | ACT_MP_ATTACK_SWIM_PRIMARY, 1529 | ACT_MP_ATTACK_AIRWALK_PRIMARY, 1530 | ACT_MP_RELOAD_STAND_PRIMARY, 1531 | ACT_MP_RELOAD_STAND_PRIMARY_LOOP, 1532 | ACT_MP_RELOAD_STAND_PRIMARY_END, 1533 | ACT_MP_RELOAD_CROUCH_PRIMARY, 1534 | ACT_MP_RELOAD_CROUCH_PRIMARY_LOOP, 1535 | ACT_MP_RELOAD_CROUCH_PRIMARY_END, 1536 | ACT_MP_RELOAD_SWIM_PRIMARY, 1537 | ACT_MP_RELOAD_SWIM_PRIMARY_LOOP, 1538 | ACT_MP_RELOAD_SWIM_PRIMARY_END, 1539 | ACT_MP_RELOAD_AIRWALK_PRIMARY, 1540 | ACT_MP_RELOAD_AIRWALK_PRIMARY_LOOP, 1541 | ACT_MP_RELOAD_AIRWALK_PRIMARY_END, 1542 | ACT_MP_ATTACK_STAND_GRENADE_PRIMARY, 1543 | ACT_MP_ATTACK_CROUCH_GRENADE_PRIMARY, 1544 | ACT_MP_ATTACK_SWIM_GRENADE_PRIMARY, 1545 | ACT_MP_ATTACK_AIRWALK_GRENADE_PRIMARY, 1546 | ACT_MP_STAND_SECONDARY, 1547 | ACT_MP_CROUCH_SECONDARY, 1548 | ACT_MP_RUN_SECONDARY, 1549 | ACT_MP_WALK_SECONDARY, 1550 | ACT_MP_AIRWALK_SECONDARY, 1551 | ACT_MP_CROUCHWALK_SECONDARY, 1552 | ACT_MP_JUMP_SECONDARY, 1553 | ACT_MP_JUMP_START_SECONDARY, 1554 | ACT_MP_JUMP_FLOAT_SECONDARY, 1555 | ACT_MP_JUMP_LAND_SECONDARY, 1556 | ACT_MP_SWIM_SECONDARY, 1557 | ACT_MP_ATTACK_STAND_SECONDARY, 1558 | ACT_MP_ATTACK_CROUCH_SECONDARY, 1559 | ACT_MP_ATTACK_SWIM_SECONDARY, 1560 | ACT_MP_ATTACK_AIRWALK_SECONDARY, 1561 | ACT_MP_RELOAD_STAND_SECONDARY, 1562 | ACT_MP_RELOAD_STAND_SECONDARY_LOOP, 1563 | ACT_MP_RELOAD_STAND_SECONDARY_END, 1564 | ACT_MP_RELOAD_CROUCH_SECONDARY, 1565 | ACT_MP_RELOAD_CROUCH_SECONDARY_LOOP, 1566 | ACT_MP_RELOAD_CROUCH_SECONDARY_END, 1567 | ACT_MP_RELOAD_SWIM_SECONDARY, 1568 | ACT_MP_RELOAD_SWIM_SECONDARY_LOOP, 1569 | ACT_MP_RELOAD_SWIM_SECONDARY_END, 1570 | ACT_MP_RELOAD_AIRWALK_SECONDARY, 1571 | ACT_MP_RELOAD_AIRWALK_SECONDARY_LOOP, 1572 | ACT_MP_RELOAD_AIRWALK_SECONDARY_END, 1573 | ACT_MP_ATTACK_STAND_GRENADE_SECONDARY, 1574 | ACT_MP_ATTACK_CROUCH_GRENADE_SECONDARY, 1575 | ACT_MP_ATTACK_SWIM_GRENADE_SECONDARY, 1576 | ACT_MP_ATTACK_AIRWALK_GRENADE_SECONDARY, 1577 | ACT_MP_STAND_MELEE, 1578 | ACT_MP_CROUCH_MELEE, 1579 | ACT_MP_RUN_MELEE, 1580 | ACT_MP_WALK_MELEE, 1581 | ACT_MP_AIRWALK_MELEE, 1582 | ACT_MP_CROUCHWALK_MELEE, 1583 | ACT_MP_JUMP_MELEE, 1584 | ACT_MP_JUMP_START_MELEE, 1585 | ACT_MP_JUMP_FLOAT_MELEE, 1586 | ACT_MP_JUMP_LAND_MELEE, 1587 | ACT_MP_SWIM_MELEE, 1588 | ACT_MP_ATTACK_STAND_MELEE, 1589 | ACT_MP_ATTACK_STAND_MELEE_SECONDARY, 1590 | ACT_MP_ATTACK_CROUCH_MELEE, 1591 | ACT_MP_ATTACK_CROUCH_MELEE_SECONDARY, 1592 | ACT_MP_ATTACK_SWIM_MELEE, 1593 | ACT_MP_ATTACK_AIRWALK_MELEE, 1594 | ACT_MP_ATTACK_STAND_GRENADE_MELEE, 1595 | ACT_MP_ATTACK_CROUCH_GRENADE_MELEE, 1596 | ACT_MP_ATTACK_SWIM_GRENADE_MELEE, 1597 | ACT_MP_ATTACK_AIRWALK_GRENADE_MELEE, 1598 | ACT_MP_STAND_ITEM1, 1599 | ACT_MP_CROUCH_ITEM1, 1600 | ACT_MP_RUN_ITEM1, 1601 | ACT_MP_WALK_ITEM1, 1602 | ACT_MP_AIRWALK_ITEM1, 1603 | ACT_MP_CROUCHWALK_ITEM1, 1604 | ACT_MP_JUMP_ITEM1, 1605 | ACT_MP_JUMP_START_ITEM1, 1606 | ACT_MP_JUMP_FLOAT_ITEM1, 1607 | ACT_MP_JUMP_LAND_ITEM1, 1608 | ACT_MP_SWIM_ITEM1, 1609 | ACT_MP_ATTACK_STAND_ITEM1, 1610 | ACT_MP_ATTACK_STAND_ITEM1_SECONDARY, 1611 | ACT_MP_ATTACK_CROUCH_ITEM1, 1612 | ACT_MP_ATTACK_CROUCH_ITEM1_SECONDARY, 1613 | ACT_MP_ATTACK_SWIM_ITEM1, 1614 | ACT_MP_ATTACK_AIRWALK_ITEM1, 1615 | ACT_MP_STAND_ITEM2, 1616 | ACT_MP_CROUCH_ITEM2, 1617 | ACT_MP_RUN_ITEM2, 1618 | ACT_MP_WALK_ITEM2, 1619 | ACT_MP_AIRWALK_ITEM2, 1620 | ACT_MP_CROUCHWALK_ITEM2, 1621 | ACT_MP_JUMP_ITEM2, 1622 | ACT_MP_JUMP_START_ITEM2, 1623 | ACT_MP_JUMP_FLOAT_ITEM2, 1624 | ACT_MP_JUMP_LAND_ITEM2, 1625 | ACT_MP_SWIM_ITEM2, 1626 | ACT_MP_ATTACK_STAND_ITEM2, 1627 | ACT_MP_ATTACK_STAND_ITEM2_SECONDARY, 1628 | ACT_MP_ATTACK_CROUCH_ITEM2, 1629 | ACT_MP_ATTACK_CROUCH_ITEM2_SECONDARY, 1630 | ACT_MP_ATTACK_SWIM_ITEM2, 1631 | ACT_MP_ATTACK_AIRWALK_ITEM2, 1632 | ACT_MP_GESTURE_FLINCH, 1633 | ACT_MP_GESTURE_FLINCH_PRIMARY, 1634 | ACT_MP_GESTURE_FLINCH_SECONDARY, 1635 | ACT_MP_GESTURE_FLINCH_MELEE, 1636 | ACT_MP_GESTURE_FLINCH_ITEM1, 1637 | ACT_MP_GESTURE_FLINCH_ITEM2, 1638 | ACT_MP_GESTURE_FLINCH_HEAD, 1639 | ACT_MP_GESTURE_FLINCH_CHEST, 1640 | ACT_MP_GESTURE_FLINCH_STOMACH, 1641 | ACT_MP_GESTURE_FLINCH_LEFTARM, 1642 | ACT_MP_GESTURE_FLINCH_RIGHTARM, 1643 | ACT_MP_GESTURE_FLINCH_LEFTLEG, 1644 | ACT_MP_GESTURE_FLINCH_RIGHTLEG, 1645 | ACT_MP_GRENADE1_DRAW, 1646 | ACT_MP_GRENADE1_IDLE, 1647 | ACT_MP_GRENADE1_ATTACK, 1648 | ACT_MP_GRENADE2_DRAW, 1649 | ACT_MP_GRENADE2_IDLE, 1650 | ACT_MP_GRENADE2_ATTACK, 1651 | ACT_MP_PRIMARY_GRENADE1_DRAW, 1652 | ACT_MP_PRIMARY_GRENADE1_IDLE, 1653 | ACT_MP_PRIMARY_GRENADE1_ATTACK, 1654 | ACT_MP_PRIMARY_GRENADE2_DRAW, 1655 | ACT_MP_PRIMARY_GRENADE2_IDLE, 1656 | ACT_MP_PRIMARY_GRENADE2_ATTACK, 1657 | ACT_MP_SECONDARY_GRENADE1_DRAW, 1658 | ACT_MP_SECONDARY_GRENADE1_IDLE, 1659 | ACT_MP_SECONDARY_GRENADE1_ATTACK, 1660 | ACT_MP_SECONDARY_GRENADE2_DRAW, 1661 | ACT_MP_SECONDARY_GRENADE2_IDLE, 1662 | ACT_MP_SECONDARY_GRENADE2_ATTACK, 1663 | ACT_MP_MELEE_GRENADE1_DRAW, 1664 | ACT_MP_MELEE_GRENADE1_IDLE, 1665 | ACT_MP_MELEE_GRENADE1_ATTACK, 1666 | ACT_MP_MELEE_GRENADE2_DRAW, 1667 | ACT_MP_MELEE_GRENADE2_IDLE, 1668 | ACT_MP_MELEE_GRENADE2_ATTACK, 1669 | ACT_MP_ITEM1_GRENADE1_DRAW, 1670 | ACT_MP_ITEM1_GRENADE1_IDLE, 1671 | ACT_MP_ITEM1_GRENADE1_ATTACK, 1672 | ACT_UNKNOWN_1669, 1673 | ACT_MP_ITEM1_GRENADE2_IDLE, 1674 | ACT_MP_ITEM1_GRENADE2_ATTACK, 1675 | ACT_MP_ITEM2_GRENADE1_DRAW, 1676 | ACT_MP_ITEM2_GRENADE1_IDLE, 1677 | ACT_MP_ITEM2_GRENADE1_ATTACK, 1678 | ACT_MP_ITEM2_GRENADE2_DRAW, 1679 | ACT_MP_ITEM2_GRENADE2_IDLE, 1680 | ACT_MP_ITEM2_GRENADE2_ATTACK, 1681 | ACT_MP_STAND_BUILDING, 1682 | ACT_MP_CROUCH_BUILDING, 1683 | ACT_MP_RUN_BUILDING, 1684 | ACT_MP_WALK_BUILDING, 1685 | ACT_MP_AIRWALK_BUILDING, 1686 | ACT_MP_CROUCHWALK_BUILDING, 1687 | ACT_MP_JUMP_BUILDING, 1688 | ACT_MP_JUMP_START_BUILDING, 1689 | ACT_MP_JUMP_FLOAT_BUILDING, 1690 | ACT_MP_JUMP_LAND_BUILDING, 1691 | ACT_MP_SWIM_BUILDING, 1692 | ACT_MP_ATTACK_STAND_BUILDING, 1693 | ACT_MP_ATTACK_CROUCH_BUILDING, 1694 | ACT_MP_ATTACK_SWIM_BUILDING, 1695 | ACT_MP_ATTACK_AIRWALK_BUILDING, 1696 | ACT_MP_ATTACK_STAND_GRENADE_BUILDING, 1697 | ACT_MP_ATTACK_CROUCH_GRENADE_BUILDING, 1698 | ACT_MP_ATTACK_SWIM_GRENADE_BUILDING, 1699 | ACT_MP_ATTACK_AIRWALK_GRENADE_BUILDING, 1700 | ACT_MP_STAND_PDA, 1701 | ACT_MP_CROUCH_PDA, 1702 | ACT_MP_RUN_PDA, 1703 | ACT_MP_WALK_PDA, 1704 | ACT_MP_AIRWALK_PDA, 1705 | ACT_MP_CROUCHWALK_PDA, 1706 | ACT_MP_JUMP_PDA, 1707 | ACT_MP_JUMP_START_PDA, 1708 | ACT_MP_JUMP_FLOAT_PDA, 1709 | ACT_MP_JUMP_LAND_PDA, 1710 | ACT_MP_SWIM_PDA, 1711 | ACT_MP_ATTACK_STAND_PDA, 1712 | ACT_MP_ATTACK_SWIM_PDA, 1713 | ACT_MP_GESTURE_VC_HANDMOUTH, 1714 | ACT_MP_GESTURE_VC_FINGERPOINT, 1715 | ACT_MP_GESTURE_VC_FISTPUMP, 1716 | ACT_MP_GESTURE_VC_THUMBSUP, 1717 | ACT_MP_GESTURE_VC_NODYES, 1718 | ACT_MP_GESTURE_VC_NODNO, 1719 | ACT_MP_GESTURE_VC_HANDMOUTH_PRIMARY, 1720 | ACT_MP_GESTURE_VC_FINGERPOINT_PRIMARY, 1721 | ACT_MP_GESTURE_VC_FISTPUMP_PRIMARY, 1722 | ACT_MP_GESTURE_VC_THUMBSUP_PRIMARY, 1723 | ACT_MP_GESTURE_VC_NODYES_PRIMARY, 1724 | ACT_MP_GESTURE_VC_NODNO_PRIMARY, 1725 | ACT_MP_GESTURE_VC_HANDMOUTH_SECONDARY, 1726 | ACT_MP_GESTURE_VC_FINGERPOINT_SECONDARY, 1727 | ACT_MP_GESTURE_VC_FISTPUMP_SECONDARY, 1728 | ACT_MP_GESTURE_VC_THUMBSUP_SECONDARY, 1729 | ACT_MP_GESTURE_VC_NODYES_SECONDARY, 1730 | ACT_MP_GESTURE_VC_NODNO_SECONDARY, 1731 | ACT_MP_GESTURE_VC_HANDMOUTH_MELEE, 1732 | ACT_MP_GESTURE_VC_FINGERPOINT_MELEE, 1733 | ACT_MP_GESTURE_VC_FISTPUMP_MELEE, 1734 | ACT_MP_GESTURE_VC_THUMBSUP_MELEE, 1735 | ACT_MP_GESTURE_VC_NODYES_MELEE, 1736 | ACT_MP_GESTURE_VC_NODNO_MELEE, 1737 | ACT_MP_GESTURE_VC_HANDMOUTH_ITEM1, 1738 | ACT_MP_GESTURE_VC_FINGERPOINT_ITEM1, 1739 | ACT_MP_GESTURE_VC_FISTPUMP_ITEM1, 1740 | ACT_MP_GESTURE_VC_THUMBSUP_ITEM1, 1741 | ACT_MP_GESTURE_VC_NODYES_ITEM1, 1742 | ACT_MP_GESTURE_VC_NODNO_ITEM1, 1743 | ACT_MP_GESTURE_VC_HANDMOUTH_ITEM2, 1744 | ACT_MP_GESTURE_VC_FINGERPOINT_ITEM2, 1745 | ACT_MP_GESTURE_VC_FISTPUMP_ITEM2, 1746 | ACT_MP_GESTURE_VC_THUMBSUP_ITEM2, 1747 | ACT_MP_GESTURE_VC_NODYES_ITEM2, 1748 | ACT_MP_GESTURE_VC_NODNO_ITEM2, 1749 | ACT_MP_GESTURE_VC_HANDMOUTH_BUILDING, 1750 | ACT_MP_GESTURE_VC_FINGERPOINT_BUILDING, 1751 | ACT_MP_GESTURE_VC_FISTPUMP_BUILDING, 1752 | ACT_MP_GESTURE_VC_THUMBSUP_BUILDING, 1753 | ACT_MP_GESTURE_VC_NODYES_BUILDING, 1754 | ACT_MP_GESTURE_VC_NODNO_BUILDING, 1755 | ACT_MP_GESTURE_VC_HANDMOUTH_PDA, 1756 | ACT_MP_GESTURE_VC_FINGERPOINT_PDA, 1757 | ACT_MP_GESTURE_VC_FISTPUMP_PDA, 1758 | ACT_MP_GESTURE_VC_THUMBSUP_PDA, 1759 | ACT_MP_GESTURE_VC_NODYES_PDA, 1760 | ACT_MP_GESTURE_VC_NODNO_PDA, 1761 | ACT_VM_UNUSABLE, 1762 | ACT_VM_UNUSABLE_TO_USABLE, 1763 | ACT_VM_USABLE_TO_UNUSABLE, 1764 | ACT_PRIMARY_VM_DRAW, 1765 | ACT_PRIMARY_VM_HOLSTER, 1766 | ACT_PRIMARY_VM_IDLE, 1767 | ACT_PRIMARY_VM_PULLBACK, 1768 | ACT_PRIMARY_VM_PRIMARYATTACK, 1769 | ACT_PRIMARY_VM_SECONDARYATTACK, 1770 | ACT_PRIMARY_VM_RELOAD, 1771 | ACT_PRIMARY_VM_DRYFIRE, 1772 | ACT_PRIMARY_VM_IDLE_TO_LOWERED, 1773 | ACT_PRIMARY_VM_IDLE_LOWERED, 1774 | ACT_PRIMARY_VM_LOWERED_TO_IDLE, 1775 | ACT_SECONDARY_VM_DRAW, 1776 | ACT_SECONDARY_VM_HOLSTER, 1777 | ACT_SECONDARY_VM_IDLE, 1778 | ACT_SECONDARY_VM_PULLBACK, 1779 | ACT_SECONDARY_VM_PRIMARYATTACK, 1780 | ACT_SECONDARY_VM_SECONDARYATTACK, 1781 | ACT_SECONDARY_VM_RELOAD, 1782 | ACT_SECONDARY_VM_DRYFIRE, 1783 | ACT_SECONDARY_VM_IDLE_TO_LOWERED, 1784 | ACT_SECONDARY_VM_IDLE_LOWERED, 1785 | ACT_SECONDARY_VM_LOWERED_TO_IDLE, 1786 | ACT_UNKNOWN_1783, 1787 | ACT_MELEE_VM_HOLSTER, 1788 | ACT_MELEE_VM_IDLE, 1789 | ACT_MELEE_VM_PULLBACK, 1790 | ACT_MELEE_VM_PRIMARYATTACK, 1791 | ACT_MELEE_VM_SECONDARYATTACK, 1792 | ACT_MELEE_VM_RELOAD, 1793 | ACT_MELEE_VM_DRYFIRE, 1794 | ACT_MELEE_VM_IDLE_TO_LOWERED, 1795 | ACT_MELEE_VM_IDLE_LOWERED, 1796 | ACT_MELEE_VM_LOWERED_TO_IDLE, 1797 | ACT_PDA_VM_DRAW, 1798 | ACT_PDA_VM_HOLSTER, 1799 | ACT_PDA_VM_IDLE, 1800 | ACT_PDA_VM_PULLBACK, 1801 | ACT_PDA_VM_PRIMARYATTACK, 1802 | ACT_PDA_VM_SECONDARYATTACK, 1803 | ACT_PDA_VM_RELOAD, 1804 | ACT_PDA_VM_DRYFIRE, 1805 | ACT_PDA_VM_IDLE_TO_LOWERED, 1806 | ACT_PDA_VM_IDLE_LOWERED, 1807 | ACT_PDA_VM_LOWERED_TO_IDLE, 1808 | ACT_ITEM1_VM_DRAW, 1809 | ACT_ITEM1_VM_HOLSTER, 1810 | ACT_ITEM1_VM_IDLE, 1811 | ACT_ITEM1_VM_PULLBACK, 1812 | ACT_ITEM1_VM_PRIMARYATTACK, 1813 | ACT_ITEM1_VM_SECONDARYATTACK, 1814 | ACT_ITEM1_VM_RELOAD, 1815 | ACT_ITEM1_VM_DRYFIRE, 1816 | ACT_ITEM1_VM_IDLE_TO_LOWERED, 1817 | ACT_ITEM1_VM_IDLE_LOWERED, 1818 | ACT_ITEM1_VM_LOWERED_TO_IDLE, 1819 | ACT_ITEM2_VM_DRAW, 1820 | ACT_ITEM2_VM_HOLSTER, 1821 | ACT_ITEM2_VM_IDLE, 1822 | ACT_ITEM2_VM_PULLBACK, 1823 | ACT_ITEM2_VM_PRIMARYATTACK, 1824 | ACT_ITEM2_VM_SECONDARYATTACK, 1825 | ACT_ITEM2_VM_RELOAD, 1826 | ACT_ITEM2_VM_DRYFIRE, 1827 | ACT_ITEM2_VM_IDLE_TO_LOWERED, 1828 | ACT_ITEM2_VM_IDLE_LOWERED, 1829 | ACT_ITEM2_VM_LOWERED_TO_IDLE, 1830 | }; -------------------------------------------------------------------------------- /baseclient.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_BASECLIENT_H_ 2 | #define _INCLUDE_BASECLIENT_H_ 3 | 4 | 5 | 6 | struct CBaseClient_vtable 7 | { 8 | void * CBaseClient_0; 9 | void * CBaseClient_1; 10 | void * FireGameEvent; 11 | void * GetEventDebugID; 12 | void * GetPlayerSlot; 13 | void * GetUserID; 14 | void * GetNetworkID; 15 | void * GetClientName; 16 | void * GetNetChannel; 17 | void * GetServer; 18 | void * GetUserSetting; 19 | void * GetNetworkIDString; 20 | void * Connect; 21 | void * Inactivate; 22 | void * Reconnect; 23 | void * Disconnect; 24 | void * CheckConnect; 25 | void * SetRate; 26 | void * GetRate; 27 | void * SetUpdateRate; 28 | void * GetUpdateRate; 29 | void * Clear; 30 | void * DemoRestart; 31 | void * GetMaxAckTickCount; 32 | void * ExecuteStringCommand; 33 | void * SendNetMsg; 34 | void * ClientPrintf; 35 | void * IsConnected; 36 | void * IsSpawned; 37 | void * IsActive; 38 | void * IsFakeClient; 39 | void * IsHLTV; 40 | void * IsHumanPlayer; 41 | void * IsHearingClient; 42 | void * IsProximityHearingClient; 43 | void * IsLowViolenceClient; 44 | void * SetMaxRoutablePayloadSize; 45 | void * IsSplitScreenUser; 46 | void * ProcessTick; 47 | void * ProcessStringCmd; 48 | void * ProcessSetConVar; 49 | void * ProcessSignonState; 50 | void * ProcessSplitScreenUser; 51 | void * ProcessClientInfo; 52 | void * ProcessBaselineAck; 53 | void * ProcessListenEvents; 54 | void * ProcessLoadingProgress; 55 | void * ProcessSplitPlayerConnect; 56 | void * ProcessCmdKeyValues; 57 | void * ConnectionStart; 58 | void * UpdateAcknowledgedFramecount; 59 | void * ShouldSendMessages; 60 | void * UpdateSendState; 61 | void * FillUserInfo; 62 | void * UpdateUserSettings; 63 | void * WriteGameSounds; 64 | void * GetDeltaFrame; 65 | void * SendSnapshot; 66 | void * SendServerInfo; 67 | void * SendSignonData; 68 | void * SpawnPlayer; 69 | void * ActivatePlayer; 70 | void * SetName; 71 | void * SetUserCVar; 72 | void * FreeBaselines; 73 | void * IgnoreTempEntity; 74 | void * GetSplitScreenOwner; 75 | void * GetNumPlayers; 76 | void * ProcessSignonStateMsg; 77 | void * PerformDisconnection; 78 | }; 79 | 80 | struct CBaseClient 81 | { 82 | CBaseClient_vtable * vptr; //0 83 | _BYTE gap4[56]; 84 | int field_3C; 85 | _BYTE gap40[116]; 86 | int field_B4; 87 | _BYTE gapB8[44]; 88 | int field_E4; 89 | _BYTE gapE8[4]; 90 | int field_EC; 91 | int field_F0; 92 | _BYTE gapF4[4]; 93 | int field_F8; 94 | _BYTE gapFC[272]; 95 | int field_20C; 96 | char field_210; 97 | _BYTE gap211[15]; 98 | int field_220; 99 | _BYTE gap224[39996]; 100 | int field_9E60; 101 | _BYTE gap9E64[79996]; 102 | int field_1D6E0; 103 | _BYTE gap1D6E4[4]; 104 | int field_1D6E8; 105 | }; 106 | 107 | #endif // _INCLUDE_BASECLIENT_H_ -------------------------------------------------------------------------------- /collision_property.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_CCOLLISIONPROPERTY_H_ 2 | #define _INCLUDE_CCOLLISIONPROPERTY_H_ 3 | 4 | 5 | struct CCollisionProperty_vtable 6 | { 7 | void * GetEntityHandle; //0 8 | void * OBBMins; //4 9 | void * OBBMaxs; //8 10 | void * WorldSpaceTriggerBounds; //12 11 | void * TestCollision; //16 12 | void * TestHitboxes; //20 13 | void * GetCollisionModelIndex; //24 14 | void * GetCollisionModel; //28 15 | void * GetCollisionOrigin; //32 16 | void * GetCollisionAngles; //36 17 | void * CollisionToWorldTransform; //40 18 | void * GetSolid; //44 19 | void * GetSolidFlags; //48 20 | void * GetIClientUnknown; //52 21 | void * GetCollisionGroup; //56 22 | void * WorldSpaceSurroundingBounds; //60 23 | void * ShouldTouchTrigger; //64 24 | void * GetRootParentToWorldTransform; //68 25 | void * GetVPhysicsObject; //72 26 | void * NetworkStateChanged; //76 27 | void * GetDataDescMap; //80 28 | void * GetPhysics2Actor; //84 29 | void * GetPhysics2ActorCount; //88 30 | void * GetBoundingRadius; //92 31 | }; 32 | 33 | struct CCollisionProperty //size 92 lux 34 | { 35 | CCollisionProperty_vtable * vptr; //0 36 | char *m_pOuter; //4 37 | float m_vecMins[3]; //8 38 | float m_vecMaxs[3]; //20 39 | short m_usSolidFlags; //32 40 | unsigned char m_nSolidType; //34 41 | unsigned char m_triggerBloat; //35 42 | float m_flRadius; //36 43 | char padding40[2]; //40 44 | unsigned char m_nSurroundType; //42 45 | unsigned char unknown43; //43 46 | float m_vecSpecifiedSurroundingMins[3]; //44 47 | float m_vecSpecifiedSurroundingMaxs[3]; //56 48 | float m_vecSurroundingMins[3]; //68 49 | float m_vecSurroundingMaxs[3]; //80 50 | }; 51 | 52 | #endif //_INCLUDE_CCOLLISIONPROPERTY_H_ -------------------------------------------------------------------------------- /director.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_DIRECTOR_H_ 2 | #define _INCLUDE_DIRECTOR_H_ 3 | 4 | #include "typestuff.h" 5 | #include "director_vtables.h" 6 | #include "timers.h" 7 | #include "util.h" 8 | #include "handle.h" 9 | 10 | // 1128 bytes 11 | struct CDirectorItemManager { 12 | CDirectorItemManager_vtable * vptr; 13 | char unknown[1124]; 14 | }; 15 | 16 | // 92 bytes 17 | struct CDirectorMusicBanks { 18 | CDirectorMusicBanks_vtable * vptr; 19 | char unknown[88]; 20 | }; 21 | 22 | // 76 bytes 23 | struct CDirectorSessionManager { 24 | CDirectorSessionManager_vtable * vptr; 25 | char unknown[72]; 26 | }; 27 | 28 | enum CustomFinaleStageType { 29 | CFST_PANIC = 0, 30 | CFST_TANK = 1, 31 | CFST_DELAY = 2, 32 | CFST_ONSLAUGHT = 3, 33 | }; 34 | 35 | // Actual name used by l4d2 36 | enum FinaleStageType { 37 | FINALE_HORDE_ATTACK_1 = 0, 38 | FINALE_DELAY_PRE_HALFTIME = 1, 39 | FINALE_HALFTIME_BOSS = 2, 40 | FINALE_HORDE_ATTACK_2 = 3, 41 | FINALE_DELAY_PRE_FINAL_TANK = 4, 42 | FINALE_FINAL_TANK = 5, 43 | FINALE_HORDE_ESCAPE = 6, 44 | FINALE_CUSTOM_PANIC = 7, 45 | FINALE_CUSTOM_TANK = 8, 46 | FINALE_CUSTOM_SCRIPTED = 9, 47 | FINALE_CUSTOM_DELAY = 10, 48 | FINALE_GAUNTLET_START = 11, 49 | FINALE_GAUNTLET_HORDE = 12, 50 | FINALE_GAUNTLET_HORDE_BONUSTIME = 13, 51 | FINALE_GAUNTLET_BOSS_INCOMING = 14, 52 | FINALE_GAUNTLET_BOSS = 15, 53 | FINALE_GAUNTLET_ESCAPE = 16 54 | }; 55 | 56 | enum FinaleType_t { 57 | FINALETYPE_STANDARD = 0, 58 | FINALETYPE_GAUNTLET = 1, // parish finale 59 | FINALETYPE_CUSTOM = 2, // uses script 60 | FINALETYPE_PANICEVENT = 3, // map-invoked panic event. 61 | FINALETYPE_SCAVENGE = 4, 62 | FINALETYPE_NONE = 5 63 | }; 64 | 65 | enum PanicEventStage { 66 | STAGE_INITIAL_DELAY = 0, 67 | STAGE_MEGA_MOB = 1, 68 | STAGE_WAIT_FOR_COMBAT_TO_END = 2, 69 | STAGE_PAUSE = 3, 70 | STAGE_DONE = 4 71 | }; 72 | 73 | // 156 bytes 74 | // new size 340 bytes 75 | // INDIVIDUAL OFFSETS HAVE NOT BEEN UPDATED/VERIFIED FOR v2125 76 | struct CDirectorScriptedEventManager { 77 | FinaleType_t m_FinaleType; // 0x00 should have some sort of enum, 5==no script 78 | FinaleStageType m_CurrentFinaleStage; // 0x04 there are 16 valid values 79 | bool m_bUnknown8; // 0x08 80 | bool m_bNotifiedPlayersOfEscape; // 0x09 81 | char m_bFinaleTankInPlay; // 0x0A 82 | bool m_bSpawningFinaleTank; // 0x0B 83 | float m_fGauntletBossStartFlow; // 0x0C furthest survivor flow at the time of (starting) spawning the tank 84 | CountdownTimer m_FinaleStageDelayTimer; // 0x10 85 | float m_fNextGauntletMovementCheckpoint; // 0x1C if survivors reach this absolute flow distance before timer expires, they gain bonus time 86 | float m_fCurrentGauntletMovementBonus; // 0x20 extra time to be added between horde waves (script/cvar) 87 | CountdownTimer m_GauntletMovementTimer; // 0x24 88 | CountdownTimer m_GauntletBonusMovementTimer; // 0x30 counts down the extra time added between horde waves 89 | IntervalTimer m_CurrentStageStartTime; // 0x3C 90 | CustomFinaleStageType m_InitialFinaleStageType; // 0x44 91 | int m_iCurrentCustomFinaleStage; // 0x48 92 | int m_iCurrentCustomFinaleStageValue; // 0x4C 93 | char m_cCustomFinaleType; // 0x50 e.g. "[A|B|C|D]_CustomFinale1" 94 | CountdownTimer m_TankStageSpawnTimer; // 0x54 when elapsed, spawn tank. 95 | int m_iUnknown96; 96 | CountdownTimer m_MinimumStageTimeCoundtown; // 0x64 97 | bool m_bUnknown112; // 0x70 98 | bool m_bPanicEventInProgress; // 0x71 99 | PanicEventStage m_PanicEventStage; // 0x74 100 | CountdownTimer m_PostMobDelayTimer; // 0x78 101 | int m_iPendingPanicWaves; // 0x84 102 | int m_iWavesForPanicEvent; // 0x88 103 | bool m_bInSacrificeFinale; // 0x8C 104 | bool m_bSacrificeFinaleSucceeded; // 0x8D 105 | bool m_bSurvivorsWiped; // 0x8E 106 | CountdownTimer m_SacrificeEndScenarioTimer; // 0x90 initiates the end of the scenario after failure 107 | }; 108 | 109 | // 92 bytes 110 | struct CDirectorVersusMode { 111 | CDirectorVersusMode_vtable *vptr; // 0x00 112 | bool m_bVersusRoundInProgress; // 0x04 113 | bool m_bAreTeamsFlipped; // 0x05 114 | bool m_bTransitioning; // 0x06 still making shit up 115 | // alignment padding 116 | int m_iCampaignScores[2]; // 0x08 117 | int m_iOldCampaignScores[2]; // 0x10 Used when a Chapter Restart vote is called 118 | bool m_bChapterRestartInProgress; // 0x18 This is set to true during the map restart from a Chapter Restart vote 119 | // alignment padding here afaik 120 | CountdownTimer VersusStartTimer; // 0x1c Timer controlling saferoom door open, allowing PZ spawning. 121 | float m_fTankSpawnFlowPercent[2]; // 0x28 Tank spawn flow percent for rounds 1 and 2 122 | float m_fWitchSpawnFlowPercent[2]; // 0x30 Witch spawn flow percent for rounds 1 and 2 123 | bool m_bTankThisRound[2]; // 0x38 One for each round! 124 | bool m_bWitchThisRound[2]; // 0x3a One for each round! 125 | float m_fFinaleTravelCompletionValue; // 0x3c 5660 in CFinaleTrigger 126 | int m_iFinaleTriggerVar2; // 0x40 5656 in CFinaleTrigger 127 | bool m_bInFinaleMap; // 0x44 128 | int m_iNumMarkersReached; // 0x48 129 | int m_iMarkersCount; // 0x4c 130 | CountdownTimer UpdateMarkersTimer; // 0x50 Timer controlling when to check if survivors have passed markers. Normally set to 1s duration 131 | }; 132 | 133 | // 160 bytes 134 | struct CDirectorSurvivalMode { 135 | char unknown[160]; 136 | }; 137 | 138 | // 104 bytes 139 | struct CDirectorScavengeMode { 140 | bool m_bUnknown; // 0 141 | float m_flLastCanPouredTime; // 4 142 | bool m_bScavengeRoundInProgress; // 8 143 | bool m_bUnk2; // 9 144 | bool m_bAreTeamsSwapped; // 10 145 | bool m_bInOvertime; // 11 146 | bool m_bInOvertime2; // 12 147 | char padding13[3]; // 13 148 | CountdownTimer RoundSetupTimer; // 16 (see: scavenge_round_setup_time) 149 | CountdownTimer OvertimeGraceTimer; // 28 (see: scavenge_overtime_grace_time) 150 | int m_iMusicIntensityCheckpoint; // 40 151 | /* Everything beyond this point seems to be for Linear Scavenge (Follow The Liter) 152 | And it's very hard for me to care about it. 153 | Names are mostly bullshit but they almost seem to make sense. Best test would be to read 154 | them during gameplay. */ 155 | 156 | /* // ERROR - SILVERSHOT 157 | CUTLVECTOR(CUTLVECTOR(CHandle)) m_scavengeClusterHandles; // 44 158 | CUTLVECTOR(int) m_custerCounts; // 64 yaoright.jpg 159 | float m_vecPourTargetOrigin[3]; // 84 point_prop_use_target's abs origin 160 | int m_iCurrentCluster; // 96 161 | int m_iNumClearedClusters; // 100 162 | // */ 163 | }; 164 | 165 | // 8 bytes 166 | // new size 412 bytes 167 | // INDIVIDUAL OFFSETS HAVE NOT BEEN UPDATED/VERIFIED FOR v2125 168 | struct CDirectorChallengeMode { 169 | bool m_ChallengeModeActive; // 0 170 | int m_hRescueTrigger; // 4 EHANDLE 171 | }; 172 | 173 | // 1 byte 174 | struct CDirectorTacticalServices { 175 | char unknown; // does this even exist? blah. 176 | }; 177 | 178 | 179 | enum DirectorTempoState 180 | { 181 | TEMPO_BUILDUP=0, 182 | TEMPO_SUSTAIN_PEAK=1, 183 | TEMPO_PEAK_FADE=2, 184 | TEMPO_RELAX=3 185 | }; 186 | 187 | enum ScenarioRestartReason 188 | { 189 | RESTART_FINALE_WON=3, 190 | RESTART_VERSUS_SOMETHING1=5, 191 | RESTART_VERSUS_FROMVOTE=7, 192 | RESTART_VERSUS_SOMETHING2=8, 193 | RESTART_SCAVENGE_ROUND=9, // Halftime or round end 194 | RESTART_SCAVENGE_ROUND_TIE=10, // exact tie (cans+time 195 | RESTART_VERSUS_CHANGELEVEL, 196 | RESTART_SCAVENGE_MATCH_FINISHED=12, 197 | RESTART_SCAVENGE_SOMETHING3=13, 198 | RESTART_SURVIVAL_ROUND1=14, 199 | RESTART_SURVIVAL_ROUND2=16, 200 | RESTART_MISSION_ABORTED=18, 201 | }; 202 | 203 | // Win32: 1420 bytes 204 | // Lin: 1420 bytes 205 | struct CDirector { 206 | CDirector_vtable * vptr; // 0x0 207 | char unknown4[84]; // 0x04 208 | int m_iTankSwapCount; // 0x58 see: CDirector::UpdateTankSpawns() and CTerrorPlayer::UpdateZombieFrustration() 209 | char unknown92[68]; 210 | bool m_bHasSurvivorLeftSafeArea; // 160 211 | bool m_bUknown161; // 161 set to 0in CDirector::Reset() 212 | char padding162[2]; // 161 213 | int m_iFinaleEscapeState; // 164 214 | char unknown168[4]; // 168 215 | CountdownTimer TankProhibitionTimer; // 172 see director_tank_checkpoint_interval, director_tank_min/max_interval 216 | CountdownTimer TankLotteryEntryTimer; // 184 217 | CountdownTimer TankLotterySelectionTimer; // 196 218 | char unknown184[4]; // 208 219 | DirectorTempoState m_iTempoState; // 212 220 | CountdownTimer m_ChangeTempoTimer; // 216 Set to various values depending on current state, see CDirector::UpdateTempo() 221 | float m_flEndFadeFlowDistance; // 228 Highest survivor flow stored here on transition to PEAK_FADE, goes to to RELAX after director_relax_max_flow_travel distance made 222 | char unknown232[20]; // 232 223 | int m_iWitchCount; // 252 224 | int m_iTankCount; // 256 225 | float m_fTankFlowDistance; // 0x104 226 | char unknown264[8]; // 264 227 | CountdownTimer ZombieGhostSpawnTimer; // 272 Started with z_ghost_spawn_interval whenever SI dies during normal gameplay 228 | bool m_bTankFrustrationEnabled; // 284 229 | char padding285[3]; // 285 230 | char unknown288[100]; // 284 231 | float m_fAvgSurvivorSpan; // 388 232 | float m_fAvgSurvivorSpeed; // 392 233 | float m_fFurthestSurvivorFlow; // 396 234 | char unknown400[24]; // 400 235 | CountdownTimer RestartScenarioTimer; // 424 Counts down to a scenario restart (UpdateScenarioState) 236 | CountdownTimer EndScenarioTimer; // 436 Counts down to a scenario end (UpdateScenarioState) 237 | bool m_bUnknown448; 238 | bool m_bUnknown449; 239 | bool m_bUnknown450; 240 | ScenarioRestartReason m_iScenarioExitReason; // 452 Set in EndScenario(), read in various 241 | char unknown456[8]; // 456 242 | bool m_bInIntro; // 464 243 | bool m_bUnknown465; // 465 set to 0 in CDirector::Reset() 244 | // should be padded 245 | CountdownTimer MobSpawnTimer; // 468 246 | CountdownTimer unknownCTimer480; // 480 247 | IntervalTimer m_ClassDeathTimers[7]; // 492 ZC_NONE=0 through ZC_CHARGER=6 248 | IntervalTimer unknownITimer548; // 548 249 | IntervalTimer unknownITimer556; // 556 250 | CountdownTimer SmokerSpawnTimer; // 0x234 251 | CountdownTimer BoomerSpawnTimer; 252 | CountdownTimer HunterSpawnTimer; 253 | CountdownTimer SpitterSpawnTimer; 254 | CountdownTimer JockeySpawnTimer; 255 | CountdownTimer ChargerSpawnTimer; 256 | CUTLVECTORFIXEDGROWABLE(CountdownTimer,3) m_pzSpawnTimers; // 636 257 | // 3*12 + 4 + 20 = 60 258 | char unknown696[12]; // 696 259 | float m_fMobSpawnSize; // 708 260 | char unknown712[4]; 261 | float m_fMobSpawnInterval; // 716 I think that's what this is 262 | float m_fTankProhibitionInterval; // 720 263 | _DWORD m_iUnknown724; // 724 some kind of userid 264 | int m_iSelectedTankPlayerId; // 728 265 | int m_iNumReservedWanderers; // 732 266 | int m_iScavengeItemsRemaining; // 736 For scavenge mode/finales I assume 267 | char unknown740[4]; 268 | IntervalTimer ElapsedMissionTimer; // 744 Should be timing playtime on this map 269 | float m_fCumulativeMissionTime; // 752 Add this to timer duration from above to get TotalElapsedMissionTime 270 | char m_sCurrentMap[0x20]; // 756 271 | CountdownTimer m_rescueCheckTimer; // 788 see rescue_interval cvar 272 | char unknown800[52]; 273 | void * m_kvPopulationData; // 852 KeyValues * 274 | char unknown856[8]; 275 | int m_iMapNumber; // 864, should be 0 indexed into current campaign 276 | int m_iSessionStartMapNumber; // 868 277 | char unknown872[24]; 278 | int m_iMissionWipes; // 896 number of wipes on this mission (coop) 279 | ZombieClassType m_zThreatRoster[3]; // 900 Threat roster for coop 280 | int m_iNextThreatIdx; // 912 Which threat will be used next? 281 | char unknown916[20]; 282 | CountdownTimer unknownCTimer936; 283 | char unknown948[96]; // "forbidden targets" starts here 284 | CountdownTimer unknownCTimer1044; 285 | float m_flUnknown1056; // 1056 286 | bool m_bUnknown1160; 287 | bool m_bIsFirstRoundFinished; // 0x425 Fuck naming this var 288 | bool m_bIsSecondRoundFinished; // This one too 289 | bool m_bUnknownJunk; // probably related 290 | CountdownTimer TransitionTimeoutTimer; // 0x428 291 | char unknown1076[308]; // 0x434 292 | CDirectorTacticalServices * TacticalServicesPtr; // 0x5a4 293 | CDirectorItemManager * ItemManagerPtr; 294 | CDirectorMusicBanks * MusicBanksPtr; 295 | CDirectorSessionManager * SessionManagerPtr; 296 | CDirectorScriptedEventManager * ScriptedEventManagerPtr; 297 | CDirectorVersusMode * VersusModePtr; 298 | CDirectorSurvivalMode * SurvivalModePtr; 299 | CDirectorScavengeMode * ScavengeModePtr; 300 | CDirectorChallengeMode * ChallengeModePtr; 301 | char unknown1420[8]; 302 | }; 303 | 304 | #endif //_INCLUDE_DIRECTOR_H_ -------------------------------------------------------------------------------- /director_vtables.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_DIRECTOR_VTABLES_H_ 2 | #define _INCLUDE_DIRECTOR_VTABLES_H_ 3 | 4 | #include "game_events.h" 5 | #include "terror_player.h" 6 | 7 | struct CDirectorItemManager; 8 | struct CDirectorItemManager_vtable 9 | { 10 | void (* Reset)(CDirectorItemManager*); 11 | void (* OnBeginChangeLevel)(CDirectorItemManager*); 12 | void (* OnMapLoaded)(CDirectorItemManager*); 13 | }; 14 | 15 | struct CDirectorMusicBanks; 16 | struct CDirectorMusicBanks_vtable 17 | { 18 | void (* OnBeginTransition)(CDirectorMusicBanks*,bool); 19 | void (* OnRoundStart)(CDirectorMusicBanks*); 20 | void (* OnServerShutdown)(CDirectorMusicBanks*); 21 | }; 22 | 23 | struct CDirectorSessionManager; 24 | struct CDirectorSessionManager_vtable 25 | { 26 | void (* OnServerShutdown)(CDirectorSessionManager*); 27 | void (* OnMapLoaded)(CDirectorSessionManager*); 28 | bool (* UpdateSession)(CDirectorSessionManager*); 29 | void (* UpdateTeamReadiness)(CDirectorSessionManager*); 30 | void (* OnBeginChangeLevel)(CDirectorSessionManager*); 31 | void (* OnGameplayStart)(CDirectorSessionManager*); 32 | void (* OnFirstSurvivorLeftSafeArea)(CDirectorSessionManager*, CTerrorPlayer*); 33 | void (* OnPlayerFullyConnected)(CDirectorSessionManager*, CTerrorPlayer*); 34 | void (* OnPlayerDisconnected)(CDirectorSessionManager*, CTerrorPlayer*); 35 | int (* DrawDebug)(CDirectorSessionManager*, int); 36 | }; 37 | 38 | struct CDirectorVersusMode; 39 | struct CDirectorVersusMode_vtable 40 | { 41 | bool (* ShouldReselectCustomFinale)(CDirectorVersusMode*); 42 | bool (* SurvivorsCanLevelChange)(CDirectorVersusMode*); 43 | }; 44 | 45 | struct CDirector; 46 | struct CDirector_vtable 47 | { 48 | void (* CDirector_dtor1)(CDirector*); 49 | void (* CDirector_dtor0)(CDirector*); 50 | IGameEventListener2_iface IGameEventListener2; 51 | void (* OnBeginChangeLevel)(CDirector*); 52 | void (* Reset)(CDirector*); 53 | void (* UpdateTempo)(CDirector*); 54 | void (* OnMapLoaded)(CDirector*); 55 | void (* OnRoundStart)(CDirector*); 56 | void (* OnServerShutdown)(CDirector*); 57 | void (* OnBeginTransition)(CDirector*, bool); 58 | void (* OnGameplayStart)(CDirector*); 59 | int (* GetMaxPlayerZombies)(CDirector*); 60 | bool (* IsClassAllowed)(CDirector*, ZombieClassType); 61 | void (* OnPlayerDisconnected)(CDirector*, CTerrorPlayer *); 62 | bool (* SurvivorsCanLevelChange)(CDirector*); 63 | void (* OnRestartMap)(CDirector*); 64 | bool (* ShouldLockTempo)(CDirector*); 65 | void (* InitScripts)(CDirector*); 66 | void (* OnForcedRestart)(CDirector*); 67 | void (* CheckForSurvivorsLeavingSafeArea)(CDirector*); 68 | void (* OnTeamsReady)(CDirector*); 69 | void (* UpdateSpecialSpawns)(CDirector*); 70 | bool (* ShouldAllowSpecialSpawns)(CDirector*); 71 | void (* ShuffleThreatRoster)(CDirector*, ZombieClassType); 72 | bool (* ShouldReselectCustomFinale)(CDirector*); 73 | bool (* ShouldShowCredits)(CDirector*); 74 | void (* DiscardOrphanInfected)(CDirector*); 75 | int (* GetBaseSpecialLimit)(CDirector*, ZombieClassType); 76 | int (* GetDominatorLimit)(CDirector*); 77 | int (* DrawDebug)(CDirector*, int); 78 | }; 79 | 80 | #endif // _INCLUDE_DIRECTOR_VTABLES_H_ 81 | -------------------------------------------------------------------------------- /eiface.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_EIFACE_H_ 2 | #define _INCLUDE_EIFACE_H_ 3 | 4 | struct IVEngineServer_iface 5 | { 6 | void * ChangeLevel; 7 | void * IsMapValid; 8 | void * IsDedicatedServer; 9 | void * IsInEditMode; 10 | void * GetLaunchOptions; 11 | void * PrecacheModel; 12 | void * PrecacheSentenceFile; 13 | void * PrecacheDecal; 14 | void * PrecacheGeneric; 15 | void * IsModelPrecached; 16 | void * IsDecalPrecached; 17 | void * IsGenericPrecached; 18 | void * GetClusterForOrigin; 19 | void * GetPVSForCluster; 20 | void * CheckOriginInPVS; 21 | void * CheckBoxInPVS; 22 | void * GetPlayerUserId; 23 | void * GetPlayerNetworkIDString; 24 | void * IsUserIDInUse; 25 | void * GetLoadingProgressForUserID; 26 | void * GetEntityCount; 27 | void * GetPlayerNetInfo; 28 | void * CreateEdict; 29 | void * RemoveEdict; 30 | void * PvAllocEntPrivateData; 31 | void * FreeEntPrivateData; 32 | void * SaveAllocMemory; 33 | void * SaveFreeMemory; 34 | void * EmitAmbientSound; 35 | void * FadeClientVolume; 36 | void * SentenceGroupPick; 37 | void * SentenceGroupPickSequential; 38 | void * SentenceIndexFromName; 39 | void * SentenceNameFromIndex; 40 | void * SentenceGroupIndexFromName; 41 | void * SentenceGroupNameFromIndex; 42 | void * SentenceLength; 43 | void * ServerCommand; 44 | void * ServerExecute; 45 | void * ClientCommand; 46 | void * LightStyle; 47 | void * StaticDecal; 48 | void * Message_DetermineMulticastRecipients; 49 | void * EntityMessageBegin; 50 | void * UserMessageBegin; 51 | void * MessageEnd; 52 | void * ClientPrintf; 53 | void * Con_NPrintf; 54 | void * Con_NXPrintf; 55 | void * SetView; 56 | void * OBSOLETE_Time; 57 | void * CrosshairAngle; 58 | void * GetGameDir; 59 | void * CompareFileTime; 60 | void * LockNetworkStringTables; 61 | void * CreateFakeClient; 62 | void * GetClientConVarValue; 63 | void * ParseFile; 64 | void * CopyFile; 65 | void * ResetPVS; 66 | void * AddOriginToPVS; 67 | void * SetAreaPortalState; 68 | void * PlaybackTempEntity; 69 | void * CheckHeadnodeVisible; 70 | void * CheckAreasConnected; 71 | void * GetArea; 72 | void * GetAreaBits; 73 | void * GetAreaPortalPlane; 74 | void * LoadGameState; 75 | void * LoadAdjacentEnts; 76 | void * ClearSaveDir; 77 | void * GetMapEntitiesString; 78 | void * TextMessageGet; 79 | void * LogPrint; 80 | void * IsLogEnabled; 81 | void * BuildEntityClusterList; 82 | void * SolidMoved; 83 | void * TriggerMoved; 84 | void * CreateSpatialPartition; 85 | void * DestroySpatialPartition; 86 | void * DrawMapToScratchPad; 87 | void * GetEntityTransmitBitsForClient; 88 | void * IsPaused; 89 | void * GetTimescale;const 90 | void * ForceExactFile; 91 | void * ForceModelBounds; 92 | void * ClearSaveDirAfterClientLoad; 93 | void * SetFakeClientConVarValue; 94 | void * ForceSimpleMaterial; 95 | void * IsInCommentaryMode; 96 | void * IsLevelMainMenuBackground; 97 | void * SetAreaPortalStates; 98 | void * NotifyEdictFlagsChange; 99 | void * GetPrevCheckTransmitInfo; 100 | void * GetSharedEdictChangeInfo; 101 | void * AllowImmediateEdictReuse; 102 | void * IsInternalBuild; 103 | void * GetChangeAccessor; 104 | void * GetMostRecentlyLoadedFileName; 105 | void * GetSaveFileName; 106 | void * WriteSavegameScreenshot; 107 | void * GetLightForPointListenServerOnly; 108 | void * TraceLightingListenServerOnly; 109 | void * CleanUpEntityClusterList; 110 | void * SetAchievementMgr; 111 | void * GetAchievementMgr; 112 | void * GetAppID; 113 | void * IsLowViolence; 114 | void * IsAnyClientLowViolence; 115 | void * StartQueryCvarValue; 116 | void * InsertServerCommand; 117 | void * GetPlayerInfo; 118 | void * IsClientFullyAuthenticated; 119 | void * SetDedicatedServerBenchmarkMode; 120 | void * IsSplitScreenPlayer; 121 | void * GetSplitScreenPlayerAttachToEdict; 122 | void * GetNumSplitScreenUsersAttachedToEdict; 123 | void * GetSplitScreenPlayerForEdict; 124 | void * IsOverrideLoadGameEntsOn; 125 | void * ForceFlushEntity; 126 | void * GetSinglePlayerSharedMemorySpace; 127 | void * AllocLevelStaticData; 128 | void * GetClusterCount; 129 | void * GetAllClusterBounds; 130 | void * IsCreatingReslist; 131 | void * IsCreatingXboxReslist; 132 | void * IsDedicatedServerForXbox; 133 | void * Pause; 134 | void * SetTimescale; 135 | void * SetGamestatsData; 136 | void * GetGamestatsData; 137 | void * GetClientSteamID; 138 | void * HostValidateSession; 139 | void * RefreshScreenIfNecessary; 140 | void * AllocLevelStaticDataName; 141 | void * ClientCommandKeyValues; 142 | void * GetClientXUID; 143 | }; 144 | 145 | struct IVEngineServer 146 | { 147 | IVEngineServer_iface * vptr; 148 | }; 149 | 150 | #endif // _INCLUDE_EIFACE_H_ -------------------------------------------------------------------------------- /game_events.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_GAME_EVENTS_H_ 2 | #define _INCLUDE_GAME_EVENTS_H_ 3 | 4 | struct IGameEventListener2_iface 5 | { 6 | void * FireGameEvent; 7 | void * GetEventDebugID; 8 | }; 9 | 10 | struct IEventRegisterCallback_iface 11 | { 12 | void * FireEvent; 13 | }; 14 | 15 | struct IEventRegisterCallback 16 | { 17 | IEventRegisterCallback_iface *vptr; 18 | }; 19 | 20 | struct CEventRegister 21 | { 22 | void *m_pEventMgr; // CTimedEventMgr 23 | float m_flNextEventTime; 24 | float m_flUpdateInterval; 25 | IEventRegisterCallback *m_pCallback; 26 | bool m_bRegistered; 27 | }; 28 | #endif // _INCLUDE_GAME_EVENTS_H_ -------------------------------------------------------------------------------- /gamerules.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_GAMERULES_H_ 2 | #define _INCLUDE_GAMERULES_H_ 3 | /* 4 | Inheritance Tree: 5 | CTerrorGameRules 6 | CCSGameRules 7 | CTeamplayRules 8 | CMultiplayRules 9 | CGameRules 10 | CMemZeroOnNew 11 | CAutoGameSystemPerFrame 12 | CBaseGameSystemPerFrame 13 | IGameSystemPerFrame 14 | IGameSystem 15 | */ 16 | 17 | 18 | struct CTerrorGameRules_vtable 19 | { 20 | void * Name; 21 | void * Init; 22 | void * PostInit; 23 | void * Shutdown; 24 | void * LevelInitPreEntity; 25 | void * LevelInitPostEntity; 26 | void * LevelShutdownPreEntity; 27 | void * LevelShutdownPostEntity; 28 | void * OnSave; 29 | void * OnRestore; 30 | void * SafeRemoveIfDesired; 31 | void * IsPerFrame; 32 | void * CTerrorGameRules; 33 | void * __CTerrorGameRules; 34 | void * FrameUpdatePreEntityThink; 35 | void * FrameUpdatePostEntityThink; 36 | void * PreClientUpdate; 37 | void * Damage_IsTimeBased; 38 | void * Damage_ShouldGibCorpse; 39 | void * Damage_ShowOnHUD; 40 | void * Damage_NoPhysicsForce; 41 | void * Damage_ShouldNotBleed; 42 | void * Damage_GetTimeBased; 43 | void * Damage_GetShouldGibCorpse; 44 | void * Damage_GetShowOnHud; 45 | void * Damage_GetNoPhysicsForce; 46 | void * Damage_GetShouldNotBleed; 47 | void * SwitchToNextBestWeapon; 48 | void * GetNextBestWeapon; 49 | void * ShouldCollide; 50 | void * DefaultFOV; 51 | void * GetViewVectors; 52 | void * GetAmmoDamage; 53 | void * GetDamageMultiplier; 54 | void * IsMultiplayer; 55 | void * GetEncryptionKey; 56 | void * InRoundRestart; 57 | void * CheckAchievementsEnabled; 58 | void * GetTaggedConVarList; 59 | void * OnBeginChangeLevel; 60 | void * LevelShutdown; 61 | void * Precache; 62 | void * RefreshSkillData; 63 | void * Think; 64 | void * IsAllowedToSpawn; 65 | void * EndGameFrame; 66 | void * IsSkillLevel; 67 | void * GetSkillLevel; 68 | void * OnSkillLevelChanged; 69 | void * SetSkillLevel; 70 | void * FAllowFlashlight; 71 | void * FShouldSwitchWeapon; 72 | void * IsDeathmatch; 73 | void * IsTeamplay; 74 | void * IsCoOp; 75 | void * GetGameDescription; 76 | void * ClientConnected; 77 | void * InitHUD; 78 | void * ClientDisconnected; 79 | void * FlPlayerFallDamage; 80 | void * FPlayerCanTakeDamage; 81 | void * ShouldAutoAim; 82 | void * ShouldGetAutoAimScaleAutoAim; 83 | void * GetAutoAimMode; 84 | void * ShouldUseRobustRadiusDamage; 85 | void * RadiusDamage; 86 | void * FlPlayerFallDeathDoesScreenFade; 87 | void * AllowDamage; 88 | void * PlayerSpawn; 89 | void * PlayerThink; 90 | void * FPlayerCanRespawn; 91 | void * FlPlayerSpawnTime; 92 | void * GetPlayerSpawnSpot; 93 | void * IsSpawnPointValid; 94 | void * AllowAutoTargetCrosshair; 95 | void * ClientCommand; 96 | void * ClientSettingsChanged; 97 | void * IPointsForKill; 98 | void * PlayerKilled; 99 | void * DeathNotice; 100 | void * GetDamageCustomString; 101 | void * AdjustPlayerDamageInflicted; 102 | void * AdjustPlayerDamageTaken; 103 | void * CanHavePlayerItem; 104 | void * WeaponShouldRespawn; 105 | void * FlWeaponRespawnTime; 106 | void * FlWeaponTryRespawn; 107 | void * VecWeaponRespawnSpot; 108 | void * CanHaveItem; 109 | void * PlayerGotItem; 110 | void * ItemShouldRespawn; 111 | void * FlItemRespawnTime; 112 | void * VecItemRespawnSpot; 113 | void * VecItemRespawnAngles; 114 | void * CanHaveAmmo_int; 115 | void * CanHaveAmmo_char_int; //function overloading 116 | void * PlayerGotAmmo; 117 | void * GetAmmoQuantityScale; 118 | void * InitDefaultAIRelationships; 119 | void * AIClassText; 120 | void * FlHealthChargerRechargeTime; 121 | void * FlHEVChargerRechargeTime; 122 | void * DeadPlayerWeapons; 123 | void * DeadPlayerAmmo; 124 | void * GetTeamID; 125 | void * PlayerRelationship; 126 | void * PlayerCanHearChat; 127 | void * CheckChatText; 128 | void * GetTeamIndex; 129 | void * GetIndexedTeamName; 130 | void * IsValidTeam; 131 | void * ChangePlayerTeam; 132 | void * SetDefaultPlayerTeam; 133 | void * UpdateClientData; 134 | void * PlayTextureSounds; 135 | void * PlayFootstepSounds; 136 | void * AllowSoundscapes; 137 | void * FAllowNPCs; 138 | void * EndMultiplayerGame; 139 | void * WeaponTraceEntity; 140 | void * InitScripts; 141 | void * CreateStandardEntities; 142 | void * GetChatPrefix; 143 | void * GetChatLocation; 144 | void * GetChatFormat; 145 | void * ShouldBurningPropsEmitLight; 146 | void * CanEntityBeUsePushed; 147 | void * CreateCustomNetworkStringTables; 148 | void * MarkAchievement; 149 | void * ResetMapCycleTimeStamp; 150 | void * UpdateGameplayStatsFromSteam; 151 | void * DoFindClientInPVS; 152 | void * GetGameTypeName; 153 | void * GetGameType; 154 | void * ForceSplitScreenPlayersOnToSameTeam; 155 | void * IsTopDown; 156 | void * GetTopDownMovementAxis; 157 | void * GetMaxHumanPlayers; 158 | void * GetDeathScorer; 159 | void * VoiceCommand; 160 | void * HandleTimeLimitChange; 161 | void * InitCustomResponseRulesDicts; 162 | void * ShutdownCustomResponseRulesDicts; 163 | void * UseSuicidePenalty; 164 | void * GetNextLevelName; 165 | void * ChangeLevel; 166 | void * GoToIntermission; 167 | void * GetCaptureValueForPlayer; 168 | void * TeamMayCapturePoint; 169 | void * PlayerMayCapturePoint; 170 | void * PlayerMayBlockPoint; 171 | void * PointsMayBeCaptured; 172 | void * SetLastCapPointChanged; 173 | void * TimerMayExpire; 174 | void * SetWinningTeam; 175 | void * SetStalemate; 176 | void * SetSwitchTeams; 177 | void * ShouldSwitchTeams; 178 | void * HandleSwitchTeams; 179 | void * SetScrambleTeams; 180 | void * ShouldScrambleTeams; 181 | void * HandleScrambleTeams; 182 | void * PlayersAllowedToAttack; 183 | void * GetBuyTimeLength; 184 | void * PopulateDeathEvent; 185 | void * DoesEntityBlockExplosions; 186 | void * DeathNoticeForEntity; 187 | void * CheckRoundTimeExpired; 188 | void * CheckWinConditions; 189 | void * TerminateRound; 190 | void * TeamFull; 191 | void * CheckGameOver; 192 | void * CheckMaxRounds; 193 | void * CheckWinLimit; 194 | void * CheckFragLimit; 195 | void * CheckRestartRound; 196 | void * NeededPlayersCheck; 197 | void * SetAllowWeaponSwitch; 198 | void * GetAllowWeaponSwitch; 199 | void * RestartRound; 200 | void * CleanUpMap; 201 | void * PopulateDeathEvent_2; 202 | void * TrackPlayerZombieDamage; 203 | void * GetPlayerZombieDamage; 204 | void * ClearPlayerZombieDamage; 205 | }; 206 | struct CTerrorGameRules 207 | { 208 | CTerrorGameRules_vtable * vptr; 209 | char BaseClassStuff[912]; // ignoring a bunch of stuff 210 | //int m_iSurvivorScore[2]; 211 | int m_iCampaignScore[2]; // 916 212 | int m_iChapterScore[2]; // 924 213 | int m_iChapterDamage[2]; // 932 214 | int m_iScavengeTeamScore[10]; //940 215 | int m_iScavengeMatchScore[2]; // 980 216 | float m_flTeamRoundTime[2]; // 988 217 | int m_iVersusDistancePerSurvivor[8]; 218 | int m_iVersusSurvivorDeathDistance[8]; 219 | bool m_bSurvivorIsAliveForFinale[4]; 220 | int m_iUnknown1064; 221 | int m_iVersusSurvivalMultiplier[2]; // 1068 222 | int m_iVersusDefibsUsed[2]; // 1076 223 | int m_iUnknown1084; 224 | bool m_bInIntro; 225 | char padding[3]; 226 | float m_flRoundStartTime; 227 | float m_flRoundEndTime; 228 | float m_flAccumulatedTime; 229 | int m_nRoundNumber; // 1104 230 | int m_nRoundLimit; 231 | int m_iWinningTeamNumber[5]; // 1112 up to 5 maps per campaign or rounds of scav? 232 | float m_flTeamBestRoundTime; 233 | float m_flRoundDuration[2]; 234 | int m_nScavengeItemsRemaining; 235 | int m_nScavengeItemsGoal; 236 | int m_iServerRank; 237 | int m_iServerPlayerCount; 238 | bool m_bIsDedicatedServer; 239 | // implied padding[3]; 240 | int m_iServerSteamGroupID; 241 | bool m_bAreTeamsFlipped; 242 | bool m_bInSecondHalfOfRound; 243 | bool m_bIsTransitioningToNextMap; 244 | bool m_bIsVersusVoteRestarting; 245 | bool m_bChallengeModeActive; 246 | // implied padding[3]; 247 | int m_iSacrificeEscapees; 248 | float m_flHoldoutCooldownEndTime; 249 | int m_iScriptedHUDInts[15]; 250 | float m_fScriptedHUDFloats[15]; 251 | int m_iScriptedHUDFlags[15]; 252 | float m_fScriptedHUDPosX[15]; 253 | float m_fScriptedHUDPosY[15]; 254 | float m_fScriptedHUDWidth[15]; 255 | float m_fScriptedHUDHeight[15]; 256 | int m_iScriptedHUDTimerMode[4]; 257 | float m_fScriptedHUDTimerBase[4]; 258 | float m_fScriptedHUDTimerAdd[4]; 259 | char m_szScriptedHUDStringSet[15][128]; 260 | }; 261 | /* 262 | VTable for CTerrorGameRules: (0, 0) 263 | Lin Win Function 264 | 0 0 CGameRules::Name(void) 265 | 1 1 CMultiplayRules::Init(void) 266 | 2 2 CBaseGameSystemPerFrame::PostInit(void) 267 | 3 3 CBaseGameSystemPerFrame::Shutdown(void) 268 | 4 4 CTerrorGameRules::LevelInitPreEntity(void) 269 | 5 5 CTerrorGameRules::LevelInitPostEntity(void) 270 | 6 6 CBaseGameSystemPerFrame::LevelShutdownPreEntity(void) 271 | 7 7 CBaseGameSystemPerFrame::LevelShutdownPostEntity(void) 272 | 8 8 CBaseGameSystemPerFrame::OnSave(void) 273 | 9 9 CBaseGameSystemPerFrame::OnRestore(void) 274 | 10 10 CBaseGameSystemPerFrame::SafeRemoveIfDesired(void) 275 | 11 11 CBaseGameSystemPerFrame::IsPerFrame(void) 276 | 12 12 CTerrorGameRules::~CTerrorGameRules() 277 | 13 12 CTerrorGameRules::~CTerrorGameRules() 278 | 14 13 CBaseGameSystemPerFrame::FrameUpdatePreEntityThink(void) 279 | 15 14 CGameRules::FrameUpdatePostEntityThink(void) 280 | 16 15 CBaseGameSystemPerFrame::PreClientUpdate(void) 281 | 17 16 CMultiplayRules::Damage_IsTimeBased(int) 282 | 18 17 CMultiplayRules::Damage_ShouldGibCorpse(int) 283 | 19 18 CMultiplayRules::Damage_ShowOnHUD(int) 284 | 20 19 CMultiplayRules::Damage_NoPhysicsForce(int) 285 | 21 20 CMultiplayRules::Damage_ShouldNotBleed(int) 286 | 22 21 CTerrorGameRules::Damage_GetTimeBased(void) 287 | 23 22 CMultiplayRules::Damage_GetShouldGibCorpse(void) 288 | 24 23 CTerrorGameRules::Damage_GetShowOnHud(void) 289 | 25 24 CTerrorGameRules::Damage_GetNoPhysicsForce(void) 290 | 26 25 CMultiplayRules::Damage_GetShouldNotBleed(void) 291 | 27 26 CMultiplayRules::SwitchToNextBestWeapon(CBaseCombatCharacter *, CBaseCombatWeapon *) 292 | 28 27 CCSGameRules::GetNextBestWeapon(CBaseCombatCharacter *, CBaseCombatWeapon *) 293 | 29 28 CCSGameRules::ShouldCollide(int, int) 294 | 30 29 CCSGameRules::DefaultFOV(void) 295 | 31 30 CTerrorGameRules::GetViewVectors(void)const 296 | 32 31 CTerrorGameRules::GetAmmoDamage(CBaseEntity *, CBaseEntity *, int) 297 | 33 32 CGameRules::GetDamageMultiplier(void) 298 | 34 33 CMultiplayRules::IsMultiplayer(void) 299 | 35 34 CTerrorGameRules::GetEncryptionKey(void) 300 | 36 35 CTerrorGameRules::InRoundRestart(void) 301 | 37 36 CTerrorGameRules::CheckAchievementsEnabled(int) 302 | 38 37 CMultiplayRules::GetTaggedConVarList(KeyValues *) 303 | 39 38 CTerrorGameRules::OnBeginChangeLevel(char const*) 304 | 40 39 CCSGameRules::LevelShutdown(void) 305 | 41 40 CTeamplayRules::Precache(void) 306 | 42 41 CMultiplayRules::RefreshSkillData(bool) 307 | 43 42 CTerrorGameRules::Think(void) 308 | 44 43 CMultiplayRules::IsAllowedToSpawn(CBaseEntity *) 309 | 45 44 CCSGameRules::EndGameFrame(void) 310 | 46 45 CGameRules::IsSkillLevel(int) 311 | 47 46 CGameRules::GetSkillLevel(void) 312 | 48 47 CGameRules::OnSkillLevelChanged(int) 313 | 49 48 CGameRules::SetSkillLevel(int) 314 | 50 49 CMultiplayRules::FAllowFlashlight(void) 315 | 51 50 CTerrorGameRules::FShouldSwitchWeapon(CBasePlayer *, CBaseCombatWeapon *) 316 | 52 51 CMultiplayRules::IsDeathmatch(void) 317 | 53 52 CTeamplayRules::IsTeamplay(void) 318 | 54 53 CMultiplayRules::IsCoOp(void) 319 | 55 54 CTerrorGameRules::GetGameDescription(void) 320 | 56 55 CTerrorGameRules::ClientConnected(edict_t *, char const*, char const*, char *, int) 321 | 57 56 CTeamplayRules::InitHUD(CBasePlayer *) 322 | 58 57 CTerrorGameRules::ClientDisconnected(edict_t *) 323 | 59 58 CTerrorGameRules::FlPlayerFallDamage(CBasePlayer *) 324 | 60 59 CTeamplayRules::FPlayerCanTakeDamage(CBasePlayer *, CBaseEntity *) 325 | 61 60 CTeamplayRules::ShouldAutoAim(CBasePlayer *, edict_t *) 326 | 62 61 CGameRules::GetAutoAimScale(CBasePlayer *) 327 | 63 62 CTerrorGameRules::GetAutoAimMode(void) 328 | 64 63 CGameRules::ShouldUseRobustRadiusDamage(CBaseEntity *) 329 | 65 64 CCSGameRules::RadiusDamage(CTakeDamageInfo const&, Vector const&, float, int, CBaseEntity *) 330 | 66 65 CCSGameRules::FlPlayerFallDeathDoesScreenFade(CBasePlayer *) 331 | 67 66 CMultiplayRules::AllowDamage(CBaseEntity *, CTakeDamageInfo const&) 332 | 68 67 CTerrorGameRules::PlayerSpawn(CBasePlayer *) 333 | 69 68 CMultiplayRules::PlayerThink(CBasePlayer *) 334 | 70 69 CTerrorGameRules::FPlayerCanRespawn(CBasePlayer *) 335 | 71 70 CMultiplayRules::FlPlayerSpawnTime(CBasePlayer *) 336 | 72 71 CTerrorGameRules::GetPlayerSpawnSpot(CBasePlayer *) 337 | 73 72 CCSGameRules::IsSpawnPointValid(CBaseEntity *, CBasePlayer *) 338 | 74 73 CMultiplayRules::AllowAutoTargetCrosshair(void) 339 | 75 74 CCSGameRules::ClientCommand(CBaseEntity *, CCommand const&) 340 | 76 75 CTerrorGameRules::ClientSettingsChanged(CBasePlayer *) 341 | 77 76 CTeamplayRules::IPointsForKill(CBasePlayer *, CBasePlayer *) 342 | 78 77 CTerrorGameRules::PlayerKilled(CBasePlayer *, CTakeDamageInfo const&) 343 | 79 78 CCSGameRules::DeathNotice(CBasePlayer *, CTakeDamageInfo const&) 344 | 80 79 CGameRules::GetDamageCustomString(CTakeDamageInfo const&) 345 | 81 80 CGameRules::AdjustPlayerDamageInflicted(float) 346 | 82 81 CGameRules::AdjustPlayerDamageTaken(CTakeDamageInfo *) 347 | 83 82 CMultiplayRules::CanHavePlayerItem(CBasePlayer *, CBaseCombatWeapon *) 348 | 84 83 CMultiplayRules::WeaponShouldRespawn(CBaseCombatWeapon *) 349 | 85 84 CMultiplayRules::FlWeaponRespawnTime(CBaseCombatWeapon *) 350 | 86 85 CMultiplayRules::FlWeaponTryRespawn(CBaseCombatWeapon *) 351 | 87 86 CMultiplayRules::VecWeaponRespawnSpot(CBaseCombatWeapon *) 352 | 88 87 CMultiplayRules::CanHaveItem(CBasePlayer *, CItem *) 353 | 89 88 CMultiplayRules::PlayerGotItem(CBasePlayer *, CItem *) 354 | 90 89 CMultiplayRules::ItemShouldRespawn(CItem *) 355 | 91 90 CMultiplayRules::FlItemRespawnTime(CItem *) 356 | 92 91 CMultiplayRules::VecItemRespawnSpot(CItem *) 357 | 93 92 CMultiplayRules::VecItemRespawnAngles(CItem *) 358 | 94 94 CGameRules::CanHaveAmmo(CBaseCombatCharacter *, int) 359 | 95 93 CGameRules::CanHaveAmmo(CBaseCombatCharacter *, char const*) 360 | 96 95 CMultiplayRules::PlayerGotAmmo(CBaseCombatCharacter *, char *, int) 361 | 97 96 CGameRules::GetAmmoQuantityScale(int) 362 | 98 97 CCSGameRules::InitDefaultAIRelationships(void) 363 | 99 98 CCSGameRules::AIClassText(int) 364 | 100 99 CMultiplayRules::FlHealthChargerRechargeTime(void) 365 | 101 100 CMultiplayRules::FlHEVChargerRechargeTime(void) 366 | 102 101 CMultiplayRules::DeadPlayerWeapons(CBasePlayer *) 367 | 103 102 CMultiplayRules::DeadPlayerAmmo(CBasePlayer *) 368 | 104 103 CTeamplayRules::GetTeamID(CBaseEntity *) 369 | 105 104 CTeamplayRules::PlayerRelationship(CBaseEntity *, CBaseEntity *) 370 | 106 105 CTeamplayRules::PlayerCanHearChat(CBasePlayer *, CBasePlayer *) 371 | 107 106 CGameRules::CheckChatText(CBasePlayer *, char *) 372 | 108 107 CTeamplayRules::GetTeamIndex(char const*) 373 | 109 108 CTeamplayRules::GetIndexedTeamName(int) 374 | 110 109 CTeamplayRules::IsValidTeam(char const*) 375 | 111 110 CTeamplayRules::ChangePlayerTeam(CBasePlayer *, char const*, bool, bool) 376 | 112 111 CCSGameRules::SetDefaultPlayerTeam(CBasePlayer *) 377 | 113 112 CCSGameRules::UpdateClientData(CBasePlayer *) 378 | 114 113 CCSGameRules::PlayTextureSounds(void) 379 | 115 114 CMultiplayRules::PlayFootstepSounds(CBasePlayer *) 380 | 116 115 CGameRules::AllowSoundscapes(void) 381 | 117 116 CCSGameRules::FAllowNPCs(void) 382 | 118 117 CMultiplayRules::EndMultiplayerGame(void) 383 | 119 118 CTerrorGameRules::WeaponTraceEntity(CBaseEntity *, Vector const&, Vector const&, unsigned int, CGameTrace *) 384 | 120 119 CTerrorGameRules::InitScripts(void) 385 | 121 120 CTerrorGameRules::CreateStandardEntities(void) 386 | 122 121 CTerrorGameRules::GetChatPrefix(bool, CBasePlayer *) 387 | 123 122 CTerrorGameRules::GetChatLocation(bool, CBasePlayer *) 388 | 124 123 CTerrorGameRules::GetChatFormat(bool, CBasePlayer *) 389 | 125 124 CGameRules::ShouldBurningPropsEmitLight(void) 390 | 126 125 CGameRules::CanEntityBeUsePushed(CBaseEntity *) 391 | 127 126 CCSGameRules::CreateCustomNetworkStringTables(void) 392 | 128 127 CGameRules::MarkAchievement(IRecipientFilter &, char const*) 393 | 129 128 CMultiplayRules::ResetMapCycleTimeStamp(void) 394 | 130 129 CTerrorGameRules::UpdateGameplayStatsFromSteam(void) 395 | 131 130 CGameRules::DoFindClientInPVS(edict_t *, unsigned char *, unsigned int) 396 | 132 131 CGameRules::GetGameTypeName(void) 397 | 133 132 CGameRules::GetGameType(void) 398 | 134 133 CGameRules::ForceSplitScreenPlayersOnToSameTeam(void) 399 | 135 134 CGameRules::IsTopDown(void) 400 | 136 135 CGameRules::GetTopDownMovementAxis(void) 401 | 137 136 CTerrorGameRules::GetMaxHumanPlayers(void)const 402 | 138 137 CMultiplayRules::GetDeathScorer(CBaseEntity *, CBaseEntity *, CBaseEntity *) 403 | 139 138 CMultiplayRules::VoiceCommand(CBaseMultiplayerPlayer *, int, int) 404 | 140 139 CMultiplayRules::HandleTimeLimitChange(void) 405 | 141 140 CMultiplayRules::InitCustomResponseRulesDicts(void) 406 | 142 141 CMultiplayRules::ShutdownCustomResponseRulesDicts(void) 407 | 143 142 CMultiplayRules::UseSuicidePenalty(void) 408 | 144 143 CMultiplayRules::GetNextLevelName(char *, int, bool) 409 | 145 144 CMultiplayRules::ChangeLevel(void) 410 | 146 145 CCSGameRules::GoToIntermission(void) 411 | 147 146 CTeamplayRules::GetCaptureValueForPlayer(CBasePlayer *) 412 | 148 147 CTeamplayRules::TeamMayCapturePoint(int, int) 413 | 149 148 CTeamplayRules::PlayerMayCapturePoint(CBasePlayer *, int, char *, int) 414 | 150 149 CTeamplayRules::PlayerMayBlockPoint(CBasePlayer *, int, char *, int) 415 | 151 150 CTeamplayRules::PointsMayBeCaptured(void) 416 | 152 151 CTeamplayRules::SetLastCapPointChanged(int) 417 | 153 152 CTeamplayRules::TimerMayExpire(void) 418 | 154 153 CTeamplayRules::SetWinningTeam(int, int, bool, bool, bool) 419 | 155 154 CTeamplayRules::SetStalemate(int, bool, bool) 420 | 156 155 CTeamplayRules::SetSwitchTeams(bool) 421 | 157 156 CTeamplayRules::ShouldSwitchTeams(void) 422 | 158 157 CTeamplayRules::HandleSwitchTeams(void) 423 | 159 158 CTeamplayRules::SetScrambleTeams(bool) 424 | 160 159 CTeamplayRules::ShouldScrambleTeams(void) 425 | 161 160 CTeamplayRules::HandleScrambleTeams(void) 426 | 162 161 CTerrorGameRules::PlayersAllowedToAttack(void)const 427 | 163 162 CTerrorGameRules::GetBuyTimeLength(void)const 428 | 164 163 CTerrorGameRules::PopulateDeathEvent(IGameEvent *, CBaseEntity const*, CBaseCombatCharacter const*, CTakeDamageInfo const&) 429 | 165 164 CTerrorGameRules::DoesEntityBlockExplosions(CBaseEntity *)const 430 | 166 165 CCSGameRules::DeathNoticeForEntity(CBaseCombatCharacter *, CTakeDamageInfo const&) 431 | 167 166 CTerrorGameRules::CheckRoundTimeExpired(void) 432 | 168 167 CTerrorGameRules::CheckWinConditions(void) 433 | 169 168 CTerrorGameRules::TerminateRound(float, int) 434 | 170 169 CTerrorGameRules::TeamFull(int) 435 | 171 170 CCSGameRules::CheckGameOver(void) 436 | 172 171 CCSGameRules::CheckMaxRounds(void) 437 | 173 172 CCSGameRules::CheckWinLimit(void) 438 | 174 173 CCSGameRules::CheckFragLimit(void) 439 | 175 174 CTerrorGameRules::CheckRestartRound(void) 440 | 176 175 CTerrorGameRules::NeededPlayersCheck(bool &) 441 | 177 176 CCSGameRules::SetAllowWeaponSwitch(bool) 442 | 178 177 CCSGameRules::GetAllowWeaponSwitch(void) 443 | 179 178 CTerrorGameRules::RestartRound(void) 444 | 180 179 CTerrorGameRules::CleanUpMap(void) 445 | 181 180 CTerrorGameRules::PopulateDeathEvent(KeyValues *, CBaseEntity const*, CBaseCombatCharacter const*, CTakeDamageInfo const&) 446 | 182 181 CTerrorGameRules::TrackPlayerZombieDamage(CTerrorPlayer *, int, bool) 447 | 183 182 CTerrorGameRules::GetPlayerZombieDamage(ZombieClassType, bool) 448 | 184 183 CTerrorGameRules::ClearPlayerZombieDamage(void) 449 | */ 450 | 451 | #endif // _INCLUDE_GAMERULES_H_ 452 | -------------------------------------------------------------------------------- /globalvars.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_GLOBALVARS_H_ 2 | #define _INCLUDE_GLOBALVARS_H_ 3 | 4 | struct CGlobalVarsBase 5 | { 6 | float realtime; 7 | int framecount; 8 | float absoluteframetime; 9 | float curtime; 10 | float frametime; 11 | int maxClients; 12 | int tickcount; 13 | float interval_per_tick; 14 | float interpolation_amount; 15 | int simTicksThisFrame; 16 | int network_protocol; 17 | void *pSaveData; // CSaveRestoreData * 18 | bool m_bClient; 19 | int nTimestampNetworkingBase; 20 | int nTimestampRandomizeWindow; 21 | }; 22 | 23 | enum MapLoadType_t 24 | { 25 | MapLoad_NewGame = 0, 26 | MapLoad_LoadGame, 27 | MapLoad_Transition, 28 | MapLoad_Background, 29 | }; 30 | 31 | struct CGlobalVars 32 | { 33 | CGlobalVarsBase base; 34 | char * mapname; 35 | int mapversion; 36 | char * startspot; 37 | MapLoadType_t eLoadType; 38 | bool bMapLoadFailed; 39 | bool deathmatch; 40 | bool coop; 41 | bool teamplay; 42 | int maxEntities; 43 | int serverCount; 44 | void *pEdicts; // edict_t * 45 | }; 46 | 47 | #endif // _INCLUDE_GLOBALVARS_H_ -------------------------------------------------------------------------------- /glow_property.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_CGLOWPROPERTY_H_ 2 | #define _INCLUDE_CGLOWPROPERTY_H_ 3 | 4 | struct CGlowProperty_vtable 5 | { 6 | void * NetworkStateChanged; //0 7 | void * GetDataDescMap; //4 8 | }; 9 | 10 | struct CGlowProperty //size 17 lux 11 | { 12 | CGlowProperty_vtable * vptr; //0 13 | int m_iGlowType; //4 14 | float m_nGlowRange; //8 15 | float m_nGlowRangeMin; //12 16 | int m_glowColorOverride; //16 17 | unsigned char m_bFlashing; //17 18 | }; 19 | 20 | #endif //_INCLUDE_CGLOWPROPERTY_H_ -------------------------------------------------------------------------------- /handle.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_HANDLE_H_ 2 | #define _INCLUDE_HANDLE_H_ 3 | 4 | struct IHandleEntity_iface 5 | { 6 | void * SetRefEHandle; 7 | void * GetRefEHandle; 8 | }; 9 | 10 | struct CBaseHandle_vtable 11 | { 12 | void * dtor1; 13 | void * dtor0; 14 | IHandleEntity_iface IHandleEntity; 15 | }; 16 | 17 | struct CHandle 18 | { 19 | CBaseHandle_vtable * vptr; 20 | unsigned long m_Index; 21 | }; 22 | 23 | #endif // _INCLUDE_MISC_H_ 24 | -------------------------------------------------------------------------------- /l4d2_linux.h: -------------------------------------------------------------------------------- 1 | #ifndef __L4D2_LINUX_H__ 2 | #define __L4D2_LINUX_H__ 3 | 4 | #define PLATFORM_LINUX 5 | #include "typestuff.h" 6 | #include "mem.h" 7 | #include "director.h" 8 | #include "nav_mesh.h" 9 | #include "terror_player.h" 10 | #include "eiface.h" 11 | #include "globalvars.h" 12 | #include "lunge.h" 13 | #include "gamerules.h" 14 | #include "weapon_info.h" 15 | #include "abilities.h" 16 | #include "Activity_enum.h" 17 | #include "baseclient.h" 18 | #include "terror_bots.h" 19 | #include "zombie_manager.h" 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /l4d2_windows.h: -------------------------------------------------------------------------------- 1 | #ifndef __L4D2_WINDOWS_H__ 2 | #define __L4D2_WINDOWS_H__ 3 | 4 | #define PLATFORM_WINDOWS 5 | #include "typestuff.h" 6 | #include "mem.h" 7 | #include "director.h" 8 | #include "nav_mesh.h" 9 | #include "terror_player.h" 10 | #include "eiface.h" 11 | #include "globalvars.h" 12 | #include "lunge.h" 13 | #include "gamerules.h" 14 | #include "abilities.h" 15 | #include "activity_enum.h" 16 | #include "zombie_manager.h" 17 | 18 | #endif 19 | -------------------------------------------------------------------------------- /lunge.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_LUNGE_H_ 2 | #define _INCLUDE_LUNGE_H_ 3 | 4 | #include "handle.h" 5 | #include "timers.h" 6 | #include "terror_player.h" 7 | 8 | // base offset 1072 9 | // size 36? 10 | struct CBaseAbility_data 11 | { 12 | char unknown[36]; 13 | }; 14 | 15 | 16 | // 1108 to 1148 17 | struct CLunge_data 18 | { 19 | CountdownTimer m_lungeAgainTimer; // 1108 20 | float m_fLungeStartTime; // 1120 21 | float m_LungeStartVector[3]; // 1124 22 | bool m_bLunging; // 1136 23 | bool m_bLungeBlocked; // 1137 24 | char unknown1138[2]; // 1138 25 | CountdownTimer m_unknownTimer; // 1140 26 | }; 27 | 28 | struct CBaseAbility; 29 | struct CBaseAbility_iface 30 | { 31 | void (* OnOwnerLeaveActiveState)(CBaseAbility *); 32 | void (* OnOwnerChanged)(CBaseAbility *, CTerrorPlayer *); 33 | void (* IsAbilityReadyToFire)(CBaseAbility *); /* const */ 34 | void (* ActivateAbility)(CBaseAbility *); 35 | void (* UpdateAbility)(CBaseAbility *); 36 | void (* OnCreate)(CBaseAbility *, CTerrorPlayer *); 37 | void (* HasAbilityTarget)(CBaseAbility *); /* const */ 38 | void (* SetSupressionTimer)(CBaseAbility *, float); 39 | void (* GetActivationTimeRemaining)(CBaseAbility *); /* const */ 40 | void (* GetButton)(CBaseAbility *); /* const */ 41 | void (* OnButtonPressed)(CBaseAbility *); 42 | void (* OnButtonReleased)(CBaseAbility *); 43 | void (* IsActive)(CBaseAbility *); /* const */ 44 | void (* IsPredicted)(CBaseAbility *); /* const */ 45 | void (* GetJumpVector)(CBaseAbility *, bool); 46 | void (* OnTouch)(CBaseAbility *, CBaseEntity *); 47 | void (* OnCrouched)(CBaseAbility *); 48 | void (* OnCrouchStart)(CBaseAbility *); 49 | void (* GetSpeedOverride)(CBaseAbility *); /* const */ 50 | void (* GetMaxSpeedOverride)(CBaseAbility *); /* const */ 51 | void (* GetFrictionMultiplier)(CBaseAbility *); /* const */ 52 | void (* CanPlayerMove)(CBaseAbility *); /* const */ 53 | void (* OnOwnerTakeDamage)(CBaseAbility *, CTakeDamageInfo *); 54 | void (* Operator_HandleAnimEvent)(CBaseAbility *, void *,CBaseCombatCharacter *); 55 | void (* OnStunned)(CBaseAbility *, float); 56 | void (* HandleCustomCollision)(CBaseAbility *, CBaseEntity *,float[3],float[3],void *,void *); 57 | void (* OnDestroy)(CBaseAbility *); 58 | void (* AbilityDebug)(CBaseAbility *, char const*,...); 59 | void (* AbilityDebug2)(CBaseAbility *, CTerrorPlayer *,char const*,...); 60 | }; 61 | 62 | struct CBaseAbility 63 | { 64 | CBaseAbility_iface *vptr; 65 | CBaseEntity_data CBaseEntity; 66 | CBaseAbility_data CBaseAbility; 67 | }; 68 | 69 | struct CLunge 70 | { 71 | CBaseAbility_iface *vptr; 72 | CBaseEntity_data CBaseEntity; 73 | CBaseAbility_data CBaseAbility; 74 | CLunge_data CLunge; 75 | }; 76 | 77 | #endif // _INCLUDE_LUNGE_H_ 78 | -------------------------------------------------------------------------------- /mem.h: -------------------------------------------------------------------------------- 1 | #ifndef __MEM_H__ 2 | #define __MEM_H__ 3 | 4 | 5 | struct IMemAlloc_iface 6 | { 7 | //not sure why there is 2 of each in parent fork I thought was CTRL+D mistake 8 | void * Alloc; 9 | void * Realloc; 10 | void * Free; 11 | void * Expand_NoLongerSupported; 12 | void * Alloc2; 13 | void * Realloc2; 14 | void * Free2; 15 | void * Expand_NoLongerSupported2; 16 | void * GetSize; 17 | void * PushAllocDbgInfo; 18 | void * PopAllocDbgInfo; 19 | void * CrtSetBreakAlloc; 20 | void * CrtSetReportMode; 21 | void * CrtIsValidHeapPointer; 22 | void * CrtIsValidPointer; 23 | void * CrtCheckMemory; 24 | void * CrtSetDbgFlag; 25 | void * CrtMemCheckpoint; 26 | void * DumpStats; 27 | void * DumpStatsFileBase; 28 | void * ComputeMemoryUsedBy; 29 | void * CrtSetReportFile; 30 | void * CrtSetReportHook; 31 | void * CrtDbgReport; 32 | void * heapchk; 33 | void * IsDebugHeap; 34 | void * GetActualDbgInfo; 35 | void * RegisterAllocation; 36 | void * RegisterDeallocation; 37 | void * GetVersion; 38 | void * CompactHeap; 39 | void * SetAllocFailHandler; 40 | void * DumpBlockStats; 41 | void * MemoryAllocFailed; 42 | void * CompactIncremental; 43 | void * OutOfMemory; 44 | void * RegionAlloc; 45 | void * RegionAlloc2; 46 | void * GlobalMemoryStatus; 47 | }; 48 | 49 | struct IMemAlloc 50 | { 51 | IMemAlloc_iface *vptr; 52 | }; 53 | 54 | #endif // __MEM_H__ -------------------------------------------------------------------------------- /nav_mesh.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_NAV_MESH_H_ 2 | #define _INCLUDE_NAV_MESH_H_ 3 | 4 | #include "game_events.h" 5 | #include "util.h" 6 | 7 | struct CNavMesh_iface 8 | { 9 | void * PreLoadAreas; 10 | void * CreateArea; 11 | void * DestroyArea; 12 | void * CreateHidingSpot; 13 | void * Reset; 14 | void * Update; 15 | void * Load; 16 | void * PostLoad; 17 | void * Save; 18 | void * GetSubVersionNumber; 19 | void * SaveCustomData; 20 | void * LoadCustomData; 21 | void * SaveCustomDataPreArea; 22 | void * LoadCustomDataPreArea; 23 | void * OnServerActivate; 24 | void * OnRoundRestart; 25 | void * OnRoundRestartPreEntity; 26 | void * OnBreakableCreated; 27 | void * OnBreakableBroken; 28 | void * OnAreaBlocked; 29 | void * OnAreaUnblocked; 30 | void * OnAvoidanceObstacleEnteredArea; 31 | void * OnAvoidanceObstacleLeftArea; 32 | void * OnEditCreateNotify; 33 | void * OnEditDestroyNotify; 34 | void * OnEditDestroyNotify2; 35 | void * OnNodeAdded; 36 | void * AddWalkableSeeds; 37 | void * CommandNavFloodSelect; 38 | void * StripNavigationAreas; 39 | void * PostCustomAnalysis; 40 | void * RemoveNavArea; 41 | void * BeginCustomAnalysis; 42 | void * EndCustomAnalysis; 43 | 44 | }; 45 | 46 | struct TerrorNavMesh_iface 47 | { 48 | void * OnDoorCreated; // lol 49 | }; 50 | 51 | struct CNavMesh_vtable 52 | { 53 | void * dtor1; 54 | void * dtor0; 55 | IGameEventListener2_iface IGameEventListener2; 56 | CNavMesh_iface CNavMesh; 57 | }; 58 | 59 | struct TerrorNavMesh_vtable 60 | { 61 | void * dtor1; 62 | void * dtor0; 63 | IGameEventListener2_iface IGameEventListener2; 64 | CNavMesh_iface CNavMesh; 65 | TerrorNavMesh_iface TerrorNavMesh; 66 | }; 67 | 68 | struct CNavArea_iface 69 | { 70 | void * OnServerActivate; 71 | void * OnRoundRestart; 72 | void * OnRoundRestartPreEntity; 73 | void * OnEnter; 74 | void * OnExit; 75 | void * OnDestroyNotify; 76 | void * OnDestroyNotify2; 77 | void * OnEditCreateNotify; 78 | void * OnEditDestroyNotify; 79 | void * OnEditDestroyNotify2; 80 | void * Save; 81 | void * Load; 82 | void * PostLoad; 83 | void * SaveToSelectedSet; 84 | void * RestoreFromSelectedSet; 85 | void * Dump; 86 | void * UpdateBlocked; 87 | void * GetDangerDecayRate; 88 | void * Draw; 89 | void * DrawFilled; 90 | void * DrawSelectedSet; 91 | void * ComputeHidingSpots; 92 | void * ComputeSniperSpots; 93 | void * ComputeSpotEncounters; 94 | void * ComputeEarliestOccupyTimes; 95 | void * CustomAnalysis; 96 | void * ComputeLighting; 97 | void * IsAbleToMergeWith; 98 | void * InheritAttributes; 99 | }; 100 | 101 | struct TerrorNavArea_iface 102 | { 103 | void * OnEnterActiveSet; 104 | void * OnLeaveActiveSet; 105 | void * ResetPotentiallyVisibleAreas; 106 | }; 107 | 108 | struct CNavArea_vtable 109 | { 110 | void * dtor1; 111 | void * dtor0; 112 | CNavArea_iface CNavArea; 113 | }; 114 | 115 | struct TerrorNavArea_vtable 116 | { 117 | void * dtor1; 118 | void * dtor0; 119 | CNavArea_iface CNavArea; 120 | TerrorNavArea_iface TerrorNavArea; 121 | }; 122 | 123 | struct CNavArea; 124 | 125 | struct NavConnect 126 | { 127 | union 128 | { 129 | unsigned int id; 130 | CNavArea * area; 131 | }; 132 | float length; 133 | }; 134 | 135 | struct CNavLadder 136 | { 137 | float m_top[3]; // 0 138 | float m_bottom[3]; // 12 139 | float m_length; // 24 140 | float m_width; // 28 141 | CNavArea * m_topForwardArea; // 32 142 | CNavArea * m_topLeftArea; // 36 143 | CNavArea * m_topRightArea; // 40 144 | CNavArea * m_topBehindArea; // 44 145 | CNavArea * m_bottomArea; // 48 146 | int m_ladderEntity; // 52 147 | int m_dir; // 56 0=up, 1=down 148 | float m_normal[3]; // 60 149 | unsigned int m_id; // 64 150 | }; 151 | 152 | struct CNavNode 153 | { 154 | float m_pos[3]; 155 | float m_normal[3]; 156 | CNavNode *m_to[4]; 157 | float m_obstacleHeight[4]; 158 | float m_obstacleStartDist[4]; 159 | float m_obstacleEndDist[4]; 160 | unsigned int m_id; 161 | int m_attributeFlags; 162 | CNavNode *m_next; 163 | CNavNode *m_nextAtXY; 164 | unsigned char m_visited; 165 | CNavNode *m_parent; 166 | bool m_isCovered; 167 | CNavArea *m_area; 168 | bool m_isBlocked[4]; 169 | bool m_crouch[4]; 170 | float m_groundHeightAboveNode[4]; 171 | bool m_isOnDisplacement; 172 | }; 173 | 174 | struct AreaBindInfo 175 | { 176 | union 177 | { 178 | CNavArea *area; 179 | unsigned int id; 180 | }; 181 | //unsigned char attributes; 182 | }; 183 | 184 | struct CNavArea_data 185 | { 186 | float m_nwCorner[3]; 187 | float m_seCorner[3]; 188 | float m_invDxCorners; 189 | float m_invDyCorners; 190 | float m_neZ; 191 | float m_swZ; 192 | float m_center[3]; 193 | unsigned char m_playerCount[2]; 194 | bool m_isBlocked[2]; // Goofy 195 | unsigned int m_marker; 196 | float m_totalCost; 197 | float m_costSoFar; 198 | CNavArea * m_nextOpen; 199 | CNavArea * m_prevOpen; 200 | unsigned int m_openMarker; 201 | int m_attributeFlags; 202 | NavConnect **m_connect[4]; 203 | CNavLadder **m_ladder[2]; 204 | int m_damagingTickCount; 205 | unsigned int m_nearNavSearchMarker; 206 | CNavArea * m_parent; 207 | int m_parentHow; // NavTraverseType Also goofy 208 | float m_pathLengthSoFar; 209 | void * m_elevator; // CFunElevator 210 | NavConnect **m_elevatorAreas; 211 | unsigned int m_id; 212 | unsigned int m_debugid; 213 | unsigned int m_place; // Place 214 | CountdownTimer m_blockedTimer; 215 | bool m_isUnderwater; 216 | bool m_isBattlefront; 217 | //float m_avoidanceObstacleHeight; 218 | CountdownTimer m_avoidanceObstacleTimer; 219 | float m_clearedTimestamp[2]; 220 | float m_danger[2]; 221 | float m_dangerTimestamp[2]; 222 | void **m_hidingSpots; // HidingSpot 223 | void **m_spotEncounters; // SpotEncounter 224 | float m_earliestOccupyTime[2]; 225 | float m_lightIntensity[ 4 ]; 226 | CNavNode *m_node[4]; 227 | CNavArea *m_prevHash; 228 | CNavArea *m_nextHash; 229 | 230 | char unknownxx[16]; 231 | NavConnect **m_incomingConnect[4]; 232 | }; 233 | 234 | 235 | DECLARE_CUTLVECTOR_FULL(CAreaBindInfoArray, AreaBindInfo, CUTLMEMORYCONSERVATIVE(AreaBindInfo)); 236 | 237 | struct TerrorNavArea_data 238 | { 239 | int m_TerrorMarker; // 292 240 | _DWORD unknown296; // 296 241 | unsigned int m_spawnAttributes; // 300 242 | AreaBindInfo m_inheritVisibilityFrom; // 304 243 | CAreaBindInfoArray m_potentiallyVisibleAreas; // 308 244 | bool m_isInheritedFrom; // 324 245 | bool m_isCleared; // 325 might just be byte/uchar 246 | IntervalTimer m_clearedTimer; // 328 starts when nav area is cleared by player 247 | char unknown332[20]; // 332 248 | short m_siUnknown352[2]; // 352 249 | IntervalTimer m_unclearedTimer; // 356 starts when nav area is uncleared 250 | char unknown364[4]; 251 | int m_hDoorEntity; 252 | }; 253 | 254 | struct CNavArea 255 | { 256 | CNavArea_vtable *vptr; 257 | CNavArea_data CNavArea; 258 | }; 259 | 260 | struct TerrorNavArea 261 | { 262 | TerrorNavArea_vtable *vptr; 263 | CNavArea_data CNavArea; 264 | TerrorNavArea_data TerrorNavArea; 265 | }; 266 | 267 | // 24 268 | struct Extent 269 | { 270 | float lo[3]; // 0 271 | float hi[3]; // 12 272 | }; 273 | 274 | // 96 275 | struct Checkpoint 276 | { 277 | CUTLVECTOR(TerrorNavArea*) m_containedAreas; // 0 278 | float m_flTotalArea; // 20 279 | Extent m_extent; // 24 (default +/-99999.0) 280 | CUTLVECTOR(TerrorNavArea*) m_containedSpawnAreas; // 48 281 | float m_flTotalSpawnArea; // 68 282 | CUTLVECTOR(int) m_containedDoors; // 72 EHANDLE vector 283 | bool m_bInUse; // 92 284 | bool m_bNoZombies; // 93 285 | bool m_bAllAliveHumanSurvivorsInside; // 94 286 | bool m_bOutward; // 95 287 | }; 288 | 289 | DECLARE_CUTLVECTOR(NavAreaVector, CNavArea *); 290 | DECLARE_CUTLVECTOR(NavLadderVector, CNavLadder *); 291 | 292 | struct WalkableSeedSpot 293 | { 294 | float pos[3]; 295 | float normal[3]; 296 | }; 297 | 298 | struct INavAvoidanceObstacle_iface 299 | { 300 | void * IsPotentiallyAbleToObstructNavAreas; 301 | void * GetNavObstructionHeight; 302 | void * CanObstructNavAreas; 303 | void * GetObstructingEntity; 304 | void * OnNavMeshLoaded; 305 | }; 306 | 307 | struct INavAvoidanceObstacle 308 | { 309 | INavAvoidanceObstacle_iface *vptr; 310 | }; 311 | 312 | // 1520? 313 | struct CNavMesh_data 314 | { 315 | int unk0; // 0 316 | bool unk4; // 4 317 | bool unk5; 318 | bool unk6; 319 | /* // ERROR - SILVERSHOT 320 | CUTLVECTOR(CUTLVECTOR(CNavArea*)) m_grid; // 8 321 | float m_gridCellSize; // 28 322 | 323 | float m_gridSizeX; // 32 324 | float m_gridSizeY; // 36 325 | float m_minX; // 40 326 | float m_minY; // 44 327 | unsigned int m_areaCount; // 48 328 | 329 | bool m_isLoaded; // 52 330 | bool m_isOutOfDate; // 53 331 | bool m_isAnalyzed; // 54 332 | char padding55; // 55 333 | char unknown56[20]; // 56 334 | CNavArea *m_hashTable[256]; // 76 335 | char **m_placeName; // 1100 336 | unsigned int m_placeCount; // 1104 337 | int m_editMode; // 1108 338 | bool m_isEditing; // 1112 339 | unsigned int m_navPlace; // 1116 340 | float m_editCursorPos[3]; // 1120 341 | CNavArea * m_markedArea; // 1132 342 | CNavArea *m_selectedArea; // 1136 343 | CNavArea *m_lastSelectedArea; // 1140 344 | int m_markedCorner; // 1144 NavCornerType 345 | float m_anchor[3]; // 1148 346 | bool m_isPlacePainting; // 1160 347 | bool m_splitAlongX; // 1161 348 | float m_splitEdge; // 1164 349 | bool m_climbableSurface; // 1168 350 | float m_surfaceNormal[3]; // 1172 351 | float m_ladderAnchor[3]; // 1184 352 | float m_ladderNormal[3]; // 1196 353 | CNavLadder *m_selectedLadder; // 1208 354 | CNavLadder *m_lastSelectedLadder; // 1212 355 | CNavLadder *m_markedLadder; // 1216 356 | CountdownTimer m_showAreaInfoTimer; // 1220 357 | NavAreaVector m_selectedSet; // 1232 358 | NavAreaVector m_dragSelectionSet; // 1252 359 | bool m_isContinuouslySelecting; // 1272 360 | bool m_isContinuouslyDeselecting; // 1273 361 | bool m_bIsDragDeselecting; // 1274 362 | int m_nDragSelectionVolumeZMax; // 1276 363 | int m_nDragSelectionVolumeZMin; // 1280 364 | CNavNode *m_currentNode; // 1284 365 | int m_generationDir; // 1288 NavDirType 366 | NavLadderVector m_ladders; // 1292 367 | int m_generationState; // 1312 GenerationStateType 368 | int m_generationMode; // 1316 GenerationModeType 369 | int m_generationIndex; // 1320 370 | int m_sampleTick; // 1324 371 | bool m_bQuitWhenFinished; // 1328 372 | float m_generationStartTime; // 1332 373 | Extent m_simplifyGenerationExtent; // 1336 374 | char *m_spawnName; // 1360 375 | CUTLVECTOR(WalkableSeedSpot) m_walkableSeeds; // 1364 376 | int m_seedIdx; // 1384 377 | int m_hostThreadModeRestoreValue; // 1388 378 | NavAreaVector m_transientAreas; // 1392 379 | NavAreaVector m_avoidanceObstacleAreas; // 1412 380 | CUTLVECTOR(INavAvoidanceObstacle) m_avoidanceObstacles; // 1432 381 | NavAreaVector m_blockedAreas; // 1452 382 | CUTLVECTOR(int) m_storedSelectedSet; // 1472 383 | char unknown1492[28]; // 1492 384 | // */ 385 | }; 386 | 387 | // starts at base + 1524 388 | // total size 1744. 389 | // size 220. 390 | struct TerrorNavMesh_data 391 | { 392 | // base 1524 393 | float m_fMapMaxFlowDistance; // 0 394 | char unknown4[108]; 395 | Checkpoint **m_checkpoints; // 112 nav areas? 396 | char unknown116[8]; // 116 397 | int m_iNumCheckpoints; // 124 Checkpoint == saferoom 398 | char unknown128[92]; 399 | }; 400 | 401 | struct CNavMesh 402 | { 403 | CNavMesh_vtable *vptr; 404 | CNavMesh_data CNavMesh; 405 | }; 406 | 407 | struct TerrorNavMesh 408 | { 409 | TerrorNavMesh_vtable * vptr; // 0 410 | CNavMesh_data CNavMesh; // 4 411 | TerrorNavMesh_data TerrorNavMesh; // 1516 412 | }; 413 | 414 | #endif // _INCLUDE_NAV_MESH_H_ -------------------------------------------------------------------------------- /network_var.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_NETWORKVAR_H_ 2 | #define _INCLUDE_NETWORKVAR_H_ 3 | 4 | struct NetworkVar; 5 | 6 | #include "game_events.h" 7 | #include "terror_player.h" 8 | 9 | 10 | 11 | struct NetworkVar_iface 12 | { 13 | void (* NetworkStateChanged)(NetworkVar*); // NetworkStateChanged(void); 14 | void (* NetworkStateChanged2)(NetworkVar*, void *); // NetworkStateChanged(void *pVar); 15 | }; 16 | 17 | struct NetworkVar 18 | { 19 | NetworkVar_iface * vptr; 20 | }; 21 | 22 | struct IServerNetworkable_iface 23 | { 24 | void * GetEntityHandle; 25 | void * GetServerClass; 26 | void * GetEdict; 27 | void * GetClassName; 28 | void * Release; 29 | void * AreaNum; 30 | void * GetBaseNetworkable; 31 | void * GetBaseEntity; 32 | void * GetPVSInfo; 33 | void * dtor; 34 | }; 35 | 36 | struct CServerNetworkProperty_vtable1 37 | { 38 | IServerNetworkable_iface IServerNetworkable; 39 | void * dtor; 40 | void * GetDataDescMap; 41 | }; 42 | struct CServerNetworkProperty_vtable2 43 | { 44 | IEventRegisterCallback_iface IEventRegisterCallback; 45 | }; 46 | 47 | struct PVSInfo_t 48 | { 49 | short m_nHeadNode; 50 | short m_nClusterCount; 51 | unsigned short *m_pClusters; 52 | short m_nAreaNum; 53 | short m_nAreaNum2; 54 | float m_vCenter[3]; 55 | unsigned short m_pClustersInline[4]; 56 | }; 57 | 58 | struct CBaseEntity; 59 | // 77 60 | struct CServerNetworkProperty 61 | { 62 | CServerNetworkProperty_vtable1 *vptr1; 63 | CServerNetworkProperty_vtable2 *vptr2; 64 | CBaseEntity *m_pOuter; 65 | void *m_pPrev; // edict_t 66 | PVSInfo_t m_PVSInfo; 67 | void *m_pServerClass; // ServerClass * 68 | int m_hParent; // EHANDLE 69 | CEventRegister m_TimerEvent; 70 | bool m_bPendingStateChange; // 76 bitfield 1 71 | }; 72 | 73 | 74 | #endif // _INCLUDE_NETWORKVAR_H_ 75 | 76 | -------------------------------------------------------------------------------- /steam_api.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_STEAM_API_H_ 2 | #define _INCLUDE_STEAM_API_H_ 3 | 4 | 5 | struct CCallbackBase_iface 6 | { 7 | void * Run; // Run( void * pvParam ); 8 | void * Run2; // Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ); 9 | void * GetCallbackSizeBytes; 10 | }; 11 | 12 | struct CCallbackBase_data 13 | { 14 | unsigned char m_nCallbackFlags; 15 | int m_iCallback; 16 | }; 17 | 18 | // template< class T, class P, bool bGameServer > 19 | // should be size 24 20 | struct CCallback 21 | { 22 | CCallbackBase_iface *vptr; 23 | CCallbackBase_data base; 24 | void * m_pObj; // T* 25 | void * m_Func; // Callback function (T::*func_t)( *P ) 26 | void * m_Unknown; 27 | }; 28 | 29 | #endif // _INCLUDE_STEAM_API_H_ -------------------------------------------------------------------------------- /terror_bots.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_TERRORBOTS_H_ 2 | #define _INCLUDE_TERRORBOTS_H_ 3 | 4 | #include "terror_player.h" 5 | 6 | struct SurvivorBot_data 7 | { 8 | CBaseEntity_data CBaseEntity; // 4 9 | CBaseAnimating_data CBaseAnimating; // 1072 10 | CBaseAnimatingOverlay_data CBaseAnimatingOverlay; // 5096 11 | CBaseFlex_data CBaseFlex; // 5116 12 | CBaseCombatCharacter_data CBaseCombatCharacter; // 6092 13 | CBasePlayer_data CBasePlayer; // 6736 14 | CAI_ExpresserHost_data CAI_ExpresserHost; // 9080 15 | CBaseMultiplayerPlayer_data CBaseMultiplayerPlayer; // 9084 16 | CCSPlayer_data CCSPlayer; // 9120 17 | CTerrorPlayer_data CTerrorPlayer; // 10844 18 | 19 | char unknown0[744]; 20 | int m_humanSpectatorUserID; 21 | int m_humanSpectatorEntIndex; 22 | }; 23 | 24 | 25 | struct SurvivorBot_vtable 26 | { 27 | void * dtor1; // 0 28 | void * dtor0; // 4 29 | IHandleEntity_iface IHandleEntity; // 8 30 | IServerUnknown_iface IServerUnknown; // 16 31 | IServerEntity_iface IServerEntity; // 28 32 | CBaseEntity_iface CBaseEntity; // 40 33 | CBaseAnimating_iface CBaseAnimating; // 800 34 | CBaseFlex_iface CBaseFlex; // 924 35 | CBaseCombatCharacter_iface CBaseCombatCharacter; // 956 36 | CBasePlayer_iface CBasePlayer; // 1372 37 | CAI_ExpresserHost_CBasePlayer__iface CAI_ExpresserHost; // 1948 38 | CBaseMultiplayerPlayer_iface CBaseMultiplayerPlayer; // 1964 39 | CCSPlayer_iface CCSPlayer; // 2000 40 | CTerrorPlayer_iface CTerrorPlayer; // 2224 41 | }; 42 | 43 | struct SurvivorBot 44 | { 45 | SurvivorBot_vtable * vptr; 46 | SurvivorBot_data SurvivorBot; 47 | }; 48 | 49 | #endif //_INCLUDE_TERRORBOTS_H_ -------------------------------------------------------------------------------- /terror_player.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_TERROR_PLAYER_H_ 2 | #define _INCLUDE_TERROR_PLAYER_H_ 3 | 4 | struct CBaseEntity; 5 | 6 | #include "terror_player_vtables.h" 7 | #include "handle.h" 8 | #include "timers.h" 9 | #include "steam_api.h" 10 | #include "network_var.h" 11 | #include "util.h" 12 | #include "collision_property.h" 13 | #include "glow_property.h" 14 | 15 | 16 | // Predefine so we can have circular pointer references. 17 | struct CTerrorPlayer; 18 | 19 | // these enums could do with being in their own files 20 | 21 | enum Entity_Flags 22 | { 23 | EFL_KILLME = (1 << 0), // This entity is marked for death -- This allows the game to actually delete ents at a safe time 24 | EFL_DORMANT = (1 << 1), // Entity is dormant, no updates to client 25 | EFL_NOCLIP_ACTIVE = (1 << 2), // Lets us know when the noclip command is active. 26 | EFL_SETTING_UP_BONES = (1 << 3), // Set while a model is setting up its bones. 27 | EFL_KEEP_ON_RECREATE_ENTITIES = (1 << 4), // This is a special entity that should not be deleted when we restart entities only 28 | 29 | EFL_HAS_PLAYER_CHILD = (1 << 4), // One of the child entities is a player. 30 | 31 | EFL_DIRTY_SHADOWUPDATE = (1 << 5), // Client only- need shadow manager to update the shadow... 32 | EFL_NOTIFY = (1 << 6), // Another entity is watching events on this entity (used by teleport) 33 | 34 | // The default behavior in ShouldTransmit is to not send an entity if it doesn't 35 | // have a model. Certain entities want to be sent anyway because all the drawing logic 36 | // is in the client DLL. They can set this flag and the engine will transmit them even 37 | // if they don't have a model. 38 | EFL_FORCE_CHECK_TRANSMIT = (1 << 7), 39 | 40 | EFL_BOT_FROZEN = (1 << 8), // This is set on bots that are frozen. 41 | EFL_SERVER_ONLY = (1 << 9), // Non-networked entity. 42 | EFL_NO_AUTO_EDICT_ATTACH = (1 << 10), // Don't attach the edict; we're doing it explicitly 43 | 44 | // Some dirty bits with respect to abs computations 45 | EFL_DIRTY_ABSTRANSFORM = (1 << 11), 46 | EFL_DIRTY_ABSVELOCITY = (1 << 12), 47 | EFL_DIRTY_ABSANGVELOCITY = (1 << 13), 48 | EFL_DIRTY_SURR_COLLISION_BOUNDS = (1 << 14), 49 | EFL_DIRTY_SPATIAL_PARTITION = (1 << 15), 50 | // UNUSED = (1<<16), 51 | 52 | EFL_IN_SKYBOX = (1 << 17), // This is set if the entity detects that it's in the skybox. 53 | // This forces it to pass the "in PVS" for transmission. 54 | EFL_USE_PARTITION_WHEN_NOT_SOL = (1 << 18), // Entities with this flag set show up in the partition even when not solid 55 | EFL_TOUCHING_FLUID = (1 << 19), // Used to determine if an entity is floating 56 | 57 | // FIXME: Not really sure where I should add this... 58 | EFL_IS_BEING_LIFTED_BY_BARNACLE = (1 << 20), 59 | EFL_NO_ROTORWASH_PUSH = (1 << 21), // I shouldn't be pushed by the rotorwash 60 | EFL_NO_THINK_FUNCTION = (1 << 22), 61 | EFL_NO_GAME_PHYSICS_SIMULATION = (1 << 23), 62 | 63 | EFL_CHECK_UNTOUCH = (1 << 24), 64 | EFL_DONTBLOCKLOS = (1 << 25), // I shouldn't block NPC line-of-sight 65 | EFL_DONTWALKON = (1 << 26), // NPC;s should not walk on this entity 66 | EFL_NO_DISSOLVE = (1 << 27), // These guys shouldn't dissolve 67 | EFL_NO_MEGAPHYSCANNON_RAGDOLL = (1 << 28), // Mega physcannon can't ragdoll these guys. 68 | EFL_NO_WATER_VELOCITY_CHANGE = (1 << 29), // Don't adjust this entity's velocity when transitioning into water 69 | EFL_NO_PHYSCANNON_INTERACTION = (1 << 30), // Physcannon can't pick these up or punt them 70 | EFL_NO_DAMAGE_FORCES = (1 << 31), // Doesn't accept forces from physics damage 71 | }; 72 | 73 | enum SolidFlags_t 74 | { 75 | FSOLID_CUSTOMRAYTEST = 0x0001, // Ignore solid type + always call into the entity for ray tests 76 | FSOLID_CUSTOMBOXTEST = 0x0002, // Ignore solid type + always call into the entity for swept box tests 77 | FSOLID_NOT_SOLID = 0x0004, // Are we currently not solid? 78 | FSOLID_TRIGGER = 0x0008, // This is something may be collideable but fires touch functions 79 | // even when it's not collideable (when the FSOLID_NOT_SOLID flag is set) 80 | FSOLID_NOT_STANDABLE = 0x0010, // You can't stand on this 81 | FSOLID_VOLUME_CONTENTS = 0x0020, // Contains volumetric contents (like water) 82 | FSOLID_FORCE_WORLD_ALIGNED = 0x0040, // Forces the collision rep to be world-aligned even if it's SOLID_BSP or SOLID_VPHYSICS 83 | FSOLID_USE_TRIGGER_BOUNDS = 0x0080, // Uses a special trigger bounds separate from the normal OBB 84 | FSOLID_ROOT_PARENT_ALIGNED = 0x0100, // Collisions are defined in root parent's local coordinate space 85 | FSOLID_TRIGGER_TOUCH_DEBRIS = 0x0200, // This trigger will touch debris objects 86 | 87 | FSOLID_MAX_BITS = 10 88 | }; 89 | 90 | enum SolidType_t 91 | { 92 | SOLID_NONE = 0, // no solid model 93 | SOLID_BSP = 1, // a BSP tree 94 | SOLID_BBOX = 2, // an AABB 95 | SOLID_OBB = 3, // an OBB (not implemented yet) 96 | SOLID_OBB_YAW = 4, // an OBB, constrained so that it can only yaw 97 | SOLID_CUSTOM = 5, // Always call into the entity for tests 98 | SOLID_VPHYSICS = 6, // solid vphysics object, get vcollide from the model and collide with that 99 | SOLID_LAST, 100 | }; 101 | 102 | /* 103 | * Collision groups 104 | * Taken from hl2sdk-ob-valve/public/const.h 105 | */ 106 | enum Collision_Group_t 107 | { 108 | COLLISION_GROUP_NONE = 0, 109 | COLLISION_GROUP_DEBRIS, // Collides with nothing but world and static stuff 110 | COLLISION_GROUP_DEBRIS_TRIGGER, // Same as debris, but hits triggers 111 | COLLISION_GROUP_INTERACTIVE_DEB, // Collides with everything except other interactive debris or debris 112 | COLLISION_GROUP_INTERACTIVE, // Collides with everything except interactive debris or debris 113 | COLLISION_GROUP_PLAYER, 114 | COLLISION_GROUP_BREAKABLE_GLASS, 115 | COLLISION_GROUP_VEHICLE, 116 | COLLISION_GROUP_PLAYER_MOVEMENT, // For HL2, same as Collision_Group_Player, for 117 | // TF2, this filters out other players and CBaseObjects 118 | COLLISION_GROUP_NPC, // Generic NPC group 119 | COLLISION_GROUP_IN_VEHICLE, // for any entity inside a vehicle 120 | COLLISION_GROUP_WEAPON, // for any weapons that need collision detection 121 | COLLISION_GROUP_VEHICLE_CLIP, // vehicle clip brush to restrict vehicle movement 122 | COLLISION_GROUP_PROJECTILE, // Projectiles! 123 | COLLISION_GROUP_DOOR_BLOCKER, // Blocks entities not permitted to get near moving doors 124 | COLLISION_GROUP_PASSABLE_DOOR, // Doors that the player shouldn't collide with 125 | COLLISION_GROUP_DISSOLVING, // Things that are dissolving are in this group 126 | COLLISION_GROUP_PUSHAWAY, // Nonsolid on client and server, pushaway in player code 127 | 128 | COLLISION_GROUP_NPC_ACTOR, // Used so NPCs in scripts ignore the player. 129 | COLLISION_GROUP_NPC_SCRIPTED // USed for NPCs in scripts that should not collide with each other 130 | }; 131 | 132 | enum MoveType 133 | { 134 | MOVETYPE_NONE = 0, /**< never moves */ 135 | MOVETYPE_ISOMETRIC, /**< For players */ 136 | MOVETYPE_WALK, /**< Player only - moving on the ground */ 137 | MOVETYPE_STEP, /**< gravity, special edge handling -- monsters use this */ 138 | MOVETYPE_FLY, /**< No gravity, but still collides with stuff */ 139 | MOVETYPE_FLYGRAVITY, /**< flies through the air + is affected by gravity */ 140 | MOVETYPE_VPHYSICS, /**< uses VPHYSICS for simulation */ 141 | MOVETYPE_PUSH, /**< no clip to world, push and crush */ 142 | MOVETYPE_NOCLIP, /**< No gravity, no collisions, still do velocity/avelocity */ 143 | MOVETYPE_LADDER, /**< Used by players only when going onto a ladder */ 144 | MOVETYPE_OBSERVER, /**< Observer movement, depends on player's observer mode */ 145 | MOVETYPE_CUSTOM, /**< Allows the entity to describe its own physics */ 146 | }; 147 | 148 | enum RenderMode 149 | { 150 | RENDER_NORMAL = 0, /**< src */ 151 | RENDER_TRANSCOLOR, /**< c*a+dest*(1-a) */ 152 | RENDER_TRANSTEXTURE, /**< src*a+dest*(1-a) */ 153 | RENDER_GLOW, /**< src*a+dest -- No Z buffer checks -- Fixed size in screen space */ 154 | RENDER_TRANSALPHA, /**< src*srca+dest*(1-srca) */ 155 | RENDER_TRANSADD, /**< src*a+dest */ 156 | RENDER_ENVIRONMENTAL, /**< not drawn, used for environmental effects */ 157 | RENDER_TRANSADDFRAMEBLEND, /**< use a fractional frame value to blend between animation frames */ 158 | RENDER_TRANSALPHAADD, /**< src + dest*(1-a) */ 159 | RENDER_WORLDGLOW, /**< Same as kRenderGlow but not fixed size in screen space */ 160 | RENDER_NONE, /**< Don't render. */ 161 | }; 162 | 163 | enum RenderFx 164 | { 165 | RENDERFX_NONE = 0, 166 | RENDERFX_PULSE_SLOW, 167 | RENDERFX_PULSE_FAST, 168 | RENDERFX_PULSE_SLOW_WIDE, 169 | RENDERFX_PULSE_FAST_WIDE, 170 | RENDERFX_FADE_SLOW, 171 | RENDERFX_FADE_FAST, 172 | RENDERFX_SOLID_SLOW, 173 | RENDERFX_SOLID_FAST, 174 | RENDERFX_STROBE_SLOW, 175 | RENDERFX_STROBE_FAST, 176 | RENDERFX_STROBE_FASTER, 177 | RENDERFX_FLICKER_SLOW, 178 | RENDERFX_FLICKER_FAST, 179 | RENDERFX_NO_DISSIPATION, 180 | RENDERFX_DISTORT, /**< Distort/scale/translate flicker */ 181 | RENDERFX_HOLOGRAM, /**< kRenderFxDistort + distance fade */ 182 | RENDERFX_EXPLODE, /**< Scale up really big! */ 183 | RENDERFX_GLOWSHELL, /**< Glowing Shell */ 184 | RENDERFX_CLAMP_MIN_SCALE, /**< Keep this sprite from getting very small (SPRITES only!) */ 185 | RENDERFX_ENV_RAIN, /**< for environmental rendermode, make rain */ 186 | RENDERFX_ENV_SNOW, /**< " " " , make snow */ 187 | RENDERFX_SPOTLIGHT, /**< TEST CODE for experimental spotlight */ 188 | RENDERFX_RAGDOLL, /**< HACKHACK: TEST CODE for signalling death of a ragdoll character */ 189 | RENDERFX_PULSE_FAST_WIDER, 190 | RENDERFX_MAX 191 | }; 192 | 193 | //not too sure if these are correct 194 | enum TraceContents 195 | { 196 | CONTENTS_EMPTY = (1 << 0), /**< No contents. */ 197 | CONTENTS_SOLID = (1 << 1), /**< an eye is never valid in a solid . */ 198 | CONTENTS_WINDOW = (1 << 2), /**< translucent, but not watery (glass). */ 199 | CONTENTS_AUX = (1 << 3), 200 | CONTENTS_GRATE = (1 << 4), /**< alpha-tested "grate" textures. Bullets/sight pass through, but solids don't. */ 201 | CONTENTS_SLIME = (1 << 5), 202 | CONTENTS_WATER = (1 << 6), 203 | CONTENTS_MIST = (1 << 7), 204 | CONTENTS_OPAQUE = (1 << 8), /**< things that cannot be seen through (may be non-solid though). */ 205 | CONTENTS_TESTFOGVOLUME = (1 << 9), 206 | CONTENTS_UNUSED1 = (1 << 10), 207 | CONTENTS_UNUSED2 = (1 << 11), 208 | CONTENTS_TEAM1 = (1 << 12), /**< per team contents used to differentiate collisions. */ 209 | CONTENTS_TEAM2 = (1 << 13), /**< between players and objects on different teams. */ 210 | CONTENTS_IGNORE_NODRAW_OPAQUE = (1 << 14), /**< ignore CONTENTS_OPAQUE on surfaces that have SURF_NODRAW. */ 211 | CONTENTS_MOVEABLE = (1 << 15), /**< hits entities which are MOVETYPE_PUSH (doors, plats, etc) */ 212 | CONTENTS_AREAPORTAL = (1 << 16), /**< remaining contents are non-visible, and don't eat brushes. */ 213 | CONTENTS_PLAYERCLIP = (1 << 17), 214 | CONTENTS_MONSTERCLIP = (1 << 18), 215 | CONTENTS_CURRENT_0 = (1 << 19), 216 | CONTENTS_CURRENT_90 = (1 << 20), 217 | CONTENTS_CURRENT_180 = (1 << 21), 218 | CONTENTS_CURRENT_270 = (1 << 22), 219 | CONTENTS_CURRENT_UP = (1 << 23), 220 | CONTENTS_CURRENT_DOWN = (1 << 24), 221 | CONTENTS_ORIGIN = (1 << 25), /**< removed before bsp-ing an entity. */ 222 | CONTENTS_MONSTER = (1 << 26), /**< should never be on a brush, only in game. */ 223 | CONTENTS_DEBRIS = (1 << 27), 224 | CONTENTS_DETAIL = (1 << 28), /**< brushes to be added after vis leafs. */ 225 | CONTENTS_TRANSLUCENT = (1 << 29), /**< auto set if any surface has trans. */ 226 | CONTENTS_LADDER = (1 << 30), 227 | CONTENTS_HITBOX = (1 << 31), /**< use accurate hitboxes on trace. */ 228 | }; 229 | 230 | struct thinkfunc_t 231 | { 232 | void * m_pfnThink; 233 | char * m_iszContext; 234 | int m_nNextThinkTick; 235 | int m_nLastThinkTick; 236 | }; 237 | 238 | struct ResponseContext_t 239 | { 240 | char * m_iszName; 241 | char * m_iszValue; 242 | float m_fExpirationTime; 243 | }; 244 | 245 | struct color32 246 | { 247 | unsigned char r, g, b, a; 248 | }; 249 | 250 | // base offset 4 251 | // size 1068 252 | struct CBaseEntity_data 253 | { 254 | char unknown0[24]; // 0 255 | CServerNetworkProperty m_Network; // 24 256 | char unknown104[20]; // 104 257 | char * m_iClassname; // 112 258 | char * m_iGlobalname; // 116 259 | char * m_iParent; // 120 260 | int m_iHammerID; // 124 261 | float m_flPrevAnimTime; // 128 262 | float m_flAnimTime; // 132 263 | float m_flSimulationTime; // 136 264 | float m_flCreateTime; // 140 265 | int m_nLastThinkTick; // 144 266 | int m_touchStamp; // 148 267 | CUTLVECTOR(thinkfunc_t) m_aThinkFunctions; // 152 268 | CUTLVECTOR(ResponseContext_t) m_ResponseContexts; // 172 269 | char *m_iszResponseContext; // 192 270 | int m_nNextThinkTick; // 196 271 | int m_fEffects; // 200 272 | void * m_pfnTouch; // 204 273 | void * m_pfnUse; // 208 274 | void * m_pfnBlocked; // 212 275 | char unknown216[16]; // 216 276 | CBaseEntity * m_pLink; // 232 277 | char *m_target; // 236 278 | int m_iMaxHealth; // 240 279 | int m_iHealth; // 244 280 | char m_lifeState; // 248 281 | char m_takedamage; // 249 282 | char *m_iszDamageFilterName; // 252 283 | int m_hDamageFilter; // 256 EHANDLE 284 | int m_debugOverlays; // 260 285 | void * m_pTimedOverlay; // 264 TimedOverlay_t * 286 | float m_flSpeed; // 268 287 | unsigned char m_nRenderFX; // 272 288 | unsigned char m_nRenderMode; // 273 289 | short m_nModelIndex; // 274 290 | color32 m_clrRender; // 276 291 | char unknown280[4]; // 280 292 | int m_nSimulationTick; // 284 293 | float m_vecEyeOffset[3]; // 288 294 | float m_EyeAngleOffset[3]; // 300 295 | int m_spawnFlags; // 312 296 | int m_iEFlags; // 316 297 | int m_fFlags; // 320 298 | char *m_iName; // 324 299 | char unknown344[40]; // 340 lux offsets are all shifted 300 | char *m_pParent; // 384 lux 301 | unsigned char m_nTransmitStateOwnedCounter; // 388 lux 302 | unsigned char m_iParentAttachment; // 389 lux 303 | unsigned char m_MoveType; // 390 lux 304 | unsigned char m_MoveCollide; //391 lux 305 | int m_hMoveParent; //392 lux 306 | int m_hMoveChild; //396 lux 307 | int m_hMovePeer; //400 lux 308 | CCollisionProperty m_Collision; //404 309 | CGlowProperty m_Glow; //496 310 | char unknown514[24]; //514 311 | char *m_hOwnerEntity; //544 312 | char *m_hEffectEntity; //548 313 | float m_fadeMinDist; //552 314 | float m_fadeMaxDist; //556 315 | float m_flFadeScale; //560 316 | int m_CollisionGroup; //564 317 | char *m_pPhysicsObject; //568 318 | char padding572[4]; //572 319 | float m_flShadowCastDistance; //576 320 | float m_flDesiredShadowCastDistance; //580 321 | int m_iInitialTeamNum; //584 322 | int m_iTeamNum; //588 323 | char padding592[2]; //592 324 | unsigned char m_nWaterType; //594 325 | unsigned char m_nWaterLevel; //595 326 | float m_flNavIgnoreUntilTime; //596 327 | char *m_hGroundEntity; //600 328 | float m_flGroundChangeTime; // 604 lux updated offset preceeding 329 | char * m_ModelName; // 592 330 | char * m_AIAddOn; // 596 331 | float m_vecBaseVelocity[3]; // 600 332 | float m_vecAbsVelocity[3]; // 612 333 | float m_vecAngVelocity[3]; // 624 334 | float m_rgflCoordinateFrame[3][4]; // 636 matrix3x4_t 335 | int m_pBlocker; // 684 EHANDLE 336 | float m_flGravity; // 688 337 | float m_flFriction; // 692 338 | float m_flElasticity; // 696 339 | float m_flOverriddenFriction; // 700 340 | float m_flLocalTime; // 704 341 | float m_flVPhysicsUpdateLocalTime; // 708 342 | float m_flMoveDoneTime; // 712 343 | int m_nPushEnumCount; // 716 344 | float m_vecAbsOrigin[3]; // 720 345 | //char unknown732[144]; // 732 346 | float m_vecVelocity[3]; // 732 347 | unsigned char m_iTextureFrameIndex; // 744 348 | bool m_bSimulatedEveryTick; // 745 349 | bool m_bAnimatedEveryTick; // 746 350 | bool m_bAlternateSorting; // 747 351 | unsigned char m_nMinCPULevel; // 748 352 | unsigned char m_nMaxCPULevel; // 749 353 | unsigned char m_nMinGPULevel; // 750 354 | unsigned char m_nMaxGPULevel; // 751 355 | bool m_bClientSideRagdoll; // 752 356 | int m_OnUser1[6]; // 756 COutputEvent (needs writing) 357 | int m_OnUser2[6]; // 780 358 | int m_OnUser3[6]; // 804 359 | int m_OnUser4[6]; // 828 360 | int m_OnKilled[6]; // 852 361 | float m_angAbsRotation[3]; // 876 362 | int m_cellwidth; // 888 363 | int m_cellbits; // 892 364 | int m_cellX; // 896 365 | int m_cellY; // 900 366 | int m_cellZ; // 904 367 | float m_vecOrigin[3]; // 908 368 | float m_angRotation[3]; // 920 369 | float m_vecViewOffset[3]; //952 lux 370 | char unknown932[102]; // 964 371 | }; // 1068 372 | 373 | struct CBaseAnimatingOverlay; 374 | // 76 375 | struct CAnimationLayer 376 | { 377 | int m_fFlags; // 0 378 | bool m_bSequenceFinished; // 4 379 | bool m_bLooping; // 5 380 | int m_nSequence; // 8 NetworkVar 381 | float m_flCycle; // 12 NetworkVar 382 | float m_flPrevCycle; // 16 NetworkVar 383 | float m_flWeight; // 20 NetworkVar 384 | float m_flPlaybackRate; // 24 385 | float m_flBlendIn; // 28 386 | float m_flBlendOut; // 32 387 | float m_flKillRate; // 36 388 | float m_flKillDelay; // 40 389 | float m_flLayerAnimtime; // 44 390 | float m_flLayerFadeOuttime; // 48 391 | int m_nActivity; // 52 Activity (ai_activity.h) 392 | int m_nPriority; // 56 393 | int m_nOrder; // 60 NetworkVar 394 | float m_flLastEventCheck; // 64 395 | float m_flLastAccess; // 68 396 | CBaseAnimatingOverlay *m_pOwnerEntity; // 72 397 | }; 398 | 399 | // 20 400 | struct CBaseAnimatingOverlay_data 401 | { 402 | CUTLVECTOR(CAnimationLayer) m_AnimOverlay; // 0 403 | }; 404 | 405 | struct CBaseAnimating_data 406 | { 407 | /*everything seems to be out of alignment by 4bytes otherwise either i'm stupid or something is going on, 408 | i think it's the former*/ 409 | char wtf_hack[4]; //FIX ME PLS 410 | char unknown_1072[20]; 411 | float m_flGroundSpeed; //1088 412 | float m_flLastEventCheck; //1092 413 | int m_nForceBone; //1096 414 | float m_vecForce[3]; //1100 415 | int m_nSkin; //1112 416 | int m_nBody; //1116 417 | int m_nHitboxSet; //1120 418 | float m_flModelScale; //1124 419 | float m_flPlaybackRate; //1128 420 | char unknown_1[20]; //1132 421 | int *m_pIk; //1152 422 | int m_iIKCounter; //1156 423 | unsigned char m_bSequenceFinished; //1160 424 | unsigned char m_bSequenceLoops; //1161 425 | char padding2[2]; //1162 426 | int m_flDissolveStartTime; //1164 427 | int m_flCycle; //1168 428 | int m_nSequence; //1172 429 | float m_flPoseParameter[24]; //1176 430 | float m_flEncodedController[4]; //1272 431 | unsigned char m_bClientSideAnimation; //1288 432 | unsigned char m_bClientSideFrameReset; //1289 433 | char padding[2]; //1290 434 | int m_nNewSequenceParity; //1292 435 | int m_nResetEventsParity; //1296 436 | int m_nMuzzleFlashParity; //1300 437 | int m_hLightingOrigin; //EHANDLE 438 | int m_iszLightingOrigin; 439 | int m_hBoneCacheHandle; //1312 440 | char m_fBoneCacheFlags[2]; //1316 441 | char padding1318[2]; 442 | float m_flFrozen; //1320 443 | char unknown_3[12]; 444 | float m_flFrozenThawRate; //1332 445 | float m_flFrozenMax; //1336 446 | int m_OnIgnite; //1340 447 | char unknown_4[3758]; 448 | }; 449 | 450 | struct CSceneEventInfo 451 | { 452 | void *m_pEvent; // 0 CChoreoEvent 453 | void *m_pScene; 454 | void * m_pActor; 455 | CHandle m_hSceneEntity; // CHandle 456 | bool m_bStarted; 457 | int m_iLayer; 458 | int m_iPriority; 459 | int m_nSequence; 460 | bool m_bIsGesture; 461 | float m_flWeight; 462 | int m_hTarget; // EHANDLE 463 | bool m_bIsMoving; 464 | bool m_bHasArrived; 465 | float m_flInitialYaw; 466 | float m_flTargetYaw; 467 | float m_flFacingYaw; 468 | int m_nType; 469 | float m_flNext; 470 | bool m_bClientSide; 471 | void *m_pExpHdr; // const flexsettinghdr_t * public/studio.h 472 | }; 473 | 474 | // 5116 in CTerrorPlayer 475 | // size 976 476 | struct CBaseFlex_data 477 | { 478 | char unknown0[496]; // 0 479 | float m_flexWeight[96]; // 496 480 | float m_viewtarget[3]; // 880 481 | int m_blinktoggle; // 892 482 | CUTLVECTOR( CSceneEventInfo ) m_SceneEvents; // 896 483 | 484 | CUTLRBTREE(void *, unsigned short) m_LocalToGlobal; // 916 CUtlRBTree< FS_LocalToGlobal_t, ushort > 485 | float m_flAllowResponsesEndTime; // 944 486 | CUTLVECTOR(void*) m_ActiveChoreoScenes; // 948 CChoreoScene* 487 | bool m_bUpdateLayerPriorities; // 968 488 | float m_flLastFlexAnimationTime; // 972 489 | }; // 976 490 | 491 | 492 | struct CAI_MoveMonitor 493 | { 494 | float m_vMark[3]; // Vector 495 | float m_flMarkTolerance; 496 | }; 497 | 498 | struct Relationship_t 499 | { 500 | int entity; // 0 EHANDLE 501 | int classType; // 4 Class_T (shareddefs.h) 502 | int disposition; // 8 Disposition_t (basecombatcharacter.h) 503 | int priority; // 12 504 | }; 505 | 506 | // size 644, offset 6092 in CTerrorPlayer 507 | struct CBaseCombatCharacter_data 508 | { 509 | char m_unknown0; 510 | bool m_bPreventWeaponPickup; // 1 511 | float m_flNextAttack; // 4 CNetworkVar( float, m_flNextAttack ); 512 | unsigned int m_eHull; // 8 Hull_t 513 | char unknown12[8]; 514 | bool m_bForceServerRagdoll; // 20 515 | char unknown21[11]; 516 | int m_bloodColor; // 32 CONFIRMED 2.2.2.0 517 | 518 | // 519 | float m_flFieldOfView; 520 | float m_HackedGunPos[3]; // Vector 521 | char * m_RelationshipString; // string_t 522 | float m_impactEnergyScale; // 523 | unsigned char m_weaponIDToIndex[38]; // 40 524 | 525 | char padding78[2]; // 78, padding will probably be automatic 526 | 527 | char unknown80[16]; // 80 I'll do these later 528 | int m_LastHitGroup; // 96 529 | float m_flDamageAccumulator; // 100 530 | int m_iDamageCount; // 104 531 | int m_CurrentWeaponProficiency; // 108 WeaponProficiency_t 532 | CUTLVECTOR(Relationship_t) m_Relationship; // 112 533 | CUTLVECTOR(int) m_hTriggerFogList; // 132 CUtlVector 534 | int m_hLastFogTrigger; // 152 EHANDLE 535 | 536 | int m_iAmmo[32]; // 156 CNetworkArrayForDerived( int, m_iAmmo, MAX_AMMO_SLOTS ); 537 | unsigned int m_hMyWeapons[56]; // 284 CNetworkArray( CBaseCombatWeaponHandle, m_hMyWeapons, MAX_WEAPONS ); 538 | int m_hActiveWeapon; // CNetworkHandle( CBaseCombatWeapon, m_hActiveWeapon ); 539 | 540 | IntervalTimer UnknownITimer544; // 541 | int m_iUnknown552; // 542 | int m_iUnknown556; // 543 | IntervalTimer UnknownITimer560; // 544 | int m_iUnknown568; // 545 | IntervalTimer UnknownITimer572; // 546 | int m_iUnknown580; // 547 | IntervalTimer UnknownITimer584; // 548 | int m_iUnknown592; // 549 | IntervalTimer UnknownITimer596; // 550 | 551 | void *m_lastNavArea; // CNavArea * 552 | CAI_MoveMonitor m_NavAreaUpdateMonitor; // 553 | int m_registeredNavTeam; // 554 | CountdownTimer UnknownCTimer628; // 555 | int m_iLastUnknown; // 628 set to -1 in constructor 556 | // 557 | }; 558 | 559 | struct CBasePlayer_data 560 | { 561 | char unknown[2344]; // 6736 562 | }; 563 | 564 | struct CAI_ExpresserHost_data { 565 | char unknown[12]; 566 | }; 567 | 568 | // From game/server/basemultiplayerplayer.h 569 | struct CBaseMultiplayerPlayer_data 570 | { 571 | int m_iIgnoreGlobalChat; // 9084 572 | float m_flAreaCaptureScoreAccumulator; // 9088 573 | float m_flCapPointScoreRate; // 9092 574 | int m_iCurrentConcept; // 9096 575 | void *m_pExpresser; // 9100 CMultiplayer_Expresser * 576 | float m_flConnectionTime; // 9104 577 | float m_flLastForcedChangeTeamTime; // 9108 578 | int m_iBalanceScore; // 9112 579 | void *m_pAchievementKV; // 9116 KeyValues * 580 | }; 581 | 582 | struct CTerrorPlayerAnimState_vtable 583 | { 584 | void * ClearAnimationState; 585 | void * DoAnimationEvent; 586 | void * CalcMainActivity; 587 | void * Update; 588 | void * Release; 589 | void * ResetMainActivity; 590 | void * TranslateActivity; 591 | void * UnTranslateActivity; 592 | void * ShowDebugInfo; 593 | void * DebugShowAnimState; 594 | void * OnGestureStart; 595 | void * OnGestureStop; 596 | void * Init; 597 | void * SelectWeightedSequence; 598 | void * RestartMainSequence; 599 | void * GetGestureSequence; 600 | void * HandleJumping; 601 | void * HandleDucking; 602 | void * HandleMoving; 603 | void * HandleSwimming; 604 | void * HandleDying; 605 | void * PlayFlinchGesture; 606 | void * CalcMovementPlaybackRate; 607 | void * ComputePoseParam_MoveYaw; 608 | void * ComputePoseParam_AimPitch; 609 | void * ComputePoseParam_AimYaw; 610 | void * EstimateYaw; 611 | void * GetCurrentMaxGroundSpeed; 612 | void * ComputeSequences; 613 | void * ComputeMainSequence; 614 | void * GetAccumulatedMotion; 615 | void * ClearAccumulatedMotion; 616 | void * GetEyeYaw; 617 | void * GetFeetYaw; 618 | void * FireEvent; 619 | }; 620 | 621 | //no idea the struct seems bigger 300+ into the object 622 | struct CTerrorPlayerAnimState 623 | { 624 | CTerrorPlayerAnimState_vtable *vptr; 625 | 626 | char unknown[24]; 627 | CTerrorPlayer *Player; 628 | char unknown_0[220]; 629 | char unknown_1[24]; 630 | int m_nSpecificMainSequence; 631 | CTerrorPlayer *Client; 632 | }; 633 | 634 | struct CCSPlayer_data 635 | { 636 | void * m_pHintMessageQueue; // 9120 CHintMessageQueue 637 | char unknown[1420]; 638 | CTerrorPlayerAnimState m_TerrorPlayerAnimState; 639 | char unknown_1[4]; 640 | CountdownTimer UnknownTimer; // 10832 641 | 642 | #ifdef PLATFORM_WINDOWS 643 | char unknownWINBYTES[16]; 644 | #endif 645 | }; 646 | 647 | 648 | 649 | // size 92 650 | struct CTakeDamageInfo 651 | { 652 | float m_vecDamageForce[3]; // 0 Vector 653 | float m_vecDamagePosition[3]; // 12 Vector 654 | float m_vecReportedPosition[3]; // 24 Vector 655 | float m_vecUnknown36[3]; // 36 someone thinks it's a vector I guess 656 | int m_hInflictor; // 48 EHANDLE 657 | int m_hAttacker; // 52 EHANDLE 658 | int m_hWeapon; // 56 EHANDLE 659 | float m_flDamage; // 60 660 | float m_flMaxDamage; // 64 661 | float m_flBaseDamage; // 68 662 | int m_bitsDamageType; // 72 663 | int m_iDamageCustom; // 76 664 | int m_iDamageStats;// 80 665 | int m_iAmmoType; // 84 666 | float m_flRadius; // 88 667 | }; 668 | 669 | // offset 10856 in CTerrorPlayer 670 | // 10872 windows (+16) 671 | struct CTerrorPlayer_data 672 | { 673 | int mm_carryVictim; // 0 674 | int m_carryAttacker; // 4 675 | char unknown8[8]; // 8 676 | float m_mainSequenceStarttime; // 16 677 | int m_grenadeLayerSequence; // 20 678 | int m_fireLayerSequence; // 24 679 | int m_flinchLayerSequence; 680 | int m_fidgetLayerSequence; 681 | int m_reloadLayerSequence; 682 | int m_reloadAltLayerSequence; // 40 683 | int m_reloadLayerNumShells; 684 | float m_grenadeLayerStartTime; 685 | float m_fireLayerStartTime; 686 | float m_flinchLayerStartTime; 687 | float m_fidgetLayerStartTime; 688 | float m_reloadLayerStartTime; 689 | float m_reloadAltLayerStartTime; // 68 690 | int m_hBuildableButtonUseEnt; // 72 691 | int m_prevNetGestureActivity[7]; // 76 692 | int m_prevNetGestureStartTime[7]; // 104 693 | int m_NetGestureSequence[7]; // 132 694 | int m_NetGestureActivity[7]; // 160 695 | float m_NetGestureStartTime[7]; // 188 696 | float m_fServerAnimStartTime; // 216 697 | #ifdef PLATFORM_WINDOWS 698 | void * m_UnknownWin220; 699 | // Add 4 to all offsets after here on windows 700 | #endif 701 | CCallback m_AchievementStatus; // 220 702 | int m_useActionTarget; // 244 703 | int m_useActionOwner; // 248 704 | int m_iCurrentUseAction; // 252 705 | CUTLVECTOR(int) m_trackedSounds; // 256 CTerrorPlayer::TrackedSoundType 706 | float m_burnPercent; // 276 707 | float m_bbqPercent; // 280 708 | int m_vocalizationSubject; // 284 set to -1 in ctor 709 | CountdownTimer m_vocalizationSubjectTimer; // 288 doubly network'd? vtable overwritten twice in ctor 710 | CountdownTimer m_nameChangeTimer; // 300 711 | CountdownTimer m_emotionTimer; // 312 712 | bool m_isMainActivityLooping; // 324 713 | int m_queuedBloodSplatters; // 328 714 | int m_queuedMeleeSlashBloodSplatters; 715 | int m_queuedMeleeClubBloodSplatters; 716 | int m_queuedMudSplatters; 717 | int m_survivorCharacter; // 344 718 | ZombieClassType m_zombieClass; // 348 719 | int m_spawnID; 720 | ZombieClassType m_randomizedClass; 721 | int m_hLastUsedEntity; // EHANDLE 722 | CountdownTimer m_tankEffectTimer; 723 | float m_lineOfScrimmageFlow; 724 | float m_initialLineOfScrimmageFlow; 725 | float m_lineOfScrimmagePos[3]; 726 | float m_lineOfScrimmageAngle[3]; 727 | float m_rearLineOfScrimmageFlow; 728 | float m_initialRearLineOfScrimmageFlow; 729 | float m_rearLineOfScrimmagePos[3]; 730 | float m_rearLineOfScrimmageAngle[3]; 731 | float m_flBecomeGhostAt; 732 | float m_scrimmageSphereCenter[3]; 733 | float m_scrimmageSphereInitialRadius; 734 | int m_scrimmageType; 735 | float m_scrimmageStartTime; 736 | float m_survivorsLineOfScrimmageDistance; 737 | CountdownTimer m_lineOfScrimmageTimer; 738 | float m_yardLinePos[3]; // 484 739 | char unknown496[48]; // 496 740 | float m_yardLineAngles[3]; // 544 741 | char unknown556[48]; 742 | bool m_survivorsCrossedLineOfScrimmage; 743 | bool m_bIsGhost; 744 | char padding[2]; 745 | 746 | // Spawn State - These look like flags, but get used like static values quite often. 747 | // These names were pulled from reversing client.dll--specifically CHudGhostPanel::OnTick()'s uses of the "#L4D_Zombie_UI_*" strings 748 | // 749 | // SPAWN_OK 0 750 | // SPAWN_DISABLED 1 "Spawning has been disabled..." (e.g. director_no_specials 1) 751 | // WAIT_FOR_SAFE_AREA 2 "Waiting for the Survivors to leave the safe area..." 752 | // WAIT_FOR_FINALE 4 "Waiting for the finale to begin..." 753 | // WAIT_FOR_TANK 8 "Waiting for Tank battle conclusion..." 754 | // SURVIVOR_ESCAPED 16 "The Survivors have escaped..." 755 | // DIRECTOR_TIMEOUT 32 "The Director has called a time-out..." (lol wat) 756 | // WAIT_FOR_STAMPEDE 64 "Waiting for the next stampede of Infected..." 757 | // CAN_BE_SEEN 128 "Can't spawn here" "You can be seen by the Survivors" 758 | // TOO_CLOSE 256 "Can't spawn here" "You are too close to the Survivors" 759 | // RESTRICTED_AREA 512 "Can't spawn here" "This is a restricted area" 760 | // INSIDE_ENTITY 1024 "Can't spawn here" "Something is blocking this spot" 761 | int m_ghostSpawnState; 762 | 763 | int m_ghostSpawnClockMaxDelay; 764 | int m_ghostSpawnClockCurrentDelay; 765 | CountdownTimer m_ghostStateThrottleTimer; 766 | CountdownTimer m_ghostAISpawnDelayTimer; 767 | bool m_ghostOkForFinaleWave; 768 | bool m_ghostCanSpawnBeforeSurvivorsLeaveSafety; 769 | bool m_ghostSawSurvivorsOutsideFinaleArea; 770 | float m_currentGhostMaterializationTime; 771 | float m_nextGhostMaterializationTime; 772 | float m_flNextShoveTime; 773 | int m_iShovePenalty; 774 | bool m_isInMissionStartArea; 775 | CountdownTimer m_pzRespawnTimer; // 668 776 | float m_classTimestamp[9]; // 680 777 | int m_classSpawnCount[9]; 778 | void *m_clientSettings; // 752 KeyValues * 779 | float m_deathPos[3]; // 756 780 | float m_timeOfDeath; 781 | float m_minDeadDuration; 782 | float m_maxDeadDuration; 783 | float m_totalDeadDuration; 784 | int m_deadCount; 785 | float m_farthestSurvivorFlowAtDeath; 786 | int m_tugTarget; // CHandle 787 | int m_dragTarget; 788 | char unknown800[16]; 789 | short m_siUnknownArray[6]; // set to -1s/0s in ctor 790 | _DWORD m_Unknown828; 791 | char unknown832[12]; 792 | bool m_isIncapacitated; // 844 793 | char padding845[3]; // 845 794 | char unknown848[4]; // 848 795 | CountdownTimer m_incapacitatedDecayTimer; // 852 796 | int m_incapacitatedCause; // CHandle 797 | IntervalTimer m_incapacitatedTimer; 798 | CountdownTimer m_selfReviveTimer; 799 | CTakeDamageInfo m_deathDamageInfo; 800 | char unknown948[8]; 801 | int m_reviveOwner; 802 | int m_reviveTarget; 803 | CountdownTimer m_reviveTimer; 804 | float m_reviveInitialForward[3]; 805 | float m_reviveOrigin[3]; 806 | int m_reviveKey; 807 | int m_currentReviveCount; // 1036 808 | bool m_bIsOnThirdStrike; 809 | bool m_bIsFirstManOut; 810 | int m_missionReviveCount; 811 | CountdownTimer m_invulnerabilityTimer; // 1048 812 | CountdownTimer m_noAvoidanceTimer; // 1060 813 | bool m_isCalm; // 1072 814 | CountdownTimer m_calmInhibit; // 1076 815 | int m_zombieState; // 1088 ZombieClassStateType 816 | char unknown1092[116]; // 1092 817 | int m_clientIntensity; // 1208 818 | bool m_isAutoCrouchEnabled; // 1212 819 | IntervalTimer m_autoCrouchTimer; 820 | char unknown1220[368]; 821 | int m_checkpointSurvivorDamage; 822 | int m_missionSurvivorDamage; 823 | int m_tankTickets; 824 | CountdownTimer m_breatheTimer; 825 | CountdownTimer m_vocalizeTimer; 826 | CountdownTimer m_vocalizePainTimer; 827 | float m_fNextIdleVocalizeTime; 828 | int m_speechPriority; // SpeechPriorityType 829 | int m_attemptedSpeechPriority; // SpeechPriorityType 830 | int m_customAbility; // 1652 831 | char unknown1656[100]; 832 | IntervalTimer m_TimeSinceLastLOS; 833 | char unknown1764[28]; 834 | bool m_hasVisisbleThreats; 835 | char padding1793[3]; 836 | char unknown1796[164]; 837 | CountdownTimer m_staggerTimer; 838 | float m_staggerStart[3]; 839 | float m_staggerDir[3]; 840 | float m_staggerDist; 841 | int m_iQueuedStaggerType; 842 | CountdownTimer m_tugTimer; // 2004 843 | float m_tugStart[3]; 844 | float m_tugDir[3]; 845 | float m_tugDist; 846 | CountdownTimer m_vomitTimer; 847 | int m_vomitingPlayer; // CHandle 848 | bool m_bAttackerExploded; // 2060 849 | CountdownTimer m_itTimer; // 2064 850 | int m_itSource; // CHandle 851 | bool m_wasIt; 852 | bool m_bVIPTarget; 853 | CountdownTimer m_adrenalineTimer; 854 | bool m_bAdrenalineActive; 855 | char padding2061[3]; 856 | char unknown2064[72]; 857 | bool m_isCulling; 858 | bool m_isRelocating; 859 | CountdownTimer m_cullTimer; 860 | CountdownTimer m_stunTimer; 861 | CountdownTimer m_stunImmunityTimer; 862 | bool m_holdingObject; 863 | float m_healthBuffer; // 2216 864 | float m_healthBufferTime; 865 | int m_healthBufferEventTick; 866 | bool m_isGoingToDie; 867 | int m_fOnFireFlags; // 2232 I'm guessing this has to do with the incendiary-extinguish bugfix 868 | float m_noiseLevel; // 2236 869 | float m_noiseLevelLatch; // 2240 870 | int m_iBloodyHandsLevel; // 2244 871 | char unknown2248[132]; 872 | float m_shoveForce[3]; 873 | bool m_airMovementRestricted; 874 | int m_positionEntity; 875 | bool m_bSurvivorPositionHidingWeapons; 876 | int m_pushEntity; 877 | float m_pushDistance; 878 | IntervalTimer m_useEntityTimer; 879 | bool m_usingMountedGun; 880 | bool m_usingMountedWeapon; 881 | int m_tongueVictim; // 2424 882 | int m_tongueOwner; 883 | IntervalTimer m_tongueVictimTimer; 884 | float m_initialTonguePullDir[3]; 885 | bool m_isHangingFromTongue; 886 | bool m_reachedTongueOwner; 887 | int m_chokingType; 888 | bool m_isProneTongueDrag; 889 | CountdownTimer m_chokeTimer; 890 | IntervalTimer m_chokeDurationTimer; 891 | bool m_hasDonePullSounds; 892 | bool m_hasDoneStrainSounds; 893 | CountdownTimer m_tongueDragDamageTimer; 894 | float m_lastTimeAlive; 895 | int m_checkpointAwardCounts[149]; // lots of awards 896 | int m_missionAwardCounts[149]; 897 | int m_checkpointZombieKills[9]; // 3696 898 | int m_missionZombieKills[9]; 899 | int m_checkpointMedkitsUsed; 900 | int m_checkpointPillsUsed; 901 | int m_missionMedkitsUsed; 902 | int m_missionPillsUsed; 903 | int m_checkpointMolotovsUsed; 904 | int m_missionMolotovsUsed; 905 | int m_checkpointPipebombsUsed; 906 | int m_missionPipebombsUsed; 907 | int m_checkpointBoomerBilesUsed; 908 | int m_missionBoomerBilesUsed; 909 | int m_checkpointAdrenalinesUsed; 910 | int m_missionAdrenalinesUsed; 911 | int m_checkpointDefibrillatorsUsed; 912 | int m_missionDefibrillatorsUsed; 913 | int m_checkpointDamageTaken; 914 | int m_missionDamageTaken; 915 | int m_checkpointReviveOtherCount; 916 | int m_missionReviveOtherCount; 917 | int m_checkpointFirstAidShared; 918 | int m_missionFirstAidShared; 919 | int m_checkpointIncaps; 920 | int m_missionIncaps; 921 | int m_checkpointDamageToTank; 922 | int m_checkpointDamageToWitch; 923 | char unknown3864[4]; 924 | int m_checkpointHeadshots; // 3868 925 | int m_checkpointHeadshotAccuracy; 926 | int m_missionHeadshotAccuracy; 927 | int m_missionAccuracy; 928 | int m_checkpointDeaths; 929 | int m_missionDeaths; 930 | int m_checkpointMeleeKills; 931 | int m_missionMeleeKills; 932 | int m_checkpointRoundsFired; 933 | int m_checkpointRoundsHit; 934 | int m_checkpointPZIncaps; 935 | int m_checkpointPZTankDamage; 936 | int m_checkpointPZHunterDamage; 937 | int m_checkpointPZSmokerDamage; 938 | int m_checkpointPZBoomerDamage; 939 | int m_checkpointPZJockeyDamage; 940 | int m_checkpointPZSpitterDamage; 941 | int m_checkpointPZChargerDamage; 942 | int m_checkpointPZKills; 943 | int m_checkpointPZPounces; 944 | int m_checkpointPZPushes; 945 | int m_checkpointPZTankPunches; 946 | int m_checkpointPZTankThrows; 947 | int m_checkpointPZHung; 948 | int m_checkpointPZPulled; 949 | int m_checkpointPZBombed; 950 | int m_checkpointPZVomited; 951 | int m_checkpointPZHighestDmgPounce; 952 | int m_checkpointPZLongestSmokerGrab; 953 | int m_checkpointPZLongestJockeyRide; 954 | int m_checkpointPZNumChargeVictims; 955 | float m_jumpSupressedUntil; 956 | bool m_hasDoneOnLeavingCheckpoint; 957 | int m_preIncapacitatedHealth; 958 | int m_preIncapacitatedHealthBuffer; 959 | bool m_hasHangPos; 960 | bool m_isHangingFromLedge; 961 | bool m_isFallingFromLedge; 962 | IntervalTimer m_hangTimer; 963 | float m_hangAirPos[3]; 964 | float m_hangPos[3]; 965 | float m_hangStandPos[3]; 966 | float m_hangNormal[3]; 967 | bool m_canLetGoOfLedge; 968 | float m_fallPos[3]; 969 | float m_landingPos[3]; 970 | int m_grabbedEntity; // EHANDLE 971 | float m_grabbedEntityOrigin[3]; 972 | float m_grabbedEntityAngles[3]; 973 | void *m_grabArea; // TerrorNavArea * 974 | CountdownTimer m_ledgeHangGroundCheckTimer; 975 | bool m_hasIncapBloodPool; 976 | int m_frustration; 977 | CountdownTimer m_FrustrationUpdateTimer; // Gates CTerrorPlayer::UpdateZombieFrustration to only run once per second. 978 | char unknown4160[956]; 979 | int m_pummelVictim; 980 | int m_pummelAttacker; 981 | int m_queuedPummelVictim; // CHandle 982 | float m_flQueuedPummelTime; 983 | int m_queuedPummelAttacker; // CHandle 984 | CountdownTimer m_getUpFromDefibTimer; 985 | int m_pounceVictim; 986 | int m_pounceAttacker; 987 | CountdownTimer m_pounceDamageTimer; 988 | bool m_isAttemptingToPounce; 989 | bool m_isPouncedOnVictim; 990 | int m_pounceHealth; 991 | float m_pounceStartPosition[3]; 992 | bool m_pounceScream; 993 | CountdownTimer m_pounceTargetTimer; 994 | IntervalTimer m_pounceDurationTimer; 995 | int m_pounceAttackCancelFrame; 996 | IntervalTimer m_lungeDurationTimer; 997 | IntervalTimer m_pounceScreamTimer; 998 | float m_jockeyStaggerValues[3]; 999 | CountdownTimer m_rideDamageTimer; 1000 | float m_flRideStartTime; 1001 | int m_queuedPounceHunter; // CHandle 1002 | float m_queuedPounceTime; 1003 | int m_jockeyVictim; 1004 | int m_jockeyAttacker; 1005 | int m_hInstancedScene; // EHANDLE 1006 | float m_jockeyForwardMove; 1007 | float m_jockeySideMove; 1008 | float m_jockeyYaw; 1009 | CountdownTimer m_specialAttachTimer; 1010 | float m_fSpecialAttachTime; 1011 | bool m_bSpecialFirmAttach; 1012 | // char padding[3]; 1013 | float m_jockeyDesiredMove[3]; 1014 | bool m_jockeyRotatedDesire; 1015 | float m_vomitStart; 1016 | float m_vomitFadeStart; 1017 | float m_bashedStart; 1018 | float m_salivaStart; 1019 | int m_knockdownReason; 1020 | IntervalTimer m_knockdownTimer; 1021 | char unknown5356[128]; 1022 | int m_iVersusTeam; // 5484 1023 | float m_flSpectatingKickTime; // 5488 1024 | float m_flFlashLightResetTimer; // 5492 1025 | bool m_bSkippingOuttro; // 5496 1026 | int m_PZEndGameVote; // 5500 EPZEndGamePanelVote 1027 | unsigned int m_iPlayerReportID; // 5504 1028 | bool m_bIdleAfterLevelTransition; // 5508 1029 | bool m_bIdleWhenTakingOverBot; 1030 | CountdownTimer m_GoAFKTimer; // 5512 1031 | int m_lookatPlayer; // 5524 1032 | bool m_bSurvivorGlowEnabled; // 5528 1033 | bool m_bBeingRelocated; 1034 | int m_iRelocatedHealth; 1035 | float m_flRelocatedAbilityTime; 1036 | float m_flRelocatedAbilityDuration; 1037 | bool m_bWasPresentAtSurvivalStart; 1038 | // padding[3] 1039 | float m_flSurvivalRecordTime; 1040 | int m_nSurvivalTopMedal; 1041 | int m_iSpecialSlot; 1042 | bool m_bBeingRevivedByDefibrillator; 1043 | char unknown_padding[4]; //unable to find anything assumed padding? 1044 | float m_flTimeIgnoreFallDamage; 1045 | bool m_bIgnoreFallDamageResetAfterImpact; 1046 | bool m_bEnableLedgeHang; 1047 | bool m_bCommentaryStatueMode; 1048 | // padding[1]; 1049 | int m_nVariantType; 1050 | float m_TimeForceExternalView; 1051 | char unknown5580[8]; 1052 | }; 1053 | 1054 | struct CBaseEntity 1055 | { 1056 | CBaseEntity_vtable * vptr; // 0 1057 | CBaseEntity_data CBaseEntity; // 4 1058 | }; 1059 | 1060 | struct CBaseFlex 1061 | { 1062 | CBaseFlex_vtable * vptr; // 0 1063 | CBaseEntity_data CBaseEntity; // 4 1064 | CBaseAnimating_data CBaseAnimating; // 1072 1065 | CBaseFlex_data CBaseFlex; // 5116 1066 | }; 1067 | 1068 | struct CBaseCombatCharacter 1069 | { 1070 | CBaseCombatCharacter_vtable * vptr; // 0 1071 | CBaseEntity_data CBaseEntity; // 4 1072 | CBaseAnimating_data CBaseAnimating; // 1072 1073 | CBaseFlex_data CBaseFlex; // 5116 1074 | CBaseCombatCharacter_data CBaseCombatCharacter; // 6092 1075 | }; 1076 | // size 16392 1077 | struct CTerrorPlayer 1078 | { 1079 | CTerrorPlayer_vtable * vptr; // 0 1080 | CBaseEntity_data CBaseEntity; // 4 1081 | CBaseAnimating_data CBaseAnimating; 1082 | CBaseFlex_data CBaseFlex; 1083 | CBaseCombatCharacter_data CBaseCombatCharacter; 1084 | CBasePlayer_data CBasePlayer; 1085 | CAI_ExpresserHost_data * CAI_ExpressorHost; // 9060 1086 | CBaseMultiplayerPlayer_data CBaseMultiplayerPlayer; 1087 | CCSPlayer_data CCSPlayer; // 9120 1088 | CTerrorPlayer_data CTerrorPlayer; // 10844 1089 | }; 1090 | 1091 | #endif // _INCLUDE_TERROR_PLAYER_H_ 1092 | -------------------------------------------------------------------------------- /terror_player_vtables.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_TERROR_PLAYER_VTABLES_H_ 2 | #define _INCLUDE_TERROR_PLAYER_VTABLES_H_ 3 | 4 | #include "network_var.h" 5 | #include "handle.h" 6 | 7 | // sizeof(IServerUnknown_iface) == 12 8 | struct IServerUnknown_iface 9 | { 10 | void * GetCollideable; // 0 11 | void * GetNetworkable; // 4 12 | void * GetBaseEntity; // 8 13 | }; 14 | 15 | // sizeof(IServerEntity_iface) == 12 16 | struct IServerEntity_iface 17 | { 18 | void * GetModelIndex; // 0 19 | void * GetModelName; // 4 20 | void * SetModelIndex; // 8 21 | }; 22 | 23 | // sizeof(CBaseEntity_iface) == 760 24 | struct CBaseEntity_iface 25 | { 26 | void * GetServerClass; // 0 27 | void * YouForgotToImplementOrDeclareServerClass; // 4 28 | void * GetDataDescMap; // 8 29 | void * GetScriptDesc; // 12 30 | void * ScriptGetModelName; // 16 31 | // ALL OFFSETS BELOW HERE ARE WRONG 32 | void * GetAIAddOn; // 16 33 | void * TestCollision; // 20 34 | void * TestHitboxes; // 24 35 | void * ComputeWorldSpaceSurroundingBox; // 28 36 | void * ShouldCollide; // 32 37 | void * SetOwnerEntity; // 36 38 | void * ShouldTransmit; // 40 39 | void * UpdateTransmitState; // 44 40 | void * SetTransmit; // 48 41 | void * GetTracerType; // 52 42 | void * Spawn; // 56 43 | void * ShouldPrecache; // 60 44 | void * Precache; // 64 45 | void * SetModel; // 68 46 | void * InitSharedVars; // 72 47 | void * PostConstructor; // 76 48 | void * PostClientActive; // 80 49 | void * OnParseMapDataFinished; // 84 50 | void * KeyValue; // 88 51 | void * KeyValue2; // 92 52 | void * KeyValue3; // 96 53 | void * GetKeyValue; // 100 54 | void * Activate; // 104 55 | void * SetParent; // 108 56 | void * SetStasis; // 112 57 | void * IsInStasis; // 116 58 | void * ObjectCaps; // 120 59 | void * GetUsePriority; // 124 60 | void * GetGlowEntity; // 128 61 | void * GetUseType; // 132 62 | void * AcceptInput; // 136 63 | void * GetPlayerName; // 140 64 | void * DrawDebugGeometryOverlays; // 144 65 | void * DrawDebugTextOverlays; // 148 66 | void * Save; // 152 67 | void * Restore; // 156 68 | void * ShouldSavePhysics; // 160 69 | void * OnSave; // 164 70 | void * OnRestore; // 168 71 | void * GetDemoRecordingState; // 172 72 | void * RequiredEdictIndex; // 176 73 | void * MoveDone; // 180 74 | void * Think; // 184 75 | NetworkVar_iface m_nNextThinkTick; // 188 76 | void * GetBaseAnimating; // 196 77 | void * GetBaseAnimatingOverlay; // 200 78 | void * GetResponseSystem; // 204 79 | void * DispatchResponse; // 208 80 | void * Classify; // 212 81 | void * DeathNotice; // 216 82 | void * ShouldAttractAutoAim; // 220 83 | void * GetAutoAimRadius; // 224 84 | void * GetAutoAimCenter; // 228 85 | void * GetBeamTraceFilter; // 232 86 | void * PassesDamageFilter; // 236 87 | void * TraceAttack; // 240 88 | void * CanBeHitByMeleeAttack; // 244 89 | void * OnTakeDamage; // 248 90 | void * TakeHealth; // 252 91 | void * IsAlive; // 256 92 | void * Event_Killed; // 260 93 | void * Event_KilledOther; // 264 94 | void * BloodColor; // 268 95 | void * IsTriggered; // 272 96 | void * IsNPC; // 276 97 | void * MyCombatCharacterPointer; // 280 98 | void * MyNextBotPointer; // 284 99 | void * MyInfectedPointer; // 288 100 | void * GetDelay; // 292 101 | void * IsMoving; // 296 102 | void * DamageDecal; // 300 103 | void * DecalTrace; // 304 104 | void * ImpactTrace; // 308 105 | void * OnControls; // 312 106 | void * HasTarget; // 316 107 | void * IsPlayer; // 320 108 | void * IsNetClient; // 324 109 | void * IsTemplate; // 328 110 | void * IsBaseObject; // 332 111 | void * IsBaseTrain; // 336 112 | void * IsElevator; // 340 113 | void * IsBaseCombatWeapon; // 344 114 | void * MyCombatWeaponPointer; // 348 115 | void * GetServerVehicle; // 352 116 | void * IsViewable; // 356 117 | void * ChangeTeam; // 360 118 | void * OnEntityEvent; // 364 119 | void * CanStandOn; // 368 120 | void * CanStandOn2; // 372 121 | void * GetEnemy; // 376 122 | void * GetEnemy2; // 380 123 | void * Use; // 384 124 | void * StartTouch; // 388 125 | void * Touch; // 392 126 | void * EndTouch; // 396 127 | void * StartBlocked; // 400 128 | void * Blocked; // 404 129 | void * EndBlocked; // 408 130 | void * PhysicsSimulate; // 412 131 | void * PhysicsLandedOnGround; // 416 132 | void * UpdateOnRemove; // 420 133 | void * StopLoopingSounds; // 424 134 | void * SUB_AllowedToFade; // 428 135 | void * Teleport; // 432 136 | void * NotifySystemEvent; // 436 137 | void * MakeTracer; // 440 138 | void * GetTracerAttachment; // 444 139 | void * FireBullets; // 448 140 | void * DoImpactEffect; // 452 141 | void * Respawn; // 456 142 | void * IsLockedByMaster; // 460 143 | void * GetMaxHealth; // 464 144 | void * ModifyOrAppendCriteria; // 468 145 | void * ModifyOrAppendDerivedCriteria; // 472 146 | NetworkVar_iface m_iMaxHealth; // 476 147 | NetworkVar_iface m_iHealth; // 484 148 | NetworkVar_iface m_lifeState; // 492 149 | NetworkVar_iface m_takedamage; // 500 150 | void * GetDamageType; // 508 151 | void * GetDamage; // 512 152 | void * SetDamage; // 516 153 | void * EyePosition; // 520 154 | void * EyeAngles; // 524 155 | void * LocalEyeAngles; // 528 156 | void * EarPosition; // 532 157 | void * BodyTarget; // 536 158 | void * HeadTarget; // 540 159 | void * GetVectors; // 544 160 | void * GetViewOffset; // 548 161 | void * SetViewOffset; // 552 162 | void * GetSmoothedVelocity; // 556 163 | void * GetVelocity; // 560 164 | void * GetFriction; // 564 165 | void * FVisible; // 568 166 | void * FVisible2; // 572 167 | void * CanBeSeenBy; // 576 168 | void * GetAttackDamageScale; // 580 169 | void * GetReceivedDamageScale; // 584 170 | void * OnGroundChanged; // 588 171 | void * GetGroundVelocityToApply; // 592 172 | void * PhysicsSplash; // 596 173 | void * Splash; // 600 174 | void * WorldSpaceCenter; // 604 175 | void * GetSoundEmissionOrigin; // 608 176 | void * CreateVPhysics; // 612 177 | void * ForceVPhysicsCollide; // 616 178 | void * VPhysicsDestroyObject; // 620 179 | void * VPhysicsUpdate; // 624 180 | void * VPhysicsTakeDamage; // 628 181 | void * VPhysicsShadowCollision; // 632 182 | void * VPhysicsShadowUpdate; // 636 183 | void * VPhysicsCollision; // 640 184 | void * VPhysicsFriction; // 644 185 | void * UpdatePhysicsShadowToCurrentPosition; // 648 186 | void * VPhysicsGetObjectList; // 652 187 | void * VPhysicsIsFlesh; // 656 188 | void * CanPushEntity; // 660 189 | void * HasPhysicsAttacker; // 664 190 | void * PhysicsSolidMaskForEntity; // 668 191 | void * ResolveFlyCollisionCustom; // 672 192 | void * PerformCustomPhysics; // 676 193 | void * GetStepOrigin; // 680 194 | void * GetStepAngles; // 684 195 | void * ShouldDrawWaterImpacts; // 688 196 | NetworkVar_iface m_fFlags; // 692 197 | NetworkVar_iface m_nWaterLevel; // 700 198 | NetworkVar_iface m_hGroundEntity; // 708 199 | NetworkVar_iface m_vecBaseVelocity; // 716 200 | NetworkVar_iface m_flFriction; // 724 201 | NetworkVar_iface m_vecVelocity; // 732 202 | NetworkVar_iface m_bClientSideRagdoll; // 740 203 | NetworkVar_iface m_vecViewOffset; // 748 204 | void * RunVScripts; // 756 205 | }; 206 | 207 | // sizeof(CBaseAnimating_iface) == 124 208 | struct CBaseAnimating_iface 209 | { 210 | void * GetIdealSpeed; // 200 211 | void * GetIdealAccel; 212 | void * StudioFrameAdvance; 213 | void * ReachedEndOfSequence; 214 | void * OnSequenceSet; 215 | void * IsActivityFinished; 216 | void * GetSequenceGroundSpeed; 217 | void * SelectWeightedSequence; // 207 218 | void * ClampRagdollForce; 219 | void * BecomeRagdollOnClient; 220 | void * IsRagdoll; 221 | void * CanBecomeRagdoll; 222 | void * GetSkeleton; 223 | void * GetBoneTransform; 224 | void * SetupBones; 225 | void * CalculateIKLocks; 226 | void * DispatchAnimEvents; 227 | void * HandleAnimEvent; 228 | void * PopulatePoseParameters; 229 | void * GetAttachment; 230 | void * InitBoneControllers; 231 | void * GetGroundSpeedVelocity; 232 | void * IsViewModel; 233 | void * Ignite; 234 | void * IgniteLifetime; 235 | void * IgniteUseCheapEffect; 236 | void * Extinguish; 237 | void * IsFrozen; 238 | void * Freeze; 239 | void * Unfreeze; 240 | void * Dissolve; 241 | void * SetLightingOrigin; 242 | }; 243 | 244 | // sizeof(CBaseFlex_iface) == 32 245 | struct CBaseFlex_iface 246 | { 247 | void * SetViewtarget; // 0 248 | void * StartSceneEvent; // 4 249 | void * ProcessSceneEvents; // 8 250 | void * ProcessSceneEvent; // 12 251 | void * ClearSceneEvent; // 16 252 | void * CheckSceneEventCompletion; // 20 253 | void * PlayScene; // 24 254 | void * PlayAutoGeneratedSoundScene; // 28 255 | }; 256 | 257 | // sizeof(CBaseCombatCharacter_iface) == 416 258 | struct CBaseCombatCharacter_iface 259 | { 260 | void * GetPhysicsImpactDamageTable; 261 | void * FInViewCone; 262 | void * FInViewCone2; 263 | void * FInAimCone; 264 | void * FInAimCone2; 265 | void * ShouldShootMissTarget; 266 | void * FindMissTarget; 267 | void * HandleInteraction; 268 | void * BodyAngles; 269 | void * BodyDirection2D; 270 | void * BodyDirection3D2; 271 | void * HeadDirection2D; 272 | void * HeadDirection3D2; 273 | void * EyeDirection2D; 274 | void * EyeDirection3D2; 275 | void * IsHiddenByFog; 276 | void * IsHiddenByFog2; 277 | void * IsHiddenByFog3; 278 | void * GetFogObscuredRatio; 279 | void * GetFogObscuredRatio2; 280 | void * GetFogObscuredRatio3; 281 | void * GetFogParams; 282 | void * IsLookingTowards; 283 | void * IsLookingTowards2; 284 | void * IsInFieldOfView; 285 | void * IsInFieldOfView2; 286 | void * IsLineOfSightClear; 287 | void * IsLineOfSightClear2; 288 | void * OnFootstep; 289 | void * GetGroundSurface; 290 | void * GetFootstepSound; 291 | void * AreFootstepsAudible; 292 | void * IsFootstepAudible; 293 | void * GetFootstepRunThreshold; 294 | void * GiveAmmo; 295 | void * RemoveAmmo; 296 | void * NPC_TranslateActivity; 297 | void * Weapon_TranslateActivity; 298 | void * Weapon_FrameUpdate; 299 | void * Weapon_HandleAnimEvent; 300 | void * Weapon_CanUse; 301 | void * Weapon_Equip; 302 | void * Weapon_EquipAmmoOnly; 303 | void * Weapon_Drop; 304 | void * Weapon_Switch; 305 | void * Weapon_ShootPosition; 306 | void * Weapon_CanSwitchTo; 307 | void * Weapon_SlotOccupied; 308 | void * Weapon_GetSlot; 309 | void * AddPlayerItem; 310 | void * RemovePlayerItem; 311 | void * CanBecomeServerRagdoll; 312 | void * OnTakeDamage_Alive; 313 | void * OnTakeDamage_Dying; 314 | void * OnTakeDamage_Dead; 315 | void * GetAliveDuration; 316 | void * OnFriendDamaged; 317 | void * NotifyFriendsOfDamage; 318 | void * HasEverBeenInjured; 319 | void * GetTimeSinceLastInjury; 320 | void * OnPlayerKilledOther; 321 | void * GetDeathActivity; 322 | void * CorpseGib; 323 | void * CorpseFade; 324 | void * HasHumanGibs; 325 | void * HasAlienGibs; 326 | void * ShouldGib; 327 | void * OnKilledNPC; 328 | void * Event_Gibbed; 329 | void * Event_Dying; 330 | void * BecomeRagdoll; 331 | void * FixupBurningServerRagdoll; 332 | void * BecomeRagdollBoogie; 333 | void * CheckTraceHullAttack; 334 | void * CheckTraceHullAttack2; 335 | void * PushawayTouch; 336 | void * IRelationType; 337 | void * IRelationPriority; 338 | void * IsInAVehicle; 339 | void * GetVehicle; 340 | void * GetVehicleEntity; 341 | void * ExitVehicle; 342 | void * CalcWeaponProficiency; 343 | void * GetAttackSpread; 344 | void * GetSpreadBias; 345 | void * DoMuzzleFlash; 346 | void * AddEntityRelationship; 347 | void * RemoveEntityRelationship; 348 | void * AddClassRelationship; 349 | void * OnChangeActiveWeapon; 350 | void * GetLastKnownArea; 351 | void * IsAreaTraversable; 352 | void * ClearLastKnownArea; 353 | void * UpdateLastKnownArea; 354 | void * OnNavAreaChanged; 355 | void * OnNavAreaRemoved; 356 | void * GetClass; 357 | void * CanBeA; 358 | void * OnHitByVomitJar; 359 | void * IsIT; 360 | void * OnPursuedBy; 361 | void * IsGhost; 362 | NetworkVar_iface m_iAmmo; 363 | }; 364 | 365 | // sizeof(CBasePlayer_iface) == 576 366 | struct CBasePlayer_iface 367 | { 368 | void * CreateViewModel; 369 | void * SetupVisibility; 370 | void * WantsLagCompensationOnEntity; 371 | void * SharedSpawn; 372 | void * ForceRespawn; 373 | void * InitialSpawn; 374 | void * InitHUD; 375 | void * ShowViewPortPanel; 376 | void * PlayerDeathThink; 377 | void * Jump; 378 | void * Duck; 379 | void * Cough; 380 | void * PreThink; 381 | void * PostThink; 382 | void * DamageEffect; 383 | void * OnDamagedByExplosion; 384 | void * ShouldFadeOnDeath; 385 | void * IsFakeClient; 386 | void * GetCharacterDisplayName; 387 | void * GetPlayerMins; 388 | void * GetPlayerMaxs; 389 | void * UpdateCollisionBounds; 390 | void * CalcRoll; 391 | void * PackDeadPlayerItems; 392 | void * RemoveAllItems; 393 | void * IsRunning; 394 | void * Weapon_SetLast; 395 | void * Weapon_ShouldSetLast; 396 | void * Weapon_ShouldSelectItem; 397 | void * HasUnlockableWeapons; 398 | void * UpdateClientData; 399 | void * UpdateBattery; 400 | void * ExitLadder; 401 | void * GetLadderSurface; 402 | void * IsAbleToAutoCenterOnLadders; 403 | void * SetFlashlightEnabled; 404 | void * FlashlightIsOn; 405 | void * FlashlightTurnOn; 406 | void * FlashlightTurnOff; 407 | void * IsIlluminatedByFlashlight; 408 | void * UpdateStepSound; 409 | void * PlayStepSound; 410 | void * GetStepSoundVelocities; 411 | void * SetStepSoundTime; 412 | void * DeathSound; 413 | void * GetSoundscapeListener; 414 | void * WeaponHasInfiniteAmmo; 415 | void * SetAnimation; 416 | void * OnMainActivityComplete; 417 | void * OnMainActivityInterrupted; 418 | void * ImpulseCommands; 419 | void * CheatImpulseCommands; 420 | void * ClientCommand; 421 | void * StartObserverMode; 422 | void * StopObserverMode; 423 | void * ModeWantsSpectatorGUI; 424 | void * SetObserverMode; 425 | void * GetObserverMode; 426 | void * SetObserverTarget; 427 | void * ObserverUse; 428 | void * GetObserverTarget; 429 | void * FindNextObserverTarget; 430 | void * GetNextObserverSearchStartPoint; 431 | void * PassesObserverFilter; 432 | void * IsValidObserverTarget; 433 | void * CheckObserverSettings; 434 | void * JumptoPosition; 435 | void * ForceObserverMode; 436 | void * ResetObserverMode; 437 | void * ValidateCurrentObserverTarget; 438 | void * AttemptToExitFreezeCam; 439 | void * WantsRoamingObserverMode; 440 | void * StartReplayMode; 441 | void * StopReplayMode; 442 | void * GetDelayTicks; 443 | void * GetReplayEntity; 444 | void * CreateCorpse; 445 | void * EntSelectSpawnPoint; 446 | void * GetInVehicle; 447 | void * LeaveVehicle; 448 | void * OnVehicleStart; 449 | void * OnVehicleEnd; 450 | void * BumpWeapon; 451 | void * SelectLastItem; 452 | void * SelectItem; 453 | void * SelectItem2; 454 | void * ItemPostFrame; 455 | void * GiveNamedItem; 456 | void * CheckTrainUpdate; 457 | void * SetPlayerUnderwater; 458 | void * PlayWadeSound; 459 | void * CanBreatheUnderwater; 460 | void * CanRecoverCurrentDrowningDamage; 461 | void * PlayerUse; 462 | void * PlayUseDenySound; 463 | void * FindUseEntity; 464 | void * IsUseableEntity; 465 | void * OnUseEntity; 466 | void * PickupObject; 467 | void * ForceDropOfCarriedPhysObjects; 468 | void * GetHeldObjectMass; 469 | void * IsHoldingEntity; 470 | void * UpdateGeigerCounter; 471 | void * GetAutoaimVector; 472 | void * GetAutoaimVector2; 473 | void * GetAutoaimVector3; 474 | void * GetAutoaimVector4; 475 | void * ShouldAutoaim; 476 | void * ForceClientDllUpdate; 477 | void * ProcessUsercmds; 478 | void * PlayerRunCommand; 479 | void * ChangeTeam; 480 | void * CanHearAndReadChatFrom; 481 | void * CanSpeak; 482 | void * ModifyOrAppendPlayerCriteria; 483 | void * CheckChatText; 484 | void * CreateRagdollEntity; 485 | void * ShouldAnnounceAchievement; 486 | void * ForceChangeTeam; 487 | void * IsFollowingPhysics; 488 | void * InitVCollision; 489 | void * UpdatePhysicsShadowToCurrentPosition; 490 | void * Hints; 491 | void * IsReadyToPlay; 492 | void * IsReadyToSpawn; 493 | void * ShouldGainInstantSpawn; 494 | void * ResetPerRoundStats; 495 | void * ResetScores; 496 | void * EquipSuit; 497 | void * RemoveSuit; 498 | void * OnUseEntityChanged; 499 | void * CommitSuicide; 500 | void * CommitSuicide2; 501 | void * IsBot; 502 | void * GetExpresser; 503 | void * SpawnArmorValue; 504 | void * UpdateTonemapController; 505 | NetworkVar_iface m_ArmorValue; 506 | void * IsAutoCrouched; 507 | void * GetAvailableSteadyStateSlots; 508 | void * OnSpeak; 509 | void * OnVoiceTransmit; 510 | void * PlayerSolidMask; 511 | }; 512 | 513 | // CAI_ExpressorHost 514 | // sizeof(CAI_ExpresserHost_CBasePlayer__iface) == 16 515 | struct CAI_ExpresserHost_CBasePlayer__iface 516 | { 517 | void * NoteSpreaking; // 0 518 | void * Speak; // 4 519 | void * Speak2; // 8 520 | void * PostSpeakDispatchResponse; // 12 521 | }; 522 | 523 | // sizeof(CBaseMultiplayerPlayer_iface) == 36 524 | struct CBaseMultiplayerPlayer_iface 525 | { 526 | void * SpeakIfAllowed; // 0 527 | void * SpeakConceptIfAllowed; // 4 528 | void * CanSpeakVoiceCommand; // 8 529 | void * ShouldShowVoiceSubtitleToEnemy; // 12 530 | void * NoteSpokeVoiceCommand; // 16 531 | void * OnAchievementEarned; // 20 532 | void * GetMultiplayerExpresser; // 24 533 | void * CalculateTeamBalanceScore; // 28 534 | void * CreateExpresser; // 32 535 | }; 536 | 537 | // sizeof(CCSPlayer_iface) == 224 538 | struct CCSPlayer_iface 539 | { 540 | void * FirePlayerHurtEvent; // 0 541 | void * OnTakeDamageInternal; // 4 542 | void * AllowDamage; // 8 543 | void * GetHealthBuffer; // 12 544 | void * IsIncapacitated; // 16 545 | void * GetAdjustedDamage; // 20 546 | void * DoBloodEffect; // 24 547 | void * GiveNamedItem; // 28 548 | void * IsBeingGivenItem; // 32 549 | void * DoAnimationEvent; // 36 550 | void * KickBack; // 40 551 | void * IsImmobilized; // 44 552 | void * GiveDefaultItems; // 48 553 | void * RoundRespawn; // 52 554 | void * ObserverRoundRespawn; // 56 555 | void * Blind; // 60 556 | void * Deafen; // 64 557 | void * ResetMaxSpeed; // 68 558 | void * HandleCommand_JoinClass; // 72 559 | void * HandleCommand_JoinTeam; // 76 560 | void * GetIntoGame; // 80 561 | void * WantsMOTD; // 84 562 | void * AutoSelectTeam; // 88 563 | void * OnLeaveActiveState; // 92 564 | void * Pain; // 96 565 | void * OnTeamChanged; // 100 566 | void * CanAttack; // 104 567 | void * OnWeaponFired; // 108 568 | void * QueueScreenBloodSplatter; // 112 569 | void * OnReloadStart; // 116 570 | void * CreateNoise; // 120 571 | void * OnPreThinkObserverMode; // 124 572 | void * OnEnterRescueState; // 128 573 | void * OnPreThinkRescueState; // 132 574 | void * OnLeaveRescueState; // 136 575 | void * OnEnterGhostState; // 140 576 | void * OnPreThinkGhostState; // 144 577 | void * OnLeaveGhostState; // 148 578 | void * OnEnterIntroCameraState; // 152 579 | void * OnPreThinkIntroCameraState; // 156 580 | void * OnLeaveIntroCameraState; // 160 581 | void * OnLeaveDeathAnimState; // 164 582 | void * OnLeaveDeathWaitForKeyState; // 168 583 | void * CanUseFlashlight; // 172 584 | void * UpdateAddonBits; // 176 585 | void * UpdateRadar; // 180 586 | void * SelectDeathPose; // 184 587 | void * CanChangeName; // 188 588 | void * ChangeName; // 192 589 | void * IsProgressBarActive; // 196 590 | void * CreateRagdollEntity; // 200 591 | void * GetRagdollType; // 204 592 | void * SetModelFromClass; // 208 593 | void * SetModelFromClassAtSpawn; // 212 594 | void * DropWeapons; // 216 595 | void * RecordDamageTaken; // 220 596 | }; 597 | 598 | // sizeof(CTerrorPlayer_iface) == 124 599 | struct CTerrorPlayer_iface 600 | { 601 | void * OnPlayerDisconnected; // 0 602 | void * OnSpawn; // 4 603 | void * RestoreSpawn; // 8 604 | void * OnBeginChangeLevel; // 12 605 | void * OnEndChangeLevel; // 16 606 | void * HandleCommand_JoinTeam; // 20 607 | void * SetDoingRestore; // 24 608 | void * GetTeamSwitchRule; // 28 609 | void * IsReadyToShove; // 32 610 | void * SetNextShoveTime; // 36 611 | void * CommitSuicide; // 40 612 | void * OnSpokeConcept; // 44 613 | void * RestoreWeapons; // 48 614 | void * DropWeaponInSlot; // 52 615 | void * QueueScreenBloodSplatter; // 56 616 | void * OnReloadEnd; // 60 617 | void * OnReloadAbort; // 64 618 | void * OnAttackSuccess; // 68 619 | void * CanBeShoved; // 72 620 | void * IsWielding; // 76 621 | void * IsWieldingWeaponOfType; // 80 622 | void * IsZoomed; // 84 623 | void * CanPlayerJump; // 88 624 | void * PlayerZombieAbortControl; // 92 625 | void * CanBeShoved2; // 96 626 | void * SetClass; // 100 627 | void * SetCharacter; // 104 628 | void * OnRevived; // 108 629 | void * OnAwardEarned; // 112 630 | void * OnAwardLost; // 116 631 | void * ScoreKilledZombie; // 120 632 | }; 633 | 634 | struct CBaseEntity_vtable 635 | { 636 | void * dtor1; // 0 637 | void * dtor0; // 4 638 | IHandleEntity_iface IHandleEntity; // 8 639 | IServerUnknown_iface IServerUnknown; // 16 640 | IServerEntity_iface IServerEntity; // 28 641 | CBaseEntity_iface CBaseEntity; // 40 642 | }; 643 | 644 | 645 | struct CBaseFlex_vtable 646 | { 647 | void * dtor1; // 0 648 | void * dtor0; // 4 649 | IHandleEntity_iface IHandleEntity; // 8 650 | IServerUnknown_iface IServerUnknown; // 16 651 | IServerEntity_iface IServerEntity; // 28 652 | CBaseEntity_iface CBaseEntity; // 40 653 | CBaseAnimating_iface CBaseAnimating; // 800 654 | CBaseFlex_iface CBaseFlex; // 924 655 | }; 656 | 657 | struct CBaseCombatCharacter_vtable 658 | { 659 | void * dtor1; // 0 660 | void * dtor0; // 4 661 | IHandleEntity_iface IHandleEntity; // 8 662 | IServerUnknown_iface IServerUnknown; // 16 663 | IServerEntity_iface IServerEntity; // 28 664 | CBaseEntity_iface CBaseEntity; // 40 665 | CBaseAnimating_iface CBaseAnimating; // 800 666 | CBaseFlex_iface CBaseFlex; // 924 667 | CBaseCombatCharacter_iface CBaseCombatCharacter; // 956 668 | }; 669 | 670 | struct CTerrorPlayer_vtable 671 | { 672 | void * dtor1; // 0 673 | void * dtor0; // 4 674 | IHandleEntity_iface IHandleEntity; // 8 675 | IServerUnknown_iface IServerUnknown; // 16 676 | IServerEntity_iface IServerEntity; // 28 677 | CBaseEntity_iface CBaseEntity; // 40 678 | CBaseAnimating_iface CBaseAnimating; // 800 679 | CBaseFlex_iface CBaseFlex; // 924 680 | CBaseCombatCharacter_iface CBaseCombatCharacter; // 956 681 | CBasePlayer_iface CBasePlayer; // 1372 682 | CAI_ExpresserHost_CBasePlayer__iface CAI_ExpresserHost; // 1948 683 | CBaseMultiplayerPlayer_iface CBaseMultiplayerPlayer; // 1964 684 | CCSPlayer_iface CCSPlayer; // 2000 685 | CTerrorPlayer_iface CTerrorPlayer; // 2224 686 | }; 687 | 688 | struct CAI_ExpresserSink_vtable 689 | { 690 | void * OnSpokeConcept; // 0 691 | void * OnStartSpeaking; // 4 692 | void * UseSemaphore; // 8 693 | }; 694 | 695 | #endif // _INCLUDE_TERROR_PLAYER_VTABLES_H_ -------------------------------------------------------------------------------- /timers.h: -------------------------------------------------------------------------------- 1 | #ifndef L4D2SDK_TIMERS_H 2 | #define L4D2SDK_TIMERS_H 3 | 4 | #include "network_var.h" 5 | 6 | struct IntervalTimer { 7 | NetworkVar_iface *vptr; 8 | float m_timestamp; 9 | }; 10 | 11 | struct CountdownTimer { 12 | NetworkVar_iface *vptr; 13 | float m_duration; 14 | float m_timestamp; 15 | }; 16 | 17 | #endif // L4D2SDK_TIMERS_H 18 | -------------------------------------------------------------------------------- /typestuff.h: -------------------------------------------------------------------------------- 1 | #ifndef __TYPESTUFF_H__ 2 | #define __TYPESTUFF_H__ 3 | 4 | #define bool unsigned char 5 | 6 | // Define these types for Ghidra so you don't have to add them as -D flags 7 | 8 | #ifndef _DWORD 9 | #define _DWORD unsigned int 10 | #endif 11 | 12 | #ifndef _BYTE 13 | #define _BYTE unsigned char 14 | #endif 15 | 16 | enum ZombieClassType 17 | { 18 | ZC_NONE, 19 | ZC_SMOKER, 20 | ZC_BOOMER, 21 | ZC_HUNTER, 22 | ZC_SPITTER, 23 | ZC_JOCKEY, 24 | ZC_CHARGER, 25 | ZC_WITCH, 26 | ZC_TANK 27 | }; 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /util.h: -------------------------------------------------------------------------------- 1 | #ifndef _UTIL_H_ 2 | #define _UTIL_H_ 3 | 4 | 5 | struct CUtlMemory 6 | { 7 | void * m_pMemory; 8 | int m_nAllocationCount; 9 | int m_nGrowSize; 10 | }; 11 | 12 | struct CUtlMemoryConservative 13 | { 14 | void * m_pMemory; 15 | #ifdef PLATFORM_LINUX 16 | unsigned int m_nCurAllocSize; 17 | #endif 18 | }; 19 | 20 | #define CUTLMEMORY_FULL(T,I) struct {T * m_pMemory; I m_nAllocationCount; I m_nGrowSize;} 21 | 22 | #define CUTLMEMORY(T) CUTLMEMORY_FULL( T , int ) 23 | 24 | #define CUTLMEMORYFIXEDGROWABLE_FULL(T,SIZE,I) struct {CUTLMEMORY_FULL( T , I ) CUtlMemory; int m_nMallocGrowSize; T m_pFixedMemory[ SIZE ];} 25 | 26 | #define CUTLMEMORYFIXEDGROWABLE(T,SIZE) CUTLMEMORYFIXEDGROWABLE_FULL( T , SIZE , int ) 27 | 28 | #ifdef PLATFORM_LINUX 29 | #define CUTLMEMORYCONSERVATIVE(type) struct {type * m_pMemory; unsigned int m_nCurAllocSize;} 30 | #else 31 | #define CUTLMEMORYCONSERVATIVE(type) struct {type * m_pMemory;} 32 | #endif 33 | 34 | #define DECLARE_CUTLVECTOR_FULL(name,type,allocator) struct name {allocator m_memory; int m_Size; type * m_pElements;} 35 | 36 | #define DECLARE_CUTLVECTOR(name,type) DECLARE_CUTLVECTOR_FULL( name , type , CUTLMEMORY( type ) ) 37 | 38 | #define CUTLVECTOR_FULL(type,allocator) struct {allocator m_memory; int m_Size; type * m_pElements;} 39 | 40 | #define CUTLVECTOR(type) CUTLVECTOR_FULL( type , CUTLMEMORY( type ) ) 41 | 42 | #define CUTLVECTORFIXEDGROWABLE(type,size) CUTLVECTOR_FULL( type , CUTLMEMORYFIXEDGROWABLE( type , size )) 43 | 44 | #define CUTLRBTREELINKS(I) struct {I m_Left; I m_Right; I m_Parent; I m_Tag;} 45 | 46 | #define CUTLRBTREENODE(T,I) struct {CUTLRBTREELINKS( I ) m_Links; T m_Data;} 47 | 48 | #define CUTLRBTREE_FULL(T,I,L,M) struct {L m_LessFunc; M m_Elements; I m_Root; I m_NumElements; I m_FirstFree; I m_LastAlloc; CUTLRBTREENODE( T , I ) *m_pElements;} 49 | 50 | #define CUTLRBTREE(T,I) CUTLRBTREE_FULL( T , I , void * , CUTLMEMORY( T ) ) 51 | 52 | #endif // _UTIL_H_ -------------------------------------------------------------------------------- /weapon_info.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_WEAPON_INFO_H_ 2 | #define _INCLUDE_WEAPON_INFO_H_ 3 | #include "util.h" 4 | 5 | struct CMeleeWeaponInfo { 6 | void * vptr; 7 | float m_fRefireDelay; 8 | char m_aViewModel[80]; 9 | char m_aPlayerModel[80]; 10 | char m_aAddonAttachment[80]; 11 | float m_vAddonOffest[3]; 12 | float m_vAddonAngles[3]; 13 | char m_aAnimPrefix[16]; 14 | float m_fDamage; 15 | int m_iDamageFlags; 16 | int m_iRumbleEffect; 17 | bool m_bDecapitates; 18 | char m_aActivityIdle[80]; 19 | char m_aActivityWalk[80]; 20 | char m_aActivityRun[80]; 21 | char m_aActivityCrouchIdle[80]; 22 | char m_aActivityCrouchWalk[80]; 23 | char m_aActivityCrouchWalk2[80]; // possibly run + walk animations 24 | char m_aActivityIdleInjured[80]; 25 | char m_aActivityWalkInjured[80]; 26 | char m_aActivityRunInjured[80]; 27 | char m_aActivityIdleCalm[80]; 28 | char m_aActivityWalkCalm[80]; 29 | char m_aActivityRunCalm[80]; 30 | char m_aActivityJump[80]; 31 | char m_aActivityDeploy[80]; 32 | char m_aActivityShove[80]; 33 | char SoundData[20][80]; // 1501 34 | // 3101: 3 bytes should be padding 35 | CUTLVECTOR(char *) PrimaryAttacks; //3104 char[48] 36 | CUTLVECTOR(char *) SecondaryAttacks; //3124 char[48] 37 | int m_iPlayerAnimEvent; // 3144 38 | float m_fWeaponIdleTime; // 3148 39 | char src[80]; // 3152 name of the melee weapon 40 | }; 41 | 42 | 43 | #endif -------------------------------------------------------------------------------- /zombie_manager.h: -------------------------------------------------------------------------------- 1 | #ifndef _INCLUDE_ZOMBIE_MANAGER_H_ 2 | #define _INCLUDE_ZOMBIE_MANAGER_H_ 3 | 4 | #include "timers.h" 5 | 6 | enum PreferredMobDirection 7 | { 8 | SPAWN_NO_PREFERENCE = -1, 9 | SPAWN_ANYWHERE = 0, 10 | SPAWN_BEHIND_SURVIVORS = 1, 11 | SPAWN_NEAR_IT_VICTIM = 2, 12 | SPAWN_FAR_AWAY_FROM_SURVIVORS = 5, 13 | SPAWN_ABOVE_SURVIVORS = 6, 14 | SPAWN_IN_FRONT_OF_SURVIVORS = 7, 15 | SPAWN_LARGE_VOLUME = 9 16 | }; 17 | 18 | struct ZombieManager_UnknownStruct // 0x14, I guess it can be NavArea or CTerrorNavArea 19 | { 20 | int m_iUnknown[5]; 21 | }; 22 | 23 | struct ZombieManager 24 | { 25 | void *vptr; // 0x0, virtual destructor only 26 | bool unknown[4]; // 0x4, first two bytes are used 27 | int m_nFallenSurvivors; // 0x8 28 | CountdownTimer m_FallenSurvivorTimer; // 0xC - 0x14 29 | bool m_bJimmyTimerExpired; // 0x18 30 | CountdownTimer m_JimmyTimer; // 0x1C - 0x24 31 | char unknown40[4]; // 0x28 32 | int m_iUnknown44; // 0x2C 33 | CountdownTimer m_MegaMobTimer; // 0x30 - 0x38 34 | char unknown60[52]; // 0x3C - 0x6C 35 | ZombieManager_UnknownStruct m_unknownStruct[11]; // 0x70 - 0x138 36 | CountdownTimer m_unknownTimer332[11]; // 0x14C - 0x1C4 37 | int m_iUnknown464[10]; // 0x1D0 - 0x1F4 38 | CountdownTimer m_unknownTimer504; // 0x1F8 - 0x200 39 | CountdownTimer m_unknownTimer516; // 0x204 - 0x20C 40 | int m_nPendingMobCount; // 0x210 41 | PreferredMobDirection m_PreferredMobDirection; // 0x214 42 | int m_PreferredMobPosition; // 0x218 43 | int m_PreferredMobPositionRange; // 0x21C 44 | int m_iUnknown544; // 0x220 45 | int m_iUnknown548; // 0x224 46 | CountdownTimer m_unknownTimer552; // 0x228 - 0x230 47 | int m_nAmbientMobCount; // 0x234 48 | int m_nAmbientMobUnknown; // 0x238 49 | int m_iUnknown572[16]; // 0x23C - 0x278 50 | char unknown636[12]; // 0x27C 51 | char unknown648[4]; // 0x288 52 | int m_iUnknown652; // 0x28C 53 | }; 54 | 55 | #endif 56 | --------------------------------------------------------------------------------