Spirit Entity Guide
Version 1.0 (8th December 2002 )

Legend:
indicates features unique to Spirit.
indicates features new to version 1.0.

General Information:


For any "target" type value, you can use a "+" or "-" prefix to specify that the target should be turned on or off, respectively. (e.g. suppose you have an entity which targets "mylight". If you tell it to target "+mylight" instead, then it will only turn the light on, never off.)
Similarly, for any Master, you can invert the master relationship (that is, you can disable the entity whenever the master is on) by adding a tilde (~) at the start of the master's name.


When testing your level, it's sometimes helpful to be able to trigger entities manually. To trigger an entity named "mydoor", you can simply type "fire mydoor" at the console. Similarly, if you just type "fire", you will trigger whatever entity the player is aiming at.
NB: this command will only work if sv_cheats is set to 1.


Contents:

worldspawn
aiscripted_sequence
ambient_generic
ammo_ entities
button_target
calc_ entities
cycler_ entities
env_ entities
func_ entities
game_ entities
gibshooter
hud_sprite
infodecal
info_ entities
item_ entities
light_ entities
momentary_ entities
locus_ entities
monster_ entities
monstermaker
motion_manager
multisource
multi_ entities
path_ entities
player_ entities
scripted_ entities
speaker
target_cdaudio
trigger_ entities
watcher_ entities
weapon_ entities
world_items
xen_ entities


worldspawn: World entity
Edit Worldspawn's properties from the map menu ["Map \ Map Properties..."]


