Ai script conditions
Jump to navigation
Jump to search


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.



CAI_ScriptConditions
class, defined in theai_scriptconditions.cpp
file.
ConVars/Commands
Cvar/Command | Parameters or default value | Descriptor | Effect |
---|---|---|---|
ai_debugscriptconditions | 0 | 0 disables, 1 enables | Prints to the console what conditions need to be met, when conditions are satisfied, etc. Requires developer 1. |
Flags
- 1: Fire outputs with the Actor as !activator
Keyvalues
- Actor (Actor) ([todo internal name (i)]) <targetname>
- NPC we should be concerned with.
- Minimum State (MinimumState) ([todo internal name (i)]) <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) ([todo internal name (i)]) <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) ([todo internal name (i)]) <choices>
- Is NPC running a script?[Clarify]
- 1: No
- 2: Yes
- 3: Don`t care
- Required Time (RequiredTime) ([todo internal name (i)]) <float>
- Duration of time that all the conditions must be true for the entity to consider them fulfilled.
- Minimum time out (MinTimeout) ([todo internal name (i)]) <float>
- Minimum time before
OnConditionsTimeout
is fired. 0 = never expire.
- Maximum time out (MaxTimeout) ([todo internal name (i)]) <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) ([todo internal name (i)]) <choices>
- Select if actor has to have LOS to player
- 1: No
- 2: Yes
- 3: Don`t care
- Player distance (PlayerActorProximity) ([todo internal name (i)]) <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) ([todo internal name (i)]) <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) ([todo internal name (i)]) <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) ([todo internal name (i)]) <choices>
- Checks that the player has clear Line of Sight to the Actor.
- 1: No
- 2: Yes
- 3: Don't care
- Target (target) ([todo internal name (i)]) <targetname>
- Optional third entity to include in conditions.
- Actor Sees Target (ActorSeeTarget) ([todo internal name (i)]) <choices>
- NPC can see the target
- 1: No
- 2: Yes
- 3: Don`t care
- Target distance (ActorTargetProximity) ([todo internal name (i)]) <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) ([todo internal name (i)]) <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) ([todo internal name (i)]) <float>
- Specify angle of view cone in degrees. Negative value = NOT
- Player FOV to target is a true view cone (PlayerTargetFOVTrueCone) ([todo internal name (i)]) <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) ([todo internal name (i)]) <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) ([todo internal name (i)]) <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) ([todo internal name (i)]) <choices>
- Checks that the actor is in the player's PVS
- 1: No
- 2: Yes
- 3: Don`t care
- Actor in Vehicle (ActorInVehicle) ([todo internal name (i)]) <choices>
- Checks if actor is in a vehicle.
- 1: No
- 2: Yes
- 3: Don`t care
- Player in Vehicle (PlayerInVehicle) ([todo internal name (i)]) <choices>
- Checks if player is in a vehicle.
- 1: No
- 2: Yes
- 3: Don`t care
- Start Disabled (StartDisabled) <boolean>
- Stay dormant until activated (with the
Enable
input).
Inputs
EnableDisable:
- Enable / Disable
- Enable/disable this entity from performing its task. It might also disappear from view.
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.