Quake 4 AI Tether Control System
Tether entities are designed to limit the movement of the AI. The limitation of movement will depend on the type of tether used. When activated a tether entity will cause all targeted ai entities to be tethered using the properties defined by the tether entity itself. For example, a ai_tether_radius entity which targeted two ai entities when activated would move both ai entities within the given radius of that tether entity. Tethers can be used in many ways to control the flow of combat and to the movement of ai entities. The orientation, indicated by the “angle” parameter, controls the direction AI should face when stopping within a tether when they have no enemy to look at.
Any entity with a range or radius should have the origin of the entity flush with the ground. Since radiuses are actually spherical this maximizes the radius that the ai can actually use to navigate in.
Location tethers limit the ai’s movement to the location that the tether is placed within. Locations are defined by info_location entities or if none exist in current pvs area one will be automatically defined by the tether itself.
Radius tethers limit the ai’s movement to a given radius around the tether entity itself. Keep in mind that the radius is spherical and if it is placed off of the ground less of the sphere will be in contact with the ground.
This entity will limit the ai’s movement to the behind the plane created by the tethers “angle” and its origin. Imagine a line perpendicular to the “angle” extending infinitely to both the left and the right. All area behind that would be valid for that tether. Set range to get the ai to move up to the tether itself.
This entity will clear any tether that is currently set on all targeted ai entities.
This can be used to check the state of it’s targeted ai as well as to trigger off events based on this status. There are three possible states (you can use these separately or combined):
condition_dead – set to 1 to test whether the attached ai entities are all dead
condition_tether – set to 1 to test if the attached ai entities are within their tether range
condition_stop – set to 1 to test whether the ai entities are all stopped.
Keep in mind that ai_triggeronce/ai_trigger_multiple are always thinking once they’ve been turned on. So it’s best to only trigger these when they’re needed. The other thing to keep in mind is that you can use these to target both ai and func_spawners. So if you wanted an event to occur after a func_spawner was finished, you would target it with the ai_trigger.
This entity will instruct the ai to avoid pathing to any location within the radius specified by the “radius” key. All door’s in the game automatically generate avoidance areas to prevent ai from stopping in doorways. You can also specify which “team” will utilize the avoid, both, marine, or strogg. ai_avoid cannot be toggled as it is “thrown away” when the map loads.
This entity will switch all targeted AI to passive mode when activated. AI in passive mode will use relaxed animations rather than combat animations, this includes custom idle animations set with "anim_idle". AI in passive mode is also able to respond to the player when clicked on with animations or just lipsync. The "ignoreEnemies" key (which defaults to 1) can also be set to prevent the AI from scanning for a new enemy, which would automatically switch them back in to aggressive mode if they found one. This entity performs that same action as the script function "becomePassive".
This entity will switch all targeted AI to aggressive mode when activated. Aggressive mode is essentially combat ready mode. The AI will move and act as if it were in combat, regardless of whether they currently have an enemy. AI will also actively scan for new targets when in aggressive mode as well as take cover if any is near by while they wait for a target. This entity performs the same action as the script function "becomeAggressive".
Set to 1 to display tactical debugging information. This includes tethers, enemies, movement, etc.
This command will show cover points near your position as well as any ai_avoid entities.
This command when issued will limit information output by ai_debugTactical to just the ai entity that is under your crosshair. To reset it back to snow all ai entities you would issue the command with no ai entities under your crosshair.