Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
modifiersmanager.c
Go to the documentation of this file.
1
//max 32 synced modifiers supported
2
enum
eModifierSyncIDs
3
{
4
MODIFIER_SYNC_WOUND_INFECT_1
= 0x00000001,
5
MODIFIER_SYNC_WOUND_INFECT_2
= 0x00000002,
6
MODIFIER_SYNC_CONTAMINATION
= 0x00000004,
//stage1
7
MODIFIER_SYNC_CONTAMINATION2
= 0x00000008,
//stage2 and stage3 share the same sync id
8
MODIFIER_SYNC_ZONE_EXPOSURE
= 0x00000010,
9
MODIFIER_SYNC_DROWNING
= 0x00000020,
10
MODIFIER_SYNC_FEVER
= 0x00000040,
11
//0x00000080,
12
//0x00000100,
13
//0x00000200,
14
//0x00000400,
15
//0x00000800,
16
//0x00001000,
17
LAST_INDEX
,
18
}
19
20
enum
EActivationType
21
{
22
TRIGGER_EVENT_OFF
,
23
TRIGGER_EVENT_ON_ACTIVATION
,
24
TRIGGER_EVENT_ON_CONNECT
25
}
26
27
const
int
DEFAULT_TICK_TIME_ACTIVE
= 3;
28
const
int
DEFAULT_TICK_TIME_ACTIVE_SHORT
= 1;
29
const
int
DEFAULT_TICK_TIME_INACTIVE
= 3;
30
const
int
DEFAULT_TICK_TIME_INACTIVE_LONG
= 10;
31
32
class
ModifierDebugObj
33
{
34
string
m_Name
;
35
int
m_ID
;
36
bool
m_IsActive
;
37
bool
m_IsLocked
;
38
39
void
ModifierDebugObj
(
int
id
,
string
name
,
bool
active,
bool
locked)
40
{
41
m_Name
=
name
;
42
m_ID
= id;
43
m_IsActive
= active;
44
m_IsLocked
= locked;
45
}
46
47
string
GetName
()
48
{
49
return
m_Name
;
50
}
51
52
int
GetID
()
53
{
54
return
m_ID
;
55
}
56
57
bool
IsActive
()
58
{
59
return
m_IsActive
;
60
}
61
62
bool
IsLocked
()
63
{
64
return
m_IsLocked
;
65
}
66
}
67
68
class
ModifiersManager
69
{
70
const
int
STORAGE_VERSION
= 121;
71
72
bool
m_AllowModifierTick
;
73
74
PlayerBase
m_Player
;
75
76
ref
map<int, ref ModifierBase>
m_ModifierList
;
77
ref
array< ref ModifierBase>
m_ModifierListArray
;
78
ref
array<ref Param>
m_ParamList
;
79
80
void
ModifiersManager
(
PlayerBase
player)
81
{
82
m_ModifierList
=
new
map<int, ref ModifierBase>
();
83
m_ModifierListArray
=
new
array< ref ModifierBase>
();
84
m_ParamList
=
new
array<ref Param>
;
85
m_Player
= player;
86
87
Init
();
88
}
89
90
void
Init
()
91
{
92
#ifdef DEVELOPER
93
AddModifier
(
new
TestDiseaseMdfr
);
94
#endif
95
AddModifier
(
new
BloodRegenMdfr
);
96
AddModifier
(
new
SalineMdfr
);
97
AddModifier
(
new
HealthRegenMdfr
);
98
AddModifier
(
new
HungerMdfr
);
99
AddModifier
(
new
ImmuneSystemMdfr
);
100
AddModifier
(
new
StomachMdfr
);
101
AddModifier
(
new
HeatComfortMdfr
);
102
AddModifier
(
new
ThirstMdfr
);
103
AddModifier
(
new
BleedingCheckMdfr
);
104
AddModifier
(
new
BrokenLegsMdfr
);
105
AddModifier
(
new
VomitStuffedMdfr
);
106
AddModifier
(
new
BurningMdfr
);
107
AddModifier
(
new
FeverMdfr
);
108
AddModifier
(
new
HeartAttackMdfr
);
109
AddModifier
(
new
HemolyticReactionMdfr
);
110
AddModifier
(
new
PoisoningMdfr
);
111
AddModifier
(
new
StuffedStomachMdfr
);
112
AddModifier
(
new
UnconsciousnessMdfr
);
113
AddModifier
(
new
ShockDamageMdfr
);
114
AddModifier
(
new
CommonColdMdfr
);
115
AddModifier
(
new
CholeraMdfr
);
116
AddModifier
(
new
InfluenzaMdfr
);
117
AddModifier
(
new
SalmonellaMdfr
);
118
AddModifier
(
new
BrainDiseaseMdfr
);
119
AddModifier
(
new
WetMdfr
);
120
AddModifier
(
new
ImmunityBoost
);
121
AddModifier
(
new
AntibioticsMdfr
);
122
AddModifier
(
new
ToxicityMdfr
);
123
AddModifier
(
new
BreathVapourMdfr);
124
AddModifier
(
new
ShockMdfr
);
125
AddModifier
(
new
WoundInfectStage1Mdfr);
126
AddModifier
(
new
WoundInfectStage2Mdfr
);
127
AddModifier
(
new
CharcoalMdfr
);
128
AddModifier
(
new
MorphineMdfr
);
129
AddModifier
(
new
PainKillersMdfr
);
130
AddModifier
(
new
EpinephrineMdfr
);
131
AddModifier
(
new
HeatBufferMdfr
);
132
AddModifier
(
new
DisinfectionMdfr
);
133
AddModifier
(
new
FatigueMdfr
);
134
AddModifier
(
new
ContaminationStage1Mdfr
);
135
AddModifier
(
new
ContaminationStage2Mdfr
);
136
AddModifier
(
new
ContaminationStage3Mdfr
);
137
AddModifier
(
new
AreaExposureMdfr
);
138
AddModifier
(
new
MaskMdfr
);
139
AddModifier
(
new
FliesMdfr
);
140
AddModifier
(
new
DrowningMdfr
);
141
AddModifier
(
new
HeavyMetalPhase1Mdfr);
142
AddModifier
(
new
HeavyMetalPhase2Mdfr
);
143
AddModifier
(
new
HeavyMetalPhase3Mdfr);
144
AddModifier
(
new
PneumoniaMdfr
);
145
AddModifier
(
new
ChelationMdfr
);
146
}
147
148
void
SetModifiers
(
bool
enable)
149
{
150
if
(
m_AllowModifierTick
== enable)
151
return
;
152
153
m_AllowModifierTick
= enable;
154
155
#ifdef DIAG_DEVELOPER
156
#ifndef SERVER
157
DiagMenu
.
SetValue
(
DiagMenuIDs
.CHEATS_MODIFIERS, enable);
158
#endif
159
#endif
160
161
if
(!enable)
162
{
163
for
(
int
i = 0; i <
m_ModifierList
.Count(); i++)
164
{
165
m_ModifierList
.GetElement(i).ResetLastTickTime();
166
}
167
}
168
}
169
170
int
GetStorageVersion
()
171
{
172
return
STORAGE_VERSION
;
173
}
174
175
bool
IsModifiersEnable
()
176
{
177
return
m_AllowModifierTick
;
178
}
179
180
void
AddModifier
(
ModifierBase
modifier)
181
{
182
modifier.InitBase(
m_Player
,
this
);
183
int
id
= modifier.GetModifierID();
184
185
if
(
id
< 1)
186
ErrorEx
(
"modifiers ID must be 1 or higher(for debugging reasons)"
,
ErrorExSeverity
.WARNING);
187
188
if
(
m_ModifierListArray
.Find(modifier) == -1)
189
{
190
m_ModifierList
.Insert(
id
, modifier);
191
m_ModifierListArray
.Insert(modifier);
192
}
193
else
194
{
195
ErrorEx
(
string
.Format(
"Modifier '%1' is already registered"
, modifier.GetName()),
ErrorExSeverity
.WARNING);
196
}
197
}
198
199
bool
IsModifierActive
(
eModifiers
modifier_id)
200
{
201
return
m_ModifierList
.Get(modifier_id).IsActive();
202
}
203
204
void
OnScheduledTick
(
float
delta_time)
205
{
206
if
(!
m_AllowModifierTick
)
207
return
;
208
209
foreach
(
ModifierBase
modifier :
m_ModifierListArray
)
210
modifier.Tick(delta_time);
211
}
212
213
void
DeactivateAllModifiers
()
214
{
215
foreach
(
ModifierBase
modifier :
m_ModifierListArray
)
216
modifier.Deactivate();
217
}
218
219
void
ActivateModifier
(
int
modifier_id,
bool
triggerEvent = EActivationType.TRIGGER_EVENT_ON_ACTIVATION)
220
{
221
m_ModifierList
.Get(modifier_id).ActivateRequest(triggerEvent);
222
}
223
224
void
DeactivateModifier
(
int
modifier_id,
bool
triggerEvent =
true
)
225
{
226
m_ModifierList
.Get(modifier_id).Deactivate(triggerEvent);
227
}
228
229
void
OnStoreSave
(
ParamsWriteContext
ctx )
230
{
231
CachedObjectsArrays
.
ARRAY_INT
.Clear();
232
233
int
modifierCount;
234
foreach
(
ModifierBase
modifier :
m_ModifierListArray
)
235
{
236
if
(modifier.IsActive() && modifier.IsPersistent())
237
{
238
modifierCount++;
239
//save the modifier id
240
CachedObjectsArrays
.
ARRAY_INT
.Insert(modifier.GetModifierID());
241
if
(modifier.IsTrackAttachedTime())
242
{
243
//save the overall attached time
244
CachedObjectsArrays
.
ARRAY_INT
.Insert(modifier.GetAttachedTime());
245
}
246
}
247
}
248
249
ctx.
Write
(modifierCount);
250
251
//write the individual modifiers and respective attached times
252
for
(
int
i = 0; i <
CachedObjectsArrays
.
ARRAY_INT
.Count(); i++)
253
{
254
int
item =
CachedObjectsArrays
.
ARRAY_INT
.Get(i);
255
ctx.
Write
(item);
256
}
257
258
for
(
int
z = 0; z <
m_ParamList
.Count(); z++)
259
{
260
m_ParamList
.Get(z).Serialize(ctx);
261
}
262
263
}
264
265
bool
OnStoreLoad
(
ParamsReadContext
ctx,
int
version)
266
{
267
int
modifierCount;
268
if
(!ctx.
Read
(modifierCount))
269
return
false
;
270
271
for
(
int
i = 0; i < modifierCount; i++)
272
{
273
int
modifierId;
274
if
(!ctx.
Read
(modifierId))
275
return
false
;
276
277
ModifierBase
modifier =
GetModifier
(modifierId);
278
if
(modifier)
279
{
280
if
(modifier.IsTrackAttachedTime())
281
{
282
int
time;
283
if
(!ctx.
Read
(time))
//get the attached time
284
return
false
;
285
286
modifier.SetAttachedTime(time);
287
}
288
289
ActivateModifier
(modifierId, EActivationType.TRIGGER_EVENT_ON_CONNECT);
290
}
291
else
292
{
293
Debug
.
LogError
(
"DB loading: non-existent modifier with id:"
+modifierId.ToString());
294
}
295
}
296
297
for
(
int
x
= 0;
x
<
m_ParamList
.Count();
x
++)
298
{
299
if
(!
m_ParamList
.Get(
x
).Deserializer(ctx))
300
return
false
;
301
}
302
303
return
true
;
304
}
305
306
ModifierBase
GetModifier
(
int
modifier_id)
307
{
308
return
m_ModifierList
.Get(modifier_id);
309
}
310
311
PlayerBase
GetPlayer
()
312
{
313
return
m_Player
;
314
}
315
316
void
SetModifierLock
(
int
modifier_id,
bool
state)
317
{
318
m_ModifierList
.Get(modifier_id).SetLock(state);
319
}
320
321
bool
GetModifierLock
(
int
modifier_id)
322
{
323
return
m_ModifierList
.Get(modifier_id).IsLocked();
324
}
325
326
void
DbgGetModifiers
(
array<ref ModifierDebugObj>
modifiers)
327
{
328
modifiers.Clear();
329
for
(
int
i = 1;i <
eModifiers
.COUNT; i++)
330
{
331
if
(
m_ModifierList
.Contains(i))
332
{
333
ModifierBase
modifier =
m_ModifierList
.Get(i);
334
335
int
modifierId = modifier.GetModifierID();
336
bool
isLocked = modifier.IsLocked();
337
bool
active = modifier.IsActive();
338
339
string
modifierName = modifier.GetName();
340
string
debugText = modifier.
GetDebugTextSimple
();
341
342
if
(active && debugText !=
""
)
343
modifierName +=
" | "
+ debugText;
344
345
ModifierDebugObj
obj =
new
ModifierDebugObj
(modifierId, modifierName, active, isLocked);
346
347
modifiers.Insert(obj);
348
}
349
}
350
}
351
352
void
ResetAll
()
353
{
354
bool
hasAreaExposureModifier =
IsModifierActive
(
eModifiers
.MDF_AREAEXPOSURE);
355
bool
hasMaksModifier =
IsModifierActive
(
eModifiers
.MDF_MASK);
356
357
DeactivateAllModifiers
();
358
359
if
(hasAreaExposureModifier)
360
ActivateModifier
(
eModifiers
.MDF_AREAEXPOSURE);
361
362
if
(hasMaksModifier)
363
ActivateModifier
(
eModifiers
.MDF_MASK);
364
}
365
}
m_Player
map m_Player
name
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
AntibioticsMdfr
Definition
antibiotics.c:2
AreaExposureMdfr
Definition
areaexposure.c:2
BleedingCheckMdfr
Definition
bleeding.c:3
BloodRegenMdfr
Definition
bloodregen.c:2
BrainDiseaseMdfr
Definition
braindisease.c:2
BrokenLegsMdfr
Definition
brokenlegs.c:2
BurningMdfr
Definition
burning.c:2
CachedObjectsArrays
Definition
utilityclasses.c:41
CachedObjectsArrays::ARRAY_INT
static ref TIntArray ARRAY_INT
Definition
utilityclasses.c:51
CharcoalMdfr
Definition
charcoalmdfr.c:2
ChelationMdfr
Definition
chelation.c:2
CholeraMdfr
Definition
cholera.c:2
CommonColdMdfr
Definition
commoncold.c:2
ContaminationStage1Mdfr
Definition
contamination.c:2
ContaminationStage2Mdfr
Definition
contamination2.c:2
ContaminationStage3Mdfr
Definition
contamination3.c:2
Debug
Definition
debug.c:2
Debug::LogError
static void LogError(string message=LOG_DEFAULT, string plugin=LOG_DEFAULT, string author=LOG_DEFAULT, string label=LOG_DEFAULT, string entity=LOG_DEFAULT)
Prints debug message as error message.
Definition
debug.c:305
DiagMenu
Definition
endebug.c:241
DisinfectionMdfr
Definition
disinfectmdfr.c:2
DrowningMdfr
Definition
drowning.c:2
EpinephrineMdfr
Definition
epinephrinemdfr.c:2
FatigueMdfr
Definition
fatigue.c:2
FeverMdfr
Definition
fever.c:2
FliesMdfr
Definition
flies.c:2
HealthRegenMdfr
Definition
healthregen.c:2
HeartAttackMdfr
Definition
heartattack.c:2
HeatBufferMdfr
Definition
heatbuffer.c:2
HeatComfortMdfr
Definition
heatcomfortmdfr.c:2
HeavyMetalPhase2Mdfr
Definition
heavymetal.c:92
HemolyticReactionMdfr
Definition
hemolyticreaction.c:2
HungerMdfr
Definition
hunger.c:2
ImmuneSystemMdfr
Definition
immunesystem.c:2
ImmunityBoost
Definition
immunityboost.c:2
InfluenzaMdfr
Definition
influenza.c:2
MaskMdfr
Definition
mask.c:2
ModifierBase
Definition
breathvapourmdfr.c:4
ModifierBase::GetDebugTextSimple
override string GetDebugTextSimple()
Definition
breathvapourmdfr.c:35
ModifierDebugObj
Definition
modifiersmanager.c:33
ModifierDebugObj::GetID
int GetID()
Definition
modifiersmanager.c:52
ModifierDebugObj::m_Name
string m_Name
Definition
modifiersmanager.c:34
ModifierDebugObj::m_ID
int m_ID
Definition
modifiersmanager.c:35
ModifierDebugObj::m_IsLocked
bool m_IsLocked
Definition
modifiersmanager.c:37
ModifierDebugObj::m_IsActive
bool m_IsActive
Definition
modifiersmanager.c:36
ModifierDebugObj::IsLocked
bool IsLocked()
Definition
modifiersmanager.c:62
ModifierDebugObj::ModifierDebugObj
void ModifierDebugObj(int id, string name, bool active, bool locked)
Definition
modifiersmanager.c:39
ModifierDebugObj::GetName
string GetName()
Definition
modifiersmanager.c:47
ModifierDebugObj::IsActive
bool IsActive()
Definition
modifiersmanager.c:57
MorphineMdfr
Definition
morphinemdfr.c:2
PainKillersMdfr
Definition
painkillersmdfr.c:2
PlayerBase
Definition
playerbaseclient.c:2
PneumoniaMdfr
Definition
pneumonia.c:2
PoisoningMdfr
Definition
poisoning.c:2
SalineMdfr
Definition
saline.c:2
SalmonellaMdfr
Definition
salmonella.c:2
Serializer::Write
proto bool Write(void value_out)
Serializer::Read
proto bool Read(void value_in)
ShockDamageMdfr
Definition
shockdamage.c:2
ShockMdfr
Definition
shock.c:2
StomachMdfr
Definition
stomach.c:2
StuffedStomachMdfr
Definition
stuffedstomach.c:2
TestDiseaseMdfr
Definition
testdisease.c:2
ThirstMdfr
Definition
thirst.c:2
ToxicityMdfr
Definition
toxicity.c:2
UnconsciousnessMdfr
Definition
unconsciousness.c:2
VomitStuffedMdfr
Definition
vomitstuffed.c:2
WetMdfr
Definition
wet.c:2
WoundInfectStage2Mdfr
Definition
woundinfection2.c:2
array
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
Definition
isboxcollidinggeometryproxyclasses.c:28
map
Definition
cachedequipmentstorage.c:4
map
map
Definition
controlsxboxnew.c:4
Init
override Widget Init()
Definition
dayzgame.c:127
DiagMenuIDs
DiagMenuIDs
Definition
ediagmenuids.c:2
eModifiers
eModifiers
Definition
emodifiers.c:2
ParamsReadContext
Serializer ParamsReadContext
Definition
gameplay.c:15
ParamsWriteContext
Serializer ParamsWriteContext
Definition
gameplay.c:16
ErrorExSeverity
ErrorExSeverity
Definition
endebug.c:62
ErrorEx
enum ShapeType ErrorEx
DiagMenu::SetValue
static proto void SetValue(int id, int value)
Set value at the given script id.
SetModifiers
void SetModifiers()
Definition
huddebugwincharmodifiers.c:160
IsModifierActive
proto native bool IsModifierActive()
is modifier active
x
Icon x
GetPlayer
PlayerBase GetPlayer()
Definition
modifierbase.c:51
OnStoreSave
void OnStoreSave(ParamsWriteContext ctx)
Definition
modifiersmanager.c:229
m_AllowModifierTick
bool m_AllowModifierTick
Definition
modifiersmanager.c:72
GetStorageVersion
int GetStorageVersion()
Definition
modifiersmanager.c:170
DeactivateModifier
void DeactivateModifier(int modifier_id, bool triggerEvent=true)
Definition
modifiersmanager.c:224
GetModifier
ModifierBase GetModifier(int modifier_id)
Definition
modifiersmanager.c:306
DeactivateAllModifiers
void DeactivateAllModifiers()
Definition
modifiersmanager.c:213
IsModifiersEnable
bool IsModifiersEnable()
Definition
modifiersmanager.c:175
eModifierSyncIDs
eModifierSyncIDs
Definition
modifiersmanager.c:3
MODIFIER_SYNC_FEVER
@ MODIFIER_SYNC_FEVER
Definition
modifiersmanager.c:10
MODIFIER_SYNC_CONTAMINATION2
@ MODIFIER_SYNC_CONTAMINATION2
Definition
modifiersmanager.c:7
MODIFIER_SYNC_WOUND_INFECT_1
@ MODIFIER_SYNC_WOUND_INFECT_1
Definition
modifiersmanager.c:4
LAST_INDEX
@ LAST_INDEX
Definition
modifiersmanager.c:17
MODIFIER_SYNC_ZONE_EXPOSURE
@ MODIFIER_SYNC_ZONE_EXPOSURE
Definition
modifiersmanager.c:8
MODIFIER_SYNC_WOUND_INFECT_2
@ MODIFIER_SYNC_WOUND_INFECT_2
Definition
modifiersmanager.c:5
MODIFIER_SYNC_DROWNING
@ MODIFIER_SYNC_DROWNING
Definition
modifiersmanager.c:9
MODIFIER_SYNC_CONTAMINATION
@ MODIFIER_SYNC_CONTAMINATION
Definition
modifiersmanager.c:6
TRIGGER_EVENT_OFF
enum eModifierSyncIDs TRIGGER_EVENT_OFF
ActivateModifier
void ActivateModifier(int modifier_id, bool triggerEvent=EActivationType.TRIGGER_EVENT_ON_ACTIVATION)
Definition
modifiersmanager.c:219
DbgGetModifiers
void DbgGetModifiers(array< ref ModifierDebugObj > modifiers)
Definition
modifiersmanager.c:326
GetModifierLock
bool GetModifierLock(int modifier_id)
Definition
modifiersmanager.c:321
STORAGE_VERSION
class ModifierDebugObj STORAGE_VERSION
DEFAULT_TICK_TIME_INACTIVE
const int DEFAULT_TICK_TIME_INACTIVE
Definition
modifiersmanager.c:29
OnStoreLoad
bool OnStoreLoad(ParamsReadContext ctx, int version)
Definition
modifiersmanager.c:265
ModifiersManager
void ModifiersManager(PlayerBase player)
Definition
modifiersmanager.c:80
DEFAULT_TICK_TIME_ACTIVE_SHORT
const int DEFAULT_TICK_TIME_ACTIVE_SHORT
Definition
modifiersmanager.c:28
AddModifier
void AddModifier(ModifierBase modifier)
Definition
modifiersmanager.c:180
SetModifierLock
void SetModifierLock(int modifier_id, bool state)
Definition
modifiersmanager.c:316
m_ParamList
ref array< ref Param > m_ParamList
Definition
modifiersmanager.c:78
ResetAll
void ResetAll()
Definition
modifiersmanager.c:352
m_ModifierList
ref map< int, ref ModifierBase > m_ModifierList
Definition
modifiersmanager.c:76
m_ModifierListArray
ref array< ref ModifierBase > m_ModifierListArray
Definition
modifiersmanager.c:77
DEFAULT_TICK_TIME_ACTIVE
enum eModifierSyncIDs DEFAULT_TICK_TIME_ACTIVE
TRIGGER_EVENT_ON_ACTIVATION
enum eModifierSyncIDs TRIGGER_EVENT_ON_ACTIVATION
DEFAULT_TICK_TIME_INACTIVE_LONG
const int DEFAULT_TICK_TIME_INACTIVE_LONG
Definition
modifiersmanager.c:30
OnScheduledTick
void OnScheduledTick()
Definition
notifiersmanager.c:105
Games
Dayz
scripts
4_world
classes
playermodifiers
modifiersmanager.c
Generated by
1.17.0