Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
shockdamage.c
Go to the documentation of this file.
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 {
9 m_ID = eModifiers.MDF_SHOCK_DAMAGE;
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};
Definition enmath.c:7
DayZGame g_Game
Definition dayzgame.c:3868
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
bool m_TrackActivatedTime
overall time this modifier was active
float m_TickIntervalActive
float m_TickIntervalInactive
const int DEFAULT_TICK_TIME_INACTIVE
void OnActivate()