Assault: Difference between revisions
m (Fixed a link.) |
m (Strange: I've already edited this one once.) |
||
Line 21: | Line 21: | ||
==Entities== | ==Entities== | ||
We're moving all these entities to separate pages | We're temporarily moving all these entities to separate pages today, before shortening the page to only be about the big picture and entity interaction. | ||
[[ai_goal_assault]] - See link for information. (Already moved.) | [[ai_goal_assault]] - See link for information. (Already moved.) | ||
Line 31: | Line 31: | ||
====Inputs==== | ====Inputs==== | ||
'''Assault | '''Assault''' (Combine Soldier only) When a Combine Soldier receives this input, it will search for the specified [[assault_rallypoint]] entity and move to it. You must supply the name of an ''assault_rallypoint'' entity as a parameter with this input. You may use wildcards. You may also use the ''priority'' keyvalue of an ''assault_rallypoint'' entity to influence this decision if providing a wildcard which specifies more than one ''assault_rallypoint'' entity. | ||
---- | ---- | ||
* [[assault_rallypoint]] - All assaults begin at a rallypoint. (Moved too.) | |||
All assaults begin at a rallypoint. | |||
---- | ---- | ||
===assault_assaultpoint=== | ===assault_assaultpoint=== |
Revision as of 05:24, 9 April 2006
An assault consists of two or three component types:
- ai_goal_assault (1 per assault, optional)
- assault_rallypoint (1 per NPC)
- assault_assaultpoint (any number)
Its purpose is to make a NPC follow a predesigned route. In this regard it is quite similar to path_corner: the differences revolve around assaults being designed for combat situations and increased flexibility. This article will detail how to use them.
Structure

An assault consists of a rally point followed by a string of consecutive assault points. An assault point must be 'cleared' before continuing: clearing a point by default consists of standing on it and ensuring there are no hostiles in sight for the timeout period, but is completely configurable.
Assaults can be triggered in one of three ways:
- An ai_goal_assault entity is activated by an Activate input, sending the Actor(s) to the associated assault_rallypoint(s), where they wait for the Assault Cue. This is the most common usage.
- An ai_goal_assault entity is configured to Start Active, which causes the Assault to begin (as in method 1 above) as soon as the map is loaded.
- Combine Soldiers may be instantly associated with an assault_rallypoint without the use of an ai_goal_assault entity. Using the entity I/O system, you can fire the Assault input on the the Soldier. You must provide the name of an assault_rallypoint as an input parameter. Combine Soldiers told to Assault in this manner will run to the specified assault_rallypoint and then proceed immediately to the associated assault_assaultpoint. NOTE: This feature is only supported for Combine Soldiers.
Entities
We're temporarily moving all these entities to separate pages today, before shortening the page to only be about the big picture and entity interaction.
ai_goal_assault - See link for information. (Already moved.)
NPC
NPCs can handle their own assaults.
Inputs
Assault (Combine Soldier only) When a Combine Soldier receives this input, it will search for the specified assault_rallypoint entity and move to it. You must supply the name of an assault_rallypoint entity as a parameter with this input. You may use wildcards. You may also use the priority keyvalue of an assault_rallypoint entity to influence this decision if providing a wildcard which specifies more than one assault_rallypoint entity.
- assault_rallypoint - All assaults begin at a rallypoint. (Moved too.)
assault_assaultpoint
The body of an assault chain. Specifies where the assault should go once it has begun. There can be any number of assault_assaultpoints in each chain.
It is important to remember that assaultpoints affect the journey to them, not from them.
Keyvalues
- Assault Hint Group: Constrain NPCs in the assault to this hint group.
- Assault time out: How long to wait with no activity at this assaultpoint before moving on.
- Clear on contact with enemies: If the assault meets enemies on its way to this point, it will consider it cleared and target the next point in the chain.
- Allow diversion: If the assault comes into contact with hostiles on the way to the point, divert to kill them and resume once the area appears clear.
- If it set to Yes NPCs will chase any hostiles until they are dead or out of sight for the period set in Assault time out.
- If this is set to No assaulting NPCs will run non-stop to the next point, attacking enemies they can see but not chasing them.
- Never Timeout: Force NPCs to try and reach this point forever, with no timeouts.
Flags
- Clear this point on arrival, UNCONDITIONALLY: Move on to the next point once reaching this one regardless of any other influences.
Inputs
- SetClearOnContact: Sets the Clear on contact with enemies keyvalue.
- Accepts 1/0 or Yes/No.
- SetAllowDiversion: Sets the Allow diversion keyvalue.
- Accepts 1/0 or Yes/No.
Outputs
- OnArrival: Fires when a NPC arrives.
- OnAssaultClear: Fires when the point is cleared.
Limitations and bugs
- When moving to an assaultpoint part way through a chain, the NPC will go to the standing posture for a moment before continuing. This looks unnatural.
- NPCs will always arrive at a rally or assault point and turn to face in the direction the entity is set to. This is again unnatural in some cases.
- NPCs must stand directly on an assaultpoint to clear it without timeout if Clear on contact with enemies is not set and triggered. This can result in illogical backtracking and means that groups of NPCs moving together each need their own assaultpoint to maintain the illusion.
- A rallypoint can only serve one NPC per assault. If multiple NPCs are required to assault at the same time, each needs their own rallypoint. There may be a solution to this but it is not yet documented. Use of wildcards can make the assignment of individual NPCs to individual rallypoints easier.
- Linking an assaultpoint to a rallypoint crashes the game.
Example
This example map contains a single NPC on a linear chain using all the major options available to designers when moving NPCs from assaultpoint to assaultpoint. There are four points, and each is configured differently:
- Clear on contact with enemies is enabled. When the NPC sees the hostiles, it clears out the assaultpoint and continues to 2.
- Clear this point on arrival, UNCONDITIONALLY is flagged. When the NPC reaches this point it clears it regardless of the fact that there are still hostiles in sight and begins to move towards 3.
- Allow diversion is set to No. The NPC will charge towards the assaultpoint without stopping or giving chase. It will however attack enemies in view.
- Allow diversion is set to Yes. The NPC will divert from moving to this point until there are no hostiles visible.
Note that the Metropolice cannot harm the NPC and will not attack the player in this example.