/******************************************************************* * Decompiled By: Bog * Decompiled File: scripts\mp\killstreaks\_dronehive.gsc * Game: Call of Duty: Infinite Warfare * Platform: PC * Function Count: 30 * Decompile Time: 1409 ms * Timestamp: 10/27/2023 12:28:27 AM *******************************************************************/ //Function Number: 1 init() { scripts\mp\killstreaks\_killstreaks::func_DEFB("drone_hive",::func_128E3,undefined,undefined,undefined,::func_13C8C); level.var_5CB9 = getentarray("remoteMissileSpawn","targetname"); foreach(var_01 in level.var_5CB9) { var_01.var_1155F = getent(var_01.target,"targetname"); } var_03 = ["passive_predator","passive_no_missiles","passive_implosion","passive_rapid_missiles"]; scripts\mp\_killstreak_loot::func_DF07("drone_hive",var_03); } //Function Number: 2 func_13C8C(param_00) { self setclientomnvar("ui_remote_control_sequence",1); } //Function Number: 3 func_128E3(param_00) { return func_1307F(self,param_00.var_AC68,param_00); } //Function Number: 4 func_1307F(param_00,param_01,param_02) { if(isdefined(self.var_12B90) && self.var_12B90) { return 0; } var_03 = scripts\mp\killstreaks\_killstreaks::func_D507(param_02); if(!var_03) { return 0; } param_00 scripts\common\utility::func_1C76(0); level thread func_B9CB(param_00); level thread func_B9DD(param_00); level thread func_B9FD(param_00); level thread func_E846(param_00,param_01,param_02.var_110EA,param_02); return 1; } //Function Number: 5 func_13AA4(param_00) { param_00 endon("killstreak_disowned"); param_00 endon("disconnect"); level endon("game_ended"); self endon("death"); for(;;) { level waittill("host_migration_begin"); if(isdefined(self)) { param_00 thermalvisionon(); param_00 thermalvisionfofoverlayon(); continue; } param_00 setclientomnvar("ui_predator_missile",2); } } //Function Number: 6 func_13AA2(param_00) { param_00 endon("killstreak_disowned"); param_00 endon("disconnect"); level endon("game_ended"); self endon("death"); for(;;) { level waittill("host_migration_end"); if(isdefined(self)) { param_00 setclientomnvar("ui_predator_missile",1); param_00 setclientomnvar("ui_predator_missiles_left",self.var_B8AF); continue; } param_00 setclientomnvar("ui_predator_missile",2); } } //Function Number: 7 watchclosetogoal(param_00) { param_00 endon("killstreak_disowned"); param_00 endon("disconnect"); level endon("game_ended"); var_01 = scripts\common\trace::func_48BC(1,1,1,1,1,1,1); while(isdefined(self)) { var_02 = scripts\common\trace::func_DCED(self.origin,self.origin - (0,0,1000),level.var_3CB5,var_01); if(isdefined(var_02["position"]) && distancesquared(self.origin,var_02["position"]) < 5000) { break; } scripts\common\utility::func_136F7(); } param_00 thread scripts\mp\killstreaks\_killstreaks::func_11086(); } //Function Number: 8 func_E846(param_00,param_01,param_02,param_03) { param_00 endon("killstreak_disowned"); level endon("game_ended"); var_04 = "used_drone_hive"; var_05 = "drone_hive_projectile_mp"; var_06 = "switch_blade_child_mp"; var_07 = scripts\mp\_killstreak_loot::getrarityforlootitem(param_03.var_1318B); if(var_07 != "") { var_04 = var_04 + "_" + var_07; } if(scripts\mp\killstreaks\_utility::func_A69F(param_03,"passive_implosion")) { var_05 = "drone_hive_impulse_mp"; var_06 = "switch_blade_impulse_mp"; } level thread scripts\mp\_utility::func_115DE(var_04,param_00); param_00 notifyonplayercommand("missileTargetSet","+attack"); param_00 notifyonplayercommand("missileTargetSet","+attack_akimbo_accessible"); var_08 = func_7DFE(param_00,level.var_5CB9); var_09 = var_08.origin * (1,1,0) + (0,0,level.var_B32E[2] + 10000); var_0A = var_08.var_1155F.origin; var_0B = scripts\mp\_utility::func_1309(var_05,var_09,var_0A,param_00); var_0B setcandamage(1); var_0B method_80A2(); var_0B method_830B(1); var_0B.team = param_00.team; var_0B.var_AC68 = param_01; var_0B.type = "remote"; var_0B.var_222 = param_00; var_0B.var_6649 = var_0B getentitynumber(); var_0B.var_110E8 = param_03; var_0B.var_13C2E = "drone_hive_projectile_mp"; var_0B thread watchmissileextraeffect(param_03,1); level.var_E5DE[var_0B.var_6649] = var_0B; level.var_DF80 = 1; level thread func_B9C8(var_0B,1); level thread func_B9C1(var_0B); if(isdefined(param_00.var_A685)) { param_00.var_A685["drone_hive_projectile_mp"] = 0; param_00.var_A685["switch_blade_child_mp"] = 0; } func_B889(param_00,var_0B); param_00 setclientomnvar("ui_predator_missile",1); var_0B thread func_13AA4(param_00); var_0B thread func_13AA2(param_00); var_0B thread scripts\mp\killstreaks\_utility::watchsupertrophynotify(param_00); param_00 scripts\mp\_matchdata::func_AFC9(param_02,var_0B.origin); var_0C = 0; var_0B.var_B8AF = 2; if(scripts\mp\killstreaks\_utility::func_A69F(param_03,"passive_predator")) { var_0B.var_B8AF = -1; var_0B.singlefire = 1; var_0B method_80D3(); } if(scripts\mp\killstreaks\_utility::func_A69F(param_03,"passive_rapid_missiles")) { var_0B.var_12BA7 = 1; } var_0D = 2; param_00 setclientomnvar("ui_predator_missiles_left",var_0B.var_B8AF); for(;;) { var_0E = var_0B scripts\common\utility::func_13734("death","missileTargetSet"); scripts\mp\_hostmigration::func_13834(); if(var_0E == "death") { break; } if(!isdefined(var_0B)) { break; } if(scripts\mp\_utility::func_9FB3(var_0B.var_12BA7)) { if(scripts\mp\_utility::func_9FB3(var_0B.lasttimefired)) { if(gettime() < var_0B.lasttimefired + var_0D * 1000 && var_0C == 0) { continue; } } level thread firerapidmissiles(var_0B,var_0C,param_03,var_06); var_0C++; var_0B.lasttimefired = gettime(); var_0B.var_B8AF = 2 - var_0C; var_0F = var_0B.var_B8AF; if(var_0B.var_B8AF == 0) { var_0F = -1; } param_00 setclientomnvar("ui_predator_missiles_left",var_0F); if(var_0C == 2) { var_0C = 0; var_0B.var_B8AF = 2; param_00 thread resetmissiles(var_0B,var_0D); } continue; } if(var_0C < 2) { if(!scripts\mp\_utility::func_9FB3(var_0B.singlefire)) { level thread func_10914(var_0B,var_0C,param_03,var_06); var_0C++; var_0B.var_B8AF = 2 - var_0C; param_00 setclientomnvar("ui_predator_missiles_left",var_0B.var_B8AF); if(var_0C == 2) { var_0B method_80D3(); } } } } level thread func_E474(param_00); scripts\mp\_utility::func_D915("killstreak ended - drone_hive",param_00); } //Function Number: 9 firerapidmissiles(param_00,param_01,param_02,param_03) { var_04 = param_01; for(var_05 = 0;var_05 < 2;var_05++) { level thread func_10914(param_00,var_04,param_02,param_03); var_04++; if(var_04 > 1) { var_04 = 0; } wait(0.1); } } //Function Number: 10 resetmissiles(param_00,param_01) { param_00 endon("death"); self endon("disconnect"); wait(param_01); self setclientomnvar("ui_predator_missiles_left",param_00.var_B8AF); } //Function Number: 11 func_B9EE() { level endon("game_ended"); self endon("death"); var_00 = []; var_01 = []; for(;;) { var_02 = []; var_00 = scripts\mp\killstreaks\_utility::func_7E92(); foreach(var_04 in var_00) { var_05 = self.var_222 method_8409(var_04.origin,65,90); if(var_05) { self.var_222 thread scripts\mp\_utility::drawline(self.origin,var_04.origin,10,(0,0,1)); var_02[var_02.size] = var_04; } } if(var_02.size) { var_01 = sortbydistance(var_02,self.origin); self.var_AA25 = var_01[0]; scripts\mp\_hostmigration::func_13708(0.25); } wait(0.05); scripts\mp\_hostmigration::func_13834(); } } //Function Number: 12 func_10914(param_00,param_01,param_02,param_03) { param_00.var_222 playlocalsound("ammo_crate_use"); var_04 = param_00 gettagangles("tag_origin"); var_05 = anglestoforward(var_04); var_06 = anglestoright(var_04); var_07 = (100,100,100); var_08 = (15000,15000,15000); if(param_01) { var_07 = var_07 * -1; } var_09 = bullettrace(param_00.origin,param_00.origin + var_05 * var_08,0,param_00); var_08 = var_08 * var_09["fraction"]; var_0A = param_00.origin + var_06 * var_07; var_0B = param_00.origin + var_05 * var_08; var_0C = scripts\mp\_utility::func_1309(param_03,var_0A,var_0B,param_00.var_222); var_0D = param_00 getclosesttargetinview(param_00.var_222,var_0B); if(isdefined(var_0D) && !scripts\mp\killstreaks\_utility::func_A69F(param_02,"passive_rapid_missiles")) { var_0C missile_settargetent(var_0D); } var_0C setcandamage(1); var_0C method_830B(1); var_0C.team = param_00.team; var_0C.var_AC68 = param_00.var_AC68; var_0C.type = param_00.type; var_0C.var_222 = param_00.var_222; var_0C.var_6649 = var_0C getentitynumber(); var_0C.var_110E8 = param_02; var_0C.var_13C2E = "switch_blade_child_mp"; var_0C thread watchmissileextraeffect(param_02,0); level.var_E5DE[var_0C.var_6649] = var_0C; level thread func_B9C8(var_0C,0); } //Function Number: 13 getclosesttargetinview(param_00,param_01) { var_02 = scripts\mp\killstreaks\_utility::func_7E92(param_00); var_03 = undefined; var_04 = undefined; foreach(var_06 in var_02) { if(!scripts\mp\killstreaks\_utility::manualmissilecantracktarget(var_06)) { continue; } if(scripts\mp\_utility::func_9FB3(var_06.trinityrocketlocked)) { continue; } var_07 = distance2dsquared(var_06.origin,param_01); if(var_07 < 262144 && scripts\mp\_utility::func_9FB3(func_390B(var_06))) { if(!isdefined(var_04) || var_07 < var_04) { var_03 = var_06; var_04 = var_07; } } } if(isdefined(var_03)) { var_03.trinityrocketlocked = 1; var_03 thread watchtarget(self); } return var_03; } //Function Number: 14 func_390B(param_00) { var_01 = 0; var_02 = scripts\common\trace::func_48BC(0,1,1,1,1,1,0); var_03 = [param_00 gettagorigin("j_head"),param_00 gettagorigin("j_mainroot"),param_00 gettagorigin("tag_origin")]; for(var_04 = 0;var_04 < var_03.size;var_04++) { if(!scripts\common\trace::func_DCF1(self.origin,var_03[var_04],self,var_02)) { continue; } var_01 = 1; break; } return var_01; } //Function Number: 15 watchtarget(param_00) { self endon("disconnect"); for(;;) { if(!scripts\mp\killstreaks\_utility::manualmissilecantracktarget(self)) { break; } if(!isdefined(param_00)) { break; } scripts\common\utility::func_136F7(); } self.trinityrocketlocked = undefined; if(isdefined(param_00)) { param_00 missile_cleartarget(); } } //Function Number: 16 func_B06C(param_00,param_01) { param_01 endon("death"); level endon("game_ended"); self endon("death"); for(;;) { triggerfx(param_00); wait(0.25); } } //Function Number: 17 func_7FE7(param_00) { var_01 = param_00 + 1; if(var_01 == level.var_5CB9.size) { var_01 = 0; } return var_01; } //Function Number: 18 func_B9C1(param_00) { param_00 endon("death"); for(;;) { param_00.var_222 waittill("missileTargetSet"); param_00 notify("missileTargetSet"); } } //Function Number: 19 func_7DFE(param_00,param_01) { var_02 = []; foreach(var_04 in level.players) { if(!scripts\mp\_utility::func_9F19(var_04)) { continue; } if(var_04.team == param_00.team) { continue; } if(var_04.team == "spectator") { continue; } var_02[var_02.size] = var_04; } if(!var_02.size) { return param_01[randomint(param_01.size)]; } var_06 = scripts\common\utility::array_randomize(param_01); var_07 = var_06[0]; foreach(var_09 in var_06) { var_09.var_101E4 = 0; for(var_0A = 0;var_0A < var_02.size;var_0A++) { var_0B = var_02[var_0A]; if(!scripts\mp\_utility::func_9F19(var_0B)) { var_02[var_0A] = var_02[var_02.size - 1]; var_02[var_02.size - 1] = undefined; var_0A--; continue; } if(bullettracepassed(var_0B.origin + (0,0,32),var_09.origin,0,var_0B)) { var_09.var_101E4 = var_09.var_101E4 + 1; return var_09; } wait(0.05); scripts\mp\_hostmigration::func_13834(); } if(var_09.var_101E4 == var_02.size) { return var_09; } if(var_09.var_101E4 > var_07.var_101E4) { var_07 = var_09; } } return var_07; } //Function Number: 20 func_B889(param_00,param_01) { var_02 = 0.5; param_00 scripts\mp\_utility::func_7385(1); param_00 cameralinkto(param_01,"tag_origin"); param_00 controlslinkto(param_01); param_00 thermalvisionon(); param_00 thermalvisionfofoverlayon(); param_00 playlocalsound("trinity_rocket_plr"); param_00 setclientomnvar("ui_killstreak_health",1); param_00 setclientomnvar("ui_killstreak_countdown",gettime() + int(15000)); level thread func_12B9B(param_00,var_02); } //Function Number: 21 func_12B9B(param_00,param_01,param_02) { param_00 endon("disconnect"); scripts\mp\_hostmigration::func_13708(param_01 - 0.35); param_00 scripts\mp\_utility::func_7385(0); } //Function Number: 22 func_B9CB(param_00) { param_00 endon("disconnect"); param_00 endon("end_kill_streak"); param_00 waittill("killstreak_disowned"); level thread func_E474(param_00); } //Function Number: 23 func_B9DD(param_00) { param_00 endon("disconnect"); param_00 endon("end_kill_streak"); level waittill("game_ended"); var_01 = 1; level thread func_E474(param_00,0,var_01); } //Function Number: 24 func_B9FD(param_00) { param_00 endon("end_kill_streak"); param_00 endon("disconnect"); level waittill("objective_cam"); level thread func_E474(param_00,1); } //Function Number: 25 func_B9C8(param_00,param_01) { var_02 = param_00.var_222; param_00 waittill("death"); scripts\mp\_hostmigration::func_13834(); if(isdefined(param_00.var_114F1)) { param_00.var_114F1 delete(); } if(isdefined(param_00.var_6649)) { level.var_E5DE[param_00.var_6649] = undefined; } if(param_01) { level.var_DF80 = undefined; } if(isdefined(var_02) && !scripts\mp\_utility::func_9F19(var_02) && scripts\mp\_utility::func_9FB3(param_01)) { var_02 thread stopmissilesoundonspawn(); } } //Function Number: 26 stopmissilesoundonspawn() { self endon("disconnect"); self waittill("spawned_player"); self stoplocalsound("trinity_rocket_plr"); self stoplocalsound("trinity_rocket_plr_lsrs"); self stoplocalsound("trinity_rocket_plr_lfe"); } //Function Number: 27 func_E474(param_00,param_01,param_02) { if(!isdefined(param_00)) { return; } param_00 playlocalsound("trinity_rocket_exp_plr"); if(!scripts\mp\_utility::func_9FB3(param_02)) { param_00 thread scripts\mp\killstreaks\_killstreaks::func_11086(); } param_00 setclientomnvar("ui_predator_missile",2); param_00 notify("end_kill_streak"); param_00 stoplocalsound("trinity_rocket_plr"); param_00 stoplocalsound("trinity_rocket_plr_lsrs"); param_00 stoplocalsound("trinity_rocket_plr_lfe"); param_00 thermalvisionoff(); param_00 thermalvisionfofoverlayoff(); param_00 controlsunlink(); param_00 cameraunlink(); param_00 setclientomnvar("ui_predator_missile",0); param_00 scripts\common\utility::func_1C76(1); } //Function Number: 28 watchmissileextraeffect(param_00,param_01) { level endon("game_ended"); var_02 = scripts\mp\killstreaks\_utility::func_A69F(param_00,"passive_predator"); var_03 = scripts\mp\killstreaks\_utility::func_A69F(param_00,"passive_implosion"); if(!var_02 && !var_03) { return; } if(var_02 && !scripts\mp\_utility::func_9FB3(param_01)) { return; } var_04 = self.var_222; var_05 = self.var_13C2E; var_06 = scripts\common\utility::spawn_tag_origin(); var_06 linkto(self); var_04.extraeffectkillcam = var_06; self.explosiontarget = spawn("script_model",self.origin); self.explosiontarget setmodel("ks_drone_hive_target_mp"); self.explosiontarget method_82DD(var_04); self.explosiontarget method_831F(var_04); self.explosiontarget linkto(self,"tag_origin"); self.explosiontarget.var_13C2E = var_05; self.explosiontarget.var_110E8 = param_00; var_07 = self.explosiontarget; self waittill("death"); if(!isdefined(var_07)) { return; } if(var_02) { wait(0.27); var_07 setscriptablepartstate("chain_explode_1","active",0); wait(0.27); var_07 setscriptablepartstate("chain_explode_2","active",0); wait(1); } else if(var_03) { var_07 setscriptablepartstate("impulse_explode","active",0); wait(0.5); var_08 = function_02AF(var_04,"drone_hive_implosion_mp",var_07.origin); wait(0.1); var_08 delete(); var_07 radiusdamage(var_07.origin,325,1000,1000,var_04,"MOD_EXPLOSIVE",var_05); scripts\mp\_shellshock::func_858B(var_07.origin); physicsexplosionsphere(var_07.origin,300,0,200); wait(1); } if(isdefined(var_07)) { var_07 delete(); } if(isdefined(var_06)) { var_06 delete(); } } //Function Number: 29 watchgastrigger(param_00,param_01) { self endon("death"); for(;;) { self waittill("trigger",var_02); if(!isplayer(var_02)) { continue; } if(level.teambased && var_02.team == param_00.team && var_02 != param_00) { continue; } if(scripts\mp\_utility::func_9FB3(var_02.gettinggassed)) { continue; } thread applygasdamageovertime(param_00,param_01,var_02); } } //Function Number: 30 applygasdamageovertime(param_00,param_01,param_02) { param_02 endon("disconnect"); param_02.gettinggassed = 1; while(param_02 istouching(self)) { param_02 dodamage(20,self.origin,param_00,self,"MOD_EXPLOSIVE",param_01); var_03 = scripts\common\utility::waittill_any_timeout_1(0.5,"death"); if(var_03 == "death") { break; } } if(scripts\mp\_utility::func_9FB3(param_02.gettinggassed)) { param_02.gettinggassed = undefined; } }