Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
volcanictrigger.c
Go to the documentation of this file.
1
3{
4 static VolcanicTrigger m_SourceDamageInstance; // this is used only server side for logging damage source in admin log
5 static const float HEAT_DAMAGE_MULTIPLIER = 5;
6 static const float HEAT_DAMAGE_TICK_TIME = 2;
7
9
10 override void EEInit()
11 {
12 if (GetGame().IsServer() && !m_SourceDamageInstance)
13 m_SourceDamageInstance = this;
14
15 super.EEInit();
16
17 #ifndef SERVER
19 #endif
20 }
21
22 override string GetDisplayName()
23 {
24 return "#STR_volcanicarea";
25 }
26
27 override void EEDelete( EntityAI parent )
28 {
30 m_VaporParticle.Stop();
31
32 super.EEDelete(parent);
33 }
34
35 override void OnEnterServerEvent( TriggerInsider insider )
36 {
37 super.OnEnterServerEvent(insider);
38
39 if (insider)
40 {
41 PlayerBase playerInsider = PlayerBase.Cast(insider.GetObject());
42 if (playerInsider)
43 playerInsider.SetInEffectAreaTypeFlag(EEffectAreaType.VOLCANIC);
44 }
45 }
46
47 override void OnLeaveServerEvent( TriggerInsider insider )
48 {
49 super.OnLeaveServerEvent(insider);
50
51 if (insider)
52 {
53 PlayerBase playerInsider = PlayerBase.Cast(insider.GetObject());
54 if (playerInsider)
55 playerInsider.UnsetInEffectAreaTypeFlag(EEffectAreaType.VOLCANIC);
56 }
57 }
58
59 override void OnEnterClientEvent( TriggerInsider insider )
60 {
61 super.OnEnterClientEvent(insider);
62
63 if (insider)
64 {
65 PlayerBase playerInsider = PlayerBase.Cast(insider.GetObject());
66 if (playerInsider)
67 playerInsider.SetInEffectAreaTypeFlag(EEffectAreaType.VOLCANIC);
68 }
69 }
70
71 override void OnLeaveClientEvent( TriggerInsider insider )
72 {
73 super.OnLeaveClientEvent(insider);
74
75 if (insider)
76 {
77 PlayerBase playerInsider = PlayerBase.Cast(insider.GetObject());
78 if (playerInsider)
79 playerInsider.UnsetInEffectAreaTypeFlag(EEffectAreaType.VOLCANIC);
80 }
81 }
82
83 protected void SpawnVaporEffect()
84 {
85 vector pos = GetPosition();
86 pos[1] = GetGame().SurfaceY(pos[0], pos[2]) + 0.5; // Snap to terrain surface
87
88 m_VaporParticle = ParticleManager.GetInstance().PlayInWorld(ParticleList.VOLCANO, pos);
89
90 int randSize = Math.RandomIntInclusive(-1,2);
91 int randRate = Math.RandomIntInclusive(-1,2);
92
95 }
96
97 // Server side effect application
98 static void ApplyEffects(PlayerBase player)
99 {
100 player.ProcessDirectDamage(DamageType.CUSTOM, m_SourceDamageInstance, "", "HeatDamage", "0 0 0", HEAT_DAMAGE_MULTIPLIER);
101 }
102}
proto native float SurfaceY(float x, float z)
Definition enmath.c:7
Entity which has the particle instance as an ObjectComponent.
override void IncrementParticleParam(int parameter_id, float value)
Increments the value of the given parameter relatively from the CURRENT value.
static override Particle PlayInWorld(int particle_id, vector global_pos)
Creates a particle emitter on the given position and activates it.
The object which is in a trigger and its metadata.
Volcanic area trigger.
override void OnLeaveClientEvent(TriggerInsider insider)
static void ApplyEffects(PlayerBase player)
override void EEDelete(EntityAI parent)
override string GetDisplayName()
override void OnLeaveServerEvent(TriggerInsider insider)
override void OnEnterServerEvent(TriggerInsider insider)
ParticleSource m_VaporParticle
override void EEInit()
override void OnEnterClientEvent(TriggerInsider insider)
DamageType
exposed from C++ (do not change)
proto native CGame GetGame()
EmitorParam
Definition envisual.c:114
class JsonUndergroundAreaTriggerData GetPosition
void ParticleManager(ParticleManagerSettings settings)
Constructor (ctor)