fatigue.c 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. class FatigueMdfr: ModifierBase
  2. {
  3. private float m_Time;
  4. private float m_NextEvent;
  5. static const float FATIGUE_EVENT_INTERVAL_MIN = 5;
  6. static const float FATIGUE_EVENT_INTERVAL_MAX = 12;
  7. static const float STAMINA_RECOVERY_MULTIPLIER = 0.33;
  8. static const float STAMINA_DEPLETION_MULTIPLIER = 1.33;
  9. override void Init()
  10. {
  11. m_TrackActivatedTime = false;
  12. m_AnalyticsStatsEnabled = true;
  13. m_ID = eModifiers.MDF_FATIGUE;
  14. m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE_LONG;
  15. m_TickIntervalActive = DEFAULT_TICK_TIME_ACTIVE;
  16. }
  17. override bool ActivateCondition(PlayerBase player)
  18. {
  19. return (player.GetModifiersManager().IsModifierActive(eModifiers.MDF_WOUND_INFECTION1) || player.GetModifiersManager().IsModifierActive(eModifiers.MDF_WOUND_INFECTION2));
  20. }
  21. override void OnActivate(PlayerBase player)
  22. {
  23. if (player.m_NotifiersManager)
  24. player.m_NotifiersManager.ActivateByType(eNotifiers.NTF_FEVERISH);
  25. player.GetStaminaHandler().ActivateRecoveryModifier(EStaminaMultiplierTypes.FATIGUE);
  26. player.GetStaminaHandler().ActivateDepletionModifier(EStaminaMultiplierTypes.FATIGUE);
  27. }
  28. override void OnReconnect(PlayerBase player)
  29. {
  30. OnActivate(player);
  31. }
  32. override void OnDeactivate(PlayerBase player)
  33. {
  34. player.GetStaminaHandler().DeactivateRecoveryModifier(EStaminaMultiplierTypes.FATIGUE);
  35. player.GetStaminaHandler().DeactivateDepletionModifier(EStaminaMultiplierTypes.FATIGUE);
  36. }
  37. override bool DeactivateCondition(PlayerBase player)
  38. {
  39. return !ActivateCondition(player);
  40. }
  41. }