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

2433 lines
75 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
main()
{
level thread explodersasoneshot();
level.extinction_episode = 3;
level.intel_table = "mp/alien/alien_dlc3_intel.csv";
level.skip_radius_damage_on_puddles = 1;
level.generic_electric_trap_check = ::is_generic_electric_trap_func;
level.initial_spawn_loc_override_func = ::descent_player_initial_spawn_loc_override;
level.introscreen_line_1 = &"MP_ALIEN_DESCENT_INTRO_LINE_1";
level.introscreen_line_2 = &"MP_ALIEN_DESCENT_INTRO_LINE_2";
level.introscreen_line_3 = &"MP_ALIEN_DESCENT_INTRO_LINE_3";
level.introscreen_line_4 = &"MP_ALIEN_DESCENT_INTRO_LINE_4";
maps\mp\alien\_utility::alien_mode_enable( "kill_resource", "wave", "airdrop", "lurker", "collectible", "loot", "pillage", "challenge", "outline", "scenes" );
level thread maps\mp\alien\_crafting::crafting_onplayerconnect();
var_0 = [ "caverns_01", "caverns_02", "caverns_03", "caverns_04" ];
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;
setdvar( "r_reactiveMotionWindAmplitudeScale", 0.15 );
setomnvar( "alt_jump_height", 145.0 );
setdvar( "sm_sunShadowScale", "0.5" );
level.include_default_challenges = 1;
level.challenge_registration_func = maps\mp\alien\mp_alien_dlc3_challenges::register_dlc3_challenges;
level.challenge_scalar_func = maps\mp\alien\mp_alien_dlc3_challenges::dlc3_challenge_scalar_func;
level.custom_death_challenge_func = maps\mp\alien\mp_alien_dlc3_challenges::dlc3_death_challenge_func;
level.custom_damage_challenge_func = maps\mp\alien\mp_alien_dlc3_challenges::dlc3_damage_challenge_func;
level.include_default_achievements = 1;
level.include_default_unlocks = 1;
level.escape_cycle = 19;
level.custom_pillageinitfunc = ::mp_alien_descent_pillage_init;
maps\mp\alien\_pillage_locker::locker_pillage_functions_init();
level.level_locker_weapon_pickup_string_func = ::descent_locker_weapon_pickup_string_func;
level.pillage_locker_offset_override_func = ::dlc_3_offset_locker_trigger_model;
level.locker_ark_check_func = ::descent_locker_ark_check_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_descent_onspawnplayer_func;
level.level_specific_vo_callouts = ::descent_specific_vo_callouts;
level.dlc_get_non_agent_enemies = ::descent_get_non_agent_enemies;
maps\mp\gametypes\aliens::setup_last_hive( "bomblocation_14" );
set_spawn_table();
set_container_spawn_table();
set_alien_definition_table();
level.alien_collectibles_table = "mp/alien/collectibles_dlc3.csv";
level.spawn_node_info_table = "mp/alien/dlc3_spawn_node_info.csv";
level.alien_challenge_table = "mp/alien/mp_alien_dlc3_challenges.csv";
level.alien_character_cac_table = "mp/alien/alien_cac_presets.csv";
level.randombox_table = "mp/alien/beacon_deployable_randombox.csv";
if ( !maps\mp\alien\_utility::is_chaos_mode() )
maps\mp\alien\_container_spawn::init_container_spawn();
level.enter_area_func = ::descent_enter_area_func;
level.leave_area_func = ::descent_leave_area_func;
level.dlc_melee_override_func = ::descent_melee_override_func;
level.dlc_alien_init_override_func = ::descent_alien_init_override_func;
level.alien_attack_override_func = ::descent_alien_attack_override_func;
level.dlc_alien_death_override_func = ::descent_alien_death_override_func;
level.dlc_idle_anim_state_override_func = ::descent_alien_idle_anim_state_override_func;
level.dlc_alien_type_node_match_override_func = ::descent_alien_type_node_match_override_func;
level.dlc_alien_jump_override = ::descent_alien_jump_override;
level.dlc_can_do_pain_override_func = ::descent_can_do_pain_override_func;
level.dlc_alien_can_retreat_override_func = ::descent_alien_can_retreat_override_func;
level.dlc_alien_pain_anim_state_override_func = ::descent_alien_pain_anim_state_override_func;
level.dlc_alien_turn_in_place_anim_state_override_func = ::descent_alien_turn_in_place_anim_state_override_func;
level.dlc_alien_should_immediate_ragdoll_on_death_override_func = ::descent_alien_should_immediate_ragdoll_on_death_override_func;
level.dlc_alien_can_attack_drill_override_func = ::descent_alien_can_attack_drill_override_func;
register_encounter();
thread maps\mp\alien\_alien_class_skills_main::main();
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;
level.hintprecachefunc = ::descent_hint_precache;
maps\mp\mp_alien_dlc3_precache::main();
maps\createart\mp_alien_dlc3_art::main();
maps\mp\mp_alien_dlc3_fx::main();
maps\mp\alien\mp_alien_dlc3_ark::main();
maps\mp\alien\_alien_maaws::alien_maaws_init();
level thread maps\mp\alien\_alien_plant::spore_plant_init();
level.hypno_trap_func = maps\mp\alien\_crafting_traps::tryuseplaceable;
level.tesla_trap_func = maps\mp\alien\_crafting_traps::tryuseplaceable;
maps\mp\alien\_dlc3_weapon::init();
maps\mp\_load::main();
maps\mp\agents\alien\_alien_mammoth::mammoth_level_init();
maps\mp\agents\alien\_alien_gargoyle::gargoyle_level_init();
maps\mp\agents\alien\_alien_bomber::bomber_level_init();
maps\mp\_compass::setupminimap( "compass_map_mp_alien_descent" );
setdvar( "r_lightGridEnableTweaks", 1 );
setdvar( "r_lightGridIntensity", 1.33 );
game["attackers"] = "allies";
game["defenders"] = "axis";
game["allies_outfit"] = "urban";
game["axis_outfit"] = "woodland";
thread descent_intro_music();
level thread maps\mp\mp_alien_dlc3_escape::hide_escape_geo( "escape_blocker_1_forcefield" );
level thread maps\mp\mp_alien_dlc3_escape::hide_escape_geo( "escape_blocker_2_forcefield" );
level thread maps\mp\mp_alien_dlc3_escape::hide_escape_geo( "escape_blocker_3_forcefield" );
level.custom_alien_death_func = ::descent_alien_custom_death;
init_weapon_stat_array();
level.weapon_stats_override_name_func = ::descent_weapon_stats_override_func;
level.custom_cangive_weapon_func = ::dlc3_cangive_weapon_handler_func;
level.custom_give_weapon_func = ::dlc3_give_weapon_handler_func;
level.dig_fx["shrine"]["player"] = loadfx( "vfx/moments/mp_dig/vfx_kstr_loadedguy" );
level.dig_fx["shrine"]["screen"] = loadfx( "vfx/moments/mp_dig/vfx_kstr_loadedguy_scr" );
level thread hide_bridge_parts();
maps\mp\alien\_pillage_intel::create_intel_spots();
level thread mushroom_bounce_test();
level.achievement_registration_func = maps\mp\alien\_achievement_dlc3::register_achievements_dlc3;
level.update_alien_kill_achievements_func = maps\mp\alien\_achievement_dlc3::update_alien_kill_achievements_dlc3;
setup_ammo_incompatible_list();
level thread setup_dlc3_offhands();
level.blocker_01_drill_spot = ( -16, -2784, 1235.13 );
level.blocker_02_drill_spot = ( -3012.5, -475.5, 1383.5 );
level thread dlc3_egg();
level.cortex_fire_allowed = 1;
level thread adjust_endgame_camera();
disable_broken_nodes();
level thread adjust_weapon_position();
}
adjust_endgame_camera()
{
var_0 = getentarray( "mp_global_intermission", "classname" );
foreach ( var_2 in var_0 )
var_2.angles = ( 0, 91, 0 );
}
disable_broken_nodes()
{
var_0 = getent( "clip256x256x8", "targetname" );
var_0 moveto( ( -1759, 2166, 790 ), 0.05 );
var_0.angles = ( 0, 0, -46 );
var_0 waittill( "movedone" );
var_0 disconnectpaths();
var_1 = spawn( "script_model", ( -1750, 2162, 771.5 ) );
var_1 setmodel( "dct_alien_plant01_top" );
var_1.angles = ( 0, 0, -42 );
}
obelisk_emp_monitor()
{
level endon( "game_ended" );
wait 5;
for (;;)
{
obelisk_emp_equipment( level.turrets );
wait 0.1;
obelisk_emp_equipment( level.placedims );
wait 2;
}
}
obelisk_emp_equipment( var_0 )
{
var_1 = 2304;
level endon( "game_ended" );
var_2 = common_scripts\utility::array_combine( level.stronghold_hive_locs, level.scanned_obelisks );
foreach ( var_4 in var_2 )
{
if ( !isdefined( var_4 ) || !isdefined( var_4.target ) )
continue;
var_5 = undefined;
var_6 = getentarray( var_4.target, "targetname" );
foreach ( var_8 in var_6 )
{
if ( var_8.classname == "script_brushmodel" )
var_5 = var_8;
}
if ( !isdefined( var_5 ) )
continue;
foreach ( var_11 in var_0 )
{
if ( isdefined( var_11.carriedby ) )
continue;
if ( distance2dsquared( var_11.origin, var_5.origin ) < var_1 )
{
if ( var_11.origin[2] >= var_5.origin[2] && abs( var_11.origin[2] - var_5.origin[2] ) < 150 )
{
var_11 notify( "death" );
wait 1;
}
}
wait 0.05;
}
wait 0.05;
}
}
play_ambient_fx()
{
wait 5;
common_scripts\utility::exploder( 50 );
common_scripts\utility::exploder( 51 );
}
setup_dlc3_offhands()
{
while ( !isdefined( level.offhand_explosives ) )
wait 1;
level.offhand_explosives = common_scripts\utility::array_add( level.offhand_explosives, "iw6_aliendlc22_mp" );
level.offhand_explosives = common_scripts\utility::array_add( level.offhand_explosives, "iw6_aliendlc31_mp" );
level.offhand_explosives = common_scripts\utility::array_add( level.offhand_explosives, "iw6_aliendlc32_mp" );
level.offhand_explosives = common_scripts\utility::array_add( level.offhand_explosives, "iw6_aliendlc33_mp" );
level.offhand_secondaries = common_scripts\utility::array_add( level.offhand_secondaries, "iw6_aliendlc21_mp" );
}
setup_ammo_incompatible_list()
{
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";
}
player_on_obelisk_monitor()
{
if ( maps\mp\alien\_utility::is_chaos_mode() )
return;
wait 5;
self endon( "disconnect" );
level endon( "game_ended" );
var_0 = 2304;
for (;;)
{
var_1 = common_scripts\utility::array_combine( level.stronghold_hive_locs, level.scanned_obelisks );
foreach ( var_3 in var_1 )
{
if ( !isdefined( var_3 ) || !isdefined( var_3.target ) )
continue;
var_4 = undefined;
var_5 = getentarray( var_3.target, "targetname" );
foreach ( var_7 in var_5 )
{
if ( var_7.classname == "script_brushmodel" )
var_4 = var_7;
}
if ( !isdefined( var_4 ) )
continue;
if ( distance2dsquared( self.origin, var_4.origin ) < var_0 )
{
if ( self.origin[2] >= var_4.origin[2] && abs( self.origin[2] - var_4.origin[2] ) < 150 )
{
playsoundatpos( self.origin, "alien_fence_shock" );
playfx( level._effect["obelisk_shock"], self.origin );
var_9 = self getvelocity();
self setvelocity( ( var_9[0] + 210, var_9[1] + -210, var_9[2] + 50 ) );
self dodamage( 5, var_4.origin, var_4, var_4, "MOD_UNKNOWN" );
wait 1;
}
}
wait 0.05;
}
wait 0.05;
}
}
chaos_player_on_obelisk_monitor()
{
wait 5;
self endon( "disconnect" );
level endon( "game_ended" );
var_0 = getentarray( "area_03_hive_01", "targetname" );
var_1 = getentarray( "area_03_hive_02", "targetname" );
var_2 = 2304;
for (;;)
{
var_3 = common_scripts\utility::array_combine( var_0, var_1 );
foreach ( var_5 in level.players )
{
if ( maps\mp\alien\_laststand::player_in_laststand( var_5 ) )
continue;
foreach ( var_7 in var_3 )
{
var_8 = undefined;
if ( var_7.classname == "script_brushmodel" )
var_8 = var_7;
if ( !isdefined( var_8 ) )
continue;
if ( distance2dsquared( var_5.origin, var_8.origin ) < var_2 )
{
if ( var_5.origin[2] >= var_8.origin[2] && abs( var_5.origin[2] - var_8.origin[2] ) < 150 )
{
playsoundatpos( var_5.origin, "alien_fence_shock" );
playfx( level._effect["obelisk_shock"], var_5.origin );
var_9 = var_5 getvelocity();
var_5 setvelocity( ( var_9[0] + 210, var_9[1] + -210, var_9[2] + 50 ) );
var_5 dodamage( 5, var_8.origin, var_8, var_8, "MOD_UNKNOWN" );
wait 1;
}
}
wait 0.05;
}
wait 0.05;
}
wait 0.05;
}
}
mushroom_bounce_test()
{
var_0 = getentarray( "bounce_trig", "targetname" );
common_scripts\utility::array_thread( var_0, ::shroom_bounce_monitor );
}
shroom_bounce_monitor()
{
for (;;)
{
self waittill( "trigger", var_0 );
if ( isplayer( var_0 ) )
var_0 thread shroom_bounce();
}
}
shroom_bounce()
{
if ( maps\mp\alien\_utility::is_true( self.isbouncing ) )
{
if ( maps\mp\alien\_utility::is_true( maps\mp\alien\_utility::is_in_laststand() ) )
{
var_0 = self getvelocity();
self setvelocity( ( var_0[0] + randomintrange( 120, 150 ), var_0[1] + randomintrange( 120, 150 ), randomintrange( 200, 400 ) ) );
}
return;
}
self.isbouncing = 1;
var_0 = self getvelocity();
if ( maps\mp\alien\_utility::is_true( maps\mp\alien\_utility::is_in_laststand() ) )
self setvelocity( ( var_0[0] + randomintrange( 120, 150 ), var_0[1] + randomintrange( 120, 150 ), randomintrange( 200, 400 ) ) );
else
{
self setvelocity( ( var_0[0] + randomintrange( -160, 160 ), var_0[1] + randomintrange( -160, 160 ), randomintrange( 700, 900 ) ) );
self playlocalsound( "plr_bounce" );
}
thread unset_shroom_bounce();
}
unset_shroom_bounce()
{
self endon( "disconnect" );
wait 1;
self.isbouncing = 0;
}
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( maps\mp\_obelisk::obelisk, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_area1_1st_obelisk, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( maps\mp\_obelisk::obelisk, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_area1_2nd_obelisk, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( maps\mp\_obelisk::obelisk, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_area1_3rd_obelisk, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( maps\mp\_obelisk::obelisk, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_area1_4th_obelisk, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( maps\mp\_obelisk::obelisk, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_area1_5th_obelisk, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( ::gate_blocker_01, 1, undefined, 1, maps\mp\alien\_hive::skip_hive, ::jump_to_gate_blocker_01, ::beat_gate_blocker_01 );
maps\mp\gametypes\aliens::register_encounter( maps\mp\_obelisk::obelisk, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_area2_1st_obelisk, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( maps\mp\_obelisk::obelisk, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_area2_2nd_obelisk, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( maps\mp\_obelisk::obelisk, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_area2_3rd_obelisk, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( maps\mp\_obelisk::obelisk, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_area2_4th_obelisk, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( maps\mp\_obelisk::obelisk, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_area2_5th_obelisk, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( ::gate_blocker_02, 1, undefined, 1, maps\mp\alien\_hive::skip_hive, ::jump_to_gate_blocker_02, ::beat_gate_blocker_02 );
maps\mp\gametypes\aliens::register_encounter( ::bridge_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_bridge_1st_obelisk, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( ::bridge_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_bridge_2nd_obelisk, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( ::bridge_hive, 1, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jump_to_bridge_3rd_obelisk, maps\mp\alien\_hive::beat_regular_hive );
maps\mp\gametypes\aliens::register_encounter( maps\mp\mp_alien_dlc3_escape::escape_global_logic, 0, undefined, undefined, maps\mp\alien\_hive::skip_hive, ::jumpto_escape_blocker_01, ::beat_ark_interior );
}
blank_script()
{
}
mp_alien_descent_onspawnplayer_func()
{
thread maps\mp\alien\_music_and_dialog_dlc::dlc_vo_init_on_player_spawn();
thread maps\mp\alien\_cortex::monitor_cortex_fired();
thread maps\mp\alien\_dlc3_weapon::dlc3_weapon_watcher();
thread maps\mp\alien\_pillage_intel::intel_on_player_connect();
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();
thread maps\mp\alien\_achievement::eggallfoundforpack( 2 );
if ( maps\mp\alien\_utility::is_chaos_mode() )
return;
if ( common_scripts\utility::flag( "everyone_in_ark" ) && !common_scripts\utility::flag( "ark_console_cycle_over" ) && !isdefined( self.reviveent ) )
level thread maps\mp\alien\mp_alien_dlc3_ark::teleport_players_not_in_ark();
}
descent_get_non_agent_enemies()
{
var_0 = [];
if ( isdefined( level.alive_plants ) )
{
foreach ( var_2 in level.alive_plants )
var_0 = common_scripts\utility::array_add( var_0, var_2.coll_model );
return var_0;
}
return [];
}
monitorsprintslide()
{
self endon( "disconnect" );
for (;;)
{
var_0 = common_scripts\utility::waittill_any_return( "sprint_slide_begin", "sprint_slide_end", "death" );
if ( !isalive( self ) )
{
self.issliding = undefined;
self.isslidinggraceperiod = gettime() - 1;
continue;
}
if ( var_0 == "sprint_slide_end" )
{
self.issliding = undefined;
self.isslidinggraceperiod = gettime() + 1000;
continue;
}
if ( var_0 == "sprint_slide_begin" )
self.issliding = 1;
}
}
playerissprintsliding()
{
return isdefined( self.issliding ) || isdefined( self.isslidinggraceperiod ) && gettime() <= self.isslidinggraceperiod;
}
playersprintslidrecently()
{
return isdefined( self.issliding ) || isdefined( self.isslidinggraceperiod ) && gettime() <= self.isslidinggraceperiod + 1000;
}
jump_to_gate_blocker_01()
{
}
jump_to_gate_blocker_02()
{
}
set_obelisks_as_scanned( var_0 )
{
}
descent_locker_weapon_pickup_string_func( var_0 )
{
var_0 = "" + var_0;
switch ( var_0 )
{
case "weapon_vks":
return &"ALIEN_PICKUPS_DESCENT_LOCKER_VKS";
case "weapon_usr":
return &"ALIEN_PICKUPS_DESCENT_LOCKER_USR";
case "weapon_remington_r5rgp":
return &"ALIEN_PICKUPS_DESCENT_LOCKER_R5RGP";
case "weapon_rm_22":
return &"ALIEN_PICKUPS_DESCENT_LOCKER_MAVERICK";
case "weapon_evopro":
return &"ALIEN_PICKUPS_DESCENT_LOCKER_RIPPER";
case "weapon_k7":
return &"ALIEN_PICKUPS_DESCENT_LOCKER_K7";
case "weapon_uts_15":
return &"ALIEN_PICKUPS_DESCENT_LOCKER_UTS";
case "weapon_maul":
return &"ALIEN_PICKUPS_DESCENT_LOCKER_MAUL";
case "weapon_mk14_ebr_iw6":
return &"ALIEN_PICKUPS_DESCENT_LOCKER_MK14";
case "weapon_imbel_ia2":
return &"ALIEN_PICKUPS_DESCENT_LOCKER_IMBEL";
case "weapon_kac_chainsaw":
return &"ALIEN_PICKUPS_DESCENT_LOCKER_KAC";
case "weapon_ameli":
return &"ALIEN_PICKUPS_DESCENT_LOCKER_AMELI";
}
}
mp_alien_descent_pillage_init()
{
level.pillageinfo = spawnstruct();
level.pillageinfo.default_use_time = 1000;
level.pillageinfo.money_stack = "pb_money_stack_01";
level.pillageinfo.attachment_model = "has_spotter_scope";
level.pillageinfo.alienattachment_model = "weapon_alien_muzzlebreak";
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_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_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_trophy = 5;
level.pillageinfo.hard_locker_key = 5;
level.pillageinfo.hard_intel = 5;
level.attachment_found_func = ::remove_alienmuzzlebrake;
level.recipe_setup_func = ::descent_recipe_setup_func;
level thread init_attachment_and_crafting_locations();
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 = ::dlc3_get_hintstring_for_pillaged_item_func;
level.get_hintstring_for_item_pickup_func = ::dlc3_get_hintstring_for_item_pickup_func;
level.custom_build_pillageitem_array_func = ::dlc3_build_pillageitem_array_func;
level.random_crafting_list = [ "venomx", "nucleicbattery", "bluebiolum", "biolum", "orangebiolum", "fuse", "tnt", "pipe", "resin", "biolum", "cellbattery" ];
relocate_bad_pillage_spots();
}
relocate_bad_pillage_spots()
{
if ( maps\mp\alien\_utility::is_chaos_mode() )
return;
var_0 = 0;
foreach ( var_2 in level.struct )
{
if ( var_2.origin == ( -1748.6, 2168.2, 777.4 ) )
{
var_2.origin = ( -1705, 2050, 907 );
var_2.angles = ( 335.34, 274.43, 0.83 );
}
else if ( var_2.origin == ( -2066.6, -1783.8, 1390.6 ) )
var_2.origin = ( -2066.6, -1783.8, 1385 );
else if ( var_2.origin == ( 615, -3964, 1002.2 ) )
{
var_2.origin = ( 613.59, -3949.01, 1004.7 );
var_2.angles = ( 7.93, 357.6, 27.8 );
}
var_0++;
if ( var_0 % 10 == 0 )
wait 0.1;
}
}
adjust_weapon_position()
{
if ( maps\mp\alien\_utility::is_chaos_mode() )
return;
var_0 = 0;
foreach ( var_2 in level.struct )
{
if ( var_2.origin == ( 723.5, -1921, 1315.6 ) )
{
var_2.origin = ( 916.95, -1877.7, 1166.94 );
var_2.item_ent.origin = ( 916.95, -1877.7, 1166.94 );
var_2.item_ent.angles = ( 314, 212, 0 );
break;
}
var_0++;
if ( var_0 % 10 == 0 )
wait 0.1;
}
}
dlc3_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";
}
}
dlc3_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 "bbiolum":
return &"ALIEN_CRAFTING_PICKUP_BIOLUM";
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 "bbluebiolum":
case "bluebiolum":
return &"ALIEN_CRAFTING_PICKUP_BLUEBIOLUM";
case "oorangebiolum":
case "orangebiolum":
return &"ALIEN_CRAFTING_PICKUP_ORANGEBIOLUM";
case "amethystbiolum":
return &"ALIEN_CRAFTING_PICKUP_PURPLEBIOLUM";
case "iw6_aliendlc22_mp":
return &"ALIEN_CRAFTING_PICKUP_PIPEBOMB";
case "stickyflare":
case "viewmodel_flare":
case "iw6_aliendlc21_mp":
case "flare":
return &"ALIEN_CRAFTING_PICKUP_STICKYFLARE";
case "detonator":
return &"ALIEN_CRAFTING_PICKUP_DETONATOR";
case "casing":
return &"ALIEN_CRAFTING_PICKUP_CASING";
case "iw6_aliendlc31_mp":
return &"ALIEN_CRAFTING_PICKUP_VENOMXGRENADE";
case "iw6_aliendlc32_mp":
return &"ALIEN_CRAFTING_PICKUP_VENOMLXGRENADE";
case "iw6_aliendlc33_mp":
return &"ALIEN_CRAFTING_PICKUP_VENOMFXGRENADE";
}
if ( isdefined( level.level_locker_weapon_pickup_string_func ) )
return [[ level.level_locker_weapon_pickup_string_func ]]( var_0 );
}
dlc3_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 );
}
descent_recipe_setup_func()
{
return [ "tesla", "grenade", "trap", "weapon", "sticky", "vgrenade" ];
}
init_attachment_and_crafting_locations()
{
level thread maps\mp\alien\_crafting_traps::init();
wait 10;
var_0 = [];
var_0[0] = getent( "ark_area_1_section_1", "targetname" );
var_0[1] = getent( "ark_area_1_section_2", "targetname" );
var_0[2] = getent( "ark_area_1_section_3", "targetname" );
var_1 = common_scripts\utility::random( var_0 );
var_2 = [];
var_2[0] = getent( "ark_area_2_section_1", "targetname" );
var_2[1] = getent( "ark_area_2_section_2", "targetname" );
var_2[2] = getent( "ark_area_2_section_3", "targetname" );
var_3 = common_scripts\utility::random( var_2 );
var_4 = spawn( "script_model", ( 0, 0, 0 ) );
var_5 = [];
var_5[0] = getent( "ark_area_3_section_1", "targetname" );
var_5[1] = getent( "ark_area_3_section_2", "targetname" );
var_5[2] = var_4;
var_6 = [ var_5[0], var_5[1] ];
setup_attachment_crafting_area( var_0, var_1, 1 );
common_scripts\utility::waitframe();
setup_attachment_crafting_area( var_2, var_3, 2 );
common_scripts\utility::waitframe();
setup_attachment_crafting_area( var_5, var_6, 3 );
if ( !isdefined( level.placeableconfigs ) )
level.placeableconfigs = [];
level.trophy_use_pickupfunc = maps\mp\alien\_crafting::trophy_use_pickupfunc;
level.custom_pet_bomb_check = maps\mp\alien\_crafting::crafting_pet_trap_check;
level.resetplayercraftingitemsonrespawn = maps\mp\alien\_crafting::resetplayercraftingitemsonrespawn;
if ( !maps\mp\alien\_utility::is_chaos_mode() )
maps\mp\alien\_crafting::setup_recipes();
}
setup_attachment_crafting_area( var_0, var_1, var_2 )
{
if ( maps\mp\alien\_utility::is_chaos_mode() )
{
for ( var_3 = 0; var_3 < var_0.size; var_3++ )
var_0[var_3] delete();
return;
}
var_4 = undefined;
for ( var_3 = 0; var_3 < var_0.size; var_3++ )
{
if ( isarray( var_1 ) )
{
foreach ( var_6 in var_1 )
{
if ( var_0[var_3] == var_6 )
var_4 = var_6;
}
}
else
var_4 = var_1;
if ( var_0[var_3] == var_4 )
{
var_8 = common_scripts\utility::getstruct( "gun_area_" + var_2 + "_section_" + ( var_3 + 1 ), "targetname" );
var_9 = spawn( "script_model", var_8.origin );
var_9.angles = var_8.angles;
var_9 setmodel( "weapon_ameli_green" );
var_0[var_3] thread setup_attachment_pickup_spot();
continue;
}
else
{
var_10 = common_scripts\utility::getstructarray( "crafting_area_" + var_2 + "_section_" + ( var_3 + 1 ), "targetname" );
foreach ( var_12 in var_10 )
{
var_13 = spawn( "script_model", var_12.origin );
var_13.angles = var_12.angles;
var_13 setmodel( "beacon_intel_tablet" );
var_13.targetname = "crafting_recipe_table";
}
var_0[var_3] delete();
}
}
}
setup_attachment_pickup_spot()
{
var_0 = spawnstruct();
var_0.origin = self.origin;
var_0.pillageinfo = spawnstruct();
var_0.pillage_trigger = self;
var_0.pillage_trigger.angles = self.angles;
var_1 = &"MP_ALIEN_DESCENT_ATTACHMENT_PICKUP";
var_0.pillage_trigger sethintstring( var_1 );
var_0.pillage_trigger makeusable();
if ( maps\mp\alien\_utility::alien_mode_has( "outline" ) )
maps\mp\alien\_outline_proto::add_to_outline_pillage_watch_list( var_0.pillage_trigger, 0 );
var_0.enabled = 1;
var_0.searched = 1;
var_0.pillageinfo.type = "attachment";
var_0.pillageinfo.attachment = "alienmuzzlebrake";
var_0.pillageinfo.ammo = 1;
var_0 thread maps\mp\alien\_pillage::pillage_spot_think();
}
remove_alienmuzzlebrake( var_0 )
{
if ( var_0 != "alienmuzzlebrake" )
return var_0;
var_1 = self getcurrentweapon();
var_2 = getweaponbasename( var_1 );
var_3 = maps\mp\_utility::getweaponclass( var_1 );
switch ( var_3 )
{
case "weapon_dmr":
case "weapon_shotgun":
return "reflex";
case "weapon_assault":
if ( issubstr( var_2, "sc2010" ) )
return "reflex";
break;
}
return "rof";
}
descent_hint_precache()
{
var_0 = [];
var_0["ALIEN_PICKUPS_DESCENT_PICKUP_AMELI"] = &"ALIEN_PICKUPS_DESCENT_PICKUP_AMELI";
var_0["ALIEN_PICKUPS_DESCENT_PICKUP_IMBEL"] = &"ALIEN_PICKUPS_DESCENT_PICKUP_IMBEL";
var_0["ALIEN_PICKUPS_DESCENT_PICKUP_K7"] = &"ALIEN_PICKUPS_DESCENT_PICKUP_K7";
var_0["ALIEN_PICKUPS_DESCENT_PICKUP_KAC"] = &"ALIEN_PICKUPS_DESCENT_PICKUP_KAC";
var_0["ALIEN_PICKUPS_DESCENT_PICKUP_KASTET"] = &"ALIEN_PICKUPS_DESCENT_PICKUP_KASTET";
var_0["ALIEN_PICKUPS_DESCENT_PICKUP_MAUL"] = &"ALIEN_PICKUPS_DESCENT_PICKUP_MAUL";
var_0["ALIEN_PICKUPS_DESCENT_PICKUP_MAVERICK"] = &"ALIEN_PICKUPS_DESCENT_PICKUP_MAVERICK";
var_0["ALIEN_PICKUPS_DESCENT_PICKUP_MK14"] = &"ALIEN_PICKUPS_DESCENT_PICKUP_MK14";
var_0["ALIEN_PICKUPS_DESCENT_PICKUP_R5RGP"] = &"ALIEN_PICKUPS_DESCENT_PICKUP_R5RGP";
var_0["ALIEN_PICKUPS_DESCENT_PICKUP_RIPPER"] = &"ALIEN_PICKUPS_DESCENT_PICKUP_RIPPER";
var_0["ALIEN_PICKUPS_DESCENT_PICKUP_USR"] = &"ALIEN_PICKUPS_DESCENT_PICKUP_USR";
var_0["ALIEN_PICKUPS_DESCENT_PICKUP_UTS"] = &"ALIEN_PICKUPS_DESCENT_PICKUP_UTS";
var_0["ALIEN_PICKUPS_DESCENT_PICKUP_VKS"] = &"ALIEN_PICKUPS_DESCENT_PICKUP_VKS";
return var_0;
}
encounter_init()
{
maps\mp\alien\_drill::init_drill();
maps\mp\alien\_hive::init_hives();
maps\mp\_obelisk::obelisk_init();
thread maps\mp\alien\_alien_vanguard::init();
thread gate_blocker_glyphs( 1 );
var_0 = getent( "blocker_01_forcefield", "targetname" );
var_0 disconnectpaths();
var_0 = getent( "blocker_02_forcefield", "targetname" );
var_0 disconnectpaths();
level thread wait_spawn_intro_drill();
level thread maps\mp\mp_alien_dlc3_vignettes::main();
maps\mp\alien\_gamescore_dlc3::init_descent_eog_score_components( [ "hive", "gryphon", "ark", "escape", "relics" ] );
maps\mp\alien\_gamescore::init_encounter_score_components( [ "challenge", "drill", "team", "personal" ] );
maps\mp\alien\_gamescore_dlc3::init_encounter_score_components( [ "gryphon", "gryphon_team", "gryphon_personal", "cortex", "cortex_team", "cortex_personal", "escape", "escape_team", "escape_personal" ] );
level thread obelisk_emp_monitor();
}
wait_spawn_intro_drill()
{
wait 5.0;
level notify( "spawn_intro_drill" );
common_scripts\utility::flag_set( "intro_sequence_complete" );
}
descent_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 );
}
descent_leave_area_func( var_0 )
{
}
descent_melee_override_func( var_0 )
{
switch ( self.melee_type )
{
case "burrow":
maps\mp\agents\alien\_alien_mammoth::burrow( var_0 );
break;
case "stun":
maps\mp\agents\alien\_alien_gargoyle::stun( var_0 );
break;
case "wing_swipe":
maps\mp\agents\alien\_alien_gargoyle::wing_swipe( var_0 );
break;
case "hover_attack":
maps\mp\agents\alien\_alien_gargoyle::hover( var_0 );
break;
case "divebomb":
maps\mp\agents\alien\_alien_bomber::divebomb( var_0 );
break;
case "strafe_run":
maps\mp\agents\alien\_alien_gargoyle::strafe_run( var_0 );
break;
case "kamikaze":
maps\mp\agents\alien\_alien_bomber::kamikaze( var_0 );
break;
case "fissure_spawn":
maps\mp\agents\alien\_alien_mammoth::fissure_spawn( var_0 );
break;
case "mammoth_angered":
maps\mp\agents\alien\_alien_mammoth::mammoth_angered( var_0 );
break;
case "takeoff":
maps\mp\agents\alien\_alien_gargoyle::takeoff( var_0 );
break;
case "land":
maps\mp\agents\alien\_alien_gargoyle::land( var_0 );
break;
case "air_dodge":
maps\mp\agents\alien\_alien_gargoyle::air_dodge( var_0 );
break;
case "fly":
maps\mp\agents\alien\_alien_gargoyle::fly( var_0 );
break;
case "fly_intro":
maps\mp\agents\alien\_alien_gargoyle::fly_intro( var_0 );
break;
}
}
descent_alien_idle_anim_state_override_func( var_0 )
{
if ( !isdefined( self.alien_type ) )
return undefined;
switch ( self.alien_type )
{
case "gargoyle":
return maps\mp\agents\alien\_alien_gargoyle::gargoyle_idle_state( var_0 );
}
return undefined;
}
descent_can_do_pain_override_func( var_0 )
{
switch ( maps\mp\alien\_utility::get_alien_type() )
{
case "gargoyle":
return maps\mp\agents\alien\_alien_gargoyle::can_do_pain( var_0 );
default:
return 1;
}
}
descent_alien_pain_anim_state_override_func( var_0 )
{
switch ( maps\mp\alien\_utility::get_alien_type() )
{
case "gargoyle":
return maps\mp\agents\alien\_alien_gargoyle::get_pain_anim_state( var_0 );
default:
return undefined;
}
}
descent_alien_turn_in_place_anim_state_override_func()
{
switch ( maps\mp\alien\_utility::get_alien_type() )
{
case "gargoyle":
return maps\mp\agents\alien\_alien_gargoyle::get_turn_in_place_anim_state();
default:
return undefined;
}
}
descent_alien_can_attack_drill_override_func( var_0 )
{
switch ( var_0 )
{
case "gargoyle":
if ( isdefined( level.vanguard_active ) && level.vanguard_active )
return 1;
default:
break;
}
return undefined;
}
descent_alien_should_immediate_ragdoll_on_death_override_func( var_0 )
{
switch ( maps\mp\alien\_utility::get_alien_type() )
{
case "gargoyle":
return maps\mp\agents\alien\_alien_gargoyle::should_immediate_ragdoll_on_death();
default:
return undefined;
}
}
descent_alien_can_retreat_override_func( var_0 )
{
switch ( maps\mp\alien\_utility::get_alien_type() )
{
case "gargoyle":
return maps\mp\agents\alien\_alien_gargoyle::can_retreat( var_0 );
default:
return 1;
}
}
descent_alien_type_node_match_override_func( var_0 )
{
switch ( var_0 )
{
case "bomber":
case "mammoth":
case "elite":
return 0;
case "gargoyle":
if ( getdvarint( "scr_gargoyle_disable_fly_intro" ) != 1 )
return 0;
break;
default:
return 1;
}
}
descent_alien_jump_override( var_0, var_1, var_2, var_3 )
{
var_4 = undefined;
if ( isdefined( var_1.script_noteworthy ) && var_1.script_noteworthy != "flyable" )
var_4 = var_1.script_noteworthy;
maps\mp\agents\alien\_alien_jump::jump( var_0.origin, var_0.angles, var_1.origin, var_1.angles, var_3, undefined, var_4 );
}
descent_alien_init_override_func()
{
switch ( maps\mp\alien\_utility::get_alien_type() )
{
case "mammoth":
maps\mp\agents\alien\_alien_mammoth::mammoth_init();
level notify( "dlc_vo_notify", "inbound_mammoth", self );
break;
case "gargoyle":
maps\mp\agents\alien\_alien_gargoyle::gargoyle_init();
break;
case "bomber":
maps\mp\agents\alien\_alien_bomber::bomber_init();
break;
}
}
descent_alien_attack_override_func( var_0, var_1 )
{
switch ( var_1 )
{
case "burrow":
maps\mp\agents\alien\_alien_mammoth::burrow_attack( var_0 );
break;
case "stun":
maps\mp\agents\alien\_alien_gargoyle::stun_attack( var_0 );
break;
case "wing_swipe":
maps\mp\agents\alien\_alien_gargoyle::wing_swipe_attack( var_0 );
break;
case "hover_attack":
maps\mp\agents\alien\_alien_gargoyle::hover_attack( var_0 );
break;
case "strafe_run":
maps\mp\agents\alien\_alien_gargoyle::strafe_run_attack( var_0 );
break;
case "fissure_spawn":
maps\mp\agents\alien\_alien_mammoth::fissure_spawn_attack( var_0 );
break;
case "mammoth_angered":
maps\mp\agents\alien\_alien_mammoth::mammoth_angered_attack( var_0 );
break;
case "takeoff":
maps\mp\agents\alien\_alien_gargoyle::takeoff_attack( var_0 );
break;
case "land":
maps\mp\agents\alien\_alien_gargoyle::landing_attack( var_0 );
break;
case "fly":
maps\mp\agents\alien\_alien_gargoyle::fly_attack( var_0 );
break;
case "fly_intro":
maps\mp\agents\alien\_alien_gargoyle::fly_intro_attack( var_0 );
break;
default:
return 0;
}
return 1;
}
descent_alien_death_override_func( var_0 )
{
switch ( maps\mp\alien\_utility::get_alien_type() )
{
case "bomber":
thread maps\mp\agents\alien\_alien_bomber::bomber_death( self.origin );
break;
}
}
descent_alien_custom_death( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
var_7 = isdefined( var_1 ) && isplayer( var_1 );
if ( var_7 && isdefined( var_4 ) && maps\mp\alien\_utility::weapon_has_alien_attachment( var_4 ) && var_3 != "MOD_MELEE" && !maps\mp\alien\_utility::is_true( level.easter_egg_lodge_sign_active ) )
{
playfx( level._effect["alien_ark_gib"], self.origin + ( 0, 0, 32 ) );
if ( maps\mp\alien\_utility::is_true( level.should_use_custom_death_func ) )
level thread maps\mp\mp_alien_dlc3_escape::alien_death_trail( self.origin );
return 1;
}
if ( maps\mp\alien\_utility::is_true( level.should_use_custom_death_func ) )
{
if ( maps\mp\alien\_utility::is_true( self.cortex_kill ) )
{
playfx( level._effect["alien_gib"], self.origin + ( 0, 0, 32 ) );
return 1;
}
if ( var_7 || isdefined( var_1.owner ) && isplayer( var_1.owner ) )
{
level thread maps\mp\mp_alien_dlc3_escape::alien_death_trail( self.origin );
return 0;
}
}
return 0;
}
descent_intro_music()
{
for (;;)
{
level waittill( "connected", var_0 );
var_0 thread descent_intro_music_play();
var_0 thread monitorsprintslide();
var_0 thread player_on_obelisk_monitor();
}
}
descent_intro_music_play()
{
self waittill( "spawned_player" );
foreach ( var_1 in level.players )
{
wait 0.01;
if ( common_scripts\utility::flag_exist( "intro_sequence_complete" ) && !common_scripts\utility::flag( "intro_sequence_complete" ) )
{
var_1 stoplocalsound( "us_spawn_music" );
if ( !level.splitscreen || level.splitscreen && !isdefined( level.playeddescentstartingmusic ) )
{
if ( !self issplitscreenplayer() || self issplitscreenplayerprimary() )
level thread maps\mp\alien\_music_and_dialog::play_alien_music( "mus_alien_dlc3_descent_intro" );
if ( level.splitscreen )
level.playeddescentstartingmusic = 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" );
}
}
gate_blocker_glyphs( var_0 )
{
level endon( "game_ended" );
level endon( "alien_vanguard_access_0" + var_0 );
var_1 = -1;
var_2 = getent( "blocker_0" + var_0 + "_door", "targetname" );
for (;;)
{
level waittill( "obelisk_destroyed" );
var_1++;
var_2 setscriptablepartstate( 0, "glyph_" + var_1 );
}
}
gate_blocker( var_0 )
{
level endon( "game_ended" );
while ( !isdefined( level.drill_icon ) )
common_scripts\utility::waitframe();
var_1 = gettime();
level notify( "alien_vanguard_access_0" + var_0 );
level.vanguard_active = 1;
maps\mp\alien\_gamescore::reset_encounter_performance();
var_2 = getent( "blocker_0" + var_0 + "_door", "targetname" );
var_2 setscriptablepartstate( 0, "open" );
var_2 playsound( "scn_gate_open" );
level thread deploy_vanguard_nag( 20 );
level.drill_use_trig makeunusable();
maps\mp\alien\_outline_proto::remove_from_drill_preplant_watch_list( level.drill );
maps\mp\alien\_drill::destroy_drill_icon();
common_scripts\utility::flag_wait( "player_using_vanguard" );
level thread maps\mp\alien\_spawnlogic::encounter_cycle_spawn( "alien_vanguard_0" + var_0 + "_triggered", "blocker_0" + var_0 + "_destroyed" );
maps\mp\_obelisk::wait_for_all_scanned_obelisk_destroyed( 13000, [ "alienvanguard_projectile_mp", "alienvanguard_projectile_mini_mp" ], "waypoint_alien_destroy" );
level notify( "ff_down" );
foreach ( var_4 in level.players )
var_4 maps\mp\_utility::clearlowermessage( "vanguard_use_hint" );
switch ( var_0 )
{
case 1:
level thread maps\mp\alien\_drill::teleport_drill( level.blocker_01_drill_spot );
break;
case 2:
level thread maps\mp\alien\_drill::teleport_drill( level.blocker_02_drill_spot );
break;
}
level.drill_use_trig makeusable();
maps\mp\alien\_outline_proto::add_to_drill_preplant_watch_list( level.drill );
level.drill maps\mp\alien\_drill::set_drill_icon();
var_6 = getent( "blocker_0" + var_0 + "_forcefield", "targetname" );
var_6 thread sfx_forcefield_down();
var_6 connectpaths();
common_scripts\utility::waitframe();
var_6 delete();
var_2 setscriptablepartstate( 0, "ff_down" );
if ( var_0 == 1 )
thread gate_blocker_glyphs( 2 );
level notify( "blocker_0" + var_0 + "_destroyed" );
level thread maps\mp\alien\_spawn_director::end_cycle();
level thread maps\mp\alien\_spawnlogic::remaining_alien_management();
maps\mp\alien\_gamescore::update_team_encounter_performance( "gryphon", "gryphon_encounter_duration", gettime() - var_1 );
maps\mp\alien\_gamescore::calculate_and_show_encounter_scores( level.players, maps\mp\alien\_gamescore_dlc3::get_gryphon_score_component_list() );
give_players_blocker_rewards();
level.vanguard_active = 0;
if ( maps\mp\alien\_utility::isplayingsolo() && !issplitscreen() )
maps\mp\alien\_laststand::give_laststand( level.players[0], 1 );
level notify( "descent_door_complete" );
}
sfx_forcefield_down()
{
playsoundatpos( self.origin, "scn_dsnt_forcefield_down" );
}
give_players_blocker_rewards()
{
foreach ( var_1 in level.players )
{
var_1 maps\mp\alien\_persistence::eog_player_update_stat( "hivesdestroyed", 1 );
var_1 maps\mp\alien\_persistence::try_award_bonus_pool_token();
var_1 thread maps\mp\alien\_hive::wait_to_give_rewards();
}
}
gate_blocker_create_ff_fx( var_0 )
{
self endon( "disconnect" );
self endon( "ff_down" );
wait 0.1;
var_1 = spawnfx( level._effect["alien_forcefield"], var_0.origin + ( 0, 0, 0 ), ( 90, 0, 0 ) );
for (;;)
{
triggerfx( var_1 );
wait 5;
}
}
gate_blocker_01()
{
level notify( "vo_before_first_blocker" );
gate_blocker( 1 );
level notify( "vo_after_first_blocker" );
maps\mp\alien\_utility::update_player_initial_spawn_info( ( -1212, -2863, 999 ), ( 0, 114, 0 ) );
maps\mp\alien\_achievement_dlc3::update_progression_achievements( "complete_first_gate" );
}
gate_blocker_02()
{
level notify( "vo_before_second_blocker" );
gate_blocker( 2 );
level notify( "vo_after_second_blocker" );
maps\mp\alien\_utility::update_player_initial_spawn_info( ( -2417, 510, 1226 ), ( 0, 27, 0 ) );
}
gate_blocker_dmg_think()
{
for (;;)
{
self waittill( "damage", var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9 );
if ( isdefined( var_9 ) && var_9 == "alienvanguard_projectile_mp" )
{
var_10 = distancesquared( self.origin, var_3 );
if ( var_10 < 10000 )
{
level notify( "gate_damaged" );
self.life--;
if ( self.life <= 0 )
break;
}
}
}
level notify( "dlc_vo_notify", "descent_vo", "door_incomplete" );
level notify( self.targetname + "_destroyed" );
self.destroy_icon destroy();
self delete();
}
gate_blocker_dmg_nag( var_0 )
{
level endon( "gate_damaged" );
level waittill( "vanguard_used" );
wait( var_0 );
for (;;)
{
level notify( "dlc_vo_notify", "descent_vo", "control_vanguard" );
wait( var_0 );
}
}
deploy_vanguard_nag( var_0 )
{
level endon( "vanguard_used" );
common_scripts\utility::flag_wait( "blocker_gate_1_init_vo_done" );
for (;;)
{
level notify( "dlc_vo_notify", "descent_vo", "deploy_vanguard" );
wait( var_0 );
}
}
beat_gate_blocker( var_0 )
{
}
beat_gate_blocker_01()
{
}
beat_gate_blocker_02()
{
}
bridge_hive()
{
maps\mp\_obelisk::obelisk();
level thread open_bridge_obelisk( level.current_hive_name );
level thread check_bridge_hives_and_play_vo();
}
open_bridge_obelisk( var_0 )
{
var_0 = maps\mp\_utility::strip_suffix( var_0, "_post" );
open_obelisk( var_0 );
}
open_obelisk( var_0, var_1 )
{
var_2 = getentarray( var_0, "targetname" );
thread open_bridge_obelisk_fx( var_0, var_1 );
if ( !isdefined( var_2 ) )
return;
foreach ( var_4 in var_2 )
{
if ( !isdefined( var_4.script_noteworthy ) )
continue;
switch ( var_4.script_noteworthy )
{
case "shell_a":
var_4 moveto( transform_pos_ang( var_4, ( 4, 4, -32 ), 1 ), 5, 0.5, 0.5 );
break;
case "shell_b":
var_4 moveto( transform_pos_ang( var_4, ( 4, -4, -32 ), 0 ), 5, 0.5, 0.5 );
break;
case "shell_c":
var_4 moveto( transform_pos_ang( var_4, ( -4, -4, -32 ), 0 ), 5, 0.5, 0.5 );
break;
case "shell_d":
var_4 moveto( transform_pos_ang( var_4, ( -4, 4, -32 ), 1 ), 5, 0.5, 0.5 );
break;
default:
break;
}
}
}
open_bridge_obelisk_fx( var_0, var_1 )
{
var_2 = getscriptablearray( var_0, "targetname" );
if ( !isdefined( var_2 ) )
return;
foreach ( var_4 in var_2 )
{
wait 1;
var_4 setscriptablepartstate( "base", "warm_up" );
wait 6;
if ( isdefined( var_1 ) )
{
var_4 setscriptablepartstate( "base", var_1 );
continue;
}
var_4 setscriptablepartstate( "base", "on" );
}
}
transform_pos_ang( var_0, var_1, var_2 )
{
var_3 = var_0.origin;
var_4 = ( 0, 0, 0 );
if ( maps\mp\alien\_utility::is_true( var_2 ) )
var_4 = ( 0, 180, 0 );
var_5 = var_0.origin;
var_6 = var_0.angles;
var_7 = var_0.origin + var_1;
var_8 = var_0.angles;
var_9 = transformmove( var_5, var_6, var_3, var_4, var_7, var_8 );
return var_9["origin"];
}
beat_ark_interior()
{
level notify( "debug_beat_ark_interior" );
}
jumpto_escape_blocker_01()
{
}
jumpto_escape()
{
}
debug_open_blocker_doors()
{
var_0 = getent( "blocker_01_door", "targetname" );
var_1 = getent( "blocker_02_door", "targetname" );
var_2 = getent( "blocker_01_forcefield", "targetname" );
var_3 = getent( "blocker_02_forcefield", "targetname" );
var_0 setscriptablepartstate( 0, "ff_down" );
var_1 setscriptablepartstate( 0, "ff_down" );
var_2 delete();
var_3 delete();
}
change_player_facing()
{
while ( !isdefined( level.players ) )
wait 0.1;
foreach ( var_1 in level.players )
var_1 setplayerangles( var_1.angles + ( 0, -90, 0 ) );
}
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 "caverns_01":
level.alien_cycle_table = "mp/alien/chaos_spawn_dlc3_caverns_01_sp.csv";
break;
case "caverns_02":
level.alien_cycle_table = "mp/alien/chaos_spawn_dlc3_caverns_02_sp.csv";
break;
case "caverns_03":
level.alien_cycle_table = "mp/alien/chaos_spawn_dlc3_caverns_03_sp.csv";
break;
case "caverns_04":
level.alien_cycle_table = "mp/alien/chaos_spawn_dlc3_caverns_04_sp.csv";
break;
}
}
else
{
switch ( maps\mp\alien\_utility::get_chaos_area() )
{
case "caverns_01":
level.alien_cycle_table = "mp/alien/chaos_spawn_dlc3_caverns_01_mp.csv";
break;
case "caverns_02":
level.alien_cycle_table = "mp/alien/chaos_spawn_dlc3_caverns_02_mp.csv";
break;
case "caverns_03":
level.alien_cycle_table = "mp/alien/chaos_spawn_dlc3_caverns_03_mp.csv";
break;
case "caverns_04":
level.alien_cycle_table = "mp/alien/chaos_spawn_dlc3_caverns_04_mp.csv";
break;
}
}
}
set_hardcore_extinction_spawn_table()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
level.alien_cycle_table_hardcore = "mp/alien/cycle_spawn_dlc3_hardcore_sp.csv";
else
level.alien_cycle_table_hardcore = "mp/alien/cycle_spawn_dlc3_hardcore_mp.csv";
}
set_regular_extinction_spawn_table()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
level.alien_cycle_table = "mp/alien/cycle_spawn_dlc3_sp.csv";
else
level.alien_cycle_table = "mp/alien/cycle_spawn_dlc3.csv";
}
set_hardcore_container_spawn_table()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
level.container_spawn_table = "mp/alien/dlc3_container_spawn_hardcore_sp.csv";
else
level.container_spawn_table = "mp/alien/dlc3_container_spawn_hardcore.csv";
}
set_regular_container_spawn_table()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
level.container_spawn_table = "mp/alien/dlc3_container_spawn_sp.csv";
else
level.container_spawn_table = "mp/alien/dlc3_container_spawn.csv";
}
set_regular_alien_definition_table()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
level.default_alien_definition = "mp/alien/dlc3_alien_definition_sp.csv";
else
level.default_alien_definition = "mp/alien/dlc3_alien_definition.csv";
}
set_hardcore_alien_definition_table()
{
if ( maps\mp\alien\_utility::isplayingsolo() )
level.default_alien_definition = "mp/alien/dlc3_alien_definition_hardcore_sp.csv";
else
level.default_alien_definition = "mp/alien/dlc3_alien_definition_hardcore.csv";
}
check_bridge_hives_and_play_vo()
{
if ( !isdefined( level.bridge_hives_done ) )
level.bridge_hives_done = 0;
level.bridge_hives_done++;
if ( level.bridge_hives_done == 2 )
level thread stop_post_drill_vo_from_playing_next_obelisk();
if ( level.bridge_hives_done > 2 )
{
level turn_off_drill();
level thread maps\mp\mp_alien_dlc3_vignettes::descent_vo_area_3_end();
maps\mp\alien\_achievement_dlc3::update_progression_achievements( "extend_the_bridge" );
wait 5;
level thread add_waypoint_to_ark();
level thread extend_bridge();
level thread start_ark_vo();
common_scripts\utility::flag_set( "area_3_done" );
}
}
stop_post_drill_vo_from_playing_next_obelisk()
{
wait 6;
level.no_grab_drill_vo = 1;
}
extend_bridge()
{
var_0 = getentarray( "bridge_section_2", "targetname" );
foreach ( var_2 in var_0 )
{
var_2 solid();
var_2 show();
}
var_4 = getent( "ark_bridge_path_clip", "targetname" );
var_4 connectpaths();
var_4 notsolid();
thread extend_bridge_fx();
level slide_bridge( -640 );
level notify( "dlc_vo_notify", "descent_vo", "complete_bridge" );
}
extend_bridge_fx()
{
wait 0.1;
var_0 = getent( "bridge_section_2_model", "targetname" );
playfxontag( level._effect["bridge_tip"], var_0, "tag_bridge_tip" );
}
add_waypoint_to_ark()
{
var_0 = newhudelem();
var_0 setshader( "waypoint_alien_blocker", 20, 20 );
var_0.color = ( 1, 1, 1 );
var_0 setwaypoint( 1, 1 );
var_0.sort = 1;
var_0.foreground = 1;
var_0.alpha = 0.5;
var_0.x = 695;
var_0.y = 1867;
var_0.z = 1000;
var_1 = 200;
var_2 = var_1 * var_1;
var_3 = 0;
while ( !var_3 && !common_scripts\utility::flag( "entering_ark_flag" ) )
{
foreach ( var_5 in level.players )
{
if ( distancesquared( ( var_0.x, var_0.y, var_0.z ), var_5.origin ) < var_2 )
var_3 = 1;
}
wait 0.1;
}
var_0.x = 3824;
var_0.y = 1857;
var_0.z = 1000;
var_1 = 200;
var_2 = var_1 * var_1;
var_3 = 0;
while ( !var_3 )
{
foreach ( var_5 in level.players )
{
if ( distancesquared( ( var_0.x, var_0.y, var_0.z ), var_5.origin ) < var_2 )
var_3 = 1;
}
wait 0.1;
}
var_0 destroy();
}
turn_off_drill()
{
while ( !isdefined( level.drill_icon ) )
wait 0.05;
level.drill_use_trig makeunusable();
maps\mp\alien\_outline_proto::remove_from_drill_preplant_watch_list( level.drill );
maps\mp\alien\_drill::destroy_drill_icon();
}
destroy_drill( var_0 )
{
wait( var_0 );
while ( !isdefined( level.drill ) )
wait 0.1;
if ( isdefined( level.drill ) )
{
level.drill_carrier = undefined;
level.drill delete();
}
if ( isdefined( level.drill_icon ) )
level.drill_icon destroy();
if ( isdefined( level.drill_use_trig ) )
level.drill_use_trig delete();
}
start_ark_vo()
{
common_scripts\utility::flag_wait( "entering_ark_flag" );
var_0 = 0;
if ( !isdefined( level.ark_jump_to ) )
maps\mp\mp_alien_dlc3_vignettes::descent_vo_entering_ark();
while ( !var_0 )
{
foreach ( var_2 in level.players )
{
if ( var_2.origin[0] > 2000 )
var_0 = 1;
}
wait 0.1;
}
common_scripts\utility::flag_set( "start_archer_vignette" );
}
hide_bridge_parts()
{
var_0 = getentarray( "bridge_section_2", "targetname" );
foreach ( var_2 in var_0 )
{
var_2 notsolid();
var_2 hide();
}
level thread slide_bridge( 640 );
}
slide_bridge( var_0 )
{
var_1 = getent( "bridge_section_2_model", "targetname" );
if ( isdefined( var_1 ) )
{
playsoundatpos( ( 59, 1891, 995 ), "scn_ark_bridge" );
var_1 moveto( var_1.origin + ( var_0, 0, 0 ), 2.0, 0.1, 0.1 );
}
wait 2.0;
}
descent_specific_vo_callouts( var_0 )
{
var_0["descent_vo"] = ::playdescentvo;
var_0["warn_plants"] = ::playplantvo;
var_0["descent_story_vo"] = ::playdescentstoryvo;
return var_0;
}
playdescentvo( 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 ) )
{
iprintln( "descent vo: " + var_2.vo_prefix + var_0 );
return;
}
if ( var_0 == "escape_level" )
wait 5;
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, undefined, 10 );
}
playplantvo( var_0 )
{
var_1 = var_0.vo_prefix + "warn_plants";
var_0 maps\mp\alien\_music_and_dialog_dlc::play_vo_on_player( var_1, undefined, 3 );
}
playdescentstoryvo( var_0 )
{
if ( !isdefined( var_0 ) )
return;
if ( !soundexists( var_0 ) )
return;
thread maps\mp\alien\_music_and_dialog::pause_vo_system( level.players );
wait 1;
play_global_vo( var_0 );
var_1 = lookupsoundlength( var_0 ) / 1000;
wait( var_1 + 1 );
thread maps\mp\alien\_music_and_dialog::unpause_vo_system( level.players );
}
play_global_vo( var_0 )
{
foreach ( var_2 in level.players )
{
if ( isdefined( var_2 ) )
{
var_2 playsound( var_0 );
break;
}
}
}
init_weapon_stat_array()
{
level.weaponstats_weaponlist = [];
level.weaponstats_weaponlist["iw6_arkalienr5rgp_mp"] = "iw6_alienDLC33_mp";
level.weaponstats_weaponlist["iw6_arkaliendlc15_mp"] = "iw6_alienDLC15_mp";
level.weaponstats_weaponlist["iw6_arkalienk7_mp"] = "iw6_alienDLC31_mp";
level.weaponstats_weaponlist["iw6_arkaliendlc23_mp"] = "iw6_alienDLC23_mp";
level.weaponstats_weaponlist["iw6_arkalienameli_mp"] = "iw6_alienDLC32_mp";
level.weaponstats_weaponlist["iw6_arkalienkac_mp"] = "iw6_alienkac_mp";
level.weaponstats_weaponlist["iw6_arkalienvks_mp"] = "iw6_alienvks_mp";
level.weaponstats_weaponlist["iw6_arkalienusr_mp"] = "iw6_alienDLC34_mp";
level.weaponstats_weaponlist["iw6_arkalienimbel_mp"] = "iw6_alienimbel_mp";
level.weaponstats_weaponlist["iw6_arkalienmk14_mp"] = "iw6_alienDLC31_mp";
level.weaponstats_weaponlist["iw6_arkalienmaul_mp"] = "iw6_alienmaul_mp";
level.weaponstats_weaponlist["iw6_arkalienuts15_mp"] = "iw6_alienDLC24_mp";
}
descent_weapon_stats_override_func( var_0 )
{
if ( isdefined( level.weaponstats_weaponlist[var_0] ) )
return level.weaponstats_weaponlist[var_0];
return var_0;
}
descent_locker_ark_check_func( var_0, var_1 )
{
if ( maps\mp\alien\_utility::weapon_has_alien_attachment( var_0 ) )
{
var_2 = [ "alienmuzzlebrake" ];
var_1 = maps\mp\alien\_utility::ark_attachment_transfer_to_locker_weapon( var_1, var_2, 1 );
}
return "weapon_" + var_1;
}
chaos_init()
{
maps\mp\alien\_hive::init_hive_locs();
maps\mp\alien\_chaos::init();
register_egg_default_loc();
level thread init_attachment_and_crafting_locations();
set_end_cam_position();
dlc3_chaos_nondeterministic_entity_handler();
level thread chaos_player_on_obelisk_monitor();
}
dlc3_chaos_nondeterministic_entity_handler()
{
level endon( "game_ended" );
var_0 = 5;
wait( var_0 );
move_clip_to_bridge_chaos();
}
move_clip_to_bridge_chaos()
{
var_0 = getent( "player512x512x8", "targetname" );
var_1 = spawn( "script_model", ( -512, 1728, 1136 ) );
var_1.angles = ( 270, 0, 0 );
var_1 clonebrushmodeltoscriptmodel( var_0 );
var_2 = getent( "player512x512x8", "targetname" );
var_3 = spawn( "script_model", ( -385, 2201.5, 2160 ) );
var_3.angles = ( 270, 330, 0 );
var_3 clonebrushmodeltoscriptmodel( var_2 );
var_4 = getent( "player512x512x8", "targetname" );
var_5 = spawn( "script_model", ( -385, 2201.5, 1648 ) );
var_5.angles = ( 270, 330, 0 );
var_5 clonebrushmodeltoscriptmodel( var_4 );
var_6 = getent( "player512x512x8", "targetname" );
var_7 = spawn( "script_model", ( -512, 1728, 1648 ) );
var_7.angles = ( 270, 0, 0 );
var_7 clonebrushmodeltoscriptmodel( var_6 );
var_8 = getent( "player512x512x8", "targetname" );
var_9 = spawn( "script_model", ( -385, 2201.5, 1136 ) );
var_9.angles = ( 270, 330, 0 );
var_9 clonebrushmodeltoscriptmodel( var_8 );
var_10 = getent( "player512x512x8", "targetname" );
var_11 = spawn( "script_model", ( -512, 1728, 2160 ) );
var_11.angles = ( 270, 0, 0 );
var_11 clonebrushmodeltoscriptmodel( var_10 );
}
register_egg_default_loc()
{
switch ( maps\mp\alien\_utility::get_chaos_area() )
{
case "caverns_01":
maps\mp\alien\_chaos::set_egg_default_loc( ( -116, 2240, -1264 ) );
break;
case "caverns_03":
maps\mp\alien\_chaos::set_egg_default_loc( ( -116, 2240, -1264 ) );
break;
}
}
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 "caverns_01":
var_1.origin = ( -3608, 3024, 810 );
var_1.angles = ( 350, 345, 0 );
break;
case "caverns_03":
var_1.origin = ( -3608, 3024, 810 );
var_1.angles = ( 350, 345, 0 );
break;
}
}
descent_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( maps\mp\alien\_utility::get_player_initial_spawn_origin() ) )
return;
self.forcespawnorigin = maps\mp\alien\_utility::get_player_initial_spawn_origin();
self.forcespawnangles = maps\mp\alien\_utility::get_player_initial_spawn_angles();
}
chaos_player_initial_spawn_loc_override()
{
var_0 = [];
var_1 = [];
switch ( maps\mp\alien\_utility::get_chaos_area() )
{
case "caverns_01":
var_0 = [ ( 2556, -7380, 1202 ), ( 2432, -7436, 1202 ), ( 2282, -7444, 1202 ), ( 2138, -7400, 1202 ) ];
var_1 = [ ( 0, 90, 0 ), ( 0, 90, 0 ), ( 0, 90, 0 ), ( 0, 90, 0 ) ];
break;
case "caverns_03":
var_0 = [ ( -2936, -161, 1346 ), ( -3082, -158, 1356 ), ( -3111, -285, 1372 ), ( -2917, -283, 1372 ) ];
var_1 = [ ( 0, 114, 0 ), ( 0, 55, 0 ), ( 0, 55, 0 ), ( 0, 102, 0 ) ];
break;
}
self.forcespawnorigin = var_0[level.players.size];
self.forcespawnangles = var_1[level.players.size];
}
jump_to_area1_1st_obelisk()
{
}
jump_to_area1_2nd_obelisk()
{
}
jump_to_area1_3rd_obelisk()
{
}
jump_to_area1_4th_obelisk()
{
}
jump_to_area1_5th_obelisk()
{
}
common_jump_to_area1()
{
}
jump_to_area2_1st_obelisk()
{
}
jump_to_area2_2nd_obelisk()
{
}
jump_to_area2_3rd_obelisk()
{
}
jump_to_area2_4th_obelisk()
{
}
jump_to_area2_5th_obelisk()
{
}
common_jump_to_area2()
{
}
jump_to_bridge_1st_obelisk()
{
}
jump_to_bridge_2nd_obelisk()
{
}
jump_to_bridge_3rd_obelisk()
{
}
common_jump_to_area3()
{
}
get_first_num_elements( var_0, var_1 )
{
var_2 = [];
for ( var_3 = 0; var_3 < var_1; var_3++ )
var_2[var_3] = var_0[var_3];
return var_2;
}
is_generic_electric_trap_func()
{
self.trap_type = "traps_puddle";
return 1;
}
explodersasoneshot()
{
wait 30;
common_scripts\utility::exploder( 64 );
}
dlc3_egg()
{
level.eggs_destroyed = 0;
var_0 = getentarray( "easter_egg", "targetname" );
var_1 = [];
var_2 = [];
var_3 = [];
var_0 = common_scripts\utility::array_randomize( var_0 );
foreach ( var_5 in var_0 )
{
if ( isdefined( var_5.script_noteworthy ) )
{
switch ( var_5.script_noteworthy )
{
case "area1":
if ( var_1.size >= 2 )
var_5 delete();
else
var_1[var_1.size] = var_5;
break;
case "area2":
if ( var_2.size >= 2 )
var_5 delete();
else
var_2[var_2.size] = var_5;
break;
case "area3":
if ( var_3.size >= 2 )
var_5 delete();
else
var_3[var_3.size] = var_5;
break;
}
}
}
var_0 = getentarray( "easter_egg", "targetname" );
foreach ( var_5 in var_0 )
var_5 thread wait_for_egg_dmg();
}
wait_for_egg_dmg()
{
level endon( "stop_easter_egg" );
self setcandamage( 1 );
self setcanradiusdamage( 1 );
var_0 = self.origin;
for (;;)
{
self waittill( "damage", var_1, var_2, var_3, var_4, var_5 );
playfx( level._effect["easter_egg_explode"], var_0 );
earthquake( 0.12, 1, var_0, 10000 );
self delete();
level.eggs_destroyed++;
if ( level.eggs_destroyed >= 4 )
{
foreach ( var_7 in level.players )
{
var_7 thread [[ level.custom_juicebox_logic ]]( 180, 4, 1 );
var_7 thread maps\mp\alien\_outline_proto::set_alien_outline();
playfxontag( level.dig_fx["shrine"]["player"], var_7, "tag_origin" );
var_7.shrine_effect_ent = spawnfxforclient( level.dig_fx["shrine"]["screen"], var_7 geteye(), var_7 );
triggerfx( var_7.shrine_effect_ent );
var_7.shrine_effect_ent setfxkilldefondelete();
var_7 thread killfxonplayerdeath( var_7.shrine_effect_ent, "death", "disconnect" );
}
earthquake( 0.35, 4, var_0, 10000 );
level._effect["arcade_death"] = level._effect["easter_egg_death"];
level.easter_egg_lodge_sign_active = 1;
level thread dlc3_easter_egg_off();
level thread delete_remaining_eggs();
level notify( "stop_easter_egg" );
}
}
}
delete_remaining_eggs()
{
var_0 = getentarray( "easter_egg", "targetname" );
foreach ( var_2 in var_0 )
{
if ( !isdefined( var_2 ) )
continue;
playfx( level._effect["easter_egg_explode"], var_2.origin );
var_2 delete();
common_scripts\utility::waitframe();
}
}
dlc3_easter_egg_off()
{
level endon( "game_ended" );
wait 180;
level.easter_egg_lodge_sign_active = 0;
foreach ( var_1 in level.players )
{
var_1 thread maps\mp\alien\_alien_class_skills_main::remove_the_outline();
stopfxontag( level.dig_fx["shrine"]["player"], var_1, "tag_origin" );
if ( isdefined( var_1.shrine_effect_ent ) )
var_1.shrine_effect_ent delete();
}
}
killfxonplayerdeath( var_0, var_1, var_2 )
{
level endon( "game_ended" );
if ( isdefined( var_1 ) )
level endon( var_1 );
if ( isdefined( var_2 ) )
level endon( var_2 );
common_scripts\utility::waittill_any( "last_stand", "disconnect" );
if ( isdefined( var_0 ) )
{
if ( isarray( var_0 ) )
{
foreach ( var_4 in var_0 )
var_4 delete();
}
else
var_0 delete();
}
}
dlc3_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;
}
dlc3_give_weapon_handler_func( var_0 )
{
var_1 = self getcurrentweapon();
if ( issubstr( var_1, "aliendlc11" ) )
return 0;
return undefined;
}
dlc_3_offset_locker_trigger_model()
{
if ( isdefined( self.locker_origin ) )
self.pillage_trigger.origin = self.locker_origin;
if ( isdefined( self.locker_angles ) )
self.pillage_trigger.angles = self.locker_angles;
var_0 = ( 0, 0, 20 );
var_1 = ( 0, 0, 13 );
var_2 = ( 0, 0, 90 );
var_3 = ( 0, 0, 6 );
var_4 = ( 0, 0, 0 );
var_5 = getgroundposition( self.pillage_trigger.origin + var_0, 2 );
switch ( self.pillage_trigger.model )
{
case "weapon_rm_22":
self.pillage_trigger hidepart( "tag_barrel_sniper", "weapon_rm_22" );
default:
var_3 = var_1;
var_4 = var_2;
break;
}
var_3 = var_1;
var_4 = var_2;
var_6 = self.pillage_trigger.origin;
var_7 = self.pillage_trigger.angles;
var_8 = self.pillage_trigger.origin;
var_9 = ( 0, 0, 0 );
var_10 = self.pillage_trigger.origin + var_3;
var_11 = var_4;
var_12 = transformmove( var_6, var_7, var_8, var_9, var_10, var_11 );
var_13 = var_12["origin"] - var_5;
var_4 = var_12["angles"];
self.pillage_trigger.origin = var_5 + var_13;
self.pillage_trigger.angles = var_4;
}