Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
contaminatedtrigger.c
Go to the documentation of this file.
1
// In this file you will find both Static and Dynamic contaminated area triggers
2
class
ContaminatedTrigger
extends
EffectTrigger
3
{
4
const
float
DAMAGE_TICK_RATE
= 10;
//deal damage every n-th second
5
6
override
string
GetDisplayName
()
7
{
8
return
"#STR_contaminatedarea"
;
9
}
10
11
// ----------------------------------------------
12
// TRIGGER EVENTS
13
// ----------------------------------------------
14
15
override
void
OnEnterServerEvent
(
TriggerInsider
insider )
16
{
17
super.OnEnterServerEvent( insider );
18
//Print("Entered A " + GetType());
19
if
( insider )
20
{
21
DayZCreatureAI
creature =
DayZCreatureAI
.Cast( insider.
GetObject
() );
22
23
if
(creature)
24
creature.IncreaseEffectTriggerCount();
25
}
26
27
}
28
29
override
void
OnLeaveServerEvent
(
TriggerInsider
insider )
30
{
31
super.OnLeaveServerEvent( insider );
32
//Print("Left A " + GetType());
33
if
( insider )
34
{
35
DayZCreatureAI
creature =
DayZCreatureAI
.Cast( insider.
GetObject
() );
36
37
if
(creature)
38
creature.DecreaseEffectTriggerCount();
39
40
}
41
}
42
43
override
void
OnEnterClientEvent
(
TriggerInsider
insider )
44
{
45
super.OnEnterClientEvent( insider );
46
}
47
48
override
void
OnLeaveClientEvent
(
TriggerInsider
insider )
49
{
50
super.OnLeaveClientEvent( insider );
51
}
52
53
54
override
void
OnStayStartServerEvent
(
int
nrOfInsiders)
55
{
56
m_TimeAccuStay
+=
m_DeltaTime
;
57
if
(
m_TimeAccuStay
>
DAMAGE_TICK_RATE
)
58
{
59
m_DealDamageFlag
=
true
;
60
//this is where we would normally reset the m_TimeAccuStay, but we need the value as deltaT when dealing damage to the insiders, so we reset it only after the insider update in OnStayFinishServerEvent
61
}
62
63
}
64
65
override
void
OnStayFinishServerEvent
()
66
{
67
if
(
m_DealDamageFlag
)
//the flag was previously set to true, the insiders have been updated at this point, reset the flag and the timer as well
68
{
69
m_TimeAccuStay
= 0;
70
m_DealDamageFlag
=
false
;
71
}
72
}
73
74
override
void
OnStayServerEvent
(
TriggerInsider
insider,
float
deltaTime)
75
{
76
if
(
m_DealDamageFlag
)
77
{
78
DayZCreatureAI
creature =
DayZCreatureAI
.Cast( insider.
GetObject
());
79
if
(creature && creature.m_EffectTriggerCount != 0)
80
creature.DecreaseHealth(
""
,
""
,
GameConstants
.
AI_CONTAMINATION_DMG_PER_SEC
*
m_TimeAccuStay
/ creature.m_EffectTriggerCount);
// we devide by m_EffectTriggerCount for multiple trigger presence(overlapping triggers)
81
}
82
}
83
84
override
string
GetAmbientSoundsetName
()
85
{
86
return
"ContaminatedArea_SoundSet"
;
87
}
88
89
90
}
91
92
class
ContaminatedTrigger_Dynamic
: ContaminatedTrigger
93
{
94
protected
int
m_AreaState
;
// Used to get the state from linked area and update effects
95
96
void
ContaminatedTrigger_Dynamic
()
97
{
98
RegisterNetSyncVariableInt(
"m_AreaState"
);
99
100
// Register in the trigger effect manager
101
m_Manager
=
TriggerEffectManager
.
GetInstance
();
102
m_Manager
.RegisterTriggerType(
this
);
103
}
104
105
void
SetAreaState
(
int
state )
106
{
107
m_AreaState
= state;
108
SetSynchDirty();
109
}
110
111
112
override
protected
void
OnStayClientEvent
(
TriggerInsider
insider,
float
deltaTime)
113
{
114
//no super, overriding parent behaviour
115
if
( insider.
GetObject
().IsMan() )
116
{
117
PlayerBase
playerInsider =
PlayerBase
.Cast( insider.
GetObject
() );
118
119
// We will only handle the controlled player, as effects are only relevant to this player instance
120
if
( playerInsider.IsControlledPlayer() )
121
{
122
// We check if we are not in the standard LIVE state
123
bool
nonDefaultState =
m_AreaState
>
eAreaDecayStage
.LIVE;
124
if
( nonDefaultState )
125
{
126
// if not we check the specific state and update local effect values
127
int
localPartBirthRate;
128
if
(
m_AreaState
==
eAreaDecayStage
.DECAY_START )
129
localPartBirthRate = 20;
130
else
131
localPartBirthRate = 10;
132
133
playerInsider.RequestTriggerEffect(
this
,
m_PPERequester
, m_AroundPartId, m_TinyPartId, GetAmbientSoundsetName(), nonDefaultState, localPartBirthRate );
134
}
135
else
136
playerInsider.RequestTriggerEffect(
this
,
m_PPERequester
, m_AroundPartId, m_TinyPartId, GetAmbientSoundsetName() );
137
}
138
}
139
}
140
141
142
143
override
void
OnVariablesSynchronized
()
144
{
145
super.OnVariablesSynchronized();
146
147
// Is the controlled player inside when trigger is synchronized
148
for
(
int
i = 0; i < GetInsiders().Count(); i++ )
149
{
150
PlayerBase
playerInsider =
PlayerBase
.Cast( m_insiders.Get( i ).GetObject() );
151
if
( playerInsider )
152
{
153
if
( playerInsider.IsControlledPlayer() )
154
{
155
// Update Local particle effects
156
bool
nonDefaultState =
m_AreaState
>
eAreaDecayStage
.LIVE;
157
if
( nonDefaultState )
158
{
159
int
localPartBirthRate;
160
if
(
m_AreaState
==
eAreaDecayStage
.DECAY_START )
161
localPartBirthRate = 20;
162
else
163
localPartBirthRate = 10;
164
165
//Update the local effects
166
playerInsider.RequestTriggerEffect(
this
,
m_PPERequester
, m_AroundPartId, m_TinyPartId, GetAmbientSoundsetName(), nonDefaultState, localPartBirthRate,
true
);
167
}
168
return
;
169
}
170
}
171
}
172
}
173
}
174
175
176
class
ContaminatedTrigger_Local
: ContaminatedTrigger
177
{
178
override
string
GetAmbientSoundsetName
()
179
{
180
return
""
;
181
}
182
183
}
OnStayClientEvent
override void OnStayClientEvent(TriggerInsider insider, float deltaTime)
Definition
areadamagemanager.c:147
m_PPERequester
PPERequester_PainBlur m_PPERequester
Definition
bullethitreaction.c:57
ContaminatedTrigger_Local
Definition
contaminatedtrigger.c:177
ContaminatedTrigger_Local::GetAmbientSoundsetName
override string GetAmbientSoundsetName()
Definition
contaminatedtrigger.c:178
DayZCreatureAI
do not process rotations !
Definition
dayzanimal.c:656
EffectTrigger::OnStayServerEvent
override void OnStayServerEvent(TriggerInsider insider, float deltaTime)
Definition
contaminatedtrigger.c:74
EffectTrigger::EffectTrigger
void EffectTrigger()
Definition
effecttrigger.c:20
EffectTrigger::OnStayStartServerEvent
override void OnStayStartServerEvent(int nrOfInsiders)
Definition
contaminatedtrigger.c:54
EffectTrigger::OnStayFinishServerEvent
override void OnStayFinishServerEvent()
Definition
contaminatedtrigger.c:65
EffectTrigger::m_DealDamageFlag
bool m_DealDamageFlag
Definition
effecttrigger.c:10
EffectTrigger::m_TimeAccuStay
float m_TimeAccuStay
Definition
effecttrigger.c:9
EffectTrigger::OnLeaveClientEvent
override void OnLeaveClientEvent(TriggerInsider insider)
Definition
contaminatedtrigger.c:48
EffectTrigger::DAMAGE_TICK_RATE
const float DAMAGE_TICK_RATE
Definition
contaminatedtrigger.c:4
EffectTrigger::GetDisplayName
override string GetDisplayName()
Definition
contaminatedtrigger.c:6
EffectTrigger::m_DeltaTime
float m_DeltaTime
Definition
effecttrigger.c:8
EffectTrigger::GetAmbientSoundsetName
override string GetAmbientSoundsetName()
Definition
contaminatedtrigger.c:84
EffectTrigger::OnEnterServerEvent
override void OnEnterServerEvent(TriggerInsider insider)
Definition
contaminatedtrigger.c:15
EffectTrigger::OnLeaveServerEvent
override void OnLeaveServerEvent(TriggerInsider insider)
Definition
contaminatedtrigger.c:29
EffectTrigger::OnEnterClientEvent
override void OnEnterClientEvent(TriggerInsider insider)
Definition
contaminatedtrigger.c:43
GameConstants
Definition
constants.c:664
PlayerBase
Definition
playerbaseclient.c:2
TriggerEffectManager
Definition
triggereffectmanager.c:4
TriggerEffectManager::GetInstance
static TriggerEffectManager GetInstance()
Definition
triggereffectmanager.c:21
TriggerInsider
The object which is in a trigger and its metadata.
Definition
trigger.c:3
TriggerInsider::GetObject
Object GetObject()
Definition
trigger.c:28
OnVariablesSynchronized
override void OnVariablesSynchronized()
Definition
contaminatedarea_dynamic.c:94
eAreaDecayStage
eAreaDecayStage
Definition
contaminatedarea_dynamicbase.c:2
ContaminatedTrigger_Dynamic
void ContaminatedTrigger_Dynamic()
Definition
contaminatedtrigger.c:96
m_AreaState
class ContaminatedTrigger extends EffectTrigger m_AreaState
SetAreaState
void SetAreaState(int state)
Definition
contaminatedtrigger.c:105
GameConstants::AI_CONTAMINATION_DMG_PER_SEC
const float AI_CONTAMINATION_DMG_PER_SEC
Definition
constants.c:1070
m_Manager
ModifiersManager m_Manager
Definition
modifierbase.c:11
Games
Dayz
scripts
4_world
entities
scriptedentities
triggers
contaminatedtrigger.c
Generated by
1.17.0