mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
525 lines
11 KiB
Plaintext
525 lines
11 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps\mp\_fx.gsc
|
|
* Game: Call of Duty: Black Ops 2
|
|
* Platform: PC
|
|
* Function Count: 31
|
|
* Decompile Time: 8 ms
|
|
* Timestamp: 10/28/2023 12:10:56 AM
|
|
*******************************************************************/
|
|
|
|
#include common_scripts/utility;
|
|
#include maps/mp/_createfx;
|
|
#include maps/mp/_utility;
|
|
|
|
//Function Number: 1
|
|
print_org(fxcommand,fxid,fxpos,waittime)
|
|
{
|
|
/#
|
|
if(GetDvar(#"F49A52C") == "1")
|
|
{
|
|
println("{");
|
|
println("\"origin\" \" + fxpos[0] + " " + fxpos[1] + " " + fxpos[2] + "\");
|
|
println("\"classname\" \"script_model\");
|
|
println("\"model\" \"fx\");
|
|
println("\"script_fxcommand\" \" + fxcommand + "\");
|
|
println("\"script_fxid\" \" + fxid + "\");
|
|
println("\"script_delay\" \" + waittime + "\");
|
|
println("}");
|
|
}
|
|
#/
|
|
}
|
|
|
|
//Function Number: 2
|
|
oneshotfx(fxid,fxpos,waittime,fxpos2)
|
|
{
|
|
}
|
|
|
|
//Function Number: 3
|
|
oneshotfxthread()
|
|
{
|
|
wait(0.05);
|
|
if(self.v["delay"] > 0)
|
|
{
|
|
wait(self.v["delay"]);
|
|
}
|
|
|
|
create_triggerfx();
|
|
}
|
|
|
|
//Function Number: 4
|
|
create_triggerfx()
|
|
{
|
|
self.looper = spawnfx_wrapper(self.v["fxid"],self.v["origin"],self.v["forward"],self.v["up"]);
|
|
triggerfx(self.looper,self.v["delay"]);
|
|
create_loopsound();
|
|
}
|
|
|
|
//Function Number: 5
|
|
exploderfx(num,fxid,fxpos,waittime,fxpos2,firefx,firefxdelay,firefxsound,fxsound,fxquake,fxdamage,soundalias,repeat,delay_min,delay_max,damage_radius,firefxtimeout,exploder_group)
|
|
{
|
|
if(1)
|
|
{
|
|
ent = createexploder(fxid);
|
|
ent.v["origin"] = fxpos;
|
|
ent.v["angles"] = (0,0,0);
|
|
if(IsDefined(fxpos2))
|
|
{
|
|
ent.v["angles"] = VectorToAngles(fxpos2 - fxpos);
|
|
}
|
|
|
|
ent.v["delay"] = waittime;
|
|
ent.v["exploder"] = num;
|
|
return;
|
|
}
|
|
|
|
fx = spawn("script_origin",(0,0,0));
|
|
fx.origin = fxpos;
|
|
fx.angles = VectorToAngles(fxpos2 - fxpos);
|
|
fx.script_exploder = num;
|
|
fx.script_fxid = fxid;
|
|
fx.script_delay = waittime;
|
|
fx.script_firefx = firefx;
|
|
fx.script_firefxdelay = firefxdelay;
|
|
fx.script_firefxsound = firefxsound;
|
|
fx.script_sound = fxsound;
|
|
fx.script_earthquake = fxquake;
|
|
fx.script_damage = fxdamage;
|
|
fx.script_radius = damage_radius;
|
|
fx.script_soundalias = soundalias;
|
|
fx.script_firefxtimeout = firefxtimeout;
|
|
fx.script_repeat = repeat;
|
|
fx.script_delay_min = delay_min;
|
|
fx.script_delay_max = delay_max;
|
|
fx.script_exploder_group = exploder_group;
|
|
forward = AnglesToForward(fx.angles);
|
|
forward = VectorScale(forward);
|
|
fx.targetpos = fxpos + forward;
|
|
if(!(IsDefined(level._script_exploders)))
|
|
{
|
|
level._script_exploders = [];
|
|
}
|
|
|
|
level._script_exploders[level._script_exploders.size] = fx;
|
|
maps/mp/_createfx::createfx_showorigin(fxid,fxpos,waittime,fxpos2,"exploderfx",fx,undefined,firefx,firefxdelay,firefxsound,fxsound,fxquake,fxdamage,soundalias,repeat,delay_min,delay_max,damage_radius,firefxtimeout);
|
|
}
|
|
|
|
//Function Number: 6
|
|
loopfx(fxid,fxpos,waittime,fxpos2,fxstart,fxstop,timeout)
|
|
{
|
|
/#
|
|
println("Loopfx is deprecated!");
|
|
#/
|
|
ent = createloopeffect(fxid);
|
|
ent.v["origin"] = fxpos;
|
|
ent.v["angles"] = (0,0,0);
|
|
if(IsDefined(fxpos2))
|
|
{
|
|
ent.v["angles"] = VectorToAngles(fxpos2 - fxpos);
|
|
}
|
|
|
|
ent.v["delay"] = waittime;
|
|
}
|
|
|
|
//Function Number: 7
|
|
create_looper()
|
|
{
|
|
self.looper = playloopedfx(level._effect[self.v["fxid"]],self.v["delay"],self.v["origin"],0,self.v["forward"],self.v["up"]);
|
|
create_loopsound();
|
|
}
|
|
|
|
//Function Number: 8
|
|
create_loopsound()
|
|
{
|
|
self notify("stop_loop");
|
|
if(IsDefined(self.v["soundalias"]) && self.v["soundalias"] != "nil")
|
|
{
|
|
if(IsDefined(self.looper))
|
|
{
|
|
self.looper thread maps/mp/_utility::loop_fx_sound(self.v["soundalias"],self.v["origin"],"death");
|
|
}
|
|
else
|
|
{
|
|
thread maps/mp/_utility::loop_fx_sound(self.v["soundalias"],self.v["origin"],"stop_loop");
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 9
|
|
stop_loopsound()
|
|
{
|
|
self notify("stop_loop");
|
|
}
|
|
|
|
//Function Number: 10
|
|
loopfxthread()
|
|
{
|
|
wait(0.05);
|
|
if(IsDefined(self.fxstart))
|
|
{
|
|
level waittill("start fx" + self.fxstart);
|
|
}
|
|
|
|
while(1)
|
|
{
|
|
create_looper();
|
|
if(IsDefined(self.timeout))
|
|
{
|
|
thread loopfxstop(self.timeout);
|
|
}
|
|
|
|
if(IsDefined(self.fxstop))
|
|
{
|
|
level waittill("stop fx" + self.fxstop);
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(IsDefined(self.looper))
|
|
{
|
|
self.looper delete();
|
|
}
|
|
|
|
if(IsDefined(self.fxstart))
|
|
{
|
|
level waittill("start fx" + self.fxstart);
|
|
continue;
|
|
}
|
|
|
|
return;
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
loopfxchangeid(ent)
|
|
{
|
|
self endon("death");
|
|
ent waittill("effect id changed",change);
|
|
}
|
|
|
|
//Function Number: 12
|
|
loopfxchangeorg(ent)
|
|
{
|
|
self endon("death");
|
|
for(;;)
|
|
{
|
|
ent waittill("effect org changed",change);
|
|
self.origin = change;
|
|
}
|
|
}
|
|
|
|
//Function Number: 13
|
|
loopfxchangedelay(ent)
|
|
{
|
|
self endon("death");
|
|
ent waittill("effect delay changed",change);
|
|
}
|
|
|
|
//Function Number: 14
|
|
loopfxdeletion(ent)
|
|
{
|
|
self endon("death");
|
|
ent waittill("effect deleted");
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 15
|
|
loopfxstop(timeout)
|
|
{
|
|
self endon("death");
|
|
wait(timeout);
|
|
self.looper delete();
|
|
}
|
|
|
|
//Function Number: 16
|
|
loopsound(sound,pos,waittime)
|
|
{
|
|
level thread loopsoundthread(sound,pos,waittime);
|
|
}
|
|
|
|
//Function Number: 17
|
|
loopsoundthread(sound,pos,waittime)
|
|
{
|
|
org = spawn("script_origin",pos);
|
|
org.origin = pos;
|
|
org playloopsound(sound);
|
|
}
|
|
|
|
//Function Number: 18
|
|
gunfireloopfx(fxid,fxpos,shotsmin,shotsmax,shotdelaymin,shotdelaymax,betweensetsmin,betweensetsmax)
|
|
{
|
|
thread gunfireloopfxthread(fxid,fxpos,shotsmin,shotsmax,shotdelaymin,shotdelaymax,betweensetsmin,betweensetsmax);
|
|
}
|
|
|
|
//Function Number: 19
|
|
gunfireloopfxthread(fxid,fxpos,shotsmin,shotsmax,shotdelaymin,shotdelaymax,betweensetsmin,betweensetsmax)
|
|
{
|
|
level endon("stop all gunfireloopfx");
|
|
wait(0.05);
|
|
if(betweensetsmax < betweensetsmin)
|
|
{
|
|
temp = betweensetsmax;
|
|
betweensetsmax = betweensetsmin;
|
|
betweensetsmin = temp;
|
|
}
|
|
|
|
betweensetsbase = betweensetsmin;
|
|
betweensetsrange = betweensetsmax - betweensetsmin;
|
|
if(shotdelaymax < shotdelaymin)
|
|
{
|
|
temp = shotdelaymax;
|
|
shotdelaymax = shotdelaymin;
|
|
shotdelaymin = temp;
|
|
}
|
|
|
|
shotdelaybase = shotdelaymin;
|
|
shotdelayrange = shotdelaymax - shotdelaymin;
|
|
if(shotsmax < shotsmin)
|
|
{
|
|
temp = shotsmax;
|
|
shotsmax = shotsmin;
|
|
shotsmin = temp;
|
|
}
|
|
|
|
shotsbase = shotsmin;
|
|
shotsrange = shotsmax - shotsmin;
|
|
fxent = spawnfx(level._effect[fxid],fxpos);
|
|
for(;;)
|
|
{
|
|
shotnum = shotsbase + randomint(shotsrange);
|
|
for(i = 0;i < shotnum;i++)
|
|
{
|
|
triggerfx(fxent);
|
|
wait(shotdelaybase + randomfloat(shotdelayrange));
|
|
}
|
|
|
|
wait(betweensetsbase + randomfloat(betweensetsrange));
|
|
}
|
|
}
|
|
|
|
//Function Number: 20
|
|
gunfireloopfxvec(fxid,fxpos,fxpos2,shotsmin,shotsmax,shotdelaymin,shotdelaymax,betweensetsmin,betweensetsmax)
|
|
{
|
|
thread gunfireloopfxvecthread(fxid,fxpos,fxpos2,shotsmin,shotsmax,shotdelaymin,shotdelaymax,betweensetsmin,betweensetsmax);
|
|
}
|
|
|
|
//Function Number: 21
|
|
gunfireloopfxvecthread(fxid,fxpos,fxpos2,shotsmin,shotsmax,shotdelaymin,shotdelaymax,betweensetsmin,betweensetsmax)
|
|
{
|
|
level endon("stop all gunfireloopfx");
|
|
wait(0.05);
|
|
if(betweensetsmax < betweensetsmin)
|
|
{
|
|
temp = betweensetsmax;
|
|
betweensetsmax = betweensetsmin;
|
|
betweensetsmin = temp;
|
|
}
|
|
|
|
betweensetsbase = betweensetsmin;
|
|
betweensetsrange = betweensetsmax - betweensetsmin;
|
|
if(shotdelaymax < shotdelaymin)
|
|
{
|
|
temp = shotdelaymax;
|
|
shotdelaymax = shotdelaymin;
|
|
shotdelaymin = temp;
|
|
}
|
|
|
|
shotdelaybase = shotdelaymin;
|
|
shotdelayrange = shotdelaymax - shotdelaymin;
|
|
if(shotsmax < shotsmin)
|
|
{
|
|
temp = shotsmax;
|
|
shotsmax = shotsmin;
|
|
shotsmin = temp;
|
|
}
|
|
|
|
shotsbase = shotsmin;
|
|
shotsrange = shotsmax - shotsmin;
|
|
fxpos2 = vectornormalize(fxpos2 - fxpos);
|
|
fxent = spawnfx(level._effect[fxid],fxpos,fxpos2);
|
|
for(;;)
|
|
{
|
|
shotnum = shotsbase + randomint(shotsrange);
|
|
for(i = 0;i < int(shotnum / level.fxfireloopmod);i++)
|
|
{
|
|
triggerfx(fxent);
|
|
delay = shotdelaybase + randomfloat(shotdelayrange) * level.fxfireloopmod;
|
|
if(delay < 0.05)
|
|
{
|
|
delay = 0.05;
|
|
}
|
|
|
|
wait(delay);
|
|
}
|
|
|
|
wait(shotdelaybase + randomfloat(shotdelayrange));
|
|
wait(betweensetsbase + randomfloat(betweensetsrange));
|
|
}
|
|
}
|
|
|
|
//Function Number: 22
|
|
setfireloopmod(value)
|
|
{
|
|
level.fxfireloopmod = 1 / value;
|
|
}
|
|
|
|
//Function Number: 23
|
|
setup_fx()
|
|
{
|
|
if(!IsDefined(self.script_fxid) || !IsDefined(self.script_fxcommand) || !IsDefined(self.script_delay))
|
|
{
|
|
return;
|
|
}
|
|
|
|
org = undefined;
|
|
if(IsDefined(self.target))
|
|
{
|
|
ent = getent(self.target,"targetname");
|
|
if(IsDefined(ent))
|
|
{
|
|
org = ent.origin;
|
|
}
|
|
}
|
|
|
|
fxstart = undefined;
|
|
if(IsDefined(self.script_fxstart))
|
|
{
|
|
fxstart = self.script_fxstart;
|
|
}
|
|
|
|
fxstop = undefined;
|
|
if(IsDefined(self.script_fxstop))
|
|
{
|
|
fxstop = self.script_fxstop;
|
|
}
|
|
|
|
if(self.script_fxcommand == "OneShotfx")
|
|
{
|
|
oneshotfx(self.script_fxid,self.origin,self.script_delay,org);
|
|
}
|
|
|
|
if(self.script_fxcommand == "loopfx")
|
|
{
|
|
loopfx(self.script_fxid,self.origin,self.script_delay,org,fxstart,fxstop);
|
|
}
|
|
|
|
if(self.script_fxcommand == "loopsound")
|
|
{
|
|
loopsound(self.script_fxid,self.origin,self.script_delay);
|
|
}
|
|
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 24
|
|
script_print_fx()
|
|
{
|
|
/#
|
|
if(!IsDefined(self.script_fxid) || !IsDefined(self.script_fxcommand) || !IsDefined(self.script_delay))
|
|
{
|
|
println("Effect at origin ",self.origin," doesn\'t have script_fxid/script_fxcommand/script_delay");
|
|
self delete();
|
|
return;
|
|
}
|
|
|
|
if(IsDefined(self.target))
|
|
{
|
|
org = getent(self.target,"targetname").origin;
|
|
}
|
|
else
|
|
{
|
|
org = "undefined";
|
|
}
|
|
|
|
if(self.script_fxcommand == "OneShotfx")
|
|
{
|
|
println("mapsmp_fx::OneShotfx(\" + self.script_fxid + "\", " + self.origin + ", " + self.script_delay + ", " + org + ");");
|
|
}
|
|
|
|
if(self.script_fxcommand == "loopfx")
|
|
{
|
|
println("mapsmp_fx::LoopFx(\" + self.script_fxid + "\", " + self.origin + ", " + self.script_delay + ", " + org + ");");
|
|
}
|
|
|
|
if(self.script_fxcommand == "loopsound")
|
|
{
|
|
println("mapsmp_fx::LoopSound(\" + self.script_fxid + "\", " + self.origin + ", " + self.script_delay + ", " + org + ");");
|
|
}
|
|
#/
|
|
}
|
|
|
|
//Function Number: 25
|
|
script_playfx(id,pos,pos2)
|
|
{
|
|
if(!(id))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(IsDefined(pos2))
|
|
{
|
|
playfx(id,pos,pos2);
|
|
}
|
|
else
|
|
{
|
|
playfx(id,pos);
|
|
}
|
|
}
|
|
|
|
//Function Number: 26
|
|
script_playfxontag(id,ent,tag)
|
|
{
|
|
if(!(id))
|
|
{
|
|
return;
|
|
}
|
|
|
|
playfxontag(id,ent,tag);
|
|
}
|
|
|
|
//Function Number: 27
|
|
grenadeexplosionfx(pos)
|
|
{
|
|
playfx(level._effect["mechanical explosion"],pos);
|
|
earthquake(0.15,0.5,pos,250);
|
|
}
|
|
|
|
//Function Number: 28
|
|
soundfx(fxid,fxpos,endonnotify)
|
|
{
|
|
org = spawn("script_origin",(0,0,0));
|
|
org.origin = fxpos;
|
|
org playloopsound(fxid);
|
|
if(IsDefined(endonnotify))
|
|
{
|
|
org thread soundfxdelete(endonnotify);
|
|
}
|
|
}
|
|
|
|
//Function Number: 29
|
|
soundfxdelete(endonnotify)
|
|
{
|
|
level waittill(endonnotify);
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 30
|
|
blenddelete(blend)
|
|
{
|
|
self waittill("death");
|
|
blend delete();
|
|
}
|
|
|
|
//Function Number: 31
|
|
spawnfx_wrapper(fx_id,origin,forward,up)
|
|
{
|
|
/#
|
|
/#
|
|
assert(IsDefined(level._effect[fx_id]),"Missing level._effect[\" + fx_id + "\"]. You did not setup the fx before calling it in createFx.");
|
|
#/
|
|
#/
|
|
fx_object = spawnfx(level._effect[fx_id],origin,forward,up);
|
|
return fx_object;
|
|
} |