iw6-mod/data/maps/mp/mp_alien_beacon.gsc
2024-02-27 01:39:05 -05:00

3155 lines
98 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
main()
{
level.customprematchperiod = ::beacon_customprematchperiod;
level.additional_boss_weapon = ::spawn_weapon_in_boss_area;
level thread setintermissioncam();
level.prematchperiod = 13;
level.icargohives = 0;
level.extinction_episode = 2;
level.introscreen_line_1 = &"MP_ALIEN_BEACON_INTRO_LINE_1";
level.introscreen_line_2 = &"MP_ALIEN_BEACON_INTRO_LINE_2";
level.introscreen_line_3 = &"MP_ALIEN_BEACON_INTRO_LINE_3";
level.introscreen_line_4 = &"MP_ALIEN_BEACON_INTRO_LINE_4";
common_scripts\utility::flag_init( "players_on_top_deck" );
common_scripts\utility::flag_init( "tp_to_kraken_on_spawn" );
common_scripts\utility::flag_init( "stop_tp_to_well_deck" );
maps\mp\alien\_utility::alien_mode_enable( "kill_resource", "challenge", "wave", "airdrop", "lurker", "collectible", "loot", "pillage", "outline", "scenes" );
level thread maps\mp\alien\_crafting::init();
level thread maps\mp\alien\_crafting_traps::init();
level.ricochetdamagemax = 25;
level.hardcore_spawn_multiplier = 1.0;
level.hardcore_damage_scalar = 1.0;
level.hardcore_health_scalar = 1.0;
level.hardcore_reward_scalar = 1.0;
level.hardcore_score_scalar = 1.25;
level.casual_spawn_multiplier = 1.0;
level.casual_damage_scalar = 0.45;
level.casual_health_scalar = 0.45;
level.casual_reward_scalar = 1.0;
level.casual_score_scalar = 0.5;
var_0 = [ "well_deck", "hallway_1", "cargo", "front_boat", "heli_pad" ];
setdvar( "sm_sunSampleSizeNear", 0.25 );
maps\mp\alien\_utility::alien_area_init( var_0 );
level.include_default_challenges = 1;
level.challenge_registration_func = maps\mp\alien\mp_alien_beacon_challenges::register_beacon_challenges;
level.challenge_scalar_func = maps\mp\alien\mp_alien_beacon_challenges::beacon_challenge_scalar_func;
level.custom_death_challenge_func = maps\mp\alien\mp_alien_beacon_challenges::beacon_death_challenge_func;
level.custom_damage_challenge_func = maps\mp\alien\mp_alien_beacon_challenges::beacon_damage_challenge_func;
level.include_default_achievements = 1;
level.include_default_unlocks = 1;
level.escape_cycle = 21;
level.custom_pillageinitfunc = ::mp_alien_beacon_pillage_init;
level.create_attackable_ent_override_func = ::mp_alien_beacon_attackable_ent_override;
level.drill_attack_setup_override = ::mp_alien_beacon_drill_attack_override;
level.weapon_stats_override_name_func = ::beacon_weapon_stats_update_name;
level.get_custom_cycle_func = ::pre_hive;
level.achievement_registration_func = maps\mp\alien\_achievement_dlc2::register_achievements_dlc2;
level.update_alien_kill_achievements_func = maps\mp\alien\_achievement_dlc2::update_alien_kill_achievements_dlc2;
level.update_achievement_hypno_trap_func = maps\mp\alien\_achievement_dlc2::update_hypno_trap_rhino;
level.update_achievement_craft_items_func = maps\mp\alien\_achievement_dlc2::update_craft_all_items_achievement;
level.skip_radius_damage_on_puddles = 1;
level.adjust_spawnlocation_func = ::beacon_adjust_spawnlocation;
level.custom_alien_death_func = maps\mp\alien\_death::general_alien_custom_death;
level.custom_cangive_weapon_func = ::beacon_cangive_weapon_handler_func;
level.custom_give_weapon_func = ::beacon_give_weapon_handler_func;
level.hive_icon_override = ::beacon_hive_icon_override_func;
level.give_randombox_item_check = ::beacon_randombox_item_check;
level.hypno_trap_func = maps\mp\alien\_crafting_traps::tryuseplaceable;
level.tesla_trap_func = maps\mp\alien\_crafting_traps::tryuseplaceable;
maps\mp\alien\_alien_maaws::alien_maaws_init();
maps\mp\alien\_pillage_locker::locker_pillage_functions_init();
level.level_locker_weapon_pickup_string_func = ::beacon_locker_weapon_pickup_string_func;
level.cac_vo_male = common_scripts\utility::array_randomize( [ "p6_", "p5_" ] );
level.cac_vo_female = common_scripts\utility::array_randomize( [ "p8_", "p7_" ] );
level.custom_onspawnplayer_func = ::mp_alien_beacon_onspawnplayer_func;
level.initial_spawn_loc_override_func = ::beacon_player_initial_spawn_loc_override;
level.enter_area_func = ::beacon_enter_area_func;
level.leave_area_func = ::beacon_leave_area_func;
level.watch_bomb_stuck_override = ::beacon_watch_bomb_stuck_override;
level.get_alien_model_func = ::beacon_get_alien_model;
level.level_specific_vo_callouts = ::beacon_specific_vo_callouts;
level.non_player_drill_plant_check = ::beacon_non_player_drill_plant_check;
level.non_player_drill_plant = 0;
level.intel_table = "mp/alien/alien_beacon_intel.csv";
level.randombox_table = "mp/alien/beacon_deployable_randombox.csv";
level maps\mp\alien\mp_alien_beacon_turret::beacon_turret_init();
level thread maps\mp\mp_alien_beacon_fx::ship_camera_tilting();
set_spawn_table();
set_container_spawn_table();
set_alien_definition_table();
level.alien_collectibles_table = "mp/alien/collectibles_beacon.csv";
level.spawn_node_info_table = "mp/alien/beacon_spawn_node_info.csv";
level.alien_challenge_table = "mp/alien/mp_alien_beacon_challenges.csv";
if ( maps\mp\alien\_utility::isplayingsolo() )
level.base_player_count_multiplier = 1;
else
level.base_player_count_multiplier = 0.49;
level.additional_player_count_multiplier = 0.17;
level.waypoint_dist_override = 2500;
maps\mp\mp_alien_beacon_precache::main();
maps\createart\mp_alien_beacon_art::main();
maps\mp\mp_alien_beacon_fx::main();
init_level_flags();
level.hintprecachefunc = ::beacon_hint_precache;
maps\mp\alien\_beacon_weapon::init();
maps\mp\_load::main();
game["thermal_vision"] = "mp_alien_beacon_thermal";
visionsetthermal( game["thermal_vision"] );
game["thermal_vision_trinity"] = "mp_alien_thermal_trinity";
setdvar( "sm_sunShadowScale", "0.5" );
maps\mp\_utility::setdvar_cg_ng( "r_specularColorScale", 4.0, 6.0 );
maps\mp\_compass::setupminimap( "compass_map_mp_alien_beacon" );
var_1 = 20000;
var_2 = 40000;
var_3 = 70000;
var_4 = 240000;
maps\mp\alien\_persistence::register_lb_escape_rank( [ 0, var_1, var_2, var_3, var_4 ] );
var_5 = [ "mini_lung_00" ];
maps\mp\alien\_utility::add_hive_dependencies( "well_deck_2", var_5 );
var_6 = [ "well_deck_2" ];
maps\mp\alien\_utility::add_hive_dependencies( "door_hive_4", var_6 );
maps\mp\alien\_utility::add_hive_dependencies( "well_deck_3", var_6 );
maps\mp\alien\_utility::add_hive_dependencies( "door_hive_6", var_6 );
var_7 = [ "door_hive_4" ];
maps\mp\alien\_utility::add_hive_dependencies( "well_deck_3", var_7 );
maps\mp\alien\_utility::add_hive_dependencies( "door_hive_6", var_7 );
var_8 = [ "well_deck_3" ];
maps\mp\alien\_utility::add_hive_dependencies( "door_hive_6", var_8 );
maps\mp\alien\_utility::add_hive_dependencies( "door_hive_7", var_8 );
maps\mp\alien\_utility::add_hive_dependencies( "door_hive_8", var_8 );
var_9 = [ "door_hive_6" ];
maps\mp\alien\_utility::add_hive_dependencies( "cargo_area_mini_1", var_9 );
maps\mp\alien\_utility::add_hive_dependencies( "cargo_area_mini_2", var_9 );
maps\mp\alien\_utility::add_hive_dependencies( "cargo_area_mini_3", var_9 );
maps\mp\alien\_utility::add_hive_dependencies( "cargo_area_mini_4", var_9 );
maps\mp\alien\_utility::add_hive_dependencies( "cargo_area_main", var_9 );
maps\mp\alien\_utility::add_hive_dependencies( "door_hive_7", var_9 );
maps\mp\alien\_utility::add_hive_dependencies( "door_hive_8", var_9 );
var_10 = [ "top_deck_mini_1", "top_deck_mini_2", "top_deck_mini_3" ];
maps\mp\alien\_utility::add_hive_dependencies( "lab_mini_1", var_10 );
maps\mp\alien\_utility::add_hive_dependencies( "lab_mini_2", var_10 );
maps\mp\alien\_utility::add_hive_dependencies( "lab_mini_3", var_10 );
maps\mp\alien\_utility::add_hive_dependencies( "lab_mini_4", var_10 );
maps\mp\alien\_utility::add_hive_dependencies( "door_hive_10", var_10 );
var_11 = [ "cargo_area_mini_2" ];
maps\mp\alien\_utility::add_hive_dependencies( "cargo_area_mini_3", var_11 );
var_12 = [ "cargo_area_main" ];
maps\mp\alien\_utility::add_hive_dependencies( "top_deck_mini_3", var_12 );
maps\mp\alien\_utility::add_hive_dependencies( "top_deck_mini_1", var_12 );
maps\mp\alien\_utility::add_hive_dependencies( "top_deck_mini_2", var_12 );
maps\mp\alien\_utility::add_hive_dependencies( "door_hive_9", var_12 );
var_13 = [ "cargo_area_mini_1", "cargo_area_mini_2", "cargo_area_mini_3", "cargo_area_mini_4" ];
maps\mp\alien\_utility::add_hive_dependencies( "cargo_area_main", var_13 );
game["attackers"] = "allies";
game["defenders"] = "axis";
game["allies_outfit"] = "woodland";
var_14 = [];
var_15 = [ 8 ];
maps\mp\gametypes\aliens::setup_cycle_end_area_list( var_15 );
maps\mp\gametypes\aliens::setup_blocker_hives( var_14 );
maps\mp\gametypes\aliens::setup_last_hive( "bomblocation_14" );
init_seeder();
register_encounter();
maps\mp\mp_alien_beacon_vignettes::main();
if ( !maps\mp\alien\_utility::is_chaos_mode() )
init_container_spawn();
maps\mp\alien\_pillage_intel::create_intel_spots();
level thread maps\mp\alien\mp_alien_beacon_turret::set_up_remote_turrets();
thread maps\mp\alien\_alien_class_skills_main::main();
level thread beacon_intro_drill();
level thread beacon_door_encounter_logic();
level thread player_death_trigger_monitor();
level thread crane_walls_hide();
level.ammoincompatibleweaponslist = [];
level.ammoincompatibleweaponslist[0] = "iw5_alienriotshield_mp";
level.ammoincompatibleweaponslist[1] = "iw5_alienriotshield1_mp";
level.ammoincompatibleweaponslist[2] = "iw5_alienriotshield2_mp";
level.ammoincompatibleweaponslist[3] = "iw5_alienriotshield3_mp";
level.ammoincompatibleweaponslist[4] = "iw5_alienriotshield4_mp";
level.ammoincompatibleweaponslist[5] = "iw6_alienminigun_mp";
level.ammoincompatibleweaponslist[6] = "iw6_alienminigun1_mp";
level.ammoincompatibleweaponslist[7] = "iw6_alienminigun2_mp";
level.ammoincompatibleweaponslist[8] = "iw6_alienminigun3_mp";
level.ammoincompatibleweaponslist[9] = "iw6_alienminigun4_mp";
level.ammoincompatibleweaponslist[10] = "iw6_alienmk32_mp";
level.ammoincompatibleweaponslist[11] = "iw6_alienmk321_mp";
level.ammoincompatibleweaponslist[12] = "iw6_alienmk322_mp";
level.ammoincompatibleweaponslist[13] = "iw6_alienmk323_mp";
level.ammoincompatibleweaponslist[14] = "iw6_alienmk324_mp";
level.ammoincompatibleweaponslist[15] = "iw6_aliendlc11_mp";
level.ammoincompatibleweaponslist[16] = "iw6_aliendlc11li_mp";
level.ammoincompatibleweaponslist[17] = "iw6_aliendlc11sp_mp";
level.ammoincompatibleweaponslist[18] = "iw6_aliendlc11fi_mp";
thread beacon_intro_music();
level thread setup_beacon_offhands();
level thread fix_bad_drill_spots();
level thread maps\mp\alien\_music_and_dialog_dlc::remove_drill_vo_once_complete();
level thread cleanup_strings();
}
fix_bad_drill_spots()
{
level endon( "game_ended" );
level waittill( "spawn_nondeterministic_entities" );
var_0 = getent( "player64x64x256", "targetname" );
if ( isdefined( var_0 ) )
{
var_0 moveto( ( -347.4, 2044.1, 1033.04 ), 0.05 );
var_0.angles = ( 0, 0, 0 );
}
var_1 = getent( "clip64x64x64", "targetname" );
if ( isdefined( var_1 ) )
{
var_1 moveto( ( -811.5, -2114.5, 75 ), 0.05 );
var_1.angles = ( 0, 0, 0 );
}
var_2 = getent( "monsterjplayerclip512x8x256", "targetname" );
if ( isdefined( var_2 ) )
{
var_2.origin = ( -856, 3590, 1152 );
var_2.angles = ( 0, 270, 0 );
}
var_3 = getent( "clip64x64x128", "targetname" );
if ( isdefined( var_3 ) )
{
var_3.origin = ( 276, 6176, 1152 );
var_3.angles = ( 0, 0, 0 );
}
var_4 = getent( "player512x512x8", "targetname" );
if ( isdefined( var_4 ) )
{
var_4.origin = ( 752, 3398, 64 );
var_4.angles = ( 270, 180, 180 );
var_5 = spawn( "script_model", ( 842, 3218, 440 ) );
var_5 clonebrushmodeltoscriptmodel( var_4 );
var_5.origin = ( 842, 3218, 440 );
var_5.angles = ( 270, 180, 180 );
}
var_6 = getent( "monsterplayer512x512x8", "targetname" );
if ( isdefined( var_6 ) )
{
var_6.origin = ( 1098, 3046, 440 );
var_6.angles = ( 270, 270, -180 );
var_7 = spawn( "script_model", ( 891, 3038, 184 ) );
var_7 setmodel( "tool_cabinet_02_iw6" );
var_7.angles = ( 0, 180, 0 );
}
}
cleanup_strings()
{
var_0 = 5.0;
wait( var_0 );
var_1 = getarraykeys( game["dialog"] );
foreach ( var_3 in var_1 )
{
if ( game["dialog"][var_3] == "enemy_null" || game["dialog"][var_3] == "friendly_null" || game["dialog"][var_3] == "null" )
game["dialog"][var_3] = undefined;
}
game["dialog"] = common_scripts\utility::array_removeundefined( game["dialog"] );
}
setup_beacon_offhands()
{
while ( !isdefined( level.offhand_explosives ) )
wait 1;
level.offhand_explosives = common_scripts\utility::array_add( level.offhand_explosives, "iw6_aliendlc22_mp" );
level.offhand_secondaries = common_scripts\utility::array_add( level.offhand_secondaries, "iw6_aliendlc21_mp" );
}
beacon_intro_drill()
{
level waittill( "spawn_beacon_drill", var_0, var_1 );
level notify( "spawn_intro_drill", var_0, var_1 );
common_scripts\utility::flag_set( "intro_sequence_complete" );
}
waypoint_after_drill_picked_up()
{
level waittill( "drill_pickedup" );
level thread place_waypoint_on_blocker_door();
}
place_waypoint_on_blocker_door()
{
var_0 = ( -40, 874, 340 );
var_1 = "waypoint_alien_blocker";
var_2 = 14;
var_3 = 14;
var_4 = 0.75;
var_5 = var_0 + ( 0, 0, 4 );
var_6 = maps\mp\alien\_hud::make_waypoint( var_1, var_2, var_3, var_4, var_5 );
for (;;)
{
level waittill( "drill_planted" );
if ( level.current_hive_name == "cargo_area_main" )
break;
else
{
var_6.alpha = 0;
level waittill( "drill_pickedup" );
var_6.alpha = 0.75;
}
}
var_6 destroy();
}
use_drillbot_door( var_0, var_1 )
{
var_2 = var_1.script_angles;
if ( isdefined( var_0 ) )
var_2 = var_2 * -1;
var_1 moveto( var_1.origin + var_2, 2 );
playsoundatpos( var_1.origin, "scn_drillbot_door" );
}
spawn_beacon_cargo_drillbot()
{
var_0 = getvehiclenode( "cargo_drillbot_start", "targetname" );
level.drill_vehicle = spawnvehicle( "vehicle_drill_bot", "drill", "mp_alien_drill_bot", var_0.origin, var_0.angles );
level.drill_vehicle.team = "allies";
level.drill_vehicle.health = 1000000;
level.drill_vehicle makevehiclesolidcapsule( 1, 1, 1 );
level.drill_headlight_fx = spawn( "script_model", level.drill_vehicle.origin + ( 0, 0, 30 ) + vector_multiply( anglestoforward( level.drill_vehicle.angles ), 10 ) );
level.drill_headlight_fx.angles = ( 0, 90, 0 );
level.drill_headlight_fx setmodel( "tag_origin" );
wait 0.5;
playfxontag( level._effect["bot_headlight"], level.drill_headlight_fx, "tag_origin" );
level.drill_headlight_fx linkto( level.drill_vehicle );
var_1 = "waypoint_alien_blocker";
var_2 = 14;
var_3 = 14;
var_4 = 0.75;
var_5 = level.drill_vehicle.origin + ( 0, 0, 40 );
foreach ( var_7 in level.players )
maps\mp\alien\_outline_proto::enable_outline_for_player( level.drill_vehicle, var_7, 3, 0, "high" );
level.drillbot_waypoint_icon = maps\mp\alien\_hud::make_waypoint( var_1, var_2, var_3, var_4, var_5 );
}
vector_multiply( var_0, var_1 )
{
return ( var_0[0] * var_1, var_0[1] * var_1, var_0[2] * var_1 );
}
beacon_watch_bomb_stuck_override( var_0 )
{
if ( maps\mp\alien\_utility::is_true( var_0.on_container ) && maps\mp\alien\_utility::is_true( level.all_players_on_container ) )
{
level thread link_drill_to_container( var_0 );
return 1;
}
if ( !isdefined( level.drill_vehicle ) || !maps\mp\alien\_utility::is_true( level.drillbot_door_open ) )
return 0;
if ( distancesquared( var_0.origin, level.drill_vehicle.origin ) < 6400 && !isdefined( level.drillbot_event_finished ) )
{
level thread cargo_drillbot_logic( var_0 );
return 1;
}
return 0;
}
link_drill_to_container( var_0 )
{
var_0 takeweapon( "alienbomb_mp" );
var_0 enableweaponswitch();
maps\mp\alien\_drill::drop_drill( var_0.origin + ( 0, 0, 4 ), ( 0, 0, 0 ) );
earthquake( 0.25, 0.5, var_0.origin, 128 );
level.drill_linked_to_container = 1;
wait 0.1;
var_1 = getentarray( "move_container", "targetname" );
level.drill linkto( var_1[0] );
level.drill makeunusable();
if ( isdefined( level.drill_icon ) )
level.drill_icon.alpha = 0;
var_0 maps\mp\alien\_drill::restore_last_weapon();
var_0 common_scripts\utility::_enableoffhandweapons();
level waittill( "beacon_starting_topdeck" );
level.drill makeusable();
level.drill unlink();
level.drill_linked_to_container = undefined;
foreach ( var_3 in level.players )
var_3.on_container = undefined;
if ( isdefined( level.drill_icon ) )
{
level.drill_icon.x = level.drill.origin[0];
level.drill_icon.y = level.drill.origin[1];
level.drill_icon.z = level.drill.origin[2] + 72;
level.drill_icon.alpha = 0.5;
}
}
cargo_drillbot_logic( var_0 )
{
level notify( "drillbot_used" );
clear_drillbot_lowermessage();
if ( isdefined( level.drillbot_waypoint_icon ) )
level.drillbot_waypoint_icon destroy();
var_0 takeweapon( "alienbomb_mp" );
level.drill_vehicle playsoundonmovingent( "scn_drillbot_attach" );
var_0 enableweaponswitch();
var_1 = level.drill_vehicle gettagorigin( "tag_turret_attach" );
level.prevent_drill_pickup = 1;
maps\mp\alien\_drill::drop_drill( var_1, ( 0, 0, 0 ) );
earthquake( 0.25, 0.5, var_0.origin, 128 );
var_0 maps\mp\alien\_drill::restore_last_weapon();
var_0 common_scripts\utility::_enableoffhandweapons();
wait 0.1;
level.prevent_drill_pickup = undefined;
level.drill linkto( level.drill_vehicle, "tag_turret_attach", ( 0, 0, 0 ), ( 0, 0, 0 ) );
level.drill makeunusable();
var_2 = undefined;
foreach ( var_4 in level.stronghold_hive_locs )
{
if ( isdefined( var_4.target ) && var_4.target == "cargo_area_mini_3" )
{
var_2 = var_4;
break;
}
}
var_2 maps\mp\alien\_hive::disable_other_strongholds();
if ( isdefined( var_2.icon ) )
var_2.icon destroy();
wait_for_player_to_activate_platform();
level.non_player_drill_plant = 1;
use_drillbot_door( 1, getent( "cargo_bot_entrance_door", "targetname" ) );
send_bot_to_hive_and_drill( var_0 );
var_6 = common_scripts\utility::getclosest( level.drill_vehicle.origin, getvehiclenodearray( "drill_path", "targetname" ) );
level.drill_vehicle attachpath( var_6 );
level.drill_vehicle startpath();
level.drill_vehicle playsoundonmovingent( "scn_drillbot_move02" );
level.drill_vehicle vehicle_setspeed( 5, 1, 1 );
level.drill_vehicle waittill( "reached_end_node" );
var_7 = undefined;
use_drillbot_door( var_7, getent( "cargo_bot_exit_door", "targetname" ) );
level.drill makeusable();
foreach ( var_9 in level.players )
maps\mp\alien\_outline_proto::disable_outline_for_player( level.drill_vehicle, var_9 );
level.drill_headlight_fx delete();
level.drillbot_event_finished = 1;
level.non_player_drill_plant = 0;
level.drill maps\mp\alien\_drill::set_drill_icon();
}
send_bot_to_hive_and_drill( var_0 )
{
if ( isdefined( level.drill_icon ) )
level.drill_icon destroy();
var_1 = getvehiclenode( "cargo_drillbot_start", "targetname" );
level.drill_vehicle attachpath( var_1 );
level.drill_vehicle startpath();
level.drill_vehicle playsoundonmovingent( "scn_drillbot_move01" );
level.drill_vehicle vehicle_setspeed( 5, 1, 1 );
level.drill_icon_draw_dist_override = 10000;
level.drill_vehicle waittill( "reached_end_node" );
var_2 = undefined;
foreach ( var_4 in level.stronghold_hive_locs )
{
if ( isdefined( var_4.target ) && var_4.target == "cargo_area_mini_3" )
{
var_2 = var_4;
break;
}
}
if ( !isdefined( var_0 ) || !isalive( var_0 ) )
{
var_6 = maps\mp\alien\_utility::get_array_of_valid_players();
var_0 = var_6[0];
}
level.drill_carrier = var_0;
var_2 notify( "trigger", var_0 );
common_scripts\utility::flag_wait( "drill_detonated" );
level.drill_icon_draw_dist_override = undefined;
wait 8;
level.drill makeunusable();
level.drill linkto( level.drill_vehicle, "tag_turret_attach", ( 0, 0, -2 ), ( 0, 0, 0 ) );
if ( isdefined( level.drill_icon ) )
level.drill_icon destroy();
}
wait_for_player_to_activate_platform()
{
var_0 = getent( "bot_switch", "targetname" );
maps\mp\alien\_outline_proto::add_to_outline_watch_list( var_0, 0 );
var_1 = "waypoint_alien_blocker";
var_2 = 14;
var_3 = 14;
var_4 = 0.75;
var_5 = var_0.origin + ( 0, 0, 40 );
var_6 = maps\mp\alien\_hud::make_waypoint( var_1, var_2, var_3, var_4, var_5 );
var_0 makeusable();
var_0 sethintstring( &"MP_ALIEN_BEACON_ACTIVATE_BOT" );
var_0 waittill( "trigger", var_7 );
playsoundatpos( var_0.origin + ( 0, 0, 40 ), "scn_drillbot_activate" );
maps\mp\alien\_outline_proto::remove_from_outline_watch_list( var_0 );
var_0 makeunusable();
var_6 destroy();
}
clear_drillbot_lowermessage()
{
foreach ( var_1 in level.players )
var_1 maps\mp\_utility::clearlowermessage( "bot_drill" );
}
check_for_player_near_bot_with_drill()
{
self endon( "disconnect" );
self endon( "death" );
level endon( "drillbot_used" );
if ( maps\mp\alien\_utility::is_true( level.drillbot_event_finished ) )
return;
var_0 = 6400;
while ( !isdefined( level.drill_vehicle ) )
wait 1;
for (;;)
{
while ( !common_scripts\utility::flag( "drill_drilling" ) )
{
if ( isdefined( self.inlaststand ) && self.inlaststand || common_scripts\utility::flag( "drill_drilling" ) || isdefined( self.usingremote ) || maps\mp\alien\_utility::is_true( self.iscarrying ) )
{
wait 0.05;
continue;
}
if ( distancesquared( level.drill_vehicle.origin, self.origin ) < var_0 )
{
if ( !isdefined( level.drill_carrier ) || isdefined( level.drill_carrier ) && level.drill_carrier != self )
{
maps\mp\_utility::setlowermessage( "bot_drill", &"MP_ALIEN_BEACON_PLACE_DRILL", undefined, 10 );
while ( player_should_see_drillbot_hint( level.drill_vehicle, var_0, 1 ) )
wait 0.05;
maps\mp\_utility::clearlowermessage( "bot_drill" );
}
else
{
maps\mp\_utility::setlowermessage( "bot_drill", &"MP_ALIEN_BEACON_DRILL_ONBOT", undefined, 10 );
while ( player_should_see_drillbot_hint( level.drill_vehicle, var_0, 0 ) )
wait 0.05;
maps\mp\_utility::clearlowermessage( "bot_drill" );
}
}
wait 0.05;
}
common_scripts\utility::flag_waitopen( "drill_drilling" );
}
}
player_should_see_drillbot_hint( var_0, var_1, var_2 )
{
if ( distancesquared( var_0.origin, self.origin ) > var_1 )
return 0;
if ( common_scripts\utility::flag( "drill_drilling" ) )
return 0;
if ( self.inlaststand )
return 0;
if ( isdefined( self.usingremote ) )
return 0;
if ( maps\mp\alien\_utility::is_true( var_2 ) )
return 1;
else if ( maps\mp\alien\_utility::is_true( self.iscarrying ) )
return 0;
return 1;
}
register_encounter()
{
if ( maps\mp\alien\_utility::is_chaos_mode() )
{
maps\mp\gametypes\aliens::register_encounter( ::chaos_init, undefined, undefined, undefined, ::chaos_init, maps\mp\alien\_globallogic::blank );
maps\mp\gametypes\aliens::register_encounter( maps\mp\alien\_chaos::chaos, undefined, undefined, undefined, maps\mp\alien\_chaos::chaos, maps\mp\alien\_globallogic::blank );
return;
}
maps\mp\gametypes\aliens::register_encounter( ::encounter_init, undefined, undefined, undefined, ::encounter_init, maps\mp\alien\_globallogic::blank );
maps\mp\gametypes\aliens::register_encounter( ::mp_alien_beacon_intro_ride, 1, undefined, undefined, ::skip_hive_give_abilities, ::jump_to_well_deck_1, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( ::hives_2_custom, 1, undefined, 1, maps\mp\alien\_hive::skip_hive, ::jump_to_well_deck_2, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( ::hives_3_custom, 1, undefined, 1, maps\mp\alien\_hive::skip_hive, ::jump_to_mini_boss, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( ::first_cargo_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_cargo_area, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( ::cargo_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_cargo_area, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( ::cargo_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_cargo_area, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( ::cargo_hive, 1, undefined, 1, maps\mp\alien\_hive::skip_hive, ::jump_to_cargo_blocker, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( ::top_deck_hive_01, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_top_deck, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( ::final_deck_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_top_deck, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( ::first_lab_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_lab_area, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( ::second_lab_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_lab_area, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( ::third_lab_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_lab_area, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( ::mp_alien_beacon_top_deck_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_lab_blocker );
maps\mp\gametypes\aliens::register_encounter( ::mp_alien_beacon_boss_encounter, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_boss_area );
}
encounter_init()
{
var_0 = getent( "drill_pickup_trig", "targetname" );
if ( isdefined( var_0 ) )
var_0 delete();
maps\mp\alien\_drill::init_drill();
maps\mp\alien\_hive::init_hives();
maps\mp\alien\_gamescore::init_eog_score_components( [ "hive" ] );
maps\mp\alien\_gamescore_beacon::init_beacon_eog_score_components( [ "kraken", "item_crafting", "side_area", "relics" ] );
maps\mp\alien\_gamescore::init_encounter_score_components( [ "challenge", "drill", "team", "team_blocker", "personal", "personal_blocker" ] );
maps\mp\alien\_gamescore_beacon::init_beacon_encounter_score_components( [ "item_crafting", "side_area", "gas", "kraken", "kraken_personal", "kraken_team", "tentacle_bonus", "progression_door" ] );
level.progression_doors = [ "door_hive_4", "door_hive_6" ];
level thread fix_cargo_leftovers();
}
init_seeder()
{
maps\mp\agents\alien\_alien_seeder::seeder_level_init();
level.dlc_alien_init_override_func = ::beacon_alien_init_override;
level.dlc_melee_override_func = ::beacon_alien_melee_override;
level.dlc_alien_death_override_func = ::beacon_alien_death_override;
level.dlc_get_non_agent_enemies = ::beacon_get_non_agent_enemies;
}
beacon_alien_init_override()
{
if ( maps\mp\alien\_utility::get_alien_type() == "seeder" )
maps\mp\agents\alien\_alien_seeder::seeder_init();
}
beacon_alien_melee_override( var_0 )
{
if ( self.melee_type == "seeder_spit" )
maps\mp\agents\alien\_alien_seeder::seeder_spit_attack( var_0 );
}
beacon_alien_death_override( var_0 )
{
if ( maps\mp\alien\_utility::get_alien_type() == "seeder" )
maps\mp\agents\alien\_alien_seeder::seeder_death( var_0 );
}
beacon_get_non_agent_enemies()
{
var_0 = [];
if ( isdefined( level.seeder_active_turrets ) )
{
foreach ( var_2 in level.seeder_active_turrets )
{
if ( !isdefined( var_2.pet ) )
var_0 = common_scripts\utility::array_add( var_0, var_2 );
}
return var_0;
}
return [];
}
beacon_hint_precache()
{
var_0 = [];
var_0["ALIEN_PICKUPS_BEACON_PICKUP_PROPANE_TANK"] = &"ALIEN_PICKUPS_BEACON_PICKUP_PROPANE_TANK";
var_0["ALIEN_PICKUPS_BEACON_PICKUP_VKS"] = &"ALIEN_PICKUPS_BEACON_PICKUP_VKS";
var_0["ALIEN_PICKUPS_BEACON_PICKUP_FP6"] = &"ALIEN_PICKUPS_BEACON_PICKUP_FP6";
var_0["ALIEN_PICKUPS_BEACON_PICKUP_RGM"] = &"ALIEN_PICKUPS_BEACON_PICKUP_RGM";
var_0["ALIEN_PICKUPS_BEACON_PICKUP_PP19"] = &"ALIEN_PICKUPS_BEACON_PICKUP_PP19";
var_0["ALIEN_PICKUPS_BEACON_PICKUP_CBJMS"] = &"ALIEN_PICKUPS_BEACON_PICKUP_CBJMS";
var_0["ALIEN_PICKUPS_BEACON_PICKUP_MAUL"] = &"ALIEN_PICKUPS_BEACON_PICKUP_MAUL";
var_0["ALIEN_PICKUPS_BEACON_PICKUP_MICROTAR"] = &"ALIEN_PICKUPS_BEACON_PICKUP_MICROTAR";
var_0["ALIEN_PICKUPS_BEACON_PICKUP_KAC"] = &"ALIEN_PICKUPS_BEACON_PICKUP_KAC";
var_0["ALIEN_PICKUPS_BEACON_PICKUP_PANZERFAUST"] = &"ALIEN_PICKUPS_BEACON_PICKUP_PANZERFAUST";
var_0["ALIEN_PICKUPS_BEACON_PICKUP_G28"] = &"ALIEN_PICKUPS_BEACON_PICKUP_G28";
var_0["ALIEN_PICKUPS_BEACON_PICKUP_HONEYBADGER"] = &"ALIEN_PICKUPS_BEACON_PICKUP_HONEYBADGER";
var_0["ALIEN_PICKUPS_BEACON_PICKUP_RGM"] = &"ALIEN_PICKUPS_BEACON_PICKUP_RGM";
var_0["ALIEN_PICKUPS_BEACON_PICKUP_ARX_160"] = &"ALIEN_PICKUPS_BEACON_PICKUP_ARX_160";
var_0["ALIEN_PICKUPS_BEACON_PICKUP_LSAT"] = &"ALIEN_PICKUPS_BEACON_PICKUP_LSAT";
var_0["ALIEN_PICKUPS_BEACON_PICKUP_SVU"] = &"ALIEN_PICKUPS_BEACON_PICKUP_SVU";
var_0["ALIEN_PICKUPS_BEACON_PICKUP_RIPPER"] = &"ALIEN_PICKUPS_BEACON_PICKUP_RIPPER";
return var_0;
}
mp_alien_beacon_pillage_init()
{
level.pillageinfo = spawnstruct();
level.pillageinfo.alienattachment_model = "weapon_alien_muzzlebreak";
level.pillageinfo.default_use_time = 1000;
level.pillageinfo.money_stack = "pb_money_stack_01";
level.pillageinfo.attachment_model = "has_spotter_scope";
level.pillageinfo.maxammo_model = "mil_ammo_case_1_open";
level.pillageinfo.flare_model = "mil_emergency_flare_mp";
level.pillageinfo.clip_model = "weapon_baseweapon_clip";
level.pillageinfo.leash_model = "weapon_knife_iw6";
level.pillageinfo.trophy_model = "mp_trophy_system_folded_iw6";
level.pillageinfo.ui_searching = 1;
level.pillageinfo.easy_attachment = 30;
level.pillageinfo.easy_clip = 15;
level.pillageinfo.easy_money = 20;
level.pillageinfo.easy_explosive = 16;
level.pillageinfo.easy_specialammo = 17;
level.pillageinfo.easy_locker_key = 1;
level.pillageinfo.easy_intel = 1;
level.pillageinfo.medium_attachment = 35;
level.pillageinfo.medium_explosive = 16;
level.pillageinfo.medium_money = 20;
level.pillageinfo.medium_specialammo = 20;
level.pillageinfo.medium_clip = 7;
level.pillageinfo.medium_locker_key = 1;
level.pillageinfo.medium_intel = 1;
level.pillageinfo.hard_attachment = 25;
level.pillageinfo.hard_maxammo = 25;
level.pillageinfo.hard_specialammo = 19;
level.pillageinfo.hard_money = 25;
level.pillageinfo.hard_locker_key = 5;
level.pillageinfo.hard_intel = 1;
level.crafting_item_table = "mp/alien/crafting_items.csv";
level.crafting_table_item_index = 0;
level.crafting_table_item_ref = 1;
level.crafting_table_item_name = 2;
level.crafting_table_item_icon = 3;
level.max_crafting_items = 3;
level.crafting_model = "weapon_baseweapon_clip";
level.get_hintstring_for_pillaged_item_func = ::beacon_get_hintstring_for_pillaged_item_func;
level.get_hintstring_for_item_pickup_func = ::beacon_get_hintstring_for_item_pickup_func;
level.custom_build_pillageitem_array_func = ::beacon_build_pillageitem_array_func;
relocate_bad_pillage_spots();
}
relocate_bad_pillage_spots()
{
var_0 = common_scripts\utility::getstructarray( "lab_crafting_pillage", "targetname" );
foreach ( var_2 in var_0 )
{
if ( var_2.origin == ( -1034, 5744.2, 1214 ) )
{
var_2.origin = ( -1034.5, 5686.2, 1156 );
var_2.angles = ( 0, 313, 0 );
}
}
}
mp_alien_beacon_onspawnplayer_func()
{
thread maps\mp\alien\_alien_class_skills_main::assign_skills();
thread maps\mp\alien\_music_and_dialog_dlc::dlc_vo_init_on_player_spawn();
thread maps\mp\alien\_pillage_intel::intel_on_player_connect();
thread maps\mp\alien\_beacon_weapon::special_gun_watcher();
thread check_for_player_near_bot_with_drill();
var_0 = self;
thread maps\mp\alien\_achievement::eggallfoundforpack( 1 );
level notify( "boat_spawn", var_0 );
if ( common_scripts\utility::flag_exist( "boat_ride_over" ) && !common_scripts\utility::flag( "boat_ride_over" ) )
var_0 thread boat_intro_on_connect( var_0, level.players.size );
}
tp_to_well_deck()
{
var_0 = [];
var_0[1] = ( -132, -3142, -100 );
var_0[2] = ( -232, -3142, -100 );
var_0[3] = ( -332, -3142, -100 );
var_0[4] = ( -432, -3142, -100 );
var_1 = 0;
while ( var_1 == 0 && self.origin[1] < -4500 )
{
foreach ( var_3 in var_0 )
{
if ( canspawn( var_3 ) && !positionwouldtelefrag( var_3 ) )
{
if ( !isdefined( self.teleport_overlay ) )
{
thread teleport_black_screen();
wait 1;
}
if ( canspawn( var_3 ) && !positionwouldtelefrag( var_3 ) )
{
teleport_player_to_spot( var_3 );
var_1 = 1;
break;
}
else
continue;
}
}
wait 0.1;
}
}
freeze_connected_player_controls()
{
level endon( "introscreen_over" );
wait 1;
while ( !common_scripts\utility::flag( "intro_sequence_complete" ) )
{
level waittill( "connected", var_0 );
var_0 thread freeze_controls_load();
}
}
freeze_controls_load()
{
maps\mp\_utility::freezecontrolswrapper( 1 );
self disableweapons();
level waittill( "introscreen_over" );
maps\mp\_utility::freezecontrolswrapper( 0 );
self enableweapons();
}
skip_hive_give_abilities()
{
common_scripts\utility::flag_set( "give_player_abilities" );
maps\mp\alien\_hive::skip_hive();
}
beacon_get_hintstring_for_pillaged_item_func( var_0 )
{
var_0 = "" + var_0;
switch ( var_0 )
{
case "crafting":
return &"ALIEN_CRAFTING_FOUND_CRAFTING_ITEM";
case "locker_key":
return &"ALIEN_PILLAGE_LOCKER_FOUND_LOCKER_KEY";
case "locker_weapon":
return &"ALIEN_PILLAGE_LOCKER_FOUND_LOCKER_WEAPON";
}
}
beacon_get_hintstring_for_item_pickup_func( var_0 )
{
var_0 = "" + var_0;
switch ( var_0 )
{
case "wire":
return &"ALIEN_CRAFTING_PICKUP_WIRE";
case "amolecular":
return &"ALIEN_CRAFTING_PICKUP_AMOLECULAR";
case "fuse":
return &"ALIEN_CRAFTING_PICKUP_FUSE";
case "pipe":
return &"ALIEN_CRAFTING_PICKUP_PIPE";
case "pressureplate":
return &"ALIEN_CRAFTING_PICKUP_PRESSUREPLATE";
case "nucleicbattery":
return &"ALIEN_CRAFTING_PICKUP_NUCLEICBATTERY";
case "cellbattery":
return &"ALIEN_CRAFTING_PICKUP_CELLBATTERY";
case "liquidbattery":
return &"ALIEN_CRAFTING_PICKUP_LIQUIDBATTERY";
case "tnt":
return &"ALIEN_CRAFTING_PICKUP_TNT";
case "resin":
return &"ALIEN_CRAFTING_PICKUP_RESIN";
case "biolum":
return &"ALIEN_CRAFTING_PICKUP_BIOLUM";
case "locker_key":
return &"ALIEN_PILLAGE_LOCKER_PICKUP_LOCKER_KEY";
case "locker_weapon":
return &"ALIEN_PILLAGE_LOCKER_PICKUP_LOCKER_WEAPON";
case "venomx":
return &"ALIEN_CRAFTING_PICKUP_DISARMED_VENOM";
case "bluebiolum":
return &"ALIEN_CRAFTING_PICKUP_BLUEBIOLUM";
case "orangebiolum":
return &"ALIEN_CRAFTING_PICKUP_ORANGEBIOLUM";
case "amethystbiolum":
return &"ALIEN_CRAFTING_PICKUP_PURPLEBIOLUM";
case "iw6_aliendlc22_mp":
return &"ALIEN_CRAFTING_PICKUP_PIPEBOMB";
case "flare":
case "stickyflare":
case "viewmodel_flare":
case "iw6_aliendlc21_mp":
return &"ALIEN_CRAFTING_PICKUP_STICKYFLARE";
}
if ( isdefined( level.level_locker_weapon_pickup_string_func ) )
return [[ level.level_locker_weapon_pickup_string_func ]]( var_0 );
}
beacon_build_pillageitem_array_func( var_0 )
{
switch ( var_0 )
{
case "easy":
maps\mp\alien\_pillage::build_pillageitem_array( var_0, "crafting", level.pillageinfo.crafting_easy );
break;
case "medium":
maps\mp\alien\_pillage::build_pillageitem_array( var_0, "crafting", level.pillageinfo.crafting_medium );
break;
case "hard":
maps\mp\alien\_pillage::build_pillageitem_array( var_0, "crafting", level.pillageinfo.crafting_hard );
break;
}
level thread maps\mp\alien\_pillage_intel::build_intel_pillageitem_arrays( var_0 );
}
beacon_locker_weapon_pickup_string_func( var_0 )
{
var_0 = "" + var_0;
switch ( var_0 )
{
case "weapon_maul":
return &"ALIEN_PICKUPS_BEACON_LOCKER_MAUL";
case "weapon_kac_chainsaw":
return &"ALIEN_PICKUPS_BEACON_LOCKER_KAC";
case "weapon_g28":
return &"ALIEN_PICKUPS_BEACON_LOCKER_G28";
case "weapon_fabarm_fp6":
return &"ALIEN_PICKUPS_BEACON_LOCKER_FP6";
case "weapon_pp19_bizon_iw6":
return &"ALIEN_PICKUPS_BEACON_LOCKER_PP19";
case "weapon_cbj_ms_iw6":
return &"ALIEN_PICKUPS_BEACON_LOCKER_CBJMS";
case "weapon_tar21":
return &"ALIEN_PICKUPS_BEACON_LOCKER_MICROTAR";
case "weapon_honeybadger":
return &"ALIEN_PICKUPS_BEACON_LOCKER_HONEYBADGER";
case "weapon_arx_160":
return &"ALIEN_PICKUPS_BEACON_LOCKER_ARX_160";
case "weapon_lsat_iw6":
return &"ALIEN_PICKUPS_BEACON_LOCKER_LSAT";
case "weapon_dragunov_svu":
return &"ALIEN_PICKUPS_BEACON_LOCKER_SVU";
case "weapon_evopro":
return &"ALIEN_PICKUPS_BEACON_LOCKER_RIPPER";
default:
return &"ALIEN_PILLAGE_LOCKER_PICKUP_LOCKER_WEAPON";
}
}
watch_cinematic_use( var_0, var_1, var_2, var_3 )
{
if ( !isdefined( var_0 ) )
return;
level waittill( var_1 );
preloadcinematicforall( var_0 );
level waittill( var_2 );
playcinematicforall( var_0 );
level waittill( var_3 );
stopcinematicforall();
}
mp_alien_beacon_intro_ride()
{
level thread intro_boat_ride();
maps\mp\alien\_hive::regular_hive();
}
intro_boat_ride()
{
common_scripts\utility::flag_init( "boat_ride_over" );
thread maps\mp\mp_alien_beacon_vignettes::drill_swap();
level.boat_vehicle = getent( "intro_hovercraft", "targetname" );
var_0 = getent( "hovercraft_clip", "targetname" );
var_0 linkto( level.boat_vehicle );
var_1 = getent( "hovercraft_back_clip", "targetname" );
var_1 notsolid();
var_2 = getent( "hovercraft_clip_gate", "targetname" );
var_2 linkto( level.boat_vehicle );
level.boat_vehicle.spawn_locations = [];
for ( var_3 = 0; var_3 < 4; var_3++ )
{
level.boat_vehicle.spawn_locations[var_3] = getent( "beacon_hovercraft_spot" + ( var_3 + 1 ), "targetname" );
level.boat_vehicle.spawn_locations[var_3] linkto( level.boat_vehicle );
}
foreach ( var_3, var_5 in level.players )
{
var_6 = getent( "beacon_hovercraft_spot" + ( var_3 + 1 ), "targetname" );
var_6.used_spot = 1;
var_5 setorigin( var_6.origin );
var_5 setplayerangles( var_6.angles );
}
wait 0.5;
level.boat_vehicle scriptmodelplayanimdeltamotion( "alien_beacon_intro_hovercraft" );
thread maps\mp\mp_alien_beacon_vignettes::boat_ride_vo();
thread maps\mp\mp_alien_beacon_fx::fx_boatride_splashes();
thread maps\mp\mp_alien_beacon_fx::fx_raindrops_screenfx_intro();
wait 5;
level.boat_vehicle thread beacon_play_sound_on_moving_tag( "scn_beacon_intro_fan_left", "J_LE_Fan", 26 );
level.boat_vehicle thread beacon_play_sound_on_moving_tag( "scn_beacon_intro_fan_right", "J_RI_Fan", 26 );
wait 21;
var_2 delete();
wait 2.33;
common_scripts\utility::flag_set( "boat_ride_over" );
thread update_override_info( ( -281, -2645, 0.124998 ), ( 0, 90, 0 ) );
common_scripts\utility::flag_set( "give_player_abilities" );
var_1 solid();
foreach ( var_6 in level.boat_vehicle.spawn_locations )
var_6 delete();
var_0 delete();
}
boat_intro_on_connect( var_0, var_1 )
{
var_2 = undefined;
foreach ( var_4 in level.boat_vehicle.spawn_locations )
{
if ( !isdefined( var_4.used_spot ) )
{
var_2 = var_4;
var_4.used_spot = 1;
break;
}
}
if ( !isdefined( var_2 ) )
{
foreach ( var_4 in level.boat_vehicle.spawn_locations )
var_4.used_node = undefined;
var_2 = level.boat_vehicle.spawn_locations[1];
var_2.usedspot = 1;
}
wait 0.1;
var_0 setorigin( var_2.origin + ( 0, 0, 0 ) );
var_0 setplayerangles( var_2.angles );
wait 0.05;
var_0 playerlinkto( var_2 );
wait 0.2;
var_0 unlink();
}
collision_test()
{
self waittill( "unresolved_collision" );
}
hives_2_custom()
{
maps\mp\alien\_hive::regular_hive();
}
hives_3_custom()
{
thread maps\mp\mp_alien_beacon_vignettes::mini_boss();
maps\mp\alien\_hive::regular_hive( ::get_mini_boss_score_component_list );
thread update_override_info( ( -1300, 437, -127.875 ), ( 0, 0, 0 ) );
level notify( "miniboss_retreat" );
level.miniboss_beaten = 1;
thread maps\mp\mp_alien_beacon_vignettes::post_miniboss_vo();
maps\mp\alien\_achievement_dlc2::update_blocker_achievements( "tentacle_fight" );
foreach ( var_1 in level.players )
var_1 maps\mp\alien\_persistence::try_award_bonus_pool_token();
if ( maps\mp\alien\_utility::isplayingsolo() && !issplitscreen() )
maps\mp\alien\_laststand::give_laststand( level.players[0], 1 );
}
get_mini_boss_score_component_list()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
return [ "drill", "personal", "challenge", "tentacle_bonus" ];
else
return [ "drill", "team", "personal", "challenge", "tentacle_bonus" ];
}
first_cargo_hive()
{
level thread maps\mp\mp_alien_beacon_vignettes::cargo_room_intro_vo();
cargo_hive();
thread update_override_info( ( -742, 1258, 136.125 ), ( 0, 90, 0 ) );
}
pre_hive()
{
if ( level.current_hive_name == "cargo_area_mini_3" )
return 23;
return level.cycle_count;
}
cargo_hive()
{
maps\mp\alien\_hive::regular_hive();
if ( isdefined( level.icargohives ) )
{
if ( level.icargohives == 1 )
{
common_scripts\utility::flag_set( "delay_UGV_VO" );
thread maps\mp\mp_alien_beacon_vignettes::cargo_room_hive_two_vo();
level.icargohives++;
}
else if ( level.icargohives == 2 )
{
level thread waypoint_after_drill_picked_up();
level.icargohives++;
}
else
level.icargohives++;
}
if ( level.current_hive_name == "cargo_area_mini_2_post" )
{
wait 5;
spawn_beacon_cargo_drillbot();
var_0 = undefined;
level thread use_drillbot_door( var_0, getent( "cargo_bot_entrance_door", "targetname" ) );
wait 3;
level.drillbot_door_open = 1;
}
level maps\mp\mp_alien_beacon_vignettes::set_up_blast_doors();
if ( level.current_hive_name == "cargo_area_mini_1_post" || level.current_hive_name == "cargo_area_mini_2_post" || level.current_hive_name == "cargo_area_mini_3_post" || level.current_hive_name == "cargo_area_mini_4_post" || level.current_hive_name == "cargo_area_mini_5_post" || level.current_hive_name == "cargo_area_mini_6_post" )
level.blast_doors_lifted++;
if ( level.current_hive_name == "cargo_area_mini_2_post" )
level thread maps\mp\mp_alien_beacon_vignettes::cargo_room_use_ugv_vo();
if ( level.blast_doors_lifted > 3 && !common_scripts\utility::flag( "cargo_control_room_vo_played" ) )
level thread maps\mp\mp_alien_beacon_vignettes::cargo_room_go_to_control_room_vo();
level thread spawn_elites_from_container();
}
cargo_blocker_door_setup()
{
level.custom_hive_logic = ::beacon_cargo_hive_logic;
level.hive_is_really_a_door = 1;
}
beacon_cargo_hive_logic()
{
level notify( "drill_start_door_fx", 180 );
level.drill scriptmodelplayanim( "alien_drill_open_door_long" );
level thread beacon_cargo_hive_think();
}
beacon_cargo_hive_think()
{
common_scripts\utility::flag_wait( "drill_detonated" );
wait 10;
level.custom_hive_logic = undefined;
level.hive_is_really_a_door = undefined;
}
top_deck_hive_01()
{
thread maps\mp\mp_alien_beacon_vignettes::init_cinematics( "mp_beacon_archer_vig", 60 );
thread raise_cargo_container();
thread wait_for_players_reach_waypoint();
maps\mp\alien\_hive::regular_hive();
}
wait_for_players_reach_waypoint()
{
var_0 = "waypoint_alien_blocker";
var_1 = 14;
var_2 = 14;
var_3 = 0.75;
var_4 = ( -252, 1139, 340 );
var_5 = 60;
var_6 = 128;
var_7 = 100;
var_8 = maps\mp\alien\_hud::make_waypoint( var_0, var_1, var_2, var_3, var_4 );
var_9 = spawn( "trigger_radius", var_4, 0, var_6, var_7 );
var_9 watch_trigger_by_player();
var_9 delete();
var_8 destroy();
}
watch_trigger_by_player()
{
self endon( "death" );
level endon( "game_ended" );
common_scripts\utility::waitframe();
for (;;)
{
self waittill( "trigger", var_0 );
if ( isplayer( var_0 ) )
break;
}
self notify( "trigger_by_player" );
}
final_deck_hive()
{
maps\mp\alien\_hive::regular_hive();
var_0 = [];
var_0 = getentarray( "deck_to_lab_door", "targetname" );
var_1 = getent( "deck_to_lab_door_linker", "targetname" );
foreach ( var_3 in var_0 )
{
if ( isdefined( var_3 ) && isdefined( var_1 ) )
var_3 linkto( var_1 );
}
var_5 = getentarray( "top_deck_mini_1", "targetname" );
foreach ( var_7 in var_5 )
{
if ( var_7.classname == "script_brushmodel" )
var_7 delete();
}
var_1 movez( 92, 5, 0, 1 );
thread maps\mp\mp_alien_beacon_vignettes::lab_entrance_vo();
if ( maps\mp\alien\_utility::isplayingsolo() && !issplitscreen() )
maps\mp\alien\_laststand::give_laststand( level.players[0], 1 );
thread update_override_info( ( 264, 4232, 1152.13 ), ( 0, 130, 0 ) );
}
first_lab_hive()
{
maps\mp\alien\_hive::regular_hive();
thread maps\mp\mp_alien_beacon_vignettes::lab_first_hive_vo();
}
second_lab_hive()
{
maps\mp\alien\_hive::regular_hive();
thread maps\mp\mp_alien_beacon_vignettes::lab_second_hive_vo();
}
third_lab_hive()
{
maps\mp\alien\_hive::regular_hive();
}
mp_alien_beacon_cargo_blocker_hive()
{
generic_blocker_hive_logic( "cargo_blocker_dead" );
}
mp_alien_beacon_top_deck_hive()
{
disable_lab_doors();
maps\mp\alien\_gamescore::reset_encounter_performance();
maps\mp\mp_alien_beacon_vignettes::setup_gas_encounter();
give_gas_encounter_rewards();
common_scripts\utility::flag_set( "top_deck_blocker_dead" );
common_scripts\utility::flag_set( "boss_turrets_on" );
var_0 = getent( "player128x128x128", "targetname" );
if ( isdefined( var_0 ) )
{
var_0 moveto( ( -136.5, 6465.5, 1444 ), 0.05 );
var_0.angles = ( 0, 0, 0 );
}
}
give_gas_encounter_rewards()
{
var_0 = get_gas_encounter_score_components();
maps\mp\alien\_gamescore::calculate_and_show_encounter_scores( level.players, var_0 );
foreach ( var_2 in level.players )
{
var_2 maps\mp\alien\_persistence::eog_player_update_stat( "hivesdestroyed", 1 );
var_2 thread maps\mp\alien\_hive::wait_to_give_rewards();
}
}
get_gas_encounter_score_components()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
return [ "gas", "personal" ];
else
return [ "gas", "team", "personal" ];
}
mp_alien_beacon_story_moment()
{
}
mp_alien_beacon_boss_encounter()
{
var_0 = getent( "boss_trigger", "targetname" );
var_0 waittill( "trigger" );
setdvar( "sm_sunSampleSizeNear", 0.7 );
level thread clean_aliens_for_kraken();
wait 2;
level notify( "stop_teleport_script" );
common_scripts\utility::flag_set( "tp_to_kraken_on_spawn" );
update_override_info( ( -125.5, 7012.5, 1152.13 ), ( 0, 0, 0 ) );
level thread gather_ye_players_for_kraken();
wait 1.0;
level notify( "stop_drill_teleport_script" );
level.blocker_hive_active = 1;
maps\mp\agents\alien\alien_kraken\_alien_kraken::initkraken();
maps\mp\agents\alien\alien_kraken\_alien_kraken_tentacle::initkrakententacle();
thread play_kraken_intro_music();
wait 5.0;
var_1 = common_scripts\utility::getstruct( "kraken_position_1", "targetname" );
level.kraken = maps\mp\agents\alien\alien_kraken\_alien_kraken::alienkrakenspawn( var_1.origin, var_1.angles );
level.kraken maps\mp\agents\alien\alien_kraken\_alien_kraken::attachtentacles();
level.kraken.feral_occludes = 1;
level.kraken attach( "fx_kraken_bones_jaw" );
level.kraken attach( "fx_kraken_bones_helmet" );
common_scripts\utility::flag_set( "boss_is_spawned" );
level thread listen_for_emerge_phase();
level thread kraken_start_cycle( 1 );
maps\mp\alien\_gamescore::reset_encounter_performance();
var_2 = gettime();
level.kraken maps\mp\agents\alien\alien_kraken\_alien_kraken::alienkrakenthink();
var_3 = gettime() - var_2;
update_lb_aliensession_final_kraken( var_3 );
maps\mp\alien\_gamescore_beacon::calculate_kraken_score( var_3 );
maps\mp\alien\_achievement_dlc2::update_blocker_achievements( "kraken", var_3 );
maps\mp\mp_alien_beacon_vignettes::post_boss_vo();
if ( !maps\mp\alien\_utility::is_casual_mode() )
set_players_escaped();
give_players_completion_tokens();
maps\mp\alien\_unlock::update_escape_item_unlock( level.players );
var_4 = get_win_condition();
var_5 = maps\mp\alien\_hud::get_end_game_string_index( var_4 );
level maps\mp\_utility::delaythread( 3, maps\mp\gametypes\aliens::alienendgame, "allies", var_5 );
}
gather_ye_players_for_kraken()
{
level endon( "game_ended" );
foreach ( var_1 in level.kraken_turrets )
{
if ( var_1.origin[1] < 6500 )
{
var_1.overloaded = 1;
var_1 notify( "disable_turret" );
var_1.use_trigger notify( "turret_is_broken" );
var_1.use_trigger maps\mp\alien\mp_alien_beacon_turret::turret_is_broken( var_1 );
}
}
wait 1;
for (;;)
{
foreach ( var_4 in level.players )
{
var_5 = var_4;
if ( isdefined( var_4.reviveent ) )
var_5 = var_4.reviveent;
if ( var_5.origin[1] < 6640 )
{
var_4 teleport_player_to_boss_fight( var_5 );
wait 0.1;
}
}
wait 0.25;
}
}
clean_aliens_for_kraken()
{
var_0 = [];
var_1 = getentarray( "spawn_zone", "targetname" );
foreach ( var_3 in var_1 )
{
if ( issubstr( var_3.script_linkname, "spawn_9" ) || issubstr( var_3.script_linkname, "spawn_10" ) || issubstr( var_3.script_linkname, "spawn_11" ) || issubstr( var_3.script_linkname, "spawn_12" ) || issubstr( var_3.script_linkname, "spawn_13" ) )
var_0[var_0.size] = var_3;
}
var_5 = maps\mp\alien\_spawnlogic::get_alive_agents();
foreach ( var_7 in var_5 )
{
var_8 = 0;
foreach ( var_3 in var_0 )
{
if ( var_7 istouching( var_3 ) )
var_8 = 1;
}
if ( !var_8 )
var_7 suicide();
}
}
teleport_player_to_boss_fight( var_0 )
{
var_1 = [];
var_1[0] = ( -125.5, 7012.5, 1165.5 );
var_1[1] = ( -63, 7012.5, 1165.5 );
var_1[2] = ( 1, 7012.5, 1165.5 );
var_1[3] = ( 64.5, 7012.5, 1165.5 );
var_2 = ( 0, 0, 0 );
var_3 = 0;
while ( !var_3 )
{
foreach ( var_5 in var_1 )
{
if ( canspawn( var_5 ) && !positionwouldtelefrag( var_5 ) )
{
if ( !isdefined( self.teleport_overlay ) )
{
thread teleport_black_screen();
wait 1;
}
if ( canspawn( var_5 ) && !positionwouldtelefrag( var_5 ) )
{
if ( isdefined( var_0 ) && var_0 != self )
teleport_player_to_spot( var_5, var_0 );
else
teleport_player_to_spot( var_5 );
var_3 = 1;
break;
}
else
continue;
}
}
wait 0.1;
}
self notify( "player_teleported" );
}
beacon_player_initial_spawn_loc_override()
{
if ( maps\mp\alien\_utility::is_chaos_mode() )
chaos_player_initial_spawn_loc_override();
else
regular_player_initial_spawn_loc_override();
}
regular_player_initial_spawn_loc_override()
{
if ( !isdefined( level.currentspawnoriginoverride ) )
return;
if ( !isdefined( level.currentspawnanglesoverride ) )
level.currentspawnanglesoverride = ( 0, 0, 0 );
self.forcespawnorigin = level.currentspawnoriginoverride;
self.forcespawnangles = level.currentspawnanglesoverride;
}
chaos_player_initial_spawn_loc_override()
{
var_0 = [];
var_1 = [];
switch ( maps\mp\alien\_utility::get_chaos_area() )
{
case "cargo":
var_0 = [ ( 1011, 1649, 145 ), ( 982, 1783, 145 ), ( -1547, 1765, 145 ), ( -1542, 1637, 145 ) ];
var_1 = [ ( 0, 180, 0 ), ( 0, 180, 0 ), ( 0, 0, 0 ), ( 0, 0, 0 ) ];
break;
}
self.forcespawnorigin = var_0[level.players.size];
self.forcespawnangles = var_1[level.players.size];
}
update_override_info( var_0, var_1 )
{
var_2 = common_scripts\utility::drop_to_ground( var_0, 5, -100 );
level.currentspawnoriginoverride = var_0;
level.currentspawnanglesoverride = var_1;
}
set_players_escaped()
{
foreach ( var_1 in level.players )
var_1 maps\mp\alien\_persistence::set_player_escaped();
}
give_players_completion_tokens()
{
foreach ( var_1 in level.players )
var_1 maps\mp\alien\_persistence::award_completion_tokens();
}
get_win_condition()
{
foreach ( var_1 in level.players )
{
if ( maps\mp\alien\_utility::is_true( var_1.inlaststand ) )
return "some_escape";
}
return "all_escape";
}
play_kraken_intro_music()
{
foreach ( var_1 in level.players )
{
if ( common_scripts\utility::flag( "alien_music_playing" ) )
{
var_1 stoplocalsound( "mp_suspense_01" );
var_1 stoplocalsound( "mp_suspense_02" );
var_1 stoplocalsound( "mp_suspense_03" );
var_1 stoplocalsound( "mp_suspense_04" );
var_1 stoplocalsound( "mp_suspense_05" );
var_1 stoplocalsound( "mp_suspense_06" );
var_1 stoplocalsound( "mus_alien_newwave" );
var_1 stoplocalsound( "mus_alien_queen" );
common_scripts\utility::flag_clear( "alien_music_playing" );
}
if ( !common_scripts\utility::flag( "exfil_music_playing" ) )
level thread maps\mp\alien\_music_and_dialog::play_alien_music( "mus_alien_dlc2_kraken" );
}
}
kraken_start_cycle( var_0 )
{
}
update_lb_aliensession_final_kraken( var_0 )
{
var_1 = get_lb_final_kraken_rank( var_0 );
foreach ( var_3 in level.players )
{
var_3 maps\mp\alien\_persistence::lb_player_update_stat( "escapedRank" + var_1, 1, 1 );
var_3 maps\mp\alien\_persistence::lb_player_update_stat( "hits", 1, 1 );
}
}
get_lb_final_kraken_rank( var_0 )
{
var_1 = 555000;
var_2 = 630000;
var_3 = 750000;
if ( var_0 <= var_1 )
return 0;
else if ( var_0 <= var_2 )
return 1;
else if ( var_0 <= var_3 )
return 2;
else
return 3;
}
generic_blocker_hive_logic( var_0 )
{
level endon( "game_ended" );
var_1 = maps\mp\alien\_hive::select_hives( 1 );
var_2 = var_1[0];
var_3 = maps\mp\alien\_hive::create_attackable_ent( var_2 );
var_2.attackable_ent = var_3;
level.current_blocker_hive = var_2;
level.encounter_name = var_2.target;
level thread maps\mp\alien\_spawnlogic::encounter_cycle_spawn( "blocker_hive_heli_inbound" );
setomnvar( "ui_alien_boss_status", 2 );
setomnvar( "ui_alien_boss_progression", 0 );
var_3 show();
var_3 setcandamage( 1 );
var_3 thread maps\mp\alien\_hud::blocker_hive_hp_bar();
var_3 thread maps\mp\alien\_hive::monitor_attackable_ent_damage( var_2 );
var_3 waittill( "death" );
common_scripts\utility::flag_set( var_0 );
maps\mp\alien\_spawn_director::end_cycle();
level.encounter_name = undefined;
maps\mp\alien\_hive::blocker_hive_explode_sequence( var_3, var_2 );
maps\mp\alien\_hive::give_players_rewards( 1 );
}
mp_alien_beacon_attackable_ent_override( var_0 )
{
if ( maps\mp\alien\_hive::get_blocker_hive_index() == 1 )
{
var_0.health = 10000;
var_0.maxhealth = 10000;
}
else
{
var_0.health = 15000;
var_0.maxhealth = 15000;
}
if ( maps\mp\alien\_utility::isplayingsolo() )
{
var_0.health = int( 0.66 * var_0.health );
var_0.maxhealth = int( 0.66 * var_0.maxhealth );
}
return var_0;
}
init_level_flags()
{
common_scripts\utility::flag_init( "cargo_blocker_dead" );
common_scripts\utility::flag_init( "top_deck_blocker_dead" );
}
beacon_enter_area_func( var_0 )
{
if ( !maps\mp\alien\_utility::is_chaos_mode() )
maps\mp\alien\_container_spawn::activate_container_spawners_in_area( var_0 );
}
beacon_leave_area_func( var_0 )
{
if ( !maps\mp\alien\_utility::is_chaos_mode() )
maps\mp\alien\_container_spawn::deactivate_container_spawners_in_area( var_0 );
}
init_container_spawn()
{
maps\mp\alien\_container_spawn::init_container_spawn();
level.should_skip_area_activation_func = ::should_skip_area_activation;
var_0 = [];
level thread maps\mp\alien\_container_spawn::container_spawn_hive_monitor( var_0 );
}
should_skip_area_activation( var_0 )
{
var_1 = [];
return common_scripts\utility::array_contains( var_1, var_0 );
}
spawn_elites_from_container()
{
var_0 = 0;
while ( !var_0 )
{
level waittill( "drill_planted" );
if ( level.current_hive_name == "cargo_area_main" )
{
var_0 = 1;
lower_cargo_container();
wait 1.0;
level thread notify_and_remove_door( "container_3_spawn_1", "cargo_container_3_door_01" );
wait 0.5;
if ( maps\mp\alien\_utility::isplayingsolo() )
{
level thread notify_and_remove_door( "fake_notify", "cargo_container_3_door_02" );
continue;
}
level thread notify_and_remove_door( "container_3_spawn_2", "cargo_container_3_door_02" );
}
}
}
notify_and_remove_door( var_0, var_1 )
{
var_2 = getent( var_1 + "_start", "targetname" );
common_scripts\utility::waitframe();
var_3 = getent( var_1, "targetname" );
if ( maps\mp\alien\_utility::isplayingsolo() )
var_3 setscriptablepartstate( 0, 1 );
else
var_3 setscriptablepartstate( 0, 4 );
common_scripts\utility::waitframe();
if ( isdefined( var_2 ) )
var_2 delete();
level notify( var_0 );
}
jump_to_well_deck_1()
{
}
jump_to_well_deck_2()
{
}
jump_to_mini_boss()
{
}
jump_to_cargo_area()
{
}
jump_to_cargo_blocker()
{
}
jump_to_top_deck()
{
}
jump_to_lab_area()
{
}
jump_to_lab_blocker()
{
}
jump_to_boss_area()
{
}
set_spawn_table()
{
if ( maps\mp\alien\_utility::is_chaos_mode() )
set_chaos_spawn_table();
else
{
if ( maps\mp\alien\_utility::is_hardcore_mode() )
{
set_hardcore_extinction_spawn_table();
return;
}
set_regular_extinction_spawn_table();
}
}
set_container_spawn_table()
{
if ( maps\mp\alien\_utility::is_hardcore_mode() )
set_hardcore_container_spawn_table();
else
set_regular_container_spawn_table();
}
set_alien_definition_table()
{
if ( maps\mp\alien\_utility::is_hardcore_mode() )
set_hardcore_alien_definition_table();
else
set_regular_alien_definition_table();
}
set_chaos_spawn_table()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
{
switch ( maps\mp\alien\_utility::get_chaos_area() )
{
case "welldeck":
level.alien_cycle_table = "mp/alien/chaos_spawn_beacon_welldeck_sp.csv";
break;
case "cargo":
level.alien_cycle_table = "mp/alien/chaos_spawn_beacon_cargo_sp.csv";
break;
case "lab":
level.alien_cycle_table = "mp/alien/chaos_spawn_beacon_lab_sp.csv";
break;
}
}
else
{
switch ( maps\mp\alien\_utility::get_chaos_area() )
{
case "welldeck":
level.alien_cycle_table = "mp/alien/chaos_spawn_beacon_welldeck_mp.csv";
break;
case "cargo":
level.alien_cycle_table = "mp/alien/chaos_spawn_beacon_cargo_mp.csv";
break;
case "lab":
level.alien_cycle_table = "mp/alien/chaos_spawn_beacon_lab_mp.csv";
break;
}
}
}
set_regular_extinction_spawn_table()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
level.alien_cycle_table = "mp/alien/cycle_spawn_beacon_sp.csv";
else
level.alien_cycle_table = "mp/alien/cycle_spawn_beacon_mp.csv";
}
set_regular_container_spawn_table()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
level.container_spawn_table = "mp/alien/beacon_container_spawn_sp.csv";
else
level.container_spawn_table = "mp/alien/beacon_container_spawn.csv";
}
set_regular_alien_definition_table()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
level.default_alien_definition = "mp/alien/beacon_alien_definition_sp.csv";
else
level.default_alien_definition = "mp/alien/beacon_alien_definition.csv";
}
chaos_init()
{
maps\mp\alien\_hive::init_hive_locs();
maps\mp\alien\_chaos::init();
register_egg_default_loc();
set_end_cam_position();
thread player_containment();
}
player_containment()
{
level waittill( "spawn_nondeterministic_entities" );
var_0 = spawn( "script_model", ( -674, 765, 136 ) );
var_0 setmodel( "beacon_single_sliding_door_left" );
var_0.angles = ( 0, 0, 0 );
var_1 = spawn( "script_model", ( -742, 765, 136 ) );
var_1 setmodel( "beacon_single_sliding_door_left" );
var_1.angles = ( 0, 0, 0 );
var_2 = getent( "player256x256x8", "targetname" );
var_2.origin = ( -745, 760, 120 );
var_2.angles = ( 270, 270, 0 );
var_3 = spawn( "script_model", ( -410.3, 785, 280 ) );
var_3 setmodel( "armory_weapon_chest" );
var_3.angles = ( 0, 180, 0 );
var_4 = getent( "player512x512x8", "targetname" );
if ( isdefined( var_4 ) )
{
var_4.origin = ( 752, 3398, 64 );
var_4.angles = ( 270, 180, 180 );
var_5 = spawn( "script_model", ( 842, 3218, 440 ) );
var_5 clonebrushmodeltoscriptmodel( var_4 );
var_5.origin = ( 842, 3218, 440 );
var_5.angles = ( 270, 180, 180 );
}
var_6 = getent( "monsterplayer512x512x8", "targetname" );
if ( isdefined( var_6 ) )
{
var_6.origin = ( 1098, 3046, 440 );
var_6.angles = ( 270, 270, -180 );
var_7 = spawn( "script_model", ( 891, 3038, 184 ) );
var_7 setmodel( "tool_cabinet_02_iw6" );
var_7.angles = ( 0, 180, 0 );
}
}
set_end_cam_position()
{
var_0 = getentarray( "mp_global_intermission", "classname" );
var_1 = common_scripts\utility::getclosest( level.eggs_default_loc, var_0 );
switch ( maps\mp\alien\_utility::get_chaos_area() )
{
case "welldeck":
var_1.origin = ( 264, 3012, 492 );
var_1.angles = ( 15, 225, 0 );
break;
case "cargo":
var_1.origin = ( 264, 3012, 492 );
var_1.angles = ( 15, 225, 0 );
break;
case "lab":
var_1.origin = ( 264, 3012, 492 );
var_1.angles = ( 15, 225, 0 );
break;
}
}
register_egg_default_loc()
{
switch ( maps\mp\alien\_utility::get_chaos_area() )
{
case "welldeck":
maps\mp\alien\_chaos::set_egg_default_loc( ( -116, 2240, -1264 ) );
break;
case "cargo":
maps\mp\alien\_chaos::set_egg_default_loc( ( -116, 2240, -1264 ) );
break;
case "lab":
maps\mp\alien\_chaos::set_egg_default_loc( ( -116, 2240, -1264 ) );
break;
}
}
set_hardcore_extinction_spawn_table()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
level.alien_cycle_table_hardcore = "mp/alien/cycle_spawn_beacon_hardcore_sp.csv";
else
level.alien_cycle_table_hardcore = "mp/alien/cycle_spawn_beacon_hardcore_mp.csv";
}
set_hardcore_container_spawn_table()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
level.container_spawn_table = "mp/alien/beacon_container_spawn_hardcore_sp.csv";
else
level.container_spawn_table = "mp/alien/beacon_container_spawn_hardcore.csv";
}
set_hardcore_alien_definition_table()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
level.default_alien_definition = "mp/alien/beacon_alien_definition_hardcore_sp.csv";
else
level.default_alien_definition = "mp/alien/beacon_alien_definition_hardcore_mp.csv";
}
beacon_door_encounter_logic()
{
level endon( "game_ended" );
for (;;)
{
level waittill( "start_spawn_event", var_0 );
var_1 = var_0 + "_" + randomintrange( 1, 4 );
maps\mp\alien\_spawn_director::activate_spawn_event( var_1 );
}
}
lower_cargo_container()
{
var_0 = 5;
wait 4;
var_1 = getent( "beacon_crane_top", "targetname" );
var_2 = getent( "beacon_crane_bottom", "targetname" );
var_1 scriptmodelplayanimdeltamotion( "alien_beacon_crane_enter_base" );
var_2 scriptmodelplayanim( "alien_beacon_crane_enter_base" );
var_3 = getent( "cargo_container_3_door_01_start", "targetname" );
var_4 = getent( "cargo_container_3_door_02_start", "targetname" );
var_5 = getent( "crane_sound_origin_1", "targetname" );
var_6 = getent( "crane_sound_origin_2", "targetname" );
var_7 = getentarray( "crane_container_top_bad_place", "targetname" );
var_8 = getentarray( "move_container_clip", "targetname" );
var_9 = getentarray( "move_container", "targetname" );
var_9 = common_scripts\utility::add_to_array( var_9, var_3 );
var_9 = common_scripts\utility::add_to_array( var_9, var_4 );
var_9 = common_scripts\utility::add_to_array( var_9, var_5 );
var_9 = common_scripts\utility::add_to_array( var_9, var_6 );
var_9 = common_scripts\utility::array_combine( var_9, var_8 );
var_9 = common_scripts\utility::array_combine( var_9, var_7 );
foreach ( var_11 in var_9 )
var_11 linkto( var_1, "j_Base_Wire_07" );
var_13 = getent( "crane_container_bad_place", "targetname" );
badplace_brush( "crane_lower_spot", 0, var_13, "axis" );
var_4 thread lower_cargo_container_sfx();
wait( var_0 + 1 );
badplace_delete( "crane_lower_spot" );
if ( isdefined( var_13 ) )
var_13 delete();
foreach ( var_11 in var_9 )
var_11 unlink();
foreach ( var_17 in var_7 )
var_17 disconnectpaths();
}
lower_cargo_container_sfx()
{
wait 0.02;
self playsoundonmovingent( "scn_beacon_crane_down" );
}
raise_cargo_container_sfx( var_0 )
{
wait 0.04;
var_1 = lookupsoundlength( var_0 );
self playsoundonmovingent( var_0 );
wait( var_1 / 1000 + 1 );
self unlink();
self delete();
}
raise_cargo_container()
{
var_0 = getent( "cargo_room_control_switch", "targetname" );
var_0 sethintstring( &"MP_ALIEN_BEACON_CRANE_HINT" );
var_1 = getent( var_0.target, "targetname" );
maps\mp\alien\_outline_proto::add_to_outline_watch_list( var_1, 0 );
var_0 waittill( "trigger", var_2 );
var_2 playlocalsound( "scn_drillbot_activate" );
level notify( "trigger_first_archer_bink" );
thread maps\mp\mp_alien_beacon_vignettes::nag_bink_toggle();
var_0 makeunusable();
thread maps\mp\mp_alien_beacon_vignettes::pre_crane_vo();
maps\mp\alien\_outline_proto::remove_from_outline_watch_list( var_1 );
wait 5;
var_3 = getent( "beacon_crane_top", "targetname" );
var_4 = getent( "beacon_crane_bottom", "targetname" );
var_5 = getentarray( "move_container_clip", "targetname" );
var_6 = getentarray( "crane_container_top_bad_place", "targetname" );
var_7 = getentarray( "move_container", "targetname" );
var_8 = getent( "crane_tag", "targetname" );
var_8.origin = var_3 gettagorigin( "j_Base_Wire_07" );
var_8.angles = var_3 gettagangles( "j_Base_Wire_07" );
var_9 = getent( "cargo_players_trigger", "targetname" );
var_9 wait_for_players_to_enter_container( var_8 );
var_9 thread update_player_in_container_status();
foreach ( var_11 in var_5 )
var_11.unresolved_collision_func = ::crane_unresolved_collision;
level notify( "crane_started" );
common_scripts\utility::flag_set( "everyone_in_cargo_container" );
level thread disable_cargo_door_drill_spots();
level thread teleport_drill_to_container_if_needed();
var_9 enablelinkto();
var_9 linkto( var_8 );
var_13 = getent( "crane_sound_origin_1", "targetname" );
var_14 = getent( "crane_sound_origin_2", "targetname" );
var_7 = common_scripts\utility::add_to_array( var_7, var_13 );
var_7 = common_scripts\utility::add_to_array( var_7, var_14 );
var_7 = common_scripts\utility::array_combine( var_7, var_6 );
var_7 = common_scripts\utility::array_combine( var_7, var_5 );
foreach ( var_16 in var_7 )
var_16 linkto( var_8 );
thread update_override_info( ( 659, 1494, 1024.13 ), ( 0, 90, 0 ) );
maps\mp\_utility::delaythread( 30, ::crane_walls_hide, 1 );
var_3 scriptmodelplayanimdeltamotion( "alien_beacon_crane_exit_base" );
var_4 scriptmodelplayanim( "alien_beacon_crane_exit_base" );
var_8 scriptmodelplayanimdeltamotion( "alien_beacon_crane_exit_top_tag" );
var_13 thread raise_cargo_container_sfx( "scn_beacon_crane_up_01" );
var_14 thread raise_cargo_container_sfx( "scn_beacon_crane_up_02" );
thread crane_vo_waiter();
level notify( "cinematic_end" );
level notify( "godfathers_explanation" );
wait 30;
maps\mp\alien\_achievement_dlc2::update_blocker_achievements( "blocker_cargo" );
badplace_delete( "crane_lower_spot" );
foreach ( var_11 in var_6 )
var_11 disconnectpaths();
level notify( "beacon_starting_topdeck" );
common_scripts\utility::flag_set( "players_on_top_deck" );
var_9 unlink();
var_9 delete();
level thread teleport_player_if_not_on_top_deck();
maps\mp\_utility::delaythread( 1.0, ::teleport_drill_if_below_top_deck );
level.watch_bomb_stuck_override = undefined;
}
crane_unresolved_collision( var_0 )
{
var_0 thread teleport_player_to_top_deck( undefined );
}
crane_vo_waiter()
{
var_0 = lookupsoundlength( "beacon_gdf_drcrosshasbeendesignated" ) / 1000;
wait( 30 - var_0 );
thread maps\mp\mp_alien_beacon_vignettes::crane_vo();
}
disable_cargo_door_drill_spots()
{
var_0 = [];
foreach ( var_2 in level.stronghold_hive_locs )
{
if ( isdefined( var_2.target ) && ( var_2.target == "door_hive_7" || var_2.target == "door_hive_8" ) )
{
if ( isdefined( var_2.icon ) )
var_2.icon destroy();
var_2 makeunusable();
var_2 sethintstring( "" );
var_2 notify( "stop_listening" );
var_2.target = undefined;
var_0[var_0.size] = var_2;
}
}
level.stronghold_hive_locs = common_scripts\utility::array_remove_array( level.stronghold_hive_locs, var_0 );
}
teleport_player_to_spot( var_0, var_1 )
{
self endon( "disconnect" );
self cancelmantle();
self dontinterpolate();
self setorigin( var_0 );
self.forceteleportorigin = var_0;
if ( isdefined( var_1 ) )
{
var_1.origin = var_0;
self.reviveiconent.origin = var_0;
}
self notify( "teleport_finished" );
if ( isdefined( self.teleport_overlay ) )
{
self.teleport_overlay fadeovertime( 0.75 );
self.teleport_overlay.alpha = 0;
wait 1;
if ( isdefined( self.teleport_overlay ) )
self.teleport_overlay destroy();
}
maps\mp\_utility::clearlowermessage( "cargo_teleport" );
if ( isdefined( self.reviveent ) )
thread wait_for_spawn_and_remove_forceteleport();
else
self.forceteleportorigin = undefined;
}
wait_for_spawn_and_remove_forceteleport()
{
for (;;)
{
level waittill( "player_spawned", var_0 );
if ( self == var_0 )
break;
}
self.forceteleportorigin = undefined;
}
teleport_black_screen()
{
self endon( "disconnect" );
maps\mp\_utility::setlowermessage( "cargo_teleport", &"MP_ALIEN_BEACON_CARGO_TELEPORT", 3 );
self.teleport_overlay = newclienthudelem( self );
self.teleport_overlay.x = 0;
self.teleport_overlay.y = 0;
self.teleport_overlay setshader( "black", 640, 480 );
self.teleport_overlay.alignx = "left";
self.teleport_overlay.aligny = "top";
self.teleport_overlay.sort = 1;
self.teleport_overlay.horzalign = "fullscreen";
self.teleport_overlay.vertalign = "fullscreen";
self.teleport_overlay.alpha = 0;
self.teleport_overlay.foreground = 1;
self.teleport_overlay fadeovertime( 0.75 );
self.teleport_overlay.alpha = 1;
}
update_player_in_container_status()
{
level endon( "beacon_starting_topdeck" );
for (;;)
{
foreach ( var_1 in level.players )
{
if ( var_1 istouching( self ) )
{
var_1.on_container = 1;
continue;
}
var_1.on_container = 0;
}
common_scripts\utility::waitframe();
}
}
teleport_drill_to_container_if_needed()
{
level endon( "beacon_starting_topdeck" );
level endon( "drill_planted" );
for (;;)
{
var_0 = 0;
var_1 = ( 432, 1487, 1033 );
var_2 = ( 0, 0, 0 );
if ( isdefined( level.drill_linked_to_container ) )
var_0 = 1;
if ( isdefined( level.drill_carrier ) )
{
foreach ( var_4 in level.players )
{
if ( level.drill_carrier == var_4 )
var_0 = 1;
}
}
if ( !var_0 )
{
level.drill.origin = var_1;
level.drill.angles = var_2;
level.drill maps\mp\alien\_drill::set_drill_icon();
}
wait 0.1;
}
}
teleport_player_to_top_deck( var_0 )
{
var_1 = [];
var_1[0] = ( 260, 1487, 1043 );
var_1[1] = ( 360, 1487, 1043 );
var_1[2] = ( 260, 1387, 1043 );
var_1[3] = ( 360, 1387, 1043 );
var_2 = ( 0, 0, 0 );
var_3 = 0;
while ( !var_3 )
{
foreach ( var_5 in var_1 )
{
if ( canspawn( var_5 ) && !positionwouldtelefrag( var_5 ) )
{
if ( !isdefined( self.teleport_overlay ) )
{
thread teleport_black_screen();
wait 1;
}
if ( canspawn( var_5 ) && !positionwouldtelefrag( var_5 ) )
{
if ( isdefined( var_0 ) && var_0 != self )
teleport_player_to_spot( var_5, var_0 );
else
teleport_player_to_spot( var_5 );
var_3 = 1;
break;
}
else
continue;
}
}
wait 0.1;
}
self notify( "player_teleported" );
}
teleport_player_if_not_on_top_deck()
{
level endon( "stop_teleport_script" );
for (;;)
{
foreach ( var_1 in level.players )
{
var_2 = var_1;
if ( isdefined( var_1.reviveent ) )
var_2 = var_1.reviveent;
if ( !isdefined( var_1.forceteleportorigin ) && var_2.origin[2] < 1000 )
{
var_1 thread teleport_player_to_top_deck( var_2 );
wait 0.1;
}
}
wait 0.25;
}
}
teleport_drill_if_below_top_deck()
{
level endon( "stop_drill_teleport_script" );
var_0 = ( 432, 1487, 1033 );
var_1 = ( 0, 0, 0 );
for (;;)
{
if ( isdefined( level.drill ) && level.drill.origin[2] < 1000 )
{
level.drill.origin = var_0;
level.drill.angles = var_1;
level.drill maps\mp\alien\_drill::set_drill_icon();
}
wait 1.0;
}
}
cargo_activate_crane_hint()
{
level endon( "crane_activated" );
iprintlnbold( "Activate the crane to progress" );
wait 8;
iprintlnbold( "Activate the crane to progress" );
wait 12;
iprintlnbold( "Activate the crane to progress" );
wait 18;
iprintlnbold( "Activate the crane to progress" );
}
crane_walls_hide( var_0 )
{
var_1 = getentarray( "cargo_container_walls", "targetname" );
foreach ( var_3 in var_1 )
var_3 notsolid();
if ( maps\mp\alien\_utility::is_true( var_0 ) )
{
foreach ( var_3 in var_1 )
var_3 delete();
}
}
crane_walls_show_and_link( var_0 )
{
var_1 = getentarray( "cargo_container_walls", "targetname" );
foreach ( var_3 in var_1 )
{
var_3 solid();
var_3 linkto( var_0 );
}
}
wait_for_players_to_enter_container( var_0 )
{
level.all_players_on_container = 0;
var_1 = "waypoint_alien_blocker";
var_2 = 14;
var_3 = 14;
var_4 = 0.75;
var_5 = self.origin + ( 0, 0, 4 );
var_6 = maps\mp\alien\_hud::make_waypoint( var_1, var_2, var_3, var_4, var_5 );
for (;;)
{
self waittill( "trigger", var_7 );
if ( !maps\mp\alien\_utility::is_true( var_7.on_container ) )
var_7.on_container = 1;
var_8 = 1;
var_9 = 0;
foreach ( var_7 in level.players )
{
if ( !var_7 isonground() || !maps\mp\alien\_utility::is_true( var_7.on_container ) || !var_7 istouching( self ) || distance( var_7.origin, var_0.origin ) > 125 )
var_8 = 0;
if ( isdefined( level.drill_carrier ) && level.drill_carrier == var_7 )
var_9 = 1;
}
if ( !( var_9 || isdefined( level.drill_linked_to_container ) ) )
var_8 = 0;
if ( var_8 )
{
level.all_players_on_container = 1;
var_6 destroy();
return;
}
}
}
cargo_get_in_crane_hint()
{
level endon( "crane_started" );
iprintlnbold( "Everyone get in the lift container!" );
wait 8;
iprintlnbold( "Everyone get in the lift container!" );
wait 12;
iprintlnbold( "Everyone get in the lift container!" );
wait 18;
iprintlnbold( "Everyone get in the lift container!" );
}
beacon_cargo_drill_onconnect()
{
level endon( "game_ended" );
for (;;)
{
level waittill( "connected", var_0 );
var_0 thread check_for_player_near_bot_with_drill();
}
}
beacon_play_sound_on_moving_tag( var_0, var_1, var_2 )
{
if ( isdefined( var_1 ) )
{
var_3 = spawn( "script_model", ( 0, 0, 0 ) );
var_3 linkto( self, var_1, ( 0, 0, 0 ), ( 0, 0, 0 ) );
wait 0.1;
var_3 playsoundonmovingent( var_0 );
if ( isdefined( var_2 ) )
wait( var_2 );
else
wait 10;
var_3 delete();
}
}
player_death_trigger_monitor()
{
var_0 = getentarray( "player_drill_death", "targetname" );
foreach ( var_2 in var_0 )
var_2 thread _death_trigger_monitor();
}
_death_trigger_monitor()
{
for (;;)
{
self waittill( "trigger", var_0 );
if ( isplayer( var_0 ) )
{
var_1 = self;
var_2 = self;
var_3 = 100;
var_4 = "MOD_TRIGGER_HURT";
var_5 = undefined;
var_6 = self.origin;
var_7 = "none";
var_8 = undefined;
var_0 maps\mp\alien\_death::onplayerkilled( var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8 );
logprint( "!!PLAYER WAS KILLED BY TRIGGER!! : " + var_0.name + " killed by death trigger at: " + var_0.origin + "\\n" );
}
}
}
beacon_intro_music()
{
for (;;)
{
level waittill( "connected", var_0 );
var_0 thread beacon_intro_music_play();
}
}
beacon_intro_music_play()
{
self waittill( "spawned_player" );
foreach ( var_1 in level.players )
{
wait 0.01;
if ( common_scripts\utility::flag_exist( "boat_ride_over" ) && !common_scripts\utility::flag( "boat_ride_over" ) )
{
var_1 stoplocalsound( "us_spawn_music" );
if ( !level.splitscreen || level.splitscreen && !isdefined( level.playedbeaconstartingmusic ) )
{
if ( !self issplitscreenplayer() || self issplitscreenplayerprimary() )
level thread maps\mp\alien\_music_and_dialog::play_alien_music( "mus_alien_dlc2_beacon_intro" );
if ( level.splitscreen )
level.playedbeaconstartingmusic = 1;
}
continue;
}
wait 0.1;
var_1 stoplocalsound( "us_spawn_music" );
wait 0.1;
var_1 stoplocalsound( "us_spawn_music" );
wait 0.1;
var_1 stoplocalsound( "us_spawn_music" );
wait 0.1;
var_1 stoplocalsound( "us_spawn_music" );
wait 0.1;
var_1 stoplocalsound( "us_spawn_music" );
}
}
mp_alien_beacon_drill_attack_override()
{
if ( level.current_hive_name == "cargo_area_main" )
{
cargo_blocker_door_setup();
self.synch_attack_setup = undefined;
return;
}
if ( level.current_hive_name != "cargo_area_mini_3" )
return;
var_0 = [];
var_0["brute"][0] = maps\mp\alien\_utility::set_attack_sync_direction( ( -1, 0, 0 ), "alien_drill_attack_drill_R_enter", "alien_drill_attack_drill_R_loop", "alien_drill_attack_drill_R_exit", "attack_drill_right", "attack_drill" );
var_0["brute"][1] = maps\mp\alien\_utility::set_attack_sync_direction( ( 1, 0, 0 ), "alien_drill_attack_drill_L_enter", "alien_drill_attack_drill_L_loop", "alien_drill_attack_drill_L_exit", "attack_drill_left", "attack_drill" );
var_0["goon"][0] = maps\mp\alien\_utility::set_attack_sync_direction( ( -1, 0, 0 ), "alien_goon_drill_attack_drill_R_enter", "alien_goon_drill_attack_drill_R_loop", "alien_goon_drill_attack_drill_R_exit", "attack_drill_right", "attack_drill" );
var_0["goon"][1] = maps\mp\alien\_utility::set_attack_sync_direction( ( 1, 0, 0 ), "alien_goon_drill_attack_drill_L_enter", "alien_goon_drill_attack_drill_L_loop", "alien_goon_drill_attack_drill_L_exit", "attack_drill_left", "attack_drill" );
var_1[0] = "offline";
var_1[1] = "death";
var_1[2] = "drill_complete";
var_1[3] = "destroyed";
maps\mp\alien\_utility::set_synch_attack_setup( var_0, 1, var_1, undefined, maps\mp\alien\_drill::drill_synch_attack_play_anim, maps\mp\alien\_drill::drill_synch_attack_play_anim, maps\mp\alien\_drill::drill_synch_attack_exit, "drill" );
}
beacon_weapon_stats_update_name( var_0 )
{
switch ( var_0 )
{
case "iw6_altalienlsat_mp":
var_0 = "iw6_alienDLC12_mp";
break;
case "iw6_altaliensvu_mp":
var_0 = "iw6_alienDLC13_mp";
break;
case "iw6_altalienarx_mp":
var_0 = "iw6_alienDLC14_mp";
break;
case "iw6_altalienmaverick_mp":
var_0 = "iw6_alienDLC15_mp";
break;
default:
break;
}
return var_0;
}
beacon_specific_vo_callouts( var_0 )
{
var_0["beacon_vo"] = ::playbeaconvo;
var_0["start_containment"] = ::beacon_start_containment_vo;
var_0["warn_gas"] = ::beacon_warn_gas_vo;
var_0["warn_pipes"] = ::beacon_warn_pipes;
var_0["kraken_intro"] = ::playkrakenintrovo;
var_0["kraken_vo"] = ::playkrakenvo;
var_0["tentacle_gone"] = ::playkrakenvo;
var_0["warn_kraken_attack"] = ::playkrakenattackvo;
return var_0;
}
playbeaconvo( var_0 )
{
if ( !isdefined( var_0 ) )
return;
var_1 = maps\mp\alien\_utility::get_array_of_valid_players();
if ( var_1.size < 1 )
return;
var_2 = var_1[0];
if ( !soundexists( var_2.vo_prefix + var_0 ) )
return;
var_1 = maps\mp\alien\_utility::get_array_of_valid_players();
if ( var_1.size < 1 )
return;
var_2 = var_1[0];
var_3 = var_2.vo_prefix + var_0;
var_2 maps\mp\alien\_music_and_dialog_dlc::play_vo_on_player( var_3 );
}
listen_for_emerge_phase()
{
var_0 = 1;
for (;;)
{
level waittill( "kraken_emerge_phase" );
if ( var_0 == 0 )
{
level notify( "dlc_vo_notify", "kraken_vo", "kraken_port" );
var_0 = 1;
}
else
{
level notify( "dlc_vo_notify", "kraken_vo", "kraken_starboard" );
var_0 = 0;
}
wait 5;
level notify( "dlc_vo_notify", "kraken_vo", "use_turrets" );
}
}
beacon_start_containment_vo()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
return;
var_0 = maps\mp\alien\_utility::get_array_of_valid_players();
if ( var_0.size < 1 )
return;
var_1 = var_0[0];
var_0 = maps\mp\alien\_utility::get_array_of_valid_players();
if ( var_0.size < 1 )
return;
var_1 = var_0[0];
var_2 = var_1.vo_prefix + "start_containment";
var_1 maps\mp\alien\_music_and_dialog_dlc::play_vo_on_player( var_2 );
}
beacon_warn_gas_vo()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
return;
var_0 = maps\mp\alien\_utility::get_array_of_valid_players();
if ( var_0.size < 1 )
return;
var_1 = var_0[0];
if ( isdefined( level.warn_gas ) && randomint( 100 ) > 10 )
return;
level.warn_gas = 1;
var_2 = var_1.vo_prefix + "warn_gas";
var_1 maps\mp\alien\_music_and_dialog_dlc::play_vo_on_player( var_2 );
}
beacon_warn_pipes( var_0 )
{
if ( !isdefined( var_0 ) )
return;
var_1 = maps\mp\alien\_utility::get_array_of_valid_players();
if ( var_1.size < 1 )
return;
var_2 = var_1[0];
if ( !soundexists( var_2.vo_prefix + var_0 ) )
return;
var_3 = 15000;
var_4 = gettime();
if ( !isdefined( level.next_pipe_vo_time ) )
level.next_pipe_vo_time = var_4 + randomintrange( var_3, var_3 + 2000 );
else if ( var_4 < level.next_pipe_vo_time )
return;
level.next_pipe_vo_time = var_4 + randomintrange( var_3, var_3 + 1500 );
var_5 = var_2.vo_prefix + var_0;
var_2 maps\mp\alien\_music_and_dialog_dlc::play_vo_on_player( var_5 );
}
playkrakenintrovo()
{
wait 1.0;
var_0 = maps\mp\alien\_utility::get_array_of_valid_players();
if ( var_0.size < 1 )
return;
var_1 = var_0[0];
var_2 = var_1.vo_prefix + "kraken_intro";
var_1 maps\mp\alien\_music_and_dialog_dlc::play_vo_on_player( var_2 );
}
playkrakenvo( var_0 )
{
if ( !isdefined( var_0 ) )
return;
var_1 = maps\mp\alien\_utility::get_array_of_valid_players();
if ( var_1.size < 1 )
return;
var_2 = var_1[0];
if ( !soundexists( var_2.vo_prefix + var_0 ) )
return;
if ( var_0 == "warn_metal" )
wait 5.0;
if ( var_0 == "kraken_weak" )
wait 5.0;
if ( var_0 == "warn_emp" )
wait 5.0;
var_3 = var_2.vo_prefix + var_0;
var_2 maps\mp\alien\_music_and_dialog_dlc::play_vo_on_player( var_3, "high", 10 );
}
playkrakenattackvo()
{
var_0 = "warn_kraken_attack";
if ( !isdefined( var_0 ) )
return;
var_1 = maps\mp\alien\_utility::get_array_of_valid_players();
if ( var_1.size < 1 )
return;
var_2 = var_1[0];
if ( !soundexists( var_2.vo_prefix + var_0 ) )
return;
var_3 = 20000;
var_4 = gettime();
if ( !isdefined( level.next_kraken_attack_vo_time ) )
level.next_kraken_attack_vo_time = var_4 + randomintrange( var_3, var_3 + 2000 );
else if ( var_4 < level.next_kraken_attack_vo_time )
return;
level.next_kraken_attack_vo_time = var_4 + randomintrange( var_3, var_3 + 1500 );
var_5 = var_2.vo_prefix + var_0;
var_2 maps\mp\alien\_music_and_dialog_dlc::play_vo_on_player( var_5, "high", 5 );
}
beacon_customprematchperiod()
{
if ( !maps\mp\alien\_utility::is_true( level.introscreen_done ) )
level.prematchperiod = 10;
while ( level.players.size == 0 )
wait 0.05;
foreach ( var_1 in level.players )
{
var_1 maps\mp\_utility::freezecontrolswrapper( 1 );
var_1 disableweapons();
}
if ( !maps\mp\alien\_intro_sequence::intro_sequence_enabled() )
{
wait 7;
level notify( "introscreen_over" );
level.introscreen_done = 1;
level notify( "spawn_intro_drill" );
for ( var_3 = 0; var_3 < level.players.size; var_3++ )
{
level.players[var_3] maps\mp\_utility::freezecontrolswrapper( 0 );
level.players[var_3] enableweapons();
if ( !isdefined( level.players[var_3].pers["team"] ) )
continue;
}
return;
}
if ( level.prematchperiod > 0 )
{
var_1 = level wait_for_first_player_connect();
if ( maps\mp\alien\_intro_sequence::intro_sequence_enabled() )
level thread maps\mp\alien\_intro_sequence::play_intro_sequence( var_1 );
level thread show_introscreen_text();
if ( isdefined( level.intro_dialogue_func ) )
level thread [[ level.intro_dialogue_func ]]();
wait( level.prematchperiod - 3 );
if ( isdefined( level.postintroscreenfunc ) )
[[ level.postintroscreenfunc ]]();
level notify( "introscreen_over" );
level.introscreen_done = 1;
}
else
{
wait 1;
level notify( "introscreen_over" );
}
for ( var_3 = 0; var_3 < level.players.size; var_3++ )
{
level.players[var_3] maps\mp\_utility::freezecontrolswrapper( 0 );
level.players[var_3] enableweapons();
if ( !isdefined( level.players[var_3].pers["team"] ) )
continue;
}
}
wait_for_first_player_connect()
{
var_0 = undefined;
if ( level.players.size == 0 )
level waittill( "connected", var_0 );
else
var_0 = level.players[0];
return var_0;
}
show_introscreen_text()
{
wait 2;
var_0 = maps\mp\alien\_hud::introscreen_corner_line( level.introscreen_line_1, 1 );
wait 1;
var_1 = maps\mp\alien\_hud::introscreen_corner_line( level.introscreen_line_2, 2 );
wait 1;
var_2 = maps\mp\alien\_hud::introscreen_corner_line( level.introscreen_line_3, 3 );
wait 1;
var_3 = maps\mp\alien\_hud::introscreen_corner_line( level.introscreen_line_4, 4 );
level waittill( "introscreen_over" );
var_0 fadeovertime( 3 );
var_1 fadeovertime( 3 );
var_2 fadeovertime( 3 );
var_3 fadeovertime( 3 );
wait 3.1;
var_0.alpha = 0;
var_1.alpha = 0;
var_2.alpha = 0;
var_3.alpha = 0;
var_0 destroy();
var_1 destroy();
var_2 destroy();
var_3 destroy();
}
beacon_non_player_drill_plant_check()
{
return level.non_player_drill_plant;
}
beacon_get_alien_model( var_0 )
{
var_1 = level.alien_types[var_0].attributes["model"];
if ( isdefined( level.kraken ) )
var_1 = var_1 + "_lowlod";
return var_1;
}
beacon_cangive_weapon_handler_func( var_0, var_1, var_2, var_3 )
{
var_4 = 0;
if ( self hasweapon( "aliensoflam_mp" ) )
var_4++;
if ( self.hasriotshield || self.hasriotshieldequipped )
var_4++;
var_5 = self getcurrentweapon();
var_6 = 0;
if ( issubstr( var_5, "aliendlc11" ) )
var_6 = 1;
if ( var_6 && var_0.size + 1 > var_3 + var_4 )
return 0;
return 1;
}
beacon_give_weapon_handler_func( var_0 )
{
var_1 = self getcurrentweapon();
if ( issubstr( var_1, "aliendlc11" ) )
return 0;
return undefined;
}
beacon_hive_icon_override_func()
{
if ( isdefined( self.target ) && self.target == "cargo_area_main" )
return 1;
return 0;
}
disable_lab_doors()
{
foreach ( var_1 in level.stronghold_hive_locs )
{
if ( isdefined( var_1.target ) && ( var_1.target == "door_hive_10" || var_1.target == "door_hive_9" ) )
{
if ( isdefined( var_1.icon ) )
var_1.icon destroy();
var_1 makeunusable();
var_1 sethintstring( "" );
var_1 notify( "stop_listening" );
var_1.target = undefined;
level.stronghold_hive_locs = common_scripts\utility::array_remove( level.stronghold_hive_locs, var_1 );
}
}
}
beacon_randombox_item_check( var_0 )
{
if ( !isdefined( var_0 ) )
return;
switch ( var_0 )
{
case "trophy":
case "flare":
self takeweapon( "iw6_aliendlc21_mp" );
return;
}
}
setintermissioncam()
{
var_0 = getent( "mp_global_intermission", "classname" );
var_0.origin = ( -316.775, 6480.45, 1528 );
var_0.angles = ( 10, 90, 0 );
}
fix_beacon_jump_exploit()
{
wait 3.0;
var_0 = getent( "player128x128x128", "targetname" );
if ( !isdefined( var_0 ) )
return;
var_1 = var_0.origin;
var_0.origin = ( -224, -608, 118 );
while ( level.current_hive_name != "door_hive_1_post" && level.current_hive_name != "well_deck_2_post" )
wait 0.25;
var_0.origin = var_1;
}
fix_cargo_leftovers()
{
level endon( "game_ended" );
level waittill( "beacon_starting_topdeck" );
var_0 = maps\mp\alien\_spawnlogic::get_alive_agents();
foreach ( var_2 in var_0 )
{
if ( isdefined( var_2 ) && isalive( var_2 ) && var_2.origin[2] < 925 )
{
var_2.scene = 1;
var_2 suicide();
}
wait 0.1;
}
var_4 = [];
foreach ( var_6 in level.players )
{
if ( isdefined( var_6.crafted_items["alien_crafting_hypno_trap"] ) )
{
var_7 = var_6.crafted_items["alien_crafting_hypno_trap"];
if ( !isarray( var_7 ) )
var_4 = common_scripts\utility::add_to_array( var_4, var_7 );
else
var_4 = common_scripts\utility::array_combine( var_4, var_7 );
}
if ( isdefined( var_6.crafted_items["alien_crafting_tesla_trap"] ) )
{
var_7 = var_6.crafted_items["alien_crafting_tesla_trap"];
if ( !isarray( var_7 ) )
var_4 = common_scripts\utility::add_to_array( var_4, var_7 );
else
var_4 = common_scripts\utility::array_combine( var_4, var_7 );
}
}
var_4 = common_scripts\utility::array_combine( var_4, level.turrets );
var_4 = common_scripts\utility::array_combine( var_4, level.placedims );
var_4 = common_scripts\utility::array_combine( var_4, level.balldrones );
foreach ( var_10 in var_4 )
{
if ( isdefined( var_10 ) && isdefined( var_10.origin ) && !isdefined( var_10.carriedby ) && var_10.origin[2] < 925 )
var_10 notify( "death" );
}
}
should_enable_crafting()
{
if ( maps\mp\alien\_utility::is_chaos_mode() )
return 0;
return 1;
}
beacon_adjust_spawnlocation( var_0 )
{
if ( isdefined( var_0.script_noteworthy ) )
{
switch ( var_0.script_noteworthy )
{
case "cargo_air_vent_down_01":
if ( var_0.origin == ( 661, 2965, 501 ) )
{
var_0.origin = ( 661, 2826, 501 );
var_0.angles = ( 0, 90, 0 );
var_0.script_noteworthy = "cargo_air_vent_down_02";
}
break;
case "cargo_crawl_out_grate_1":
var_0.origin = ( -943, 1719, 77.5 );
var_0.angles = ( 0, 179.1, 0 );
break;
case "cargo_crawl_out_grate_3":
var_0.origin = ( 704, 1720, 76 );
var_0.angles = ( 0, 179.1, 0 );
break;
}
}
return var_0;
}
spawn_weapon_in_boss_area()
{
var_0 = common_scripts\utility::getstructarray( "item", "targetname" );
foreach ( var_2 in var_0 )
{
if ( !isdefined( var_2.script_noteworthy ) )
continue;
if ( var_2.script_noteworthy == "weapon_iw6_alienhoneybadger_mp" )
{
var_2.script_noteworthy = "weapon_iw6_altalienarx_mp";
var_2.origin = ( -775.2, 882.1, 6 );
var_2.angles = ( 311.4, 90, 0 );
continue;
}
if ( var_2.script_noteworthy == "weapon_iw6_alieng28_mp" )
{
var_2.script_noteworthy = "weapon_iw6_alienvks_mp_alienvksscope";
var_2.origin = ( -194.3, 822.9, 156.5 );
continue;
}
if ( var_2.script_noteworthy == "weapon_iw6_altaliensvu_mp" )
{
var_2.script_noteworthy = "weapon_iw6_alienvks_mp_alienvksscope";
var_2.origin = ( 512.6, 782, 157 );
}
}
var_4 = spawnstruct();
var_4.script_noteworthy = "weapon_iw6_altalienarx_mp";
var_4.targetname = "item";
var_4.origin = ( -326, 8536, 1170 );
var_4.angles = ( 311.4, 90, 0 );
var_4.radius = 200;
return var_4;
}