From Valve Developer Community
Jump to: navigation, search
Path corner.png

path_corner is a point entity available in all Source games.

Entity description


  • A path_corner is a corner in a path, either for a func_train or an NPC. path_corners can be chained together to form complex routes. To create a path_corner chain simply shift+drag an existing path_corner. The values will automatically be filled in. To manually make a chain (or link one up in a circle), edit the Next stop target property.
  • A path_corner_crash is identical to a path_corner, but can be enabled and disabled for a crash point; when an NPC is searching for a crash point, it will not search for generic path_corners
  • The path_corner entity is !FGD for base.fgd, so it only will appear in Hammer for Half-Life 2

In code it is represented by class CPathCorner, defined in pathcorner.cpp.


A path_corner can be a destination for an NPC. When told to, NPCs will stop other movement and walk steadily towards a path_corner. It is entirely scripted behavior. Note that the Train Speed and wait values do not affect NPCs.

To make an NPC move to a path_corner edit the Target Path Corner keyvalue, either in Hammer or through the I/O system. Alternatively, an NPC can be made to follow a path_corner chain by using the aiscripted_schedule or scripted_sequence entities.

  • See also Assaults for an alternative way to create NPC routes without using path_corner.

Limitations and bugs

  • A path_corner (or the first path_corner on a chain) must be within 576 units for NPCs to find it.


Note that the example map does not have any info_nodes. They are not needed to have an NPC follow a path.


  • Targetname:

Name <string>
The targetname that other entities refer to this entity by.
Entity Scripts <scriptlist> (New with Left 4 Dead 2)
Name(s) of script files that are executed after all entities have spawned.
Script think function <string> (New with Left 4 Dead 2)
Name of a function in this entity's script which will be called automatically every 100 milliseconds (ten times a second) for the duration of the script. It can be used to create timers or to simulate autonomous behavior.
Note:Try to avoid expensive operations in this function, as it may cause performance problems.
  • target
<target_destination> Next stop target
  • wait
<float> Wait here (secs)
  • speed
<float> New train speed—Leave at zero to leave path follower's speed the same


  • 1 : Wait for retrigger
  • 2 : Teleport to THIS path_corner


  • Targetname:

Removes this entity from the world.
Removes this entity and all its children from the world.
AddOutput  <string>
Evaluates a keyvalue/output on this entity. It can be potentially very dangerous, use with care.
Format: <key> <value>
Format: <output name> <targetname>:<inputname>:<parameter>:<delay>:<max times to fire, -1 means infinite>
FireUser1 to FireUser4
Fire the OnUser outputs; see User Inputs and Outputs.
Use  !FGD
Same as a player invoking +use; may not do anything. Can also be invoked by creating an output that does not specify an input.
This input is not included in Valve's FGDs.
RunScriptFile  <script> (New with Left 4 Dead 2)
Execute a game script file from disk.
RunScriptCode  <string> (New with Left 4 Dead 2)
Execute a string of script source code. String quotation may be needed when fired via console.
Note:The code is executed in the script scope of the entity that fires the output, not the one of the targeted entity.
Warning:Never try to pass string parameters to a script function with this input. It will corrupt the VMF structure because of the nested quotation marks, which then must be removed manually with a text editor.
CallScriptFunction  <string> (New with Left 4 Dead 2)
Execute a game script function.
  • SetNextPathCorner
<target_destination> Set target path_corner


OnUser1 to OnUser4
These Outputs each fire in response to the firing of the like-numbered FireUser1 to FireUser4 Input; see User Inputs and Outputs.

(New with Left 4 Dead)

This Output fires when the entity is killed and removed from the game.
  • OnPass
Fires when a path follower passes this point. (activator is the train)