DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
Salmonella.c
См. документацию.
2{
3 static const int AGENT_THRESHOLD_ACTIVATE = 60;
4 static const int AGENT_THRESHOLD_DEACTIVATE = 20;
5
6 static const int CHANCE_OF_VOMIT = 10; // base vomit chance
7 static const int CHANCE_OF_VOMIT_AGENT = 20; // adjusted by the agent count
8 static const int WATER_DRAIN_FROM_VOMIT = 450;
9 static const int ENERGY_DRAIN_FROM_VOMIT = 310;
10 static const float STOMACH_MIN_VOLUME = 200; // min volume of stomach for vomit symptom
11
12 static const float EVENT_INTERVAL_MIN = 12;
13 static const float EVENT_INTERVAL_MAX = 18;
14
15 private float m_Time;
16 private float m_NextEvent;
17 private float m_ExhaustionTimer;
18
19 private bool m_Exhaustion;
20
29
30 override string GetDebugText()
31 {
32 return ("Activate threshold: "+AGENT_THRESHOLD_ACTIVATE + "| " +"Deativate threshold: "+AGENT_THRESHOLD_DEACTIVATE);
33 }
34
35 override protected bool ActivateCondition(PlayerBase player)
36 {
37 return player.GetSingleAgentCount(eAgents.SALMONELLA) >= AGENT_THRESHOLD_ACTIVATE);
38 }
39
40 override protected bool DeactivateCondition(PlayerBase player)
41 {
42 return player.GetSingleAgentCount(eAgents.SALMONELLA) <= AGENT_THRESHOLD_DEACTIVATE);
43 }
44
45 override protected void OnActivate(PlayerBase player)
46 {
47 player.IncreaseDiseaseCount();
48
49 SymptomBase symptom = player.GetSymptomManager().QueueUpPrimarySymptom( SymptomIDs.SYMPTOM_VOMIT );
50 if (symptom)
51 {
54 symptom.SetDuration(5.0);
55 }
56 }
57
58 override protected void OnDeactivate(PlayerBase player)
59 {
60 player.GetStaminaHandler().DeactivateRecoveryModifier(EStaminaMultiplierTypes.VOMIT_EXHAUSTION);
61 player.GetStaminaHandler().DeactivateDepletionModifier(EStaminaMultiplierTypes.VOMIT_EXHAUSTION);
62 m_Exhaustion = false;
64 player.DecreaseDiseaseCount();
65 }
66
67 override protected void OnTick(PlayerBase player, float deltaT)
68 {
69 float stomach_volume = player.m_PlayerStomach.GetStomachVolume();
70 if (stomach_volume >= STOMACH_MIN_VOLUME)
71 {
72 int roll = Math.RandomInt(0, 100);
73 int chanceOfVomit = CHANCE_OF_VOMIT + (CHANCE_OF_VOMIT_AGENT * player.GetSingleAgentCountNormalized(eAgents.SALMONELLA));
74 if (roll < chanceOfVomit)
75 {
76 SymptomBase symptom = player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_VOMIT);
77
78 if (symptom)
79 {
82 symptom.SetDuration(5);
83 player.m_AgentPool.ReduceAgent(eAgents.SALMONELLA, 30.0);
84
85 if (m_Player.GetStatWater().Get() > WATER_DRAIN_FROM_VOMIT)
86 m_Player.GetStatWater().Add(-1 * WATER_DRAIN_FROM_VOMIT);
87 if (m_Player.GetStatEnergy().Get() > ENERGY_DRAIN_FROM_VOMIT)
88 m_Player.GetStatEnergy().Add(-1 * ENERGY_DRAIN_FROM_VOMIT);
89
90 player.GetStaminaHandler().ActivateRecoveryModifier(EStaminaMultiplierTypes.VOMIT_EXHAUSTION);
91 player.GetStaminaHandler().ActivateDepletionModifier(EStaminaMultiplierTypes.VOMIT_EXHAUSTION);
92
93 m_Exhaustion = true;
95 }
96 }
97 }
98
99 m_Time += deltaT;
100
101 if (m_Time >= m_NextEvent)
102 {
103 m_Time = 0;
105 player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_PAIN_LIGHT);
106 }
107
108 if (m_Exhaustion)
109 {
110 m_ExhaustionTimer += deltaT;
111 if (m_ExhaustionTimer >= 45)
112 {
113 player.GetStaminaHandler().DeactivateRecoveryModifier(EStaminaMultiplierTypes.DISEASE_PNEUMONIA);
114 player.GetStaminaHandler().DeactivateDepletionModifier(EStaminaMultiplierTypes.DISEASE_PNEUMONIA);
115
116 m_Exhaustion = false;
117 }
118 }
119
120
121 }
122}
eAgents
Определения EAgents.c:3
int m_ID
ID of effect, given by SEffectManager when registered (automatically done when playing through it)
Определения Effect.c:49
DayZPlayer m_Player
Определения Hand_Events.c:42
bool m_TrackActivatedTime
overall time this modifier was active
Определения ModifierBase.c:14
bool m_AnalyticsStatsEnabled
Определения ModifierBase.c:31
float m_TickIntervalActive
Определения ModifierBase.c:18
float m_TickIntervalInactive
Определения ModifierBase.c:17
const int DEFAULT_TICK_TIME_INACTIVE
Определения ModifiersManager.c:29
enum eModifierSyncIDs DEFAULT_TICK_TIME_ACTIVE
EStaminaMultiplierTypes
Определения StaminaHandler.c:2
static ref Param1< float > PARAM1_FLOAT
Определения UtilityClasses.c:13
Определения EnMath.c:7
Определения BreathVapourMdfr.c:4
Определения PlayerBaseClient.c:2
override string GetDebugText()
Определения Salmonella.c:30
bool DeactivateCondition(PlayerBase player)
Определения Salmonella.c:40
static const float EVENT_INTERVAL_MIN
Определения Salmonella.c:12
static const int WATER_DRAIN_FROM_VOMIT
Определения Salmonella.c:8
void OnTick(PlayerBase player, float deltaT)
Определения Salmonella.c:67
static const int CHANCE_OF_VOMIT
Определения Salmonella.c:6
float m_ExhaustionTimer
Определения Salmonella.c:17
static const int ENERGY_DRAIN_FROM_VOMIT
Определения Salmonella.c:9
static const float STOMACH_MIN_VOLUME
Определения Salmonella.c:10
void OnDeactivate(PlayerBase player)
Определения Salmonella.c:58
bool m_Exhaustion
Определения Salmonella.c:19
float m_NextEvent
Определения Salmonella.c:16
static const float EVENT_INTERVAL_MAX
Определения Salmonella.c:13
override void Init()
Определения Salmonella.c:21
bool ActivateCondition(PlayerBase player)
Определения Salmonella.c:35
static const int AGENT_THRESHOLD_ACTIVATE
Определения Salmonella.c:3
float m_Time
Определения Salmonella.c:15
static const int AGENT_THRESHOLD_DEACTIVATE
Определения Salmonella.c:4
static const int CHANCE_OF_VOMIT_AGENT
Определения Salmonella.c:7
void OnActivate(PlayerBase player)
Определения Salmonella.c:45
Определения Salmonella.c:2
void SetDuration(float duration)
Определения StateBase.c:80
void SetParam(Param p)
Определения StateBase.c:105
Определения StateBase.c:2
eModifiers
Определения eModifiers.c:2
static float RandomFloatInclusive(float min, float max)
Returns a random float number between and min [inclusive] and max [inclusive].
Определения EnMath.c:106
static proto int RandomInt(int min, int max)
Returns a random int number between and min [inclusive] and max [exclusive].