1 #using scripts\shared\callbacks_shared;
2 #using scripts\shared\exploder_shared;
3 #using scripts\shared\sound_shared;
4 #using scripts\shared\system_shared;
5 #using scripts\shared\util_shared;
7 #insert scripts\shared\shared.gsh;
20 if(!isdefined(level.createFXent))
23 creatingExploderArray =
false;
25 if(!isdefined(level.createFXexploders))
27 creatingExploderArray =
true;
29 level.createFXexploders = [];
32 for ( i=0; i<level.createFXent.size; i++ )
34 ent = level.createFXent[i];
38 if(!isdefined(level._createfxforwardandupset))
42 if(!isdefined(level._createfxforwardandupset))
48 if (ent.v[
"type"] ==
"loopfx")
52 if (ent.v[
"type"] ==
"oneshotfx")
56 if (ent.v[
"type"] ==
"soundfx")
61 if(creatingExploderArray && ent.v[
"type"] ==
"exploder")
63 if(!isdefined(level.createFXexploders[ent.v[
"exploder"]]))
65 level.createFXexploders[ent.v[
"exploder"]] = [];
70 level.createFXexploders[ent.v[
"exploder"]][level.createFXexploders[ent.v[
"exploder"]].size] = ent;
74 level._createfxforwardandupset =
true;
80 if ( !isdefined( level._effect[fxId] ) )
82 assertmsg(
"FX Not Precached: '" + fxId +
"' at: " + origin );
90 if (!isdefined(level.createFXent))
91 level.createFXent = [];
93 level.createFXent[level.createFXent.size] = ent;
95 ent.v[
"type"] =
"soundfx";
96 ent.v[
"fxid"] =
"No FX";
97 ent.v[
"soundalias"] =
"nil";
98 ent.v[
"angles"] = (0,0,0);
99 ent.v[
"origin"] = (0,0,0);
107 if (!isdefined(level.createFXent))
108 level.createFXent = [];
110 level.createFXent[level.createFXent.size] = ent;
112 ent.v[
"type"] = type;
113 ent.v[
"fxid"] = fxid;
114 ent.v[
"angles"] = (0,0,0);
115 ent.v[
"origin"] = (0,0,0);
123 ent.v[
"delay" ] = -15;
130 ent.v[
"delay" ] = 0.5;
136 self.v[
"up"] = anglestoup(
self.v[
"angles"]);
137 self.v[
"forward"] = anglestoforward(
self.v[
"angles"]);
145 if (
self.v[
"delay"] > 0 )
147 waitrealtime(
self.v[
"delay"]);
162 self notify(
"stop_loop" );
168 if ( isdefined(
self.v[
"soundalias"] ) && (
self.v[
"soundalias"] !=
"nil" ) )
170 if ( isdefined(
self.v[
"stopable" ] ) &&
self.v[
"stopable" ] )
187 waitrealtime(RandomFloatRange( 0.05, 0.1 ));
193 if (isdefined (
self.fxStart))
194 level waittill (
"start fx" +
self.fxStart);
203 if (isdefined (
self.fxStop))
204 level waittill (
"stop fx" +
self.fxStop);
208 if (isdefined (
self.looperFX))
209 deletefx(clientNum,
self.looperFX);
211 if (isdefined (
self.fxStart))
212 level waittill (
"start fx" +
self.fxStart);
223 if(isdefined(
self.looper))
225 deletefx(clientNum,
self.looper);
250 validate(
self.v[
"fxid"],
self.v[
"origin"] );
252 self.looperFX = PlayFX( clientNum, level._effect[
self.v[
"fxid"]],
self.v[
"origin"],
self.v[
"forward"],
self.v[
"up"],
self.v[
"delay"],
self.v[
"primlightfrac" ],
self.v[
"lightoriginoffs" ] );
256 if( isdefined(
self.v[
"delay"]) )
258 waitrealtime(
self.v[
"delay"] );
262 while( isfxplaying( clientNum,
self.looperFX ) )
267 self.looperFX = PlayFX( clientNum, level._effect[
self.v[
"fxid"]],
self.v[
"origin"],
self.v[
"forward"],
self.v[
"up"], 0,
self.v[
"primlightfrac" ],
self.v[
"lightoriginoffs" ] );
273 validate(
self.v[
"fxid"],
self.v[
"origin"] );
275 self.looperFX = PlayFX( clientNum, level._effect[
self.v[
"fxid"]],
self.v[
"origin"],
self.v[
"forward"],
self.v[
"up"],
self.v[
"delay"],
self.v[
"primlightfrac" ],
self.v[
"lightoriginoffs" ] );
282 self endon(
"entityshutdown" );
283 self endon(
"stop_blinky_light" );
285 self.lightTagName = tagName;
293 if( isdefined(
self.stunned ) &&
self.stunned )
299 if ( isdefined(
self ) )
303 self.blinkyLightFx = PlayFXOnTag( localClientNum, friendlyfx,
self,
self.lightTagName );
307 self.blinkyLightFx = PlayFXOnTag( localClientNum, enemyfx,
self,
self.lightTagName );
317 self notify(
"stop_blinky_light" );
319 if ( !isdefined(
self.blinkyLightFx ) )
324 stopfx(localClientNum,
self.blinkyLightFx);
325 self.blinkyLightFx = undefined;
330 self endon(
"entityshutdown" );
331 self endon(
"stop_blinky_light" );
333 self waittill(
"emp" );