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

126 lines
2.8 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
init()
{
level.killstreakfuncs["high_value_target"] = ::tryusehighvaluetarget;
level.hvts_active["axis"] = 0;
level.hvts_active["allies"] = 0;
game["dialog"]["hvt_gone"] = "hvt_gone";
}
tryusehighvaluetarget( var_0, var_1 )
{
return usehighvaluetarget( self, var_0 );
}
reached_max_xp_multiplier()
{
if ( level.teambased )
return level.hvts_active[self.team] >= 4;
else if ( isdefined( self.hvts_active ) )
return self.hvts_active >= 2;
return 0;
}
usehighvaluetarget( var_0, var_1 )
{
if ( !maps\mp\_utility::isreallyalive( var_0 ) )
return 0;
if ( var_0.team == "spectator" )
return 0;
if ( reached_max_xp_multiplier() || isdefined( var_0.hvts_active ) && var_0.hvts_active >= 2 )
{
self iprintlnbold( &"KILLSTREAKS_HVT_MAX" );
return 0;
}
var_0 thread sethighvaluetarget();
level thread maps\mp\_utility::teamplayercardsplash( "used_hvt", var_0, var_0.team );
return 1;
}
sethighvaluetarget()
{
level endon( "game_ended" );
self endon( "disconnect" );
var_0 = self.team;
increasexpboost();
thread watchhvtowner( var_0 );
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause( 10 );
if ( level.teambased )
maps\mp\_utility::leaderdialog( "hvt_gone", var_0 );
else
maps\mp\_utility::leaderdialogonplayer( "hvt_gone" );
if ( level.teambased )
level decreasexpboost( var_0 );
else
decreasexpboost();
}
increasexpboost()
{
var_0 = 0;
if ( level.teambased )
{
level.hvts_active[self.team]++;
var_0 = level.hvts_active[self.team];
var_1 = self.team;
}
else
{
if ( !isdefined( self.hvts_active ) )
self.hvts_active = 1;
else
self.hvts_active++;
var_0 = self.hvts_active;
var_1 = self getentitynumber();
}
var_2 = 1 + var_0 * 0.5;
level.teamxpscale[var_1] = clamp( var_2, 1, 4 );
}
decreasexpboost( var_0 )
{
var_1 = 0;
if ( level.teambased )
{
if ( level.hvts_active[var_0] > 0 )
level.hvts_active[var_0]--;
var_1 = level.hvts_active[var_0];
var_2 = var_0;
}
else
{
if ( self.hvts_active > 0 )
self.hvts_active--;
var_1 = self.hvts_active;
var_2 = self getentitynumber();
}
var_3 = 1 + var_1 * 0.5;
level.teamxpscale[var_2] = clamp( var_3, 1, 4 );
}
watchhvtowner( var_0 )
{
level endon( "game_ended" );
var_1 = common_scripts\utility::waittill_any_return( "disconnect", "joined_team", "joined_spectators" );
if ( level.teambased )
level decreasexpboost( var_0 );
else if ( isdefined( self ) && var_1 != "disconnect" )
decreasexpboost();
}