tf_zombie


tf_zombie
is a point entity available in Team Fortress 2.
Contents
Entity Description
An AI-controlled entity that attacks players. Despite the name, the entity is a skeleton and not a zombie.
Two skeleton types exist: team-colored and green. Team-colored Skeletons can only attack or receive damage from the opposite team, green Skeletons can attack or receive damage from either team.
There are 3 different sizes of Skeletons: Small, Normal, and Kings. Normal Skeletons, when destroyed, drop 3 glowing skulls which then sprout into 3 Small Skeletons that then attack until destroyed.
Skeletons can be spawned/controlled by a tf_zombie_spawner.

Keyvalues
TeamNum:
- Initial Team
(TeamNum)
<choices> - Which Team the entity belongs / is assigned to on spawn
- 0: None
- 1: Spectator/Halloween Souls
- 2: RED
- 3: BLU/Robots
- 5: Halloween Bosses (only in
) !FGD
EnableDisable:
- Start Disabled
(StartDisabled)
<boolean> - Stay dormant until activated (with the
Enable
input).
BaseNPC:
- Relationship <string> !FGD
- Changes whether this NPC likes or dislikes certain others. Used like the ai_relationship entity, with this NPC as the subject. Format:
<string|targetname or classname> <string|disposition> <int|rank>
. - Values for
disposition
are:D_HT
: HateD_FR
: FearD_LI
: LikeD_NU
: Neutral
- Target Path Corner
(target)
<targetname> - The path_corner that this NPC will move to after spawning.
- Squad Name
(squadname)
<string> - NPCs that are in the same squad (i.e., have matching squad names) will share information about enemies and will take turns attacking and covering each other.
- Hint Group
(hintgroup)
<string> - Hint groups are used by NPCs to restrict their hint-node searching to a subset of the map's hint nodes. Only hint nodes with matching hint group names will be considered by this NPC.
- Hint Limit Nav
(hintlimiting)
<boolean> - Limits NPC to using specified hint group for navigation requests. Does not limit local navigation.
- Sleep State
(sleepstate)
<choices> - Holds the NPC in stasis until specified condition. See also Wake Radius and Wake Squad.
- 0: None
- 1: Waiting for threat
- 2: Waiting for PVS
- 3: Waiting for input, ignore PVS
- 4: Auto PVS
- 5: Auto PVS after PVS
- Wake Radius
(wakeradius)
<float> - Auto-wake if player comes within this distance.
- Wake Squad
(wakesquad)
<boolean> - Wake all of the NPCs squadmates if the NPC is woken.
- Enemy Filter
(enemyfilter)
<targetname> - Filter entity to test targets against.
- Ignore unseen enemies
(ignoreunseenenemies)
<boolean> - Prefers visible enemies, regardless of distance or relationship priority.
- Physics Impact Damage Scale
(physdamagescale)
<float> - Scales damage energy when this character is hit by a physics object. With a value of 0 the NPC will take no damage from physics.
Base:
- Parent
(parentname)
<targetname> - Maintain the same initial offset to this entity. An attachment point can also be used if separated by a comma at the end. (
parentname [targetname],[attachment]
)Tip:Entities transition to the next map with their parents
Tip:phys_constraint can be used as a workaround if parenting fails.
- Origin (X Y Z)
(origin)
<coordinates> - The position of this entity's center in the world. Rotating entities typically rotate around their origin.
Note:Hammer does not move the entities accordingly only in the editor.
- Pitch Yaw Roll (X Y Z)
(angles)
<angle> - This entity's orientation in the world. Pitch is rotation around the Y axis, yaw is the rotation around the Z axis, roll is the rotation around the X axis.
Note:This works on brush entities, although Hammer doesn't show the new angles.
- Classname
(classname)
<string> !FGD - Determines the characteristics of the entity before it spawns.
Tip:Changing this on runtime still has use, like making matching an entry in S_PreserveEnts will persist the entity on new rounds!
BaseAnimating:
- Skin
(skin or ModelSkin
<integer>)
- Some models have multiple skins. This value selects from the index, starting with 0.
- Collisions
(solid)
<choices> - Method of collision for this entity.
- Body Group
(body or SetBodyGroup)
<integer> !FGD - Sets the the active $bodygroup.
- Model Index
(modelindex)
<short> !FGD - Given the number index from dumping the
cl_precacheinfo modelprecache
table, sets entity model to the index.Warning:If an entity has animations that will be played, then the set model also must have its own sequences, else the game crashes.
- Model Scale
(modelscale)
<float> (in all games since) (not in
) !FGD
- A multiplier for the size of the model. Negative values are accepted. Does not alter the physics collisions in most cases, however.
Warning:Negative or extremely high values can cause crashes!
DXLevelChoice:
- Minimum DX Level
(mindxlevel)
<choices> (removed since)
- The entity will not exist if the engine is running outside the given range of DirectX Versions.
Warning: If these are used, the object may break when the user switches their DirectX settings.
Animating
- Sequence
(sequence)
<integer> !FGD - Default animation sequence for the model to be playing after spawning.
- Playback Rate
(playbackrate)
<float> !FGD - A multiplier of the framerate at which animations are played, negative values are accepted. Default is 1.0.
- Texture Frame
(texframeindex)
<integer> !FGD - The initial frame number for all animated textures on this entity.
Effects - Render
- Start Fade Distance
(fademindist)
<float> - Distance at which the entity starts fading. If 0 or less, the entity will disappear instantly when end fade is hit. The value will scale appropriately if the entity is in a 3D Skybox.
- End Fade Distance
(fademaxdist)
<float> - Distance at which the entity ends fading. If 0 or less, the entity won't disappear at all. The value will scale appropriately if the entity is in a 3D Skybox.
- Fade Scale
(fadescale)
<float> - If specified in the worldspawn, or if the engine is running below DirectX 8, entities will fade out even if the fade distances above aren't specified. This value gives more control over when this happens: numbers smaller than 1 cause the entity to fade out at further distances, and greater than 1 cause it to fade out at closer distances. Using 0 turns off the forced fade altogether. See also $noforcedfade.
- FX Amount/Transparency (0–255)
(renderamt)
<integer> - Transparency amount, requires a Render Mode other than Normal. 0 is invisible, 255 is fully visible.
- Render Color (R G B)
(rendercolor)
<color255> - Color tint.
- Render FX
(renderfx)
<choices> - Various somewhat legacy alpha effects.


