breathvapourmdfr.c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. const int BREATH_VAPOUR_LEVEL_MAX = 3;
  2. class BreathVapourMdfr extends ModifierBase
  3. {
  4. override void Init()
  5. {
  6. m_TrackActivatedTime = false;
  7. m_ID = eModifiers.MDF_BREATH_VAPOUR;
  8. m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
  9. m_TickIntervalActive = 6;
  10. DisableDeactivateCheck();
  11. }
  12. override bool ActivateCondition(PlayerBase player)
  13. {
  14. return true;
  15. }
  16. override bool DeactivateCondition(PlayerBase player)
  17. {
  18. return false;
  19. }
  20. override void OnReconnect(PlayerBase player)
  21. {
  22. }
  23. override string GetDebugText()
  24. {
  25. //return m_Player.GetStatHeatComfort().Get().ToString();
  26. }
  27. override string GetDebugTextSimple()
  28. {
  29. //return m_Player.GetStatHeatComfort().Get().ToString();
  30. }
  31. override void OnTick(PlayerBase player, float deltaT)
  32. {
  33. if( !player.m_Environment.IsTemperatureSet() )
  34. return;
  35. float air_temperature = player.m_Environment.GetTemperature();
  36. int level = 0;//default
  37. if( MiscGameplayFunctions.IsValueInRange( air_temperature, PlayerConstants.BREATH_VAPOUR_THRESHOLD_HIGH, PlayerConstants.BREATH_VAPOUR_THRESHOLD_LOW) )
  38. {
  39. float value = Math.InverseLerp( PlayerConstants.BREATH_VAPOUR_THRESHOLD_LOW, PlayerConstants.BREATH_VAPOUR_THRESHOLD_HIGH,air_temperature);
  40. value = Math.Clamp(value,0,1);
  41. level = Math.Round(Math.Lerp(1,BREATH_VAPOUR_LEVEL_MAX,value));
  42. }
  43. else if(air_temperature < PlayerConstants.BREATH_VAPOUR_THRESHOLD_HIGH)
  44. {
  45. level = BREATH_VAPOUR_LEVEL_MAX;
  46. }
  47. if( level != player.m_BreathVapour )
  48. {
  49. player.m_BreathVapour = level;
  50. player.SetSynchDirty();
  51. }
  52. }
  53. };