123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- class FeverMdfr: ModifierBase
- {
- private float m_Time;
- private float m_NextEvent;
-
- static const float EVENT_INTERVAL_MIN = 12;
- static const float EVENT_INTERVAL_MAX = 18;
-
-
- override void Init()
- {
- m_TrackActivatedTime = false;
- m_AnalyticsStatsEnabled = true;
- m_ID = eModifiers.MDF_FEVER;
- m_TickIntervalInactive = DEFAULT_TICK_TIME_INACTIVE;
- m_TickIntervalActive = DEFAULT_TICK_TIME_ACTIVE_SHORT;
- m_SyncID = eModifierSyncIDs.MODIFIER_SYNC_FEVER;
- }
- override bool ActivateCondition(PlayerBase player)
- {
- return (player.GetModifiersManager().IsModifierActive(eModifiers.MDF_CHOLERA) || player.GetModifiersManager().IsModifierActive(eModifiers.MDF_INFLUENZA) || player.GetModifiersManager().IsModifierActive(eModifiers.MDF_WOUND_INFECTION2));
- }
- override void OnActivate(PlayerBase player)
- {
- if( player.m_NotifiersManager )
- player.m_NotifiersManager.ActivateByType(eNotifiers.NTF_FEVERISH);
-
- player.GetSymptomManager().QueueUpSecondarySymptom(SymptomIDs.SYMPTOM_FEVERBLUR);
- }
- override void OnReconnect(PlayerBase player)
- {
- this.OnActivate(player);
- }
- override void OnDeactivate(PlayerBase player)
- {
- if( player.m_NotifiersManager )
- player.m_NotifiersManager.DeactivateByType(eNotifiers.NTF_FEVERISH);
- player.GetSymptomManager().RemoveSecondarySymptom(SymptomIDs.SYMPTOM_FEVERBLUR);
- }
- override bool DeactivateCondition(PlayerBase player)
- {
- return !ActivateCondition(player);
- }
- override void OnTick(PlayerBase player, float deltaT)
- {
- float water_loss = deltaT * PlayerConstants.WATER_LOSS_FEVER;
- player.GetStatWater().Add(-water_loss);
-
- m_Time += deltaT;
-
- if ( m_Time >= m_NextEvent )
- {
- m_Time = 0;
- m_NextEvent = Math.RandomFloatInclusive( EVENT_INTERVAL_MIN, EVENT_INTERVAL_MAX );
-
- player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_HOT);
- }
- }
- };
|