Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
headtorch_colorbase.c
Go to the documentation of this file.
1
class
Headtorch_ColorBase
extends
Clothing
2
{
3
HeadtorchLight
m_Light
;
4
5
static
int
REFLECTOR_ID
= 4;
6
static
int
GLASS_ID
= 5;
7
8
static
string
LIGHT_OFF_GLASS
=
"dz\\characters\\headgear\\data\\HeadTorchGlass.rvmat"
;
9
static
string
LIGHT_OFF_REFLECTOR
=
"dz\\characters\\headgear\\data\\HeadTorch.rvmat"
;
10
static
string
LIGHT_ON_GLASS
=
"dz\\characters\\headgear\\data\\HeadTorchGlass_on.rvmat"
;
11
static
string
LIGHT_ON_GLASS_RED
=
"dz\\characters\\headgear\\data\\HeadTorchGlass_on_red.rvmat"
;
12
static
string
LIGHT_ON_REFLECTOR
=
"dz\\characters\\headgear\\data\\HeadTorch_ON.rvmat"
;
13
static
string
LIGHT_ON_REFLECTOR_RED
=
"dz\\characters\\headgear\\data\\HeadTorch_ON_red.rvmat"
;
14
15
static
vector
m_OnHeadLocalPos
=
Vector
(0.12,0.15,0);
16
static
vector
m_OnHeadLocalOri
=
Vector
(0,90,0);
17
static
string
m_OffHeadLightPoint
=
"beamStart"
;
18
static
string
m_OffHeadLightTarget
=
"beamEnd"
;
19
20
ref
Timer
m_Timer
;
21
22
void
Headtorch_ColorBase
()
23
{
24
if
(
g_Game
.IsServer())
25
{
26
if
(!
m_Timer
)
27
m_Timer
=
new
Timer
(
CALL_CATEGORY_SYSTEM
);
28
29
m_Timer
.Run(1 ,
this
,
"CheckParent"
, NULL,
false
);
30
}
31
}
32
33
override
protected
void
InitGlobalExclusionValues
()
34
{
35
super.InitGlobalExclusionValues();
36
AddSingleExclusionValueGlobal(EAttExclusions.EXCLUSION_HEADSTRAP_0);
37
}
38
39
void
CheckParent
()
40
{
41
EntityAI
owner = GetHierarchyParent();
42
43
// Spawn a battery in the headtorch if it's attached on a zombie and switch it on
44
if
(owner && owner.IsZombie())
45
{
46
GetInventory().CreateAttachment(
"Battery9V"
);
47
GetCompEM().SwitchOn();
48
}
49
50
if
(
m_Timer
)
51
m_Timer
.Stop();
52
53
m_Timer
= null;
54
}
55
56
override
void
OnWorkStart
()
57
{
58
super.OnWorkStart();
59
60
if
(!
g_Game
.IsServer() || !
g_Game
.IsMultiplayer())
// Client side
61
{
62
CreateHeadtorchLight
();
63
}
64
65
if
(IsInherited(
Headtorch_Black
))
66
{
67
SetObjectMaterial(
GLASS_ID
,
LIGHT_ON_GLASS_RED
);
68
SetObjectMaterial(
REFLECTOR_ID
,
LIGHT_ON_REFLECTOR_RED
);
69
}
70
else
71
{
72
SetObjectMaterial(
GLASS_ID
,
LIGHT_ON_GLASS
);
73
SetObjectMaterial(
REFLECTOR_ID
,
LIGHT_ON_REFLECTOR
);
74
}
75
}
76
77
override
void
OnWorkStop
()
78
{
79
super.OnWorkStop();
80
81
if
(!
g_Game
.IsServer() || !
g_Game
.IsMultiplayer())
// Client side
82
{
83
if
(
m_Light
)
84
m_Light
.FadeOut();
85
86
m_Light
= NULL;
87
}
88
89
SetObjectMaterial(
GLASS_ID
,
LIGHT_OFF_GLASS
);
90
SetObjectMaterial(
REFLECTOR_ID
,
LIGHT_OFF_REFLECTOR
);
91
}
92
93
override
void
OnWork
(
float
consumed_energy)
94
{
95
super.OnWork(consumed_energy);
96
97
if
(!
g_Game
.IsServer() || !
g_Game
.IsMultiplayer())
// Client side
98
{
99
Battery9V
battery =
Battery9V
.Cast(GetCompEM().GetEnergySource());
100
101
if
(battery &&
m_Light
)
102
{
103
float
efficiency = battery.
GetEfficiency0To1
();
104
105
if
(efficiency < 1)
106
{
107
m_Light
.SetIntensity(efficiency, GetCompEM().GetUpdateInterval());
108
}
109
else
110
{
111
m_Light
.SetIntensity(1, 0);
112
}
113
}
114
}
115
}
116
117
void
OnLightCreated
()
118
{
119
m_Light
.SetColorToWhite();
120
}
121
122
void
CreateHeadtorchLight
()
123
{
124
if
(!
m_Light
)
125
m_Light
= HeadtorchLight.Cast(
ScriptedLightBase
.CreateLight( HeadtorchLight,
"0 0 0"
));
126
127
OnLightCreated
();
128
129
m_Light
.PerformVisibilityCheck(
this
);
130
131
EntityAI
owner = GetHierarchyParent();
132
133
if
(owner)
134
{
135
if
(owner.IsPlayer())
136
{
137
PlayerBase
owner_PB =
PlayerBase
.Cast(owner);
138
ItemBase
att_item = owner_PB.GetItemOnSlot(
"Eyewear"
);
139
140
if
(att_item ==
this
)
141
{
142
AttachLightOnHead
(owner_PB);
143
}
144
else
145
{
146
m_Light
.AttachOnMemoryPoint(
this
,
m_OffHeadLightPoint
,
m_OffHeadLightTarget
);
147
}
148
}
149
else
if
(owner.IsZombie())
150
{
151
int
slot_id =
InventorySlots
.
GetSlotIdFromString
(
"Eyewear"
);
152
EntityAI
item_EAI = owner.GetInventory().FindAttachment(slot_id);
153
ItemBase
item_IB =
ItemBase
.Cast(item_EAI);
154
155
if
(item_IB ==
this
)
156
{
157
AttachLightOnHead
(owner);
158
}
159
}
160
}
161
else
162
{
163
m_Light
.AttachOnMemoryPoint(
this
,
m_OffHeadLightPoint
,
m_OffHeadLightTarget
);
164
}
165
}
166
167
void
AttachLightOnHead
(
EntityAI
person)
168
{
169
if
(person.IsPlayer())
170
{
171
PlayerBase
player =
PlayerBase
.Cast(person);
172
int
boneIdx = player.GetBoneIndexByName(
"Head"
);
173
174
if
(boneIdx != -1)
175
{
176
if
(
m_Light
.GetParent())
177
m_Light
.DetachFromParent();
178
179
m_Light
.SetPosition(
m_OnHeadLocalPos
);
180
m_Light
.SetOrientation(
m_OnHeadLocalOri
);
181
182
player.AddChild(
m_Light
, boneIdx);
183
}
184
}
185
else
if
(person.IsZombie())
186
{
187
if
(
m_Light
.GetParent())
188
m_Light
.DetachFromParent();
189
190
m_Light
.SetPosition(
m_OnHeadLocalPos
);
191
m_Light
.SetOrientation(
m_OnHeadLocalOri
);
192
193
person.AddChild(
m_Light
, 17);
194
}
195
}
196
197
override
void
OnWasAttached
(
EntityAI
parent,
int
slot_id)
198
{
199
super.OnWasAttached(parent, slot_id);
200
201
PlayerBase
player =
PlayerBase
.Cast(parent);
202
203
if
(player)
204
{
205
if
(
m_Light
)
206
{
207
AttachLightOnHead
(player);
208
}
209
}
210
}
211
212
override
void
OnWasDetached
(
EntityAI
parent,
int
slot_id)
213
{
214
super.OnWasDetached(parent, slot_id);
215
216
if
(parent && (parent.IsPlayer() || parent.IsZombie()))
217
{
218
if
(
m_Light
)
219
{
220
m_Light
.DetachFromParent();
221
m_Light
.AttachOnMemoryPoint(
this
,
m_OffHeadLightPoint
,
m_OffHeadLightTarget
);
222
}
223
}
224
}
225
226
override
void
SetActions
()
227
{
228
super.SetActions();
229
AddAction
(
ActionTurnOnWhileInHands
);
230
AddAction
(
ActionTurnOffWhileInHands
);
231
AddAction
(
ActionTurnOnHeadtorch
);
232
AddAction
(
ActionTurnOffHeadtorch
);
233
}
234
235
override
bool
IsLightSource
()
236
{
237
return
true
;
238
}
239
240
override
ItemBase
GetLightSourceItem
()
241
{
242
return
this
;
243
}
244
245
override
void
OnInvisibleSet
(
bool
invisible)
246
{
247
if
(
m_Light
)
248
{
249
m_Light
.SetEnabled(!invisible);
250
}
251
}
252
};
AddAction
void AddAction(typename actionName)
Definition
advancedcommunication.c:220
ActionTurnOffHeadtorch
Definition
actionturnoffheadtorch.c:2
ActionTurnOffWhileInHands
Definition
actionturnoffwhileinhands.c:2
ActionTurnOnHeadtorch
Definition
actionturnonheadtorch.c:2
ActionTurnOnWhileInHands
Definition
actionturnonwhileinhands.c:2
Battery9V
Definition
battery9v.c:2
Battery9V::GetEfficiency0To1
float GetEfficiency0To1()
Returns efficiency of this battery. The value is synchronized from server to all clients and is accur...
Definition
battery9v.c:13
Clothing
Definition
armband_colorbase.c:2
Clothing::Headtorch_ColorBase
void Headtorch_ColorBase()
Definition
headtorch_colorbase.c:22
Clothing::CheckParent
void CheckParent()
Definition
headtorch_colorbase.c:39
Clothing::LIGHT_ON_GLASS
static string LIGHT_ON_GLASS
Definition
headtorch_colorbase.c:10
Clothing::m_OnHeadLocalPos
static vector m_OnHeadLocalPos
Definition
headtorch_colorbase.c:15
Clothing::AttachLightOnHead
void AttachLightOnHead(EntityAI person)
Definition
headtorch_colorbase.c:167
Clothing::LIGHT_OFF_GLASS
static string LIGHT_OFF_GLASS
Definition
headtorch_colorbase.c:8
Clothing::GetLightSourceItem
override ItemBase GetLightSourceItem()
Definition
headtorch_colorbase.c:240
Clothing::m_OnHeadLocalOri
static vector m_OnHeadLocalOri
Definition
headtorch_colorbase.c:16
Clothing::LIGHT_ON_GLASS_RED
static string LIGHT_ON_GLASS_RED
Definition
headtorch_colorbase.c:11
Clothing::CreateHeadtorchLight
void CreateHeadtorchLight()
Definition
headtorch_colorbase.c:122
Clothing::LIGHT_OFF_REFLECTOR
static string LIGHT_OFF_REFLECTOR
Definition
headtorch_colorbase.c:9
Clothing::m_OffHeadLightTarget
static string m_OffHeadLightTarget
Definition
headtorch_colorbase.c:18
Clothing::m_OffHeadLightPoint
static string m_OffHeadLightPoint
Definition
headtorch_colorbase.c:17
Clothing::IsLightSource
override bool IsLightSource()
Definition
headtorch_colorbase.c:235
Clothing::OnWorkStop
override void OnWorkStop()
Definition
headtorch_colorbase.c:77
Clothing::m_Light
HeadtorchLight m_Light
Definition
headtorch_colorbase.c:3
Clothing::OnWork
override void OnWork(float consumed_energy)
Definition
headtorch_colorbase.c:93
Clothing::OnWasDetached
override void OnWasDetached(EntityAI parent, int slot_id)
Definition
headtorch_colorbase.c:212
Clothing::OnInvisibleSet
override void OnInvisibleSet(bool invisible)
Definition
headtorch_colorbase.c:245
Clothing::OnWorkStart
override void OnWorkStart()
Definition
headtorch_colorbase.c:56
Clothing::LIGHT_ON_REFLECTOR_RED
static string LIGHT_ON_REFLECTOR_RED
Definition
headtorch_colorbase.c:13
Clothing::OnWasAttached
override void OnWasAttached(EntityAI parent, int slot_id)
Definition
headtorch_colorbase.c:197
Clothing::LIGHT_ON_REFLECTOR
static string LIGHT_ON_REFLECTOR
Definition
headtorch_colorbase.c:12
Clothing::m_Timer
ref Timer m_Timer
Definition
headtorch_colorbase.c:20
Clothing::REFLECTOR_ID
static int REFLECTOR_ID
Definition
headtorch_colorbase.c:5
Clothing::InitGlobalExclusionValues
void InitGlobalExclusionValues()
Definition
headtorch_colorbase.c:33
Clothing::OnLightCreated
void OnLightCreated()
Definition
headtorch_colorbase.c:117
Clothing::GLASS_ID
static int GLASS_ID
Definition
headtorch_colorbase.c:6
Clothing::SetActions
override void SetActions()
Definition
headtorch_colorbase.c:226
EntityAI
Definition
inventoryitem.c:2
Headtorch_Black
Definition
headtorch_black.c:2
InventorySlots
provides access to slot configuration
Definition
inventoryslots.c:6
InventorySlots::GetSlotIdFromString
static proto native int GetSlotIdFromString(string slot_name)
ItemBase
Definition
inventoryitem.c:742
PlayerBase
Definition
playerbaseclient.c:2
ScriptedLightBase
Definition
pointlightbase.c:2
Timer
Definition
dayzplayerimplement.c:39
vector
Definition
enconvert.c:119
g_Game
DayZGame g_Game
Definition
dayzgame.c:3942
Vector
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
CALL_CATEGORY_SYSTEM
const int CALL_CATEGORY_SYSTEM
Definition
tools.c:8
Games
Dayz
scripts
4_world
entities
itembase
clothing
headtorch_colorbase.c
Generated by
1.17.0