Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
drowning.c
Go to the documentation of this file.
2{
3 static const float STAMINA_RECOVERY_MULTIPLIER = 0;
4
5 const int TICK_FREQUENCY = 1;
6
7 override void Init()
8 {
10 m_ID = eModifiers.MDF_DROWNING;
12 m_TickIntervalActive = TICK_FREQUENCY;
13 m_SyncID = eModifierSyncIDs.MODIFIER_SYNC_DROWNING;
14 }
15
16 bool CheckIsDrowning(PlayerBase player)
17 {
18 return player.GetDrowningWaterLevelCheck();
19 }
20
21 override bool ActivateCondition(PlayerBase player)
22 {
23 return CheckIsDrowning(player);
24 }
25
26 override bool DeactivateCondition(PlayerBase player)
27 {
28 return !CheckIsDrowning(player);
29 }
30
31 override void OnTick(PlayerBase player, float deltaT)
32 {
33 if (player.GetStaminaHandler().GetStamina() <= 0)
34 {
35 player.AddHealth("","",deltaT * -CfgGameplayHandler.GetHealthDepletionSpeed());
36 player.AddHealth("","Shock",deltaT * -CfgGameplayHandler.GetShockDepletionSpeed());
37 player.RequestSoundEventEx(EPlayerSoundEventID.DROWNING_PAIN, false, EPlayerSoundEventParam.HIGHEST_PRIORITY);
38 }
39 }
40
41 override void OnReconnect(PlayerBase player)
42 {
43 OnActivate(player);
44 }
45
46 override void OnActivate(PlayerBase player)
47 {
48 player.SetDrowning(true);
49 player.GetStaminaHandler().ActivateRecoveryModifier(EStaminaMultiplierTypes.DROWNING);
50 player.RequestSoundEventEx(EPlayerSoundEventID.DROWNING_BREATH, false, EPlayerSoundEventParam.HIGHEST_PRIORITY);
51 GetGame().GetCallQueue( CALL_CATEGORY_SYSTEM ).CallLater( PlayDrowningSound, 3000 ,false, 1);
52 }
53
54
55 void PlayDrowningSound(int index)
56 {
57 if (m_Player.m_IsDrowning)//check if we are still drowning after the delay
58 {
59 if (index == 0)
60 {
61 m_Player.RequestSoundEventEx(EPlayerSoundEventID.EXHAUSTED_BREATH, false, EPlayerSoundEventParam.HIGHEST_PRIORITY);
62 }
63 else if (index == 1)
64 {
65 m_Player.RequestSoundEventEx(EPlayerSoundEventID.DROWNING_BREATH, false, EPlayerSoundEventParam.HIGHEST_PRIORITY);
66 }
67 }
68 }
69
70 override void OnDeactivate(PlayerBase player)
71 {
72 player.SetDrowning(false);
73 player.GetStaminaHandler().DeactivateRecoveryModifier(EStaminaMultiplierTypes.DROWNING);
74 }
75};
void RequestSoundEventEx(EPlayerSoundEventID id, bool from_server_and_client=false, int param=0)
int m_ID
ID of effect, given by SEffectManager when registered (automatically done when playing through it)
Definition effect.c:51
eModifiers
Definition emodifiers.c:2
proto native CGame GetGame()
const int CALL_CATEGORY_SYSTEM
Definition tools.c:8
DayZPlayer m_Player
Definition hand_events.c:42
bool m_TrackActivatedTime
overall time this modifier was active
eModifierSyncIDs m_SyncID
float m_TickIntervalActive
float m_TickIntervalInactive
eModifierSyncIDs
const int DEFAULT_TICK_TIME_INACTIVE
EStaminaMultiplierTypes
void OnActivate()