Dayz Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Loading...
Searching...
No Matches
modifierbase.c
Go to the documentation of this file.
7
8class ModifierBase
9{
10 int m_ID = 0;
12 string m_System = "Modifiers";
24 int m_TickType = (eModifiersTickType.TICK | eModifiersTickType.ACTIVATE_CHECK | eModifiersTickType.DEACTIVATE_CHECK);//some modifiers do not need to check activate condition, as they get activated by request
26 bool m_IsLocked = false;
27 EActivationType m_ActivationType;
29 PluginPlayerStatus m_ModulePlayerStatus;
30
32
34 {
35 Class.CastTo(m_ModulePlayerStatus, GetPlugin(PluginPlayerStatus));
36 }
37
38 void InitBase(PlayerBase player, ModifiersManager manager)
39 {
40 m_Manager = manager;
41 m_Player = player;
42 Init();
43 }
44
45 void Init()
46 {
49 }
50
52 {
53 return m_Player;
54 }
55
57 {
58 return m_IsPersistent;
59 }
60
62 {
63 m_Manager.m_ParamList.Insert(object);
64 }
65
67 {
69 }
70
71 string GetDebugText()
72 {
73 return "";
74 }
75
77 {
78 return "";
79 }
80
82 {
83 m_TickType = (m_TickType & ~eModifiersTickType.ACTIVATE_CHECK);
84 }
85
87 {
88 m_TickType = (m_TickType & ~eModifiersTickType.DEACTIVATE_CHECK);
89 }
90
91 void Tick(float delta_time)
92 {
94 Activate();
95
96 if (m_IsActive)
97 {
98 m_AccumulatedTimeActive += delta_time;
100 {
101 if (m_TickType & eModifiersTickType.DEACTIVATE_CHECK && DeactivateCondition(m_Player) && !IsLocked())
102 {
103 Deactivate();
104 }
105 else
106 {
109 }
110
112 }
113 }
114 else if (m_TickType & eModifiersTickType.ACTIVATE_CHECK)
115 {
116 m_AccumulatedTimeInactive += delta_time;
118 {
120 {
121 if (!IsLocked())
122 ActivateRequest(EActivationType.TRIGGER_EVENT_ON_ACTIVATION);
123 }
124
126 }
127 }
128 }
129
130 bool IsActive()
131 {
132 return m_IsActive;
133 }
134
135 void SetLock(bool state)
136 {
137 m_IsLocked = state;
138 }
139
140 bool IsLocked()
141 {
142 return m_IsLocked;
143 }
144
146 {
148 }
149
151 {
152 return m_ActivatedTime;
153 }
154
155 void SetAttachedTime(float time)
156 {
157 m_ActivatedTime = time;
158 }
159
161 {
162 return m_ID;
163 }
164
165 string GetName()
166 {
167 string name = ClassName();
168 int indexStart = name.Length() - 4;
169 int indexEnd = name.Length();
170
171 name = name.SubstringInverted(name, indexStart, indexEnd);
172
173 return name;
174 }
175
177 {
178 return false;
179 }
180
182 {
183 return false;
184 }
185
187 void OnActivate(PlayerBase player);
188
191 void OnDeactivate(PlayerBase player);
192
193 void Activate()
194 {
196 {
197 AnalyticsRegisterStat(m_ID, "state");
199 }
200
201 m_IsActive = true;
202 m_Player.m_SyncedModifiers = (m_Player.m_SyncedModifiers | m_SyncID);
203 if (m_ActivationType == EActivationType.TRIGGER_EVENT_ON_ACTIVATION)
205 else if (m_ActivationType == EActivationType.TRIGGER_EVENT_ON_CONNECT)
207
208 m_Player.SetSynchDirty();
209 }
210
211 void ActivateRequest(EActivationType trigger)
212 {
213 m_ShouldBeActive = true;
214 m_ActivationType = trigger;
215 }
216
217 void Deactivate(bool trigger = true)
218 {
219 if (!m_IsActive)
220 return;
221
223 AnalyticsSetState(m_ID, -1.0);
224
225 m_Player.m_SyncedModifiers = (m_Player.m_SyncedModifiers & ~m_SyncID);
226 m_ShouldBeActive = false;
227 m_IsActive = false;
228 m_ActivatedTime = 0;
229 if (trigger)
231 }
232
233
235
236 private void OnTick(PlayerBase player, float deltaT);
237
238
239 private void AnalyticsRegisterStat(int modifierId, string keySuffix)
240 {
241 string modifierIdName = EnumTools.EnumToString(eModifiers, modifierId);
242 modifierIdName.ToLower();
243
244 m_Player.StatRegister(string.Format("%1_%2", modifierIdName, keySuffix));
245 }
246
248 private void AnalyticsSetState(int modifierId, float value)
249 {
250 string modifierStatKey = EnumTools.EnumToString(eModifiers, modifierId);
251 modifierStatKey.ToLower();
252
253 string formatttedKey = string.Format("%1_state", modifierStatKey);
254 if (value == -1.0)
255 {
256 if(m_Player.StatGet(formatttedKey) == 0.0)
257 return;
258 }
259
260 if (value == 1.0)
261 {
262 if(m_Player.StatGet(formatttedKey) == 1.0)
263 return;
264 }
265
266 m_Player.StatUpdate(formatttedKey, value);
267 }
268}
map m_Player
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
Super root of all classes in Enforce script.
Definition enscript.c:11
static string EnumToString(typename e, int enumValue)
Return string name of enum value.
Definition enconvert.c:614
override bool DeactivateCondition(PlayerBase player)
override void OnReconnect(PlayerBase player)
override string GetDebugText()
override string GetDebugTextSimple()
override void OnTick(PlayerBase player, float deltaT)
override void Init()
override bool ActivateCondition(PlayerBase player)
Base Param Class with no parameters.
Definition param.c:12
override void Tick()
int m_ID
ID of effect, given by SEffectManager when registered (automatically done when playing through it).
Definition effect.c:51
eModifiers
Definition emodifiers.c:2
Serializer ParamsWriteContext
Definition gameplay.c:16
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
proto int ToLower()
Changes string to lowercase.
proto native owned string GetName()
Test name getter. Strictly for UI porposes!
bool m_TrackActivatedTime
overall time this modifier was active
void DisableDeactivateCheck()
void SetAttachedTime(float time)
void ModifierBase()
ModifiersManager m_Manager
float m_AccumulatedTimeInactive
void InitBase(PlayerBase player, ModifiersManager manager)
float m_AccumulatedTimeActive
void SetLock(bool state)
bool IsTrackAttachedTime()
eModifiersTickType
Definition modifierbase.c:2
@ ACTIVATE_CHECK
Definition modifierbase.c:4
@ TICK
Definition modifierbase.c:3
@ DEACTIVATE_CHECK
Definition modifierbase.c:5
float GetAttachedTime()
bool m_ShouldBeActive
void DisableActivateCheck()
bool m_IsLocked
void AnalyticsRegisterStat(int modifierId, string keySuffix)
bool DeactivateCondition(PlayerBase player)
void ResetLastTickTime()
float m_ActivatedTime
bool m_AnalyticsStatsEnabled
float m_LastTickedActive
bool m_IsActive
float m_LastTickedInactive
bool IsLocked()
int m_TickType
eModifierSyncIDs m_SyncID
float m_TickIntervalActive
float m_TickIntervalInactive
PlayerBase GetPlayer()
void ActivateRequest(EActivationType trigger)
EActivationType m_ActivationType
string m_System
the manager instance
void OnDeactivate(PlayerBase player)
Definition heavymetal.c:211
int GetModifierID()
bool IsActive()
void Deactivate(bool trigger=true)
void OnStoreSave(ParamsWriteContext ctx)
void MakeParamObjectPersistent(Param object)
void AnalyticsSetState(int modifierId, float value)
special treating of the value to set state only (without counter use)
bool IsPersistent()
bool m_IsPersistent
should this modifier track overall time it was active ?
void Activate()
PluginPlayerStatus m_ModulePlayerStatus
max 32 synced modifiers supported, 0 == no sync
eModifierSyncIDs
void ModifiersManager(PlayerBase player)
PluginBase GetPlugin(typename plugin_type)
void OnActivate()