mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
198 lines
3.8 KiB
Plaintext
198 lines
3.8 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps\mp\_empgrenade.gsc
|
|
* Game: Call of Duty: Black Ops 2
|
|
* Platform: PC
|
|
* Function Count: 10
|
|
* Decompile Time: 1 ms
|
|
* Timestamp: 10/28/2023 12:10:55 AM
|
|
*******************************************************************/
|
|
|
|
#include common_scripts/utility;
|
|
#include maps/mp/_utility;
|
|
#include maps/mp/killstreaks/_emp;
|
|
|
|
//Function Number: 1
|
|
init()
|
|
{
|
|
precacheshellshock("flashbang");
|
|
thread onplayerconnect();
|
|
}
|
|
|
|
//Function Number: 2
|
|
onplayerconnect()
|
|
{
|
|
for(;;)
|
|
{
|
|
level waittill("connected",player);
|
|
player thread onplayerspawned();
|
|
}
|
|
}
|
|
|
|
//Function Number: 3
|
|
onplayerspawned()
|
|
{
|
|
self endon("disconnect");
|
|
for(;;)
|
|
{
|
|
self waittill("spawned_player");
|
|
self thread monitorempgrenade();
|
|
}
|
|
}
|
|
|
|
//Function Number: 4
|
|
monitorempgrenade()
|
|
{
|
|
self endon("disconnect");
|
|
self endon("death");
|
|
self.empendtime = 0;
|
|
while(1)
|
|
{
|
|
self waittill("emp_grenaded",attacker);
|
|
if(!isalive(self) || self hasperk("specialty_immuneemp"))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
hurtvictim = 1;
|
|
hurtattacker = 0;
|
|
/#
|
|
assert(IsDefined(self.team));
|
|
#/
|
|
if(level.teambased && IsDefined(attacker) && IsDefined(attacker.team) && attacker.team == self.team && attacker != self)
|
|
{
|
|
if(level.friendlyfire == 0)
|
|
{
|
|
continue;
|
|
}
|
|
else if(level.friendlyfire == 1)
|
|
{
|
|
hurtattacker = 0;
|
|
hurtvictim = 1;
|
|
}
|
|
else if(level.friendlyfire == 2)
|
|
{
|
|
hurtvictim = 0;
|
|
hurtattacker = 1;
|
|
}
|
|
else if(level.friendlyfire == 3)
|
|
{
|
|
hurtattacker = 1;
|
|
hurtvictim = 1;
|
|
}
|
|
}
|
|
|
|
if(hurtvictim && IsDefined(self))
|
|
{
|
|
self thread applyemp(attacker);
|
|
}
|
|
|
|
if(hurtattacker && IsDefined(attacker))
|
|
{
|
|
attacker thread applyemp(attacker);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 5
|
|
applyemp(attacker)
|
|
{
|
|
self notify("applyEmp");
|
|
self endon("applyEmp");
|
|
self endon("disconnect");
|
|
self endon("death");
|
|
wait(0.05);
|
|
if(self == attacker)
|
|
{
|
|
if(IsDefined(self.empendtime))
|
|
{
|
|
emp_time_left_ms = self.empendtime - GetTime();
|
|
if(emp_time_left_ms > 1000)
|
|
{
|
|
self.empduration = emp_time_left_ms / 1000;
|
|
}
|
|
else
|
|
{
|
|
self.empduration = 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
self.empduration = 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
self.empduration = 12;
|
|
}
|
|
|
|
self.empgrenaded = 1;
|
|
self shellshock("flashbang",1);
|
|
self.empendtime = GetTime() + self.empduration * 1000;
|
|
self thread emprumbleloop(0.75);
|
|
self setempjammed(1);
|
|
self thread empgrenadedeathwaiter();
|
|
wait(self.empduration);
|
|
self notify("empGrenadeTimedOut");
|
|
self checktoturnoffemp();
|
|
}
|
|
|
|
//Function Number: 6
|
|
empgrenadedeathwaiter()
|
|
{
|
|
self notify("empGrenadeDeathWaiter");
|
|
self endon("empGrenadeDeathWaiter");
|
|
self endon("empGrenadeTimedOut");
|
|
self waittill("death");
|
|
self checktoturnoffemp();
|
|
}
|
|
|
|
//Function Number: 7
|
|
checktoturnoffemp()
|
|
{
|
|
self.empgrenaded = 0;
|
|
if((level.teambased && maps/mp/killstreaks/_emp::emp_isteamemped(self.team)) || !level.teambased && IsDefined(level.empplayer) && level.empplayer != self)
|
|
{
|
|
return;
|
|
}
|
|
|
|
self setempjammed(0);
|
|
}
|
|
|
|
//Function Number: 8
|
|
emprumbleloop(duration)
|
|
{
|
|
self endon("emp_rumble_loop");
|
|
self notify("emp_rumble_loop");
|
|
goaltime = GetTime() + duration * 1000;
|
|
while(GetTime() < goaltime)
|
|
{
|
|
self playrumbleonentity("damage_heavy");
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 9
|
|
watchempexplosion(owner,weaponname)
|
|
{
|
|
owner endon("disconnect");
|
|
owner endon("team_changed");
|
|
self endon("shutdown_empgrenade");
|
|
self thread watchempgrenadeshutdown();
|
|
owner addweaponstat(weaponname,"used",1);
|
|
self waittill("explode",origin,surface);
|
|
ents = getdamageableentarray(origin,512);
|
|
foreach(ent in ents)
|
|
{
|
|
ent dodamage(1,origin,owner,owner,"none","MOD_GRENADE_SPLASH",0,weaponname);
|
|
}
|
|
}
|
|
|
|
//Function Number: 10
|
|
watchempgrenadeshutdown()
|
|
{
|
|
self endon("explode");
|
|
self waittill("death");
|
|
wait(0.05);
|
|
self notify("shutdown_empgrenade");
|
|
} |