- 0: None
- 1: Slow Pulse (varies alpha by ±16 over a period of 1.5 s)
- 2: Fast Pulse (varies alpha by ±16 over a period of 0.4 s)
- 3: Slow Wide Pulse (varies alpha by ±64 over a period of 1.5 s)
- 4: Fast Wide Pulse (varies alpha by ±64 over a period of 0.4 s)
- 5: Slow Fade Away (decreases alpha by -1 per frame/(in all games since
) Fades out over 4 s)
- 6: Fast Fade Away (decreases alpha by -4 per frame/(in all games since
) Fades out over 1 s)
- 7: Slow Become Solid (increases alpha by +1 per frame/(in all games since
) Fades in over 4 s)
- 8: Fast Become Solid (increases alpha by +4 per frame)
- 9: Slow Strobe (transparent 0.8 s, visible 0.8 s, repeat)
- 10: Fast Strobe (transparent 0.2 s, visible 0.2 s, repeat)
- 11: Faster Strobe (transparent 0.09 s, visible 0.09 s, repeat)
- 12: Slow Flicker (transparent 0.18 s, visible 1.5 s, repeat)
- 13: Fast Flicker (transparent 0.14 s, visible 0.2 s, repeat)
- 14: Constant Glow ("NoDissipation;" purpose uncertain—for sprites?) (not in
)
- 15: Distort (causes unnatural flickering and position shifting)
- 16: Fade In (instant; not very useful outside of code)
- 17: Scale Up ("Explode"/"scale up really big!" causes wild stretching of model parts) (in
)
Confirm:which branches/games is it available in, and where does it do what?
- 18: Glow Shell (purpose unclear) (in all games since
) (not in
)
Confirm:what does this do? and which games is it in?
- 19: Clamp Minimum Scale ("keep this sprite from getting very small (SPRITES only!)") (not in
)
- 20: Environmental Rain ("for environmental rendermode, make rain") (in
) (not in
)
Confirm:which games? may be nonfunctional.
- 21: Environmental Snow ("for environmental rendermode, make snow") (in
) (not in
)
Confirm:which games? may be nonfunctional.
- 22: Spotlight FX ("TEST CODE for experimental spotlight") (in
) (not in
)
- 23: Ragdoll ("HACKHACK: TEST CODE for signalling death of a ragdoll character;" ragdolls an entity but doesn't kill it) (in
) (not in
)
Confirm:which games? may be nonfunctional?
- 24: Fade Wider Pulse (varies alpha by ±255 over a period over a period of 0.26 s) (in
) (not in
)
- 25:
kRenderFXMax
/Fade Near
- To do: what does this do? may be nonfunctional
- Render Mode
(rendermode)
<choices> - Set a non-standard rendering mode on this entity.
Effects - Environment
- Disable Shadows
(disableshadows)
<boolean> - Prevent the entity from creating cheap render-to-texture shadows. Does not affect shadow mapping.
- Disable Receiving Shadows
(disablereceiveshadows)
<boolean> - Prevent the entity from receiving shadows on itself.
- Shadow Cast Distance
(shadowcastdist)
<integer> - Sets how far the entity casts dynamic shadows. 0 means default distance from the shadow_control entity.
- Lighting Origin
(LightingOrigin)
<targetname> - Select an entity (not info_lighting!) from which to sample lighting instead of the entity's origin.
Lighting Origin Offset(not in(LightingOriginHack)
<targetname>) !FGD
- Deprecated. The info_lighting_relative from which to sample lighting instead of the entity's origin. Use Lighting Origin instead.
Inputs
TFTeam:
SetTeam
<integer>- Changes the entity's Team keyvalue.
EnableDisable:
Enable
Disable
- Enable/disable this entity from performing its task. It might also disappear from view.
BaseNPC:
AddHealth
<integer> (in all games since)
RemoveHealth
<integer> (in all games since)
- Add to or remove from the NPC's health.
SetHealth
<integer>- Set the NPC's health.
Break
- Smash into pieces. If this is not possible, disappear.
BecomeRagdoll
(in all games since)
- Remove itself and instantly become a ragdoll with zero force (just go limp). OnDeath, etc. outputs will NOT be fired.
ForceInteractionWithNPC <string> <string>
(in all games since)
- Force the NPC to use a dynamic interaction with another NPC. Syntax is <targetname> <dynamic interaction>.
ForgetEntity
<targetname>- Clears out the NPC's knowledge of a named entity.
UpdateEnemyMemory
(in all games since)
- Update (or create) this NPC's memory of of the given entity.
GagEnable
GagDisable
- Gagged NPCs won't speak (or moan, caw, etc.) unless made to be a choreographed scene.
UnholsterWeapon
(in all games since)
- Force the NPC to holster or unholster their weapon. Ignored if the NPC is scripting or if the NPC doesn't use weapons.
HolsterAndDestroyWeapon
(in all games since)
- Same as
HolsterWeapon
, except the weapon is destroyed once it has been concealed.
IgnoreDangerSounds
<float>- Ignore danger sounds for the specified number of seconds.
physdamagescale
<float>- Scales the damage taken when this character is hit by a physics object. 0 means this feature is disabled for backwards compatibility.
SetBodyGroup
<integer>- HACK: Sets this NPC's body group (from 0–n).
SetMaxLookDistance
<float> (only in)
- Sets the maximum look distance for the NPC. Defaults are 2048 and 6000 for long range NPCs.
SetRelationship <string|targetname or classname> <string|disposition> <int|rank>
- Changes whether this NPC likes or dislikes certain others. Used like the ai_relationship entity, with this NPC as the subject.
- Values for
disposition
are:D_HT
: HateD_FR
: FearD_LI
: LikeD_NU
: Neutral
SetSquad
<string>- Change the name of this NPC's squad. Leaving the parameter blank will remove the NPC from any existing squad.
StartScripting
StopScripting
- Enter/exit scripting state, where NPCs ignore a variety of stimulus that would make them break out of their scripts. They ignore danger sounds, ignore +Use, don't idle speak or respond to other NPCs' idle speech, and so on.
Wake
- Wakes up the NPC if it is sleeping.
Base:
AddContext
<string>- Adds to the entity's list of response contexts. Format is
<key>:<value>
.
AddOutput
<string>- Assigns a new keyvalue/output on this entity. For keyvalues, some rely on extra necessary code to be ran and won't work if its simply just changed through this input. There is a strict format that must be followed:
// Format of changing KeyValues: "AddOutput [key] [value]"
//// Raw text:
"OnUser1" "!self,AddOutput,targetname new_name"
// Format of adding an Output: "AddOutput {targetname}:{inputname}:{parameter}:{delay}:{max times to fire, -1 means infinite}"
//// Raw text:
"OnUser1" "!self,AddOutput,OnUser1:SetParent:!activator:0.0:-1"
// Arguments can be left blank, but the empty blank should still be contained.
//// Raw text:
"OnUser1" "!self,AddOutput,OnUser1:ClearParent::0.0:-1"
ClearContext
- Removes all contexts from this entity's list.
ClearParent
- Removes this entity from the the movement hierarchy, leaving it free to move independently.
FireUser1
toFireUser4
- Fires the respective
OnUser
outputs; see User Inputs and Outputs.
Kill
- Removes this entity and any entities parented to it from the world.
KillHierarchy
- Functions the same as
Kill
, although this entity and any entities parented to it are killed on the same frame, being marginally faster thanKill
input.
RemoveContext
<string>- Remove a context from this entity's list. The name should match the key of an existing context.
SetParent
<string>- Move with this entity. See Entity Hierarchy (parenting).
SetParentAttachment
<string>- Change this entity to attach to a specific attachment point on its parent. The entity will teleport so that the position of its root bone matches that of the attachment. Entities must be parented before being sent this input.
SetParentAttachmentMaintainOffset
<string>- As above, but without teleporting. The entity retains its position relative to the attachment at the time of the input being received.
DispatchResponse
<string> !FGD- Dispatches a response to the entity. See Response and Concept.
DispatchEffect
<string> (removed since) !FGD
- Dispatches a special effect from the entity's origin; see also List of Client Effects. Replaced by the particle system since
.
RunScriptFile
<script> (in all games since) (also in
)
- Execute a VScript file from disk, without file extension. The script contents are merged with the script scope of the receiving entity.
RunScriptCode
<string> (in all games since) (also in
)
- Execute a string of VScript source code in the scope of the entity receiving the input. String quotation may be needed when fired via console.
Bug:In Hammer, using string arguments will corrupt the VMF file's structure, making the file unviewable for the next Hammer session.
Fix:Remove the string argument manually with a text editor.
CallScriptFunction
<string> (in all games since) (also in
) !FGD
- Calls a VScript function defined in the scope of the receiving entity.
TerminateScriptScope
(only in) !FGD
- Destroys the script scope of the receving entity.
SetLocalOrigin
<coordinates> (in all games since) !FGD
- Send this entity to a spot in the map. If the entity is parented to something, it will be offset from the parent by this amount.
Model:
SetBodyGroup
<integer>- Sets the the active $bodygroup.
Ignite
- Makes the entity catch on fire indefinitely.
IgniteLifetime
<float>- Makes the entity catch on fire for a given amount of time.
IgniteNumHitboxFires
<integer> (removed since)
- Makes the entity catch on fire with a given number of hitbox fire particles. Does not function correctly in
onward.
IgniteHitboxFireScale
<float> (removed since)
- Makes the entity catch on fire with a given scale for hitbox fire particles. Does not function correctly in
onward.
BecomeRagdoll
- Kills the entity and creates a client-side ragdoll from the model. Input is only passed if the model contains $collisionjoints. For other models, phys_convert can be used instead.
SetLightingOrigin
<targetname>- Sets the entity's lighting origin to use this entity's position.
(removed sinceSetLightingOriginHack
<targetname>)
- Deprecated. Offsets the entity's lighting origin by their distance from an info_lighting_relative. Use
SetLightingOrigin
instead.
fademindist
<float>- Sets distance at which the entity starts fading. If <0, the entity will disappear instantly when end fade is hit. The value will scale appropriately if the entity is in a 3D Skybox.
fademaxdist
<float>- Sets distance at which the entity ends fading. If <0, the entity won't disappear at all. The value will scale appropriately if the entity is in a 3D Skybox.
SetModelScale
<vector> (only in)
- Multiplies the size of the model. Does not alter the physics collisions in most cases. Can take two values separated by a space, in which case the first value would be the target model scale and the second value would be the number of seconds the change in scale will be spread over. If there is no second value, the model will scale instantly.
Tip: The
modelscale
keyvalue can be AddOutputed as a workaround for other games with this input missing.

