immunesystem.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. class ImmuneSystemMdfr: ModifierBase
  2. {
  3. bool m_HasDisease;
  4. bool m_HasHealings;
  5. override void Init()
  6. {
  7. m_TrackActivatedTime = false;
  8. m_ID = eModifiers.MDF_IMMUNE_SYSTEM;
  9. m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
  10. m_TickIntervalActive = DEFAULT_TICK_TIME_ACTIVE;
  11. DisableDeactivateCheck();
  12. }
  13. override bool ActivateCondition(PlayerBase player)
  14. {
  15. return true;
  16. }
  17. override void OnActivate(PlayerBase player)
  18. {
  19. }
  20. override void OnReconnect(PlayerBase player)
  21. {
  22. }
  23. override bool DeactivateCondition(PlayerBase player)
  24. {
  25. return false;
  26. }
  27. override void OnTick(PlayerBase player, float deltaT)
  28. {
  29. // Debug.Log("ticking immune system", "agent");
  30. float result = player.GetImmunity() * deltaT;
  31. player.ImmuneSystemTick(result, deltaT);
  32. // Debug.Log("result: "+result.ToString(), "agent");
  33. if( m_HasDisease != player.HasDisease() )
  34. {
  35. if(player.HasDisease())
  36. {
  37. if( player.GetNotifiersManager() ) player.GetNotifiersManager().ActivateByType(eNotifiers.NTF_SICK);
  38. }
  39. else
  40. {
  41. if( player.GetNotifiersManager() ) player.GetNotifiersManager().DeactivateByType(eNotifiers.NTF_SICK);
  42. }
  43. m_HasDisease = player.HasDisease();
  44. }
  45. if( m_HasHealings != player.HasHealings() )
  46. {
  47. if( player.HasHealings() )
  48. {
  49. if( player.GetNotifiersManager() )
  50. player.GetNotifiersManager().ActivateByType(eNotifiers.NTF_PILLS);
  51. }
  52. else
  53. {
  54. if( player.GetNotifiersManager() )
  55. player.GetNotifiersManager().DeactivateByType(eNotifiers.NTF_PILLS);
  56. }
  57. m_HasHealings = player.HasHealings();
  58. }
  59. }
  60. };