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

910 lines
17 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\_rank.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 48
* Decompile Time: 1757 ms
* Timestamp: 10/27/2023 12:21:26 AM
*******************************************************************/
//Function Number: 1
init()
{
level.var_EC3A = [];
var_00 = getdvarint("online_mp_xpscale");
if(var_00 > 4 || var_00 < 0)
{
exitlevel(0);
}
func_17CA(var_00,"online_mp_xpscale");
level.var_DCD6 = [];
level.var_13CBD = [];
level.var_B4C0 = int(tablelookup("mp/rankTable.csv",0,"maxrank",1));
for(var_01 = 0;var_01 <= level.var_B4C0;var_01++)
{
level.var_DCD6[var_01]["minXP"] = tablelookup("mp/rankTable.csv",0,var_01,2);
level.var_DCD6[var_01]["xpToNext"] = tablelookup("mp/rankTable.csv",0,var_01,3);
level.var_DCD6[var_01]["maxXP"] = tablelookup("mp/rankTable.csv",0,var_01,7);
level.var_DCD6[var_01]["splash"] = tablelookup("mp/rankTable.csv",0,var_01,15);
}
scripts\mp\_weaponrank::init();
scripts\mp\_missions::func_31D7();
level.prestigeextras = [];
var_02 = 0;
for(;;)
{
var_03 = tablelookupbyrow("mp/unlocks/prestigeExtrasUnlocks.csv",var_02,0);
if(!isdefined(var_03) || var_03 == "")
{
break;
}
level.prestigeextras[var_03] = 1;
var_02++;
}
level thread func_C56E();
}
//Function Number: 2
func_9F1E(param_00)
{
if(isdefined(level.var_EC3A[param_00]))
{
return 1;
}
return 0;
}
//Function Number: 3
func_DF0A(param_00,param_01,param_02)
{
level.var_EC3A[param_00][param_01] = param_02;
if(param_00 == "kill" && param_01 == "value")
{
setomnvar("ui_game_type_kill_value",int(param_02));
}
}
//Function Number: 4
func_8104(param_00)
{
var_01 = "scr_" + level.gametype + "_score_" + param_00;
if(getdvar(var_01) != "")
{
return getdvarint(var_01);
}
return level.var_EC3A[param_00]["value"];
}
//Function Number: 5
func_8102(param_00,param_01)
{
switch(param_01)
{
case "value":
var_02 = "scr_" + level.gametype + "_score_" + param_00;
if(getdvar(var_02) != "")
{
return getdvarint(var_02);
}
else
{
return level.var_EC3A[param_00]["value"];
}
break;
default:
return level.var_EC3A[param_00][param_01];
}
}
//Function Number: 6
func_80CF(param_00)
{
return int(level.var_DCD6[param_00]["minXP"]);
}
//Function Number: 7
func_80D1(param_00)
{
return int(level.var_DCD6[param_00]["xpToNext"]);
}
//Function Number: 8
func_80CE(param_00)
{
return int(level.var_DCD6[param_00]["maxXP"]);
}
//Function Number: 9
func_80D0(param_00)
{
var_01 = getdvarint("scr_beta_max_level",0);
if(var_01 > 0 && param_00 + 1 >= var_01)
{
return "ranked_up_beta_max";
}
return level.var_DCD6[param_00]["splash"];
}
//Function Number: 10
func_80CB(param_00)
{
return tablelookupistring("mp/rankTable.csv",0,param_00,16);
}
//Function Number: 11
func_80CC(param_00,param_01)
{
return tablelookup("mp/rankIconTable.csv",0,param_00,param_01 + 1);
}
//Function Number: 12
func_80CD(param_00)
{
return int(tablelookup("mp/rankTable.csv",0,param_00,13));
}
//Function Number: 13
func_C56E()
{
for(;;)
{
level waittill("connected",var_00);
if(!isai(var_00))
{
if(var_00 scripts\mp\_utility::func_DCD5())
{
var_00.pers["rankxp"] = var_00 getplayerdata("mp","progression","playerLevel","xp");
var_01 = var_00 getplayerdata("mp","progression","playerLevel","prestige");
if(!isdefined(var_00.pers["xpEarnedThisMatch"]))
{
var_00.pers["xpEarnedThisMatch"] = 0;
}
}
else
{
var_01 = 0;
var_00.pers["rankxp"] = 0;
}
}
else
{
var_01 = 0;
var_00.pers["rankxp"] = 0;
}
var_00.pers["prestige"] = var_01;
if(var_00.pers["rankxp"] < 0)
{
var_00.pers["rankxp"] = 0;
}
var_02 = var_00 func_80C9(var_00 func_80D2());
var_00.pers["rank"] = var_02;
var_00 method_832D(var_02,var_01);
if(var_00.var_41F0 < level.var_B4B0)
{
setmatchdata("players",var_00.var_41F0,"rank",var_02);
setmatchdata("players",var_00.var_41F0,"Prestige",var_01);
if(!isai(var_00) && scripts\mp\_utility::func_D957() || scripts\mp\_utility::func_B3EC())
{
setmatchdata("players",var_00.var_41F0,"isSplitscreen",var_00 issplitscreenplayer());
}
}
var_00.pers["participation"] = 0;
var_00.var_EC53 = 0;
var_00.var_EC43 = 0;
var_00.var_EC30 = [];
var_00.var_D702 = 0;
var_00 setclientdvar("ui_promotion",0);
if(!isdefined(var_00.pers["summary"]))
{
var_00.pers["summary"] = [];
var_00.pers["summary"]["xp"] = 0;
var_00.pers["summary"]["score"] = 0;
var_00.pers["summary"]["challenge"] = 0;
var_00.pers["summary"]["match"] = 0;
var_00.pers["summary"]["misc"] = 0;
var_00.pers["summary"]["medal"] = 0;
var_00.pers["summary"]["bonusXP"] = 0;
}
var_00 setclientdvar("ui_opensummary",0);
var_00 thread scripts\mp\_missions::func_12E71();
var_00 thread func_C57B();
var_00 thread func_C575();
if(var_00 scripts\mp\_utility::func_DCD5())
{
var_03 = getdvarint("online_mp_party_xpscale");
var_04 = var_00 method_85BE() > 1;
if(var_04)
{
var_00 func_1817(var_03,"online_mp_party_xpscale");
}
if(var_00 getplayerdata("mp","prestigeDoubleWeaponXp"))
{
var_00.var_D882 = 1;
}
else
{
var_00.var_D882 = 0;
}
}
var_00.var_EC29 = 0;
var_00.var_EC2B = 0;
var_00 setclientomnvar("ui_score_event_control",-1);
}
}
//Function Number: 14
func_C57B()
{
self endon("disconnect");
for(;;)
{
self waittill("spawned_player");
if(isai(self))
{
self.pers["rankxp"] = scripts\mp\_utility::func_7BF8();
}
else if(!level.rankedmatch)
{
self.pers["rankxp"] = 0;
}
else
{
}
func_D458();
}
}
//Function Number: 15
func_D458()
{
if(self.pers["rankxp"] < 0)
{
self.pers["rankxp"] = 0;
}
var_00 = func_80C9(func_80D2());
self.pers["rank"] = var_00;
if(isai(self) || !isdefined(self.pers["prestige"]))
{
if(level.rankedmatch && isdefined(self.var_316E))
{
var_01 = func_8098();
}
else
{
var_01 = 0;
}
self method_832D(var_00,var_01);
self.pers["prestige"] = var_01;
}
if(isdefined(self.var_41F0) && self.var_41F0 < level.var_B4B0)
{
setmatchdata("players",self.var_41F0,"rank",var_00);
setmatchdata("players",self.var_41F0,"Prestige",self.pers["prestige"]);
}
}
//Function Number: 16
func_C575()
{
self endon("disconnect");
for(;;)
{
scripts\common\utility::waittill_any_3("giveLoadout","changed_kit");
if(issubstr(self.var_4004,"custom"))
{
if(!level.rankedmatch)
{
self.pers["rankxp"] = 0;
continue;
}
if(isai(self))
{
self.pers["rankxp"] = 0;
continue;
}
}
}
}
//Function Number: 17
func_839A(param_00,param_01,param_02)
{
self endon("disconnect");
if(isdefined(self.var_222) && !isbot(self))
{
self.var_222 func_839A(param_00,param_01,param_02);
return;
}
if(isai(self) || !isplayer(self))
{
return;
}
if(!scripts\mp\_utility::func_DCD5())
{
return;
}
if(!isdefined(param_01) || param_01 == 0)
{
return;
}
var_03 = func_8102(param_00,"group");
if(!isdefined(param_02))
{
if(var_03 == "medal" || var_03 == "kill_killstreak")
{
param_02 = self getcurrentweapon();
}
}
if(!isdefined(level.var_72DA) || !level.var_72DA)
{
if(level.teambased && !level.var_115C6["allies"] || !level.var_115C6["axis"])
{
return;
}
else if(!level.teambased && level.var_115C6["allies"] + level.var_115C6["axis"] < 2)
{
return;
}
}
var_04 = func_8102(param_00,"allowBonus");
var_05 = 1;
var_06 = param_01;
var_07 = 0;
if(scripts\mp\_utility::func_9FB3(var_04))
{
var_05 = func_80D4();
var_06 = int(param_01 * var_05);
var_07 = int(max(var_06 - param_01,0));
}
var_08 = func_80D2();
func_93E3(var_06);
if(func_12EFA(var_08))
{
thread func_12EFB();
}
func_11390();
if(isdefined(param_02) && scripts\mp\_weaponrank::func_13CCA(param_02))
{
thread scripts\mp\_weaponrank::func_8394(param_02,param_00,param_01);
}
func_DDF7(param_00,param_01,var_07);
var_09 = func_8098();
var_0A = func_80C8();
thread scripts\mp\_analyticslog::func_AFA2(var_09,var_0A,param_01,param_00);
}
//Function Number: 18
func_DDF7(param_00,param_01,param_02)
{
var_03 = param_01 + param_02;
var_04 = func_8102(param_00,"group");
if(!isdefined(var_04) || var_04 == "")
{
self.pers["summary"]["misc"] = self.pers["summary"]["misc"] + param_01;
self.pers["summary"]["bonusXP"] = self.pers["summary"]["bonusXP"] + param_02;
self.pers["summary"]["xp"] = self.pers["summary"]["xp"] + var_03;
return;
}
switch(var_04)
{
case "match_bonus":
self.pers["summary"]["match"] = self.pers["summary"]["match"] + param_01;
self.pers["summary"]["bonusXP"] = self.pers["summary"]["bonusXP"] + param_02;
self.pers["summary"]["xp"] = self.pers["summary"]["xp"] + var_03;
break;
case "challenge":
self.pers["summary"]["challenge"] = self.pers["summary"]["challenge"] + param_01;
self.pers["summary"]["bonusXP"] = self.pers["summary"]["bonusXP"] + param_02;
self.pers["summary"]["xp"] = self.pers["summary"]["xp"] + var_03;
break;
case "medal":
self.pers["summary"]["medal"] = self.pers["summary"]["medal"] + param_01;
self.pers["summary"]["bonusXP"] = self.pers["summary"]["bonusXP"] + param_02;
self.pers["summary"]["xp"] = self.pers["summary"]["xp"] + var_03;
break;
default:
self.pers["summary"]["score"] = self.pers["summary"]["score"] + param_01;
self.pers["summary"]["bonusXP"] = self.pers["summary"]["bonusXP"] + param_02;
self.pers["summary"]["xp"] = self.pers["summary"]["xp"] + var_03;
break;
}
}
//Function Number: 19
func_12EFA(param_00)
{
var_01 = func_80C8();
if(var_01 == self.pers["rank"] || self.pers["rank"] == level.var_B4C0)
{
return 0;
}
var_02 = self.pers["rank"];
self.pers["rank"] = var_01;
self method_832D(var_01);
return 1;
}
//Function Number: 20
func_12EFB()
{
self endon("disconnect");
self notify("update_rank");
self endon("update_rank");
var_00 = self.pers["team"];
if(!isdefined(var_00))
{
return;
}
if(!scripts\mp\_utility::func_ABF0("game_over"))
{
level scripts\common\utility::waittill_notify_or_timeout("game_over",0.25);
}
var_01 = self.pers["rank"];
var_02 = func_80D0(var_01);
if(isdefined(var_02) && var_02 != "")
{
thread scripts\mp\_hud_message::func_10151(var_02,var_01 + 1);
}
for(var_03 = 0;var_03 < level.players.size;var_03++)
{
var_04 = level.players[var_03];
var_05 = var_04.pers["team"];
if(isdefined(var_05) && var_05 == var_00)
{
var_04 iprintln(&"RANK_PLAYER_WAS_PROMOTED",self,var_01 + 1);
}
}
}
//Function Number: 21
func_DB97(param_00)
{
self.var_EC43 = self.var_EC43 + param_00;
}
//Function Number: 22
func_6F78()
{
func_EC42(self.var_EC43);
self.var_EC43 = 0;
}
//Function Number: 23
func_6F79()
{
self endon("disconnect");
self endon("joined_team");
self endon("joined_spectators");
self notify("flushScorePointsPopupQueueOnSpawn()");
self endon("flushScorePointsPopupQueueOnSpawn()");
self waittill("spawned_player");
wait(0.1);
func_6F78();
}
//Function Number: 24
func_EC42(param_00,param_01)
{
self endon("disconnect");
self endon("joined_team");
self endon("joined_spectators");
if(param_00 == 0)
{
return;
}
if(!scripts\mp\_utility::func_9F19(self) && !self ismlgspectator())
{
if(!scripts\mp\_utility::func_9FB3(param_01) || scripts\mp\_utility::func_9E4A())
{
func_DB97(param_00);
thread func_6F79();
return;
}
}
self notify("scorePointsPopup");
self endon("scorePointsPopup");
self.var_EC53 = self.var_EC53 + param_00;
self setclientomnvar("ui_points_popup",self.var_EC53);
self setclientomnvar("ui_points_popup_notify",gettime());
wait(1);
self.var_EC53 = 0;
}
//Function Number: 25
func_C16F()
{
scripts\common\utility::func_136F7();
level notify("update_player_score",self,self.var_EC53);
}
//Function Number: 26
func_DB96(param_00)
{
self.var_EC30[self.var_EC30.size] = param_00;
}
//Function Number: 27
func_6F76()
{
foreach(var_01 in self.var_EC30)
{
func_EC2D(var_01);
}
self.var_EC30 = [];
}
//Function Number: 28
func_6F77()
{
self endon("disconnect");
self endon("joined_team");
self endon("joined_spectators");
self notify("flushScoreEventPopupQueueOnSpawn()");
self endon("flushScoreEventPopupQueueOnSpawn()");
self waittill("spawned_player");
wait(0.1);
func_6F76();
}
//Function Number: 29
func_EC2D(param_00)
{
if(isdefined(self.var_222))
{
self.var_222 func_EC2D(param_00);
}
if(!isplayer(self))
{
return;
}
var_01 = func_8102(param_00,"eventID");
var_02 = func_8102(param_00,"text");
if(!isdefined(var_01) || var_01 < 0 || !isdefined(var_02) || var_02 == "")
{
return;
}
if(!scripts\mp\_utility::func_9F19(self) && !self ismlgspectator())
{
func_DB96(param_00);
thread func_6F77();
return;
}
if(!isdefined(self.var_EC2C))
{
self.var_EC2C = 1;
thread func_41D7();
}
else
{
self.var_EC2C++;
if(self.var_EC2C > 8)
{
self.var_EC2C = 8;
return;
}
}
self setclientomnvar("ui_score_event_list_" + self.var_EC2B,var_01);
self setclientomnvar("ui_score_event_control",self.var_EC29 % 16);
self.var_EC2B++;
self.var_EC2B = self.var_EC2B % 8;
self.var_EC29++;
}
//Function Number: 30
func_41D7()
{
self endon("disconnect");
self notify("clearScoreEventListAfterWait()");
self endon("clearScoreEventListAfterWait()");
scripts\common\utility::waittill_notify_or_timeout("death",0.5);
self.var_EC2C = undefined;
}
//Function Number: 31
func_80C8()
{
var_00 = self.pers["rankxp"];
var_01 = self.pers["rank"];
if(var_00 < func_80CF(var_01) + func_80D1(var_01))
{
return var_01;
}
return func_80C9(var_00);
}
//Function Number: 32
func_80C9(param_00)
{
for(var_01 = level.var_B4C0;var_01 > 0;var_01--)
{
if(param_00 >= func_80CF(var_01) && param_00 < func_80CF(var_01) + func_80D1(var_01))
{
return var_01;
}
}
return var_01;
}
//Function Number: 33
func_7F8F()
{
var_00 = func_80C8() + 1;
return 3 + var_00 * 0.5 * 10;
}
//Function Number: 34
func_8098()
{
if(isai(self) && isdefined(self.pers["prestige_fake"]))
{
return self.pers["prestige_fake"];
}
return self getplayerdata("mp","progression","playerLevel","prestige");
}
//Function Number: 35
func_80D2()
{
return self.pers["rankxp"];
}
//Function Number: 36
func_93E3(param_00)
{
if(!scripts\mp\_utility::func_DCD5())
{
return;
}
if(isai(self))
{
return;
}
var_01 = getdvarint("scr_beta_max_level",0);
if(var_01 > 0 && func_80C8() + 1 >= var_01)
{
param_00 = 0;
}
var_02 = func_80D2();
var_03 = int(min(var_02 + param_00,func_80CE(level.var_B4C0) - 1));
if(self.pers["rank"] == level.var_B4C0 && var_03 >= func_80CE(level.var_B4C0))
{
var_03 = func_80CE(level.var_B4C0);
}
self.pers["xpEarnedThisMatch"] = self.pers["xpEarnedThisMatch"] + param_00;
self.pers["rankxp"] = var_03;
}
//Function Number: 37
func_11390()
{
var_00 = func_80D2();
self setplayerdata("mp","progression","playerLevel","xp",var_00);
}
//Function Number: 38
func_5118(param_00,param_01,param_02)
{
wait(param_00);
thread scripts\mp\_utility::func_83B4(param_01);
}
//Function Number: 39
func_17CA(param_00,param_01)
{
level func_1817(param_00,param_01);
}
//Function Number: 40
func_7ED9()
{
var_00 = level func_80D3();
if(var_00 > 4 || var_00 < 0)
{
exitlevel(0);
}
return var_00;
}
//Function Number: 41
func_1817(param_00,param_01)
{
if(!isdefined(self.var_DCD7))
{
self.var_DCD7 = [];
}
if(isdefined(self.var_DCD7[param_01]))
{
self.var_DCD7[param_01] = max(self.var_DCD7[param_01],param_00);
return;
}
self.var_DCD7[param_01] = param_00;
}
//Function Number: 42
func_80D3()
{
if(!isdefined(self.var_DCD7))
{
return 1;
}
var_00 = 1;
foreach(var_02 in self.var_DCD7)
{
if(!isdefined(var_02))
{
continue;
}
var_00 = var_00 * var_02;
}
return var_00;
}
//Function Number: 43
func_E125(param_00)
{
level func_E15F(param_00);
}
//Function Number: 44
func_E15F(param_00)
{
if(!isdefined(self.var_DCD7))
{
return;
}
if(!isdefined(self.var_DCD7[param_00]))
{
return;
}
self.var_DCD7[param_00] = undefined;
}
//Function Number: 45
func_1835(param_00,param_01,param_02)
{
if(!level.teambased)
{
param_01 = "all";
}
if(!isdefined(self.var_115E5))
{
level.var_115E5 = [];
}
if(!isdefined(level.var_115E5[param_01]))
{
level.var_115E5[param_01] = [];
}
if(isdefined(level.var_115E5[param_01][param_02]))
{
level.var_115E5[param_01][param_02] = max(self.var_115E5[param_01][param_02],param_00);
return;
}
level.var_115E5[param_01][param_02] = param_00;
}
//Function Number: 46
func_E17C(param_00,param_01)
{
if(!level.teambased)
{
param_00 = "all";
}
if(!isdefined(level.var_115E5))
{
return;
}
if(!isdefined(level.var_115E5[param_00]))
{
return;
}
if(!isdefined(level.var_115E5[param_00][param_01]))
{
return;
}
level.var_115E5[param_00][param_01] = undefined;
}
//Function Number: 47
func_81B6(param_00)
{
if(!level.teambased)
{
param_00 = "all";
}
if(!isdefined(level.var_115E5) || !isdefined(level.var_115E5[param_00]))
{
return 1;
}
var_01 = 1;
foreach(var_03 in level.var_115E5[param_00])
{
if(!isdefined(var_03))
{
continue;
}
var_01 = var_01 * var_03;
}
return var_01;
}
//Function Number: 48
func_80D4()
{
var_00 = func_80D3();
var_01 = func_7ED9();
var_02 = func_81B6(self.team);
return var_00 * var_01 * var_02;
}