SetCycle
<float> (only in)
- Skip to a specific point in the current animation.
SetModel
<string> (only in)
- Changes the model to the specified path. Form of models/ammo/ammo_us.mdl.

SetPlayBackRate
<float> (only in)
- Change the animation speed multiplier.
Alpha
<integer>- Sets the entity's transparency to a number from 0 (invisible) to 255 (fully visible). Requires the entity to have its Render Mode (rendermode) set to a number other than 0.
AlternativeSorting
<boolean>- Swaps the rendering order of the entity. Used to attempt to fix sorting problems when rendering, for example an object rendering in front of translucent materials.
Color
<color255>- Sets an RGB color for the entity.
SetDamageFilter
<targetname>- Sets a filter for this entity for when it receives damage.
EnableDamageForces
- Allows the entity to be pushed by damage done to it (usually force amount correlates with the damage done).
DisableDamageForces
- Prevents the entity from being pushed by damage done to it.
Reflection:
DisableDrawInFastReflection
(in all games since)
- Turns off rendering of this entity in reflections when using
$reflectonlymarkedentities
in water material.
EnableDrawInFastReflection
(in all games since)
- Turn on rendering of this entity in reflections when using
$reflectonlymarkedentities
in water material.
Shadow:
DisableShadow
- Turn dynamic shadows off for this entity. Identical to applying EF_NOSHADOW.
EnableShadow
- Turn dynamic shadows on for this entity.
DisableReceivingFlashlight
(in all games since)
- This object will not receive light or shadows from projected textures.
DamageFilter:
Outputs
OnDeath
- Fired when the skeleton dies.
Base:
OnUser1
toOnUser4
- These outputs each fire in response to the firing of the like-numbered
FireUser1
toFireUser4
Input; see User Inputs and Outputs.