Arma Reforger Explorer
1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Toggle main menu visibility
Loading...
Searching...
No Matches
SCR_AIMessage.c
Go to the documentation of this file.
1
enum
EMessageType_Info
2
{
3
NONE
,
4
NO_AMMO
,
5
WOUNDED
,
6
FOUND_CORPSE
,
7
UNDER_FIRE
,
8
REQ_RETREAT
,
9
REQ_AMMO
,
10
SIT_REP
,
11
ACTION_FAILED
,
// Reaction is not implemented
12
HEAL_FAILED
13
};
14
15
enum
EMessageType_Goal
16
{
17
NONE
,
18
ATTACK
,
19
ATTACK_CLUSTER
,
20
ATTACK_CLUSTER_DONE
,
21
COVER_CLUSTER
,
22
MOVE_IN_FORMATION
,
23
SEEK_DESTROY
,
24
FLEE
,
25
GET_IN_VEHICLE
,
26
GET_OUT_VEHICLE
,
27
MOVE
,
28
FOLLOW
,
29
UNGROUP
,
30
HEAL
,
31
HEAL_WAIT
,
32
INVESTIGATE
,
33
DEFEND
,
34
RETREAT
,
35
PERFORM_ACTION
,
36
CANCEL
,
37
SIT_REP
,
38
THROW_GRENADE_TO
,
39
SUPPRESS
,
40
PROVIDE_AMMO
,
41
PICKUP_INVENTORY_ITEMS
,
42
OPEN_NAVLINK_DOOR
,
43
FIRE_ILLUM_FLARE
,
44
ANIMATE
,
45
ARTILLERY_SUPPORT
46
};
47
48
//----------------- EXPAND MESSAGE TYPES
49
class
SCR_AIMessageBase
:
AIMessage
50
{
51
int
m_MessageType;
// here is kept enum for message type, which enum it is depends on IsInherited()
52
53
#ifdef AI_DEBUG
54
// The Behavior Tree which has sent this message
55
string
m_sSentFromBt;
56
#endif
57
58
void
SetMessageParameters(
SCR_AISendMessageBase
node)
// this method fills an existing message with content
59
{
60
string
debugText;
61
if
(!node.GetVariableIn(node.PORT_STRING,debugText))
62
debugText = node.
m_string
;
63
SetText(debugText);
64
SetReceiver(node.
m_Receiver
);
65
}
66
67
string
GetDebugText()
68
{
69
return
string
.Format(
"\t%1"
,
this
);
70
}
71
};
72
73
//---------------------------------------------------------------------------------------------------
74
class
SCR_AIMessageGoal
:
SCR_AIMessageBase
// MESSAGE_CLASS()
75
{
76
[
Attribute
(
"0"
,
UIWidgets
.ComboBox,
"Type of event generating the message"
,
""
, ParamEnumArray.FromEnum(
EMessageType_Goal
) )]
77
EMessageType_Goal
m_eUIType;
78
79
ref
SCR_AIActivityBase
m_RelatedGroupActivity;
80
float
m_fPriorityLevel;
// VARIABLE(NodePort, PriorityLevel, NodeProperty, m_fPriorityLevel)
81
bool
m_bIsWaypointRelated;
// VARIABLE(NodePort, IsWaypointRelated, NodeProperty, m_bIsWaypointRelated)
82
AIWaypoint m_RelatedWaypoint;
83
84
void
SetMessageParameters(
SCR_AISendGoalMessage
node,
SCR_AIActivityBase
relatedActivity)
85
{
86
super.SetMessageParameters(node);
87
m_RelatedGroupActivity = relatedActivity;
88
if
(!node.GetVariableIn(node.PORT_PRIORITY_LEVEL, m_fPriorityLevel))
89
m_fPriorityLevel = node.m_fPriorityLevel;
90
m_bIsWaypointRelated = node.m_bIsWaypointRelated;
91
}
92
93
override
string
GetDebugText()
94
{
95
return
super.GetDebugText() +
string
.Format(
"\tType: %1\n"
,
typename
.EnumToString(
EMessageType_Goal
, m_eUIType));
96
}
97
};
98
99
//---------------------------------------------------------------------------------------------------
100
class
SCR_AIMessageInfo
:
SCR_AIMessageBase
// MESSAGE_CLASS()
101
{
102
[
Attribute
(
"0"
,
UIWidgets
.ComboBox,
"Type of event generating the message"
,
""
, ParamEnumArray.FromEnum(
EMessageType_Info
) )]
103
EMessageType_Info
m_eUIType;
104
105
override
string
GetDebugText()
106
{
107
return
super.GetDebugText() +
string
.Format(
"\tType: %1\n"
,
typename
.EnumToString(
EMessageType_Info
, m_eUIType));
108
}
109
};
110
111
//----------------- EXPAND MESSAGE SUBTYPES - info type for relaying information
112
113
class
SCR_AIMessage_Target
:
SCR_AIMessageInfo
// MESSAGE_CLASS(GenerateSendInfoMessage, SCR_AISendInfoMessage_Target)
114
{
115
ref SCR_AITargetInfo m_TargetInfo;
// VARIABLE(NodePort, TargetInfo)
116
117
override
void
SetMessageParameters(
SCR_AISendMessageBase
node)
118
{
119
super.SetMessageParameters(node);
120
121
SCR_AISendMessageGeneric
genericNode =
SCR_AISendMessageGeneric
.Cast(node);
122
123
IEntity
targetEntity;
124
vector
pos;
125
float
time;
126
127
genericNode.GetVariableIn(genericNode.PORT_ENTITY, targetEntity);
128
if
(!genericNode.GetVariableIn(genericNode.PORT_VECTOR, pos))
129
pos = genericNode.m_vector;
130
genericNode.GetVariableIn(genericNode.PORT_FLOAT, time);
131
m_TargetInfo =
new
SCR_AITargetInfo();
132
m_TargetInfo.Init(targetEntity, worldPos: pos, timestamp: time);
133
}
134
};
135
136
class
SCR_AIMessage_NoAmmo :
SCR_AIMessageInfo
// MESSAGE_CLASS(GenerateSendInfoMessage, SCR_AISendInfoMessage_NoAmmo)
137
{
138
IEntity
m_entityToSupply;
// VARIABLE(NodePort, EntityToSupply)
139
typename
m_MagazineWell;
// VARIABLE(NodePort, MagazineWellType)
140
141
void
SCR_AIMessage_NoAmmo()
142
{
143
m_MessageType =
EMessageType_Info
.NO_AMMO;
144
}
145
146
override
void
SetMessageParameters(
SCR_AISendMessageBase
node)
147
{
148
super.SetMessageParameters(node);
149
150
SCR_AISendMessageGeneric
genericNode =
SCR_AISendMessageGeneric
.Cast(node);
151
152
genericNode.GetVariableIn(genericNode.PORT_ENTITY, m_entityToSupply);
153
genericNode.GetVariableIn(genericNode.PORT_TYPENAME, m_MagazineWell);
154
}
155
156
static
SCR_AIMessage_NoAmmo Create(
IEntity
entityToResupply,
typename
magazineWell)
157
{
158
SCR_AIMessage_NoAmmo msg =
new
SCR_AIMessage_NoAmmo();
159
160
msg.m_entityToSupply = entityToResupply;
161
msg.m_MagazineWell = magazineWell;
162
163
return
msg;
164
}
165
};
166
167
class
SCR_AIMessage_UnderFire :
SCR_AIMessageInfo
// MESSAGE_CLASS(GenerateSendInfoMessage, SCR_AISendInfoMessage_UnderFire)
168
{
169
vector
m_vPosition;
// VARIABLE(NodePort, Position)
170
171
void
SCR_AIMessage_UnderFire()
172
{
173
m_MessageType =
EMessageType_Info
.UNDER_FIRE;
174
}
175
176
override
void
SetMessageParameters(
SCR_AISendMessageBase
node)
177
{
178
super.SetMessageParameters(node);
179
180
SCR_AISendMessageGeneric
genericNode =
SCR_AISendMessageGeneric
.Cast(node);
181
182
if
(!genericNode.GetVariableIn(genericNode.PORT_VECTOR, m_vPosition))
183
m_vPosition = genericNode.m_vector;
184
}
185
};
186
187
class
SCR_AIMessage_FoundCorpse :
SCR_AIMessageInfo
// MESSAGE_CLASS(GenerateSendInfoMessage, SCR_AISendInfoMessage_FoundCorpse)
188
{
189
vector
m_vPosition;
// VARIABLE(NodePort, Position)
190
191
void
SCR_AIMessage_FoundCorpse()
192
{
193
m_MessageType =
EMessageType_Info
.FOUND_CORPSE;
194
}
195
196
override
void
SetMessageParameters(
SCR_AISendMessageBase
node)
197
{
198
super.SetMessageParameters(node);
199
200
SCR_AISendMessageGeneric
genericNode =
SCR_AISendMessageGeneric
.Cast(node);
201
202
if
(!genericNode.GetVariableIn(genericNode.PORT_VECTOR, m_vPosition))
203
m_vPosition = genericNode.m_vector;
204
}
205
};
206
207
class
SCR_AIMessage_Wounded : SCR_AIMessage_FoundCorpse
// MESSAGE_CLASS(GenerateSendInfoMessage, SCR_AISendInfoMessage_Wounded)
208
{
209
IEntity
m_WoundedEntity;
// VARIABLE(NodePort, WoundedEntity)
210
211
void
SCR_AIMessage_Wounded()
212
{
213
m_MessageType =
EMessageType_Info
.WOUNDED;
214
}
215
216
static
SCR_AIMessage_Wounded Create(
IEntity
woundedEntity)
217
{
218
SCR_AIMessage_Wounded m =
new
SCR_AIMessage_Wounded();
219
m.m_WoundedEntity = woundedEntity;
220
return
m;
221
}
222
223
override
void
SetMessageParameters(
SCR_AISendMessageBase
node)
224
{
225
super.SetMessageParameters(node);
226
227
SCR_AISendMessageGeneric
genericNode =
SCR_AISendMessageGeneric
.Cast(node);
228
229
genericNode.GetVariableIn(genericNode.PORT_ENTITY, m_WoundedEntity);
230
if
(!genericNode.GetVariableIn(genericNode.PORT_VECTOR, m_vPosition))
231
m_vPosition = genericNode.m_vector;
232
}
233
};
234
235
class
SCR_AIMessage_SitRep :
SCR_AIMessageInfo
// MESSAGE_CLASS(GenerateSendInfoMessage, SCR_AISendInfoMessage_SitRep)
236
{
237
int
m_MagazinesCount,m_BandagesCount;
238
239
void
SCR_AIMessage_SitRep()
240
{
241
m_MessageType =
EMessageType_Info
.SIT_REP;
242
}
243
};
244
245
class
SCR_AIMessage_ActionFailed :
SCR_AIMessageInfo
246
{
247
// The action which we have failed
248
typename
m_ActionTypename;
249
250
void
SCR_AIMessage_ActionFailed()
251
{
252
m_MessageType =
EMessageType_Info
.ACTION_FAILED;
253
}
254
};
255
256
class
SCR_AIMessage_HealFailed :
SCR_AIMessageInfo
// MESSAGE_CLASS(GenerateSendInfoMessage, SCR_AISendInfoMessage_HealFailed)
257
{
258
IEntity
m_TargetEntity;
// VARIABLE(NodePort, TargetEntity)
259
260
void
SCR_AIMessage_HealFailed()
261
{
262
m_MessageType =
EMessageType_Info
.HEAL_FAILED;
263
}
264
};
265
266
//----------------- EXPAND MESSAGE SUBTYPES - goal type for issuing commands
267
268
class
SCR_AIMessage_Cancel :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_Cancel)
269
{
270
void
SCR_AIMessage_Cancel()
271
{
272
m_MessageType =
EMessageType_Goal
.CANCEL;
273
}
274
275
static
SCR_AIMessage_Cancel Create(
SCR_AIActivityBase
relatedActivity)
276
{
277
SCR_AIMessage_Cancel msg =
new
SCR_AIMessage_Cancel();
278
msg.m_RelatedGroupActivity = relatedActivity;
279
280
return
msg;
281
}
282
};
283
284
class
SCR_AIMessage_Attack :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_Attack)
285
{
286
ref SCR_AITargetInfo m_TargetInfo;
// VARIABLE(NodePort, TargetInfo)
287
288
void
SCR_AIMessage_Attack()
289
{
290
m_MessageType =
EMessageType_Goal
.ATTACK;
291
}
292
293
override
void
SetMessageParameters(
SCR_AISendGoalMessage
node,
SCR_AIActivityBase
relatedActivity)
294
{
295
super.SetMessageParameters(node,relatedActivity);
296
297
IEntity
targetEntity;
298
vector
pos;
299
float
time;
300
301
node.GetVariableIn(node.PORT_ENTITY, targetEntity);
302
if
(!node.GetVariableIn(node.PORT_VECTOR, pos))
303
pos = node.m_vector;
304
node.GetVariableIn(node.PORT_FLOAT, time);
305
m_TargetInfo =
new
SCR_AITargetInfo();
306
m_TargetInfo.Init(targetEntity, worldPos: pos, timestamp: time);
307
}
308
};
309
310
class
SCR_AIMessage_AttackCluster :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_AttackCluster)
311
{
312
SCR_AITargetClusterState
m_TargetClusterState;
// VARIABLE(NodePort, TargetClusterState)
313
bool
m_bAllowInvestigate;
// VARIABLE(NodePort, AllowInvestigate)
314
315
void
SCR_AIMessage_AttackCluster
()
316
{
317
m_MessageType =
EMessageType_Goal
.ATTACK_CLUSTER;
318
}
319
320
static
SCR_AIMessage_AttackCluster Create(
SCR_AITargetClusterState
s,
bool
allowInvestigate)
321
{
322
SCR_AIMessage_AttackCluster msg =
new
SCR_AIMessage_AttackCluster
();
323
msg.m_TargetClusterState = s;
324
msg.m_bAllowInvestigate = allowInvestigate;
325
return
msg;
326
}
327
}
328
329
class
SCR_AIMessage_AttackClusterDone
:
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_AttackClusterDone)
330
{
331
void
SCR_AIMessage_AttackClusterDone
()
332
{
333
m_MessageType =
EMessageType_Goal
.ATTACK_CLUSTER_DONE;
334
}
335
336
static
SCR_AIMessage_AttackClusterDone
Create()
337
{
338
SCR_AIMessage_AttackClusterDone
msg =
new
SCR_AIMessage_AttackClusterDone
();
339
return
msg;
340
}
341
}
342
343
class
SCR_AIMessage_CoverCluster :
SCR_AIMessageGoal
344
{
345
void
SCR_AIMessage_CoverCluster
()
346
{
347
m_MessageType =
EMessageType_Goal
.COVER_CLUSTER;
348
}
349
}
350
351
class
SCR_AIMessage_KeepFormation
:
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_KeepFormation)
352
{
353
void
SCR_AIMessage_KeepFormation
()
354
{
355
m_MessageType =
EMessageType_Goal
.MOVE_IN_FORMATION;
356
}
357
};
358
359
class
SCR_AIMessage_Move :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_Move)
360
{
361
IEntity
m_FollowEntity;
// VARIABLE(NodePort, FollowEntity)
362
vector
m_MovePosition;
// VARIABLE(NodePort, MovePosition)
363
EMovementType
m_eMovementType;
// VARIABLE(NodePropertyEnum, m_eMovementType)
364
bool
m_bUseVehicles;
// VARIABLE(NodePort, UseVehicles, NodeProperty, m_bUseVehicles)
365
366
void
SCR_AIMessage_Move()
367
{
368
m_MessageType =
EMessageType_Goal
.MOVE;
369
}
370
371
override
void
SetMessageParameters(
SCR_AISendGoalMessage
node,
SCR_AIActivityBase
relatedActivity)
372
{
373
super.SetMessageParameters(node, relatedActivity);
374
node.GetVariableIn(node.PORT_ENTITY, m_FollowEntity);
375
if
(!node.GetVariableIn(node.PORT_VECTOR, m_MovePosition))
376
m_MovePosition = node.m_vector;
377
if
(!node.GetVariableIn(node.PORT_BOOL, m_bUseVehicles))
378
m_bUseVehicles = node.m_bool;
379
if
(!node.GetVariableIn(node.PORT_PRIORITY_LEVEL,m_fPriorityLevel))
380
m_fPriorityLevel = node.m_fPriorityLevel;
381
}
382
383
static
SCR_AIMessage_Move Create(
IEntity
entity,
vector
position
,
EMovementType
movementType,
bool
useVehicles,
SCR_AIActivityBase
relatedActivity)
384
{
385
SCR_AIMessage_Move msg =
new
SCR_AIMessage_Move();
386
msg.m_FollowEntity = entity;
387
msg.m_MovePosition =
position
;
388
msg.m_eMovementType = movementType;
389
msg.m_bUseVehicles = useVehicles;
390
msg.m_RelatedGroupActivity = relatedActivity;
391
return
msg;
392
}
393
};
394
395
class
SCR_AIMessage_Follow : SCR_AIMessage_Move
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_Follow)
396
{
397
float
m_fDistance;
// VARIABLE(NodePort, Distance)
398
399
void
SCR_AIMessage_Follow()
400
{
401
m_MessageType =
EMessageType_Goal
.FOLLOW;
402
}
403
404
override
void
SetMessageParameters(
SCR_AISendGoalMessage
node,
SCR_AIActivityBase
relatedActivity)
405
{
406
super.SetMessageParameters(node, relatedActivity);
407
node.GetVariableIn(node.PORT_ENTITY, m_FollowEntity);
408
node.GetVariableIn(node.PORT_FLOAT, m_fDistance);
409
if
(!node.GetVariableIn(node.PORT_BOOL, m_bUseVehicles))
410
m_bUseVehicles = node.m_bool;
411
if
(!node.GetVariableIn(node.PORT_PRIORITY_LEVEL,m_fPriorityLevel))
412
m_fPriorityLevel = node.m_fPriorityLevel;
413
}
414
};
415
416
class
SCR_AIMessage_Investigate :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_Investigate)
417
{
418
IEntity
m_ObjectEntity;
// VARIABLE(NodePort, ObjectEntity)
419
vector
m_vMovePosition;
// VARIABLE(NodePort, MovePosition)
420
float
m_fRadius;
// VARIABLE(NodePort, Radius, NodeProperty, m_fRadius)
421
bool
m_bIsDangerous;
// VARIABLE(NodePort, IsDangerous, NodeProperty, m_bIsDangerous)
422
EAIUnitType
m_eTargetUnitType =
EAIUnitType
.UnitType_Infantry;
// VARIABLE(NodePropertyEnum, m_eTargetUnitType)
423
float
m_fDuration = 10;
// VARIABLE(NodePort, Duration, NodeProperty, m_fDuration)
424
425
void
SCR_AIMessage_Investigate()
426
{
427
m_MessageType =
EMessageType_Goal
.INVESTIGATE;
428
}
429
430
static
SCR_AIMessage_Investigate Create(
SCR_AIActivityBase
relatedActivity,
vector
pos,
float
radius,
bool
dangerous,
EAIUnitType
unitType =
EAIUnitType
.UnitType_Infantry,
float
duration = 10.0)
431
{
432
SCR_AIMessage_Investigate msg =
new
SCR_AIMessage_Investigate();
433
msg.m_fRadius = radius;
434
msg.m_vMovePosition = pos;
435
msg.m_bIsDangerous = dangerous;
436
msg.m_eTargetUnitType = unitType;
437
msg.m_fDuration = duration;
438
msg.m_RelatedGroupActivity = relatedActivity;
439
return
msg;
440
}
441
442
override
void
SetMessageParameters(
SCR_AISendGoalMessage
node,
SCR_AIActivityBase
relatedActivity)
443
{
444
super.SetMessageParameters(node, relatedActivity);
445
node.GetVariableIn(node.PORT_ENTITY, m_ObjectEntity);
446
node.GetVariableIn(node.PORT_VECTOR, m_vMovePosition);
447
if
(!node.GetVariableIn(node.PORT_FLOAT, m_fRadius))
448
m_fRadius = 10.0;
449
if
(!node.GetVariableIn(node.PORT_BOOL, m_bIsDangerous))
450
m_bIsDangerous =
false
;
451
if
(!node.GetVariableIn(node.PORT_PRIORITY_LEVEL,m_fPriorityLevel))
452
m_fPriorityLevel = node.m_fPriorityLevel;
453
}
454
};
455
456
class
SCR_AIMessage_SeekAndDestroy : SCR_AIMessage_Move
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_SeekAndDestroy)
457
{
458
void
SCR_AIMessage_SeekAndDestroy()
459
{
460
m_MessageType =
EMessageType_Goal
.SEEK_DESTROY;
461
}
462
};
463
464
class
SCR_AIMessage_Heal :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_Heal)
465
{
466
IEntity
m_EntityToHeal;
// VARIABLE(NodePort, EntityToHeal)
467
468
void
SCR_AIMessage_Heal()
469
{
470
m_MessageType =
EMessageType_Goal
.HEAL;
471
}
472
};
473
474
class
SCR_AIMessage_ProvideAmmo :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_ProvideAmmo)
475
{
476
IEntity
m_AmmoConsumer;
// VARIABLE(NodePort, AmmoConsumerEntity)
477
typename
m_MagazineWell;
// VARIABLE(NodePort, MagazineWellType)
478
479
void
SCR_AIMessage_ProvideAmmo()
480
{
481
m_MessageType =
EMessageType_Goal
.PROVIDE_AMMO;
482
}
483
484
override
void
SetMessageParameters(
SCR_AISendGoalMessage
node,
SCR_AIActivityBase
relatedActivity)
485
{
486
super.SetMessageParameters(node, relatedActivity);
487
node.GetVariableIn(
SCR_AISendGoalMessage
.PORT_ENTITY, m_AmmoConsumer);
488
node.GetVariableIn(
SCR_AISendGoalMessage
.PORT_TYPENAME, m_MagazineWell);
489
}
490
}
491
492
class
SCR_AIMessage_PickupInventoryItems
:
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_PickupInventoryItems)
493
{
494
vector
m_vPickupPosition
;
// VARIABLE(NodePort, PickupPosition)
495
typename
m_MagazineWellType
;
// VARIABLE(NodePort, MagazineWellType)
496
497
void
SCR_AIMessage_PickupInventoryItems
()
498
{
499
m_MessageType =
EMessageType_Goal
.PICKUP_INVENTORY_ITEMS;
500
}
501
502
override
void
SetMessageParameters
(
SCR_AISendGoalMessage
node,
SCR_AIActivityBase
relatedActivity)
503
{
504
super.SetMessageParameters(node, relatedActivity);
505
node.GetVariableIn(
SCR_AISendGoalMessage
.PORT_VECTOR,
m_vPickupPosition
);
506
node.GetVariableIn(
SCR_AISendGoalMessage
.PORT_TYPENAME,
m_MagazineWellType
);
507
}
508
}
509
510
class
SCR_AIMessage_Defend :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_Defend)
511
{
512
vector
m_vDefendDirection;
// VARIABLE(NodePort, DefendDirection)
513
float
m_fDefendAngularRange;
// VARIABLE(NodePort, DefendAngularRange, NodeProperty, m_fDefendAngularRange)
514
515
void
SCR_AIMessage_Defend()
516
{
517
m_MessageType =
EMessageType_Goal
.DEFEND;
518
}
519
520
override
void
SetMessageParameters(
SCR_AISendGoalMessage
node,
SCR_AIActivityBase
relatedActivity)
521
{
522
super.SetMessageParameters(node, relatedActivity);
523
node.GetVariableIn(node.PORT_ENTITY, m_RelatedWaypoint);
524
}
525
526
static
SCR_AIMessage_Defend Create(
vector
defendDirection,
float
defendAngularRange,
bool
waypointRelated,
527
float
priorityLevel, AIWaypoint relatedWaypoint,
SCR_AIActivityBase
relatedActivity)
528
{
529
SCR_AIMessage_Defend msg =
new
SCR_AIMessage_Defend();
530
msg.m_vDefendDirection = defendDirection;
531
msg.m_fDefendAngularRange = defendAngularRange;
532
msg.m_bIsWaypointRelated = waypointRelated;
533
msg.m_fPriorityLevel = priorityLevel;
534
msg.m_RelatedWaypoint = relatedWaypoint;
535
msg.m_RelatedGroupActivity = relatedActivity;
536
return
msg;
537
}
538
};
539
540
class
SCR_AIMessage_Retreat :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_Retreat)
541
{
542
void
SCR_AIMessage_Retreat()
543
{
544
m_MessageType =
EMessageType_Goal
.RETREAT;
545
}
546
};
547
548
class
SCR_AIMessage_HealWait :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_HealWait)
549
{
550
IEntity
m_HealProvider;
// VARIABLE(NodePort, HealProviderEntity)
551
552
void
SCR_AIMessage_HealWait()
553
{
554
m_MessageType =
EMessageType_Goal
.HEAL_WAIT;
555
}
556
557
override
void
SetMessageParameters(
SCR_AISendGoalMessage
node,
SCR_AIActivityBase
relatedActivity)
558
{
559
super.SetMessageParameters(node, relatedActivity);
560
node.GetVariableIn(node.PORT_ENTITY, m_HealProvider);
561
}
562
};
563
564
class
SCR_AIMessage_PerformAction :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_PerformAction)
565
{
566
SCR_AISmartActionComponent
m_SmartActionComponent;
// VARIABLE(NodePort, SmartAction)
567
IEntity
m_SmartActionEntity;
// VARIABLE(NodePort, SmartActionEntity)
568
string
m_SmartActionTag;
// VARIABLE(NodePort, SmartActionTag, NodeProperty, m_sSmartActionTag)
569
570
void
SCR_AIMessage_PerformAction()
571
{
572
m_MessageType =
EMessageType_Goal
.PERFORM_ACTION;
573
}
574
575
override
void
SetMessageParameters(
SCR_AISendGoalMessage
node,
SCR_AIActivityBase
relatedActivity)
576
{
577
super.SetMessageParameters(node, relatedActivity);
578
node.GetVariableIn(node.PORT_ENTITY, m_SmartActionEntity);
579
node.GetVariableIn(node.PORT_STRING, m_SmartActionTag);
580
}
581
582
static
SCR_AIMessage_PerformAction Create(
IEntity
sAEntity,
string
sATag,
SCR_AISmartActionComponent
sAComponent,
bool
waypointRelated,
583
float
priorityLevel, AIWaypoint relatedWaypoint,
SCR_AIActivityBase
relatedActivity)
584
{
585
SCR_AIMessage_PerformAction msg =
new
SCR_AIMessage_PerformAction();
586
msg.m_SmartActionEntity = sAEntity;
587
msg.m_SmartActionTag = sATag;
588
msg.m_SmartActionComponent = sAComponent;
589
msg.m_bIsWaypointRelated = waypointRelated;
590
msg.m_fPriorityLevel = priorityLevel;
591
msg.m_RelatedWaypoint = relatedWaypoint;
592
msg.m_RelatedGroupActivity = relatedActivity;
593
return
msg;
594
}
595
};
596
597
class
SCR_AIMessage_OpenNavlinkDoor :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_OpenNavlinkDoor)
598
{
599
IEntity
m_DoorEntity;
// VARIABLE(NodePort, DoorEntity)
600
601
void
SCR_AIMessage_OpenNavlinkDoor()
602
{
603
m_MessageType =
EMessageType_Goal
.OPEN_NAVLINK_DOOR;
604
}
605
};
606
607
class
SCR_AIMessage_Vehicle
:
SCR_AIMessageGoal
// MESSAGE_CLASS()
608
{
609
IEntity
m_Vehicle;
// VARIABLE(NodePort, VehicleEntity)
610
ref
SCR_AIBoardingParameters
m_BoardingParams;
// VARIABLE(NodePort, BoardingParams)
611
};
612
613
class
SCR_AIMessage_GetIn :
SCR_AIMessage_Vehicle
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_GetIn)
614
{
615
EAICompartmentType
m_eRoleInVehicle;
// VARIABLE(NodePort, RoleInVehicle, NodePropertyEnum, m_eRoleInVehicle)
616
BaseCompartmentSlot
m_CompartmentSlot;
// VARIABLE(NodePort, CompartmentSlot)
617
618
void
SCR_AIMessage_GetIn()
619
{
620
m_MessageType =
EMessageType_Goal
.GET_IN_VEHICLE;
621
}
622
623
static
SCR_AIMessage_GetIn Create(
IEntity
vehicle,
SCR_AIBoardingParameters
boardingParams,
EAICompartmentType
roleInVehicle,
bool
waypointRelated,
float
priorityLevel, AIWaypoint relatedWaypoint,
624
SCR_AIActivityBase
relatedActivity,
BaseCompartmentSlot
compartmentSlot)
625
{
626
SCR_AIMessage_GetIn msg =
new
SCR_AIMessage_GetIn();
627
msg.m_Vehicle = vehicle;
628
msg.m_BoardingParams = boardingParams;
629
msg.m_eRoleInVehicle = roleInVehicle;
630
msg.m_bIsWaypointRelated = waypointRelated;
631
msg.m_fPriorityLevel = priorityLevel;
632
msg.m_RelatedWaypoint = relatedWaypoint;
633
msg.m_RelatedGroupActivity = relatedActivity;
634
msg.m_CompartmentSlot = compartmentSlot;
635
return
msg;
636
}
637
};
638
639
class
SCR_AIMessage_GetOut :
SCR_AIMessage_Vehicle
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_GetOut)
640
{
641
float
m_fDelay_s;
642
643
void
SCR_AIMessage_GetOut()
644
{
645
m_MessageType =
EMessageType_Goal
.GET_OUT_VEHICLE;
646
}
647
648
static
SCR_AIMessage_GetOut Create(
IEntity
vehicle,
SCR_AIBoardingParameters
boardingParams,
SCR_AIActivityBase
relatedActivity,
float
delay_s = 0)
649
{
650
SCR_AIMessage_GetOut msg =
new
SCR_AIMessage_GetOut();
651
msg.m_Vehicle = vehicle;
652
msg.m_RelatedGroupActivity = relatedActivity;
653
msg.m_BoardingParams = boardingParams;
654
msg.m_fDelay_s = delay_s;
655
return
msg;
656
}
657
};
658
659
class
SCR_AIMessage_Flee :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_Flee)
660
{
661
void
SCR_AIMessage_Flee()
662
{
663
m_MessageType =
EMessageType_Goal
.FLEE;
664
}
665
};
666
667
class
SCR_AIMessage_ThrowGrenadeTo :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_ThrowGrenadeTo)
668
{
669
vector
m_vTargetPosition;
// VARIABLE(NodePort, TargetPosition)
670
EWeaponType
e_WeaponType;
// VARIABLE(NodePort, WeaponType)
671
float
m_fDelay;
// VARIABLE(NodePort, Delay)
672
673
void
SCR_AIMessage_ThrowGrenadeTo()
674
{
675
m_MessageType =
EMessageType_Goal
.THROW_GRENADE_TO;
676
}
677
678
static
SCR_AIMessage_ThrowGrenadeTo Create(
vector
position
,
EWeaponType
weaponType,
float
delay)
679
{
680
SCR_AIMessage_ThrowGrenadeTo msg =
new
SCR_AIMessage_ThrowGrenadeTo();
681
msg.m_vTargetPosition =
position
;
682
msg.e_WeaponType = weaponType;
683
msg.m_fDelay = delay;
684
return
msg;
685
}
686
};
687
688
class
SCR_AIMessage_FireIllumFlareAt :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_FireIllumFlareAt)
689
{
690
vector
m_vTargetPosition;
// VARIABLE(NodePort, TargetPosition)
691
692
void
SCR_AIMessage_FireIllumFlareAt()
693
{
694
m_MessageType =
EMessageType_Goal
.FIRE_ILLUM_FLARE;
695
}
696
697
static
SCR_AIMessage_FireIllumFlareAt Create(
vector
position
)
698
{
699
SCR_AIMessage_FireIllumFlareAt msg =
new
SCR_AIMessage_FireIllumFlareAt();
700
msg.m_vTargetPosition =
position
;
701
return
msg;
702
}
703
};
704
705
class
SCR_AIMessage_Suppress :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_Suppress)
706
{
707
ref
SCR_AISuppressionVolumeBase
m_Volume;
// VARIABLE(NodePort, SuppressionVolume)
708
float
m_fDuration_s;
// VARIABLE(NodePort, Duration_s)
709
float
m_fFireRate;
// VARIABLE(NodePort, FireRate)
710
711
void
SCR_AIMessage_Suppress()
712
{
713
m_MessageType =
EMessageType_Goal
.SUPPRESS;
714
}
715
716
static
SCR_AIMessage_Suppress Create(
SCR_AISuppressionVolumeBase
volume,
float
duration,
float
fireRate = 1)
717
{
718
SCR_AIMessage_Suppress msg =
new
SCR_AIMessage_Suppress();
719
msg.m_Volume = volume;
720
msg.m_fDuration_s = duration;
721
msg.m_fFireRate = fireRate;
722
723
return
msg;
724
}
725
};
726
727
class
SCR_AIMessage_Animate :
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_Animate)
728
{
729
IEntity
m_RootEntity;
// VARIABLE(NodePort, RootEntity)
730
ref
SCR_AIAnimationScript
m_AgentScript;
// VARIABLE(NodePort, AgentScript)
731
ref ScriptInvokerBase<SCR_AIOnAnimationBehaviorAction> m_RelatedInvoker;
// VARIABLE(NodePort, RelatedInvoker)
732
733
void
SCR_AIMessage_Animate()
734
{
735
m_MessageType =
EMessageType_Goal
.ANIMATE;
736
}
737
738
static
SCR_AIMessage_Animate Create(notnull
IEntity
entity,
SCR_AIAnimationScript
script,
SCR_AIActivityBase
relatedActivity, ScriptInvokerBase<SCR_AIOnAnimationBehaviorAction> relatedInvoker)
739
{
740
SCR_AIMessage_Animate msg =
new
SCR_AIMessage_Animate();
741
msg.m_RelatedGroupActivity = relatedActivity;
742
msg.m_RootEntity = entity;
743
msg.m_AgentScript = script;
744
msg.m_RelatedInvoker = relatedInvoker;
745
746
return
msg;
747
}
748
}
749
750
class
SCR_AIMessage_ArtillerySupport
:
SCR_AIMessageGoal
// MESSAGE_CLASS(GenerateSendGoalMessage, SCR_AISendGoalMessage_ArtillerySupport)
751
{
752
IEntity
m_ArtilleryEntity
;
// VARIABLE(NodePort, ArtilleryEntity)
753
vector
m_vTargetPos
;
// VARIABLE(NodePort, TargetPos)
754
SCR_EAIArtilleryAmmoType
m_eAmmoType
;
// VARIABLE(NodePort, AmmoType, NodePropertyEnum, m_eAmmoType)
755
756
void
SCR_AIMessage_ArtillerySupport
()
757
{
758
m_MessageType =
EMessageType_Goal
.ARTILLERY_SUPPORT;
759
}
760
};
NO_AMMO
@ NO_AMMO
Definition
SCR_AIAction.c:7
SCR_AIActivityBase
void SCR_AIActivityBase(SCR_AIGroupUtilityComponent utility, AIWaypoint relatedWaypoint)
Definition
SCR_AIActivity.c:44
MOVE
@ MOVE
Definition
SCR_AICombatMoveRequest.c:3
m_vTargetPos
vector m_vTargetPos
Definition
SCR_AICombatMoveRequest.c:126
m_vPickupPosition
SCR_AIMessage_ProvideAmmo m_vPickupPosition
SCR_AIMessage_PickupInventoryItems
void SCR_AIMessage_PickupInventoryItems()
Definition
SCR_AIMessage.c:497
SCR_AIMessage_AttackClusterDone
SCR_AIMessage_AttackCluster SCR_AIMessageGoal SCR_AIMessage_AttackClusterDone()
Definition
SCR_AIMessage.c:331
SCR_AIMessage_KeepFormation
SCR_AIMessage_Move SCR_AIMessage_KeepFormation
Definition
SCR_AIMessage.c:353
SCR_AIMessage_ArtillerySupport
void SCR_AIMessage_ArtillerySupport()
Definition
SCR_AIMessage.c:756
SetMessageParameters
override void SetMessageParameters(SCR_AISendGoalMessage node, SCR_AIActivityBase relatedActivity)
Definition
SCR_AIMessage.c:502
EMessageType_Goal
EMessageType_Goal
Definition
SCR_AIMessage.c:16
COVER_CLUSTER
@ COVER_CLUSTER
Definition
SCR_AIMessage.c:21
OPEN_NAVLINK_DOOR
@ OPEN_NAVLINK_DOOR
Definition
SCR_AIMessage.c:42
ARTILLERY_SUPPORT
@ ARTILLERY_SUPPORT
Definition
SCR_AIMessage.c:45
FIRE_ILLUM_FLARE
@ FIRE_ILLUM_FLARE
Definition
SCR_AIMessage.c:43
PERFORM_ACTION
@ PERFORM_ACTION
Definition
SCR_AIMessage.c:35
ANIMATE
@ ANIMATE
Definition
SCR_AIMessage.c:44
PICKUP_INVENTORY_ITEMS
@ PICKUP_INVENTORY_ITEMS
Definition
SCR_AIMessage.c:41
ATTACK_CLUSTER_DONE
@ ATTACK_CLUSTER_DONE
Definition
SCR_AIMessage.c:20
GET_IN_VEHICLE
@ GET_IN_VEHICLE
Definition
SCR_AIMessage.c:25
MOVE_IN_FORMATION
@ MOVE_IN_FORMATION
Definition
SCR_AIMessage.c:22
THROW_GRENADE_TO
@ THROW_GRENADE_TO
Definition
SCR_AIMessage.c:38
ATTACK_CLUSTER
@ ATTACK_CLUSTER
Definition
SCR_AIMessage.c:19
FLEE
@ FLEE
Definition
SCR_AIMessage.c:24
ATTACK
@ ATTACK
Definition
SCR_AIMessage.c:18
UNGROUP
@ UNGROUP
Definition
SCR_AIMessage.c:29
GET_OUT_VEHICLE
@ GET_OUT_VEHICLE
Definition
SCR_AIMessage.c:26
SEEK_DESTROY
@ SEEK_DESTROY
Definition
SCR_AIMessage.c:23
SIT_REP
@ SIT_REP
Definition
SCR_AIMessage.c:10
HEAL
@ HEAL
Definition
SCR_AIMessage.c:30
DEFEND
@ DEFEND
Definition
SCR_AIMessage.c:33
RETREAT
@ RETREAT
Definition
SCR_AIMessage.c:34
INVESTIGATE
@ INVESTIGATE
Definition
SCR_AIMessage.c:32
PROVIDE_AMMO
@ PROVIDE_AMMO
Definition
SCR_AIMessage.c:40
CANCEL
@ CANCEL
Definition
SCR_AIMessage.c:36
SUPPRESS
@ SUPPRESS
Definition
SCR_AIMessage.c:39
FOLLOW
@ FOLLOW
Definition
SCR_AIMessage.c:28
HEAL_WAIT
@ HEAL_WAIT
Definition
SCR_AIMessage.c:31
m_ArtilleryEntity
SCR_AIMessage_Animate m_ArtilleryEntity
m_MagazineWellType
m_MagazineWellType
Definition
SCR_AIMessage.c:495
EMessageType_Info
EMessageType_Info
Definition
SCR_AIMessage.c:2
REQ_AMMO
@ REQ_AMMO
Definition
SCR_AIMessage.c:9
WOUNDED
@ WOUNDED
Definition
SCR_AIMessage.c:5
REQ_RETREAT
@ REQ_RETREAT
Definition
SCR_AIMessage.c:8
UNDER_FIRE
@ UNDER_FIRE
Definition
SCR_AIMessage.c:7
HEAL_FAILED
@ HEAL_FAILED
Definition
SCR_AIMessage.c:12
FOUND_CORPSE
@ FOUND_CORPSE
Definition
SCR_AIMessage.c:6
ACTION_FAILED
@ ACTION_FAILED
Definition
SCR_AIMessage.c:11
SCR_AIMessage_AttackCluster
void SCR_AIMessage_AttackCluster()
Definition
SCR_AIMessage.c:335
SCR_AIMessage_CoverCluster
void SCR_AIMessage_CoverCluster()
Definition
SCR_AIMessage.c:354
m_eAmmoType
SCR_EAIArtilleryAmmoType m_eAmmoType
Definition
SCR_AIMessage.c:754
SCR_EAIArtilleryAmmoType
SCR_EAIArtilleryAmmoType
Definition
SCR_AIStaticArtilleryVehicleUsageComponent.c:2
SCR_AITargetClusterState
void SCR_AITargetClusterState(SCR_AIGroupTargetCluster cluster)
Definition
SCR_AITargetClusterState.c:42
EAICompartmentType
EAICompartmentType
Definition
SCR_AIVehicleBehavior.c:2
position
vector position
Definition
SCR_DestructibleTreeV2.c:30
AIMessage
Base class for all messages related to AI.
Definition
AIMessage.c:14
BaseCompartmentSlot
Definition
BaseCompartmentSlot.c:2
IEntity
Definition
IEntity.c:13
SCR_AIAnimationScript
Definition
SCR_AIAnimationWaypoint.c:55
SCR_AIBoardingParameters
Definition
SCR_BoardingWaypoint.c:6
SCR_AIMessage_Target
Definition
SCR_AIMessage.c:114
SCR_AIMessage_Vehicle
Definition
SCR_AIMessage.c:608
SCR_AIMessageBase
Definition
SCR_AIMessage.c:50
SCR_AIMessageGoal
Definition
SCR_AIMessage.c:75
SCR_AIMessageInfo
Definition
SCR_AIMessage.c:101
SCR_AISendGoalMessage
Definition
SCR_AISendGoalMessage.c:3
SCR_AISendMessageBase
Base class for nodes sending message.
Definition
SCR_AISendMessage.c:3
SCR_AISendMessageBase::m_Receiver
AIAgent m_Receiver
Definition
SCR_AISendMessage.c:10
SCR_AISendMessageBase::m_string
string m_string
Definition
SCR_AISendMessage.c:13
SCR_AISendMessageGeneric
Class for generic nodes with extra input ports which send messages.
Definition
SCR_AISendMessage.c:74
SCR_AISmartActionComponent
Definition
SCR_AISmartActionComponent.c:10
SCR_AISuppressionVolumeBase
Definition
SCR_AISuppressionVolume.c:4
UIWidgets
Definition
attributes.c:40
vector
Definition
vector.c:13
EAIUnitType
EAIUnitType
Definition
EAIUnitType.c:13
EMovementType
EMovementType
Definition
EMovementType.c:13
NONE
@ NONE
When Shape is created and not initialized yet.
Definition
ShapeType.c:15
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
EWeaponType
EWeaponType
Definition
EWeaponType.c:13
scripts
Game
AI
ScriptedNodes
Messages
SCR_AIMessage.c
Generated by
1.17.0