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

◆ OnTick()

override void PoisoningMdfr::OnTick ( PlayerBase player,
float deltaT )
inlineprivate

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

61 {
62 int agentCount = player.m_AgentPool.GetSingleAgentCount(eAgents.FOOD_POISON);
63 if (agentCount <= AGENT_THRESHOLD_DEACTIVATE)
64 return;
65
66 int agentMax = PluginTransmissionAgents.GetAgentMaxCount(eAgents.FOOD_POISON);
67
68 float invertedAgentCountValue = Math.InverseLerp(0, agentMax, agentCount);
69 float chance = Math.Lerp(VOMIT_OCCURRENCES_MIN, VOMIT_OCCURRENCES_MAX, invertedAgentCountValue);
70 chance = (chance / 300) * deltaT;
71
72 if (Math.RandomFloat01() < chance)
73 {
74
75 SymptomBase symptom = player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_VOMIT);
76 if (symptom)
77 {
78 DoOnce.Run(ClassName(), player, "IncreaseDiseaseCount");
79
80 CachedObjectsParams.PARAM1_FLOAT.param1 = 30.0 * invertedAgentCountValue;
81 symptom.SetParam(CachedObjectsParams.PARAM1_FLOAT);
82 symptom.SetDuration(Math.Max(3.0, 10 * invertedAgentCountValue));
83 //player.m_AgentPool.ReduceAgent(eAgents.FOOD_POISON, 100.0 * invertedAgentCountValue);
84 player.m_AgentPool.ReduceAgent(eAgents.FOOD_POISON, 60);
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 if (m_Exhaustion)
99 {
100 m_ExhaustionTimer += deltaT;
101 if (m_ExhaustionTimer >= 30 * invertedAgentCountValue)
102 {
103 player.GetStaminaHandler().DeactivateRecoveryModifier(EStaminaMultiplierTypes.VOMIT_EXHAUSTION);
104 player.GetStaminaHandler().DeactivateDepletionModifier(EStaminaMultiplierTypes.VOMIT_EXHAUSTION);
105
106 m_Exhaustion = false;
107 }
108 }
109 }
eAgents
Определения EAgents.c:3
DayZPlayer m_Player
Определения Hand_Events.c:42
EStaminaMultiplierTypes
Определения StaminaHandler.c:2
float m_ExhaustionTimer
Определения Poisoning.c:12
static const int VOMIT_OCCURRENCES_MIN
Определения Poisoning.c:6
static const int WATER_DRAIN_FROM_VOMIT
Определения Poisoning.c:9
bool m_Exhaustion
Определения Poisoning.c:13
static const int VOMIT_OCCURRENCES_MAX
Определения Poisoning.c:7
static const int AGENT_THRESHOLD_DEACTIVATE
Определения Poisoning.c:4
static const int ENERGY_DRAIN_FROM_VOMIT
Определения Poisoning.c:10
void SetDuration(float duration)
Определения StateBase.c:80
void SetParam(Param p)
Определения StateBase.c:105

Перекрестные ссылки AGENT_THRESHOLD_DEACTIVATE, ENERGY_DRAIN_FROM_VOMIT, Math::InverseLerp(), Math::Lerp(), m_Exhaustion, m_ExhaustionTimer, m_Player, Math::Max(), CachedObjectsParams::PARAM1_FLOAT, Math::RandomFloat01(), DoOnce::Run(), SymptomBase::SetDuration(), SymptomBase::SetParam(), VOMIT_OCCURRENCES_MAX, VOMIT_OCCURRENCES_MIN и WATER_DRAIN_FROM_VOMIT.