/** * vim set ts=4 * ============================================================================= * * Left 4 Downtown 2 SourceMod Extension * Copyright (C) 2010 Michael "ProdigySim" Busby * * Left 4 Downtown SourceMod Extension * Copyright (C) 2009 Igor "Downtown1" Smirnov. * * Left 4 Downtown 2 Extension updates * Copyright (C) 2012-2015 "Visor" * * Left 4 Downtown 2 Extension updates * Copyright (C) 2015 "Attano" * * Left 4 Downtown 2 Extension updates * Copyright (C) 2017 "Accelerator74" * * Left 4 DHooks SourceMod plugin * Copyright (C) 2020 "SilverShot" / "Silvers" * * ============================================================================= * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License, version 3.0, as published by the * Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see . * * As a special exception, AlliedModders LLC gives you permission to link the * code of this program (as well as its derivative works) to "Half-Life 2," the * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software * by the Valve Corporation. You must obey the GNU General Public License in * all respects for all other code used. Additionally, AlliedModders LLC grants * this exception to all derivative works. AlliedModders LLC defines further * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007), * or . * * Version $Id$ */ #if defined _l4dh_included #endinput #endif #define _l4dh_included public SharedPlugin __pl_l4dh = { name = "left4dhooks", file = "left4dhooks.smx", #if defined REQUIRE_PLUGIN required = 1, #else required = 0, #endif }; #if !defined REQUIRE_PLUGIN public void __pl_l4dh_SetNTVOptional() { // ========================= // Silvers Natives // ========================= MarkNativeAsOptional("AnimHookEnable"); MarkNativeAsOptional("AnimHookDisable"); MarkNativeAsOptional("AnimGetActivity"); MarkNativeAsOptional("AnimGetFromActivity"); MarkNativeAsOptional("L4D_GetGameModeType"); MarkNativeAsOptional("L4D_Deafen"); MarkNativeAsOptional("L4D_Dissolve"); MarkNativeAsOptional("L4D_OnITExpired"); MarkNativeAsOptional("L4D_AngularVelocity"); MarkNativeAsOptional("L4D_GetRandomPZSpawnPosition"); MarkNativeAsOptional("L4D_GetNearestNavArea"); MarkNativeAsOptional("L4D_GetLastKnownArea"); MarkNativeAsOptional("L4D2_GetFurthestSurvivorFlow"); MarkNativeAsOptional("L4D_FindRandomSpot"); MarkNativeAsOptional("L4D_HasAnySurvivorLeftSafeArea"); MarkNativeAsOptional("L4D_IsAnySurvivorInStartArea"); MarkNativeAsOptional("L4D_IsAnySurvivorInCheckpoint"); MarkNativeAsOptional("L4D_IsInFirstCheckpoint"); MarkNativeAsOptional("L4D_IsInLastCheckpoint"); MarkNativeAsOptional("L4D2_IsReachable"); MarkNativeAsOptional("L4D_HasPlayerControlledZombies"); MarkNativeAsOptional("L4D_PipeBombPrj"); MarkNativeAsOptional("L4D_MolotovPrj"); MarkNativeAsOptional("L4D2_VomitJarPrj"); MarkNativeAsOptional("L4D2_GrenadeLauncherPrj"); MarkNativeAsOptional("L4D2_ExecVScriptCode"); MarkNativeAsOptional("L4D2_GetVScriptOutput"); MarkNativeAsOptional("L4D2_SpitterPrj"); MarkNativeAsOptional("L4D2_UseAdrenaline"); MarkNativeAsOptional("L4D_RespawnPlayer"); MarkNativeAsOptional("L4D_SetHumanSpec"); MarkNativeAsOptional("L4D_TakeOverBot"); MarkNativeAsOptional("L4D_CanBecomeGhost"); MarkNativeAsOptional("L4D2_AreWanderersAllowed"); MarkNativeAsOptional("L4D2_GetCurrentFinaleStage"); MarkNativeAsOptional("L4D2_ForceNextStage"); MarkNativeAsOptional("L4D2_IsTankInPlay"); MarkNativeAsOptional("L4D2_GetScriptValueInt"); MarkNativeAsOptional("L4D2_NavAreaTravelDistance"); MarkNativeAsOptional("L4D2_VScriptWrapper_GetMapNumber"); MarkNativeAsOptional("L4D2_VScriptWrapper_HasEverBeenInjured"); MarkNativeAsOptional("L4D2_VScriptWrapper_GetAliveDuration"); MarkNativeAsOptional("L4D2_VScriptWrapper_IsDead"); MarkNativeAsOptional("L4D2_VScriptWrapper_IsDying"); MarkNativeAsOptional("L4D2_VScriptWrapper_UseAdrenaline"); MarkNativeAsOptional("L4D2_VScriptWrapper_ReviveByDefib"); MarkNativeAsOptional("L4D2_VScriptWrapper_ReviveFromIncap"); MarkNativeAsOptional("L4D2_VScriptWrapper_GetSenseFlags"); MarkNativeAsOptional("L4D2_VScriptWrapper_NavAreaBuildPath"); MarkNativeAsOptional("L4D2_VScriptWrapper_NavAreaTravelDistance"); // ========================= // left4downtown.inc // ========================= MarkNativeAsOptional("L4D_RestartScenarioFromVote"); MarkNativeAsOptional("L4D_IsFirstMapInScenario"); MarkNativeAsOptional("L4D_IsMissionFinalMap"); MarkNativeAsOptional("L4D_NotifyNetworkStateChanged"); MarkNativeAsOptional("L4D_StaggerPlayer"); MarkNativeAsOptional("L4D2_SendInRescueVehicle"); MarkNativeAsOptional("L4D_ReplaceTank"); MarkNativeAsOptional("L4D2_SpawnTank"); MarkNativeAsOptional("L4D2_SpawnSpecial"); MarkNativeAsOptional("L4D2_SpawnWitch"); MarkNativeAsOptional("L4D2_GetTankCount"); MarkNativeAsOptional("L4D2_GetWitchCount"); MarkNativeAsOptional("L4D_GetCurrentChapter"); MarkNativeAsOptional("L4D_GetMaxChapters"); MarkNativeAsOptional("L4D_ScavengeBeginRoundSetupTime"); MarkNativeAsOptional("L4D_ResetMobTimer"); MarkNativeAsOptional("L4D_GetPlayerSpawnTime"); MarkNativeAsOptional("L4D_GetVersusMaxCompletionScore"); MarkNativeAsOptional("L4D_SetVersusMaxCompletionScore"); MarkNativeAsOptional("L4D_GetTeamScore"); MarkNativeAsOptional("L4D_GetMobSpawnTimerRemaining"); MarkNativeAsOptional("L4D_GetMobSpawnTimerDuration"); MarkNativeAsOptional("L4D2_ChangeFinaleStage"); MarkNativeAsOptional("L4D2_SpawnWitchBride"); // l4d2weapons.inc MarkNativeAsOptional("L4D2_IsValidWeapon"); MarkNativeAsOptional("L4D2_GetIntWeaponAttribute"); MarkNativeAsOptional("L4D2_GetFloatWeaponAttribute"); MarkNativeAsOptional("L4D2_SetIntWeaponAttribute"); MarkNativeAsOptional("L4D2_SetFloatWeaponAttribute"); MarkNativeAsOptional("L4D2_GetMeleeWeaponIndex"); MarkNativeAsOptional("L4D2_GetIntMeleeAttribute"); MarkNativeAsOptional("L4D2_GetFloatMeleeAttribute"); MarkNativeAsOptional("L4D2_GetBoolMeleeAttribute"); MarkNativeAsOptional("L4D2_SetIntMeleeAttribute"); MarkNativeAsOptional("L4D2_SetFloatMeleeAttribute"); MarkNativeAsOptional("L4D2_SetBoolMeleeAttribute"); // l4d2timers.inc MarkNativeAsOptional("L4D2_CTimerReset"); MarkNativeAsOptional("L4D2_CTimerStart"); MarkNativeAsOptional("L4D2_CTimerInvalidate"); MarkNativeAsOptional("L4D2_CTimerHasStarted"); MarkNativeAsOptional("L4D2_CTimerIsElapsed"); MarkNativeAsOptional("L4D2_CTimerGetElapsedTime"); MarkNativeAsOptional("L4D2_CTimerGetRemainingTime"); MarkNativeAsOptional("L4D2_CTimerGetCountdownDuration"); MarkNativeAsOptional("L4D2_ITimerStart"); MarkNativeAsOptional("L4D2_ITimerInvalidate"); MarkNativeAsOptional("L4D2_ITimerHasStarted"); MarkNativeAsOptional("L4D2_ITimerGetElapsedTime"); // l4d2director.inc MarkNativeAsOptional("L4D2_GetVersusCampaignScores"); MarkNativeAsOptional("L4D2_SetVersusCampaignScores"); MarkNativeAsOptional("L4D2_GetVersusTankFlowPercent"); MarkNativeAsOptional("L4D2_SetVersusTankFlowPercent"); MarkNativeAsOptional("L4D2_GetVersusWitchFlowPercent"); MarkNativeAsOptional("L4D2_SetVersusWitchFlowPercent"); // ========================= // l4d2_direct.inc // ========================= MarkNativeAsOptional("L4D2Direct_GetPendingMobCount"); MarkNativeAsOptional("L4D2Direct_SetPendingMobCount"); MarkNativeAsOptional("L4D2Direct_GetTankPassedCount"); MarkNativeAsOptional("L4D2Direct_SetTankPassedCount"); MarkNativeAsOptional("L4D2Direct_GetVSCampaignScore"); MarkNativeAsOptional("L4D2Direct_SetVSCampaignScore"); MarkNativeAsOptional("L4D2Direct_GetVSTankFlowPercent"); MarkNativeAsOptional("L4D2Direct_SetVSTankFlowPercent"); MarkNativeAsOptional("L4D2Direct_GetVSTankToSpawnThisRound"); MarkNativeAsOptional("L4D2Direct_SetVSTankToSpawnThisRound"); MarkNativeAsOptional("L4D2Direct_GetVSWitchFlowPercent"); MarkNativeAsOptional("L4D2Direct_SetVSWitchFlowPercent"); MarkNativeAsOptional("L4D2Direct_GetVSWitchToSpawnThisRound"); MarkNativeAsOptional("L4D2Direct_SetVSWitchToSpawnThisRound"); MarkNativeAsOptional("L4D2Direct_GetMapMaxFlowDistance"); MarkNativeAsOptional("L4D2Direct_GetInvulnerabilityTimer"); MarkNativeAsOptional("L4D2Direct_GetTankTickets"); MarkNativeAsOptional("L4D2Direct_SetTankTickets"); MarkNativeAsOptional("L4D2Direct_GetTerrorNavArea"); MarkNativeAsOptional("L4D2Direct_GetTerrorNavAreaFlow"); MarkNativeAsOptional("L4D2Direct_TryOfferingTankBot"); MarkNativeAsOptional("L4D2Direct_GetFlowDistance"); MarkNativeAsOptional("L4D2Direct_DoAnimationEvent"); MarkNativeAsOptional("L4DDirect_GetSurvivorHealthBonus"); MarkNativeAsOptional("L4DDirect_SetSurvivorHealthBonus"); MarkNativeAsOptional("L4DDirect_RecomputeTeamScores"); MarkNativeAsOptional("L4D2Direct_GetTankCount"); MarkNativeAsOptional("L4D2Direct_GetMobSpawnTimer"); MarkNativeAsOptional("L4D2Direct_GetSIClassDeathTimer"); MarkNativeAsOptional("L4D2Direct_GetSIClassSpawnTimer"); MarkNativeAsOptional("L4D2Direct_GetVSStartTimer"); MarkNativeAsOptional("L4D2Direct_GetScavengeRoundSetupTimer"); MarkNativeAsOptional("L4D2Direct_GetScavengeOvertimeGraceTimer"); MarkNativeAsOptional("L4D2Direct_GetSpawnTimer"); MarkNativeAsOptional("L4D2Direct_GetShovePenalty"); MarkNativeAsOptional("L4D2Direct_SetShovePenalty"); MarkNativeAsOptional("L4D2Direct_GetNextShoveTime"); MarkNativeAsOptional("L4D2Direct_SetNextShoveTime"); MarkNativeAsOptional("L4D2Direct_GetPreIncapHealth"); MarkNativeAsOptional("L4D2Direct_SetPreIncapHealth"); MarkNativeAsOptional("L4D2Direct_GetPreIncapHealthBuffer"); MarkNativeAsOptional("L4D2Direct_SetPreIncapHealthBuffer"); MarkNativeAsOptional("L4D2Direct_GetInfernoMaxFlames"); MarkNativeAsOptional("L4D2Direct_SetInfernoMaxFlames"); MarkNativeAsOptional("L4D2Direct_GetScriptedEventManager"); // l4d2d_timers.inc MarkNativeAsOptional("CTimer_Reset"); MarkNativeAsOptional("CTimer_Start"); MarkNativeAsOptional("CTimer_Invalidate"); MarkNativeAsOptional("CTimer_HasStarted"); MarkNativeAsOptional("CTimer_IsElapsed"); MarkNativeAsOptional("CTimer_GetElapsedTime"); MarkNativeAsOptional("CTimer_GetRemainingTime"); MarkNativeAsOptional("CTimer_GetCountdownDuration"); MarkNativeAsOptional("ITimer_Reset"); MarkNativeAsOptional("ITimer_Start"); MarkNativeAsOptional("ITimer_Invalidate"); MarkNativeAsOptional("ITimer_HasStarted"); MarkNativeAsOptional("ITimer_GetElapsedTime"); MarkNativeAsOptional("CTimer_GetDuration"); MarkNativeAsOptional("CTimer_SetDuration"); MarkNativeAsOptional("CTimer_GetTimestamp"); MarkNativeAsOptional("CTimer_SetTimestamp"); MarkNativeAsOptional("ITimer_GetTimestamp"); MarkNativeAsOptional("ITimer_SetTimestamp"); // ========================= // l4d2addresses.txt // ========================= MarkNativeAsOptional("L4D_CTerrorPlayer_OnVomitedUpon"); MarkNativeAsOptional("L4D_CancelStagger"); MarkNativeAsOptional("L4D_CreateRescuableSurvivors"); MarkNativeAsOptional("L4D_ReviveSurvivor"); MarkNativeAsOptional("L4D_GetHighestFlowSurvivor"); MarkNativeAsOptional("L4D_GetInfectedFlowDistance"); MarkNativeAsOptional("L4D_TakeOverZombieBot"); MarkNativeAsOptional("L4D_ReplaceWithBot"); MarkNativeAsOptional("L4D_CullZombie"); MarkNativeAsOptional("L4D_SetClass"); MarkNativeAsOptional("L4D_MaterializeFromGhost"); MarkNativeAsOptional("L4D_BecomeGhost"); MarkNativeAsOptional("L4D_State_Transition"); MarkNativeAsOptional("L4D_RegisterForbiddenTarget"); MarkNativeAsOptional("L4D_UnRegisterForbiddenTarget"); MarkNativeAsOptional("L4D2_CTerrorPlayer_OnHitByVomitJar"); MarkNativeAsOptional("L4D2_Infected_OnHitByVomitJar"); MarkNativeAsOptional("L4D2_CTerrorPlayer_Fling"); MarkNativeAsOptional("L4D2_GetVersusCompletionPlayer"); MarkNativeAsOptional("L4D2_SwapTeams"); MarkNativeAsOptional("L4D2_AreTeamsFlipped"); MarkNativeAsOptional("L4D2_StartRematchVote"); MarkNativeAsOptional("L4D2_FullRestart"); MarkNativeAsOptional("L4D2_HideVersusScoreboard"); MarkNativeAsOptional("L4D2_HideScavengeScoreboard"); MarkNativeAsOptional("L4D2_HideScoreboard"); } #endif // ==================================================================================================== // VARIOUS ENUMS // ==================================================================================================== // For the game mode native and forward. enum { GAMEMODE_UNKNOWN = 0, GAMEMODE_COOP = 1, GAMEMODE_VERSUS = 2, GAMEMODE_SURVIVAL = 4, GAMEMODE_SCAVENGE = 8 } // Provided by "BHaType": // For the "L4D_State_Transition" native. // X -> Y (means X state will become Y state on next frame or some seconds later) enum { STATE_ACTIVE = 0, STATE_WELCOME, // -> STATE_PICKING_TEAM STATE_PICKING_TEAM, STATE_PICKINGCLASS, // -> STATE_ACTIVE STATE_DEATH_ANIM, // -> STATE_DEATH_WAIT_FOR_KEY STATE_DEATH_WAIT_FOR_KEY, // -> STATE_OBSERVER_MODE STATE_OBSERVER_MODE, STATE_WAITING_FOR_RESCUE, STATE_GHOST, STATE_INTRO_CAMERA } // ==================================================================================================== // ACT_* ANIMATION VALUES // ==================================================================================================== // To find list: Search for "ACT_RESET" for example, in the server binary. XRef to the "ActivityList_RegisterSharedActivities" function. View in HexRays to see the full list of constants and values. // These constants can be used in a plugins source code instead of hard coding the sequence number when working with the animation pre-hook. // Only for Survivors, not Special Infected. enum { L4D1_ACT_RESET, L4D1_ACT_IDLE, L4D1_ACT_TRANSITION, L4D1_ACT_COVER, L4D1_ACT_COVER_MED, L4D1_ACT_COVER_LOW, L4D1_ACT_WALK, L4D1_ACT_WALK_AIM, L4D1_ACT_WALK_CROUCH, L4D1_ACT_WALK_CROUCH_AIM, L4D1_ACT_RUN, L4D1_ACT_RUN_AIM, L4D1_ACT_RUN_CROUCH, L4D1_ACT_RUN_CROUCH_AIM, L4D1_ACT_RUN_PROTECTED, L4D1_ACT_SCRIPT_CUSTOM_MOVE, L4D1_ACT_RANGE_ATTACK1, L4D1_ACT_RANGE_ATTACK2, L4D1_ACT_RANGE_ATTACK1_LOW, L4D1_ACT_RANGE_ATTACK2_LOW, L4D1_ACT_DIESIMPLE, L4D1_ACT_DIEBACKWARD, L4D1_ACT_DIEFORWARD, L4D1_ACT_DIEVIOLENT, L4D1_ACT_DIERAGDOLL, L4D1_ACT_FLY, L4D1_ACT_HOVER, L4D1_ACT_GLIDE, L4D1_ACT_SWIM, L4D1_ACT_JUMP, L4D1_ACT_HOP, L4D1_ACT_LEAP, L4D1_ACT_LAND, L4D1_ACT_CLIMB_UP, L4D1_ACT_CLIMB_DOWN, L4D1_ACT_CLIMB_DISMOUNT, L4D1_ACT_SHIPLADDER_UP, L4D1_ACT_SHIPLADDER_DOWN, L4D1_ACT_STRAFE_LEFT, L4D1_ACT_STRAFE_RIGHT, L4D1_ACT_ROLL_LEFT, L4D1_ACT_ROLL_RIGHT, L4D1_ACT_TURN_LEFT, L4D1_ACT_TURN_RIGHT, L4D1_ACT_CROUCH, L4D1_ACT_CROUCHIDLE, L4D1_ACT_STAND, L4D1_ACT_USE, L4D1_ACT_SIGNAL1, L4D1_ACT_SIGNAL2, L4D1_ACT_SIGNAL3, L4D1_ACT_SIGNAL_ADVANCE, L4D1_ACT_SIGNAL_FORWARD, L4D1_ACT_SIGNAL_GROUP, L4D1_ACT_SIGNAL_HALT, L4D1_ACT_SIGNAL_LEFT, L4D1_ACT_SIGNAL_RIGHT, L4D1_ACT_SIGNAL_TAKECOVER, L4D1_ACT_LOOKBACK_RIGHT, L4D1_ACT_LOOKBACK_LEFT, L4D1_ACT_COWER, L4D1_ACT_SMALL_FLINCH, L4D1_ACT_BIG_FLINCH, L4D1_ACT_MELEE_ATTACK1, L4D1_ACT_MELEE_ATTACK2, L4D1_ACT_RELOAD, L4D1_ACT_RELOAD_START, L4D1_ACT_RELOAD_FINISH, L4D1_ACT_RELOAD_LOW, L4D1_ACT_ARM, L4D1_ACT_DISARM, L4D1_ACT_DROP_WEAPON, L4D1_ACT_DROP_WEAPON_SHOTGUN, L4D1_ACT_PICKUP_GROUND, L4D1_ACT_PICKUP_RACK, L4D1_ACT_IDLE_ANGRY, L4D1_ACT_IDLE_RELAXED, L4D1_ACT_IDLE_STIMULATED, L4D1_ACT_IDLE_AGITATED, L4D1_ACT_IDLE_STEALTH, L4D1_ACT_IDLE_HURT, L4D1_ACT_WALK_RELAXED, L4D1_ACT_WALK_STIMULATED, L4D1_ACT_WALK_AGITATED, L4D1_ACT_WALK_STEALTH, L4D1_ACT_RUN_RELAXED, L4D1_ACT_RUN_STIMULATED, L4D1_ACT_RUN_AGITATED, L4D1_ACT_RUN_STEALTH, L4D1_ACT_IDLE_AIM_RELAXED, L4D1_ACT_IDLE_AIM_STIMULATED, L4D1_ACT_IDLE_AIM_AGITATED, L4D1_ACT_IDLE_AIM_STEALTH, L4D1_ACT_WALK_AIM_RELAXED, L4D1_ACT_WALK_AIM_STIMULATED, L4D1_ACT_WALK_AIM_AGITATED, L4D1_ACT_WALK_AIM_STEALTH, L4D1_ACT_RUN_AIM_RELAXED, L4D1_ACT_RUN_AIM_STIMULATED, L4D1_ACT_RUN_AIM_AGITATED, L4D1_ACT_RUN_AIM_STEALTH, L4D1_ACT_CROUCHIDLE_STIMULATED, L4D1_ACT_CROUCHIDLE_AIM_STIMULATED, L4D1_ACT_CROUCHIDLE_AGITATED, L4D1_ACT_WALK_HURT, L4D1_ACT_RUN_HURT, L4D1_ACT_SPECIAL_ATTACK1, L4D1_ACT_SPECIAL_ATTACK2, L4D1_ACT_COMBAT_IDLE, L4D1_ACT_WALK_SCARED, L4D1_ACT_RUN_SCARED, L4D1_ACT_VICTORY_DANCE, L4D1_ACT_DIE_HEADSHOT, L4D1_ACT_DIE_CHESTSHOT, L4D1_ACT_DIE_GUTSHOT, L4D1_ACT_DIE_BACKSHOT, L4D1_ACT_FLINCH_HEAD, L4D1_ACT_FLINCH_CHEST, L4D1_ACT_FLINCH_STOMACH, L4D1_ACT_FLINCH_LEFTARM, L4D1_ACT_FLINCH_RIGHTARM, L4D1_ACT_FLINCH_LEFTLEG, L4D1_ACT_FLINCH_RIGHTLEG, L4D1_ACT_FLINCH_PHYSICS, L4D1_ACT_FLINCH_HEAD_BACK, L4D1_ACT_FLINCH_CHEST_BACK, L4D1_ACT_FLINCH_STOMACH_BACK, L4D1_ACT_FLINCH_CROUCH_FRONT, L4D1_ACT_FLINCH_CROUCH_BACK, L4D1_ACT_FLINCH_CROUCH_LEFT, L4D1_ACT_FLINCH_CROUCH_RIGHT, L4D1_ACT_IDLE_ON_FIRE, L4D1_ACT_WALK_ON_FIRE, L4D1_ACT_RUN_ON_FIRE, L4D1_ACT_RAPPEL_LOOP, L4D1_ACT_180_LEFT, L4D1_ACT_180_RIGHT, L4D1_ACT_90_LEFT, L4D1_ACT_90_RIGHT, L4D1_ACT_STEP_LEFT, L4D1_ACT_STEP_RIGHT, L4D1_ACT_STEP_BACK, L4D1_ACT_STEP_FORE, L4D1_ACT_GESTURE_RANGE_ATTACK1, L4D1_ACT_GESTURE_RANGE_ATTACK2, L4D1_ACT_GESTURE_MELEE_ATTACK1, L4D1_ACT_GESTURE_MELEE_ATTACK2, L4D1_ACT_GESTURE_RANGE_ATTACK1_LOW, L4D1_ACT_GESTURE_RANGE_ATTACK2_LOW, L4D1_ACT_MELEE_ATTACK_SWING_GESTURE, L4D1_ACT_GESTURE_SMALL_FLINCH, L4D1_ACT_GESTURE_BIG_FLINCH, L4D1_ACT_GESTURE_FLINCH_BLAST, L4D1_ACT_GESTURE_FLINCH_BLAST_SHOTGUN, L4D1_ACT_GESTURE_FLINCH_BLAST_DAMAGED, L4D1_ACT_GESTURE_FLINCH_BLAST_DAMAGED_SHOTGUN, L4D1_ACT_GESTURE_FLINCH_HEAD, L4D1_ACT_GESTURE_FLINCH_CHEST, L4D1_ACT_GESTURE_FLINCH_STOMACH, L4D1_ACT_GESTURE_FLINCH_LEFTARM, L4D1_ACT_GESTURE_FLINCH_RIGHTARM, L4D1_ACT_GESTURE_FLINCH_LEFTLEG, L4D1_ACT_GESTURE_FLINCH_RIGHTLEG, L4D1_ACT_GESTURE_TURN_LEFT, L4D1_ACT_GESTURE_TURN_RIGHT, L4D1_ACT_GESTURE_TURN_LEFT45, L4D1_ACT_GESTURE_TURN_RIGHT45, L4D1_ACT_GESTURE_TURN_LEFT90, L4D1_ACT_GESTURE_TURN_RIGHT90, L4D1_ACT_GESTURE_TURN_LEFT45_FLAT, L4D1_ACT_GESTURE_TURN_RIGHT45_FLAT, L4D1_ACT_GESTURE_TURN_LEFT90_FLAT, L4D1_ACT_GESTURE_TURN_RIGHT90_FLAT, L4D1_ACT_BARNACLE_HIT, L4D1_ACT_BARNACLE_PULL, L4D1_ACT_BARNACLE_CHOMP, L4D1_ACT_BARNACLE_CHEW, L4D1_ACT_DO_NOT_DISTURB, L4D1_ACT_VM_DRAW, L4D1_ACT_VM_HOLSTER, L4D1_ACT_VM_IDLE, L4D1_ACT_VM_FIDGET, L4D1_ACT_VM_PULLBACK, L4D1_ACT_VM_PULLBACK_HIGH, L4D1_ACT_VM_PULLBACK_LOW, L4D1_ACT_VM_THROW, L4D1_ACT_VM_PULLPIN, L4D1_ACT_VM_PRIMARYATTACK, L4D1_ACT_VM_SECONDARYATTACK, L4D1_ACT_VM_RELOAD, L4D1_ACT_VM_DRYFIRE, L4D1_ACT_VM_HITLEFT, L4D1_ACT_VM_HITLEFT2, L4D1_ACT_VM_HITRIGHT, L4D1_ACT_VM_HITRIGHT2, L4D1_ACT_VM_HITCENTER, L4D1_ACT_VM_HITCENTER2, L4D1_ACT_VM_MISSLEFT, L4D1_ACT_VM_MISSLEFT2, L4D1_ACT_VM_MISSRIGHT, L4D1_ACT_VM_MISSRIGHT2, L4D1_ACT_VM_MISSCENTER, L4D1_ACT_VM_MISSCENTER2, L4D1_ACT_VM_HAULBACK, L4D1_ACT_VM_SWINGHARD, L4D1_ACT_VM_SWINGMISS, L4D1_ACT_VM_SWINGHIT, L4D1_ACT_VM_IDLE_TO_LOWERED, L4D1_ACT_VM_IDLE_LOWERED, L4D1_ACT_VM_LOWERED_TO_IDLE, L4D1_ACT_VM_RECOIL1, L4D1_ACT_VM_RECOIL2, L4D1_ACT_VM_RECOIL3, L4D1_ACT_VM_PICKUP, L4D1_ACT_VM_RELEASE, L4D1_ACT_VM_ATTACH_SILENCER, L4D1_ACT_VM_DETACH_SILENCER, L4D1_ACT_SLAM_STICKWALL_IDLE, L4D1_ACT_SLAM_STICKWALL_ND_IDLE, L4D1_ACT_SLAM_STICKWALL_ATTACH, L4D1_ACT_SLAM_STICKWALL_ATTACH2, L4D1_ACT_SLAM_STICKWALL_ND_ATTACH, L4D1_ACT_SLAM_STICKWALL_ND_ATTACH2, L4D1_ACT_SLAM_STICKWALL_DETONATE, L4D1_ACT_SLAM_STICKWALL_DETONATOR_HOLSTER, L4D1_ACT_SLAM_STICKWALL_DRAW, L4D1_ACT_SLAM_STICKWALL_ND_DRAW, L4D1_ACT_SLAM_STICKWALL_TO_THROW, L4D1_ACT_SLAM_STICKWALL_TO_THROW_ND, L4D1_ACT_SLAM_STICKWALL_TO_TRIPMINE_ND, L4D1_ACT_SLAM_THROW_IDLE, L4D1_ACT_SLAM_THROW_ND_IDLE, L4D1_ACT_SLAM_THROW_THROW, L4D1_ACT_SLAM_THROW_THROW2, L4D1_ACT_SLAM_THROW_THROW_ND, L4D1_ACT_SLAM_THROW_THROW_ND2, L4D1_ACT_SLAM_THROW_DRAW, L4D1_ACT_SLAM_THROW_ND_DRAW, L4D1_ACT_SLAM_THROW_TO_STICKWALL, L4D1_ACT_SLAM_THROW_TO_STICKWALL_ND, L4D1_ACT_SLAM_THROW_DETONATE, L4D1_ACT_SLAM_THROW_DETONATOR_HOLSTER, L4D1_ACT_SLAM_THROW_TO_TRIPMINE_ND, L4D1_ACT_SLAM_TRIPMINE_IDLE, L4D1_ACT_SLAM_TRIPMINE_DRAW, L4D1_ACT_SLAM_TRIPMINE_ATTACH, L4D1_ACT_SLAM_TRIPMINE_ATTACH2, L4D1_ACT_SLAM_TRIPMINE_TO_STICKWALL_ND, L4D1_ACT_SLAM_TRIPMINE_TO_THROW_ND, L4D1_ACT_SLAM_DETONATOR_IDLE, L4D1_ACT_SLAM_DETONATOR_DRAW, L4D1_ACT_SLAM_DETONATOR_DETONATE, L4D1_ACT_SLAM_DETONATOR_HOLSTER, L4D1_ACT_SLAM_DETONATOR_STICKWALL_DRAW, L4D1_ACT_SLAM_DETONATOR_THROW_DRAW, L4D1_ACT_SHOTGUN_RELOAD_START, L4D1_ACT_SHOTGUN_RELOAD_FINISH, L4D1_ACT_SHOTGUN_PUMP, L4D1_ACT_SMG2_IDLE2, L4D1_ACT_SMG2_FIRE2, L4D1_ACT_SMG2_DRAW2, L4D1_ACT_SMG2_RELOAD2, L4D1_ACT_SMG2_DRYFIRE2, L4D1_ACT_SMG2_TOAUTO, L4D1_ACT_SMG2_TOBURST, L4D1_ACT_PHYSCANNON_UPGRADE, L4D1_ACT_RANGE_ATTACK_AR1, L4D1_ACT_RANGE_ATTACK_AR2, L4D1_ACT_RANGE_ATTACK_AR2_LOW, L4D1_ACT_RANGE_ATTACK_AR2_GRENADE, L4D1_ACT_RANGE_ATTACK_HMG1, L4D1_ACT_RANGE_ATTACK_ML, L4D1_ACT_RANGE_ATTACK_SMG1, L4D1_ACT_RANGE_ATTACK_SMG1_LOW, L4D1_ACT_RANGE_ATTACK_SMG2, L4D1_ACT_RANGE_ATTACK_SHOTGUN, L4D1_ACT_RANGE_ATTACK_SHOTGUN_LOW, L4D1_ACT_RANGE_ATTACK_PISTOL, L4D1_ACT_RANGE_ATTACK_PISTOL_LOW, L4D1_ACT_RANGE_ATTACK_SLAM, L4D1_ACT_RANGE_ATTACK_TRIPWIRE, L4D1_ACT_RANGE_ATTACK_THROW, L4D1_ACT_RANGE_ATTACK_SNIPER_RIFLE, L4D1_ACT_RANGE_ATTACK_RPG, L4D1_ACT_MELEE_ATTACK_SWING, L4D1_ACT_RANGE_AIM_LOW, L4D1_ACT_RANGE_AIM_SMG1_LOW, L4D1_ACT_RANGE_AIM_PISTOL_LOW, L4D1_ACT_RANGE_AIM_AR2_LOW, L4D1_ACT_COVER_PISTOL_LOW, L4D1_ACT_COVER_SMG1_LOW, L4D1_ACT_GESTURE_RANGE_ATTACK_AR1, L4D1_ACT_GESTURE_RANGE_ATTACK_AR2, L4D1_ACT_GESTURE_RANGE_ATTACK_AR2_GRENADE, L4D1_ACT_GESTURE_RANGE_ATTACK_HMG1, L4D1_ACT_GESTURE_RANGE_ATTACK_ML, L4D1_ACT_GESTURE_RANGE_ATTACK_SMG1, L4D1_ACT_GESTURE_RANGE_ATTACK_SMG1_LOW, L4D1_ACT_GESTURE_RANGE_ATTACK_SMG2, L4D1_ACT_GESTURE_RANGE_ATTACK_SHOTGUN, L4D1_ACT_GESTURE_RANGE_ATTACK_PISTOL, L4D1_ACT_GESTURE_RANGE_ATTACK_PISTOL_LOW, L4D1_ACT_GESTURE_RANGE_ATTACK_SLAM, L4D1_ACT_GESTURE_RANGE_ATTACK_TRIPWIRE, L4D1_ACT_GESTURE_RANGE_ATTACK_THROW, L4D1_ACT_GESTURE_RANGE_ATTACK_SNIPER_RIFLE, L4D1_ACT_GESTURE_MELEE_ATTACK_SWING, L4D1_ACT_IDLE_RIFLE, L4D1_ACT_IDLE_SMG1, L4D1_ACT_IDLE_ANGRY_SMG1, L4D1_ACT_IDLE_PISTOL, L4D1_ACT_IDLE_ANGRY_PISTOL, L4D1_ACT_IDLE_ANGRY_SHOTGUN, L4D1_ACT_IDLE_STEALTH_PISTOL, L4D1_ACT_IDLE_PACKAGE, L4D1_ACT_WALK_PACKAGE, L4D1_ACT_IDLE_SUITCASE, L4D1_ACT_WALK_SUITCASE, L4D1_ACT_IDLE_SMG1_RELAXED, L4D1_ACT_IDLE_SMG1_STIMULATED, L4D1_ACT_WALK_RIFLE_RELAXED, L4D1_ACT_RUN_RIFLE_RELAXED, L4D1_ACT_WALK_RIFLE_STIMULATED, L4D1_ACT_RUN_RIFLE_STIMULATED, L4D1_ACT_IDLE_AIM_RIFLE_STIMULATED, L4D1_ACT_WALK_AIM_RIFLE_STIMULATED, L4D1_ACT_RUN_AIM_RIFLE_STIMULATED, L4D1_ACT_IDLE_SHOTGUN_RELAXED, L4D1_ACT_IDLE_SHOTGUN_STIMULATED, L4D1_ACT_IDLE_SHOTGUN_AGITATED, L4D1_ACT_WALK_ANGRY, L4D1_ACT_POLICE_HARASS1, L4D1_ACT_POLICE_HARASS2, L4D1_ACT_IDLE_MANNEDGUN, L4D1_ACT_IDLE_MELEE, L4D1_ACT_IDLE_ANGRY_MELEE, L4D1_ACT_IDLE_RPG_RELAXED, L4D1_ACT_IDLE_RPG, L4D1_ACT_IDLE_ANGRY_RPG, L4D1_ACT_COVER_LOW_RPG, L4D1_ACT_WALK_RPG, L4D1_ACT_RUN_RPG, L4D1_ACT_WALK_CROUCH_RPG, L4D1_ACT_RUN_CROUCH_RPG, L4D1_ACT_WALK_RPG_RELAXED, L4D1_ACT_RUN_RPG_RELAXED, L4D1_ACT_WALK_RIFLE, L4D1_ACT_WALK_AIM_RIFLE, L4D1_ACT_WALK_CROUCH_RIFLE, L4D1_ACT_WALK_CROUCH_AIM_RIFLE, L4D1_ACT_RUN_RIFLE, L4D1_ACT_RUN_AIM_RIFLE, L4D1_ACT_RUN_CROUCH_RIFLE, L4D1_ACT_RUN_CROUCH_AIM_RIFLE, L4D1_ACT_RUN_STEALTH_PISTOL, L4D1_ACT_WALK_AIM_SHOTGUN, L4D1_ACT_RUN_AIM_SHOTGUN, L4D1_ACT_WALK_PISTOL, L4D1_ACT_RUN_PISTOL, L4D1_ACT_WALK_AIM_PISTOL, L4D1_ACT_RUN_AIM_PISTOL, L4D1_ACT_WALK_STEALTH_PISTOL, L4D1_ACT_WALK_AIM_STEALTH_PISTOL, L4D1_ACT_RUN_AIM_STEALTH_PISTOL, L4D1_ACT_RELOAD_PISTOL, L4D1_ACT_RELOAD_PISTOL_LOW, L4D1_ACT_RELOAD_SMG1, L4D1_ACT_RELOAD_SMG1_LOW, L4D1_ACT_RELOAD_SHOTGUN, L4D1_ACT_RELOAD_SHOTGUN_LOW, L4D1_ACT_GESTURE_RELOAD, L4D1_ACT_GESTURE_RELOAD_PISTOL, L4D1_ACT_GESTURE_RELOAD_SMG1, L4D1_ACT_GESTURE_RELOAD_SHOTGUN, L4D1_ACT_BUSY_LEAN_LEFT, L4D1_ACT_BUSY_LEAN_LEFT_ENTRY, L4D1_ACT_BUSY_LEAN_LEFT_EXIT, L4D1_ACT_BUSY_LEAN_BACK, L4D1_ACT_BUSY_LEAN_BACK_ENTRY, L4D1_ACT_BUSY_LEAN_BACK_EXIT, L4D1_ACT_BUSY_SIT_GROUND, L4D1_ACT_BUSY_SIT_GROUND_ENTRY, L4D1_ACT_BUSY_SIT_GROUND_EXIT, L4D1_ACT_BUSY_SIT_CHAIR, L4D1_ACT_BUSY_SIT_CHAIR_ENTRY, L4D1_ACT_BUSY_SIT_CHAIR_EXIT, L4D1_ACT_BUSY_STAND, L4D1_ACT_BUSY_QUEUE, L4D1_ACT_DUCK_DODGE, L4D1_ACT_DIE_BARNACLE_SWALLOW, L4D1_ACT_GESTURE_BARNACLE_STRANGLE, L4D1_ACT_PHYSCANNON_DETACH, L4D1_ACT_PHYSCANNON_ANIMATE, L4D1_ACT_PHYSCANNON_ANIMATE_PRE, L4D1_ACT_PHYSCANNON_ANIMATE_POST, L4D1_ACT_DIE_FRONTSIDE, L4D1_ACT_DIE_RIGHTSIDE, L4D1_ACT_DIE_BACKSIDE, L4D1_ACT_DIE_LEFTSIDE, L4D1_ACT_DIE_CROUCH_FRONTSIDE, L4D1_ACT_DIE_CROUCH_RIGHTSIDE, L4D1_ACT_DIE_CROUCH_BACKSIDE, L4D1_ACT_DIE_CROUCH_LEFTSIDE, L4D1_ACT_DIE_INCAP, L4D1_ACT_OPEN_DOOR, L4D1_ACT_DI_ALYX_ZOMBIE_MELEE, L4D1_ACT_DI_ALYX_ZOMBIE_TORSO_MELEE, L4D1_ACT_DI_ALYX_HEADCRAB_MELEE, L4D1_ACT_DI_ALYX_ANTLION, L4D1_ACT_DI_ALYX_ZOMBIE_SHOTGUN64, L4D1_ACT_DI_ALYX_ZOMBIE_SHOTGUN26, L4D1_ACT_READINESS_RELAXED_TO_STIMULATED, L4D1_ACT_READINESS_RELAXED_TO_STIMULATED_WALK, L4D1_ACT_READINESS_AGITATED_TO_STIMULATED, L4D1_ACT_READINESS_STIMULATED_TO_RELAXED, L4D1_ACT_READINESS_PISTOL_RELAXED_TO_STIMULATED, L4D1_ACT_READINESS_PISTOL_RELAXED_TO_STIMULATED_WALK, L4D1_ACT_READINESS_PISTOL_AGITATED_TO_STIMULATED, L4D1_ACT_READINESS_PISTOL_STIMULATED_TO_RELAXED, L4D1_ACT_IDLE_CARRY, L4D1_ACT_WALK_CARRY, L4D1_ACT_STARTDYING, L4D1_ACT_DYINGLOOP, L4D1_ACT_DYINGTODEAD, L4D1_ACT_RIDE_MANNED_GUN, L4D1_ACT_VM_SPRINT_ENTER, L4D1_ACT_VM_SPRINT_IDLE, L4D1_ACT_VM_SPRINT_LEAVE, L4D1_ACT_FIRE_START, L4D1_ACT_FIRE_LOOP, L4D1_ACT_FIRE_END, L4D1_ACT_CROUCHING_GRENADEIDLE, L4D1_ACT_CROUCHING_GRENADEREADY, L4D1_ACT_CROUCHING_PRIMARYATTACK, L4D1_ACT_OVERLAY_GRENADEIDLE, L4D1_ACT_OVERLAY_GRENADEREADY, L4D1_ACT_OVERLAY_PRIMARYATTACK, L4D1_ACT_OVERLAY_SHIELD_UP, L4D1_ACT_OVERLAY_SHIELD_DOWN, L4D1_ACT_OVERLAY_SHIELD_UP_IDLE, L4D1_ACT_OVERLAY_SHIELD_ATTACK, L4D1_ACT_OVERLAY_SHIELD_KNOCKBACK, L4D1_ACT_SHIELD_UP, L4D1_ACT_SHIELD_DOWN, L4D1_ACT_SHIELD_UP_IDLE, L4D1_ACT_SHIELD_ATTACK, L4D1_ACT_SHIELD_KNOCKBACK, L4D1_ACT_CROUCHING_SHIELD_UP, L4D1_ACT_CROUCHING_SHIELD_DOWN, L4D1_ACT_CROUCHING_SHIELD_UP_IDLE, L4D1_ACT_CROUCHING_SHIELD_ATTACK, L4D1_ACT_CROUCHING_SHIELD_KNOCKBACK, L4D1_ACT_TURNRIGHT45, L4D1_ACT_TURNLEFT45, L4D1_ACT_TURN, L4D1_ACT_OBJ_ASSEMBLING, L4D1_ACT_OBJ_DISMANTLING, L4D1_ACT_OBJ_STARTUP, L4D1_ACT_OBJ_RUNNING, L4D1_ACT_OBJ_IDLE, L4D1_ACT_OBJ_PLACING, L4D1_ACT_OBJ_DETERIORATING, L4D1_ACT_OBJ_UPGRADING, L4D1_ACT_DEPLOY, L4D1_ACT_DEPLOY_IDLE, L4D1_ACT_UNDEPLOY, L4D1_ACT_GRENADE_ROLL, L4D1_ACT_GRENADE_TOSS, L4D1_ACT_HANDGRENADE_THROW1, L4D1_ACT_HANDGRENADE_THROW2, L4D1_ACT_HANDGRENADE_THROW3, L4D1_ACT_SHOTGUN_IDLE_DEEP, L4D1_ACT_SHOTGUN_IDLE4, L4D1_ACT_GLOCK_SHOOTEMPTY, L4D1_ACT_GLOCK_SHOOT_RELOAD, L4D1_ACT_RPG_DRAW_UNLOADED, L4D1_ACT_RPG_HOLSTER_UNLOADED, L4D1_ACT_RPG_IDLE_UNLOADED, L4D1_ACT_RPG_FIDGET_UNLOADED, L4D1_ACT_CROSSBOW_DRAW_UNLOADED, L4D1_ACT_CROSSBOW_IDLE_UNLOADED, L4D1_ACT_CROSSBOW_FIDGET_UNLOADED, L4D1_ACT_GAUSS_SPINUP, L4D1_ACT_GAUSS_SPINCYCLE, L4D1_ACT_TRIPMINE_GROUND, L4D1_ACT_TRIPMINE_WORLD, L4D1_ACT_VM_PRIMARYATTACK_SILENCED, L4D1_ACT_VM_RELOAD_SILENCED, L4D1_ACT_VM_DRYFIRE_SILENCED, L4D1_ACT_VM_IDLE_SILENCED, L4D1_ACT_VM_DRAW_SILENCED, L4D1_ACT_VM_IDLE_EMPTY_LEFT, L4D1_ACT_VM_DRYFIRE_LEFT, L4D1_ACT_PLAYER_IDLE_FIRE, L4D1_ACT_PLAYER_CROUCH_FIRE, L4D1_ACT_PLAYER_CROUCH_WALK_FIRE, L4D1_ACT_PLAYER_WALK_FIRE, L4D1_ACT_PLAYER_RUN_FIRE, L4D1_ACT_IDLETORUN, L4D1_ACT_RUNTOIDLE, L4D1_ACT_SPRINT, L4D1_ACT_GET_DOWN_STAND, L4D1_ACT_GET_UP_STAND, L4D1_ACT_GET_DOWN_CROUCH, L4D1_ACT_GET_UP_CROUCH, L4D1_ACT_PRONE_FORWARD, L4D1_ACT_PRONE_IDLE, L4D1_ACT_DEEPIDLE1, L4D1_ACT_DEEPIDLE2, L4D1_ACT_DEEPIDLE3, L4D1_ACT_DEEPIDLE4, L4D1_ACT_VM_RELOAD_DEPLOYED, L4D1_ACT_VM_RELOAD_IDLE, L4D1_ACT_VM_DRAW_DEPLOYED, L4D1_ACT_VM_DRAW_EMPTY, L4D1_ACT_VM_PRIMARYATTACK_EMPTY, L4D1_ACT_VM_RELOAD_EMPTY, L4D1_ACT_VM_IDLE_EMPTY, L4D1_ACT_VM_IDLE_DEPLOYED_EMPTY, L4D1_ACT_VM_IDLE_8, L4D1_ACT_VM_IDLE_7, L4D1_ACT_VM_IDLE_6, L4D1_ACT_VM_IDLE_5, L4D1_ACT_VM_IDLE_4, L4D1_ACT_VM_IDLE_3, L4D1_ACT_VM_IDLE_2, L4D1_ACT_VM_IDLE_1, L4D1_ACT_VM_IDLE_DEPLOYED, L4D1_ACT_VM_IDLE_DEPLOYED_8, L4D1_ACT_VM_IDLE_DEPLOYED_7, L4D1_ACT_VM_IDLE_DEPLOYED_6, L4D1_ACT_VM_IDLE_DEPLOYED_5, L4D1_ACT_VM_IDLE_DEPLOYED_4, L4D1_ACT_VM_IDLE_DEPLOYED_3, L4D1_ACT_VM_IDLE_DEPLOYED_2, L4D1_ACT_VM_IDLE_DEPLOYED_1, L4D1_ACT_VM_UNDEPLOY, L4D1_ACT_VM_UNDEPLOY_8, L4D1_ACT_VM_UNDEPLOY_7, L4D1_ACT_VM_UNDEPLOY_6, L4D1_ACT_VM_UNDEPLOY_5, L4D1_ACT_VM_UNDEPLOY_4, L4D1_ACT_VM_UNDEPLOY_3, L4D1_ACT_VM_UNDEPLOY_2, L4D1_ACT_VM_UNDEPLOY_1, L4D1_ACT_VM_UNDEPLOY_EMPTY, L4D1_ACT_VM_DEPLOY, L4D1_ACT_VM_DEPLOY_8, L4D1_ACT_VM_DEPLOY_7, L4D1_ACT_VM_DEPLOY_6, L4D1_ACT_VM_DEPLOY_5, L4D1_ACT_VM_DEPLOY_4, L4D1_ACT_VM_DEPLOY_3, L4D1_ACT_VM_DEPLOY_2, L4D1_ACT_VM_DEPLOY_1, L4D1_ACT_VM_DEPLOY_EMPTY, L4D1_ACT_VM_PRIMARYATTACK_8, L4D1_ACT_VM_PRIMARYATTACK_7, L4D1_ACT_VM_PRIMARYATTACK_6, L4D1_ACT_VM_PRIMARYATTACK_5, L4D1_ACT_VM_PRIMARYATTACK_4, L4D1_ACT_VM_PRIMARYATTACK_3, L4D1_ACT_VM_PRIMARYATTACK_2, L4D1_ACT_VM_PRIMARYATTACK_1, L4D1_ACT_VM_PRIMARYATTACK_DEPLOYED, L4D1_ACT_VM_PRIMARYATTACK_DEPLOYED_8, L4D1_ACT_VM_PRIMARYATTACK_DEPLOYED_7, L4D1_ACT_VM_PRIMARYATTACK_DEPLOYED_6, L4D1_ACT_VM_PRIMARYATTACK_DEPLOYED_5, L4D1_ACT_VM_PRIMARYATTACK_DEPLOYED_4, L4D1_ACT_VM_PRIMARYATTACK_DEPLOYED_3, L4D1_ACT_VM_PRIMARYATTACK_DEPLOYED_2, L4D1_ACT_VM_PRIMARYATTACK_DEPLOYED_1, L4D1_ACT_VM_PRIMARYATTACK_DEPLOYED_EMPTY, L4D1_ACT_DOD_DEPLOYED, L4D1_ACT_DOD_PRONE_DEPLOYED, L4D1_ACT_DOD_IDLE_ZOOMED, L4D1_ACT_DOD_WALK_ZOOMED, L4D1_ACT_DOD_CROUCH_ZOOMED, L4D1_ACT_DOD_CROUCHWALK_ZOOMED, L4D1_ACT_DOD_PRONE_ZOOMED, L4D1_ACT_DOD_PRONE_FORWARD_ZOOMED, L4D1_ACT_DOD_PRIMARYATTACK_DEPLOYED, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED, L4D1_ACT_DOD_RELOAD_DEPLOYED, L4D1_ACT_DOD_RELOAD_PRONE_DEPLOYED, L4D1_ACT_DOD_PRIMARYATTACK_PRONE, L4D1_ACT_DOD_SECONDARYATTACK_PRONE, L4D1_ACT_DOD_RELOAD_CROUCH, L4D1_ACT_DOD_RELOAD_PRONE, L4D1_ACT_DOD_STAND_IDLE, L4D1_ACT_DOD_STAND_AIM, L4D1_ACT_DOD_CROUCH_IDLE, L4D1_ACT_DOD_CROUCH_AIM, L4D1_ACT_DOD_CROUCHWALK_IDLE, L4D1_ACT_DOD_CROUCHWALK_AIM, L4D1_ACT_DOD_WALK_IDLE, L4D1_ACT_DOD_WALK_AIM, L4D1_ACT_DOD_RUN_IDLE, L4D1_ACT_DOD_RUN_AIM, L4D1_ACT_DOD_STAND_AIM_PISTOL, L4D1_ACT_DOD_CROUCH_AIM_PISTOL, L4D1_ACT_DOD_CROUCHWALK_AIM_PISTOL, L4D1_ACT_DOD_WALK_AIM_PISTOL, L4D1_ACT_DOD_RUN_AIM_PISTOL, L4D1_ACT_DOD_PRONE_AIM_PISTOL, L4D1_ACT_DOD_STAND_IDLE_PISTOL, L4D1_ACT_DOD_CROUCH_IDLE_PISTOL, L4D1_ACT_DOD_CROUCHWALK_IDLE_PISTOL, L4D1_ACT_DOD_WALK_IDLE_PISTOL, L4D1_ACT_DOD_RUN_IDLE_PISTOL, L4D1_ACT_DOD_SPRINT_IDLE_PISTOL, L4D1_ACT_DOD_PRONEWALK_IDLE_PISTOL, L4D1_ACT_DOD_STAND_AIM_C96, L4D1_ACT_DOD_CROUCH_AIM_C96, L4D1_ACT_DOD_CROUCHWALK_AIM_C96, L4D1_ACT_DOD_WALK_AIM_C96, L4D1_ACT_DOD_RUN_AIM_C96, L4D1_ACT_DOD_PRONE_AIM_C96, L4D1_ACT_DOD_STAND_IDLE_C96, L4D1_ACT_DOD_CROUCH_IDLE_C96, L4D1_ACT_DOD_CROUCHWALK_IDLE_C96, L4D1_ACT_DOD_WALK_IDLE_C96, L4D1_ACT_DOD_RUN_IDLE_C96, L4D1_ACT_DOD_SPRINT_IDLE_C96, L4D1_ACT_DOD_PRONEWALK_IDLE_C96, L4D1_ACT_DOD_STAND_AIM_RIFLE, L4D1_ACT_DOD_CROUCH_AIM_RIFLE, L4D1_ACT_DOD_CROUCHWALK_AIM_RIFLE, L4D1_ACT_DOD_WALK_AIM_RIFLE, L4D1_ACT_DOD_RUN_AIM_RIFLE, L4D1_ACT_DOD_PRONE_AIM_RIFLE, L4D1_ACT_DOD_STAND_IDLE_RIFLE, L4D1_ACT_DOD_CROUCH_IDLE_RIFLE, L4D1_ACT_DOD_CROUCHWALK_IDLE_RIFLE, L4D1_ACT_DOD_WALK_IDLE_RIFLE, L4D1_ACT_DOD_RUN_IDLE_RIFLE, L4D1_ACT_DOD_SPRINT_IDLE_RIFLE, L4D1_ACT_DOD_PRONEWALK_IDLE_RIFLE, L4D1_ACT_DOD_STAND_AIM_BOLT, L4D1_ACT_DOD_CROUCH_AIM_BOLT, L4D1_ACT_DOD_CROUCHWALK_AIM_BOLT, L4D1_ACT_DOD_WALK_AIM_BOLT, L4D1_ACT_DOD_RUN_AIM_BOLT, L4D1_ACT_DOD_PRONE_AIM_BOLT, L4D1_ACT_DOD_STAND_IDLE_BOLT, L4D1_ACT_DOD_CROUCH_IDLE_BOLT, L4D1_ACT_DOD_CROUCHWALK_IDLE_BOLT, L4D1_ACT_DOD_WALK_IDLE_BOLT, L4D1_ACT_DOD_RUN_IDLE_BOLT, L4D1_ACT_DOD_SPRINT_IDLE_BOLT, L4D1_ACT_DOD_PRONEWALK_IDLE_BOLT, L4D1_ACT_DOD_STAND_AIM_TOMMY, L4D1_ACT_DOD_CROUCH_AIM_TOMMY, L4D1_ACT_DOD_CROUCHWALK_AIM_TOMMY, L4D1_ACT_DOD_WALK_AIM_TOMMY, L4D1_ACT_DOD_RUN_AIM_TOMMY, L4D1_ACT_DOD_PRONE_AIM_TOMMY, L4D1_ACT_DOD_STAND_IDLE_TOMMY, L4D1_ACT_DOD_CROUCH_IDLE_TOMMY, L4D1_ACT_DOD_CROUCHWALK_IDLE_TOMMY, L4D1_ACT_DOD_WALK_IDLE_TOMMY, L4D1_ACT_DOD_RUN_IDLE_TOMMY, L4D1_ACT_DOD_SPRINT_IDLE_TOMMY, L4D1_ACT_DOD_PRONEWALK_IDLE_TOMMY, L4D1_ACT_DOD_STAND_AIM_MP40, L4D1_ACT_DOD_CROUCH_AIM_MP40, L4D1_ACT_DOD_CROUCHWALK_AIM_MP40, L4D1_ACT_DOD_WALK_AIM_MP40, L4D1_ACT_DOD_RUN_AIM_MP40, L4D1_ACT_DOD_PRONE_AIM_MP40, L4D1_ACT_DOD_STAND_IDLE_MP40, L4D1_ACT_DOD_CROUCH_IDLE_MP40, L4D1_ACT_DOD_CROUCHWALK_IDLE_MP40, L4D1_ACT_DOD_WALK_IDLE_MP40, L4D1_ACT_DOD_RUN_IDLE_MP40, L4D1_ACT_DOD_SPRINT_IDLE_MP40, L4D1_ACT_DOD_PRONEWALK_IDLE_MP40, L4D1_ACT_DOD_STAND_AIM_MP44, L4D1_ACT_DOD_CROUCH_AIM_MP44, L4D1_ACT_DOD_CROUCHWALK_AIM_MP44, L4D1_ACT_DOD_WALK_AIM_MP44, L4D1_ACT_DOD_RUN_AIM_MP44, L4D1_ACT_DOD_PRONE_AIM_MP44, L4D1_ACT_DOD_STAND_IDLE_MP44, L4D1_ACT_DOD_CROUCH_IDLE_MP44, L4D1_ACT_DOD_CROUCHWALK_IDLE_MP44, L4D1_ACT_DOD_WALK_IDLE_MP44, L4D1_ACT_DOD_RUN_IDLE_MP44, L4D1_ACT_DOD_SPRINT_IDLE_MP44, L4D1_ACT_DOD_PRONEWALK_IDLE_MP44, L4D1_ACT_DOD_STAND_AIM_GREASE, L4D1_ACT_DOD_CROUCH_AIM_GREASE, L4D1_ACT_DOD_CROUCHWALK_AIM_GREASE, L4D1_ACT_DOD_WALK_AIM_GREASE, L4D1_ACT_DOD_RUN_AIM_GREASE, L4D1_ACT_DOD_PRONE_AIM_GREASE, L4D1_ACT_DOD_STAND_IDLE_GREASE, L4D1_ACT_DOD_CROUCH_IDLE_GREASE, L4D1_ACT_DOD_CROUCHWALK_IDLE_GREASE, L4D1_ACT_DOD_WALK_IDLE_GREASE, L4D1_ACT_DOD_RUN_IDLE_GREASE, L4D1_ACT_DOD_SPRINT_IDLE_GREASE, L4D1_ACT_DOD_PRONEWALK_IDLE_GREASE, L4D1_ACT_DOD_STAND_AIM_MG, L4D1_ACT_DOD_CROUCH_AIM_MG, L4D1_ACT_DOD_CROUCHWALK_AIM_MG, L4D1_ACT_DOD_WALK_AIM_MG, L4D1_ACT_DOD_RUN_AIM_MG, L4D1_ACT_DOD_PRONE_AIM_MG, L4D1_ACT_DOD_STAND_IDLE_MG, L4D1_ACT_DOD_CROUCH_IDLE_MG, L4D1_ACT_DOD_CROUCHWALK_IDLE_MG, L4D1_ACT_DOD_WALK_IDLE_MG, L4D1_ACT_DOD_RUN_IDLE_MG, L4D1_ACT_DOD_SPRINT_IDLE_MG, L4D1_ACT_DOD_PRONEWALK_IDLE_MG, L4D1_ACT_DOD_STAND_AIM_30CAL, L4D1_ACT_DOD_CROUCH_AIM_30CAL, L4D1_ACT_DOD_CROUCHWALK_AIM_30CAL, L4D1_ACT_DOD_WALK_AIM_30CAL, L4D1_ACT_DOD_RUN_AIM_30CAL, L4D1_ACT_DOD_PRONE_AIM_30CAL, L4D1_ACT_DOD_STAND_IDLE_30CAL, L4D1_ACT_DOD_CROUCH_IDLE_30CAL, L4D1_ACT_DOD_CROUCHWALK_IDLE_30CAL, L4D1_ACT_DOD_WALK_IDLE_30CAL, L4D1_ACT_DOD_RUN_IDLE_30CAL, L4D1_ACT_DOD_SPRINT_IDLE_30CAL, L4D1_ACT_DOD_PRONEWALK_IDLE_30CAL, L4D1_ACT_DOD_STAND_AIM_GREN_FRAG, L4D1_ACT_DOD_CROUCH_AIM_GREN_FRAG, L4D1_ACT_DOD_CROUCHWALK_AIM_GREN_FRAG, L4D1_ACT_DOD_WALK_AIM_GREN_FRAG, L4D1_ACT_DOD_RUN_AIM_GREN_FRAG, L4D1_ACT_DOD_PRONE_AIM_GREN_FRAG, L4D1_ACT_DOD_SPRINT_AIM_GREN_FRAG, L4D1_ACT_DOD_PRONEWALK_AIM_GREN_FRAG, L4D1_ACT_DOD_STAND_AIM_GREN_STICK, L4D1_ACT_DOD_CROUCH_AIM_GREN_STICK, L4D1_ACT_DOD_CROUCHWALK_AIM_GREN_STICK, L4D1_ACT_DOD_WALK_AIM_GREN_STICK, L4D1_ACT_DOD_RUN_AIM_GREN_STICK, L4D1_ACT_DOD_PRONE_AIM_GREN_STICK, L4D1_ACT_DOD_SPRINT_AIM_GREN_STICK, L4D1_ACT_DOD_PRONEWALK_AIM_GREN_STICK, L4D1_ACT_DOD_STAND_AIM_KNIFE, L4D1_ACT_DOD_CROUCH_AIM_KNIFE, L4D1_ACT_DOD_CROUCHWALK_AIM_KNIFE, L4D1_ACT_DOD_WALK_AIM_KNIFE, L4D1_ACT_DOD_RUN_AIM_KNIFE, L4D1_ACT_DOD_PRONE_AIM_KNIFE, L4D1_ACT_DOD_SPRINT_AIM_KNIFE, L4D1_ACT_DOD_PRONEWALK_AIM_KNIFE, L4D1_ACT_DOD_STAND_AIM_SPADE, L4D1_ACT_DOD_CROUCH_AIM_SPADE, L4D1_ACT_DOD_CROUCHWALK_AIM_SPADE, L4D1_ACT_DOD_WALK_AIM_SPADE, L4D1_ACT_DOD_RUN_AIM_SPADE, L4D1_ACT_DOD_PRONE_AIM_SPADE, L4D1_ACT_DOD_SPRINT_AIM_SPADE, L4D1_ACT_DOD_PRONEWALK_AIM_SPADE, L4D1_ACT_DOD_STAND_AIM_BAZOOKA, L4D1_ACT_DOD_CROUCH_AIM_BAZOOKA, L4D1_ACT_DOD_CROUCHWALK_AIM_BAZOOKA, L4D1_ACT_DOD_WALK_AIM_BAZOOKA, L4D1_ACT_DOD_RUN_AIM_BAZOOKA, L4D1_ACT_DOD_PRONE_AIM_BAZOOKA, L4D1_ACT_DOD_STAND_IDLE_BAZOOKA, L4D1_ACT_DOD_CROUCH_IDLE_BAZOOKA, L4D1_ACT_DOD_CROUCHWALK_IDLE_BAZOOKA, L4D1_ACT_DOD_WALK_IDLE_BAZOOKA, L4D1_ACT_DOD_RUN_IDLE_BAZOOKA, L4D1_ACT_DOD_SPRINT_IDLE_BAZOOKA, L4D1_ACT_DOD_PRONEWALK_IDLE_BAZOOKA, L4D1_ACT_DOD_STAND_AIM_PSCHRECK, L4D1_ACT_DOD_CROUCH_AIM_PSCHRECK, L4D1_ACT_DOD_CROUCHWALK_AIM_PSCHRECK, L4D1_ACT_DOD_WALK_AIM_PSCHRECK, L4D1_ACT_DOD_RUN_AIM_PSCHRECK, L4D1_ACT_DOD_PRONE_AIM_PSCHRECK, L4D1_ACT_DOD_STAND_IDLE_PSCHRECK, L4D1_ACT_DOD_CROUCH_IDLE_PSCHRECK, L4D1_ACT_DOD_CROUCHWALK_IDLE_PSCHRECK, L4D1_ACT_DOD_WALK_IDLE_PSCHRECK, L4D1_ACT_DOD_RUN_IDLE_PSCHRECK, L4D1_ACT_DOD_SPRINT_IDLE_PSCHRECK, L4D1_ACT_DOD_PRONEWALK_IDLE_PSCHRECK, L4D1_ACT_DOD_STAND_AIM_BAR, L4D1_ACT_DOD_CROUCH_AIM_BAR, L4D1_ACT_DOD_CROUCHWALK_AIM_BAR, L4D1_ACT_DOD_WALK_AIM_BAR, L4D1_ACT_DOD_RUN_AIM_BAR, L4D1_ACT_DOD_PRONE_AIM_BAR, L4D1_ACT_DOD_STAND_IDLE_BAR, L4D1_ACT_DOD_CROUCH_IDLE_BAR, L4D1_ACT_DOD_CROUCHWALK_IDLE_BAR, L4D1_ACT_DOD_WALK_IDLE_BAR, L4D1_ACT_DOD_RUN_IDLE_BAR, L4D1_ACT_DOD_SPRINT_IDLE_BAR, L4D1_ACT_DOD_PRONEWALK_IDLE_BAR, L4D1_ACT_DOD_STAND_ZOOM_RIFLE, L4D1_ACT_DOD_CROUCH_ZOOM_RIFLE, L4D1_ACT_DOD_CROUCHWALK_ZOOM_RIFLE, L4D1_ACT_DOD_WALK_ZOOM_RIFLE, L4D1_ACT_DOD_RUN_ZOOM_RIFLE, L4D1_ACT_DOD_PRONE_ZOOM_RIFLE, L4D1_ACT_DOD_STAND_ZOOM_BOLT, L4D1_ACT_DOD_CROUCH_ZOOM_BOLT, L4D1_ACT_DOD_CROUCHWALK_ZOOM_BOLT, L4D1_ACT_DOD_WALK_ZOOM_BOLT, L4D1_ACT_DOD_RUN_ZOOM_BOLT, L4D1_ACT_DOD_PRONE_ZOOM_BOLT, L4D1_ACT_DOD_STAND_ZOOM_BAZOOKA, L4D1_ACT_DOD_CROUCH_ZOOM_BAZOOKA, L4D1_ACT_DOD_CROUCHWALK_ZOOM_BAZOOKA, L4D1_ACT_DOD_WALK_ZOOM_BAZOOKA, L4D1_ACT_DOD_RUN_ZOOM_BAZOOKA, L4D1_ACT_DOD_PRONE_ZOOM_BAZOOKA, L4D1_ACT_DOD_STAND_ZOOM_PSCHRECK, L4D1_ACT_DOD_CROUCH_ZOOM_PSCHRECK, L4D1_ACT_DOD_CROUCHWALK_ZOOM_PSCHRECK, L4D1_ACT_DOD_WALK_ZOOM_PSCHRECK, L4D1_ACT_DOD_RUN_ZOOM_PSCHRECK, L4D1_ACT_DOD_PRONE_ZOOM_PSCHRECK, L4D1_ACT_DOD_DEPLOY_RIFLE, L4D1_ACT_DOD_DEPLOY_TOMMY, L4D1_ACT_DOD_DEPLOY_MG, L4D1_ACT_DOD_DEPLOY_30CAL, L4D1_ACT_DOD_PRONE_DEPLOY_RIFLE, L4D1_ACT_DOD_PRONE_DEPLOY_TOMMY, L4D1_ACT_DOD_PRONE_DEPLOY_MG, L4D1_ACT_DOD_PRONE_DEPLOY_30CAL, L4D1_ACT_DOD_PRIMARYATTACK_RIFLE, L4D1_ACT_DOD_SECONDARYATTACK_RIFLE, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_RIFLE, L4D1_ACT_DOD_SECONDARYATTACK_PRONE_RIFLE, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED_RIFLE, L4D1_ACT_DOD_PRIMARYATTACK_DEPLOYED_RIFLE, L4D1_ACT_DOD_PRIMARYATTACK_BOLT, L4D1_ACT_DOD_SECONDARYATTACK_BOLT, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_BOLT, L4D1_ACT_DOD_SECONDARYATTACK_PRONE_BOLT, L4D1_ACT_DOD_PRIMARYATTACK_TOMMY, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_TOMMY, L4D1_ACT_DOD_SECONDARYATTACK_TOMMY, L4D1_ACT_DOD_SECONDARYATTACK_PRONE_TOMMY, L4D1_ACT_DOD_PRIMARYATTACK_MP40, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_MP40, L4D1_ACT_DOD_SECONDARYATTACK_MP40, L4D1_ACT_DOD_SECONDARYATTACK_PRONE_MP40, L4D1_ACT_DOD_PRIMARYATTACK_MP44, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_MP44, L4D1_ACT_DOD_PRIMARYATTACK_GREASE, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_GREASE, L4D1_ACT_DOD_PRIMARYATTACK_PISTOL, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_PISTOL, L4D1_ACT_DOD_PRIMARYATTACK_C96, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_C96, L4D1_ACT_DOD_PRIMARYATTACK_MG, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_MG, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED_MG, L4D1_ACT_DOD_PRIMARYATTACK_DEPLOYED_MG, L4D1_ACT_DOD_PRIMARYATTACK_30CAL, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_30CAL, L4D1_ACT_DOD_PRIMARYATTACK_DEPLOYED_30CAL, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_DEPLOYED_30CAL, L4D1_ACT_DOD_PRIMARYATTACK_GREN_FRAG, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_GREN_FRAG, L4D1_ACT_DOD_PRIMARYATTACK_GREN_STICK, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_GREN_STICK, L4D1_ACT_DOD_PRIMARYATTACK_KNIFE, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_KNIFE, L4D1_ACT_DOD_PRIMARYATTACK_SPADE, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_SPADE, L4D1_ACT_DOD_PRIMARYATTACK_BAZOOKA, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_BAZOOKA, L4D1_ACT_DOD_PRIMARYATTACK_PSCHRECK, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_PSCHRECK, L4D1_ACT_DOD_PRIMARYATTACK_BAR, L4D1_ACT_DOD_PRIMARYATTACK_PRONE_BAR, L4D1_ACT_DOD_RELOAD_GARAND, L4D1_ACT_DOD_RELOAD_K43, L4D1_ACT_DOD_RELOAD_BAR, L4D1_ACT_DOD_RELOAD_MP40, L4D1_ACT_DOD_RELOAD_MP44, L4D1_ACT_DOD_RELOAD_BOLT, L4D1_ACT_DOD_RELOAD_M1CARBINE, L4D1_ACT_DOD_RELOAD_TOMMY, L4D1_ACT_DOD_RELOAD_GREASEGUN, L4D1_ACT_DOD_RELOAD_PISTOL, L4D1_ACT_DOD_RELOAD_FG42, L4D1_ACT_DOD_RELOAD_RIFLE, L4D1_ACT_DOD_RELOAD_RIFLEGRENADE, L4D1_ACT_DOD_RELOAD_C96, L4D1_ACT_DOD_RELOAD_CROUCH_BAR, L4D1_ACT_DOD_RELOAD_CROUCH_RIFLE, L4D1_ACT_DOD_RELOAD_CROUCH_RIFLEGRENADE, L4D1_ACT_DOD_RELOAD_CROUCH_BOLT, L4D1_ACT_DOD_RELOAD_CROUCH_MP44, L4D1_ACT_DOD_RELOAD_CROUCH_MP40, L4D1_ACT_DOD_RELOAD_CROUCH_TOMMY, L4D1_ACT_DOD_RELOAD_CROUCH_BAZOOKA, L4D1_ACT_DOD_RELOAD_CROUCH_PSCHRECK, L4D1_ACT_DOD_RELOAD_CROUCH_PISTOL, L4D1_ACT_DOD_RELOAD_CROUCH_M1CARBINE, L4D1_ACT_DOD_RELOAD_CROUCH_C96, L4D1_ACT_DOD_RELOAD_BAZOOKA, L4D1_ACT_DOD_ZOOMLOAD_BAZOOKA, L4D1_ACT_DOD_RELOAD_PSCHRECK, L4D1_ACT_DOD_ZOOMLOAD_PSCHRECK, L4D1_ACT_DOD_RELOAD_DEPLOYED_FG42, L4D1_ACT_DOD_RELOAD_DEPLOYED_30CAL, L4D1_ACT_DOD_RELOAD_DEPLOYED_MG, L4D1_ACT_DOD_RELOAD_DEPLOYED_MG34, L4D1_ACT_DOD_RELOAD_DEPLOYED_BAR, L4D1_ACT_DOD_RELOAD_PRONE_PISTOL, L4D1_ACT_DOD_RELOAD_PRONE_GARAND, L4D1_ACT_DOD_RELOAD_PRONE_M1CARBINE, L4D1_ACT_DOD_RELOAD_PRONE_BOLT, L4D1_ACT_DOD_RELOAD_PRONE_K43, L4D1_ACT_DOD_RELOAD_PRONE_MP40, L4D1_ACT_DOD_RELOAD_PRONE_MP44, L4D1_ACT_DOD_RELOAD_PRONE_BAR, L4D1_ACT_DOD_RELOAD_PRONE_GREASEGUN, L4D1_ACT_DOD_RELOAD_PRONE_TOMMY, L4D1_ACT_DOD_RELOAD_PRONE_FG42, L4D1_ACT_DOD_RELOAD_PRONE_RIFLE, L4D1_ACT_DOD_RELOAD_PRONE_RIFLEGRENADE, L4D1_ACT_DOD_RELOAD_PRONE_C96, L4D1_ACT_DOD_RELOAD_PRONE_BAZOOKA, L4D1_ACT_DOD_ZOOMLOAD_PRONE_BAZOOKA, L4D1_ACT_DOD_RELOAD_PRONE_PSCHRECK, L4D1_ACT_DOD_ZOOMLOAD_PRONE_PSCHRECK, L4D1_ACT_DOD_RELOAD_PRONE_DEPLOYED_BAR, L4D1_ACT_DOD_RELOAD_PRONE_DEPLOYED_FG42, L4D1_ACT_DOD_RELOAD_PRONE_DEPLOYED_30CAL, L4D1_ACT_DOD_RELOAD_PRONE_DEPLOYED_MG, L4D1_ACT_DOD_RELOAD_PRONE_DEPLOYED_MG34, L4D1_ACT_DOD_PRONE_ZOOM_FORWARD_RIFLE, L4D1_ACT_DOD_PRONE_ZOOM_FORWARD_BOLT, L4D1_ACT_DOD_PRONE_ZOOM_FORWARD_BAZOOKA, L4D1_ACT_DOD_PRONE_ZOOM_FORWARD_PSCHRECK, L4D1_ACT_DOD_PRIMARYATTACK_CROUCH, L4D1_ACT_DOD_PRIMARYATTACK_CROUCH_SPADE, L4D1_ACT_DOD_PRIMARYATTACK_CROUCH_KNIFE, L4D1_ACT_DOD_PRIMARYATTACK_CROUCH_GREN_FRAG, L4D1_ACT_DOD_PRIMARYATTACK_CROUCH_GREN_STICK, L4D1_ACT_DOD_SECONDARYATTACK_CROUCH, L4D1_ACT_DOD_SECONDARYATTACK_CROUCH_TOMMY, L4D1_ACT_DOD_SECONDARYATTACK_CROUCH_MP40, L4D1_ACT_DOD_HS_IDLE, L4D1_ACT_DOD_HS_CROUCH, L4D1_ACT_DOD_HS_IDLE_30CAL, L4D1_ACT_DOD_HS_IDLE_BAZOOKA, L4D1_ACT_DOD_HS_IDLE_PSCHRECK, L4D1_ACT_DOD_HS_IDLE_KNIFE, L4D1_ACT_DOD_HS_IDLE_MG42, L4D1_ACT_DOD_HS_IDLE_PISTOL, L4D1_ACT_DOD_HS_IDLE_STICKGRENADE, L4D1_ACT_DOD_HS_IDLE_TOMMY, L4D1_ACT_DOD_HS_IDLE_MP44, L4D1_ACT_DOD_HS_IDLE_K98, L4D1_ACT_DOD_HS_CROUCH_30CAL, L4D1_ACT_DOD_HS_CROUCH_BAZOOKA, L4D1_ACT_DOD_HS_CROUCH_PSCHRECK, L4D1_ACT_DOD_HS_CROUCH_KNIFE, L4D1_ACT_DOD_HS_CROUCH_MG42, L4D1_ACT_DOD_HS_CROUCH_PISTOL, L4D1_ACT_DOD_HS_CROUCH_STICKGRENADE, L4D1_ACT_DOD_HS_CROUCH_TOMMY, L4D1_ACT_DOD_HS_CROUCH_MP44, L4D1_ACT_DOD_HS_CROUCH_K98, L4D1_ACT_DOD_STAND_IDLE_TNT, L4D1_ACT_DOD_CROUCH_IDLE_TNT, L4D1_ACT_DOD_CROUCHWALK_IDLE_TNT, L4D1_ACT_DOD_WALK_IDLE_TNT, L4D1_ACT_DOD_RUN_IDLE_TNT, L4D1_ACT_DOD_SPRINT_IDLE_TNT, L4D1_ACT_DOD_PRONEWALK_IDLE_TNT, L4D1_ACT_DOD_PLANT_TNT, L4D1_ACT_DOD_DEFUSE_TNT, L4D1_ACT_HL2MP_IDLE, L4D1_ACT_HL2MP_RUN, L4D1_ACT_HL2MP_IDLE_CROUCH, L4D1_ACT_HL2MP_WALK_CROUCH, L4D1_ACT_HL2MP_GESTURE_RANGE_ATTACK, L4D1_ACT_HL2MP_GESTURE_RELOAD, L4D1_ACT_HL2MP_JUMP, L4D1_ACT_HL2MP_IDLE_PISTOL, L4D1_ACT_HL2MP_RUN_PISTOL, L4D1_ACT_HL2MP_IDLE_CROUCH_PISTOL, L4D1_ACT_HL2MP_WALK_CROUCH_PISTOL, L4D1_ACT_HL2MP_GESTURE_RANGE_ATTACK_PISTOL, L4D1_ACT_HL2MP_GESTURE_RELOAD_PISTOL, L4D1_ACT_HL2MP_JUMP_PISTOL, L4D1_ACT_HL2MP_IDLE_SMG1, L4D1_ACT_HL2MP_RUN_SMG1, L4D1_ACT_HL2MP_IDLE_CROUCH_SMG1, L4D1_ACT_HL2MP_WALK_CROUCH_SMG1, L4D1_ACT_HL2MP_GESTURE_RANGE_ATTACK_SMG1, L4D1_ACT_HL2MP_GESTURE_RELOAD_SMG1, L4D1_ACT_HL2MP_JUMP_SMG1, L4D1_ACT_HL2MP_IDLE_AR2, L4D1_ACT_HL2MP_RUN_AR2, L4D1_ACT_HL2MP_IDLE_CROUCH_AR2, L4D1_ACT_HL2MP_WALK_CROUCH_AR2, L4D1_ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2, L4D1_ACT_HL2MP_GESTURE_RELOAD_AR2, L4D1_ACT_HL2MP_JUMP_AR2, L4D1_ACT_HL2MP_IDLE_SHOTGUN, L4D1_ACT_HL2MP_RUN_SHOTGUN, L4D1_ACT_HL2MP_IDLE_CROUCH_SHOTGUN, L4D1_ACT_HL2MP_WALK_CROUCH_SHOTGUN, L4D1_ACT_HL2MP_GESTURE_RANGE_ATTACK_SHOTGUN, L4D1_ACT_HL2MP_GESTURE_RELOAD_SHOTGUN, L4D1_ACT_HL2MP_JUMP_SHOTGUN, L4D1_ACT_HL2MP_IDLE_RPG, L4D1_ACT_HL2MP_RUN_RPG, L4D1_ACT_HL2MP_IDLE_CROUCH_RPG, L4D1_ACT_HL2MP_WALK_CROUCH_RPG, L4D1_ACT_HL2MP_GESTURE_RANGE_ATTACK_RPG, L4D1_ACT_HL2MP_GESTURE_RELOAD_RPG, L4D1_ACT_HL2MP_JUMP_RPG, L4D1_ACT_HL2MP_IDLE_GRENADE, L4D1_ACT_HL2MP_RUN_GRENADE, L4D1_ACT_HL2MP_IDLE_CROUCH_GRENADE, L4D1_ACT_HL2MP_WALK_CROUCH_GRENADE, L4D1_ACT_HL2MP_GESTURE_RANGE_ATTACK_GRENADE, L4D1_ACT_HL2MP_GESTURE_RELOAD_GRENADE, L4D1_ACT_HL2MP_JUMP_GRENADE, L4D1_ACT_HL2MP_IDLE_PHYSGUN, L4D1_ACT_HL2MP_RUN_PHYSGUN, L4D1_ACT_HL2MP_IDLE_CROUCH_PHYSGUN, L4D1_ACT_HL2MP_WALK_CROUCH_PHYSGUN, L4D1_ACT_HL2MP_GESTURE_RANGE_ATTACK_PHYSGUN, L4D1_ACT_HL2MP_GESTURE_RELOAD_PHYSGUN, L4D1_ACT_HL2MP_JUMP_PHYSGUN, L4D1_ACT_HL2MP_IDLE_CROSSBOW, L4D1_ACT_HL2MP_RUN_CROSSBOW, L4D1_ACT_HL2MP_IDLE_CROUCH_CROSSBOW, L4D1_ACT_HL2MP_WALK_CROUCH_CROSSBOW, L4D1_ACT_HL2MP_GESTURE_RANGE_ATTACK_CROSSBOW, L4D1_ACT_HL2MP_GESTURE_RELOAD_CROSSBOW, L4D1_ACT_HL2MP_JUMP_CROSSBOW, L4D1_ACT_HL2MP_IDLE_MELEE, L4D1_ACT_HL2MP_RUN_MELEE, L4D1_ACT_HL2MP_IDLE_CROUCH_MELEE, L4D1_ACT_HL2MP_WALK_CROUCH_MELEE, L4D1_ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE, L4D1_ACT_HL2MP_GESTURE_RELOAD_MELEE, L4D1_ACT_HL2MP_JUMP_MELEE, L4D1_ACT_HL2MP_IDLE_SLAM, L4D1_ACT_HL2MP_RUN_SLAM, L4D1_ACT_HL2MP_IDLE_CROUCH_SLAM, L4D1_ACT_HL2MP_WALK_CROUCH_SLAM, L4D1_ACT_HL2MP_GESTURE_RANGE_ATTACK_SLAM, L4D1_ACT_HL2MP_GESTURE_RELOAD_SLAM, L4D1_ACT_HL2MP_JUMP_SLAM, L4D1_ACT_VM_SHRIEK, L4D1_ACT_VM_VOMIT, L4D1_ACT_VM_COUGH, L4D1_ACT_VM_LUNGE, L4D1_ACT_IDLE_INJURED, L4D1_ACT_IDLE_INCAP, L4D1_ACT_WALK_INJURED, L4D1_ACT_RUN_INJURED, L4D1_ACT_RUN_PULLED, L4D1_ACT_IDLE_CALM, L4D1_ACT_WALK_CALM, L4D1_ACT_RUN_CALM, L4D1_ACT_JUMP_SHOTGUN, L4D1_ACT_JUMP_RIFLE, L4D1_ACT_JUMP_SMG, L4D1_ACT_JUMP_PISTOL, L4D1_ACT_JUMP_DUAL_PISTOL, L4D1_ACT_JUMP_ITEM, L4D1_ACT_TERROR_HIT_BY_TANKPUNCH, L4D1_ACT_TERROR_IDLE_FALL_FROM_TANKPUNCH, L4D1_ACT_TERROR_TANKPUNCH_LAND, L4D1_ACT_TERROR_HEAL_SELF, L4D1_ACT_TERROR_HEAL_FRIEND, L4D1_ACT_TERROR_HEAL_INCAPACITATED, L4D1_ACT_TERROR_CROUCH_HEAL_SELF, L4D1_ACT_TERROR_CROUCH_HEAL_FRIEND, L4D1_ACT_TERROR_CROUCH_HEAL_INCAPACITATED, L4D1_ACT_TERROR_HEAL_INCAPACITATED_ABOVE, L4D1_ACT_TERROR_CROUCH_HEAL_INCAPACITATED_ABOVE, L4D1_ACT_TERROR_USE_PILLS, L4D1_ACT_TERROR_IDLE_NEUTRAL, L4D1_ACT_TERROR_IDLE_ALERT, L4D1_ACT_TERROR_IDLE_INTENSE, L4D1_ACT_TERROR_IDLE_ALERT_INJURED_AHEAD, L4D1_ACT_TERROR_IDLE_ALERT_AHEAD, L4D1_ACT_TERROR_IDLE_ALERT_INJURED_BEHIND, L4D1_ACT_TERROR_IDLE_ALERT_BEHIND, L4D1_ACT_TERROR_IDLE_ALERT_INJURED_LEFT, L4D1_ACT_TERROR_IDLE_ALERT_LEFT, L4D1_ACT_TERROR_IDLE_ALERT_INJURED_RIGHT, L4D1_ACT_TERROR_IDLE_ALERT_RIGHT, L4D1_ACT_TERROR_IDLE_ACQUIRE, L4D1_ACT_TERROR_LEAN_FORWARD_IDLE, L4D1_ACT_TERROR_LEAN_BACKWARD_IDLE, L4D1_ACT_TERROR_LEAN_LEFTWARD_IDLE, L4D1_ACT_TERROR_LEAN_RIGHTWARD_IDLE, L4D1_ACT_TERROR_FIDGET, L4D1_ACT_TERROR_NEUTRAL_TO_ALERT, L4D1_ACT_TERROR_ALERT_TO_NEUTRAL, L4D1_ACT_TERROR_FACE_LEFT_NEUTRAL, L4D1_ACT_TERROR_FACE_LEFT_ALERT, L4D1_ACT_TERROR_FACE_LEFT_INTENSE, L4D1_ACT_TERROR_FACE_RIGHT_NEUTRAL, L4D1_ACT_TERROR_FACE_RIGHT_ALERT, L4D1_ACT_TERROR_FACE_RIGHT_INTENSE, L4D1_ACT_TERROR_ABOUT_FACE_NEUTRAL, L4D1_ACT_TERROR_ABOUT_FACE_ALERT, L4D1_ACT_TERROR_ABOUT_FACE_INTENSE, L4D1_ACT_TERROR_WALK_NEUTRAL, L4D1_ACT_TERROR_WALK_ALERT, L4D1_ACT_TERROR_WALK_INTENSE, L4D1_ACT_TERROR_RUN_NEUTRAL, L4D1_ACT_TERROR_RUN_ALERT, L4D1_ACT_TERROR_RUN_INTENSE, L4D1_ACT_TERROR_RUN_ON_FIRE_INTENSE, L4D1_ACT_TERROR_RUN_INTENSE_TO_STAND_ALERT, L4D1_ACT_TERROR_CROUCH_IDLE_NEUTRAL, L4D1_ACT_TERROR_CROUCH_IDLE_ALERT, L4D1_ACT_TERROR_CROUCH_IDLE_INTENSE, L4D1_ACT_TERROR_CROUCH_WALK_NEUTRAL, L4D1_ACT_TERROR_CROUCH_WALK_ALERT, L4D1_ACT_TERROR_CROUCH_WALK_INTENSE, L4D1_ACT_TERROR_CROUCH_RUN_NEUTRAL, L4D1_ACT_TERROR_CROUCH_RUN_ALERT, L4D1_ACT_TERROR_CROUCH_RUN_INTENSE, L4D1_ACT_TERROR_IDLE_ON_FIRE, L4D1_ACT_TERROR_WALK_ON_FIRE, L4D1_ACT_TERROR_RUN_ON_FIRE, L4D1_ACT_TERROR_ATTACK, L4D1_ACT_TERROR_ATTACK_CONTINUOUSLY, L4D1_ACT_TERROR_ATTACK_LOW, L4D1_ACT_TERROR_ATTACK_LOW_CONTINUOUSLY, L4D1_ACT_TERROR_ATTACK_DOOR, L4D1_ACT_TERROR_ATTACK_DOOR_CONTINUOUSLY, L4D1_ACT_TERROR_UNABLE_TO_REACH_TARGET, L4D1_ACT_TERROR_REACH_THROUGH_DOOR, L4D1_ACT_TERROR_SHOVED_FORWARD, L4D1_ACT_TERROR_SHOVED_BACKWARD, L4D1_ACT_TERROR_SHOVED_LEFTWARD, L4D1_ACT_TERROR_SHOVED_RIGHTWARD, L4D1_ACT_TERROR_SHOVED_BACKWARD_INTO_WALL, L4D1_ACT_TERROR_SHOVED_FORWARD_INTO_WALL, L4D1_ACT_TERROR_SHOVED_LEFTWARD_INTO_WALL, L4D1_ACT_TERROR_SHOVED_RIGHTWARD_INTO_WALL, L4D1_ACT_TERROR_SHOVED_BACKWARD_FROM_SIT, L4D1_ACT_TERROR_SHOVED_RIGHTWARD_FROM_SIT, L4D1_ACT_TERROR_SHOVED_LEFTWARD_FROM_SIT, L4D1_ACT_TERROR_TUGGED_FORWARD, L4D1_ACT_TERROR_TUGGED_BACKWARD, L4D1_ACT_TERROR_TUGGED_LEFTWARD, L4D1_ACT_TERROR_TUGGED_RIGHTWARD, L4D1_ACT_TERROR_SIT_IDLE, L4D1_ACT_TERROR_SIT_FROM_STAND, L4D1_ACT_TERROR_SIT_TO_STAND, L4D1_ACT_TERROR_SIT_TO_STAND_ALERT, L4D1_ACT_TERROR_SIT_TO_LIE, L4D1_ACT_TERROR_LIE_IDLE, L4D1_ACT_TERROR_LIE_FROM_STAND, L4D1_ACT_TERROR_LIE_TO_STAND, L4D1_ACT_TERROR_LIE_TO_STAND_ALERT, L4D1_ACT_TERROR_LIE_TO_SIT, L4D1_ACT_TERROR_JUMP, L4D1_ACT_TERROR_JUMP_UP_TO_LEDGE, L4D1_ACT_TERROR_JUMP_DOWN_FROM_LEDGE, L4D1_ACT_TERROR_JUMP_OVER_GAP, L4D1_ACT_TERROR_JUMP_LANDING, L4D1_ACT_TERROR_JUMP_LANDING_HARD, L4D1_ACT_TERROR_JUMP_LANDING_NEUTRAL, L4D1_ACT_TERROR_JUMP_LANDING_HARD_NEUTRAL, L4D1_ACT_TERROR_FALL, L4D1_ACT_TERROR_DIE_FROM_STAND, L4D1_ACT_TERROR_DIE_FROM_CROUCH, L4D1_ACT_TERROR_DIE_WHILE_RUNNING, L4D1_ACT_TERROR_DIE_BACKWARD_FROM_SHOTGUN, L4D1_ACT_TERROR_DIE_FORWARD_FROM_SHOTGUN, L4D1_ACT_TERROR_DIE_LEFTWARD_FROM_SHOTGUN, L4D1_ACT_TERROR_DIE_RIGHTWARD_FROM_SHOTGUN, L4D1_ACT_TERROR_WITCH_ANGRY, L4D1_ACT_TERROR_WITCH_ANGRY_HIGH, L4D1_ACT_TERROR_WITCH_IDLE, L4D1_ACT_TERROR_WITCH_IDLE_PRE_RETREAT, L4D1_ACT_TERROR_WITCH_RETREAT, L4D1_ACT_TERROR_WITCH_KILL_DISPLAY, L4D1_ACT_TERROR_WITCH_KILL_LOOP, L4D1_ACT_TERROR_TUG, L4D1_ACT_TERROR_FLINCH, L4D1_ACT_TERROR_FLINCH_LEDGE, L4D1_ACT_SECONDARYATTACK, L4D1_ACT_TERROR_INCAP_CRAWL, L4D1_ACT_TERROR_INCAP_TO_STAND, L4D1_ACT_TERROR_INCAP_TO_CROUCH, L4D1_ACT_TERROR_ITEM_PICKUP, L4D1_ACT_IDLE_INCAP_PISTOL, L4D1_ACT_IDLE_INCAP_ELITES, L4D1_ACT_FALL, L4D1_ACT_CALL_FOR_RESCUE, L4D1_ACT_PUSH, L4D1_ACT_IDLE_MINIGUN, L4D1_ACT_PRIMARYATTACK_MINIGUN, L4D1_ACT_TERROR_LEDGE_CLIMB, L4D1_ACT_TERROR_LEDGE_CLIMB_TO_CROUCH, L4D1_ACT_TERROR_FALL_GRAB_LEDGE, L4D1_ACT_TERROR_LEDGE_HANG_FIRM, L4D1_ACT_TERROR_LEDGE_HANG_WEAK, L4D1_ACT_TERROR_LEDGE_HANG_DANGLE, L4D1_ACT_TERROR_IDLE_LADDER, L4D1_ACT_TERROR_LADDER_DISMOUNT, L4D1_ACT_TERROR_CLIMB_24_FROM_STAND, L4D1_ACT_TERROR_CLIMB_36_FROM_STAND, L4D1_ACT_TERROR_CLIMB_48_FROM_STAND, L4D1_ACT_TERROR_CLIMB_60_FROM_STAND, L4D1_ACT_TERROR_CLIMB_70_FROM_STAND, L4D1_ACT_TERROR_CLIMB_72_FROM_STAND, L4D1_ACT_TERROR_CLIMB_84_FROM_STAND, L4D1_ACT_TERROR_CLIMB_96_FROM_STAND, L4D1_ACT_TERROR_CLIMB_108_FROM_STAND, L4D1_ACT_TERROR_CLIMB_115_FROM_STAND, L4D1_ACT_TERROR_CLIMB_120_FROM_STAND, L4D1_ACT_TERROR_CLIMB_130_FROM_STAND, L4D1_ACT_TERROR_CLIMB_132_FROM_STAND, L4D1_ACT_TERROR_CLIMB_144_FROM_STAND, L4D1_ACT_TERROR_CLIMB_150_FROM_STAND, L4D1_ACT_TERROR_CLIMB_156_FROM_STAND, L4D1_ACT_TERROR_CLIMB_166_FROM_STAND, L4D1_ACT_TERROR_CLIMB_168_FROM_STAND, L4D1_ACT_TERROR_HUNTER_LUNGE_INTO_SURVIVOR, L4D1_ACT_TERROR_HUNTER_LUNGE, L4D1_ACT_TERROR_HUNTER_LUNGE_WHILE_RUNNING, L4D1_ACT_TERROR_HUNTER_LANDING_HARD, L4D1_ACT_TERROR_HUNTER_LUNGE_OFF_WALL_SPIN_RIGHT, L4D1_ACT_TERROR_HUNTER_LUNGE_OFF_WALL_SPIN_LEFT, L4D1_ACT_TERROR_HUNTER_LUNGE_OFF_WALL_BACK, L4D1_ACT_TERROR_HUNTER_LUNGE_IDLE, L4D1_ACT_TERROR_HUNTER_LUNGE_ONTO_WALL, L4D1_ACT_TERROR_HUNTER_POUNCE, L4D1_ACT_TERROR_HUNTER_POUNCE_IDLE, L4D1_ACT_TERROR_SMOKER_PREPARE_TONGUE_LAUNCH, L4D1_ACT_TERROR_SMOKER_SENDING_OUT_TONGUE, L4D1_ACT_TERROR_SMOKER_SENDING_OUT_TONGUE_IDLE, L4D1_ACT_TERROR_SMOKER_REELING_IN_TONGUE, L4D1_ACT_TERROR_SMOKER_REELING_IN_TONGUE_IDLE, L4D1_ACT_TERROR_SMOKER_CRITICAL_ATTACK, L4D1_ACT_TERROR_SMOKER_CRITICAL_ATTACK_IDLE, L4D1_ACT_TERROR_SMOKER_END_TONGUE_ATTACK, L4D1_ACT_TERROR_GUARD, L4D1_ACT_HULK_THROW, L4D1_ACT_TANK_OVERHEAD_THROW, L4D1_ACT_HULK_ATTACK_LOW, L4D1_ACT_TERROR_HUNTER_POUNCE_MELEE, L4D1_ACT_TERROR_HUNTER_POUNCE_KNOCKOFF_L, L4D1_ACT_TERROR_HUNTER_POUNCE_KNOCKOFF_R, L4D1_ACT_TERROR_HUNTER_POUNCE_KNOCKOFF_BACKWARD, L4D1_ACT_TERROR_HUNTER_POUNCE_KNOCKOFF_FORWARD, L4D1_ACT_IDLE_POUNCED, L4D1_ACT_TERROR_POUNCED_TO_STAND, L4D1_ACT_TERROR_INCAP_FROM_POUNCE, L4D1_ACT_TERROR_INCAP_FROM_TONGUE, L4D1_ACT_TERROR_IDLE_FALL_FROM_TONGUE, L4D1_ACT_TERROR_HANGING_FROM_TONGUE, L4D1_ACT_TERROR_HANGING_FROM_TONGUE_MALE, L4D1_ACT_TERROR_HANGING_FROM_TONGUE_FEMALE, L4D1_ACT_TERROR_STANDING_CHOKE_FROM_TONGUE, L4D1_ACT_TERROR_DRAGGING_FROM_TONGUE, L4D1_ACT_TERROR_DRAGGING_FROM_TONGUE_MALE, L4D1_ACT_TERROR_DRAGGING_FROM_TONGUE_FEMALE, L4D1_ACT_TERROR_DRAGGING_FROM_TONGUE_DEPLOY, L4D1_ACT_TERROR_CHOKING_TONGUE_GROUND, L4D1_ACT_TERROR_CHOKING_TONGUE_GROUND_MALE, L4D1_ACT_TERROR_CHOKING_TONGUE_GROUND_FEMALE, L4D1_ACT_TERROR_INCAP_FROM_TONGUE_GERMANY, L4D1_ACT_TERROR_HANGING_FROM_TONGUE_GERMANY, L4D1_ACT_TERROR_IDLE_FALL_FROM_TONGUE_GERMANY, L4D1_ACT_TERROR_STANDING_CHOKE_FROM_TONGUE_GERMANY, L4D1_ACT_TERROR_ATTACK_MOVING, L4D1_ACT_TERROR_TANKROCK_TO_STAND, L4D1_ACT_TERROR_HULK_VICTORY, L4D1_ACT_TERROR_HULK_VICTORY_B, L4D1_ACT_TERROR_RAGE_AT_ENEMY, L4D1_ACT_TERROR_RAGE_AT_KNOCKDOWN, L4D1_ACT_TERROR_SMASH_LEFT, L4D1_ACT_TERROR_SMASH_RIGHT, L4D1_ACT_VM_LUNGE_LAYER, L4D1_ACT_VM_LUNGE_PUSH, L4D1_ACT_VM_LUNGE_PUSH_LAYER, L4D1_ACT_VM_LUNGE_OFFWALL, L4D1_ACT_VM_LUNGE_OFFWALL_LAYER, L4D1_ACT_VM_LUNGE_POUNCE, L4D1_ACT_VM_LUNGE_POUNCE_LAYER, L4D1_ACT_VM_POUNCE, L4D1_ACT_VM_POUNCE_LAYER, L4D1_ACT_VM_VOMIT_LAYER, L4D1_ACT_VM_TONGUE, L4D1_ACT_VM_TONGUE_LAYER, L4D1_ACT_VM_BITE, L4D1_ACT_VM_BITE_LAYER, L4D1_ACT_VM_COUGH_LAYER, L4D1_ACT_VM_FIDGET_LAYER, L4D1_ACT_DOOR_OPEN, L4D1_ACT_DOOR_OPENFAIL, L4D1_ACT_DOOR_ANIMTOLOCK, L4D1_ACT_DOOR_ANIMTOUNLOCK, L4D1_ACT_VM_ITEMPICKUP_EXTEND, L4D1_ACT_VM_ITEMPICKUP_EXTEND_LAYER, L4D1_ACT_VM_ITEMPICKUP_LOOP, L4D1_ACT_VM_ITEMPICKUP_LOOP_LAYER, L4D1_ACT_VM_ITEMPICKUP_RETRACT, L4D1_ACT_VM_ITEMPICKUP_RETRACT_LAYER, L4D1_ACT_VM_HELPINGHAND_EXTEND, L4D1_ACT_VM_HELPINGHAND_EXTEND_LAYER, L4D1_ACT_VM_HELPINGHAND_LOOP, L4D1_ACT_VM_HELPINGHAND_LOOP_LAYER, L4D1_ACT_VM_HELPINGHAND_RETRACT, L4D1_ACT_VM_HELPINGHAND_RETRACT_LAYER, L4D1_ACT_VM_ITEMPICKUP_LOOP_PISTOL, L4D1_ACT_VM_ITEMPICKUP_LOOP_PISTOL_LAYER, L4D1_ACT_VM_ITEMPICKUP_EXTEND_PISTOL, L4D1_ACT_VM_ITEMPICKUP_EXTEND_PISTOL_LAYER, L4D1_ACT_VM_ITEMPICKUP_RETRACT_PISTOL, L4D1_ACT_VM_ITEMPICKUP_RETRACT_PISTOL_LAYER, L4D1_ACT_VM_HELPINGHAND_LOOP_PISTOL, L4D1_ACT_VM_HELPINGHAND_LOOP_PISTOL_LAYER, L4D1_ACT_VM_HELPINGHAND_EXTEND_PISTOL, L4D1_ACT_VM_HELPINGHAND_EXTEND_PISTOL_LAYER, L4D1_ACT_VM_HELPINGHAND_RETRACT_PISTOL, L4D1_ACT_VM_HELPINGHAND_RETRACT_PISTOL_LAYER, L4D1_ACT_VM_ITEMPICKUP_LOOP_DUAL_PISTOL, L4D1_ACT_VM_ITEMPICKUP_LOOP_DUAL_PISTOL_LAYER, L4D1_ACT_VM_ITEMPICKUP_EXTEND_DUAL_PISTOL, L4D1_ACT_VM_ITEMPICKUP_EXTEND_DUAL_PISTOL_LAYER, L4D1_ACT_VM_ITEMPICKUP_RETRACT_DUAL_PISTOL, L4D1_ACT_VM_ITEMPICKUP_RETRACT_DUAL_PISTOL_LAYER, L4D1_ACT_VM_HELPINGHAND_LOOP_DUAL_PISTOL, L4D1_ACT_VM_HELPINGHAND_LOOP_DUAL_PISTOL_LAYER, L4D1_ACT_VM_HELPINGHAND_EXTEND_DUAL_PISTOL, L4D1_ACT_VM_HELPINGHAND_EXTEND_DUAL_PISTOL_LAYER, L4D1_ACT_VM_HELPINGHAND_RETRACT_DUAL_PISTOL, L4D1_ACT_VM_HELPINGHAND_RETRACT_DUAL_PISTOL_LAYER, L4D1_ACT_VM_ITEMPICKUP_LOOP_RIFLE, L4D1_ACT_VM_ITEMPICKUP_LOOP_RIFLE_LAYER, L4D1_ACT_VM_ITEMPICKUP_EXTEND_RIFLE, L4D1_ACT_VM_ITEMPICKUP_EXTEND_RIFLE_LAYER, L4D1_ACT_VM_ITEMPICKUP_RETRACT_RIFLE, L4D1_ACT_VM_ITEMPICKUP_RETRACT_RIFLE_LAYER, L4D1_ACT_VM_HELPINGHAND_LOOP_RIFLE, L4D1_ACT_VM_HELPINGHAND_LOOP_RIFLE_LAYER, L4D1_ACT_VM_HELPINGHAND_EXTEND_RIFLE, L4D1_ACT_VM_HELPINGHAND_EXTEND_RIFLE_LAYER, L4D1_ACT_VM_HELPINGHAND_RETRACT_RIFLE, L4D1_ACT_VM_HELPINGHAND_RETRACT_RIFLE_LAYER, L4D1_ACT_VM_ITEMPICKUP_LOOP_SMG, L4D1_ACT_VM_ITEMPICKUP_LOOP_SMG_LAYER, L4D1_ACT_VM_ITEMPICKUP_EXTEND_SMG, L4D1_ACT_VM_ITEMPICKUP_EXTEND_SMG_LAYER, L4D1_ACT_VM_ITEMPICKUP_RETRACT_SMG, L4D1_ACT_VM_ITEMPICKUP_RETRACT_SMG_LAYER, L4D1_ACT_VM_HELPINGHAND_LOOP_SMG, L4D1_ACT_VM_HELPINGHAND_LOOP_SMG_LAYER, L4D1_ACT_VM_HELPINGHAND_EXTEND_SMG, L4D1_ACT_VM_HELPINGHAND_EXTEND_SMG_LAYER, L4D1_ACT_VM_HELPINGHAND_RETRACT_SMG, L4D1_ACT_VM_HELPINGHAND_RETRACT_SMG_LAYER, L4D1_ACT_VM_ITEMPICKUP_LOOP_SHOTGUN, L4D1_ACT_VM_ITEMPICKUP_LOOP_SHOTGUN_LAYER, L4D1_ACT_VM_ITEMPICKUP_EXTEND_SHOTGUN, L4D1_ACT_VM_ITEMPICKUP_EXTEND_SHOTGUN_LAYER, L4D1_ACT_VM_ITEMPICKUP_RETRACT_SHOTGUN, L4D1_ACT_VM_ITEMPICKUP_RETRACT_SHOTGUN_LAYER, L4D1_ACT_VM_HELPINGHAND_LOOP_SHOTGUN, L4D1_ACT_VM_HELPINGHAND_LOOP_SHOTGUN_LAYER, L4D1_ACT_VM_HELPINGHAND_EXTEND_SHOTGUN, L4D1_ACT_VM_HELPINGHAND_EXTEND_SHOTGUN_LAYER, L4D1_ACT_VM_HELPINGHAND_RETRACT_SHOTGUN, L4D1_ACT_VM_HELPINGHAND_RETRACT_SHOTGUN_LAYER, L4D1_ACT_VM_ITEMPICKUP_LOOP_AUTOSHOTGUN, L4D1_ACT_VM_ITEMPICKUP_LOOP_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_ITEMPICKUP_EXTEND_AUTOSHOTGUN, L4D1_ACT_VM_ITEMPICKUP_EXTEND_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_ITEMPICKUP_RETRACT_AUTOSHOTGUN, L4D1_ACT_VM_ITEMPICKUP_RETRACT_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_HELPINGHAND_LOOP_AUTOSHOTGUN, L4D1_ACT_VM_HELPINGHAND_LOOP_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_HELPINGHAND_EXTEND_AUTOSHOTGUN, L4D1_ACT_VM_HELPINGHAND_EXTEND_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_HELPINGHAND_RETRACT_AUTOSHOTGUN, L4D1_ACT_VM_HELPINGHAND_RETRACT_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_ITEMPICKUP_LOOP_SNIPER, L4D1_ACT_VM_ITEMPICKUP_LOOP_SNIPER_LAYER, L4D1_ACT_VM_ITEMPICKUP_EXTEND_SNIPER, L4D1_ACT_VM_ITEMPICKUP_EXTEND_SNIPER_LAYER, L4D1_ACT_VM_ITEMPICKUP_RETRACT_SNIPER, L4D1_ACT_VM_ITEMPICKUP_RETRACT_SNIPER_LAYER, L4D1_ACT_VM_HELPINGHAND_LOOP_SNIPER, L4D1_ACT_VM_HELPINGHAND_LOOP_SNIPER_LAYER, L4D1_ACT_VM_HELPINGHAND_EXTEND_SNIPER, L4D1_ACT_VM_HELPINGHAND_EXTEND_SNIPER_LAYER, L4D1_ACT_VM_HELPINGHAND_RETRACT_SNIPER, L4D1_ACT_VM_HELPINGHAND_RETRACT_SNIPER_LAYER, L4D1_ACT_VM_ITEMPICKUP_LOOP_PIPEBOMB, L4D1_ACT_VM_ITEMPICKUP_LOOP_PIPEBOMB_LAYER, L4D1_ACT_VM_ITEMPICKUP_EXTEND_PIPEBOMB, L4D1_ACT_VM_ITEMPICKUP_EXTEND_PIPEBOMB_LAYER, L4D1_ACT_VM_ITEMPICKUP_RETRACT_PIPEBOMB, L4D1_ACT_VM_ITEMPICKUP_RETRACT_PIPEBOMB_LAYER, L4D1_ACT_VM_HELPINGHAND_LOOP_PIPEBOMB, L4D1_ACT_VM_HELPINGHAND_LOOP_PIPEBOMB_LAYER, L4D1_ACT_VM_HELPINGHAND_EXTEND_PIPEBOMB, L4D1_ACT_VM_HELPINGHAND_EXTEND_PIPEBOMB_LAYER, L4D1_ACT_VM_HELPINGHAND_RETRACT_PIPEBOMB, L4D1_ACT_VM_HELPINGHAND_RETRACT_PIPEBOMB_LAYER, L4D1_ACT_VM_ITEMPICKUP_LOOP_MOLOTOV, L4D1_ACT_VM_ITEMPICKUP_LOOP_MOLOTOV_LAYER, L4D1_ACT_VM_ITEMPICKUP_EXTEND_MOLOTOV, L4D1_ACT_VM_ITEMPICKUP_EXTEND_MOLOTOV_LAYER, L4D1_ACT_VM_ITEMPICKUP_RETRACT_MOLOTOV, L4D1_ACT_VM_ITEMPICKUP_RETRACT_MOLOTOV_LAYER, L4D1_ACT_VM_HELPINGHAND_LOOP_MOLOTOV, L4D1_ACT_VM_HELPINGHAND_LOOP_MOLOTOV_LAYER, L4D1_ACT_VM_HELPINGHAND_EXTEND_MOLOTOV, L4D1_ACT_VM_HELPINGHAND_EXTEND_MOLOTOV_LAYER, L4D1_ACT_VM_HELPINGHAND_RETRACT_MOLOTOV, L4D1_ACT_VM_HELPINGHAND_RETRACT_MOLOTOV_LAYER, L4D1_ACT_VM_ITEMPICKUP_LOOP_MEDKIT, L4D1_ACT_VM_ITEMPICKUP_LOOP_MEDKIT_LAYER, L4D1_ACT_VM_ITEMPICKUP_EXTEND_MEDKIT, L4D1_ACT_VM_ITEMPICKUP_EXTEND_MEDKIT_LAYER, L4D1_ACT_VM_ITEMPICKUP_RETRACT_MEDKIT, L4D1_ACT_VM_ITEMPICKUP_RETRACT_MEDKIT_LAYER, L4D1_ACT_VM_HELPINGHAND_LOOP_MEDKIT, L4D1_ACT_VM_HELPINGHAND_LOOP_MEDKIT_LAYER, L4D1_ACT_VM_HELPINGHAND_EXTEND_MEDKIT, L4D1_ACT_VM_HELPINGHAND_EXTEND_MEDKIT_LAYER, L4D1_ACT_VM_HELPINGHAND_RETRACT_MEDKIT, L4D1_ACT_VM_HELPINGHAND_RETRACT_MEDKIT_LAYER, L4D1_ACT_VM_ITEMPICKUP_LOOP_PAINPILLS, L4D1_ACT_VM_ITEMPICKUP_LOOP_PAINPILLS_LAYER, L4D1_ACT_VM_ITEMPICKUP_EXTEND_PAINPILLS, L4D1_ACT_VM_ITEMPICKUP_EXTEND_PAINPILLS_LAYER, L4D1_ACT_VM_ITEMPICKUP_RETRACT_PAINPILLS, L4D1_ACT_VM_ITEMPICKUP_RETRACT_PAINPILLS_LAYER, L4D1_ACT_VM_HELPINGHAND_LOOP_PAINPILLS, L4D1_ACT_VM_HELPINGHAND_LOOP_PAINPILLS_LAYER, L4D1_ACT_VM_HELPINGHAND_EXTEND_PAINPILLS, L4D1_ACT_VM_HELPINGHAND_EXTEND_PAINPILLS_LAYER, L4D1_ACT_VM_HELPINGHAND_RETRACT_PAINPILLS, L4D1_ACT_VM_HELPINGHAND_RETRACT_PAINPILLS_LAYER, L4D1_ACT_VM_CANCEL, L4D1_ACT_VM_CANCEL_LAYER, L4D1_ACT_CROUCHIDLE_RIFLE, L4D1_ACT_IDLE_INJURED_RIFLE, L4D1_ACT_WALK_INJURED_RIFLE, L4D1_ACT_RUN_INJURED_RIFLE, L4D1_ACT_DEPLOY_RIFLE, L4D1_ACT_PRIMARYATTACK_RIFLE, L4D1_ACT_RELOAD_RIFLE, L4D1_ACT_IDLE_CALM_RIFLE, L4D1_ACT_WALK_CALM_RIFLE, L4D1_ACT_RUN_CALM_RIFLE, L4D1_ACT_MELEE_SWEEP_RIFLE_IDLE, L4D1_ACT_MELEE_SHOVE_RIFLE_IDLE, L4D1_ACT_MELEE_STRAIGHT_RIFLE_IDLE, L4D1_ACT_MELEE_SWEEP_RIFLE_RUN, L4D1_ACT_MELEE_SHOVE_RIFLE_RUN, L4D1_ACT_MELEE_STRAIGHT_RIFLE_RUN, L4D1_ACT_TERROR_PULLED_RUN_RIFLE, L4D1_ACT_MELEE_STOMP_RIFLE_IDLE, L4D1_ACT_MELEE_STOMP_RIFLE_WALK, L4D1_ACT_IDLE_SHOTGUN, L4D1_ACT_WALK_SHOTGUN, L4D1_ACT_RUN_SHOTGUN, L4D1_ACT_IDLE_CALM_SHOTGUN, L4D1_ACT_CROUCHIDLE_SHOTGUN, L4D1_ACT_RUN_CROUCH_SHOTGUN, L4D1_ACT_DEPLOY_SHOTGUN, L4D1_ACT_PRIMARYATTACK_SHOTGUN, L4D1_ACT_RELOAD_SHOTGUN_START, L4D1_ACT_RELOAD_SHOTGUN_LOOP, L4D1_ACT_RELOAD_SHOTGUN_END, L4D1_ACT_IDLE_PUMPSHOTGUN, L4D1_ACT_CROUCHIDLE_PUMPSHOTGUN, L4D1_ACT_IDLE_CALM_PUMPSHOTGUN, L4D1_ACT_IDLE_INJURED_PUMPSHOTGUN, L4D1_ACT_WALK_PUMPSHOTGUN, L4D1_ACT_RUN_CROUCH_PUMPSHOTGUN, L4D1_ACT_RUN_PUMPSHOTGUN, L4D1_ACT_WALK_CALM_PUMPSHOTGUN, L4D1_ACT_RUN_CALM_PUMPSHOTGUN, L4D1_ACT_WALK_INJURED_PUMPSHOTGUN, L4D1_ACT_RUN_INJURED_PUMPSHOTGUN, L4D1_ACT_PRIMARYATTACK_PUMPSHOTGUN, L4D1_ACT_RELOAD_PUMPSHOTGUN_START, L4D1_ACT_RELOAD_PUMPSHOTGUN_LOOP, L4D1_ACT_RELOAD_PUMPSHOTGUN_END, L4D1_ACT_IDLE_GREN, L4D1_ACT_CROUCHIDLE_GREN, L4D1_ACT_IDLE_INJURED_GREN, L4D1_ACT_RUN_GREN, L4D1_ACT_WALK_GREN, L4D1_ACT_RUN_CROUCH_GREN, L4D1_ACT_DEPLOY_GREN, L4D1_ACT_WALK_INJURED_GREN, L4D1_ACT_RUN_INJURED_GREN, L4D1_ACT_PRIMARYATTACK_GREN1_IDLE, L4D1_ACT_PRIMARYATTACK_GREN2_IDLE, L4D1_ACT_PRIMARYATTACK_GREN1_RUN, L4D1_ACT_PRIMARYATTACK_GREN2_RUN, L4D1_ACT_IDLE_GREN_PULL_BACK, L4D1_ACT_CROUCHIDLE_GREN_PULL_BACK, L4D1_ACT_IDLE_INJURED_GREN_PULL_BACK, L4D1_ACT_RUN_GREN_PULL_BACK, L4D1_ACT_WALK_GREN_PULL_BACK, L4D1_ACT_RUN_CROUCH_GREN_PULL_BACK, L4D1_ACT_WALK_INJURED_GREN_PULL_BACK, L4D1_ACT_RUN_INJURED_GREN_PULL_BACK, L4D1_ACT_IDLE_SNIPER, L4D1_ACT_CROUCHIDLE_SNIPER, L4D1_ACT_IDLE_CALM_SNIPER, L4D1_ACT_IDLE_INJURED_SNIPER, L4D1_ACT_WALK_SNIPER, L4D1_ACT_RUN_CROUCH_SNIPER, L4D1_ACT_RUN_SNIPER, L4D1_ACT_WALK_CALM_SNIPER, L4D1_ACT_RUN_CALM_SNIPER, L4D1_ACT_WALK_INJURED_SNIPER, L4D1_ACT_RUN_INJURED_SNIPER, L4D1_ACT_IDLE_SNIPER_ZOOMED, L4D1_ACT_CROUCHIDLE_SNIPER_ZOOMED, L4D1_ACT_IDLE_INJURED_SNIPER_ZOOMED, L4D1_ACT_IDLE_SMG, L4D1_ACT_WALK_SMG, L4D1_ACT_RUN_SMG, L4D1_ACT_CROUCHIDLE_SMG, L4D1_ACT_RUN_CROUCH_SMG, L4D1_ACT_IDLE_INJURED_SMG, L4D1_ACT_WALK_INJURED_SMG, L4D1_ACT_RUN_INJURED_SMG, L4D1_ACT_IDLE_CALM_SMG, L4D1_ACT_WALK_CALM_SMG, L4D1_ACT_RUN_CALM_SMG, L4D1_ACT_PRIMARYATTACK_SMG, L4D1_ACT_RELOAD_SMG, L4D1_ACT_IDLE_FIRSTAIDKIT, L4D1_ACT_CROUCHIDLE_FIRSTAIDKIT, L4D1_ACT_IDLE_INJURED_FIRSTAIDKIT, L4D1_ACT_RUN_FIRSTAIDKIT, L4D1_ACT_WALK_FIRSTAIDKIT, L4D1_ACT_RUN_CROUCH_FIRSTAIDKIT, L4D1_ACT_WALK_INJURED_FIRSTAIDKIT, L4D1_ACT_RUN_INJURED_FIRSTAIDKIT, L4D1_ACT_CROUCHIDLE_PISTOL, L4D1_ACT_RUN_CROUCH_PISTOL, L4D1_ACT_IDLE_INJURED_PISTOL, L4D1_ACT_WALK_INJURED_PISTOL, L4D1_ACT_RUN_INJURED_PISTOL, L4D1_ACT_DEPLOY_PISTOL, L4D1_ACT_PRIMARYATTACK_PISTOL, L4D1_ACT_IDLE_CALM_PISTOL, L4D1_ACT_WALK_CALM_PISTOL, L4D1_ACT_RUN_CALM_PISTOL, L4D1_ACT_IDLE_ELITES, L4D1_ACT_WALK_ELITES, L4D1_ACT_RUN_ELITES, L4D1_ACT_CROUCHIDLE_ELITES, L4D1_ACT_RUN_CROUCH_ELITES, L4D1_ACT_IDLE_INJURED_ELITES, L4D1_ACT_WALK_INJURED_ELITES, L4D1_ACT_RUN_INJURED_ELITES, L4D1_ACT_DEPLOY_ELITES, L4D1_ACT_PRIMARYATTACK_ELITES_R, L4D1_ACT_PRIMARYATTACK_ELITES_L, L4D1_ACT_IDLE_CALM_ELITES, L4D1_ACT_WALK_CALM_ELITES, L4D1_ACT_RUN_CALM_ELITES, L4D1_ACT_RELOAD_ELITES, L4D1_ACT_RELOAD_M4, L4D1_ACT_PRIMARYATTACK_XM1014, L4D1_ACT_PRIMARYATTACK_M3S90, L4D1_ACT_IDLE_GASCAN, L4D1_ACT_CROUCHIDLE_GASCAN, L4D1_ACT_IDLE_CALM_GASCAN, L4D1_ACT_IDLE_INJURED_GASCAN, L4D1_ACT_RUN_GASCAN, L4D1_ACT_WALK_GASCAN, L4D1_ACT_RUN_CROUCH_GASCAN, L4D1_ACT_RUN_INJURED_GASCAN, L4D1_ACT_JUMP_GASCAN, L4D1_ACT_MELEE_SWEEP_GASCAN, L4D1_ACT_IDLE_O2, L4D1_ACT_CROUCHIDLE_O2, L4D1_ACT_IDLE_CALM_O2, L4D1_ACT_IDLE_INJURED_O2, L4D1_ACT_RUN_O2, L4D1_ACT_WALK_O2, L4D1_ACT_RUN_CROUCH_O2, L4D1_ACT_RUN_INJURED_O2, L4D1_ACT_JUMP_O2, L4D1_ACT_MELEE_SWEEP_O2, L4D1_ACT_VM_MELEE, L4D1_ACT_VM_SHOOT_LAYER, L4D1_ACT_VM_SECONDARYATTACK_LAYER, L4D1_ACT_VM_MELEE_LAYER, L4D1_ACT_VM_PICKUP_LAYER, L4D1_ACT_VM_PICKUP_CLIPIN, L4D1_ACT_VM_PICKUP_CLIPIN_LAYER, L4D1_ACT_VM_PICKUP_CHARGING, L4D1_ACT_VM_PICKUP_CHARGING_LAYER, L4D1_ACT_VM_PICKUP_FASSIST, L4D1_ACT_VM_PICKUP_FASSIST_LAYER, L4D1_ACT_VM_RELOAD_PUMP, L4D1_ACT_VM_RELOAD_LAYER, L4D1_ACT_VM_RELOAD_CLIPOUT, L4D1_ACT_VM_RELOAD_CLIPOUT_LAYER, L4D1_ACT_VM_RELOAD_CLIPIN, L4D1_ACT_VM_RELOAD_CLIPIN_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_CLIPOUT, L4D1_ACT_VM_RELOAD_EMPTY_CLIPOUT_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_CLIPIN, L4D1_ACT_VM_RELOAD_EMPTY_CLIPIN_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_CLIPIN2, L4D1_ACT_VM_RELOAD_EMPTY_CLIPIN2_LAYER, L4D1_ACT_VM_DEPLOY_LAYER, L4D1_ACT_VM_THROW_LAYER, L4D1_ACT_VM_PULLPIN_LAYER, L4D1_ACT_VM_IDLE_BAREHAND, L4D1_ACT_VM_DEPLOY_BAREHAND, L4D1_ACT_VM_DEPLOY_BAREHAND_LAYER, L4D1_ACT_VM_MELEE_BAREHAND, L4D1_ACT_VM_MELEE_BAREHAND_LAYER, L4D1_ACT_VM_ITEMPICKUP_EXTEND_BAREHAND, L4D1_ACT_VM_ITEMPICKUP_EXTEND_BAREHAND_LAYER, L4D1_ACT_VM_ITEMPICKUP_LOOP_BAREHAND, L4D1_ACT_VM_ITEMPICKUP_LOOP_BAREHAND_LAYER, L4D1_ACT_VM_ITEMPICKUP_RETRACT_BAREHAND, L4D1_ACT_VM_ITEMPICKUP_RETRACT_BAREHAND_LAYER, L4D1_ACT_VM_HELPINGHAND_EXTEND_BAREHAND, L4D1_ACT_VM_HELPINGHAND_EXTEND_BAREHAND_LAYER, L4D1_ACT_VM_HELPINGHAND_LOOP_BAREHAND, L4D1_ACT_VM_HELPINGHAND_LOOP_BAREHAND_LAYER, L4D1_ACT_VM_HELPINGHAND_RETRACT_BAREHAND, L4D1_ACT_VM_HELPINGHAND_RETRACT_BAREHAND_LAYER, L4D1_ACT_VM_IDLE_DUAL_PISTOL, L4D1_ACT_VM_DEPLOY_DUAL_PISTOL, L4D1_ACT_VM_DEPLOY_DUAL_PISTOL_LAYER, L4D1_ACT_VM_PRIMARYATTACK_DUAL_PISTOL, L4D1_ACT_VM_SHOOT_DUAL_PISTOL_LAYER, L4D1_ACT_VM_SECONDARYATTACK_DUAL_PISTOL, L4D1_ACT_VM_SECONDARYATTACK_DUAL_PISTOL_LAYER, L4D1_ACT_VM_RELOAD_DUAL_PISTOL, L4D1_ACT_VM_RELOAD_DUAL_PISTOL_LAYER, L4D1_ACT_VM_RELOAD_CLIPOUT_DUAL_PISTOL, L4D1_ACT_VM_RELOAD_CLIPOUT_DUAL_PISTOL_LAYER, L4D1_ACT_VM_RELOAD_CLIPIN_DUAL_PISTOL, L4D1_ACT_VM_RELOAD_CLIPIN_DUAL_PISTOL_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_DUAL_PISTOL, L4D1_ACT_VM_RELOAD_EMPTY_DUAL_PISTOL_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_CLIPOUT_DUAL_PISTOL, L4D1_ACT_VM_RELOAD_EMPTY_CLIPOUT_DUAL_PISTOL_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_CLIPIN_DUAL_PISTOL, L4D1_ACT_VM_RELOAD_EMPTY_CLIPIN_DUAL_PISTOL_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_CLIPIN2_DUAL_PISTOL, L4D1_ACT_VM_RELOAD_EMPTY_CLIPIN2_DUAL_PISTOL_LAYER, L4D1_ACT_VM_PICKUP_DUAL_PISTOL, L4D1_ACT_VM_PICKUP_DUAL_PISTOL_LAYER, L4D1_ACT_VM_PICKUP_CLIPIN_DUAL_PISTOL, L4D1_ACT_VM_PICKUP_CLIPIN_DUAL_PISTOL_LAYER, L4D1_ACT_VM_PICKUP_CHARGING_DUAL_PISTOL, L4D1_ACT_VM_PICKUP_CHARGING_DUAL_PISTOL_LAYER, L4D1_ACT_VM_MELEE_DUAL_PISTOL, L4D1_ACT_VM_MELEE_DUAL_PISTOL_LAYER, L4D1_ACT_VM_IDLE_PISTOL, L4D1_ACT_VM_DEPLOY_PISTOL, L4D1_ACT_VM_DEPLOY_PISTOL_LAYER, L4D1_ACT_VM_PRIMARYATTACK_PISTOL, L4D1_ACT_VM_SHOOT_PISTOL_LAYER, L4D1_ACT_VM_RELOAD_PISTOL, L4D1_ACT_VM_RELOAD_PISTOL_LAYER, L4D1_ACT_VM_RELOAD_CLIPOUT_PISTOL, L4D1_ACT_VM_RELOAD_CLIPOUT_PISTOL_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_PISTOL, L4D1_ACT_VM_RELOAD_EMPTY_PISTOL_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_CLIPOUT_PISTOL, L4D1_ACT_VM_RELOAD_EMPTY_CLIPOUT_PISTOL_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_CLIPIN_PISTOL, L4D1_ACT_VM_RELOAD_EMPTY_CLIPIN_PISTOL_LAYER, L4D1_ACT_VM_MELEE_PISTOL, L4D1_ACT_VM_MELEE_PISTOL_LAYER, L4D1_ACT_VM_IDLE_RIFLE, L4D1_ACT_VM_PICKUP_RIFLE, L4D1_ACT_VM_PICKUP_RIFLE_LAYER, L4D1_ACT_VM_PICKUP_CLIPIN_RIFLE, L4D1_ACT_VM_PICKUP_CLIPIN_RIFLE_LAYER, L4D1_ACT_VM_PICKUP_CHARGING_RIFLE, L4D1_ACT_VM_PICKUP_CHARGING_RIFLE_LAYER, L4D1_ACT_VM_PICKUP_FASSIST_RIFLE, L4D1_ACT_VM_PICKUP_FASSIST_RIFLE_LAYER, L4D1_ACT_VM_DEPLOY_RIFLE, L4D1_ACT_VM_DEPLOY_RIFLE_LAYER, L4D1_ACT_VM_PRIMARYATTACK_RIFLE, L4D1_ACT_VM_SHOOT_RIFLE_LAYER, L4D1_ACT_VM_RELOAD_RIFLE, L4D1_ACT_VM_RELOAD_RIFLE_LAYER, L4D1_ACT_VM_RELOAD_CLIPOUT_RIFLE, L4D1_ACT_VM_RELOAD_CLIPOUT_RIFLE_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_RIFLE, L4D1_ACT_VM_RELOAD_EMPTY_RIFLE_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_CLIPOUT_RIFLE, L4D1_ACT_VM_RELOAD_EMPTY_CLIPOUT_RIFLE_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_CLIPIN_RIFLE, L4D1_ACT_VM_RELOAD_EMPTY_CLIPIN_RIFLE_LAYER, L4D1_ACT_VM_MELEE_RIFLE, L4D1_ACT_VM_MELEE_RIFLE_LAYER, L4D1_ACT_VM_FIDGET_RIFLE_LAYER, L4D1_ACT_VM_IDLE_SMG, L4D1_ACT_VM_PICKUP_SMG, L4D1_ACT_VM_PICKUP_SMG_LAYER, L4D1_ACT_VM_PICKUP_CLIPIN_SMG, L4D1_ACT_VM_PICKUP_CLIPIN_SMG_LAYER, L4D1_ACT_VM_PICKUP_CHARGING_SMG, L4D1_ACT_VM_PICKUP_CHARGING_SMG_LAYER, L4D1_ACT_VM_DEPLOY_SMG, L4D1_ACT_VM_DEPLOY_SMG_LAYER, L4D1_ACT_VM_PRIMARYATTACK_SMG, L4D1_ACT_VM_SHOOT_SMG_LAYER, L4D1_ACT_VM_RELOAD_SMG, L4D1_ACT_VM_RELOAD_SMG_LAYER, L4D1_ACT_VM_RELOAD_CLIPOUT_SMG, L4D1_ACT_VM_RELOAD_CLIPOUT_SMG_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_SMG, L4D1_ACT_VM_RELOAD_EMPTY_SMG_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_CLIPOUT_SMG, L4D1_ACT_VM_RELOAD_EMPTY_CLIPOUT_SMG_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_CLIPIN_SMG, L4D1_ACT_VM_RELOAD_EMPTY_CLIPIN_SMG_LAYER, L4D1_ACT_VM_MELEE_SMG, L4D1_ACT_VM_MELEE_SMG_LAYER, L4D1_ACT_VM_FIDGET_SMG_LAYER, L4D1_ACT_VM_IDLE_SNIPER, L4D1_ACT_VM_PICKUP_SNIPER, L4D1_ACT_VM_PICKUP_SNIPER_LAYER, L4D1_ACT_VM_PICKUP_CLIPIN_SNIPER, L4D1_ACT_VM_PICKUP_CLIPIN_SNIPER_LAYER, L4D1_ACT_VM_PICKUP_CHARGING_SNIPER, L4D1_ACT_VM_PICKUP_CHARGING_SNIPER_LAYER, L4D1_ACT_VM_DEPLOY_SNIPER, L4D1_ACT_VM_DEPLOY_SNIPER_LAYER, L4D1_ACT_VM_PRIMARYATTACK_SNIPER, L4D1_ACT_VM_SHOOT_SNIPER_LAYER, L4D1_ACT_VM_RELOAD_SNIPER, L4D1_ACT_VM_RELOAD_SNIPER_LAYER, L4D1_ACT_VM_RELOAD_CLIPOUT_SNIPER, L4D1_ACT_VM_RELOAD_CLIPOUT_SNIPER_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_SNIPER, L4D1_ACT_VM_RELOAD_EMPTY_SNIPER_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_CLIPOUT_SNIPER, L4D1_ACT_VM_RELOAD_EMPTY_CLIPOUT_SNIPER_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_CLIPIN_SNIPER, L4D1_ACT_VM_RELOAD_EMPTY_CLIPIN_SNIPER_LAYER, L4D1_ACT_VM_MELEE_SNIPER, L4D1_ACT_VM_MELEE_SNIPER_LAYER, L4D1_ACT_VM_FIDGET_SNIPER_LAYER, L4D1_ACT_VM_IDLE_SHOTGUN, L4D1_ACT_VM_DEPLOY_SHOTGUN, L4D1_ACT_VM_DEPLOY_SHOTGUN_LAYER, L4D1_ACT_VM_PRIMARYATTACK_SHOTGUN, L4D1_ACT_VM_SHOOT_SHOTGUN_LAYER, L4D1_ACT_VM_MELEE_SHOTGUN, L4D1_ACT_VM_MELEE_SHOTGUN_LAYER, L4D1_ACT_VM_PICKUP_SHOTGUN, L4D1_ACT_VM_PICKUP_SHOTGUN_LAYER, L4D1_ACT_VM_PUMP_SHOTGUN, L4D1_ACT_VM_PUMP_SHOTGUN_LAYER, L4D1_ACT_VM_RELOAD_START_SHOTGUN, L4D1_ACT_VM_RELOAD_START_SHOTGUN_LAYER, L4D1_ACT_VM_RELOAD_INSERT_SHOTGUN, L4D1_ACT_VM_RELOAD_INSERT_SHOTGUN_LAYER, L4D1_ACT_VM_RELOAD_NOPUMP_SHOTGUN, L4D1_ACT_VM_RELOAD_NOPUMP_SHOTGUN_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_START_SHOTGUN, L4D1_ACT_VM_RELOAD_EMPTY_START_SHOTGUN_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_INSERT_SHOTGUN, L4D1_ACT_VM_RELOAD_EMPTY_INSERT_SHOTGUN_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_PUMP_SHOTGUN, L4D1_ACT_VM_RELOAD_EMPTY_PUMP_SHOTGUN_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_PUMPREADY_SHOTGUN, L4D1_ACT_VM_RELOAD_EMPTY_PUMPREADY_SHOTGUN_LAYER, L4D1_ACT_VM_IDLE_AUTOSHOTGUN, L4D1_ACT_VM_DEPLOY_AUTOSHOTGUN, L4D1_ACT_VM_DEPLOY_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_PRIMARYATTACK_AUTOSHOTGUN, L4D1_ACT_VM_SHOOT_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_MELEE_AUTOSHOTGUN, L4D1_ACT_VM_MELEE_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_PICKUP_AUTOSHOTGUN, L4D1_ACT_VM_PICKUP_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_PUMP_AUTOSHOTGUN, L4D1_ACT_VM_PUMP_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_RELOAD_START_AUTOSHOTGUN, L4D1_ACT_VM_RELOAD_START_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_RELOAD_INSERT_AUTOSHOTGUN, L4D1_ACT_VM_RELOAD_INSERT_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_RELOAD_NOPUMP_AUTOSHOTGUN, L4D1_ACT_VM_RELOAD_NOPUMP_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_START_AUTOSHOTGUN, L4D1_ACT_VM_RELOAD_EMPTY_START_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_INSERT_AUTOSHOTGUN, L4D1_ACT_VM_RELOAD_EMPTY_INSERT_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_PUMP_AUTOSHOTGUN, L4D1_ACT_VM_RELOAD_EMPTY_PUMP_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_RELOAD_EMPTY_PUMPREADY_AUTOSHOTGUN, L4D1_ACT_VM_RELOAD_EMPTY_PUMPREADY_AUTOSHOTGUN_LAYER, L4D1_ACT_VM_IDLE_PIPEBOMB, L4D1_ACT_VM_DEPLOY_PIPEBOMB, L4D1_ACT_VM_DEPLOY_PIPEBOMB_LAYER, L4D1_ACT_VM_PULLPIN_PIPEBOMB, L4D1_ACT_VM_PULLPIN_PIPEBOMB_LAYER, L4D1_ACT_VM_THROW_PIPEBOMB, L4D1_ACT_VM_THROW_PIPEBOMB_LAYER, L4D1_ACT_VM_MELEE_PIPEBOMB, L4D1_ACT_VM_MELEE_PIPEBOMB_LAYER, L4D1_ACT_VM_IDLE_MOLOTOV, L4D1_ACT_VM_DEPLOY_MOLOTOV, L4D1_ACT_VM_DEPLOY_MOLOTOV_LAYER, L4D1_ACT_VM_PULLPIN_MOLOTOV, L4D1_ACT_VM_PULLPIN_MOLOTOV_LAYER, L4D1_ACT_VM_THROW_MOLOTOV, L4D1_ACT_VM_THROW_MOLOTOV_LAYER, L4D1_ACT_VM_MELEE_MOLOTOV, L4D1_ACT_VM_MELEE_MOLOTOV_LAYER, L4D1_ACT_VM_IDLE_PAINPILLS, L4D1_ACT_VM_DEPLOY_PAINPILLS, L4D1_ACT_VM_DEPLOY_PAINPILLS_LAYER, L4D1_ACT_VM_MELEE_PAINPILLS, L4D1_ACT_VM_MELEE_PAINPILLS_LAYER, L4D1_ACT_VM_USE_PAINPILLS, L4D1_ACT_VM_USE_PAINPILLS_LAYER, L4D1_ACT_VM_IDLE_MEDKIT, L4D1_ACT_VM_DEPLOY_MEDKIT, L4D1_ACT_VM_DEPLOY_MEDKIT_LAYER, L4D1_ACT_VM_MELEE_MEDKIT, L4D1_ACT_VM_MELEE_MEDKIT_LAYER, L4D1_ACT_VM_IDLE_GASCAN, L4D1_ACT_VM_DEPLOY_GASCAN, L4D1_ACT_VM_PULLPIN_GASCAN, L4D1_ACT_VM_THROW_GASCAN, L4D1_ACT_VM_MELEE_GASCAN, L4D1_ACT_VM_FIZZLE, L4D1_ACT_MP_STAND_IDLE, L4D1_ACT_MP_CROUCH_IDLE, L4D1_ACT_MP_CROUCH_DEPLOYED_IDLE, L4D1_ACT_MP_CROUCH_DEPLOYED, L4D1_ACT_MP_DEPLOYED_IDLE, L4D1_ACT_MP_RUN, L4D1_ACT_MP_WALK, L4D1_ACT_MP_AIRWALK, L4D1_ACT_MP_CROUCHWALK, L4D1_ACT_MP_SPRINT, L4D1_ACT_MP_JUMP, L4D1_ACT_MP_JUMP_START, L4D1_ACT_MP_JUMP_FLOAT, L4D1_ACT_MP_JUMP_LAND, L4D1_ACT_MP_DOUBLEJUMP, L4D1_ACT_MP_SWIM, L4D1_ACT_MP_DEPLOYED, L4D1_ACT_MP_SWIM_DEPLOYED, L4D1_ACT_MP_VCD, L4D1_ACT_MP_ATTACK_STAND_PRIMARYFIRE, L4D1_ACT_MP_ATTACK_STAND_PRIMARYFIRE_DEPLOYED, L4D1_ACT_MP_ATTACK_STAND_SECONDARYFIRE, L4D1_ACT_MP_ATTACK_STAND_GRENADE, L4D1_ACT_MP_ATTACK_CROUCH_PRIMARYFIRE, L4D1_ACT_MP_ATTACK_CROUCH_PRIMARYFIRE_DEPLOYED, L4D1_ACT_MP_ATTACK_CROUCH_SECONDARYFIRE, L4D1_ACT_MP_ATTACK_CROUCH_GRENADE, L4D1_ACT_MP_ATTACK_SWIM_PRIMARYFIRE, L4D1_ACT_MP_ATTACK_SWIM_SECONDARYFIRE, L4D1_ACT_MP_ATTACK_SWIM_GRENADE, L4D1_ACT_MP_ATTACK_AIRWALK_PRIMARYFIRE, L4D1_ACT_MP_ATTACK_AIRWALK_SECONDARYFIRE, L4D1_ACT_MP_ATTACK_AIRWALK_GRENADE, L4D1_ACT_MP_RELOAD_STAND, L4D1_ACT_MP_RELOAD_STAND_LOOP, L4D1_ACT_MP_RELOAD_STAND_END, L4D1_ACT_MP_RELOAD_CROUCH, L4D1_ACT_MP_RELOAD_CROUCH_LOOP, L4D1_ACT_MP_RELOAD_CROUCH_END, L4D1_ACT_MP_RELOAD_SWIM, L4D1_ACT_MP_RELOAD_SWIM_LOOP, L4D1_ACT_MP_RELOAD_SWIM_END, L4D1_ACT_MP_RELOAD_AIRWALK, L4D1_ACT_MP_RELOAD_AIRWALK_LOOP, L4D1_ACT_MP_RELOAD_AIRWALK_END, L4D1_ACT_MP_ATTACK_STAND_PREFIRE, L4D1_ACT_MP_ATTACK_STAND_POSTFIRE, L4D1_ACT_MP_ATTACK_STAND_STARTFIRE, L4D1_ACT_MP_ATTACK_CROUCH_PREFIRE, L4D1_ACT_MP_ATTACK_CROUCH_POSTFIRE, L4D1_ACT_MP_ATTACK_SWIM_PREFIRE, L4D1_ACT_MP_ATTACK_SWIM_POSTFIRE, L4D1_ACT_MP_STAND_PRIMARY, L4D1_ACT_MP_CROUCH_PRIMARY, L4D1_ACT_MP_RUN_PRIMARY, L4D1_ACT_MP_WALK_PRIMARY, L4D1_ACT_MP_AIRWALK_PRIMARY, L4D1_ACT_MP_CROUCHWALK_PRIMARY, L4D1_ACT_MP_JUMP_PRIMARY, L4D1_ACT_MP_JUMP_START_PRIMARY, L4D1_ACT_MP_JUMP_FLOAT_PRIMARY, L4D1_ACT_MP_JUMP_LAND_PRIMARY, L4D1_ACT_MP_SWIM_PRIMARY, L4D1_ACT_MP_DEPLOYED_PRIMARY, L4D1_ACT_MP_SWIM_DEPLOYED_PRIMARY, L4D1_ACT_MP_ATTACK_STAND_PRIMARY, L4D1_ACT_MP_ATTACK_STAND_PRIMARY_DEPLOYED, L4D1_ACT_MP_ATTACK_CROUCH_PRIMARY, L4D1_ACT_MP_ATTACK_CROUCH_PRIMARY_DEPLOYED, L4D1_ACT_MP_ATTACK_SWIM_PRIMARY, L4D1_ACT_MP_ATTACK_AIRWALK_PRIMARY, L4D1_ACT_MP_RELOAD_STAND_PRIMARY, L4D1_ACT_MP_RELOAD_STAND_PRIMARY_LOOP, L4D1_ACT_MP_RELOAD_STAND_PRIMARY_END, L4D1_ACT_MP_RELOAD_CROUCH_PRIMARY, L4D1_ACT_MP_RELOAD_CROUCH_PRIMARY_LOOP, L4D1_ACT_MP_RELOAD_CROUCH_PRIMARY_END, L4D1_ACT_MP_RELOAD_SWIM_PRIMARY, L4D1_ACT_MP_RELOAD_SWIM_PRIMARY_LOOP, L4D1_ACT_MP_RELOAD_SWIM_PRIMARY_END, L4D1_ACT_MP_RELOAD_AIRWALK_PRIMARY, L4D1_ACT_MP_RELOAD_AIRWALK_PRIMARY_LOOP, L4D1_ACT_MP_RELOAD_AIRWALK_PRIMARY_END, L4D1_ACT_MP_ATTACK_STAND_GRENADE_PRIMARY, L4D1_ACT_MP_ATTACK_CROUCH_GRENADE_PRIMARY, L4D1_ACT_MP_ATTACK_SWIM_GRENADE_PRIMARY, L4D1_ACT_MP_ATTACK_AIRWALK_GRENADE_PRIMARY, L4D1_ACT_MP_STAND_SECONDARY, L4D1_ACT_MP_CROUCH_SECONDARY, L4D1_ACT_MP_RUN_SECONDARY, L4D1_ACT_MP_WALK_SECONDARY, L4D1_ACT_MP_AIRWALK_SECONDARY, L4D1_ACT_MP_CROUCHWALK_SECONDARY, L4D1_ACT_MP_JUMP_SECONDARY, L4D1_ACT_MP_JUMP_START_SECONDARY, L4D1_ACT_MP_JUMP_FLOAT_SECONDARY, L4D1_ACT_MP_JUMP_LAND_SECONDARY, L4D1_ACT_MP_SWIM_SECONDARY, L4D1_ACT_MP_ATTACK_STAND_SECONDARY, L4D1_ACT_MP_ATTACK_CROUCH_SECONDARY, L4D1_ACT_MP_ATTACK_SWIM_SECONDARY, L4D1_ACT_MP_ATTACK_AIRWALK_SECONDARY, L4D1_ACT_MP_RELOAD_STAND_SECONDARY, L4D1_ACT_MP_RELOAD_STAND_SECONDARY_LOOP, L4D1_ACT_MP_RELOAD_STAND_SECONDARY_END, L4D1_ACT_MP_RELOAD_CROUCH_SECONDARY, L4D1_ACT_MP_RELOAD_CROUCH_SECONDARY_LOOP, L4D1_ACT_MP_RELOAD_CROUCH_SECONDARY_END, L4D1_ACT_MP_RELOAD_SWIM_SECONDARY, L4D1_ACT_MP_RELOAD_SWIM_SECONDARY_LOOP, L4D1_ACT_MP_RELOAD_SWIM_SECONDARY_END, L4D1_ACT_MP_RELOAD_AIRWALK_SECONDARY, L4D1_ACT_MP_RELOAD_AIRWALK_SECONDARY_LOOP, L4D1_ACT_MP_RELOAD_AIRWALK_SECONDARY_END, L4D1_ACT_MP_ATTACK_STAND_GRENADE_SECONDARY, L4D1_ACT_MP_ATTACK_CROUCH_GRENADE_SECONDARY, L4D1_ACT_MP_ATTACK_SWIM_GRENADE_SECONDARY, L4D1_ACT_MP_ATTACK_AIRWALK_GRENADE_SECONDARY, L4D1_ACT_MP_STAND_MELEE, L4D1_ACT_MP_CROUCH_MELEE, L4D1_ACT_MP_RUN_MELEE, L4D1_ACT_MP_WALK_MELEE, L4D1_ACT_MP_AIRWALK_MELEE, L4D1_ACT_MP_CROUCHWALK_MELEE, L4D1_ACT_MP_JUMP_MELEE, L4D1_ACT_MP_JUMP_START_MELEE, L4D1_ACT_MP_JUMP_FLOAT_MELEE, L4D1_ACT_MP_JUMP_LAND_MELEE, L4D1_ACT_MP_SWIM_MELEE, L4D1_ACT_MP_ATTACK_STAND_MELEE, L4D1_ACT_MP_ATTACK_STAND_MELEE_SECONDARY, L4D1_ACT_MP_ATTACK_CROUCH_MELEE, L4D1_ACT_MP_ATTACK_CROUCH_MELEE_SECONDARY, L4D1_ACT_MP_ATTACK_SWIM_MELEE, L4D1_ACT_MP_ATTACK_AIRWALK_MELEE, L4D1_ACT_MP_ATTACK_STAND_GRENADE_MELEE, L4D1_ACT_MP_ATTACK_CROUCH_GRENADE_MELEE, L4D1_ACT_MP_ATTACK_SWIM_GRENADE_MELEE, L4D1_ACT_MP_ATTACK_AIRWALK_GRENADE_MELEE, L4D1_ACT_MP_GESTURE_FLINCH, L4D1_ACT_MP_GESTURE_FLINCH_PRIMARY, L4D1_ACT_MP_GESTURE_FLINCH_SECONDARY, L4D1_ACT_MP_GESTURE_FLINCH_MELEE, L4D1_ACT_MP_GESTURE_FLINCH_HEAD, L4D1_ACT_MP_GESTURE_FLINCH_CHEST, L4D1_ACT_MP_GESTURE_FLINCH_STOMACH, L4D1_ACT_MP_GESTURE_FLINCH_LEFTARM, L4D1_ACT_MP_GESTURE_FLINCH_RIGHTARM, L4D1_ACT_MP_GESTURE_FLINCH_LEFTLEG, L4D1_ACT_MP_GESTURE_FLINCH_RIGHTLEG, L4D1_ACT_MP_GRENADE1_DRAW, L4D1_ACT_MP_GRENADE1_IDLE, L4D1_ACT_MP_GRENADE1_ATTACK, L4D1_ACT_MP_GRENADE2_DRAW, L4D1_ACT_MP_GRENADE2_IDLE, L4D1_ACT_MP_GRENADE2_ATTACK, L4D1_ACT_MP_PRIMARY_GRENADE1_DRAW, L4D1_ACT_MP_PRIMARY_GRENADE1_IDLE, L4D1_ACT_MP_PRIMARY_GRENADE1_ATTACK, L4D1_ACT_MP_PRIMARY_GRENADE2_DRAW, L4D1_ACT_MP_PRIMARY_GRENADE2_IDLE, L4D1_ACT_MP_PRIMARY_GRENADE2_ATTACK, L4D1_ACT_MP_SECONDARY_GRENADE1_DRAW, L4D1_ACT_MP_SECONDARY_GRENADE1_IDLE, L4D1_ACT_MP_SECONDARY_GRENADE1_ATTACK, L4D1_ACT_MP_SECONDARY_GRENADE2_DRAW, L4D1_ACT_MP_SECONDARY_GRENADE2_IDLE, L4D1_ACT_MP_SECONDARY_GRENADE2_ATTACK, L4D1_ACT_MP_MELEE_GRENADE1_DRAW, L4D1_ACT_MP_MELEE_GRENADE1_IDLE, L4D1_ACT_MP_MELEE_GRENADE1_ATTACK, L4D1_ACT_MP_MELEE_GRENADE2_DRAW, L4D1_ACT_MP_MELEE_GRENADE2_IDLE, L4D1_ACT_MP_MELEE_GRENADE2_ATTACK, L4D1_ACT_MP_STAND_BUILDING, L4D1_ACT_MP_CROUCH_BUILDING, L4D1_ACT_MP_RUN_BUILDING, L4D1_ACT_MP_WALK_BUILDING, L4D1_ACT_MP_AIRWALK_BUILDING, L4D1_ACT_MP_CROUCHWALK_BUILDING, L4D1_ACT_MP_JUMP_BUILDING, L4D1_ACT_MP_JUMP_START_BUILDING, L4D1_ACT_MP_JUMP_FLOAT_BUILDING, L4D1_ACT_MP_JUMP_LAND_BUILDING, L4D1_ACT_MP_SWIM_BUILDING, L4D1_ACT_MP_ATTACK_STAND_BUILDING, L4D1_ACT_MP_ATTACK_CROUCH_BUILDING, L4D1_ACT_MP_ATTACK_SWIM_BUILDING, L4D1_ACT_MP_ATTACK_AIRWALK_BUILDING, L4D1_ACT_MP_ATTACK_STAND_GRENADE_BUILDING, L4D1_ACT_MP_ATTACK_CROUCH_GRENADE_BUILDING, L4D1_ACT_MP_ATTACK_SWIM_GRENADE_BUILDING, L4D1_ACT_MP_ATTACK_AIRWALK_GRENADE_BUILDING, L4D1_ACT_MP_STAND_PDA, L4D1_ACT_MP_CROUCH_PDA, L4D1_ACT_MP_RUN_PDA, L4D1_ACT_MP_WALK_PDA, L4D1_ACT_MP_AIRWALK_PDA, L4D1_ACT_MP_CROUCHWALK_PDA, L4D1_ACT_MP_JUMP_PDA, L4D1_ACT_MP_JUMP_START_PDA, L4D1_ACT_MP_JUMP_FLOAT_PDA, L4D1_ACT_MP_JUMP_LAND_PDA, L4D1_ACT_MP_SWIM_PDA, L4D1_ACT_MP_ATTACK_STAND_PDA, L4D1_ACT_MP_ATTACK_SWIM_PDA, L4D1_ACT_MP_GESTURE_VC_HANDMOUTH, L4D1_ACT_MP_GESTURE_VC_FINGERPOINT, L4D1_ACT_MP_GESTURE_VC_FISTPUMP, L4D1_ACT_MP_GESTURE_VC_THUMBSUP, L4D1_ACT_MP_GESTURE_VC_NODYES, L4D1_ACT_MP_GESTURE_VC_NODNO, L4D1_ACT_MP_GESTURE_VC_HANDMOUTH_PRIMARY, L4D1_ACT_MP_GESTURE_VC_FINGERPOINT_PRIMARY, L4D1_ACT_MP_GESTURE_VC_FISTPUMP_PRIMARY, L4D1_ACT_MP_GESTURE_VC_THUMBSUP_PRIMARY, L4D1_ACT_MP_GESTURE_VC_NODYES_PRIMARY, L4D1_ACT_MP_GESTURE_VC_NODNO_PRIMARY, L4D1_ACT_MP_GESTURE_VC_HANDMOUTH_SECONDARY, L4D1_ACT_MP_GESTURE_VC_FINGERPOINT_SECONDARY, L4D1_ACT_MP_GESTURE_VC_FISTPUMP_SECONDARY, L4D1_ACT_MP_GESTURE_VC_THUMBSUP_SECONDARY, L4D1_ACT_MP_GESTURE_VC_NODYES_SECONDARY, L4D1_ACT_MP_GESTURE_VC_NODNO_SECONDARY, L4D1_ACT_MP_GESTURE_VC_HANDMOUTH_MELEE, L4D1_ACT_MP_GESTURE_VC_FINGERPOINT_MELEE, L4D1_ACT_MP_GESTURE_VC_FISTPUMP_MELEE, L4D1_ACT_MP_GESTURE_VC_THUMBSUP_MELEE, L4D1_ACT_MP_GESTURE_VC_NODYES_MELEE, L4D1_ACT_MP_GESTURE_VC_NODNO_MELEE, L4D1_ACT_MP_GESTURE_VC_HANDMOUTH_BUILDING, L4D1_ACT_MP_GESTURE_VC_FINGERPOINT_BUILDING, L4D1_ACT_MP_GESTURE_VC_FISTPUMP_BUILDING, L4D1_ACT_MP_GESTURE_VC_THUMBSUP_BUILDING, L4D1_ACT_MP_GESTURE_VC_NODYES_BUILDING, L4D1_ACT_MP_GESTURE_VC_NODNO_BUILDING, L4D1_ACT_MP_GESTURE_VC_HANDMOUTH_PDA, L4D1_ACT_MP_GESTURE_VC_FINGERPOINT_PDA, L4D1_ACT_MP_GESTURE_VC_FISTPUMP_PDA, L4D1_ACT_MP_GESTURE_VC_THUMBSUP_PDA, L4D1_ACT_MP_GESTURE_VC_NODYES_PDA, L4D1_ACT_MP_GESTURE_VC_NODNO_PDA, L4D1_ACT_VM_UNUSABLE, L4D1_ACT_VM_UNUSABLE_TO_USABLE, L4D1_ACT_VM_USABLE_TO_UNUSABLE } enum { L4D2_ACT_RESET, L4D2_ACT_IDLE, L4D2_ACT_TRANSITION, L4D2_ACT_COVER, L4D2_ACT_COVER_MED, L4D2_ACT_COVER_LOW, L4D2_ACT_WALK, L4D2_ACT_WALK_AIM, L4D2_ACT_WALK_CROUCH, L4D2_ACT_WALK_CROUCH_AIM, L4D2_ACT_RUN, L4D2_ACT_RUN_AIM, L4D2_ACT_RUN_CROUCH, L4D2_ACT_RUN_CROUCH_AIM, L4D2_ACT_RUN_PROTECTED, L4D2_ACT_SCRIPT_CUSTOM_MOVE, L4D2_ACT_RANGE_ATTACK1, L4D2_ACT_RANGE_ATTACK2, L4D2_ACT_RANGE_ATTACK1_LOW, L4D2_ACT_RANGE_ATTACK2_LOW, L4D2_ACT_DIESIMPLE, L4D2_ACT_DIEBACKWARD, L4D2_ACT_DIEFORWARD, L4D2_ACT_DIEVIOLENT, L4D2_ACT_DIERAGDOLL, L4D2_ACT_FLY, L4D2_ACT_HOVER, L4D2_ACT_GLIDE, L4D2_ACT_SWIM, L4D2_ACT_JUMP, L4D2_ACT_HOP, L4D2_ACT_LEAP, L4D2_ACT_LAND, L4D2_ACT_CLIMB_UP, L4D2_ACT_CLIMB_DOWN, L4D2_ACT_CLIMB_DISMOUNT, L4D2_ACT_SHIPLADDER_UP, L4D2_ACT_SHIPLADDER_DOWN, L4D2_ACT_STRAFE_LEFT, L4D2_ACT_STRAFE_RIGHT, L4D2_ACT_ROLL_LEFT, L4D2_ACT_ROLL_RIGHT, L4D2_ACT_TURN_LEFT, L4D2_ACT_TURN_RIGHT, L4D2_ACT_CROUCH, L4D2_ACT_CROUCHIDLE, L4D2_ACT_STAND, L4D2_ACT_USE, L4D2_ACT_SIGNAL1, L4D2_ACT_SIGNAL2, L4D2_ACT_SIGNAL3, L4D2_ACT_SIGNAL_ADVANCE, L4D2_ACT_SIGNAL_FORWARD, L4D2_ACT_SIGNAL_GROUP, L4D2_ACT_SIGNAL_HALT, L4D2_ACT_SIGNAL_LEFT, L4D2_ACT_SIGNAL_RIGHT, L4D2_ACT_SIGNAL_TAKECOVER, L4D2_ACT_LOOKBACK_RIGHT, L4D2_ACT_LOOKBACK_LEFT, L4D2_ACT_COWER, L4D2_ACT_SMALL_FLINCH, L4D2_ACT_BIG_FLINCH, L4D2_ACT_MELEE_ATTACK1, L4D2_ACT_MELEE_ATTACK2, L4D2_ACT_RELOAD, L4D2_ACT_RELOAD_START, L4D2_ACT_RELOAD_FINISH, L4D2_ACT_RELOAD_LOW, L4D2_ACT_ARM, L4D2_ACT_DISARM, L4D2_ACT_DROP_WEAPON, L4D2_ACT_DROP_WEAPON_SHOTGUN, L4D2_ACT_PICKUP_GROUND, L4D2_ACT_PICKUP_RACK, L4D2_ACT_IDLE_ANGRY, L4D2_ACT_IDLE_RELAXED, L4D2_ACT_IDLE_STIMULATED, L4D2_ACT_IDLE_AGITATED, L4D2_ACT_IDLE_STEALTH, L4D2_ACT_IDLE_HURT, L4D2_ACT_WALK_RELAXED, L4D2_ACT_WALK_STIMULATED, L4D2_ACT_WALK_AGITATED, L4D2_ACT_WALK_STEALTH, L4D2_ACT_RUN_RELAXED, L4D2_ACT_RUN_STIMULATED, L4D2_ACT_RUN_AGITATED, L4D2_ACT_RUN_STEALTH, L4D2_ACT_IDLE_AIM_RELAXED, L4D2_ACT_IDLE_AIM_STIMULATED, L4D2_ACT_IDLE_AIM_AGITATED, L4D2_ACT_IDLE_AIM_STEALTH, L4D2_ACT_WALK_AIM_RELAXED, L4D2_ACT_WALK_AIM_STIMULATED, L4D2_ACT_WALK_AIM_AGITATED, L4D2_ACT_WALK_AIM_STEALTH, L4D2_ACT_RUN_AIM_RELAXED, L4D2_ACT_RUN_AIM_STIMULATED, L4D2_ACT_RUN_AIM_AGITATED, L4D2_ACT_RUN_AIM_STEALTH, L4D2_ACT_CROUCHIDLE_STIMULATED, L4D2_ACT_CROUCHIDLE_AIM_STIMULATED, L4D2_ACT_CROUCHIDLE_AGITATED, L4D2_ACT_WALK_HURT, L4D2_ACT_RUN_HURT, L4D2_ACT_SPECIAL_ATTACK1, L4D2_ACT_SPECIAL_ATTACK2, L4D2_ACT_COMBAT_IDLE, L4D2_ACT_WALK_SCARED, L4D2_ACT_RUN_SCARED, L4D2_ACT_VICTORY_DANCE, L4D2_ACT_DIE_HEADSHOT, L4D2_ACT_DIE_CHESTSHOT, L4D2_ACT_DIE_GUTSHOT, L4D2_ACT_DIE_BACKSHOT, L4D2_ACT_FLINCH_HEAD, L4D2_ACT_FLINCH_CHEST, L4D2_ACT_FLINCH_STOMACH, L4D2_ACT_FLINCH_LEFTARM, L4D2_ACT_FLINCH_RIGHTARM, L4D2_ACT_FLINCH_LEFTLEG, L4D2_ACT_FLINCH_RIGHTLEG, L4D2_ACT_FLINCH_PHYSICS, L4D2_ACT_FLINCH_HEAD_BACK, L4D2_ACT_FLINCH_CHEST_BACK, L4D2_ACT_FLINCH_STOMACH_BACK, L4D2_ACT_FLINCH_CROUCH_FRONT, L4D2_ACT_FLINCH_CROUCH_BACK, L4D2_ACT_FLINCH_CROUCH_LEFT, L4D2_ACT_FLINCH_CROUCH_RIGHT, L4D2_ACT_IDLE_ON_FIRE, L4D2_ACT_WALK_ON_FIRE, L4D2_ACT_RUN_ON_FIRE, L4D2_ACT_RAPPEL_LOOP, L4D2_ACT_180_LEFT, L4D2_ACT_180_RIGHT, L4D2_ACT_90_LEFT, L4D2_ACT_90_RIGHT, L4D2_ACT_STEP_LEFT, L4D2_ACT_STEP_RIGHT, L4D2_ACT_STEP_BACK, L4D2_ACT_STEP_FORE, L4D2_ACT_GESTURE_RANGE_ATTACK1, L4D2_ACT_GESTURE_RANGE_ATTACK2, L4D2_ACT_GESTURE_MELEE_ATTACK1, L4D2_ACT_GESTURE_MELEE_ATTACK2, L4D2_ACT_GESTURE_RANGE_ATTACK1_LOW, L4D2_ACT_GESTURE_RANGE_ATTACK2_LOW, L4D2_ACT_MELEE_ATTACK_SWING_GESTURE, L4D2_ACT_GESTURE_SMALL_FLINCH, L4D2_ACT_GESTURE_BIG_FLINCH, L4D2_ACT_GESTURE_FLINCH_BLAST, L4D2_ACT_GESTURE_FLINCH_BLAST_SHOTGUN, L4D2_ACT_GESTURE_FLINCH_BLAST_DAMAGED, L4D2_ACT_GESTURE_FLINCH_BLAST_DAMAGED_SHOTGUN, L4D2_ACT_GESTURE_FLINCH_HEAD, L4D2_ACT_GESTURE_FLINCH_CHEST, L4D2_ACT_GESTURE_FLINCH_STOMACH, L4D2_ACT_GESTURE_FLINCH_LEFTARM, L4D2_ACT_GESTURE_FLINCH_RIGHTARM, L4D2_ACT_GESTURE_FLINCH_LEFTLEG, L4D2_ACT_GESTURE_FLINCH_RIGHTLEG, L4D2_ACT_GESTURE_TURN_LEFT, L4D2_ACT_GESTURE_TURN_RIGHT, L4D2_ACT_GESTURE_TURN_LEFT45, L4D2_ACT_GESTURE_TURN_RIGHT45, L4D2_ACT_GESTURE_TURN_LEFT90, L4D2_ACT_GESTURE_TURN_RIGHT90, L4D2_ACT_GESTURE_TURN_LEFT45_FLAT, L4D2_ACT_GESTURE_TURN_RIGHT45_FLAT, L4D2_ACT_GESTURE_TURN_LEFT90_FLAT, L4D2_ACT_GESTURE_TURN_RIGHT90_FLAT, L4D2_ACT_BARNACLE_HIT, L4D2_ACT_BARNACLE_PULL, L4D2_ACT_BARNACLE_CHOMP, L4D2_ACT_BARNACLE_CHEW, L4D2_ACT_DO_NOT_DISTURB, L4D2_ACT_SPECIFIC_SEQUENCE, L4D2_ACT_VM_DEPLOY, L4D2_ACT_VM_RELOAD_EMPTY, L4D2_ACT_VM_DRAW, L4D2_ACT_VM_HOLSTER, L4D2_ACT_VM_IDLE, L4D2_ACT_VM_FIDGET, L4D2_ACT_VM_PULLBACK, L4D2_ACT_VM_PULLBACK_HIGH, L4D2_ACT_VM_PULLBACK_LOW, L4D2_ACT_VM_THROW, L4D2_ACT_VM_DROP, L4D2_ACT_VM_PULLPIN, L4D2_ACT_VM_PRIMARYATTACK, L4D2_ACT_VM_SECONDARYATTACK, L4D2_ACT_VM_RELOAD, L4D2_ACT_VM_DRYFIRE, L4D2_ACT_VM_HITLEFT, L4D2_ACT_VM_HITLEFT2, L4D2_ACT_VM_HITRIGHT, L4D2_ACT_VM_HITRIGHT2, L4D2_ACT_VM_HITCENTER, L4D2_ACT_VM_HITCENTER2, L4D2_ACT_VM_MISSLEFT, L4D2_ACT_VM_MISSLEFT2, L4D2_ACT_VM_MISSRIGHT, L4D2_ACT_VM_MISSRIGHT2, L4D2_ACT_VM_MISSCENTER, L4D2_ACT_VM_MISSCENTER2, L4D2_ACT_VM_HAULBACK, L4D2_ACT_VM_SWINGHARD, L4D2_ACT_VM_SWINGMISS, L4D2_ACT_VM_SWINGHIT, L4D2_ACT_VM_IDLE_TO_LOWERED, L4D2_ACT_VM_IDLE_LOWERED, L4D2_ACT_VM_LOWERED_TO_IDLE, L4D2_ACT_VM_RECOIL1, L4D2_ACT_VM_RECOIL2, L4D2_ACT_VM_RECOIL3, L4D2_ACT_VM_PICKUP, L4D2_ACT_VM_RELEASE, L4D2_ACT_VM_MAUL_LOOP, L4D2_ACT_VM_ATTACH_SILENCER, L4D2_ACT_VM_DETACH_SILENCER, L4D2_ACT_SLAM_STICKWALL_IDLE, L4D2_ACT_SLAM_STICKWALL_ND_IDLE, L4D2_ACT_SLAM_STICKWALL_ATTACH, L4D2_ACT_SLAM_STICKWALL_ATTACH2, L4D2_ACT_SLAM_STICKWALL_ND_ATTACH, L4D2_ACT_SLAM_STICKWALL_ND_ATTACH2, L4D2_ACT_SLAM_STICKWALL_DETONATE, L4D2_ACT_SLAM_STICKWALL_DETONATOR_HOLSTER, L4D2_ACT_SLAM_STICKWALL_DRAW, L4D2_ACT_SLAM_STICKWALL_ND_DRAW, L4D2_ACT_SLAM_STICKWALL_TO_THROW, L4D2_ACT_SLAM_STICKWALL_TO_THROW_ND, L4D2_ACT_SLAM_STICKWALL_TO_TRIPMINE_ND, L4D2_ACT_SLAM_THROW_IDLE, L4D2_ACT_SLAM_THROW_ND_IDLE, L4D2_ACT_SLAM_THROW_THROW, L4D2_ACT_SLAM_THROW_THROW2, L4D2_ACT_SLAM_THROW_THROW_ND, L4D2_ACT_SLAM_THROW_THROW_ND2, L4D2_ACT_SLAM_THROW_DRAW, L4D2_ACT_SLAM_THROW_ND_DRAW, L4D2_ACT_SLAM_THROW_TO_STICKWALL, L4D2_ACT_SLAM_THROW_TO_STICKWALL_ND, L4D2_ACT_SLAM_THROW_DETONATE, L4D2_ACT_SLAM_THROW_DETONATOR_HOLSTER, L4D2_ACT_SLAM_THROW_TO_TRIPMINE_ND, L4D2_ACT_SLAM_TRIPMINE_IDLE, L4D2_ACT_SLAM_TRIPMINE_DRAW, L4D2_ACT_SLAM_TRIPMINE_ATTACH, L4D2_ACT_SLAM_TRIPMINE_ATTACH2, L4D2_ACT_SLAM_TRIPMINE_TO_STICKWALL_ND, L4D2_ACT_SLAM_TRIPMINE_TO_THROW_ND, L4D2_ACT_SLAM_DETONATOR_IDLE, L4D2_ACT_SLAM_DETONATOR_DRAW, L4D2_ACT_SLAM_DETONATOR_DETONATE, L4D2_ACT_SLAM_DETONATOR_HOLSTER, L4D2_ACT_SLAM_DETONATOR_STICKWALL_DRAW, L4D2_ACT_SLAM_DETONATOR_THROW_DRAW, L4D2_ACT_SHOTGUN_RELOAD_START, L4D2_ACT_SHOTGUN_RELOAD_FINISH, L4D2_ACT_SHOTGUN_PUMP, L4D2_ACT_SMG2_IDLE2, L4D2_ACT_SMG2_FIRE2, L4D2_ACT_SMG2_DRAW2, L4D2_ACT_SMG2_RELOAD2, L4D2_ACT_SMG2_DRYFIRE2, L4D2_ACT_SMG2_TOAUTO, L4D2_ACT_SMG2_TOBURST, L4D2_ACT_PHYSCANNON_UPGRADE, L4D2_ACT_RANGE_ATTACK_AR1, L4D2_ACT_RANGE_ATTACK_AR2, L4D2_ACT_RANGE_ATTACK_AR2_LOW, L4D2_ACT_RANGE_ATTACK_AR2_GRENADE, L4D2_ACT_RANGE_ATTACK_HMG1, L4D2_ACT_RANGE_ATTACK_ML, L4D2_ACT_RANGE_ATTACK_SMG1, L4D2_ACT_RANGE_ATTACK_SMG1_LOW, L4D2_ACT_RANGE_ATTACK_SMG2, L4D2_ACT_RANGE_ATTACK_SHOTGUN, L4D2_ACT_RANGE_ATTACK_SHOTGUN_LOW, L4D2_ACT_RANGE_ATTACK_PISTOL, L4D2_ACT_RANGE_ATTACK_PISTOL_LOW, L4D2_ACT_RANGE_ATTACK_SLAM, L4D2_ACT_RANGE_ATTACK_TRIPWIRE, L4D2_ACT_RANGE_ATTACK_THROW, L4D2_ACT_RANGE_ATTACK_SNIPER_RIFLE, L4D2_ACT_RANGE_ATTACK_RPG, L4D2_ACT_MELEE_ATTACK_SWING, L4D2_ACT_RANGE_AIM_LOW, L4D2_ACT_RANGE_AIM_SMG1_LOW, L4D2_ACT_RANGE_AIM_PISTOL_LOW, L4D2_ACT_RANGE_AIM_AR2_LOW, L4D2_ACT_COVER_PISTOL_LOW, L4D2_ACT_COVER_SMG1_LOW, L4D2_ACT_GESTURE_RANGE_ATTACK_AR1, L4D2_ACT_GESTURE_RANGE_ATTACK_AR2, L4D2_ACT_GESTURE_RANGE_ATTACK_AR2_GRENADE, L4D2_ACT_GESTURE_RANGE_ATTACK_HMG1, L4D2_ACT_GESTURE_RANGE_ATTACK_ML, L4D2_ACT_GESTURE_RANGE_ATTACK_SMG1, L4D2_ACT_GESTURE_RANGE_ATTACK_SMG1_LOW, L4D2_ACT_GESTURE_RANGE_ATTACK_SMG2, L4D2_ACT_GESTURE_RANGE_ATTACK_SHOTGUN, L4D2_ACT_GESTURE_RANGE_ATTACK_PISTOL, L4D2_ACT_GESTURE_RANGE_ATTACK_PISTOL_LOW, L4D2_ACT_GESTURE_RANGE_ATTACK_SLAM, L4D2_ACT_GESTURE_RANGE_ATTACK_TRIPWIRE, L4D2_ACT_GESTURE_RANGE_ATTACK_THROW, L4D2_ACT_GESTURE_RANGE_ATTACK_SNIPER_RIFLE, L4D2_ACT_GESTURE_MELEE_ATTACK_SWING, L4D2_ACT_IDLE_RIFLE, L4D2_ACT_IDLE_SMG1, L4D2_ACT_IDLE_ANGRY_SMG1, L4D2_ACT_IDLE_PISTOL, L4D2_ACT_IDLE_ANGRY_PISTOL, L4D2_ACT_IDLE_ANGRY_SHOTGUN, L4D2_ACT_IDLE_STEALTH_PISTOL, L4D2_ACT_IDLE_PACKAGE, L4D2_ACT_WALK_PACKAGE, L4D2_ACT_IDLE_SUITCASE, L4D2_ACT_WALK_SUITCASE, L4D2_ACT_IDLE_SMG1_RELAXED, L4D2_ACT_IDLE_SMG1_STIMULATED, L4D2_ACT_WALK_RIFLE_RELAXED, L4D2_ACT_RUN_RIFLE_RELAXED, L4D2_ACT_WALK_RIFLE_STIMULATED, L4D2_ACT_RUN_RIFLE_STIMULATED, L4D2_ACT_IDLE_AIM_RIFLE_STIMULATED, L4D2_ACT_WALK_AIM_RIFLE_STIMULATED, L4D2_ACT_RUN_AIM_RIFLE_STIMULATED, L4D2_ACT_IDLE_SHOTGUN_RELAXED, L4D2_ACT_IDLE_SHOTGUN_STIMULATED, L4D2_ACT_IDLE_SHOTGUN_AGITATED, L4D2_ACT_WALK_ANGRY, L4D2_ACT_POLICE_HARASS1, L4D2_ACT_POLICE_HARASS2, L4D2_ACT_IDLE_MANNEDGUN, L4D2_ACT_IDLE_MELEE, L4D2_ACT_IDLE_ANGRY_MELEE, L4D2_ACT_IDLE_RPG_RELAXED, L4D2_ACT_IDLE_RPG, L4D2_ACT_IDLE_ANGRY_RPG, L4D2_ACT_COVER_LOW_RPG, L4D2_ACT_WALK_RPG, L4D2_ACT_RUN_RPG, L4D2_ACT_WALK_CROUCH_RPG, L4D2_ACT_RUN_CROUCH_RPG, L4D2_ACT_WALK_RPG_RELAXED, L4D2_ACT_RUN_RPG_RELAXED, L4D2_ACT_WALK_RIFLE, L4D2_ACT_WALK_AIM_RIFLE, L4D2_ACT_WALK_CROUCH_RIFLE, L4D2_ACT_WALK_CROUCH_AIM_RIFLE, L4D2_ACT_RUN_RIFLE, L4D2_ACT_RUN_AIM_RIFLE, L4D2_ACT_RUN_CROUCH_RIFLE, L4D2_ACT_RUN_CROUCH_AIM_RIFLE, L4D2_ACT_RUN_STEALTH_PISTOL, L4D2_ACT_WALK_AIM_SHOTGUN, L4D2_ACT_RUN_AIM_SHOTGUN, L4D2_ACT_WALK_PISTOL, L4D2_ACT_RUN_PISTOL, L4D2_ACT_WALK_AIM_PISTOL, L4D2_ACT_RUN_AIM_PISTOL, L4D2_ACT_WALK_STEALTH_PISTOL, L4D2_ACT_WALK_AIM_STEALTH_PISTOL, L4D2_ACT_RUN_AIM_STEALTH_PISTOL, L4D2_ACT_RELOAD_PISTOL, L4D2_ACT_RELOAD_PISTOL_LOW, L4D2_ACT_RELOAD_SMG1, L4D2_ACT_RELOAD_SMG1_LOW, L4D2_ACT_RELOAD_SHOTGUN, L4D2_ACT_RELOAD_SHOTGUN_LOW, L4D2_ACT_GESTURE_RELOAD, L4D2_ACT_GESTURE_RELOAD_PISTOL, L4D2_ACT_GESTURE_RELOAD_SMG1, L4D2_ACT_GESTURE_RELOAD_SHOTGUN, L4D2_ACT_BUSY_LEAN_LEFT, L4D2_ACT_BUSY_LEAN_LEFT_ENTRY, L4D2_ACT_BUSY_LEAN_LEFT_EXIT, L4D2_ACT_BUSY_LEAN_BACK, L4D2_ACT_BUSY_LEAN_BACK_ENTRY, L4D2_ACT_BUSY_LEAN_BACK_EXIT, L4D2_ACT_BUSY_SIT_GROUND, L4D2_ACT_BUSY_SIT_GROUND_ENTRY, L4D2_ACT_BUSY_SIT_GROUND_EXIT, L4D2_ACT_BUSY_SIT_CHAIR, L4D2_ACT_BUSY_SIT_CHAIR_ENTRY, L4D2_ACT_BUSY_SIT_CHAIR_EXIT, L4D2_ACT_BUSY_STAND, L4D2_ACT_BUSY_QUEUE, L4D2_ACT_DUCK_DODGE, L4D2_ACT_DIE_BARNACLE_SWALLOW, L4D2_ACT_GESTURE_BARNACLE_STRANGLE, L4D2_ACT_PHYSCANNON_DETACH, L4D2_ACT_PHYSCANNON_ANIMATE, L4D2_ACT_PHYSCANNON_ANIMATE_PRE, L4D2_ACT_PHYSCANNON_ANIMATE_POST, L4D2_ACT_DIE_FRONTSIDE, L4D2_ACT_DIE_RIGHTSIDE, L4D2_ACT_DIE_BACKSIDE, L4D2_ACT_DIE_LEFTSIDE, L4D2_ACT_DIE_CROUCH_FRONTSIDE, L4D2_ACT_DIE_CROUCH_RIGHTSIDE, L4D2_ACT_DIE_CROUCH_BACKSIDE, L4D2_ACT_DIE_CROUCH_LEFTSIDE, L4D2_ACT_DIE_INCAP, L4D2_ACT_DIE_STANDING, L4D2_ACT_OPEN_DOOR, L4D2_ACT_DI_ALYX_ZOMBIE_MELEE, L4D2_ACT_DI_ALYX_ZOMBIE_TORSO_MELEE, L4D2_ACT_DI_ALYX_HEADCRAB_MELEE, L4D2_ACT_DI_ALYX_ANTLION, L4D2_ACT_DI_ALYX_ZOMBIE_SHOTGUN64, L4D2_ACT_DI_ALYX_ZOMBIE_SHOTGUN26, L4D2_ACT_READINESS_RELAXED_TO_STIMULATED, L4D2_ACT_READINESS_RELAXED_TO_STIMULATED_WALK, L4D2_ACT_READINESS_AGITATED_TO_STIMULATED, L4D2_ACT_READINESS_STIMULATED_TO_RELAXED, L4D2_ACT_READINESS_PISTOL_RELAXED_TO_STIMULATED, L4D2_ACT_READINESS_PISTOL_RELAXED_TO_STIMULATED_WALK, L4D2_ACT_READINESS_PISTOL_AGITATED_TO_STIMULATED, L4D2_ACT_READINESS_PISTOL_STIMULATED_TO_RELAXED, L4D2_ACT_IDLE_CARRY, L4D2_ACT_WALK_CARRY, L4D2_ACT_STARTDYING, L4D2_ACT_DYINGLOOP, L4D2_ACT_DYINGTODEAD, L4D2_ACT_RIDE_MANNED_GUN, L4D2_ACT_VM_SPRINT_ENTER, L4D2_ACT_VM_SPRINT_IDLE, L4D2_ACT_VM_SPRINT_LEAVE, L4D2_ACT_FIRE_START, L4D2_ACT_FIRE_LOOP, L4D2_ACT_FIRE_END, L4D2_ACT_CROUCHING_GRENADEIDLE, L4D2_ACT_CROUCHING_GRENADEREADY, L4D2_ACT_CROUCHING_PRIMARYATTACK, L4D2_ACT_OVERLAY_GRENADEIDLE, L4D2_ACT_OVERLAY_GRENADEREADY, L4D2_ACT_OVERLAY_PRIMARYATTACK, L4D2_ACT_OVERLAY_SHIELD_UP, L4D2_ACT_OVERLAY_SHIELD_DOWN, L4D2_ACT_OVERLAY_SHIELD_UP_IDLE, L4D2_ACT_OVERLAY_SHIELD_ATTACK, L4D2_ACT_OVERLAY_SHIELD_KNOCKBACK, L4D2_ACT_SHIELD_UP, L4D2_ACT_SHIELD_DOWN, L4D2_ACT_SHIELD_UP_IDLE, L4D2_ACT_SHIELD_ATTACK, L4D2_ACT_SHIELD_KNOCKBACK, L4D2_ACT_CROUCHING_SHIELD_UP, L4D2_ACT_CROUCHING_SHIELD_DOWN, L4D2_ACT_CROUCHING_SHIELD_UP_IDLE, L4D2_ACT_CROUCHING_SHIELD_ATTACK, L4D2_ACT_CROUCHING_SHIELD_KNOCKBACK, L4D2_ACT_TURNRIGHT45, L4D2_ACT_TURNLEFT45, L4D2_ACT_TURN, L4D2_ACT_OBJ_ASSEMBLING, L4D2_ACT_OBJ_DISMANTLING, L4D2_ACT_OBJ_STARTUP, L4D2_ACT_OBJ_RUNNING, L4D2_ACT_OBJ_IDLE, L4D2_ACT_OBJ_PLACING, L4D2_ACT_OBJ_DETERIORATING, L4D2_ACT_OBJ_UPGRADING, L4D2_ACT_DEPLOY, L4D2_ACT_DEPLOY_IDLE, L4D2_ACT_UNDEPLOY, L4D2_ACT_CROSSBOW_DRAW_UNLOADED, L4D2_ACT_GAUSS_SPINUP, L4D2_ACT_GAUSS_SPINCYCLE, L4D2_ACT_VM_PRIMARYATTACK_SILENCED, L4D2_ACT_VM_RELOAD_SILENCED, L4D2_ACT_VM_DRYFIRE_SILENCED, L4D2_ACT_VM_IDLE_SILENCED, L4D2_ACT_VM_DRAW_SILENCED, L4D2_ACT_VM_IDLE_EMPTY_LEFT, L4D2_ACT_VM_DRYFIRE_LEFT, L4D2_ACT_VM_IS_DRAW, L4D2_ACT_VM_IS_HOLSTER, L4D2_ACT_VM_IS_IDLE, L4D2_ACT_VM_IS_PRIMARYATTACK, L4D2_ACT_PLAYER_IDLE_FIRE, L4D2_ACT_PLAYER_CROUCH_FIRE, L4D2_ACT_PLAYER_CROUCH_WALK_FIRE, L4D2_ACT_PLAYER_WALK_FIRE, L4D2_ACT_PLAYER_RUN_FIRE, L4D2_ACT_IDLETORUN, L4D2_ACT_RUNTOIDLE, L4D2_ACT_VM_DRAW_DEPLOYED, L4D2_ACT_HL2MP_IDLE_MELEE, L4D2_ACT_HL2MP_RUN_MELEE, L4D2_ACT_HL2MP_IDLE_CROUCH_MELEE, L4D2_ACT_HL2MP_WALK_CROUCH_MELEE, L4D2_ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE, L4D2_ACT_HL2MP_GESTURE_RELOAD_MELEE, L4D2_ACT_HL2MP_JUMP_MELEE, L4D2_ACT_VM_SHRIEK, L4D2_ACT_VM_VOMIT, L4D2_ACT_VM_COUGH, L4D2_ACT_VM_LUNGE, L4D2_ACT_VM_PUMMEL_ATTACK, L4D2_ACT_VM_IDLE2REV, L4D2_ACT_VM_REV2IDLE, L4D2_ACT_IDLE_INJURED, L4D2_ACT_IDLE_INCAP, L4D2_ACT_WALK_INJURED, L4D2_ACT_RUN_INJURED, L4D2_ACT_IDLE_CALM, L4D2_ACT_WALK_CALM, L4D2_ACT_RUN_CALM, L4D2_ACT_JUMP_SHOTGUN, L4D2_ACT_JUMP_RIFLE, L4D2_ACT_JUMP_SMG, L4D2_ACT_JUMP_PISTOL, L4D2_ACT_JUMP_DUAL_PISTOL, L4D2_ACT_JUMP_ITEM, L4D2_ACT_TERROR_HIT_BY_TANKPUNCH, L4D2_ACT_TERROR_IDLE_FALL_FROM_TANKPUNCH, L4D2_ACT_TERROR_TANKPUNCH_LAND, L4D2_ACT_TERROR_HIT_BY_CHARGER, L4D2_ACT_TERROR_IDLE_FALL_FROM_CHARGERHIT, L4D2_ACT_TERROR_CHARGERHIT_LAND_SLOW, L4D2_ACT_TERROR_CHARGER_PUMMELED, L4D2_ACT_TERROR_CARRIED, L4D2_ACT_TERROR_SLAMMED_WALL, L4D2_ACT_TERROR_SLAMMED_GROUND, L4D2_ACT_TERROR_CHARGER_POUNDED_NORTH, L4D2_ACT_TERROR_CHARGER_POUNDED_UP, L4D2_ACT_TERROR_CHARGER_POUNDED_INCAP, L4D2_ACT_TERROR_CHARGER_POUNDED_DOWN, L4D2_ACT_TERROR_CHARGER_PUMMEL, L4D2_ACT_TERROR_SLAM_GROUND, L4D2_ACT_TERROR_CHARGER_POUND_NORTH, L4D2_ACT_TERROR_CHARGER_POUND_UP, L4D2_ACT_TERROR_CHARGER_POUND_DOWN_PRODUCER, L4D2_ACT_TERROR_CHARGER_POUND_DOWN_COACH, L4D2_ACT_TERROR_CHARGER_POUND_DOWN, L4D2_ACT_TERROR_PUMMELED_LOOP, L4D2_ACT_TERROR_SPITTER_SPIT, L4D2_ACT_TERROR_HEAL_SELF, L4D2_ACT_TERROR_HEAL_FRIEND, L4D2_ACT_TERROR_HEAL_INCAPACITATED, L4D2_ACT_TERROR_CROUCH_HEAL_SELF, L4D2_ACT_TERROR_CROUCH_HEAL_FRIEND, L4D2_ACT_TERROR_CROUCH_HEAL_INCAPACITATED, L4D2_ACT_TERROR_HEAL_INCAPACITATED_ABOVE, L4D2_ACT_TERROR_CROUCH_HEAL_INCAPACITATED_ABOVE, L4D2_ACT_TERROR_USE_PILLS, L4D2_ACT_TERROR_USE_ADRENALINE, L4D2_ACT_TERROR_USE_ADRENALINE_CROUCHING, L4D2_ACT_TERROR_USE_DEFIBRILLATOR, L4D2_ACT_TERROR_CROUCH_USE_DEFIBRILLATOR, L4D2_ACT_TERROR_REVIVE_FROM_DEATH, L4D2_ACT_TERROR_DEFIBRILLATOR_SHOCK, L4D2_ACT_TERROR_USE_UPGRADEPACK, L4D2_ACT_TERROR_CROUCH_USE_UPGRADEPACK, L4D2_ACT_TERROR_USE_GAS_CAN, L4D2_ACT_TERROR_USE_COLA, L4D2_ACT_TERROR_IDLE_NEUTRAL, L4D2_ACT_TERROR_IDLE_ALERT, L4D2_ACT_TERROR_IDLE_INTENSE, L4D2_ACT_TERROR_IDLE_ALERT_INJURED_AHEAD, L4D2_ACT_TERROR_IDLE_ALERT_AHEAD, L4D2_ACT_TERROR_IDLE_ALERT_INJURED_BEHIND, L4D2_ACT_TERROR_IDLE_ALERT_BEHIND, L4D2_ACT_TERROR_IDLE_ALERT_INJURED_LEFT, L4D2_ACT_TERROR_IDLE_ALERT_LEFT, L4D2_ACT_TERROR_IDLE_ALERT_INJURED_RIGHT, L4D2_ACT_TERROR_IDLE_ALERT_RIGHT, L4D2_ACT_TERROR_IDLE_ACQUIRE, L4D2_ACT_TERROR_LEAN_FORWARD_IDLE, L4D2_ACT_TERROR_LEAN_BACKWARD_IDLE, L4D2_ACT_TERROR_LEAN_LEFTWARD_IDLE, L4D2_ACT_TERROR_LEAN_RIGHTWARD_IDLE, L4D2_ACT_TERROR_FIDGET, L4D2_ACT_TERROR_NEUTRAL_TO_ALERT, L4D2_ACT_TERROR_ALERT_TO_NEUTRAL, L4D2_ACT_TERROR_FACE_LEFT_NEUTRAL, L4D2_ACT_TERROR_FACE_LEFT_ALERT, L4D2_ACT_TERROR_FACE_LEFT_INTENSE, L4D2_ACT_TERROR_FACE_RIGHT_NEUTRAL, L4D2_ACT_TERROR_FACE_RIGHT_ALERT, L4D2_ACT_TERROR_FACE_RIGHT_INTENSE, L4D2_ACT_TERROR_ABOUT_FACE_NEUTRAL, L4D2_ACT_TERROR_ABOUT_FACE_ALERT, L4D2_ACT_TERROR_ABOUT_FACE_INTENSE, L4D2_ACT_TERROR_SHAMBLE, L4D2_ACT_TERROR_WALK_NEUTRAL, L4D2_ACT_TERROR_WALK_ALERT, L4D2_ACT_TERROR_WALK_INTENSE, L4D2_ACT_TERROR_RUN_NEUTRAL, L4D2_ACT_TERROR_RUN_ALERT, L4D2_ACT_TERROR_RUN_INTENSE, L4D2_ACT_TERROR_RUN_ON_FIRE_INTENSE, L4D2_ACT_TERROR_RUN_INTENSE_TO_STAND_ALERT, L4D2_ACT_TERROR_CROUCH_IDLE_NEUTRAL, L4D2_ACT_TERROR_CROUCH_IDLE_ALERT, L4D2_ACT_TERROR_CROUCH_IDLE_INTENSE, L4D2_ACT_TERROR_CROUCH_WALK_NEUTRAL, L4D2_ACT_TERROR_CROUCH_WALK_ALERT, L4D2_ACT_TERROR_CROUCH_WALK_INTENSE, L4D2_ACT_TERROR_CROUCH_RUN_NEUTRAL, L4D2_ACT_TERROR_CROUCH_RUN_ALERT, L4D2_ACT_TERROR_CROUCH_RUN_INTENSE, L4D2_ACT_TERROR_CRAWL_RUN, L4D2_ACT_TERROR_IDLE_ON_FIRE, L4D2_ACT_TERROR_WALK_ON_FIRE, L4D2_ACT_TERROR_RUN_ON_FIRE, L4D2_ACT_TERROR_ATTACK, L4D2_ACT_TERROR_ATTACK_CONTINUOUSLY, L4D2_ACT_TERROR_ATTACK_LOW, L4D2_ACT_TERROR_ATTACK_LOW_CONTINUOUSLY, L4D2_ACT_TERROR_ATTACK_DOOR, L4D2_ACT_TERROR_ATTACK_DOOR_CONTINUOUSLY, L4D2_ACT_TERROR_UNABLE_TO_REACH_TARGET, L4D2_ACT_TERROR_REACH_THROUGH_DOOR, L4D2_ACT_TERROR_SHOVED_FORWARD, L4D2_ACT_TERROR_SHOVED_BACKWARD, L4D2_ACT_TERROR_SHOVED_LEFTWARD, L4D2_ACT_TERROR_SHOVED_RIGHTWARD, L4D2_ACT_TERROR_SHOVED_FORWARD_CHAINSAW, L4D2_ACT_TERROR_SHOVED_BACKWARD_CHAINSAW, L4D2_ACT_TERROR_SHOVED_LEFTWARD_CHAINSAW, L4D2_ACT_TERROR_SHOVED_RIGHTWARD_CHAINSAW, L4D2_ACT_TERROR_SHOVED_FORWARD_BAT, L4D2_ACT_TERROR_SHOVED_BACKWARD_BAT, L4D2_ACT_TERROR_SHOVED_LEFTWARD_BAT, L4D2_ACT_TERROR_SHOVED_RIGHTWARD_BAT, L4D2_ACT_TERROR_SHOVED_FORWARD_MELEE, L4D2_ACT_TERROR_SHOVED_BACKWARD_MELEE, L4D2_ACT_TERROR_SHOVED_LEFTWARD_MELEE, L4D2_ACT_TERROR_SHOVED_RIGHTWARD_MELEE, L4D2_ACT_TERROR_SHOVED_BACKWARD_INTO_WALL, L4D2_ACT_TERROR_SHOVED_FORWARD_INTO_WALL, L4D2_ACT_TERROR_SHOVED_LEFTWARD_INTO_WALL, L4D2_ACT_TERROR_SHOVED_RIGHTWARD_INTO_WALL, L4D2_ACT_TERROR_SHOVED_BACKWARD_FROM_SIT, L4D2_ACT_TERROR_SHOVED_RIGHTWARD_FROM_SIT, L4D2_ACT_TERROR_SHOVED_LEFTWARD_FROM_SIT, L4D2_ACT_TERROR_TUGGED_FORWARD, L4D2_ACT_TERROR_TUGGED_BACKWARD, L4D2_ACT_TERROR_TUGGED_LEFTWARD, L4D2_ACT_TERROR_TUGGED_RIGHTWARD, L4D2_ACT_TERROR_SIT_IDLE, L4D2_ACT_TERROR_SIT_FROM_STAND, L4D2_ACT_TERROR_SIT_TO_STAND, L4D2_ACT_TERROR_SIT_TO_STAND_ALERT, L4D2_ACT_TERROR_SIT_TO_LIE, L4D2_ACT_TERROR_LIE_IDLE, L4D2_ACT_TERROR_LIE_FROM_STAND, L4D2_ACT_TERROR_LIE_TO_STAND, L4D2_ACT_TERROR_LIE_TO_STAND_ALERT, L4D2_ACT_TERROR_LIE_TO_SIT, L4D2_ACT_TERROR_JUMP, L4D2_ACT_TERROR_JUMP_UP_TO_LEDGE, L4D2_ACT_TERROR_JUMP_DOWN_FROM_LEDGE, L4D2_ACT_TERROR_JUMP_OVER_GAP, L4D2_ACT_TERROR_JUMP_LANDING, L4D2_ACT_TERROR_JUMP_LANDING_HARD, L4D2_ACT_TERROR_JUMP_LANDING_NEUTRAL, L4D2_ACT_TERROR_JUMP_LANDING_HARD_NEUTRAL, L4D2_ACT_TERROR_FALL, L4D2_ACT_TERROR_DIE_FROM_STAND, L4D2_ACT_TERROR_DIE_FROM_CROUCH, L4D2_ACT_TERROR_DIE_WHILE_RUNNING, L4D2_ACT_TERROR_DIE_BACKWARD_FROM_SHOTGUN, L4D2_ACT_TERROR_DIE_FORWARD_FROM_SHOTGUN, L4D2_ACT_TERROR_DIE_LEFTWARD_FROM_SHOTGUN, L4D2_ACT_TERROR_DIE_RIGHTWARD_FROM_SHOTGUN, L4D2_ACT_BLUDGEON_DEATH_BACK, L4D2_ACT_BLUDGEON_DEATH_FORWARD, L4D2_ACT_BLUDGEON_DEATH_LEFT, L4D2_ACT_BLUDGEON_DEATH_RIGHT, L4D2_ACT_SLICING_DEATH_BACK, L4D2_ACT_SLICING_DEATH_FORWARD, L4D2_ACT_SLICING_DEATH_LEFT, L4D2_ACT_SLICING_DEATH_RIGHT, L4D2_ACT_TERROR_WITCH_ANGRY, L4D2_ACT_TERROR_WITCH_ANGRY_HIGH, L4D2_ACT_TERROR_WITCH_IDLE, L4D2_ACT_TERROR_WITCH_IDLE_PRE_RETREAT, L4D2_ACT_TERROR_WITCH_RETREAT, L4D2_ACT_TERROR_WITCH_KILL_DISPLAY, L4D2_ACT_TERROR_WITCH_KILL_LOOP, L4D2_ACT_TERROR_WITCH_WANDER_WALK, L4D2_ACT_TERROR_WITCH_WANDER_IDLE, L4D2_ACT_TERROR_WITCH_WANDER_ACQUIRE, L4D2_ACT_TERROR_TUG, L4D2_ACT_TERROR_FLINCH, L4D2_ACT_TERROR_FLINCH_LEDGE, L4D2_ACT_SECONDARYATTACK, L4D2_ACT_TERROR_INCAP_CRAWL, L4D2_ACT_TERROR_INCAP_TO_STAND, L4D2_ACT_TERROR_INCAP_TO_CROUCH, L4D2_ACT_TERROR_ITEM_PICKUP, L4D2_ACT_IDLE_INCAP_PISTOL, L4D2_ACT_IDLE_INCAP_ELITES, L4D2_ACT_FALL, L4D2_ACT_CALL_FOR_RESCUE, L4D2_ACT_PUSH, L4D2_ACT_IDLE_MINIGUN, L4D2_ACT_PRIMARYATTACK_MINIGUN, L4D2_ACT_GEST_HEAD_NOD, L4D2_ACT_GEST_HEAD_YES, L4D2_ACT_GEST_HEAD_NO, L4D2_ACT_TERROR_LEDGE_CLIMB, L4D2_ACT_TERROR_LEDGE_CLIMB_TO_CROUCH, L4D2_ACT_TERROR_FALL_GRAB_LEDGE, L4D2_ACT_TERROR_LEDGE_HANG_FIRM, L4D2_ACT_TERROR_LEDGE_HANG_WEAK, L4D2_ACT_TERROR_LEDGE_HANG_DANGLE, L4D2_ACT_TERROR_IDLE_LADDER, L4D2_ACT_TERROR_LADDER_DISMOUNT, L4D2_ACT_TERROR_CLIMB_24_FROM_STAND, L4D2_ACT_TERROR_CLIMB_36_FROM_STAND, L4D2_ACT_TERROR_CLIMB_38_FROM_STAND, L4D2_ACT_TERROR_CLIMB_48_FROM_STAND, L4D2_ACT_TERROR_CLIMB_50_FROM_STAND, L4D2_ACT_TERROR_CLIMB_60_FROM_STAND, L4D2_ACT_TERROR_CLIMB_70_FROM_STAND, L4D2_ACT_TERROR_CLIMB_72_FROM_STAND, L4D2_ACT_TERROR_CLIMB_84_FROM_STAND, L4D2_ACT_TERROR_CLIMB_96_FROM_STAND, L4D2_ACT_TERROR_CLIMB_108_FROM_STAND, L4D2_ACT_TERROR_CLIMB_115_FROM_STAND, L4D2_ACT_TERROR_CLIMB_120_FROM_STAND, L4D2_ACT_TERROR_CLIMB_130_FROM_STAND, L4D2_ACT_TERROR_CLIMB_132_FROM_STAND, L4D2_ACT_TERROR_CLIMB_144_FROM_STAND, L4D2_ACT_TERROR_CLIMB_150_FROM_STAND, L4D2_ACT_TERROR_CLIMB_156_FROM_STAND, L4D2_ACT_TERROR_CLIMB_166_FROM_STAND, L4D2_ACT_TERROR_CLIMB_168_FROM_STAND, L4D2_ACT_TERROR_HUNTER_LUNGE_INTO_SURVIVOR, L4D2_ACT_TERROR_HUNTER_LUNGE, L4D2_ACT_TERROR_HUNTER_LUNGE_WHILE_RUNNING, L4D2_ACT_TERROR_HUNTER_LANDING_HARD, L4D2_ACT_TERROR_HUNTER_LUNGE_OFF_WALL_SPIN_RIGHT, L4D2_ACT_TERROR_HUNTER_LUNGE_OFF_WALL_SPIN_LEFT, L4D2_ACT_TERROR_HUNTER_LUNGE_OFF_WALL_BACK, L4D2_ACT_TERROR_HUNTER_LUNGE_IDLE, L4D2_ACT_TERROR_HUNTER_LUNGE_ONTO_WALL, L4D2_ACT_TERROR_HUNTER_POUNCE, L4D2_ACT_TERROR_HUNTER_POUNCE_IDLE, L4D2_ACT_TERROR_SMOKER_PREPARE_TONGUE_LAUNCH, L4D2_ACT_TERROR_SMOKER_SENDING_OUT_TONGUE, L4D2_ACT_TERROR_SMOKER_SENDING_OUT_TONGUE_IDLE, L4D2_ACT_TERROR_SMOKER_REELING_IN_TONGUE, L4D2_ACT_TERROR_SMOKER_REELING_IN_TONGUE_IDLE, L4D2_ACT_TERROR_SMOKER_CRITICAL_ATTACK, L4D2_ACT_TERROR_SMOKER_CRITICAL_ATTACK_IDLE, L4D2_ACT_TERROR_SMOKER_END_TONGUE_ATTACK, L4D2_ACT_TERROR_RUN_LEAKER, L4D2_ACT_TERROR_CROUCH_LEAKER, L4D2_ACT_TERROR_CROUCHIDLE_LEAKER, L4D2_ACT_TERROR_GUARD, L4D2_ACT_HULK_THROW, L4D2_ACT_TANK_OVERHEAD_THROW, L4D2_ACT_HULK_ATTACK_LOW, L4D2_ACT_TERROR_HUNTER_POUNCE_MELEE, L4D2_ACT_TERROR_HUNTER_POUNCE_KNOCKOFF_L, L4D2_ACT_TERROR_HUNTER_POUNCE_KNOCKOFF_R, L4D2_ACT_TERROR_HUNTER_POUNCE_KNOCKOFF_BACKWARD, L4D2_ACT_TERROR_HUNTER_POUNCE_KNOCKOFF_FORWARD, L4D2_ACT_TERROR_CHARGER_CHARGE, L4D2_ACT_IDLE_POUNCED, L4D2_ACT_TERROR_POUNCED_TO_STAND, L4D2_ACT_TERROR_INCAP_FROM_POUNCE, L4D2_ACT_TERROR_INCAP_FROM_TONGUE, L4D2_ACT_TERROR_IDLE_FALL_FROM_TONGUE, L4D2_ACT_TERROR_HANGING_FROM_TONGUE, L4D2_ACT_TERROR_HANGING_FROM_TONGUE_MALE, L4D2_ACT_TERROR_HANGING_FROM_TONGUE_FEMALE, L4D2_ACT_TERROR_STANDING_CHOKE_FROM_TONGUE, L4D2_ACT_TERROR_DRAGGING_FROM_TONGUE, L4D2_ACT_TERROR_DRAGGING_FROM_TONGUE_MALE, L4D2_ACT_TERROR_DRAGGING_FROM_TONGUE_FEMALE, L4D2_ACT_TERROR_DRAGGING_FROM_TONGUE_DEPLOY, L4D2_ACT_TERROR_CHOKING_TONGUE_GROUND, L4D2_ACT_TERROR_CHOKING_TONGUE_GROUND_MALE, L4D2_ACT_TERROR_CHOKING_TONGUE_GROUND_FEMALE, L4D2_ACT_TERROR_INCAP_FROM_TONGUE_GERMANY, L4D2_ACT_TERROR_HANGING_FROM_TONGUE_GERMANY, L4D2_ACT_TERROR_IDLE_FALL_FROM_TONGUE_GERMANY, L4D2_ACT_TERROR_STANDING_CHOKE_FROM_TONGUE_GERMANY, L4D2_ACT_TERROR_ATTACK_MOVING, L4D2_ACT_TERROR_TANKROCK_TO_STAND, L4D2_ACT_TERROR_HULK_VICTORY, L4D2_ACT_TERROR_HULK_VICTORY_B, L4D2_ACT_TERROR_RAGE_AT_ENEMY, L4D2_ACT_TERROR_RAGE_AT_KNOCKDOWN, L4D2_ACT_TERROR_SMASH_LEFT, L4D2_ACT_TERROR_SMASH_RIGHT, L4D2_ACT_TERROR_JOCKEY_RIDE, L4D2_ACT_TERROR_JOCKEY_RIDDEN, L4D2_ACT_VM_LUNGE_LAYER, L4D2_ACT_VM_LUNGE_PUSH, L4D2_ACT_VM_LUNGE_PUSH_LAYER, L4D2_ACT_VM_LUNGE_OFFWALL, L4D2_ACT_VM_LUNGE_OFFWALL_LAYER, L4D2_ACT_VM_LUNGE_POUNCE, L4D2_ACT_VM_LUNGE_POUNCE_LAYER, L4D2_ACT_VM_POUNCE, L4D2_ACT_VM_POUNCE_LAYER, L4D2_ACT_VM_VOMIT_LAYER, L4D2_ACT_VM_TONGUE, L4D2_ACT_VM_TONGUE_LAYER, L4D2_ACT_VM_BITE, L4D2_ACT_VM_BITE_LAYER, L4D2_ACT_VM_COUGH_LAYER, L4D2_ACT_VM_FIDGET_LAYER, L4D2_ACT_DOOR_OPEN, L4D2_ACT_DOOR_OPENFAIL, L4D2_ACT_DOOR_ANIMTOLOCK, L4D2_ACT_DOOR_ANIMTOUNLOCK, L4D2_ACT_VM_ITEMPICKUP_EXTEND, L4D2_ACT_VM_ITEMPICKUP_EXTEND_LAYER, L4D2_ACT_VM_ITEMPICKUP_LOOP, L4D2_ACT_VM_ITEMPICKUP_LOOP_LAYER, L4D2_ACT_VM_ITEMPICKUP_RETRACT, L4D2_ACT_VM_ITEMPICKUP_RETRACT_LAYER, L4D2_ACT_VM_HELPINGHAND_EXTEND, L4D2_ACT_VM_HELPINGHAND_EXTEND_LAYER, L4D2_ACT_VM_HELPINGHAND_LOOP, L4D2_ACT_VM_HELPINGHAND_LOOP_LAYER, L4D2_ACT_VM_HELPINGHAND_RETRACT, L4D2_ACT_VM_HELPINGHAND_RETRACT_LAYER, L4D2_ACT_VM_ITEMPICKUP_LOOP_PISTOL, L4D2_ACT_VM_ITEMPICKUP_LOOP_PISTOL_LAYER, L4D2_ACT_VM_ITEMPICKUP_EXTEND_PISTOL, L4D2_ACT_VM_ITEMPICKUP_EXTEND_PISTOL_LAYER, L4D2_ACT_VM_ITEMPICKUP_RETRACT_PISTOL, L4D2_ACT_VM_ITEMPICKUP_RETRACT_PISTOL_LAYER, L4D2_ACT_VM_HELPINGHAND_LOOP_PISTOL, L4D2_ACT_VM_HELPINGHAND_LOOP_PISTOL_LAYER, L4D2_ACT_VM_HELPINGHAND_EXTEND_PISTOL, L4D2_ACT_VM_HELPINGHAND_EXTEND_PISTOL_LAYER, L4D2_ACT_VM_HELPINGHAND_RETRACT_PISTOL, L4D2_ACT_VM_HELPINGHAND_RETRACT_PISTOL_LAYER, L4D2_ACT_VM_ITEMPICKUP_LOOP_DUAL_PISTOL, L4D2_ACT_VM_ITEMPICKUP_LOOP_DUAL_PISTOL_LAYER, L4D2_ACT_VM_ITEMPICKUP_EXTEND_DUAL_PISTOL, L4D2_ACT_VM_ITEMPICKUP_EXTEND_DUAL_PISTOL_LAYER, L4D2_ACT_VM_ITEMPICKUP_RETRACT_DUAL_PISTOL, L4D2_ACT_VM_ITEMPICKUP_RETRACT_DUAL_PISTOL_LAYER, L4D2_ACT_VM_HELPINGHAND_LOOP_DUAL_PISTOL, L4D2_ACT_VM_HELPINGHAND_LOOP_DUAL_PISTOL_LAYER, L4D2_ACT_VM_HELPINGHAND_EXTEND_DUAL_PISTOL, L4D2_ACT_VM_HELPINGHAND_EXTEND_DUAL_PISTOL_LAYER, L4D2_ACT_VM_HELPINGHAND_RETRACT_DUAL_PISTOL, L4D2_ACT_VM_HELPINGHAND_RETRACT_DUAL_PISTOL_LAYER, L4D2_ACT_VM_ITEMPICKUP_LOOP_RIFLE, L4D2_ACT_VM_ITEMPICKUP_LOOP_RIFLE_LAYER, L4D2_ACT_VM_ITEMPICKUP_EXTEND_RIFLE, L4D2_ACT_VM_ITEMPICKUP_EXTEND_RIFLE_LAYER, L4D2_ACT_VM_ITEMPICKUP_RETRACT_RIFLE, L4D2_ACT_VM_ITEMPICKUP_RETRACT_RIFLE_LAYER, L4D2_ACT_VM_HELPINGHAND_LOOP_RIFLE, L4D2_ACT_VM_HELPINGHAND_LOOP_RIFLE_LAYER, L4D2_ACT_VM_HELPINGHAND_EXTEND_RIFLE, L4D2_ACT_VM_HELPINGHAND_EXTEND_RIFLE_LAYER, L4D2_ACT_VM_HELPINGHAND_RETRACT_RIFLE, L4D2_ACT_VM_HELPINGHAND_RETRACT_RIFLE_LAYER, L4D2_ACT_VM_ITEMPICKUP_LOOP_SMG, L4D2_ACT_VM_ITEMPICKUP_LOOP_SMG_LAYER, L4D2_ACT_VM_ITEMPICKUP_EXTEND_SMG, L4D2_ACT_VM_ITEMPICKUP_EXTEND_SMG_LAYER, L4D2_ACT_VM_ITEMPICKUP_RETRACT_SMG, L4D2_ACT_VM_ITEMPICKUP_RETRACT_SMG_LAYER, L4D2_ACT_VM_HELPINGHAND_LOOP_SMG, L4D2_ACT_VM_HELPINGHAND_LOOP_SMG_LAYER, L4D2_ACT_VM_HELPINGHAND_EXTEND_SMG, L4D2_ACT_VM_HELPINGHAND_EXTEND_SMG_LAYER, L4D2_ACT_VM_HELPINGHAND_RETRACT_SMG, L4D2_ACT_VM_HELPINGHAND_RETRACT_SMG_LAYER, L4D2_ACT_VM_ITEMPICKUP_LOOP_SNIPER, L4D2_ACT_VM_ITEMPICKUP_LOOP_SNIPER_LAYER, L4D2_ACT_VM_ITEMPICKUP_EXTEND_SNIPER, L4D2_ACT_VM_ITEMPICKUP_EXTEND_SNIPER_LAYER, L4D2_ACT_VM_ITEMPICKUP_RETRACT_SNIPER, L4D2_ACT_VM_ITEMPICKUP_RETRACT_SNIPER_LAYER, L4D2_ACT_VM_HELPINGHAND_LOOP_SNIPER, L4D2_ACT_VM_HELPINGHAND_LOOP_SNIPER_LAYER, L4D2_ACT_VM_HELPINGHAND_EXTEND_SNIPER, L4D2_ACT_VM_HELPINGHAND_EXTEND_SNIPER_LAYER, L4D2_ACT_VM_HELPINGHAND_RETRACT_SNIPER, L4D2_ACT_VM_HELPINGHAND_RETRACT_SNIPER_LAYER, L4D2_ACT_VM_ITEMPICKUP_LOOP_PIPEBOMB, L4D2_ACT_VM_ITEMPICKUP_LOOP_PIPEBOMB_LAYER, L4D2_ACT_VM_ITEMPICKUP_EXTEND_PIPEBOMB, L4D2_ACT_VM_ITEMPICKUP_EXTEND_PIPEBOMB_LAYER, L4D2_ACT_VM_ITEMPICKUP_RETRACT_PIPEBOMB, L4D2_ACT_VM_ITEMPICKUP_RETRACT_PIPEBOMB_LAYER, L4D2_ACT_VM_HELPINGHAND_LOOP_PIPEBOMB, L4D2_ACT_VM_HELPINGHAND_LOOP_PIPEBOMB_LAYER, L4D2_ACT_VM_HELPINGHAND_EXTEND_PIPEBOMB, L4D2_ACT_VM_HELPINGHAND_EXTEND_PIPEBOMB_LAYER, L4D2_ACT_VM_HELPINGHAND_RETRACT_PIPEBOMB, L4D2_ACT_VM_HELPINGHAND_RETRACT_PIPEBOMB_LAYER, L4D2_ACT_VM_ITEMPICKUP_LOOP_MOLOTOV, L4D2_ACT_VM_ITEMPICKUP_LOOP_MOLOTOV_LAYER, L4D2_ACT_VM_ITEMPICKUP_EXTEND_MOLOTOV, L4D2_ACT_VM_ITEMPICKUP_EXTEND_MOLOTOV_LAYER, L4D2_ACT_VM_ITEMPICKUP_RETRACT_MOLOTOV, L4D2_ACT_VM_ITEMPICKUP_RETRACT_MOLOTOV_LAYER, L4D2_ACT_VM_HELPINGHAND_LOOP_MOLOTOV, L4D2_ACT_VM_HELPINGHAND_LOOP_MOLOTOV_LAYER, L4D2_ACT_VM_HELPINGHAND_EXTEND_MOLOTOV, L4D2_ACT_VM_HELPINGHAND_EXTEND_MOLOTOV_LAYER, L4D2_ACT_VM_HELPINGHAND_RETRACT_MOLOTOV, L4D2_ACT_VM_HELPINGHAND_RETRACT_MOLOTOV_LAYER, L4D2_ACT_VM_ITEMPICKUP_LOOP_MEDKIT, L4D2_ACT_VM_ITEMPICKUP_LOOP_MEDKIT_LAYER, L4D2_ACT_VM_ITEMPICKUP_EXTEND_MEDKIT, L4D2_ACT_VM_ITEMPICKUP_EXTEND_MEDKIT_LAYER, L4D2_ACT_VM_ITEMPICKUP_RETRACT_MEDKIT, L4D2_ACT_VM_ITEMPICKUP_RETRACT_MEDKIT_LAYER, L4D2_ACT_VM_HELPINGHAND_LOOP_MEDKIT, L4D2_ACT_VM_HELPINGHAND_LOOP_MEDKIT_LAYER, L4D2_ACT_VM_HELPINGHAND_EXTEND_MEDKIT, L4D2_ACT_VM_HELPINGHAND_EXTEND_MEDKIT_LAYER, L4D2_ACT_VM_HELPINGHAND_RETRACT_MEDKIT, L4D2_ACT_VM_HELPINGHAND_RETRACT_MEDKIT_LAYER, L4D2_ACT_VM_ITEMPICKUP_LOOP_PAINPILLS, L4D2_ACT_VM_ITEMPICKUP_LOOP_PAINPILLS_LAYER, L4D2_ACT_VM_ITEMPICKUP_EXTEND_PAINPILLS, L4D2_ACT_VM_ITEMPICKUP_EXTEND_PAINPILLS_LAYER, L4D2_ACT_VM_ITEMPICKUP_RETRACT_PAINPILLS, L4D2_ACT_VM_ITEMPICKUP_RETRACT_PAINPILLS_LAYER, L4D2_ACT_VM_HELPINGHAND_LOOP_PAINPILLS, L4D2_ACT_VM_HELPINGHAND_LOOP_PAINPILLS_LAYER, L4D2_ACT_VM_HELPINGHAND_EXTEND_PAINPILLS, L4D2_ACT_VM_HELPINGHAND_EXTEND_PAINPILLS_LAYER, L4D2_ACT_VM_HELPINGHAND_RETRACT_PAINPILLS, L4D2_ACT_VM_HELPINGHAND_RETRACT_PAINPILLS_LAYER, L4D2_ACT_VM_CANCEL, L4D2_ACT_VM_CANCEL_LAYER, L4D2_ACT_CROUCHIDLE_RIFLE, L4D2_ACT_IDLE_INJURED_RIFLE, L4D2_ACT_WALK_INJURED_RIFLE, L4D2_ACT_RUN_INJURED_RIFLE, L4D2_ACT_DEPLOY_RIFLE, L4D2_ACT_PRIMARYATTACK_RIFLE, L4D2_ACT_RELOAD_RIFLE, L4D2_ACT_IDLE_CALM_RIFLE, L4D2_ACT_WALK_CALM_RIFLE, L4D2_ACT_RUN_CALM_RIFLE, L4D2_ACT_MELEE_SWEEP_RIFLE_IDLE, L4D2_ACT_MELEE_SHOVE_RIFLE_IDLE, L4D2_ACT_MELEE_STRAIGHT_RIFLE_IDLE, L4D2_ACT_MELEE_SWEEP_RIFLE_RUN, L4D2_ACT_MELEE_SHOVE_RIFLE_RUN, L4D2_ACT_MELEE_STRAIGHT_RIFLE_RUN, L4D2_ACT_TERROR_PULLED_RUN_RIFLE, L4D2_ACT_MELEE_STOMP_RIFLE_IDLE, L4D2_ACT_MELEE_STOMP_RIFLE_WALK, L4D2_ACT_IDLE_SHOTGUN, L4D2_ACT_WALK_SHOTGUN, L4D2_ACT_RUN_SHOTGUN, L4D2_ACT_IDLE_CALM_SHOTGUN, L4D2_ACT_CROUCHIDLE_SHOTGUN, L4D2_ACT_RUN_CROUCH_SHOTGUN, L4D2_ACT_DEPLOY_SHOTGUN, L4D2_ACT_PRIMARYATTACK_SHOTGUN, L4D2_ACT_RELOAD_SHOTGUN_START, L4D2_ACT_RELOAD_SHOTGUN_LOOP, L4D2_ACT_RELOAD_SHOTGUN_END, L4D2_ACT_IDLE_PUMPSHOTGUN, L4D2_ACT_CROUCHIDLE_PUMPSHOTGUN, L4D2_ACT_IDLE_CALM_PUMPSHOTGUN, L4D2_ACT_IDLE_INJURED_PUMPSHOTGUN, L4D2_ACT_WALK_PUMPSHOTGUN, L4D2_ACT_RUN_CROUCH_PUMPSHOTGUN, L4D2_ACT_RUN_PUMPSHOTGUN, L4D2_ACT_WALK_CALM_PUMPSHOTGUN, L4D2_ACT_RUN_CALM_PUMPSHOTGUN, L4D2_ACT_WALK_INJURED_PUMPSHOTGUN, L4D2_ACT_RUN_INJURED_PUMPSHOTGUN, L4D2_ACT_PRIMARYATTACK_PUMPSHOTGUN, L4D2_ACT_RELOAD_PUMPSHOTGUN_START, L4D2_ACT_RELOAD_PUMPSHOTGUN_LOOP, L4D2_ACT_RELOAD_PUMPSHOTGUN_END, L4D2_ACT_RELOAD_GRENADE_LAUNCHER, L4D2_ACT_IDLE_GREN, L4D2_ACT_CROUCHIDLE_GREN, L4D2_ACT_IDLE_INJURED_GREN, L4D2_ACT_RUN_GREN, L4D2_ACT_WALK_GREN, L4D2_ACT_RUN_CROUCH_GREN, L4D2_ACT_DEPLOY_GREN, L4D2_ACT_WALK_INJURED_GREN, L4D2_ACT_RUN_INJURED_GREN, L4D2_ACT_PRIMARYATTACK_GREN1_IDLE, L4D2_ACT_PRIMARYATTACK_GREN2_IDLE, L4D2_ACT_PRIMARYATTACK_GREN1_RUN, L4D2_ACT_PRIMARYATTACK_GREN2_RUN, L4D2_ACT_IDLE_GREN_PULL_BACK, L4D2_ACT_CROUCHIDLE_GREN_PULL_BACK, L4D2_ACT_IDLE_INJURED_GREN_PULL_BACK, L4D2_ACT_RUN_GREN_PULL_BACK, L4D2_ACT_WALK_GREN_PULL_BACK, L4D2_ACT_RUN_CROUCH_GREN_PULL_BACK, L4D2_ACT_WALK_INJURED_GREN_PULL_BACK, L4D2_ACT_RUN_INJURED_GREN_PULL_BACK, L4D2_ACT_IDLE_SNIPER, L4D2_ACT_CROUCHIDLE_SNIPER, L4D2_ACT_IDLE_CALM_SNIPER, L4D2_ACT_IDLE_INJURED_SNIPER, L4D2_ACT_WALK_SNIPER, L4D2_ACT_RUN_CROUCH_SNIPER, L4D2_ACT_RUN_SNIPER, L4D2_ACT_WALK_CALM_SNIPER, L4D2_ACT_RUN_CALM_SNIPER, L4D2_ACT_WALK_INJURED_SNIPER, L4D2_ACT_RUN_INJURED_SNIPER, L4D2_ACT_IDLE_SNIPER_ZOOMED, L4D2_ACT_CROUCHIDLE_SNIPER_ZOOMED, L4D2_ACT_IDLE_INJURED_SNIPER_ZOOMED, L4D2_ACT_IDLE_SNIPER_MILITARY, L4D2_ACT_IDLE_SNIPER_MILITARYZOOMED, L4D2_ACT_CROUCHIDLE_SNIPER_MILITARY, L4D2_ACT_CROUCHIDLE_SNIPER_MILITARYZOOMED, L4D2_ACT_IDLE_CALM_SNIPER_MILITARY, L4D2_ACT_IDLE_INJURED_SNIPER_MILITARY, L4D2_ACT_IDLE_INJURED_SNIPER_MILITARYZOOMED, L4D2_ACT_RUN_CROUCH_SNIPER_MILITARY, L4D2_ACT_WALK_SNIPER_MILITARY, L4D2_ACT_RUN_SNIPER_MILITARY, L4D2_ACT_WALK_CALM_SNIPER_MILITARY, L4D2_ACT_RUN_CALM_SNIPER_MILITARY, L4D2_ACT_WALK_INJURED_SNIPER_MILITARY, L4D2_ACT_RUN_INJURED_SNIPER_MILITARY, L4D2_ACT_IDLE_SMG, L4D2_ACT_WALK_SMG, L4D2_ACT_RUN_SMG, L4D2_ACT_CROUCHIDLE_SMG, L4D2_ACT_RUN_CROUCH_SMG, L4D2_ACT_IDLE_INJURED_SMG, L4D2_ACT_WALK_INJURED_SMG, L4D2_ACT_RUN_INJURED_SMG, L4D2_ACT_IDLE_CALM_SMG, L4D2_ACT_WALK_CALM_SMG, L4D2_ACT_RUN_CALM_SMG, L4D2_ACT_PRIMARYATTACK_SMG, L4D2_ACT_RELOAD_SMG, L4D2_ACT_IDLE_FIRSTAIDKIT, L4D2_ACT_CROUCHIDLE_FIRSTAIDKIT, L4D2_ACT_IDLE_INJURED_FIRSTAIDKIT, L4D2_ACT_RUN_FIRSTAIDKIT, L4D2_ACT_WALK_FIRSTAIDKIT, L4D2_ACT_RUN_CROUCH_FIRSTAIDKIT, L4D2_ACT_WALK_INJURED_FIRSTAIDKIT, L4D2_ACT_RUN_INJURED_FIRSTAIDKIT, L4D2_ACT_MELEE_SWEEP_FIRSTAIDKIT, L4D2_ACT_MELEE_SWEEP_COLA, L4D2_ACT_MELEE_SWEEP_DEFIBRILLATOR, L4D2_ACT_MELEE_SWEEP_UPGRADE_PACK, L4D2_ACT_CROUCHIDLE_PISTOL, L4D2_ACT_RUN_CROUCH_PISTOL, L4D2_ACT_IDLE_INJURED_PISTOL, L4D2_ACT_WALK_INJURED_PISTOL, L4D2_ACT_RUN_INJURED_PISTOL, L4D2_ACT_DEPLOY_PISTOL, L4D2_ACT_PRIMARYATTACK_PISTOL, L4D2_ACT_IDLE_CALM_PISTOL, L4D2_ACT_WALK_CALM_PISTOL, L4D2_ACT_RUN_CALM_PISTOL, L4D2_ACT_IDLE_ELITES, L4D2_ACT_WALK_ELITES, L4D2_ACT_RUN_ELITES, L4D2_ACT_CROUCHIDLE_ELITES, L4D2_ACT_RUN_CROUCH_ELITES, L4D2_ACT_IDLE_INJURED_ELITES, L4D2_ACT_WALK_INJURED_ELITES, L4D2_ACT_RUN_INJURED_ELITES, L4D2_ACT_DEPLOY_ELITES, L4D2_ACT_PRIMARYATTACK_ELITES_R, L4D2_ACT_PRIMARYATTACK_ELITES_L, L4D2_ACT_IDLE_CALM_ELITES, L4D2_ACT_WALK_CALM_ELITES, L4D2_ACT_RUN_CALM_ELITES, L4D2_ACT_RELOAD_ELITES, L4D2_ACT_RELOAD_M4, L4D2_ACT_PRIMARYATTACK_XM1014, L4D2_ACT_PRIMARYATTACK_M3S90, L4D2_ACT_IDLE_GASCAN, L4D2_ACT_CROUCHIDLE_GASCAN, L4D2_ACT_IDLE_CALM_GASCAN, L4D2_ACT_IDLE_INJURED_GASCAN, L4D2_ACT_RUN_GASCAN, L4D2_ACT_WALK_GASCAN, L4D2_ACT_RUN_CROUCH_GASCAN, L4D2_ACT_RUN_INJURED_GASCAN, L4D2_ACT_JUMP_GASCAN, L4D2_ACT_MELEE_SWEEP_GASCAN, L4D2_ACT_IDLE_O2, L4D2_ACT_CROUCHIDLE_O2, L4D2_ACT_IDLE_CALM_O2, L4D2_ACT_IDLE_INJURED_O2, L4D2_ACT_RUN_O2, L4D2_ACT_WALK_O2, L4D2_ACT_RUN_CROUCH_O2, L4D2_ACT_RUN_INJURED_O2, L4D2_ACT_JUMP_O2, L4D2_ACT_MELEE_SWEEP_O2, L4D2_ACT_IDLE_GNOME, L4D2_ACT_CROUCHIDLE_GNOME, L4D2_ACT_IDLE_CALM_GNOME, L4D2_ACT_IDLE_INJURED_GNOME, L4D2_ACT_RUN_CROUCH_GNOME, L4D2_ACT_WALK_GNOME, L4D2_ACT_RUN_GNOME, L4D2_ACT_WALK_CALM_GNOME, L4D2_ACT_RUN_CALM_GNOME, L4D2_ACT_WALK_INJURED_GNOME, L4D2_ACT_RUN_INJURED_GNOME, L4D2_ACT_JUMP_GNOME, L4D2_ACT_MELEE_SWEEP_GNOME, L4D2_ACT_SHOOT_E2W_AXE, L4D2_ACT_SHOOT_E2W_IDLE_AXE, L4D2_ACT_SHOOT_W2E_AXE, L4D2_ACT_SHOOT_W2E_IDLE_AXE, L4D2_ACT_SHOOT_N2S_AXE, L4D2_ACT_SHOOT_N2S_IDLE_AXE, L4D2_ACT_SHOOT_S2N_AXE, L4D2_ACT_SHOOT_S2N_IDLE_AXE, L4D2_ACT_SHOOT_STRONG_AXE, L4D2_ACT_SHOOT_STRONG_IDLE_AXE, L4D2_ACT_SHOOT_SECONDARY_AXE, L4D2_ACT_SHOOT_SECONDARY_IDLE_AXE, L4D2_ACT_IDLE_AXE, L4D2_ACT_CROUCHIDLE_AXE, L4D2_ACT_IDLE_CALM_AXE, L4D2_ACT_IDLE_INJURED_AXE, L4D2_ACT_RUN_AXE, L4D2_ACT_WALK_AXE, L4D2_ACT_WALK_INJURED_AXE, L4D2_ACT_RUN_CROUCH_AXE, L4D2_ACT_RUN_INJURED_AXE, L4D2_ACT_JUMP_AXE, L4D2_ACT_SHOOT_E2W_BAT, L4D2_ACT_SHOOT_E2W_IDLE_BAT, L4D2_ACT_SHOOT_W2E_BAT, L4D2_ACT_SHOOT_W2E_IDLE_BAT, L4D2_ACT_SHOOT_N2S_BAT, L4D2_ACT_SHOOT_N2S_IDLE_BAT, L4D2_ACT_SHOOT_S2N_BAT, L4D2_ACT_SHOOT_S2N_IDLE_BAT, L4D2_ACT_SHOOT_STRONG_BAT, L4D2_ACT_SHOOT_STRONG_IDLE_BAT, L4D2_ACT_SHOOT_SECONDARY_BAT, L4D2_ACT_SHOOT_SECONDARY_IDLE_BAT, L4D2_ACT_IDLE_BAT, L4D2_ACT_CROUCHIDLE_BAT, L4D2_ACT_IDLE_CALM_BAT, L4D2_ACT_IDLE_INJURED_BAT, L4D2_ACT_RUN_BAT, L4D2_ACT_WALK_BAT, L4D2_ACT_WALK_INJURED_BAT, L4D2_ACT_RUN_CROUCH_BAT, L4D2_ACT_RUN_INJURED_BAT, L4D2_ACT_JUMP_BAT, L4D2_ACT_SHOOT_E2W_KATANA, L4D2_ACT_SHOOT_E2W_IDLE_KATANA, L4D2_ACT_SHOOT_W2E_KATANA, L4D2_ACT_SHOOT_W2E_IDLE_KATANA, L4D2_ACT_SHOOT_E2W_FRYINGPAN, L4D2_ACT_SHOOT_E2W_IDLE_FRYINGPAN, L4D2_ACT_SHOOT_W2E_FRYINGPAN, L4D2_ACT_SHOOT_W2E_IDLE_FRYINGPAN, L4D2_ACT_SHOOT_N2S_FRYINGPAN, L4D2_ACT_SHOOT_N2S_IDLE_FRYINGPAN, L4D2_ACT_SHOOT_S2N_FRYINGPAN, L4D2_ACT_SHOOT_S2N_IDLE_FRYINGPAN, L4D2_ACT_SHOOT_STRONG_FRYINGPAN, L4D2_ACT_SHOOT_STRONG_IDLE_FRYINGPAN, L4D2_ACT_SHOOT_SECONDARY_FRYINGPAN, L4D2_ACT_SHOOT_SECONDARY_IDLE_FRYINGPAN, L4D2_ACT_IDLE_FRYINGPAN, L4D2_ACT_CROUCHIDLE_FRYINGPAN, L4D2_ACT_IDLE_CALM_FRYINGPAN, L4D2_ACT_IDLE_INJURED_FRYINGPAN, L4D2_ACT_RUN_FRYINGPAN, L4D2_ACT_WALK_FRYINGPAN, L4D2_ACT_WALK_INJURED_FRYINGPAN, L4D2_ACT_RUN_CROUCH_FRYINGPAN, L4D2_ACT_RUN_INJURED_FRYINGPAN, L4D2_ACT_JUMP_FRYINGPAN, L4D2_ACT_SHOOT_E2W_GUITAR, L4D2_ACT_SHOOT_E2W_IDLE_GUITAR, L4D2_ACT_SHOOT_W2E_GUITAR, L4D2_ACT_SHOOT_W2E_IDLE_GUITAR, L4D2_ACT_SHOOT_N2S_GUITAR, L4D2_ACT_SHOOT_N2S_IDLE_GUITAR, L4D2_ACT_SHOOT_S2N_GUITAR, L4D2_ACT_SHOOT_S2N_IDLE_GUITAR, L4D2_ACT_SHOOT_STRONG_GUITAR, L4D2_ACT_SHOOT_STRONG_IDLE_GUITAR, L4D2_ACT_SHOOT_SECONDARY_GUITAR, L4D2_ACT_SHOOT_SECONDARY_IDLE_GUITAR, L4D2_ACT_IDLE_GUITAR, L4D2_ACT_CROUCHIDLE_GUITAR, L4D2_ACT_IDLE_CALM_GUITAR, L4D2_ACT_IDLE_INJURED_GUITAR, L4D2_ACT_RUN_GUITAR, L4D2_ACT_WALK_GUITAR, L4D2_ACT_WALK_INJURED_GUITAR, L4D2_ACT_RUN_CROUCH_GUITAR, L4D2_ACT_RUN_INJURED_GUITAR, L4D2_ACT_JUMP_GUITAR, L4D2_ACT_IDLE_CHAINSAW, L4D2_ACT_IDLE_ATTACK_CHAINSAW, L4D2_ACT_WALK_CHAINSAW, L4D2_ACT_RUN_CHAINSAW, L4D2_ACT_CROUCHIDLE_CHAINSAW, L4D2_ACT_IDLE_CALM_CHAINSAW, L4D2_ACT_IDLE_INJURED_CHAINSAW, L4D2_ACT_RUN_CALM_CHAINSAW, L4D2_ACT_WALK_CALM_CHAINSAW, L4D2_ACT_WALK_INJURED_CHAINSAW, L4D2_ACT_RUN_CROUCH_CHAINSAW, L4D2_ACT_RUN_INJURED_CHAINSAW, L4D2_ACT_JUMP_CHAINSAW, L4D2_ACT_MELEE_SWEEP_CHAINSAW, L4D2_ACT_PRIMARYATTACK_CHAINSAW, L4D2_ACT_DEPLOY_CHAINSAW, L4D2_ACT_TERROR_CHAINSAW_START, L4D2_ACT_SHOOT_W2E_CHAINSAW, L4D2_ACT_SHOOT_CHAINSAW, L4D2_ACT_CHAINSAW_STARTUP, L4D2_ACT_IDLE_GRENADELAUNCHER, L4D2_ACT_WALK_GRENADELAUNCHER, L4D2_ACT_RUN_GRENADELAUNCHER, L4D2_ACT_CROUCHIDLE_GRENADELAUNCHER, L4D2_ACT_IDLE_CALM_GRENADELAUNCHER, L4D2_ACT_IDLE_INJURED_GRENADELAUNCHER, L4D2_ACT_RUN_CALM_GRENADELAUNCHER, L4D2_ACT_WALK_CALM_GRENADELAUNCHER, L4D2_ACT_WALK_INJURED_GRENADELAUNCHER, L4D2_ACT_RUN_CROUCH_GRENADELAUNCHER, L4D2_ACT_RUN_INJURED_GRENADELAUNCHER, L4D2_ACT_JUMP_GRENADELAUNCHER, L4D2_ACT_MELEE_SWEEP_GRENADELAUNCHER, L4D2_ACT_PRIMARYATTACK_GRENADELAUNCHER, L4D2_ACT_DEPLOY_GRENADELAUNCHER, L4D2_ACT_VM_MELEE, L4D2_ACT_VM_SHOOT_LAYER, L4D2_ACT_VM_PRIMARYATTACK_LAYER, L4D2_ACT_VM_SECONDARYATTACK_LAYER, L4D2_ACT_VM_MELEE_LAYER, L4D2_ACT_VM_PICKUP_LAYER, L4D2_ACT_VM_PICKUP_CLIPIN, L4D2_ACT_VM_PICKUP_CLIPIN_LAYER, L4D2_ACT_VM_PICKUP_CHARGING, L4D2_ACT_VM_PICKUP_CHARGING_LAYER, L4D2_ACT_VM_PICKUP_FASSIST, L4D2_ACT_VM_PICKUP_FASSIST_LAYER, L4D2_ACT_VM_RELOAD_PUMP, L4D2_ACT_VM_RELOAD_PUMP_LAYER, L4D2_ACT_VM_RELOAD_LAYER, L4D2_ACT_VM_RELOAD_CLIPOUT, L4D2_ACT_VM_RELOAD_CLIPOUT_LAYER, L4D2_ACT_VM_RELOAD_CLIPIN, L4D2_ACT_VM_RELOAD_CLIPIN_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_CLIPOUT, L4D2_ACT_VM_RELOAD_EMPTY_CLIPOUT_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_CLIPIN, L4D2_ACT_VM_RELOAD_EMPTY_CLIPIN_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_CLIPIN2, L4D2_ACT_VM_RELOAD_EMPTY_CLIPIN2_LAYER, L4D2_ACT_VM_DEPLOY_LAYER, L4D2_ACT_VM_THROW_LAYER, L4D2_ACT_VM_PULLPIN_LAYER, L4D2_ACT_VM_IDLE_BAREHAND, L4D2_ACT_VM_DEPLOY_BAREHAND, L4D2_ACT_VM_DEPLOY_BAREHAND_LAYER, L4D2_ACT_VM_MELEE_BAREHAND, L4D2_ACT_VM_MELEE_BAREHAND_LAYER, L4D2_ACT_VM_ITEMPICKUP_EXTEND_BAREHAND, L4D2_ACT_VM_ITEMPICKUP_EXTEND_BAREHAND_LAYER, L4D2_ACT_VM_ITEMPICKUP_LOOP_BAREHAND, L4D2_ACT_VM_ITEMPICKUP_LOOP_BAREHAND_LAYER, L4D2_ACT_VM_ITEMPICKUP_RETRACT_BAREHAND, L4D2_ACT_VM_ITEMPICKUP_RETRACT_BAREHAND_LAYER, L4D2_ACT_VM_HELPINGHAND_EXTEND_BAREHAND, L4D2_ACT_VM_HELPINGHAND_EXTEND_BAREHAND_LAYER, L4D2_ACT_VM_HELPINGHAND_LOOP_BAREHAND, L4D2_ACT_VM_HELPINGHAND_LOOP_BAREHAND_LAYER, L4D2_ACT_VM_HELPINGHAND_RETRACT_BAREHAND, L4D2_ACT_VM_HELPINGHAND_RETRACT_BAREHAND_LAYER, L4D2_ACT_VM_IDLE_DUAL_PISTOL, L4D2_ACT_VM_DEPLOY_DUAL_PISTOL, L4D2_ACT_VM_DEPLOY_DUAL_PISTOL_LAYER, L4D2_ACT_VM_PRIMARYATTACK_DUAL_PISTOL, L4D2_ACT_VM_SHOOT_DUAL_PISTOL_LAYER, L4D2_ACT_VM_SECONDARYATTACK_DUAL_PISTOL, L4D2_ACT_VM_SECONDARYATTACK_DUAL_PISTOL_LAYER, L4D2_ACT_VM_RELOAD_DUAL_PISTOL, L4D2_ACT_VM_RELOAD_DUAL_PISTOL_LAYER, L4D2_ACT_VM_RELOAD_CLIPOUT_DUAL_PISTOL, L4D2_ACT_VM_RELOAD_CLIPOUT_DUAL_PISTOL_LAYER, L4D2_ACT_VM_RELOAD_CLIPIN_DUAL_PISTOL, L4D2_ACT_VM_RELOAD_CLIPIN_DUAL_PISTOL_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_DUAL_PISTOL, L4D2_ACT_VM_RELOAD_EMPTY_DUAL_PISTOL_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_CLIPOUT_DUAL_PISTOL, L4D2_ACT_VM_RELOAD_EMPTY_CLIPOUT_DUAL_PISTOL_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_CLIPIN_DUAL_PISTOL, L4D2_ACT_VM_RELOAD_EMPTY_CLIPIN_DUAL_PISTOL_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_CLIPIN2_DUAL_PISTOL, L4D2_ACT_VM_RELOAD_EMPTY_CLIPIN2_DUAL_PISTOL_LAYER, L4D2_ACT_VM_PICKUP_DUAL_PISTOL, L4D2_ACT_VM_PICKUP_DUAL_PISTOL_LAYER, L4D2_ACT_VM_PICKUP_CLIPIN_DUAL_PISTOL, L4D2_ACT_VM_PICKUP_CLIPIN_DUAL_PISTOL_LAYER, L4D2_ACT_VM_PICKUP_CHARGING_DUAL_PISTOL, L4D2_ACT_VM_PICKUP_CHARGING_DUAL_PISTOL_LAYER, L4D2_ACT_VM_MELEE_DUAL_PISTOL, L4D2_ACT_VM_MELEE_DUAL_PISTOL_LAYER, L4D2_ACT_VM_IDLE_PISTOL, L4D2_ACT_VM_DEPLOY_PISTOL, L4D2_ACT_VM_DEPLOY_PISTOL_LAYER, L4D2_ACT_VM_PRIMARYATTACK_PISTOL, L4D2_ACT_VM_SHOOT_PISTOL_LAYER, L4D2_ACT_VM_RELOAD_PISTOL, L4D2_ACT_VM_RELOAD_PISTOL_LAYER, L4D2_ACT_VM_RELOAD_CLIPOUT_PISTOL, L4D2_ACT_VM_RELOAD_CLIPOUT_PISTOL_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_PISTOL, L4D2_ACT_VM_RELOAD_EMPTY_PISTOL_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_CLIPOUT_PISTOL, L4D2_ACT_VM_RELOAD_EMPTY_CLIPOUT_PISTOL_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_CLIPIN_PISTOL, L4D2_ACT_VM_RELOAD_EMPTY_CLIPIN_PISTOL_LAYER, L4D2_ACT_VM_MELEE_PISTOL, L4D2_ACT_VM_MELEE_PISTOL_LAYER, L4D2_ACT_VM_IDLE_RIFLE, L4D2_ACT_VM_PICKUP_RIFLE, L4D2_ACT_VM_PICKUP_RIFLE_LAYER, L4D2_ACT_VM_PICKUP_CLIPIN_RIFLE, L4D2_ACT_VM_PICKUP_CLIPIN_RIFLE_LAYER, L4D2_ACT_VM_PICKUP_CHARGING_RIFLE, L4D2_ACT_VM_PICKUP_CHARGING_RIFLE_LAYER, L4D2_ACT_VM_PICKUP_FASSIST_RIFLE, L4D2_ACT_VM_PICKUP_FASSIST_RIFLE_LAYER, L4D2_ACT_VM_DEPLOY_RIFLE, L4D2_ACT_VM_DEPLOY_RIFLE_LAYER, L4D2_ACT_VM_PRIMARYATTACK_RIFLE, L4D2_ACT_VM_SHOOT_RIFLE_LAYER, L4D2_ACT_VM_RELOAD_RIFLE, L4D2_ACT_VM_RELOAD_RIFLE_LAYER, L4D2_ACT_VM_RELOAD_CLIPOUT_RIFLE, L4D2_ACT_VM_RELOAD_CLIPOUT_RIFLE_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_RIFLE, L4D2_ACT_VM_RELOAD_EMPTY_RIFLE_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_CLIPOUT_RIFLE, L4D2_ACT_VM_RELOAD_EMPTY_CLIPOUT_RIFLE_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_CLIPIN_RIFLE, L4D2_ACT_VM_RELOAD_EMPTY_CLIPIN_RIFLE_LAYER, L4D2_ACT_VM_MELEE_RIFLE, L4D2_ACT_VM_MELEE_RIFLE_LAYER, L4D2_ACT_VM_FIDGET_RIFLE_LAYER, L4D2_ACT_VM_IDLE_SMG, L4D2_ACT_VM_PICKUP_SMG, L4D2_ACT_VM_PICKUP_SMG_LAYER, L4D2_ACT_VM_PICKUP_CLIPIN_SMG, L4D2_ACT_VM_PICKUP_CLIPIN_SMG_LAYER, L4D2_ACT_VM_PICKUP_CHARGING_SMG, L4D2_ACT_VM_PICKUP_CHARGING_SMG_LAYER, L4D2_ACT_VM_DEPLOY_SMG, L4D2_ACT_VM_DEPLOY_SMG_LAYER, L4D2_ACT_VM_PRIMARYATTACK_SMG, L4D2_ACT_VM_SHOOT_SMG_LAYER, L4D2_ACT_VM_RELOAD_SMG, L4D2_ACT_VM_RELOAD_SMG_LAYER, L4D2_ACT_VM_RELOAD_CLIPOUT_SMG, L4D2_ACT_VM_RELOAD_CLIPOUT_SMG_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_SMG, L4D2_ACT_VM_RELOAD_EMPTY_SMG_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_CLIPOUT_SMG, L4D2_ACT_VM_RELOAD_EMPTY_CLIPOUT_SMG_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_CLIPIN_SMG, L4D2_ACT_VM_RELOAD_EMPTY_CLIPIN_SMG_LAYER, L4D2_ACT_VM_MELEE_SMG, L4D2_ACT_VM_MELEE_SMG_LAYER, L4D2_ACT_VM_FIDGET_SMG_LAYER, L4D2_ACT_VM_IDLE_SNIPER, L4D2_ACT_VM_PICKUP_SNIPER, L4D2_ACT_VM_PICKUP_SNIPER_LAYER, L4D2_ACT_VM_PICKUP_CLIPIN_SNIPER, L4D2_ACT_VM_PICKUP_CLIPIN_SNIPER_LAYER, L4D2_ACT_VM_PICKUP_CHARGING_SNIPER, L4D2_ACT_VM_PICKUP_CHARGING_SNIPER_LAYER, L4D2_ACT_VM_DEPLOY_SNIPER, L4D2_ACT_VM_DEPLOY_SNIPER_LAYER, L4D2_ACT_VM_PRIMARYATTACK_SNIPER, L4D2_ACT_VM_SHOOT_SNIPER_LAYER, L4D2_ACT_VM_RELOAD_SNIPER, L4D2_ACT_VM_RELOAD_SNIPER_LAYER, L4D2_ACT_VM_RELOAD_CLIPOUT_SNIPER, L4D2_ACT_VM_RELOAD_CLIPOUT_SNIPER_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_SNIPER, L4D2_ACT_VM_RELOAD_EMPTY_SNIPER_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_CLIPOUT_SNIPER, L4D2_ACT_VM_RELOAD_EMPTY_CLIPOUT_SNIPER_LAYER, L4D2_ACT_VM_RELOAD_EMPTY_CLIPIN_SNIPER, L4D2_ACT_VM_RELOAD_EMPTY_CLIPIN_SNIPER_LAYER, L4D2_ACT_VM_MELEE_SNIPER, L4D2_ACT_VM_MELEE_SNIPER_LAYER, L4D2_ACT_VM_FIDGET_SNIPER_LAYER, L4D2_ACT_VM_RELOAD_LOOP, L4D2_ACT_VM_RELOAD_LOOP_LAYER, L4D2_ACT_VM_RELOAD_END, L4D2_ACT_VM_RELOAD_END_LAYER, L4D2_ACT_VM_IDLE_PIPEBOMB, L4D2_ACT_VM_DEPLOY_PIPEBOMB, L4D2_ACT_VM_DEPLOY_PIPEBOMB_LAYER, L4D2_ACT_VM_PULLPIN_PIPEBOMB, L4D2_ACT_VM_PULLPIN_PIPEBOMB_LAYER, L4D2_ACT_VM_THROW_PIPEBOMB, L4D2_ACT_VM_THROW_PIPEBOMB_LAYER, L4D2_ACT_VM_MELEE_PIPEBOMB, L4D2_ACT_VM_MELEE_PIPEBOMB_LAYER, L4D2_ACT_VM_IDLE_MOLOTOV, L4D2_ACT_VM_DEPLOY_MOLOTOV, L4D2_ACT_VM_DEPLOY_MOLOTOV_LAYER, L4D2_ACT_VM_PULLPIN_MOLOTOV, L4D2_ACT_VM_PULLPIN_MOLOTOV_LAYER, L4D2_ACT_VM_THROW_MOLOTOV, L4D2_ACT_VM_THROW_MOLOTOV_LAYER, L4D2_ACT_VM_MELEE_MOLOTOV, L4D2_ACT_VM_MELEE_MOLOTOV_LAYER, L4D2_ACT_VM_IDLE_PAINPILLS, L4D2_ACT_VM_DEPLOY_PAINPILLS, L4D2_ACT_VM_DEPLOY_PAINPILLS_LAYER, L4D2_ACT_VM_MELEE_PAINPILLS, L4D2_ACT_VM_MELEE_PAINPILLS_LAYER, L4D2_ACT_VM_USE_PAINPILLS, L4D2_ACT_VM_USE_PAINPILLS_LAYER, L4D2_ACT_VM_IDLE_MEDKIT, L4D2_ACT_VM_DEPLOY_MEDKIT, L4D2_ACT_VM_DEPLOY_MEDKIT_LAYER, L4D2_ACT_VM_MELEE_MEDKIT, L4D2_ACT_VM_MELEE_MEDKIT_LAYER, L4D2_ACT_VM_IDLE_GASCAN, L4D2_ACT_VM_DEPLOY_GASCAN, L4D2_ACT_VM_PULLPIN_GASCAN, L4D2_ACT_VM_THROW_GASCAN, L4D2_ACT_VM_MELEE_GASCAN, L4D2_ACT_GEST_OVERHERE, L4D2_ACT_GEST_POINTLEFT, L4D2_ACT_GEST_POINTLEFT_QUICK, L4D2_ACT_GEST_HEAD_TWISTLEFT, L4D2_ACT_GEST_HEAD_DOWN, L4D2_ACT_GEST_GOGOGO, L4D2_ACT_GEST_WAVE, L4D2_ACT_GEST_COUGH, L4D2_ACT_GEST_COUGH01, L4D2_ACT_GEST_COUGH02, L4D2_ACT_GEST_COUGH03, L4D2_ACT_GEST_COUGH1, L4D2_ACT_GEST_COUGH2, L4D2_ACT_GEST_COUGH3, L4D2_ACT_GEST_VOMIT, L4D2_ACT_GEST_VOMIT01, L4D2_ACT_GEST_INTRO_CALM, L4D2_ACT_GEST_INTRO_WAVE, L4D2_ACT_DLCINTRO_01, L4D2_ACT_DLCINTRO_02, L4D2_ACT_DLCINTRO_03, L4D2_ACT_DLCINTRO_04, L4D2_ACT_DLCFI_FRANCIS_HLD, L4D2_ACT_DLCFI_FRANCIS_017MB, L4D2_ACT_DLCFI_FRANCIS_018MB, L4D2_ACT_DLCFI_FRANCIS_01, L4D2_ACT_DLCFI_FRANCIS_02, L4D2_ACT_DLCFI_FRANCIS_03, L4D2_ACT_DLCFI_FRANCIS_04, L4D2_ACT_DLCFI_FRANCIS_05, L4D2_ACT_DLCFI_FRANCIS_06, L4D2_ACT_DLCFI_FRANCIS_07, L4D2_ACT_DLCFI_FRANCIS_08, L4D2_ACT_DLCFI_FRANCIS_08b, L4D2_ACT_DLCFI_FRANCIS_09, L4D2_ACT_DLCFI_FRANCIS_09b, L4D2_ACT_DLCFI_FRANCIS_10, L4D2_ACT_DLCFI_FRANCIS_10b, L4D2_ACT_DLCFI_FRANCIS_11, L4D2_ACT_DLCFI_FRANCIS_11b, L4D2_ACT_DLCFI_FRANCIS_12AH, L4D2_ACT_DLCFI_FRANCIS_12mr, L4D2_ACT_DLCFI_FRANCIS_13mr, L4D2_ACT_DLCFI_FRANCIS_13AH, L4D2_ACT_DLCFI_FRANCIS_14AH, L4D2_ACT_DLCFI_FRANCIS_15AH, L4D2_ACT_DLCFI_FRANCIS_16AH, L4D2_ACT_DLCFI_FRANCIS_17AH, L4D2_ACT_DLCFI_FRANCIS_18AH, L4D2_ACT_DLCFI_FRANCIS_19AH, L4D2_ACT_DLCFI_FRANCIS_20AH, L4D2_ACT_DLCFI_FRANCIS_21AH, L4D2_ACT_DLCFI_FRANCIS_14mr, L4D2_ACT_DLCFI_FRANCIS_15mr, L4D2_ACT_DLCFI_FRANCIS_16mr, L4D2_ACT_DLCFI_FRANCIS_17mr, L4D2_ACT_DLCFI_FRANCIS_014MB, L4D2_ACT_DLCFI_FRANCIS_014MBX, L4D2_ACT_DLCFI_FRANCIS_13nm, L4D2_ACT_DLCFI_LOUIS_01, L4D2_ACT_DLCFI_LOUIS_02, L4D2_ACT_DLCFI_LOUIS_03, L4D2_ACT_DLCFI_LOUIS_04, L4D2_ACT_DLCFI_LOUIS_05, L4D2_ACT_DLCFI_LOUIS_06, L4D2_ACT_DLCFI_LOUIS_07MB, L4D2_ACT_DLCFI_LOUIS_08MB, L4D2_ACT_DLCFI_LOUIS_09MB, L4D2_ACT_DLCFI_LOUIS_10MB, L4D2_ACT_DLCFI_LOUIS_11, L4D2_ACT_DLCFI_LOUIS_11MB, L4D2_ACT_DLCFI_LOUIS_11AH, L4D2_ACT_DLCFI_LOUIS_12, L4D2_ACT_DLCFI_LOUIS_012MB, L4D2_ACT_DLCFI_LOUIS_012MR, L4D2_ACT_DLCFI_LOUIS_13, L4D2_ACT_DLCFI_LOUIS_013MB, L4D2_ACT_DLCFI_LOUIS_013MR, L4D2_ACT_DLCFI_LOUIS_14, L4D2_ACT_DLCFI_LOUIS_014MB, L4D2_ACT_DLCFI_LOUIS_14MR, L4D2_ACT_DLCFI_LOUIS_15, L4D2_ACT_DLCFI_LOUIS_015MB, L4D2_ACT_DLCFI_LOUIS_016MB, L4D2_ACT_DLCFI_LOUIS_16JM, L4D2_ACT_DLCFI_LOUIS_16AJM, L4D2_ACT_DLCFI_LOUIS_017MB, L4D2_ACT_DLCFI_ZOEY_01, L4D2_ACT_DLCFI_ZOEY_02, L4D2_ACT_DLCFI_ZOEY_03, L4D2_ACT_DLCFI_ZOEY_04, L4D2_ACT_DLCFI_ZOEY_05, L4D2_ACT_DLCFI_ZOEY_06, L4D2_ACT_DLCFI_ZOEY_07MB, L4D2_ACT_DLCFI_ZOEY_08MB, L4D2_ACT_DLCFI_ZOEY_09MB, L4D2_ACT_DLCFI_ZOEY_10MB, L4D2_ACT_DLCFI_ZOEY_11MB, L4D2_ACT_DLCFI_ZOEY_06AH, L4D2_ACT_DLCFI_ZOEY_07AH, L4D2_ACT_DLCFI_ZOEY_07mr, L4D2_ACT_DLCFI_ZOEY_12MB, L4D2_ACT_DLCFI_ZOEY_08mr, L4D2_ACT_DLCFI_ZOEY_10MR, L4D2_ACT_DLCINTRO_ZOEY_01, L4D2_ACT_DLCINTRO_ZOEY_02, L4D2_ACT_DLCINTRO_ZOEY_03, L4D2_ACT_DLCINTRO_ZOEY_04, L4D2_ACT_DLCINTRO_ZOEY_05, L4D2_ACT_DLCINTRO_ZOEY_06, L4D2_ACT_VM_FIZZLE, L4D2_ACT_MP_STAND_IDLE, L4D2_ACT_MP_CROUCH_IDLE, L4D2_ACT_MP_CROUCH_DEPLOYED_IDLE, L4D2_ACT_MP_CROUCH_DEPLOYED, L4D2_ACT_MP_DEPLOYED_IDLE, L4D2_ACT_MP_RUN, L4D2_ACT_MP_WALK, L4D2_ACT_MP_AIRWALK, L4D2_ACT_MP_CROUCHWALK, L4D2_ACT_MP_SPRINT, L4D2_ACT_MP_JUMP, L4D2_ACT_MP_JUMP_START, L4D2_ACT_MP_JUMP_FLOAT, L4D2_ACT_MP_JUMP_LAND, L4D2_ACT_MP_DOUBLEJUMP, L4D2_ACT_MP_SWIM, L4D2_ACT_MP_DEPLOYED, L4D2_ACT_MP_SWIM_DEPLOYED, L4D2_ACT_MP_VCD, L4D2_ACT_MP_ATTACK_STAND_PRIMARYFIRE, L4D2_ACT_MP_ATTACK_STAND_PRIMARYFIRE_DEPLOYED, L4D2_ACT_MP_ATTACK_STAND_SECONDARYFIRE, L4D2_ACT_MP_ATTACK_STAND_GRENADE, L4D2_ACT_MP_ATTACK_CROUCH_PRIMARYFIRE, L4D2_ACT_MP_ATTACK_CROUCH_PRIMARYFIRE_DEPLOYED, L4D2_ACT_MP_ATTACK_CROUCH_SECONDARYFIRE, L4D2_ACT_MP_ATTACK_CROUCH_GRENADE, L4D2_ACT_MP_ATTACK_SWIM_PRIMARYFIRE, L4D2_ACT_MP_ATTACK_SWIM_SECONDARYFIRE, L4D2_ACT_MP_ATTACK_SWIM_GRENADE, L4D2_ACT_MP_ATTACK_AIRWALK_PRIMARYFIRE, L4D2_ACT_MP_ATTACK_AIRWALK_SECONDARYFIRE, L4D2_ACT_MP_ATTACK_AIRWALK_GRENADE, L4D2_ACT_MP_RELOAD_STAND, L4D2_ACT_MP_RELOAD_STAND_LOOP, L4D2_ACT_MP_RELOAD_STAND_END, L4D2_ACT_MP_RELOAD_CROUCH, L4D2_ACT_MP_RELOAD_CROUCH_LOOP, L4D2_ACT_MP_RELOAD_CROUCH_END, L4D2_ACT_MP_RELOAD_SWIM, L4D2_ACT_MP_RELOAD_SWIM_LOOP, L4D2_ACT_MP_RELOAD_SWIM_END, L4D2_ACT_MP_RELOAD_AIRWALK, L4D2_ACT_MP_RELOAD_AIRWALK_LOOP, L4D2_ACT_MP_RELOAD_AIRWALK_END, L4D2_ACT_MP_ATTACK_STAND_PREFIRE, L4D2_ACT_MP_ATTACK_STAND_POSTFIRE, L4D2_ACT_MP_ATTACK_STAND_STARTFIRE, L4D2_ACT_MP_ATTACK_CROUCH_PREFIRE, L4D2_ACT_MP_ATTACK_CROUCH_POSTFIRE, L4D2_ACT_MP_ATTACK_SWIM_PREFIRE, L4D2_ACT_MP_ATTACK_SWIM_POSTFIRE, L4D2_ACT_MP_STAND_PRIMARY, L4D2_ACT_MP_CROUCH_PRIMARY, L4D2_ACT_MP_RUN_PRIMARY, L4D2_ACT_MP_WALK_PRIMARY, L4D2_ACT_MP_AIRWALK_PRIMARY, L4D2_ACT_MP_CROUCHWALK_PRIMARY, L4D2_ACT_MP_JUMP_PRIMARY, L4D2_ACT_MP_JUMP_START_PRIMARY, L4D2_ACT_MP_JUMP_FLOAT_PRIMARY, L4D2_ACT_MP_JUMP_LAND_PRIMARY, L4D2_ACT_MP_SWIM_PRIMARY, L4D2_ACT_MP_DEPLOYED_PRIMARY, L4D2_ACT_MP_SWIM_DEPLOYED_PRIMARY, L4D2_ACT_MP_ATTACK_STAND_PRIMARY, L4D2_ACT_MP_ATTACK_STAND_PRIMARY_DEPLOYED, L4D2_ACT_MP_ATTACK_CROUCH_PRIMARY, L4D2_ACT_MP_ATTACK_CROUCH_PRIMARY_DEPLOYED, L4D2_ACT_MP_ATTACK_SWIM_PRIMARY, L4D2_ACT_MP_ATTACK_AIRWALK_PRIMARY, L4D2_ACT_MP_RELOAD_STAND_PRIMARY, L4D2_ACT_MP_RELOAD_STAND_PRIMARY_LOOP, L4D2_ACT_MP_RELOAD_STAND_PRIMARY_END, L4D2_ACT_MP_RELOAD_CROUCH_PRIMARY, L4D2_ACT_MP_RELOAD_CROUCH_PRIMARY_LOOP, L4D2_ACT_MP_RELOAD_CROUCH_PRIMARY_END, L4D2_ACT_MP_RELOAD_SWIM_PRIMARY, L4D2_ACT_MP_RELOAD_SWIM_PRIMARY_LOOP, L4D2_ACT_MP_RELOAD_SWIM_PRIMARY_END, L4D2_ACT_MP_RELOAD_AIRWALK_PRIMARY, L4D2_ACT_MP_RELOAD_AIRWALK_PRIMARY_LOOP, L4D2_ACT_MP_RELOAD_AIRWALK_PRIMARY_END, L4D2_ACT_MP_ATTACK_STAND_GRENADE_PRIMARY, L4D2_ACT_MP_ATTACK_CROUCH_GRENADE_PRIMARY, L4D2_ACT_MP_ATTACK_SWIM_GRENADE_PRIMARY, L4D2_ACT_MP_ATTACK_AIRWALK_GRENADE_PRIMARY, L4D2_ACT_MP_STAND_SECONDARY, L4D2_ACT_MP_CROUCH_SECONDARY, L4D2_ACT_MP_RUN_SECONDARY, L4D2_ACT_MP_WALK_SECONDARY, L4D2_ACT_MP_AIRWALK_SECONDARY, L4D2_ACT_MP_CROUCHWALK_SECONDARY, L4D2_ACT_MP_JUMP_SECONDARY, L4D2_ACT_MP_JUMP_START_SECONDARY, L4D2_ACT_MP_JUMP_FLOAT_SECONDARY, L4D2_ACT_MP_JUMP_LAND_SECONDARY, L4D2_ACT_MP_SWIM_SECONDARY, L4D2_ACT_MP_ATTACK_STAND_SECONDARY, L4D2_ACT_MP_ATTACK_CROUCH_SECONDARY, L4D2_ACT_MP_ATTACK_SWIM_SECONDARY, L4D2_ACT_MP_ATTACK_AIRWALK_SECONDARY, L4D2_ACT_MP_RELOAD_STAND_SECONDARY, L4D2_ACT_MP_RELOAD_STAND_SECONDARY_LOOP, L4D2_ACT_MP_RELOAD_STAND_SECONDARY_END, L4D2_ACT_MP_RELOAD_CROUCH_SECONDARY, L4D2_ACT_MP_RELOAD_CROUCH_SECONDARY_LOOP, L4D2_ACT_MP_RELOAD_CROUCH_SECONDARY_END, L4D2_ACT_MP_RELOAD_SWIM_SECONDARY, L4D2_ACT_MP_RELOAD_SWIM_SECONDARY_LOOP, L4D2_ACT_MP_RELOAD_SWIM_SECONDARY_END, L4D2_ACT_MP_RELOAD_AIRWALK_SECONDARY, L4D2_ACT_MP_RELOAD_AIRWALK_SECONDARY_LOOP, L4D2_ACT_MP_RELOAD_AIRWALK_SECONDARY_END, L4D2_ACT_MP_ATTACK_STAND_GRENADE_SECONDARY, L4D2_ACT_MP_ATTACK_CROUCH_GRENADE_SECONDARY, L4D2_ACT_MP_ATTACK_SWIM_GRENADE_SECONDARY, L4D2_ACT_MP_ATTACK_AIRWALK_GRENADE_SECONDARY, L4D2_ACT_MP_STAND_MELEE, L4D2_ACT_MP_CROUCH_MELEE, L4D2_ACT_MP_RUN_MELEE, L4D2_ACT_MP_WALK_MELEE, L4D2_ACT_MP_AIRWALK_MELEE, L4D2_ACT_MP_CROUCHWALK_MELEE, L4D2_ACT_MP_JUMP_MELEE, L4D2_ACT_MP_JUMP_START_MELEE, L4D2_ACT_MP_JUMP_FLOAT_MELEE, L4D2_ACT_MP_JUMP_LAND_MELEE, L4D2_ACT_MP_SWIM_MELEE, L4D2_ACT_MP_ATTACK_STAND_MELEE, L4D2_ACT_MP_ATTACK_STAND_MELEE_SECONDARY, L4D2_ACT_MP_ATTACK_CROUCH_MELEE, L4D2_ACT_MP_ATTACK_CROUCH_MELEE_SECONDARY, L4D2_ACT_MP_ATTACK_SWIM_MELEE, L4D2_ACT_MP_ATTACK_AIRWALK_MELEE, L4D2_ACT_MP_ATTACK_STAND_GRENADE_MELEE, L4D2_ACT_MP_ATTACK_CROUCH_GRENADE_MELEE, L4D2_ACT_MP_ATTACK_SWIM_GRENADE_MELEE, L4D2_ACT_MP_ATTACK_AIRWALK_GRENADE_MELEE, L4D2_ACT_MP_STAND_ITEM1, L4D2_ACT_MP_CROUCH_ITEM1, L4D2_ACT_MP_RUN_ITEM1, L4D2_ACT_MP_WALK_ITEM1, L4D2_ACT_MP_AIRWALK_ITEM1, L4D2_ACT_MP_CROUCHWALK_ITEM1, L4D2_ACT_MP_JUMP_ITEM1, L4D2_ACT_MP_JUMP_START_ITEM1, L4D2_ACT_MP_JUMP_FLOAT_ITEM1, L4D2_ACT_MP_JUMP_LAND_ITEM1, L4D2_ACT_MP_SWIM_ITEM1, L4D2_ACT_MP_ATTACK_STAND_ITEM1, L4D2_ACT_MP_ATTACK_STAND_ITEM1_SECONDARY, L4D2_ACT_MP_ATTACK_CROUCH_ITEM1, L4D2_ACT_MP_ATTACK_CROUCH_ITEM1_SECONDARY, L4D2_ACT_MP_ATTACK_SWIM_ITEM1, L4D2_ACT_MP_ATTACK_AIRWALK_ITEM1, L4D2_ACT_MP_STAND_ITEM2, L4D2_ACT_MP_CROUCH_ITEM2, L4D2_ACT_MP_RUN_ITEM2, L4D2_ACT_MP_WALK_ITEM2, L4D2_ACT_MP_AIRWALK_ITEM2, L4D2_ACT_MP_CROUCHWALK_ITEM2, L4D2_ACT_MP_JUMP_ITEM2, L4D2_ACT_MP_JUMP_START_ITEM2, L4D2_ACT_MP_JUMP_FLOAT_ITEM2, L4D2_ACT_MP_JUMP_LAND_ITEM2, L4D2_ACT_MP_SWIM_ITEM2, L4D2_ACT_MP_ATTACK_STAND_ITEM2, L4D2_ACT_MP_ATTACK_STAND_ITEM2_SECONDARY, L4D2_ACT_MP_ATTACK_CROUCH_ITEM2, L4D2_ACT_MP_ATTACK_CROUCH_ITEM2_SECONDARY, L4D2_ACT_MP_ATTACK_SWIM_ITEM2, L4D2_ACT_MP_ATTACK_AIRWALK_ITEM2, L4D2_ACT_MP_GESTURE_FLINCH, L4D2_ACT_MP_GESTURE_FLINCH_PRIMARY, L4D2_ACT_MP_GESTURE_FLINCH_SECONDARY, L4D2_ACT_MP_GESTURE_FLINCH_MELEE, L4D2_ACT_MP_GESTURE_FLINCH_ITEM1, L4D2_ACT_MP_GESTURE_FLINCH_ITEM2, L4D2_ACT_MP_GESTURE_FLINCH_HEAD, L4D2_ACT_MP_GESTURE_FLINCH_CHEST, L4D2_ACT_MP_GESTURE_FLINCH_STOMACH, L4D2_ACT_MP_GESTURE_FLINCH_LEFTARM, L4D2_ACT_MP_GESTURE_FLINCH_RIGHTARM, L4D2_ACT_MP_GESTURE_FLINCH_LEFTLEG, L4D2_ACT_MP_GESTURE_FLINCH_RIGHTLEG, L4D2_ACT_MP_GRENADE1_DRAW, L4D2_ACT_MP_GRENADE1_IDLE, L4D2_ACT_MP_GRENADE1_ATTACK, L4D2_ACT_MP_GRENADE2_DRAW, L4D2_ACT_MP_GRENADE2_IDLE, L4D2_ACT_MP_GRENADE2_ATTACK, L4D2_ACT_MP_PRIMARY_GRENADE1_DRAW, L4D2_ACT_MP_PRIMARY_GRENADE1_IDLE, L4D2_ACT_MP_PRIMARY_GRENADE1_ATTACK, L4D2_ACT_MP_PRIMARY_GRENADE2_DRAW, L4D2_ACT_MP_PRIMARY_GRENADE2_IDLE, L4D2_ACT_MP_PRIMARY_GRENADE2_ATTACK, L4D2_ACT_MP_SECONDARY_GRENADE1_DRAW, L4D2_ACT_MP_SECONDARY_GRENADE1_IDLE, L4D2_ACT_MP_SECONDARY_GRENADE1_ATTACK, L4D2_ACT_MP_SECONDARY_GRENADE2_DRAW, L4D2_ACT_MP_SECONDARY_GRENADE2_IDLE, L4D2_ACT_MP_SECONDARY_GRENADE2_ATTACK, L4D2_ACT_MP_MELEE_GRENADE1_DRAW, L4D2_ACT_MP_MELEE_GRENADE1_IDLE, L4D2_ACT_MP_MELEE_GRENADE1_ATTACK, L4D2_ACT_MP_MELEE_GRENADE2_DRAW, L4D2_ACT_MP_MELEE_GRENADE2_IDLE, L4D2_ACT_MP_MELEE_GRENADE2_ATTACK, L4D2_ACT_MP_ITEM1_GRENADE1_DRAW, L4D2_ACT_MP_ITEM1_GRENADE1_IDLE, L4D2_ACT_MP_ITEM1_GRENADE1_ATTACK, L4D2_ACT_MP_ITEM1_GRENADE2_DRAW, L4D2_ACT_MP_ITEM1_GRENADE2_IDLE, L4D2_ACT_MP_ITEM1_GRENADE2_ATTACK, L4D2_ACT_MP_ITEM2_GRENADE1_DRAW, L4D2_ACT_MP_ITEM2_GRENADE1_IDLE, L4D2_ACT_MP_ITEM2_GRENADE1_ATTACK, L4D2_ACT_MP_ITEM2_GRENADE2_DRAW, L4D2_ACT_MP_ITEM2_GRENADE2_IDLE, L4D2_ACT_MP_ITEM2_GRENADE2_ATTACK, L4D2_ACT_MP_STAND_BUILDING, L4D2_ACT_MP_CROUCH_BUILDING, L4D2_ACT_MP_RUN_BUILDING, L4D2_ACT_MP_WALK_BUILDING, L4D2_ACT_MP_AIRWALK_BUILDING, L4D2_ACT_MP_CROUCHWALK_BUILDING, L4D2_ACT_MP_JUMP_BUILDING, L4D2_ACT_MP_JUMP_START_BUILDING, L4D2_ACT_MP_JUMP_FLOAT_BUILDING, L4D2_ACT_MP_JUMP_LAND_BUILDING, L4D2_ACT_MP_SWIM_BUILDING, L4D2_ACT_MP_ATTACK_STAND_BUILDING, L4D2_ACT_MP_ATTACK_CROUCH_BUILDING, L4D2_ACT_MP_ATTACK_SWIM_BUILDING, L4D2_ACT_MP_ATTACK_AIRWALK_BUILDING, L4D2_ACT_MP_ATTACK_STAND_GRENADE_BUILDING, L4D2_ACT_MP_ATTACK_CROUCH_GRENADE_BUILDING, L4D2_ACT_MP_ATTACK_SWIM_GRENADE_BUILDING, L4D2_ACT_MP_ATTACK_AIRWALK_GRENADE_BUILDING, L4D2_ACT_MP_STAND_PDA, L4D2_ACT_MP_CROUCH_PDA, L4D2_ACT_MP_RUN_PDA, L4D2_ACT_MP_WALK_PDA, L4D2_ACT_MP_AIRWALK_PDA, L4D2_ACT_MP_CROUCHWALK_PDA, L4D2_ACT_MP_JUMP_PDA, L4D2_ACT_MP_JUMP_START_PDA, L4D2_ACT_MP_JUMP_FLOAT_PDA, L4D2_ACT_MP_JUMP_LAND_PDA, L4D2_ACT_MP_SWIM_PDA, L4D2_ACT_MP_ATTACK_STAND_PDA, L4D2_ACT_MP_ATTACK_SWIM_PDA, L4D2_ACT_MP_GESTURE_VC_HANDMOUTH, L4D2_ACT_MP_GESTURE_VC_FINGERPOINT, L4D2_ACT_MP_GESTURE_VC_FISTPUMP, L4D2_ACT_MP_GESTURE_VC_THUMBSUP, L4D2_ACT_MP_GESTURE_VC_NODYES, L4D2_ACT_MP_GESTURE_VC_NODNO, L4D2_ACT_MP_GESTURE_VC_HANDMOUTH_PRIMARY, L4D2_ACT_MP_GESTURE_VC_FINGERPOINT_PRIMARY, L4D2_ACT_MP_GESTURE_VC_FISTPUMP_PRIMARY, L4D2_ACT_MP_GESTURE_VC_THUMBSUP_PRIMARY, L4D2_ACT_MP_GESTURE_VC_NODYES_PRIMARY, L4D2_ACT_MP_GESTURE_VC_NODNO_PRIMARY, L4D2_ACT_MP_GESTURE_VC_HANDMOUTH_SECONDARY, L4D2_ACT_MP_GESTURE_VC_FINGERPOINT_SECONDARY, L4D2_ACT_MP_GESTURE_VC_FISTPUMP_SECONDARY, L4D2_ACT_MP_GESTURE_VC_THUMBSUP_SECONDARY, L4D2_ACT_MP_GESTURE_VC_NODYES_SECONDARY, L4D2_ACT_MP_GESTURE_VC_NODNO_SECONDARY, L4D2_ACT_MP_GESTURE_VC_HANDMOUTH_MELEE, L4D2_ACT_MP_GESTURE_VC_FINGERPOINT_MELEE, L4D2_ACT_MP_GESTURE_VC_FISTPUMP_MELEE, L4D2_ACT_MP_GESTURE_VC_THUMBSUP_MELEE, L4D2_ACT_MP_GESTURE_VC_NODYES_MELEE, L4D2_ACT_MP_GESTURE_VC_NODNO_MELEE, L4D2_ACT_MP_GESTURE_VC_HANDMOUTH_ITEM1, L4D2_ACT_MP_GESTURE_VC_FINGERPOINT_ITEM1, L4D2_ACT_MP_GESTURE_VC_FISTPUMP_ITEM1, L4D2_ACT_MP_GESTURE_VC_THUMBSUP_ITEM1, L4D2_ACT_MP_GESTURE_VC_NODYES_ITEM1, L4D2_ACT_MP_GESTURE_VC_NODNO_ITEM1, L4D2_ACT_MP_GESTURE_VC_HANDMOUTH_ITEM2, L4D2_ACT_MP_GESTURE_VC_FINGERPOINT_ITEM2, L4D2_ACT_MP_GESTURE_VC_FISTPUMP_ITEM2, L4D2_ACT_MP_GESTURE_VC_THUMBSUP_ITEM2, L4D2_ACT_MP_GESTURE_VC_NODYES_ITEM2, L4D2_ACT_MP_GESTURE_VC_NODNO_ITEM2, L4D2_ACT_MP_GESTURE_VC_HANDMOUTH_BUILDING, L4D2_ACT_MP_GESTURE_VC_FINGERPOINT_BUILDING, L4D2_ACT_MP_GESTURE_VC_FISTPUMP_BUILDING, L4D2_ACT_MP_GESTURE_VC_THUMBSUP_BUILDING, L4D2_ACT_MP_GESTURE_VC_NODYES_BUILDING, L4D2_ACT_MP_GESTURE_VC_NODNO_BUILDING, L4D2_ACT_MP_GESTURE_VC_HANDMOUTH_PDA, L4D2_ACT_MP_GESTURE_VC_FINGERPOINT_PDA, L4D2_ACT_MP_GESTURE_VC_FISTPUMP_PDA, L4D2_ACT_MP_GESTURE_VC_THUMBSUP_PDA, L4D2_ACT_MP_GESTURE_VC_NODYES_PDA, L4D2_ACT_MP_GESTURE_VC_NODNO_PDA, L4D2_ACT_VM_UNUSABLE, L4D2_ACT_VM_UNUSABLE_TO_USABLE, L4D2_ACT_VM_USABLE_TO_UNUSABLE, L4D2_ACT_PRIMARY_VM_DRAW, L4D2_ACT_PRIMARY_VM_HOLSTER, L4D2_ACT_PRIMARY_VM_IDLE, L4D2_ACT_PRIMARY_VM_PULLBACK, L4D2_ACT_PRIMARY_VM_PRIMARYATTACK, L4D2_ACT_PRIMARY_VM_SECONDARYATTACK, L4D2_ACT_PRIMARY_VM_RELOAD, L4D2_ACT_PRIMARY_VM_DRYFIRE, L4D2_ACT_PRIMARY_VM_IDLE_TO_LOWERED, L4D2_ACT_PRIMARY_VM_IDLE_LOWERED, L4D2_ACT_PRIMARY_VM_LOWERED_TO_IDLE, L4D2_ACT_SECONDARY_VM_DRAW, L4D2_ACT_SECONDARY_VM_HOLSTER, L4D2_ACT_SECONDARY_VM_IDLE, L4D2_ACT_SECONDARY_VM_PULLBACK, L4D2_ACT_SECONDARY_VM_PRIMARYATTACK, L4D2_ACT_SECONDARY_VM_SECONDARYATTACK, L4D2_ACT_SECONDARY_VM_RELOAD, L4D2_ACT_SECONDARY_VM_DRYFIRE, L4D2_ACT_SECONDARY_VM_IDLE_TO_LOWERED, L4D2_ACT_SECONDARY_VM_IDLE_LOWERED, L4D2_ACT_SECONDARY_VM_LOWERED_TO_IDLE, L4D2_ACT_MELEE_VM_DRAW, L4D2_ACT_MELEE_VM_HOLSTER, L4D2_ACT_MELEE_VM_IDLE, L4D2_ACT_MELEE_VM_PULLBACK, L4D2_ACT_MELEE_VM_PRIMARYATTACK, L4D2_ACT_MELEE_VM_SECONDARYATTACK, L4D2_ACT_MELEE_VM_RELOAD, L4D2_ACT_MELEE_VM_DRYFIRE, L4D2_ACT_MELEE_VM_IDLE_TO_LOWERED, L4D2_ACT_MELEE_VM_IDLE_LOWERED, L4D2_ACT_MELEE_VM_LOWERED_TO_IDLE, L4D2_ACT_PDA_VM_DRAW, L4D2_ACT_PDA_VM_HOLSTER, L4D2_ACT_PDA_VM_IDLE, L4D2_ACT_PDA_VM_PULLBACK, L4D2_ACT_PDA_VM_PRIMARYATTACK, L4D2_ACT_PDA_VM_SECONDARYATTACK, L4D2_ACT_PDA_VM_RELOAD, L4D2_ACT_PDA_VM_DRYFIRE, L4D2_ACT_PDA_VM_IDLE_TO_LOWERED, L4D2_ACT_PDA_VM_IDLE_LOWERED, L4D2_ACT_PDA_VM_LOWERED_TO_IDLE, L4D2_ACT_ITEM1_VM_DRAW, L4D2_ACT_ITEM1_VM_HOLSTER, L4D2_ACT_ITEM1_VM_IDLE, L4D2_ACT_ITEM1_VM_PULLBACK, L4D2_ACT_ITEM1_VM_PRIMARYATTACK, L4D2_ACT_ITEM1_VM_SECONDARYATTACK, L4D2_ACT_ITEM1_VM_RELOAD, L4D2_ACT_ITEM1_VM_DRYFIRE, L4D2_ACT_ITEM1_VM_IDLE_TO_LOWERED, L4D2_ACT_ITEM1_VM_IDLE_LOWERED, L4D2_ACT_ITEM1_VM_LOWERED_TO_IDLE, L4D2_ACT_ITEM2_VM_DRAW, L4D2_ACT_ITEM2_VM_HOLSTER, L4D2_ACT_ITEM2_VM_IDLE, L4D2_ACT_ITEM2_VM_PULLBACK, L4D2_ACT_ITEM2_VM_PRIMARYATTACK, L4D2_ACT_ITEM2_VM_SECONDARYATTACK, L4D2_ACT_ITEM2_VM_RELOAD, L4D2_ACT_ITEM2_VM_DRYFIRE, L4D2_ACT_ITEM2_VM_IDLE_TO_LOWERED, L4D2_ACT_ITEM2_VM_IDLE_LOWERED, L4D2_ACT_ITEM2_VM_LOWERED_TO_IDLE } // ==================================================================================================== // ANIMATION HOOK // ==================================================================================================== typeset AnimHookCallback { /** * @brief Callback called whenever animation is invoked. * * @param client Client triggering. * @param sequence The animation "activity" (pre-hook) or "m_nSequence" (post-hook) sequence number being used. * * @return Plugin_Changed to change animation, Plugin_Continue otherwise. */ function Action(int client, int &sequence); } /** * @brief Add a client animation hook. * @remarks All hooks are removed on map change. * * @param client The client to hook * @param callback Callback function for your pre-hook (uses "ACT_*" activity numbers) or INVALID_FUNCTION to not use. * @param callbackPost Callback function for your post-hook (uses "m_nSequence" sequence numbers) or INVALID_FUNCTION to not use. * * @return True on success, false if client invalid. */ native bool AnimHookEnable(int client, AnimHookCallback callback, AnimHookCallback callbackPost = INVALID_FUNCTION); /** * @brief Remove a client animation hook. * @remarks All hooks are removed on map change. * * @param client The client to hook * @param callback Callback function for your pre-hook (uses "ACT_*" activity numbers) or INVALID_FUNCTION if not used. * @param callbackPost Callback function for your post-hook (uses "m_nSequence" sequence numbers) or INVALID_FUNCTION if not used. * * @return True on success, false if client invalid. */ native bool AnimHookDisable(int client, AnimHookCallback callback, AnimHookCallback callbackPost = INVALID_FUNCTION); /** * @brief Retrieves the activity string from it's relative activity number. * @remarks activity numbers are different from a models "m_nSequence" sequence numbers. * @remarks The ACT_* list and values are for Survivors and differ from other models. Use the "m_nSequence" sequence value in a post hook for Special Infected. * @remarks The "m_nSequence" sequence values for each model can be found using Left4Dead Authoring Tools > Model Viewer. * * @param sequence Activity number to retrieve from * @param activity Destination string to store the activity * @param maxlength Size of destination string * * @return True on success, false on failure to find. */ native bool AnimGetActivity(int sequence, char[] activity, int maxlength); /** * @brief Retrieves the animation activity number from an activity string. * * @param activity The activity string to retrieve from. * * @return Activity number or -1 on failure. */ native int AnimGetFromActivity(char[] activity); // ==================================================================================================== // FORWARDS - left4downtown.inc // ==================================================================================================== /** * @brief Called whenever ZombieManager::SpawnSpecial(ZombieClassType,Vector&,QAngle&) is invoked * @remarks Only used for bot special spawns (not players) * @remarks zombieClass: 1=Smoker, 2=Boomer, 3=Hunter, 4=Spitter, 5=Jockey, 6=Charger * * @param zombieClass Zombie class that will be spawned. * @param vecPos Vector coordinate where special will be spawned * @param vecAng QAngle where spcial will be facing * * @return Plugin_Handled to block special from spawning, * Plugin_Changed to change the zombie class type to spawn, Plugin_Continue otherwise. */ forward Action L4D_OnSpawnSpecial(int &zombieClass, const float vecPos[3], const float vecAng[3]); /** * @brief Called whenever ZombieManager::SpawnTank(Vector&,QAngle&) is invoked * @remarks Not invoked if z_spawn tank is used and it gives a ghosted/dead player tank * * @param vecPos Vector coordinate where tank is spawned * @param vecAng QAngle where tank will be facing * * @return Plugin_Handled to block tank from spawning, Plugin_Continue otherwise. */ forward Action L4D_OnSpawnTank(const float vecPos[3], const float vecAng[3]); /** * @brief Called whenever ZombieManager::SpawnWitch(Vector&,QAngle&) is invoked * @brief Called when a Witch spawns * * @param vecPos Vector coordinate where witch is spawned * @param vecAng QAngle where witch will be facing * * @return Plugin_Handled to block witch from spawning, Plugin_Continue otherwise. */ forward Action L4D_OnSpawnWitch(const float vecPos[3], const float vecAng[3]); /** * @brief Called whenever ZombieManager::SpawnWitchBride(Vector&,QAngle&) is invoked * @brief Called when a Witch Bride spawns * * @param vecPos Vector coordinate where witch is spawned * @param vecAng QAngle where witch will be facing * * @return Plugin_Handled to block witch from spawning, Plugin_Continue otherwise. */ // L4D2 only. forward Action L4D2_OnSpawnWitchBride(const float vecPos[3], const float vecAng[3]); /** * @brief Called whenever CDirector::OnMobRushStart(void) is invoked * @remarks called on random hordes, mini and finale hordes, and boomer hordes, causes Zombies to attack * Not called on "z_spawn mob", hook the console command and check arguments to catch plugin mobs * This function is used to reset the Director's natural horde timer. * * @return Plugin_Handled to block, Plugin_Continue otherwise */ forward Action L4D_OnMobRushStart(); /** * @brief Called whenever ZombieManager::SpawnITMob(int) is invoked * @remarks called on boomer hordes, increases Zombie Spawn Queue * * @param amount Amount of Zombies to add to Queue * * @return Plugin_Handled to block, Plugin_Changed to use overwritten values from plugin, Plugin_Continue otherwise */ forward Action L4D_OnSpawnITMob(int &amount); /** * @brief Called whenever ZombieManager::SpawnMob(int) is invoked * @remarks called on natural hordes & z_spawn mob, increases Zombie Spawn * Queue, triggers player OnMobSpawned (vocalizations), sets horde * direction, and plays horde music. * * @param amount Amount of Zombies to add to Queue * * @return Plugin_Handled to block, Plugin_Changed to use overwritten values from plugin, Plugin_Continue otherwise */ forward Action L4D_OnSpawnMob(int &amount); /** * @brief Called whenever CTerrorPlayer::OnEnterGhostState(CTerrorPlayer*) is invoked * @remarks This happens when a player enters ghost mode (or in finales auto-materialized) * @remarks This forward triggers before the player enters ghost state allowing it to be blocked * * @param client the client that has entered ghost mode * * @return Plugin_Handled to block, Plugin_Continue otherwise */ forward Action L4D_OnEnterGhostStatePre(int client); /** * @brief Called whenever CTerrorPlayer::OnEnterGhostState(CTerrorPlayer*) is invoked * @remarks This happens when a player enters ghost mode (or in finales auto-materialized) * * @param client the client that has entered ghost mode */ forward void L4D_OnEnterGhostState(int client); /** * @brief Called whenever IsTeamFull is invoked. * @remarks called when bots or players are joining a team * * @param team Which team is being checked. 2=Survivors. 3=Special Infected. * * @return Plugin_Handled to block changing team, Plugin_Continue otherwise. */ forward Action L4D_OnIsTeamFull(int team, bool &full); /** * @brief Called whenever CTerrorGameRules::ClearTeamScores(bool) is invoked * @remarks This resets the map score at the beginning of a map, and by checking * the campaign scores on a small timer you can see if they were reset as well. * * @param newCampaign if true then this is a new campaign, if false a new chapter. Not used for L4D1. * * @return Plugin_Handled to block scores from being cleared, Plugin_Continue otherwise. Does not block reset in L4D1. */ forward Action L4D_OnClearTeamScores(bool newCampaign); /** * @brief Called whenever CTerrorGameRules::SetCampaignScores(int,int) is invoked * @remarks The campaign scores are updated after the 2nd round is completed * * @param scoreA score of logical team A * @param scoreB score of logical team B * * @return Plugin_Handled to block campaign scores from being set, Plugin_Continue otherwise. */ forward Action L4D_OnSetCampaignScores(int &scoreA, int &scoreB); /** * @brief Called whenever CDirector::OnFirstSurvivorLeftSafeArea is invoked * @remarks A versus round is started when survivors leave the safe room, or force started * after 90 seconds regardless. * * @param client the survivor that left the safe area first * * @return Plugin_Handled to block round from being started, Plugin_Continue otherwise. */ forward Action L4D_OnFirstSurvivorLeftSafeArea(int client); /** * @brief Called whenever CTerrorPlayer::GetCrouchTopSpeed() is invoked * @remarks Constantly called to get players max Crouch speed * * @param target the client that its being called on (not changible) * @param retVal what to override the return value with * * @return Plugin_Handled to override return value, Plugin_Continue otherwise. */ forward Action L4D_OnGetCrouchTopSpeed(int target, float &retVal); /** * @brief Called whenever CTerrorPlayer::GetRunTopSpeed() is invoked * @remarks Constantly called to get players max Run speed * * @param target the client that its being called on (not changible) * @param retVal what to override the return value with * * @return Plugin_Handled to override return value, Plugin_Continue otherwise. */ forward Action L4D_OnGetRunTopSpeed(int target, float &retVal); /** * @brief Called whenever CTerrorPlayer::GetWalkTopSpeed() is invoked * @remarks Constantly called to get players max Walk speed * * @param target the client that its being called on (not changible) * @param retVal what to override the return value with * * @return Plugin_Handled to override return value, Plugin_Continue otherwise. */ forward Action L4D_OnGetWalkTopSpeed(int target, float &retVal); /** * @brief Called whenever CDirector::GetScriptValue(const char*, int) is invoked * @remarks A script value is map specific * * @param key the script's key name * @param retVal what to override the return value with * * @return Plugin_Handled to override return value, Plugin_Continue otherwise. */ // L4D2 only. forward Action L4D_OnGetScriptValueInt(const char[] key, int &retVal); /** * @brief Called whenever CDirector::GetScriptValue(const char*, float) is invoked * @remarks A script value is map specific * * @param key the script's key name * @param retVal what to override the return value with * * @return Plugin_Handled to override return value, Plugin_Continue otherwise. */ // L4D2 only. forward Action L4D_OnGetScriptValueFloat(const char[] key, float &retVal); /** * @brief Called whenever CDirector::GetScriptValue(const char*, const char*, char*, int) is invoked * @remarks A script value is map specific * * @param key the script's key name * @param defaultVal default key return, usually empty * @param retVal returned string * * @return Plugin_Handled to override return value, Plugin_Continue otherwise. */ // L4D2 only. forward Action L4D_OnGetScriptValueString(const char[] key, const char[] defaultVal, char retVal[128]); /** * @brief Called whenever CTerrorGameRules::HasConfigurableDifficultySetting() is invoked * @remarks used to deny/allow difficulty changes in different game modes * * @param retVal what to override the return value with. 1 to allow difficulty configuration, 0 to deny. * * @return Plugin_Handled to override return value, Plugin_Continue otherwise. */ // L4D2 only. forward Action L4D_OnHasConfigurableDifficulty(int &retVal); /** * @brief Called whenever CTerrorGameRules::GetSurvivorSet(void) is invoked * @remarks Constantly called to get the survivor character set * * @param retVal what to override the return value with * * @return Plugin_Handled to override return value, Plugin_Continue otherwise. */ // L4D2 only. forward Action L4D_OnGetSurvivorSet(int &retVal); /** * @brief Called whenever CTerrorGameRules::FastGetSurvivorSet(void) is invoked * @remarks Constantly called to get the survivor character set * * @param retVal what to override the return value with * * @return Plugin_Handled to override return value, Plugin_Continue otherwise. */ // L4D2 only. forward Action L4D_OnFastGetSurvivorSet(int &retVal); /** * @brief Called whenever CDirectorVersusMode::GetMissionVersusBossSpawning() is invoked * @remarks Passed values are from the map's Mission Keyvalues. If those keyvalues don't exist, they are from cvar and other globals * * @param spawn_pos_min Minimum spawn position (percent of flow distance) for bosses * @param spawn_pos_max Maximum spawn position (percent of flow distance) for bosses * @param tank_chance Chance for a tank to spawn on this map * @param witch_chance Chance for a witch to spawn on this map * * @return Plugin_Handled to block reading map data, Plugin_Changed to use overwritten values from plugin, Plugin_Continue to continue to read from mission data. */ forward Action L4D_OnGetMissionVSBossSpawning(float &spawn_pos_min, float &spawn_pos_max, float &tank_chance, float &witch_chance); /** * @brief Called whenever ZombieManager::ReplaceTank(CTerrorPlayer *,CTerrorPlayer *) is invoked * @remarks Not invoked if tank is bot * * @param tank the player who was a tank * @param newtank a player who has become a new tank */ forward void L4D_OnReplaceTank(int tank, int newtank); /** * @brief Called whenever CDirector::TryOfferingTankBot is invoked * @remarks Is used for displaying the "X gets Tank" window and transferring Tank control * * @param tank_index Client index of the tank * @param enterStasis Is the tank in stasis * * @return Plugin_Handled to block window from showing and to keep Tank Bot, Plugin_Changed to use overwritten values from plugin, Plugin_Continue otherwise */ forward Action L4D_OnTryOfferingTankBot(int tank_index, bool &enterStasis); /** * @brief Called whenever CThrow::ActivateAbility(void) is invoked * @remarks Called when a tank throws a rock. Blocking this call will keep the tank from throwing a rock * * @param ability ability_throw entity index * * @return Plugin_Handled to block, Plugin_Continue otherwise */ forward Action L4D_OnCThrowActivate(int ability); /** * @brief Called when CBaseAnimating::SelectWeightedSequence(int Activity) is invoked with tank attack activity * @remarks Called whenever a tank uses his primary (punch) or secondary (throw) attack (uses ACT_* activity numbers) * * This detour uses activity sequence numbers. * * @param client the client that is playing as tank * @param sequence current selected activity for attack, option to override the return value with it * * L4D2: * ACT_HULK_THROW 761 * ACT_TANK_OVERHEAD_THROW 762 * ACT_HULK_ATTACK_LOW 763 * ACT_TERROR_ATTACK_MOVING 790 * * L4D1: * ACT_HULK_THROW 1254 * ACT_TANK_OVERHEAD_THROW 1255 * ACT_HULK_ATTACK_LOW 1256 * ACT_TERROR_ATTACK_MOVING 1282 * * @return Plugin_Handled to override return value, Plugin_Continue otherwise. */ forward Action L4D2_OnSelectTankAttackPre(int client, int &sequence); /** * @brief Called when CBaseAnimating::SelectWeightedSequence(int Activity) is invoked with tank attack activity * @remarks Called whenever a tank uses his primary (punch) or secondary (throw) attack (uses m_nSequence animation numbers) * * This detour uses models m_nSequence numbers. * * @param client the client that is playing as tank * @param sequence current selected activity for attack, option to override the return value with it * * @remarks sequences, for L4D1: * @remarks sequences(punches) 38 (uppercut), 41 (right hook), 43 (left hook), 44 and 45 (pounding the ground) * @remarks sequences(throws) 46 (undercut), 47 (1handed overhand), 48 (throw from the hip), 49 (2handed overhand) * * @remarks sequences, for L4D2: * @remarks sequences(punches) 40 uppercut), 43 (right hook), 45 (left hook), 46 and 47 (pounding the ground) * @remarks sequences(throws) 48 undercut), 49 (1handed overhand), 50 (throw from the hip), 51 (2handed overhand) * * @return Plugin_Handled to override return value, Plugin_Continue otherwise. */ forward Action L4D2_OnSelectTankAttack(int client, int &sequence); /** * @brief Called whenever CTerrorMeleeWeapon::StartMeleeSwing(CTerrorPlayer *, bool) is invoked * @remarks Called when a player uses his melee weapons primary attack. This is before the game * reads the melee weapon data (model etc) and decides if he CAN attack at all. * * @return Plugin_Handled to block, Plugin_Continue otherwise */ // L4D2 only. forward Action L4D_OnStartMeleeSwing(int client, bool boolean); /** * @brief Called whenever CDirectorScriptedEventManager::SendInRescueVehicle(void) is invoked * @remarks Called when the last Finale stage is reached and the Rescue means becomes 'available'. * Take note this forward WILL fire upon using the native of the same function. * * @return Plugin_Handled to block, Plugin_Continue otherwise */ // 2020 Left4DHooks update: Blocked on L4D1/L4D2 Linux to prevent crashes. Waiting for DHooks update to support object returns. forward Action L4D2_OnSendInRescueVehicle(); /** * @brief Called whenever CDirectorScriptedEventManager::ChangeFinaleStage is invoked * * @param FinaleStageType integer value * @remarks Called when the director stage changes * @remarks some values for FinaleStageType: 1 - Finale Started; 6 - Rescue Vehicle Ready; 7 - Zombie Hordes; 8 - Tank; 10 - Combat Respite (nothing spawns) * @remarks SendInRescueVehicle does not depend on Finale Stage being 6, that only signals endless Hordes/Tanks * * @return Plugin_Handled to block, Plugin_Changed to change finaleType, Plugin_Continue otherwise */ // L4D2 only. forward Action L4D2_OnChangeFinaleStage(int &finaleType, const char[] arg); /** * @brief Called whenever CDirectorVersusMode::EndVersusModeRound(bool) is invoked * @remarks Called before score calculations and the scoreboard display * * @param countSurvivors True if the survival multiplier count needs to be nonzero. I guess. * @remarks Not sure what bool does exactly yet. Just monitor it. If true, survivors will be counted for multiplier. If false, survival multiplier will be set to 0. * @remarks A lot of Score calculations happen on this function, and the round-end scoreboard comes up doing this. Don't block unless you're sure you can reproduce this logic. * * @return Plugin_Handled to block, Plugin_Continue otherwise */ forward Action L4D2_OnEndVersusModeRound(bool countSurvivors); /** * @brief Called whenever CTerrorPlayer:RecalculateVersusScore(void) is invoked * @remarks Calculates an individual survivors health bonus from their current health and status. * * @return Plugin_Handled to block health bonus from being calculated. */ // L4D1 only. forward Action L4D_OnRecalculateVersusScore(int client); /** * @brief Called after CDirectorVersusMode::EndVersusModeRound(bool) * @remarks Called after all score calculations are complete and the scoreboard shows * @remarks Called after all score calculations inside CDirectorVersusMode::EndVersusModeRound(bool). This good forward to replace standard "round_end" hook. * * @return noreturn */ forward void L4D2_OnEndVersusModeRound_Post(); /** * @brief Called whenever CTerrorPlayer::OnLedgeGrabbed(CTerrorPlayer *this, const Vector *) is invoked * @remarks Called when a player is about to grab a ledge * * @param client client grabbing the ledge * * @return Plugin_Handled to prevent grabbing, Plugin_Continue otherwise */ forward Action L4D_OnLedgeGrabbed(int client); /** * @brief Called when CTerrorPlayer::OnRevived(void) is invoked * @remarks Called post-revive so all data values are post-revive status. * * @param client the client that has been revived * * @noreturn */ forward void L4D2_OnRevived(int client); /** * @brief Called whenever CTerrorPlayer::OnStaggered(CBaseEntity *, Vector const *) is invoked * @remarks Source is always null for Charger impacts (Valve) * * @param target the client that is about to get staggered * @param source the client that is about to stagger the target * * @return Plugin_Handled to block, Plugin_Continue otherwise */ forward Action L4D2_OnStagger(int target, int source); /** * @brief Called whenever CTerrorPlayer::OnShovedBySurvivor(CTerrorPlayer, Vector&) is invoked * @remarks L4D2 only uses this on Special Infected * @remarks Blocks hunter dead stop * * @param client the client that did the shoving * @param victim the client that was shoved (CAUTION retrieved from function pointer, don't meddle with it) * @param vecDir Vector Angle of Shoveforce * * @return Plugin_Handled to block melee effect (staggering), Plugin_Continue otherwise. */ forward Action L4D_OnShovedBySurvivor(int client, int victim, const float vecDir[3]); /** * @brief Called whenever CTerrorWeapon::OnHit(CGameTrace &, Vector const&, bool) is invoked * @remarks Called for every single shovable and even some of the unshovable entities in the game * * @param client survivor who did the shoving * @param entity entity that is about to get shoved * @param weapon weapon that has been held while shoving * @param vecDir stagger direction * @param bIsHighPounce a boolean to determine if it was a pounce from a height or not; reliable to a certain degree and should only be considered for hunters * @param bIsHighPounce sometimes reset to 0 when punched before the detour retrieves the information. * * @return Plugin_Handled to block, Plugin_Continue otherwise */ forward Action L4D2_OnEntityShoved(int client, int entity, int weapon, float vecDir[3], bool bIsHighPounce); /** * @brief Called whenever CTerrorPlayer::OnShovedByPounceLanding(CTerrorPlayer*) is invoked * * @param victim the survivor that is about to get stumbled as a result of "attacker" capping someone in close proximity * @param attacker the SI that is about to cause a stumble as a result of capping someone in close proximity to a survivor * * @return Plugin_Handled to block, Plugin_Continue otherwise */ forward Action L4D2_OnPounceOrLeapStumble(int victim, int attacker); /** * @brief Called whenever CInferno::Spread(Vector const&) is invoked (only for spitters -- ignores fire) * * @param spitter spitter that spat (:D) * @param projectile spitter's projectile entity * @param x x coordinate of the new acid puddle (can be overridden) * @param y y coordinate of the new acid puddle (can be overridden) * @param z z coordinate of the new acid puddle (can be overridden) * * @return Plugin_Handled to block, Plugin_Continue otherwise */ // 2020 Left4DHooks update: Works for Molotovs and Spitters. // return Plugin_Handled to make small fire or goo puddle. // x,y,z has no affect, is 0,0,0 for spitter, molotovs is area size or something. forward Action L4D2_OnSpitSpread(int spitter, int projectile, float &x, float &y, float &z); /** * @brief Called when SurvivorBot::UseHealingItems(Action *) is invoked * @remarks Causes bots to use or give healing items (except in safe room on non-expert) * * @param client the client that will decide whether to use healing items * * @return Plugin_Handled to block, Plugin_Continue otherwise. */ // 2020 Left4DHooks update: Blocked on L4D1/L4D2 Linux to prevent crashes. Waiting for DHooks update to support object returns. forward Action L4D2_OnUseHealingItems(int client); /** * @brief Called after SurvivorBot::FindScavengeItem(Action *) is invoked * @remarks Indicates which item the Survivor Bot will attempt to pick up * * @param client the client that will try to pick something up * @param item the item the client will try to pick up (null means no item) * * @return Plugin_Handled to block, Plugin_Changed to overwrite item, Plugin_Continue otherwise. */ forward Action L4D2_OnFindScavengeItem(int client, int &item); /** * @brief Called whenever BossZombiePlayer(CTerrorPlayer *, int, CBaseEntity *) is invoked * @remarks Called when Special Infected are targeting a victim * * @param specialInfected the SI entity index * @param curTarget the survivor player index who is chosen victim * * @return Plugin_Handled to block, Plugin_Changed to use overwritten values from plugin, Plugin_Continue otherwise */ forward Action L4D2_OnChooseVictim(int specialInfected, int &curTarget); /** * @brief Called whenever CTerrorPlayer::MaterializeFromGhost is invoked * @remarks Called when a Special Infected spawns out of ghost mode. * * @param victim the client who spawned * * @return Plugin_Handled to block, Plugin_Continue otherwise */ forward Action L4D_OnMaterializeFromGhostPre(int client); /** * @brief Called whenever CTerrorPlayer::MaterializeFromGhost is invoked * @remarks Called when a Special Infected spawns out of ghost mode. * * @param victim the client who spawned * * @noreturn */ forward Action L4D_OnMaterializeFromGhost(int client); /** * @brief Called whenever CTerrorPlayer::OnVomitedUpon is invoked * @remarks Called when a Survivor player is covered in Boomer bile, or when using "Bile the World" plugin by "AtomicStryker" * * @param victim the client who's now it * @param attacker the attacker who caused the vomit * * @return Plugin_Handled to block, Plugin_Changed to use overwritten values from plugin, Plugin_Continue otherwise */ forward Action L4D_OnVomitedUpon(int victim, int &attacker, bool &boomerExplosion); /** * @brief Called whenever CTerrorPlayer::OnHitByVomitJar is invoked * @remarks Called a Special Infected is hit from a Bilejar explosion * * @param victim the client who's now it * @param attacker the attacker who caused the vomit * @param boomerExplosion true if triggered by a boommer explosion * * @return Plugin_Handled to block, Plugin_Changed to use overwritten values from plugin, Plugin_Continue otherwise */ forward Action L4D2_OnHitByVomitJar(int victim, int &attacker); /** * @brief Called when the client's material system is expecting instructions from the server in regards to addons * @remarks Doesn't fire if l4d2_addons_eclipse is -1 or 0 * * @param SteamID SteamID of the client expecting a matsys reply * * @return Plugin_Handled to let the client through with addons, Plugin_Continue otherwise. */ // L4D2 only. forward Action L4D2_OnClientDisableAddons(const char[] SteamID); /** * @brief Called whenever InfectedShoved::OnShoved(Infected *, CBaseEntity *) is invoked * @remarks Called when common Infected are about to get shoved * * @return Plugin_Handled to block, Plugin_Continue otherwise */ #pragma deprecated This was never enabled forward Action L4D_OnInfectedShoved(int infected, int entity); /** * @brief Called whenever CBasePlayer::WaterMove() is invoked * @remarks Couple it with a FL_INWATER check to be sure * * @param client the client that is moving in the water * * @noreturn */ #pragma deprecated Does not return water state. Use FL_INWATER instead. See Swimming plugin for L4D/2. forward void L4D2_OnWaterMove(int client); // ==================================================================================================== // FORWARDS - Silvers // ==================================================================================================== /** * @brief Returns the current game mode type when it changes. 0=Unknown or error. 1=Coop. 2=Survival. 4=Versus. 8=Scavenge (L4D2). * @remarks You can use the "GAMEMODE_*" enums provided above to match the mode. * @remarks Only triggers when the server starts and after when the game mode changes. * * @return Current game mode. */ forward Action L4D_OnGameModeChange(int gamemode); /** * @brief Called whenever ZombieManager::GetRandomPZSpawnPosition is invoked * @remarks Attempts to find a valid position to spawn Special Infected * * @param client Client id to find an area near this player * @param zombieClass Special Infected class to search for a spawn position for * @param attempts How many tries to find a valid location * @param vecPos The vector location. Sometimes is 0,0,0. Use post hook for real selected position * * @return Plugin_Changed to change any values, Plugin_Continue otherwise */ #pragma deprecated Removed because it spawns specials at 0,0,0 when modifying any value. forward Action L4D_OnGetRandomPZSpawnPosition(int &client, int &zombieClass, int &attempts, float vecPos[3]); // ==================================================================================================== // NATIVES - Silvers // ==================================================================================================== /** * @brief Runs a specified VScript code. * @remarks Saves having to create an entity. The entity can remain alive and used again... * @remarks unless the core plugins define KILL_VSCRIPT is changed and the plugin recompiled. * * @param code The VScript code to execute. Maximum length seems to be 1006 characters. * * @return True on success, false otherwise. * @error Invalid code or failed to create logic_script. */ // L4D2 only. native bool L4D2_ExecVScriptCode(char[] code); /** * @brief Runs a specified VScript code and returns values from it. * @remarks Can execute several code blocks on a single line separating them with ; as standard coding practice. * @remarks Can also execute several lines of code from SourcePawn, you must end the line with a backslash. * @remarks Can return specific data by wrapping what you want to return within "" and "". * @remarks See the test plugin for examples to all the above. * * @param code The VScript code to execute. Maximum length seems to be 1006 characters. * @param buffer Buffer to copy return data to. You can use StringToInt or StringToFloat if required. * @param maxlength Maximum size of the buffer. * * @return True on success, false otherwise. * @error Invalid code or failed to create logic_script or possibly an empty string. */ // L4D2 only. native bool L4D2_GetVScriptOutput(char[] code, char[] buffer, int maxlength); /** * @brief Returns the current game mode type. 0=Unknown or error. 1=Coop. 2=Survival. 4=Versus. 8=Scavenge (L4D2). * @remarks You can use the "GAMEMODE_*" enums provided above to match the mode. * * @return Current game mode. */ native int L4D_GetGameModeType(); /** * @brief Deafens a player with a high pitch ringing sound for a few seconds. * @remarks Used in the "Prototype Grenades" plugin by Silvers * * @param client Client id of the player to deafen * * @noreturn */ native int L4D_Deafen(int client); /** * @brief Creates the dissolve effect on common infected, players or objects. * @remarks You must handle the fading or killing of an entity as required * @remarks Used in the "Dissolve Infected" plugin by Silvers * * @param entity The entity to dissolve. * * @return Entity index of the dissolver, which should automatically delete itself when the effect is done */ native int L4D_Dissolve(int entity); /** * @brief Removes the boomer vomit effect from a player. * * @param client Client id of the player to remove the effect from * * @noreturn */ native void L4D_OnITExpired(int client); /** * @brief Sets a physics entity angular velocity vector. * @remarks Spins an entity, for example used in "Throwable Melee Weapons" plugin by Silvers * @remarks See the "left4dhooks_test" plugin for an example on spinning the entity top over or sideways * * @param entity The entity to spin. * @param vecAng Angular velocity vector, director to spin the projectile * * @noreturn */ native int L4D_AngularVelocity(int entity, const float vecAng[3]); /** * @brief Attempts to find a random valid position to spawn a Special Infected. * @remarks The zombieClass does not matter but different values yield different results: * @remarks Using the Tank zombieClass probably searches for a larger area that's clear of objects * * @param client Client id to find an area near this player. Accepts 0 to find a random area instead * @param zombieClass Special Infected class to search for a spawn position for * @param attempts How many tries to find a valid location * @param vecPos The vector array to store the valid location on success * * @return True on success, false on failure to find valid location */ native bool L4D_GetRandomPZSpawnPosition(int client, int zombieClass, int attempts, float vecPos[3]); /** * @brief Given a vector position, returns the relative NavArea. * @remarks This is more reliable than L4D2Direct_GetTerrorNavArea. * * @param vecPos The vector array to use to retrieve the NavArea * * @return The NavArea value, or 0 on failure probably */ native int L4D_GetNearestNavArea(const float vecPos[3]); /** * @brief Returns the nav address of the last known area. * * @param client The client to check * * @return The nav area adress or 0 on fail */ native int L4D_GetLastKnownArea(int client); /** * @brief Gets the maximum flow distance any survivor has achieved. * * @return Returns the maximum flow distance any survivor has achieved. */ // L4D2 only. native float L4D2_GetFurthestSurvivorFlow(); /** * @brief Given a nav area value, returns a randomly selected position for spawning. * @remarks This is what Witches use to spawn. * * @param NavArea The NavArea to search for a valid location * @param vecPos The vector array to store the valid location on success * * @noreturn */ native void L4D_FindRandomSpot(int NavArea, float vecPos[3]); /** * @brief Returns true when any survivor has left the starting area and true in Versus when the saferoom door automatically opens. * * @return True if a survivor has left the starting area. False otherwise. */ native bool L4D_HasAnySurvivorLeftSafeArea(); /** * @brief Returns true when any survivor is in the starting checkpoint area. * * @return True if any survivor is in the starting checkpoint area. False otherwise. */ native bool L4D_IsAnySurvivorInStartArea(); /** * @brief Returns true when any survivor is in the starting or ending checkpoint area. * * @return True if a survivor is in the starting or ending checkpoint area. False otherwise. */ native bool L4D_IsAnySurvivorInCheckpoint(); /** * @brief Returns true when the specified Survivor or Special Infected is in the starting checkpoint area. * * @param client Client id to check their checkpoint. * * @return True if a survivor is in the starting checkpoint area. False otherwise. */ native bool L4D_IsInFirstCheckpoint(int client); /** * @brief Returns true when the specified Survivor or Special Infected is in the ending checkpoint area. * * @param client Client id to check their checkpoint. * * @return True if a survivor is in the ending checkpoint area. False otherwise. */ native bool L4D_IsInLastCheckpoint(int client); /** * @brief Checks if a world position is accessible to a Survivor bot. * @remarks You must pass a survivor bots client index into this, otherwise the plugin will attempt to find a bot or throw an error otherwise. * @remarks It appears the server will sometimes crash when passing a real players client index. * @remarks If the clients flow distance is too far away from the position to test it will return false. * * @param client Client id to use for testing * @param vecPos Vector coordinate to test * * @return True if accessible, false otherwise */ // L4D2 only. native bool L4D2_IsReachable(int client, const float vecPos[3]); /** * @brief Returns if players can control infected. * * @return True if players can control infected, false otherwise */ native bool L4D_HasPlayerControlledZombies(); /** * @brief Creates an activated PipeBomb projectile. * @remarks Does not attach the "Fuse" or "Light" particles, see the "left4dhooks_test" plugin for example on attaching these * @remarks Also used in the "PipeBomb Shove" plugin by Silvers * * @param client Client id to attribute the projectile to for damage credit * @param vecPos Vector coordinate of the projectile on creation * @param vecAng Vector velocity and direction of the projectile * * @return Entity index of the projectile */ native int L4D_PipeBombPrj(int client, const float vecPos[3], const float vecAng[3]); /** * @brief Creates an activated Molotov projectile. * * @param client Client id to attribute the projectile to for damage credit * @param vecPos Vector coordinate of the projectile on creation * @param vecAng Vector velocity and direction of the projectile * * @return Entity index of the projectile */ native int L4D_MolotovPrj(int client, const float vecPos[3], const float vecAng[3]); /** * @brief Creates an activated VomitJar projectile. * * @param client Client id to attribute the projectile to for damage credit * @param vecPos Vector coordinate of the projectile on creation * @param vecAng Vector velocity and direction of the projectile * * @return Entity index of the projectile */ // L4D2 Only. native int L4D2_VomitJarPrj(int client, const float vecPos[3], const float vecAng[3]); /** * @brief Creates an activated Grenade Launcher projectile. * * @param client Client id to attribute the projectile to for damage credit * @param vecPos Vector coordinate of the projectile on creation * @param vecAng Vector velocity and direction of the projectile * * @return Entity index of the projectile */ // L4D2 Only. native int L4D2_GrenadeLauncherPrj(int client, const float vecPos[3], const float vecAng[3]); /** * @brief Creates a Spitter goo projectile. * * @param client Client id to attribute the projectile to for damage credit * @param vecPos Vector coordinate of the projectile on creation * @param vecAng Vector velocity and direction of the projectile * * @return Entity index of the projectile */ // L4D2 only. native int L4D2_SpitterPrj(int client, const float vecPos[3], const float vecAng[3]); /** * @brief Gives the player adrenaline effect and health benefits. * * @param client Client id to affect * @param fTime Duration of screen effects (game default: 15.0 - Cvar: "adrenaline_duration") * @param heal True = give health benefits and fire "adrenaline_used" event. False = only screen effects. * * @return True on success, false otherwise */ // L4D2 only. native void L4D2_UseAdrenaline(int client, float fTime = 15.0, bool heal = true); /** * @brief Respawns a player from dead state. * @remarks Resets players stats for kills etc. * @remarks To preserve stats please view the code in "[L4D1 & L4D2] SM Respawn Improved" plugin by "Dragokas": https://forums.alliedmods.net/showthread.php?t=323220 * * @param client Client ID of the person to affect * * @noreturn */ native void L4D_RespawnPlayer(int client); /** * @brief To takeover a Survivor bot. First use "ChangeClientTeam" and change them to 0. Then call "L4D_SetHumanSpec" then call "L4D_TakeOverBot". * * @return True or false */ native int L4D_SetHumanSpec(int bot, int client); /** * @brief To takeover a Survivor bot. First use "ChangeClientTeam" and change them to 0. Then call "L4D_SetHumanSpec" then call "L4D_TakeOverBot". * * @return True or false */ native int L4D_TakeOverBot(int client); /** * @brief Returns true when the "You will enter Spawn Mode in X seconds" text appears on the screen. * * @return True or false */ native bool L4D_CanBecomeGhost(int client); /** * @brief Returns if Wandering Witches are allowed. * * @return True or false */ // L4D2 only. native bool L4D2_AreWanderersAllowed(); /** * @brief Returns true when the rescue vehicle is leaving until the screen fades and credits start. * * @return True or false */ native bool L4D_IsFinaleEscapeInProgress(); /** * @brief Returns the current Finale stage type. * @remarks some values for FinaleStageType: 1 - Finale Started; 6 - Rescue Vehicle Ready; 7 - Zombie Hordes; 8 - Tank; 10 - Combat Respite (nothing spawns) * @remarks Seems to return 18 for non-finale maps * * @return finaleType stage value */ // L4D2 only. native int L4D2_GetCurrentFinaleStage(); /** * @brief Forces the ScriptedMode stage to advance to the next stage. * * @noreturn */ // L4D2 only. native void L4D2_ForceNextStage(); /** * @brief Returns true when any tanks are on the map * * @return True when any tanks are on the map. False when no tanks. */ // L4D2 only. native bool L4D2_IsTankInPlay(); /** * @brief Returns the value of the specified Director Variable key. * * @param key Director variable key name to search for * @param value Default value to use when the variable is not found * * @return Value of the variable, or provided default value on failure */ // L4D2 only. native int L4D2_GetScriptValueInt(const char[] key, int value); /** * @brief Returns the nav distance between two areas. Does not account for out-of-bounds areas. * * @param startArea NavArea address * @param endArea NavArea address * @param ignoreNavBlockers Bool to ignore blocked areas while checking (does not seem to work as expected) * * @return Distance between the areas, 0.0 if the same area or -1.0 on failure. */ // L4D2 only. native float L4D2_NavAreaTravelDistance(float startPos[3], float endPos[3], bool ignoreNavBlockers); // // Only returns default value provided. // native float L4D2_GetScriptValueFloat(const char[] key, float value); // Not implemented, request if really required. // native void L4D2_GetScriptValueString(const char[] key, const char[] value, char[] retValue, int maxlength); // ==================================================================================================== // NATIVES - Silvers - VSCRIPT WRAPPERS // ==================================================================================================== // These natives are using VScripts to call functions - this is much slower than native SDKCalls. // Popular VScript functions will be converted to standard native SDKCalls. Please tell me. // Recommend not using these too often, instead request proper native SDKCalls. /** * @brief Returns the number of maps played since a new campaign (not the current chapter). * * @return Number of maps played */ // L4D2 only. native int L4D2_VScriptWrapper_GetMapNumber(); /** * @brief Returns true if the character has ever been injured by a member of the given team. * @remarks Team 3 returns true when hurt by Common Infected. * * @param client Client to test * * @return Number of maps played */ // L4D2 only. native bool L4D2_VScriptWrapper_HasEverBeenInjured(int client, int team); /** * @brief Returns the time the character has been alive (only valid when alive). * * @return Client to test */ // L4D2 only. native float L4D2_VScriptWrapper_GetAliveDuration(int client); /** * @brief Returns true when a player is dead and can spectate others. * * @return True if dead, false if not or script error. */ // L4D2 only. native bool L4D2_VScriptWrapper_IsDead(int client); /** * @brief Returns true when a player is dead, but cannot spectate others yet. * * @param client Client to test * * @return True if dying, false if not or script error. */ // L4D2 only. native bool L4D2_VScriptWrapper_IsDying(int client); /** * @brief Causes Adrenaline's speed and visual effect, no change to health. * * @param client Client to affect * * @return True on success (does not guarantee effect turned on), false on script error. */ // L4D2 only. native bool L4D2_VScriptWrapper_UseAdrenaline(int client, float time); /** * @brief Revive a dead player by defib. * * @param client Client to revive * * @return True on success (does not guarantee they were revived), false on script error. */ // L4D2 only. native bool L4D2_VScriptWrapper_ReviveByDefib(int client); /** * @brief Revive an incapacitated player. * * @param client Client to revive * * @return True on success (does not guarantee they were revived), false on script error. */ // L4D2 only. native bool L4D2_VScriptWrapper_ReviveFromIncap(int client); /** * @brief Get the current bits for the bot sense flags: BOT_CANT_SEE, BOT_CANT_HEAR, BOT_CANT_FEEL. * * @param client Bot to check * * @return Current sense flags */ // L4D2 only. native int L4D2_VScriptWrapper_GetSenseFlags(int client); /** * @brief Test two vector positions if they can be reached (only returns false if a location has no valid NavArea, out-of-bounds can be valid). * * @return Returns true if a path exists, false if not or on script error. */ // L4D2 only. native bool L4D2_VScriptWrapper_NavAreaBuildPath(float startPos[3], float endPos[3], float flMaxPathLength, bool checkLOS, bool checkGround, int teamID, bool ignoreNavBlockers); /** * @brief Compute distance between two areas. * * @return -1 if can't reach 'endArea' from 'startArea'. */ // L4D2 only. // Added as a demonstration and test, SDKCall is available, use "L4D2_NavAreaTravelDistance" instead. native float L4D2_VScriptWrapper_NavAreaTravelDistance(float startPos[3], float endPos[3], float flMaxPathLength, bool checkLOS, bool checkGround); // ==================================================================================================== // NATIVES - left4downtown.inc // ==================================================================================================== /** * @brief Restarts the setup timer (when in scavenge mode) * @remarks If game has already started, the setup timer will show, * but it still won't go back into setup. */ // L4D2 only. native int L4D_ScavengeBeginRoundSetupTime(); /** * @brief Resets the natural mob (horde) timer * @remarks Requires the Director to be available--map must be started * * @noreturn */ // L4D2 only. native void L4D_ResetMobTimer(); /** * @brief Get the remaining spawn time for an SI * @remarks This is meant for Special infected in ghost mode in versus. * * @return Time (seconds) until the SI will spawn. */ // L4D2 only. native float L4D_GetPlayerSpawnTime(int player); /** * @brief Restarts the round, switching the map if necessary * @remarks Set the map to the current map to restart the round * * @param map the mapname it should go to after the round restarts * * @return 1 always */ native int L4D_RestartScenarioFromVote(const char[] map); /** * @brief Gets the max versus completion score for the map * @remarks Requires GameRules to be initialized--map must be loaded * Seems to be updated before OnMapStart * * @return The map's max completion distance (map distance score) */ native int L4D_GetVersusMaxCompletionScore(); /** * @brief Sets the max versus completion score for the map * @remarks Requires GameRules to be initialized--map must be loaded * Seems to be updated before OnMapStart and checked on round_start * * @param score The versus max completion score to set for the round */ native int L4D_SetVersusMaxCompletionScore(int score); /** * @brief Get the team scores for the current map * @remarks The campaign scores are not set until the end of round 2, * use L4D_GetCampaignScores to get them earlier. * * @deprecated This function can be called through SDKTools using CTerrorGameRules, * and so you should switch off to using SDKTools instead of this native. * * @param logical_team L4D1: 1 for A, 2 for B. L4D1: 1-6 (Maybe something like: 1: Your team 1. 2: Enemy team. 3: Survivor completion percentage. 4: Health bonus. 5: Completion percentage. 6: Total score at round end.) * @param campaign_score true to get campaign score instead of map score * * @return the logical team's map score * or -1 if the team hasn't played the round yet, * or the team's campaign score if campaign_score = true */ native int L4D_GetTeamScore(int logical_team, bool campaign_score=false); /** * @brief Tells if the Mission (map) is the first map of the campaign * * @return true if the map is the first map of the campaign */ native bool L4D_IsFirstMapInScenario(); /** * @brief Tells if the Mission (map) is the final map of the campaign * * @return true if the map is the last map of the campaign (finale) */ native bool L4D_IsMissionFinalMap(); /** * @brief Notifies the CGameRulesProxy that the game state has been changed * @remarks Use this function before changing networked members of GameRules, * like with L4D_SetVersusMaxCompletionScore() * * @noreturn */ native void L4D_NotifyNetworkStateChanged(); /** * @brief Trigger's a target player's stagger behavior * @remarks Works on any CTerrorPlayer--survivor or infected. * * @param target Player to stagger * @param source_ent Source of the stagger (another player, etc) * @param vecSource Source location of the stagger. If NULL_VECTOR, origins of source_ent is used. * @noreturn */ native void L4D_StaggerPlayer(int target, int source_ent, float vecSource[3]); /** * @brief Calls CDirectorScriptedEventManager::SendInRescueVehicle(void) * @remarks Calls in the rescue vehicle * @remarks will fire the forward of the same function * * @noreturn */ native void L4D2_SendInRescueVehicle(); /** * @brief Calls CDirectorScriptedEventManager::ChangeFinaleStage(CDirectorScriptedEventManager FinaleStageType,char const*) * @remarks Changes the Finale stage * @remarks some values for FinaleStageType: 1 - Finale Started; 6 - Rescue Vehicle Ready; 7 - Zombie Hordes; 8 - Tank; 10 - Combat Respite (nothing spawns) * @remarks will fire the forward of the same function * * @param FinaleStageType integer value * * @noreturn */ // L4D2 only. native void L4D2_ChangeFinaleStage(int finaleType, const char[] arg); /** * @brief Calls ZombieManager::ReplaceTank(CTerrorPlayer *,CTerrorPlayer *) * @remarks Replaces a players tank control with another player * * @param tank the player who was a tank * @param newtank a player who will become a new tank */ native void L4D_ReplaceTank(int tank, int newtank); /** * @brief Calls ZombieManager::SpawnTank(Vector&,QAngle&) * * @param vecPos Vector coordinate where the tank will be spawned * @param vecAng QAngle where the tank will be facing * * @return Entity index of the spawned tank */ native int L4D2_SpawnTank(const float vecPos[3], const float vecAng[3]); /** * @brief Calls ZombieManager::SpawnSpecial(ZombieClassType,Vector&,QAngle&) * @remarks Only used for bot special spawns (not players) * * @param vecPos Vector coordinate where the SI will be spawned * @param vecAng QAngle where the SI will be facing * * @return Entity index of the spawned SI */ native int L4D2_SpawnSpecial(int zombieClass, const float vecPos[3], const float vecAng[3]); /** * @brief Calls ZombieManager::SpawnWitch(Vector&,QAngle&) * * @param vecPos Vector coordinate where the witch will be spawned * @param vecAng QAngle where the witch will be facing * * @return Entity index of the spawned witch */ native int L4D2_SpawnWitch(const float vecPos[3], const float vecAng[3]); /** * @brief Calls ZombieManager::SpawnWitchBride(Vector&,QAngle&) * * @param vecPos Vector coordinate where the witch bride will be spawned * @param vecAng QAngle where the witch bride will be facing * * @return Entity index of the spawned witch bride */ // L4D2 only. native int L4D2_SpawnWitchBride(const float vecPos[3], const float vecAng[3]); /** * @brief Removes lobby reservation from a server * @remarks Sets the reservation cookie to 0, * it is safe to call this even if it's unreserved. */ native void L4D_LobbyUnreserve(); /** * @brief Get the current campaign scores stored in the Director * @remarks The campaign scores are updated after L4D_OnSetCampaignScores * * @deprecated This will set the scores to -1 for both sides on L4D2, * this function is no longer supported. * * @param scoreA score of logical team A * @param scoreB score of logical team B * * @return 1 always */ #pragma deprecated Use GetTeamScore and OnClearTeamScores instead native int L4D_GetCampaignScores(int &scoreA, int &scoreB); /** * @brief Checks if the server is currently reserved for a lobby * @remarks Server is automatically unreserved if it hibernates or * if all players leave. * * @deprecated This will always return false on L4D2 or on Linux. * * @return true if reserved, false if not reserved */ #pragma deprecated This will always return false on L4D2 or on Linux. native bool L4D_LobbyIsReserved(); /** * @brief Get the time remaining before the next director horde. * @remarks This timer is used for scripted event hordes and natural timed hordes * * @return Time remaining before next director horde */ #pragma deprecated Use L4D2_CTimerGetRemainingTime(L4D2CT_MobSpawnTimer) native float L4D_GetMobSpawnTimerRemaining(); /** * @brief Get the duration the horde timer was set to after the last horde * @remarks This timer is used for scripted event hordes and natural timed hordes * * @return Total time from last horde to next horde. */ #pragma deprecated Use L4D2_CTimerGetCountdownDuration(L4D2CT_MobSpawnTimer) native float L4D_GetMobSpawnTimerDuration(); // ==================================================================================================== // NATIVES - l4d2director.inc // ==================================================================================================== /** * @brief Gets the number of tanks currently in play. * @remarks This value is tracked by the director, and should be a good * indicator that a tank is in play * * @return Current Tank count */ native int L4D2_GetTankCount(); /** * @brief Gets the number of witches currently in play. * @remarks This value is tracked by the director, and should be a good * indicator that a witch is in play * * @return Current Witch count */ native int L4D2_GetWitchCount(); /** * @brief Returns the current map chapter number of the campaign * * @return Map chapter */ native int L4D_GetCurrentChapter(); /** * @brief Returns the maximum number of chapters for the current game mode * * @return Max chapters */ native int L4D_GetMaxChapters(); /** * @brief Gets the campaign scores stored in the Versus Director * @remarks These are the actual values used for campaign scores--not proxies * * @param scores Array to store the campaign scores in * @noreturn */ // L4D2 only. native void L4D2_GetVersusCampaignScores(int scores[2]); /** * @brief Sets the campaign scores stored in the Versus Director * @remarks These are the actual values used for campaign scores--not proxies * * @param scores Array of campaign scores to set the director's values to. * @noreturn */ // L4D2 only. native void L4D2_SetVersusCampaignScores(const int scores[2]); /** * @brief Gets the flow percent for tank spawns for both versus rounds. * @remarks These values are checked against as the survivors move through the * map. Once they are passed, the tank spawns. Note that this is flow * as a percent of the map's flow, not flow distance. * * @param tankFlows Array to store the Tank Spawn Flow percents in director * @noreturn */ // L4D2 only. native void L4D2_GetVersusTankFlowPercent(float tankFlows[2]); /** * @brief Sets the flow percent for tank spawns for both versus rounds. * @remarks These values are checked against as the survivors move through the * map. Once they are passed, the tank spawns. Note that this is flow * as a percent of the map's flow, not flow distance. * * @param tankFlows Array of Tank Spawn Flow percents to store in director * @noreturn */ // L4D2 only. native void L4D2_SetVersusTankFlowPercent(const float tankFlows[2]); /** * @brief Gets the flow percent for witch spawns for both versus rounds. * @remarks These values are checked against as the survivors move through the * map. Once they are passed, the witch spawns. Note that this is flow * as a percent of the map's flow, not flow distance. * * @param witchFlows Array to store the Witch Spawn Flow percents in director * @noreturn */ // L4D2 only. native void L4D2_GetVersusWitchFlowPercent(float witchFlows[2]); /** * @brief Sets the flow percent for witch spawns for both versus rounds. * @remarks These values are checked against as the survivors move through the * map. Once they are passed, the witch spawns. Note that this is flow * as a percent of the map's flow, not flow distance. * * @param witchFlows Array of Witch Spawn Flow percents to store in director * @noreturn */ // L4D2 only. native void L4D2_SetVersusWitchFlowPercent(const float witchFlows[2]); // ==================================================================================================== // NATIVES - l4d2timers.inc // ==================================================================================================== enum L4D2CountdownTimer { L4D2CT_MobSpawnTimer, L4D2CT_SmokerSpawnTimer, L4D2CT_BoomerSpawnTimer, L4D2CT_HunterSpawnTimer, L4D2CT_SpitterSpawnTimer, L4D2CT_JockeySpawnTimer, L4D2CT_ChargerSpawnTimer, L4D2CT_VersusStartTimer, L4D2CT_UpdateMarkersTimer }; enum L4D2IntervalTimer { L4D2IT_SmokerDeathTimer, L4D2IT_BoomerDeathTimer, L4D2IT_HunterDeathTimer, L4D2IT_SpitterDeathTimer, L4D2IT_JockeyDeathTimer, L4D2IT_ChargerDeathTimer }; /************************************* CountdownTimer Natives ***********************************/ /** * @brief Resets a given CountdownTimer (start again with same duration) * @remarks Equivalent to Start(timer, GetCountdownDuration(timer)) * * @param timer CountdownTimer to reset * @noreturn */ // L4D2 only. native void L4D2_CTimerReset(L4D2CountdownTimer timer); /** * @brief Starts a given CountdownTimer with a given duration * @remarks This sets a new duration and sets up the end timestamp * * @param timer CountdownTimer to start * @param duration Duration for the timer to use * @noreturn */ // L4D2 only. native void L4D2_CTimerStart(L4D2CountdownTimer timer, float duration); /** * @brief Invalidates a given CountdownTimer (Timer essentially does not run) * @remarks Sets the timestamp to -1.0f * * @param timer CountdownTimer to Invalidate * @noreturn */ // L4D2 only. native void L4D2_CTimerInvalidate(L4D2CountdownTimer timer); /** * @brief Tells if a given CountdownTimer has started * @remarks Checks to see if the end timestamp is greater than 0.0f * * @param timer CountdownTimer to check * * @return true if timer has started, false if timer is not started/invalid. */ // L4D2 only. native bool L4D2_CTimerHasStarted(L4D2CountdownTimer timer); /** * @brief Tells if a given CountdownTimer is elapsed * @remarks If a timer is "up," e.g duration has passed since start, this returns true; * * @param timer CountdownTimer to check * * @return true if timer has elapsed or timer invalid/not started, false otherwise */ // L4D2 only. native bool L4D2_CTimerIsElapsed(L4D2CountdownTimer timer); /** * @brief Gets elapsed time of a given CountdownTimer, from the timed it was started * @remarks Value is (Now() - timestamp) + duration * * @param timer CountdownTimer to get elapsed time of * * @return float amount of time since timer started */ // L4D2 only. native float L4D2_CTimerGetElapsedTime(L4D2CountdownTimer timer); /** * @brief Gets remaining time on a given CountdownTimer * @remarks Value is (timestamp - Now()) * * @param timer CountdownTimer to get remaining time of * * @return float amount of time remaining on the timer */ // L4D2 only. native float L4D2_CTimerGetRemainingTime(L4D2CountdownTimer timer); /** * @brief Gets the duration of a given CountdownTimer * @remarks Value is (timestamp > 0.0f ? duration 0.0f) * * @param timer CountdownTimer to get duration of * * @return 0.0 for invalid/not started timers, timer duration otherwise. */ // L4D2 only. native float L4D2_CTimerGetCountdownDuration(L4D2CountdownTimer timer); /************************************* IntervalTimer Natives ***********************************/ /** * @brief Starts a given IntervalTimer * @remarks Just sets timestamp = Now(), so counting starts from now * * @param timer IntervalTimer to start * * @noreturn */ // L4D2 only. native void L4D2_ITimerStart(L4D2IntervalTimer timer); /** * @brief Invalidates a given IntervalTimer * @remarks Just sets timestamp = -1.0f * * @param timer IntervalTimer to Invalidate * @noreturn */ // L4D2 only. native void L4D2_ITimerInvalidate(L4D2IntervalTimer timer); /** * @brief Tells whether a given IntervalTimer has started * @remarks Checks to see if timestamp > 0.0f * * @param timer IntervalTimer to check * * @return true if timer is started, false if it is invalid/not started */ // L4D2 only. native bool L4D2_ITimerHasStarted(L4D2IntervalTimer timer); /** * @brief Gets the elapsed time of a given IntervalTimer * @remarks Value is Now() - Timestamp * * @param timer IntervalTimer to get elapsed time of * * @return Elapsed time if timer started and valid, 99999.9f otherwise */ // L4D2 only. native float L4D2_ITimerGetElapsedTime(L4D2IntervalTimer timer); // ==================================================================================================== // NATIVES - l4d2weapons.inc // ==================================================================================================== /* * 2020 Update1: Use the "Info Editor" plugin by Silvers to edit the weapon scripts and increase clip size. * 2020 Update2: Now works in Left4DHooks. Glitchy animation bug when reloading an already full weapon. * 2021 Update3: Fix plugin for modified ammo clips found here: https://forums.alliedmods.net/showthread.php?t=327105 A note regarding Clipsize: Any nonstandard value will NOT be in effect at weapon pickup, which means the client has to reload once to achieve the modified value. To fix this, add a weapon pickup hook in your plugin (eg "player_use") and use something like this with a small timer delay of 0.1 seconds or more (dont you love this engine). int weapon = GetPlayerWeaponSlot(client, 0); if( weapon == INVALID_ENT_REFERENCE ) return; char class[56]; GetEdictClassname(weapon, class, sizeof(class)); SetEntProp(weapon, Prop_Send, "m_iClip1", L4D2_GetIntWeaponAttribute(class, L4D2IWA_ClipSize)); */ enum L4D2IntWeaponAttributes { L4D2IWA_Damage, L4D2IWA_Bullets, L4D2IWA_ClipSize, MAX_SIZE_L4D2IntWeaponAttributes }; enum L4D2FloatWeaponAttributes { L4D2FWA_MaxPlayerSpeed, L4D2FWA_SpreadPerShot, L4D2FWA_MaxSpread, L4D2FWA_SpreadDecay, L4D2FWA_MinDuckingSpread, L4D2FWA_MinStandingSpread, L4D2FWA_MinInAirSpread, L4D2FWA_MaxMovementSpread, L4D2FWA_PenetrationNumLayers, L4D2FWA_PenetrationPower, L4D2FWA_PenetrationMaxDist, L4D2FWA_CharPenetrationMaxDist, L4D2FWA_Range, L4D2FWA_RangeModifier, L4D2FWA_CycleTime, L4D2FWA_PelletScatterPitch, L4D2FWA_PelletScatterYaw, MAX_SIZE_L4D2FloatWeaponAttributes }; enum L4D2BoolMeleeWeaponAttributes { L4D2BMWA_Decapitates, MAX_SIZE_L4D2BoolMeleeWeaponAttributes }; enum L4D2IntMeleeWeaponAttributes { L4D2IMWA_DamageFlags, L4D2IMWA_RumbleEffect, MAX_SIZE_L4D2IntMeleeWeaponAttributes }; enum L4D2FloatMeleeWeaponAttributes { L4D2FMWA_Damage, L4D2FMWA_RefireDelay, L4D2FMWA_WeaponIdleTime, MAX_SIZE_L4D2FloatMeleeWeaponAttributes }; /** * @brief Checks for a given weapon string to exist in the WeaponInformationDatabase * @remarks Throws an error if Database is unavailable * * @param weaponName Weapon to check up on * * @return True if weapon is found, false if not */ // L4D2 only. native bool L4D2_IsValidWeapon(const char[] weaponName); /** * @brief Read an int-typed attribute for a given weapon from the WeaponInformationDatabase * @remarks Throws an error if the weapon is not found or the attribute is incorrect * * @param weaponName Weapon to lookup attribute for * @param attr Attribute to read from the weapon's info struct * * @return The value read. */ // L4D2 only. native int L4D2_GetIntWeaponAttribute(const char[] weaponName, L4D2IntWeaponAttributes attr); /** * @brief Read a float-typed attribute for a given weapon from the WeaponInformationDatabase * @remarks Throws an error if the weapon is not found or the attribute is incorrect * * @param weaponName Weapon to lookup attribute for * @param attr Attribute to read from the weapon's info struct * * @return The value read. */ // L4D2 only. native float L4D2_GetFloatWeaponAttribute(const char[] weaponName, L4D2FloatWeaponAttributes attr); /** * @brief Set an int-typed attribute for a given weapon from the WeaponInformationDatabase to a given value * @remarks Throws an error if the weapon is not found or the attribute is incorrect * * @param weaponName Weapon to lookup attribute for * @param attr Attribute to alter in the weapon's info struct * @param value Value to set the attribute to * * @noreturn */ // L4D2 only. native void L4D2_SetIntWeaponAttribute(const char[] weaponName, L4D2IntWeaponAttributes attr, int value); /** * @brief Set a float-typed attribute for a given weapon from the WeaponInformationDatabase to a given value * @remarks Throws an error if the weapon is not found or the attribute is incorrect * * @param weaponName Weapon to lookup attribute for * @param attr Attribute to alter in the weapon's info struct * @param value Value to set the attribute to * * @noreturn */ // L4D2 only. native void L4D2_SetFloatWeaponAttribute(const char[] weaponName, L4D2FloatWeaponAttributes attr, float value); /** * @brief Retrieve the index for a given melee weapon from the Melee Weapon Database. * @remarks Index updated on OnMapStart - suggest using RequestFrame to find index. * @remarks Index can change depending on available melee weapons each map. * * @param weaponName Weapon to lookup index id for * * @return The index id. Returns -1 if no match is found or melee unavailable. */ // L4D2 only. native int L4D2_GetMeleeWeaponIndex(const char[] weaponName); /** * @brief Read an int-typed attribute for a given id from the Melee Weapon Database * @remarks Throws an error if the id is not found or the attribute is incorrect * * @param id Melee id to lookup attribute for * @param attr Attribute to read from the weapon's info struct * * @return The value read. */ // L4D2 only. native int L4D2_GetIntMeleeAttribute(int id, L4D2IntMeleeWeaponAttributes attr); /** * @brief Read a float-typed attribute for a given id from the Melee Weapon Database * @remarks Throws an error if the id is not found or the attribute is incorrect * * @param id Melee id to lookup attribute for * @param attr Attribute to read from the weapon's info struct * * @return The value read. */ // L4D2 only. native float L4D2_GetFloatMeleeAttribute(int id, L4D2FloatMeleeWeaponAttributes attr); /** * @brief Read a bool-typed attribute for a given id from the Melee Weapon Database * @remarks Throws an error if the id is not found or the attribute is incorrect * * @param id Melee id to lookup attribute for * @param attr Attribute to read from the weapon's info struct * * @return The value read. */ // L4D2 only. native bool L4D2_GetBoolMeleeAttribute(int id, L4D2BoolMeleeWeaponAttributes attr); /** * @brief Set an int-typed attribute for a given id from the Melee Weapon Database to a given value * @remarks Throws an error if the id is not found or the attribute is incorrect * * @param id Melee id to lookup attribute for * @param attr Attribute to alter in the weapon's info struct * @param value Value to set the attribute to * * @noreturn */ // L4D2 only. native void L4D2_SetIntMeleeAttribute(int id, L4D2IntMeleeWeaponAttributes attr, int value); /** * @brief Set a float-typed attribute for a given id from the Melee Weapon Database to a given value * @remarks Throws an error if the id is not found or the attribute is incorrect * * @param id Melee id to lookup attribute for * @param attr Attribute to alter in the weapon's info struct * @param value Value to set the attribute to * * @noreturn */ // L4D2 only. native void L4D2_SetFloatMeleeAttribute(int id, L4D2FloatMeleeWeaponAttributes attr, float value); /** * @brief Set a bool-typed attribute for a given id from the Melee Weapon Database to a given value * @remarks Throws an error if the id is not found or the attribute is incorrect * * @param id Melee id to lookup attribute for * @param attr Attribute to alter in the weapon's info struct * @param value Value to set the attribute to * * @noreturn */ // L4D2 only. native void L4D2_SetBoolMeleeAttribute(int id, L4D2BoolMeleeWeaponAttributes attr, bool value); // ==================================================================================================== // NATIVES - l4d2_direct.inc // ==================================================================================================== enum CountdownTimer { CTimer_Null = 0 /**< Invalid Timer when lookup fails */ }; enum IntervalTimer { ITimer_Null = 0 /**< Invalid Timer when lookup fails */ }; /* CDirector Variable access */ /** * Get the current Tank count stored by the director. * * @note This should work on any gamemode, and is a good check to see if there is a tank in play * * @return The current number of tanks in play. * @error Director address not found. */ native int L4D2Direct_GetTankCount(); /** * Returns the number of infected waiting to spawn * * @return Mob size */ native int L4D2Direct_GetPendingMobCount(); /** * Sets the number of infected waiting to spawn * * @param count Mob size * * @noreturn */ native void L4D2Direct_SetPendingMobCount(int count); /** * Get a reference to the CDirector natural mob spawn CountdownTimer * @note This timer is used to control the spawning of natural hordes. * @note This timer gets reset during unnatural hordes as well (boomer/car alarm hordes) * @note Some scripted events will effectively "take over", by reducing the mob spawn time. * * @return CountdownTimer reference to the timer, or CTimer_Null on lookup failure. */ native CountdownTimer L4D2Direct_GetMobSpawnTimer(); /** * Get a reference to a IntervalTimer that counts up from the last death of a given SI class * @note The main place I've seen these timers used is in the SI spawning algorithms (CDirector::UpdateSpecialSpawns) * @note This timer gets checked against SI respawn interval for different gamemodes, some of which are cvar controlled (e.g. versus_special_respawn_interval) * * @param class SI Class to retrieve timer for * * @return IntervalTimer reference to the timer, or ITimer_Null on lookup failure or bad class. */ // L4D2 only. native IntervalTimer L4D2Direct_GetSIClassDeathTimer(int class); /** * Get a reference to a CountdownTimer that counts down from the last attempted director-controlled spawn of an SI * @note The main place I've seen these timers used is in the SI spawning algorithms (CDirector::UpdateSpecialSpawns) * @note This timer is hard-coded to use a duration of 20.0s. * * @param class SI Class to retrieve timer for * * @return CountdownTimer reference to the timer, or CTimer_Null on lookup failure or bad class. */ // L4D2 only. native CountdownTimer L4D2Direct_GetSIClassSpawnTimer(int class); /** * Gets the number of times the tank has passed to a player. * @note When this variable is >1 the tank will be replaced with a bot when the his frustration reaches 0. * @note The initial pass from AI to a player counts as a pass. * @note As this is global on the director weird things could potentially happen if more than one tank is alive at a time with z_frustration 1. * * @return The number of passes. */ native int L4D2Direct_GetTankPassedCount(); /** * Sets the number of times the tank has passed to a player. * @note When this variable is >1 the tank will be replaced with a bot when the his frustration reaches 0. * @note The initial pass from AI to a player counts as a pass. * @note As this is global on the director weird things could potentially happen if more than one tank is alive at a time with z_frustration 1. * * @param New number of passes value * * @noreturn */ native void L4D2Direct_SetTankPassedCount(int passes); /* CDirectorVersusMode Variable access */ /** * Reads the director's stored campaign score for a given team. * * @note You can use the gamerules m_bAreTeamsFlipped property to figure out team numbers * @note The campaign scores value is also stored in gamerules, however this is the "master" version. * @note Campaign scores are only updated on round end, so this will not reflect current survivor distance score * * @param teamNumber Team number to read campaign score of, 0 or 1. * * @return Campaign score for the given team. * @error Director or Versus Director address not found. */ native int L4D2Direct_GetVSCampaignScore(int teamNumber); /** * Set the director's stored campaign score for a given team. * * @note You can use the gamerules m_bAreTeamsFlipped property to figure out team numbers * @note The campaign scores value is also stored in gamerules, however this is the "master" version. * @note Keep in mind the current survivor team's distance/bonus score will be added at the end of a round * * @param teamNumber Team number to set campaign score of, 0 or 1. * @param score Score to set for the team * * @noreturn * @error Director or Versus Director address not found. */ native void L4D2Direct_SetVSCampaignScore(int teamNumber, int score); /** * Reads the tank flow percent for a given round for versus mode * * @note You should check GetVSTankToSpawnThisRound to find out if a tank is going to be spawned for this round. * @note When the survivors reach this flow percent minus versus_boss_buffer converted to flow percent, a tank will spawn. * * @param roundNumber Round number to read tank spawn flow percent of * * @return Tank spawn flow percent for the given round * @error Director or Versus Director address not found. */ native float L4D2Direct_GetVSTankFlowPercent(int roundNumber); /** * Sets the tank flow percent for a given round for versus mode * * @note You should check GetVSTankToSpawnThisRound to find out if there is still a tank to spawn this round. * @note When the survivors reach this flow percent minus versus_boss_buffer converted to flow percent, a tank will spawn. * * @param roundNumber Round number to set tank spawn flow percent of * @param flow Floating point percent of flow distance. * * @noreturn * @error Director or Versus Director address not found. */ native int L4D2Direct_SetVSTankFlowPercent(int roundNumber, float flow); /** * Is there going to be a tank spawned during the given round * * @param roundNumber Round number to check for tank spawn on * * @return True if there is still a tank to spawn for the given round, false if it has already been spawned or will not spawn. * @error Director or Versus Director address not found. */ native bool L4D2Direct_GetVSTankToSpawnThisRound(int roundNumber); /** * Tell the director whether or not to spawn a(nother) flow distance-based tank for this round. * @note If you set this to true after a flow-distance-based tank has been spawned, this can trigger another tank to be spawned based on flow distance * * @param roundNumber Round number to set a tank spawn on * @param spawn Whether or not to spawn a flow-distance-based tank for this round. * * @noreturn * @error Director or Versus Director address not found. */ native void L4D2Direct_SetVSTankToSpawnThisRound(int roundNumber, bool spawn); /** * Reads the witch flow percent for a given round for versus mode * * @note You should check GetVSWitchToSpawnThisRound to find out if a witch is going to be spawned for this round. * @note When the survivors reach this flow percent minus versus_boss_buffer converted to flow percent, a witch will spawn. * * @param roundNumber Round number to read witch spawn flow percent of * * @return Witch spawn flow percent for the given round * @error Director or Versus Director address not found. */ native float L4D2Direct_GetVSWitchFlowPercent(int roundNumber); /** * Sets the witch flow percent for a given round for versus mode * * @note You should check GetVSWitchToSpawnThisRound to find out if there is still a witch to spawn this round. * @note When the survivors reach this flow percent minus versus_boss_buffer converted to flow percent, a witch will spawn. * * @param roundNumber Round number to set witch spawn flow percent of * @param flow Floating point percent of flow distance. * * @noreturn * @error Director or Versus Director address not found. */ native int L4D2Direct_SetVSWitchFlowPercent(int roundNumber, float flow); /** * Is there going to be a witch spawned during the given round * * @param roundNumber Round number to check for witch spawn on * * @return True if there is still a witch to spawn for the given round, false if it has already been spawned or will not spawn. * @error Director or Versus Director address not found. */ native bool L4D2Direct_GetVSWitchToSpawnThisRound(int roundNumber); /** * Tell the director whether or not to spawn a(nother) flow distance-based witch for this round. * @note If you set this to true after a flow-distance-based witch has been spawned, this can trigger another witch to be spawned based on flow distance * * @param roundNumber Round number to set a witch spawn on * @param spawn Whether or not to spawn a flow-distance-based witch for this round. * * @noreturn * @error Director or Versus Director address not found. */ native int L4D2Direct_SetVSWitchToSpawnThisRound(int roundNumber, bool spawn); /** * Get a reference to the VersusStart CountdownTimer * @note This timer controls when the saferoom door will open and PZ spawning is enabled * @note The default duration for this timer is controlled by cvar: versus_force_start_time * * @return CountdownTimer reference to the timer, or CTimer_Null on lookup failure. * @error Director address not found. */ // L4D2 only. native CountdownTimer L4D2Direct_GetVSStartTimer(); /* CDirectorScavengeMode Variable access */ /** * Get a reference to the Scavenge Round Setup CountdownTimer * @note This timer controls when the scavenge "warmup" time ends and PZ/game timers start. * @note The default duration for this timer is controlled by cvar: scavenge_round_setup_time * * @return CountdownTimer reference to the timer, or CTimer_Null on lookup failure. * @error Director address not found. */ // L4D2 only. native CountdownTimer L4D2Direct_GetScavengeRoundSetupTimer(); /** * Get a reference to the Scavenge Overtime Grace CountdownTimer * @note This timer keeps track of how long survivors have gone without holding a can during overtime. * @note The default duration for this timer is controlled by cvar: scavenge_overtime_grace_time * * @return CountdownTimer reference to the timer, or CTimer_Null on lookup failure. * @error Director address not found. */ // L4D2 only. native CountdownTimer L4D2Direct_GetScavengeOvertimeGraceTimer(); /* TerrorNavMesh Variable access */ /** * Get the max flow distance (in flow units) for the current map. * @note The flow distance for each map is generated as it is loaded, and it can change slightly (a few hundred units) with each load. * @note You can use this value to convert a flow distance to a flow percent, and vice versa. * * @return Max flow distance for the current loaded map. * @error TerrorNavMesh address not found. */ native float L4D2Direct_GetMapMaxFlowDistance(); /* CTerrorPlayer Variable access */ /** * Get a reference to a CountdownTimer that tracks when an SI player can next spawn. * @note The duration of this timer is controlled by the cvars z_ghost_delay_min and z_ghost_delay_max. * * @param client Client id to get the spawn timer for * * @return CountdownTimer reference to the timer, or CTimer_Null on lookup failure. * @error Invalid client. */ // L4D2 only. native CountdownTimer L4D2Direct_GetSpawnTimer(int client); /** * Get a reference to a CountdownTimer that tracks when an survivor player is invulnerable due to "godframes". * * @param client Client id to get the godframes timer for * * @return CountdownTimer reference to the timer, or CTimer_Null on lookup failure. * @error Invalid client. */ native CountdownTimer L4D2Direct_GetInvulnerabilityTimer(int client); /** * Looks up the number of tickets a client has for entry into the tank lottery. * @note The number of tickets you have is equal to your damage done as an SI and will still increase as you do damage with the Tank. * @note When the tank is passed away from you your tickets are set back to zero. * * @param client Client id to get the tickets for * * @return Number of tickets. * @error Invalid client. */ native int L4D2Direct_GetTankTickets(int client); /** * Sets the number of tickets a player has for entry into the tank lottery. * * @param client Client id to set the tickets for * @param tickets New value for the client's tank lottery tickets * * @noreturn * @error Invalid client. */ native void L4D2Direct_SetTankTickets(int client, int tickets); /** * Gets a client's shove penalty. * @note The returned value will be between 0 and z_gun_swing_{vs,coop}_max_penalty. * * @param client Client id * * @return Shove penalty or -1 on error */ // L4D2 only. native int L4D2Direct_GetShovePenalty(int client); /** * Sets a client's shove penalty. * @note The penalty should be set between 0 and z_gun_swing_{vs,coop}_max_penalty. * * @param client Client id * @param penalty Shove penalty * * @noreturn */ // L4D2 only. native void L4D2Direct_SetShovePenalty(int client, int penalty); /** * Gets the time at which a survivor can perform his next +attack2. * * @param client Client id * * @return Time or 0.0 on error */ // L4D2 only. native float L4D2Direct_GetNextShoveTime(int client); /** * Sets the time at which a survivor can perform his next +attack2. * * @param client Client id * @param time Game time * * @noreturn */ // L4D2 only. native void L4D2Direct_SetNextShoveTime(int client, float time); /** * Gets the health of the survivor from before they were incapacitated * @note This may only apply to hanging players * * @param client Client id * * @return Real health before incapacitation */ // L4D2 only. native int L4D2Direct_GetPreIncapHealth(int client); /** * Sets the health of the survivor from before they were incapacitated * @note This may only apply to hanging players * * @param client Client id * @param health New pre-incap health * * @noreturn */ // L4D2 only. native void L4D2Direct_SetPreIncapHealth(int client, int health); /** * Gets the temporary health of the survivor from before they were incapacitated * @note This may only apply to hanging players * * @param client Client id * @return Temporary health before incapacitation */ // L4D2 only. native int L4D2Direct_GetPreIncapHealthBuffer(int client); /** * Sets the health of the survivor from before they were incapacitated * @note This may only apply to hanging players * * @param client Client id * @param health New pre-incap temporary health * * @noreturn */ // L4D2 only. native void L4D2Direct_SetPreIncapHealthBuffer(int client, int health); /** * Gets the maximum number of flames a CInferno is allowed to spawn. * * @param entity Entity id * * @return Number of flames or -1 on error */ // L4D2 only. native int L4D2Direct_GetInfernoMaxFlames(int entity); /** * Sets the maximum number of flames a CInferno is allowed to spawn. * * @param entity Entity id * @param flames Number of flames * * @noreturn */ // L4D2 only. native void L4D2Direct_SetInfernoMaxFlames(int entity, int flames); /** * Returns the CDirectorScriptedEventManager address. * This native replicates "L4D2_GetCDirectorScriptedEventManager" used by other plugins. * * @return Address pointer */ // L4D2 only. native int L4D2Direct_GetScriptedEventManager(); /** * Get the TerrorNavArea which holds a specific position. * @note Some positions will not return a nav area (Address_Null). Notable examples are saferooms and small ledges like the guard rail at the start of c2m1_highway. * @remarks This is less reliable than L4D_GetNearestNavArea. * * @param pos The position to find the containing nav area of * @param beneathLimit * * @return Address to a TerrorNavArea or Address_Null * @error Unable to prepare SDK call */ native Address L4D2Direct_GetTerrorNavArea(float pos[3], float beneathLimit = 120.0); /** * Find the distance through the map (in flow units) that a TerrorNavArea is located. * * @param pTerrorNavArea Pointer to a TerrorNavArea * * @return The flow units through the map that the TerrorNavArea is located at. * @error When passed an Address_Null */ native float L4D2Direct_GetTerrorNavAreaFlow(Address pTerrorNavArea); /** * Force the director to pass the tank. * * @param client Client index of the tank * @param bEnterStasis Should the tank be put in stasis * * @return False on error otherwise true */ native bool L4D2Direct_TryOfferingTankBot(int client, int bEnterStasis); /** * Gets a player's distance in flow units. * * @param client Client ID * * @return 0.0 on error otherwise flow distance */ native float L4D2Direct_GetFlowDistance(int client); /** * Plays the specified animation for a player * @note The event argument is NOT the same as the sequence numbers found in the model viewer * @note You can get the number for your animation by looking at the disasm for virtual calls to DoAnimationEvent * * @param client * @param event PlayerAnimEvent_t * * @noreturn */ native void L4D2Direct_DoAnimationEvent(int client, int event); /** * Get the clients health bonus. * * @note Survivors health bonuses are 0 until CTerrorPlayer:RecalculateVersusScore(void) calculates it. * * @param client Client id whose health bonus is to be returned. * @return Int value of the survivors health bonus. */ // L4D1 only. native int L4DDirect_GetSurvivorHealthBonus(int client); /** * Sets the clients health bonus. * * @note Keep in mind the individual survivors health bonus will be recalculate again when CTerrorPlayer:RecalculateVersusScore(void) is invoked. * @note L4D_OnRecalculateVersusScore(client) forward (left4downtown exts) can block health bonus from being calculated to store your own value with this function. * * @param client Client id to set the health bonus for * @param health Number of health bonus * @param recompute If true, L4DDirect_RecomputeTeamScores() is called after the health bonus has been set * @noreturn * @error Invalid client. */ // L4D1 only. native void L4DDirect_SetSurvivorHealthBonus(int client, int health, bool recompute = true); /** * Compute the scores on the scoreboard * * @noparam * @return False on error otherwise true * @error SDK call preparation failed */ // L4D1 only. native void L4DDirect_RecomputeTeamScores(); /* CountdownTimer funcs */ /** * Reset a CountdownTimer to begin counting down again from now to its original duration * * @param timer CountdownTimer to reset * * @noreturn */ native void CTimer_Reset(CountdownTimer timer); /** * Start a CountdownTimer from now for a given duration * * @param timer CountdownTimer to reset * @param duration Duration for this CountdownTimer to use, in seconds * * @noreturn */ native void CTimer_Start(CountdownTimer timer, float duration); /** * Invalidate a CountdownTimer, so it is considered not running * * @param timer CountdownTimer to Invalidate * * @noreturn */ native void CTimer_Invalidate(CountdownTimer timer); /** * Determine if a CountdownTimer has started counting down. * * @param timer CountdownTimer to check * * @return True if it has started running, False if it is not (Invalidated) */ native bool CTimer_HasStarted(CountdownTimer timer); /** * Determine if a CountdownTimer is elapsed. * * @param timer CountdownTimer to check * * @return True if the timer's duration has passed since it started, false otherwise. */ native bool CTimer_IsElapsed(CountdownTimer timer); /** * Check how long a CountdownTimer has been running * * @param timer CountdownTimer to check * * @return Time since the CountdownTimer was last Started or Reset, in seconds. */ native float CTimer_GetElapsedTime(CountdownTimer timer); /** * Check how much time remains before a CountdownTimer is elapsed. * * @param timer CountdownTimer to check * * @return Time until the CountdownTimer is elapsed, in seconds. */ native float CTimer_GetRemainingTime(CountdownTimer timer); /** * Get the countdown duration used for a CountdownTimer * * @param timer CountdownTimer to check * * @return Countdown duration in seconds if timer is running, or 0.0 if timer is invalidated (not running) */ native float CTimer_GetCountdownDuration(CountdownTimer timer); /* IntervalTimer funcs */ /** * Reset an IntervalTimer to begin counting up again from now * * @param timer IntervalTimer to reset * * @noreturn */ native void ITimer_Reset(IntervalTimer timer); /** * Start an IntervalTimer to begin counting up from now * * @note This is the same as reset for IntervalTimers... * * @param timer IntervalTimer to start * * @noreturn */ native void ITimer_Start(IntervalTimer timer); /** * Invalidate an IntervalTimer, so it is considered not running * * @param timer IntervalTimer to Invalidate * * @noreturn */ native void ITimer_Invalidate(IntervalTimer timer); /** * Check if an IntervalTimer has started * * @param timer IntervalTimer to check * * @return True if the IntervalTimer is running, false if it is Invalidated */ native bool ITimer_HasStarted(IntervalTimer timer); /** * Get the elapsed time of an IntervalTimer * * @param timer IntervalTimer to check * * @return Elapsed time of the IntervalTimer in seconds if it has started, or 99999.9 ("infinite") if it is Invalidated */ native float ITimer_GetElapsedTime(IntervalTimer timer); /* Timer Internals */ /** * Read duration variable in CTimer * * @param timer CountdownTimer to check * * @return CountdownTimer duration value */ native float CTimer_GetDuration(CountdownTimer timer); /** * Set duration variable in CTimer * * @param timer CountdownTimer to check * @param duration Duration to set * * @noreturn */ native void CTimer_SetDuration(CountdownTimer timer, float duration); /** * Read timestamp variable in CTimer * * @param timer CountdownTimer to check * * @return CountdownTimer duration value */ native float CTimer_GetTimestamp(CountdownTimer timer); /** * Set timestamp variable in CTimer * * @param timer CountdownTimer to check * @param timestamp Timestamp to set * * @noreturn */ native void CTimer_SetTimestamp(CountdownTimer timer, float timestamp); /** * Read timestamp variable in ITimer * * @param timer IntervalTimer to check * * @return IntervalTimer duration value */ native float ITimer_GetTimestamp(IntervalTimer timer); /** * Set timestamp variable in ITimer * * @param timer IntervalTimer to check * @param timestamp Timestamp to set * * @noreturn */ native void ITimer_SetTimestamp(IntervalTimer timer, float timestamp); // ==================================================================================================== // NATIVES - l4d2addresses.txt // ==================================================================================================== /** * @brief Creates the boomer vomit effect on Survivors or Special infected * * @param client Client ID of the person to affect * @param attacker Client ID who caused the blindness, can be the same as client * * @noreturn */ native void L4D_CTerrorPlayer_OnVomitedUpon(int client, int attacker); /** * @brief Creates the boomer vomit effect on Survivors or Special infected * * @param client Client ID of the person to affect * @param attacker Client ID who caused the blindness, can be the same as client * * @noreturn */ // L4D2 only. native void L4D2_CTerrorPlayer_OnHitByVomitJar(int client, int attacker); /** * @brief Creates the boomer vomit effect on Common infected * * @param entity Entity ID of the common to affect * @param attacker Client ID who caused the blindness, can be the same as client * * @noreturn */ // L4D2 only. native void L4D2_Infected_OnHitByVomitJar(int entity, int attacker); /** * @brief Flings a player to the ground, like they were hit by a Charger * * @param client Client ID of the person to affect * @param attacker Client ID who caused the attack, can be the same as client * @param vecDir Vector direction to throw the player * * @noreturn */ // L4D2 only. native void L4D2_CTerrorPlayer_Fling(int client, int attacker, float vecDir[3]); /** * @brief Cancels a player staggering * * @param client Client ID of the person to affect * * @noreturn */ native void L4D_CancelStagger(int client); /** * @brief Spawns all dead survivors in rescuable rooms. * @remarks L4D1: Any survivor must not be in the starting area for it to work. * @remarks L4D2: Any survivor must have left the starting area for it to work, they can return and all be in the starting area. * @remarks By default the game would spawn one per frame, but I've added a RequestFrame loop to spawn all dead. Request if you want a singular spawn native. * * @noreturn */ native void L4D_CreateRescuableSurvivors(); /** * @brief Revives an incapacitated survivor, also from ledge hanging * * @param client Client ID of the person to affect * * @noreturn */ native void L4D_ReviveSurvivor(int client); /** * @brief Retrieve a clients map flow progress percentage. Doesn't have to be Versus mode * * @param client Client ID of the person to affect * * @return Returns value from 0-100 */ // L4D2 only. native int L4D2_GetVersusCompletionPlayer(int client); /** * @brief Returns client who is furthest in flow * * @return Client ID of the player furthest ahead */ native int L4D_GetHighestFlowSurvivor(); /** * @brief Retrieve the specified common infected map flow distance * * @param entity Common infected ID * * @return flow distance */ native float L4D_GetInfectedFlowDistance(int entity); /** * @brief Takeover another special infected. * @remarks L4D1: Due to some bug and a workaround, when spawning you'll hear another special infected sound other than your own type * * @param client Client ID of the special infected taking over * @param target Client ID of the special infected losing control * * @noreturn */ native void L4D_TakeOverZombieBot(int client, int target); /** * @brief Replaces the player with a bot * @remarks Survivors: makes the player go into spectator mode and a bot takeover, like going idle * @remarks Infected: basically spawns an identical bot in your position. The client is forced into ghost mode * * @param client Client ID of the player losing control * * @noreturn */ native void L4D_ReplaceWithBot(int client); /** * @brief Kills the player. Teleports their view to a random survivor * * @param client Client ID of the player to kill. Not common infected * * @noreturn */ native void L4D_CullZombie(int client); /** * @brief Sets a players zombie class, special infected can be alive and change! * @remarks Valid values L4D1: 1-3. L4D2: 1-6 * @remarks zombieClass: 1=Smoker, 2=Boomer, 3=Hunter, 4=Spitter, 5=Jockey, 6=Charger * * @param client Client ID of the player to kill. Not common infected * @param zombieClass Zombie class number to change to * * @noreturn */ native void L4D_SetClass(int client, int zombieClass); /** * @brief Spawns a special infected from ghost state. Returns the clients "m_customAbility" weapon, or -1 on error (possibly not a ghost) * * @param client Client ID of the player to materialize * * @return Clients "m_customAbility" weapon entity ID or -1 on error. */ native int L4D_MaterializeFromGhost(int client); /** * @brief Turns an alive player into the ghost state * * @param client Client ID of the player to affect * * @return True on success, false on error or if already ghost state */ native bool L4D_BecomeGhost(int client); /** * @brief Enter ghost/dead mode. Some state values may have different results. Unknown. * @remarks 6 and 8 are commonly used by the game. * * @param client Client ID of the player to affect * * @noreturn */ native void L4D_State_Transition(int client, int state); /** * @brief Swaps the teams in Versus * @remarks Some survivors may spawn dead on swapping, seems to be random * * @noreturn */ // L4D2 only. native void L4D2_SwapTeams(); /** * @brief Returns if Versus team are flipped * * @return 0=Not flipped. 1=Flipped */ // L4D2 only. native bool L4D2_AreTeamsFlipped(); /** * @brief Starts a Versus rematch vote like end of game before credits roll * @remarks Failing a successful vote players are kicked back to lobby * * @noreturn */ // L4D2 only. native void L4D2_StartRematchVote(); /** * @brief Seems to restart the chapter like "mp_restartgame". In Versus the teams flip. * * @noreturn */ // L4D2 only. native void L4D2_FullRestart(); /** * @brief Hides end of round scoreboard. * * @noreturn */ // L4D2 only. native void L4D2_HideVersusScoreboard(); /** * @brief Hides end of round scoreboard. * * @noreturn */ // L4D2 only. native void L4D2_HideScavengeScoreboard(); /** * @brief Hides end of round scoreboard. * * @noreturn */ // L4D2 only. native void L4D2_HideScoreboard(); /** * @brief NOT WORKING? Setup car alarm for object. Seems to have no affect. Only works on prop_breakable or prop_car_alarm? * * @return Some memory address (large value) or possibly ID if already registered (low value from 1+) */ native int L4D_RegisterForbiddenTarget(int entity); /** * @brief NOT WORKING? Remove car alarm for object. Seems to have no affect. Only works on prop_breakable or prop_car_alarm? * * @return Some memory address (large value) or possibly ID if already registered (low value from 1+) */ native void L4D_UnRegisterForbiddenTarget(int entity);