heatbuffer.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. class HeatBufferMdfr : ModifierBase
  2. {
  3. const int NUMBER_OF_STAGES = 4;
  4. const float STAGE_THRESHOLDS[NUMBER_OF_STAGES] = {0.0, 0.33, 0.66, 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. player.SetTemporaryResistanceToAgent(eAgents.INFLUENZA, 300);
  39. }
  40. override void Tick(float delta_time)
  41. {
  42. super.Tick(delta_time);
  43. m_Value = m_Player.GetStatHeatBuffer().Get() / m_Player.GetStatHeatBuffer().GetMax();
  44. m_Stage = GetHeatBufferStage();
  45. if (m_Stage != m_StageLast)
  46. {
  47. m_Player.ToggleHeatBufferVisibility(m_Stage);
  48. m_StageLast = m_Stage;
  49. }
  50. }
  51. protected int GetHeatBufferStage()
  52. {
  53. if (m_Value > STAGE_THRESHOLDS[0] && m_Value < STAGE_THRESHOLDS[1])
  54. return 1;
  55. else if (m_Value >= STAGE_THRESHOLDS[1] && m_Value < STAGE_THRESHOLDS[2])
  56. return 2;
  57. else if (m_Value >= STAGE_THRESHOLDS[2])
  58. return 3;
  59. return 0;
  60. }
  61. //! DEPRECATED
  62. protected const float HEATBUFFER_SHOW = 25.0;
  63. protected const float HEATBUFFER_HIDE = 20.0;
  64. }