DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
Cholera.c
Go to the documentation of this file.
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 override void Init()
15 {
17 m_ID = eModifiers.MDF_CHOLERA;
20 }
21
22 override string GetDebugText()
23 {
24 return ("Activate threshold: "+AGENT_THRESHOLD_ACTIVATE + "| " +"Deativate threshold: "+AGENT_THRESHOLD_DEACTIVATE);
25 }
26
27 override protected bool ActivateCondition(PlayerBase player)
28 {
29 if(player.GetSingleAgentCount(eAgents.CHOLERA) >= AGENT_THRESHOLD_ACTIVATE)
30 {
31 return true;
32 }
33 else
34 {
35 return false;
36 }
37 }
38
39 override protected void OnActivate(PlayerBase player)
40 {
41 player.IncreaseDiseaseCount();
42 }
43
44 override protected void OnDeactivate(PlayerBase player)
45 {
46 player.DecreaseDiseaseCount();
47 }
48
49 override protected bool DeactivateCondition(PlayerBase player)
50 {
51 if(player.GetSingleAgentCount(eAgents.CHOLERA) <= AGENT_THRESHOLD_DEACTIVATE)
52 {
53 return true;
54 }
55 else
56 {
57 return false;
58 }
59 }
60
61 override protected void OnTick(PlayerBase player, float deltaT)
62 {
63 float water_loss = ( deltaT * ( WATER_LOSS_CHOLERA * Math.Max( WATER_LOSS_CHOLERA_MIN, player.GetSingleAgentCountNormalized( eAgents.CHOLERA ) ) ) );
64 //Print( ( WATER_LOSS_CHOLERA * Math.Max( WATER_LOSS_CHOLERA_MIN, player.GetSingleAgentCountNormalized( eAgents.CHOLERA ) ) ) );
65 player.GetStatWater().Add( -water_loss );
66
67 float stomach_volume = player.m_PlayerStomach.GetStomachVolume();
68 if( stomach_volume >= STOMACH_MIN_VOLUME )
69 {
70 int roll = Math.RandomInt( 0, 100 );
71 if( roll < ( CHANCE_OF_VOMIT + ( CHANCE_OF_VOMIT_AGENT * player.GetSingleAgentCountNormalized( eAgents.CHOLERA ) ) ) )
72 {
73 SymptomBase symptom = player.GetSymptomManager().QueueUpPrimarySymptom( SymptomIDs.SYMPTOM_VOMIT );
74 if( symptom )
75 {
76 symptom.SetDuration( Math.RandomIntInclusive( 4,8 ) );
77
78 if (m_Player.GetStatWater().Get() > (WATER_DRAIN_FROM_VOMIT))
79 m_Player.GetStatWater().Add(-1 * WATER_DRAIN_FROM_VOMIT);
80 if (m_Player.GetStatEnergy().Get() > (ENERGY_DRAIN_FROM_VOMIT))
81 m_Player.GetStatEnergy().Add(-1 * ENERGY_DRAIN_FROM_VOMIT);
82 }
83 }
84 }
85 }
86};
eAgents
Definition EAgents.c:3
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
static const int CHANCE_OF_VOMIT_AGENT
Definition Cholera.c:7
static const float STOMACH_MIN_VOLUME
Definition Cholera.c:12
static const float WATER_LOSS_CHOLERA
Definition Cholera.c:10
static const int AGENT_THRESHOLD_ACTIVATE
Definition Cholera.c:3
override string GetDebugText()
Definition Cholera.c:22
static const int WATER_DRAIN_FROM_VOMIT
Definition Cholera.c:8
static const int CHANCE_OF_VOMIT
Definition Cholera.c:6
static const float WATER_LOSS_CHOLERA_MIN
Definition Cholera.c:11
override protected void OnDeactivate(PlayerBase player)
Definition Cholera.c:44
override protected bool DeactivateCondition(PlayerBase player)
Definition Cholera.c:49
override void Init()
Definition Cholera.c:14
static const int AGENT_THRESHOLD_DEACTIVATE
Definition Cholera.c:4
override protected void OnActivate(PlayerBase player)
Definition Cholera.c:39
override protected bool ActivateCondition(PlayerBase player)
Definition Cholera.c:27
static const int ENERGY_DRAIN_FROM_VOMIT
Definition Cholera.c:9
override protected void OnTick(PlayerBase player, float deltaT)
Definition Cholera.c:61
Definition EnMath.c:7
void SetDuration(float duration)
Definition StateBase.c:80
eModifiers
Definition eModifiers.c:2
static proto float Max(float x, float y)
Returns bigger of two given values.
static proto int RandomInt(int min, int max)
Returns a random int number between and min [inclusive] and max [exclusive].
static int RandomIntInclusive(int min, int max)
Returns a random int number between and min [inclusive] and max [inclusive].
Definition EnMath.c:53