DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
GeyserArea.c
См. документацию.
2{
3 DORMANT = 0,
4 ERUPTION_SOON = 1, // bubbling
5 ERUPTING_PRIMARY = 2, // main particle
6 ERUPTING_SECONDARY = 4 // secondary tall particle
7}
8
9class GeyserArea : EffectArea
10{
11 protected const int UPDATE_RATE = 1000; // ms
12 protected const float PRE_ERUPTION_DURATION = 5; // length of the pre eruption phase in seconds
13
14 protected int m_TimeElapsed; // seconds
15 protected float m_RandomizedInterval; // randomized interval to 80% - 120% of the set value
16 protected float m_RandomizedDuration; // randomized duration to 80% - 120% of the set value
18
19 override void EEDelete( EntityAI parent )
20 {
21 if (GetGame().IsClient() && m_GeyserTrigger)
22 m_GeyserTrigger.StopEffects();
23
24 super.EEDelete( parent );
25 }
26
27 override void InitZoneServer()
28 {
29 super.InitZoneServer();
30
31 if ( m_TriggerType != "" )
32 {
34 m_GeyserTrigger = GeyserTrigger.Cast(m_Trigger);
35 }
36
38
39 m_RandomizedInterval = Math.RandomInt(m_EffectInterval * 0.8, m_EffectInterval * 1.2);
40 }
41
42 void TickState()
43 {
44 m_TimeElapsed += UPDATE_RATE * 0.001;
45
46 if (m_GeyserTrigger.GetGeyserState() == EGeyserState.DORMANT)
47 {
49 {
50 m_TimeElapsed = 0;
51 m_RandomizedDuration = Math.RandomInt(m_EffectDuration * 0.8, m_EffectDuration * 1.2);
52 m_GeyserTrigger.AddGeyserState(EGeyserState.ERUPTION_SOON);
53 }
54 }
55 else
56 {
57 if (m_GeyserTrigger.GetGeyserState() & EGeyserState.ERUPTION_SOON)
58 {
60 {
61 m_GeyserTrigger.RemoveGeyserState(EGeyserState.ERUPTION_SOON);
62 m_GeyserTrigger.AddGeyserState(EGeyserState.ERUPTING_PRIMARY);
64 return;
65 }
66 }
67
68 if (m_GeyserTrigger.GetGeyserState() & EGeyserState.ERUPTING_PRIMARY)
69 {
71 {
72 m_TimeElapsed = 0;
73 m_RandomizedInterval = Math.RandomInt(m_EffectInterval * 0.8, m_EffectInterval * 1.2);
74 m_GeyserTrigger.RemoveGeyserState(EGeyserState.ERUPTING_PRIMARY | EGeyserState.ERUPTING_SECONDARY);
75 return;
76 }
77
78 if (m_GeyserTrigger.GetGeyserState() & EGeyserState.ERUPTING_SECONDARY)
79 {
80 if (Math.RandomBool()) // 50% chance to end secondary eruption every update
81 m_GeyserTrigger.RemoveGeyserState(EGeyserState.ERUPTING_SECONDARY);
82 }
83 else if (Math.RandomBool()) // 50% chance to start secondary eruption every update
84 m_GeyserTrigger.AddGeyserState(EGeyserState.ERUPTING_SECONDARY);
85 }
86 }
87 }
88
90 {
91 array<Object> nearestObjects = new array<Object>();
92 GetGame().GetObjectsAtPosition(m_Position, m_Radius, nearestObjects, null);
93
94 foreach (Object obj : nearestObjects)
95 {
96 EntityAI entity = EntityAI.Cast(obj);
97 if (entity)
98 entity.ProcessDirectDamage(DamageType.CUSTOM, this, "", "HeatDamage", "0 0 0", 1000);
99 }
100 }
101}
float m_Radius
Определения AIGroupBehaviour.c:10
override void InitZoneServer()
Определения ContaminatedArea.c:67
override void EEDelete(EntityAI parent)
Определения ContaminatedArea.c:57
DamageType
exposed from C++ (do not change)
Определения DamageSystem.c:11
vector m_Position
Cached world position.
Определения Effect.c:41
GeyserTrigger m_GeyserTrigger
Определения GeyserArea.c:17
int m_TimeElapsed
Определения GeyserArea.c:14
void KillEntitiesInArea()
Определения GeyserArea.c:89
float m_RandomizedInterval
Определения GeyserArea.c:15
float m_RandomizedDuration
Определения GeyserArea.c:16
const float PRE_ERUPTION_DURATION
Определения GeyserArea.c:12
void TickState()
Определения GeyserArea.c:42
enum EGeyserState UPDATE_RATE
EGeyserState
Определения GeyserArea.c:2
@ ERUPTION_SOON
Определения GeyserArea.c:4
@ DORMANT
Определения GeyserArea.c:3
@ ERUPTING_SECONDARY
Определения GeyserArea.c:6
@ ERUPTING_PRIMARY
Определения GeyserArea.c:5
void CreateTrigger()
Определения TrapBase.c:475
proto native void GetObjectsAtPosition(vector pos, float radius, out array< Object > objects, out array< CargoBase > proxyCargos)
Returns list of all objects in circle "radius" around position "pos".
override ScriptCallQueue GetCallQueue(int call_category)
Определения DayZGame.c:1187
Определения Building.c:6
Определения GeyserTrigger.c:2
Определения EnMath.c:7
Определения ObjectTyped.c:2
proto void CallLater(func fn, int delay=0, bool repeat=false, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL)
adds call into the queue with given parameters and arguments (arguments are held in memory until the ...
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto native CGame GetGame()
static bool RandomBool()
Returns a random bool .
Определения EnMath.c:73
static proto int RandomInt(int min, int max)
Returns a random int number between and min [inclusive] and max [exclusive].
const int CALL_CATEGORY_SYSTEM
Определения tools.c:8