This article's documentation is for anything that uses the Source engine. Click here for more information.

ai_script_conditions

From Valve Developer Community
Jump to: navigation, search

ai_script_conditions is a point entity available in all Source Source games.

English (en)
Edit

It allows a mapper to define a list of conditions relating to the player, an NPC, and an optional target, that trigger events when the conditions are fulfilled.

Fired only once, automatically, when the condition is first fulfilled, then disables itself. Use Enable inputs to recheck conditions.

An example of its use is on d2_coast_03. When Odessa holds out the rocket launcher for Gordon to grab, an ai_script_conditions is used to tell how close the player is to Odessa. When the player is within a very small range, Odessa drops the weapon. 99% percent of the time, the player will be close enough that they will then automatically pick up the weapon_rpg.

Note.pngNote:Distances do account for crouching. A proximity condition that is fulfilled while not crouching might be unfulfilled while crouching.
Note.pngNote:notarget will affect LOS conditions.
Icon-Bug.pngBug:This entity is hardcoded to be based on the SP player, causing a crash when enabled in multiplayer games.

Not available in Left 4 Dead Left 4 Dead 2.


In code, it is represented by theCAI_ScriptConditionsclass, defined in theai_scriptconditions.cppfile.

ConVars/Commands

Cvar/CommandParameters or default valueDescriptorEffect
ai_debugscriptconditions00 disables, 1 enablesPrints to the console what conditions need to be met, when conditions are satisfied, etc. Requires developer 1.

Flags

Keyvalues

Actor (Actor) <targetname>
NPC we should be concerned with.
Minimum State (MinimumState) <choices>
Minimum state of selected target NPC - if for example alert is set, while idle it will do nothing.
  • 1: Idle
  • 2: Alert
  • 3: Combat
Maximum State (MaximumState) <choices>
Maximum state of selected target NPC - if for example alert is set, while combat it will do nothing.
  • 1: Idle
  • 2: Alert
  • 3: Combat
Actor is running a script? (ScriptStatus) <choices>
Is NPC running a script?[Clarify]
  • 1: No
  • 2: Yes
  • 3: Don`t care
Required Time (RequiredTime) <float>
Duration of time that all the conditions must be true for the entity to consider them fulfilled.
Minimum time out (MinTimeout) <float>
Minimum time before OnConditionsTimeout is fired. 0 = never expire.
Maximum time out (MaxTimeout) <float>
Maximum time before OnConditionsTimeout is fired - 0 = ignore. (If you don't specify a Maximum timeout, conditions will time out at exactly Minimum Time Out. If you DO specify a Maximum time out, timeout will occur randomly between Minimum and Maximum time out values.)
Actor see Player (ActorSeePlayer) <choices>
Select if actor has to have LOS to player
  • 1: No
  • 2: Yes
  • 3: Don`t care
Player distance (PlayerActorProximity) <float>
The distance the player must or must not be to the actor. Negative values for NOT, 0 for ignore.
Player FOV for Actor (PlayerActorFOV) <float>
Specify angle of view cone in degrees. Negative value = NOT in this view cone.
Player FOV to actor is a true view cone (PlayerActorFOVTrueCone) <choices>
Player's view cone is evaluated as a true cone, not pie slice.
  • 1: No - Tall pie slice (Ignores the Z position of things being looked at. Could potentially include objects directly above or below the player even if player can't see them on the screen.)
  • 2: Yes - True view cone (See objects by an actual cone)
Player has LOS to Actor (PlayerActorLOS) <choices>
Checks that the player has clear Line of Sight to the Actor.
  • 1: No
  • 2: Yes
  • 3: Don't care
Target (target) <targetname>
Optional third entity to include in conditions.
Actor Sees Target (ActorSeeTarget) <choices>
NPC can see the target
  • 1: No
  • 2: Yes
  • 3: Don`t care
Target distance (ActorTargetProximity) <float>
The distance the actor must or must not be to the Target. Negative values for NOT, 0 for ignore.
Player distance from Target (PlayerTargetProximity) <float>
The distance the player must or must not be to the Target. Negative values for NOT, 0 for ignore.
Player FOV for Target (PlayerTargetFOV) <float>
Specify angle of view cone in degrees. Negative value = NOT
Player FOV to target is a true view cone (PlayerTargetFOVTrueCone) <choices>
Player's view cone is evaluated as a true cone, not pie slice.
  • 1: No - Tall pie slice (Ignores the Z position of things being looked at. Could potentially include objects directly above or below the player even if player can't see them on the screen.)
  • 2: Yes - True view cone (See objects by an actual cone)
Player has LOS to Target (PlayerTargetLOS) <choices>
Checks that the player has clear Line of Sight to the Target.
  • 1: No
  • 2: Yes
  • 3: Don`t care
Player blocking Actor (PlayerBlockingActor) <choices>
Checks that the player is blocking the Actor's path.
  • 1: No
  • 2: Yes
  • 3: Don`t care
Actor in Player`s PVS (ActorInPVS) <choices>
Checks that the actor is in the player's PVS
  • 1: No
  • 2: Yes
  • 3: Don`t care
Actor in Vehicle (ActorInVehicle) <choices>
Checks if actor is in a vehicle.
  • 1: No
  • 2: Yes
  • 3: Don`t care
Player in Vehicle (PlayerInVehicle) <choices>
Checks if player is in a vehicle.
  • 1: No
  • 2: Yes
  • 3: Don`t care

EnableDisable:

Start Disabled (StartDisabled) <boolean>
Stay dormant until activated (with theEnableinput).

Base:
Name (targetname) <string>
The name that other entities use to refer to this entity.
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.pngTip:Entities transition to the next map with their parents
Tip.pngTip: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.pngNote: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.pngNote: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.pngTip:Changing this on runtime still has use, like making matching an entry in S_PreserveEnts will persist the entity on new rounds!
Flags (spawnflags) <integer> !FGD
Toggles exclusive features of an entity, its specific number is determined by the combination of flags added.
Effects (effects) <integer> !FGD
Combination of effect flags to use.

Inputs

EnableDisable:

Enable
Disable
Enable/disable this entity from performing its task. It might also disappear from view.

Base:
AddContext <string>
Adds to the entity's list of response contexts. See Context.
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 to FireUser4
Fires the respectiveOnUseroutputs; 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 thanKillinput.
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.
Use  !FGD
Same as a player invoking +use; no effect in most cases.
DispatchResponse <string> !FGD
Dispatches a response to the entity. See Response and Concept.
DispatchEffect <string> (removed since Left 4 Dead) !FGD
Dispatches a special effect from the entity's origin; See also List of Client Effects. Replaced by the particle system since Left 4 Dead.

Outputs

OnConditionsSatisfied
Fired when AI conditions are satisfied.
OnConditionsTimeout
Fired when AI conditions timed out.
NoValidActors
Fired if/when there are no matching actors in the map.

Base:

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.