DIFF

Fatigue.c

class FatigueMdfr: ModifierBase
{	
	private float m_Time;
	private float m_NextEvent;
	
	static const float FATIGUE_EVENT_INTERVAL_MIN 	= 5;
	static const float FATIGUE_EVENT_INTERVAL_MAX 	= 12;
	static const float STAMINA_RECOVERY_MULTIPLIER 	= 0.33;
	static const float STAMINA_DEPLETION_MULTIPLIER = 1.33;
	
	override void Init()
	{
		m_TrackActivatedTime 	= false;
		m_AnalyticsStatsEnabled = true;
		m_ID 					= eModifiers.MDF_FATIGUE;
		m_TickIntervalInactive 	= DEFAULT_TICK_TIME_INACTIVE_LONG;
		m_TickIntervalActive 	= DEFAULT_TICK_TIME_ACTIVE;
	}
	
	override bool ActivateCondition(PlayerBase player)
	{
		return (player.GetModifiersManager().IsModifierActive(eModifiers.MDF_WOUND_INFECTION1) || player.GetModifiersManager().IsModifierActive(eModifiers.MDF_WOUND_INFECTION2));
	}

	override void OnActivate(PlayerBase player)
	{
		if (player.m_NotifiersManager) 
			player.m_NotifiersManager.ActivateByType(eNotifiers.NTF_FEVERISH);

		player.GetStaminaHandler().ActivateRecoveryModifier(EStaminaMultiplierTypes.FATIGUE);
		player.GetStaminaHandler().ActivateDepletionModifier(EStaminaMultiplierTypes.FATIGUE);
	}

	override void OnReconnect(PlayerBase player)
	{
		OnActivate(player);
	}

	override void OnDeactivate(PlayerBase player)
	{
		player.GetStaminaHandler().DeactivateRecoveryModifier(EStaminaMultiplierTypes.FATIGUE);
		player.GetStaminaHandler().DeactivateDepletionModifier(EStaminaMultiplierTypes.FATIGUE);
	}

	override bool DeactivateCondition(PlayerBase player)
	{
		return !ActivateCondition(player);
	}
}