DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
BloodRegen.c
Go to the documentation of this file.
2{
3 override void Init()
4 {
6 m_ID = eModifiers.MDF_BLOOD_REGEN;
9 }
10
11 override bool ActivateCondition(PlayerBase player)
12 {
13 float m_MaxBlood = player.GetMaxHealth("GlobalHealth", "Blood");
14 if ( player.GetHealth("GlobalHealth", "Blood") <= m_MaxBlood )
15 {
16 return true;
17 }
18 else
19 {
20 return false;
21 }
22 }
23
24 override void OnActivate(PlayerBase player)
25 {
26 }
27
28
29 override bool DeactivateCondition(PlayerBase player)
30 {
31 float m_MaxBlood = player.GetMaxHealth("GlobalHealth", "Blood");
32 if ( player.GetHealth("GlobalHealth", "Blood") >= m_MaxBlood )
33 {
34 return true;
35 }
36 else
37 {
38 return false;
39 }
40 }
41
42 override void OnTick(PlayerBase player, float deltaT)
43 {
44 float regen_modifier_water = GetRegenModifierWater( player.GetStatWater().Get() );
45 float regen_modifier_energy = GetRegenModifierEnergy( player.GetStatEnergy().Get() );
46 float blood_regen_speed = PlayerConstants.BLOOD_REGEN_RATE_PER_SEC * regen_modifier_water * regen_modifier_energy;
47 /*
48 PrintString("regen_modifier_water" + regen_modifier_water);
49 PrintString("regen_modifier_energy" + regen_modifier_energy);
50 PrintString("blood_regen_speed" + blood_regen_speed);
51 */
52 player.AddHealth("","Blood", blood_regen_speed * deltaT );
53 }
54
55 float GetRegenModifierWater(float water)
56 {
58 int water_level = m_Player.GetStatLevelWater();
59
60 /*
61 if( water < PlayerConstants.BLOOD_REGEN_THRESHOLD_WATER_MID ) {modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_WATER_MID}
62 if( water < PlayerConstants.BLOOD_REGEN_THRESHOLD_WATER_LOW ) {modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_WATER_LOW}
63 */
64
65 if( water_level == EStatLevels.MEDIUM ) {modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_WATER_MID}
66 if( water_level >= EStatLevels.LOW ) {modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_WATER_LOW}
67
68 return modifier;
69 }
70
71 float GetRegenModifierEnergy(float energy)
72 {
74 int energy_level = m_Player.GetStatLevelEnergy();
75
76 //if( energy < PlayerConstants.BLOOD_REGEN_THRESHOLD_ENERGY_MID ) {modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_ENERGY_MID}
77 //if( energy < PlayerConstants.BLOOD_REGEN_THRESHOLD_ENERGY_LOW ) {modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_ENERGY_LOW}
78
79 if( energy_level == EStatLevels.MEDIUM ) {modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_ENERGY_MID}
80 if( energy_level >= EStatLevels.LOW ) {modifier = PlayerConstants.BLOOD_REGEN_MODIFIER_ENERGY_LOW}
81
82 return modifier;
83 }
84
85
86};
EStatLevels
Definition EStatLevels.c:2
protected int m_ID
ID of effect, given by SEffectManager when registered (automatically done when playing through it)
Definition Effect.c:49
DayZPlayer m_Player
Definition Hand_Events.c:42
bool m_TrackActivatedTime
float m_TickIntervalActive
float m_TickIntervalInactive
const int DEFAULT_TICK_TIME_INACTIVE
const int DEFAULT_TICK_TIME_ACTIVE
override bool DeactivateCondition(PlayerBase player)
Definition BloodRegen.c:29
override void OnActivate(PlayerBase player)
Definition BloodRegen.c:24
float GetRegenModifierEnergy(float energy)
Definition BloodRegen.c:71
float GetRegenModifierWater(float water)
Definition BloodRegen.c:55
override void OnTick(PlayerBase player, float deltaT)
Definition BloodRegen.c:42
override void Init()
Definition BloodRegen.c:3
override bool ActivateCondition(PlayerBase player)
Definition BloodRegen.c:11
static const float BLOOD_REGEN_MODIFIER_WATER_MID
static const float BLOOD_REGEN_MODIFIER_ENERGY_HIGH
static const float BLOOD_REGEN_MODIFIER_ENERGY_MID
static const float BLOOD_REGEN_MODIFIER_WATER_LOW
static const float BLOOD_REGEN_RATE_PER_SEC
static const float BLOOD_REGEN_MODIFIER_ENERGY_LOW
static const float BLOOD_REGEN_MODIFIER_WATER_HIGH
eModifiers
Definition eModifiers.c:2