DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
HeatComfortMdfr.c
Go to the documentation of this file.
2{
3 override void Init()
4 {
6 m_ID = eModifiers.MDF_TEMPERATURE;
10 }
11
12 override bool ActivateCondition(PlayerBase player)
13 {
14 return true;
15 }
16
17 override bool DeactivateCondition(PlayerBase player)
18 {
19 return false;
20 }
21
22 override void OnReconnect(PlayerBase player)
23 {
24
25 }
26
27 override string GetDebugText()
28 {
29 return m_Player.GetStatHeatComfort().Get().ToString();
30 }
31
32 override string GetDebugTextSimple()
33 {
34 return m_Player.GetStatHeatComfort().Get().ToString();
35 }
36
37
38 override void OnTick(PlayerBase player, float deltaT)
39 {
40 float heat_comfort = player.GetStatHeatComfort().Get();
41 float health_loss;
42 float value_normalized;
43
45 {
47 value_normalized = Math.Clamp(value_normalized, 0, 1);
48 float water_loss = deltaT * Math.Lerp(PlayerConstants.WATER_LOSS_HC_PLUS_LOW, PlayerConstants.WATER_LOSS_HC_PLUS_HIGH, value_normalized);
49 player.GetStatWater().Add(-water_loss);
50
52 {
53 value_normalized = Math.Lerp(PlayerConstants.WATER_LOSS_THRESHOLD_HC_PLUS_HIGH, 1.0, heat_comfort);
54 value_normalized = Math.Clamp(value_normalized, 0, 1);
56 }
57 }
59 {
61 value_normalized = Math.Clamp(value_normalized, 0, 1);
62 float energy_loss = deltaT * Math.Lerp(PlayerConstants.ENERGY_LOSS_HC_MINUS_LOW, PlayerConstants.ENERGY_LOSS_HC_MINUS_HIGH, value_normalized);
63 player.GetStatEnergy().Add(-energy_loss);
64
66 {
67 value_normalized = Math.InverseLerp(PlayerConstants.ENERGY_LOSS_THRESHOLD_HC_MINUS_HIGH, -1.0, heat_comfort);
68 value_normalized = Math.Clamp(value_normalized, 0, 1);
70 }
71 }
72
73 if( health_loss != 0 )
74 {
75 player.AddHealth("","",-health_loss);
76 }
77 }
78};
79
protected int m_ID
ID of effect, given by SEffectManager when registered (automatically done when playing through it)
Definition Effect.c:49
DayZPlayer m_Player
Definition Hand_Events.c:42
bool m_TrackActivatedTime
void DisableDeactivateCheck()
float m_TickIntervalActive
float m_TickIntervalInactive
const int DEFAULT_TICK_TIME_INACTIVE
const int DEFAULT_TICK_TIME_ACTIVE
override bool DeactivateCondition(PlayerBase player)
override void OnReconnect(PlayerBase player)
override string GetDebugText()
override string GetDebugTextSimple()
override void OnTick(PlayerBase player, float deltaT)
override void Init()
override bool ActivateCondition(PlayerBase player)
Definition EnMath.c:7
static const float WATER_LOSS_THRESHOLD_HC_PLUS_LOW
static const float HEALTH_LOSS_HC_MINUS_LOW
static const float ENERGY_LOSS_THRESHOLD_HC_MINUS_HIGH
static const float ENERGY_LOSS_THRESHOLD_HC_MINUS_LOW
static const float HEALTH_LOSS_HC_MINUS_HIGH
static const float WATER_LOSS_THRESHOLD_HC_PLUS_HIGH
static const float WATER_LOSS_HC_PLUS_HIGH
static const float WATER_LOSS_HC_PLUS_LOW
static const float ENERGY_LOSS_HC_MINUS_HIGH
static const float ENERGY_LOSS_HC_MINUS_LOW
static const float HEALTH_LOSS_HC_PLUS_LOW
static const float HEALTH_LOSS_HC_PLUS_HIGH
eModifiers
Definition eModifiers.c:2
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,...
static proto float Lerp(float a, float b, float time)
Linearly interpolates between 'a' and 'b' given 'time'.