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_HitZone.c
Go to the documentation of this file.
1
class
SCR_HitZone
:
HitZone
2
{
3
[
Attribute
(
desc
:
"Rules for passing damage to parent, root and own default hitzone"
)]
4
protected
ref array<ref SCR_BaseDamagePassRule>
m_aDamagePassRules
;
5
6
protected
ref
ScriptInvokerVoid
m_OnHealthChanged
;
7
protected
ref
ScriptInvoker
m_OnDamageStateChanged
;
// TODO: make it a ScriptInvoker w/ ScriptedHitZone
8
9
//------------------------------------------------------------------------------------------------
12
EHitZoneGroup
GetHitZoneGroup
()
13
{
14
return
EHitZoneGroup
.VIRTUAL;
15
}
16
17
//------------------------------------------------------------------------------------------------
21
ScriptInvokerVoid
GetOnHealthChanged
(
bool
createNew =
true
)
22
{
23
if
(!
m_OnHealthChanged
&& createNew)
24
m_OnHealthChanged
=
new
ScriptInvokerVoid
();
25
26
return
m_OnHealthChanged
;
27
}
28
29
//------------------------------------------------------------------------------------------------
32
ScriptInvoker
GetOnDamageStateChanged
(
bool
createNew =
true
)
33
{
34
if
(!
m_OnDamageStateChanged
&& createNew)
35
m_OnDamageStateChanged
=
new
ScriptInvoker
();
36
37
return
m_OnDamageStateChanged
;
38
}
39
40
//------------------------------------------------------------------------------------------------
42
IEntity
GetOwner
()
43
{
44
HitZoneContainerComponent
container = GetHitZoneContainer();
45
if
(container)
46
return
container.GetOwner();
47
48
return
null;
49
}
50
51
//------------------------------------------------------------------------------------------------
52
override
protected
void
OnHealthSet
()
53
{
54
if
(
m_OnHealthChanged
)
55
m_OnHealthChanged
.Invoke();
56
}
57
58
//------------------------------------------------------------------------------------------------
60
override
protected
void
OnDamageStateChanged
(
EDamageState
newState,
EDamageState
previousDamageState,
bool
isJIP)
61
{
62
if
(
m_OnDamageStateChanged
)
63
m_OnDamageStateChanged
.Invoke(
this
);
64
}
65
66
//------------------------------------------------------------------------------------------------
67
override
float
ComputeEffectiveDamage
(notnull
BaseDamageContext
damageContext,
bool
isDOT)
68
{
69
if
(damageContext.damageValue == 0)
70
return
0;
71
72
if
(damageContext.damageType ==
EDamageType
.TRUE || damageContext.damageType ==
EDamageType
.PROCESSED_FRAGMENTATION)
73
return
damageContext.damageValue;
74
75
//apply base multiplier
76
float
effectiveDamage = damageContext.damageValue * GetBaseDamageMultiplier();
77
78
//apply damage multiplier for this specific damage type
79
effectiveDamage *= GetDamageMultiplier(damageContext.damageType);
80
81
//DOT doesn't get affected by damage reduction/thresholds, and neither does healing.
82
if
(isDOT || effectiveDamage < 0)
83
return
effectiveDamage;
84
85
//apply flat damage reduction
86
effectiveDamage -=
GetDamageReduction
();
87
88
//if its less than the damage threshold we discard the damage.
89
//if the damage to take becomes negative (healing) because of the flat damage reduction, this should reset it back to 0 dmg to take.
90
if
(effectiveDamage <
GetDamageThreshold
())
91
effectiveDamage = 0;
92
93
return
effectiveDamage;
94
}
95
96
#ifdef WORKBENCH
97
//------------------------------------------------------------------------------------------------
98
void
DrawDebug
();
99
#endif
100
101
//------------------------------------------------------------------------------------------------
106
*/
107
void
ApplyDamagePassRules
(notnull
BaseDamageContext
damageContext)
108
{
109
if
(
m_aDamagePassRules
.IsEmpty())
110
return
;
111
112
const
SCR_DamageManagerComponent damageManager = SCR_DamageManagerComponent.Cast(GetHitZoneContainer());
113
foreach
(
SCR_BaseDamagePassRule
rule :
m_aDamagePassRules
)
114
{
115
rule.HandlePassedDamage(damageContext,
this
, damageManager);
116
}
117
}
118
}
EHitZoneGroup
EHitZoneGroup
Definition
EHitZoneGroup.c:2
DrawDebug
void DrawDebug()
Definition
SCR_AIGroupCohesionComponent.c:84
GetDamageThreshold
float GetDamageThreshold()
Definition
SCR_DestructibleEntity.c:48
GetDamageReduction
float GetDamageReduction()
Definition
SCR_DestructibleEntity.c:38
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition
SCR_RespawnBriefingComponent.c:17
ScriptInvokerVoid
ScriptInvokerBase< ScriptInvokerVoidMethod > ScriptInvokerVoid
Definition
SCR_ScriptInvokerHelper.c:9
BaseDamageContext
Definition
BaseDamageContext.c:13
HitZoneContainerComponent
Definition
HitZoneContainerComponent.c:13
HitZone
Definition
HitZone.c:13
IEntity
Definition
IEntity.c:13
SCR_BaseDamagePassRule
Definition
SCR_BaseDamagePassRule.c:3
SCR_HitZone
Definition
SCR_HitZone.c:2
SCR_HitZone::ComputeEffectiveDamage
override float ComputeEffectiveDamage(notnull BaseDamageContext damageContext, bool isDOT)
Definition
SCR_HitZone.c:67
SCR_HitZone::GetOnHealthChanged
ScriptInvokerVoid GetOnHealthChanged(bool createNew=true)
Definition
SCR_HitZone.c:21
SCR_HitZone::m_aDamagePassRules
ref array< ref SCR_BaseDamagePassRule > m_aDamagePassRules
Definition
SCR_HitZone.c:4
SCR_HitZone::GetOnDamageStateChanged
ScriptInvoker GetOnDamageStateChanged(bool createNew=true)
Definition
SCR_HitZone.c:32
SCR_HitZone::m_OnHealthChanged
ref ScriptInvokerVoid m_OnHealthChanged
Definition
SCR_HitZone.c:6
SCR_HitZone::m_OnDamageStateChanged
ref ScriptInvoker m_OnDamageStateChanged
Definition
SCR_HitZone.c:7
SCR_HitZone::ApplyDamagePassRules
void ApplyDamagePassRules(notnull BaseDamageContext damageContext)
Definition
SCR_HitZone.c:107
SCR_HitZone::GetHitZoneGroup
EHitZoneGroup GetHitZoneGroup()
Definition
SCR_HitZone.c:12
SCR_HitZone::OnDamageStateChanged
void OnDamageStateChanged(EDamageState newState, EDamageState previousDamageState, bool isJIP)
Called when the damage state changes.
Definition
SCR_HitZone.c:60
SCR_HitZone::GetOwner
IEntity GetOwner()
Definition
SCR_HitZone.c:42
SCR_HitZone::OnHealthSet
void OnHealthSet()
Definition
SCR_HitZone.c:52
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
EDamageType
EDamageType
Definition
EDamageType.c:13
EDamageState
EDamageState
Definition
EDamageState.c:13
ScriptInvoker
ScriptInvokerBase< func > ScriptInvoker
Definition
tools.c:134
scripts
Game
HitZone
SCR_HitZone.c
Generated by
1.17.0