DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ OnTick()

override void HeatComfortMdfr::OnTick ( PlayerBase player,
float deltaT )
inlineprivate

direct health loss handling

Thermal Bias value feeding (based on HeatStroke stages)

keep the value at 0.0 if we are bellow the positive yellow HC

См. определение в файле HeatComfortMdfr.c строка 39

40 {
41 float heatComfortValue = player.GetStatHeatComfort().Get();
42 ThermalBiasHandler thermalBiasHandler = player.GetThermalBiasHandler();
43 float thermalBiasValue = thermalBiasHandler.Get();
44 PlayerStat<float> waterStat = player.GetStatWater();
45 float waterValue = waterStat.Get();
46 float valueNormalized;
47
48 if (heatComfortValue > PlayerConstants.WATER_LOSS_THRESHOLD_HC_PLUS_LOW)
49 {
50 valueNormalized = Math.Lerp(PlayerConstants.WATER_LOSS_THRESHOLD_HC_PLUS_LOW, PlayerConstants.WATER_LOSS_THRESHOLD_HC_PLUS_HIGH, heatComfortValue);
51 valueNormalized = Math.Clamp(valueNormalized, 0, 1);
52 float waterLoss = deltaT * Math.Lerp(PlayerConstants.WATER_LOSS_HC_PLUS_LOW, PlayerConstants.WATER_LOSS_HC_PLUS_HIGH, valueNormalized);
53 waterStat.Add(-waterLoss);
54 }
55 if (heatComfortValue < PlayerConstants.ENERGY_LOSS_THRESHOLD_HC_MINUS_LOW)
56 {
57 valueNormalized = Math.InverseLerp(PlayerConstants.ENERGY_LOSS_THRESHOLD_HC_MINUS_LOW, PlayerConstants.ENERGY_LOSS_THRESHOLD_HC_MINUS_HIGH, heatComfortValue);
58 valueNormalized = Math.Clamp(valueNormalized, 0, 1);
59 float energyLoss = deltaT * Math.Lerp(PlayerConstants.ENERGY_LOSS_HC_MINUS_LOW, PlayerConstants.ENERGY_LOSS_HC_MINUS_HIGH, valueNormalized);
60 player.GetStatEnergy().Add(-energyLoss);
61
62 if(heatComfortValue < PlayerConstants.ENERGY_LOSS_THRESHOLD_HC_MINUS_HIGH)
63 {
64 valueNormalized = Math.InverseLerp(PlayerConstants.ENERGY_LOSS_THRESHOLD_HC_MINUS_HIGH, -1.0, heatComfortValue);
65 valueNormalized = Math.Clamp(valueNormalized, 0, 1);
66
67 float healthLoss = deltaT * Math.Lerp(PlayerConstants.HEALTH_LOSS_HC_MINUS_LOW, PlayerConstants.HEALTH_LOSS_HC_MINUS_HIGH, Easing.EaseInQuad(valueNormalized));
69 if (healthLoss != 0.0)
70 player.AddHealth("", "", -healthLoss);
71 }
72 }
73
75 if (heatComfortValue > PlayerConstants.THRESHOLD_HEAT_COMFORT_PLUS_EMPTY)
76 {
77 thermalBiasHandler.Add(PlayerConstants.THERMAL_BIAS_POSITIVE_HC_HIGH_INCREMENT * deltaT);
78 }
79 else if (heatComfortValue > PlayerConstants.THRESHOLD_HEAT_COMFORT_PLUS_CRITICAL)
80 {
81 thermalBiasHandler.Add(PlayerConstants.THERMAL_BIAS_POSITIVE_HC_MEDIUM_INCREMENT * deltaT);
82 }
83
84 if (heatComfortValue > PlayerConstants.THRESHOLD_HEAT_COMFORT_PLUS_WARNING)
85 {
86 if (waterValue < PlayerConstants.SL_WATER_NORMAL && !player.IsUnconscious())
87 {
88 if (thermalBiasValue > HeatStrokeMdfr.STAGE_THRESHOLDS[3])
89 thermalBiasHandler.Add(PlayerConstants.THERMAL_BIAS_POSITIVE_HC_HIGH_INCREMENT * deltaT);
90 else if (thermalBiasValue >= HeatStrokeMdfr.STAGE_THRESHOLDS[2])
91 thermalBiasHandler.Add(PlayerConstants.THERMAL_BIAS_POSITIVE_HC_MEDIUM_INCREMENT * deltaT);
92 else
93 thermalBiasHandler.Add(PlayerConstants.THERMAL_BIAS_POSITIVE_HC_LOW_INCREMENT * deltaT);
94 }
95 else if (waterValue < PlayerConstants.SL_WATER_HIGH && !player.IsUnconscious())
96 {
97 if (thermalBiasValue < HeatStrokeMdfr.STAGE_THRESHOLDS[1])
98 {
99 thermalBiasHandler.Add(PlayerConstants.THERMAL_BIAS_POSITIVE_HC_LOW_INCREMENT * deltaT);
100 }
101 else
102 thermalBiasHandler.Add(-PlayerConstants.THERMAL_BIAS_POSITIVE_HC_DECREMENT * deltaT);
103 }
104 }
105 else
106 {
108 thermalBiasHandler.Add(-PlayerConstants.THERMAL_BIAS_POSITIVE_HC_DECREMENT * deltaT);
109 if (thermalBiasValue <= 0.0)
110 thermalBiasHandler.Set(0.0);
111 }
112 }
void PlayerStat(T min, T max, T init, string label, int flags)
Определения PlayerStatBase.c:43
void Set(float value)
Определения ThermalBiasHandler.c:50
float Get()
Определения ThermalBiasHandler.c:31
void Add(float value)
Определения ThermalBiasHandler.c:40

