40 {
41 float heatComfortValue = player.GetStatHeatComfort().Get();
42 ThermalBiasHandler thermalBiasHandler = player.GetThermalBiasHandler();
43 float thermalBiasValue = thermalBiasHandler.
Get();
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)