deplete the heat buffer if there is difference in HB capacity (eg.: cloths were removed)
966 {
968 {
970
972 float heatBufferCap = Math.InverseLerp(0.0, GameConstants.ENVIRO_HEATCOMFORT_WEIGHT_SUMMARY, data.m_ClothingHeatComfort);
973 float heatBufferMax = GameConstants.ENVIRO_PLAYER_HEATBUFFER_CAPACITY_MIN + heatBufferCap * (1 - GameConstants.ENVIRO_PLAYER_HEATBUFFER_CAPACITY_MIN);
974 m_Player.SetHeatBufferDynamicMax(heatBufferMax);
975
978 {
979 float heatBufferValueCorrection = GameConstants.ENVIRO_PLAYER_HEATBUFFER_INCREASE / (heatBufferMax * ((-GameConstants.ENVIRO_PLAYER_HEATBUFFER_TEMP_AFFECT * data.m_TargetHeatComfort) + 1 ));
980 m_Player.GetStatHeatBuffer().Add(-heatBufferValueCorrection);
982 }
983
984 float increaseRate = 0.0;
985 float decreaseRate = 0.0;
986
987 {
988 increaseRate = GameConstants.ENVIRO_PLAYER_HEATBUFFER_INCREASE / (heatBufferMax * (( -GameConstants.ENVIRO_PLAYER_HEATBUFFER_TEMP_AFFECT * data.m_TargetHeatComfort) + 1 ));
989 decreaseRate = GameConstants.ENVIRO_PLAYER_HEATBUFFER_DECREASE / (heatBufferMax * (( GameConstants.ENVIRO_PLAYER_HEATBUFFER_TEMP_AFFECT * data.m_TargetHeatComfort) + 1 ));
990
991 float decreaseRateByHeatBufferStageCoef = 1;
992
993 if (heatBufferMax > HeatBufferMdfr.STAGE_THRESHOLDS[1])
994 {
995 float heatBufferMaxInversed = Math.InverseLerp(HeatBufferMdfr.STAGE_THRESHOLDS[1], 1.0, heatBufferMax);
996 switch (
m_Player.GetHeatBufferStage())
997 {
998 case 2:
999 decreaseRateByHeatBufferStageCoef = Math.Lerp(
1000 GameConstants.ENVIRO_PLAYER_HEATBUFFER_STAGE_RATELIMIT[2][0],
1001 GameConstants.ENVIRO_PLAYER_HEATBUFFER_STAGE_RATELIMIT[2][1],
1002 heatBufferMaxInversed,
1003 );
1004 break;
1005 case 1:
1006 decreaseRateByHeatBufferStageCoef = Math.Lerp(
1007 GameConstants.ENVIRO_PLAYER_HEATBUFFER_STAGE_RATELIMIT[1][0],
1008 GameConstants.ENVIRO_PLAYER_HEATBUFFER_STAGE_RATELIMIT[1][1],
1009 heatBufferMaxInversed,
1010 );
1011 break;
1012 }
1013 }
1014 else
1015 {
1016 decreaseRateByHeatBufferStageCoef = GameConstants.ENVIRO_PLAYER_HEATBUFFER_STAGE_RATELIMIT[1][0];
1017 }
1018
1019 decreaseRate *= decreaseRateByHeatBufferStageCoef;
1020
1022 decreaseRate *= GameConstants.ENVIRO_PLAYER_HEATBUFFER_WATEREFFECT *
m_WaterLevel;
1023 }
1024
1026 {
1028 {
1030 m_Player.GetStatHeatBuffer().Add(-decreaseRate);
1031 else
1033 }
1034 else
1035 {
1037 if (applicableHeatbuffer > 0.0)
1038 m_Player.GetStatHeatBuffer().Add(-decreaseRate);
1039 else if (applicableHeatbuffer != 0.0 && !
m_Player.GetModifiersManager().IsModifierActive(
eModifiers.MDF_HEATBUFFER))
1040 m_Player.GetStatHeatBuffer().Set(0.0);
1041 }
1042 }
1043 else
1044 {
1046 {
1047 if (applicableHeatbuffer < heatBufferMax)
1048 {
1049 m_Player.GetStatHeatBuffer().Add(increaseRate);
1051 }
1052 }
1053 else if (applicableHeatbuffer > 0.0)
1054 m_Player.GetStatHeatBuffer().Add(-decreaseRate);
1055 else if (applicableHeatbuffer != 0.0 && !
m_Player.GetModifiersManager().IsModifierActive(
eModifiers.MDF_HEATBUFFER))
1056 m_Player.GetStatHeatBuffer().Set(0.0);
1057
1059 }
1060 }
1061 }
EEnvironmentHeatcomfortBehaviorCategory
int m_HeatComfortBehaviorCategory
float GetApplicableHeatbuffer()
bool m_HasTemperatureSources
float m_UTSAverageTemperature
float m_HeatBufferCapPrevious
reused as state toggle