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

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