DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
InfluenzaAgent.c
См. документацию.
2{
4
5 protected const float INVASIBILITY_INC_LOW_HC = 0.40;
6 protected const float INVASIBILITY_INC_MEDIUM_HC = 0.60;
7 protected const float INVASIBILITY_INC_CRITICAL_HC = 0.70;
8
9 protected const float INVASIBILITY_DEC_COMMON_COLD = -0.3;
10 protected const float INVASIBILITY_DEC_INFLUENZA = -0.3;
11 protected const float INVASIBILITY_DEC_PNEUMONIA = 0.00;
12
13 protected const int MAX_TIME_TO_CONTRACT = 8650;
14 protected const int CONTRACT_TIME_THRESHOLD_MIN = 10;
15 protected const int CONTRACT_TIME_THRESHOLD_MAX = 200;
16
18
19 protected const float CONTRACT_HEATCOMFORT_MODIFIER[3] = {
20 0.25, // low
21 0.6, // medium
22 1.0, // critical
23 };
24
25 protected int m_ElapsedTime;
26
27 override void Init()
28 {
29 m_Type = eAgents.INFLUENZA;
30 m_Invasibility = 0.33;
33 m_MaxCount = 1200;
34 m_Digestibility = 0.1;
38 m_Potency = EStatLevels.MEDIUM;
39 m_DieOffSpeed = 0.30;
40
41 m_ElapsedTime = 0.0;
42 }
43
44 override bool AutoinfectCheck(float deltaT, PlayerBase player)
45 {
46 if (!player.m_AgentPool.GetTemporaryResistance(eAgents.INFLUENZA))
47 {
48 float heatcomfort = player.GetStatHeatComfort().Get();
50 {
51 float subtractTimeModifier;
53
54 if (heatcomfort <= PlayerConstants.THRESHOLD_HEAT_COMFORT_MINUS_WARNING && heatcomfort > PlayerConstants.THRESHOLD_HEAT_COMFORT_MINUS_CRITICAL)
55 subtractTimeModifier = CONTRACT_HEATCOMFORT_MODIFIER[0];
56 else if (heatcomfort <= PlayerConstants.THRESHOLD_HEAT_COMFORT_MINUS_CRITICAL && heatcomfort > PlayerConstants.THRESHOLD_HEAT_COMFORT_MINUS_EMPTY)
57 subtractTimeModifier = CONTRACT_HEATCOMFORT_MODIFIER[1];
59 subtractTimeModifier = CONTRACT_HEATCOMFORT_MODIFIER[2];
60
61 float subtractTimeModified = subtractTimeRandomized * subtractTimeModifier;
62
63 m_TimeToContract -= subtractTimeModified;
65 {
66 m_ElapsedTime = 0;
68
69 return true;
70 }
71
72 m_ElapsedTime += deltaT;
73 }
74 else
75 {
76 m_ElapsedTime = Math.Clamp(m_ElapsedTime - deltaT, 0.0, float.MAX);
78 }
79 }
80
81 return false;
82 }
83
84 override bool CanAutoinfectPlayer(PlayerBase player)
85 {
86 if (player.GetStatHeatComfort().Get() < INFLUENZA_AGENT_AUTOINFECT_THRESHOLD_HC)
87 return true;
88
89 return false;
90 }
91
92 override float GetInvasibilityEx(PlayerBase player)
93 {
94 float heatComfort = player.GetStatHeatComfort().Get();
95
97 {
98 if (player.GetModifiersManager().IsModifierActive(eModifiers.MDF_PNEUMONIA))
100 if (player.GetModifiersManager().IsModifierActive(eModifiers.MDF_INFLUENZA))
102
104 }
105
106 if (heatComfort <= PlayerConstants.THRESHOLD_HEAT_COMFORT_MINUS_WARNING && heatComfort > PlayerConstants.THRESHOLD_HEAT_COMFORT_MINUS_CRITICAL)
108 else if (heatComfort <= PlayerConstants.THRESHOLD_HEAT_COMFORT_MINUS_CRITICAL && heatComfort > PlayerConstants.THRESHOLD_HEAT_COMFORT_MINUS_EMPTY)
112
114 }
115
117 {
118 if (player.GetModifiersManager().IsModifierActive(eModifiers.MDF_PNEUMONIA))
119 return EStatLevels.GREAT;
120
121 return super.GetPotencyEx(player);
122 }
123
124 override float GetDieOffSpeedEx(PlayerBase player)
125 {
126 if (player.GetModifiersManager().IsModifierActive(eModifiers.MDF_ANTIBIOTICS))
127 return GetDieOffSpeed() * 3;
128 else if (player.GetModifiersManager().IsModifierActive(eModifiers.MDF_IMMUNITYBOOST))
129 return GetDieOffSpeed() * 2;
130
131 return super.GetDieOffSpeedEx(player);
132 }
133}
eAgents
Определения EAgents.c:3
EStatLevels
Определения EStatLevels.c:2
const int MAX
Определения EnConvert.c:27
int m_AutoinfectCount
Определения AgentBase.c:9
float m_TransferabilityAirOut
Определения AgentBase.c:11
void AgentBase()
Определения AgentBase.c:17
float m_DieOffSpeed
Определения AgentBase.c:15
float m_TransferabilityIn
Определения AgentBase.c:5
EStatLevels m_Potency
Определения AgentBase.c:14
int m_MaxCount
Определения AgentBase.c:8
float m_Digestibility
Определения AgentBase.c:7
float m_Invasibility
Определения AgentBase.c:4
float m_Type
Определения AgentBase.c:3
float m_TransferabilityOut
Определения AgentBase.c:6
float m_AntibioticsResistance
Определения AgentBase.c:12
float GetDieOffSpeed()
Определения AgentBase.c:54
const int AGENT_THRESHOLD_ACTIVATE
Определения CommonCold.c:3
Определения CommonCold.c:2
override float GetDieOffSpeedEx(PlayerBase player)
Определения InfluenzaAgent.c:124
int m_ElapsedTime
Определения InfluenzaAgent.c:25
const float INFLUENZA_AGENT_AUTOINFECT_THRESHOLD_HC
Определения InfluenzaAgent.c:3
const int CONTRACT_TIME_THRESHOLD_MAX
min value of time [s] for subtraction from MAX_TIME_TO_CONTRACT (used for randomization)
Определения InfluenzaAgent.c:15
const float INVASIBILITY_DEC_PNEUMONIA
Определения InfluenzaAgent.c:11
const float INVASIBILITY_INC_CRITICAL_HC
Определения InfluenzaAgent.c:7
override bool CanAutoinfectPlayer(PlayerBase player)
Определения InfluenzaAgent.c:84
const int MAX_TIME_TO_CONTRACT
Определения InfluenzaAgent.c:13
override void Init()
Определения InfluenzaAgent.c:27
const float INVASIBILITY_DEC_COMMON_COLD
Определения InfluenzaAgent.c:9
const float INVASIBILITY_DEC_INFLUENZA
Определения InfluenzaAgent.c:10
const float INVASIBILITY_INC_LOW_HC
Определения InfluenzaAgent.c:5
const float CONTRACT_HEATCOMFORT_MODIFIER[3]
Определения InfluenzaAgent.c:19
override EStatLevels GetPotencyEx(PlayerBase player)
Определения InfluenzaAgent.c:116
override bool AutoinfectCheck(float deltaT, PlayerBase player)
Определения InfluenzaAgent.c:44
const int CONTRACT_TIME_THRESHOLD_MIN
at this time [s], character will contract the disease
Определения InfluenzaAgent.c:14
int m_TimeToContract
max value of time [s] for subtraction from MAX_TIME_TO_CONTRACT (used for randomization)
Определения InfluenzaAgent.c:17
const float INVASIBILITY_INC_MEDIUM_HC
Определения InfluenzaAgent.c:6
override float GetInvasibilityEx(PlayerBase player)
Определения InfluenzaAgent.c:92
Определения InfluenzaAgent.c:2
Определения EnMath.c:7
Определения PlayerBaseClient.c:2
static const float THRESHOLD_HEAT_COMFORT_MINUS_WARNING
Определения PlayerConstants.c:92
static const float THRESHOLD_HEAT_COMFORT_MINUS_CRITICAL
Определения PlayerConstants.c:93
static const float THRESHOLD_HEAT_COMFORT_MINUS_EMPTY
Определения PlayerConstants.c:94
Определения PlayerConstants.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 float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.