DIFF

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);
		}
	}
};