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_FireSupportRequestedTaskEntity.c
Go to the documentation of this file.
1
class
SCR_FireSupportRequestedTaskEntityClass
:
SCR_BaseRequestedTaskEntityClass
2
{
3
}
4
5
class
SCR_FireSupportRequestedTaskEntity : SCR_BaseRequestedTaskEntity
6
{
7
[
Attribute
(
"150"
,
UIWidgets
.EditBox,
"Area radius [m]"
,
"1 inf"
)]
8
protected
float
m_fAreaRadius
;
9
10
[
Attribute
(
"4"
,
UIWidgets
.EditBox,
desc
:
"Number of explosion events in the area required to complete the task"
,
"1 inf"
)]
11
protected
int
m_iNeededExplosionEvents
;
12
13
[
Attribute
(
""
,
UIWidgets
.ResourceAssignArray,
"Allowed explosion ammo for task evaluation"
,
"et"
)]
14
protected
ref array<ResourceName>
m_aAllowedExplosionAmmo
;
15
16
protected
RplComponent
m_RplComponent
;
17
protected
float
m_fAreaRadiusSq
;
18
protected
int
m_iExplosionEvents
;
19
20
//------------------------------------------------------------------------------------------------
21
protected
void
AddXPReward
()
22
{
23
if
(!
m_RplComponent
||
m_RplComponent
.IsProxy())
24
return
;
25
26
SCR_XPHandlerComponent comp = SCR_XPHandlerComponent.Cast(
GetGame
().
GetGameMode
().FindComponent(SCR_XPHandlerComponent));
27
if
(!comp)
28
return
;
29
30
// add XP to all players in the assigned group
31
array<int> assigneePlayerIDs =
GetTaskAssigneePlayerIDs
();
32
if
(!assigneePlayerIDs)
33
return
;
34
35
foreach
(
int
playerID : assigneePlayerIDs)
36
{
37
comp.AwardXP(playerID,
SCR_EXPRewards
.FIRE_SUPPORT_TASK_COMPLETED, 1.0,
false
);
38
}
39
}
40
41
//------------------------------------------------------------------------------------------------
42
override
void
SetTaskState
(
SCR_ETaskState
state)
43
{
44
if
(state ==
SCR_ETaskState
.COMPLETED)
45
AddXPReward
();
46
47
super.SetTaskState(state);
48
}
49
50
//------------------------------------------------------------------------------------------------
51
protected
bool
IsAllowedExplosionAmmo
(
IEntity
damageSource)
52
{
53
if
(!damageSource)
54
return
false
;
55
56
EntityPrefabData
damageSourcePrefabData = damageSource.
GetPrefabData
();
57
if
(!damageSourcePrefabData)
58
return
false
;
59
60
ResourceName
damageSourcePrefabName = damageSourcePrefabData.GetPrefabName();
61
if
(damageSourcePrefabName.IsEmpty())
62
return
false
;
63
64
return
m_aAllowedExplosionAmmo
.Contains(damageSourcePrefabName);
65
}
66
67
//------------------------------------------------------------------------------------------------
68
protected
void
OnExplosionAmmoEffect
(
IEntity
pHitEntity, inout
vector
outMat[3],
IEntity
damageSource, notnull
Instigator
instigator,
string
colliderName,
float
speed)
69
{
70
int
instigatorPlayerID = instigator.GetInstigatorPlayerID();
71
if
(instigatorPlayerID <= 0)
72
return
;
73
74
if
(!
IsAllowedExplosionAmmo
(damageSource))
75
return
;
76
77
if
(
vector
.DistanceSqXZ(outMat[0],
GetTaskPosition
()) >
m_fAreaRadiusSq
)
78
return
;
79
80
array<int> assigneePlayerIDs =
GetTaskAssigneePlayerIDs
();
81
if
(!assigneePlayerIDs)
82
return
;
83
84
if
(!assigneePlayerIDs.Contains(instigatorPlayerID))
85
return
;
86
87
m_iExplosionEvents
++;
88
89
EvaluateTask
();
90
}
91
92
//------------------------------------------------------------------------------------------------
93
protected
void
EvaluateTask
()
94
{
95
if
(
m_iExplosionEvents
>=
m_iNeededExplosionEvents
)
96
{
97
SetTaskState
(
SCR_ETaskState
.COMPLETED);
98
DeleteTask
();
99
}
100
}
101
102
//------------------------------------------------------------------------------------------------
103
override
void
EOnInit
(
IEntity
owner)
104
{
105
super.EOnInit(owner);
106
107
if
(
SCR_Global
.
IsEditMode
(
this
))
108
return
;
109
110
m_fAreaRadiusSq
=
m_fAreaRadius
*
m_fAreaRadius
;
111
112
m_RplComponent
= RplComponent.Cast(owner.
FindComponent
(RplComponent));
113
if
(!
m_RplComponent
||
m_RplComponent
.IsProxy())
114
return
;
115
116
SCR_ExplosionAmmoEffect
.
GetOnExplosionAmmoEffect
().Insert(
OnExplosionAmmoEffect
);
117
}
118
119
//------------------------------------------------------------------------------------------------
120
void
~SCR_FireSupportRequestedTaskEntity
()
121
{
122
SCR_ExplosionAmmoEffect
.
GetOnExplosionAmmoEffect
().Remove(
OnExplosionAmmoEffect
);
123
}
124
}
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
DeleteTask
void DeleteTask()
Definition
SCR_AttackTaskEntity.c:298
SetTaskState
override void SetTaskState(SCR_ETaskState state)
Definition
SCR_AttackTaskEntity.c:290
m_fAreaRadius
float m_fAreaRadius
Definition
SCR_AttackTaskEntity.c:9
m_fAreaRadiusSq
float m_fAreaRadiusSq
Definition
SCR_AttackTaskEntity.c:26
GetGameMode
SCR_BaseGameMode GetGameMode()
Definition
SCR_BaseGameModeComponent.c:15
m_RplComponent
RplComponent m_RplComponent
Definition
SCR_CampaignBuildingManagerComponent.c:64
AddXPReward
void AddXPReward()
Definition
SCR_ClearTaskEntity.c:111
m_iExplosionEvents
int m_iExplosionEvents
Definition
SCR_FireSupportRequestedTaskEntity.c:18
IsAllowedExplosionAmmo
bool IsAllowedExplosionAmmo(IEntity damageSource)
Definition
SCR_FireSupportRequestedTaskEntity.c:51
m_iNeededExplosionEvents
int m_iNeededExplosionEvents
Definition
SCR_FireSupportRequestedTaskEntity.c:11
OnExplosionAmmoEffect
void OnExplosionAmmoEffect(IEntity pHitEntity, inout vector outMat[3], IEntity damageSource, notnull Instigator instigator, string colliderName, float speed)
Definition
SCR_FireSupportRequestedTaskEntity.c:68
m_aAllowedExplosionAmmo
ref array< ResourceName > m_aAllowedExplosionAmmo
Definition
SCR_FireSupportRequestedTaskEntity.c:14
~SCR_FireSupportRequestedTaskEntity
void ~SCR_FireSupportRequestedTaskEntity()
Definition
SCR_FireSupportRequestedTaskEntity.c:120
EvaluateTask
void EvaluateTask()
Definition
SCR_FireSupportRequestedTaskEntity.c:93
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition
SCR_RespawnBriefingComponent.c:17
GetTaskAssigneePlayerIDs
array< int > GetTaskAssigneePlayerIDs()
Definition
SCR_Task.c:458
GetTaskPosition
vector GetTaskPosition()
Definition
SCR_Task.c:1282
SCR_ETaskState
SCR_ETaskState
Definition
SCR_Task.c:3
SCR_EXPRewards
SCR_EXPRewards
Definition
SCR_XPHandlerComponent.c:826
EntityPrefabData
Definition
EntityPrefabData.c:19
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
IEntity::GetPrefabData
proto external EntityPrefabData GetPrefabData()
Instigator
Definition
Instigator.c:13
ResourceName
Definition
ResourceName.c:13
SCR_BaseRequestedTaskEntityClass
Definition
SCR_BaseRequestedTaskEntity.c:6
SCR_ExplosionAmmoEffect
Definition
SCR_ExplosionAmmoEffect.c:6
SCR_ExplosionAmmoEffect::GetOnExplosionAmmoEffect
static OnExplosionAmmoEffectInvoker GetOnExplosionAmmoEffect()
Definition
SCR_ExplosionAmmoEffect.c:12
SCR_FireSupportRequestedTaskEntityClass
Definition
SCR_FireSupportRequestedTaskEntity.c:2
SCR_Global
Definition
Functions.c:7
SCR_Global::IsEditMode
static bool IsEditMode()
Definition
Functions.c:1566
UIWidgets
Definition
attributes.c:40
vector
Definition
vector.c:13
EOnInit
override void EOnInit(IEntity owner)
Definition
SCR_AIConfigComponent.c:87
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
scripts
Game
Tasks
Campaign
SCR_FireSupportRequestedTaskEntity.c
Generated by
1.17.0