/******************************************************************* * Decompiled By: Bog * Decompiled File: 3406.gsc * Game: Call of Duty: Infinite Warfare * Platform: PC * Function Count: 38 * Decompile Time: 18 ms * Timestamp: 10/27/2023 12:27:05 AM *******************************************************************/ //Function Number: 1 func_6B8F() { scripts\common\utility::flag_init("fast_travel_init_done"); level.end_portal_name = "main_street"; level.var_8E63 = 0; func_95D9(); level.fast_travel_spots = []; level.var_6B91 = []; var_00 = scripts\common\utility::getstructarray("fast_travel","script_noteworthy"); level.var_5592 = ::func_5591; level.var_6B8D = ::func_126BF; level.var_D679 = (646.605,701.459,105.882); foreach(var_02 in var_00) { level.var_6B91[level.var_6B91.size] = var_02; var_02 func_95DA(); } scripts\common\utility::flag_set("fast_travel_init_done"); level thread func_8E62(); level thread func_B23A(); level thread func_172F(); level thread func_172E(); scripts\common\utility::flag_init("disable_portals"); scripts\common\utility::flag_init("pap_portal_used"); } //Function Number: 2 func_95D9() { level._effect["hidden_room_portal_locked"] = loadfx("vfx/iw7/_requests/coop/vfx_cp_z_portal_01_idle.vfx"); level._effect["hidden_room_portal_locked_exit"] = loadfx("vfx/iw7/_requests/coop/vfx_cp_z_portal_01_out.vfx"); level._effect["hidden_room_portal_locked_charging"] = loadfx("vfx/iw7/levels/cp_zmb/vfx_cp_z_portal_01.vfx"); level._effect["hidden_room_portal"] = loadfx("vfx/iw7/core/impact/energy_sm/vfx_cp_z_portal_02.vfx"); } //Function Number: 3 func_95DA() { level endon("game_ended"); var_00 = getentarray("portal_center","targetname"); var_01 = level.end_portal_name == self.script_area; if(!var_01) { var_00 = scripts\common\utility::func_782F(self.origin,var_00); self.var_D682 = var_00[0]; func_F4AA(); } else { var_00 = scripts\common\utility::func_782F(self.origin,var_00); self.var_D682 = var_00[0]; func_F4AA(); } self.end_positions = scripts\common\utility::getstructarray(self.target,"targetname"); level.fast_travel_spots[self.script_area] = self; var_02 = getentarray("portal_trigger","targetname"); var_02 = scripts\common\utility::func_782F(self.origin,var_02); self.var_D680 = var_02[0]; self.var_D674 = 0; thread func_D681(); var_03 = getentarray(self.target,"targetname"); var_03 = scripts\common\utility::func_782F(self.origin,var_03); self.var_1B9 = var_03[0]; if(isdefined(self.var_1B9)) { self.var_1B9 setlightintensity(0); } self.var_D776 = 0; self.var_D674 = 0; self.var_D67E = 0; self.var_D677 = 0; thread func_8947(var_01); } //Function Number: 4 func_8947(param_00) { var_01 = self.script_area; if(var_01 == "moon") { var_02 = getentarray("rangetarget","targetname"); foreach(var_04 in var_02) { var_04 hide(); } } if(param_00) { for(;;) { var_06 = level scripts\common\utility::func_13734("power_on",self.var_D71C + " power_on","portal_on","power_off"); if(var_06 != "power_off") { self.var_D776 = 1; self.var_D674 = 1; func_1297F(0); getent("center_portal","targetname") setscriptablepartstate("model","on"); continue; } self.var_D776 = 0; func_1297F(0); wait(0.25); } return; } for(;;) { var_06 = level scripts\common\utility::func_13734("power_on",self.var_D71C + " power_on","power_off"); if(scripts\common\utility::flag("disable_portals")) { continue; } if(var_06 != "power_off") { if(scripts\cp\_utility::map_check(0)) { level thread scripts\cp\_vo::func_1769("dj_portal_use_nag","zmb_dj_vo",60,15,2,1); } scripts\cp\_vo::try_to_play_vo_on_all_players("nag_use_portal",1); switch(var_01) { default: self.var_D776 = 1; self.var_D674 = 1; self.var_D67E = 0; self.var_D677 = 0; if(isdefined(self.var_1B9)) { self.var_1B9 setlightintensity(1); } func_F556(); level notify("portal_on"); break; } } else { self.var_D776 = 0; if(isdefined(self.var_D682)) { self.var_D682 stoploopsound(); func_F4AA(); } if(isdefined(self.var_1B9)) { self.var_1B9 setlightintensity(0); } } wait(0.25); } } //Function Number: 5 func_C8A9() { self endon("disconnect"); if(!isdefined(self.var_C8A8)) { self.var_C8A8 = 1; var_00 = 30; self setclientomnvar("zombie_papTimer",var_00); wait(1); for(;;) { var_00--; if(var_00 < 0) { var_00 = 30; wait(1); break; } self setclientomnvar("zombie_papTimer",var_00); wait(1); } self setclientomnvar("zombie_papTimer",-1); self notify("kicked_out"); wait(30); self.var_C8A8 = undefined; } } //Function Number: 6 func_172F() { var_00 = getent("fast_travel_tube_start","targetname"); var_01 = anglestoforward(var_00.angles); var_02 = spawnfx(level._effect["vfx_zmb_portal_base_01"],var_00.origin + (0,0,15),var_01); triggerfx(var_02); var_00 = getent("fast_travel_tube_end","targetname"); var_01 = anglestoforward(var_00.angles); var_02 = spawnfx(level._effect["vfx_zmb_portal_centhub"],var_00.origin + (0,0,15),var_01); triggerfx(var_02); } //Function Number: 7 func_172E() { var_00 = getent("hidden_travel_tube_start","targetname"); var_01 = anglestoforward(var_00.angles); var_02 = spawnfx(level._effect["vfx_zmb_portal_centhub"],var_00.origin + (0,0,15),var_01); triggerfx(var_02); var_00 = getent("hidden_travel_tube_end","targetname"); var_01 = anglestoforward(var_00.angles + (0,180,0)); var_02 = spawnfx(level._effect["hidden_room_portal"],var_00.origin + (0,0,15),var_01); triggerfx(var_02); } //Function Number: 8 func_6B8E(param_00,param_01) { if(scripts\common\utility::flag("disable_portals")) { return ""; } if(param_00.var_E1B9 && !param_00.var_D776) { return &"COOP_INTERACTIONS_REQUIRES_POWER"; } if(param_00.script_area == level.end_portal_name) { if(scripts\common\utility::istrue(level.var_8E61)) { return &"CP_ZMB_INTERACTIONS_HIDDEN_TELEPORT"; } else if(level.var_8E63) { return &"COOP_INTERACTIONS_COOLDOWN"; } else { return &"CP_ZMB_INTERACTIONS_EXIT_PORTAL"; } } if(!scripts\common\utility::istrue(param_00.var_D674)) { if(param_00.var_D67E) { return &"COOP_INTERACTIONS_COOLDOWN"; } else { return ""; } } return level.interaction_hintstrings[param_00.script_noteworthy]; } //Function Number: 9 func_5591(param_00,param_01,param_02) { param_00 endon("death"); param_00 scripts\cp\_utility::allow_player_teleport(0); param_00 waittill(param_02); wait(param_01); if(!param_00 scripts\cp\_utility::isteleportenabled()) { param_00 scripts\cp\_utility::allow_player_teleport(1); } param_00 notify("can_teleport"); } //Function Number: 10 func_E7F4(param_00,param_01) { if(scripts\common\utility::flag("disable_portals")) { return; } if(!param_01 scripts\cp\_utility::isteleportenabled()) { param_01 scripts\cp\_interaction::func_DE6E(); return; } if(!scripts\common\utility::istrue(param_00.var_D674)) { return; } var_02 = 0.5; if(param_00.script_area != level.end_portal_name) { if(scripts\common\utility::flag("disable_portals")) { param_01 scripts\cp\_interaction::func_DE6E(); return; } var_03 = 0; if(param_01 scripts\cp\_persistence::func_D0BB(var_03)) { param_01 scripts\cp\_interaction::func_11449(var_03,"fast_travel"); param_00 thread func_6B8B(); return; } param_01 thread scripts\cp\_vo::try_to_play_vo("no_cash","zmb_comment_vo","high",30,0,0,1,50); param_01 scripts\cp\_interaction::func_9A3C(param_00,&"COOP_INTERACTIONS_NEED_MONEY"); param_01 scripts\cp\_interaction::func_DE6E(); return; } if(scripts\common\utility::istrue(level.var_8E61)) { param_01 thread func_5591(param_01,var_02,"fast_travel_complete"); param_00 thread func_126BE(param_01); } } //Function Number: 11 func_6AF8(param_00) { self.var_13DB4 = 1; lib_0D12::func_6626(1,param_00); wait(param_00); if(scripts\common\utility::istrue(self.var_13DB4)) { lib_0D12::func_6978(1); self.var_13DB4 = 0; } } //Function Number: 12 func_126BF(param_00,param_01) { param_00 scripts\cp\powers\coop_powers::func_D728(); param_00.disable_consumables = 1; param_00 scripts\cp\zombies\zombie_afterlife_arcade::func_1794(); var_02 = func_BC83(param_00,"fast_travel_tube_start","fast_travel_tube_end",param_01); level.fast_travel_spots[level.end_portal_name] func_1164E(param_00); param_00 thread scripts\cp\zombies\zombie_afterlife_arcade::func_E0AE(0.1); var_03 = (646.605,701.459,105.882); var_04 = anglestoforward((0,90,0)); playfx(level._effect["vfx_zmb_portal_exit_burst"],var_03,var_04); wait(0.1); var_02 delete(); if(!isdefined(param_01)) { if(!scripts\common\utility::istrue(self.var_13068)) { self.var_13068 = 1; var_05 = 0; var_06 = self.script_area; switch(var_06) { case "moon": var_05 = 1; break; case "europa": var_05 = 2; break; case "mars": var_05 = 3; break; case "arcade": var_05 = 0; break; default: var_05 = 0; break; } level notify("turn_on_portal_light",int(var_05)); if(func_1BF8()) { level.last_portal_opener = param_00; } } } param_00 notify("fast_travel_complete"); } //Function Number: 13 func_CE6F(param_00,param_01) { if(!isdefined(level.var_12913)) { level.var_12913 = 1; } if(scripts\common\utility::istrue(param_00.var_13068)) { return; } if(scripts\common\utility::istrue(param_01)) { return; } switch(level.var_12913) { case 1: self playlocalsound("announcer_portal_1of4"); break; case 2: self playlocalsound("announcer_portal_2of4"); break; case 3: self playlocalsound("announcer_portal_3of4"); break; case 4: level notify("pap_portal_unlocked"); self playlocalsound("announcer_portal_4of4"); break; default: break; } level.var_12913++; } //Function Number: 14 func_126BE(param_00) { param_00 scripts\cp\powers\coop_powers::func_D728(); param_00 notify("delete_equipment"); param_00.disable_consumables = 1; param_00 scripts\cp\zombies\zombie_afterlife_arcade::func_1794(); var_01 = func_BC83(param_00,"hidden_travel_tube_start","hidden_travel_tube_end"); param_00 func_11648(); param_00 thread scripts\cp\zombies\zombie_afterlife_arcade::func_E0AE(0.1); wait(0.1); var_01 delete(); } //Function Number: 15 func_8E60(param_00) { param_00 method_80F3(); param_00 notify("delete_equipment"); param_00 scripts\cp\zombies\zombie_afterlife_arcade::func_1794(); var_01 = func_BC83(param_00,"hidden_travel_tube_end","hidden_travel_tube_start",1); level.fast_travel_spots[level.end_portal_name] func_1164E(param_00); param_00 thread scripts\cp\zombies\zombie_afterlife_arcade::func_E0AE(0.1); wait(0.1); var_01 delete(); if(scripts\common\utility::istrue(param_00.var_13DB4)) { param_00 lib_0D12::func_6978(1); param_00.var_13DB4 = 0; } param_00 scripts\cp\_utility::func_E0E6("papRoom",0); param_00.var_9C54 = undefined; param_00.kicked_out = undefined; param_00 set_in_pap_room(param_00,0); param_00 notify("fast_travel_complete"); scripts\cp\_vo::func_E01F("ww_pap_nag"); scripts\cp\_vo::func_E01F("nag_find_pap"); } //Function Number: 16 set_in_pap_room(param_00,param_01) { param_00.is_in_pap = param_01; } //Function Number: 17 is_in_pap_room(param_00) { return scripts\common\utility::istrue(self.is_in_pap); } //Function Number: 18 func_BC83(param_00,param_01,param_02,param_03) { param_00 earthquakeforplayer(0.3,0.2,param_00.origin,200); var_04 = getent(param_01,"targetname"); var_05 = getent(param_02,"targetname"); param_00 cancelmantle(); param_00.var_C004 = 1; param_00.var_C016 = 1; var_06 = var_04.origin + (0,0,-45); var_07 = var_05.origin + (0,0,-45); param_00.var_9BE1 = 1; param_00 scripts\cp\_utility::func_17C0("fast_travel",0,0); param_00 scripts\cp\_utility::func_1C5C(1); param_00 dontinterpolate(); param_00 setorigin(var_06); param_00 setplayerangles(var_04.angles); param_00 playlocalsound("zmb_portal_travel_lr"); var_08 = spawn("script_origin",var_06); param_00 playerlinkto(var_08); param_00 method_8232(); wait(0.1); param_00 thread scripts\cp\zombies\zombie_afterlife_arcade::func_E0AE(0.1); var_08 moveto(var_07,1); wait(1); param_00.var_9BE1 = undefined; param_00 scripts\cp\_utility::func_E0E6("fast_travel",0); if(param_00 scripts\cp\_utility::func_9E3A()) { param_00 scripts\cp\_utility::func_1C5C(0); } param_00.var_9BE1 = undefined; param_00.var_C004 = 0; param_00.var_C016 = 0; param_00 scripts\cp\zombies\zombie_afterlife_arcade::func_1794(); return var_08; } //Function Number: 19 func_B23A() { var_00 = 0; var_01 = getent("center_portal","targetname"); while(var_00 < 4) { level waittill("turn_on_portal_light",var_02); var_03 = undefined; switch(var_02) { case 0: var_01 setscriptablepartstate("light2","show"); break; case 1: var_01 setscriptablepartstate("light1","show"); break; case 2: var_01 setscriptablepartstate("light3","show"); break; case 3: var_01 setscriptablepartstate("light4","show"); break; } var_00++; } } //Function Number: 20 func_1164E(param_00) { var_01 = undefined; while(!isdefined(var_01)) { foreach(var_03 in self.end_positions) { if(!positionwouldtelefrag(var_03.origin)) { var_01 = var_03; } } if(!isdefined(var_01)) { var_05 = scripts\cp\_utility::func_13192(anglestoforward(self.end_positions[0].angles,64)); var_01 = self.end_positions[0].origin + var_05; } wait(0.1); } param_00 method_8447(); param_00 unlink(); param_00 dontinterpolate(); param_00 setorigin(var_01.origin); param_00 setplayerangles(var_01.angles); param_00.disable_consumables = undefined; param_00 scripts\cp\powers\coop_powers::func_D72E(); param_00 thread scripts\cp\_vo::try_to_play_vo("portal_exit","zmb_comment_vo"); } //Function Number: 21 func_1BF8() { if(getdvarint("debug_teleport_quest_done",0) == 1) { return 1; } foreach(var_01 in level.fast_travel_spots) { if(var_01.script_area == level.end_portal_name) { continue; } if(!scripts\common\utility::istrue(var_01.var_13068)) { return 0; } } return 1; } //Function Number: 22 func_8E62() { for(;;) { if(func_1BF8()) { break; } wait(0.1); } if(isdefined(level.last_portal_opener)) { if(isdefined(level.last_portal_opener.var_134FD)) { switch(level.last_portal_opener.var_134FD) { case "p1_": level thread scripts\cp\_vo::try_to_play_vo("portal_pap_valleygirl_1","zmb_dialogue_vo","highest",666,0,0,0,100); break; case "p2_": level thread scripts\cp\_vo::try_to_play_vo("portal_pap_nerd_1","zmb_dialogue_vo","highest",666,0,0,0,100); break; case "p3_": level thread scripts\cp\_vo::try_to_play_vo("portal_pap_rapper_1","zmb_dialogue_vo","highest",666,0,0,0,100); break; case "p4_": level thread scripts\cp\_vo::try_to_play_vo("portal_pap_jock_1","zmb_dialogue_vo","highest",666,0,0,0,100); break; default: break; } } } foreach(var_01 in level.players) { var_01 thread scripts\cp\_vo::func_1769("nag_find_pap","zmb_comment_vo",60,15,6,1); } level thread scripts\cp\_vo::func_1769("dj_quest_ufo_pap1_nag","zmb_dj_vo",120,100,2,1); func_15B6(); } //Function Number: 23 func_15B6() { level endon("game_ended"); level thread func_1298D(); for(;;) { level.var_8E61 = 1; func_1297F(1); level waittill("hidden_room_portal_used"); if(scripts\common\utility::istrue(level.var_C617)) { continue; } wait(30); level.var_8E61 = 0; level.var_8E63 = 1; level notify("hidden_room_portal_cooldown_start"); func_1297F(0); wait(60); level.var_8E63 = 1; level notify("hidden_room_portal_cooldown_over"); } } //Function Number: 24 func_1297F(param_00) { if(param_00) { getent("center_portal","targetname") setscriptablepartstate("portal","active"); return; } getent("center_portal","targetname") setscriptablepartstate("portal","powered_on"); } //Function Number: 25 func_1298D() { var_00 = getent("hidden_room_portal","targetname"); var_01 = anglestoforward(var_00.angles); var_02 = spawnfx(level._effect["vfx_zmb_portal_centhub"],var_00.origin,var_01); triggerfx(var_02); func_11627(var_00); } //Function Number: 26 func_11627(param_00) { param_00 makeusable(); param_00 sethintstring(&"CP_ZMB_INTERACTIONS_HIDDEN_LEAVE"); param_00.var_D67A = 1; for(;;) { param_00 waittill("trigger",var_01); if(!isdefined(var_01.kicked_out)) { var_01 notify("left_hidden_room_early"); var_01.disable_consumables = 1; func_8E60(var_01); } wait(0.1); } } //Function Number: 27 func_11648() { self endon("left_hidden_room_early"); set_in_pap_room(self,1); scripts\cp\_utility::func_17C0("papRoom",0,0); self.var_9C54 = 1; self.disable_consumables = undefined; var_00 = scripts\common\utility::getstruct("hidden_room_spot","targetname"); self unlink(); self dontinterpolate(); scripts\cp\powers\coop_powers::func_D72E(); self setorigin(var_00.origin); self setplayerangles(var_00.angles); self method_8447(); level notify("hidden_room_portal_used"); thread func_8E64(); } //Function Number: 28 func_8E64() { self endon("left_hidden_room_early"); self endon("disconnect"); self endon("last_stand"); self.kicked_out = undefined; if(!scripts\common\utility::flag("pap_portal_used")) { scripts\common\utility::flag_set("pap_portal_used"); } thread func_C8A9(); level thread pap_vo(self); self waittill("kicked_out"); self.kicked_out = 1; level thread func_8E60(self); } //Function Number: 29 pap_vo(param_00) { if(level.var_C8A3 != 1) { param_00 thread scripts\cp\_vo::try_to_play_vo("pap_room_first","zmb_pap_vo"); } level.var_C8A3 = 1; wait(4); param_00 thread scripts\cp\_vo::try_to_play_vo("ww_pap_nag","zmb_pap_vo","high",undefined,undefined,undefined,1); } //Function Number: 30 func_6B8B() { self.var_D674 = 0; self.var_D682.angles = self.var_D682.angles + (0,180,0); self.var_D677 = 1; func_F2FE(); wait(3); self.var_D677 = 0; self.var_D67A = 1; func_F28A(); wait(15); self.var_D67A = 0; func_F30B(); self.var_D682.angles = self.var_D682.angles - (0,180,0); self.var_D682 stoploopsound(); self.var_1B9 setlightintensity(0); self.var_D67E = 1; wait(30); self.var_D674 = 1; self.var_D67E = 0; func_DE70(); self.var_1B9 setlightintensity(10); func_F556(); } //Function Number: 31 func_DE70() { foreach(var_01 in level.players) { if(isdefined(var_01.var_A8D3) && var_01.var_A8D3 == self) { var_01 scripts\cp\_interaction::func_DE6E(); } } } //Function Number: 32 func_D678() { if(isdefined(self.var_D67C)) { self.var_D67C delete(); } } //Function Number: 33 func_D681() { level endon("game_ended"); if(!isdefined(self.var_D680)) { return; } self.var_D67A = 0; var_00 = 0.5; for(;;) { self.var_D680 waittill("trigger",var_01); if(scripts\common\utility::flag("disable_portals")) { wait(0.05); continue; } if(isplayer(var_01) && self.var_D67A) { if(scripts\cp\_laststand::player_in_laststand(var_01)) { wait(0.05); continue; } scripts\cp\zombies\zombie_analytics::func_AF85(level.wave_num,self.script_area); if(scripts\common\utility::istrue(level.var_13DB5)) { var_01 thread func_5591(var_01,var_00,"fast_travel_complete"); var_01 thread func_6AF8(30); level notify("player_entering_wor_changed_portal",var_01); thread func_126BE(var_01); } else { var_01 thread func_5591(var_01,var_00,"fast_travel_complete"); thread func_126BF(var_01); } } wait(0.1); } } //Function Number: 34 func_F556() { self.var_D682 setscriptablepartstate("portal","powered_on"); } //Function Number: 35 func_F2FE() { self.var_D682 setscriptablepartstate("portal","charging"); } //Function Number: 36 func_F4AA() { self.var_D682 setscriptablepartstate("portal","off"); } //Function Number: 37 func_F28A() { self.var_D682 setscriptablepartstate("portal","active"); } //Function Number: 38 func_F30B() { self.var_D682 setscriptablepartstate("portal","off"); }