DIFF

DisinfectMdfr.c

class DisinfectionMdfr: ModifierBase
{
	const int LIFETIME = 100;
	//const int EFFECT_TIME = 100;
	PluginTransmissionAgents m_PluginTransmissionAgents = PluginTransmissionAgents.Cast(GetPlugin(PluginTransmissionAgents));
	float m_WoundAgentInvasibility;
	override void Init()
	{
		m_TrackActivatedTime = true;
		m_IsPersistent = true;
		m_ID 					= eModifiers.MDF_DISINFECTION;
		m_TickIntervalInactive 	= DEFAULT_TICK_TIME_INACTIVE;
		m_TickIntervalActive 	= DEFAULT_TICK_TIME_ACTIVE;
		//m_WoundAgentInvasibility = m_PluginTransmissionAgents.GetAgentInvasibility(eAgents.WOUND_AGENT);
		DisableActivateCheck();
	}

	override bool ActivateCondition(PlayerBase player)
	{
		return false;
	}
	
	override void OnReconnect(PlayerBase player)
	{
		OnActivate( player );
	}
	
	override string GetDebugText()
	{
		return ( LIFETIME - GetAttachedTime() ).ToString();
	}
	
	override string GetDebugTextSimple()
	{
		return ( LIFETIME - GetAttachedTime() ).ToString();
	}

	
	override void OnActivate(PlayerBase player)
	{
		player.IncreaseHealingsCount();

	}
	
	override void OnDeactivate(PlayerBase player)
	{
		player.DecreaseHealingsCount();
		
		if(player.GetModifiersManager().IsModifierActive(eModifiers.MDF_WOUND_INFECTION1))
		{
			player.m_AgentPool.AddAgent(eAgents.WOUND_AGENT, -10000);
		}

	}
	
	override bool DeactivateCondition(PlayerBase player)
	{
		float attached_time = GetAttachedTime();
		
		if ( attached_time >= LIFETIME )
		{
			return true;
		}
		else
		{
			return false;
		}
	}

	override void OnTick(PlayerBase player, float deltaT)
	{
		if(player.GetModifiersManager().IsModifierActive(eModifiers.MDF_WOUND_INFECTION2))
		{
			player.m_AgentPool.AddAgent(eAgents.WOUND_AGENT, -m_PluginTransmissionAgents.GetAgentInvasibility(eAgents.WOUND_AGENT) * deltaT);
		}
		else
		{
			player.m_AgentPool.AddAgent(eAgents.WOUND_AGENT, -m_PluginTransmissionAgents.GetAgentInvasibility(eAgents.WOUND_AGENT) * 2 * deltaT);
		}
	}
};