3 const float IN_AREA_CONSUME_FILTER_QUANTITY_PER_SEC = 0.3;
4 const float OUT_AREA_CONSUME_FILTER_QUANTITY_PER_SEC = 0.03;
6 const float STAMINA_RECOVERY_MODIFIER = 0.5;
7 const float STAMINA_DEPLETION_MODIFIER = 1.25;
9 const float LOW_FILTER_SOUND_EVENT_MIN = 3;
10 const float LOW_FILTER_SOUND_EVENT_MAX = 9;
12 const float LOW_FILTER_SOUND_THRESHOLD = 0.2;
14 float m_SoundTimeAccu1;
15 float m_NextSoundEventTime;
26 override bool ActivateCondition(
PlayerBase player)
31 override bool DeactivateCondition(
PlayerBase player)
33 return !ActivateCondition( player);
36 override void OnTick(
PlayerBase player,
float deltaT)
40 float consume_quantity = OUT_AREA_CONSUME_FILTER_QUANTITY_PER_SEC;
46 consume_quantity = IN_AREA_CONSUME_FILTER_QUANTITY_PER_SEC;
49 if ( mask && !mask.IsDamageDestroyed())
51 bool consuming_filter = mask.ConsumeQuantity(consume_quantity * deltaT, player);
52 StaminaSoundHandlerServer.Cast(player.GetPlayerSoundManagerServer().GetHandler(
eSoundHandlers.STAMINA)).SetStaminaZoneOffset(1);
54 if (mask.HasValidFilter())
65 HandleSounds(player, deltaT, mask);
71 float filter_quantity_01 = mask.GetFilterQuantity01();
73 if(mask.CanHaveExternalFilter() && !mask.IsExternalFilterAttached())
76 if(filter_quantity_01 > LOW_FILTER_SOUND_THRESHOLD)
79 float low_quantity_norm =
Math.InverseLerp(0, LOW_FILTER_SOUND_THRESHOLD, filter_quantity_01);
81 m_SoundTimeAccu1 += deltaT;
82 if( m_SoundTimeAccu1 >= m_NextSoundEventTime)
84 m_NextSoundEventTime =
Math.Lerp(LOW_FILTER_SOUND_EVENT_MIN, LOW_FILTER_SOUND_EVENT_MAX,low_quantity_norm);
88 if (low_quantity_norm < 0.5)
92 if (low_quantity_norm < 0.25)
96 player.RequestSoundEventEx(event_type,
false, EPlayerSoundEventParam.HIGHEST_PRIORITY);
113 StaminaSoundHandlerServer.Cast(player.GetPlayerSoundManagerServer().GetHandler(
eSoundHandlers.STAMINA)).SetStaminaZoneOffset(0);