146 lines
4.5 KiB
Plaintext
146 lines
4.5 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
init()
|
|
{
|
|
level.killstreakfuncs["agent"] = ::tryusesquadmate;
|
|
level.killstreakfuncs["recon_agent"] = ::tryusereconsquadmate;
|
|
}
|
|
|
|
setup_callbacks()
|
|
{
|
|
level.agent_funcs["squadmate"] = level.agent_funcs["player"];
|
|
level.agent_funcs["squadmate"]["think"] = ::squadmate_agent_think;
|
|
level.agent_funcs["squadmate"]["on_killed"] = ::on_agent_squadmate_killed;
|
|
level.agent_funcs["squadmate"]["on_damaged"] = maps\mp\agents\_agents::on_agent_player_damaged;
|
|
level.agent_funcs["squadmate"]["gametype_update"] = ::no_gametype_update;
|
|
}
|
|
|
|
no_gametype_update()
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
tryusesquadmate( var_0, var_1 )
|
|
{
|
|
return usesquadmate( "agent" );
|
|
}
|
|
|
|
tryusereconsquadmate( var_0, var_1 )
|
|
{
|
|
return usesquadmate( "reconAgent" );
|
|
}
|
|
|
|
usesquadmate( var_0 )
|
|
{
|
|
if ( maps\mp\agents\_agent_utility::getnumactiveagents( "squadmate" ) >= 5 )
|
|
{
|
|
self iprintlnbold( &"KILLSTREAKS_AGENT_MAX" );
|
|
return 0;
|
|
}
|
|
|
|
if ( maps\mp\agents\_agent_utility::getnumownedactiveagents( self ) >= 2 )
|
|
{
|
|
self iprintlnbold( &"KILLSTREAKS_AGENT_MAX" );
|
|
return 0;
|
|
}
|
|
|
|
var_1 = maps\mp\agents\_agent_utility::getvalidspawnpathnodenearplayer( 0, 1 );
|
|
|
|
if ( !isdefined( var_1 ) )
|
|
return 0;
|
|
|
|
if ( !maps\mp\_utility::isreallyalive( self ) )
|
|
return 0;
|
|
|
|
var_2 = var_1.origin;
|
|
var_3 = vectortoangles( self.origin - var_1.origin );
|
|
var_4 = maps\mp\agents\_agents::add_humanoid_agent( "squadmate", self.team, undefined, var_2, var_3, self, 0, 0, "veteran" );
|
|
|
|
if ( !isdefined( var_4 ) )
|
|
{
|
|
self iprintlnbold( &"KILLSTREAKS_AGENT_MAX" );
|
|
return 0;
|
|
}
|
|
|
|
var_4.killstreaktype = var_0;
|
|
|
|
if ( var_4.killstreaktype == "reconAgent" )
|
|
{
|
|
var_4 thread sendagentweaponnotify( "iw6_riotshield_mp" );
|
|
var_4 thread finishreconagentloadout();
|
|
var_4 thread maps\mp\gametypes\_class::giveloadout( self.pers["team"], "reconAgent", 0 );
|
|
var_4 maps\mp\agents\_agent_common::set_agent_health( 250 );
|
|
var_4 maps\mp\perks\_perkfunctions::setlightarmor();
|
|
}
|
|
else
|
|
var_4 maps\mp\perks\_perkfunctions::setlightarmor();
|
|
|
|
var_4 maps\mp\_utility::_setnameplatematerial( "player_name_bg_green_agent", "player_name_bg_red_agent" );
|
|
maps\mp\_matchdata::logkillstreakevent( var_4.killstreaktype, self.origin );
|
|
return 1;
|
|
}
|
|
|
|
finishreconagentloadout()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
self waittill( "giveLoadout" );
|
|
maps\mp\perks\_perkfunctions::setlightarmor();
|
|
maps\mp\_utility::giveperk( "specialty_quickswap", 0 );
|
|
maps\mp\_utility::giveperk( "specialty_regenfaster", 0 );
|
|
self botsetdifficultysetting( "minInaccuracy", 1.5 * self botgetdifficultysetting( "minInaccuracy" ) );
|
|
self botsetdifficultysetting( "maxInaccuracy", 1.5 * self botgetdifficultysetting( "maxInaccuracy" ) );
|
|
self botsetdifficultysetting( "minFireTime", 1.5 * self botgetdifficultysetting( "minFireTime" ) );
|
|
self botsetdifficultysetting( "maxFireTime", 1.25 * self botgetdifficultysetting( "maxFireTime" ) );
|
|
}
|
|
|
|
sendagentweaponnotify( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
self waittill( "giveLoadout" );
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
var_0 = "iw6_riotshield_mp";
|
|
|
|
self notify( "weapon_change", var_0 );
|
|
}
|
|
|
|
squadmate_agent_think()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "owner_disconnect" );
|
|
level endon( "game_ended" );
|
|
|
|
for (;;)
|
|
{
|
|
self botsetflag( "prefer_shield_out", 1 );
|
|
var_0 = self [[ maps\mp\agents\_agent_utility::agentfunc( "gametype_update" ) ]]();
|
|
|
|
if ( !var_0 )
|
|
{
|
|
if ( !maps\mp\bots\_bots_util::bot_is_guarding_player( self.owner ) )
|
|
maps\mp\bots\_bots_strategy::bot_guard_player( self.owner, 350 );
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
on_agent_squadmate_killed( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8 )
|
|
{
|
|
maps\mp\agents\_agents::on_humanoid_agent_killed_common( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, 0 );
|
|
|
|
if ( isplayer( var_1 ) && isdefined( self.owner ) && var_1 != self.owner )
|
|
{
|
|
self.owner maps\mp\_utility::leaderdialogonplayer( "squad_killed" );
|
|
maps\mp\gametypes\_damage::onkillstreakkilled( var_1, var_4, var_3, var_2, "destroyed_squad_mate" );
|
|
}
|
|
|
|
maps\mp\agents\_agent_utility::deactivateagent();
|
|
}
|