IL-GSC/IW/PC/ALL/scripts/mp/contractchallenges.gsc
2023-10-27 03:49:01 -04:00

749 lines
17 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\contractchallenges.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 24
* Decompile Time: 924 ms
* Timestamp: 10/27/2023 12:22:34 AM
*******************************************************************/
//Function Number: 1
registercontractchallenges()
{
level.contractchallenges = [];
registercontractchallenge("con_test",::contracttestchallenge);
registercontractchallenge("con_kills",::contractkills);
registercontractchallenge("con_kills_ads",::contractkills);
registercontractchallenge("con_kills_modified",::contractkills);
registercontractchallenge("con_kills_headshot",::contractkills);
registercontractchallenge("con_kills_AR",::contractkills);
registercontractchallenge("con_kills_LMG",::contractkills);
registercontractchallenge("con_kills_SG",::contractkills);
registercontractchallenge("con_kills_Sniper",::contractkills);
registercontractchallenge("con_kills_SMG",::contractkills);
registercontractchallenge("con_kills_rig_jtf",::contractkills);
registercontractchallenge("con_kills_rig_orion",::contractkills);
registercontractchallenge("con_kills_rig_sabre7",::contractkills);
registercontractchallenge("con_kills_rig_wraith",::contractkills);
registercontractchallenge("con_kills_rig_bloodanvil",::contractkills);
registercontractchallenge("con_battle_buddy",::contractkills);
registercontractchallenge("con_kills_variant",::contractkills);
registercontractchallenge("con_kills_oneshot",::contractkills);
registercontractchallenge("con_kills_double",::contractkillsrapid);
registercontractchallenge("con_kills_payload",::contractkillspayload);
registercontractchallenge("con_kills_rig_jtf_payload",::contractkillspayload);
registercontractchallenge("con_kills_rig_orion_payload",::contractkillspayload);
registercontractchallenge("con_kills_rig_sabre7_payload",::contractkillspayload);
registercontractchallenge("con_kills_rig_wraith_payload",::contractkillspayload);
registercontractchallenge("con_kills_rig_bloodanvil_payload",::contractkillspayload);
registercontractchallenge("con_kills_gesture",::contractkillsgesture);
registercontractchallenge("con_scorestreak_support",::contractscorestreaksupport);
registercontractchallenge("con_scorestreak_air",::contractscorestreakair);
registercontractchallenge("con_scorestreak_ground",::contractscorestreakground);
registercontractchallenge("con_scorestreak_destroy",::contractscorestreakdestroy);
registercontractchallenge("con_scorestreak_count",::contractscorestreakcount);
registercontractchallenge("con_medals_objective",::contractmedalsobjective);
registercontractchallenge("con_wins",::contractempty);
registercontractchallenge("con_wins_top3",::contractempty);
registercontractchallenge("con_kdr",::contractempty);
registercontractchallenge("con_wins_objective",::contractempty);
registercontractchallenge("con_wins_slayer",::contractempty);
registercontractchallenge("con_wins_hardcore",::contractempty);
registercontractchallenge("con_damage",::contractempty);
registercontractchallenge("con_shots_landed",::contractempty);
registercontractchallenge("con_equipment_hits",::contractempty);
registercontractchallenge("con_kills_streak",::contractempty);
}
//Function Number: 2
registercontractchallenge(param_00,param_01)
{
level.contractchallenges[param_00] = param_01;
}
//Function Number: 3
contractempty(param_00)
{
}
//Function Number: 4
contracttestchallenge(param_00)
{
self endon("disconnect");
self endon("game_ended");
for(;;)
{
wait(1);
scripts\mp\contracts::updatecontractprogress(param_00);
}
}
//Function Number: 5
contractkillsimmediate(param_00,param_01,param_02,param_03,param_04)
{
if(!isdefined(self.contracts))
{
return;
}
foreach(var_06 in self.contracts)
{
var_07 = 0;
switch(var_06.var_DE3F)
{
case "con_kills_streak":
var_08 = self.pers["cur_kill_streak"];
if(isdefined(var_08))
{
if(var_08 % 5 == 0)
{
var_07 = 1;
}
}
break;
case "con_kills_gesture":
if(isdefined(self.var_A960))
{
var_09 = gettime();
if(abs(self.var_A960 - var_09) < 3000)
{
var_0A = param_00 getentitynumber();
thread stampkillgesture(var_0A);
var_07 = 1;
}
}
break;
}
if(var_07)
{
scripts\mp\contracts::updatecontractprogress(var_06);
}
}
}
//Function Number: 6
contractkills(param_00)
{
self endon("disconnect");
self endon("game_ended");
if(param_00.var_DE3F == "con_battle_buddy")
{
thread contractassists(param_00);
}
for(;;)
{
self waittill("kill_event_buffered",var_01,var_02,var_03,var_04);
var_05 = 0;
switch(param_00.var_DE3F)
{
case "con_kills":
var_05 = 1;
break;
case "con_kills_ads":
if(scripts\mp\_utility::func_9FB3(var_04["ads"]))
{
var_05 = 1;
}
break;
case "con_kills_modified":
if(scripts\mp\_utility::func_9FB3(var_04["sliding"]) || scripts\mp\_utility::func_9FB3(var_04["hipfire"]) || scripts\mp\_utility::func_9FB3(var_04["airborne"]) || scripts\mp\_utility::func_9FB3(var_04["wallkill"]))
{
var_05 = 1;
}
break;
case "con_kills_headshot":
if(scripts\mp\_utility::func_9FB3(var_04["headshot"]))
{
var_05 = 1;
}
break;
case "con_kills_AR":
var_02 = scripts\mp\_utility::func_13CA1(var_02);
if(var_03 != "MOD_MELEE" && !scripts\mp\_utility::func_9E6C(var_02) && scripts\mp\_utility::func_8225(var_02) == "weapon_assault")
{
var_05 = 1;
}
break;
case "con_kills_LMG":
var_02 = scripts\mp\_utility::func_13CA1(var_02);
if(var_03 != "MOD_MELEE" && !scripts\mp\_utility::func_9E6C(var_02) && scripts\mp\_utility::func_8225(var_02) == "weapon_lmg")
{
var_05 = 1;
}
break;
case "con_kills_SG":
var_02 = scripts\mp\_utility::func_13CA1(var_02);
if(var_03 != "MOD_MELEE" && !scripts\mp\_utility::func_9E6C(var_02) && scripts\mp\_utility::func_8225(var_02) == "weapon_shotgun")
{
var_05 = 1;
}
if(self method_8519(var_02))
{
var_06 = scripts\mp\_utility::func_8234(var_02);
var_07 = function_02C4(var_02);
if(var_06 == "iw7_longshot")
{
var_05 = 1;
}
if(var_06 == "iw7_erad" && isdefined(var_07) && var_07 == 3 || var_07 == 35)
{
var_05 = 1;
}
}
break;
case "con_kills_Sniper":
var_02 = scripts\mp\_utility::func_13CA1(var_02);
if(var_03 != "MOD_MELEE" && !scripts\mp\_utility::func_9E6C(var_02) && scripts\mp\_utility::func_8225(var_02) == "weapon_sniper")
{
var_05 = 1;
}
break;
case "con_kills_SMG":
var_02 = scripts\mp\_utility::func_13CA1(var_02);
if(var_03 != "MOD_MELEE" && !scripts\mp\_utility::func_9E6C(var_02) && scripts\mp\_utility::func_8225(var_02) == "weapon_smg")
{
var_05 = 1;
}
break;
case "con_battle_buddy":
if(scripts\mp\_utility::func_9FB3(var_04["buddy_kill"]))
{
var_05 = 1;
}
break;
case "con_kills_rig_jtf":
var_08 = ["archetype_assault","archetype_heavy","archetype_scout"];
var_05 = archtypecheck(var_08);
break;
case "con_kills_rig_orion":
var_08 = ["archetype_assault","archetype_heavy","archetype_engineer"];
var_05 = archtypecheck(var_08);
break;
case "con_kills_rig_sabre7":
var_08 = ["archetype_engineer","archetype_assassin"];
var_05 = archtypecheck(var_08);
break;
case "con_kills_rig_wraith":
var_08 = ["archetype_sniper","archetype_scout"];
var_05 = archtypecheck(var_08);
break;
case "con_kills_rig_bloodanvil":
var_08 = ["archetype_heavy","archetype_assassin"];
var_05 = archtypecheck(var_08);
break;
case "con_kills_variant":
var_05 = isdefined(function_02C4(var_02));
break;
case "con_kills_oneshot":
if(scripts\mp\_utility::func_9FB3(var_04["oneshotkill"]) || scripts\mp\_utility::func_9FB3(var_04["oneshotkill_shotgun"]))
{
var_05 = 1;
}
break;
}
if(var_05)
{
scripts\mp\contracts::updatecontractprogress(param_00);
}
}
}
//Function Number: 7
contractassists(param_00)
{
self endon("disconnect");
self endon("game_ended");
for(;;)
{
self waittill("assist_buffered",var_01);
var_02 = 0;
switch(param_00.var_DE3F)
{
case "con_battle_buddy":
if(isdefined(var_01) && scripts\mp\_utility::func_9FB3(var_01["buddy_kill"]))
{
var_02 = 1;
}
break;
}
if(var_02)
{
scripts\mp\contracts::updatecontractprogress(param_00);
}
}
}
//Function Number: 8
contractkillsrapid(param_00)
{
self endon("disconnect");
self endon("game_ended");
for(;;)
{
self waittill("update_rapid_kill_buffered",var_01);
var_02 = 0;
switch(param_00.var_DE3F)
{
case "con_kills_double":
if(var_01 % 2 == 0)
{
var_02 = 1;
}
break;
}
if(var_02)
{
scripts\mp\contracts::updatecontractprogress(param_00);
}
}
}
//Function Number: 9
contractkillspayload(param_00)
{
self endon("disconnect");
self endon("game_ended");
for(;;)
{
self waittill("super_kill_buffered");
var_01 = 0;
switch(param_00.var_DE3F)
{
case "con_kills_payload":
var_01 = 1;
break;
case "con_kills_rig_jtf_payload":
var_02 = ["archetype_assault","archetype_heavy","archetype_scout"];
var_01 = archtypecheck(var_02);
break;
case "con_kills_rig_orion_payload":
var_02 = ["archetype_assault","archetype_heavy","archetype_engineer"];
var_01 = archtypecheck(var_02);
break;
case "con_kills_rig_sabre7_payload":
var_02 = ["archetype_engineer","archetype_assassin"];
var_01 = archtypecheck(var_02);
break;
case "con_kills_rig_wraith_payload":
var_02 = ["archetype_sniper","archetype_scout"];
var_01 = archtypecheck(var_02);
break;
case "con_kills_rig_bloodanvil_payload":
var_02 = ["archetype_heavy","archetype_assassin"];
var_01 = archtypecheck(var_02);
break;
}
if(var_01)
{
scripts\mp\contracts::updatecontractprogress(param_00);
}
}
}
//Function Number: 10
archtypecheck(param_00)
{
foreach(var_02 in param_00)
{
if(scripts\mp\_utility::func_9D48(var_02))
{
return 1;
}
}
return 0;
}
//Function Number: 11
contractscorestreaksupport(param_00)
{
self endon("disconnect");
self endon("game_ended");
for(;;)
{
self waittill("killstreak_used",var_01);
var_02 = 0;
switch(var_01)
{
case "dronedrop":
case "directional_uav":
case "counter_uav":
case "uav":
var_02 = 1;
break;
}
if(var_02)
{
scripts\mp\contracts::updatecontractprogress(param_00);
}
}
}
//Function Number: 12
contractscorestreakair(param_00)
{
self endon("disconnect");
self endon("game_ended");
for(;;)
{
self waittill("kill_event_buffered",var_01,var_02);
var_03 = 0;
if(scripts\mp\_utility::func_9E6C(var_02))
{
var_04 = scripts\mp\_missions::func_7F48(var_02);
switch(var_04)
{
case "jackal":
case "bombardment":
case "precision_airstrike":
case "thor":
case "minijackal":
case "drone_hive":
var_03 = 1;
break;
}
if(var_03)
{
scripts\mp\contracts::updatecontractprogress(param_00);
}
}
}
}
//Function Number: 13
contractscorestreakground(param_00)
{
self endon("disconnect");
self endon("game_ended");
for(;;)
{
self waittill("kill_event_buffered",var_01,var_02);
var_03 = 0;
if(scripts\mp\_utility::func_9E6C(var_02))
{
var_04 = scripts\mp\_missions::func_7F48(var_02);
switch(var_04)
{
case "ball_drone_backup":
case "remote_c8":
case "venom":
case "sentry_shock":
var_03 = 1;
break;
}
if(var_03)
{
scripts\mp\contracts::updatecontractprogress(param_00);
}
}
}
}
//Function Number: 14
contractscorestreakdestroy(param_00)
{
self endon("disconnect");
self endon("game_ended");
for(;;)
{
self waittill("earned_award_buffered",var_01);
if(issubstr(var_01,"kill_ss_"))
{
scripts\mp\contracts::updatecontractprogress(param_00);
}
}
}
//Function Number: 15
contractscorestreakcount(param_00)
{
self endon("disconnect");
self endon("game_ended");
for(;;)
{
self waittill("killstreak_used",var_01);
if(!isdefined(self.pers["con_scorestreak_count"]))
{
self.pers["con_scorestreak_count"] = 1;
}
else
{
self.pers["con_scorestreak_count"]++;
}
if(self.pers["con_scorestreak_count"] % 2 == 0)
{
scripts\mp\contracts::updatecontractprogress(param_00);
}
}
}
//Function Number: 16
contractmatchend(param_00)
{
if(!isdefined(self.contracts))
{
return;
}
foreach(var_02 in self.contracts)
{
var_03 = 0;
switch(var_02.var_DE3F)
{
case "con_wins":
if(param_00.var_13D8A)
{
var_03 = 1;
}
break;
case "con_wins_top3":
if(param_00.var_13D8A && param_00.var_CBFC < 3)
{
var_03 = 1;
}
break;
case "con_kdr":
if(self.pers["kdratio"] >= 2)
{
var_03 = 1;
}
break;
case "con_wins_objective":
if(param_00.var_13D8A)
{
switch(level.gametype)
{
case "tdef":
case "koth":
case "grind":
case "dom":
case "conf":
case "dd":
case "ball":
case "ctf":
case "siege":
case "sd":
case "sr":
var_03 = 1;
break;
}
}
break;
case "con_wins_slayer":
if(param_00.var_13D8A)
{
switch(level.gametype)
{
case "conf":
case "front":
case "dm":
case "war":
var_03 = 1;
break;
}
}
break;
case "con_wins_hardcore":
if(param_00.var_13D8A && level.var_8B38)
{
var_03 = 1;
}
break;
}
if(var_03)
{
scripts\mp\contracts::updatecontractprogress(var_02);
}
}
}
//Function Number: 17
contractmedalsobjective(param_00)
{
self endon("disconnect");
self endon("game_ended");
for(;;)
{
thread contractnotifylistener("earned_award_buffered","update_objective_medal");
thread contractnotifylistener("bomb_planted","update_objective_medal");
self waittill("update_objective_medal",var_01);
if(isdefined(var_01))
{
if(var_01 == "mode_x_assault" || var_01 == "mode_sd_defuse_save" || var_01 == "mode_uplink_kill_with_ball" || var_01 == "mode_ctf_kill_with_flag" || var_01 == "mode_x_defend" || var_01 == "mode_sd_plant_save" || var_01 == "mode_uplink_kill_carrier" || var_01 == "mode_ctf_kill_carrier" || var_01 == "mode_dom_secure_b" || var_01 == "mode_dom_secure_neutral" || var_01 == "mode_dom_secure" || var_01 == "mode_hp_secure" || var_01 == "mode_sd_last_defuse" || var_01 == "mode_sd_defuse" || var_01 == "mode_uplink_dunk" || var_01 == "mode_uplink_fieldgoal" || var_01 == "mode_ctf_cap" || var_01 == "mode_siege_secure")
{
scripts\mp\contracts::updatecontractprogress(param_00);
}
continue;
}
scripts\mp\contracts::updatecontractprogress(param_00);
}
}
//Function Number: 18
contractnotifylistener(param_00,param_01)
{
self waittill(param_00,var_02);
self notify(param_01,var_02);
}
//Function Number: 19
contractplayerdamaged(param_00)
{
if(!isdefined(self.contracts))
{
return;
}
foreach(var_02 in self.contracts)
{
if(var_02.var_DE3F == "con_damage")
{
scripts\mp\contracts::updatecontractprogress(var_02,param_00);
}
}
}
//Function Number: 20
contractshotslanded(param_00)
{
if(!isdefined(self.contracts))
{
return;
}
foreach(var_02 in self.contracts)
{
if(var_02.var_DE3F == "con_shots_landed")
{
scripts\mp\contracts::updatecontractprogress(var_02);
}
}
}
//Function Number: 21
contractkillsgesture(param_00)
{
self endon("disconnect");
self endon("game_ended");
self.contractkillgesture = [];
for(;;)
{
self waittill("used_cosmetic_gesture");
var_01 = gettime();
foreach(var_03 in self.var_A684)
{
if(abs(var_03.time - var_01) < 3000)
{
if(!isdefined(self.contractkillgesture[var_03.victimid]))
{
thread stampkillgesture(var_03.victimid);
scripts\mp\contracts::updatecontractprogress(param_00);
}
}
}
}
}
//Function Number: 22
stampkillgesture(param_00)
{
self endon("disconnect");
self endon("game_ended");
self.contractkillgesture[param_00] = 1;
wait(3);
self.contractkillgesture[param_00] = undefined;
}
//Function Number: 23
contractequipmentdamagedplayer(param_00,param_01,param_02)
{
if(!isdefined(self.contracts))
{
return;
}
foreach(var_04 in self.contracts)
{
if(var_04.var_DE3F == "con_equipment_hits")
{
if(!isdefined(self.equipmentdamageinflictors))
{
self.equipmentdamageinflictors = [];
}
if(!isdefined(self.equipmentdamageinflictors[param_00.var_86BD]))
{
self.equipmentdamageinflictors[param_00.var_86BD] = [];
}
if(isdefined(param_02.parentinflictor))
{
var_05 = param_02.parentinflictor;
}
else
{
var_05 = var_03 getentitynumber();
}
var_06 = var_05 + "_" + scripts\mp\_utility::func_13CA1(param_01);
if(param_00 != self && !isdefined(self.equipmentdamageinflictors[param_00.var_86BD][var_06]))
{
thread stampinflictordamage(param_00.var_86BD,var_06);
scripts\mp\contracts::updatecontractprogress(var_04);
}
}
}
}
//Function Number: 24
stampinflictordamage(param_00,param_01)
{
self endon("disconnect");
self endon("game_ended");
self.equipmentdamageinflictors[param_00][param_01] = 1;
wait(5);
self.equipmentdamageinflictors[param_00][param_01] = undefined;
}