mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-07-10 07:27:55 -05:00
1659 lines
42 KiB
Plaintext
1659 lines
42 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps\mp\mp_zombie_descent.gsc
|
|
* Game: Call of Duty: WWII
|
|
* Platform: PC
|
|
* Function Count: 77
|
|
* Decompile Time: 1276 ms
|
|
* Timestamp: 10/27/2023 3:17:50 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
func_00F9()
|
|
{
|
|
level.use_zombie_unresolved_collision = 1;
|
|
level.pack_a_punc_pre_func = ::maps/mp/mp_zombie_descent_ee_main::raise_machine_to_unlock_pack_a_punch;
|
|
level.var_8B96 = ::descent_player_ignore_extra;
|
|
level.zmb_player_safe_teleport_on_perk_buy = 1;
|
|
maps/mp/mp_zombie_descent_precache::func_F9();
|
|
maps/createart/mp_zombie_descent_art::func_F9();
|
|
maps/mp/mp_zombie_descent_fx::func_F9();
|
|
maps\mp\_load::func_F9();
|
|
maps/mp/mp_zombie_descent_lighting::func_F9();
|
|
maps/mp/mp_zombie_descent_aud::func_F9();
|
|
common_scripts\utility::func_3C87("flag_closet_to_basement_1");
|
|
hack_swap_basement_cloest_door_flag();
|
|
maps\mp\_compass::func_8A2F("compass_map_mp_zombie_descent");
|
|
game["attackers"] = "allies";
|
|
game["defenders"] = "axis";
|
|
level.zmcharactervariantid = 1;
|
|
level.var_6BB0 = ::on_game_start_descent;
|
|
level.pairedmeleeclipwarningonce = 0;
|
|
level.var_902A = ::maps/mp/mp_zombie_descent_utils::func_902A;
|
|
level.pap_camo_ref_override = "camo_pap_04";
|
|
level.var_AC71 = ::initdescentweapons;
|
|
level.means_of_skipping_rounds_func = ::maps/mp/mp_zombie_nest_ee_wave_manipulation::skiproundwait2;
|
|
level.door_data_out_of_date = 0;
|
|
level.var_73BD = ::no_points_for_thule;
|
|
level.usenavmeshforuber = 1;
|
|
level.var_783F = 0;
|
|
level.zombiespawnfxcount = 0;
|
|
level thread maps/mp/zquests/zmb_secret_challenges_util::init_challenges_utility();
|
|
level.var_AC2E = 8;
|
|
level thread maps\mp\_utility::func_6F74(::mute_audio_on_intro);
|
|
init_blood_plates();
|
|
init_ice_blocks();
|
|
initprecache();
|
|
func_5375();
|
|
func_5339();
|
|
initflags();
|
|
level thread door_death_fix();
|
|
level.var_ABD3 = -3500;
|
|
level thread maps/mp/zombies/_zombies_audio_dlc2::initdlc2audio();
|
|
maps\mp\zombies\_zombies_money::func_D5();
|
|
level thread maps/mp/zombies/_zombies_harmonic_kinetic_accelerator::func_D5();
|
|
level thread maps/mp/zombies/_zombies_orbital_gravity_entangler::func_D5();
|
|
level thread maps/mp/zombies/_zombies_blood_tubes::func_D5();
|
|
level thread soundscripts/_snd_common_zmb_dlc4::snd_zmb_init_dlc4();
|
|
level thread maps/mp/zquests/dlc4_secrets_mp_zombie_descent::init_dlc4_secrets_mp_zombie_descent();
|
|
level thread maps/mp/zquests/dlc4_trophies_mp_zombie_descent::func_D5();
|
|
maps/mp/mp_zombie_nest_ee_wave_manipulation::func_F9();
|
|
level thread maps/mp/mp_zombie_descent_utils::vo_intro();
|
|
level thread spawn_ice_breakers_on_door_open();
|
|
level thread handle_door_orb_blockers();
|
|
level thread maps/mp/zombies/zombie_corpse_eater::periodically_spawn_corpse_eaters();
|
|
level thread handle_boss_battle_playtest();
|
|
level thread setup_text_log_reveals();
|
|
level thread handle_conditional_spawners();
|
|
level thread maps\mp\_utility::func_6F74(::spawnfadein);
|
|
level thread maps\mp\_utility::func_6F74(::player_clear_stuff_on_death);
|
|
}
|
|
|
|
//Function Number: 2
|
|
no_points_for_thule(param_00,param_01)
|
|
{
|
|
if(common_scripts\utility::func_562E(param_01.iszombieking))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 3
|
|
spawnfadein()
|
|
{
|
|
self.var_6772 = newclienthudelem(self);
|
|
self.var_6772 setshader("black",640,480);
|
|
self.var_6772.ignoreme = 999;
|
|
self.var_6772.var_C6 = "fullscreen";
|
|
self.var_6772.var_1CA = "fullscreen";
|
|
self.var_6772.var_A0 = 0;
|
|
while(!level.var_3FA6)
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
thread animscripts/notetracks_common::do_fade_from_black(1.15);
|
|
}
|
|
|
|
//Function Number: 4
|
|
player_clear_stuff_on_death()
|
|
{
|
|
self endon("disconnect");
|
|
level endon("game_ended");
|
|
for(;;)
|
|
{
|
|
self waittill("death");
|
|
wait 0.05;
|
|
if(isdefined(self.isintrial))
|
|
{
|
|
self.isintrial = undefined;
|
|
}
|
|
|
|
if(isdefined(self.inasneakyplace))
|
|
{
|
|
self.inasneakyplace = 0;
|
|
}
|
|
|
|
if(isdefined(self.hitchingaride))
|
|
{
|
|
self.hitchingaride = 0;
|
|
}
|
|
|
|
if(isdefined(self.isbloodtubemoonorbblocked))
|
|
{
|
|
self.isbloodtubemoonorbblocked = undefined;
|
|
}
|
|
|
|
if(isdefined(self.forcedblooddest))
|
|
{
|
|
self.forcedblooddest = 0;
|
|
}
|
|
|
|
if(isdefined(self.tryingtoleavepap))
|
|
{
|
|
self.tryingtoleavepap = 0;
|
|
}
|
|
|
|
if(isdefined(self.isonpushcooldown))
|
|
{
|
|
self.isonpushcooldown = 0;
|
|
}
|
|
|
|
if(isdefined(self.var_480F))
|
|
{
|
|
self.var_480F = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 5
|
|
handle_conditional_spawners()
|
|
{
|
|
foreach(var_01 in common_scripts\utility::func_46B7("zombie_spawner","script_noteworthy"))
|
|
{
|
|
if(isdefined(var_01.var_1A2))
|
|
{
|
|
var_01.player_exclusion_zones = common_scripts\utility::func_46B7(var_01.var_1A2,"targetname");
|
|
var_01 thread toggle_active();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 6
|
|
toggle_active()
|
|
{
|
|
var_00 = self;
|
|
while(!isdefined(level.var_744A) || level.var_744A.size == 0)
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
var_00.is_zombies_spawner_script_disabled = 0;
|
|
foreach(var_02 in var_00.player_exclusion_zones)
|
|
{
|
|
if(isdefined(var_02.var_82EC))
|
|
{
|
|
return;
|
|
}
|
|
|
|
foreach(var_04 in level.var_744A)
|
|
{
|
|
if(distance2d(var_04.var_116,var_02.var_116) < var_02.var_14F && abs(var_04.var_116[2] - var_02.var_116[2]) < var_02.var_BD)
|
|
{
|
|
var_00.is_zombies_spawner_script_disabled = 1;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
lib_0547::func_A6F6();
|
|
}
|
|
}
|
|
|
|
//Function Number: 7
|
|
descent_player_ignore_extra(param_00)
|
|
{
|
|
if(common_scripts\utility::func_562E(param_00.is_in_side_ee_mini_game))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 8
|
|
mute_audio_on_intro()
|
|
{
|
|
self method_8626("intro_movie");
|
|
while(!level.var_3FA6)
|
|
{
|
|
self freezecontrols(1);
|
|
self method_812B(0);
|
|
self method_8324();
|
|
self method_84CB();
|
|
wait 0.05;
|
|
}
|
|
|
|
self freezecontrols(0);
|
|
self method_812B(1);
|
|
self method_8325();
|
|
self method_84CC();
|
|
self method_8627("intro_movie");
|
|
}
|
|
|
|
//Function Number: 9
|
|
handle_boss_battle_playtest()
|
|
{
|
|
if(!getdvarint("spv_dlc4_activate_boss_battle_on_start",0))
|
|
{
|
|
return;
|
|
}
|
|
|
|
while(!isdefined(level.var_A980))
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
level.var_A980 = 18;
|
|
level thread maps\mp\_utility::func_6F74(::give_all_boss_battle_perks);
|
|
wait(1);
|
|
var_00 = common_scripts\utility::func_7A33(level.var_744A);
|
|
var_00 lib_057D::func_4766();
|
|
wait(5);
|
|
maps/mp/mp_zombie_descent_ee_main::get_available_players();
|
|
}
|
|
|
|
//Function Number: 10
|
|
give_all_boss_battle_perks()
|
|
{
|
|
var_00 = self;
|
|
var_00 endon("disconnect");
|
|
wait(1);
|
|
while(!isalive(var_00) || !var_00 method_8648())
|
|
{
|
|
wait(1);
|
|
}
|
|
|
|
var_01 = var_00 getweaponslistprimaries();
|
|
for(var_02 = 0;var_02 < var_01.size;var_02++)
|
|
{
|
|
if(function_01A9(var_01[var_02]) != "melee")
|
|
{
|
|
var_00 lib_0586::func_790(var_01[var_02]);
|
|
}
|
|
}
|
|
|
|
foreach(var_04 in ["m1911_pap_zm","svt40_pap_zm"])
|
|
{
|
|
if(lib_0569::func_55D4(var_04))
|
|
{
|
|
maps\mp\zombies\_zombies_magicbox::func_A7D6(var_00,var_00 lib_0586::func_78B(function_0337(var_04,"pap_")));
|
|
continue;
|
|
}
|
|
|
|
maps\mp\zombies\_zombies_magicbox::func_A7D6(var_00,var_04);
|
|
}
|
|
|
|
var_00 lib_0586::func_78E("m1911_pap_zm");
|
|
var_00 lib_056A::func_47B5();
|
|
var_00 lib_056A::func_4784();
|
|
var_00 lib_056A::cp_zmb_escape_init();
|
|
var_00 lib_056A::func_47B1();
|
|
var_00 lib_056A::func_47B8();
|
|
}
|
|
|
|
//Function Number: 11
|
|
init_blood_plates()
|
|
{
|
|
var_00 = common_scripts\utility::func_46B7("blood_plate_struct","targetname");
|
|
var_01 = getentarray("blood_pool","targetname");
|
|
level.blood_plates = [];
|
|
foreach(var_03 in var_00)
|
|
{
|
|
if(isdefined(var_03.var_8260) && var_03.var_8260 == "plate_frontdoor")
|
|
{
|
|
level.blood_plates["first_door"] = var_03;
|
|
}
|
|
|
|
if(isdefined(var_03.var_8260) && var_03.var_8260 == "plate_trial_room")
|
|
{
|
|
level.blood_plates["trial"] = var_03;
|
|
var_04 = var_01;
|
|
var_04 = function_01AC(var_04,var_03.var_116,150);
|
|
if(isdefined(var_04[0]))
|
|
{
|
|
var_03.blood_pool = var_04[0];
|
|
var_03.blood_pool.min_pos = var_03.blood_pool.var_116;
|
|
var_03.blood_pool.max_pos = var_03.blood_pool.var_116 + (0,0,28);
|
|
}
|
|
}
|
|
|
|
if(isdefined(var_03.var_8260) && var_03.var_8260 == "plate_boss_room")
|
|
{
|
|
level.blood_plates[level.blood_plates.size] = var_03;
|
|
var_04 = var_01;
|
|
var_04 = function_01AC(var_04,var_03.var_116,150);
|
|
if(isdefined(var_04[0]))
|
|
{
|
|
var_03.blood_pool = var_04[0];
|
|
var_03.blood_pool.min_pos = var_03.blood_pool.var_116;
|
|
var_03.blood_pool.max_pos = var_03.blood_pool.var_116 + (0,0,28);
|
|
}
|
|
}
|
|
|
|
if(isdefined(var_03.var_8260) && var_03.var_8260 == "plate_bonus_room")
|
|
{
|
|
level.blood_plates["bonus"] = var_03;
|
|
var_04 = var_01;
|
|
var_04 = function_01AC(var_04,var_03.var_116,150);
|
|
if(isdefined(var_04[0]))
|
|
{
|
|
var_03.blood_pool = var_04[0];
|
|
var_03.blood_pool.min_pos = var_03.blood_pool.var_116;
|
|
var_03.blood_pool.max_pos = var_03.blood_pool.var_116 + (0,0,28);
|
|
}
|
|
}
|
|
|
|
if(isdefined(var_03.var_8260) && var_03.var_8260 == "plate_shelf")
|
|
{
|
|
level.blood_plates["shelf"] = var_03;
|
|
var_04 = var_01;
|
|
var_04 = function_01AC(var_04,var_03.var_116,150);
|
|
if(isdefined(var_04[0]))
|
|
{
|
|
var_03.blood_pool = var_04[0];
|
|
var_03.blood_pool.min_pos = var_03.blood_pool.var_116;
|
|
var_03.blood_pool.max_pos = var_03.blood_pool.var_116 + (0,0,28);
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach(var_08, var_07 in level.blood_plates)
|
|
{
|
|
var_07 setup_blood_plates(var_08);
|
|
}
|
|
|
|
level thread maps\mp\_utility::func_6F74(::pressure_plate_player_listen,level.blood_plates);
|
|
}
|
|
|
|
//Function Number: 12
|
|
setup_blood_plates(param_00)
|
|
{
|
|
var_01 = self;
|
|
if(isdefined(self.blood_pool))
|
|
{
|
|
var_01.blood_pool moveto(var_01.blood_pool.var_116 + (0,0,30),0.05);
|
|
}
|
|
|
|
var_02 = "flag_plate_filled_" + param_00;
|
|
var_03 = "flag_plate_pressed_" + param_00;
|
|
common_scripts\utility::func_3C87(var_02);
|
|
common_scripts\utility::func_3C87(var_03);
|
|
var_01.blood_health = 0;
|
|
var_01.blood_health_max = 100;
|
|
var_01.var_D4 = param_00;
|
|
var_01.death_ping = "dig_blood_plate_ping" + param_00;
|
|
var_01.filled_flagname = var_02;
|
|
var_01.pressed_flagname = var_03;
|
|
var_01.plate_name = var_01.var_8260;
|
|
var_01.kill_count = 0;
|
|
var_01.plate_failsafe_nodes = [];
|
|
var_01.souls_max = 30;
|
|
if(var_01 == level.blood_plates["first_door"] || var_01 == level.blood_plates["trial"])
|
|
{
|
|
var_01.souls_max = 5;
|
|
}
|
|
|
|
if(var_01 == level.blood_plates["shelf"])
|
|
{
|
|
var_01.souls_max = 6;
|
|
}
|
|
|
|
var_04 = common_scripts\utility::func_44BE(var_01.var_1A2,"targetname");
|
|
foreach(var_06 in var_04)
|
|
{
|
|
var_07 = var_06.var_165;
|
|
if(!isdefined(var_07))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
switch(var_07)
|
|
{
|
|
case "plate_clip":
|
|
var_01.plate_clip = var_06;
|
|
var_01.plate_clip.var_A045 = ::blood_plate_unresolved_collide;
|
|
var_01.plate_clip.my_plate_struct = var_01;
|
|
break;
|
|
|
|
case "plate_failsafe_node":
|
|
var_01.plate_failsafe_nodes = common_scripts\utility::func_F6F(var_01.plate_failsafe_nodes,var_06);
|
|
break;
|
|
|
|
case "plate_model":
|
|
var_01.plate_model = var_06;
|
|
var_01.model_start_origin = var_06.var_116;
|
|
break;
|
|
|
|
case "plate_trig":
|
|
var_01.plate_trig = var_06;
|
|
var_01.plate_trig.associated_struct = var_01;
|
|
break;
|
|
|
|
case "plate_damage_trig":
|
|
var_01.plate_damage_trig = var_06;
|
|
break;
|
|
|
|
case "plate_hit_clip":
|
|
var_06 notsolid();
|
|
var_01.plate_hit_clip = var_06;
|
|
break;
|
|
|
|
case "plate_center_trig":
|
|
var_01.plate_center_trig = var_06;
|
|
break;
|
|
}
|
|
}
|
|
|
|
var_01.plate_model.disable_end_sound = 1;
|
|
var_01.plate_model.disable_auto_deregister = 1;
|
|
var_01.isbloodempty = 1;
|
|
var_01.isbloodfull = 0;
|
|
var_01.souls_current = 0;
|
|
var_01 common_scripts\utility::func_3799("plate_reserved");
|
|
var_01 thread blood_fill_think();
|
|
}
|
|
|
|
//Function Number: 13
|
|
blood_fill_think()
|
|
{
|
|
var_00 = self;
|
|
var_00 thread blood_state_think();
|
|
for(;;)
|
|
{
|
|
var_00 waittill("blood_status_updated");
|
|
if(lib_0547::func_5565(var_00.isbloodfull,0))
|
|
{
|
|
var_00 plate_enable_blood_collect();
|
|
}
|
|
|
|
if(lib_0547::func_5565(var_00.isbloodfull,1))
|
|
{
|
|
while(var_00.isbloodfull == 1)
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
if(var_00 common_scripts\utility::func_3794("plate_reserved"))
|
|
{
|
|
var_00 common_scripts\utility::func_37A1("plate_reserved");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 14
|
|
blood_state_think()
|
|
{
|
|
var_00 = self;
|
|
while(isdefined(var_00))
|
|
{
|
|
var_01 = var_00 get_blood_fill_frac();
|
|
if(var_01 >= 1)
|
|
{
|
|
var_00.isbloodfull = 1;
|
|
var_00.isbloodempty = 0;
|
|
var_00 thread play_fx_blood_full();
|
|
}
|
|
else if(1 < var_01 > 0)
|
|
{
|
|
var_00.isbloodfull = 0;
|
|
var_00.isbloodempty = 0;
|
|
var_00 thread delete_fx_blood_full();
|
|
}
|
|
else
|
|
{
|
|
var_00.isbloodfull = 0;
|
|
var_00.isbloodempty = 1;
|
|
var_00 thread delete_fx_blood_full();
|
|
}
|
|
|
|
if(isdefined(self.blood_pool))
|
|
{
|
|
thread blood_move_gutters(var_01);
|
|
}
|
|
|
|
var_00 notify("blood_status_updated");
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 15
|
|
get_blood_fill_frac()
|
|
{
|
|
var_00 = self;
|
|
if(!isdefined(var_00.souls_current))
|
|
{
|
|
var_01 = 0;
|
|
}
|
|
else
|
|
{
|
|
var_01 = var_01.souls_current / var_01.souls_max;
|
|
}
|
|
|
|
if(var_01 >= 1)
|
|
{
|
|
var_01 = 1;
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 16
|
|
blood_move_gutters(param_00)
|
|
{
|
|
if(lib_0547::func_5565(self.blood_pool.old_frac,param_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.blood_pool moveto(self.blood_pool.min_pos + (0,0,28 * param_00),0.05);
|
|
self.blood_pool.old_frac = param_00;
|
|
}
|
|
|
|
//Function Number: 17
|
|
plate_enable_blood_collect()
|
|
{
|
|
plate_blood_collect_think();
|
|
if(isdefined(self.collector))
|
|
{
|
|
self.collector.var_AC2C = 0;
|
|
self.collector.var_AC2D = self.collector.var_AC2C;
|
|
level notify(self.collector.var_695B);
|
|
}
|
|
}
|
|
|
|
//Function Number: 18
|
|
play_fx_blood_full()
|
|
{
|
|
if(isdefined(self.blood_full_fx))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.blood_full_fx = spawnlinkedfx(common_scripts\utility::func_44F5("dlc_zmb_dec_blood_plates_full"),self.plate_model,"TAG_ORIGIN");
|
|
triggerfx(self.blood_full_fx);
|
|
self.blood_full_fx lib_0378::func_8D74("aud_blood_plate_full_lp");
|
|
}
|
|
|
|
//Function Number: 19
|
|
delete_fx_blood_full()
|
|
{
|
|
if(!isdefined(self.blood_full_fx))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.blood_full_fx delete();
|
|
}
|
|
|
|
//Function Number: 20
|
|
plate_blood_collect_think()
|
|
{
|
|
var_00 = self;
|
|
var_00 endon("blood_drain");
|
|
var_00 endon("blood_empty");
|
|
var_00.onzombiesacrificedfunc = ::on_zombie_soul_collected_func;
|
|
var_00.optionaldisablearclightning = 1;
|
|
var_00 thread maps/mp/mp_zombies_soul_collection::beginazombiesoulcollectionobjectiveonstruct(var_00.souls_max,300,60,"plate_blood_collect_" + var_00.var_D4,undefined,"TAG_ORIGIN",undefined,"TAG_ORIGIN",undefined,var_00.plate_model,(0,0,16),undefined,1);
|
|
while(var_00.isbloodfull != 1)
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
var_00 notify("blood_plate_full");
|
|
}
|
|
|
|
//Function Number: 21
|
|
get_full_boss_blood_plates()
|
|
{
|
|
var_00 = [];
|
|
foreach(var_02 in level.blood_plates)
|
|
{
|
|
if(common_scripts\utility::func_562E(var_02.isbloodfull) && lib_0547::func_5565(var_02.var_8260,"plate_boss_room"))
|
|
{
|
|
var_00[var_00.size] = var_02;
|
|
}
|
|
}
|
|
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 22
|
|
get_not_full_boss_blood_plates()
|
|
{
|
|
var_00 = [];
|
|
foreach(var_02 in level.blood_plates)
|
|
{
|
|
if(!common_scripts\utility::func_562E(var_02.isbloodfull) && lib_0547::func_5565(var_02.var_8260,"plate_boss_room"))
|
|
{
|
|
var_00[var_00.size] = var_02;
|
|
}
|
|
}
|
|
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 23
|
|
func_A752(param_00,param_01)
|
|
{
|
|
self endon(param_00);
|
|
wait(param_01);
|
|
}
|
|
|
|
//Function Number: 24
|
|
blood_plate_boss_reserve(param_00)
|
|
{
|
|
var_01 = self;
|
|
var_01 common_scripts\utility::func_379A("plate_reserved");
|
|
if(isdefined(param_00))
|
|
{
|
|
var_01 thread blood_plate_reserved_fx(param_00);
|
|
}
|
|
|
|
var_01 func_A752("release_plate",25);
|
|
var_01 blood_plate_boss_release();
|
|
}
|
|
|
|
//Function Number: 25
|
|
blood_plate_boss_release()
|
|
{
|
|
var_00 = self;
|
|
var_00 common_scripts\utility::func_3796("plate_reserved");
|
|
}
|
|
|
|
//Function Number: 26
|
|
blood_plate_reserved_fx(param_00)
|
|
{
|
|
var_01 = self;
|
|
var_02 = launchbeam("zmb_geistkraft_blood_beam_med",var_01.plate_model,"TAG_ORIGIN",param_00,"TAG_WEAPON_RIGHT");
|
|
var_03 = launchbeam("zmb_geistkraft_blood_beam_med",var_01.plate_model,"TAG_ORIGIN",param_00,"j_elbow_le");
|
|
var_04 = launchbeam("zmb_geistkraft_blood_beam_med",var_01.plate_model,"TAG_ORIGIN",param_00,"j_elbow_ri");
|
|
var_05 = undefined;
|
|
if(lib_0547::func_5565(level.zombie_king,param_00))
|
|
{
|
|
var_05 = spawnlinkedfx(common_scripts\utility::func_44F5("dlc_zmb_dec_blood_plates_fullb"),self.plate_model,"TAG_ORIGIN");
|
|
triggerfx(var_05);
|
|
}
|
|
|
|
while(var_01 common_scripts\utility::func_3794("plate_reserved"))
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
var_02 delete();
|
|
var_03 delete();
|
|
var_04 delete();
|
|
if(isdefined(var_05))
|
|
{
|
|
var_05 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 27
|
|
blood_plate_subtract()
|
|
{
|
|
self notify("blood_drain");
|
|
self.souls_current = self.souls_current - 1;
|
|
if(self.souls_current < 0)
|
|
{
|
|
self.souls_current = 0;
|
|
}
|
|
}
|
|
|
|
//Function Number: 28
|
|
blood_plate_empty()
|
|
{
|
|
self notify("blood_empty");
|
|
self.souls_current = 0;
|
|
}
|
|
|
|
//Function Number: 29
|
|
blood_plate_empty_first_door()
|
|
{
|
|
self.souls_max = 30;
|
|
self notify("blood_empty");
|
|
self.souls_current = 0;
|
|
}
|
|
|
|
//Function Number: 30
|
|
blood_plate_unresolved_collide(param_00)
|
|
{
|
|
self.var_A048 = blood_plate_get_unresolved_collision_locs(self.my_plate_struct,param_00);
|
|
maps\mp\_movers::func_A047(param_00,0);
|
|
}
|
|
|
|
//Function Number: 31
|
|
blood_plate_get_unresolved_collision_locs(param_00,param_01)
|
|
{
|
|
var_02 = [];
|
|
if(isdefined(param_00))
|
|
{
|
|
var_02[var_02.size] = param_00;
|
|
}
|
|
|
|
if(isdefined(param_00.plate_failsafe_nodes) && isarray(param_00.plate_failsafe_nodes))
|
|
{
|
|
var_02 = common_scripts\utility::func_F73(var_02,param_00.plate_failsafe_nodes);
|
|
}
|
|
|
|
if(isdefined(level.var_9068.var_9090) && isarray(level.var_9068.var_9090))
|
|
{
|
|
var_02 = common_scripts\utility::func_F73(var_02,level.var_9068.var_9090);
|
|
}
|
|
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 32
|
|
on_zombie_soul_collected_func(param_00)
|
|
{
|
|
if(!isdefined(level.blood_plate_zombie_souls_on_field))
|
|
{
|
|
level.blood_plate_zombie_souls_on_field = 0;
|
|
}
|
|
|
|
plate_souls_incriment(param_00.var_116);
|
|
if(level.blood_plate_zombie_souls_on_field < level.zmb_max_soul_collection_beams)
|
|
{
|
|
thread blood_plate_soul_fx(param_00);
|
|
}
|
|
|
|
maps/mp/mp_zombies_soul_collection::try_play_scripted_soul_suck_anim("scripted_blood_plate");
|
|
}
|
|
|
|
//Function Number: 33
|
|
plate_souls_incriment(param_00)
|
|
{
|
|
var_01 = common_scripts\utility::func_4461(param_00,level.blood_plates,325);
|
|
if(!isdefined(var_01))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!lib_0547::func_5565(var_01.isbloodfull,1))
|
|
{
|
|
var_01.souls_current = var_01.souls_current + 1;
|
|
}
|
|
}
|
|
|
|
//Function Number: 34
|
|
blood_plate_soul_fx(param_00)
|
|
{
|
|
lib_0378::func_8D74("aud_blood_plate_absorb",param_00);
|
|
if(!isdefined(level.blood_plate_zombie_souls_on_field))
|
|
{
|
|
level.blood_plate_zombie_souls_on_field = 0;
|
|
}
|
|
|
|
self waittill("body_spawned",var_01);
|
|
if(!isdefined(var_01))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(param_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_02 = param_00;
|
|
var_03 = param_00.var_2E37;
|
|
var_04 = param_00.var_2DA5;
|
|
var_05 = param_00.var_2DA6;
|
|
level.blood_plate_zombie_souls_on_field++;
|
|
var_06 = launchbeam("zmb_geistkraft_blood_beam_med",var_02,var_03,var_01,"j_neck");
|
|
if(isdefined(var_04))
|
|
{
|
|
var_07 = var_03;
|
|
if(isdefined(var_05))
|
|
{
|
|
var_07 = var_05;
|
|
}
|
|
|
|
playfxontag(level.var_611[var_04],param_00,var_07);
|
|
}
|
|
|
|
wait(1);
|
|
if(isdefined(var_06))
|
|
{
|
|
var_06 delete();
|
|
}
|
|
|
|
level.blood_plate_zombie_souls_on_field--;
|
|
}
|
|
|
|
//Function Number: 35
|
|
pressure_plate_player_listen(param_00)
|
|
{
|
|
var_01 = self;
|
|
var_01 endon("disconnect");
|
|
level endon("disable_plate_movement");
|
|
var_02 = [];
|
|
foreach(var_04 in param_00)
|
|
{
|
|
var_02 = common_scripts\utility::func_F6F(var_02,var_04.plate_trig);
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
var_06 = undefined;
|
|
var_04 = undefined;
|
|
foreach(var_08 in var_02)
|
|
{
|
|
if(var_01 istouching(var_08))
|
|
{
|
|
var_06 = var_08;
|
|
}
|
|
}
|
|
|
|
if(isdefined(var_06))
|
|
{
|
|
var_04 = var_06.associated_struct;
|
|
var_0A = 1;
|
|
if(common_scripts\utility::func_3C77(var_04.pressed_flagname))
|
|
{
|
|
var_0A = 0;
|
|
}
|
|
|
|
if(isdefined(var_04.pressing_player))
|
|
{
|
|
var_0A = 0;
|
|
}
|
|
|
|
if(common_scripts\utility::func_562E(var_0A))
|
|
{
|
|
if(!lib_0547::func_5565(var_01.pressed_plate,var_04))
|
|
{
|
|
var_01.pressed_plate = var_04;
|
|
}
|
|
|
|
var_04 thread pressure_plate_press(var_01);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_01.pressed_plate = undefined;
|
|
foreach(var_08 in var_02)
|
|
{
|
|
var_04 = var_08.associated_struct;
|
|
if(lib_0547::func_5565(var_04.pressing_player,var_01))
|
|
{
|
|
var_04 thread pressure_plate_release();
|
|
}
|
|
}
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 36
|
|
pressure_plate_press(param_00)
|
|
{
|
|
var_01 = self;
|
|
if(isdefined(param_00))
|
|
{
|
|
var_01.pressing_player = param_00;
|
|
}
|
|
|
|
common_scripts\utility::func_3C8F(var_01.pressed_flagname);
|
|
level notify("plate_pressed",var_01.plate_name);
|
|
lib_0378::func_8D74("aud_blood_plate_press",var_01.plate_model);
|
|
var_01.plate_model moveto(var_01.model_start_origin + (0,0,-5),1,0.25,0.25);
|
|
wait(1);
|
|
}
|
|
|
|
//Function Number: 37
|
|
pressure_plate_release()
|
|
{
|
|
var_00 = self;
|
|
var_00.pressing_player = undefined;
|
|
common_scripts\utility::func_3C7B(var_00.pressed_flagname);
|
|
level notify("plate_unpressed",var_00.plate_name);
|
|
lib_0378::func_8D74("aud_blood_plate_release",var_00.plate_model);
|
|
var_00.plate_model moveto(var_00.model_start_origin,1,0.25,0.25);
|
|
wait(1);
|
|
}
|
|
|
|
//Function Number: 38
|
|
init_ice_blocks()
|
|
{
|
|
level.ice_blocks = getentarray("org_ice_block","targetname");
|
|
foreach(var_01 in level.ice_blocks)
|
|
{
|
|
var_01.is_ice_block = 1;
|
|
var_01.ice_health = 100;
|
|
var_01.drop_distance = 112;
|
|
var_02 = getentarray(var_01.var_1A2,"targetname");
|
|
foreach(var_04 in var_02)
|
|
{
|
|
switch(var_04.var_165)
|
|
{
|
|
case "mdl_ice_block":
|
|
var_01.mdl = var_04;
|
|
break;
|
|
|
|
case "mdl_ice_block_broken":
|
|
var_01.mdl_broke = var_04;
|
|
var_04 method_805C();
|
|
break;
|
|
|
|
case "clip_ice_block":
|
|
var_01.var_241F = var_04;
|
|
break;
|
|
|
|
case "clip_ice_block_broke":
|
|
var_04 notsolid();
|
|
var_01.clip_broke = var_04;
|
|
break;
|
|
|
|
case "trig_damage_check":
|
|
var_01.damage_trig = var_04;
|
|
var_05 = var_04 method_8216(0,0,-1);
|
|
var_06 = var_04 method_8216(1,1,1);
|
|
var_01.var_8302 = var_06[2] - var_05[2];
|
|
var_01.var_8303 = distance2d(var_05,var_06);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 39
|
|
setup_text_log_reveals()
|
|
{
|
|
var_00 = getentarray("lore_primary","script_noteworthy");
|
|
common_scripts\utility::func_3C87("flag_force_log_reveal");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_03 = getentarray(var_02.var_1A2,"targetname");
|
|
var_02.trigs = var_03;
|
|
var_04 = function_0337(var_02.var_8260,"lore");
|
|
common_scripts\utility::func_3C87("flag_log_reveal_" + var_04);
|
|
var_02 thread text_log_reveal_think("flag_log_reveal_" + var_04);
|
|
}
|
|
}
|
|
|
|
//Function Number: 40
|
|
text_log_reveal_think(param_00)
|
|
{
|
|
if(lib_0547::func_5565(self.var_8260,"lore31"))
|
|
{
|
|
return;
|
|
}
|
|
|
|
level thread maps\mp\_utility::func_6F74(::text_log_disable,self);
|
|
if(lib_0547::func_5565(self.var_8260,"lore32"))
|
|
{
|
|
common_scripts\utility::func_3CA2("flag_boss_complete","flag_force_log_reveal");
|
|
level thread maps\mp\_utility::func_6F74(::text_log_enable,self);
|
|
return;
|
|
}
|
|
|
|
common_scripts\utility::func_3CA2(param_00,"flag_force_log_reveal","flag_boss_complete");
|
|
thread text_log_enable_when_unseen();
|
|
}
|
|
|
|
//Function Number: 41
|
|
text_log_enable_when_unseen()
|
|
{
|
|
for(;;)
|
|
{
|
|
var_00 = 0;
|
|
foreach(var_02 in level.var_744A)
|
|
{
|
|
if(text_log_player_near_or_looking(var_02,self))
|
|
{
|
|
var_00 = 1;
|
|
}
|
|
}
|
|
|
|
if(!var_00)
|
|
{
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
wait(5);
|
|
}
|
|
}
|
|
|
|
var_04 = self.trigs[0].var_5F13;
|
|
var_05 = var_04.var_24D2;
|
|
level thread maps\mp\_utility::func_6F74(::text_log_enable,self);
|
|
}
|
|
|
|
//Function Number: 42
|
|
text_log_player_near_or_looking(param_00,param_01)
|
|
{
|
|
var_02 = distancesquared(param_00.var_116,param_01.var_116);
|
|
if(var_02 < 16384)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(var_02 > 250000)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!sighttracepassed(param_00.var_116,param_01.var_116,0,param_01,param_00))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_03 = param_00 geteye();
|
|
var_04 = param_00 geteyeangles();
|
|
var_05 = anglestoforward(var_04);
|
|
var_06 = vectornormalize(param_01.var_116 - var_03);
|
|
if(vectordot(var_05,var_06) > 0.766)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 43
|
|
text_log_enable(param_00)
|
|
{
|
|
param_00.trigs[0] common_scripts\utility::func_9DA3();
|
|
lib_054F::func_5F11(param_00.trigs[0]);
|
|
}
|
|
|
|
//Function Number: 44
|
|
text_log_disable(param_00)
|
|
{
|
|
param_00.trigs[0] common_scripts\utility::func_9D9F();
|
|
param_00 method_805C();
|
|
}
|
|
|
|
//Function Number: 45
|
|
handle_door_orb_blockers()
|
|
{
|
|
while(!isdefined(level.var_AC1D))
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
var_00 = getentarray("door_orb_blocker","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 thread door_orb_blocker_wait_for_door_open(var_02.var_165);
|
|
}
|
|
}
|
|
|
|
//Function Number: 46
|
|
door_orb_blocker_wait_for_door_open(param_00)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
self delete();
|
|
}
|
|
|
|
common_scripts\utility::func_3C9F(param_00);
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 47
|
|
spawn_ice_breakers_on_door_open()
|
|
{
|
|
lib_0547::func_A6F6();
|
|
var_00 = lib_053F::func_44A6("flag_limbo_to_cave_1");
|
|
var_00 waittill("scriptable_door_open");
|
|
level.ice_breaker_sacrifices = [];
|
|
var_01 = common_scripts\utility::func_46B7("zone_cave_spawners_ce_reveal","targetname");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_04 = lib_054D::func_90BA("zombie_generic",var_03,"zombie ce spawn",1,1,1);
|
|
var_04 lib_0547::func_84CB();
|
|
level.ice_breaker_sacrifices = common_scripts\utility::func_F6F(level.ice_breaker_sacrifices,var_04);
|
|
}
|
|
|
|
var_06 = common_scripts\utility::func_4461(var_01[0].var_116,level.var_744A);
|
|
if(isplayer(var_06))
|
|
{
|
|
var_06 maps\mp\_utility::func_2CED(4,::maps/mp/mp_zombie_descent_utils::vo_see_corpse_eater);
|
|
}
|
|
|
|
wait(0.5);
|
|
spawn_ice_breakers();
|
|
}
|
|
|
|
//Function Number: 48
|
|
player_trial_vision_test()
|
|
{
|
|
foreach(var_01 in level.var_744A)
|
|
{
|
|
var_01 thread maps/mp/mp_zombie_descent_ee_main::run_weapon_trial_vision();
|
|
var_01.istrialvisiontest = 1;
|
|
var_01 thread disable_trial_vision_test();
|
|
}
|
|
}
|
|
|
|
//Function Number: 49
|
|
disable_trial_vision_test()
|
|
{
|
|
wait(10);
|
|
self.istrialvisiontest = undefined;
|
|
}
|
|
|
|
//Function Number: 50
|
|
spawn_ice_breakers(param_00)
|
|
{
|
|
var_01 = getentarray("org_ice_block_scripted","targetname");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_04 = getentarray(var_03.var_1A2,"targetname");
|
|
foreach(var_06 in var_04)
|
|
{
|
|
switch(var_06.var_165)
|
|
{
|
|
case "mdl_ice_block":
|
|
var_03.mdl = var_06;
|
|
break;
|
|
|
|
case "mdl_ice_block_broken":
|
|
var_03.mdl_broke = var_06;
|
|
var_06 method_805C();
|
|
break;
|
|
|
|
case "clip_ice_block":
|
|
var_03.var_241F = var_06;
|
|
break;
|
|
|
|
case "clip_ice_block_broke":
|
|
var_06 notsolid();
|
|
var_03.clip_broke = var_06;
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
var_09 = common_scripts\utility::func_46B5("spawn_cave_ice_breaker_main","targetname");
|
|
var_0A = lib_054D::func_90BA("zombie_dlc4",var_09,"corpse_eater",0,1,0);
|
|
maps\mp\_utility::func_2CED(0.5,::spawn_ice_breaker_ice,var_0A);
|
|
var_0A.startcorpseeater = 1;
|
|
var_0A.cenerfedexplosion = 1;
|
|
wait(0.5);
|
|
playfx(level.var_611["zmb_desc_ice_falling"],var_09.var_116);
|
|
if(level.var_744A.size >= 3 || common_scripts\utility::func_562E(param_00))
|
|
{
|
|
var_0B = common_scripts\utility::func_46B5("spawn_cave_ice_breaker_main_2","targetname");
|
|
var_0C = lib_054D::func_90BA("zombie_dlc4",var_0B,"corpse_eater",0,1,0);
|
|
maps\mp\_utility::func_2CED(0.15,::spawn_ice_breaker_ice,var_0C);
|
|
var_0C.startcorpseeater = 1;
|
|
}
|
|
|
|
wait(0.25);
|
|
if(level.var_744A.size >= 4 || common_scripts\utility::func_562E(param_00))
|
|
{
|
|
var_0D = common_scripts\utility::func_46B5("spawn_cave_ice_breaker_main_3","targetname");
|
|
var_0E = lib_054D::func_90BA("zombie_dlc4",var_0D,"corpse_eater",0,1,0);
|
|
thread spawn_ice_breaker_ice(var_0E);
|
|
var_0E.startcorpseeater = 1;
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_03 maps/mp/mp_zombie_descent_ee_main::ice_block_break();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 51
|
|
spawn_ice_breaker_ice(param_00)
|
|
{
|
|
playfx(common_scripts\utility::func_44F5("ice_destruct_chunk"),param_00.var_116,anglestoforward(param_00.var_1D),anglestoup(param_00.var_1D));
|
|
}
|
|
|
|
//Function Number: 52
|
|
on_game_start_descent()
|
|
{
|
|
maps/mp/zombies/zombie_sizzler::func_D5();
|
|
maps/mp/zombies/zombie_corpse_eater::func_D5();
|
|
maps/mp/zombies/zombie_king::func_D5();
|
|
thread maps/mp/mp_zombie_descent_utils::initwavestories();
|
|
thread traps_init();
|
|
level.roundstartfuncgeneric = ::descent_round_start;
|
|
level.roundendfuncgeneric = ::descent_round_end;
|
|
maps\mp\zombies\_zombies_magicbox::func_7CEA("stg44_zm");
|
|
maps\mp\zombies\_zombies_magicbox::func_7CEA("svt40_zm");
|
|
maps\mp\zombies\_zombies_magicbox::func_7CEA("greasegun_zm");
|
|
maps\mp\zombies\_zombies_magicbox::func_7CEA("svt40_zm");
|
|
maps\mp\zombies\_zombies_magicbox::func_7CEA("mp40_zm");
|
|
maps\mp\zombies\_zombies_magicbox::func_7CEA("mp28_zm");
|
|
maps\mp\zombies\_zombies_magicbox::func_7CEA("fg42_zm");
|
|
maps\mp\zombies\_zombies_magicbox::func_7CEA("ppsh41_zm");
|
|
}
|
|
|
|
//Function Number: 53
|
|
descent_round_start()
|
|
{
|
|
}
|
|
|
|
//Function Number: 54
|
|
descent_round_end()
|
|
{
|
|
thread descent_attempt_wave_story();
|
|
if(level.var_A980 >= 3)
|
|
{
|
|
common_scripts\utility::func_3C8F("flag_log_reveal_24");
|
|
}
|
|
|
|
if(level.var_A980 >= 5)
|
|
{
|
|
common_scripts\utility::func_3C8F("flag_log_reveal_25");
|
|
}
|
|
|
|
if(level.var_A980 >= 7)
|
|
{
|
|
common_scripts\utility::func_3C8F("flag_log_reveal_26");
|
|
}
|
|
|
|
if(level.var_A980 >= 9)
|
|
{
|
|
common_scripts\utility::func_3C8F("flag_log_reveal_27");
|
|
}
|
|
|
|
if(level.var_A980 >= 11)
|
|
{
|
|
common_scripts\utility::func_3C8F("flag_log_reveal_28");
|
|
}
|
|
|
|
if(level.var_A980 >= 13)
|
|
{
|
|
common_scripts\utility::func_3C8F("flag_log_reveal_29");
|
|
}
|
|
|
|
if(level.var_A980 >= 15)
|
|
{
|
|
common_scripts\utility::func_3C8F("flag_log_reveal_30");
|
|
}
|
|
}
|
|
|
|
//Function Number: 55
|
|
descent_attempt_wave_story()
|
|
{
|
|
wait(randomintrange(1,3));
|
|
if(level.var_A980 >= 3 && !common_scripts\utility::func_562E(level.has_played_radio_convo_1) && common_scripts\utility::func_562E(maps/mp/mp_zombie_descent_utils::vo_can_play_radio_convo()))
|
|
{
|
|
level thread maps/mp/mp_zombie_descent_utils::vo_radio_convo_map_start();
|
|
return;
|
|
}
|
|
|
|
if(common_scripts\utility::func_24A6())
|
|
{
|
|
if(!common_scripts\utility::func_562E(level.bossceremonyactive))
|
|
{
|
|
level thread maps/mp/zombies/_zombies_audio_dlc2::playnextwavestory();
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 56
|
|
initprecache()
|
|
{
|
|
precacherumble("damage_heavy");
|
|
}
|
|
|
|
//Function Number: 57
|
|
initdescentweapons()
|
|
{
|
|
thread lib_057D::func_5162();
|
|
level thread lib_0580::func_D5();
|
|
maps/mp/zombies/weapons/_zombie_dlc4_melee::func_D5();
|
|
maps/mp/mp_zombie_descent_utils::vo_init_weapon_whispers();
|
|
}
|
|
|
|
//Function Number: 58
|
|
func_5375()
|
|
{
|
|
lib_055A::func_D5();
|
|
lib_055A::func_530A("zone_crash",1);
|
|
lib_055A::func_530A("zone_cave");
|
|
lib_055A::func_530A("zone_archives");
|
|
lib_055A::func_530A("zone_archives_closet");
|
|
lib_055A::func_530A("zone_archives_basement");
|
|
lib_055A::func_530A("zone_bridge");
|
|
lib_055A::func_530A("zone_storage");
|
|
lib_055A::func_530A("zone_gallery");
|
|
lib_055A::func_530A("zone_alter");
|
|
lib_055A::func_530A("zone_citadel");
|
|
lib_055A::func_530A("zone_lost",1,0);
|
|
lib_055A::func_530A("zone_trials_d",1,0);
|
|
lib_055A::func_530A("zone_trials_b",1,0);
|
|
lib_055A::func_530A("zone_trials_s",1,0);
|
|
lib_055A::func_530A("zone_trials_m",1,0);
|
|
lib_055A::func_530A("zone_sewers",1,0);
|
|
lib_055A::func_993("zone_crash","zone_cave","flag_limbo_to_cave_1");
|
|
lib_055A::func_993("zone_cave","zone_archives","flag_cave_to_archives_1");
|
|
lib_055A::func_993("zone_cave","zone_storage","flag_cave_to_storage_1");
|
|
lib_055A::func_993("zone_archives","zone_archives_closet","flag_archives_to_closet_1");
|
|
lib_055A::func_993("zone_archives","zone_archives_basement","flag_archives_to_basement_1");
|
|
lib_055A::func_993("zone_archives_closet","zone_archives_basement","flag_closet_to_basement_1");
|
|
lib_055A::func_993("zone_archives","zone_bridge","flag_archives_to_bridge_1");
|
|
lib_055A::func_993("zone_storage","zone_bridge","flag_storage_to_bridge_1");
|
|
lib_055A::func_993("zone_gallery","zone_storage","flag_gallery_to_storage_1");
|
|
lib_055A::func_993("zone_gallery","zone_alter","flag_gallery_to_alter_1");
|
|
lib_055A::func_993("zone_gallery","zone_bridge","flag_gallery_to_bridge_1");
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_CRASH","flag_limbo_to_cave_1",0);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_CAVES","flag_limbo_to_cave_1",1);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_CAVES","flag_cave_to_archives_1",0);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_ARCHIVES","flag_cave_to_archives_1",1);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_CAVES","flag_cave_to_storage_1",0);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_STORAGE","flag_cave_to_storage_1",1);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_CLOSET","flag_archives_to_closet_1",0);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_ARCHIVES","flag_archives_to_closet_1",1);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_ARCHIVES","flag_archives_to_basement_1",0);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_BASEMENT","flag_archives_to_basement_1",1);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_BASEMENT","flag_closet_to_basement_1",0);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_CLOSET","flag_closet_to_basement_1",1);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_ARCHIVES","flag_archives_to_basement_1",0);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_BASEMENT","flag_archives_to_basement_1",1);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_ARCHIVES","flag_archives_to_bridge_1",0);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_BRIDGE","flag_archives_to_bridge_1",1);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_STORAGE","flag_gallery_to_storage_1",0);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_GALLERY","flag_gallery_to_storage_1",1);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_GALLERY","flag_gallery_to_alter_1",0);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_ALTER","flag_gallery_to_alter_1",1);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_BRIDGE","flag_gallery_to_bridge_1",0);
|
|
lib_053F::func_7BE6(&"ZOMBIE_DLC4_AREA_GALLERY","flag_gallery_to_bridge_1",1);
|
|
lib_055A::func_88A();
|
|
}
|
|
|
|
//Function Number: 59
|
|
hack_swap_basement_cloest_door_flag()
|
|
{
|
|
var_00 = undefined;
|
|
var_01 = [];
|
|
var_02 = [];
|
|
var_03 = "flag_archives_to_basement_1";
|
|
var_04 = (820,-116,1388);
|
|
var_05 = undefined;
|
|
var_01 = common_scripts\utility::func_46B7("door","targetname");
|
|
var_06 = [];
|
|
foreach(var_08 in var_01)
|
|
{
|
|
if(lib_0547::func_5565(var_08.var_819A,var_03))
|
|
{
|
|
var_02[var_02.size] = var_08;
|
|
}
|
|
}
|
|
|
|
foreach(var_08 in var_02)
|
|
{
|
|
if(distance(var_04,var_08.var_116) < 150)
|
|
{
|
|
var_05 = var_08;
|
|
var_06 = getentarray(var_08.var_1A2,"targetname");
|
|
}
|
|
}
|
|
|
|
if(isdefined(var_05))
|
|
{
|
|
var_05.var_819A = "flag_closet_to_basement_1";
|
|
foreach(var_0D in var_06)
|
|
{
|
|
var_0D.var_819A = "flag_closet_to_basement_1";
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 60
|
|
func_5339()
|
|
{
|
|
lib_0557::func_786C();
|
|
maps/mp/mp_zombie_descent_ee_main::func_D5();
|
|
maps/mp/mp_zombie_descent_ee_side::func_D5();
|
|
maps/mp/mp_zombie_descent_ee_boss_fight::func_D5();
|
|
thread initquestnotebook();
|
|
}
|
|
|
|
//Function Number: 61
|
|
initflags()
|
|
{
|
|
common_scripts\utility::func_3C87("flag_boss_complete");
|
|
common_scripts\utility::func_3C87("flag_radio_picked_up");
|
|
common_scripts\utility::func_3C87("flag_blood_pool_0");
|
|
common_scripts\utility::func_3C87("flag_blood_pool_1");
|
|
common_scripts\utility::func_3C87("flag_blood_pool_2");
|
|
}
|
|
|
|
//Function Number: 62
|
|
initquestnotebook()
|
|
{
|
|
var_00 = [lib_0557::func_7838("quest_firstdoor","quest_firstdoor_bloodpool"),lib_0557::func_7838("quest_pap","quest_pap_1"),lib_0557::func_7838("quest_deathraven","quest_deathraven_activate_rush"),lib_0557::func_7838("quest_deathraven","quest_deathraven_pickup_weap"),"deathraven_spine_collected","deathraven_metal_collected",lib_0557::func_7838("quest_deathraven","quest_deathraven_assemble_weap"),lib_0557::func_7838("quest_deathraven","quest_deathraven_fuse_weap"),lib_0557::func_7838("quest_deathraven","quest_deathraven_enter_trial"),"flag_blood_pool_0","flag_blood_pool_1","stopper_collected","flag_blood_pool_2",lib_0557::func_7838("quest_bloodraven","quest_bloodraven_acquire_sheild"),"flag_radio_picked_up",lib_0557::func_7838("quest_bloodraven","quest_bloodraven_complete_trial"),"flag_stormraven_stopper_1_collected","flag_stormraven_stopper_2_collected","flag_stormraven_stopper_3_collected","flag_stormraven_stopper_4_collected","flag_stormraven_stoppers_placed","flag_stormraven_runes_charged","flag_stormraven_hammer_picked_up","flag_stormraven_charge_puzzle_activated","flag_stormraven_charge_puzzle_stage_three_complete",lib_0557::func_7838("quest_stormraven","step_stormraven_trial"),"moonraven_key_collected_01","moonraven_key_collected_02",lib_0557::func_7838("quest_moonraven","quest_moonraven_reveal_chart"),"flag_gears_collected_1","flag_gears_collected_2","flag_gears_collected_3","moonraven_gears_all_placed",lib_0557::func_7838("quest_moonraven","quest_moonraven_power_orrery"),lib_0557::func_7838("quest_moonraven","quest_moonraven_acquire_scepter"),"moon_constellation_1_complete","moon_constellation_2_complete","moon_constellation_3_complete",lib_0557::func_7838("quest_moonraven","quest_moonraven_unlock_trial"),lib_0557::func_7838("quest_moonraven","quest_moonraven_enter_trial"),"flag_plinth_all_weapons_placed",lib_0557::func_7838("quest_bossfight","quest_bossfight_start")];
|
|
for(var_01 = 0;!all_flags_exist(var_00);var_01++)
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
foreach(var_03 in var_00)
|
|
{
|
|
lib_0557::func_AB8C(var_03);
|
|
}
|
|
}
|
|
|
|
//Function Number: 63
|
|
all_flags_exist(param_00)
|
|
{
|
|
foreach(var_02 in param_00)
|
|
{
|
|
if(!common_scripts\utility::func_3C83(var_02))
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 64
|
|
__________________traps__________________()
|
|
{
|
|
}
|
|
|
|
//Function Number: 65
|
|
traps_init()
|
|
{
|
|
thread trap_archives_spikes();
|
|
}
|
|
|
|
//Function Number: 66
|
|
trap_archives_spikes()
|
|
{
|
|
level.var_9CFB = 1;
|
|
level.var_62B5 = 1;
|
|
level.var_611["trap_ready"] = loadfx("vfx/zombie/zmb_trap_light_orange_small");
|
|
level.var_611["trap_not_ready"] = loadfx("vfx/zombie/zmb_trap_light_orange_blink_small");
|
|
level.var_9CD1["ready_to_active"] = undefined;
|
|
level.var_9CD1["active_to_cooldown"] = undefined;
|
|
level.var_9CD1["cooldown_to_active"] = undefined;
|
|
var_00 = common_scripts\utility::func_46B5("trap_archives_spikes","script_noteworthy");
|
|
thread maps\mp\zombies\_zombies_traps::func_9CC6("trap_archives_spikes","active",::trap_archives_spikes_run);
|
|
}
|
|
|
|
//Function Number: 67
|
|
trap_archives_spikes_run(param_00)
|
|
{
|
|
level.traparchivespikes = param_00 common_scripts\utility::func_8FFC();
|
|
level.traparchivespikes.var_9CBB = "trap_archives_spikes";
|
|
level.traparchivespikes.var_9C92 = param_00;
|
|
param_00 trap_archives_spikes_handle_damage();
|
|
param_00.var_565F = 0;
|
|
}
|
|
|
|
//Function Number: 68
|
|
trap_archives_spikes_handle_damage()
|
|
{
|
|
self.var_565F = 1;
|
|
thread trap_archives_spikes_check_for_end();
|
|
var_00 = common_scripts\utility::func_46B7("archives_spike_trap_fx_point","script_noteworthy");
|
|
var_01 = [];
|
|
foreach(var_03 in var_00)
|
|
{
|
|
var_04 = lib_0547::func_9470(var_03.var_8260);
|
|
var_01[var_04] = var_03;
|
|
}
|
|
|
|
while(self.var_565F)
|
|
{
|
|
for(var_06 = 0;var_06 < var_01.size;var_06++)
|
|
{
|
|
var_07 = spawnfx(common_scripts\utility::func_44F5("spikeTrap"),var_01[var_06].var_116,anglestoforward(var_01[var_06].var_1D));
|
|
triggerfx(var_07);
|
|
thread trap_archives_spikes_damage_zombies(var_01[var_06]);
|
|
thread trap_archives_spikes_damage_players(var_01[var_06]);
|
|
lib_0378::func_8D74("aud_trap_spikes",var_01[var_06]);
|
|
wait(0.5);
|
|
var_07 delete();
|
|
}
|
|
|
|
for(var_06 = var_01.size - 1;var_06 >= 0;var_06--)
|
|
{
|
|
var_07 = spawnfx(common_scripts\utility::func_44F5("spikeTrap"),var_01[var_06].var_116,anglestoforward(var_01[var_06].var_1D));
|
|
triggerfx(var_07);
|
|
thread trap_archives_spikes_damage_zombies(var_01[var_06]);
|
|
thread trap_archives_spikes_damage_players(var_01[var_06]);
|
|
lib_0378::func_8D74("aud_trap_spikes",var_01[var_06]);
|
|
wait(0.5);
|
|
var_07 delete();
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 69
|
|
trap_archives_spikes_check_for_end()
|
|
{
|
|
common_scripts\utility::knock_off_battery("cooldown","no_power","ready","deactivate");
|
|
self.var_565F = 0;
|
|
}
|
|
|
|
//Function Number: 70
|
|
trap_archives_spikes_damage_zombies(param_00)
|
|
{
|
|
var_01 = lib_0547::func_408F();
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_04 = distance2d(var_03.var_116,param_00.var_116);
|
|
if(var_04 < 100 && var_03.var_116[2] < self.var_116[2])
|
|
{
|
|
if(isalive(var_03) && var_03.var_BA4 != "traverse")
|
|
{
|
|
if(var_03 lib_0547::func_580A())
|
|
{
|
|
var_03 dodamage(var_03.var_BC * 0.1,self.var_116,level.traparchivespikes,level.traparchivespikes,"MOD_EXPLOSIVE","trap_zm_mp");
|
|
continue;
|
|
}
|
|
|
|
var_03 dodamage(var_03.var_BC + 666,self.var_116,level.traparchivespikes,level.traparchivespikes,"MOD_EXPLOSIVE","trap_zm_mp");
|
|
if(!isdefined(var_03.hitbytrap))
|
|
{
|
|
foreach(var_06 in level.var_744A)
|
|
{
|
|
var_06 maps/mp/gametypes/zombies::func_47C7("kill_trap");
|
|
var_03.hitbytrap = 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 71
|
|
trap_archives_spikes_damage_players(param_00)
|
|
{
|
|
var_01 = level.var_744A;
|
|
foreach(var_03 in var_01)
|
|
{
|
|
if(!isalive(var_03))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(lib_0547::func_577E(var_03))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_04 = distance2d(var_03.var_116,param_00.var_116);
|
|
if(var_04 < 100 && var_03.var_116[2] < self.var_116[2])
|
|
{
|
|
if(isalive(var_03) && !lib_0547::func_577E(var_03))
|
|
{
|
|
var_03 dodamage(5,self.var_116,undefined,undefined,"MOD_CRUSH");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 72
|
|
door_death_fix()
|
|
{
|
|
while(!isdefined(level.var_AC1D))
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
add_zombie_door_collision_handling("flag_gallery_to_bridge_1",1,1);
|
|
}
|
|
|
|
//Function Number: 73
|
|
add_zombie_door_collision_handling(param_00,param_01,param_02)
|
|
{
|
|
var_03 = get_zombie_door(param_00);
|
|
foreach(var_05 in var_03.var_64C5)
|
|
{
|
|
var_03 thread assign_collision_handling(var_05,param_01,param_02);
|
|
}
|
|
}
|
|
|
|
//Function Number: 74
|
|
get_zombie_door(param_00)
|
|
{
|
|
foreach(var_02 in level.var_AC1D)
|
|
{
|
|
if(lib_0547::func_5565(var_02.var_819A,param_00))
|
|
{
|
|
return var_02;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 75
|
|
assign_collision_handling(param_00,param_01,param_02)
|
|
{
|
|
param_00.var_A048 = [];
|
|
var_03 = 2;
|
|
foreach(var_05 in self.var_8301)
|
|
{
|
|
if(common_scripts\utility::func_562E(param_01))
|
|
{
|
|
param_00 assign_door_collision_node(var_05,1);
|
|
}
|
|
|
|
if(common_scripts\utility::func_562E(param_02))
|
|
{
|
|
param_00 assign_door_collision_node(var_05,0);
|
|
}
|
|
}
|
|
|
|
param_00.var_A045 = ::zmd_door_collision_handler;
|
|
}
|
|
|
|
//Function Number: 76
|
|
assign_door_collision_node(param_00,param_01)
|
|
{
|
|
var_02 = spawnstruct();
|
|
var_02.var_116 = getclosestpointonnavmesh(param_00.var_116 + pow(-1,!common_scripts\utility::func_562E(param_01)) * 32 * vectornormalize(anglestoright(param_00.var_1D)));
|
|
self.var_A048 = common_scripts\utility::func_F6F(self.var_A048,var_02);
|
|
}
|
|
|
|
//Function Number: 77
|
|
zmd_door_collision_handler(param_00)
|
|
{
|
|
maps\mp\_movers::func_A047(param_00,0);
|
|
} |