deplete the heat buffer if there is difference in HB capacity (eg.: cloths were removed)
1106 {
1108 {
1110
1114 m_Player.SetHeatBufferDynamicMax(heatBufferMax);
1115
1117
1120 {
1122 heatBuffer.Add(-heatBufferValueCorrection);
1124 }
1125
1126 float increaseRate = 0.0;
1127 float decreaseRate = 0.0;
1128
1129 {
1132
1133 float decreaseRateByHeatBufferStageCoef = 1;
1134
1136 {
1138 switch (
m_Player.GetHeatBufferStage())
1139 {
1140 case 2:
1141 decreaseRateByHeatBufferStageCoef =
Math.
Lerp(
1144 heatBufferMaxInversed,
1145 );
1146 break;
1147 case 1:
1148 decreaseRateByHeatBufferStageCoef =
Math.
Lerp(
1151 heatBufferMaxInversed,
1152 );
1153 break;
1154 }
1155 }
1156 else
1157 {
1159 }
1160
1161 decreaseRate *= decreaseRateByHeatBufferStageCoef;
1162
1165 }
1166
1168 {
1170 {
1172 heatBuffer.Add(-decreaseRate);
1173 else
1175 }
1176 else
1177 {
1179 if (applicableHeatbuffer > 0.0)
1180 heatBuffer.Add(-decreaseRate);
1181 else if (applicableHeatbuffer != 0.0 && !
m_Player.GetModifiersManager().IsModifierActive(
eModifiers.MDF_HEATBUFFER))
1182 heatBuffer.Set(0.0);
1183 }
1184 }
1185 else
1186 {
1188 {
1189 if (applicableHeatbuffer < heatBufferMax)
1190 {
1191 heatBuffer.Add(increaseRate);
1193 }
1194 }
1195 else if (applicableHeatbuffer > 0.0)
1196 heatBuffer.Add(-decreaseRate);
1197 else if (applicableHeatbuffer != 0.0 && !
m_Player.GetModifiersManager().IsModifierActive(
eModifiers.MDF_HEATBUFFER))
1198 heatBuffer.Set(0.0);
1199
1201 }
1202 }
1203 }
int m_HeatComfortBehaviorCategory
float m_UTSAverageTemperature
float GetApplicableHeatbuffer()
EEnvironmentHeatcomfortBehaviorCategory
Categories that are changing behavior of Heat comfort processing.
float m_HeatBufferCapPrevious
reused as state toggle
bool m_HasTemperatureSources
void PlayerStat(T min, T max, T init, string label, int flags)
const float STAGE_THRESHOLDS[NUMBER_OF_STAGES]
static const float THRESHOLD_HEAT_COMFORT_MINUS_WARNING
const float ENVIRO_PLAYER_HEATBUFFER_CAPACITY_MIN
How much heat buffer change rates are affected by temperature.
const float ENVIRO_PLAYER_HEATBUFFER_WATEREFFECT
impact of enviro temperature on player (lower value = higher, cannot be zero or below!...
static const float ENVIRO_HEATCOMFORT_WEIGHT_SUMMARY
don't forget to update the weights from above if you are adding/removing them
const float ENVIRO_PLAYER_HEATBUFFER_DECREASE
impact of water contact on player's heatbuffer
const float ENVIRO_PLAYER_HEATBUFFER_TEMP_AFFECT
How much heat buffer increases per one enviro tick.
const float ENVIRO_PLAYER_HEATBUFFER_INCREASE
How much heat buffer decreases per one enviro tick.
static ref array< ref TFloatArray > ENVIRO_PLAYER_HEATBUFFER_STAGE_RATELIMIT
Minimal heatbuffer capacity of naked character.
static proto float Lerp(float a, float b, float time)
Linearly interpolates between 'a' and 'b' given 'time'.
static proto float InverseLerp(float a, float b, float value)
Calculates the linear value that produces the interpolant value within the range [a,...