Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
cholera.c
Go to the documentation of this file.
1
class
CholeraMdfr
:
ModifierBase
2
{
3
static
const
int
AGENT_THRESHOLD_ACTIVATE
= 250;
4
static
const
int
AGENT_THRESHOLD_DEACTIVATE
= 50;
5
6
static
const
int
CHANCE_OF_VOMIT
= 10;
7
static
const
int
CHANCE_OF_VOMIT_AGENT
= 30;
8
static
const
int
WATER_DRAIN_FROM_VOMIT
= 450;
9
static
const
int
ENERGY_DRAIN_FROM_VOMIT
= 310;
10
static
const
float
WATER_LOSS_CHOLERA
= 0.5;
11
static
const
float
WATER_LOSS_CHOLERA_MIN
= 0.1;
// min multiplier of WATER_LOSS_CHOLERA
12
static
const
float
STOMACH_MIN_VOLUME
= 200;
// for vomit symptom
13
14
private
float
m_ExhaustionTimer
;
15
private
bool
m_Exhaustion
;
16
17
override
void
Init
()
18
{
19
m_TrackActivatedTime
=
false
;
20
m_AnalyticsStatsEnabled
=
true
;
21
m_ID
=
eModifiers
.MDF_CHOLERA;
22
m_TickIntervalInactive
=
DEFAULT_TICK_TIME_INACTIVE
;
23
m_TickIntervalActive
=
DEFAULT_TICK_TIME_ACTIVE
;
24
}
25
26
override
string
GetDebugText
()
27
{
28
return
(
"Activate threshold: "
+
AGENT_THRESHOLD_ACTIVATE
+
"| "
+
"Deativate threshold: "
+
AGENT_THRESHOLD_DEACTIVATE
);
29
}
30
31
override
protected
bool
ActivateCondition
(
PlayerBase
player)
32
{
33
return
(player.GetSingleAgentCount(
eAgents
.CHOLERA) >=
AGENT_THRESHOLD_ACTIVATE
);
34
}
35
36
override
protected
void
OnActivate
(
PlayerBase
player)
37
{
38
player.IncreaseDiseaseCount();
39
40
SymptomBase
symptom = player.GetSymptomManager().QueueUpPrimarySymptom( SymptomIDs.SYMPTOM_VOMIT );
41
if
(symptom)
42
{
43
CachedObjectsParams
.
PARAM1_FLOAT
.param1 = 65.0;
44
symptom.
SetParam
(
CachedObjectsParams
.
PARAM1_FLOAT
);
45
symptom.
SetDuration
(
Math
.
RandomIntInclusive
(4.0, 8.0));
46
}
47
}
48
49
override
protected
void
OnDeactivate
(
PlayerBase
player)
50
{
51
player.GetStaminaHandler().DeactivateRecoveryModifier(
EStaminaMultiplierTypes
.VOMIT_EXHAUSTION);
52
player.GetStaminaHandler().DeactivateDepletionModifier(
EStaminaMultiplierTypes
.VOMIT_EXHAUSTION);
53
m_Exhaustion
=
false
;
54
m_ExhaustionTimer
= 0;
55
player.DecreaseDiseaseCount();
56
}
57
58
override
protected
bool
DeactivateCondition
(
PlayerBase
player)
59
{
60
return
(player.GetSingleAgentCount(
eAgents
.CHOLERA) <=
AGENT_THRESHOLD_DEACTIVATE
);
61
}
62
63
override
protected
void
OnTick
(
PlayerBase
player,
float
deltaT)
64
{
65
float
waterLoss = ( deltaT * (
WATER_LOSS_CHOLERA
*
Math
.
Max
(
WATER_LOSS_CHOLERA_MIN
, player.GetSingleAgentCountNormalized(
eAgents
.CHOLERA ) ) ) );
66
player.GetStatWater().Add(-waterLoss);
67
68
float
stomachVolume = player.m_PlayerStomach.GetStomachVolume();
69
if
(stomachVolume >=
STOMACH_MIN_VOLUME
)
70
{
71
int
roll =
Math
.
RandomInt
( 0, 100 );
72
if
( roll < (
CHANCE_OF_VOMIT
+ (
CHANCE_OF_VOMIT_AGENT
* player.GetSingleAgentCountNormalized(
eAgents
.CHOLERA ) ) ) )
73
{
74
SymptomBase
symptom = player.GetSymptomManager().QueueUpPrimarySymptom( SymptomIDs.SYMPTOM_VOMIT );
75
if
(symptom)
76
{
77
CachedObjectsParams
.
PARAM1_FLOAT
.param1 = 65.0;
78
symptom.
SetParam
(
CachedObjectsParams
.
PARAM1_FLOAT
);
79
symptom.
SetDuration
(
Math
.
RandomIntInclusive
(4.0, 8.0));
80
81
if
(
m_Player
.GetStatWater().Get() > (
WATER_DRAIN_FROM_VOMIT
))
82
m_Player
.GetStatWater().Add(-1 *
WATER_DRAIN_FROM_VOMIT
);
83
if
(
m_Player
.GetStatEnergy().Get() > (
ENERGY_DRAIN_FROM_VOMIT
))
84
m_Player
.GetStatEnergy().Add(-1 *
ENERGY_DRAIN_FROM_VOMIT
);
85
86
player.GetStaminaHandler().ActivateRecoveryModifier(
EStaminaMultiplierTypes
.VOMIT_EXHAUSTION);
87
player.GetStaminaHandler().ActivateDepletionModifier(
EStaminaMultiplierTypes
.VOMIT_EXHAUSTION);
88
89
m_Exhaustion
=
true
;
90
m_ExhaustionTimer
= 0;
91
}
92
}
93
}
94
95
if
(
m_Exhaustion
)
96
{
97
m_ExhaustionTimer
+= deltaT;
98
if
(
m_ExhaustionTimer
>= 30)
99
{
100
player.GetStaminaHandler().DeactivateRecoveryModifier(
EStaminaMultiplierTypes
.VOMIT_EXHAUSTION);
101
player.GetStaminaHandler().DeactivateDepletionModifier(
EStaminaMultiplierTypes
.VOMIT_EXHAUSTION);
102
103
m_Exhaustion
=
false
;
104
}
105
}
106
}
107
}
m_Player
map m_Player
CachedObjectsParams
Definition
utilityclasses.c:10
CachedObjectsParams::PARAM1_FLOAT
static ref Param1< float > PARAM1_FLOAT
Definition
utilityclasses.c:13
CholeraMdfr
Definition
cholera.c:2
CholeraMdfr::CHANCE_OF_VOMIT_AGENT
static const int CHANCE_OF_VOMIT_AGENT
Definition
cholera.c:7
CholeraMdfr::STOMACH_MIN_VOLUME
static const float STOMACH_MIN_VOLUME
Definition
cholera.c:12
CholeraMdfr::WATER_LOSS_CHOLERA
static const float WATER_LOSS_CHOLERA
Definition
cholera.c:10
CholeraMdfr::AGENT_THRESHOLD_ACTIVATE
static const int AGENT_THRESHOLD_ACTIVATE
Definition
cholera.c:3
CholeraMdfr::ActivateCondition
bool ActivateCondition(PlayerBase player)
Definition
cholera.c:31
CholeraMdfr::m_Exhaustion
bool m_Exhaustion
Definition
cholera.c:15
CholeraMdfr::GetDebugText
override string GetDebugText()
Definition
cholera.c:26
CholeraMdfr::WATER_DRAIN_FROM_VOMIT
static const int WATER_DRAIN_FROM_VOMIT
Definition
cholera.c:8
CholeraMdfr::CHANCE_OF_VOMIT
static const int CHANCE_OF_VOMIT
Definition
cholera.c:6
CholeraMdfr::WATER_LOSS_CHOLERA_MIN
static const float WATER_LOSS_CHOLERA_MIN
Definition
cholera.c:11
CholeraMdfr::Init
override void Init()
Definition
cholera.c:17
CholeraMdfr::DeactivateCondition
bool DeactivateCondition(PlayerBase player)
Definition
cholera.c:58
CholeraMdfr::AGENT_THRESHOLD_DEACTIVATE
static const int AGENT_THRESHOLD_DEACTIVATE
Definition
cholera.c:4
CholeraMdfr::OnTick
void OnTick(PlayerBase player, float deltaT)
Definition
cholera.c:63
CholeraMdfr::OnActivate
void OnActivate(PlayerBase player)
Definition
cholera.c:36
CholeraMdfr::OnDeactivate
void OnDeactivate(PlayerBase player)
Definition
cholera.c:49
CholeraMdfr::m_ExhaustionTimer
float m_ExhaustionTimer
Definition
cholera.c:14
CholeraMdfr::ENERGY_DRAIN_FROM_VOMIT
static const int ENERGY_DRAIN_FROM_VOMIT
Definition
cholera.c:9
Math
Definition
enmath.c:7
ModifierBase
Definition
breathvapourmdfr.c:4
PlayerBase
Definition
playerbaseclient.c:2
SymptomBase
Definition
statebase.c:2
SymptomBase::SetDuration
void SetDuration(float duration)
Definition
statebase.c:80
SymptomBase::SetParam
void SetParam(Param p)
Definition
statebase.c:105
eAgents
eAgents
Definition
eagents.c:3
m_ID
int m_ID
ID of effect, given by SEffectManager when registered (automatically done when playing through it).
Definition
effect.c:51
eModifiers
eModifiers
Definition
emodifiers.c:2
Math::Max
static proto float Max(float x, float y)
Returns bigger of two given values.
Math::RandomInt
static proto int RandomInt(int min, int max)
Returns a random int number between and min [inclusive] and max [exclusive].
Math::RandomIntInclusive
static int RandomIntInclusive(int min, int max)
Returns a random int number between and min [inclusive] and max [inclusive].
Definition
enmath.c:54
m_TrackActivatedTime
bool m_TrackActivatedTime
overall time this modifier was active
Definition
modifierbase.c:14
m_AnalyticsStatsEnabled
bool m_AnalyticsStatsEnabled
Definition
modifierbase.c:31
m_TickIntervalActive
float m_TickIntervalActive
Definition
modifierbase.c:18
m_TickIntervalInactive
float m_TickIntervalInactive
Definition
modifierbase.c:17
DEFAULT_TICK_TIME_INACTIVE
const int DEFAULT_TICK_TIME_INACTIVE
Definition
modifiersmanager.c:29
DEFAULT_TICK_TIME_ACTIVE
enum eModifierSyncIDs DEFAULT_TICK_TIME_ACTIVE
EStaminaMultiplierTypes
EStaminaMultiplierTypes
Definition
staminahandler.c:2
Games
Dayz
scripts
4_world
classes
playermodifiers
modifiers
diseases
cholera.c
Generated by
1.17.0