Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
mask.c
Go to the documentation of this file.
1
class
MaskMdfr
:
ModifierBase
2
{
3
const
float
IN_AREA_CONSUME_FILTER_QUANTITY_PER_SEC
= 0.3;
4
const
float
OUT_AREA_CONSUME_FILTER_QUANTITY_PER_SEC
= 0.03;
5
6
const
float
STAMINA_RECOVERY_MODIFIER
= 0.5;
7
const
float
STAMINA_DEPLETION_MODIFIER
= 1.25;
8
9
const
float
LOW_FILTER_SOUND_EVENT_MIN
= 3;
10
const
float
LOW_FILTER_SOUND_EVENT_MAX
= 9;
11
12
const
float
LOW_FILTER_SOUND_THRESHOLD
= 0.2;
//[0..1] , what's the filter quantity between 0 and 1 at which low filter sounds begin playing ?
13
14
float
m_SoundTimeAccu1
;
15
float
m_NextSoundEventTime
;
16
17
override
void
Init
()
18
{
19
m_TrackActivatedTime
=
false
;
20
m_AnalyticsStatsEnabled
=
true
;
21
m_ID
=
eModifiers
.MDF_MASK;
22
m_TickIntervalInactive
=
DEFAULT_TICK_TIME_INACTIVE
;
23
m_TickIntervalActive
=
DEFAULT_TICK_TIME_ACTIVE_SHORT
;
24
}
25
26
override
bool
ActivateCondition
(
PlayerBase
player)
27
{
28
return
MaskBase
.Cast(player.GetInventory().FindAttachment(
InventorySlots
.MASK)) != null;
29
}
30
31
override
bool
DeactivateCondition
(
PlayerBase
player)
32
{
33
return
!
ActivateCondition
( player);
34
}
35
36
override
void
OnTick
(
PlayerBase
player,
float
deltaT)
37
{
38
MaskBase
mask =
MaskBase
.Cast(player.GetInventory().FindAttachment(
InventorySlots
.MASK));
39
40
float
consume_quantity =
OUT_AREA_CONSUME_FILTER_QUANTITY_PER_SEC
;
41
42
bool
inside_area =
m_Manager
.IsModifierActive(
eModifiers
.MDF_AREAEXPOSURE);
43
44
if
(inside_area)
45
{
46
consume_quantity =
IN_AREA_CONSUME_FILTER_QUANTITY_PER_SEC
;
47
}
48
49
if
( mask && !mask.IsDamageDestroyed())
50
{
51
bool
consuming_filter = mask.ConsumeQuantity(consume_quantity * deltaT, player);
52
StaminaSoundHandlerServer.Cast(player.GetPlayerSoundManagerServer().GetHandler(
eSoundHandlers
.STAMINA)).SetStaminaZoneOffset(1);
53
54
if
(mask.HasValidFilter())
55
{
56
player.GetStaminaHandler().ActivateRecoveryModifier(
EStaminaMultiplierTypes
.MASK);
57
player.GetStaminaHandler().ActivateDepletionModifier(
EStaminaMultiplierTypes
.MASK);
58
59
}
60
else
61
{
62
player.GetStaminaHandler().DeactivateRecoveryModifier(
EStaminaMultiplierTypes
.MASK);
63
player.GetStaminaHandler().DeactivateDepletionModifier(
EStaminaMultiplierTypes
.MASK);
64
}
65
HandleSounds
(player, deltaT, mask);
66
}
67
}
68
69
void
HandleSounds
(
PlayerBase
player,
float
deltaT,
MaskBase
mask)
70
{
71
float
filter_quantity_01 = mask.GetFilterQuantity01();
72
73
if
(mask.CanHaveExternalFilter() && !mask.IsExternalFilterAttached())
74
return
;
75
76
if
(filter_quantity_01 >
LOW_FILTER_SOUND_THRESHOLD
)
77
return
;
78
79
float
low_quantity_norm =
Math
.
InverseLerp
(0,
LOW_FILTER_SOUND_THRESHOLD
, filter_quantity_01);
//should give us 0..1 based on normalized quantity between 0 and LOW_FILTER_SOUND_THRESHOLD
80
81
m_SoundTimeAccu1
+= deltaT;
82
if
(
m_SoundTimeAccu1
>=
m_NextSoundEventTime
)
83
{
84
m_NextSoundEventTime
=
Math
.
Lerp
(
LOW_FILTER_SOUND_EVENT_MIN
,
LOW_FILTER_SOUND_EVENT_MAX
,low_quantity_norm);
85
86
EPlayerSoundEventID
event_type =
EPlayerSoundEventID
.STAMINA_LOW_FILTER_UPPER;
87
//under 50% of low filter quantity (not overall filter quantity!!)
88
if
(low_quantity_norm < 0.5)
89
{
90
event_type =
EPlayerSoundEventID
.STAMINA_LOW_FILTER_MID;
91
}
92
if
(low_quantity_norm < 0.25)
93
{
94
event_type =
EPlayerSoundEventID
.STAMINA_LOW_FILTER_LOWER;
95
}
96
player.RequestSoundEventEx(event_type,
false
, EPlayerSoundEventParam.HIGHEST_PRIORITY);
97
m_SoundTimeAccu1
= 0;
98
}
99
}
100
101
override
void
OnReconnect
(
PlayerBase
player)
102
{
103
OnActivate
(player);
104
}
105
106
override
void
OnActivate
(
PlayerBase
player)
107
{
108
//m_NextSoundEventTime = Math.RandomFloat(LOW_FILTER_SOUND_EVENT_MIN, LOW_FILTER_SOUND_EVENT_MAX);
109
}
110
111
override
void
OnDeactivate
(
PlayerBase
player)
112
{
113
StaminaSoundHandlerServer.Cast(player.GetPlayerSoundManagerServer().GetHandler(
eSoundHandlers
.STAMINA)).SetStaminaZoneOffset(0);
114
player.GetStaminaHandler().DeactivateRecoveryModifier(
EStaminaMultiplierTypes
.MASK);
115
player.GetStaminaHandler().DeactivateDepletionModifier(
EStaminaMultiplierTypes
.MASK);
116
}
117
118
119
120
};
InventorySlots
provides access to slot configuration
Definition
inventoryslots.c:6
MaskBase
Definition
airbornemask.c:2
MaskMdfr
Definition
mask.c:2
MaskMdfr::DeactivateCondition
override bool DeactivateCondition(PlayerBase player)
Definition
mask.c:31
MaskMdfr::OnReconnect
override void OnReconnect(PlayerBase player)
Definition
mask.c:101
MaskMdfr::OnActivate
override void OnActivate(PlayerBase player)
Definition
mask.c:106
MaskMdfr::IN_AREA_CONSUME_FILTER_QUANTITY_PER_SEC
const float IN_AREA_CONSUME_FILTER_QUANTITY_PER_SEC
Definition
mask.c:3
MaskMdfr::LOW_FILTER_SOUND_THRESHOLD
const float LOW_FILTER_SOUND_THRESHOLD
Definition
mask.c:12
MaskMdfr::m_NextSoundEventTime
float m_NextSoundEventTime
Definition
mask.c:15
MaskMdfr::HandleSounds
void HandleSounds(PlayerBase player, float deltaT, MaskBase mask)
Definition
mask.c:69
MaskMdfr::STAMINA_DEPLETION_MODIFIER
const float STAMINA_DEPLETION_MODIFIER
Definition
mask.c:7
MaskMdfr::OnTick
override void OnTick(PlayerBase player, float deltaT)
Definition
mask.c:36
MaskMdfr::Init
override void Init()
Definition
mask.c:17
MaskMdfr::ActivateCondition
override bool ActivateCondition(PlayerBase player)
Definition
mask.c:26
MaskMdfr::OnDeactivate
override void OnDeactivate(PlayerBase player)
Definition
mask.c:111
MaskMdfr::STAMINA_RECOVERY_MODIFIER
const float STAMINA_RECOVERY_MODIFIER
Definition
mask.c:6
MaskMdfr::LOW_FILTER_SOUND_EVENT_MIN
const float LOW_FILTER_SOUND_EVENT_MIN
Definition
mask.c:9
MaskMdfr::OUT_AREA_CONSUME_FILTER_QUANTITY_PER_SEC
const float OUT_AREA_CONSUME_FILTER_QUANTITY_PER_SEC
Definition
mask.c:4
MaskMdfr::m_SoundTimeAccu1
float m_SoundTimeAccu1
Definition
mask.c:14
MaskMdfr::LOW_FILTER_SOUND_EVENT_MAX
const float LOW_FILTER_SOUND_EVENT_MAX
Definition
mask.c:10
Math
Definition
enmath.c:7
ModifierBase
Definition
breathvapourmdfr.c:4
PlayerBase
Definition
playerbaseclient.c:2
m_ID
int m_ID
ID of effect, given by SEffectManager when registered (automatically done when playing through it).
Definition
effect.c:51
eModifiers
eModifiers
Definition
emodifiers.c:2
Math::InverseLerp
static proto float InverseLerp(float a, float b, float value)
Calculates the linear value that produces the interpolant value within the range [a,...
Math::Lerp
static proto float Lerp(float a, float b, float time)
Linearly interpolates between 'a' and 'b' given 'time'.
m_TrackActivatedTime
bool m_TrackActivatedTime
overall time this modifier was active
Definition
modifierbase.c:14
m_Manager
ModifiersManager m_Manager
Definition
modifierbase.c:11
m_AnalyticsStatsEnabled
bool m_AnalyticsStatsEnabled
Definition
modifierbase.c:31
m_TickIntervalActive
float m_TickIntervalActive
Definition
modifierbase.c:18
m_TickIntervalInactive
float m_TickIntervalInactive
Definition
modifierbase.c:17
DEFAULT_TICK_TIME_INACTIVE
const int DEFAULT_TICK_TIME_INACTIVE
Definition
modifiersmanager.c:29
DEFAULT_TICK_TIME_ACTIVE_SHORT
const int DEFAULT_TICK_TIME_ACTIVE_SHORT
Definition
modifiersmanager.c:28
EPlayerSoundEventID
EPlayerSoundEventID
Definition
playersoundeventhandler.c:3
eSoundHandlers
eSoundHandlers
Definition
playersoundmanager.c:5
EStaminaMultiplierTypes
EStaminaMultiplierTypes
Definition
staminahandler.c:2
OnActivate
void OnActivate()
Definition
trap_landmine.c:67
Games
Dayz
scripts
4_world
classes
playermodifiers
modifiers
mask.c
Generated by
1.17.0