396 lines
14 KiB
Plaintext
396 lines
14 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
init()
|
|
{
|
|
level.match_events_fx["smoke"] = loadfx( "fx/smoke/smoke_grenade_11sec_mp" );
|
|
level.match_events_fx["tracer"] = loadfx( "fx/misc/tracer_incoming" );
|
|
level.match_events_fx["explosion"] = loadfx( "fx/explosions/building_explosion_huge_gulag" );
|
|
level.matchevents["mortar"] = ::domortar;
|
|
level.matchevents["smoke"] = ::dosmoke;
|
|
level.matchevents["airstrike"] = ::doairstrike;
|
|
level.matchevents["pavelow"] = ::dopavelow;
|
|
level.matchevents["heli_insertion"] = ::doheliinsertion;
|
|
level.matchevents["osprey_insertion"] = ::doospreyinsertion;
|
|
level.matcheventstarted = 0;
|
|
level thread onplayerconnect();
|
|
}
|
|
|
|
onplayerconnect()
|
|
{
|
|
if ( level.prematchperiod > 0 )
|
|
{
|
|
for (;;)
|
|
level waittill( "connected", var_0 );
|
|
}
|
|
}
|
|
|
|
onplayerspawned()
|
|
{
|
|
self endon( "disconnect" );
|
|
level endon( "matchevent_started" );
|
|
self waittill( "spawned_player" );
|
|
|
|
if ( isdefined( level.alliesinsertchopper ) && !level.alliesinsertchopper.droppedoff && level.prematchperiod > 0 && self.team == "allies" )
|
|
{
|
|
self playerlinkto( level.alliesinsertchopper );
|
|
level.alliesinsertchopper.linkedplayers[level.alliesinsertchopper.linkedplayers.size] = self;
|
|
}
|
|
else if ( isdefined( level.alliesinsertchopper ) && !level.alliesinsertchopper.droppedoff && level.prematchperiod > 0 && self.team == "axis" )
|
|
{
|
|
self playerlinkto( level.axisinsertchopper );
|
|
level.axisinsertchopper.linkedplayers[level.axisinsertchopper.linkedplayers.size] = self;
|
|
}
|
|
}
|
|
|
|
getmapcenter()
|
|
{
|
|
if ( isdefined( level.mapcenter ) )
|
|
return level.mapcenter;
|
|
|
|
var_0 = getspawnarray( "mp_tdm_spawn_allies_start" );
|
|
var_1 = getspawnarray( "mp_tdm_spawn_axis_start" );
|
|
|
|
if ( isdefined( var_0 ) && isdefined( var_0[0] ) && isdefined( var_1 ) && isdefined( var_1[0] ) )
|
|
{
|
|
var_2 = distance( var_0[0].origin, var_1[0].origin ) / 2;
|
|
var_3 = vectortoangles( var_0[0].origin - var_1[0].origin );
|
|
var_3 = vectornormalize( var_3 );
|
|
return var_0[0].origin + var_3 * var_2;
|
|
}
|
|
|
|
return ( 0, 0, 0 );
|
|
}
|
|
|
|
getstartspawns()
|
|
{
|
|
var_0 = getspawnarray( "mp_tdm_spawn_allies_start" );
|
|
var_1 = getspawnarray( "mp_tdm_spawn_axis_start" );
|
|
|
|
if ( isdefined( var_0 ) && isdefined( var_0[0] ) && isdefined( var_1 ) && isdefined( var_1[0] ) )
|
|
{
|
|
var_2 = [];
|
|
var_2["axis"] = var_1;
|
|
var_2["allies"] = var_0;
|
|
return var_2;
|
|
}
|
|
else
|
|
return undefined;
|
|
}
|
|
|
|
doheliinsertion( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = 1200;
|
|
var_4 = 1200;
|
|
var_5 = 1000;
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
var_0 = "both";
|
|
|
|
if ( var_0 == "axis" )
|
|
thread insertaxisinsertchopper( var_1 );
|
|
else if ( var_0 == "allies" )
|
|
thread insertalliesinsertchopper( var_2 );
|
|
else
|
|
{
|
|
thread insertalliesinsertchopper( var_2 );
|
|
thread insertaxisinsertchopper( var_1 );
|
|
}
|
|
}
|
|
|
|
insertalliesinsertchopper( var_0 )
|
|
{
|
|
var_1 = getstartspawns();
|
|
var_2 = 1200;
|
|
var_3 = 1200;
|
|
var_4 = 1000;
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
var_0 = var_1["allies"][0];
|
|
|
|
var_5 = anglestoforward( var_1["allies"][0].angles ) * 300;
|
|
var_6 = anglestoup( var_1["allies"][0].angles ) * var_2;
|
|
var_7 = anglestoright( var_1["allies"][0].angles ) * 3200;
|
|
var_8 = anglestoright( var_1["allies"][0].angles ) * -3200;
|
|
var_9 = var_1["allies"][0].origin + var_5 + var_6 + var_7;
|
|
var_10 = var_1["allies"][0].origin + var_5 + var_6 + var_8;
|
|
var_11 = spawnhelicopter( self, var_9, var_1["allies"][0].angles, "pavelow_mp", "vehicle_pavelow" );
|
|
|
|
if ( !isdefined( var_11 ) )
|
|
return;
|
|
|
|
level.alliesinsertchopper = var_11;
|
|
level.alliesinsertchopper.linkedplayers = [];
|
|
level.alliesinsertchopper.droppedoff = 0;
|
|
var_11 vehicle_setspeed( 50, 15 );
|
|
var_11 setvehgoalpos( var_1["allies"][0].origin + ( 0, 0, var_3 / 2 ), 1 );
|
|
var_11 waittill( "goal" );
|
|
var_11 setyawspeed( 0, 1, 1 );
|
|
var_11 setvehgoalpos( var_1["allies"][0].origin + ( 0, 0, var_3 / 6 ), 1 );
|
|
var_11 waittill( "goal" );
|
|
level.alliesinsertchopper.droppedoff = 1;
|
|
|
|
foreach ( var_13 in level.alliesinsertchopper.linkedplayers )
|
|
var_13 unlink();
|
|
|
|
wait 2;
|
|
var_11 setyawspeed( 60, 40, 40, 0.3 );
|
|
var_11 setvehgoalpos( var_1["allies"][0].origin + ( 0, 0, var_3 ), 1 );
|
|
var_11 waittill( "goal" );
|
|
var_11 vehicle_setspeed( 80, 60 );
|
|
var_11 setvehgoalpos( var_9 + ( 0, 0, var_4 ) + var_7 * 2, 1 );
|
|
var_11 waittill( "goal" );
|
|
var_11 vehicle_setspeed( 120, 120 );
|
|
var_11 setvehgoalpos( var_9 + ( 0, 0, var_4 ) + var_7 * 2 + var_5 * -20, 1 );
|
|
var_11 waittill( "goal" );
|
|
var_11 delete();
|
|
}
|
|
|
|
insertaxisinsertchopper( var_0 )
|
|
{
|
|
var_1 = getstartspawns();
|
|
var_2 = 1200;
|
|
var_3 = 1200;
|
|
var_4 = 1000;
|
|
var_5 = anglestoforward( var_1["axis"][0].angles ) * 300;
|
|
var_6 = anglestoup( var_1["axis"][0].angles ) * var_2;
|
|
var_7 = anglestoright( var_1["axis"][0].angles ) * 3200;
|
|
var_8 = anglestoright( var_1["axis"][0].angles ) * -3200;
|
|
var_9 = var_1["axis"][0].origin + var_5 + var_6 + var_7;
|
|
var_10 = var_1["axis"][0].origin + var_5 + var_6 + var_8;
|
|
var_11 = spawnhelicopter( self, var_9, var_1["axis"][0].angles, "pavelow_mp", "vehicle_pavelow" );
|
|
|
|
if ( !isdefined( var_11 ) )
|
|
return;
|
|
|
|
level.axisinsertchopper = var_11;
|
|
level.axisinsertchopper.linkedplayers = [];
|
|
level.axisinsertchopper.droppedoff = 0;
|
|
var_11 vehicle_setspeed( 50, 15 );
|
|
var_11 setvehgoalpos( var_1["axis"][0].origin + ( 0, 0, var_3 / 2 ), 1 );
|
|
var_11 waittill( "goal" );
|
|
var_11 setyawspeed( 0, 1, 1 );
|
|
var_11 setvehgoalpos( var_1["axis"][0].origin + ( 0, 0, var_3 / 6 ), 1 );
|
|
var_11 waittill( "goal" );
|
|
level.axisinsertchopper.droppedoff = 1;
|
|
|
|
foreach ( var_13 in level.axisinsertchopper.linkedplayers )
|
|
var_13 unlink();
|
|
|
|
wait 2;
|
|
var_11 setyawspeed( 60, 40, 40, 0.3 );
|
|
var_11 setvehgoalpos( var_1["axis"][0].origin + ( 0, 0, var_3 ), 1 );
|
|
var_11 waittill( "goal" );
|
|
var_11 vehicle_setspeed( 80, 60 );
|
|
var_11 setvehgoalpos( var_9 + ( 0, 0, var_4 ) + var_7 * 2, 1 );
|
|
var_11 waittill( "goal" );
|
|
var_11 vehicle_setspeed( 120, 120 );
|
|
var_11 setvehgoalpos( var_9 + ( 0, 0, var_4 ) + var_7 * 2 + var_5 * -20, 1 );
|
|
var_11 waittill( "goal" );
|
|
var_11 delete();
|
|
}
|
|
|
|
domortar()
|
|
{
|
|
var_0 = getmapcenter();
|
|
var_1 = 1;
|
|
|
|
for ( var_2 = 0; var_2 < 5; var_2++ )
|
|
{
|
|
var_3 = var_0 + ( randomintrange( 100, 600 ) * var_1, randomintrange( 100, 600 ) * var_1, 0 );
|
|
var_4 = bullettrace( var_3 + ( 0, 0, 500 ), var_3 - ( 0, 0, 500 ), 0 );
|
|
|
|
if ( isdefined( var_4["position"] ) )
|
|
{
|
|
playfx( level.match_events_fx["tracer"], var_3 );
|
|
thread maps\mp\_utility::playsoundinspace( "fast_artillery_round", var_3 );
|
|
wait( randomfloatrange( 0.5, 1.5 ) );
|
|
playfx( level.match_events_fx["explosion"], var_3 );
|
|
playrumbleonposition( "grenade_rumble", var_3 );
|
|
earthquake( 1.0, 0.6, var_3, 2000 );
|
|
thread maps\mp\_utility::playsoundinspace( "exp_suitcase_bomb_main", var_3 );
|
|
physicsexplosionsphere( var_3 + ( 0, 0, 30 ), 250, 125, 2 );
|
|
var_1 = var_1 * -1;
|
|
}
|
|
}
|
|
}
|
|
|
|
dosmoke()
|
|
{
|
|
var_0 = getmapcenter();
|
|
var_1 = 1;
|
|
|
|
for ( var_2 = 0; var_2 < 3; var_2++ )
|
|
{
|
|
var_3 = var_0 + ( randomintrange( 100, 600 ) * var_1, randomintrange( 100, 600 ) * var_1, 0 );
|
|
playfx( level.match_events_fx["smoke"], var_3 );
|
|
var_1 = var_1 * -1;
|
|
wait 2;
|
|
}
|
|
}
|
|
|
|
doairstrike()
|
|
{
|
|
level endon( "game_ended" );
|
|
var_0 = 1;
|
|
var_1 = getmapcenter();
|
|
|
|
for ( var_2 = 0; var_2 < 3; var_2++ )
|
|
{
|
|
var_3 = var_1 + ( randomintrange( 100, 600 ) * var_0, randomintrange( 100, 600 ) * var_0, 0 );
|
|
var_4 = bullettrace( var_3 + ( 0, 0, 500 ), var_3 - ( 0, 0, 500 ), 0 );
|
|
|
|
if ( isdefined( var_4["position"] ) )
|
|
{
|
|
thread doairstrikeflyby( var_4["position"] );
|
|
var_0 = var_0 * -1;
|
|
wait( randomintrange( 2, 4 ) );
|
|
}
|
|
}
|
|
}
|
|
|
|
doairstrikeflyby( var_0 )
|
|
{
|
|
var_1 = randomint( level.spawnpoints.size - 1 );
|
|
var_2 = level.spawnpoints[var_1].origin * ( 1, 1, 0 );
|
|
var_3 = 8000;
|
|
var_4 = 8000;
|
|
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 ) );
|
|
var_12 = spawnplane( self, "script_model", var_8 );
|
|
var_13 = spawnplane( self, "script_model", var_10 );
|
|
|
|
if ( common_scripts\utility::cointoss() )
|
|
{
|
|
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_mig29_dist_loop" );
|
|
var_12 thread playplanefx();
|
|
var_13.angles = vectortoangles( var_9 - var_10 );
|
|
var_13 playloopsound( "veh_mig29_dist_loop" );
|
|
var_13 thread playplanefx();
|
|
var_14 = distance( var_8, var_9 );
|
|
var_12 moveto( var_9 * 2, var_14 / 2000, 0, 0 );
|
|
wait( randomfloatrange( 0.25, 0.5 ) );
|
|
var_13 moveto( var_11 * 2, var_14 / 2000, 0, 0 );
|
|
wait( var_14 / 2000 );
|
|
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" );
|
|
}
|
|
|
|
dopavelow()
|
|
{
|
|
var_0 = getmapcenter();
|
|
var_1 = bullettrace( var_0 + ( 0, 0, 500 ), var_0 - ( 0, 0, 500 ), 0 );
|
|
|
|
if ( isdefined( var_1["position"] ) )
|
|
{
|
|
if ( common_scripts\utility::cointoss() )
|
|
var_2 = "vehicle_pavelow";
|
|
else
|
|
var_2 = "vehicle_pavelow_opfor";
|
|
|
|
var_3 = spawnhelicopter( self, var_1["position"] + ( 0, 0, 1000 ), ( 0, 0, 0 ), "pavelow_mp", var_2 );
|
|
|
|
if ( !isdefined( var_3 ) )
|
|
return;
|
|
|
|
var_3.team = self.pers["team"];
|
|
var_3.heli_type = level.heli_types[var_2];
|
|
var_3 thread [[ level.lightfxfunc[level.heli_types[var_2]] ]]();
|
|
var_3.zoffset = ( 0, 0, var_3 gettagorigin( "tag_origin" )[2] - var_3 gettagorigin( "tag_ground" )[2] );
|
|
wait 1;
|
|
playfxontag( level.chopper_fx["damage"]["on_fire"], var_3, "tag_engine_left" );
|
|
var_3 thread maps\mp\killstreaks\_helicopter::heli_crash();
|
|
}
|
|
}
|
|
|
|
doospreyinsertion()
|
|
{
|
|
var_0 = getstartspawns();
|
|
|
|
if ( isdefined( var_0 ) )
|
|
{
|
|
var_1 = 200;
|
|
var_2 = 200;
|
|
var_3 = 1000;
|
|
var_4 = anglestoforward( var_0["allies"][0].angles ) * 300;
|
|
var_5 = anglestoup( var_0["allies"][0].angles ) * var_1;
|
|
var_6 = var_0["allies"][0].origin + var_4 + var_5;
|
|
var_7 = spawnhelicopter( self, var_6, var_0["allies"][0].angles, "osprey_minigun_mp", "vehicle_v22_osprey_body_mp" );
|
|
|
|
if ( !isdefined( var_7 ) )
|
|
return;
|
|
|
|
var_8 = anglestoforward( var_0["axis"][0].angles ) * 300;
|
|
var_9 = anglestoup( var_0["axis"][0].angles ) * var_1;
|
|
var_10 = var_0["axis"][0].origin + var_8 + var_9;
|
|
var_11 = spawnhelicopter( self, var_10, var_0["axis"][0].angles, "osprey_minigun_mp", "vehicle_v22_osprey_body_mp" );
|
|
|
|
if ( !isdefined( var_11 ) )
|
|
{
|
|
var_7 delete();
|
|
return;
|
|
}
|
|
|
|
var_7 thread maps\mp\killstreaks\_escortairdrop::airshippitchpropsup();
|
|
var_11 thread maps\mp\killstreaks\_escortairdrop::airshippitchpropsup();
|
|
var_7 thread maps\mp\killstreaks\_escortairdrop::airshippitchhatchdown();
|
|
var_11 thread maps\mp\killstreaks\_escortairdrop::airshippitchhatchdown();
|
|
var_7 vehicle_setspeed( 20, 10 );
|
|
var_7 setyawspeed( 3, 3, 3, 0.3 );
|
|
var_7 setvehgoalpos( var_6 + ( 0, 0, var_2 ), 1 );
|
|
var_11 vehicle_setspeed( 20, 10 );
|
|
var_11 setyawspeed( 3, 3, 3, 0.3 );
|
|
var_11 setvehgoalpos( var_10 + ( 0, 0, var_2 ), 1 );
|
|
var_7 waittill( "goal" );
|
|
var_7 thread maps\mp\killstreaks\_escortairdrop::airshippitchhatchup();
|
|
var_11 thread maps\mp\killstreaks\_escortairdrop::airshippitchhatchup();
|
|
wait 2;
|
|
var_7 vehicle_setspeed( 80, 60 );
|
|
var_7 setyawspeed( 30, 15, 15, 0.3 );
|
|
var_7 setvehgoalpos( var_6 + ( 0, 0, var_3 ), 1 );
|
|
var_11 vehicle_setspeed( 80, 60 );
|
|
var_11 setyawspeed( 30, 15, 15, 0.3 );
|
|
var_11 setvehgoalpos( var_10 + ( 0, 0, var_3 ), 1 );
|
|
var_7 waittill( "goal" );
|
|
var_7 thread maps\mp\killstreaks\_escortairdrop::airshippitchpropsdown();
|
|
var_11 thread maps\mp\killstreaks\_escortairdrop::airshippitchpropsdown();
|
|
var_7 vehicle_setspeed( 120, 120 );
|
|
var_7 setyawspeed( 100, 100, 40, 0.3 );
|
|
var_7 setvehgoalpos( var_6 + ( 0, 0, var_3 ) + var_4 * -20, 1 );
|
|
var_11 vehicle_setspeed( 120, 120 );
|
|
var_11 setyawspeed( 100, 100, 40, 0.3 );
|
|
var_11 setvehgoalpos( var_10 + ( 0, 0, var_3 ) + var_8 * -20, 1 );
|
|
var_7 waittill( "goal" );
|
|
var_7 delete();
|
|
var_11 delete();
|
|
}
|
|
}
|