Arma Reforger Explorer  1.1.0.42
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
SCR_AIGoalReaction.c
Go to the documentation of this file.
1 //------------------------------------------------------------------------------------------------
2 // GOAL REACTION BASE
3 //------------------------------------------------------------------------------------------------
4 
7 {
8  // Don't use, it's here for backwards compatibility, not guaranteed to work in all classes
9  [Attribute(defvalue: "", uiwidget: UIWidgets.EditBox, desc: "Don't use, it's here for backwards compatibility, not guaranteed to work in all classes", params: "bt")]
10  string m_OverrideBehaviorTree;
11 
12  [Attribute("0", UIWidgets.ComboBox, "Type of event activating the reaction", "", ParamEnumArray.FromEnum(EMessageType_Goal) )]
13  EMessageType_Goal m_eType;
14 
15  void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message) {}
16  void PerformReaction(notnull SCR_AIGroupUtilityComponent utility, SCR_AIMessageBase message) {}
17 };
18 
19 
20 //------------------------------------------------------------------------------------------------
21 // GOAL REACTIONS - Reactions on different orders
22 //------------------------------------------------------------------------------------------------
23 
26 {
27  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
28  {
29  SCR_AIMessage_Attack msg = SCR_AIMessage_Attack.Cast(message); // new approach: m_Target can be null!
30  if (!msg)
31  return;
32 
33  utility.m_CombatComponent.UpdateLastSeenPosition(msg.m_TargetInfo.m_Entity, msg.m_TargetInfo);
34  utility.m_CombatComponent.SetAssignedTargets({msg.m_TargetInfo.m_Entity}, null);
35  }
36 };
37 
40 {
41  // Duration of investigation if target is not seen
42  const float INVESTIGATION_DURATION_S = 120.0;
43 
44  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
45  {
47  if (!msg)
48  return;
49 
50  // Does it still exist?
51  if (!msg.m_TargetClusterState || !msg.m_TargetClusterState.m_Cluster)
52  return;
53 
54  // ------ Set assigned targets
55  utility.m_CombatComponent.SetAssignedTargets(null, msg.m_TargetClusterState);
56 
57 
58  // ------ Should we investigate there?
59 
60  // Check if we have identified at least one target
61  if (msg.m_bAllowInvestigate)
62  {
63  bool targetIdentified = false;
64  foreach (IEntity targetEntity : msg.m_TargetClusterState.m_Cluster.m_aEntities)
65  {
66  if (utility.m_PerceptionComponent.GetTargetPerceptionObject(targetEntity, ETargetCategory.ENEMY))
67  {
68  targetIdentified = true; // Found in 'Enemy' category - we have direct sight on it
69  break;
70  }
71  else
72  continue;
73  }
74 
75  // If we haven't identified any target, go there
76  if (!targetIdentified && msg.m_bAllowInvestigate)
77  {
78  // Cancel all other investigations
79  utility.SetStateAllActionsOfType(SCR_AIMoveAndInvestigateBehavior, EAIActionState.FAILED);
80 
81  vector investigatePos;
82  float investigateRadius;
83  SCR_AIInvestigateClusterActivity.CalculateInvestigationArea(msg.m_TargetClusterState, investigatePos, investigateRadius);
84 
85  auto investigateBehavior = new SCR_AIMoveAndInvestigateBehavior(utility, msg.m_RelatedGroupActivity,
86  investigatePos, radius: investigateRadius,
87  priorityLevel: msg.m_fPriorityLevel, isDangerous: true,
88  duration: INVESTIGATION_DURATION_S);
89  utility.AddAction(investigateBehavior);
90  }
91  }
92  else
93  {
94  // Report 'Covering' if we are not supposed to investigate there
95  SCR_AICommsHandler commsHandler = utility.m_CommsHandler;
96  if (!commsHandler.CanBypass())
97  {
98  SCR_AITalkRequest rq = new SCR_AITalkRequest(ECommunicationType.REPORT_COVERING, null, vector.Zero, 0, false, false, SCR_EAITalkRequestPreset.MEDIUM);
99  commsHandler.AddRequest(rq);
100  }
101  }
102  }
103 }
104 
106 class SCR_AIGoalReaction_AttackClusterDone : SCR_AIGoalReaction
107 {
108  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
109  {
111  if (!msg)
112  return;
113 
114  utility.m_CombatComponent.ResetAssignedTargets();
115  }
116 }
117 
119 class SCR_AIGoalReaction_CoverCluster : SCR_AIGoalReaction
120 {
121  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
122  {
123  // Now we don't have a behavior to cover those who are attacking/ivnestigating a cluster yet
124  // We just use it for voice line
125  SCR_AICommsHandler commsHandler = utility.m_CommsHandler;
126  if (!commsHandler.CanBypass())
127  {
128  SCR_AITalkRequest rq = new SCR_AITalkRequest(ECommunicationType.REPORT_COVERING, null, vector.Zero, 0, false, false, SCR_EAITalkRequestPreset.MEDIUM);
129  commsHandler.AddRequest(rq);
130  }
131  }
132 }
133 
135 class SCR_AIGoalReaction_Move : SCR_AIGoalReaction
136 {
137  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
138  {
139  auto msg = SCR_AIMessage_Move.Cast(message);
140  if (!msg)
141  return;
142 
143  auto behavior = new SCR_AIMoveIndividuallyBehavior(utility, msg.m_RelatedGroupActivity,
144  msg.m_MovePosition, SCR_AIActionBase.PRIORITY_BEHAVIOR_MOVE_INDIVIDUALLY, msg.m_fPriorityLevel, msg.m_FollowEntity);
145  if (m_OverrideBehaviorTree != string.Empty)
146  behavior.m_sBehaviorTree = m_OverrideBehaviorTree;
147 
148  utility.WrapBehaviorOutsideOfVehicle(behavior);
149  utility.AddAction(behavior);
150  }
151 
152  override void PerformReaction(notnull SCR_AIGroupUtilityComponent utility, SCR_AIMessageBase message)
153  {
154  auto msg = SCR_AIMessage_Move.Cast(message);
155  if (!msg)
156  return;
157 
158  auto activity = new SCR_AIMoveActivity(utility, msg.m_RelatedWaypoint, msg.m_MovePosition,
159  msg.m_FollowEntity, msg.m_eMovementType, msg.m_bUseVehicles, SCR_AIActionBase.PRIORITY_ACTIVITY_MOVE, priorityLevel: msg.m_fPriorityLevel);
160 
161  utility.SetStateAllActionsOfType(SCR_AISeekAndDestroyActivity,EAIActionState.FAILED); // move fails seek and destroy
162  utility.AddAction(activity);
163  }
164 };
165 
168 {
169  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
170  {
171  auto msg = SCR_AIMessage_Follow.Cast(message);
172  if (!msg)
173  return;
174 
175  auto behavior = new SCR_AIMoveInFormationBehavior(utility, msg.m_RelatedGroupActivity, vector.Zero, SCR_AIActionBase.PRIORITY_BEHAVIOR_MOVE_IN_FORMATION, priorityLevel: msg.m_fPriorityLevel);
176 
177  utility.AddAction(behavior);
178  }
179 
180  override void PerformReaction(notnull SCR_AIGroupUtilityComponent utility, SCR_AIMessageBase message)
181  {
182  auto msg = SCR_AIMessage_Follow.Cast(message);
183  if (!msg)
184  return;
185 
186  //SCR_AIBaseUtilityComponent utility, bool prioritize, bool isWaypointRelated, vector pos, float priority = PRIORITY_ACTIVITY_FOLLOW, IEntity ent = null, bool useVehicles = false, float distance = 1.0
187  auto activity = new SCR_AIFollowActivity(utility, msg.m_RelatedWaypoint, vector.Zero, msg.m_FollowEntity,
188  msg.m_eMovementType, false, SCR_AIActionBase.PRIORITY_ACTIVITY_FOLLOW, priorityLevel: msg.m_fPriorityLevel, distance: msg.m_fDistance);
189  utility.SetStateAllActionsOfType(SCR_AISeekAndDestroyActivity, EAIActionState.FAILED); // move fails seek and destroy
190  utility.AddAction(activity);
191  }
192 };
193 
196 {
197  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
198  {
199  auto msg = SCR_AIMessage_Investigate.Cast(message);
200  if (!msg)
201  return;
202 
203  // Cancel previous investigations
204  utility.SetStateAllActionsOfType(SCR_AIMoveAndInvestigateBehavior, EAIActionState.FAILED);
205 
206  auto behavior = new SCR_AIMoveAndInvestigateBehavior(utility, msg.m_RelatedGroupActivity, msg.m_vMovePosition,
207  SCR_AIActionBase.PRIORITY_BEHAVIOR_MOVE_AND_INVESTIGATE, msg.m_fPriorityLevel, isDangerous: msg.m_bIsDangerous, radius: msg.m_fRadius, targetUnitType: msg.m_eTargetUnitType, duration: msg.m_fDuration);
208  utility.AddAction(behavior);
209  }
210 };
211 
214 {
215  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
216  {
217  SCR_AIMessageGoal msg = SCR_AIMessageGoal.Cast(message);
218 
219  auto behavior = new SCR_AIMoveInFormationBehavior(utility, msg.m_RelatedGroupActivity, vector.Zero,
220  SCR_AIActionBase.PRIORITY_BEHAVIOR_MOVE_IN_FORMATION, msg.m_fPriorityLevel);
221 
222  utility.AddAction(behavior);
223  }
224 };
225 
228 {
229  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
230  {
231  auto msg = SCR_AIMessage_GetIn.Cast(message);
232  if (!msg)
233  return;
234 
235  auto behavior = new SCR_AIGetInVehicle(utility, msg.m_RelatedGroupActivity, msg.m_Vehicle, msg.m_eRoleInVehicle, SCR_AIActionBase.PRIORITY_BEHAVIOR_VEHICLE, msg.m_fPriorityLevel);
236  if (m_OverrideBehaviorTree != string.Empty)
237  behavior.m_sBehaviorTree = m_OverrideBehaviorTree;
238 
239  utility.AddAction(behavior);
240  }
241 
242  override void PerformReaction(notnull SCR_AIGroupUtilityComponent utility, SCR_AIMessageBase message)
243  {
244  auto msg = SCR_AIMessage_GetIn.Cast(message);
245  if (!msg)
246  return;
247 
248  auto activity = new SCR_AIGetInActivity(utility, msg.m_RelatedWaypoint, msg.m_Vehicle, msg.m_eRoleInVehicle, priorityLevel: msg.m_fPriorityLevel);
249  utility.AddAction(activity);
250  }
251 };
252 
255 {
256  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
257  {
258  auto msg = SCR_AIMessage_GetOut.Cast(message);
259  if (!msg)
260  return;
261 
262  auto behavior = new SCR_AIGetOutVehicle(utility, msg.m_RelatedGroupActivity, msg.m_Vehicle, SCR_AIActionBase.PRIORITY_BEHAVIOR_GET_OUT_VEHICLE, priorityLevel: msg.m_fPriorityLevel);
263  if (m_OverrideBehaviorTree != string.Empty)
264  behavior.m_sBehaviorTree = m_OverrideBehaviorTree;
265 
266  utility.AddAction(behavior);
267  }
268 
269  override void PerformReaction(notnull SCR_AIGroupUtilityComponent utility, SCR_AIMessageBase message)
270  {
271  auto msg = SCR_AIMessage_GetOut.Cast(message);
272  if (!msg)
273  return;
274 
275  auto activity = new SCR_AIGetOutActivity(utility, msg.m_RelatedWaypoint, msg.m_Vehicle, priorityLevel: msg.m_fPriorityLevel);
276  utility.AddAction(activity);
277  }
278 };
279 
282 {
283  override void PerformReaction(notnull SCR_AIGroupUtilityComponent utility, SCR_AIMessageBase message)
284  {
285  auto msg = SCR_AIMessage_SeekAndDestroy.Cast(message);
286  if (!msg)
287  return;
288 
289  auto activity = new SCR_AISeekAndDestroyActivity(utility, msg.m_RelatedWaypoint, msg.m_MovePosition, ent: msg.m_FollowEntity, useVehicles: msg.m_bUseVehicles, priorityLevel: msg.m_fPriorityLevel);
290 
291  utility.SetStateAllActionsOfType(SCR_AIMoveActivity,EAIActionState.FAILED);
292  utility.AddAction(activity);
293  }
294 };
295 
298 {
299  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
300  {
301  auto msg = SCR_AIMessage_Heal.Cast(message);
302  if (!msg)
303  return;
304 
305  auto behavior = new SCR_AIMedicHealBehavior(utility, msg.m_RelatedGroupActivity, msg.m_EntityToHeal, false, priorityLevel: msg.m_fPriorityLevel);
306  if (m_OverrideBehaviorTree != string.Empty)
307  behavior.m_sBehaviorTree = m_OverrideBehaviorTree;
308 
309  utility.WrapBehaviorOutsideOfVehicle(behavior);
310  utility.AddAction(behavior);
311  }
312 
313  override void PerformReaction(notnull SCR_AIGroupUtilityComponent utility, SCR_AIMessageBase message)
314  {
315  auto msg = SCR_AIMessage_Heal.Cast(message);
316  if (!msg)
317  return;
318 
319  SCR_AIActionBase currentAction = SCR_AIActionBase.Cast(utility.GetCurrentAction());
320  if (!currentAction)
321  return;
322 
323  float priorityLevelClamped = currentAction.GetRestrictedPriorityLevel(msg.m_fPriorityLevel);
324 
325  // Ignore message if we already have an activity to heal this soldier
326  SCR_AIHealActivity healActivity = SCR_AIHealActivity.Cast(utility.FindActionOfType(SCR_AIHealActivity));
327  if (!healActivity)
328  return;
329 
330  // Return if we are already healing this soldier
331  if (healActivity.m_EntityToHeal.m_Value == msg.m_EntityToHeal)
332  {
333  healActivity.SetPriorityLevel(priorityLevelClamped);
334  return;
335  }
336 
337  auto activity = new SCR_AIHealActivity(utility, msg.m_RelatedWaypoint, msg.m_EntityToHeal, priorityLevel: priorityLevelClamped);
338 
339  utility.AddAction(activity);
340  }
341 };
342 
345 {
346  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
347  {
348  auto msg = SCR_AIMessage_HealWait.Cast(message);
349  if (!msg)
350  return;
351 
352  auto behavior = new SCR_AIHealWaitBehavior(utility, msg.m_RelatedGroupActivity, msg.m_HealProvider, msg.m_fPriorityLevel);
353 
354  utility.AddAction(behavior);
355  }
356 };
357 
360 {
361  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
362  {
363  auto msg = SCR_AIMessage_Defend.Cast(message);
364  if (!msg)
365  return;
366 
367  auto behavior = new SCR_AIDefendBehavior(utility, msg.m_RelatedGroupActivity, msg.m_RelatedWaypoint,
368  msg.m_vDefendLocation, msg.m_fDefendAngularRange, priorityLevel: msg.m_fPriorityLevel);
369  if (m_OverrideBehaviorTree != string.Empty)
370  behavior.m_sBehaviorTree = m_OverrideBehaviorTree;
371 
372  utility.AddAction(behavior);
373  }
374 
375  override void PerformReaction(notnull SCR_AIGroupUtilityComponent utility, SCR_AIMessageBase message)
376  {
377  auto msg = SCR_AIMessage_Defend.Cast(message);
378  if (!msg)
379  return;
380 
381  auto activity = new SCR_AIDefendActivity(utility, msg.m_RelatedWaypoint, msg.m_RelatedWaypoint, msg.m_vDefendLocation,
382  priorityLevel: msg.m_fPriorityLevel);
383  if (m_OverrideBehaviorTree != string.Empty)
384  activity.m_sBehaviorTree = m_OverrideBehaviorTree;
385 
386  utility.AddAction(activity);
387  }
388 };
389 
392 {
393  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
394  {
395  auto msg = SCR_AIMessage_PerformAction.Cast(message);
396  if (!msg)
397  return;
398 
399  auto behavior = new SCR_AIPerformActionBehavior(utility, msg.m_RelatedGroupActivity, msg.m_SmartActionComponent, priorityLevel: msg.m_fPriorityLevel);
400  if (m_OverrideBehaviorTree != string.Empty)
401  behavior.m_sBehaviorTree = m_OverrideBehaviorTree;
402 
403  utility.AddAction(behavior);
404  }
405 
406  override void PerformReaction(notnull SCR_AIGroupUtilityComponent utility, SCR_AIMessageBase message)
407  {
408  auto msg = SCR_AIMessage_PerformAction.Cast(message);
409  if (!msg)
410  return;
411 
412  auto activity = new SCR_AIPerformActionActivity(utility, msg.m_RelatedWaypoint, msg.m_SmartActionEntity, msg.m_SmartActionTag, priorityLevel: msg.m_fPriorityLevel);
413  if (m_OverrideBehaviorTree != string.Empty)
414  activity.m_sBehaviorTree = m_OverrideBehaviorTree;
415 
416  utility.AddAction(activity);
417  }
418 };
419 
422 {
423  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
424  {
425  SCR_AIMessage_Cancel msg = SCR_AIMessage_Cancel.Cast(message);
426  if (!msg || !msg.m_RelatedGroupActivity)
427  return;
428 // utility.FailBehaviorsOfActivity(msg.m_RelatedGroupActivity);
429  utility.SetStateOfRelatedAction(msg.m_RelatedGroupActivity, EAIActionState.FAILED);
430  }
431 };
432 
435 {
436 };
437 
440 {
441  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
442  {
444  if (!msg)
445  return;
446 
447  SCR_AIThrowGrenadeToBehavior behavior = new SCR_AIThrowGrenadeToBehavior(utility, msg.m_RelatedGroupActivity, msg.m_vTargetPosition, msg.e_WeaponType, msg.m_fDelay, msg.m_fPriorityLevel);
448  utility.AddAction(behavior);
449  }
450 };
451 
454 {
455  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
456  {
458  if (!msg)
459  return;
460 
461  SCR_AIProvideAmmoBehavior behavior = new SCR_AIProvideAmmoBehavior(utility, msg.m_RelatedGroupActivity,
462  msg.m_AmmoConsumer, msg.m_MagazineWell, msg.m_fPriorityLevel);
463 
464  utility.AddAction(behavior);
465  }
466 }
467 
469 class SCR_AIGoalReaction_PickupInventoryItems : SCR_AIGoalReaction
470 {
471  override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
472  {
474  if (!msg)
475  return;
476 
477  SCR_AIPickupInventoryItemsBehavior behavior = new SCR_AIPickupInventoryItemsBehavior(utility, msg.m_RelatedGroupActivity,
478  msg.m_vPickupPosition, msg.m_MagazineWellType, msg.m_fPriorityLevel);
479 
480  utility.AddAction(behavior);
481  }
482 }
483 
484 //--------------------------------------------------------------------------------------------------------
485 // Helper methods used in above
486 
487 static void UpdateLastSeenPosition2(BaseTarget baseTarget, SCR_AITargetInfo newTargetInfo)
488 {
489  if (baseTarget && baseTarget.GetTargetEntity() == newTargetInfo.m_Entity)
490  baseTarget.UpdateLastSeenPosition(newTargetInfo.m_vWorldPos, newTargetInfo.m_fTimestamp);
491 }
SCR_AIMessage_SeekAndDestroy
Definition: SCR_AIMessage.c:439
SCR_AIMessage_Cancel
Definition: SCR_AIMessage.c:263
SCR_AIFollowActivity
Definition: SCR_AIMoveActivity.c:84
SCR_AIDefendActivity
Definition: SCR_AIDefendActivity.c:1
SCR_AIGoalReaction_Investigate
Definition: SCR_AIGoalReaction.c:195
SCR_AIMessage_Follow
Definition: SCR_AIMessage.c:379
SCR_AIGoalReaction_GetInVehicle
Definition: SCR_AIGoalReaction.c:227
SCR_AIActionBase
Definition: SCR_AIAction.c:1
SCR_AIMessage_HealWait
Definition: SCR_AIMessage.c:518
SCR_AIDefendBehavior
Definition: SCR_AIDefendBehavior.c:1
SCR_AISeekAndDestroyActivity
Definition: SCR_AIMoveActivity.c:70
SCR_AIProvideAmmoBehavior
Definition: SCR_AIProvideAmmoBehavior.c:4
SCR_AIThrowGrenadeToBehavior
Definition: SCR_AIThrowGrenadeToBehavior.c:1
SCR_AIGoalReaction_Cancel
Definition: SCR_AIGoalReaction.c:421
ETargetCategory
ETargetCategory
Definition: ETargetCategory.c:12
SCR_AIMessage_Move
Definition: SCR_AIMessage.c:354
SCR_AIHealActivity
Definition: SCR_AIHealActivity.c:1
SCR_AIGoalReaction_Heal
Definition: SCR_AIGoalReaction.c:297
SCR_AIMessage_Defend
Definition: SCR_AIMessage.c:493
SCR_AIGoalReaction_ProvideAmmo
Definition: SCR_AIGoalReaction.c:453
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition: SCR_RespawnBriefingComponent.c:17
SCR_AIGoalReaction_GetOutVehicle
Definition: SCR_AIGoalReaction.c:254
SCR_AIMoveInFormationBehavior
Definition: SCR_AIMoveBehavior.c:15
SCR_AIMessage_AttackCluster
Definition: SCR_AIMessage.c:305
BaseTarget
Definition: BaseTarget.c:12
SCR_AIMessageGoal
Definition: SCR_AIMessage.c:69
SCR_AIPickupInventoryItemsBehavior
Definition: SCR_AIPickupInventoryItemsBehavior.c:1
SCR_AIMessage_PerformAction
Definition: SCR_AIMessage.c:534
SCR_AIGoalReaction_ThrowGrenadeTo
Definition: SCR_AIGoalReaction.c:439
SCR_AIMessage_PickupInventoryItems
void SCR_AIMessage_PickupInventoryItems()
Definition: SCR_AIMessage.c:480
SCR_AIMessage_Heal
Definition: SCR_AIMessage.c:447
SCR_AIMessage_Attack
Definition: SCR_AIMessage.c:279
SCR_AIGoalReaction_Retreat
Definition: SCR_AIGoalReaction.c:434
SCR_AIGetOutVehicle
Definition: SCR_AIVehicleBehavior.c:118
Attribute
typedef Attribute
Post-process effect of scripted camera.
SCR_AITalkRequest
void SCR_AITalkRequest(ECommunicationType type, IEntity entity, vector pos, int enumSignal, bool transmitIfNoReceivers, bool transmitIfPassenger, SCR_EAITalkRequestPreset preset)
Definition: SCR_AITalkRequest.c:37
SCR_AIGoalReaction_Attack
Definition: SCR_AIGoalReaction.c:25
SCR_AIGoalReaction_Defend
Definition: SCR_AIGoalReaction.c:359
distance
float distance
Definition: SCR_DestructibleTreeV2.c:29
SCR_AIGoalReaction_HealWait
Definition: SCR_AIGoalReaction.c:344
SCR_AIMessage_GetIn
Definition: SCR_AIMessage.c:558
SCR_AIMoveActivity
Definition: SCR_AIMoveActivity.c:1
ECommunicationType
ECommunicationType
Definition: SCR_AISoundHandling.c:1
SCR_AIMessage_ProvideAmmo
Definition: SCR_AIMessage.c:457
SCR_AIMessage_Investigate
Definition: SCR_AIMessage.c:400
SCR_AIPerformActionActivity
Definition: SCR_AIPerformActionActivity.c:1
SCR_AIGoalReaction_SeekAndDestroy
Definition: SCR_AIGoalReaction.c:281
SCR_AIGoalReaction_AttackCluster
Definition: SCR_AIGoalReaction.c:39
SCR_AIMoveIndividuallyBehavior
Definition: SCR_AIMoveBehavior.c:30
SCR_AIGetInActivity
Definition: SCR_AIGetInActivity.c:1
EMessageType_Goal
EMessageType_Goal
Definition: SCR_AIMessage.c:15
SCR_AIMessage_GetOut
Definition: SCR_AIMessage.c:576
PerformReaction
override void PerformReaction(notnull SCR_AIUtilityComponent utility, SCR_AIMessageBase message)
Definition: SCR_AIGoalReaction.c:2
SCR_AIGetOutActivity
Definition: SCR_AIGetOutActivity.c:1
SCR_AIGoalReaction
Definition: SCR_AIGoalReaction.c:6
SCR_AICommsHandler
Definition: SCR_AICommsHandler.c:19
SCR_AIMedicHealBehavior
Definition: SCR_AIMedicHealBehavior.c:3
params
Configs ServerBrowser KickDialogs params
Definition: SCR_NotificationSenderComponent.c:24
SCR_AIGoalReaction_Follow
Definition: SCR_AIGoalReaction.c:167
SCR_AIInvestigateClusterActivity
Definition: SCR_AIInvestigateClusterActivity.c:1
SCR_AIGoalReaction_MoveInFormation
Definition: SCR_AIGoalReaction.c:213
SCR_AIGetInVehicle
Definition: SCR_AIVehicleBehavior.c:37
SCR_AIPerformActionBehavior
Definition: SCR_AIPerformActionBehavior.c:1
SCR_AIMessage_AttackClusterDone
SCR_AIMessage_AttackCluster SCR_AIMessageGoal SCR_AIMessage_AttackClusterDone()
Definition: SCR_AIMessage.c:326
EAIActionState
EAIActionState
Definition: EAIActionState.c:12
SCR_AIMessage_ThrowGrenadeTo
Definition: SCR_AIMessage.c:598
SCR_AIMoveAndInvestigateBehavior
Definition: SCR_AIMoveBehavior.c:53
SCR_AIMessageBase
Definition: SCR_AIMessage.c:44
SCR_AIHealWaitBehavior
Definition: SCR_AIHealWaitBehavior.c:5
BaseContainerProps
SCR_AIGoalReaction_Follow BaseContainerProps
Handles insects that are supposed to be spawned around selected prefabs defined in prefab names array...
Definition: SCR_AIGoalReaction.c:468
SCR_AIGoalReaction_PerformAction
Definition: SCR_AIGoalReaction.c:391