BrainDisease.c
class BrainDiseaseMdfr : ModifierBase
{
static const int AGENT_THRESHOLD_ACTIVATE = 2000;
static const int AGENT_THRESHOLD_DEACTIVATE = 0;
const int SHAKE_INTERVAL_MIN = 1;
const int SHAKE_INTERVAL_MAX = 4;
float m_Time;
float m_ShakeTime;
override void Init()
{
m_TrackActivatedTime = false;
m_AnalyticsStatsEnabled = true;
m_ID = eModifiers.MDF_BRAIN;
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)
{
return (player.GetSingleAgentCount(eAgents.BRAIN) >= AGENT_THRESHOLD_ACTIVATE);
}
override protected void OnActivate(PlayerBase player)
{
player.IncreaseDiseaseCount();
player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_LAUGHTER);
}
override protected void OnDeactivate(PlayerBase player)
{
player.DecreaseDiseaseCount();
}
override protected bool DeactivateCondition(PlayerBase player)
{
return (player.GetSingleAgentCount(eAgents.BRAIN) <= AGENT_THRESHOLD_DEACTIVATE);
}
override protected void OnTick(PlayerBase player, float deltaT)
{
m_Time += deltaT;
float brainAgents = player.GetSingleAgentCountNormalized(eAgents.BRAIN) / 8.0;
float chanceOfLaughter = Math.RandomFloat01();
if (chanceOfLaughter < brainAgents)
player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_LAUGHTER);
if (m_Time >= m_ShakeTime)
{
DayZPlayerSyncJunctures.SendKuruRequest(player, brainAgents);
m_ShakeTime = m_Time + Math.RandomFloat(SHAKE_INTERVAL_MIN, SHAKE_INTERVAL_MAX);
}
}
}