Перекрестные ссылки ThermalBiasHandler::Add(), Math::Clamp(), Easing::EaseInQuad(), PlayerConstants::ENERGY_LOSS_HC_MINUS_HIGH, PlayerConstants::ENERGY_LOSS_HC_MINUS_LOW, PlayerConstants::ENERGY_LOSS_THRESHOLD_HC_MINUS_HIGH, PlayerConstants::ENERGY_LOSS_THRESHOLD_HC_MINUS_LOW, ThermalBiasHandler::Get(), PlayerConstants::HEALTH_LOSS_HC_MINUS_HIGH, PlayerConstants::HEALTH_LOSS_HC_MINUS_LOW, Math::InverseLerp(), Math::Lerp(), PlayerStat(), ThermalBiasHandler::Set(), PlayerConstants::SL_WATER_HIGH, PlayerConstants::SL_WATER_NORMAL, HeatStrokeMdfr::STAGE_THRESHOLDS, PlayerConstants::THERMAL_BIAS_POSITIVE_HC_DECREMENT, PlayerConstants::THERMAL_BIAS_POSITIVE_HC_HIGH_INCREMENT, PlayerConstants::THERMAL_BIAS_POSITIVE_HC_LOW_INCREMENT, PlayerConstants::THERMAL_BIAS_POSITIVE_HC_MEDIUM_INCREMENT, PlayerConstants::THRESHOLD_HEAT_COMFORT_PLUS_CRITICAL, PlayerConstants::THRESHOLD_HEAT_COMFORT_PLUS_EMPTY, PlayerConstants::THRESHOLD_HEAT_COMFORT_PLUS_WARNING, PlayerConstants::WATER_LOSS_HC_PLUS_HIGH, PlayerConstants::WATER_LOSS_HC_PLUS_LOW, PlayerConstants::WATER_LOSS_THRESHOLD_HC_PLUS_HIGH и PlayerConstants::WATER_LOSS_THRESHOLD_HC_PLUS_LOW.