disinfectmdfr.c 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. class DisinfectionMdfr: ModifierBase
  2. {
  3. const int LIFETIME = 100;
  4. //const int EFFECT_TIME = 100;
  5. PluginTransmissionAgents m_PluginTransmissionAgents = PluginTransmissionAgents.Cast(GetPlugin(PluginTransmissionAgents));
  6. float m_WoundAgentInvasibility;
  7. override void Init()
  8. {
  9. m_TrackActivatedTime = true;
  10. m_IsPersistent = true;
  11. m_ID = eModifiers.MDF_DISINFECTION;
  12. m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
  13. m_TickIntervalActive = DEFAULT_TICK_TIME_ACTIVE;
  14. //m_WoundAgentInvasibility = m_PluginTransmissionAgents.GetAgentInvasibility(eAgents.WOUND_AGENT);
  15. DisableActivateCheck();
  16. }
  17. override bool ActivateCondition(PlayerBase player)
  18. {
  19. return false;
  20. }
  21. override void OnReconnect(PlayerBase player)
  22. {
  23. OnActivate( player );
  24. }
  25. override string GetDebugText()
  26. {
  27. return ( LIFETIME - GetAttachedTime() ).ToString();
  28. }
  29. override string GetDebugTextSimple()
  30. {
  31. return ( LIFETIME - GetAttachedTime() ).ToString();
  32. }
  33. override void OnActivate(PlayerBase player)
  34. {
  35. player.IncreaseHealingsCount();
  36. }
  37. override void OnDeactivate(PlayerBase player)
  38. {
  39. player.DecreaseHealingsCount();
  40. if(player.GetModifiersManager().IsModifierActive(eModifiers.MDF_WOUND_INFECTION1))
  41. {
  42. player.m_AgentPool.AddAgent(eAgents.WOUND_AGENT, -10000);
  43. }
  44. }
  45. override bool DeactivateCondition(PlayerBase player)
  46. {
  47. float attached_time = GetAttachedTime();
  48. if ( attached_time >= LIFETIME )
  49. {
  50. return true;
  51. }
  52. else
  53. {
  54. return false;
  55. }
  56. }
  57. override void OnTick(PlayerBase player, float deltaT)
  58. {
  59. if(player.GetModifiersManager().IsModifierActive(eModifiers.MDF_WOUND_INFECTION2))
  60. {
  61. player.m_AgentPool.AddAgent(eAgents.WOUND_AGENT, -m_PluginTransmissionAgents.GetAgentInvasibility(eAgents.WOUND_AGENT) * deltaT);
  62. }
  63. else
  64. {
  65. player.m_AgentPool.AddAgent(eAgents.WOUND_AGENT, -m_PluginTransmissionAgents.GetAgentInvasibility(eAgents.WOUND_AGENT) * 2 * deltaT);
  66. }
  67. }
  68. };