contamination3.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. class ContaminationStage3Mdfr: ModifierBase
  2. {
  3. static const int AGENT_THRESHOLD_ACTIVATE = 400;
  4. static const int AGENT_THRESHOLD_DEACTIVATE = AGENT_THRESHOLD_ACTIVATE - 1;
  5. static const int AGENT_THRESHOLD_FEVER = 250;
  6. static const float DAMAGE_PER_SEC = -3;
  7. override void Init()
  8. {
  9. m_AnalyticsStatsEnabled = true;
  10. m_ID = eModifiers.MDF_CONTAMINATION3;
  11. m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
  12. m_TickIntervalActive = DEFAULT_TICK_TIME_ACTIVE_SHORT;
  13. m_SyncID = eModifierSyncIDs.MODIFIER_SYNC_CONTAMINATION2;//using the same sync as stage 2 for now
  14. m_TrackActivatedTime = true;
  15. }
  16. override string GetDebugText()
  17. {
  18. return ("Activate threshold: "+AGENT_THRESHOLD_ACTIVATE + "| " +"Deativate threshold: "+AGENT_THRESHOLD_DEACTIVATE);
  19. }
  20. override protected bool ActivateCondition(PlayerBase player)
  21. {
  22. return ( player.GetSingleAgentCount(eAgents.CHEMICAL_POISON) >= AGENT_THRESHOLD_ACTIVATE );
  23. }
  24. override protected void OnActivate(PlayerBase player)
  25. {
  26. player.IncreaseDiseaseCount();
  27. player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_VOMIT);
  28. }
  29. override protected void OnDeactivate(PlayerBase player)
  30. {
  31. player.DecreaseDiseaseCount();
  32. }
  33. override protected bool DeactivateCondition(PlayerBase player)
  34. {
  35. return !ActivateCondition(player);
  36. }
  37. override protected void OnTick(PlayerBase player, float deltaT)
  38. {
  39. if(GetAttachedTime() > 4 && (!player.GetSymptomManager().GetCurrentPrimaryActiveSymptom() || (player.GetSymptomManager().GetCurrentPrimaryActiveSymptom() && player.GetSymptomManager().GetCurrentPrimaryActiveSymptom().GetType() != SymptomIDs.SYMPTOM_VOMIT)) )
  40. {
  41. player.AddHealth("","Shock", -100);
  42. }
  43. if (player.IsUnconscious())
  44. {
  45. player.AddHealth("","",DAMAGE_PER_SEC * deltaT);
  46. }
  47. }
  48. };