DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ShockDamage.c
См. документацию.
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");
52 value = Math.Clamp(value,0,1);
54 float damage = -dmg * deltaT;
55 player.AddHealth("","Shock", damage);
56 //PrintString(damage.ToString());
57 }
58};
DayZGame g_Game
Определения DayZGame.c:3868
int m_ID
ID of effect, given by SEffectManager when registered (automatically done when playing through it)
Определения Effect.c:49
bool m_TrackActivatedTime
overall time this modifier was active
Определения ModifierBase.c:14
float m_TickIntervalActive
Определения ModifierBase.c:18
float m_TickIntervalInactive
Определения ModifierBase.c:17
const int DEFAULT_TICK_TIME_INACTIVE
Определения ModifiersManager.c:29
Определения EnMath.c:7
Определения BreathVapourMdfr.c:4
Определения PlayerBaseClient.c:2
static const float SHOCK_DAMAGE_BLOOD_THRESHOLD_LOW
Определения PlayerConstants.c:162
static const float SHOCK_DAMAGE_BLOOD_THRESHOLD_HIGH
Определения PlayerConstants.c:161
static const float SHOCK_DAMAGE_HIGH
Определения PlayerConstants.c:164
static const float SHOCK_DAMAGE_LOW
Определения PlayerConstants.c:165
Определения PlayerConstants.c:2
override bool ActivateCondition(PlayerBase player)
Определения ShockDamage.c:24
const int UNCONSIOUSS_COOLDOWN_MAX_TIME
Определения ShockDamage.c:5
override void OnTick(PlayerBase player, float deltaT)
Определения ShockDamage.c:48
override void Init()
Определения ShockDamage.c:6
override void OnReconnect(PlayerBase player)
Определения ShockDamage.c:19
override void OnActivate(PlayerBase player)
Определения ShockDamage.c:14
override bool DeactivateCondition(PlayerBase player)
Определения ShockDamage.c:42
const int UNCONSIOUSS_COOLDOWN_TIME
Определения ShockDamage.c:3
const int UNCONSIOUSS_COOLDOWN_MIN_TIME
Определения ShockDamage.c:4
Определения ShockDamage.c:2
eModifiers
Определения eModifiers.c:2
static proto float Lerp(float a, float b, float time)
Linearly interpolates between 'a' and 'b' given 'time'.
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'.
static proto float InverseLerp(float a, float b, float value)
Calculates the linear value that produces the interpolant value within the range [a,...