aiscripted_sequence: AI Scripted Sequence
Obsolete. Use scripted_sequence. (The only difference between them is that aiscripted_sequence effectively has its "Override AI" flag ticked all the time.


ambient_generic: Universal Ambient


ammo_357: 357 Ammo

ammo_9mmAR: 9mm Assault Rifle Ammo

ammo_9mmbox: box of 200 9mm shells

ammo_9mmclip: 9mm Pistol Ammo

ammo_ARgrenades: Assault Grenades

ammo_buckshot: Shotgun Ammo

ammo_crossbow: Crossbow Ammo

ammo_gaussclip: Gauss Gun Ammo

ammo_rpgclip: RPG Ammo


button_target: Target Button
This entity is probably obsolete, now that
func_button has a "Can't Use" flag.


calc_position: Calculate position
To use this, simply refer to it in any field that's designated [LP].

calc_ratio: Ratio adjustment
To use this, simply refer to it in any field that's designated [LR].

calc_subvelocity: Calculate velocity based on entity properties
To use this, simply refer to it in any field that's designated [LV].

calc_velocity_path: Calculate velocity for travelling
To use this, simply refer to it in any field that's designated [LV].
This calculates the velocity that would be needed to travel from one point to another. By default, things will take 0.1 seconds to travel this distance. (Use the "length factor" setting to change this.)
This can also be used to calculate (for example) where a beam's endpoint should be, in order for it to point towards a given location.

calc_velocity_polar: Calculate velocity
To use this, simply refer to it in any field that's designated [LV].


cycler: Monster Cycler

cycler_sprite: Sprite Cycler

cycler_weapon: Weapon Cycler


env_beam: Energy Beam Effect

env_beamtrail: Beam trail effect

If you specify an "entity to trail", a trail will be attached or removed from the entity you specify. The trail will turn off automatically if the entity remains stationary for a few seconds, or alternatively you can turn it on and off by triggering the env_beamtrail.
If you don't specify an "entity to trail", the env_beamtrail itself will have a trail; in that case you probably want to tell it what entity it should MoveWith.
Neither version will do anything if the trailed entity isn't moving when you activate the trail.
The trail effect doesn't correspond exactly to with the movement of the entity, so don't expect too much from it. We're not mapping for UT2003 here.

env_beverage: Beverage Dispenser

env_blood: Blood Effects

env_bubbles: Bubble Volume
Bubbles cannot drift sideways with this entity; use an
env_model and "models/pipe_bubbles.mdl" instead.

env_customize: Change entity properties
Works like an
env_render : you trigger it to change the properties of the target.

env_decal: Decal sprayer

env_dlight: Dynamic light effect
Creates a temporary ball of light when triggered.
Note that this primarily lights the world (i.e. brushes); studio models will pick up the lighting if they're standing in it, but they'll just be a solid colour.
To just light studio models, see
env_elight .

env_elight: Entity light effect
Creates a temporary ball of light when triggered. Only lights studio models (e.g. monsters), but does light them properly. Quite pretty.
See
env_dlight if you want to light the walls, etc.

env_rain: Rain Effect
Essentially, this produces a shifting group of parallel beams. I've called it env_rain because that's the most-requested use for it.
For a sunbeam effect, try Drip Speed = 0, Drip Width = 30, Drip Brightness = 25, Drip Color = 255 255 255, Time between updates = 0, Drip Sprite = sprites/laserbeam.spr.
For snow, try Drip Speed = 20, Drip Width = 20, Drip Color = 255 255 255, Drip Sprite = sprites/rain.spr.

env_explosion: Explosion

env_fade: Screen Fade

env_fog: Fog effect, DMC stylee

env_footsteps: Change Movement Sounds
To set the player's footstep sounds, trigger this entity 'on'. To revert to normal, trigger it 'off' in the same way.
Alternatively, you can just toggle it, to alternately set and unset the sounds.
If one of the sound fields is left blank, it will have no effect... so if you actually want it to become silent, choose common/null.wav.
This entity is probably most useful as the "fire on/off" target of a trigger_inout, to specify the area over which the footsteps are to be changed.

env_funnel: Large Portal Funnel

env_global: Global State
See also
env_state

env_glow: Light Glow/Haze

env_laser: Laser Beam Effect

env_message: HUD Text Message

env_model: New alternative to cyclers

env_quakefx: Quake 1 particle effects
Creates various particle effects when triggered.

env_render: Render Controls

env_shake: Screen Shake

env_shockwave: Shockwave Effect
Creates a shockwave effect (like
monster_houndeye ) when triggered.

env_shooter: Model Shooter

env_sound: DSP Sound

env_spark: Spark

env_sprite: Sprite Effect

env_state: Local State
Simply keeps track of a state. Useful as a master or a conditional "branch".

env_warpball: Teleport-in effect


func_breakable: Breakable Object

func_button: Button

func_conveyor: Conveyor Belt

func_door: Basic door

func_door_rotating: Rotating door

func_friction: Surface with a change in friction

func_guntarget: Moving platform

func_healthcharger:

func_illusionary: Fake Wall/Light

func_ladder: Ladder
Creates an invisible, climbable field. To show the actual ladder image, either add a
func_illusionary covered with a {ladder texture, or tick the Visible flag.

func_monsterclip: Monster clip brush
Also prevents hlcsg.exe from making a path between two
info_node entities on opposite sides of the brush.

func_mortar_field: Mortar Field

func_pendulum: Swings back and forth
Only partially implemented, some keys don't work properly.

func_plat: Elevator
With any luck, I've fixed the bug which caused players to sometimes be frozen.

func_platrot: Moving Rotating platform

func_pushable: Pushable object

func_recharge:

func_rot_button: RotatingButton
Like
func_button , except it rotates.

func_rotating: Rotating Object

func_tank: Brush Gun Turret

func_tankcontrols: Tank controls

func_tanklaser: Brush Laser Turret

func_tankmortar: Brush Mortar Turret

func_tankrocket: Brush Rocket Turret

func_trackautochange: Automatic track changing platform

func_trackchange: Train track changing platform

func_tracktrain: Track Train

func_train: Moving platform

func_traincontrols: Train Controls
Note that unlike func_tankcontrols, this defines what area the player must be standing in in order to use the tank.

func_wall: Wall

func_wall_toggle: Toggleable geometry

func_water: Liquid


game_counter: Fires when it hits limit

game_counter_set: Sets a game_counter

game_end: End this multiplayer game

game_player_equip: Initial player equipment

game_player_hurt: Hurts player who fires

game_player_team: Allows player to change teams

game_score: Award/Deduct Points

game_team_master: Team based master/relay

game_team_set: Sets team of team_master

game_text: HUD Text Message

game_zone_player: Player Zone brush


gibshooter: Gib Shooter


hud_sprite: Hud Sprite Display
At the moment, this can only display sprites that are defined in sprites/hud.txt, and will always display them in the status icon area on the left of the screen.
Bear in mind, the hud isn't displayed unless you have an HEV suit.


infodecal: Decal
If you give a decal a targetname, then it won't appear until fired.


info_alias: Alias

An alias makes itself an "alternative name" for an entity. To refer to an entity through the alternative name, use the alias name preceeded by a *.
For example, suppose you set up an info_alias entity called 'myalias'. 'Myalias' targets a light called 'redlight'. suppose a you set up a
trigger_once field targetting "*myalias", so that when you walk through the trigger field, redlight gets turned on and off. So far, info_alias seems to be like a trigger_relay . However, you can also set up a switch which targets "myalias", to turn it off...

info_bigmomma: Big Mamma Node

info_compile_parameters: Compile Options
Which compile options to use.

info_group: Entity Group
An info_group acts similarly to an
info_alias , except that it has several "members" which are are accessed by writing 'mygroup.membername'.
These members are set up just like the targets of a multi_manager - except that they'll contain an entity reference instead of a delay time.
If you set up its "target" field to refer to an info_alias entity, then when an info_group is triggered, it will change that info_alias entity to target the group.

info_intermission: Intermission Spot

info_landmark: Transition Landmark

info_movewith: Movewith relay

info_node: ai node

info_node_air: ai air node

info_null: info_null (spotlight target)

info_player_deathmatch: Player deathmatch start

info_player_start: Player 1 start

info_target: Beam Target

info_teleport_destination: Teleport destination

info_texlights: Texture Light Config


item_airtank: Oxygen tank

item_antidote: Poison antidote

item_battery: HEV battery

item_healthkit: Small Health Kit

item_longjump: Longjump Module

item_security: Security card

item_suit: HEV Suit


light: Invisible lightsource

light_glow: Dynamic Glow
See also
env_dlight .

light_environment: Environment

light_spot: Spotlight


momentary_door: Momentary/Continuous door

momentary_rot_button: Direct wheel control


locus_alias: Locus System - Entity variable
Stores a reference to an entity. Whenever the alias is triggered, it changes to record what triggered it.
Thereafter, you can refer to that entity by *aliasname (where aliasname is the name of the locus_alias).
Note that this records a specific entity - unlike
info_alias which records the name of an entity. So info_alias always refers to all entities with a particular name, whereas locus_alias always refers to one specific entity.

locus_beam: Locus System - Beam effect

locus_variable: Locus System - Variable for storing data

As the name suggests, this acts like a variable in a programming language. It stores three values - a position, a velocity, and a ratio. (if you want a variable that records entities, see
locus_alias ). To set values, trigger the entity; and to access them, just refer to it like the appropriate calc_x entity.
locus_variable can also be used another way; if you give a "Child's Name" value, triggering it will create a reference point with that name. So for example, suppose you want to create streams of water wherever an object gets shot. You trigger a locus_variable to record where the shot hits, and then have its "fire on spawn" value triggering the water stream. But if you don't have it make seperate reference points, then all the water will come out of the last shot position.


monster_alien_controller: Controller

monster_alien_slave: Vortigaunt

monster_apache: Apache

monster_babycrab: Baby Headcrab

monster_barnacle: Barnacle Monster

monster_barney: Barney

monster_barney_dead: Dead Barney

monster_bigmomma: Big Mamma

monster_bloater: Bloater
Not fully implemented: rudimentary AI. Will run away if attacked, otherwise will stand still.

monster_bullchicken: BullSquid

monster_cockroach: Cockroach

monster_flyer_flock: Flock of Flyers

monster_furniture: Monster Furniture

monster_gargantua: Gargantua

monster_generic: Generic Script Monster

monster_generic_dead: Generic Dead Body

monster_gman: G-Man

monster_grunt_repel: Human Grunt (Repel)

monster_handgrenade: Live Handgrenade

monster_headcrab: Head Crab

monster_hevsuit_dead: Dead HEV Suit

monster_hgrunt_dead: Dead Human Grunt

monster_houndeye: Houndeye

monster_human_assassin: Human Assassin

monster_human_grunt: Human Grunt (camo)

monster_ichthyosaur: Ichthyosaur

monster_leech: Leech

monster_miniturret: Mini Auto Turret

monster_nihilanth: Nihilanth

monster_osprey: Osprey
The helicopter which flies around and drops grunts. Basically, whenever a grunt dies, a replacement will be dropped so that the level contains the same number as before.
With Spirit, it's no longer necessary to place grunts in your level: in that situation the Osprey pretends, arbitrarily, that 4 have already died.
NB: An osprey must have a patrol path; if you don't give one, it will fail to work. Spirit also fixes the Half-Life bug which meant a path_corner had to give a Speed value... though the Speed values will still function if you choose to use them.
FYI: an Osprey will only drop grunts at path_corners whose Speed is set to 0. After dropping grunts, it will head for the nearest path_corner whose Speed is greater than 400, if one exists. Spirit also fixes the Half-Life bug which crashed the game if no such corner was available.

monster_rat: Rat
Like
monster_bloater : no AI, no death animation.

monster_satchelcharge: Live Satchel Charge

monster_scientist: Scared Scientist

monster_scientist_dead: Dead Scientist

monster_sentry: Sentry Turret Gun

monster_sitting_scientist: Sitting Scientist

monster_snark: Armed Snark

monster_target: Target for monsters to attack
While a monster_target is active, monsters will attack it as though it were another monster.
An easy way to make monsters shoot out lights, attack func_tanks, etc.

monster_tentacle: Tentacle Arm

monster_tripmine: Active Tripmine

monster_turret: Auto Turret

monster_zombie: Scientist Zombie


monstermaker: Monster Maker


motion_manager: Control the movement and direction of an entity
For controlling the movement of other entities. There are two main ways to use this entity:
a) Don't give it a targetname, just tell it what entity to affect. In this case, the motion of the affected entity will be managed however you want. This is mostly useful to make things MoveWith a
func_pushable or a monster. (Just name the func_pushable in the manager's "Position" field.)
b) Give it a targetname, but leave the "target to affect" set to *locus. Then, type the motion_manager's name into the "trigger on spawn" field of, for example, an env_shooter. In this case, every shot the shooter makes will be managed throughout its lifetime.
If you just want to change an entity's position or velocity instantly, once, then see trigger_motion .


multisource: Multisource


multi_alias: Multi-target alias
A multi_alias is an
info_alias with more than one target. It's mainly useful to group entities together, while still allowing them to have individual names.
For example, suppose you have a set of lights in your level. Each one has its own lightswitch, which allows it to be switched on and off on its own. But later in the level, you want the power (i.e. all the lights) to go off. One way to do that would be to make a multi_alias which targets all the lights, and simply trigger what that alias refers to.

multi_manager: MultiTarget Manager
Triggers a sequence of up to 16 entities, at various time offsets.
To specify the list of entities for it to trigger, turn off Worldcraft's "smart edit" mode and add fields manually. The name of the field is the targetname of the entity to trigger, and the contents of the field are the time (in seconds) to wait before triggering it.
If a master is given, then while the master is locked, the manager will ignore all signals. This won't prevent it from continuing a sequence that started while the master was unlocked, but it will prevent new sequences from starting.

multi_watcher: State Watcher

A multi_watcher is like a normal
watcher , except that it watches up to 16 entities at once.
The entity is probably most useful when used as a master for another entity- a versatile replacement for the multisource , in a way. Note that if you need to handle a complex logical operation, you can make a multi_watcher which watches other multi_watchers.
The list of watched entities is specified in the same way as the targets of a multi_manager , except that the 'value' should be set to 0. (Future versions of Spirit may make use of the value, but for now it's ignored.)
This is a very powerful entity, but is probably only useful for experienced mappers.


path_corner: Path Corner

path_track: Train Track Path


player_freeze: Stop player from moving

player_loadsaved: Load Auto-Saved game

player_weaponstrip: Strip player's weapons


scripted_action: Scripted Action

Note that a
monster_generic won't usually do these actions correctly.
If you're using this to make a monster_barney shoot, it'll look odd (as if he's shooting bullets from his knuckles) unless you first use a scripted_sequence (playing the "draw" animation) or env_customize (setting body = 1) to put his pistol into his hand; as seen in the SpiritDemo level.

scripted_sentence: Scripted Sentence
If no targetname is given, a scripted_sentence will play sentences as often as its "refire" rate permits.

scripted_sequence: Scripted Sequence
If a scripted_sequence has no targetname, it will start playing as soon as the level begins.
If two or more scripted_sequences have the same targetname, they will be synchronised so that no matter how long it takes the monsters to walk to the sequence entities, their action animations will start at the same time. Also, if one of the monsters cancels its sequence (e.g. if it gets hurt), the other one will too.

scripted_tanksequence: Scripted Tank Sequence

scripted_trainsequence: Scripted Train Sequence
This entity is by no means complete, but is still somewhat usable.


speaker: Announcement Speaker


target_cdaudio: CD Audio Target


trigger_auto: AutoTrigger
Be careful when using this entity; it will trigger not only when the level starts, but also when a saved game is loaded.

trigger_autosave: AutoSave Trigger

trigger_bounce: Bouncey area
An entity that things bounce off. Set its Angle to specify the angle to reflect them in; objects already moving in this direction will be unaffected. (E.g. to make a trampoline, you would specify "up". Objects which are already moving upwards will be unaffected.)
Try Factor = 2 and Minimum Speed = 150 to make a corridor which players can't run through, only walk slowly. (Something like the force-fields in Dune.)

trigger_camera: Trigger Camera

trigger_cdaudio: Trigger CD Audio

trigger_changealias: Trigger Change Alias

trigger_changecvar: Change Console Variable

trigger_changelevel: Trigger: Change level

trigger_changetarget: Trigger Change Target

trigger_changevalue: Change any entity's values
A really bad idea, IMHO, but created by popular demand.
Use at your own risk, and/or the risk of everyone else in the room.

trigger_command: Console Command

trigger_counter: Trigger counter
While locked by its master, the trigger_counter _will_ keep counting when fired, but it won't fire anything itself.

trigger_endsection: EndSection Trigger

trigger_gravity: Trigger Gravity

trigger_hevcharge: Trigger charge hev

trigger_hurt: Trigger player hurt

trigger_inout: Trigger: Activate on entering or leaving

trigger_monsterjump: Trigger monster jump

trigger_motion: Set the position and movement of an entity
This replaces the trigger_setposition and trigger_setvelocity entities, which have been removed. Apologies for any inconvenience.
If you want to control motion for a period of time, see
motion_manager .

trigger_once: Trigger: Activate once

trigger_multiple: Trigger: Activate multiple

trigger_onsight: Trigger when A sees B
In fact, this should probably be called watcher_onsight.

trigger_push: Trigger player push

trigger_lightstyle: Trigger Change Lightstyle
Only affects dynamic (i.e. named) lights.

trigger_relay: Trigger Relay

trigger_rottest: Trigger RotTest
don't use. This is just a test entity.

trigger_sound: Brush-based DSP Sound

trigger_startpatrol: Trigger Start Patrol
Suggest to the specified monster that it should follow the given path. This is a low priority activity, superceded when it spots a player (for instance).
(The same thing happens if you give the monster a "target".)

trigger_teleport: Trigger teleport

trigger_transition: Trigger: Select Transition Area


watcher: State Watcher

A watcher watches an entity, waiting for it to be in a given state. The default behaviour is for the watcher to be 'On' if the watched entity is 'On', and to be 'Off' at all other times.
The main use for a watcher is to fire another entity (the "entity to notify"), each time the watcher's state changes.

watcher_count: Watcher, entity count
!= means "not equal" If this is set, one set of targets (on or off) will be fired, as appropriate, when the level starts.


weapon_357: 357 Handgun
!= means "not equal" If this is set, one set of targets (on or off) will be fired, as appropriate, when the level starts.

weapon_9mmAR: 9mm Assault Rifle

weapon_9mmhandgun: 9mm Handgun

weapon_crossbow: Crossbow

weapon_crowbar: Crowbar

weapon_egon: Egon Gun

weapon_gauss: Gauss Gun

weapon_glock: 9mm Handgun

weapon_handgrenade: Handgrenade Ammo

weapon_hornetgun: Hornet Gun

weapon_mp5: 9mm Assault Rifle

weapon_rpg: RPG

weapon_satchel: Satchel Charge Ammo

weapon_shotgun: Shotgun

weapon_snark: Squeak Grenade

weapon_tripmine: Tripmine Ammo


world_items: World Items


xen_hair: Xen Hair

xen_plantlight: Xen Plant Light

xen_spore_large: Xen Spore (large)

xen_spore_medium: Xen Spore (medium)

xen_spore_small: Xen Spore (small)

xen_tree: Xen Tree


Appendix:


HLRAD Opacity (ZHLT 2.5.1+):
Falloff (ZHLT 2.5.1+):
Texlight style:
Texlight style:
Skill setting:
Render FX:
Render Mode:
Locked Sound:
Unlocked Sound:
Locked Sentence:
Unlocked Sentence:
Behave as:
Reaction to player:
Trigger Condition:
Monster Flags:
gibshooterbase Flags:
Appearance (static):
Appearance (on):
Appearance (off):
Appearance (turn on):
Appearance (turn off):
Material type:
Gibs Direction:
Spawn On Break:
Respawn time (secs):
Breakable Flags:
Fire before moving:
On/Off Aware:
Move Sound:
Stop Sound:
Door Flags:
Bullet accuracy:
Behaviour:
BaseTank Flags:
Move Sound:
Stop Sound:
Trackchange Flags:
TriggerCond Flags:
Priority:
AI Schedule when done:
Script Flags:
Move to Position:
Turn mode:
ScriptSequence Flags: