iw6-scripts/maps/mp/killstreaks/_juggernaut.gsc
2024-02-13 13:20:49 +01:00

291 lines
8.3 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
init()
{
level.juggsettings = [];
level.juggsettings["juggernaut"] = spawnstruct();
level.juggsettings["juggernaut"].splashusedname = "used_juggernaut";
level.juggsettings["juggernaut_recon"] = spawnstruct();
level.juggsettings["juggernaut_recon"].splashusedname = "used_juggernaut_recon";
level.juggsettings["juggernaut_maniac"] = spawnstruct();
level.juggsettings["juggernaut_maniac"].splashusedname = "used_juggernaut_maniac";
level thread watchjugghostmigrationfinishedinit();
}
givejuggernaut( var_0 )
{
self endon( "death" );
self endon( "disconnect" );
wait 0.05;
if ( isdefined( self.lightarmorhp ) )
maps\mp\perks\_perkfunctions::unsetlightarmor();
maps\mp\gametypes\_weapons::disableplantedequipmentuse();
if ( maps\mp\_utility::_hasperk( "specialty_explosivebullets" ) )
maps\mp\_utility::_unsetperk( "specialty_explosivebullets" );
self.health = self.maxhealth;
var_1 = 1;
switch ( var_0 )
{
case "juggernaut":
self.isjuggernaut = 1;
self.juggmovespeedscaler = 0.8;
maps\mp\gametypes\_class::giveloadout( self.pers["team"], var_0, 0 );
self.movespeedscaler = 0.8;
maps\mp\_utility::giveperk( "specialty_scavenger", 0 );
maps\mp\_utility::giveperk( "specialty_quickdraw", 0 );
maps\mp\_utility::giveperk( "specialty_detectexplosive", 0 );
maps\mp\_utility::giveperk( "specialty_sharp_focus", 0 );
maps\mp\_utility::giveperk( "specialty_radarjuggernaut", 0 );
break;
case "juggernaut_recon":
self.isjuggernautrecon = 1;
self.juggmovespeedscaler = 0.8;
maps\mp\gametypes\_class::giveloadout( self.pers["team"], var_0, 0 );
self.movespeedscaler = 0.8;
maps\mp\_utility::giveperk( "specialty_scavenger", 0 );
maps\mp\_utility::giveperk( "specialty_coldblooded", 0 );
maps\mp\_utility::giveperk( "specialty_noscopeoutline", 0 );
maps\mp\_utility::giveperk( "specialty_detectexplosive", 0 );
maps\mp\_utility::giveperk( "specialty_sharp_focus", 0 );
maps\mp\_utility::giveperk( "specialty_radarjuggernaut", 0 );
if ( !isagent( self ) )
{
self makeportableradar( self );
maps\mp\gametypes\_missions::processchallenge( "ch_airdrop_juggernaut_recon" );
}
break;
case "juggernaut_maniac":
self.isjuggernautmaniac = 1;
self.juggmovespeedscaler = 1.15;
maps\mp\gametypes\_class::giveloadout( self.pers["team"], var_0, 0 );
maps\mp\_utility::giveperk( "specialty_blindeye", 0 );
maps\mp\_utility::giveperk( "specialty_coldblooded", 0 );
maps\mp\_utility::giveperk( "specialty_noscopeoutline", 0 );
maps\mp\_utility::giveperk( "specialty_detectexplosive", 0 );
maps\mp\_utility::giveperk( "specialty_marathon", 0 );
maps\mp\_utility::giveperk( "specialty_falldamage", 0 );
self.movespeedscaler = 1.15;
break;
default:
var_1 = self [[ level.mapcustomjuggfunc ]]( var_0 );
break;
}
if ( perkcheck( "specialty_hardline" ) )
maps\mp\_utility::giveperk( "specialty_hardline", 0 );
maps\mp\gametypes\_weapons::updatemovespeedscale();
self disableweaponpickup();
if ( !isagent( self ) )
{
if ( var_1 )
{
self setclientomnvar( "ui_juggernaut", 1 );
thread maps\mp\_utility::teamplayercardsplash( level.juggsettings[var_0].splashusedname, self );
thread juggernautsounds();
thread watchdisablejuggernaut();
thread watchenablejuggernaut();
}
}
if ( self.streaktype == "specialist" )
thread maps\mp\killstreaks\_killstreaks::clearkillstreaks();
else
thread maps\mp\killstreaks\_killstreaks::updatekillstreaks( 1 );
thread juggremover();
if ( isdefined( self.carryflag ) )
{
wait 0.05;
self attach( self.carryflag, "J_spine4", 1 );
}
level notify( "juggernaut_equipped", self );
maps\mp\_matchdata::logkillstreakevent( var_0, self.origin );
}
perkcheck( var_0 )
{
var_1 = self.pers["loadoutPerks"];
foreach ( var_3 in var_1 )
{
if ( var_3 == var_0 )
return 1;
}
return 0;
}
juggernautsounds()
{
level endon( "game_ended" );
self endon( "death" );
self endon( "disconnect" );
self endon( "jugg_removed" );
for (;;)
{
wait 3.0;
maps\mp\_utility::playplayerandnpcsounds( self, "juggernaut_breathing_player", "juggernaut_breathing_sound" );
}
}
watchjugghostmigrationfinishedinit()
{
level endon( "game_ended" );
for (;;)
{
level waittill( "host_migration_end" );
foreach ( var_1 in level.players )
{
if ( isai( var_1 ) )
continue;
else
{
if ( var_1 maps\mp\_utility::isjuggernaut() && !( isdefined( var_1.isjuggernautlevelcustom ) && var_1.isjuggernautlevelcustom ) )
{
var_1 setclientomnvar( "ui_juggernaut", 1 );
continue;
}
var_1 setclientomnvar( "ui_juggernaut", 0 );
}
}
}
}
juggremover()
{
level endon( "game_ended" );
self endon( "disconnect" );
self endon( "jugg_removed" );
thread juggremoveongameended();
common_scripts\utility::waittill_any( "death", "joined_team", "joined_spectators", "lost_juggernaut" );
self enableweaponpickup();
self.isjuggernaut = 0;
self.isjuggernautdef = 0;
self.isjuggernautgl = 0;
self.isjuggernautrecon = 0;
self.isjuggernautmaniac = 0;
self.isjuggernautlevelcustom = 0;
if ( isplayer( self ) )
self setclientomnvar( "ui_juggernaut", 0 );
self unsetperk( "specialty_radarjuggernaut", 1 );
self notify( "jugg_removed" );
}
juggremoveongameended()
{
self endon( "disconnect" );
self endon( "jugg_removed" );
level waittill( "game_ended" );
if ( isplayer( self ) )
self setclientomnvar( "ui_juggernaut", 0 );
}
setjugg()
{
if ( isdefined( self.headmodel ) )
{
self detach( self.headmodel, "" );
self.headmodel = undefined;
}
self setmodel( "mp_fullbody_juggernaut_heavy_black" );
self setviewmodel( "viewhands_juggernaut_ally" );
self setclothtype( "vestheavy" );
}
setjuggmaniac()
{
if ( isdefined( self.headmodel ) )
{
self detach( self.headmodel, "" );
self.headmodel = undefined;
}
self setmodel( "mp_body_juggernaut_light_black" );
self setviewmodel( "viewhands_juggernaut_ally" );
self attach( "head_juggernaut_light_black", "", 1 );
self.headmodel = "head_juggernaut_light_black";
self setclothtype( "nylon" );
}
disablejuggernaut()
{
if ( maps\mp\_utility::isjuggernaut() )
{
self.juggernaut_disabled = 1;
self setclientomnvar( "ui_juggernaut", 0 );
}
}
enablejuggernaut()
{
if ( maps\mp\_utility::isjuggernaut() )
{
self.juggernaut_disabled = undefined;
self setclientomnvar( "ui_juggernaut", 1 );
}
}
watchdisablejuggernaut()
{
self endon( "death" );
self endon( "disconnect" );
self endon( "jugg_removed" );
level endon( "game_ended" );
for (;;)
{
if ( !isdefined( self.juggernaut_disabled ) && maps\mp\_utility::isusingremote() )
{
self waittill( "black_out_done" );
disablejuggernaut();
}
wait 0.05;
}
}
watchenablejuggernaut()
{
self endon( "death" );
self endon( "disconnect" );
self endon( "jugg_removed" );
level endon( "game_ended" );
for (;;)
{
if ( isdefined( self.juggernaut_disabled ) && !maps\mp\_utility::isusingremote() )
enablejuggernaut();
wait 0.05;
}
}
initlevelcustomjuggernaut( var_0, var_1, var_2, var_3 )
{
level.mapcustomjuggfunc = var_0;
level.mapcustomjuggsetclass = var_1;
level.mapcustomjuggkilledsplash = var_3;
game["allies_model"]["JUGGERNAUT_CUSTOM"] = var_2;
game["axis_model"]["JUGGERNAUT_CUSTOM"] = var_2;
}