2565 lines
78 KiB
Plaintext
2565 lines
78 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
main()
|
|
{
|
|
maps\mp\mp_shipment_ns_precache::main();
|
|
maps\createart\mp_shipment_ns_art::main();
|
|
maps\mp\mp_shipment_ns_fx::main();
|
|
maps\mp\_utility::setdvar_cg_ng( "r_specularColorScale", 3.5, 7.5 );
|
|
level.mapcustomcratefunc = ::customcratefunc;
|
|
level.mapcustomkillstreakfunc = ::customkillstreakfunc;
|
|
level.mapcustombotkillstreakfunc = ::custombotkillstreakfunc;
|
|
precache();
|
|
maps\mp\_load::main();
|
|
level.nukedeathvisionfunc = ::nukedeathvision;
|
|
thread manage_gates();
|
|
maps\mp\_compass::setupminimap( "compass_map_mp_shipment_ns" );
|
|
setdvar( "r_lightGridEnableTweaks", 1 );
|
|
setdvar( "r_lightGridIntensity", 1.33 );
|
|
maps\mp\_utility::setdvar_cg_ng( "r_specularColorScale", 3.0, 9.5 );
|
|
|
|
if ( level.ps3 )
|
|
{
|
|
setdvar( "sm_sunShadowScale", "0.45" );
|
|
setdvar( "sm_sunsamplesizenear", ".15" );
|
|
}
|
|
else if ( level.xenon )
|
|
{
|
|
setdvar( "sm_sunShadowScale", "0.55" );
|
|
setdvar( "sm_sunsamplesizenear", ".3" );
|
|
}
|
|
else
|
|
{
|
|
setdvar( "sm_sunShadowScale", "1.0" );
|
|
setdvar( "sm_sunsamplesizenear", ".42" );
|
|
}
|
|
|
|
game["attackers"] = "allies";
|
|
game["defenders"] = "axis";
|
|
game["allies_outfit"] = "urban";
|
|
game["axis_outfit"] = "woodland";
|
|
sort_spawn_points();
|
|
thread trap_init();
|
|
thread display_team_scores();
|
|
thread check_for_player_connect();
|
|
thread box_kill_counter();
|
|
thread select_random_prize();
|
|
thread set_up_announcer();
|
|
thread set_up_multi_turret();
|
|
thread nuke_custom_visionset();
|
|
thread box_kill_numbers();
|
|
thread match_end_event();
|
|
thread rotate_turntable();
|
|
thread get_prize_room_curtains_n_fx();
|
|
thread get_elevators();
|
|
thread maps\mp\_dlcalienegg::setupeggformap( "alienEasterEgg" );
|
|
level.helipilotsettings["heli_pilot"].modelbase = "vehicle_aas_72x_killstreak_shns";
|
|
maps\mp\bots\_bots_ks::blockkillstreakforbots( "vanguard" );
|
|
}
|
|
|
|
precache()
|
|
{
|
|
precachempanim( "mp_stand_idle" );
|
|
precachempanim( "hunted_celebrate_v2" );
|
|
precachempanim( "hunted_celebrate_v3" );
|
|
precachemodel( "shns_score_num_0_small" );
|
|
precachemodel( "shns_score_num_1_small" );
|
|
precachemodel( "shns_score_num_2_small" );
|
|
precachemodel( "shns_score_num_3_small" );
|
|
precachemodel( "shns_score_num_4_small" );
|
|
precachemodel( "shns_score_num_5_small" );
|
|
precachemodel( "shns_score_num_6_small" );
|
|
precachemodel( "shns_score_num_7_small" );
|
|
precachemodel( "shns_score_num_8_small" );
|
|
precachemodel( "shns_score_num_9_small" );
|
|
}
|
|
|
|
manage_gates()
|
|
{
|
|
level endon( "game_ended" );
|
|
level endon( "start_custom_ending" );
|
|
var_0 = getentarray( "doors", "targetname" );
|
|
var_1 = getentarray( "doors_b", "targetname" );
|
|
var_2 = common_scripts\utility::array_combine( var_0, var_1 );
|
|
|
|
while ( !isdefined( level.gametype ) )
|
|
wait 0.01;
|
|
|
|
move_gate_array( var_2, "open", 0 );
|
|
|
|
if ( level.gametype == "sd" || level.gametype == "sr" || level.gametype == "siege" || level.gametype == "horde" || level.gametype == "infect" || level.gametype == "grnd" )
|
|
{
|
|
remove_armored_shutters();
|
|
return;
|
|
}
|
|
|
|
thread manage_expanded_area_spawns();
|
|
var_3 = botautoconnectenabled();
|
|
|
|
if ( var_3 == 0 )
|
|
{
|
|
if ( level.gametype == "dom" || level.gametype == "infect" || level.gametype == "grnd" )
|
|
{
|
|
while ( !isdefined( level.bot_gametype_precaching_done ) )
|
|
wait 0.05;
|
|
}
|
|
|
|
move_gate_array( var_2, "close", 1, 1 );
|
|
}
|
|
else if ( level.gametype != "dom" && level.gametype != "infect" && level.gametype != "grnd" && level.gametype != "blitz" )
|
|
move_gate_array( var_2, "close", 1, 1 );
|
|
else
|
|
{
|
|
while ( !isdefined( level.bot_gametype_precaching_done ) )
|
|
wait 0.05;
|
|
|
|
move_gate_array( var_2, "close", 1, 1 );
|
|
}
|
|
|
|
var_4 = 45;
|
|
var_5 = var_2;
|
|
var_6 = 0;
|
|
var_7 = getmatchdata( "hasBots" );
|
|
|
|
switch ( level.gametype )
|
|
{
|
|
case "cranked":
|
|
case "conf":
|
|
case "war":
|
|
case "dm":
|
|
var_5 = var_0;
|
|
var_4 = 60;
|
|
break;
|
|
case "dom":
|
|
var_6 = 1;
|
|
|
|
if ( getmatchdata( "hasBots" ) == 1 )
|
|
var_4 = 0;
|
|
else
|
|
var_4 = 45;
|
|
|
|
break;
|
|
case "grind":
|
|
case "infect":
|
|
var_6 = 1;
|
|
var_4 = 1;
|
|
break;
|
|
case "blitz":
|
|
case "sr":
|
|
case "sd":
|
|
var_5 = var_0;
|
|
var_4 = 1;
|
|
break;
|
|
default:
|
|
var_6 = 1;
|
|
var_4 = 1;
|
|
break;
|
|
}
|
|
|
|
if ( isdefined( var_4 ) )
|
|
{
|
|
thread sfx_gate_alarm( var_4 );
|
|
thread play_warning_light_fx( var_4 );
|
|
wait( var_4 );
|
|
|
|
if ( var_6 )
|
|
remove_armored_shutters();
|
|
|
|
thread sfx_gates_open();
|
|
move_gate_array( var_5, "open", 1, 1 );
|
|
level notify( "announcement", "doors_opened", undefined, undefined, 1 );
|
|
level notify( "gates_open" );
|
|
}
|
|
}
|
|
|
|
debug_loop( var_0 )
|
|
{
|
|
for (;;)
|
|
{
|
|
iprintlnbold( var_0 );
|
|
wait 1.0;
|
|
}
|
|
}
|
|
|
|
play_red_light_fx()
|
|
{
|
|
|
|
}
|
|
|
|
play_warning_light_fx( var_0 )
|
|
{
|
|
if ( var_0 > 4 )
|
|
{
|
|
wait( var_0 - 4 );
|
|
common_scripts\utility::exploder( 11 );
|
|
|
|
for ( var_1 = 0; var_1 < 4; var_1++ )
|
|
{
|
|
thread sfx_lights_red();
|
|
common_scripts\utility::exploder( 42 );
|
|
wait 1.1;
|
|
}
|
|
}
|
|
|
|
thread sfx_lights_green();
|
|
common_scripts\utility::exploder( 40 );
|
|
}
|
|
|
|
move_gate_array( var_0, var_1, var_2, var_3 )
|
|
{
|
|
foreach ( var_5 in var_0 )
|
|
thread move_gate( var_5, var_1, var_2, var_3 );
|
|
|
|
wait( var_2 );
|
|
}
|
|
|
|
move_gate( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = getent( var_0.target, "targetname" );
|
|
|
|
if ( isdefined( var_3 ) )
|
|
{
|
|
if ( var_1 == "close" )
|
|
{
|
|
if ( isdefined( var_4 ) )
|
|
{
|
|
if ( var_2 >= 1 )
|
|
var_4 moveto( var_4.origin + ( 0, 0, 104 ), var_2, var_2 / 8, var_2 / 4 );
|
|
else
|
|
var_4.origin = var_4.origin + ( 0, 0, 104 );
|
|
}
|
|
|
|
var_0 moveto( var_0.origin + ( 0, 0, 96 ), 0.1 );
|
|
wait 0.1;
|
|
var_0 solid();
|
|
var_0 disconnectpaths();
|
|
var_0 show();
|
|
var_0 setaisightlinevisible( 0 );
|
|
}
|
|
else
|
|
{
|
|
if ( isdefined( var_4 ) )
|
|
{
|
|
if ( var_2 >= 1 )
|
|
var_4 moveto( var_4.origin - ( 0, 0, 104 ), var_2, var_2 / 8, var_2 / 4 );
|
|
else
|
|
var_4.origin = var_4.origin - ( 0, 0, 104 );
|
|
}
|
|
|
|
var_0 connectpaths();
|
|
var_0 notsolid();
|
|
var_0 hide();
|
|
var_0 setaisightlinevisible( 1 );
|
|
var_0 moveto( var_0.origin - ( 0, 0, 96 ), 0.1 );
|
|
wait 0.1;
|
|
}
|
|
}
|
|
else if ( var_1 == "close" )
|
|
{
|
|
if ( isdefined( var_4 ) )
|
|
{
|
|
if ( var_2 >= 1 )
|
|
var_4 moveto( var_4.origin + ( 0, 0, 104 ), var_2, var_2 / 8, var_2 / 4 );
|
|
else
|
|
var_4.origin = var_4.origin + ( 0, 0, 104 );
|
|
}
|
|
}
|
|
else if ( isdefined( var_4 ) )
|
|
{
|
|
if ( var_2 >= 1 )
|
|
var_4 moveto( var_4.origin - ( 0, 0, 104 ), var_2, var_2 / 8, var_2 / 4 );
|
|
else
|
|
var_4.origin = var_4.origin - ( 0, 0, 104 );
|
|
}
|
|
}
|
|
|
|
move_shutter_array( var_0, var_1, var_2 )
|
|
{
|
|
foreach ( var_4 in var_0 )
|
|
thread move_shutter( var_4, var_1, var_2 );
|
|
|
|
wait( var_2 );
|
|
}
|
|
|
|
move_shutter( var_0, var_1, var_2 )
|
|
{
|
|
if ( var_1 == "close" )
|
|
var_0 moveto( var_0.origin + ( 0, 0, 96 ), var_2, var_2 / 8, var_2 / 4 );
|
|
else
|
|
var_0 moveto( var_0.origin - ( 0, 0, 96 ), var_2, var_2 / 8, var_2 / 4 );
|
|
}
|
|
|
|
remove_armored_shutters()
|
|
{
|
|
var_0 = getentarray( "armory_rollups", "targetname" );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
{
|
|
foreach ( var_2 in var_0 )
|
|
var_2 delete();
|
|
}
|
|
}
|
|
|
|
manage_expanded_area_spawns()
|
|
{
|
|
level.dynamicspawns = ::filter_expanded_area_spawn_points;
|
|
level waittill( "gates_open" );
|
|
level.dynamicspawns = undefined;
|
|
}
|
|
|
|
manage_trap_1_area_spawns()
|
|
{
|
|
level.dynamicspawns = ::filter_trap_1_area_spawn_points;
|
|
common_scripts\utility::flag_waitopen( "trap_1_active" );
|
|
level.dynamicspawns = undefined;
|
|
}
|
|
|
|
filter_expanded_area_spawn_points( var_0 )
|
|
{
|
|
var_1 = [];
|
|
|
|
foreach ( var_3 in var_0 )
|
|
{
|
|
if ( is_in_array( level.expanded_area_spawns, var_3 ) )
|
|
continue;
|
|
|
|
var_1[var_1.size] = var_3;
|
|
}
|
|
|
|
return var_1;
|
|
}
|
|
|
|
filter_trap_1_area_spawn_points( var_0 )
|
|
{
|
|
var_1 = [];
|
|
|
|
foreach ( var_3 in var_0 )
|
|
{
|
|
if ( is_in_array( level.trap_1_area_spawns, var_3 ) )
|
|
continue;
|
|
|
|
var_1[var_1.size] = var_3;
|
|
}
|
|
|
|
return var_1;
|
|
}
|
|
|
|
sort_spawn_points()
|
|
{
|
|
level.expanded_area_spawns = [];
|
|
level.trap_1_area_spawns = [];
|
|
|
|
while ( !isdefined( level.gametypestarted ) )
|
|
wait 0.05;
|
|
|
|
if ( !isdefined( level.spawnpoints ) )
|
|
return;
|
|
|
|
foreach ( var_1 in level.spawnpoints )
|
|
{
|
|
var_2 = var_1.script_noteworthy;
|
|
|
|
if ( !isdefined( var_2 ) )
|
|
continue;
|
|
|
|
var_3 = strtok( var_2, ";" );
|
|
|
|
foreach ( var_5 in var_3 )
|
|
{
|
|
if ( var_5 == "expanded_area_spawn" )
|
|
level.expanded_area_spawns[level.expanded_area_spawns.size] = var_1;
|
|
|
|
if ( var_5 == "trap_1_area_spawn" )
|
|
level.trap_1_area_spawns[level.trap_1_area_spawns.size] = var_1;
|
|
}
|
|
}
|
|
}
|
|
|
|
is_in_array( var_0, var_1 )
|
|
{
|
|
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
|
|
{
|
|
if ( var_0[var_2] == var_1 )
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
display_team_scores()
|
|
{
|
|
for (;;)
|
|
{
|
|
if ( isdefined( level.players ) )
|
|
break;
|
|
|
|
wait 1;
|
|
}
|
|
|
|
var_0 = getentarray( "scoreboard_number", "target" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
var_2 hide();
|
|
|
|
if ( !level.teambased )
|
|
return;
|
|
|
|
var_4 = getent( "ghosts_1_0", "targetname" );
|
|
var_5 = getent( "ghosts_2_0", "targetname" );
|
|
var_6 = getent( "ghosts_3_0", "targetname" );
|
|
var_7 = getent( "ghosts_4_0", "targetname" );
|
|
var_8 = getent( "federation_1_0", "targetname" );
|
|
var_9 = getent( "federation_2_0", "targetname" );
|
|
var_10 = getent( "federation_3_0", "targetname" );
|
|
var_11 = getent( "federation_4_0", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( level.gametype == "sd" || level.gametype == "sr" || level.gametype == "siege" )
|
|
{
|
|
var_12 = game["roundsWon"]["allies"];
|
|
var_13 = game["roundsWon"]["axis"];
|
|
}
|
|
else
|
|
{
|
|
var_12 = game["teamScores"]["allies"];
|
|
var_13 = game["teamScores"]["axis"];
|
|
}
|
|
|
|
if ( var_12 > 9999 )
|
|
{
|
|
var_12 = 10000;
|
|
var_4 setmodel( "shns_score_num_feds_r" );
|
|
var_5 setmodel( "shns_score_num_feds_r" );
|
|
var_6 setmodel( "shns_score_num_feds_e" );
|
|
var_7 setmodel( "tag_origin" );
|
|
}
|
|
|
|
if ( var_13 > 9999 )
|
|
{
|
|
var_13 = 10000;
|
|
var_8 setmodel( "shns_score_num_feds_r" );
|
|
var_9 setmodel( "shns_score_num_feds_r" );
|
|
var_10 setmodel( "shns_score_num_feds_e" );
|
|
var_11 setmodel( "tag_origin" );
|
|
}
|
|
|
|
if ( var_12 < 10 )
|
|
{
|
|
var_14 = getsubstr( var_12, 0, 1 );
|
|
var_4 setmodel( "shns_score_num_ghosts_" + var_14 );
|
|
}
|
|
|
|
if ( var_12 > 9 && var_12 < 99 )
|
|
{
|
|
var_14 = getsubstr( var_12, 1, 2 );
|
|
var_15 = getsubstr( var_12, 0, 1 );
|
|
var_4 setmodel( "shns_score_num_ghosts_" + var_14 );
|
|
var_5 setmodel( "shns_score_num_ghosts_" + var_15 );
|
|
}
|
|
|
|
if ( var_12 > 99 && var_12 < 999 )
|
|
{
|
|
var_14 = getsubstr( var_12, 2, 3 );
|
|
var_15 = getsubstr( var_12, 1, 2 );
|
|
var_16 = getsubstr( var_12, 0, 1 );
|
|
var_4 setmodel( "shns_score_num_ghosts_" + var_14 );
|
|
var_5 setmodel( "shns_score_num_ghosts_" + var_15 );
|
|
var_6 setmodel( "shns_score_num_ghosts_" + var_16 );
|
|
}
|
|
|
|
if ( var_12 > 999 && var_12 <= 9999 )
|
|
{
|
|
var_14 = getsubstr( var_12, 3, 4 );
|
|
var_15 = getsubstr( var_12, 2, 3 );
|
|
var_16 = getsubstr( var_12, 1, 2 );
|
|
var_17 = getsubstr( var_12, 0, 1 );
|
|
var_4 setmodel( "shns_score_num_ghosts_" + var_14 );
|
|
var_5 setmodel( "shns_score_num_ghosts_" + var_15 );
|
|
var_6 setmodel( "shns_score_num_ghosts_" + var_16 );
|
|
var_7 setmodel( "shns_score_num_ghosts_" + var_17 );
|
|
}
|
|
|
|
if ( var_13 < 10 )
|
|
{
|
|
var_18 = getsubstr( var_13, 0, 1 );
|
|
var_8 setmodel( "shns_score_num_feds_" + var_18 );
|
|
}
|
|
|
|
if ( var_13 > 9 && var_13 < 99 )
|
|
{
|
|
var_18 = getsubstr( var_13, 1, 2 );
|
|
var_19 = getsubstr( var_13, 0, 1 );
|
|
var_8 setmodel( "shns_score_num_feds_" + var_18 );
|
|
var_9 setmodel( "shns_score_num_feds_" + var_19 );
|
|
}
|
|
|
|
if ( var_13 > 99 && var_13 < 999 )
|
|
{
|
|
var_18 = getsubstr( var_13, 2, 3 );
|
|
var_19 = getsubstr( var_13, 1, 2 );
|
|
var_20 = getsubstr( var_13, 0, 1 );
|
|
var_8 setmodel( "shns_score_num_feds_" + var_18 );
|
|
var_9 setmodel( "shns_score_num_feds_" + var_19 );
|
|
var_10 setmodel( "shns_score_num_feds_" + var_20 );
|
|
}
|
|
|
|
if ( var_13 > 999 && var_13 <= 9999 )
|
|
{
|
|
var_18 = getsubstr( var_13, 3, 4 );
|
|
var_19 = getsubstr( var_13, 2, 3 );
|
|
var_20 = getsubstr( var_13, 1, 2 );
|
|
var_21 = getsubstr( var_13, 0, 1 );
|
|
var_8 setmodel( "shns_score_num_feds_" + var_18 );
|
|
var_9 setmodel( "shns_score_num_feds_" + var_19 );
|
|
var_10 setmodel( "shns_score_num_feds_" + var_20 );
|
|
var_11 setmodel( "shns_score_num_feds_" + var_21 );
|
|
}
|
|
|
|
wait 0.5;
|
|
}
|
|
}
|
|
|
|
check_for_player_connect()
|
|
{
|
|
for (;;)
|
|
{
|
|
level waittill( "connected", var_0 );
|
|
var_0 thread run_func_after_spawn( ::kill_watcher );
|
|
}
|
|
}
|
|
|
|
run_func_after_spawn( var_0 )
|
|
{
|
|
self endon( "disconnect" );
|
|
self endon( "death" );
|
|
self waittill( "spawned_player" );
|
|
self thread [[ var_0 ]]();
|
|
}
|
|
|
|
set_up_announcer()
|
|
{
|
|
level.announcements = [];
|
|
level.announcer_temperature = 0;
|
|
level.announcements["big_spread"] = create_announcement_entry( 6, 0, "shipment_com_ghosts_lead", "shipment_com_feds_lead" );
|
|
level.announcements["big_spread_noteam"] = create_announcement_entry( 6, 0, "shipment_com_none_lead" );
|
|
level.announcements["score_unchanged"] = create_announcement_entry( 6, 30, "shipment_com_score_same" );
|
|
level.announcements["close_match"] = create_announcement_entry( 1, 0, "shipment_com_close_match" );
|
|
level.announcements["ks_first"] = create_announcement_entry( 1, 0, "shipment_com_ghosts_spin_1st", "shipment_com_feds_spin_1st" );
|
|
level.announcements["ks_additional"] = create_announcement_entry( 0, 0, "shipment_com_ghosts_spin_addtl", "shipment_com_feds_spin_addtl" );
|
|
level.announcements["ks_first_noteam"] = create_announcement_entry( 1, 0, "shipment_com_none_spin_1st" );
|
|
level.announcements["ks_additional_noteam"] = create_announcement_entry( 0, 0, "shipment_com_none_spin_addtl" );
|
|
level.announcements["trap_1"] = create_announcement_entry( 0, 0, "shipment_com_ghosts_gas", "shipment_com_feds_gas" );
|
|
level.announcements["trap_1_noteam"] = create_announcement_entry( 0, 0, "shipment_com_none_gas" );
|
|
level.announcements["all_traps"] = create_announcement_entry( 0, 0, "shipment_com_ghosts_traps", "shipment_com_feds_traps" );
|
|
level.announcements["all_traps_noteam"] = create_announcement_entry( 0, 0, "shipment_com_none_traps" );
|
|
level.announcements["turrets"] = create_announcement_entry( 0, 0, "shipment_com_ghosts_cleanse", "shipment_com_feds_cleanse" );
|
|
level.announcements["turrets_noteam"] = create_announcement_entry( 0, 0, "shipment_com_none_cleanse" );
|
|
level.announcements["care_strike"] = create_announcement_entry( 0, 0, "shipment_com_ghosts_jackpot", "shipment_com_feds_jackpot" );
|
|
level.announcements["care_strike_noteam"] = create_announcement_entry( 0, 0, "shipment_com_none_jackpot" );
|
|
level.announcements["kem_strike"] = create_announcement_entry( 0, 0, "shipment_com_ghosts_kem", "shipment_com_feds_kem" );
|
|
level.announcements["multikill"] = create_announcement_entry( 3, 30, "shipment_com_multikill_female", "shipment_com_multikill_male" );
|
|
level.announcements["killstreak"] = create_announcement_entry( 10, 60, "shipment_com_killstreak_female", "shipment_com_killstreak_male" );
|
|
level.announcements["back_shot_noteam"] = create_announcement_entry( 0, 15, "shipment_com_none_intheback" );
|
|
level.announcements["pistol_kill_noteam"] = create_announcement_entry( 0, 15, "shipment_com_none_pistol_kill" );
|
|
level.announcements["generic_kill"] = create_announcement_entry( 0, 15, "shipment_com_generic" );
|
|
level.announcements["melee_kill"] = create_announcement_entry( 0, 20, "shipment_com_ghosts_melee", "shipment_com_feds_melee" );
|
|
level.announcements["melee_kill_noteam"] = create_announcement_entry( 0, 20, "shipment_com_none_melee" );
|
|
level.announcements["headshot"] = create_announcement_entry( 0, 20, "shipment_com_ghosts_headshot", "shipment_com_feds_headshot" );
|
|
level.announcements["headshot_noteam"] = create_announcement_entry( 0, 20, "shipment_com_none_headshot" );
|
|
level.announcements["dog_kill"] = create_announcement_entry( 0, 10, "shipment_com_ghosts_dogkill", "shipment_com_feds_dogkill" );
|
|
level.announcements["dog_kill_noteam"] = create_announcement_entry( 0, 10, "shipment_com_none_dogkill" );
|
|
level.announcements["long_shot"] = create_announcement_entry( 0, 20, "shipment_com_ghosts_longshot", "shipment_com_feds_longshot" );
|
|
level.announcements["long_shot_noteam"] = create_announcement_entry( 0, 20, "shipment_com_none_longshot" );
|
|
level.announcements["double_kill"] = create_announcement_entry( 0, 15, "shipment_com_ghosts_doublekill", "shipment_com_feds_doublekill" );
|
|
level.announcements["double_kill_noteam"] = create_announcement_entry( 0, 15, "shipment_com_none_doublekill" );
|
|
level.announcements["triple_kill"] = create_announcement_entry( 6, 40, "shipment_com_ghosts_triplekill", "shipment_com_feds_triplekill" );
|
|
level.announcements["triple_kill_noteam"] = create_announcement_entry( 6, 40, "shipment_com_none_triplekill" );
|
|
level.announcements["savior"] = create_announcement_entry( 10, 20, "shipment_com_ghosts_savior", "shipment_com_feds_savior" );
|
|
level.announcements["savior_noteam"] = create_announcement_entry( 10, 20, "shipment_com_none_savior" );
|
|
level.announcements["avenger"] = create_announcement_entry( 10, 20, "shipment_com_ghosts_avenger", "shipment_com_feds_avenger" );
|
|
level.announcements["avenger_noteam"] = create_announcement_entry( 10, 20, "shipment_com_none_avenger" );
|
|
level.announcements["doors_opened"] = create_announcement_entry( 1, 0, "shipment_com_doors_opened" );
|
|
level.announcements["intro"] = create_announcement_entry( 1, 0, "shipment_com_intro" );
|
|
level.announcements["outro"] = create_announcement_entry( 1, 0, "shipment_com_outro" );
|
|
level.announcements["outro_rare"] = create_announcement_entry( 1, 0, "shipment_com_outro_rare" );
|
|
level.announcements["puzzle_box"] = create_announcement_entry( 3, 60, "shipment_com_puzzlebox" );
|
|
level.announcements["puzzle_box_max"] = create_announcement_entry( 1, 0, "shipment_com_100_puzzlebox" );
|
|
|
|
if ( level.teambased && level.gametype != "siege" && level.gametype != "sr" && level.gametype != "sd" )
|
|
thread determine_score_big_lead();
|
|
|
|
if ( !level.teambased )
|
|
thread determine_score_big_lead_noteam();
|
|
|
|
thread determine_close_match();
|
|
thread manage_announcements();
|
|
thread announcement_time_incrementer();
|
|
thread intro_announcements();
|
|
common_scripts\utility::flag_init( "ready_to_announce" );
|
|
common_scripts\utility::flag_set( "ready_to_announce" );
|
|
}
|
|
|
|
create_announcement_entry( var_0, var_1, var_2, var_3, var_4, var_5 )
|
|
{
|
|
var_6 = spawnstruct();
|
|
var_6.reps = 0;
|
|
var_6.max_reps = var_0;
|
|
var_6.temperature = 0;
|
|
var_6.cooldown = var_1;
|
|
var_6.lines = [];
|
|
var_6.lines[var_6.lines.size] = var_2;
|
|
var_6.lines[var_6.lines.size] = var_3;
|
|
var_6.lines[var_6.lines.size] = var_4;
|
|
var_6.lines[var_6.lines.size] = var_5;
|
|
return var_6;
|
|
}
|
|
|
|
manage_announcements()
|
|
{
|
|
var_0 = getentarray( "announcer_speaker", "targetname" );
|
|
var_1 = 6;
|
|
level.last_announcement_type = "default";
|
|
|
|
for (;;)
|
|
{
|
|
if ( isdefined( level.players ) )
|
|
break;
|
|
|
|
wait 1;
|
|
}
|
|
|
|
for (;;)
|
|
{
|
|
level waittill( "announcement", var_2, var_3, var_4, var_5 );
|
|
|
|
if ( !isdefined( level.announcements ) )
|
|
continue;
|
|
|
|
if ( level.last_announcement_type == var_2 && var_2 != "generic_kill" )
|
|
continue;
|
|
|
|
if ( level.showingfinalkillcam == 1 )
|
|
continue;
|
|
|
|
if ( level.announcements[var_2].reps >= level.announcements[var_2].max_reps && level.announcements[var_2].max_reps != 0 || level.announcements[var_2].temperature > 0 && level.announcements[var_2].cooldown != 0 )
|
|
continue;
|
|
|
|
if ( !common_scripts\utility::flag( "ready_to_announce" ) )
|
|
{
|
|
if ( !isdefined( var_5 ) )
|
|
continue;
|
|
else
|
|
level common_scripts\utility::waittill_notify_or_timeout( "allow_override", 5 );
|
|
}
|
|
|
|
maps\mp\gametypes\_hostmigration::waittillhostmigrationdone();
|
|
|
|
if ( isdefined( var_4 ) )
|
|
{
|
|
if ( isdefined( var_3 ) )
|
|
{
|
|
if ( var_4 == 1 )
|
|
{
|
|
if ( var_3 == "axis" )
|
|
var_6 = level.announcements[var_2].lines[2];
|
|
else
|
|
var_6 = level.announcements[var_2].lines[0];
|
|
}
|
|
else if ( var_3 == "axis" )
|
|
var_6 = level.announcements[var_2].lines[3];
|
|
else
|
|
var_6 = level.announcements[var_2].lines[1];
|
|
}
|
|
else if ( var_4 == 1 )
|
|
var_6 = level.announcements[var_2].lines[0];
|
|
else
|
|
var_6 = level.announcements[var_2].lines[1];
|
|
}
|
|
else if ( isdefined( var_3 ) && level.gametype != "dm" )
|
|
{
|
|
if ( var_3 == "axis" )
|
|
var_6 = level.announcements[var_2].lines[1];
|
|
else
|
|
var_6 = level.announcements[var_2].lines[0];
|
|
}
|
|
else
|
|
var_6 = level.announcements[var_2].lines[0];
|
|
|
|
foreach ( var_8 in var_0 )
|
|
{
|
|
var_8 playsound( var_6 );
|
|
level.announcements[var_2].reps++;
|
|
level.time_since_last_announcement = 0;
|
|
}
|
|
|
|
if ( var_2 != "outro" && var_2 != "outro_rare" )
|
|
{
|
|
level.last_announcement_type = var_2;
|
|
common_scripts\utility::flag_clear( "ready_to_announce" );
|
|
thread allow_announcement_override( var_6 );
|
|
|
|
if ( var_2 == "generic_kill" )
|
|
thread announcer_cooldown_manager( 2 );
|
|
else
|
|
thread announcer_cooldown_manager( var_1 );
|
|
|
|
level.announcements[var_2] thread announcement_cooldown();
|
|
continue;
|
|
}
|
|
|
|
level endon( "game_ended" );
|
|
}
|
|
}
|
|
|
|
announcement_time_incrementer()
|
|
{
|
|
level.time_since_last_announcement = 0;
|
|
|
|
for (;;)
|
|
{
|
|
wait 1;
|
|
level.time_since_last_announcement++;
|
|
}
|
|
}
|
|
|
|
allow_announcement_override( var_0 )
|
|
{
|
|
var_1 = lookupsoundlength( var_0 );
|
|
wait( var_1 / 1000 + 0.1 );
|
|
level notify( "allow_override" );
|
|
}
|
|
|
|
announcement_cooldown()
|
|
{
|
|
self.temperature = self.cooldown;
|
|
|
|
while ( self.temperature > 0 )
|
|
{
|
|
self.temperature--;
|
|
wait 1;
|
|
}
|
|
}
|
|
|
|
announcer_cooldown_manager( var_0 )
|
|
{
|
|
if ( level.announcer_temperature > var_0 )
|
|
return;
|
|
|
|
level.announcer_temperature = var_0;
|
|
level notify( "announcer_time_reset" );
|
|
level endon( "announcer_time_reset" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( level.announcer_temperature <= 0 )
|
|
{
|
|
wait( randomfloatrange( 0, 3 ) );
|
|
common_scripts\utility::flag_set( "ready_to_announce" );
|
|
return;
|
|
}
|
|
|
|
level.announcer_temperature--;
|
|
wait 1;
|
|
}
|
|
}
|
|
|
|
intro_announcements()
|
|
{
|
|
while ( !isdefined( level.gametypestarted ) )
|
|
wait 0.05;
|
|
|
|
wait 18;
|
|
level notify( "announcement", "intro", undefined, undefined, 1 );
|
|
}
|
|
|
|
kill_watcher()
|
|
{
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
level.last_announcer_line = "default";
|
|
var_0 = self hasfemalecustomizationmodel();
|
|
|
|
for (;;)
|
|
{
|
|
if ( level.gametype != "horde" )
|
|
self waittill( "got_a_kill", var_1, var_2, var_3 );
|
|
else
|
|
self waittill( "horde_kill", var_1, var_2, var_3 );
|
|
|
|
if ( level.time_since_last_announcement > 18 )
|
|
level notify( "announcement", "generic_kill", undefined, undefined );
|
|
else
|
|
{
|
|
var_4 = gettime();
|
|
|
|
if ( weaponclass( var_2 ) == "pistol" && var_3 != "MOD_MELEE" && level.last_announcer_line != "pistol" )
|
|
{
|
|
level notify( "announcement", "pistol_kill_noteam", undefined, undefined );
|
|
level.last_announcer_line = "pistol";
|
|
continue;
|
|
}
|
|
|
|
if ( var_3 == "MOD_MELEE" && level.last_announcer_line != "mod_melee" )
|
|
{
|
|
if ( level.teambased )
|
|
{
|
|
if ( common_scripts\utility::cointoss() )
|
|
level notify( "announcement", "melee_kill", self.team, undefined );
|
|
else
|
|
level notify( "announcement", "melee_kill_noteam", undefined, undefined );
|
|
}
|
|
else
|
|
level notify( "announcement", "melee_kill_noteam", undefined, undefined );
|
|
|
|
level.last_announcer_line = "mod_melee";
|
|
continue;
|
|
}
|
|
|
|
if ( var_3 == "MOD_HEAD_SHOT" && level.last_announcer_line != "mod_head_shot" )
|
|
{
|
|
if ( level.teambased )
|
|
level notify( "announcement", "headshot", self.team, undefined );
|
|
else
|
|
level notify( "announcement", "headshot_noteam", undefined, undefined );
|
|
|
|
level.last_announcer_line = "mod_head_shot";
|
|
continue;
|
|
}
|
|
|
|
if ( var_2 == "guard_dog_mp" && level.last_announcer_line != "guard_dog_mp" )
|
|
{
|
|
if ( level.teambased )
|
|
level notify( "announcement", "dog_kill", self.team, undefined );
|
|
else
|
|
level notify( "announcement", "dog_kill_noteam", undefined, undefined );
|
|
|
|
level.last_announcer_line = "guard_dog_mp";
|
|
continue;
|
|
}
|
|
|
|
if ( maps\mp\_events::islongshot( self, var_2, var_3, self.origin, var_1 ) && level.last_announcer_line != "long_shot" )
|
|
{
|
|
if ( level.teambased )
|
|
level notify( "announcement", "long_shot", self.team, undefined );
|
|
else
|
|
level notify( "announcement", "long_shot_noteam", undefined, undefined );
|
|
|
|
level.last_announcer_line = "long_shot";
|
|
continue;
|
|
}
|
|
|
|
if ( self.recentkillcount == 2 )
|
|
{
|
|
if ( level.teambased )
|
|
level notify( "announcement", "double_kill", self.team, undefined );
|
|
else
|
|
level notify( "announcement", "double_kill_noteam", undefined, undefined );
|
|
}
|
|
|
|
if ( level.gametype != "horde" )
|
|
{
|
|
if ( isbackshot( var_1 ) && level.last_announcer_line != "back_shot" )
|
|
{
|
|
level notify( "announcement", "back_shot_noteam", undefined, undefined );
|
|
level.last_announcer_line = "back_shot";
|
|
}
|
|
|
|
if ( issavior( var_1, var_4 ) && level.last_announcer_line != "savior" )
|
|
{
|
|
if ( level.teambased )
|
|
level notify( "announcement", "savior", self.team, undefined );
|
|
else
|
|
level notify( "announcement", "savior_noteam", undefined, undefined );
|
|
|
|
level.last_announcer_line = "savior";
|
|
}
|
|
|
|
if ( level.teambased && var_4 - var_1.lastkilltime < 500 && level.last_announcer_line != "avenger" )
|
|
{
|
|
if ( var_1.lastkilledplayer != self )
|
|
{
|
|
if ( level.teambased )
|
|
level notify( "announcement", "avenger", self.team, undefined );
|
|
else
|
|
level notify( "announcement", "avenger_noteam", undefined, undefined );
|
|
|
|
level.last_announcer_line = "avenger";
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( self.recentkillcount == 3 )
|
|
{
|
|
if ( level.teambased )
|
|
level notify( "announcement", "triple_kill", self.team, undefined );
|
|
else
|
|
level notify( "announcement", "triple_kill_noteam", undefined, undefined );
|
|
}
|
|
|
|
if ( self.recentkillcount >= 4 )
|
|
level notify( "announcement", "multikill", undefined, undefined );
|
|
|
|
if ( self.adrenaline >= 5 )
|
|
level notify( "announcement", "killstreak", undefined, undefined );
|
|
}
|
|
|
|
wait 0.1;
|
|
}
|
|
}
|
|
|
|
isbackshot( var_0 )
|
|
{
|
|
var_1 = var_0.anglesondeath[1];
|
|
var_2 = self.anglesonkill[1];
|
|
var_3 = angleclamp180( var_1 - var_2 );
|
|
|
|
if ( abs( var_3 ) < 65 )
|
|
return 1;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
issavior( var_0, var_1 )
|
|
{
|
|
foreach ( var_4, var_3 in var_0.damagedplayers )
|
|
{
|
|
if ( var_4 == self.guid )
|
|
continue;
|
|
|
|
if ( level.teambased && var_1 - var_3 < 500 )
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
determine_close_match()
|
|
{
|
|
var_0 = maps\mp\_utility::gettimelimit() * 60;
|
|
var_1 = maps\mp\_utility::getscorelimit();
|
|
|
|
if ( level.gametype == "blitz" )
|
|
var_1 = maps\mp\_utility::getwatcheddvar( "scorelimit" );
|
|
|
|
if ( var_0 < 60 || var_1 == 0 )
|
|
return;
|
|
|
|
var_2 = max( 5, var_1 / 20 );
|
|
thread match_nearly_over( var_1 );
|
|
common_scripts\utility::waittill_notify_or_timeout( "score_limit_almost_reached", var_0 - 25 );
|
|
|
|
if ( abs( getteamscore( "allies" ) - getteamscore( "axis" ) ) < var_2 )
|
|
level notify( "announcement", "close_match" );
|
|
}
|
|
|
|
match_nearly_over( var_0 )
|
|
{
|
|
var_1 = 0.9;
|
|
|
|
for (;;)
|
|
{
|
|
var_2 = getteamscore( "allies" );
|
|
var_3 = getteamscore( "axis" );
|
|
|
|
if ( var_2 > var_0 * 0.9 || var_3 > var_0 * 0.9 )
|
|
{
|
|
level notify( "score_limit_almost_reached" );
|
|
break;
|
|
}
|
|
|
|
wait 0.25;
|
|
}
|
|
}
|
|
|
|
determine_score_big_lead()
|
|
{
|
|
level endon( "game_ended" );
|
|
var_0 = maps\mp\_utility::getscorelimit();
|
|
|
|
if ( level.gametype == "blitz" )
|
|
var_0 = maps\mp\_utility::getwatcheddvar( "scorelimit" );
|
|
|
|
if ( var_0 == 0 )
|
|
return;
|
|
|
|
var_1 = var_0 * 0.5;
|
|
var_2 = 0;
|
|
var_3 = 0;
|
|
var_4 = 0;
|
|
var_5 = 30;
|
|
|
|
for (;;)
|
|
{
|
|
var_6 = getteamscore( "allies" );
|
|
var_7 = getteamscore( "axis" );
|
|
var_8 = gettime();
|
|
|
|
if ( var_6 == var_2 && var_7 == var_3 && var_8 > 60000 )
|
|
var_4++;
|
|
else
|
|
var_4 = 0;
|
|
|
|
if ( var_4 > var_5 )
|
|
{
|
|
level notify( "announcement", "score_unchanged" );
|
|
var_4 = 0;
|
|
}
|
|
|
|
var_9 = abs( var_6 - var_7 );
|
|
|
|
if ( var_9 > var_1 )
|
|
{
|
|
if ( var_6 > var_7 )
|
|
{
|
|
level notify( "announcement", "big_spread", "ghosts" );
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
level notify( "announcement", "big_spread", "federation" );
|
|
return;
|
|
}
|
|
}
|
|
|
|
var_2 = var_6;
|
|
var_3 = var_7;
|
|
wait 1;
|
|
}
|
|
}
|
|
|
|
determine_score_big_lead_noteam()
|
|
{
|
|
level endon( "game_ended" );
|
|
var_0 = maps\mp\_utility::getscorelimit();
|
|
|
|
if ( level.gametype == "blitz" )
|
|
var_0 = maps\mp\_utility::getwatcheddvar( "scorelimit" );
|
|
|
|
if ( var_0 == 0 )
|
|
return;
|
|
|
|
for (;;)
|
|
{
|
|
if ( isdefined( level.players ) )
|
|
{
|
|
var_1 = [];
|
|
var_1 = common_scripts\utility::array_sort_with_func( level.players, ::is_score_a_greater_than_b );
|
|
|
|
if ( var_1.size >= 2 )
|
|
{
|
|
if ( var_1[0].score - var_1[1].score > var_0 / 2 )
|
|
{
|
|
level notify( "announcement", "big_spread_noteam" );
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
wait 1;
|
|
}
|
|
}
|
|
|
|
randomizer_create( var_0 )
|
|
{
|
|
var_1 = spawnstruct();
|
|
var_1.array = var_0;
|
|
return var_1;
|
|
}
|
|
|
|
randomizer_get_no_repeat()
|
|
{
|
|
var_0 = undefined;
|
|
|
|
if ( self.array.size > 1 && isdefined( self.last_index ) )
|
|
{
|
|
var_0 = randomint( self.array.size - 1 );
|
|
|
|
if ( var_0 >= self.last_index )
|
|
var_0++;
|
|
}
|
|
else
|
|
var_0 = randomint( self.array.size );
|
|
|
|
self.last_index = var_0;
|
|
return self.array[var_0];
|
|
}
|
|
|
|
rotate_turntable()
|
|
{
|
|
var_0 = getent( "showcase_turntable", "targetname" );
|
|
var_1 = getentarray( "showcase_prize", "targetname" );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
var_3 linkto( var_0 );
|
|
|
|
for (;;)
|
|
{
|
|
var_0 rotateyaw( 360, 20 );
|
|
wait 20;
|
|
}
|
|
}
|
|
|
|
customcratefunc()
|
|
{
|
|
level.allow_level_killstreak = maps\mp\_utility::allowlevelkillstreaks();
|
|
|
|
if ( !level.allow_level_killstreak )
|
|
return;
|
|
|
|
maps\mp\killstreaks\_airdrop::addcratetype( "airdrop_assault", "slot_machine", 2000, maps\mp\killstreaks\_airdrop::killstreakcratethink, maps\mp\killstreaks\_airdrop::get_friendly_crate_model(), maps\mp\killstreaks\_airdrop::get_enemy_crate_model(), &"MP_DLC_13_KILLSTREAK_PICKUP" );
|
|
level thread killstreak_watch_for_crate();
|
|
}
|
|
|
|
killstreak_watch_for_crate()
|
|
{
|
|
for (;;)
|
|
{
|
|
level waittill( "createAirDropCrate", var_0 );
|
|
|
|
if ( isdefined( var_0 ) && isdefined( var_0.cratetype ) && var_0.cratetype == "slot_machine" )
|
|
{
|
|
killstreak_set_weight( 0 );
|
|
var_1 = wait_for_capture( var_0 );
|
|
|
|
if ( !isdefined( var_1 ) )
|
|
killstreak_set_weight( 2000 );
|
|
else
|
|
game["player_holding_level_killstreak"] = var_1;
|
|
}
|
|
}
|
|
}
|
|
|
|
wait_for_capture( var_0 )
|
|
{
|
|
var_1 = watch_for_air_drop_death( var_0 );
|
|
return var_1;
|
|
}
|
|
|
|
watch_for_air_drop_death( var_0 )
|
|
{
|
|
var_0 endon( "death" );
|
|
var_0 waittill( "captured", var_1 );
|
|
return var_1;
|
|
}
|
|
|
|
killstreak_set_weight( var_0 )
|
|
{
|
|
if ( isdefined( game["player_holding_level_killstreak"] ) && isalive( game["player_holding_level_killstreak"] ) )
|
|
return 0;
|
|
|
|
maps\mp\killstreaks\_airdrop::changecrateweight( "airdrop_assault", "slot_machine", var_0 );
|
|
}
|
|
|
|
customkillstreakfunc()
|
|
{
|
|
level.killstreakweildweapons["killstreak_level_event_mp"] = "slot_machine";
|
|
level.killstreakfuncs["slot_machine"] = ::tryusekillstreak;
|
|
thread debug_prizes();
|
|
}
|
|
|
|
custombotkillstreakfunc()
|
|
{
|
|
maps\mp\bots\_bots_ks::bot_register_killstreak_func( "slot_machine", maps\mp\bots\_bots_ks::bot_killstreak_simple_use );
|
|
}
|
|
|
|
tryusekillstreak( var_0, var_1 )
|
|
{
|
|
level notify( "killstreak_activate", self );
|
|
return 1;
|
|
}
|
|
|
|
select_random_prize()
|
|
{
|
|
var_0 = [];
|
|
var_1 = 30;
|
|
var_2 = var_1 + 15;
|
|
var_3 = var_2 + 25;
|
|
var_4 = var_3 + 25;
|
|
var_5 = var_4 + 5;
|
|
|
|
for (;;)
|
|
{
|
|
level waittill( "killstreak_activate", var_6 );
|
|
common_scripts\utility::flag_set( "ready_to_announce" );
|
|
level notify( "allow_override" );
|
|
|
|
if ( !common_scripts\utility::flag( "killstreak_additional" ) )
|
|
{
|
|
if ( level.teambased )
|
|
level notify( "announcement", "ks_first", var_6.team, undefined, 1 );
|
|
else
|
|
level notify( "announcement", "ks_first_noteam", undefined, undefined, 1 );
|
|
|
|
common_scripts\utility::flag_set( "killstreak_additional" );
|
|
}
|
|
else if ( level.teambased )
|
|
level notify( "announcement", "ks_additional", var_6.team, undefined, 1 );
|
|
else
|
|
level notify( "announcement", "ks_additional_noteam", undefined, undefined, 1 );
|
|
|
|
var_7 = randomintrange( 0, 100 );
|
|
var_8 = "null";
|
|
var_9 = "null";
|
|
|
|
if ( var_7 <= var_1 )
|
|
var_8 = "trap_1";
|
|
|
|
if ( var_7 >= var_1 && var_7 <= var_2 )
|
|
var_8 = "all_traps";
|
|
|
|
if ( var_7 >= var_2 && var_7 <= var_3 )
|
|
var_8 = "turrets";
|
|
|
|
if ( var_7 >= var_3 && var_7 <= var_4 )
|
|
var_8 = "care_strike";
|
|
|
|
if ( var_7 >= var_4 && var_7 <= var_5 )
|
|
var_8 = "kem_strike";
|
|
|
|
if ( ( var_8 == "care_strike" || var_8 == "all_traps" ) && level.carepackages.size > 0 )
|
|
var_8 = "trap_1";
|
|
|
|
if ( common_scripts\utility::flag( "turrets_active" ) && ( var_8 == "all_traps" || var_8 == "turrets" ) )
|
|
var_8 = "trap_1";
|
|
|
|
switch ( var_8 )
|
|
{
|
|
case "trap_1":
|
|
common_scripts\utility::flag_set( "trap_1_active" );
|
|
thread manage_trap_1_area_spawns();
|
|
var_9 = "Gas Trap";
|
|
common_scripts\utility::exploder( 24 );
|
|
thread play_gas_jet_fx();
|
|
thread play_slot_machine_sfx();
|
|
jumbotron_play_slot_machine_bink( "mp_shipment_ns_trap_1_prize", 5 );
|
|
|
|
if ( isdefined( var_6 ) )
|
|
var_6 thread trap_activate( level.trap_1, 25, 0, 1, 12, 1 );
|
|
|
|
break;
|
|
case "all_traps":
|
|
var_9 = "All Traps";
|
|
common_scripts\utility::flag_set( "trap_1_active" );
|
|
thread manage_trap_1_area_spawns();
|
|
common_scripts\utility::exploder( 26 );
|
|
thread play_gas_jet_fx();
|
|
thread play_slot_machine_sfx( 1 );
|
|
jumbotron_play_slot_machine_bink( "mp_shipment_ns_all_traps_prize", 5 );
|
|
|
|
if ( isdefined( var_6 ) )
|
|
var_6 thread trap_activate( level.trap_1, 25, 0, 1, 12, 1 );
|
|
|
|
wait 0.5;
|
|
var_6 thread multi_turret( 15 );
|
|
wait 1.2;
|
|
var_6 thread carestrike_setup();
|
|
break;
|
|
case "turrets":
|
|
var_9 = "Arena Cleanse";
|
|
common_scripts\utility::exploder( 22 );
|
|
thread play_slot_machine_sfx();
|
|
jumbotron_play_slot_machine_bink( "mp_shipment_ns_turret_prize", 5 );
|
|
|
|
if ( isdefined( var_6 ) )
|
|
var_6 thread multi_turret( 15 );
|
|
|
|
break;
|
|
case "care_strike":
|
|
var_9 = "Carestrike";
|
|
common_scripts\utility::exploder( 23 );
|
|
thread play_slot_machine_sfx();
|
|
jumbotron_play_slot_machine_bink( "mp_shipment_ns_care_prize", 5 );
|
|
|
|
if ( isdefined( var_6 ) )
|
|
var_6 thread carestrike_setup();
|
|
|
|
break;
|
|
case "kem_strike":
|
|
var_9 = "K.E.M. Strike";
|
|
common_scripts\utility::exploder( 25 );
|
|
thread play_slot_machine_sfx();
|
|
jumbotron_play_slot_machine_bink( "mp_shipment_ns_kem_prize", 5 );
|
|
|
|
if ( isdefined( var_6 ) )
|
|
var_6 thread maps\mp\killstreaks\_nuke::donuke();
|
|
|
|
break;
|
|
}
|
|
|
|
if ( !level.teambased && var_8 != "kem_strike" )
|
|
var_8 = var_8 + "_noteam";
|
|
|
|
common_scripts\utility::flag_set( "ready_to_announce" );
|
|
level notify( "allow_override" );
|
|
waittillframeend;
|
|
level notify( "announcement", var_8, var_6.team, undefined, 1 );
|
|
game["player_holding_level_killstreak"] = undefined;
|
|
killstreak_set_weight( 2000 );
|
|
}
|
|
}
|
|
|
|
nuke_custom_visionset()
|
|
{
|
|
level waittill( "nuke_death" );
|
|
wait 1.3;
|
|
level notify( "nuke_death" );
|
|
thread nuke_custom_visionset();
|
|
}
|
|
|
|
play_slot_machine_sfx( var_0 )
|
|
{
|
|
if ( isdefined( var_0 ) )
|
|
{
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine_dist_jackpot", ( -38, -1357, 1261 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine_jackpot", ( -117, -211, 263 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine_jackpot", ( -741, -381, 347 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine_jackpot", ( -323, 179, 258 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine_jackpot", ( -744, 492, 342 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine_jackpot", ( -420, 750, 342 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine_jackpot", ( 114, 344, 259 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine_jackpot", ( 414, 745, 341 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine_jackpot", ( 720, 505, 341 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine_jackpot", ( 321, -52, 255 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine_jackpot", ( 721, -346, 348 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine_jackpot", ( 464, -617, 348 ) );
|
|
}
|
|
else
|
|
{
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine_dist", ( -38, -1357, 1261 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine", ( -117, -211, 263 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine", ( -741, -381, 347 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine", ( -323, 179, 258 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine", ( -744, 492, 342 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine", ( -420, 750, 342 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine", ( 114, 344, 259 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine", ( 414, 745, 341 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine", ( 720, 505, 341 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine", ( 321, -52, 255 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine", ( 721, -346, 348 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_slot_machine", ( 464, -617, 348 ) );
|
|
}
|
|
}
|
|
|
|
trap_init()
|
|
{
|
|
level.trap_1 = spawnstruct();
|
|
level.trap_1.inflictor = getent( "trap_1_origin", "targetname" );
|
|
level.trap_1.volume = getent( "trap_1_volume", "targetname" );
|
|
level.trap_1.destructibles = [ ( 481, -74, -100 ) ];
|
|
level.trap_1.player = undefined;
|
|
level.trap_1.team = undefined;
|
|
level.trap_1.exploder = 91;
|
|
level.trap_1.flag = "trap_1_active";
|
|
common_scripts\utility::flag_init( "trap_1_active" );
|
|
common_scripts\utility::flag_init( "jumbotron_available" );
|
|
common_scripts\utility::flag_init( "killstreak_can_kill" );
|
|
common_scripts\utility::flag_init( "killstreak_additional" );
|
|
common_scripts\utility::flag_init( "turrets_active" );
|
|
common_scripts\utility::flag_init( "played_easter_egg_video" );
|
|
thread gas_visionset_cleanup();
|
|
}
|
|
|
|
gas_visionset_cleanup()
|
|
{
|
|
wait 2.5;
|
|
|
|
while ( level.players.size == 0 )
|
|
wait 0.1;
|
|
|
|
level.vision_set_stage = 0;
|
|
|
|
foreach ( var_1 in level.players )
|
|
var_1 visionsetstage( level.vision_set_stage, 2 );
|
|
}
|
|
|
|
trap_activate( var_0, var_1, var_2, var_3, var_4, var_5 )
|
|
{
|
|
level notify( "gas_trap_activated" );
|
|
level endon( "gas_trap_activated" );
|
|
level endon( "game_ended" );
|
|
common_scripts\utility::flag_set( var_0.flag );
|
|
var_0.player = self;
|
|
var_0.team = self.pers["team"];
|
|
badplace_brush( "badplace_trap", var_4, var_0.volume, "allies", "axis" );
|
|
common_scripts\utility::exploder( var_0.exploder );
|
|
|
|
if ( var_0 == level.trap_1 )
|
|
{
|
|
thread gas_trap_sfx();
|
|
thread gas_trap_vision();
|
|
}
|
|
|
|
for ( var_6 = 0; var_6 < var_4; var_6 = var_6 + var_3 )
|
|
{
|
|
maps\mp\gametypes\_hostmigration::waittillhostmigrationdone();
|
|
|
|
if ( isdefined( var_5 ) )
|
|
common_scripts\utility::exploder( var_0.exploder );
|
|
|
|
var_7 = var_0.player;
|
|
|
|
if ( !isdefined( var_0.player ) || !isplayer( var_0.player ) )
|
|
var_7 = undefined;
|
|
|
|
thread damage_characters( var_0, var_7, var_1 );
|
|
wait( var_3 );
|
|
}
|
|
|
|
var_0.player = undefined;
|
|
var_0.team = undefined;
|
|
common_scripts\_exploder::stop_exploder_proc( var_0.exploder );
|
|
wait 1;
|
|
common_scripts\utility::flag_clear( var_0.flag );
|
|
}
|
|
|
|
play_gas_jet_fx()
|
|
{
|
|
wait 3;
|
|
common_scripts\utility::exploder( 92 );
|
|
}
|
|
|
|
gas_trap_vision()
|
|
{
|
|
level.vision_set_stage = 1;
|
|
|
|
foreach ( var_1 in level.players )
|
|
var_1 visionsetstage( level.vision_set_stage, 0.5 );
|
|
|
|
thread stop_gas_trap_vision();
|
|
}
|
|
|
|
stop_gas_trap_vision()
|
|
{
|
|
wait 12;
|
|
level.vision_set_stage = 0;
|
|
|
|
foreach ( var_1 in level.players )
|
|
var_1 visionsetstage( level.vision_set_stage, 2 );
|
|
}
|
|
|
|
gas_trap_sfx()
|
|
{
|
|
common_scripts\utility::play_sound_in_space( "scn_shp_gas_trap", ( -287, 1021, 244 ) );
|
|
common_scripts\utility::play_sound_in_space( "scn_shp_gas_trap", ( 286, 1021, 244 ) );
|
|
common_scripts\utility::play_sound_in_space( "scn_shp_gas_trap", ( 354, -743, 250 ) );
|
|
common_scripts\utility::play_sound_in_space( "scn_shp_gas_trap", ( -316, -730, 250 ) );
|
|
common_scripts\utility::play_sound_in_space( "scn_shp_gas_trap", ( -6, -1084, 357 ) );
|
|
common_scripts\utility::play_sound_in_space( "scn_shp_gas_trap", ( -553, -968, 250 ) );
|
|
}
|
|
|
|
damage_characters( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = var_0.volume getistouchingentities( level.characters );
|
|
|
|
foreach ( var_5 in var_3 )
|
|
{
|
|
if ( var_5 maps\mp\_utility::_hasperk( "_specialty_blastshield" ) )
|
|
var_2 = var_2 * 1.6;
|
|
|
|
if ( can_kill_character( var_0, var_5 ) && isdefined( var_1 ) )
|
|
{
|
|
if ( var_5.team != var_0.team || level.friendlyfire )
|
|
var_0.inflictor radiusdamage( var_5.origin, 10, var_2, var_2, var_1, "MOD_PROJECTILE_SPLASH", "killstreak_level_event_mp" );
|
|
else if ( var_5 == var_1 )
|
|
var_0.inflictor radiusdamage( var_5.origin, 10, var_2, var_2, var_1, "MOD_PROJECTILE_SPLASH", "killstreak_level_event_mp" );
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
can_kill_character( var_0, var_1 )
|
|
{
|
|
if ( !isdefined( var_1 ) || !maps\mp\_utility::isreallyalive( var_1 ) )
|
|
return 0;
|
|
|
|
if ( level.teambased )
|
|
{
|
|
if ( isdefined( var_0.player ) && var_1 == var_0.player )
|
|
return 1;
|
|
else if ( isdefined( var_0.player ) && isdefined( var_1.owner ) && var_1.owner == var_0.player )
|
|
return 1;
|
|
else if ( isdefined( var_0.team ) && var_1.team == var_0.team && !level.friendlyfire )
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
damage_targets( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = "MOD_EXPLOSIVE";
|
|
var_5 = "none";
|
|
var_6 = ( 0, 0, 0 );
|
|
var_7 = ( 0, 0, 0 );
|
|
var_8 = "";
|
|
var_9 = "";
|
|
var_10 = "";
|
|
var_11 = undefined;
|
|
var_12 = var_0.volume getistouchingentities( var_2 );
|
|
|
|
foreach ( var_14 in var_12 )
|
|
{
|
|
if ( !isdefined( var_14 ) )
|
|
continue;
|
|
|
|
if ( isdefined( var_14.owner ) && var_14.owner == var_0.owner )
|
|
var_14 notify( "damage", var_3, var_1, var_6, var_7, var_4, var_8, var_9, var_10, var_11, var_5 );
|
|
else if ( level.teambased && isdefined( var_0.team ) && isdefined( var_14.team ) && var_14.team == var_0.team )
|
|
continue;
|
|
|
|
var_14 notify( "damage", var_3, var_1, var_6, var_7, var_4, var_8, var_9, var_10, var_11, var_5 );
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
set_up_multi_turret()
|
|
{
|
|
level.sentrytype["multiturret"] = "multiturret";
|
|
level.sentrysettings["multiturret"] = spawnstruct();
|
|
level.sentrysettings["multiturret"].health = 999999;
|
|
level.sentrysettings["multiturret"].maxhealth = 1000;
|
|
level.sentrysettings["multiturret"].burstmin = 20;
|
|
level.sentrysettings["multiturret"].burstmax = 120;
|
|
level.sentrysettings["multiturret"].pausemin = 0.0;
|
|
level.sentrysettings["multiturret"].pausemax = 0.01;
|
|
level.sentrysettings["multiturret"].sentrymodeon = "sentry";
|
|
level.sentrysettings["multiturret"].sentrymodeoff = "sentry_offline";
|
|
level.sentrysettings["multiturret"].timeout = 90.0;
|
|
level.sentrysettings["multiturret"].spinuptime = 0.05;
|
|
level.sentrysettings["multiturret"].overheattime = 15.0;
|
|
level.sentrysettings["multiturret"].cooldowntime = 0.1;
|
|
level.sentrysettings["multiturret"].fxtime = 0.3;
|
|
level.sentrysettings["multiturret"].streakname = "sentry";
|
|
level.sentrysettings["multiturret"].weaponinfo = "sentry_minigun_mp";
|
|
level.sentrysettings["multiturret"].modelbase = "weapon_sentry_chaingun";
|
|
level.sentrysettings["multiturret"].modelplacement = "weapon_sentry_chaingun_obj";
|
|
level.sentrysettings["multiturret"].modelplacementfailed = "weapon_sentry_chaingun_obj_red";
|
|
level.sentrysettings["multiturret"].modelbombsquad = "weapon_sentry_chaingun_bombsquad";
|
|
level.sentrysettings["multiturret"].modeldestroyed = "weapon_sentry_chaingun_destroyed";
|
|
level.sentrysettings["multiturret"].hintstring = &"";
|
|
level.sentrysettings["multiturret"].headicon = 1;
|
|
level.sentrysettings["multiturret"].teamsplash = "used_sentry";
|
|
level.sentrysettings["multiturret"].shouldsplash = 0;
|
|
level.sentrysettings["multiturret"].vodestroyed = undefined;
|
|
level.sentrysettings["multiturret"].xppopup = "destroyed_sentry";
|
|
level.sentrysettings["multiturret"].lightfxtag = "tag_fx";
|
|
}
|
|
|
|
multi_turret( var_0 )
|
|
{
|
|
common_scripts\utility::flag_set( "turrets_active" );
|
|
var_1 = getentarray( "turret_killstreak_location", "targetname" );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
thread generate_turret( var_0, var_3 );
|
|
|
|
var_5 = getentarray( "turret_shutter", "targetname" );
|
|
|
|
foreach ( var_7 in var_5 )
|
|
var_7 notsolid();
|
|
|
|
thread turret_box_light_fx();
|
|
thread sfx_turret_shutters_open();
|
|
move_shutter_array( var_5, "open", 0.25 );
|
|
wait( var_0 - 0.25 );
|
|
thread sfx_turret_shutters_close();
|
|
move_shutter_array( var_5, "close", 0.25 );
|
|
|
|
foreach ( var_7 in var_5 )
|
|
var_7 solid();
|
|
|
|
common_scripts\utility::flag_clear( "turrets_active" );
|
|
}
|
|
|
|
generate_turret( var_0, var_1 )
|
|
{
|
|
var_2 = maps\mp\killstreaks\_autosentry::createsentryforplayer( "multiturret", self );
|
|
var_2.shouldsplash = 0;
|
|
var_2.carriedby = self;
|
|
level.turret_team = self.pers["team"];
|
|
var_2 maps\mp\killstreaks\_autosentry::sentry_setplaced();
|
|
var_2.origin = var_1.origin;
|
|
var_2.angles = var_1.angles;
|
|
var_2.killcament = spawn( "script_model", var_2.origin + ( 0, 0, 64 ) );
|
|
var_2.killcament linkto( var_2 );
|
|
var_2 thread multi_turret_timeout( var_0 );
|
|
}
|
|
|
|
multi_turret_timeout( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "game_ended" );
|
|
wait( var_0 );
|
|
self turretfiredisable();
|
|
var_1 = getentarray( "turret_shutter", "targetname" );
|
|
wait 0.25;
|
|
self delete();
|
|
self notify( "death" );
|
|
}
|
|
|
|
carestrike_setup()
|
|
{
|
|
var_0 = getent( "carestrike_spawn_1", "targetname" );
|
|
var_1 = getent( "carestrike_spawn_2", "targetname" );
|
|
var_2 = getent( "carestrike_spawn_3", "targetname" );
|
|
var_3 = getent( "carestrike_location_1", "targetname" );
|
|
var_4 = getent( "carestrike_location_2", "targetname" );
|
|
var_5 = getent( "carestrike_location_3", "targetname" );
|
|
thread common_scripts\utility::play_sound_in_space( "mus_carestrike", ( 33, 92, 741 ) );
|
|
var_3 playsound( "scn_shp_carestrike_jets" );
|
|
thread jumbotron_play_slot_machine_bink( "mp_shipment_ns_carestrike", 7 );
|
|
thread carestrike( self, var_0, var_3, "mp_shipment_carestrike_jet_1" );
|
|
thread carestrike( self, var_1, var_4, "mp_shipment_carestrike_jet_2" );
|
|
thread carestrike( self, var_2, var_5, "mp_shipment_carestrike_jet_3" );
|
|
}
|
|
|
|
carestrike( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = var_2.angles;
|
|
var_2 = var_2.origin;
|
|
var_5 = 12000;
|
|
var_6 = 4000;
|
|
var_7 = maps\mp\killstreaks\_airdrop::getflyheightoffset( var_2 );
|
|
var_8 = var_1.origin;
|
|
var_8 = var_8 * ( 1, 1, 0 ) + ( 0, 0, var_7 );
|
|
var_9 = airplanesetup( var_0, var_8 );
|
|
var_9.angles = var_1.angles;
|
|
var_10 = anglestoforward( var_4 );
|
|
var_9 scriptmodelplayanimdeltamotion( var_3 );
|
|
var_11 = distance2d( var_9.origin, var_2 );
|
|
var_12 = 0;
|
|
|
|
switch ( var_3 )
|
|
{
|
|
case "mp_shipment_carestrike_jet_1":
|
|
wait 0.05;
|
|
playfxontag( level._effect["vfx_jet_cheap_contrail_red"], var_9, "tag_body" );
|
|
break;
|
|
case "mp_shipment_carestrike_jet_2":
|
|
wait 0.1;
|
|
var_9 playsoundonmovingent( "scn_shp_carestrike_jets_mover" );
|
|
playfxontag( level._effect["vfx_jet_cheap_contrail_white"], var_9, "tag_body" );
|
|
break;
|
|
case "mp_shipment_carestrike_jet_3":
|
|
wait 0.15;
|
|
playfxontag( level._effect["vfx_jet_cheap_contrail_blue"], var_9, "tag_body" );
|
|
break;
|
|
}
|
|
|
|
for (;;)
|
|
{
|
|
var_13 = distance2d( var_9.origin, var_2 );
|
|
|
|
if ( var_13 < var_11 )
|
|
var_11 = var_13;
|
|
else if ( var_13 > var_11 )
|
|
break;
|
|
|
|
if ( var_13 < 256 )
|
|
break;
|
|
else if ( var_13 < 768 )
|
|
{
|
|
earthquake( 0.15, 1.5, var_2, 1500 );
|
|
|
|
if ( !var_12 )
|
|
var_12 = 1;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
var_14 = [];
|
|
var_14[0] = "airdrop_assault";
|
|
var_14[1] = "airdrop_support";
|
|
var_15 = var_14[common_scripts\utility::cointoss()];
|
|
var_16 = var_9 dropthecrate( var_2, var_15, var_7, 0, undefined, var_8, var_10 );
|
|
wait 0.05;
|
|
var_9 notify( "drop_crate" );
|
|
wait 0.05;
|
|
var_15 = var_14[common_scripts\utility::cointoss()];
|
|
var_16 = var_9 dropthecrate( var_2, var_15, var_7, 0, undefined, var_8, var_10 );
|
|
wait 0.05;
|
|
var_9 notify( "drop_crate" );
|
|
wait 4;
|
|
objective_delete( var_9.friendly_objective_number );
|
|
maps\mp\_utility::_objective_delete( var_9.friendly_objective_number );
|
|
objective_delete( var_9.enemy_objective_number );
|
|
maps\mp\_utility::_objective_delete( var_9.enemy_objective_number );
|
|
var_9 delete();
|
|
}
|
|
|
|
dropthecrate( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9 )
|
|
{
|
|
var_10 = [];
|
|
self.owner endon( "disconnect" );
|
|
|
|
if ( !isdefined( var_4 ) )
|
|
{
|
|
if ( isdefined( var_7 ) )
|
|
{
|
|
var_11 = undefined;
|
|
var_12 = undefined;
|
|
|
|
for ( var_13 = 0; var_13 < 100; var_13++ )
|
|
{
|
|
var_12 = maps\mp\killstreaks\_airdrop::getcratetypefordroptype( var_1 );
|
|
var_11 = 0;
|
|
|
|
for ( var_14 = 0; var_14 < var_7.size; var_14++ )
|
|
{
|
|
if ( var_12 == var_7[var_14] )
|
|
{
|
|
var_11 = 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( var_11 == 0 )
|
|
break;
|
|
}
|
|
|
|
if ( var_11 == 1 )
|
|
var_12 = maps\mp\killstreaks\_airdrop::getcratetypefordroptype( var_1 );
|
|
}
|
|
else
|
|
var_12 = maps\mp\killstreaks\_airdrop::getcratetypefordroptype( var_1 );
|
|
}
|
|
else
|
|
var_12 = var_4;
|
|
|
|
if ( !isdefined( var_6 ) )
|
|
var_6 = ( randomint( 50 ), randomint( 50 ), randomint( 50 ) );
|
|
|
|
var_10 = maps\mp\killstreaks\_airdrop::createairdropcrate( self.owner, var_1, var_12, var_5, var_0 );
|
|
|
|
switch ( var_1 )
|
|
{
|
|
case "airdrop_juggernaut_maniac":
|
|
case "airdrop_juggernaut_recon":
|
|
case "airdrop_juggernaut":
|
|
case "nuke_drop":
|
|
case "airdrop_mega":
|
|
var_10 linkto( self, "tag_ground", ( 64, 32, -128 ), ( 0, 0, 0 ) );
|
|
break;
|
|
case "airdrop_osprey_gunner":
|
|
case "airdrop_escort":
|
|
var_10 linkto( self, var_8, ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
break;
|
|
default:
|
|
var_10 linkto( self, "tag_ground", ( 32, 0, 5 ), ( 0, 0, 0 ) );
|
|
break;
|
|
}
|
|
|
|
var_10.angles = ( 0, 0, 0 );
|
|
var_10 show();
|
|
var_15 = self.veh_speed;
|
|
var_6 = var_6 * 50000;
|
|
var_10.carestrike = 1;
|
|
thread maps\mp\killstreaks\_airdrop::waitfordropcratemsg( var_10, var_6, var_1, var_12, 9999999 );
|
|
var_10.droppingtoground = 1;
|
|
var_10 thread crate_drop_sfx();
|
|
return var_12;
|
|
}
|
|
|
|
crate_drop_sfx()
|
|
{
|
|
wait 0.1;
|
|
self playsoundonmovingent( "scn_shp_carestrike_release" );
|
|
}
|
|
|
|
airplanesetup( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = spawn( "script_model", var_1 );
|
|
var_3 setmodel( "vehicle_f15_low_nodetail_mp" );
|
|
|
|
if ( !isdefined( var_3 ) )
|
|
return;
|
|
|
|
var_3.owner = var_0;
|
|
var_3.team = var_0.team;
|
|
var_4 = maps\mp\gametypes\_gameobjects::getnextobjid();
|
|
objective_add( var_4, "invisible", ( 0, 0, 0 ) );
|
|
objective_position( var_4, self.origin );
|
|
objective_state( var_4, "active" );
|
|
objective_onentitywithrotation( var_4, var_3 );
|
|
objective_icon( var_4, "compass_objpoint_airstrike_friendly" );
|
|
var_5 = maps\mp\gametypes\_gameobjects::getnextobjid();
|
|
objective_add( var_5, "invisible", ( 0, 0, 0 ) );
|
|
objective_position( var_5, self.origin );
|
|
objective_state( var_5, "active" );
|
|
objective_onentitywithrotation( var_5, var_3 );
|
|
objective_icon( var_5, "compass_objpoint_airstrike_busy" );
|
|
|
|
if ( level.teambased )
|
|
{
|
|
objective_team( var_4, var_0.team );
|
|
objective_team( var_5, maps\mp\_utility::getotherteam( var_0.team ) );
|
|
}
|
|
else
|
|
{
|
|
objective_player( var_4, var_0 getentitynumber() );
|
|
objective_playermask_showtoall( var_5 );
|
|
objective_playermask_hidefrom( var_5, var_0 getentitynumber() );
|
|
}
|
|
|
|
var_3.friendly_objective_number = var_4;
|
|
var_3.enemy_objective_number = var_5;
|
|
return var_3;
|
|
}
|
|
|
|
debug_prizes()
|
|
{
|
|
for (;;)
|
|
{
|
|
if ( getdvarint( "scr_trap_1" ) == 1 )
|
|
{
|
|
common_scripts\utility::flag_set( "trap_1_active" );
|
|
thread manage_trap_1_area_spawns();
|
|
jumbotron_play_slot_machine_bink( "mp_shipment_ns_trap_1_prize", 5 );
|
|
level.players[0] thread trap_activate( level.trap_1, 20, 0, 1, 20, 1 );
|
|
}
|
|
|
|
if ( getdvarint( "scr_all_traps" ) == 1 )
|
|
{
|
|
common_scripts\utility::flag_set( "trap_1_active" );
|
|
thread manage_trap_1_area_spawns();
|
|
jumbotron_play_slot_machine_bink( "mp_shipment_ns_all_traps_prize", 5 );
|
|
level.players[0] thread trap_activate( level.trap_1, 15, 0, 1, 20, 1 );
|
|
wait 0.5;
|
|
level.players[0] thread multi_turret( 15 );
|
|
wait 1.2;
|
|
level.players[0] thread carestrike_setup();
|
|
}
|
|
|
|
if ( getdvarint( "scr_carestrike" ) == 1 )
|
|
{
|
|
jumbotron_play_slot_machine_bink( "mp_shipment_ns_care_prize", 5 );
|
|
level.players[0] thread carestrike_setup();
|
|
}
|
|
|
|
if ( getdvarint( "scr_multiturret" ) == 1 )
|
|
{
|
|
jumbotron_play_slot_machine_bink( "mp_shipment_ns_turret_prize", 5 );
|
|
level.players[0] thread multi_turret( 15 );
|
|
}
|
|
|
|
wait 0.25;
|
|
}
|
|
}
|
|
|
|
init_cinematics()
|
|
{
|
|
thread play_random_clip();
|
|
wait 0.05;
|
|
level notify( "cinematic_preload" );
|
|
wait 1;
|
|
level notify( "cinematic_start" );
|
|
}
|
|
|
|
watch_cinematic_use( var_0, var_1, var_2, var_3 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
return;
|
|
|
|
level waittill( var_1 );
|
|
preloadcinematicforall( "long_loop" );
|
|
playcinematicforall( "mp_shipment_ns_trap_1_prize" );
|
|
wait 30;
|
|
common_scripts\utility::flag_set( "jumbotron_available" );
|
|
thread jumbotron_loop_bink( "mp_shipment_ns_long_loop", 33 );
|
|
var_4 = getent( "jumbotron_static_logo", "targetname" );
|
|
var_4 hide();
|
|
}
|
|
|
|
play_random_clip()
|
|
{
|
|
var_0 = [];
|
|
var_0[var_0.size] = "mp_shipment_ns_clip_01";
|
|
var_0[var_0.size] = "mp_shipment_ns_clip_02";
|
|
var_0[var_0.size] = "mp_shipment_ns_clip_03";
|
|
var_0[var_0.size] = "mp_shipment_ns_clip_04";
|
|
var_0[var_0.size] = "mp_shipment_ns_clip_05";
|
|
var_0[var_0.size] = "mp_shipment_ns_clip_06";
|
|
var_0 = randomizer_create( var_0 );
|
|
common_scripts\utility::flag_set( "jumbotron_available" );
|
|
var_1 = getent( "jumbotron_static_logo", "targetname" );
|
|
var_1 hide();
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( "jumbotron_available" );
|
|
var_2 = var_0 randomizer_get_no_repeat();
|
|
playcinematicforall( var_2 );
|
|
wait 3;
|
|
}
|
|
}
|
|
|
|
jumbotron_loop_bink( var_0, var_1 )
|
|
{
|
|
level endon( "stop_jumbotron_loop" );
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( "jumbotron_available" );
|
|
playcinematicforall( var_0 );
|
|
wait( var_1 );
|
|
}
|
|
}
|
|
|
|
jumbotron_play_slot_machine_bink( var_0, var_1 )
|
|
{
|
|
wait( var_1 );
|
|
common_scripts\utility::flag_set( "jumbotron_available" );
|
|
}
|
|
|
|
box_kill_counter()
|
|
{
|
|
level endon( "game_ended" );
|
|
var_0 = getent( "box_kill_volume", "targetname" );
|
|
var_1 = getent( "puzzle_box_sign_on", "targetname" );
|
|
var_2 = getent( "puzzle_box_sign_off", "targetname" );
|
|
var_1 hide();
|
|
|
|
for (;;)
|
|
{
|
|
var_3 = maps\mp\agents\_agent_utility::getactiveagentsoftype( "all" );
|
|
var_3 = common_scripts\utility::array_combine( var_3, level.players );
|
|
var_3 = common_scripts\utility::array_combine( var_3, level.remote_uav );
|
|
|
|
foreach ( var_5 in var_3 )
|
|
{
|
|
if ( isplayer( var_5 ) && ( var_5.sessionstate == "intermission" || var_5.sessionstate == "spectator" || !maps\mp\_utility::isreallyalive( var_5 ) ) )
|
|
var_3 = common_scripts\utility::array_remove( var_3, var_5 );
|
|
}
|
|
|
|
var_7 = var_0 getistouchingentities( var_3 );
|
|
|
|
foreach ( var_9 in var_7 )
|
|
{
|
|
if ( isdefined( var_9.is_in_box ) )
|
|
continue;
|
|
|
|
var_9.is_in_box = 1;
|
|
|
|
if ( isdefined( var_9.classname ) && var_9.classname != "script_vehicle" )
|
|
{
|
|
var_9 thread watch_for_box_death( var_1, var_2 );
|
|
var_9 thread watch_for_leaving_box( var_0 );
|
|
}
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
watch_for_leaving_box( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
|
|
while ( self istouching( var_0 ) )
|
|
wait 0.05;
|
|
|
|
self notify( "left_the_box" );
|
|
self.is_in_box = undefined;
|
|
}
|
|
|
|
watch_for_box_death( var_0, var_1 )
|
|
{
|
|
self endon( "disconnect" );
|
|
self endon( "left_the_box" );
|
|
self waittill( "death" );
|
|
self.is_in_box = undefined;
|
|
level.box_kill_counter = level.box_kill_counter + 1;
|
|
thread box_kill_sign_lights( var_0, var_1 );
|
|
}
|
|
|
|
box_kill_sign_lights( var_0, var_1 )
|
|
{
|
|
common_scripts\utility::exploder( 33 );
|
|
var_1 hide();
|
|
var_0 show();
|
|
var_0 thread puzzle_box_counter_sfx();
|
|
wait 1.5;
|
|
var_0 hide();
|
|
var_1 show();
|
|
}
|
|
|
|
puzzle_box_counter_sfx()
|
|
{
|
|
wait 0.2;
|
|
self playsound( "emt_puzzle_box_counter" );
|
|
}
|
|
|
|
box_kill_numbers()
|
|
{
|
|
for (;;)
|
|
{
|
|
if ( isdefined( level.players ) )
|
|
break;
|
|
|
|
wait 1;
|
|
}
|
|
|
|
level.box_kill_counter = 0;
|
|
var_0 = 0;
|
|
var_1 = 1;
|
|
thread box_kill_counter();
|
|
var_2 = getentarray( "box_1_0", "targetname" );
|
|
var_3 = getentarray( "box_2_0", "targetname" );
|
|
var_4 = common_scripts\utility::array_combine( var_2, var_3 );
|
|
|
|
foreach ( var_6 in var_4 )
|
|
var_6 show();
|
|
|
|
for (;;)
|
|
{
|
|
if ( level.box_kill_counter == 99 )
|
|
level notify( "announcement", "puzzle_box_max", undefined, undefined, 1 );
|
|
else if ( level.box_kill_counter > 1 && level.box_kill_counter % 10 == 0 )
|
|
level notify( "announcement", "puzzle_box", undefined, undefined, 0 );
|
|
|
|
if ( level.box_kill_counter > 99 )
|
|
var_8 = 99;
|
|
else
|
|
var_8 = level.box_kill_counter;
|
|
|
|
if ( var_8 < 10 )
|
|
{
|
|
var_9 = getsubstr( var_8, 0, 1 );
|
|
|
|
foreach ( var_6 in var_2 )
|
|
var_6 setmodel( "shns_score_num_" + var_9 + "_small" );
|
|
}
|
|
|
|
if ( var_8 > 9 && var_0 < 99 )
|
|
{
|
|
var_9 = getsubstr( var_8, 1, 2 );
|
|
|
|
foreach ( var_6 in var_2 )
|
|
var_6 setmodel( "shns_score_num_" + var_9 + "_small" );
|
|
|
|
var_14 = getsubstr( var_8, 0, 1 );
|
|
|
|
foreach ( var_6 in var_3 )
|
|
var_6 setmodel( "shns_score_num_" + var_14 + "_small" );
|
|
}
|
|
|
|
if ( var_8 >= 50 && !common_scripts\utility::flag( "played_easter_egg_video" ) )
|
|
{
|
|
common_scripts\utility::flag_set( "played_easter_egg_video" );
|
|
common_scripts\utility::exploder( 86 );
|
|
thread common_scripts\utility::play_sound_in_space( "emt_jumbotron_ns", ( -38, -1357, 1261 ) );
|
|
jumbotron_play_slot_machine_bink( "mp_shipment_ns_easter_egg", 23 );
|
|
}
|
|
|
|
if ( level.box_kill_counter >= var_1 * 20 )
|
|
{
|
|
var_1++;
|
|
common_scripts\utility::exploder( 8 );
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
match_end_event()
|
|
{
|
|
for (;;)
|
|
{
|
|
level common_scripts\utility::waittill_any( "start_custom_ending", "scoreboard_displaying", "final_killcam_done" );
|
|
|
|
if ( maps\mp\_utility::waslastround() )
|
|
break;
|
|
else
|
|
wait 0.1;
|
|
}
|
|
|
|
maps\mp\_utility::levelflagset( "post_game_level_event_active" );
|
|
var_0 = randomintrange( 1, 10 );
|
|
|
|
if ( var_0 == 1 )
|
|
level notify( "announcement", "outro_rare", undefined, undefined, 1 );
|
|
else
|
|
level notify( "announcement", "outro", undefined, undefined, 1 );
|
|
|
|
maps\mp\_utility::levelflagclear( "post_game_level_event_active" );
|
|
}
|
|
|
|
get_highest_scoring_players()
|
|
{
|
|
var_0 = [];
|
|
|
|
if ( !level.teambased )
|
|
var_1 = common_scripts\utility::array_sort_with_func( level.players, ::is_score_a_greater_than_b );
|
|
else
|
|
{
|
|
var_2 = getteamscore( "allies" );
|
|
var_3 = getteamscore( "axis" );
|
|
|
|
if ( var_2 == var_3 )
|
|
var_4 = undefined;
|
|
else if ( var_2 > var_3 )
|
|
var_4 = "allies";
|
|
else
|
|
var_4 = "axis";
|
|
|
|
if ( isdefined( var_4 ) )
|
|
var_1 = common_scripts\utility::array_sort_with_func( level.teamlist[var_4], ::is_score_a_greater_than_b );
|
|
else
|
|
var_1 = common_scripts\utility::array_sort_with_func( level.players, ::is_score_a_greater_than_b );
|
|
}
|
|
|
|
for ( var_5 = 0; var_5 < 3; var_5++ )
|
|
{
|
|
if ( isdefined( var_1[var_5] ) )
|
|
{
|
|
var_0[var_0.size] = var_1[var_5];
|
|
continue;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
return var_0;
|
|
}
|
|
|
|
is_score_a_greater_than_b( var_0, var_1 )
|
|
{
|
|
return var_0.score > var_1.score;
|
|
}
|
|
|
|
set_up_winners_podium( var_0 )
|
|
{
|
|
var_1 = getent( "mp_global_intermission", "classname" );
|
|
var_2 = spawn( "script_model", var_1.origin );
|
|
var_2 setmodel( "tag_origin" );
|
|
var_2.angles = var_1.angles;
|
|
var_3 = getent( "podium_clip", "targetname" );
|
|
var_3 moveto( var_3.origin + ( 0, 0, 300 ), 0.05 );
|
|
var_3 disconnectpaths();
|
|
|
|
for ( var_4 = 0; var_4 < 3; var_4++ )
|
|
{
|
|
var_5 = var_0[var_4];
|
|
|
|
if ( !isdefined( var_5 ) )
|
|
return;
|
|
|
|
var_6 = var_4 + 1;
|
|
var_7 = getent( "podium_place_" + var_6, "targetname" );
|
|
var_5 spawn( var_7.origin, var_7.angles );
|
|
var_5 maps\mp\_utility::updatesessionstate( "playing" );
|
|
var_5.primaryweapon = undefined;
|
|
var_5.disabledweapon = 1;
|
|
var_5.disabledoffhandweapons = 1;
|
|
|
|
if ( isdefined( var_5.riotshieldmodel ) )
|
|
var_5.riotshieldmodel = undefined;
|
|
|
|
var_5 cameralinkto( var_2, "tag_origin" );
|
|
var_5.custom_spawn_loc = var_7;
|
|
|
|
if ( maps\mp\_utility::isroundbased() )
|
|
var_5 thread podium_scoreboard_sequence( var_7, var_2, "playing" );
|
|
}
|
|
}
|
|
|
|
set_up_podium_spectator( var_0 )
|
|
{
|
|
var_1 = getent( "mp_global_intermission", "classname" );
|
|
var_2 = spawn( "script_model", var_1.origin );
|
|
var_2 setmodel( "tag_origin" );
|
|
var_2.angles = var_1.angles;
|
|
|
|
if ( isdefined( var_0 ) )
|
|
{
|
|
for ( var_3 = 0; var_3 < var_0.size; var_3++ )
|
|
{
|
|
var_4 = var_0[var_3];
|
|
|
|
if ( !isdefined( var_4 ) )
|
|
continue;
|
|
|
|
if ( !isbot( var_4 ) )
|
|
{
|
|
var_4 thread spawn_custom_spectator( var_2 );
|
|
|
|
if ( maps\mp\_utility::isroundbased() )
|
|
var_4 thread podium_scoreboard_sequence( var_2, var_2, undefined );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
podium_scoreboard_sequence( var_0, var_1, var_2 )
|
|
{
|
|
level waittill( "scoreboard_displaying" );
|
|
wait 0.01;
|
|
|
|
if ( isdefined( var_2 ) )
|
|
{
|
|
self spawn( var_0.origin, var_0.angles );
|
|
maps\mp\_utility::updatesessionstate( "playing" );
|
|
var_3 = spawn( "script_model", var_1.origin );
|
|
var_3 setmodel( "tag_origin" );
|
|
var_3.angles = var_1.angles;
|
|
self cameralinkto( var_3, "tag_origin" );
|
|
self.primaryweapon = undefined;
|
|
}
|
|
else if ( !isbot( self ) )
|
|
thread spawn_custom_spectator( var_0 );
|
|
|
|
self setdepthoffield( 0, 0, 512, 512, 4, 0 );
|
|
}
|
|
|
|
spawn_custom_spectator( var_0 )
|
|
{
|
|
maps\mp\_utility::clearkillcamstate();
|
|
self.friendlydamage = undefined;
|
|
self setspectatedefaults( var_0.origin, var_0.angles );
|
|
self spawn( var_0.origin, var_0.angles );
|
|
maps\mp\_utility::updatesessionstate( "playing" );
|
|
maps\mp\_utility::freezecontrolswrapper( 1 );
|
|
self playerhide();
|
|
self cameralinkto( var_0, "tag_origin" );
|
|
self setdepthoffield( 0, 0, 512, 512, 4, 0 );
|
|
maps\mp\_utility::restorebasevisionset( 0 );
|
|
}
|
|
|
|
clean_up_podium_scene()
|
|
{
|
|
var_0 = getent( "trap_1_volume", "targetname" );
|
|
var_1 = getentarray( "script_vehicle", "classname" );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
var_3 delete();
|
|
}
|
|
|
|
get_prize_room_curtains_n_fx()
|
|
{
|
|
wait 5;
|
|
|
|
foreach ( var_1 in getscriptablearray( "prize_curtains", "targetname" ) )
|
|
var_1 thread prize_room_curtains();
|
|
|
|
thread prize_room_fx();
|
|
}
|
|
|
|
prize_room_curtains()
|
|
{
|
|
var_0 = getent( "prize_display_clip", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
self setscriptablepartstate( 0, "curtain_closed" );
|
|
wait 40;
|
|
self setscriptablepartstate( 0, "curtain_open" );
|
|
var_0 movez( -400, 0.1 );
|
|
wait 15;
|
|
self setscriptablepartstate( 0, "curtain_close" );
|
|
var_0 movez( 400, 0.1 );
|
|
wait 5;
|
|
}
|
|
}
|
|
|
|
prize_room_fx()
|
|
{
|
|
for (;;)
|
|
{
|
|
wait 40;
|
|
common_scripts\utility::exploder( 60 );
|
|
thread red_and_blue_fx_lights();
|
|
thread white_fx_lights();
|
|
thread flashing_neon_sign();
|
|
thread common_scripts\utility::play_sound_in_space( "emt_prize_curtains_open", ( 547, 1035, 305 ) );
|
|
var_0 = common_scripts\utility::play_loopsound_in_space( "emt_prize_bells", ( 547, 1035, 305 ) );
|
|
wait 15;
|
|
thread common_scripts\utility::play_sound_in_space( "emt_prize_curtains_close", ( 547, 1035, 305 ) );
|
|
var_0 stoploopsound();
|
|
wait 5;
|
|
}
|
|
}
|
|
|
|
red_and_blue_fx_lights()
|
|
{
|
|
for ( var_0 = 0; var_0 < 8; var_0++ )
|
|
{
|
|
common_scripts\utility::exploder( 61 );
|
|
wait 1;
|
|
common_scripts\utility::exploder( 62 );
|
|
wait 1;
|
|
}
|
|
}
|
|
|
|
white_fx_lights()
|
|
{
|
|
for ( var_0 = 0; var_0 < 8; var_0++ )
|
|
{
|
|
common_scripts\utility::exploder( 63 );
|
|
wait 0.5;
|
|
common_scripts\utility::exploder( 64 );
|
|
wait 0.5;
|
|
common_scripts\utility::exploder( 65 );
|
|
wait 0.5;
|
|
common_scripts\utility::exploder( 66 );
|
|
wait 0.5;
|
|
}
|
|
}
|
|
|
|
flashing_neon_sign()
|
|
{
|
|
var_0 = [];
|
|
var_1 = [];
|
|
var_2 = 1;
|
|
var_0 = get_neon_sign( "neon_winner_sign_" );
|
|
var_1 = get_neon_sign( "neon_winner_sign_off_" );
|
|
var_3 = get_neon_sign( "neon_winner_sign_right_" );
|
|
var_4 = get_neon_sign( "neon_winner_sign_right_off_" );
|
|
var_5 = gettime();
|
|
|
|
while ( gettime() < var_5 + 15000 )
|
|
{
|
|
for ( var_6 = 0; var_6 < 4; var_6++ )
|
|
{
|
|
for ( var_7 = 0; var_7 < var_0.size; var_7++ )
|
|
{
|
|
var_0[var_7] hide();
|
|
var_3[var_7] hide();
|
|
var_1[var_7] show();
|
|
var_4[var_7] show();
|
|
wait 0.05;
|
|
var_1[var_7] hide();
|
|
var_4[var_7] hide();
|
|
var_0[var_7] show();
|
|
var_3[var_7] show();
|
|
}
|
|
}
|
|
|
|
for ( var_6 = 0; var_6 < 3; var_6++ )
|
|
{
|
|
for ( var_7 = 0; var_7 < var_0.size; var_7++ )
|
|
{
|
|
var_1[var_7] hide();
|
|
var_4[var_7] hide();
|
|
var_0[var_7] show();
|
|
var_3[var_7] show();
|
|
}
|
|
|
|
wait 0.4;
|
|
|
|
for ( var_7 = 0; var_7 < var_0.size; var_7++ )
|
|
{
|
|
var_0[var_7] hide();
|
|
var_3[var_7] hide();
|
|
var_1[var_7] show();
|
|
var_4[var_7] show();
|
|
}
|
|
|
|
wait 0.4;
|
|
}
|
|
}
|
|
|
|
foreach ( var_9 in var_0 )
|
|
var_9 hide();
|
|
|
|
foreach ( var_9 in var_3 )
|
|
var_9 hide();
|
|
|
|
foreach ( var_9 in var_1 )
|
|
var_9 show();
|
|
|
|
foreach ( var_9 in var_4 )
|
|
var_9 show();
|
|
}
|
|
|
|
get_neon_sign( var_0 )
|
|
{
|
|
var_1 = [];
|
|
var_2 = 1;
|
|
|
|
for (;;)
|
|
{
|
|
var_3 = getent( var_0 + var_2, "targetname" );
|
|
|
|
if ( isdefined( var_3 ) )
|
|
{
|
|
var_1[var_2 - 1] = var_3;
|
|
var_2++;
|
|
continue;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
return var_1;
|
|
}
|
|
|
|
get_elevators()
|
|
{
|
|
wait 5;
|
|
var_0 = [ "periph_elevator_NE", "periph_elevator_NW", "periph_elevator_SE", "periph_elevator_SW" ];
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
foreach ( var_4 in getentarray( var_2, "targetname" ) )
|
|
var_4 thread move_elevators();
|
|
}
|
|
}
|
|
|
|
move_elevators()
|
|
{
|
|
for (;;)
|
|
{
|
|
self movez( -448, 8, 2, 4 );
|
|
wait( randomintrange( 10, 17 ) );
|
|
self movez( 448, 8, 3, 3 );
|
|
wait( randomintrange( 10, 13 ) );
|
|
}
|
|
}
|
|
|
|
move_podium_camera()
|
|
{
|
|
self moveto( ( 122, 1006, 300 ), 15, 1, 12 );
|
|
self rotateby( ( 90, 90, 90 ), 3.0, 0.5, 0.5 );
|
|
}
|
|
|
|
create_overlay( var_0, var_1 )
|
|
{
|
|
var_2 = newhudelem();
|
|
var_2.x = 0;
|
|
var_2.y = 0;
|
|
var_2 setshader( var_0, 640, 480 );
|
|
var_2.alignx = "left";
|
|
var_2.aligny = "top";
|
|
var_2.sort = 1;
|
|
var_2.horzalign = "fullscreen";
|
|
var_2.vertalign = "fullscreen";
|
|
var_2.alpha = var_1;
|
|
var_2.foreground = 1;
|
|
return var_2;
|
|
}
|
|
|
|
fade_over_time( var_0, var_1 )
|
|
{
|
|
if ( isdefined( var_1 ) && var_1 > 0 )
|
|
self fadeovertime( var_1 );
|
|
|
|
self.alpha = var_0;
|
|
|
|
if ( isdefined( var_1 ) && var_1 > 0 )
|
|
wait( var_1 );
|
|
}
|
|
|
|
hud_delete( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
wait( var_0 );
|
|
self destroy();
|
|
}
|
|
|
|
turret_box_light_fx()
|
|
{
|
|
level endon( "game_ended" );
|
|
|
|
foreach ( var_1 in level.players )
|
|
{
|
|
if ( var_1.pers["team"] == level.turret_team )
|
|
{
|
|
thread looped_turret_light( 15, 16, var_1 );
|
|
continue;
|
|
}
|
|
|
|
thread looped_turret_light( 16, 15, var_1 );
|
|
}
|
|
}
|
|
|
|
looped_turret_light( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = gettime() + 15000;
|
|
|
|
while ( gettime() < var_3 )
|
|
{
|
|
if ( !var_2 maps\mp\_utility::isinkillcam() )
|
|
activateclientexploder( var_0, var_2 );
|
|
else
|
|
activateclientexploder( var_1, var_2 );
|
|
|
|
wait 1.0;
|
|
}
|
|
}
|
|
|
|
sfx_gate_alarm( var_0 )
|
|
{
|
|
|
|
}
|
|
|
|
sfx_lights_red()
|
|
{
|
|
playsoundatpos( ( -277, 754, 326 ), "scn_shp_gate_red" );
|
|
playsoundatpos( ( -764, 311, 326 ), "scn_shp_gate_red" );
|
|
playsoundatpos( ( -769, -255, 326 ), "scn_shp_gate_red" );
|
|
playsoundatpos( ( -247, -642, 326 ), "scn_shp_gate_red" );
|
|
playsoundatpos( ( 355, -642, 326 ), "scn_shp_gate_red" );
|
|
playsoundatpos( ( 744, -139, 326 ), "scn_shp_gate_red" );
|
|
playsoundatpos( ( 740, 329, 326 ), "scn_shp_gate_red" );
|
|
playsoundatpos( ( 281, 757, 326 ), "scn_shp_gate_red" );
|
|
playsoundatpos( ( 2, 45, 450 ), "scn_shp_gate_red_wet" );
|
|
}
|
|
|
|
sfx_lights_green()
|
|
{
|
|
playsoundatpos( ( -277, 754, 326 ), "scn_shp_gate_green" );
|
|
playsoundatpos( ( -764, 311, 326 ), "scn_shp_gate_green" );
|
|
playsoundatpos( ( -769, -255, 326 ), "scn_shp_gate_green" );
|
|
playsoundatpos( ( -247, -642, 326 ), "scn_shp_gate_green" );
|
|
playsoundatpos( ( 355, -642, 326 ), "scn_shp_gate_green" );
|
|
playsoundatpos( ( 744, -139, 326 ), "scn_shp_gate_green" );
|
|
playsoundatpos( ( 740, 329, 326 ), "scn_shp_gate_green" );
|
|
playsoundatpos( ( 281, 757, 326 ), "scn_shp_gate_green" );
|
|
playsoundatpos( ( 2, 45, 450 ), "scn_shp_gate_green_wet" );
|
|
}
|
|
|
|
sfx_gates_open()
|
|
{
|
|
playsoundatpos( ( -277, 754, 250 ), "scn_shp_gate_open_01" );
|
|
playsoundatpos( ( -764, 311, 250 ), "scn_shp_gate_open_02" );
|
|
playsoundatpos( ( -769, -255, 250 ), "scn_shp_gate_open_01" );
|
|
playsoundatpos( ( -247, -642, 250 ), "scn_shp_gate_open_02" );
|
|
playsoundatpos( ( 355, -642, 250 ), "scn_shp_gate_open_01" );
|
|
playsoundatpos( ( 744, -139, 250 ), "scn_shp_gate_open_02" );
|
|
playsoundatpos( ( 740, 329, 250 ), "scn_shp_gate_open_01" );
|
|
playsoundatpos( ( 281, 757, 250 ), "scn_shp_gate_open_02" );
|
|
}
|
|
|
|
sfx_turret_shutters_open()
|
|
{
|
|
playsoundatpos( ( 305, -176, 250 ), "scn_shp_turret_door_open" );
|
|
playsoundatpos( ( -18, -378, 250 ), "scn_shp_turret_door_open" );
|
|
playsoundatpos( ( -315, -199, 250 ), "scn_shp_turret_door_open" );
|
|
playsoundatpos( ( -306, 322, 250 ), "scn_shp_turret_door_open" );
|
|
playsoundatpos( ( 312, 318, 250 ), "scn_shp_turret_door_open" );
|
|
playsoundatpos( ( 524, 87, 250 ), "scn_shp_turret_door_open" );
|
|
}
|
|
|
|
sfx_turret_shutters_close()
|
|
{
|
|
playsoundatpos( ( 305, -176, 250 ), "scn_shp_turret_door_close" );
|
|
playsoundatpos( ( -18, -378, 250 ), "scn_shp_turret_door_close" );
|
|
playsoundatpos( ( -315, -199, 250 ), "scn_shp_turret_door_close" );
|
|
playsoundatpos( ( -306, 322, 250 ), "scn_shp_turret_door_close" );
|
|
playsoundatpos( ( 312, 318, 250 ), "scn_shp_turret_door_close" );
|
|
playsoundatpos( ( 524, 87, 250 ), "scn_shp_turret_door_close" );
|
|
}
|
|
|
|
nukedeathvision()
|
|
{
|
|
level.nukevisionset = "aftermath_mp_shipment_ns";
|
|
setexpfog( 512, 4097, 0.578828, 0.802656, 1, 0.75, 0.75, 5, 0.382813, 0.350569, 0.293091, 3, ( 1, -0.109979, 0.267867 ), 0, 80, 1, 0.179688, 26, 180 );
|
|
visionsetnaked( level.nukevisionset, 5 );
|
|
visionsetpain( level.nukevisionset );
|
|
}
|