CharcoalMdfr.c
class CharcoalMdfr: ModifierBase
{
float m_Killrate;
const int CHARCOAL_LIFETIME = 300;
const int CHARCOAL_EFFECT_TIME = 100;
override void Init()
{
m_TrackActivatedTime = true;
m_AnalyticsStatsEnabled = true;
m_IsPersistent = true;
m_ID = eModifiers.MDF_CHARCOAL;
m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
m_TickIntervalActive = 3;
m_Killrate = 2.85; // # of killed agents per sec
DisableActivateCheck();
}
override bool ActivateCondition(PlayerBase player)
{
return false;
}
override void OnReconnect(PlayerBase player)
{
OnActivate( player );
}
/*
override string GetDebugText()
{
string text;
float time_till_effective = CHARCOAL_LIFETIME - CHARCOAL_EFFECT_TIME - GetAttachedTime();
text = "time till effective: " + time_till_effective.ToString() + "\n";
if(time_till_effective > 0)
text += "killing agents:" + "NO";
else
text += "killing agents:" + "YES";
return text;
}
*/
override string GetDebugTextSimple()
{
return ( (int)(CHARCOAL_LIFETIME - GetAttachedTime()) ).ToString() + " | " + (((int)(CHARCOAL_LIFETIME - CHARCOAL_EFFECT_TIME - GetAttachedTime())) * -1).ToString();
}
override void OnActivate(PlayerBase player)
{
player.IncreaseHealingsCount();
}
override void OnDeactivate(PlayerBase player)
{
player.DecreaseHealingsCount();
}
override bool DeactivateCondition(PlayerBase player)
{
float attached_time = GetAttachedTime();
if ( attached_time >= CHARCOAL_LIFETIME )
{
return true;
}
else
{
return false;
}
}
override void OnTick(PlayerBase player, float deltaT)
{
if ( GetAttachedTime() > ( CHARCOAL_LIFETIME - CHARCOAL_EFFECT_TIME ) )
{
player.m_AgentPool.AddAgent(eAgents.SALMONELLA, -m_Killrate * deltaT);
}
}
};