1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- class PneumoniaMdfr : ModifierBase
- {
- const int AGENT_THRESHOLD_ACTIVATE = 1150;
- const int AGENT_THRESHOLD_DEACTIVATE = 1100;
-
- const float STAMINA_DEPLETION_MULTIPLIER = 1.3;
- const float STAMINA_RECOVERY_MULTIPLIER = 0.5;
-
- const float HEALTH_LOSS_PNEUMONIA = 0.1;
-
- private const int TEMPORARY_RESISTANCE_TIME = 600;
-
- override void Init()
- {
- m_TrackActivatedTime = false;
- m_AnalyticsStatsEnabled = true;
- m_ID = eModifiers.MDF_PNEUMONIA;
- m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
- m_TickIntervalActive = DEFAULT_TICK_TIME_ACTIVE;
- }
-
- override string GetDebugText()
- {
- return ("Activate threshold: "+AGENT_THRESHOLD_ACTIVATE + "| " +"Deativate threshold: "+AGENT_THRESHOLD_DEACTIVATE);
- }
-
- override protected bool ActivateCondition(PlayerBase player)
- {
- if (player.GetSingleAgentCount(eAgents.INFLUENZA) >= AGENT_THRESHOLD_ACTIVATE)
- return true;
- return false;
- }
- override protected void OnActivate(PlayerBase player)
- {
- player.IncreaseDiseaseCount();
- player.GetStaminaHandler().ActivateRecoveryModifier(EStaminaMultiplierTypes.DISEASE_PNEUMONIA);
- player.GetStaminaHandler().ActivateDepletionModifier(EStaminaMultiplierTypes.DISEASE_PNEUMONIA);
- }
- override protected void OnDeactivate(PlayerBase player)
- {
- player.DecreaseDiseaseCount();
- player.GetStaminaHandler().DeactivateRecoveryModifier(EStaminaMultiplierTypes.DISEASE_PNEUMONIA);
- player.GetStaminaHandler().DeactivateDepletionModifier(EStaminaMultiplierTypes.DISEASE_PNEUMONIA);
- player.SetTemporaryResistanceToAgent(eAgents.INFLUENZA, TEMPORARY_RESISTANCE_TIME);
- }
- override protected bool DeactivateCondition(PlayerBase player)
- {
- return (player.GetSingleAgentCount(eAgents.INFLUENZA) <= AGENT_THRESHOLD_DEACTIVATE);
- }
- override protected void OnTick(PlayerBase player, float deltaT)
- {
- float healthLoss = HEALTH_LOSS_PNEUMONIA * deltaT;
-
- player.AddHealth(-healthLoss);
-
- float heavyBreathChance = player.GetSingleAgentCountNormalized(eAgents.INFLUENZA);
-
- if ( Math.RandomFloat01() < heavyBreathChance / Math.RandomInt(1,15) )
- {
- player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_GASP);
- }
- }
- };
|