// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool main() { level.additional_boss_weapon = ::spawn_weapon_in_boss_area; level.extinction_episode = 1; level.introscreen_line_1 = &"MP_ALIEN_ARMORY_INTRO_LINE_1"; level.introscreen_line_2 = &"MP_ALIEN_ARMORY_INTRO_LINE_2"; level.introscreen_line_3 = &"MP_ALIEN_ARMORY_INTRO_LINE_3"; level.introscreen_line_4 = &"MP_ALIEN_ARMORY_INTRO_LINE_4"; level.hintprecachefunc = ::armory_hint_precache; maps\mp\alien\_utility::alien_mode_enable( "kill_resource", "wave", "airdrop", "lurker", "collectible", "loot", "pillage", "challenge", "outline", "scenes" ); var_0 = [ "checkpoint", "compound", "facility", "loadingdock", "ending" ]; maps\mp\alien\_utility::alien_area_init( var_0 ); level.ricochetdamagemax = 10; 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; level.include_default_challenges = 1; level.challenge_registration_func = maps\mp\alien\mp_alien_armory_challenges::register_armory_challenges; level.challenge_scalar_func = maps\mp\alien\mp_alien_armory_challenges::armory_challenge_scalar_func; level.custom_death_challenge_func = maps\mp\alien\mp_alien_armory_challenges::armory_death_challenge_func; level.custom_damage_challenge_func = maps\mp\alien\mp_alien_armory_challenges::armory_damage_challenge_func; level.include_default_achievements = 1; level.include_default_unlocks = 1; level.escape_cycle = 19; level.initial_spawn_loc_override_func = ::player_initial_spawn_loc_override; level.custom_pillageinitfunc = ::mp_alien_armory_pillage_init; maps\mp\alien\_pillage_locker::locker_pillage_functions_init(); level.level_locker_weapon_pickup_string_func = ::armory_locker_weapon_pickup_string_func; level.tryusedronehive = ::mp_alien_armory_try_use_drone_hive; level.achievement_registration_func = maps\mp\alien\_achievement_dlc::register_achievements_dlc; level.update_alien_kill_achievements_func = maps\mp\alien\_achievement_dlc::update_alien_kill_achievements_dlc; level.update_achievement_damage_weapon_func = maps\mp\alien\_achievement_dlc::update_achievement_damage_weapon_dlc; level.custom_alien_death_func = maps\mp\alien\_death::general_alien_custom_death; level.custom_cangive_weapon_func = ::armory_cangive_weapon_handler_func; level.custom_give_weapon_func = ::armory_give_weapon_handler_func; level.generic_electric_trap_check = ::is_generic_electric_trap_func; level.ammoincompatibleweaponslist = [ "iw6_aliendlc11_mp" ]; level.spider_boss_easter_egg_active = 0; level thread manage_direction_triggers(); game["thermal_vision"] = "mp_alien_town_thermal"; visionsetthermal( game["thermal_vision"] ); game["thermal_vision_trinity"] = "mp_alien_thermal_trinity"; 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_armory_onspawnplayer_func; level.custom_alien_scale_alien_damage_func = ::mp_alien_armory_scale_alien_damage_func; level.enter_area_func = ::armory_enter_area_func; level.leave_area_func = ::armory_leave_area_func; level.intel_table = "mp/alien/alien_armory_intel.csv"; set_spawn_table(); level.alien_collectibles_table = "mp/alien/collectibles_armory.csv"; level.default_alien_definition = "mp/alien/armory_alien_definition.csv"; level.spawn_node_info_table = "mp/alien/armory_spawn_node_info.csv"; level.alien_challenge_table = "mp/alien/mp_alien_armory_challenges.csv"; level.alien_character_cac_table = "mp/alien/alien_cac_presets.csv"; level.container_spawn_table = "mp/alien/armory_container_spawn.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_armory_precache::main(); maps\createart\mp_alien_armory_art::main(); maps\mp\mp_alien_armory_fx::main(); maps\mp\agents\alien\alien_spider\_alien_spider::precacheanims(); maps\mp\alien\_armory_weapon::init(); maps\mp\_load::main(); setdvar( "sm_sunShadowScale", "0.5" ); var_1 = [ "tutorial_hive_01" ]; maps\mp\alien\_utility::add_hive_dependencies( "checkpoint_hive_01", var_1 ); maps\mp\alien\_utility::add_hive_dependencies( "checkpoint_hive_02", var_1 ); maps\mp\alien\_utility::add_hive_dependencies( "checkpoint_hive_03", var_1 ); maps\mp\alien\_utility::add_hive_dependencies( "checkpoint_hive_04", var_1 ); maps\mp\alien\_utility::add_hive_dependencies( "checkpoint_hive_05", var_1 ); var_2 = [ "compound_hive_01", "compound_hive_02", "compound_hive_03", "compound_hive_04", "compound_hive_06", "compound_hive_07", "compound_hive_08" ]; maps\mp\alien\_utility::add_hive_dependencies( "compound_hive_05", var_2 ); var_3 = [ "compound_hive_01", "compound_hive_02", "compound_hive_03", "compound_hive_04", "compound_hive_05", "compound_hive_07", "compound_hive_08" ]; maps\mp\alien\_utility::add_hive_dependencies( "compound_hive_06", var_3 ); var_4 = [ "facility_hive_01", "facility_hive_02", "facility_hive_03", "facility_hive_04", "facility_hive_05", "facility_hive_06" ]; maps\mp\alien\_utility::add_hive_dependencies( "facility_hive_07", var_4 ); maps\mp\_compass::setupminimap( "compass_map_mp_alien_armory" ); game["thermal_vision_trinity"] = "mp_alien_thermal_trinity"; var_5 = 20000; var_6 = 40000; var_7 = 70000; var_8 = 240000; maps\mp\alien\_persistence::register_lb_escape_rank( [ 0, var_5, var_6, var_7, var_8 ] ); game["attackers"] = "allies"; game["defenders"] = "axis"; game["allies_outfit"] = "woodland"; var_9 = []; var_10 = [ 5, 10 ]; maps\mp\gametypes\aliens::setup_cycle_end_area_list( var_10 ); maps\mp\gametypes\aliens::setup_blocker_hives( var_9 ); maps\mp\gametypes\aliens::setup_last_hive( "bomblocation_14" ); level.should_play_next_hive_vo_func = ::should_play_next_hive_vo_func; register_encounter(); if ( !maps\mp\alien\_utility::is_chaos_mode() ) init_container_spawn(); maps\mp\alien\_alien_class_skills_main::main(); maps\mp\alien\_pillage_intel::create_intel_spots(); level thread easter_egg_conduit(); level thread maps\mp\mp_alien_armory_fx::fx_snow( "light_snow" ); level thread maps\mp\mp_alien_armory_fx::fx_snow_watcher(); level thread debris_fx(); spider_hide_all_debris(); level.end_game_scoreboard_wait_time = 15; disconnect_snow_paths(); move_clip_brush_checkpoint_lakeside(); move_clip_brush_checkpoint_lakeside_boxes(); common_scripts\utility::flag_init( "start_spider_encounter" ); level thread maps\mp\alien\_lasedstrike_alien::init(); level thread maps\mp\alien\_switchblade_alien::init(); } 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( ::area1_first_hive_setup, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_checkpoint, maps\mp\alien\_hive::beat_regular_hive ); maps\mp\gametypes\aliens::register_encounter( maps\mp\alien\_hive::regular_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_checkpoint, maps\mp\alien\_hive::beat_regular_hive ); maps\mp\gametypes\aliens::register_encounter( ::area1_third_hive_setup, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_checkpoint, maps\mp\alien\_hive::beat_regular_hive ); maps\mp\gametypes\aliens::register_encounter( ::area1_final_hive_setup, 1, undefined, 1, maps\mp\alien\_hive::skip_hive, ::jump_to_checkpoint, maps\mp\alien\_hive::beat_regular_hive ); maps\mp\gametypes\aliens::register_encounter( ::first_spider_fight, 1, undefined, undefined, ::skip_first_spider_fight, ::jump_to_checkpoint ); maps\mp\gametypes\aliens::register_encounter( maps\mp\alien\_hive::regular_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_compound, maps\mp\alien\_hive::beat_regular_hive ); maps\mp\gametypes\aliens::register_encounter( maps\mp\alien\_hive::regular_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_compound, maps\mp\alien\_hive::beat_regular_hive ); maps\mp\gametypes\aliens::register_encounter( ::area2_2nd_hive_setup, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_compound, maps\mp\alien\_hive::beat_regular_hive ); maps\mp\gametypes\aliens::register_encounter( maps\mp\alien\_hive::regular_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_compound_final, maps\mp\alien\_hive::beat_regular_hive ); maps\mp\gametypes\aliens::register_encounter( ::second_spider_fight, undefined, undefined, 1, ::skip_second_spider_fight, ::jump_to_compound ); maps\mp\gametypes\aliens::register_encounter( ::facility_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_facility, maps\mp\alien\_hive::beat_regular_hive ); maps\mp\gametypes\aliens::register_encounter( ::facility_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_facility, maps\mp\alien\_hive::beat_regular_hive ); maps\mp\gametypes\aliens::register_encounter( ::facility_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_facility, maps\mp\alien\_hive::beat_regular_hive ); maps\mp\gametypes\aliens::register_encounter( ::facility_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_facility, maps\mp\alien\_hive::beat_regular_hive ); maps\mp\gametypes\aliens::register_encounter( ::last_facility_hive, 1, undefined, 1, maps\mp\alien\_hive::skip_hive, ::jump_to_facility, maps\mp\alien\_hive::beat_regular_hive ); maps\mp\gametypes\aliens::register_encounter( ::third_spider_fight, 1, undefined, undefined, ::skip_third_spider_fight, ::jump_to_loadingdock ); } encounter_init() { maps\mp\alien\_drill::init_drill(); maps\mp\alien\_hive::init_hives(); maps\mp\agents\alien\alien_spider\_alien_spider::initspider(); maps\mp\agents\alien\_alien_human::inithuman( "alien_human_armory_animclass" ); maps\mp\alien\_gamescore::init_eog_score_components( [ "hive" ] ); maps\mp\alien\_gamescore_armory::init_armory_eog_score_components( [ "spider", "relics" ] ); maps\mp\alien\_gamescore::init_encounter_score_components( [ "challenge", "drill", "team", "personal" ] ); maps\mp\alien\_gamescore_armory::init_armory_encounter_score_components( [ "spider_challenge", "spider_team", "spider_personal", "first_spider" ] ); setup_special_guns(); } setup_special_guns() { var_0 = getentarray( "anti_alien_gun", "targetname" ); common_scripts\utility::array_thread( var_0, maps\mp\alien\_armory_weapon::give_special_gun ); } armory_hint_precache() { var_0 = []; var_0["ALIEN_PICKUPS_ARMORY_PICKUP_MAUL"] = &"ALIEN_PICKUPS_ARMORY_PICKUP_MAUL"; var_0["ALIEN_PICKUPS_ARMORY_PICKUP_PROPANE_TANK"] = &"ALIEN_PICKUPS_ARMORY_PICKUP_PROPANE_TANK"; var_0["ALIEN_PICKUPS_ARMORY_PICKUP_VKS"] = &"ALIEN_PICKUPS_ARMORY_PICKUP_VKS"; var_0["ALIEN_PICKUPS_ARMORY_PICKUP_KRISS"] = &"ALIEN_PICKUPS_ARMORY_PICKUP_KRISS"; var_0["ALIEN_PICKUPS_ARMORY_PICKUP_L115A3"] = &"ALIEN_PICKUPS_ARMORY_PICKUP_L115A3"; var_0["ALIEN_PICKUPS_ARMORY_PICKUP_KAC"] = &"ALIEN_PICKUPS_ARMORY_PICKUP_KAC"; var_0["ALIEN_PICKUPS_ARMORY_PICKUP_MTS255"] = &"ALIEN_PICKUPS_ARMORY_PICKUP_MTS255"; var_0["ALIEN_PICKUPS_ARMORY_PICKUP_VEPR"] = &"ALIEN_PICKUPS_ARMORY_PICKUP_VEPR"; var_0["ALIEN_PICKUPS_ARMORY_PICKUP_G28"] = &"ALIEN_PICKUPS_ARMORY_PICKUP_G28"; var_0["ALIEN_PICKUPS_ARMORY_PICKUP_LSAT"] = &"ALIEN_PICKUPS_ARMORY_PICKUP_LSAT"; var_0["ALIEN_PICKUPS_ARMORY_PICKUP_ARX_160"] = &"ALIEN_PICKUPS_ARMORY_PICKUP_ARX_160"; var_0["ALIEN_PICKUPS_ARMORY_PICKUP_SVU"] = &"ALIEN_PICKUPS_ARMORY_PICKUP_SVU"; var_0["ALIEN_PICKUPS_ARMORY_PICKUP_MAVERICK"] = &"ALIEN_PICKUPS_ARMORY_PICKUP_MAVERICK"; var_0["ALIEN_PICKUPS_ARMORY_PICKUP_KASTET"] = &"ALIEN_PICKUPS_ARMORY_PICKUP_KASTET"; return var_0; } spider_initial_intro() { self scragentsetorientmode( "face angle abs", self.angles ); thread play_spider_intro_music(); thread spider_play_snow_debris_anim(); thread maps\mp\mp_alien_armory_vignettes::first_spider_fence(); maps\mp\agents\_scriptedagents::playanimnatrateuntilnotetrack( "spawn", 0, 1.0, "spawn", "end" ); self scragentsetgoalpos( self.origin ); self scragentsetgoalradius( 4096 ); self waittill( "goal_reached" ); } spider_hide_all_debris() { var_0 = getscriptablearray( "snow_debris", "targetname" ); foreach ( var_2 in var_0 ) var_2 setscriptablepartstate( 0, 1 ); } debris_fx() { if ( maps\mp\_utility::is_gen4() ) level._effect["spider_reveal_dense_particles"] = loadfx( "vfx/spider_reveal_particles" ); } spider_play_snow_debris_anim() { wait 2.66; var_0 = getent( "snow_debris_static", "targetname" ); var_1 = getscriptablearray( "snow_debris", "targetname" ); foreach ( var_3 in var_1 ) var_3 setscriptablepartstate( 0, 0 ); var_0 delete(); if ( maps\mp\_utility::is_gen4() ) { var_5 = common_scripts\utility::getstruct( "spider_blocker_01", "targetname" ); playfx( level._effect["spider_reveal_dense_particles"], var_5.origin, ( 1, 0, 0 ), ( 0, 0, 1 ) ); } wait 0.2; common_scripts\utility::exploder( 62 ); wait 0.3; common_scripts\utility::exploder( 61 ); wait 0.3; common_scripts\utility::exploder( 62 ); wait 0.2; common_scripts\utility::exploder( 63 ); wait 0.5; common_scripts\utility::exploder( 61 ); wait 0.2; common_scripts\utility::exploder( 63 ); wait 0.5; common_scripts\utility::exploder( 62 ); wait 0.5; common_scripts\utility::exploder( 61 ); wait 4; common_scripts\utility::exploder( 65 ); wait 0.3; common_scripts\utility::exploder( 64 ); var_6 = ( -3112, -5074, 674 ); earthquake( 0.6, 1, var_6, 1600 ); playrumbleonposition( "grenade_rumble", var_6 ); } play_spider_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" ); 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_dlc1_spider" ); } } play_spider_intro_loop() { self endon( "death" ); self endon( "end_spider_intro_loop" ); for (;;) maps\mp\agents\_scriptedagents::playanimnatrateuntilnotetrack( "spawn", 1, 1.0, "spawn", "end" ); } monitor_spider_intro_damage() { self endon( "death" ); self endon( "end_spider_intro_loop" ); self waittill( "damage" ); self notify( "end_spider_intro_loop" ); } monitor_spider_intro_proximity() { self endon( "death" ); self endon( "end_spider_intro_loop" ); var_0 = 1000000; for (;;) { foreach ( var_2 in level.players ) { if ( distance2dsquared( var_2.origin, self.origin ) < var_0 ) { self notify( "end_spider_intro_loop" ); break; } } wait 0.05; } } test_meteoroid() { wait 10; thread maps\mp\alien\_spawnlogic::spawn_alien_meteoroid( "minion" ); wait 2; thread maps\mp\alien\_spawnlogic::spawn_alien_meteoroid( "minion" ); wait 10; thread maps\mp\alien\_spawnlogic::spawn_alien_meteoroid( "minion" ); } area1_first_hive_setup() { level maps\mp\mp_alien_armory_vignettes::main(); maps\mp\alien\_hive::regular_hive(); thread maps\mp\mp_alien_armory_vignettes::godfather_area_1_first(); } area1_third_hive_setup() { maps\mp\alien\_hive::regular_hive(); thread maps\mp\mp_alien_armory_vignettes::godfather_area_1_midway(); } area1_final_hive_setup() { maps\mp\alien\_hive::regular_hive(); thread maps\mp\mp_alien_armory_vignettes::area_1_final_hive(); } test_human() { wait 10.0; var_0 = maps\mp\agents\alien\_alien_human::alienhumanspawn( ( -2115, -7073, 661 ), ( 0, 0, 0 ), "mp_body_us_rangers_assault_a_urban", "head_mp_head_a" ); } human_notetracks( var_0, var_1, var_2, var_3 ) { } setup_first_spider() { level endon( "first_spider_fight_skipped" ); var_0 = common_scripts\utility::getstruct( "spider_blocker_01", "targetname" ); var_0.retreatstate = "retreat"; var_0.retreatindex = 0; level.spider = spawn_spider( var_0.origin, var_0.angles ); level.spider spider_initial_intro(); level.spider.retreatstruct = var_0; level.spider link_spider_collision(); level thread spider_start_cycle( 1 ); level.spider thread maps\mp\agents\alien\alien_spider\_alien_spider::alienspiderrunstage( 1 ); activate_first_spider_fight_challenge(); } spider_start_cycle( var_0 ) { var_1 = "stage_" + var_0; var_2 = level.alien_types[level.spider.alien_type].attributes[var_1]["cycle_delay"]; var_3 = "spider_fight_" + var_0 + "_complete"; if ( var_2 > 0.0 ) var_4 = common_scripts\utility::waittill_notify_or_timeout_return( var_3, var_2 ); else var_4 = "no_delay"; if ( isdefined( var_4 ) ) { maps\mp\alien\_spawn_director::start_cycle( level.cycle_count ); level waittill( var_3 ); maps\mp\alien\_spawn_director::end_cycle(); } level.cycle_count++; if ( var_0 == 1 ) connect_snow_paths(); } link_spider_collision() { var_0 = getent( "spider_collision_00", "targetname" ); var_0.originalorigin = var_0.origin; var_0.originalangles = var_0.angles; var_0.origin = self.origin; var_0.angles = self.angles; self.collision_brush = var_0; var_0 linkto( self ); } unlink_spider_collision() { if ( isdefined( self.collision_brush ) ) { self.collision_brush unlink(); self.collision_brush.origin = self.collision_brush.originalorigin; self.collision_brush.angles = self.collision_brush.originalangles; self.collision_brush = undefined; } } disconnect_snow_paths() { var_0 = getent( "spider_mound_clip", "targetname" ); var_0 disconnectpaths(); } connect_snow_paths() { var_0 = getent( "spider_mound_clip", "targetname" ); var_0 hide(); var_0 connectpaths(); var_0 delete(); } first_spider_fight() { var_0 = ( -3191, -5031, 609 ); level.encounter_name = "first_spider_fight"; wait_for_player_near_spider(); var_1 = gettime(); maps\mp\alien\_gamescore::reset_encounter_performance(); maps\mp\mp_alien_armory_fx::fx_snow( "heavy_snow_no_fog" ); maps\mp\mp_alien_armory_fx::fx_set_spider_fog_1(); setup_first_spider(); level.spider waittill( "spider_stage_end" ); level notify( "spider_battle_end" ); wait 0.1; thread maps\mp\mp_alien_armory_vignettes::spider_exit_a_props(); level.spider unlink_spider_collision(); var_2 = gettime() - var_1; maps\mp\alien\_gamescore::update_team_encounter_performance( "first_spider", "spider_battle_time", var_2 ); maps\mp\alien\_gamescore_armory::calculate_and_show_first_spider_score(); wait 0.05; var_3 = getentarray( "fence_blocker_01_clip", "targetname" ); foreach ( var_5 in var_3 ) var_5 delete(); wait 6; level thread egg_cleanup(); level.encounter_name = undefined; level notify( "spider_fight_1_complete" ); maps\mp\mp_alien_armory_fx::fx_snow( "medium_snow" ); clearfog( 3 ); level thread maps\mp\alien\_drill::teleport_drill( var_0 ); thread maps\mp\mp_alien_armory_vignettes::post_first_boss_vo(); maps\mp\alien\_achievement_dlc::update_boss_achievements( "compound" ); give_reward_box_post_first_spider(); if ( maps\mp\alien\_utility::isplayingsolo() && !issplitscreen() ) maps\mp\alien\_laststand::give_laststand( level.players[0], 1 ); foreach ( var_8 in level.players ) var_8 maps\mp\alien\_persistence::try_award_bonus_pool_token(); } egg_cleanup() { wait 3; var_0 = getentarray( "script_model", "classname" ); if ( !isdefined( var_0 ) || var_0.size < 1 ) return; foreach ( var_2 in var_0 ) { if ( !isdefined( var_2 ) ) continue; if ( isdefined( var_2.model ) && var_2.model == "alien_spider_egg" ) { playfx( level._effect["egg_explosion"], var_2.origin ); wait 0.1; var_2 delete(); } } } wait_for_player_near_spider() { var_0 = "waypoint_alien_blocker"; var_1 = 14; var_2 = 14; var_3 = 0.75; var_4 = ( -3198, -4902, 648 ); var_5 = 60; var_6 = 256; 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 thread watch_trigger_by_player(); var_9 common_scripts\utility::waittill_any_timeout( var_5, "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" ); } activate_first_spider_fight_challenge() { var_0 = "kill_spider"; if ( !maps\mp\alien\_utility::isplayingsolo() ) { if ( randomint( 100 ) > 50 ) var_0 = "kill_eggs"; } maps\mp\alien\_challenge::activate_new_challenge( var_0 ); } give_reward_box_post_first_spider() { var_0 = ( -3175, -4687, 649 ); var_0 = common_scripts\utility::drop_to_ground( var_0, 32, -128 ); var_1 = "deployable_currency"; var_2 = 1; var_3 = level.players[randomint( level.players.size )]; var_3.team_currency_rank = var_2; var_4 = maps\mp\alien\_deployablebox::createboxforplayer( var_1, var_0, var_3 ); var_4.upgrade_rank = var_2; var_4.air_dropped = 1; wait 0.05; var_4 thread maps\mp\alien\_deployablebox::box_setactive( 1 ); } skip_first_spider_fight() { level notify( "first_spider_fight_skipped" ); if ( isdefined( level.spider ) ) level.spider suicide(); var_0 = getentarray( "fence_blocker_01", "targetname" ); foreach ( var_2 in var_0 ) var_2 delete(); level.cycle_count++; maps\mp\mp_alien_armory_fx::fx_snow( "medium_snow" ); } area2_2nd_hive_setup() { maps\mp\alien\_hive::regular_hive(); thread maps\mp\mp_alien_armory_vignettes::pre_second_boss_vo(); } second_spider_fight() { maps\mp\mp_alien_armory_fx::fx_snow( "medium_snow" ); maps\mp\mp_alien_armory_vignettes::spider_entrance_b(); maps\mp\mp_alien_armory_vignettes::spider_posture_b(); maps\mp\mp_alien_armory_vignettes::spider_exit_b(); maps\mp\mp_alien_armory_fx::fx_snow( "heavy_snow_no_fog" ); var_0 = getentarray( "blocker_02", "targetname" ); foreach ( var_2 in var_0 ) var_2 delete(); level notify( "factory_blocker_gone" ); maps\mp\alien\_achievement_dlc::update_boss_achievements( "facility" ); if ( maps\mp\alien\_utility::isplayingsolo() && !issplitscreen() ) maps\mp\alien\_laststand::give_laststand( level.players[0], 1 ); } third_spider_fight() { var_0 = gettime(); maps\mp\alien\_gamescore::reset_encounter_performance(); level.encounter_name = "final_spider_fight"; level notify( "final_spider_fight" ); var_1 = common_scripts\utility::getstruct( "spider_ending_01", "targetname" ); var_1.retreatstate = "retreat"; var_1.retreatindex = 3; maps\mp\mp_alien_armory_vignettes::spider_entrance_c(); level.spider.retreatstruct = var_1; level.spider.elevatedretreatstruct = common_scripts\utility::getstruct( "spider_ending_retreat_01", "targetname" ); level.spider link_spider_collision(); level thread spider_start_cycle( 2 ); var_2 = gettime(); maps\mp\mp_alien_armory_fx::fx_snow( "heavy_snow_no_fog" ); maps\mp\mp_alien_armory_fx::fx_set_spider_fog_3(); level thread force_all_players_in_final_area(); level.spider maps\mp\agents\alien\alien_spider\_alien_spider::alienspiderrunstage( 2 ); var_3 = gettime() - var_2; maps\mp\alien\_achievement_dlc::update_boss_achievements( "final", var_3 ); level.spider unlink_spider_collision(); level.spider suicide(); level.encounter_name = undefined; level notify( "spider_fight_2_complete" ); maps\mp\mp_alien_armory_fx::fx_snow( "heavy_snow" ); clearfog( 3 ); update_lb_aliensession_final_spider( var_0 ); 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 = gettime() - var_0; maps\mp\alien\_gamescore::update_team_encounter_performance( "final_spider", "spider_battle_time", var_4 ); maps\mp\alien\_gamescore_armory::calculate_final_spider_score(); var_5 = get_win_condition(); var_6 = maps\mp\alien\_hud::get_end_game_string_index( var_5 ); thread armory_victory_music(); level maps\mp\_utility::delaythread( 10, maps\mp\gametypes\aliens::alienendgame, "allies", var_6 ); thread maps\mp\mp_alien_armory_vignettes::post_final_boss_vo(); } 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"; } armory_victory_music() { wait 2; 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_dlc1_archer_exfil" ); 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_exfil" ); } } update_lb_aliensession_final_spider( var_0 ) { var_1 = gettime() - var_0; var_2 = get_lb_final_spider_rank( var_1 ); foreach ( var_4 in level.players ) { var_4 maps\mp\alien\_persistence::lb_player_update_stat( "escapedRank" + var_2, 1, 1 ); var_4 maps\mp\alien\_persistence::lb_player_update_stat( "hits", 1, 1 ); } } get_lb_final_spider_rank( var_0 ) { var_1 = 300000; var_2 = 600000; var_3 = 900000; 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; } spawn_second_spider_in_third_fight( var_0 ) { var_0 endon( "death" ); var_1 = 0.5; for (;;) { if ( var_0 maps\mp\agents\alien\alien_spider\_alien_spider::gethealthratio() < var_1 ) break; wait 0.05; } var_2 = common_scripts\utility::getstruct( "spider_ending_02", "targetname" ); var_2.retreatstate = "retreat"; var_2.retreatindex = 3; var_3 = spawn_spider( var_2.origin.spawn_struct.angles ); var_3 maps\mp\agents\alien\alien_spider\_alien_spider::alienspiderrunstage( 3 ); var_3.retreatstruct = var_2; var_3 suicide(); } spawn_spider( var_0, var_1 ) { if ( isdefined( var_1 ) ) var_2 = var_1; else if ( isdefined( level.players ) ) var_2 = vectortoangles( level.players[0].origin - var_0 ); else var_2 = ( 0, 0, 0 ); return maps\mp\agents\alien\alien_spider\_alien_spider::alienspiderspawn( var_0, var_2 ); } skip_second_spider_fight() { var_0 = getentarray( "blocker_02", "targetname" ); foreach ( var_2 in var_0 ) var_2 delete(); maps\mp\mp_alien_armory_fx::fx_snow( "heavy_snow_no_fog" ); } skip_third_spider_fight() { } armory_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 ); } armory_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 ); } facility_hive() { maps\mp\alien\_hive::regular_hive(); if ( level.current_hive_name == "facility_hive_01_post" ) thread maps\mp\mp_alien_armory_vignettes::cross_lab_scene(); } last_facility_hive() { var_0 = "queen_break_wall"; var_1 = 4.5; var_2 = 5.0; maps\mp\alien\_hive::regular_hive(); wait( randomfloatrange( 1.0, var_2 ) ); level notify( "queen_break_wall" ); level thread watch_spider_fight_trigger(); wait( var_1 ); thread maps\mp\mp_alien_armory_vignettes::queen_hole_marker(); } watch_spider_fight_trigger() { var_0 = getent( "archer_escape", "targetname" ); var_0 waittill( "trigger" ); common_scripts\utility::flag_set( "start_spider_encounter" ); } init_container_spawn() { maps\mp\alien\_container_spawn::init_container_spawn(); level.should_skip_area_activation_func = ::should_skip_area_activation; var_0 = []; var_0["container_spawn_2"] = [ "checkpoint_hive_02" ]; var_0["container_spawn_3"] = [ "checkpoint_hive_04" ]; var_0["container_spawn_4"] = [ "compound_hive_04" ]; var_0["container_spawn_5"] = [ "compound_hive_08" ]; var_0["container_spawn_6"] = [ "compound_hive_03" ]; level thread maps\mp\alien\_container_spawn::container_spawn_hive_monitor( var_0 ); } should_skip_area_activation( var_0 ) { var_1 = [ "container_spawn_2", "container_spawn_3", "container_spawn_4", "container_spawn_5", "container_spawn_6" ]; return common_scripts\utility::array_contains( var_1, var_0 ); } mp_alien_armory_try_use_drone_hive( var_0, var_1, var_2, var_3, var_4 ) { maps\mp\alien\_switchblade_alien::tryusedronehive( var_0, var_1, var_2, var_3, var_4 ); } jump_to_checkpoint() { } jump_to_compound() { } jump_to_compound_final() { } jump_to_facility() { } jump_to_loadingdock() { } mp_alien_armory_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.soflam_model = "weapon_soflam"; 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_money = 12; level.pillageinfo.easy_clip = 19; level.pillageinfo.easy_explosive = 15; level.pillageinfo.easy_soflam = 5; level.pillageinfo.easy_specialammo = 7; level.pillageinfo.easy_leash = 5; level.pillageinfo.easy_locker_key = 2; level.pillageinfo.easy_intel = 5; level.pillageinfo.medium_attachment = 30; level.pillageinfo.medium_explosive = 15; level.pillageinfo.medium_money = 10; level.pillageinfo.medium_clip = 10; level.pillageinfo.medium_specialammo = 10; level.pillageinfo.medium_leash = 5; level.pillageinfo.medium_soflam = 5; level.pillageinfo.medium_trophy = 5; level.pillageinfo.medium_locker_key = 5; level.pillageinfo.medium_intel = 5; level.pillageinfo.hard_attachment = 30; level.pillageinfo.hard_explosive = 14; level.pillageinfo.hard_leash = 10; level.pillageinfo.hard_maxammo = 10; level.pillageinfo.hard_specialammo = 11; level.pillageinfo.hard_money = 5; level.pillageinfo.hard_soflam = 5; level.pillageinfo.hard_trophy = 5; level.pillageinfo.hard_locker_key = 5; level.pillageinfo.hard_intel = 5; level.custom_build_pillageitem_array_func = ::armory_build_pillageitem_array_func; relocate_bad_pillage_spots(); } relocate_bad_pillage_spots() { var_0 = common_scripts\utility::getstructarray( "pillage_compound_3", "targetname" ); foreach ( var_2 in var_0 ) { if ( var_2.origin == ( -1324.8, -3134.5, 687.9 ) ) { var_2.origin = ( -1241, -3234, 674 ); var_2.angles = ( 1, 0, 0 ); } } } armory_build_pillageitem_array_func( var_0 ) { level thread maps\mp\alien\_pillage_intel::build_intel_pillageitem_arrays( var_0 ); } mp_alien_armory_onspawnplayer_func() { thread maps\mp\alien\_armory_weapon::special_gun_watcher(); 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\mp_alien_armory_vignettes::gate_check(); thread maps\mp\alien\_achievement::eggallfoundforpack( 0 ); if ( !isdefined( level.setskillsflag ) ) { level.setskillsflag = 1; common_scripts\utility::flag_set( "give_player_abilities" ); } thread maps\mp\alien\_alien_class_skills_main::assign_skills(); } mp_alien_armory_scale_alien_damage_func( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9 ) { if ( is_spider_beam_weapon( var_5 ) ) var_2 = var_2 * 15; return var_2; } is_spider_beam_weapon( var_0 ) { return isdefined( var_0 ) && var_0 == "spider_beam_mp"; } easter_egg_conduit() { level endon( "game_ended" ); level endon( "easter_egg_conduit_complete" ); level endon( "easter_egg_conduit_failed" ); level.easter_egg_conduit_hits = 0; level.easter_egg_conduit_trigs = getentarray( "conduit_trig", "targetname" ); if ( !isdefined( level.easter_egg_conduit_trigs ) || level.easter_egg_conduit_trigs.size == 0 ) return; var_0 = level.easter_egg_conduit_trigs[randomint( level.easter_egg_conduit_trigs.size )]; level.easter_egg_conduit_trigs = sortbydistance( level.easter_egg_conduit_trigs, var_0.origin ); var_1 = []; for ( var_2 = 0; var_2 < 4; var_2++ ) { var_3 = level.easter_egg_conduit_trigs[var_2]; var_3.health = 1000000; var_3.id = var_2; var_3.hit = 0; var_3.window_active = 0; var_3.spark_structs = common_scripts\utility::getstructarray( var_3.target, "targetname" ); var_1[var_1.size] = var_3; } var_1 = common_scripts\utility::array_randomize( var_1 ); common_scripts\utility::array_thread( var_1, ::monitor_conduit_hit ); var_4 = 0; var_5 = 0; for (;;) { for ( var_2 = 0; var_2 < var_1.size; var_2++ ) { var_6 = var_1[var_2]; if ( !var_6.hit ) { playsoundatpos( var_6.origin, "emt_aln_arm_trans_sparks" ); foreach ( var_8 in var_6.spark_structs ) { playfx( loadfx( "vfx/moments/alien/easter_egg_conduit_spark" ), var_8.origin ); playfx( loadfx( "vfx/moments/alien/fence_lightning_shock" ), var_8.origin ); } var_6.window_active = 1; wait 6; var_6.window_active = 0; continue; } wait 6; } } } monitor_conduit_hit() { level endon( "easter_egg_conduit_complete" ); level endon( "easter_egg_conduit_failed" ); for (;;) { var_0 = spawn( "script_model", self.spark_structs[0].origin ); var_0 setmodel( "tag_origin" ); var_0.health = 1000000; var_0 endon( "death" ); var_0 setcandamage( 1 ); var_0 waittill( "damage", var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10 ); if ( isdefined( var_2 ) && isplayer( var_2 ) && isdefined( var_5 ) && var_5 == "MOD_EXPLOSIVE" && isdefined( var_9 ) && var_9 == 5 && !isdefined( var_10 ) ) { if ( self.window_active ) { if ( level.easter_egg_conduit_hits == 0 ) level thread monitor_fail_condition(); self.hit = 1; level.easter_egg_conduit_hits++; } else level notify( "easter_egg_conduit_failed" ); var_0 delete(); return; } self.health = self.health + var_1; } } monitor_fail_condition() { level endon( "easter_egg_conduit_complete" ); level endon( "easter_egg_conduit_failed" ); wait 24; wait 0.5; if ( level.easter_egg_conduit_hits < 4 ) level notify( "easter_egg_conduit_failed" ); else { level thread activate_easter_egg_conduit(); level notify( "easter_egg_conduit_complete" ); } } activate_easter_egg_conduit() { iprintln( &"ALIENS_PATCH_ZAP" ); level._effect["arcade_death"] = loadfx( "vfx/moments/alien/vfx_alien_arcade_death_dlc1" ); level.easter_egg_lodge_sign_active = 1; wait 300; level.easter_egg_lodge_sign_active = 0; } armory_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++; if ( var_1 == "iw6_aliendlc11_mp" && var_0.size + 1 > var_3 + var_4 ) return 0; return 1; } armory_give_weapon_handler_func( var_0 ) { if ( self getcurrentweapon() == "iw6_aliendlc11_mp" ) return 0; return undefined; } manage_direction_triggers() { level.current_direction_triggers = [ "ocean", "mountain", "tower", "security_gate", "compound", "helipad" ]; level waittill( "spider_fight_1_complete" ); level.current_direction_triggers = []; wait_for_scene_trig_over( "compound_scripted_spawn" ); level.current_direction_triggers = [ "rooftop", "helipad", "storage", "factory" ]; level waittill( "factory_blocker_gone" ); level.current_direction_triggers = []; wait_for_scene_trig_over( "facility_scripted_spawn" ); level.current_direction_triggers = [ "window" ]; level waittill( "factory_blocker_gone" ); level.current_direction_triggers = []; } wait_for_scene_trig_over( var_0 ) { var_1 = getentarray( "scene_trig", "targetname" ); foreach ( var_3 in var_1 ) { if ( isdefined( var_3.target ) && var_3.target == var_0 ) { var_3 waittill( "trigger" ); break; } } wait 25; } is_generic_electric_trap_func() { var_0 = [ "container_electric_node_01", "checkpoint_electric_trap_node_01b", "electric_trap_node_01", "catwalk_electric_trap", "electric_node_00b" ]; if ( isdefined( self.generator ) && isdefined( self.generator.target ) && common_scripts\utility::array_contains( var_0, self.generator.target ) ) return 1; return 0; } mp_alien_armory_intermission_func() { self endon( "disconnect" ); self notify( "spawned" ); self notify( "end_respawn" ); self stopshellshock(); self stoprumble( "damage_heavy" ); self.deathposition = undefined; maps\mp\_utility::freezecontrolswrapper( 1 ); self setclientdvar( "cg_everyoneHearsEveryone", 1 ); var_0 = self.pers["postGameChallenges"]; self playerhide(); maps\mp\_utility::clearkillcamstate(); self.friendlydamage = undefined; var_1 = select_best_intermission_point(); self spawn( var_1.origin, var_1.angles ); self setdepthoffield( 0, 128, 512, 4000, 6, 1.8 ); self.anchor = spawn( "script_model", self.origin ); self.anchor.angles = var_1.angles; self.anchor setmodel( "tag_origin" ); self cameralinkto( self.anchor, "tag_origin" ); common_scripts\utility::waitframe(); if ( !isdefined( var_1.target ) ) return; var_2 = common_scripts\utility::getstruct( var_1.target, "targetname" ); for (;;) { self.anchor moveto( var_2.origin, 25 ); self.anchor rotateto( var_2.angles, 25 ); wait 25; if ( !isdefined( var_2.target ) ) break; var_2 = common_scripts\utility::getstruct( var_2.target, "targetname" ); } } select_best_intermission_point() { var_0 = maps\mp\alien\_utility::get_current_area_name(); var_1 = common_scripts\utility::getstructarray( var_0 + "_intermission", "script_noteworthy" ); switch ( var_0 ) { case "loadingdock": return get_best_struct_facing_boss( var_1, level.spider ); } if ( isdefined( var_1 ) ) return common_scripts\utility::random( var_1 ); } get_best_struct_facing_boss( var_0, var_1 ) { var_2 = []; foreach ( var_4 in var_0 ) { if ( common_scripts\utility::within_fov( var_1.origin, var_1.angles, var_4.origin, cos( 35 ) ) ) var_2[var_2.size] = var_4; } if ( var_2.size < 1 ) return common_scripts\utility::random( var_0 ); return common_scripts\utility::random( var_2 ); } create_dropped_pillage_item( var_0, var_1, var_2, var_3, var_4 ) { var_5 = spawnstruct(); var_5.pillage_trigger = spawn( "script_model", self.origin ); var_5.pillage_trigger setmodel( var_1 ); var_5.pillage_trigger setcursorhint( "HINT_NOICON" ); if ( maps\mp\alien\_utility::alien_mode_has( "outline" ) ) maps\mp\alien\_outline_proto::add_to_outline_pillage_watch_list( var_5.pillage_trigger, 0 ); var_6 = spawnstruct(); var_6.type = var_0; if ( var_6.type == "explosive" ) { var_6.explosive_type = maps\mp\alien\_pillage::choose_random_explosive_type(); var_6.explosive_type = "aliensemtex_mp"; var_5.pillage_trigger setmodel( getweaponmodel( var_6.explosive_type ) ); } var_6.count = var_2; var_7 = var_6 get_string_for_hintstring(); var_8 = maps\mp\alien\_pillage::get_hintstring_for_item_pickup( var_7 ); var_5.pillage_trigger sethintstring( var_8 ); var_5.pillage_trigger makeusable(); var_5.pillageinfo = spawnstruct(); var_5.pillageinfo.type = var_0; if ( !isdefined( var_4 ) ) var_4 = 1; var_5.pillageinfo.ammo = var_4; if ( isdefined( var_3 ) ) var_5.pillageinfo.item = var_3; if ( var_6.type == "explosive" ) var_5.pillageinfo.item = var_6.explosive_type; var_9 = common_scripts\utility::drop_to_ground( var_5.pillage_trigger.origin ); var_5.pillage_trigger moveto( var_9 + ( 0, 0, 4 ), 0.75 ); var_5 thread maps\mp\alien\_pillage::pillage_spot_think(); var_5.enabled = 1; var_5.searched = 1; } get_string_for_hintstring() { var_0 = self.type; switch ( self.type ) { case "grenade": var_0 = "aliensemtex_mp"; break; case "explosive": var_0 = self.explosive_type; break; default: break; } return var_0; } armory_locker_weapon_pickup_string_func( var_0 ) { var_0 = "" + var_0; switch ( var_0 ) { case "weapon_kriss_v": return &"ALIEN_PICKUPS_ARMORY_LOCKER_KRISS"; case "weapon_vepr": return &"ALIEN_PICKUPS_ARMORY_LOCKER_VEPR"; case "weapon_maul": return &"ALIEN_PICKUPS_ARMORY_LOCKER_MAUL"; case "weapon_mts_255": return &"ALIEN_PICKUPS_ARMORY_LOCKER_MTS255"; case "weapon_vks": return &"ALIEN_PICKUPS_ARMORY_LOCKER_VKS"; case "weapon_l115a3": return &"ALIEN_PICKUPS_ARMORY_LOCKER_L115A3"; case "weapon_kac_chainsaw": return &"ALIEN_PICKUPS_ARMORY_LOCKER_KAC"; case "weapon_arx_160": return &"ALIEN_PICKUPS_ARMORY_LOCKER_ARX_160"; case "weapon_g28": return &"ALIEN_PICKUPS_ARMORY_LOCKER_G28"; case "weapon_lsat_iw6": return &"ALIEN_PICKUPS_ARMORY_LOCKER_LSAT"; case "weapon_dragunov_svu": return &"ALIEN_PICKUPS_ARMORY_LOCKER_SVU"; case "weapon_kastet": return &"ALIEN_PICKUPS_ARMORY_LOCKER_KASTET"; case "weapon_rm_22": return &"ALIEN_PICKUPS_ARMORY_LOCKER_MAVERICK"; } } should_play_next_hive_vo_func() { if ( !maps\mp\alien\_utility::isplayingsolo() && ( level.cycle_count == 3 || level.cycle_count == 7 || level.cycle_count == 8 || level.cycle_count == 10 ) ) return 1; return 0; } force_all_players_in_final_area() { var_0 = common_scripts\utility::getstructarray( "final_battle_player_teleport", "script_noteworthy" ); var_1 = []; foreach ( var_3 in level.players ) { if ( !var_3 should_teleport_player() ) continue; var_1[var_1.size] = var_3; var_3 thread do_teleport_messaging(); } if ( var_1.size < 1 ) return; level waittill( "teleport_players_to_final" ); for (;;) { var_5 = 0; foreach ( var_7, var_3 in var_1 ) { if ( !var_3 should_teleport_player() ) continue; if ( !var_3 maps\mp\alien\_utility::is_in_laststand() && !maps\mp\alien\_utility::is_true( var_3.isreviving ) || var_3.sessionstate == "spectator" ) { var_3 thread find_valid_spot_to_teleport( var_0 ); var_3.being_teleported = 1; continue; } var_5 = 1; } if ( !var_5 ) break; wait 0.05; } level thread teleport_dog_tags(); wait 3; var_8 = getent( "final_battle_player_check", "targetname" ); foreach ( var_3 in level.players ) { if ( isalive( var_3 ) && var_3 istouching( var_8 ) ) continue; var_3 thread find_valid_spot_to_teleport( var_0 ); } } teleport_dog_tags() { var_0 = common_scripts\utility::getstructarray( "final_battle_player_teleport", "script_noteworthy" ); var_1 = ( 0, 0, 30 ); foreach ( var_4, var_3 in level.players ) { if ( var_3.sessionstate == "spectator" ) { if ( isdefined( var_3.reviveent ) ) var_3.reviveent.origin = var_0[var_4].origin; if ( isdefined( var_3.reviveiconent ) ) var_3.reviveiconent.origin = var_0[var_4].origin + var_1; var_3.forceteleportorigin = var_0[var_4].origin; var_3.forceteleportangles = var_0[var_4].angles; } } } should_teleport_player() { var_0 = getent( "final_battle_player_check", "targetname" ); if ( isdefined( self.being_teleported ) ) return 0; if ( !isalive( self ) || self istouching( var_0 ) ) return 0; return 1; } find_valid_spot_to_teleport( var_0 ) { for (;;) { foreach ( var_2 in var_0 ) { if ( canspawn( var_2.origin ) && !positionwouldtelefrag( var_2.origin ) ) { thread teleport_player_to_final_area( var_2 ); return; } } wait 0.05; } } teleport_player_to_final_area( var_0 ) { self endon( "disconnect" ); thread teleport_black_screen(); wait 1; self cancelmantle(); self dontinterpolate(); self setorigin( var_0.origin ); self setplayerangles( var_0.angles ); self notify( "teleport_finished" ); } do_teleport_messaging() { self endon( "death" ); var_0 = getent( "final_battle_player_check", "targetname" ); self iprintlnbold( &"MP_ALIEN_ARMORY_TELEPORT_PLAYER" ); wait 1; for ( var_1 = 9; var_1 > 0; var_1-- ) { if ( self istouching( var_0 ) ) { wait 1; continue; } self iprintlnbold( var_1 ); wait 1; } level notify( "teleport_players_to_final" ); } teleport_black_screen() { self endon( "disconnect" ); 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; self waittill( "teleport_finished" ); self.teleport_overlay fadeovertime( 0.75 ); self.teleport_overlay.alpha = 0; wait 1; self.teleport_overlay destroy(); } 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_chaos_spawn_table() { if ( maps\mp\alien\_utility::isplayingsolo() ) { switch ( maps\mp\alien\_utility::get_chaos_area() ) { case "checkpoint": level.alien_cycle_table = "mp/alien/chaos_spawn_armory_checkpoint_sp.csv"; break; case "compound": level.alien_cycle_table = "mp/alien/chaos_spawn_armory_compound_sp.csv"; break; case "facility": level.alien_cycle_table = "mp/alien/chaos_spawn_armory_facility_sp.csv"; break; } } else { switch ( maps\mp\alien\_utility::get_chaos_area() ) { case "checkpoint": level.alien_cycle_table = "mp/alien/chaos_spawn_armory_checkpoint.csv"; break; case "compound": level.alien_cycle_table = "mp/alien/chaos_spawn_armory_compound.csv"; break; case "facility": level.alien_cycle_table = "mp/alien/chaos_spawn_armory_facility.csv"; break; } } } set_regular_extinction_spawn_table() { if ( maps\mp\alien\_utility::isplayingsolo() ) level.alien_cycle_table = "mp/alien/cycle_spawn_armory_sp.csv"; else level.alien_cycle_table = "mp/alien/cycle_spawn_armory.csv"; } chaos_init() { maps\mp\alien\_hive::init_hive_locs(); maps\mp\alien\_chaos::init(); register_egg_default_loc(); set_end_cam_position(); level thread armory_chaos_nondeterministic_entity_handler(); } armory_chaos_nondeterministic_entity_handler() { level endon( "game_ended" ); var_0 = 5; wait( var_0 ); open_intro_fence(); move_patchable_clip_to_compound(); delete_snow_mound(); maps\mp\mp_alien_armory_vignettes::spider_exit_a_props(); } delete_snow_mound() { var_0 = getentarray( "snow_debris_static", "targetname" ); foreach ( var_2 in var_0 ) { if ( isdefined( var_2 ) ) var_2 delete(); } var_4 = getentarray( "spider_mound_clip", "targetname" ); foreach ( var_2 in var_4 ) { if ( isdefined( var_2 ) ) { var_2 connectpaths(); var_2 delete(); } } } move_patchable_clip_to_compound() { move_player256x256x8(); move_player256x256x128(); move_player512x512x8(); move_clip512x512x8(); move_clip256x256x8(); move_clip256x256x128(); move_box_models(); } move_box_models() { var_0 = spawn( "script_model", ( -2665, -5071, 818 ) ); var_0 setmodel( "clk_crate48x64_snow" ); var_0.angles = ( 0, 270, 0 ); var_1 = spawn( "script_model", ( -2674, -5127, 818 ) ); var_1 setmodel( "clk_crate48x64_snow" ); var_1.angles = ( 0, 180, 0 ); } move_player256x256x8() { var_0 = getent( "player256x256x8", "targetname" ); var_1 = spawn( "script_model", ( -3440, -5001, 860 ) ); var_1.angles = ( 270, 0, 0 ); var_1 clonebrushmodeltoscriptmodel( var_0 ); } move_player256x256x128() { var_0 = getent( "player256x256x128", "targetname" ); var_1 = spawn( "script_model", ( -4084, -5168, 860 ) ); var_1.angles = ( 270, 270, 0 ); var_1 clonebrushmodeltoscriptmodel( var_0 ); } move_player512x512x8() { var_0 = getent( "player512x512x8", "targetname" ); var_1 = spawn( "script_model", ( -3700, -5048, 984 ) ); var_1.angles = ( 270, 270, 0 ); var_1 clonebrushmodeltoscriptmodel( var_0 ); } move_clip512x512x8() { var_0 = getent( "player512x512x8", "targetname" ); var_1 = spawn( "script_model", ( -2828, -5128, 1072 ) ); var_1.angles = ( 270, 180, 0 ); var_1 clonebrushmodeltoscriptmodel( var_0 ); } move_clip256x256x8() { var_0 = getent( "player256x256x8", "targetname" ); var_1 = spawn( "script_model", ( -2692, -5162, 938 ) ); var_1.angles = ( 270, 90, 0 ); var_1 clonebrushmodeltoscriptmodel( var_0 ); } move_clip256x256x128() { var_0 = getent( "clip256x256x128", "targetname" ); var_0.origin = ( -2570, -5172, 938 ); var_0.angles = ( 270, 0, 0 ); var_0 disconnectpaths(); } 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 "checkpoint": var_1.origin = ( -2000, -7020, 848 ); var_1.angles = ( 15, 110, -8 ); break; case "facility": var_1.origin = ( -2000, -7020, 848 ); var_1.angles = ( 15, 110, -8 ); break; } } player_initial_spawn_loc_override() { if ( maps\mp\alien\_utility::is_chaos_mode() ) { chaos_player_initial_spawn_loc_override(); return; } } chaos_player_initial_spawn_loc_override() { var_0 = []; switch ( maps\mp\alien\_utility::get_chaos_area() ) { case "compound": var_0 = [ ( -3249, -4639, 600 ), ( -3394, -4668, 620 ), ( -3027, -4599, 619 ), ( -2896, -4625, 634 ) ]; break; } self.forcespawnorigin = var_0[level.players.size]; self.forcespawnangles = ( 0, 90, 0 ); } register_egg_default_loc() { switch ( maps\mp\alien\_utility::get_chaos_area() ) { case "checkpoint": maps\mp\alien\_chaos::set_egg_default_loc( ( -2576, -6307, -36 ) ); break; case "compound": maps\mp\alien\_chaos::set_egg_default_loc( ( -2576, -6307, -36 ) ); break; case "facility": maps\mp\alien\_chaos::set_egg_default_loc( ( -2576, -6307, -36 ) ); break; } } open_intro_fence() { var_0 = getentarray( "intro_fence", "targetname" ); foreach ( var_2 in var_0 ) { if ( isdefined( var_2 ) ) var_2 delete(); } var_4 = getscriptablearray( "intro_fence_script", "targetname" ); var_4[0] setscriptablepartstate( 0, 3 ); } set_hardcore_extinction_spawn_table() { if ( maps\mp\alien\_utility::isplayingsolo() ) level.alien_cycle_table_hardcore = "mp/alien/cycle_spawn_armory_hardcore_sp.csv"; else level.alien_cycle_table_hardcore = "mp/alien/cycle_spawn_armory_hardcore.csv"; } move_clip_brush_checkpoint_lakeside() { var_0 = getent( "player512x512x8", "targetname" ); var_1 = spawn( "script_model", ( -1414, -6356, 650 ) ); var_1.angles = ( 270, 0, 0 ); var_1 clonebrushmodeltoscriptmodel( var_0 ); } move_clip_brush_checkpoint_lakeside_boxes() { var_0 = getent( "player128x128x8", "targetname" ); var_1 = spawn( "script_model", ( -1554, -5942, 892 ) ); var_1.angles = ( 270.5, 6.19994, -89.9999 ); var_1 clonebrushmodeltoscriptmodel( var_0 ); } spawn_weapon_in_boss_area() { var_0 = spawnstruct(); var_0.script_noteworthy = "weapon_iw6_aliendlc15_mp"; var_0.targetname = "item"; var_0.origin = ( -2948, 485, 692 ); var_0.angles = ( 60, 0, 0 ); var_0.radius = 200; return var_0; }