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

898 lines
30 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
main()
{
maps\mp\mp_boneyard_ns_precache::main();
maps\createart\mp_boneyard_ns_art::main();
maps\mp\mp_boneyard_ns_fx::main();
level.mapcustomcratefunc = ::boneyardcustomcratefunc;
level.mapcustomkillstreakfunc = ::boneyardcustomkillstreakfunc;
level.mapcustombotkillstreakfunc = ::boneyardcustombotkillstreakfunc;
maps\mp\_load::main();
maps\mp\_compass::setupminimap( "compass_map_mp_boneyard_ns" );
maps\mp\mp_boneyard_ns_anim::main();
setdvar( "r_lightGridEnableTweaks", 1 );
setdvar( "r_lightGridIntensity", 1.33 );
maps\mp\_utility::setdvar_cg_ng( "r_specularColorScale", 2, 4.5 );
setdvar( "sm_sunShadowScale", 0.6 );
setdvar( "sm_sunSampleSizeNear", 0.35 );
level.alarm2_a = spawn( "script_origin", ( -93, 1451, 248 ) );
level.alarm2_vo = spawn( "script_origin", ( 317, 1449, 247 ) );
level.alarm2_b = spawn( "script_origin", ( 805, 1443, 275 ) );
level.fire_event_a = spawn( "script_origin", ( 517, 1463, 14 ) );
level.fire_event_a2 = spawn( "script_origin", ( 517, 1463, 14 ) );
level.fire_event_a3 = spawn( "script_origin", ( 517, 1463, 14 ) );
level.fire_event_b = spawn( "script_origin", ( 381, 1463, -18 ) );
level.fire_event_b2 = spawn( "script_origin", ( 381, 1463, -18 ) );
level.fire_event_lp = spawn( "script_origin", ( 280, 1471, 9 ) );
level.fire_event_lpstart = spawn( "script_origin", ( 280, 1471, 9 ) );
level.fire_event_lpstop = spawn( "script_origin", ( 280, 1471, 9 ) );
level.launch_vo1 = spawn( "script_origin", ( 1936, 231, 221 ) );
level.launch_vo2 = spawn( "script_origin", ( -1028, 534, 368 ) );
level.launch_command_vo = spawn( "script_origin", ( 2917, 396, 10 ) );
game["attackers"] = "allies";
game["defenders"] = "axis";
while ( !isdefined( level.gametypestarted ) )
wait 0.05;
maps\mp\mp_boneyard_ns_killstreak::boneyard_killstreak_disable();
flag_inits();
if ( level.gametype == "sd" || level.gametype == "sr" || level.gametype == "grind" )
setup_no_events( 1, "horizontal rocket fire" );
else if ( level.gametype == "blitz" || level.gametype == "horde" || maps\mp\_utility::ismlgsystemlink() )
setup_no_events( 1 );
else
setup_events();
thread join_sync_exploders();
if ( level.gametype == "horde" || level.gametype == "infect" )
setup_safeguard();
level thread initextracollision();
}
initextracollision()
{
if ( level.gametype == "horde" || level.gametype == "infect" )
{
var_0 = getent( "clip128x128x8", "targetname" );
var_1 = spawn( "script_model", ( -1352, 168, 150 ) );
var_1.angles = ( 0, 0, 0 );
var_1 clonebrushmodeltoscriptmodel( var_0 );
}
if ( level.xenon || level.xb3 )
{
var_2 = spawn( "script_model", ( -136, 1246, 136 ) );
var_2 setmodel( "comm_desk_part_long" );
var_2.angles = ( 360, 90, 90 );
var_3 = spawn( "script_model", ( -136, 1346, 136 ) );
var_3 setmodel( "comm_desk_part_long" );
var_3.angles = ( 360, 90, 90 );
var_4 = spawn( "script_model", ( -136, 1446, 136 ) );
var_4 setmodel( "comm_desk_part_long" );
var_4.angles = ( 360, 90, 90 );
var_5 = spawn( "script_model", ( -136, 1546, 136 ) );
var_5 setmodel( "comm_desk_part_long" );
var_5.angles = ( 360, 90, 90 );
var_6 = spawn( "script_model", ( -132, 1578, 157 ) );
var_6 setmodel( "light_post_strip_mall_02" );
var_6.angles = ( 0, 90, 180 );
}
}
flag_inits()
{
common_scripts\utility::flag_init( "flag_rocket_countdown" );
common_scripts\utility::flag_init( "flag_rocket_countdown_fx" );
common_scripts\utility::flag_init( "flag_rocket_launched" );
common_scripts\utility::flag_init( "Horizontal_Test_Fired" );
common_scripts\utility::flag_init( "Horizontal_Test_Firing" );
}
setup_events()
{
thread set_up_building_facade();
maps\mp\mp_boneyard_ns_killstreak::boneyard_killstreak_setup();
boneyard_fire_horizontal_setup();
getent( "remd_02_proxy", "targetname" ) delete();
level.rocket_explo = getentarray( "rocket_explo_obj", "targetname" );
foreach ( var_1 in level.rocket_explo )
var_1 setup_rocket_explo_part();
var_3 = getscriptablearray( "scriptable_toy_com_propane_tank02_cheap", "classname" );
foreach ( var_5 in var_3 )
var_5 thread rocket_explo_tank_clip_swap();
level thread maps\mp\mp_boneyard_ns_killstreak::boneyard_killstreak_activate();
level thread maps\mp\mp_boneyard_ns_killstreak::boneyard_killstreak_endgame();
level thread boneyard_fire_horizontal_trigger();
thread play_and_stop_spotlight_fx();
thread maps\mp\_dlcalienegg::setupeggformap( "alienEasterEgg" );
maps\mp\_utility::delaythread( 5, ::event_rocket_success, 10, 3 );
maps\mp\_utility::delaythread( 60, ::event_rocket_explode, 25, 3 );
}
setup_no_events( var_0, var_1 )
{
getent( "rocket_explo_rocket", "targetname" ) delete();
var_2 = getentarray( "rocket_explo_obj", "targetname" );
foreach ( var_4 in var_2 )
{
var_5 = getentarray( var_4.target + "_before", "targetname" );
common_scripts\utility::array_call( var_5, ::delete );
var_6 = getentarray( var_4.target + "_delete", "targetname" );
foreach ( var_8 in var_6 )
{
var_8 connectpaths();
var_8 delete();
}
if ( isdefined( level.explo_nums["rocket_explo"][var_4.script_label] ) )
mp_exploder( level.explo_nums["rocket_explo"][var_4.script_label], -60 );
}
thread sound_fire_elements();
level notify( "rocket_crash_01" );
getent( "remd_02_proxy", "targetname" ) delete();
getent( "tunnel_exit_A_mantles", "targetname" ) delete();
var_11 = getentarray( "unbroken_facade", "targetname" );
common_scripts\utility::array_call( var_11, ::delete );
mp_exploder( 208, -60 );
radiusdamage( ( -309, -516, -47 ), 50, 496, 500 );
level.exploder_queue[5] = spawnstruct();
level.exploder_queue[5].num = 5;
level.exploder_queue[5].time = gettime();
level.exploder_queue[5].starttime = 0;
var_12 = getscriptablearray( "scriptable_toy_com_propane_tank02_cheap", "classname" );
foreach ( var_14 in var_12 )
var_14 thread rocket_explo_tank_clip_swap();
maps\mp\_utility::delaythread( 3, ::mp_exploder, 21 );
level thread maps\mp\mp_boneyard_ns_killstreak::boneyard_killstreak_endgame();
if ( isdefined( var_0 ) && var_0 )
{
if ( isdefined( var_1 ) )
{
switch ( var_1 )
{
case "horizontal rocket fire":
maps\mp\mp_boneyard_ns_killstreak::boneyard_killstreak_setup();
level thread maps\mp\mp_boneyard_ns_killstreak::boneyard_killstreak_activate();
break;
default:
break;
}
}
else
{
maps\mp\mp_boneyard_ns_killstreak::boneyard_killstreak_setup();
boneyard_fire_horizontal_setup();
level thread maps\mp\mp_boneyard_ns_killstreak::boneyard_killstreak_activate();
level thread boneyard_fire_horizontal_trigger();
}
}
thread maps\mp\_dlcalienegg::setupeggformap( "alienEasterEgg" );
maps\mp\_utility::delaythread( 5, ::event_rocket_success, 10, 3 );
maps\mp\mp_boneyard_ns_killstreak::boneyard_killstreak_enable( 200 );
}
setup_safeguard()
{
var_0 = getnode( "crawler_ladder_bottom_node", "targetname" );
var_1 = getnode( "crawler_ladder_top_node", "targetname" );
disconnectnodepair( var_1, var_0 );
var_2 = getent( "crawler_ladder", "targetname" );
var_2 delete();
}
play_and_stop_spotlight_fx()
{
wait 3;
mp_exploder( 21 );
var_0 = ( 5706.71, -2875.28, 456.125 );
var_1 = ( 270, 0, 0 );
var_2 = anglestoup( var_1 );
var_3 = anglestoforward( var_1 );
var_4 = spawnfx( level._effect["vfx_mp_boneyard_rocket_spot"], var_0, var_3, var_2 );
triggerfx( var_4 );
var_5 = ( 6209.81, -2376.86, 446.79 );
var_6 = ( 307.118, 274.46, 85.1872 );
var_7 = anglestoup( var_6 );
var_8 = anglestoforward( var_6 );
var_9 = spawnfx( level._effect["vfx_mp_boneyard_rocket_spot"], var_5, var_8, var_7 );
triggerfx( var_9 );
var_10 = ( 4493.13, -2993.15, -151.985 );
var_11 = ( 302.07, 56.4086, -61.7638 );
var_12 = anglestoup( var_11 );
var_13 = anglestoforward( var_11 );
var_14 = spawnfx( level._effect["vfx_mp_boneyard_rocket_spot"], var_10, var_13, var_12 );
triggerfx( var_14 );
var_15 = ( 15341.6, -606.557, 2176.76 );
var_16 = ( 315.112, 247.696, 110.105 );
var_17 = anglestoup( var_16 );
var_18 = anglestoforward( var_16 );
var_19 = spawnfx( level._effect["vfx_mp_boneyard_rocket_spot"], var_15, var_18, var_17 );
triggerfx( var_19 );
var_20 = ( 15101, -1212.7, 2176.63 );
var_21 = ( 270, 0, 0 );
var_22 = anglestoup( var_21 );
var_23 = anglestoforward( var_21 );
var_24 = spawnfx( level._effect["vfx_mp_boneyard_rocket_spot"], var_20, var_23, var_22 );
triggerfx( var_24 );
var_25 = ( 15261.2, -2023.07, 2176.63 );
var_26 = ( 308.808, 40.8442, -47.1412 );
var_27 = anglestoup( var_26 );
var_28 = anglestoforward( var_26 );
var_29 = spawnfx( level._effect["vfx_mp_boneyard_rocket_spot"], var_25, var_28, var_27 );
triggerfx( var_29 );
level waittill( "rocket_success_blast_off" );
var_19 delete();
var_24 delete();
var_29 delete();
level waittill( "rocket_explo_blast_off" );
var_4 delete();
var_9 delete();
var_14 delete();
}
setup_rocket_explo_part()
{
self.clip = getent( self.target, "targetname" );
self.clip linkto( self );
self.crash_delete = getentarray( self.target + "_delete", "targetname" );
self.crash_before = getentarray( self.target + "_before", "targetname" );
self.crash_after = getentarray( self.target + "_after", "targetname" );
self.crash_path = getnodearray( self.target + "_traverse", "targetname" );
self.linked_ents = [];
self.kill_ents = [ self.clip ];
if ( isdefined( self.clip.target ) )
{
foreach ( var_1 in getentarray( self.clip.target, "targetname" ) )
{
var_1 linkto( self );
self.linked_ents[self.linked_ents.size] = var_1;
if ( isdefined( var_1.script_noteworthy ) && var_1.script_noteworthy == "push_kill" )
self.kill_ents[self.kill_ents.size] = var_1;
}
}
self.fall_anim = self.script_label;
self.start_org = getent( "rocket_explo_explosion", "targetname" );
self hide();
common_scripts\utility::array_call( self.linked_ents, ::hide );
self.origin = self.start_org.origin;
self.angles = self.start_org.angles;
self.clip common_scripts\utility::delaycall( 0.05, ::disconnectpaths );
self.clip common_scripts\utility::delaycall( 0.05, ::setaisightlinevisible, 0 );
foreach ( var_1 in self.crash_after )
{
var_1 hide();
var_1.origin = var_1.origin - ( 0, 0, 1024 );
}
wait 0.1;
foreach ( var_6 in self.crash_path )
disconnectnodepair( var_6, getnode( var_6.target, "targetname" ) );
}
set_up_building_facade()
{
var_0 = getentarray( "unbroken_facade", "targetname" );
var_1 = getentarray( "broken_facade", "targetname" );
foreach ( var_3 in var_1 )
var_3 hide();
level waittill( "break_facade" );
foreach ( var_3 in var_1 )
{
mp_exploder( 205 );
var_3 show();
}
foreach ( var_3 in var_0 )
var_3 hide();
wait 0.36;
mp_exploder( 206 );
wait 0.3;
mp_exploder( 207 );
wait 0.28;
mp_exploder( 208 );
}
rocket_explo_tank_clip_swap()
{
self waittill( "death" );
iprintln( "tank dead" );
}
boneyardcustomcratefunc()
{
level thread maps\mp\mp_boneyard_ns_killstreak::boneyardcustomcratefunc();
}
boneyardcustomkillstreakfunc()
{
level.killstreakfuncs["f1_engine_fire"] = ::tryuseboneyardkillstreak;
}
boneyardcustombotkillstreakfunc()
{
maps\mp\bots\_bots_ks::bot_register_killstreak_func( "f1_engine_fire", maps\mp\bots\_bots_ks::bot_killstreak_simple_use );
}
tryuseboneyardkillstreak( var_0, var_1 )
{
if ( common_scripts\utility::flag( "boneyard_killstreak_active" ) || !isdefined( level.ks_vertical ) )
{
self iprintlnbold( &"MP_BONEYARD_NS_F1_IN_USE" );
return 0;
}
level.ks_vertical.uses = level.ks_vertical.uses + 1;
level notify( "boneyard_killstreak_activate", self );
if ( level.ks_vertical.uses >= level.ks_vertical.max_uses )
{
level.ks_vertical.uses = 0;
return 1;
}
return 0;
}
event_rocket_countdown( var_0, var_1 )
{
common_scripts\utility::flag_set( "flag_rocket_countdown" );
for ( var_2 = var_0; var_2 >= 0; var_2-- )
{
if ( var_2 == 20 )
mp_exploder( 16 );
if ( isdefined( var_1[var_2] ) )
{
level.launch_vo1 playsound( var_1[var_2] );
level.launch_vo2 playsound( var_1[var_2] );
}
wait 1;
}
common_scripts\utility::flag_clear( "flag_rocket_countdown" );
}
event_rocket_success( var_0, var_1 )
{
level notify( "rocket_success_start" );
var_2 = getent( "rocket_success_rocket", "targetname" );
var_3 = [];
var_2 thread event_rocket_countdown( var_0, var_3 );
wait( var_0 - var_1 );
level notify( "rocket_success_launch_init" );
mp_exploder( 33 );
var_2 playsound( "scn_beginning_launch_sfx_dist" );
wait( var_1 );
level notify( "rocket_success_blast_off" );
playfxontag( level._effect["vfx_rocket_shuttle_smoke_geotrail_xlarge"], var_2, "tag_origin" );
var_2 scriptmodelplayanimdeltamotion( level.anim_names["rocket_success"]["launch"] );
wait( getanimlength( level.animations["rocket_success"]["launch"] ) );
level notify( "rocket_success_finished" );
thread audio_command_vo();
var_2 scriptmodelclearanim();
var_4 = anglestoup( var_2.angles );
var_2 moveto( var_4 * 62512.5, 64 );
wait 64;
stopfxontag( level._effect["vfx_rocket_shuttle_smoke_geotrail_xlarge"], var_2, "tag_origin" );
var_2 delete();
}
audio_command_vo()
{
wait 25;
level.launch_command_vo playsound( "mp_boneyard_fd_attentionallpersonelthis" );
}
event_rocket_explode( var_0, var_1 )
{
level notify( "rocket_explo_start" );
getscriptablearray( "countdown_clock", "targetname" )[0] setscriptablepartstate( 0, 1 );
var_2 = getent( "rocket_explo_explosion", "targetname" );
var_3 = getent( "rocket_explo_rocket", "targetname" );
var_4 = level.animations["rocket_explo"]["launch"];
var_5 = [];
var_5[25] = "mp_boneyard_ld_autosequencestarttminus";
var_5[17] = "mp_boneyard_ld_tminus15";
var_5[13] = "mp_boneyard_ld_tminus10";
maps\mp\_utility::delaythread( 57.8, ::mp_exploder, 111 );
mp_exploder( 20 );
common_scripts\utility::flag_set( "flag_rocket_countdown_fx" );
wait( 60 - var_0 );
var_3 thread event_rocket_countdown( var_0, var_5 );
wait( var_0 - var_1 );
level notify( "rocket_explo_launch_init" );
mp_exploder( 32 );
var_3 playsound( "scn_beginning_launch_sfx" );
wait( var_1 );
level notify( "rocket_explo_blast_off" );
common_scripts\utility::flag_set( "flag_rocket_launched" );
playfxontag( level._effect["vfx_rocket_shuttle_smoke_geotrail_xlarge"], var_3, "control_root" );
var_3 scriptmodelplayanimdeltamotion( level.anim_names["rocket_explo"]["launch"] );
thread sound_wait_for_pre_explosion( var_3 );
thread building_impact_timing();
foreach ( var_7 in level.rocket_explo )
var_7 thread rocket_explo_drop_part();
var_9 = getanimlength( var_4 ) * getnotetracktimes( var_4, "rog_hit" )[0];
wait( var_9 );
level notify( "rocket_explo_explode" );
mp_exploder( 64 );
stopfxontag( level._effect["vfx_rocket_shuttle_smoke_geotrail_xlarge"], var_3, "control_root" );
thread fx_fiery_debris( var_3 );
level.rocket_explo[1] playsound( "scn_shuttle_debris_fall_01" );
level.rocket_explo[2] playsound( "scn_shuttle_debris_fall_02" );
thread explosion_vo();
thread remove_mantles();
thread rocket_explo_destroy_tank();
thread sound_fire_elements();
thread sfx_dist_debris();
thread kill_survivors( "rocket_crash_01", ( -752, 96, -112 ), 192, 96 );
thread kill_survivors( "rocket_crash_02", ( 944, 112, -112 ), 192, 96 );
wait( getanimlength( var_4 ) - var_9 );
var_3 delete();
level notify( "rocket_explo_finished" );
maps\mp\_compass::setupminimap( "compass_map_mp_boneyard_ns_after" );
maps\mp\mp_boneyard_ns_killstreak::boneyard_killstreak_enable( 200 );
}
fx_fiery_debris( var_0 )
{
playfxontag( level._effect["vfx_debris_trail_xlarge"], var_0, "j_rocket_004" );
playfxontag( level._effect["vfx_debris_trail_xlarge"], var_0, "j_rocket_005" );
common_scripts\utility::waitframe();
playfxontag( level._effect["vfx_debris_trail_xlarge"], var_0, "j_rocket_006" );
playfxontag( level._effect["vfx_debris_trail_xlarge"], var_0, "j_rocket_007" );
common_scripts\utility::waitframe();
playfxontag( level._effect["vfx_debris_trail_xlarge"], var_0, "j_rocket_008" );
}
sound_wait_for_pre_explosion( var_0 )
{
wait 5.5;
var_0 playsound( "scn_beggining_launch_explode" );
}
building_impact_timing()
{
var_0 = getanimlength( level.animations["rocket_explo"]["crash_04"] );
var_1 = getnotetracktimes( level.animations["rocket_explo"]["crash_04"], "building_hit" );
var_2 = var_0 * var_1[0];
wait( var_2 );
level notify( "break_facade" );
thread sound_logic_impacts( "building" );
}
sfx_dist_debris()
{
level waittill( "rocket_crash_01" );
var_0 = spawn( "script_origin", ( -1686, 2876, 89 ) );
var_1 = spawn( "script_origin", ( -2445, 1748, 18 ) );
var_2 = spawn( "script_origin", ( -3190, 1477, 55 ) );
wait 0.4;
var_0 playsound( "scn_shuttle_dist_debris_01" );
wait 0.1;
var_1 playsound( "scn_shuttle_dist_debris_02" );
wait 0.3;
var_2 playsound( "scn_shuttle_dist_debris_06" );
wait 6;
var_0 delete();
var_1 delete();
var_2 delete();
}
sound_fire_elements()
{
level waittill( "rocket_crash_01" );
var_0 = spawn( "script_origin", ( -808, -14, -130 ) );
var_1 = spawn( "script_origin", ( -817, 210, -123 ) );
var_2 = spawn( "script_origin", ( -1028, 534, 368 ) );
var_3 = spawn( "script_origin", ( -599, 276, -117 ) );
var_4 = spawn( "script_origin", ( -282, 184, -127 ) );
var_5 = spawn( "script_origin", ( -384, 504, -45 ) );
var_6 = spawn( "script_origin", ( -69, 923, -81 ) );
var_7 = spawn( "script_origin", ( 133, 912, -68 ) );
var_8 = spawn( "script_origin", ( 870, 1, -110 ) );
var_9 = spawn( "script_origin", ( 880, 229, -115 ) );
var_10 = spawn( "script_origin", ( 1224, 231, -147 ) );
var_11 = spawn( "script_origin", ( 1377, 207, -159 ) );
var_12 = spawn( "script_origin", ( 1340, -15, -149 ) );
var_13 = spawn( "script_origin", ( 1154, 128, -31 ) );
var_14 = spawn( "script_origin", ( -558, 61, 33 ) );
var_15 = spawn( "script_origin", ( 973, 115, 7 ) );
var_0 playloopsound( "fire_small_01" );
var_1 playloopsound( "fire_small_01" );
var_2 playloopsound( "fire_small_01" );
var_3 playloopsound( "fire_small_01" );
var_4 playloopsound( "fire_small_01" );
var_5 playloopsound( "fire_small_01" );
var_6 playloopsound( "fire_small_01" );
var_7 playloopsound( "fire_small_01" );
var_8 playloopsound( "fire_small_01" );
var_9 playloopsound( "fire_small_01" );
var_10 playloopsound( "fire_small_01" );
var_11 playloopsound( "fire_small_01" );
var_12 playloopsound( "fire_small_01" );
var_13 playloopsound( "fire_ceiling_small_01" );
var_14 playloopsound( "fire_ceiling_small_01" );
var_15 playloopsound( "fire_small_01" );
}
explosion_vo()
{
wait 0.7;
level.launch_vo1 playsound( "mp_boneyard_ld_supplydronehasbeen" );
level.launch_vo2 playsound( "mp_boneyard_ld_supplydronehasbeen" );
}
rocket_explo_drop_part()
{
common_scripts\utility::array_thread( self.kill_ents, maps\mp\_movers::player_pushed_kill, 0 );
foreach ( var_1 in self.kill_ents )
var_1.destroyairdroponcollision = 1;
common_scripts\utility::array_call( self.linked_ents, ::show );
self show();
playfxontag( level._effect["vfx_debris_trail_xlarge"], self, "tag_origin" );
var_3 = getanimlength( level.animations["rocket_explo"][self.fall_anim] );
thread rocket_explo_part_ground_hit( var_3 );
self scriptmodelplayanimdeltamotion( level.anim_names["rocket_explo"][self.fall_anim] );
wait( var_3 );
if ( maps\mp\gametypes\_hostmigration::waittillhostmigrationdone() )
wait 0.05;
stopfxontag( level._effect["vfx_debris_trail_xlarge"], self, "tag_origin" );
foreach ( var_1 in self.crash_delete )
{
var_1 connectpaths();
var_1 delete();
}
thread rocket_explo_drop_part_safety_check();
common_scripts\utility::array_thread( self.kill_ents, maps\mp\_movers::stop_player_pushed_kill );
self.clip common_scripts\utility::delaycall( 0.05, ::disconnectpaths );
self.clip common_scripts\utility::delaycall( 0.05, ::setaisightlinevisible, 1 );
wait 0.1;
foreach ( var_7 in self.crash_path )
connectnodepair( var_7, getnode( var_7.target, "targetname" ) );
}
rocket_explo_drop_part_safety_check()
{
foreach ( var_1 in level.players )
{
if ( var_1 istouching( self.clip ) )
self.clip maps\mp\_movers::unresolved_collision_owner_damage( var_1 );
}
}
rocket_explo_part_ground_hit( var_0 )
{
var_1 = getnotetracktimes( level.animations["rocket_explo"][self.fall_anim], "ground_hit" );
wait( var_0 * var_1[0] );
level notify( "rocket_" + self.fall_anim );
if ( isdefined( level.explo_nums["rocket_explo"][self.fall_anim] ) )
mp_exploder( level.explo_nums["rocket_explo"][self.fall_anim] );
earthquake( 0.6, 1.5, self.origin, 800 );
thread sound_logic_impacts( self.fall_anim );
common_scripts\utility::array_call( self.crash_before, ::hide );
foreach ( var_3 in self.crash_after )
{
var_3 show();
var_3 movez( 1024, 0.05 );
}
wait 0.1;
common_scripts\utility::array_call( self.crash_before, ::delete );
}
sound_logic_impacts( var_0 )
{
switch ( var_0 )
{
case "crash_01":
self playsound( "scn_shuttle_debris_05" );
break;
case "crash_02":
self playsound( "scn_shuttle_debris_04" );
break;
case "crash_03a":
break;
case "crash_03b":
break;
case "crash_04":
self playsound( "scn_shuttle_debris_02" );
break;
case "building":
var_1 = spawn( "script_origin", ( 670, 1101, 442 ) );
var_1 playsound( "scn_shuttle_debris_01" );
break;
case "tank":
break;
default:
break;
}
}
remove_mantles()
{
level waittill( "rocket_crash_02" );
var_0 = getent( "tunnel_exit_A_mantles", "targetname" );
var_0 delete();
}
rocket_explo_destroy_tank()
{
level waittill( "rocket_crash_01" );
thread sound_logic_impacts( "tank" );
radiusdamage( ( -309, -516, -47 ), 50, 496, 500 );
level.exploder_queue[5] = spawnstruct();
level.exploder_queue[5].num = 5;
level.exploder_queue[5].time = gettime();
level.exploder_queue[5].starttime = 0;
}
kill_survivors( var_0, var_1, var_2, var_3 )
{
level endon( "game_ended" );
level waittill( var_0 );
var_4 = spawn( "trigger_radius", var_1, 0, var_2, var_3 );
damage_radius_check( var_4 );
}
damage_radius_check( var_0 )
{
foreach ( var_2 in level.participants )
{
if ( var_2 istouching( var_0 ) )
var_2 dodamage( 1000, var_2.origin, undefined, undefined, "MOD_CRUSH" );
}
var_0 delete();
}
join_sync_exploders()
{
for (;;)
{
level waittill( "connected", var_0 );
var_0 thread join_sync_exploders_proc();
}
}
join_sync_exploders_proc()
{
self endon( "disconnect" );
common_scripts\utility::waittill_any( "joined_team", "luinotifyserver" );
if ( !isdefined( level.exploder_queue ) )
return;
var_0 = gettime();
foreach ( var_2 in level.exploder_queue )
{
if ( var_0 < var_2.time )
continue;
wait 0.05;
var_3 = var_2.starttime - gettime() + var_2.time;
if ( var_3 > -60000 )
{
activateclientexploder( var_2.num, self, var_3 / 1000.0 );
continue;
}
activateclientexploder( var_2.num, self, -60 );
}
if ( common_scripts\utility::flag( "flag_rocket_launched" ) )
getscriptablearray( "countdown_clock", "targetname" )[0] setscriptablepartstate( 0, 0 );
else if ( common_scripts\utility::flag( "flag_rocket_countdown_fx" ) )
thread join_sync_countdown();
}
join_sync_countdown()
{
self endon( "disconnect" );
while ( !common_scripts\utility::flag( "flag_rocket_launched" ) )
{
activateclientexploder( 7, self );
wait 0.05;
}
}
mp_exploder( var_0, var_1 )
{
common_scripts\utility::exploder( var_0, undefined, var_1 );
if ( !isdefined( var_1 ) )
var_1 = 0;
if ( !isdefined( level.exploder_queue ) )
level.exploder_queue = [];
level.exploder_queue[var_0] = spawnstruct();
level.exploder_queue[var_0].num = var_0;
level.exploder_queue[var_0].time = gettime();
level.exploder_queue[var_0].starttime = var_1 * 1000;
}
boneyard_fire_horizontal_setup()
{
level.fire_horiz = spawnstruct();
level.fire_horiz.dam = getent( "damage_test_fire_horizontal", "targetname" );
level.fire_horiz.player = undefined;
level.fire_horiz.team = undefined;
level.fire_horiz.trig = spawn( "script_model", ( 471, 1601, -17 ) );
level.fire_horiz.trig setmodel( "tag_origin" );
level.fire_horiz.trig sethintstring( &"MP_BONEYARD_NS_HORIZONTAL_TEST" );
level.fire_horiz.inflictor = getent( "horiz_fire_ent", "targetname" );
common_scripts\utility::flag_init( "boneyard_fire_horizontal_active" );
common_scripts\utility::flag_init( "fire_horiz_alarm_on" );
common_scripts\utility::flag_init( "fire_horiz_firing" );
}
boneyard_fire_horizontal_trigger()
{
level endon( "game_ended" );
for (;;)
{
var_0 = spawnfx( level._effect["vfx_horz_fire_red_light"], ( 452, 1596.93, -27.28 ) );
triggerfx( var_0 );
thread sfx_console_beeps_start();
level.fire_horiz.trig makeusable();
level.fire_horiz.trig waittill( "trigger", var_1 );
level.fire_horiz.trig makeunusable();
thread sfx_console_beeps_stop();
common_scripts\utility::flag_set( "boneyard_fire_horizontal_active" );
level.fire_horiz.player = var_1;
level.fire_horiz.team = var_1.pers["team"];
var_0 delete();
var_2 = spawnfx( level._effect["vfx_horz_fire_amber_light"], ( 452, 1596.93, -27.28 ) );
triggerfx( var_2 );
common_scripts\utility::flag_set( "fire_horiz_alarm_on" );
thread fire_horiz_alarm();
thread fire_horiz_firing_fx();
wait 4;
common_scripts\utility::flag_clear( "fire_horiz_alarm_on" );
fire_horiz_fire();
level.fire_horiz.player = undefined;
level.fire_horiz.team = undefined;
common_scripts\utility::flag_clear( "boneyard_fire_horizontal_active" );
wait 30;
var_2 delete();
}
}
fire_horiz_fire()
{
level endon( "game_ended" );
common_scripts\utility::flag_set( "fire_horiz_firing" );
badplace_brush( "bad_horiz_fire", 10, level.fire_horiz.dam, "allies", "axis" );
for ( var_0 = 0; var_0 < 20; var_0++ )
{
wait 0.5;
maps\mp\gametypes\_hostmigration::waittillhostmigrationdone();
var_1 = level.fire_horiz.player;
if ( !isdefined( level.fire_horiz.player ) || !isplayer( level.fire_horiz.player ) )
var_1 = undefined;
thread maps\mp\mp_boneyard_ns_killstreak::damage_characters( level.fire_horiz, var_1, 25 );
thread maps\mp\mp_boneyard_ns_killstreak::damage_targets( level.fire_horiz, var_1, level.remote_uav, 50 );
thread maps\mp\mp_boneyard_ns_killstreak::damage_targets( level.fire_horiz, var_1, level.placedims, 50 );
thread maps\mp\mp_boneyard_ns_killstreak::damage_targets( level.fire_horiz, var_1, level.uplinks, 50 );
thread maps\mp\mp_boneyard_ns_killstreak::damage_targets( level.fire_horiz, var_1, level.turrets, 50 );
thread maps\mp\mp_boneyard_ns_killstreak::damage_targets( level.fire_horiz, var_1, level.balldrones, 50 );
thread maps\mp\mp_boneyard_ns_killstreak::damage_targets( level.fire_horiz, var_1, level.mines, 50 );
thread maps\mp\mp_boneyard_ns_killstreak::damage_targets( level.fire_horiz, var_1, level.deployable_box["deployable_vest"], 50 );
thread maps\mp\mp_boneyard_ns_killstreak::damage_targets( level.fire_horiz, var_1, level.deployable_box["deployable_ammo"], 50 );
}
common_scripts\utility::flag_clear( "fire_horiz_firing" );
}
fire_horiz_alarm()
{
level.alarm2_vo playsound( "mp_boneyard_cc_rockettestinitiatingin" );
while ( common_scripts\utility::flag( "fire_horiz_alarm_on" ) )
{
level.alarm2_a playsound( "emt_boneyard_ns_close_alarm_02" );
level.alarm2_b playsound( "emt_boneyard_ns_close_alarm_02" );
wait 0.871;
}
}
fire_horiz_firing_fx()
{
mp_exploder( 66 );
wait 4;
for ( var_0 = 0; var_0 < 5; var_0++ )
{
mp_exploder( 67 );
wait 2;
}
mp_exploder( 68 );
}
sfx_console_beeps_start()
{
if ( !isdefined( level.console_beep ) )
level.console_beep = spawn( "script_origin", ( 450, 1590.25, -26 ) );
level.console_beep playloopsound( "emt_boneyard_ns_console_beep_01" );
}
sfx_console_beeps_stop()
{
level.console_beep stoploopsound( "emt_boneyard_ns_console_beep_01" );
sfx_console_activate();
}
sfx_console_activate()
{
level.console_beep playsound( "scn_boneyard_ns_console_press" );
thread sound_fire_event_logic();
wait 0.1;
level.console_beep playsound( "emt_boneyard_ns_console_beep_02" );
}
sound_fire_event_logic()
{
level.fire_event_a playsound( "scn_fire_event_01" );
level.fire_event_b playsound( "scn_fire_event_01_b" );
wait 3.8;
level.fire_event_a2 playsound( "scn_fire_event_01p2" );
level.fire_event_lpstart playsound( "scn_fire_event_01_lpstart" );
wait 1.5;
level.fire_event_lp playloopsound( "scn_fire_event_01_lp" );
wait 8;
level.fire_event_a3 playsound( "scn_fire_event_01p3" );
level.fire_event_b2 playsound( "scn_fire_event_01_bp2" );
level.fire_event_lpstop playsound( "scn_fire_event_01_lpstop" );
level.fire_event_lp stoploopsound();
}