12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- class HeatComfortMdfr: ModifierBase
- {
- override void Init()
- {
- m_TrackActivatedTime = false;
- m_ID = eModifiers.MDF_TEMPERATURE;
- m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
- m_TickIntervalActive = DEFAULT_TICK_TIME_ACTIVE;
- DisableDeactivateCheck();
- }
- override bool ActivateCondition(PlayerBase player)
- {
- return true;
- }
- override bool DeactivateCondition(PlayerBase player)
- {
- return false;
- }
- override void OnReconnect(PlayerBase player)
- {
- }
-
- override string GetDebugText()
- {
- return m_Player.GetStatHeatComfort().Get().ToString();
- }
-
- override string GetDebugTextSimple()
- {
- return m_Player.GetStatHeatComfort().Get().ToString();
- }
-
- override void OnTick(PlayerBase player, float deltaT)
- {
- float heat_comfort = player.GetStatHeatComfort().Get();
- float health_loss;
- float value_normalized;
-
- if( heat_comfort > PlayerConstants.WATER_LOSS_THRESHOLD_HC_PLUS_LOW )
- {
- value_normalized = Math.Lerp(PlayerConstants.WATER_LOSS_THRESHOLD_HC_PLUS_LOW, PlayerConstants.WATER_LOSS_THRESHOLD_HC_PLUS_HIGH, heat_comfort);
- value_normalized = Math.Clamp(value_normalized, 0, 1);
- float water_loss = deltaT * Math.Lerp(PlayerConstants.WATER_LOSS_HC_PLUS_LOW, PlayerConstants.WATER_LOSS_HC_PLUS_HIGH, value_normalized);
- player.GetStatWater().Add(-water_loss);
- if( heat_comfort > PlayerConstants.WATER_LOSS_THRESHOLD_HC_PLUS_HIGH )
- {
- value_normalized = Math.Lerp(PlayerConstants.WATER_LOSS_THRESHOLD_HC_PLUS_HIGH, 1.0, heat_comfort);
- value_normalized = Math.Clamp(value_normalized, 0, 1);
- health_loss = deltaT * Math.Lerp(PlayerConstants.HEALTH_LOSS_HC_PLUS_LOW, PlayerConstants.HEALTH_LOSS_HC_PLUS_HIGH, Easing.EaseInQuad(value_normalized));
- }
- }
- if( heat_comfort < PlayerConstants.ENERGY_LOSS_THRESHOLD_HC_MINUS_LOW )
- {
- value_normalized = Math.InverseLerp(PlayerConstants.ENERGY_LOSS_THRESHOLD_HC_MINUS_LOW, PlayerConstants.ENERGY_LOSS_THRESHOLD_HC_MINUS_HIGH, heat_comfort);
- value_normalized = Math.Clamp(value_normalized, 0, 1);
- float energy_loss = deltaT * Math.Lerp(PlayerConstants.ENERGY_LOSS_HC_MINUS_LOW, PlayerConstants.ENERGY_LOSS_HC_MINUS_HIGH, value_normalized);
- player.GetStatEnergy().Add(-energy_loss);
- if( heat_comfort < PlayerConstants.ENERGY_LOSS_THRESHOLD_HC_MINUS_HIGH )
- {
- value_normalized = Math.InverseLerp(PlayerConstants.ENERGY_LOSS_THRESHOLD_HC_MINUS_HIGH, -1.0, heat_comfort);
- value_normalized = Math.Clamp(value_normalized, 0, 1);
- health_loss = deltaT * Math.Lerp(PlayerConstants.HEALTH_LOSS_HC_MINUS_LOW, PlayerConstants.HEALTH_LOSS_HC_MINUS_HIGH, Easing.EaseInQuad(value_normalized));
- }
- }
- if( health_loss != 0 )
- {
- player.AddHealth("","",-health_loss);
- }
- }
- };
|