Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
poisoning.c
Go to the documentation of this file.
1
class
PoisoningMdfr
:
ModifierBase
2
{
3
static
const
int
AGENT_THRESHOLD_ACTIVATE
= 1;
4
static
const
int
AGENT_THRESHOLD_DEACTIVATE
= 40;
5
6
static
const
int
VOMIT_OCCURRENCES_MIN
= 2;
7
static
const
int
VOMIT_OCCURRENCES_MAX
= 5;
8
9
static
const
int
WATER_DRAIN_FROM_VOMIT
= 70;
10
static
const
int
ENERGY_DRAIN_FROM_VOMIT
= 55;
11
12
private
float
m_ExhaustionTimer
;
13
private
bool
m_Exhaustion
;
14
15
override
void
Init
()
16
{
17
m_TrackActivatedTime
=
true
;
18
m_AnalyticsStatsEnabled
=
true
;
19
m_IsPersistent
=
true
;
20
m_ID
=
eModifiers
.MDF_POISONING;
21
m_TickIntervalInactive
=
DEFAULT_TICK_TIME_INACTIVE
;
22
m_TickIntervalActive
=
DEFAULT_TICK_TIME_ACTIVE
;
23
}
24
25
override
string
GetDebugText
()
26
{
27
return
(
"Activate threshold: "
+
AGENT_THRESHOLD_ACTIVATE
+
"| "
+
"Deativate threshold: "
+
AGENT_THRESHOLD_DEACTIVATE
);
28
}
29
30
override
bool
ActivateCondition
(
PlayerBase
player)
31
{
32
return
(player.GetSingleAgentCount(
eAgents
.FOOD_POISON) >=
AGENT_THRESHOLD_ACTIVATE
);
33
}
34
35
override
bool
DeactivateCondition
(
PlayerBase
player)
36
{
37
return
!
ActivateCondition
(player);
38
}
39
40
override
void
OnActivate
(
PlayerBase
player)
41
{
42
player.IncreaseDiseaseCount();
43
}
44
45
override
void
OnReconnect
(
PlayerBase
player)
46
{
47
this.
OnActivate
(player);
48
}
49
50
override
void
OnDeactivate
(
PlayerBase
player)
51
{
52
player.GetStaminaHandler().DeactivateRecoveryModifier(
EStaminaMultiplierTypes
.VOMIT_EXHAUSTION);
53
player.GetStaminaHandler().DeactivateDepletionModifier(
EStaminaMultiplierTypes
.VOMIT_EXHAUSTION);
54
m_Exhaustion
=
false
;
55
m_ExhaustionTimer
= 0;
56
player.DecreaseDiseaseCount();
57
}
58
59
override
void
OnTick
(
PlayerBase
player,
float
deltaT)
60
{
61
int
agentCount = player.m_AgentPool.GetSingleAgentCount(
eAgents
.FOOD_POISON);
62
if
(agentCount <=
AGENT_THRESHOLD_DEACTIVATE
)
63
return
;
64
65
int
agentMax = PluginTransmissionAgents.GetAgentMaxCount(
eAgents
.FOOD_POISON);
66
67
float
invertedAgentCountValue =
Math
.
InverseLerp
(0, agentMax, agentCount);
68
float
chance =
Math
.
Lerp
(
VOMIT_OCCURRENCES_MIN
,
VOMIT_OCCURRENCES_MAX
, invertedAgentCountValue);
69
chance = (chance / 300) * deltaT;
70
71
if
(
Math
.
RandomFloat01
() < chance)
72
{
73
SymptomBase
symptom = player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_VOMIT);
74
if
(symptom)
75
{
76
CachedObjectsParams
.
PARAM1_FLOAT
.param1 = 30.0 * invertedAgentCountValue;
77
symptom.
SetParam
(
CachedObjectsParams
.
PARAM1_FLOAT
);
78
symptom.
SetDuration
(
Math
.
Max
(3.0, 10 * invertedAgentCountValue));
79
//player.m_AgentPool.ReduceAgent(eAgents.FOOD_POISON, 100.0 * invertedAgentCountValue);
80
player.m_AgentPool.ReduceAgent(
eAgents
.FOOD_POISON, 60);
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
if
(
m_Exhaustion
)
95
{
96
m_ExhaustionTimer
+= deltaT;
97
if
(
m_ExhaustionTimer
>= 30 * invertedAgentCountValue)
98
{
99
player.GetStaminaHandler().DeactivateRecoveryModifier(
EStaminaMultiplierTypes
.VOMIT_EXHAUSTION);
100
player.GetStaminaHandler().DeactivateDepletionModifier(
EStaminaMultiplierTypes
.VOMIT_EXHAUSTION);
101
102
m_Exhaustion
=
false
;
103
}
104
}
105
}
106
108
static
const
int
VOMIT_OCCURRENCES_PER_HOUR_MIN
= 60;
109
static
const
int
VOMIT_OCCURRENCES_PER_HOUR_MAX
= 120;
110
}
m_Player
map m_Player
CachedObjectsParams
Definition
utilityclasses.c:10
CachedObjectsParams::PARAM1_FLOAT
static ref Param1< float > PARAM1_FLOAT
Definition
utilityclasses.c:13
Math
Definition
enmath.c:7
ModifierBase
Definition
breathvapourmdfr.c:4
PlayerBase
Definition
playerbaseclient.c:2
PoisoningMdfr
Definition
poisoning.c:2
PoisoningMdfr::DeactivateCondition
override bool DeactivateCondition(PlayerBase player)
Definition
poisoning.c:35
PoisoningMdfr::OnReconnect
override void OnReconnect(PlayerBase player)
Definition
poisoning.c:45
PoisoningMdfr::OnActivate
override void OnActivate(PlayerBase player)
Definition
poisoning.c:40
PoisoningMdfr::AGENT_THRESHOLD_ACTIVATE
static const int AGENT_THRESHOLD_ACTIVATE
Definition
poisoning.c:3
PoisoningMdfr::m_Exhaustion
bool m_Exhaustion
Definition
poisoning.c:13
PoisoningMdfr::GetDebugText
override string GetDebugText()
Definition
poisoning.c:25
PoisoningMdfr::WATER_DRAIN_FROM_VOMIT
static const int WATER_DRAIN_FROM_VOMIT
Definition
poisoning.c:9
PoisoningMdfr::VOMIT_OCCURRENCES_MIN
static const int VOMIT_OCCURRENCES_MIN
Definition
poisoning.c:6
PoisoningMdfr::VOMIT_OCCURRENCES_PER_HOUR_MAX
static const int VOMIT_OCCURRENCES_PER_HOUR_MAX
Definition
poisoning.c:109
PoisoningMdfr::OnTick
override void OnTick(PlayerBase player, float deltaT)
Definition
poisoning.c:59
PoisoningMdfr::Init
override void Init()
Definition
poisoning.c:15
PoisoningMdfr::AGENT_THRESHOLD_DEACTIVATE
static const int AGENT_THRESHOLD_DEACTIVATE
Definition
poisoning.c:4
PoisoningMdfr::VOMIT_OCCURRENCES_MAX
static const int VOMIT_OCCURRENCES_MAX
Definition
poisoning.c:7
PoisoningMdfr::ActivateCondition
override bool ActivateCondition(PlayerBase player)
Definition
poisoning.c:30
PoisoningMdfr::OnDeactivate
override void OnDeactivate(PlayerBase player)
Definition
poisoning.c:50
PoisoningMdfr::m_ExhaustionTimer
float m_ExhaustionTimer
Definition
poisoning.c:12
PoisoningMdfr::ENERGY_DRAIN_FROM_VOMIT
static const int ENERGY_DRAIN_FROM_VOMIT
Definition
poisoning.c:10
PoisoningMdfr::VOMIT_OCCURRENCES_PER_HOUR_MIN
static const int VOMIT_OCCURRENCES_PER_HOUR_MIN
DEPRECATED.
Definition
poisoning.c:108
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::InverseLerp
static proto float InverseLerp(float a, float b, float value)
Calculates the linear value that produces the interpolant value within the range [a,...
Math::RandomFloat01
static float RandomFloat01()
Returns a random float number between and min [inclusive] and max [inclusive].
Definition
enmath.c:126
Math::Lerp
static proto float Lerp(float a, float b, float time)
Linearly interpolates between 'a' and 'b' given 'time'.
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
m_IsPersistent
bool m_IsPersistent
should this modifier track overall time it was active ?
Definition
modifierbase.c:15
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
OnActivate
void OnActivate()
Definition
trap_landmine.c:67
Games
Dayz
scripts
4_world
classes
playermodifiers
modifiers
conditions
poisoning.c
Generated by
1.17.0