AI
From Blue Mars Developer Guidebook
|
|
Contents |
Overview
AI's are assigned either a behavior or character, where an AI character (not to be confused with the term used for skeletal animation) is a set of behaviors and transitions among them. The assignment is visible and editable for each AI in the Sandbox Editor. A behavior is a set of signal handlers. The handlers are Lua functions that typically adjust what goals are executed by an AI. Goals include atomic goals and goal pipes, which are compositions of goals. Goals can be blocking or run in parallel.
Scripts
Behaviors
Behaviors are implemented as individual scripts under Game/Scripts/AI/Behaviors and registered in the AIBehaviour table in Game/Scripts/AI/Behaviors/AIBehaviour.lua (yes, the spelling is inconsistent).
Characters
Similarly, AI characters are implemented in scripts under Game/Scripts/AI/Characters and registered in the AICharacter table in Game/Scripts/AI/Characters/AICharacter.lua
Adding Behaviors
Third-party behaviors are added in vendor-specific subdirectories, which are registered/loaded in Game/Scripts/AI/Behaviors/AIBehaviour.lua like this:
Script.ReloadScript("Scripts/AI/Behaviors/AR/AIBehavior.lua");
AI functions are in the AI table. See also Entity AI functions.
Signals
Signalling
Signals are sent to AI's by the engine (e.g. environmental/sensory signals), from within behavior scripts via the function AI.Signal or the signal goal, or from entity scripts using AI.Signal:
- Signal(filter_type,signal_type,signal_name,entity_id,data)
- sends a signal to one or more AI's
- filter_type - can be 0 (send to entity_id) or one of the following
- SIGNALFILTER_LASTOP
- SIGNALFILTER_GROUPONLY
- SIGNALFILTER_GROUPONLY_EXCEPT
- SIGNALFILTER_SPECIESONLY
- SIGNALFILTER_ANYONEINCOMM
- SIGNALFILTER_TARGET
- SIGNALFILTER_SUPERGROUP
- SIGNALFILTER_SUPERSPECIES
- SIGNALFILTER_SUPERTARGET
- SIGNALFILTER_NEARESTGROUP
- SIGNALFILTER_NEARESTINCOMM
- SIGNALFILTER_NEARESTINCOMM_SPECIES
- SIGNALFILTER_NEARESTINCOMM_LOOKING
- SIGNALFILTER_HALFOFGROUP
- SIGNALFILTER_SENDER
- SIGNALFILTER_LEADER
- SIGNALFILTER_LEADERENTITY
- SIGNALFILTER_FORMATION
- SIGNALFILTER_FORMATION_EXCEPT
- signal_type
- signal_name - string name of the signal.
- entity_id
- data - optional data in the form of a table. For convenience, you can use g_signalData defined in CryEngine Lua Utilities
- point2 - a vector
- fValue - a float
- iValue - an integer
- iValue2 - another integer
- id - an entity ID
- ObjectName - a string
Existing Signals
You can define new signals just by passing a new signal name to AI.Signal (or the signal goal).
Here are the existing ones in Scripts/AI/Behaviors/Default.lua - some may be inapplicable to Blue Mars
- OnUseSmartObject
- signal that a smart object shold be used
- ABORT_ALL_ACTIONS
- signals to abort all actions
- OnReinforcementRequested
- signal to smart objects
These signals were originally defined for use by AI flow nodes but of course can be invoked by AI.Signal.
- ACT_GOTO(self,entity,sender,data)
- approach a point
- data
- point - target position
- fvalue - precision of stopping point at target
- ivalue - if non-zero, doesn't execute if this behavior (specifically, the goal pipe for this behavior) was recently cancelled
Example:
local signalData = g_SignalData;
CopyVector( signalData.point, pos );
signalData.point2.x = 0;
signalData.fValue = 0;
signalData.iValue = 0;
AI.Signal( 0, 10, "ACT_GOTO", self.Avatar.entity.id, signalData );
- ACT_FOLLOWPATH
- follow a path
- ACT_LOOKATPOINT
- ACT_EXECUTE
Goals
Atomic Goals
- acqtarget(name)
- acquire named target
- lookaround()
- look in a random direction
- approach(distance,accuracy,duration)
- makes agent approach
- follow(distance)
- follow current target at distance
- followpath(pathfind,reerse,startnearest,loops,endAccuracy,usePointList)
- follow predefined path
- backoff(distance,duration,filter,mindistance)
- backoff to a distance from current target
- firecmd(firemode,uselastopresult,intervalmin,intervalmax)
- enable/disable firing
- strafe(distancestart,distanceend,strafewhilemoving)
- strafe left or right
- bodypos(stance,delay)
- set stance
- stance - one of the following
- BODYPOS_NONE
- BODYPOS_STAND
- BODYPOS_CROUCH
- BODYPOS_PRONE
- BODYPOS_RELAX
- BODYPOS_STEALTH
- delay - if 0, apply immediatley, otherwise set at the end of the next/current trace
- run
- enable/disable run
- timeout(intervalmin)
- counts down a timer
- pathfind()
- generate a path to desired object
- locate()
- locate an AI object
- trace()
- follow generated path
- signal()
- send a signal
- ignoreall
- ignore threats
- devalue()
- devalue current attention target
- forget()
- forget current attention target
- hide()
- find closest hiding place and hide there
- form()
- create a formation
- stick()
- maintain a constant distnace to target
- clear()
- clears the actions for the operand puppet
- branch
- random
- lookat(startangle,endangle,mode,uselastop)
- look toward a specified direction
- continuous(keepmoving)
- continuous movement, keep going in last movement direction. Don't stop while tracing path.
- move(distance,speed,uselastop,lookatlastop,continuous)
- move in specified direction without pathfinding
- charge(distancefront,distanceback,uselastop ,lookatlastop)
- chase target and charge when condition is met
- waitsignal(signal,interval)
- wait for a signal and countdown
- animation(mode,value)
- sets an animation graph input
- animtarget(signal,animName,startRadius, dirTolerance, ragetRadius, approachPos)
- exact positioning animation to play at the end of the path
- usecover()
- hide/unhide at current hiding spot
- wait(waittype, blockcount)
- wait for a group of goals to be executed
- adjustaim(hide,uselastopasbackup, allowprone)
- adjust aim while saying still
- seekcover(pos,vis,valid,navtype)
- seek cover dynamicaly
- proximity(radius,signalName,signalWhenDisabled,visibleTargetOnly)
- send signal on proximity
- movetowards(distance,duration)
- move specified distance towards last op result
- dodge(distance,uselastopasbackup)
- dodges a target
Goal Pipes
- CreateGoalPipe(name)
- create new goal pipe. Replaces any goal pipe that has the same name.
- name - string name of the goal pipe
- BeginGoalPipe(name)
- specify that the named goal pipe is "current", so calls to PushGoal don't need to specify the pipe name
- EndGoalPipe()
- clears the "current" goal pipe. There must be matching pairs of BeginGoalPipe/EndGoalPipe.
- PushGoal(pipename,goalname,blocking,...)
- push (append) a goal onto a goal pipe.
- pipename - name of the pipe. Omit if inside BeginGoalPipe/EndGoalPipe.
- goalname - name of the goal, either a another goal pipe or an atomic goal.
- blocking - 0 specifies no blocking, 1 specifies blocking
- any additional parameters required by the goal
- PushLabel
- IsGoalPipe
- BeginGroup
- EndGroup
Logging
Warning Error LogProgress LogEvent LogComment RecComment
RegisterWithAI ResetParameters ChangeParameter GetAIParameter IsEnabled ChangeMovementAbility ExecuteAction AbortAction SetSmartObjectState ModifySmartObjectStates SmartObjectEvent GetLastUsedSmartObject GetLastSmartObjectExitPoint FreeSignal SetIgnorant SetAssesmentMultiplier SetSpeciesThreatMultiplier GetGroupCount GetGroupMember GetGroupOf GetGroupAveragePosition Hostile FindObjectOfType SoundEvent GetAnchor GetSpeciesOf GetTypeOf GetSubTypeOf GetAttentionTargetOf GetAttentionTargetPosition GetAttentionTargetDirection GetAttentionTargetViewDirection GetAttentionTargetDistance GetAttentionTargetEntity GetAttentionTargetType GetTargetType GetAIObjectPosition GetBeaconPosition SetBeaconPosition GetTotalLengthOfPath GetNearestEntitiesOfType SetRefPointPosition SetRefPointDirection GetRefPointPosition GetRefPointDirection SetRefPointRadius SetRefShapeName GetRefShapeName SetTerritoryShapeName CreateTempGenericShapeBox GetForwardDir SetCharacter GetAlienApproachParams GetHunterApproachParams VerifyAlienTarget GetDirectAnchorPos GetNearestHidespot GetEnclosingGenericShapeOfType IsPointInsideGenericShape DistanceToGenericShape ConstrainPointInsideGenericShape EvalHidespot EvalPeek NotifyGroupTacticState GetGroupTacticState GetGroupTacticPoint NotifyReinfDone IntersectsForbidden IsPointInFlightRegion IsPointInWaterRegion GetEnclosingSpace Event CreateFormation AddFormationPoint AddFormationPointFixed GetFormationPointClass GetFormationPointPosition ChangeFormation ScaleFormation SetFormationUpdate SetFormationUpdateSight GetLeader SetLeader UpTargetPriority SetExtraPriority GetExtraPriority GetPlayerThreatLevel GetStance SetStance GetUnitInRank SetUnitProperties GetUnitCount IsFlightSpaceVoid IsFlightSpaceVoidByRadius SetForcedNavigation SetAdjustPath GetHeliAdvancePoint CheckVehicleColision GetFlyingVehicleFlockingPos SetPFBlockerRadius SetPFProperties GetAlertStatus GetGroupTarget GetGroupTargetCount RequestAttack GetNavigationType SetPathToFollow SetPathAttributeToFollow GetPredictedPosAlongPath SetPointListToFollow GetNearestPointOnPath GetPathSegNoOnPath GetPointOnPathBySegNo GetPathLoop GetNearestPathOfTypeInRange GetDistanceAlongPath BeginTrackPattern AddPatternNode AddPatternBranch EndTrackPattern SetMinFireTime EnableCoverFire SetRefPointToGrenadeAvoidTarget IsAgentInTargetFOV AddCombatClass SetRefPointAtDefensePos RegisterDamageRegion SetCurrentHideObjectUnreachable FindStandbySpotInShape FindStandbySpotInSphere GetObjectRadius GetProbableTargetPosition NotifySurpriseEntityAction AddObstructSphere Animation CanJumpToPoint SetRefpointToAlienHidespot MarkAlienHideSpotUnreachable SetRefpointToAnchor SetRefpointToPunchableObject MeleePunchableObject IsPunchableObjectValid ProcessBalancedDamage CanMoveStraightToPoint CanMelee CheckMeleeDamage IsMoving GetDirLabelToPoint DebugReportHitDamage SetInterestStatus GetInterestStatus PlayReadabilitySound AutoDisable IsMountedWeaponUsableWithTarget var AIWEPA_LASER var AIWEPA_COMBAT_LIGHT var AIWEPA_PATROL_LIGHT EnableWeaponAccessory var AIFO_FACING_TARGET var AIFO_NONOCCUPIED var AIFO_CHOOSE_RANDOM var AIFO_NONOCCUPIED_REFPOINT var AIFO_USE_BEACON_AS_FALLBACK_TGT var AIFO_NO_DEVALUE var AIPARAM_SIGHTRANGE var AIPARAM_ATTACKRANGE var AIPARAM_ACCURACY var AIPARAM_GROUPID var AIPARAM_FOVPRIMARY var AIPARAM_FOVSECONDARY var AIPARAM_COMMRANGE var AIPARAM_FWDSPEED var AIPARAM_SPECIES var AIPARAM_SPECIESHOSILITY var AIPARAM_RANK var AIPARAM_CAMOSCALE var AIPARAM_HEATSCALE var AIPARAM_TRACKPATNAME var AIPARAM_TRACKPATADVANCE var AIPARAM_STRAFINGPITCH var AIPARAM_COMBATCLASS var AIPARAM_INVISIBLE var AIPARAM_PERCEPTIONSCALE_VISUAL var AIPARAM_PERCEPTIONSCALE_AUDIO var AIPARAM_CLOAK_SCALE var AIPARAM_FORGETTIME_TARGET var AIPARAM_FORGETTIME_MEMORY var AIPARAM_FORGETTIME_SEEK var AIPARAM_LOOKIDLE_TURNSPEED var AIPARAM_LOOKCOMBAT_TURNSPEED var AIPARAM_AIM_TURNSPEED var AIPARAM_FIRE_TURNSPEED var AIPARAM_MELEE_DISTANCE var AIPARAM_MIN_ALARM_LEVEL var AIPARAM_SIGHTENVSCALE_NORMAL var AIPARAM_SIGHTENVSCALE_ALARMED var AIPARAM_GRENADE_THROWDIST var AIMOVEABILITY_OPTIMALFLIGHTHEIGHT var AIMOVEABILITY_MINFLIGHTHEIGHT var AIMOVEABILITY_MAXFLIGHTHEIGHT var AIMOVEABILITY_TELEPORTENABLE var AIMOVEABILITY_USEPREDICTIVEFOLLOWING var AIOBJECT_PUPPET var AIOBJECT_VEHICLE var AIOBJECT_CAR var AIOBJECT_BOAT var AIOBJECT_HELICOPTER var AISIGNAL_INCLUDE_DISABLED var AISIGNAL_DEFAULT var AISIGNAL_PROCESS_NEXT_UPDATE var AISIGNAL_NOTIFY_ONLY var AISIGNAL_ALLOW_DUPLICATES var AIOBJECT_2D_FLY var AIOBJECT_ATTRIBUTE var AIOBJECT_WAYPOINT var AIOBJECT_SNDSUPRESSOR var AIOBJECT_MOUNTEDWEAPON var AIOBJECT_GLOBALALERTNESS var AIOBJECT_PLAYER var AIOBJECT_DUMMY var AIOBJECT_NONE var AIOBJECT_ORDER var AIOBJECT_GRENADE var AIOBJECT_RPG var AI_USE_HIDESPOTS var STICK_BREAK var STICK_SHORTCUTNAV var GE_GROUP_STATE var GE_UNIT_STATE var GE_ADVANCE_POS var GE_SEEK_POS var GE_DEFEND_POS var GE_LEADER_COUNT var GE_MOST_LOST_UNIT var GE_MOVEMENT_SIGNAL var GE_NEAREST_SEEK var GN_INIT var GN_MARK_DEFEND_POS var GN_CLEAR_DEFEND_POS var GN_AVOID_CURRENT_POS var GN_PREFER_ATTACK var GN_PREFER_FLEE var GN_NOTIFY_ADVANCING var GN_NOTIFY_COVERING var GN_NOTIFY_WEAK_COVERING var GN_NOTIFY_HIDING var GN_NOTIFY_SEEKING var GN_NOTIFY_ALERTED var GN_NOTIFY_UNAVAIL var GN_NOTIFY_IDLE var GN_NOTIFY_SEARCHING var GN_NOTIFY_REINFORCE var GS_IDLE var GS_COVER var GS_ADVANCE var GS_SEEK var GS_SEARCH var GU_HUMAN_CAMPER var GU_HUMAN_COVER var GU_HUMAN_SNEAKER var GU_HUMAN_LEADER var GU_HUMAN_SNEAKER_SPECOP var GU_ALIEN_MELEE var GU_ALIEN_ASSAULT var GU_ALIEN_MELEE_DEFEND var GU_ALIEN_ASSAULT_DEFEND var GU_ALIEN_EVADE var AIEVENT_ONBODYSENSOR var AIEVENT_ONVISUALSTIMULUS var AIEVENT_AGENTDIED var AIEVENT_SLEEP var AIEVENT_WAKEUP var AIEVENT_ENABLE var AIEVENT_DISABLE var AIEVENT_REJECT var AIEVENT_PATHFINDON var AIEVENT_PATHFINDOFF var AIEVENT_CLEAR var AIEVENT_DROPBEACON var AIEVENT_USE var AIEVENT_CLEARACTIVEGOALS var AIEVENT_DRIVER_IN var AIEVENT_DRIVER_OUT var AIEVENT_FORCEDNAVIGATION var AISE_GENERIC var AISE_MOVEMENT var AISE_MOVEMENT_LOUD var AISE_WEAPON var AISE_EXPLOSION var AI_LOOKAT_CONTINUOUS var AI_LOOKAT_USE_BODYDIR var AISYSEVENT_DISABLEMODIFYER var AIGOALTYPE_UNDEFINED var AIGOALTYPE_GOTO var AIGOALTYPE_ATTACK var AIGOALTYPE_PATH var AIGOALTYPE_TRANSPORT var AIGOALTYPE_REINFORCEMENT var AIGOALTYPE_FOLLOW var AILASTOPRES_LOOKAT var AILASTOPRES_USE var AI_LOOK_FORWARD var AI_MOVE_RIGHT var AI_MOVE_LEFT var AI_MOVE_FORWARD var AI_MOVE_BACKWARD var AI_MOVE_BACKLEFT var AI_MOVE_BACKRIGHT var AI_MOVE_TOWARDS_GROUP var AI_USE_TARGET_MOVEMENT var AI_REQUEST_PARTIAL_PATH var AI_BACKOFF_FROM_TARGET var AI_BREAK_ON_LIVE_TARGET var AI_RANDOM_ORDER var AI_USE_TIME var AI_STOP_ON_ANIMATION_START var AI_CONSTANT_SPEED var AI_ADJUST_SPEED var AI_DONT_STEER_AROUND_TARGET var FIREMODE_OFF var FIREMODE_BURST var FIREMODE_CONTINUOUS var FIREMODE_FORCED var FIREMODE_AIM var FIREMODE_SECONDARY var FIREMODE_SECONDARY_SMOKE var FIREMODE_MELEE var FIREMODE_MELEE_FORCED var FIREMODE_KILL var FIREMODE_BURST_WHILE_MOVING var FIREMODE_PANIC_SPREAD var FIREMODE_BURST_DRAWFIRE var FIREMODE_BURST_SNIPE var FIREMODE_AIM_SWEEP var CHECKTYPE_MIN_DISTANCE var CHECKTYPE_MIN_ROOMSIZE var AITSR_NONE var AITSR_SEE_STUNT_ACTION var AITSR_SEE_CLOAKED var AIGOALPIPE_NOTDUPLICATE var AIGOALPIPE_LOOP var AIGOALPIPE_RUN_ONCE var AIGOALPIPE_HIGHPRIORITY var AIGOALPIPE_SAMEPRIORITY var AIGOALPIPE_DONT_RESET_AG var AIGOALPIPE_KEEP_LAST_SUBPIPE var LA_NONE var LA_HIDE var LA_HOLD var LA_ATTACK var LA_SEARCH var LA_FOLLOW var LA_USE var LA_USE_VEHICLE var LAS_DEFAULT var LAS_ATTACK_FUNNEL var LAS_ATTACK_FLANK var LAS_ATTACK_FLANK_HIDE var LAS_ATTACK_FOLLOW_LEADER var LAS_ATTACK_ROW var LAS_ATTACK_CIRCLE var LAS_ATTACK_LEAPFROG var LAS_ATTACK_FRONT var LAS_ATTACK_CHAIN var LAS_ATTACK_COORDINATED_FIRE1 var LAS_ATTACK_COORDINATED_FIRE2 var LAS_ATTACK_USE_SPOTS var LAS_ATTACK_HIDE var LAS_ATTACK_HIDE_COVER var LAS_ATTACK_SWITCH_POSITIONS var LAS_ATTACK_CHASE var LAS_SEARCH_DEFAULT var LAS_SEARCH_COVER var UPR_COMBAT_FLIGHT var UPR_COMBAT_GROUND var UPR_COMBAT_MARINE var UPR_COMBAT_RECON var AITARGET_NONE var AITARGET_MEMORY var AITARGET_BEACON var AITARGET_ENEMY var AITARGET_SOUND var AITARGET_GRENADE var AITARGET_RPG var AITARGET_FRIENDLY var AIALERTSTATUS_SAFE var AIALERTSTATUS_UNSAFE var AIALERTSTATUS_READY var AIALERTSTATUS_ACTION var AIUSEOP_PLANTBOMB var AIUSEOP_VEHICLE var AIUSEOP_RPG var AIREADIBILITY_NORMAL var AIREADIBILITY_NOPRIORITY var AIREADIBILITY_SEEN var AIREADIBILITY_LOST var AIREADIBILITY_INTERESTING var AIOBJECTFILTER_SAMESPECIES var AIOBJECTFILTER_SAMEGROUP var AIOBJECTFILTER_NOGROUP var AIOBJECTFILTER_INCLUDEINACTIVE var AI_NOGROUP var HM_NEAREST var HM_NEAREST_TO_ME var HM_FARTHEST_FROM_TARGET var HM_NEAREST_TO_TARGET var HM_NEAREST_BACKWARDS var HM_NEAREST_TOWARDS_TARGET var HM_FARTHEST_FROM_GROUP var HM_NEAREST_TO_GROUP var HM_LEFTMOST_FROM_TARGET var HM_RIGHTMOST_FROM_TARGET var HM_RANDOM var HM_FRONTLEFTMOST_FROM_TARGET var HM_FRONTRIGHTMOST_FROM_TARGET var HM_NEAREST_TO_FORMATION var HM_FARTHEST_FROM_FORMATION var HM_NEAREST_TO_LASTOPRESULT var HM_RANDOM_AROUND_LASTOPRESULT var HM_USEREFPOINT var HM_ASKLEADER var HM_ASKLEADER_NOSAME var HM_BEHIND_VEHICLES var HM_INCLUDE_SOFTCOVERS var HM_IGNORE_ENEMIES var HM_NEAREST_PREFER_SIDES var HM_BACK var HM_AROUND_LASTOP var HM_FROM_LASTOP var HM_USE_LASTOP_RADIUS var HM_ON_SIDE var HM_NEAREST_TOWARDS_TARGET_PREFER_SIDES var HM_NEAREST_TOWARDS_TARGET_LEFT_PREFER_SIDES var HM_NEAREST_TOWARDS_TARGET_RIGHT_PREFER_SIDES var HM_NEAREST_TOWARDS_REFPOINT var UNIT_CLASS_UNDEFINED var UNIT_CLASS_INFANTRY var UNIT_CLASS_SCOUT var UNIT_CLASS_ENGINEER var UNIT_CLASS_MEDIC var UNIT_CLASS_LEADER var UNIT_CLASS_CIVILIAN var UNIT_CLASS_COMPANION var SPECIAL_FORMATION_POINT var SHOOTING_SPOT_POINT var AIANCHOR_NEAREST var AIANCHOR_NEAREST_IN_FRONT var AIANCHOR_RANDOM_IN_RANGE var AIANCHOR_RANDOM_IN_RANGE_FACING_AT var AIANCHOR_NEAREST_FACING_AT var AIANCHOR_NEAREST_TO_REFPOINT var AIANCHOR_FARTHEST var AIANCHOR_BEHIND_IN_RANGE var AIANCHOR_LEFT_TO_REFPOINT var AIANCHOR_RIGHT_TO_REFPOINT var AIANCHOR_HIDE_FROM_REFPOINT var AIANCHOR_SEES_TARGET var AIANCHOR_BEHIND var BRANCH_ALWAYS var IF_ACTIVE_GOALS var IF_ACTIVE_GOALS_HIDE var IF_NO_PATH var IF_PATH_STILL_FINDING var IF_IS_HIDDEN var IF_CAN_HIDE var IF_CANNOT_HIDE var IF_STANCE_IS var IF_FIRE_IS var IF_HAS_FIRED var IF_NO_LASTOP var IF_SEES_LASTOP var IF_SEES_TARGET var IF_EXPOSED_TO_TARGET var IF_CAN_SHOOT_TARGET var IF_CAN_MELEE var IF_NO_ENEMY_TARGET var IF_PATH_LONGER var IF_PATH_SHORTER var IF_PATH_LONGER_RELATIVE var IF_NAV_TRIANGULAR var IF_NAV_WAYPOINT_HUMAN var IF_LASTOP_DIST_LESS var IF_LASTOP_DIST_LESS_ALONG_PATH var IF_TARGET_DIST_LESS var IF_TARGET_DIST_LESS_ALONG_PATH var IF_TARGET_DIST_GREATER var IF_TARGET_IN_RANGE var IF_TARGET_OUT_OF_RANGE var IF_TARGET_TO_REFPOINT_DIST_LESS var IF_TARGET_TO_REFPOINT_DIST_GREATER var IF_TARGET_MOVED_SINCE_START var IF_TARGET_MOVED var IF_TARGET_LOST_TIME_MORE var IF_TARGET_LOST_TIME_LESS var IF_COVER_COMPROMISED var IF_COVER_NOT_COMPROMISED var IF_COVER_SOFT var IF_COVER_NOT_SOFT var IF_CAN_SHOOT_TARGET_CROUCHED var IF_COVER_FIRE_ENABLED var IF_RANDOM var IF_LASTOP_FAILED var IF_LASTOP_SUCCEED var NOT var AIFAF_VISIBLE_FROM_REQUESTER var AIFAF_INCLUDE_DEVALUED var AIFAF_INCLUDE_DISABLED var AIPATH_DEFAULT var AIPATH_HUMAN var AIPATH_HUMAN_COVER var AIPATH_CAR var AIPATH_TANK var AIPATH_BOAT var AIPATH_HELI var AIPATH_3D var AIPATH_SCOUT var AIPATH_TROOPER var AIPATH_HUNTER var AITRACKPAT_CHOOSE_ALWAYS var AITRACKPAT_CHOOSE_LESS_DEFORMED var AITRACKPAT_CHOOSE_RANDOM var AITRACKPAT_CHOOSE_MOST_EXPOSED var AITRACKPAT_NODE_START var AITRACKPAT_NODE_ABSOLUTE var AITRACKPAT_NODE_SIGNAL var AITRACKPAT_NODE_STOP var AITRACKPAT_NODE_DIRBRANCH var AITRACKPAT_VALIDATE_NONE var AITRACKPAT_VALIDATE_SWEPTSPHERE var AITRACKPAT_VALIDATE_RAYCAST var AITRACKPAT_ALIGN_ORIENT_TO_TARGET var AITRACKPAT_ALIGN_LEVEL_TO_TARGET var AITRACKPAT_ALIGN_TARGET_DIR var AITRACKPAT_ALIGN_RANDOM var PFB_NONE var PFB_ATT_TARGET var PFB_REF_POINT var PFB_BEACON var PFB_DEAD_BODIES var PFB_EXPLOSIVES var PFB_PLAYER var PFB_BETWEEN_NAV_TARGET var COVER_UNHIDE var COVER_HIDE var AIPROX_SIGNAL_ON_OBJ_DISABLE var AIPROX_VISIBLE_TARGET_ONLY var AIANIM_SIGNAL var AIANIM_ACTION var WAIT_ALL var WAIT_ANY var WAIT_ANY_2 var SOUND_INTERESTING var SOUND_THREATENING var AI_JUMP_CHECK_COLLISION var AI_JUMP_ON_GROUND var AI_JUMP_RELATIVE var AI_JUMP_MOVING_TARGET var JUMP_ANIM_FLY var JUMP_ANIM_LAND
Console
See Console/AI
