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

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();
}