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

◆ TickState()

void TickState ( )
protected

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

55 {
56 m_TimeElapsed += UPDATE_RATE * 0.001;
57
58 if (m_GeyserTrigger.CheckGeyserState(EGeyserState.DORMANT))
59 {
61 {
62 #ifdef ENABLE_LOGGING
63 Debug.Log(m_Name + ": ERUPTION_SOON, interval: " + m_RandomizedInterval + " sec");
64 #endif
65
66 m_GeyserTrigger.AddGeyserState(EGeyserState.ERUPTION_SOON);
67
68 m_TimeElapsed = 0;
69 }
70 }
71 else if (m_GeyserTrigger.CheckGeyserState(EGeyserState.ERUPTION_SOON))
72 {
74 {
75 #ifdef ENABLE_LOGGING
76 Debug.Log(m_Name + ": ERUPTING_PRIMARY, interval: " + m_RandomizedDuration + " sec");
77 #endif
78
79 m_GeyserTrigger.RemoveGeyserState(EGeyserState.ERUPTION_SOON);
80 m_GeyserTrigger.AddGeyserState(EGeyserState.ERUPTING_PRIMARY);
81
83
85 m_SecondaryActive = false;
86 m_TimeElapsed = 0;
87 }
88 }
89 else if (m_GeyserTrigger.CheckGeyserState(EGeyserState.ERUPTING_PRIMARY))
90 {
92 {
94
95 #ifdef ENABLE_LOGGING
96 Debug.Log(m_Name + ": ERUPTION_SOON, interval: " + m_RandomizedInterval + " sec");
97 #endif
98
99 m_GeyserTrigger.RemoveGeyserState(EGeyserState.ERUPTING_PRIMARY);
100 m_GeyserTrigger.RemoveGeyserState(EGeyserState.ERUPTING_SECONDARY);
101 m_GeyserTrigger.AddGeyserState(EGeyserState.ERUPTION_SOON);
102
103 m_TimeElapsed = 0;
104 }
105 else if (Math.IsInRange(m_TimeElapsed, ERUPTION_TALL_DELAY, m_RandomizedDuration - ERUPTION_TALL_DURATION)) // Ensure burst do not overlap with state transitions
106 {
108 {
109 if (Math.RandomBool()) // 50% chance to start secondary eruption every update
110 {
111 m_GeyserTrigger.AddGeyserState(EGeyserState.ERUPTING_SECONDARY);
112
114 m_SecondaryActive = true;
115 }
116 }
117 else if (m_TimeSecondaryElapsed >= 0)
118 {
120
122 {
123 m_GeyserTrigger.RemoveGeyserState(EGeyserState.ERUPTING_SECONDARY);
124 m_SecondaryActive = false;
125 }
127 {
129 }
130 }
131 }
132 }
133 }
bool m_SecondaryActive
Определения GeyserArea.c:16
GeyserTrigger m_GeyserTrigger
Определения GeyserArea.c:22
void RandomizeIntervals()
Определения GeyserArea.c:135
int m_TimeElapsed
Определения GeyserArea.c:18
int m_TimeSecondaryElapsed
Определения GeyserArea.c:19
void KillEntitiesInArea()
Определения GeyserArea.c:141
float m_RandomizedInterval
Определения GeyserArea.c:20
const float ERUPTION_TALL_DURATION
Определения GeyserArea.c:13
float m_RandomizedDuration
Определения GeyserArea.c:21
const float ERUPTION_TALL_DELAY
Определения GeyserArea.c:14
const float PRE_ERUPTION_DURATION
Определения GeyserArea.c:12
enum EGeyserState UPDATE_RATE
EGeyserState
Определения GeyserArea.c:2
class SyncedValue m_Name
static void Log(string message=LOG_DEFAULT, string plugin=LOG_DEFAULT, string author=LOG_DEFAULT, string label=LOG_DEFAULT, string entity=LOG_DEFAULT)
Prints debug message with normal prio.
Определения 3_Game/tools/Debug.c:122
Определения 3_Game/tools/Debug.c:2
Определения EnMath.c:7
static proto bool IsInRange(float v, float min, float max)
Returns if value is between min and max (inclusive)
static bool RandomBool()
Returns a random bool .
Определения EnMath.c:73

Перекрестные ссылки ERUPTION_TALL_DELAY, ERUPTION_TALL_DURATION, Math::IsInRange(), KillEntitiesInArea(), Debug::Log(), m_GeyserTrigger, m_Name, m_RandomizedDuration, m_RandomizedInterval, m_SecondaryActive, m_TimeElapsed, m_TimeSecondaryElapsed, PRE_ERUPTION_DURATION, Math::RandomBool(), RandomizeIntervals() и UPDATE_RATE.

Используется в InitZoneServer().