hemolyticreaction.c 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. class HemolyticReactionMdfr: ModifierBase
  2. {
  3. private float m_RunningTime;
  4. override void Init()
  5. {
  6. m_TrackActivatedTime = true;
  7. m_AnalyticsStatsEnabled = true;
  8. m_ID = eModifiers.MDF_HEMOLYTIC_REACTION;
  9. m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
  10. m_TickIntervalActive = DEFAULT_TICK_TIME_ACTIVE;
  11. m_IsPersistent = true;
  12. m_RunningTime = CalculateRunTime();
  13. DisableActivateCheck();
  14. }
  15. override bool ActivateCondition(PlayerBase player)
  16. {
  17. return false;
  18. }
  19. override void OnActivate(PlayerBase player)
  20. {
  21. player.IncreaseDiseaseCount();
  22. }
  23. override void OnDeactivate(PlayerBase player)
  24. {
  25. player.DecreaseDiseaseCount();
  26. }
  27. override void OnReconnect(PlayerBase player)
  28. {
  29. OnActivate(player);
  30. }
  31. override bool DeactivateCondition(PlayerBase player)
  32. {
  33. float attached_time = GetAttachedTime();
  34. if(attached_time > m_RunningTime )
  35. {
  36. return true;
  37. }
  38. else
  39. {
  40. return false;
  41. }
  42. }
  43. override void OnTick(PlayerBase player, float deltaT)
  44. {
  45. player.AddHealth("","Blood",-PlayerConstants.HEMOLYTIC_BLOOD_DRAIN_PER_SEC * deltaT);
  46. }
  47. float CalculateRunTime()
  48. {
  49. float time = PlayerConstants.HEMOLYTIC_BLOODLOSS_AMOUNT / PlayerConstants.SALINE_BLOOD_REGEN_PER_SEC;
  50. return time;
  51. }
  52. };