/******************************************************************* * Decompiled By: Bog * Decompiled File: scripts\mp\killstreaks\_killstreaks.gsc * Game: Call of Duty: Infinite Warfare * Platform: PC * Function Count: 101 * Decompile Time: 5065 ms * Timestamp: 10/27/2023 12:29:02 AM *******************************************************************/ //Function Number: 1 func_9888() { level.var_A697 = []; var_00 = 1; for(;;) { var_01 = scripts\mp\_utility::func_7F4B(var_00); if(!isdefined(var_01) || var_01 == "") { break; } var_02 = var_01; var_03 = scripts\mp\_utility::func_7F3C(var_02); var_04 = scripts\mp\_utility::func_7F3B(var_02); game["dialog"][var_02] = var_04; var_05 = scripts\mp\_utility::func_7F34(var_02); game["dialog"]["allies_friendly_" + var_02 + "_inbound"] = "friendly_" + var_05; game["dialog"]["allies_enemy_" + var_02 + "_inbound"] = "enemy_" + var_05; var_06 = scripts\mp\_utility::func_7F3E(var_02); game["dialog"]["axis_friendly_" + var_02 + "_inbound"] = "friendly_" + var_06; game["dialog"]["axis_enemy_" + var_02 + "_inbound"] = "enemy_" + var_06; var_07 = scripts\mp\_utility::func_7F4E(var_02); scripts\mp\_rank::func_DF0A("killstreak_" + var_02,"value",var_07); level.var_A697[level.var_A697.size] = var_02; var_00++; } } //Function Number: 2 func_C56E() { for(;;) { level waittill("connected",var_00); if(!isdefined(var_00.pers["killstreaks"])) { var_00.pers["killstreaks"] = []; } if(!isdefined(var_00.pers["startedMapSelect"])) { var_00.pers["startedMapSelect"] = 0; } var_00 visionsetmissilecamforplayer(game["thermal_vision"]); var_00 thread func_C57B(); var_00 thread func_B9CB(); var_00 thread func_110C3(); var_00 thread monitorrigswitch(); } } //Function Number: 3 func_C57B() { self endon("disconnect"); for(;;) { self waittill("spawned_player"); self.var_13111 = undefined; func_F1C5(); thread func_A6BA(); thread func_A69C(); thread func_A69B(); thread func_A69D(); thread func_A6B8(); thread func_A6B0(); thread func_FAC6(); if(!isdefined(self.var_5FBE)) { self.var_5FBE = 0; } if(!scripts\mp\_utility::func_9FB3(self.var_AE15)) { scripts\mp\_utility::initpersstat("streakPoints"); self.var_110EE = scripts\mp\_utility::getpersstat("streakPoints"); self.var_AE15 = 1; } func_F866(); func_12EBC(); func_12F2E(self.var_110EE); } } //Function Number: 4 monitorrigswitch() { self endon("disconnect"); level endon("game_ended"); for(;;) { self waittill("giveLoadout"); if(scripts\mp\_utility::func_9FB3(level.var_3B1E)) { continue; } if(isdefined(self.oldperks) && isdefined(self.var_CA5B) && self.oldperks.size > 0) { if(scripts\mp\_utility::func_2287(self.var_CA5B,"specialty_support_killstreaks") && scripts\mp\_utility::func_2287(self.oldperks,"specialty_support_killstreaks")) { continue; } else if(!scripts\mp\_utility::func_2287(self.oldperks,"specialty_support_killstreaks")) { continue; } else { func_E275(); func_12EBC(); } } } } //Function Number: 5 func_B9CB() { while(isdefined(self)) { if(scripts\mp\_utility::func_2DD9()) { self waittill("disconnect"); continue; } scripts\common\utility::waittill_any_3("disconnect","joined_team","joined_spectators"); self notify("killstreak_disowned"); } } //Function Number: 6 func_FAC6() { self endon("death"); self endon("disconnect"); level endon("game_ended"); if(isbot(self)) { return; } scripts\mp\_utility::func_7670("prematch_done"); self notifyonplayercommand("ks_select_up","+actionslot 1"); self notifyonplayercommand("ks_select_down","+actionslot 2"); self notifyonplayercommand("ks_action_3","+actionslot 3"); self notifyonplayercommand("ks_action_4","+actionslot 4"); self notifyonplayercommand("ks_action_5","+actionslot 5"); self notifyonplayercommand("ks_action_6","+actionslot 6"); scripts\mp\_utility::_setactionslot(4,""); } //Function Number: 7 func_12F2F() { if(!isdefined(self.pers["killstreaks"])) { return; } if(self.var_110EE == self.var_D8B3) { return; } var_00 = self.var_110EE; self method_80BF(int(min(self.var_110EE,16384))); if(self.var_110EE >= self.var_BFB0) { func_F866(); } } //Function Number: 8 func_E274() { self method_80BF(0); self setclientomnvar("ui_score_streak_cost",0); self setclientomnvar("ui_score_streak_two_cost",0); self setclientomnvar("ui_score_streak_three_cost",0); func_F866(); } //Function Number: 9 func_F866() { if(!isdefined(self.var_110F4)) { self.var_BFB0 = 0; self method_80C0(0); return; } if(func_7FA2() == 0) { self.var_BFB0 = 0; self method_80C0(0); return; } var_00 = self.var_BFB0; var_01 = func_7FEE(); if(!isdefined(var_01)) { return; } var_02 = func_817B(var_01); self.var_BFB0 = var_02; if(scripts\mp\_utility::_hasperk("specialty_support_killstreaks") && isdefined(self.pers["killstreaks"][1]) && !scripts\mp\_utility::func_9FB3(self.var_5FBD)) { var_03 = 0; foreach(var_05 in self.pers["killstreaks"]) { if(scripts\mp\_utility::func_9FB3(var_05.var_5FB9)) { var_03 = 1; continue; } var_03 = 0; } if(var_03 && !isdefined(self.var_5FBD)) { self.var_5FBD = 1; self.var_BFB0 = 0; self method_80C0(0); self method_80BF(0); self setclientomnvar("ui_score_streak_cost",0); self setclientomnvar("ui_score_streak_two_cost",0); self setclientomnvar("ui_score_streak_three_cost",0); scripts\mp\_hud_message::func_10122("KILLSTREAKS_SUPPORT_NO_WRAP"); return; } } self method_80C0(var_02); } //Function Number: 10 func_7FEE() { if(self.var_110EE == func_7FA2() && self.var_110F4 != "specialist") { var_00 = 0; } else { var_00 = self.var_110EE; } foreach(var_02 in self.var_A6AB) { var_03 = func_817B(var_02); if(var_03 > var_00) { return var_02; } } return undefined; } //Function Number: 11 func_12F2E(param_00) { if(scripts\mp\_utility::func_9FB3(self.var_5FBD) && scripts\mp\_utility::_hasperk("specialty_support_killstreaks")) { self setclientomnvar("ui_score_streak",0); self setclientomnvar("ui_score_streak_two",0); self setclientomnvar("ui_score_streak_three",0); self setclientomnvar("ui_score_streak_cost",0); self setclientomnvar("ui_score_streak_two_cost",0); self setclientomnvar("ui_score_streak_three_cost",0); self setclientomnvar("ui_score_streak",0); return; } var_01 = 0; if(isdefined(self.var_A6AB)) { foreach(var_03 in self.var_A6AB) { if(var_01 == 0) { var_04 = func_817B(var_03); self setclientomnvar("ui_score_streak_cost",var_04); self setclientomnvar("ui_score_streak",param_00); var_01++; continue; } if(var_01 == 1) { var_04 = func_817B(var_03); self setclientomnvar("ui_score_streak_two_cost",var_04); self setclientomnvar("ui_score_streak_two",param_00); var_01++; continue; } var_04 = func_817B(var_03); self setclientomnvar("ui_score_streak_three_cost",var_04); self setclientomnvar("ui_score_streak_three",param_00); } } } //Function Number: 12 func_7FA2() { var_00 = 0; foreach(var_02 in self.var_A6AB) { var_03 = func_817B(var_02); if(var_03 > var_00) { var_00 = var_03; } } return var_00; } //Function Number: 13 func_12EBC() { if(!scripts\mp\_utility::func_9F19(self)) { return; } var_00 = self.pers["killstreaks"]; for(var_01 = 0;var_01 <= 3;var_01++) { var_02 = var_00[var_01]; if(isdefined(var_02) && isdefined(var_02.var_110EA)) { self setclientomnvar("ui_score_streak_index_" + var_01,scripts\mp\_utility::func_7F44(var_02.var_110EA)); self setclientomnvar("ui_score_streak_available_" + var_01,var_00[var_01].var_269A); continue; } self setclientomnvar("ui_score_streak_index_" + var_01,0); self setclientomnvar("ui_score_streak_available_" + var_01,0); } var_03 = func_8111(); if(isdefined(var_03)) { self setclientomnvar("ui_score_streak_selected_slot",var_03); return; } self setclientomnvar("ui_score_streak_selected_slot",-1); } //Function Number: 14 func_A6B8() { self endon("disconnect"); self endon("faux_spawn"); self notify("killstreakTeamChangeWatcher"); self endon("killstreakTeamChangeWatcher"); for(;;) { self waittill("joined_team"); func_41C0(); } } //Function Number: 15 func_A6BA() { self endon("disconnect"); self endon("death"); self endon("joined_team"); self endon("faux_spawn"); self endon("spawned"); level endon("game_ended"); self notify("killstreakTriggeredWatcher"); self endon("killstreakTriggeredWatcher"); for(;;) { var_00 = scripts\common\utility::func_13734("ks_action_3","ks_action_4","ks_action_5","ks_action_6"); var_01 = func_81D9(var_00); if(!isdefined(var_01)) { continue; } var_02 = func_7F45(var_01); if(!isdefined(var_02) || !var_02.var_269A) { continue; } if(!scripts\common\utility::func_9FBE()) { scripts\mp\_hud_message::func_10122("KILLSTREAKS_CANNOT_BE_USED",undefined); continue; } if(isdefined(var_02.var_394)) { var_03 = func_392B(var_02.var_394,var_02); if(isdefined(var_03)) { var_04 = undefined; if(var_03 == "KILLSTREAKS_UNAVAILABLE_FOR_N") { var_04 = level.var_A6AA - level.var_8487 - level.ingraceperiod; } scripts\mp\_hud_message::func_10122(var_03,var_04); continue; } } if(isdefined(self.var_13111)) { self notify("killstreak_trigger_blocked",var_02); continue; } var_05 = var_02.var_110F1; if(isdefined(var_05.var_127BD)) { if(!self [[ var_05.var_127BD ]](var_02)) { continue; } } self.var_AA35 = var_02; if(!scripts\common\utility::func_9C70()) { func_F837(var_01); } if(var_02.var_EF88 == "no_fire_weapon") { thread func_127C7(var_02.var_394,var_02,1); } else if(var_02.var_EF88 == "gesture_script_weapon") { self giveandfireoffhand(var_02.var_394); } else if(isdefined(var_02.var_394) && var_02.var_394 != "none") { thread func_127C7(var_02.var_394,var_02); } else { var_01 = func_8111(); thread func_A69A(var_02); } var_06 = int(tablelookup("mp/killstreaktable.csv",1,var_02.var_110EA,4)); if(var_06 >= 1000) { var_07 = tablelookup("mp/killstreaktable.csv",1,var_02.var_110EA,0); if(var_07 != "") { var_08 = int(var_07); scripts\mp\_utility::func_F79E(20,self.team,self getentitynumber(),var_08); } } } } //Function Number: 16 func_81D9(param_00) { var_01 = undefined; if(!isai(self) && scripts\common\utility::func_9C70()) { if(param_00 == "ks_action_4") { var_01 = func_8111(); } } else if(level.gametype == "grnd" && !scripts\common\utility::func_9C70()) { switch(param_00) { case "ks_action_3": var_01 = 0; break; case "ks_action_4": var_01 = 0; break; case "ks_action_5": var_01 = 0; break; case "ks_action_6": var_01 = 0; break; } } else { switch(param_00) { case "ks_action_3": var_01 = 1; break; case "ks_action_4": var_01 = 2; break; case "ks_action_5": var_01 = 3; break; case "ks_action_6": var_01 = 0; break; } } return var_01; } //Function Number: 17 func_392B(param_00,param_01) { if(scripts\mp\_utility::func_10060(param_01.var_110EA)) { if(isdefined(level.var_A6AA) && level.var_A6AA > 0) { if(level.var_8487 - level.ingraceperiod < level.var_A6AA) { return "KILLSTREAKS_UNAVAILABLE_FOR_N"; } } } if(self hasweapon(param_00)) { return "KILLSTREAKS_CANNOT_BE_USED"; } if(self method_81B5()) { return "KILLSTREAKS_CANNOT_BE_USED"; } if(self ismantling()) { return "KILLSTREAKS_CANNOT_BE_USED"; } if(!scripts\common\utility::func_A009()) { return "KILLSTREAKS_CANNOT_BE_USED"; } if(scripts\mp\_utility::func_9FAE(self)) { return "KILLSTREAKS_CANNOT_BE_USED"; } if((scripts\mp\_utility::func_9F2C(param_01.var_110EA) || scripts\mp\_utility::func_9E90(param_01.var_110EA)) && !self isonground() || self method_8446()) { return "KILLSTREAKS_CANNOT_BE_USED"; } } //Function Number: 18 func_127C7(param_00,param_01,param_02) { self endon("disconnect"); self endon("death"); level endon("game_ended"); if(self hasweapon(param_00)) { return 0; } self.tryingtousekillstreak = 1; thread triggerkillstreakweaponwatchdeath(); scripts\mp\_supers::func_1CAB(); scripts\mp\_utility::func_12C6(param_00,0,0,1); var_03 = param_01.var_110F1; if(isdefined(var_03.var_13C8D)) { var_04 = self [[ var_03.var_13C8D ]](param_01); if(isdefined(var_04) && var_04 == 0) { scripts\mp\_utility::func_141E(param_00); self.tryingtousekillstreak = undefined; self notify("stopTryingToUseKillstreak"); return; } } var_05 = scripts\mp\_utility::func_11383(param_00); if(isdefined(var_03.var_13CD6)) { self [[ var_03.var_13CD6 ]](param_01,var_05); } if(var_05) { if(scripts\mp\_utility::func_9FB3(param_02)) { thread func_510E(0.05,param_01); } self waittill("killstreak_finished_with_weapon_" + param_00); } self.tryingtousekillstreak = undefined; self notify("stopTryingToUseKillstreak"); if(self hasweapon(param_00)) { scripts\mp\_supers::func_12D6C(); scripts\mp\_utility::func_80F2(param_00); if(self getcurrentweapon() == "none") { scripts\mp\_utility::_switchtoweapon(self.var_A978); } } if(isdefined(var_03.var_13CDB)) { self [[ var_03.var_13CDB ]](param_01); } } //Function Number: 19 triggerkillstreakweaponwatchdeath() { self endon("disconnect"); self endon("stopTryingToUseKillstreak"); self waittill("death"); self.tryingtousekillstreak = undefined; } //Function Number: 20 func_510E(param_00,param_01) { self endon("disconnect"); self endon("death"); level endon("game_ended"); wait(param_00); thread func_A69A(param_01); } //Function Number: 21 func_13B96(param_00) { self endon("disconnect"); self endon("death"); level endon("game_ended"); self endon("killstreak_finished_with_weapon"); for(;;) { if(self getcurrentweapon() != param_00) { self notify("killstreak_finished_with_weapon_" + param_00); break; } scripts\common\utility::func_136F7(); } } //Function Number: 22 func_A69C() { self endon("disconnect"); self endon("death"); self endon("joined_team"); self endon("faux_spawn"); self endon("spawned"); level endon("game_ended"); self notify("killstreakFiredWatcher_offhand"); self endon("killstreakFiredWatcher_offhand"); for(;;) { self waittill("offhand_fired",var_00); thread func_128A4(var_00,"offhand_fired"); } } //Function Number: 23 func_A69B() { self endon("disconnect"); self endon("death"); self endon("joined_team"); self endon("faux_spawn"); self endon("spawned"); level endon("game_ended"); self notify("killstreakFiredWatcher_grenade"); self endon("killstreakFiredWatcher_grenade"); for(;;) { self waittill("grenade_fire",var_00,var_01); thread func_128A4(var_01,"grenade_fire",var_00); } } //Function Number: 24 func_A69D() { self endon("disconnect"); self endon("death"); self endon("joined_team"); self endon("faux_spawn"); self endon("spawned"); level endon("game_ended"); self notify("killstreakFiredWatcher_weaponFired"); self endon("killstreakFiredWatcher_weaponFired"); for(;;) { self waittill("weapon_fired",var_00); thread func_128A4(var_00,"weapon_fired"); } } //Function Number: 25 func_128A4(param_00,param_01,param_02) { var_03 = func_7F61(); if(!isdefined(var_03)) { return; } if(var_03.var_394 != param_00) { return; } var_04 = self.pers["killstreaks"]; var_05 = undefined; for(var_06 = 0;var_06 < 36;var_06++) { if(!isdefined(var_04[var_06])) { if(var_06 >= 4) { break; } else { continue; } } if(var_04[var_06] == var_03) { var_05 = var_06; break; } } if(!isdefined(var_05)) { return; } if(var_03.var_6D6B == param_01) { thread func_A69A(var_03,param_02); } } //Function Number: 26 func_9E6B(param_00) { if(!isdefined(param_00)) { return 0; } switch(param_00) { case "jammer": case "dronedrop": case "directional_uav": case "counter_uav": case "uav": return 0; default: return 1; } } //Function Number: 27 func_A69A(param_00,param_01) { self endon("disconnect"); self endon("joined_team"); level endon("game_ended"); var_02 = param_00.var_110F1; if(!scripts\mp\_utility::validateusestreak(param_00.var_110EA)) { if(isdefined(var_02.var_9B12)) { self [[ var_02.var_9B12 ]](param_00); } if(isdefined(param_00.var_394) && param_00.var_394 != "none") { self notify("killstreak_finished_with_weapon_" + param_00.var_394); } return 0; } if(getdvarint("com_codcasterEnabled",0) == 1) { if(func_9E6B(param_00.var_110EA)) { self method_80C3(1); } } self.var_13111 = param_00; var_03 = 1; if(isdefined(var_02.var_13089)) { var_03 = self [[ var_02.var_13089 ]](param_00); } var_04 = 1; if(isdefined(var_02.var_130C4)) { var_04 = self [[ var_02.var_130C4 ]](param_00,param_01); } self notify("killstreak_use_finished",param_00.var_110EA,var_03); self.var_13111 = undefined; if(getdvarint("com_codcasterEnabled",0) == 1) { self method_80C3(0); } if(!var_03 || !var_04) { return 0; } func_C5A9(param_00); } //Function Number: 28 func_729F(param_00,param_01) { var_02 = func_4A1C(param_00,param_01); func_A69A(var_02); } //Function Number: 29 func_729E() { var_00 = func_7F45(0); func_A69A(var_00,0); } //Function Number: 30 func_C5A9(param_00) { var_01 = param_00.var_110EA; var_02 = func_6CBA(param_00); param_00.var_269A = 0; if(isdefined(var_02)) { if(var_02 == 0 || var_02 >= 4) { func_E131(var_02); } func_F1CB(); } else { } thread scripts\mp\_killstreak_loot::func_89BC(param_00); thread scripts\mp\_missions::func_13079(var_01); scripts\mp\_utility::func_D915("killstreak started - " + var_01,self); self notify("killstreak_used",var_01); scripts\mp\_utility::func_D4B7(var_01); var_06 = gettime() - param_00.var_B143; scripts\mp\_analyticslog::func_AFA3(var_01,var_06); combatrecordkillstreakuse(var_01); } //Function Number: 31 func_DDF0(param_00) { if(isdefined(self.var_4006)) { if(self getplayerdata(level.var_AEA6,"squadMembers","killstreakSetups",0,"killstreak") == param_00) { self.var_6DEB = gettime(); return; } if(self getplayerdata(level.var_AEA6,"squadMembers","killstreakSetups",2,"killstreak") == param_00 && isdefined(self.var_6DEB)) { if(gettime() - self.var_6DEB < 20000) { thread scripts\mp\_missions::func_D992("wargasm"); return; } return; } } } //Function Number: 32 func_4A1C(param_00,param_01,param_02) { var_03 = spawnstruct(); var_03.var_269A = 0; var_03.var_110EA = param_00; var_03.var_9E0B = 0; var_03.var_FFC4 = 0; var_03.var_222 = param_01; var_03.var_A5B0 = func_81ED(self); var_03.var_AC68 = self.pers["deaths"]; var_03.var_9E10 = 0; var_03.var_9F6E = 0; var_03.var_394 = scripts\mp\_utility::func_7F55(param_00); var_03.var_6D6B = func_7F41(param_00); var_03.var_110F1 = func_7F50(param_00); var_03.var_EF88 = scripts\mp\_utility::func_7F4F(param_00); var_03.var_B143 = -1; var_03.var_1318B = param_02; return var_03; } //Function Number: 33 func_81ED(param_00) { if(!isdefined(param_00.pers["nextKillstreakID"])) { param_00.pers["nextKillstreakID"] = 0; } var_01 = param_00.pers["nextKillstreakID"]; param_00.pers["nextKillstreakID"]++; return var_01; } //Function Number: 34 func_26D4(param_00,param_01,param_02,param_03) { var_04 = func_4A1C(param_00,param_01,param_03); func_26D5(var_04,param_02); } //Function Number: 35 func_26D5(param_00,param_01) { param_00.var_9E10 = 1; if(isdefined(param_01) && param_01.size > 0) { scripts\mp\_killstreak_loot::func_988A(param_00,param_01); } func_1030D(param_00,0); func_F837(0); func_B2A9(0); } //Function Number: 36 func_6693(param_00,param_01,param_02,param_03) { if(!isdefined(param_00) || !isdefined(param_01)) { return; } var_04 = func_4A1C(param_00,self,param_03); var_04.var_9E0B = 1; var_04.var_FFC4 = 1; if(isdefined(param_02) && param_02.size > 0) { scripts\mp\_killstreak_loot::func_988A(var_04,param_02); } func_1030D(var_04,param_01); } //Function Number: 37 func_66B9(param_00,param_01,param_02) { func_6693(param_00,1,param_01,param_02); } //Function Number: 38 func_66BB(param_00,param_01,param_02) { func_6693(param_00,2,param_01,param_02); } //Function Number: 39 func_66BA(param_00,param_01,param_02) { func_6693(param_00,3,param_01,param_02); } //Function Number: 40 func_DB1C() { var_00 = self.pers["killstreaks"]; if(isdefined(var_00[35])) { return 0; } var_01 = var_00[0]; if(!isdefined(var_01)) { return 1; } for(var_02 = 4;var_02 < 36;var_02++) { if(!isdefined(var_00[var_02])) { var_00[var_02] = var_01; var_00[0] = undefined; break; } } self.pers["killstreaks"] = var_00; return 1; } //Function Number: 41 func_D65E() { var_00 = self.pers["killstreaks"]; var_01 = var_00[0]; var_02 = undefined; var_03 = undefined; for(var_04 = 4;var_04 < 36;var_04++) { var_05 = var_00[var_04]; if(isdefined(var_05)) { var_02 = var_05; var_03 = var_04; continue; } break; } self.pers["killstreaks"][0] = var_02; if(isdefined(var_03)) { self.pers["killstreaks"][var_03] = undefined; } } //Function Number: 42 func_51D3(param_00) { if(param_00 == 35) { self.pers["killstreaks"][param_00] = undefined; return; } var_01 = self.pers["killstreaks"]; for(var_02 = param_00;var_02 < 35;var_02++) { var_03 = var_01[var_02 + 1]; if(!isdefined(var_03)) { break; } var_01[param_00] = var_03; } self.pers["killstreaks"] = var_01; } //Function Number: 43 func_E131(param_00) { self.pers["killstreaks"][param_00] = undefined; if(param_00 == 0) { func_D65E(); return; } if(param_00 >= 4) { func_51D3(param_00); } } //Function Number: 44 func_41C0() { self.pers["killstreaks"] = []; func_E275(); func_41C1(); func_12EBC(); } //Function Number: 45 func_1030D(param_00,param_01) { if(param_01 == 0) { if(!func_DB1C()) { return; } } else { } self.pers["killstreaks"][param_01] = param_00; func_12EBC(); } //Function Number: 46 func_5FBF(param_00,param_01) { var_02 = func_7F45(param_00); var_03 = var_02.var_110EA; scripts\mp\_utility::func_316C("earned_killstreak_buffered",var_03); self.var_5FBE = param_01; if(scripts\mp\_utility::_hasperk("specialty_support_killstreaks")) { self.pers["killstreaks"][param_00].var_5FB9 = 1; } if(!level.var_7669) { var_04 = var_03; var_05 = scripts\mp\_killstreak_loot::getrarityforlootitem(var_02.var_1318B); if(var_05 != "") { var_04 = var_04 + "_" + var_05; } thread scripts\mp\_hud_message::func_10134(var_04,param_01); } if(scripts\mp\_utility::_hasperk("specialty_support_killstreaks")) { scripts\mp\_missions::func_D991("ch_trait_support"); } func_DDF0(var_03); func_F866(); func_B2A9(param_00); } //Function Number: 47 func_B2A9(param_00) { var_01 = func_7F45(param_00); if(!isdefined(var_01)) { return; } var_02 = var_01.var_110EA; var_03 = var_01.var_110F1; if(self.team == "spectator") { return; } var_01.var_269A = 1; if(param_00 >= 0 && param_00 <= 3) { func_F837(param_00); } func_12EBC(); if(isdefined(var_03.var_26A2)) { self [[ var_03.var_26A2 ]](var_01); } if(isdefined(var_01.var_9E0B) && var_01.var_9E0B && isdefined(var_01.var_FFC4) && var_01.var_FFC4) { self notify("received_earned_killstreak"); } var_01.var_B143 = gettime(); var_04 = scripts\mp\_utility::func_7F44(var_02); scripts\mp\_analyticslog::func_AFA4(var_04,var_01.var_B143); scripts\mp\_matchdata::func_AFC8(var_02); } //Function Number: 48 func_8374(param_00,param_01,param_02,param_03) { func_26D4(param_00,param_03); } //Function Number: 49 func_817B(param_00) { var_01 = int(scripts\mp\_utility::func_7F46(param_00)); if(isdefined(self) && isplayer(self)) { var_01 = scripts\mp\_killstreak_loot::modifycostforlootitem(self.streakvariantids[param_00],var_01); if(scripts\mp\_utility::func_9F6F(param_00)) { if(isdefined(self.pers["gamemodeLoadout"])) { if(isdefined(self.pers["gamemodeLoadout"]["loadoutKillstreak1"]) && self.pers["gamemodeLoadout"]["loadoutKillstreak1"] == param_00) { var_01 = 2; } else if(isdefined(self.pers["gamemodeLoadout"]["loadoutKillstreak2"]) && self.pers["gamemodeLoadout"]["loadoutKillstreak2"] == param_00) { var_01 = 4; } else if(isdefined(self.pers["gamemodeLoadout"]["loadoutKillstreak3"]) && self.pers["gamemodeLoadout"]["loadoutKillstreak3"] == param_00) { var_01 = 6; } else { } } else if(issubstr(self.var_4B1C,"custom")) { for(var_02 = 0;var_02 < 3;var_02++) { var_03 = self getplayerdata(level.var_AEA6,"squadMembers","loadouts",self.var_4006,"specialistStreaks",var_02); if(var_03 == param_00) { break; } } if(var_02 == 1) { var_01 = 500; } else if(var_02 == 2) { var_01 = 800; } } else if(issubstr(self.var_4B1C,"callback")) { var_02 = 0; foreach(var_05 in self.pers["specialistStreaks"]) { if(var_05 == param_00) { break; } } var_01 = self.pers["specialistStreakKills"][var_02]; } else if(issubstr(self.var_4B1C,"axis") || issubstr(self.var_4B1C,"allies")) { var_02 = 0; var_06 = "none"; if(issubstr(self.var_4B1C,"axis")) { var_06 = "axis"; } else if(issubstr(self.var_4B1C,"allies")) { var_06 = "allies"; } var_07 = scripts\mp\_utility::func_7E2B(self.var_4B1C); while(var_02 < 3) { var_03 = scripts\mp\_utility::func_7F91("defaultClasses",var_06,var_07,"class","specialistStreaks",var_02); if(var_03 == param_00) { break; } var_02++; } var_01 = scripts\mp\_utility::func_7F91("defaultClasses",var_06,var_07,"class","specialistStreakKills",var_02); } } } var_01 = int(clamp(var_01,0,7000)); return var_01; } //Function Number: 50 func_8057(param_00,param_01) { var_02 = 0; if(scripts\mp\_utility::_hasperk("specialty_support_killstreaks")) { var_03 = scripts\mp\_utility::func_7F44(param_00); var_02 = 175 * var_03; } return var_02; } //Function Number: 51 func_A6B0() { self endon("death"); self endon("disconnect"); self endon("faux_spawn"); level endon("game_ended"); for(;;) { var_00 = scripts\common\utility::func_13734("ks_select_up","ks_select_down"); if(!scripts\common\utility::func_9C70()) { continue; } if(!scripts\mp\_utility::func_9E59() && !scripts\mp\_utility::func_9FB3(self.var_9D81) && !isdefined(self.var_13111)) { var_01 = func_8111(); if(!isdefined(var_01)) { continue; } var_02 = var_01; if(var_00 == "ks_select_up") { var_02 = func_7FED(var_01); } else if(var_00 == "ks_select_down") { var_02 = func_8099(var_01); } else { } func_F837(var_02); } } } //Function Number: 52 func_F1C5() { var_00 = self.pers["killstreaks"]; for(var_01 = 3;var_01 >= 0;var_01--) { var_02 = var_00[var_01]; if(isdefined(var_02) && var_02.var_269A) { func_F837(var_01); return; } } func_41C1(); } //Function Number: 53 func_7FED(param_00) { var_01 = self.pers["killstreaks"]; var_02 = param_00; var_03 = scripts\common\utility::func_116D7(param_00 >= 3,0,param_00 + 1); var_04 = param_00; var_05 = var_03; while(var_05 != var_04) { var_06 = var_01[var_05]; if(isdefined(var_06) && var_06.var_269A) { var_02 = var_05; break; } var_05++; if(var_05 > 3) { var_05 = 0; } } return var_02; } //Function Number: 54 func_8099(param_00) { var_01 = self.pers["killstreaks"]; var_02 = param_00; var_03 = scripts\common\utility::func_116D7(param_00 <= 0,3,param_00 - 1); var_04 = param_00; var_05 = var_03; while(var_05 != var_04) { var_06 = var_01[var_05]; if(isdefined(var_06) && var_06.var_269A) { var_02 = var_05; break; } var_05--; if(var_05 < 0) { var_05 = 3; } } return var_02; } //Function Number: 55 func_F1CB() { var_00 = self.pers["killstreaks"]; var_01 = undefined; var_02 = -1; for(var_03 = 3;var_03 >= 0;var_03--) { var_04 = var_00[var_03]; if(isdefined(var_04) && var_04.var_269A) { var_05 = func_817B(var_04.var_110EA); if(var_05 > var_02) { var_01 = var_03; var_02 = var_05; } } } if(!isdefined(var_01)) { func_41C1(); return; } func_F837(var_01); } //Function Number: 56 func_F837(param_00) { var_01 = func_7F45(param_00); self.var_4C02 = param_00; func_12EBC(); } //Function Number: 57 func_41C1() { self.var_4C02 = undefined; func_12EBC(); } //Function Number: 58 func_8110() { var_00 = func_8111(); if(!isdefined(var_00)) { return undefined; } return self.pers["killstreaks"][var_00]; } //Function Number: 59 func_8111() { return self.var_4C02; } //Function Number: 60 func_7F45(param_00) { return self.pers["killstreaks"][param_00]; } //Function Number: 61 func_7E9E(param_00) { var_01 = self.pers["killstreaks"]; for(var_02 = 1;var_02 <= 3;var_02++) { var_03 = var_01[var_02]; if(isdefined(var_03) && var_03.var_110EA == param_00) { return var_03; } } return undefined; } //Function Number: 62 func_7E9F(param_00) { var_01 = self.pers["killstreaks"]; for(var_02 = 1;var_02 <= 3;var_02++) { var_03 = var_01[var_02]; if(isdefined(var_03) && var_03.var_110EA == param_00) { return var_02; } } return undefined; } //Function Number: 63 func_8207(param_00) { var_01 = self.pers["killstreaks"]; for(var_02 = 0;var_02 <= 3;var_02++) { var_03 = var_01[var_02]; if(isdefined(var_03) && var_03.var_110EA == param_00 && var_03.var_269A) { return var_02; } } return undefined; } //Function Number: 64 func_7F54(param_00) { var_01 = self.pers["killstreaks"]; for(var_02 = 0;var_02 <= 3;var_02++) { var_03 = var_01[var_02]; if(isdefined(var_03) && var_03.var_110EA == param_00) { return var_02; } } return undefined; } //Function Number: 65 func_7ED6() { var_00 = []; var_01 = self.pers["killstreaks"]; var_02 = func_7F45(0); if(isdefined(var_02)) { var_00[0] = var_02; for(var_03 = 4;var_03 < 36;var_03++) { var_04 = var_01[var_03]; if(isdefined(var_04)) { var_00[var_00.size] = var_04; continue; } break; } } return var_00; } //Function Number: 66 func_7DE7() { var_00 = []; var_01 = self.pers["killstreaks"]; if(var_01.size) { for(var_02 = 1;var_02 < 4;var_02++) { var_03 = var_01[var_02]; if(isdefined(var_03) && isdefined(var_03.var_110EA) && var_03.var_269A) { var_00[var_00.size] = var_03; } } } return var_00; } //Function Number: 67 func_DEFB(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08) { if(!isdefined(level.var_A6B2)) { level.var_A6B2 = []; } var_09 = spawnstruct(); level.var_A6B2[param_00] = var_09; var_09.var_13089 = param_01; var_09.var_130C4 = param_02; var_09.var_26A2 = param_03; var_09.var_127BD = param_04; var_09.var_13C8D = param_05; var_09.var_13CDB = param_06; var_09.var_9B12 = param_07; var_09.var_13CD6 = param_08; } //Function Number: 68 func_7F50(param_00) { var_01 = level.var_A6B2[param_00]; return var_01; } //Function Number: 69 func_7F41(param_00) { if(param_00 == "none") { return ""; } var_01 = scripts\mp\_utility::func_7F4F(param_00); if(!isdefined(var_01) || var_01 == "") { return ""; } switch(var_01) { case "script_weapon": case "gesture_script_weapon": return "offhand_fired"; case "grenade_weapon": return "grenade_fire"; case "normal_weapon": return "weapon_fired"; case "no_weapon": case "no_fire_weapon": return ""; default: return ""; } return ""; } //Function Number: 70 func_7F61() { return self.var_AA35; } //Function Number: 71 func_3E4E(param_00) { foreach(var_02 in self.var_A6AB) { var_03 = func_817B(var_02); var_04 = func_7E9F(var_02); var_05 = func_7F45(var_04); if(self.var_D8B3 < var_03 && param_00 >= var_03) { if(scripts\mp\_utility::_hasperk("specialty_support_killstreaks") && scripts\mp\_utility::func_9FB3(self.pers["killstreaks"][var_04].var_5FB9)) { continue; } func_5FBF(var_04,var_03); } } } //Function Number: 72 func_213F(param_00) { var_01 = self.pers["killstreaks"]; if(!isdefined(var_01)) { return 0; } foreach(var_03 in param_00) { var_04 = 0; for(var_05 = 1;var_05 <= 3;var_05++) { var_06 = var_01[var_05]; if(isdefined(var_06)) { if(isdefined(var_06.var_110EA)) { if(var_06.var_110EA == var_03) { var_04 = 1; break; } } continue; } if(var_03 == "none") { var_04 = 1; break; } } if(!var_04) { return 0; } } return 1; } //Function Number: 73 func_6CBA(param_00) { var_01 = self.pers["killstreaks"]; for(var_02 = 0;var_02 <= 36;var_02++) { var_03 = var_01[var_02]; if(!isdefined(var_03)) { if(var_02 >= 4) { break; } continue; } if(param_00 == var_03) { return var_02; } } return undefined; } //Function Number: 74 func_83A7(param_00,param_01) { if(!isdefined(param_01)) { param_01 = scripts\mp\_rank::func_8104(param_00); } if(param_01 == 0) { return; } var_02 = self.var_110EE + param_01; var_03 = var_02; var_04 = func_7FA2(); if(var_03 >= var_04) { var_03 = var_03 - var_04; } func_F867(var_03); func_3E4E(var_02); if(var_02 >= var_04) { func_F867(var_03); } func_12F2E(var_03); scripts\mp\_analyticslog::func_AFAE(param_01,gettime(),scripts\mp\_rank::func_8102(param_00,"eventID")); } //Function Number: 75 func_E275() { self.var_5FBE = 0; func_F867(0); func_E274(); func_12F2E(0); } //Function Number: 76 func_F867(param_00) { if(param_00 < 0) { param_00 = 0; } if(isdefined(self.var_110EE)) { self.var_D8B3 = self.var_110EE; } else { self.var_D8B3 = 0; } self.var_110EE = param_00; func_12F2F(); } //Function Number: 77 func_110C3() { self endon("disconnect"); level waittill("game_ended"); scripts\mp\_utility::setpersstat("streakPoints",scripts\common\utility::func_116D7(isdefined(self.var_110EE),self.var_110EE,0)); } //Function Number: 78 func_6CCB(param_00,param_01,param_02,param_03) { var_04 = rotatevector((0,0,1),(-1 * param_03,0,0)); var_05 = vectortoangles(param_01 - param_00.origin); for(var_06 = 0;var_06 < 360;var_06 = var_06 + 30) { var_07 = param_02 * rotatevector(var_04,(0,var_06 + var_05[1],0)); var_08 = param_01 + var_07; if(func_1281(param_00,var_08,param_01)) { return var_08; } } return undefined; } //Function Number: 79 func_6CCA(param_00,param_01,param_02,param_03,param_04,param_05) { var_06 = vectortoangles(param_00.origin - param_01); for(var_07 = param_03;var_07 <= param_04;var_07 = var_07 + param_05) { var_08 = rotatevector((1,0,0),(var_07 - 90,0,0)); var_09 = param_02 * rotatevector(var_08,(0,var_06[1],0)); var_0A = param_01 + var_09; if(func_1281(param_00,var_0A,param_01)) { return var_0A; } } return undefined; } //Function Number: 80 func_1281(param_00,param_01,param_02) { var_03 = bullettrace(param_01,param_02,0); if(var_03["fraction"] > 0.99) { return 1; } return 0; } //Function Number: 81 func_6CC9(param_00,param_01,param_02) { var_03 = func_6CCB(param_00,param_01,param_02,30); if(!isdefined(var_03)) { var_03 = func_6CCA(param_00,param_01,param_02,15,75,15); } return var_03; } //Function Number: 82 func_9FC3() { return isdefined(self.var_C53B) && self.var_C53B; } //Function Number: 83 func_9FC4() { return isdefined(self.var_98FF) && self.var_98FF; } //Function Number: 84 func_532A(param_00,param_01,param_02,param_03) { var_04 = "MOD_EXPLOSIVE"; var_05 = 5000; var_06 = (0,0,0); var_07 = (0,0,0); var_08 = ""; var_09 = ""; var_0A = ""; var_0B = undefined; if(!isdefined(param_03)) { return; } if(level.teambased) { foreach(var_0D in param_03) { if(scripts\mp\_utility::func_9FE7(param_00,param_01,var_0D)) { var_0D notify("damage",var_05,param_00,var_06,var_07,var_04,var_08,var_09,var_0A,var_0B,param_02); wait(0.05); } } return; } foreach(var_0D in var_04) { if(scripts\mp\_utility::func_9FD8(param_00,param_01,var_0D)) { var_0D notify("damage",var_05,param_00,var_06,var_07,var_04,var_08,var_09,var_0A,var_0B,param_02); wait(0.05); } } } //Function Number: 85 func_A6A0(param_00,param_01,param_02,param_03) { if(isdefined(param_01) && isplayer(param_00) && isdefined(param_02.var_222) && isdefined(param_02.var_222.team)) { if(scripts\mp\_utility::playersareenemies(param_00,param_02.var_222)) { if(scripts\mp\_utility::func_9E6C(param_01)) { return; } if(!isdefined(param_00.var_A99F[param_01])) { param_00.var_A99F[param_01] = 0; } if(param_00.var_A99F[param_01] == gettime()) { return; } param_00.var_A99F[param_01] = gettime(); param_00 thread scripts\mp\_gamelogic::func_117B7(param_01,1,"hits"); var_04 = param_00 scripts\mp\_persistence::func_10E34("totalShots"); var_05 = param_00 scripts\mp\_persistence::func_10E34("hits") + 1; if(var_05 <= var_04) { param_00 scripts\mp\_persistence::func_10E55("hits",var_05); param_00 scripts\mp\_persistence::func_10E55("misses",int(var_04 - var_05)); param_00 scripts\mp\_persistence::func_10E55("accuracy",int(var_05 * 10000 / var_04)); } if((isdefined(param_03) && scripts\common\utility::func_9D74(param_03)) || scripts\mp\_utility::isprojectiledamage(param_03)) { param_00 thread scripts\mp\contractchallenges::contractshotslanded(param_01); param_00.var_A96A = gettime(); var_06 = scripts\mp\_utility::func_8225(param_01); if(var_06 == "weapon_lmg") { if(!isdefined(param_00.shotslandedlmg)) { param_00.shotslandedlmg = 1; return; } param_00.shotslandedlmg++; return; } return; } } } } //Function Number: 86 func_83A0() { thread scripts\mp\_utility::func_83B4("destroyed_equipment"); } //Function Number: 87 func_83A1() { thread scripts\mp\_utility::func_83B4("trophy_defense"); } //Function Number: 88 func_839F() { thread scripts\mp\_utility::func_83B4("blackhat_hack"); } //Function Number: 89 func_9E9F(param_00) { return param_00 == "iw6_minigunjugg_mp"; } //Function Number: 90 func_110F5(param_00) { switch(param_00) { case "assault": case "specialist": return 1; case "resource": case "support": return 0; default: return 1; } } //Function Number: 91 func_98C2(param_00) { scripts\common\utility::func_1C6E(0); var_01 = func_98C3(param_00); if(isdefined(self)) { scripts\common\utility::func_1C6E(1); } return var_01; } //Function Number: 92 func_98C3(param_00) { if(isdefined(param_00) && func_9E6F(param_00)) { var_01 = "timeout"; } else { var_01 = scripts\common\utility::waittill_any_timeout_1(1,"disconnect","death","weapon_switch_started"); } scripts\mp\_hostmigration::func_13834(); if(var_01 == "weapon_switch_started") { return "fail"; } if(!isalive(self)) { return "fail"; } if(var_01 == "disconnect" || var_01 == "death") { if(var_01 == "disconnect") { return "disconnect"; } if(self.team == "spectator") { return "fail"; } return "success"; } if(scripts\mp\_utility::func_9E68()) { return "fail"; } if(!isdefined(param_00) || !issubstr(param_00,"odin") || !issubstr(param_00,"pointSelect")) { if(param_00 == "orbital_deployment" || param_00 == "drone_hive") { self visionsetfadetoblackforplayer("black_bw",0); thread scripts\mp\_utility::func_F607("black_bw",0,1,undefined,1); var_02 = scripts\common\utility::waittill_any_timeout_1(0,"disconnect","death"); } else { self visionsetfadetoblackforplayer("black_bw",0.75); thread scripts\mp\_utility::func_F607("black_bw",0.75,1,undefined,1); var_02 = scripts\common\utility::waittill_any_timeout_1(0.8,"disconnect","death"); } } else { var_02 = scripts\common\utility::waittill_any_timeout_1(1,"disconnect","death"); } self notify("black_out_done"); scripts\mp\_hostmigration::func_13834(); if(var_02 != "disconnect") { if(!isdefined(param_00) || !issubstr(param_00,"odin") || !issubstr(param_00,"pointSelect")) { thread func_41D6(1); } else { self notify("intro_cleared"); } if(self.team == "spectator") { return "fail"; } } if(self method_81B5()) { return "fail"; } if(!isalive(self)) { return "fail"; } if(scripts\mp\_utility::func_9E68()) { return "fail"; } if(var_02 == "disconnect") { return "disconnect"; } return "success"; } //Function Number: 93 func_9E6F(param_00) { switch(param_00) { case "remote_tank": case "remote_uav": case "osprey_gunner": case "pointSelect": case "orbital_deployment": case "ac130": case "ca_a10_strafe": case "vanguard": case "odin_assault": case "odin_support": case "heli_pilot": case "fleet_swarm": case "remote_c8": case "spiderbot": case "precision_airstrike": case "thor": case "minijackal": case "drone_hive": return 1; } return 0; } //Function Number: 94 func_41D6(param_00,param_01) { self endon("disconnect"); if(isdefined(param_00)) { wait(param_00); } if(!isdefined(param_01)) { param_01 = 0; } self visionsetfadetoblackforplayer("",param_01); scripts\mp\_utility::func_F607("",param_01); self notify("intro_cleared"); } //Function Number: 95 func_1CA5(param_00) { if(isdefined(param_00)) { self endon(param_00); } if(!isdefined(self.var_222)) { return; } var_01 = self.var_222; level endon("game_ended"); var_01 endon("disconnect"); var_01 endon("end_remote"); self endon("death"); for(;;) { var_02 = 0; while(var_01 usebuttonpressed()) { var_02 = var_02 + 0.05; if(var_02 > 0.75) { self notify("killstreakExit"); return; } wait(0.05); } wait(0.05); } } //Function Number: 96 func_D507(param_00,param_01) { self endon("disconnect"); level endon("game_ended"); if(scripts\mp\_utility::func_9FC6()) { return 0; } if(!scripts\mp\_utility::func_9F19(self)) { return 0; } self notify("play_remote_sequence"); var_02 = undefined; if(scripts\mp\_utility::func_9FB3(param_01)) { if(self method_81B5() || self ismantling() || !self isonground()) { scripts\mp\_hud_message::func_10122("KILLSTREAKS_UNAVAILABLE"); return 0; } var_02 = "ks_remote_device_mp"; scripts\mp\_supers::func_1CAB(); scripts\mp\_utility::func_12C6(var_02,0,0,1); self setclientomnvar("ui_remote_control_sequence",1); var_03 = scripts\mp\_utility::func_11383(var_02); if(scripts\mp\_utility::func_9FB3(var_03)) { thread func_13A4C(var_02); } else { return 0; } } scripts\mp\_utility::func_FB09(param_00.var_110EA); scripts\mp\_utility::func_7385(1); thread func_12B9C(); var_04 = scripts\common\utility::waittill_any_timeout_1(1,"death"); self notify("ks_freeze_end"); if(!isdefined(var_04) || var_04 != "timeout") { self setclientomnvar("ui_remote_control_sequence",0); scripts\mp\_utility::func_7385(0); scripts\mp\_utility::func_41E9(); if(isdefined(var_02)) { self notify("finished_with_manual_weapon_" + var_02); } return 0; } self setscriptablepartstate("killstreak","visor_active",0); thread func_13BA2(); scripts\mp\_utility::func_7385(0); self setclientomnvar("ui_remote_control_sequence",0); return 1; } //Function Number: 97 func_12B9C() { self endon("disconnect"); self endon("ks_freeze_end"); level waittill("round_switch"); scripts\mp\_utility::func_7385(0); } //Function Number: 98 func_13A4C(param_00) { self endon("death"); self endon("disconnect"); level endon("game_ended"); self waittill("finished_with_manual_weapon_" + param_00); if(self hasweapon(param_00)) { scripts\mp\_supers::func_12D6C(); scripts\mp\_utility::func_80F2(param_00); if(self getcurrentweapon() == "none") { scripts\mp\_utility::_switchtoweapon(self.var_A978); } } } //Function Number: 99 func_13BA2() { self endon("stop_remote_sequence"); self endon("disconnect"); level endon("game_ended"); self waittill("death"); self setscriptablepartstate("killstreak","neutral",0); } //Function Number: 100 func_11086(param_00) { self endon("disconnect"); level endon("game_ended"); self notify("stop_remote_sequence"); if(scripts\mp\_utility::func_9F19(self)) { if(scripts\mp\_utility::func_9FB3(level.var_C1BB) && !scripts\mp\_utility::func_9FB3(level.var_C1B2)) { thread scripts\mp\killstreaks\_nuke::func_FB0F(0.05); } self setclientomnvar("ui_remote_control_sequence",2); var_01 = "ks_remote_device_mp"; if(scripts\mp\_utility::func_9FB3(param_00)) { wait(0.1); self notify("finished_with_manual_weapon_" + var_01); } else { self notify("killstreak_finished_with_weapon_" + var_01); } } thread scripts\mp\_utility::delaysetclientomnvar(1.3,"ui_remote_control_sequence",0); self setscriptablepartstate("killstreak","neutral",0); scripts\mp\_utility::func_41E9(); } //Function Number: 101 combatrecordkillstreakuse(param_00) { if(!scripts\mp\_utility::canrecordcombatrecordstats()) { return; } var_01 = scripts\mp\_utility::getstreakrecordtype(param_00); if(!isdefined(var_01)) { if(param_00 != "nuke") { } return; } var_02 = self getplayerdata("mp",var_01,param_00,"uses"); self setplayerdata("mp",var_01,param_00,"uses",var_02 + 1); }