deplete the heat buffer if there is difference in HB capacity (eg.: cloths were removed)
1103 {
1105 {
1107
1111 m_Player.SetHeatBufferDynamicMax(heatBufferMax);
1112
1114
1117 {
1119 heatBuffer.Add(-heatBufferValueCorrection);
1121 }
1122
1123 float increaseRate = 0.0;
1124 float decreaseRate = 0.0;
1125
1126 {
1129
1130 float decreaseRateByHeatBufferStageCoef = 1;
1131
1133 {
1135 switch (
m_Player.GetHeatBufferStage())
1136 {
1137 case 2:
1138 decreaseRateByHeatBufferStageCoef =
Math.
Lerp(
1141 heatBufferMaxInversed,
1142 );
1143 break;
1144 case 1:
1145 decreaseRateByHeatBufferStageCoef =
Math.
Lerp(
1148 heatBufferMaxInversed,
1149 );
1150 break;
1151 }
1152 }
1153 else
1154 {
1156 }
1157
1158 decreaseRate *= decreaseRateByHeatBufferStageCoef;
1159
1162 }
1163
1165 {
1167 {
1169 heatBuffer.Add(-decreaseRate);
1170 else
1172 }
1173 else
1174 {
1176 if (applicableHeatbuffer > 0.0)
1177 heatBuffer.Add(-decreaseRate);
1178 else if (applicableHeatbuffer != 0.0 && !
m_Player.GetModifiersManager().IsModifierActive(
eModifiers.MDF_HEATBUFFER))
1179 heatBuffer.Set(0.0);
1180 }
1181 }
1182 else
1183 {
1185 {
1186 if (applicableHeatbuffer < heatBufferMax)
1187 {
1188 heatBuffer.Add(increaseRate);
1190 }
1191 }
1192 else if (applicableHeatbuffer > 0.0)
1193 heatBuffer.Add(-decreaseRate);
1194 else if (applicableHeatbuffer != 0.0 && !
m_Player.GetModifiersManager().IsModifierActive(
eModifiers.MDF_HEATBUFFER))
1195 heatBuffer.Set(0.0);
1196
1198 }
1199 }
1200 }
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,...