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