135 lines
3.0 KiB
Plaintext
135 lines
3.0 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
init()
|
|
{
|
|
thread onplayerconnect();
|
|
}
|
|
|
|
onplayerconnect()
|
|
{
|
|
for (;;)
|
|
{
|
|
level waittill( "connected", var_0 );
|
|
var_0 thread onplayerspawned();
|
|
}
|
|
}
|
|
|
|
onplayerspawned()
|
|
{
|
|
self endon( "disconnect" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "spawned_player" );
|
|
thread monitorempgrenade();
|
|
}
|
|
}
|
|
|
|
monitorempgrenade()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "faux_spawn" );
|
|
self.empendtime = 0;
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "emp_damage", var_0, var_1 );
|
|
|
|
if ( !isalive( self ) || isdefined( self.usingremote ) || maps\mp\_utility::_hasperk( "specialty_empimmune" ) || !isdefined( var_0 ) )
|
|
continue;
|
|
|
|
var_2 = 1;
|
|
var_3 = 0;
|
|
|
|
if ( level.teambased && var_0 != self && isdefined( var_0.pers["team"] ) && var_0.pers["team"] == self.pers["team"] )
|
|
{
|
|
if ( level.friendlyfire == 0 )
|
|
continue;
|
|
else if ( level.friendlyfire == 1 )
|
|
{
|
|
var_3 = 0;
|
|
var_2 = 1;
|
|
}
|
|
else if ( level.friendlyfire == 2 )
|
|
{
|
|
var_2 = 0;
|
|
var_3 = 1;
|
|
}
|
|
else if ( level.friendlyfire == 3 )
|
|
{
|
|
var_3 = 1;
|
|
var_2 = 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_0 notify( "emp_hit" );
|
|
|
|
if ( var_0 != self )
|
|
var_0 maps\mp\gametypes\_missions::processchallenge( "ch_onthepulse" );
|
|
}
|
|
|
|
if ( var_2 && isdefined( self ) )
|
|
thread applyemp( var_1 );
|
|
|
|
if ( var_3 )
|
|
var_0 thread applyemp( var_1 );
|
|
}
|
|
}
|
|
|
|
applyemp( var_0 )
|
|
{
|
|
self notify( "applyEmp" );
|
|
self endon( "applyEmp" );
|
|
self endon( "disconnect" );
|
|
self endon( "death" );
|
|
wait 0.05;
|
|
self.empgrenaded = 1;
|
|
self shellshock( "flashbang_mp", 1 );
|
|
self.empendtime = gettime() + var_0 * 1000;
|
|
maps\mp\killstreaks\_emp_common::applyperplayerempeffects_ondetonate();
|
|
maps\mp\killstreaks\_emp_common::applyperplayerempeffects();
|
|
thread emprumbleloop( 0.75 );
|
|
thread empgrenadedeathwaiter();
|
|
wait( var_0 );
|
|
self notify( "empGrenadeTimedOut" );
|
|
checktoturnoffemp();
|
|
}
|
|
|
|
empgrenadedeathwaiter()
|
|
{
|
|
self notify( "empGrenadeDeathWaiter" );
|
|
self endon( "empGrenadeDeathWaiter" );
|
|
self endon( "empGrenadeTimedOut" );
|
|
self waittill( "death" );
|
|
checktoturnoffemp();
|
|
}
|
|
|
|
checktoturnoffemp()
|
|
{
|
|
self.empgrenaded = 0;
|
|
|
|
if ( !maps\mp\killstreaks\_emp_common::shouldplayerbeaffectedbyemp() )
|
|
maps\mp\killstreaks\_emp_common::removeperplayerempeffects();
|
|
}
|
|
|
|
emprumbleloop( var_0 )
|
|
{
|
|
self endon( "emp_rumble_loop" );
|
|
self notify( "emp_rumble_loop" );
|
|
var_1 = gettime() + var_0 * 1000;
|
|
|
|
while ( gettime() < var_1 )
|
|
{
|
|
self playrumbleonentity( "damage_heavy" );
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
isempgrenaded()
|
|
{
|
|
return isdefined( self.empendtime ) && gettime() < self.empendtime;
|
|
}
|