2433 lines
75 KiB
Plaintext
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;
|
|
}
|