Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
shockdamage.c
Go to the documentation of this file.
1
class
ShockDamageMdfr
:
ModifierBase
2
{
3
const
int
UNCONSIOUSS_COOLDOWN_TIME
= 60;
//in s
4
const
int
UNCONSIOUSS_COOLDOWN_MIN_TIME
= 90000;
//in miliseconds
5
const
int
UNCONSIOUSS_COOLDOWN_MAX_TIME
= 150000;
//in miliseconds
6
override
void
Init
()
7
{
8
m_TrackActivatedTime
=
false
;
9
m_ID
=
eModifiers
.MDF_SHOCK_DAMAGE;
10
m_TickIntervalInactive
=
DEFAULT_TICK_TIME_INACTIVE
;
11
m_TickIntervalActive
= 0.5;
12
}
13
14
override
void
OnActivate
(
PlayerBase
player)
15
{
16
17
}
18
19
override
void
OnReconnect
(
PlayerBase
player)
20
{
21
22
}
23
24
override
bool
ActivateCondition
(
PlayerBase
player)
25
{
26
if
( !player.IsUnconscious() && player.GetHealth(
""
,
"Blood"
) <=
PlayerConstants
.
SHOCK_DAMAGE_BLOOD_THRESHOLD_HIGH
)
27
{
28
float
energyNormalized = player.GetStatEnergy().Get() / player.GetStatEnergy().GetMax();
29
float
waterNormalized = player.GetStatWater().Get() / player.GetStatEnergy().GetMax();
30
float
averageUnconsciousTime = (energyNormalized + waterNormalized) / 2;
31
32
if
(
g_Game
.GetTime() > (player.m_UnconsciousEndTime +
Math
.
Lerp
(
UNCONSIOUSS_COOLDOWN_MIN_TIME
,
UNCONSIOUSS_COOLDOWN_MAX_TIME
, averageUnconsciousTime)) )
33
{
34
return
true
;
35
}
36
}
37
38
return
false
;
39
40
}
41
42
override
bool
DeactivateCondition
(
PlayerBase
player)
43
{
44
return
!
ActivateCondition
(player);
45
}
46
// ------------------------------------------------------------------------------
47
48
override
void
OnTick
(
PlayerBase
player,
float
deltaT)
49
{
50
float
blood = player.GetHealth(
""
,
"Blood"
);
51
float
value =
Math
.
InverseLerp
(
PlayerConstants
.
SHOCK_DAMAGE_BLOOD_THRESHOLD_HIGH
,
PlayerConstants
.
SHOCK_DAMAGE_BLOOD_THRESHOLD_LOW
, blood );
52
value =
Math
.
Clamp
(value,0,1);
53
float
dmg =
Math
.
Lerp
(
PlayerConstants
.
SHOCK_DAMAGE_HIGH
,
PlayerConstants
.
SHOCK_DAMAGE_LOW
, value);
54
float
damage = -dmg * deltaT;
55
player.AddHealth(
""
,
"Shock"
, damage);
56
//PrintString(damage.ToString());
57
}
58
};
Math
Definition
enmath.c:7
ModifierBase
Definition
breathvapourmdfr.c:4
PlayerBase
Definition
playerbaseclient.c:2
PlayerConstants
Definition
playerconstants.c:2
PlayerConstants::SHOCK_DAMAGE_LOW
static const float SHOCK_DAMAGE_LOW
Definition
playerconstants.c:165
PlayerConstants::SHOCK_DAMAGE_BLOOD_THRESHOLD_HIGH
static const float SHOCK_DAMAGE_BLOOD_THRESHOLD_HIGH
Definition
playerconstants.c:161
PlayerConstants::SHOCK_DAMAGE_BLOOD_THRESHOLD_LOW
static const float SHOCK_DAMAGE_BLOOD_THRESHOLD_LOW
Definition
playerconstants.c:162
PlayerConstants::SHOCK_DAMAGE_HIGH
static const float SHOCK_DAMAGE_HIGH
Definition
playerconstants.c:164
ShockDamageMdfr
Definition
shockdamage.c:2
ShockDamageMdfr::DeactivateCondition
override bool DeactivateCondition(PlayerBase player)
Definition
shockdamage.c:42
ShockDamageMdfr::OnReconnect
override void OnReconnect(PlayerBase player)
Definition
shockdamage.c:19
ShockDamageMdfr::OnActivate
override void OnActivate(PlayerBase player)
Definition
shockdamage.c:14
ShockDamageMdfr::UNCONSIOUSS_COOLDOWN_TIME
const int UNCONSIOUSS_COOLDOWN_TIME
Definition
shockdamage.c:3
ShockDamageMdfr::OnTick
override void OnTick(PlayerBase player, float deltaT)
Definition
shockdamage.c:48
ShockDamageMdfr::Init
override void Init()
Definition
shockdamage.c:6
ShockDamageMdfr::ActivateCondition
override bool ActivateCondition(PlayerBase player)
Definition
shockdamage.c:24
ShockDamageMdfr::UNCONSIOUSS_COOLDOWN_MIN_TIME
const int UNCONSIOUSS_COOLDOWN_MIN_TIME
Definition
shockdamage.c:4
ShockDamageMdfr::UNCONSIOUSS_COOLDOWN_MAX_TIME
const int UNCONSIOUSS_COOLDOWN_MAX_TIME
Definition
shockdamage.c:5
g_Game
DayZGame g_Game
Definition
dayzgame.c:3942
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::Clamp
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.
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_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
Games
Dayz
scripts
4_world
classes
playermodifiers
modifiers
shockdamage.c
Generated by
1.17.0