Contamination2.c
class ContaminationStage2Mdfr: ModifierBase
{
static const int AGENT_THRESHOLD_ACTIVATE = 100;
static const int AGENT_THRESHOLD_DEACTIVATE = 400;
static const int EVENT_1_INTERVAL_MIN = 20;
static const int EVENT_1_INTERVAL_MAX = 40;
protected float m_NextEvent1;
protected float m_Time1;
static const int EVENT_2_INTERVAL_MIN = 200;
static const int EVENT_2_INTERVAL_MAX = 400;
protected float m_NextEvent2;
protected float m_Time2;
override void Init()
{
m_AnalyticsStatsEnabled = true;
m_ID = eModifiers.MDF_CONTAMINATION2;
m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
m_TickIntervalActive = DEFAULT_TICK_TIME_ACTIVE;
m_SyncID = eModifierSyncIDs.MODIFIER_SYNC_CONTAMINATION2;
}
override string GetDebugText()
{
return ("Activate threshold: "+AGENT_THRESHOLD_ACTIVATE + "| " +"Deativate threshold: "+AGENT_THRESHOLD_DEACTIVATE);
}
override protected bool ActivateCondition(PlayerBase player)
{
return ( player.GetSingleAgentCount(eAgents.CHEMICAL_POISON) >= AGENT_THRESHOLD_ACTIVATE && player.GetSingleAgentCount(eAgents.CHEMICAL_POISON) < AGENT_THRESHOLD_DEACTIVATE);
}
override protected void OnActivate(PlayerBase player)
{
player.IncreaseDiseaseCount();
m_NextEvent1 = Math.RandomFloatInclusive( EVENT_1_INTERVAL_MIN, EVENT_1_INTERVAL_MAX );
m_NextEvent2 = Math.RandomFloatInclusive( EVENT_2_INTERVAL_MIN, EVENT_2_INTERVAL_MAX );
}
override protected void OnDeactivate(PlayerBase player)
{
player.DecreaseDiseaseCount();
}
override protected bool DeactivateCondition(PlayerBase player)
{
return !ActivateCondition(player);
}
override protected void OnTick(PlayerBase player, float deltaT)
{
m_Time1 += deltaT;
m_Time2 += deltaT;
if ( m_Time1 >= m_NextEvent1 )
{
player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_COUGH);
m_Time1 = 0;
m_NextEvent1 = Math.RandomFloatInclusive( EVENT_1_INTERVAL_MIN, EVENT_1_INTERVAL_MAX );
}
if ( m_Time2 >= m_NextEvent2 )
{
player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_VOMIT);
m_Time2 = 0;
m_NextEvent2 = Math.RandomFloatInclusive( EVENT_2_INTERVAL_MIN, EVENT_2_INTERVAL_MAX );
}
}
};