saline.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. class SalineMdfr: ModifierBase
  2. {
  3. float m_RegenTime;
  4. override void Init()
  5. {
  6. m_TrackActivatedTime = true;
  7. m_IsPersistent = true;
  8. m_ID = eModifiers.MDF_SALINE;
  9. m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
  10. m_TickIntervalActive = DEFAULT_TICK_TIME_ACTIVE;
  11. m_RegenTime = CalculateRegenTime();
  12. DisableActivateCheck();
  13. }
  14. override bool ActivateCondition(PlayerBase player)
  15. {
  16. return false;
  17. }
  18. override bool DeactivateCondition(PlayerBase player)
  19. {
  20. float attached_time = GetAttachedTime();
  21. if ( attached_time > m_RegenTime )
  22. {
  23. return true;
  24. }
  25. else
  26. {
  27. return false;
  28. }
  29. }
  30. override void OnReconnect(PlayerBase player)
  31. {
  32. OnActivate(player);
  33. }
  34. override void OnActivate(PlayerBase player)
  35. {
  36. player.IncreaseHealingsCount();
  37. /*
  38. if( player.GetNotifiersManager() )
  39. player.GetNotifiersManager().ActivateByType(eNotifiers.NTF_PILLS);
  40. */
  41. }
  42. override void OnDeactivate(PlayerBase player)
  43. {
  44. player.DecreaseHealingsCount();
  45. /*
  46. if( player.GetNotifiersManager() )
  47. player.GetNotifiersManager().DeactivateByType(eNotifiers.NTF_PILLS);
  48. */
  49. }
  50. override void OnTick(PlayerBase player, float deltaT)
  51. {
  52. player.AddHealth("", "Blood", PlayerConstants.SALINE_BLOOD_REGEN_PER_SEC * deltaT);
  53. player.GetStatWater().Add( PlayerConstants.SALINE_WATER_REGEN_PER_SEC * deltaT );
  54. }
  55. float CalculateRegenTime()
  56. {
  57. float regen_time = PlayerConstants.SALINE_LIQUID_AMOUNT / PlayerConstants.SALINE_BLOOD_REGEN_PER_SEC;
  58. return regen_time;
  59. }
  60. };