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

252 lines
7.0 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
init()
{
precacheitem( "aamissile_projectile_mp" );
precachemodel( "vehicle_av8b_harrier_jet_mp" );
level.teamairdenied["axis"] = 0;
level.teamairdenied["allies"] = 0;
level.rockets = [];
level.killstreakfuncs["aastrike"] = ::tryuseaastrike;
}
tryuseaastrike( var_0, var_1 )
{
maps\mp\_matchdata::logkillstreakevent( "aastrike", self.origin );
thread finishaastrike( var_0 );
thread maps\mp\_utility::teamplayercardsplash( "used_aastrike", self, self.team );
return 1;
}
cycletargets()
{
self endon( "stopFindingTargets" );
self endon( "disconnect" );
self endon( "owner_gone" );
self endon( "game_ended" );
for (;;)
{
wait 0.05;
findtargets();
wait( randomintrange( 4, 5 ) );
}
}
findtargets()
{
self endon( "disconnect" );
self endon( "owner_gone" );
self endon( "game_ended" );
var_0 = [];
var_1 = [];
var_2 = [];
if ( isdefined( level.littlebirds ) && level.littlebirds.size )
{
foreach ( var_4 in level.littlebirds )
{
if ( isdefined( var_4.team ) && var_4.team != self.team )
var_0[var_0.size] = var_4;
}
}
if ( isdefined( level.helis ) && level.helis.size )
{
foreach ( var_7 in level.helis )
{
if ( var_7.team != self.team )
var_1[var_1.size] = var_7;
}
}
var_9 = maps\mp\_utility::getotherteam( self.team );
if ( isdefined( level.activeuavs[var_9] ) )
{
foreach ( var_11 in level.uavmodels[var_9] )
var_2[var_2.size] = var_11;
}
var_13 = 0;
foreach ( var_4 in var_0 )
{
wait 3;
if ( var_13 % 2 )
thread fireattarget( var_4, self.team, 1 );
else
thread fireattarget( var_4, self.team, 0 );
var_13++;
}
foreach ( var_7 in var_1 )
{
wait 3;
thread fireattarget( var_7, self.team, 1 );
}
foreach ( var_11 in var_2 )
{
wait 0.5;
thread fireattarget( var_11, self.team, 0 );
}
}
earlyabortwatcher()
{
self endon( "stopFindingTargets" );
var_0 = self.team;
if ( maps\mp\_utility::bot_is_fireteam_mode() )
self waittill( "killstreak_disowned" );
else
common_scripts\utility::waittill_either( "killstreak_disowned", "game_ended" );
self notify( "owner_gone" );
level.teamairdenied[maps\mp\_utility::getotherteam( var_0 )] = 0;
level.airdeniedplayer = undefined;
}
finishaastrike( var_0 )
{
self endon( "disconnect" );
self endon( "owner_gone" );
self endon( "game_ended" );
level.teamairdenied[maps\mp\_utility::getotherteam( self.team )] = 1;
level.airdeniedplayer = self;
thread earlyabortwatcher();
thread cycletargets();
for ( var_1 = 0; var_1 < 4; var_1++ )
{
wait 6;
if ( var_1 == 1 || var_1 == 3 )
{
thread doflyby( 1 );
continue;
}
thread doflyby( 0 );
}
wait 3;
self notify( "stopFindingTargets" );
level.teamairdenied[maps\mp\_utility::getotherteam( self.team )] = 0;
level.airdeniedplayer = undefined;
}
fireattarget( var_0, var_1, var_2 )
{
if ( !isdefined( var_0 ) )
return;
var_3 = ( 0, 0, 14000 );
var_4 = ( 0, 0, 1500 );
var_5 = 15000;
var_6 = 20000;
var_7 = var_0.origin;
var_3 = ( 0, 0, 1 ) * var_7 + ( 0, 0, 1000 );
var_8 = var_0.angles * ( 0, 1, 0 );
var_9 = anglestoforward( var_8 );
var_10 = var_0.origin + var_4 + var_9 * var_5 * -1;
var_11 = var_0.origin + var_4 + var_9 * var_6;
var_12 = magicbullet( "aamissile_projectile_mp", var_10 + ( 0, 0, -75 ), var_0.origin, self );
var_12 missile_settargetent( var_0 );
var_12 missile_setflightmodedirect();
var_13 = magicbullet( "aamissile_projectile_mp", var_10 + ( randomint( 500 ), randomint( 500 ), -75 ), var_0.origin, self );
var_13 missile_settargetent( var_0 );
var_13 missile_setflightmodedirect();
if ( var_2 )
var_14 = spawnplane( self, "script_model", var_10, "compass_objpoint_airstrike_friendly", "compass_objpoint_airstrike_friendly" );
else
var_14 = spawnplane( self, "script_model", var_10 );
if ( self.team == "allies" )
var_14 setmodel( "vehicle_av8b_harrier_jet_mp" );
else
var_14 setmodel( "vehicle_av8b_harrier_jet_opfor_mp" );
var_15 = distance( var_10, var_11 );
var_14.angles = vectortoangles( var_11 - var_10 );
var_14 thread aasoundmanager( var_15 );
var_14 thread playplanefx();
var_15 = distance( var_10, var_11 );
var_14 moveto( var_11 * 2, var_15 / 2000, 0, 0 );
wait( var_15 / 3000 );
var_14 delete();
}
aasoundmanager( var_0 )
{
self playloopsound( "veh_aastrike_flyover_loop" );
wait( var_0 / 2 / 2000 );
self stoploopsound();
self playloopsound( "veh_aastrike_flyover_outgoing_loop" );
}
doflyby( var_0 )
{
self endon( "disconnect" );
var_1 = randomint( level.spawnpoints.size - 1 );
var_2 = level.spawnpoints[var_1].origin * ( 1, 1, 0 );
var_3 = 20000;
var_4 = 20000;
var_5 = getent( "airstrikeheight", "targetname" );
var_6 = ( 0, 0, var_5.origin[2] + randomintrange( -100, 600 ) );
var_7 = anglestoforward( ( 0, randomint( 45 ), 0 ) );
var_8 = var_2 + var_6 + var_7 * var_3 * -1;
var_9 = var_2 + var_6 + var_7 * var_4;
var_10 = var_8 + ( randomintrange( 400, 500 ), randomintrange( 400, 500 ), randomintrange( 200, 300 ) );
var_11 = var_9 + ( randomintrange( 400, 500 ), randomintrange( 400, 500 ), randomintrange( 200, 300 ) );
if ( var_0 )
var_12 = spawnplane( self, "script_model", var_8, "hud_minimap_harrier_green", "hud_minimap_harrier_red" );
else
var_12 = spawnplane( self, "script_model", var_8 );
var_13 = spawnplane( self, "script_model", var_10 );
if ( self.team == "allies" )
{
var_12 setmodel( "vehicle_av8b_harrier_jet_mp" );
var_13 setmodel( "vehicle_av8b_harrier_jet_mp" );
}
else
{
var_12 setmodel( "vehicle_av8b_harrier_jet_opfor_mp" );
var_13 setmodel( "vehicle_av8b_harrier_jet_opfor_mp" );
}
var_12.angles = vectortoangles( var_9 - var_8 );
var_12 playloopsound( "veh_aastrike_flyover_loop" );
var_12 thread playplanefx();
var_13.angles = vectortoangles( var_9 - var_10 );
var_13 thread playplanefx();
var_14 = distance( var_8, var_9 );
var_12 moveto( var_9 * 2, var_14 / 1800, 0, 0 );
wait( randomfloatrange( 0.25, 0.5 ) );
var_13 moveto( var_11 * 2, var_14 / 1800, 0, 0 );
wait( var_14 / 1600 );
var_12 delete();
var_13 delete();
}
playplanefx()
{
self endon( "death" );
wait 0.5;
playfxontag( level.fx_airstrike_afterburner, self, "tag_engine_right" );
wait 0.5;
playfxontag( level.fx_airstrike_afterburner, self, "tag_engine_left" );
wait 0.5;
playfxontag( level.fx_airstrike_contrail, self, "tag_right_wingtip" );
wait 0.5;
playfxontag( level.fx_airstrike_contrail, self, "tag_left_wingtip" );
}