DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
Shock.c
Go to the documentation of this file.
2{
3 private const float UNCONSCIOUS_LIMIT = 50;
4 private const float SHOCK_INCREMENT_PER_SEC = 1;
5
6 override void Init()
7 {
8 m_ID = eModifiers.MDF_SHOCK;
11 //DisableActivateCheck();
13 }
14
15 override bool ActivateCondition(PlayerBase player)
16 {
17 return true;
18 }
19
20 override bool DeactivateCondition(PlayerBase player)
21 {
22 return false;
23 }
24
25 override void OnActivate(PlayerBase player)
26 {
27 }
28
29 override void OnDeactivate(PlayerBase player)
30 {
31 }
32
34 {
35 if ( player.m_IsDrowning )
36 {
37 return 0;
38 }
39 if ( player.IsUnconscious() )
40 {
41 return CfgGameplayHandler.GetShockRefillSpeedUnconscious() * player.m_UnconRefillModifier;
42 }
43 if (player.GetBrokenLegs() != eBrokenLegs.BROKEN_LEGS || (player.m_MovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_PRONE || player.m_MovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_RAISEDPRONE))
44 {
46 }
47 if ( player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS && (player.IsSwimming() || player.IsClimbingLadder()) )
48 {
50 }
51 return 0; //Block shock regen when standing with broken legs
52 }
53
54 override void OnTick(PlayerBase player, float deltaT)
55 {
56 //Print("m_UnconRefillModifier" + player.m_UnconRefillModifier);
57 if ( GetGame().GetTime() > player.m_LastShockHitTime + PlayerConstants.SHOCK_REFILL_COOLDOWN_AFTER_HIT && player.GetPulseType() == EPulseType.REGULAR)
58 {
59 if (!player.IsUnconscious())
60 player.m_UnconRefillModifier = 1;//reset this UnconRefillModifier some time after the player has been hit(we want the UnconRefillModifier to only apply to uncon induced by a projectile)
61
62 if (player.GetHealth01("","Shock") == 1)//no need to continue if the shock is full
63 return;
64
66 player.m_UnconRefillModifier = 1;
67
68 player.AddHealth("","Shock", deltaT * GetRefillSpeed(player) );
69 }
70 }
71
72 override void OnReconnect(PlayerBase player)
73 {
74
75 }
76};
eBrokenLegs
Definition EBrokenLegs.c:2
EPulseType
Definition EPulseType.c:2
protected int m_ID
ID of effect, given by SEffectManager when registered (automatically done when playing through it)
Definition Effect.c:49
void DisableDeactivateCheck()
float m_TickIntervalActive
float m_TickIntervalInactive
float GetTime()
static float GetShockRefillSpeedUnconscious()
static bool GetAllowRefillSpeedModifier()
static float GetShockRefillSpeedConscious()
static const float SHOCK_REFILL_COOLDOWN_AFTER_HIT
override bool DeactivateCondition(PlayerBase player)
Definition Shock.c:20
override void OnReconnect(PlayerBase player)
Definition Shock.c:72
override void OnActivate(PlayerBase player)
Definition Shock.c:25
private const float UNCONSCIOUS_LIMIT
Definition Shock.c:3
override void OnTick(PlayerBase player, float deltaT)
Definition Shock.c:54
override void Init()
Definition Shock.c:6
private const float SHOCK_INCREMENT_PER_SEC
Definition Shock.c:4
override bool ActivateCondition(PlayerBase player)
Definition Shock.c:15
override void OnDeactivate(PlayerBase player)
Definition Shock.c:29
float GetRefillSpeed(PlayerBase player)
Definition Shock.c:33
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
eModifiers
Definition eModifiers.c:2
proto native CGame GetGame()