Pneumonia.c
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);
}
}
};