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_SpecialCollisionDamageEffect.c
Go to the documentation of this file.
1
class
SCR_SpecialCollisionDamageEffect
:
SCR_PersistentDamageEffect
2
{
3
protected
SCR_CharacterControllerComponent
m_Controller
;
4
protected
IEntity
m_ResponsibleEntity
;
5
6
[
Attribute
(defvalue:
"1"
, uiwidget:
UIWidgets
.Slider,
desc
:
"Max speed of the character in this collider"
,
params
:
"0 1 0.001"
)]
7
protected
float
m_fSpecialCollisionMaxSpeedLimitScaled
;
8
9
[
Attribute
(defvalue:
"0"
,
desc
:
"Allow jumping or climbing when in this collider"
)]
10
protected
bool
m_bSpecialCollisionAllowJumpingClimbing
;
11
12
[
Attribute
(
desc
:
"Sound event that will be played when damage is dealt"
)]
13
protected
string
m_sOnDamageSoundEvent
;
14
15
protected
int
m_iDamageSoundEvent
= 0;
16
17
//------------------------------------------------------------------------------------------------
18
string
GetDamageSoundEvent
()
19
{
20
return
m_sOnDamageSoundEvent
;
21
}
22
23
//------------------------------------------------------------------------------------------------
24
protected
override
void
HandleConsequences
(SCR_ExtendedDamageManagerComponent dmgManager,
DamageEffectEvaluator
evaluator)
25
{
26
super.HandleConsequences(dmgManager, evaluator);
27
28
evaluator.HandleEffectConsequences(
this
, dmgManager);
29
}
30
31
//------------------------------------------------------------------------------------------------
32
override
void
OnEffectAdded
(SCR_ExtendedDamageManagerComponent dmgManager)
33
{
34
super.OnEffectAdded(dmgManager);
35
36
if
(!
m_ResponsibleEntity
)
37
{
38
Terminate();
39
return
;
40
}
41
42
ApplyMobilityLimits
(dmgManager);
43
}
44
45
//------------------------------------------------------------------------------------------------
46
override
void
OnEffectRemoved
(SCR_ExtendedDamageManagerComponent dmgManager)
47
{
48
super.OnEffectRemoved(dmgManager);
49
50
ApplyMobilityLimits
(dmgManager);
51
}
52
53
//------------------------------------------------------------------------------------------------
54
void
SetResponsibleEntity
(notnull
IEntity
entity)
55
{
56
m_ResponsibleEntity
= entity;
57
}
58
59
//------------------------------------------------------------------------------------------------
60
IEntity
GetResponsibleEntity
()
61
{
62
return
m_ResponsibleEntity
;
63
}
64
65
//-----------------------------------------------------------------------------------------------------------
66
void
ApplyMobilityLimits
(SCR_ExtendedDamageManagerComponent dmgManager)
67
{
68
SCR_ChimeraCharacter character = SCR_ChimeraCharacter.Cast(dmgManager.GetOwner());
69
if
(!character)
70
{
71
Terminate();
72
return
;
73
}
74
75
m_Controller
=
SCR_CharacterControllerComponent
.Cast(character.GetCharacterController());
76
if
(!
m_Controller
)
77
{
78
Terminate();
79
return
;
80
}
81
82
if
(dmgManager.GetAllPersistentEffectsOfType(
SCR_SpecialCollisionDamageEffect
,
true
).Contains(
this
))
83
{
84
character.SetSpeedLimit(
this
,
GetMaxSpeedLimitScaled
());
85
return
;
86
}
87
88
character.SetSpeedLimit(
this
, 1);
89
}
90
91
//------------------------------------------------------------------------------------------------
92
float
GetMaxSpeedLimitScaled
()
93
{
94
return
m_fSpecialCollisionMaxSpeedLimitScaled
;
95
}
96
97
//------------------------------------------------------------------------------------------------
98
bool
GetJumpingAndClimbingAllowed
()
99
{
100
return
m_bSpecialCollisionAllowJumpingClimbing
;
101
}
102
103
//------------------------------------------------------------------------------------------------
104
protected
override
void
OnEffectApplied
(SCR_ExtendedDamageManagerComponent dmgManager)
105
{
106
SCR_CharacterDamageManagerComponent
characterDamageMgr =
SCR_CharacterDamageManagerComponent
.Cast(dmgManager);
107
if
(!characterDamageMgr)
108
return
;
109
110
characterDamageMgr.
PlaySoundEvent
(
m_sOnDamageSoundEvent
);
111
}
112
113
//------------------------------------------------------------------------------------------------
116
protected
void
CopyDataFromSourceEntity
(notnull
IEntity
srcEnt)
117
{
118
SCR_SpecialCollisionHandlerComponent specialCollisionComp = SCR_SpecialCollisionHandlerComponent.Cast(srcEnt.FindComponent(SCR_SpecialCollisionHandlerComponent));
119
if
(!specialCollisionComp)
120
return
;
121
122
SCR_SpecialCollisionHandlerComponentClass
data
=
SCR_SpecialCollisionHandlerComponentClass
.Cast(specialCollisionComp.GetComponentData(srcEnt));
123
if
(!
data
)
124
return
;
125
126
array<SCR_SpecialCollisionDamageEffect> damageEffects = {};
127
data
.GetSpecialCollisionDamageEffects(damageEffects);
128
typename
thisType =
Type
();
129
foreach
(
SCR_SpecialCollisionDamageEffect
effect : damageEffects)
130
{
131
if
(effect.Type() != thisType)
132
continue
;
133
134
m_sOnDamageSoundEvent
= effect.GetDamageSoundEvent();
135
break
;
136
}
137
}
138
139
//------------------------------------------------------------------------------------------------
140
override
bool
Save
(ScriptBitWriter w)
141
{
142
super.Save(w);
143
144
w.WriteBool(
m_bSpecialCollisionAllowJumpingClimbing
);
145
w.WriteFloat01(
m_fSpecialCollisionMaxSpeedLimitScaled
);
146
147
// If the responsible entity is not replicated, we don't transfer info about it.
148
// This is not na error. The world can be full of entities that are not replicated.
149
// It is also possible that the entity gets deleted in the meantime.
150
RplComponent reponsibleEntRplComp = null;
151
if
(
m_ResponsibleEntity
)
152
reponsibleEntRplComp =
SCR_EntityHelper
.
GetEntityRplComponent
(
m_ResponsibleEntity
);
153
w.WriteBool(reponsibleEntRplComp != null);
154
if
(reponsibleEntRplComp)
155
w.WriteRplId(reponsibleEntRplComp.Id());
156
157
return
true
;
158
}
159
160
//------------------------------------------------------------------------------------------------
161
override
bool
Load
(
ScriptBitReader
r)
162
{
163
super.Load(r);
164
165
r.ReadBool(
m_bSpecialCollisionAllowJumpingClimbing
);
166
r.ReadFloat01(
m_fSpecialCollisionMaxSpeedLimitScaled
);
167
168
bool
hasRplReponsibleEnt =
false
;
169
r.ReadBool(hasRplReponsibleEnt);
170
if
(hasRplReponsibleEnt)
171
{
172
RplId
reponsibleEntRplId;
173
r.ReadRplId(reponsibleEntRplId);
174
RplComponent reponsibleEntRplComp = RplComponent.Cast(
Replication
.FindItem(reponsibleEntRplId));
175
if
(reponsibleEntRplComp)
176
{
177
m_ResponsibleEntity
= reponsibleEntRplComp.GetEntity();
178
CopyDataFromSourceEntity
(
m_ResponsibleEntity
);
179
}
180
else
181
{
182
m_ResponsibleEntity
= null;
183
}
184
}
185
186
return
true
;
187
}
188
}
data
Get all prefabs that have the spawner data
Definition
SCR_EntityCatalogManagerComponent.c:320
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition
SCR_RespawnBriefingComponent.c:17
params
category params
Definition
SCR_SpherePointGeneratorPreviewComponent.c:21
Type
int Type
Definition
ScriptCamera.c:17
DamageEffectEvaluator
Definition
DamageEffectEvaluator.c:2
IEntity
Definition
IEntity.c:13
Replication
Main replication API.
Definition
Replication.c:14
RplId
Replication item identifier.
Definition
RplId.c:14
SCR_CharacterControllerComponent
Definition
SCR_CharacterControllerComponent.c:36
SCR_CharacterDamageManagerComponent
Definition
SCR_CharacterDamageManagerComponent.c:19
SCR_CharacterDamageManagerComponent::PlaySoundEvent
void PlaySoundEvent(string soundEventName)
Definition
SCR_CharacterDamageManagerComponent.c:1948
SCR_EntityHelper
Definition
SCR_EntityHelper.c:2
SCR_EntityHelper::GetEntityRplComponent
static RplComponent GetEntityRplComponent(notnull IEntity entity)
Definition
SCR_EntityHelper.c:451
SCR_PersistentDamageEffect
Definition
SCR_PersistentDamageEffect.c:7
SCR_SpecialCollisionDamageEffect
Definition
SCR_SpecialCollisionDamageEffect.c:2
SCR_SpecialCollisionDamageEffect::m_fSpecialCollisionMaxSpeedLimitScaled
float m_fSpecialCollisionMaxSpeedLimitScaled
Definition
SCR_SpecialCollisionDamageEffect.c:7
SCR_SpecialCollisionDamageEffect::GetMaxSpeedLimitScaled
float GetMaxSpeedLimitScaled()
Definition
SCR_SpecialCollisionDamageEffect.c:92
SCR_SpecialCollisionDamageEffect::HandleConsequences
override void HandleConsequences(SCR_ExtendedDamageManagerComponent dmgManager, DamageEffectEvaluator evaluator)
Definition
SCR_SpecialCollisionDamageEffect.c:24
SCR_SpecialCollisionDamageEffect::GetResponsibleEntity
IEntity GetResponsibleEntity()
Definition
SCR_SpecialCollisionDamageEffect.c:60
SCR_SpecialCollisionDamageEffect::m_iDamageSoundEvent
int m_iDamageSoundEvent
Definition
SCR_SpecialCollisionDamageEffect.c:15
SCR_SpecialCollisionDamageEffect::CopyDataFromSourceEntity
void CopyDataFromSourceEntity(notnull IEntity srcEnt)
Definition
SCR_SpecialCollisionDamageEffect.c:116
SCR_SpecialCollisionDamageEffect::m_sOnDamageSoundEvent
string m_sOnDamageSoundEvent
Definition
SCR_SpecialCollisionDamageEffect.c:13
SCR_SpecialCollisionDamageEffect::m_ResponsibleEntity
IEntity m_ResponsibleEntity
Definition
SCR_SpecialCollisionDamageEffect.c:4
SCR_SpecialCollisionDamageEffect::OnEffectApplied
override void OnEffectApplied(SCR_ExtendedDamageManagerComponent dmgManager)
Definition
SCR_SpecialCollisionDamageEffect.c:104
SCR_SpecialCollisionDamageEffect::OnEffectRemoved
override void OnEffectRemoved(SCR_ExtendedDamageManagerComponent dmgManager)
Definition
SCR_SpecialCollisionDamageEffect.c:46
SCR_SpecialCollisionDamageEffect::GetDamageSoundEvent
string GetDamageSoundEvent()
Definition
SCR_SpecialCollisionDamageEffect.c:18
SCR_SpecialCollisionDamageEffect::GetJumpingAndClimbingAllowed
bool GetJumpingAndClimbingAllowed()
Definition
SCR_SpecialCollisionDamageEffect.c:98
SCR_SpecialCollisionDamageEffect::SetResponsibleEntity
void SetResponsibleEntity(notnull IEntity entity)
Definition
SCR_SpecialCollisionDamageEffect.c:54
SCR_SpecialCollisionDamageEffect::Load
override bool Load(ScriptBitReader r)
Definition
SCR_SpecialCollisionDamageEffect.c:161
SCR_SpecialCollisionDamageEffect::m_bSpecialCollisionAllowJumpingClimbing
bool m_bSpecialCollisionAllowJumpingClimbing
Definition
SCR_SpecialCollisionDamageEffect.c:10
SCR_SpecialCollisionDamageEffect::Save
override bool Save(ScriptBitWriter w)
Definition
SCR_SpecialCollisionDamageEffect.c:140
SCR_SpecialCollisionDamageEffect::m_Controller
SCR_CharacterControllerComponent m_Controller
Definition
SCR_SpecialCollisionDamageEffect.c:3
SCR_SpecialCollisionDamageEffect::ApplyMobilityLimits
void ApplyMobilityLimits(SCR_ExtendedDamageManagerComponent dmgManager)
Definition
SCR_SpecialCollisionDamageEffect.c:66
SCR_SpecialCollisionDamageEffect::OnEffectAdded
override void OnEffectAdded(SCR_ExtendedDamageManagerComponent dmgManager)
Definition
SCR_SpecialCollisionDamageEffect.c:32
SCR_SpecialCollisionHandlerComponentClass
Definition
SCR_SpecialCollisionHandlerComponent.c:2
ScriptBitReader
Definition
EnNetwork.c:199
UIWidgets
Definition
attributes.c:40
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
scripts
Game
Damage
DamageEffects
DamageEffectSources
SCR_SpecialCollisionDamageEffect.c
Generated by
1.17.0