heatbuffer.c 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. class HeatBufferMdfr : ModifierBase
  2. {
  3. const int NUMBER_OF_STAGES = 4;
  4. const float STAGE_THRESHOLDS[NUMBER_OF_STAGES] = {0.0, 0.60, 0.85, 1.0};
  5. protected int m_Stage;
  6. protected int m_StageLast;
  7. protected float m_Value;
  8. override void Init()
  9. {
  10. m_TrackActivatedTime = false;
  11. m_AnalyticsStatsEnabled = true;
  12. m_ID = eModifiers.MDF_HEATBUFFER;
  13. m_TickIntervalInactive = 1;
  14. m_TickIntervalActive = DEFAULT_TICK_TIME_ACTIVE;
  15. }
  16. override bool ActivateCondition(PlayerBase player)
  17. {
  18. m_Value = player.GetStatHeatBuffer().Get() / player.GetStatHeatBuffer().GetMax();
  19. if (m_Value > STAGE_THRESHOLDS[0])
  20. return true;
  21. return false;
  22. }
  23. override bool DeactivateCondition(PlayerBase player)
  24. {
  25. m_Value = player.GetStatHeatBuffer().Get() / player.GetStatHeatBuffer().GetMax();;
  26. if (m_Value <= STAGE_THRESHOLDS[0])
  27. return true;
  28. return false;
  29. }
  30. override void OnActivate(PlayerBase player)
  31. {
  32. player.ToggleHeatBufferVisibility(GetHeatBufferStage());
  33. }
  34. override void OnDeactivate(PlayerBase player)
  35. {
  36. player.ToggleHeatBufferVisibility(GetHeatBufferStage());
  37. //Protection against influenza with duration
  38. if (player.GetTemporaryResistanceToAgent(eAgents.INFLUENZA) < 300)
  39. player.SetTemporaryResistanceToAgent(eAgents.INFLUENZA, 300);
  40. }
  41. override void Tick(float delta_time)
  42. {
  43. super.Tick(delta_time);
  44. m_Value = m_Player.GetStatHeatBuffer().Get() / m_Player.GetStatHeatBuffer().GetMax();
  45. m_Stage = GetHeatBufferStage();
  46. if (m_Stage != m_StageLast)
  47. {
  48. m_Player.ToggleHeatBufferVisibility(m_Stage);
  49. m_StageLast = m_Stage;
  50. }
  51. }
  52. protected int GetHeatBufferStage()
  53. {
  54. if (m_Value > STAGE_THRESHOLDS[0] && m_Value < STAGE_THRESHOLDS[1])
  55. return 1;
  56. else if (m_Value >= STAGE_THRESHOLDS[1] && m_Value < STAGE_THRESHOLDS[2])
  57. return 2;
  58. else if (m_Value >= STAGE_THRESHOLDS[2])
  59. return 3;
  60. return 0;
  61. }
  62. //! DEPRECATED
  63. protected const float HEATBUFFER_SHOW = 25.0;
  64. protected const float HEATBUFFER_HIDE = 20.0;
  65. }