woundinfection.c 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. class WoundInfectionMdfr : ModifierBase
  2. {
  3. static const int AGENT_THRESHOLD_ACTIVATE = 100;
  4. static const int AGENT_THRESHOLD_DEACTIVATE = 20;
  5. void WoundInfectionMdfr()
  6. {
  7. Error("[ERROR] :: WoundInfectionMdfr is deprecated.");
  8. }
  9. }
  10. class WoundInfectStage1Mdfr : ModifierBase
  11. {
  12. static const int AGENT_THRESHOLD_ACTIVATE = 1;
  13. static const int AGENT_THRESHOLD_DEACTIVATE = 250;
  14. static const int AGENT_THRESHOLD_FEVER = 250;
  15. static const int PAIN_EVENT_INTERVAL_MIN = 18;
  16. static const int PAIN_EVENT_INTERVAL_MAX = 26;
  17. protected float m_NextEvent;
  18. protected float m_Time;
  19. override void Init()
  20. {
  21. m_TrackActivatedTime = false;
  22. m_AnalyticsStatsEnabled = true;
  23. m_ID = eModifiers.MDF_WOUND_INFECTION1;
  24. m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
  25. m_TickIntervalActive = DEFAULT_TICK_TIME_ACTIVE;
  26. m_SyncID = eModifierSyncIDs.MODIFIER_SYNC_WOUND_INFECT_1;
  27. }
  28. override string GetDebugText()
  29. {
  30. return ("Activate threshold: "+AGENT_THRESHOLD_ACTIVATE + "| " +"Deativate threshold: "+AGENT_THRESHOLD_DEACTIVATE);
  31. }
  32. override protected bool ActivateCondition(PlayerBase player)
  33. {
  34. return (player.GetSingleAgentCount(eAgents.WOUND_AGENT) >= AGENT_THRESHOLD_ACTIVATE && !player.GetModifiersManager().IsModifierActive(eModifiers.MDF_WOUND_INFECTION2));
  35. }
  36. override protected void OnActivate(PlayerBase player)
  37. {
  38. player.IncreaseDiseaseCount();
  39. player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_PAIN_LIGHT);
  40. m_NextEvent = Math.RandomFloatInclusive(PAIN_EVENT_INTERVAL_MIN, PAIN_EVENT_INTERVAL_MAX);
  41. }
  42. override protected void OnDeactivate(PlayerBase player)
  43. {
  44. player.DecreaseDiseaseCount();
  45. }
  46. override protected bool DeactivateCondition(PlayerBase player)
  47. {
  48. return !ActivateCondition(player);
  49. }
  50. override protected void OnTick(PlayerBase player, float deltaT)
  51. {
  52. m_Time += deltaT;
  53. if (m_Time >= m_NextEvent)
  54. {
  55. player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_PAIN_LIGHT);
  56. m_Time = 0;
  57. m_NextEvent = Math.RandomFloatInclusive(PAIN_EVENT_INTERVAL_MIN, PAIN_EVENT_INTERVAL_MAX);
  58. }
  59. }
  60. }