// 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; }