DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ OnTick()

void HeavyMetalPhase2Mdfr::OnTick ( PlayerBase player,
float deltaT )
inlineprotected

См. определение в файле HeavyMetal.c строка 119

120 {
121 m_Time += deltaT;
122
123 if (m_IsDeaf)
124 {
125 m_DeafnessTime += deltaT;
126 }
127
128 if (m_Time >= m_NextEvent)
129 {
130 if (player.GetSingleAgentCount(eAgents.HEAVYMETAL) >= SYMPTOMFALLOFF_THRESHOLD1)
131 {
132 player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_PAIN_LIGHT);
133 m_Time = 0;
134
135 m_NextEvent = Math.RandomFloatInclusive(PAIN_EVENT_INTERVAL_MIN, PAIN_EVENT_INTERVAL_MAX);
136 }
137 }
138
139 float chanceOfDeafness = player.GetSingleAgentCountNormalized(eAgents.HEAVYMETAL);
140 if (Math.RandomFloat01() < chanceOfDeafness / Math.RandomInt(5, 10))
141 {
142 DoOnce.Run(ClassName(), player, "IncreaseDiseaseCount");
143 player.GetSymptomManager().QueueUpSecondarySymptom(SymptomIDs.SYMPTOM_DEAFNESS_COMPLETE);
144 m_Time = 0;
145 m_DeafnessTime = 0;
146 m_IsDeaf = true;
147
148 m_NextEvent = Math.RandomFloatInclusive(PAIN_EVENT_INTERVAL_MIN, PAIN_EVENT_INTERVAL_MAX);
149 }
150
151 if (m_IsDeaf && m_DeafnessTime > DEAFNESS_INTERVAL + player.GetSingleAgentCountNormalized(eAgents.HEAVYMETAL)*0.6)
152 {
153 player.GetSymptomManager().RemoveSecondarySymptom(SymptomIDs.SYMPTOM_DEAFNESS_COMPLETE);
154 m_IsDeaf = false;
155 }
156
157 if (player.GetSingleAgentCount(eAgents.HEAVYMETAL) <= SYMPTOMFALLOFF_THRESHOLD3 && eAgents.HEAVYMETAL >= SYMPTOMFALLOFF_THRESHOLD1)
158 {
159 float waterLoss = (deltaT * (WATER_LOSS_HEAVYMETAL_MAX * Math.Max(WATER_LOSS_HEAVYMETAL_MIN, player.GetSingleAgentCountNormalized(eAgents.HEAVYMETAL))));
160 player.GetStatWater().Add(-waterLoss);
161 }
162
163 if (player.GetSingleAgentCount(eAgents.HEAVYMETAL) <= SYMPTOMFALLOFF_THRESHOLD3)
164 {
165 player.m_AgentPool.AddAgent(eAgents.HEAVYMETAL, -0.5);
166 }
167 }
eAgents
Определения EAgents.c:3
static const int SYMPTOMFALLOFF_THRESHOLD3
Определения HeavyMetal.c:11
bool m_IsDeaf
Определения HeavyMetal.c:17
static const float WATER_LOSS_HEAVYMETAL_MIN
Определения HeavyMetal.c:3
static const float WATER_LOSS_HEAVYMETAL_MAX
Определения HeavyMetal.c:4
static const int SYMPTOMFALLOFF_THRESHOLD1
Определения HeavyMetal.c:9
float m_Time
Определения HeavyMetal.c:14
float m_NextEvent
Определения HeavyMetal.c:13
float m_DeafnessTime
Определения HeavyMetal.c:16
static const int PAIN_EVENT_INTERVAL_MIN
Определения HeavyMetal.c:86
static const int PAIN_EVENT_INTERVAL_MAX
Определения HeavyMetal.c:87
static const int DEAFNESS_INTERVAL
Определения HeavyMetal.c:89

Перекрестные ссылки DEAFNESS_INTERVAL, HeavyMetalMdfr::m_DeafnessTime, HeavyMetalMdfr::m_IsDeaf, HeavyMetalMdfr::m_NextEvent, HeavyMetalMdfr::m_Time, Math::Max(), PAIN_EVENT_INTERVAL_MAX, PAIN_EVENT_INTERVAL_MIN, Math::RandomFloat01(), Math::RandomFloatInclusive(), Math::RandomInt(), DoOnce::Run(), HeavyMetalMdfr::SYMPTOMFALLOFF_THRESHOLD1, HeavyMetalMdfr::SYMPTOMFALLOFF_THRESHOLD3, HeavyMetalMdfr::WATER_LOSS_HEAVYMETAL_MAX и HeavyMetalMdfr::WATER_LOSS_HEAVYMETAL_MIN.