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

884 lines
17 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\_menus.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 25
* Decompile Time: 1101 ms
* Timestamp: 10/27/2023 12:20:53 AM
*******************************************************************/
//Function Number: 1
init()
{
if(!isdefined(game["gamestarted"]))
{
game["menu_team"] = "team_marinesopfor";
if(level.multiteambased)
{
game["menu_team"] = "team_mt_options";
}
if(scripts\mp\_utility::func_2DD9())
{
level.var_6D8F = "class_commander_" + level.gametype;
game["menu_class"] = level.var_6D8F;
game["menu_class_allies"] = level.var_6D8F;
game["menu_class_axis"] = level.var_6D8F;
}
else
{
game["menu_class"] = "class";
game["menu_class_allies"] = "class_marines";
game["menu_class_axis"] = "class_opfor";
}
game["menu_changeclass_allies"] = "changeclass_marines";
game["menu_changeclass_axis"] = "changeclass_opfor";
if(level.multiteambased)
{
for(var_00 = 0;var_00 < level.teamnamelist.size;var_00++)
{
var_01 = "menu_class_" + level.teamnamelist[var_00];
var_02 = "menu_changeclass_" + level.teamnamelist[var_00];
game[var_01] = game["menu_class_allies"];
game[var_02] = "changeclass_marines";
}
}
game["menu_changeclass"] = "changeclass";
if(level.console)
{
game["menu_controls"] = "ingame_controls";
if(level.splitscreen)
{
if(level.multiteambased)
{
for(var_00 = 0;var_00 < level.teamnamelist.size;var_00++)
{
var_01 = "menu_class_" + level.teamnamelist[var_00];
var_02 = "menu_changeclass_" + level.teamnamelist[var_00];
game[var_01] = game[var_01] + "_splitscreen";
game[var_02] = game[var_02] + "_splitscreen";
}
}
game["menu_team"] = game["menu_team"] + "_splitscreen";
game["menu_class_allies"] = game["menu_class_allies"] + "_splitscreen";
game["menu_class_axis"] = game["menu_class_axis"] + "_splitscreen";
game["menu_changeclass_allies"] = game["menu_changeclass_allies"] + "_splitscreen";
game["menu_changeclass_axis"] = game["menu_changeclass_axis"] + "_splitscreen";
game["menu_controls"] = game["menu_controls"] + "_splitscreen";
game["menu_changeclass_defaults_splitscreen"] = "changeclass_splitscreen_defaults";
game["menu_changeclass_custom_splitscreen"] = "changeclass_splitscreen_custom";
}
}
precachestring(&"MP_HOST_ENDED_GAME");
precachestring(&"MP_HOST_ENDGAME_RESPONSE");
}
level thread func_C56E();
level thread watchforbootmoviecomplete();
level thread setintrocamnetworkmodel();
}
//Function Number: 2
func_C56E()
{
for(;;)
{
level waittill("connected",var_00);
var_00 thread func_13A32();
var_00 thread func_13A72();
var_00 thread func_13A4A();
var_00 thread func_13A67();
}
}
//Function Number: 3
setintrocamnetworkmodel()
{
function_031D(1);
level waittill("prematch_over");
function_031D(0);
}
//Function Number: 4
watchforbootmoviecomplete()
{
self endon("disconnect");
level endon("game_ended");
var_00 = 0;
for(;;)
{
level waittill("rigBootFinished");
var_00++;
if(level.var_4533 <= var_00)
{
level notify("allRigsBooted");
break;
}
}
}
//Function Number: 5
func_7E2A(param_00)
{
var_01 = undefined;
if(param_00 > 100)
{
var_02 = param_00 - 100;
var_01 = "default" + var_02;
}
else
{
var_01 = "custom" + param_00;
}
return var_01;
}
//Function Number: 6
func_D848(param_00)
{
var_01 = spawnstruct();
scripts\mp\_playerlogic::func_806C(var_01,param_00);
scripts\mp\_playerlogic::func_AEAD(var_01);
}
//Function Number: 7
func_13A32()
{
self endon("disconnect");
level endon("game_ended");
for(;;)
{
self waittill("luinotifyserver",var_00,var_01);
if(var_00 != "class_select")
{
continue;
}
if(getdvarint("systemlink") && getdvarint("xblive_competitionmatch") && self ismlgspectator())
{
self setclientomnvar("ui_options_menu",0);
continue;
}
var_02 = isai(self) || issubstr(self.name,"tcBot");
if(!var_02)
{
if(!isai(self) && "" + var_01 != "callback")
{
self setclientomnvar("ui_loadout_selected",var_01);
}
}
if(isdefined(self.var_136FE) && self.var_136FE)
{
continue;
}
if(!scripts\mp\_utility::func_1C7D() || scripts\mp\_utility::func_10125())
{
continue;
}
if("" + var_01 != "callback")
{
if(isdefined(self.pers["isBot"]) && self.pers["isBot"])
{
self.pers["class"] = var_01;
self.var_4004 = var_01;
}
else
{
var_03 = var_01 + 1;
var_03 = func_7E2A(var_03);
if(!isdefined(self.pers["class"]) || var_03 == self.pers["class"])
{
continue;
}
self.pers["class"] = var_03;
self.var_4004 = var_03;
func_D848(var_03);
if(scripts\mp\_class::func_FFBB())
{
scripts\mp\_class::func_837A();
}
else if(isalive(self))
{
self iprintlnbold(game["strings"]["change_class"]);
}
}
continue;
}
func_B670("callback");
}
}
//Function Number: 8
func_13A4A()
{
self endon("disconnect");
level endon("game_ended");
for(;;)
{
self waittill("luinotifyserver",var_00,var_01);
if(var_00 != "end_game")
{
continue;
}
level thread scripts\mp\_gamelogic::func_72BE(var_01);
}
}
//Function Number: 9
func_13A72()
{
self endon("disconnect");
level endon("game_ended");
for(;;)
{
self waittill("luinotifyserver",var_00,var_01);
if(var_00 != "team_select")
{
continue;
}
if(scripts\mp\_utility::func_B3EC())
{
continue;
}
var_02 = 0;
if(var_01 >= 3)
{
var_02 = 1;
}
if(var_02)
{
self setclientomnvar("ui_spectator_selected",1);
self setclientomnvar("ui_loadout_selected",-1);
self.var_1097B = 1;
}
else
{
self setclientomnvar("ui_spectator_selected",-1);
self.var_1097B = 0;
}
var_03 = self ismlgspectator();
var_04 = !var_03 && isdefined(self.team) && self.team == "spectator";
var_05 = (var_03 && var_01 == 3) || var_04 && var_01 == 4;
if(var_01 == 4)
{
var_01 = 3;
self method_830E(1);
}
else
{
self method_830E(0);
}
self setclientomnvar("ui_team_selected",var_01);
if(var_01 == 0)
{
var_01 = "axis";
}
else if(var_01 == 1)
{
var_01 = "allies";
}
else if(var_01 == 2)
{
var_01 = "random";
}
else
{
var_01 = "spectator";
}
if(!var_05 && isdefined(self.pers["team"]) && var_01 == self.pers["team"])
{
continue;
}
self setclientomnvar("ui_loadout_selected",-1);
thread func_AFDB(var_01);
if(var_01 == "axis")
{
thread func_F876("axis");
continue;
}
if(var_01 == "allies")
{
thread func_F876("allies");
continue;
}
if(var_01 == "random")
{
thread func_2642();
continue;
}
if(var_01 == "spectator")
{
thread func_F859(var_05);
}
}
}
//Function Number: 10
func_2642()
{
if(level.gametype == "infect")
{
thread func_F876("allies");
return;
}
if(function_0280() && isdefined(self.var_2EAC))
{
thread func_F876(self.var_2EAC);
return;
}
if(!isdefined(self.team))
{
if(self ismlgspectator())
{
thread func_F859();
}
else if(level.var_115C6["axis"] < level.var_115C6["allies"])
{
thread func_F876("axis");
}
else if(level.var_115C6["allies"] < level.var_115C6["axis"])
{
thread func_F876("allies");
}
else if(getteamscore("allies") > getteamscore("axis"))
{
thread func_F876("axis");
}
else
{
thread func_F876("allies");
}
return;
}
if(self ismlgspectator())
{
thread func_F859();
return;
}
if(level.var_115C6["axis"] < level.var_115C6["allies"] && self.team != "axis")
{
thread func_F876("axis");
return;
}
if(level.var_115C6["allies"] < level.var_115C6["axis"] && self.team != "allies")
{
thread func_F876("allies");
return;
}
if(level.var_115C6["allies"] == level.var_115C6["axis"])
{
if(getteamscore("allies") > getteamscore("axis") && self.team != "axis")
{
thread func_F876("axis");
return;
}
if(self.team != "allies")
{
thread func_F876("allies");
return;
}
return;
}
}
//Function Number: 11
func_F876(param_00)
{
self endon("disconnect");
if(!isai(self) && level.teambased && !scripts\mp\_teams::func_7F24(param_00) && !scripts\mp\_utility::func_AEB6())
{
return;
}
if(level.ingraceperiod && !self.var_8BE9)
{
self.var_8C2A = 0;
self.pers["lives"] = scripts\mp\_utility::func_7ECE();
}
if(self.sessionstate == "playing")
{
self.var_11377 = 1;
self.var_A49E = param_00;
self.var_AB33 = self.pers["team"];
}
func_185F(param_00);
if(scripts\mp\_utility::func_9F13())
{
self method_859D(1);
}
if(self.sessionstate == "playing")
{
self suicide();
}
func_136B1();
func_637D();
if(self.sessionstate == "spectator")
{
if(game["state"] == "postgame")
{
return;
}
if(game["state"] == "playing" && !scripts\mp\_utility::func_9E4A())
{
if(isdefined(self.var_13700) && self.var_13700)
{
return;
}
thread scripts\mp\_playerlogic::func_1083A();
}
thread scripts\mp\_spectating::func_F857();
}
self notify("okToSpawn");
}
//Function Number: 12
func_F859(param_00)
{
if((!isdefined(param_00) || !param_00) && isdefined(self.pers["team"]) && self.pers["team"] == "spectator")
{
return;
}
if(isalive(self))
{
self.var_11377 = 1;
self.var_A49E = "spectator";
self.var_AB33 = self.pers["team"];
self suicide();
}
self notify("becameSpectator");
func_185F("spectator");
self.pers["class"] = undefined;
self.var_4004 = undefined;
thread scripts\mp\_playerlogic::func_10911();
}
//Function Number: 13
func_136B1()
{
self endon("disconnect");
level endon("game_ended");
self.var_136FE = 1;
for(;;)
{
if(scripts\mp\_utility::func_1C7D() || scripts\mp\_utility::func_10125() && !isai(self))
{
if(!self ismlgspectator())
{
scripts\mp\_utility::setlowermessage("spawn_info",game["strings"]["must_select_loadout_to_spawn"],undefined,undefined,undefined,undefined,undefined,undefined,1);
}
self waittill("luinotifyserver",var_00,var_01);
}
else
{
func_3327();
break;
}
if(var_00 != "class_select")
{
continue;
}
if(self.team == "spectator")
{
continue;
}
if("" + var_01 != "callback")
{
if(isdefined(self.pers["isBot"]) && self.pers["isBot"])
{
self.pers["class"] = var_01;
self.var_4004 = var_01;
}
else
{
var_01 = var_01 + 1;
self.pers["class"] = func_7E2A(var_01);
self.var_4004 = func_7E2A(var_01);
}
self.var_136FE = 0;
}
else
{
self.var_136FE = 0;
func_B670("callback");
}
break;
}
}
//Function Number: 14
func_2A61(param_00)
{
var_01 = self.pers["team"];
if(scripts\mp\_utility::func_1C7D() || scripts\mp\_utility::func_10125() && !isai(self))
{
self setclientomnvar("ui_options_menu",2);
if(!self ismlgspectator())
{
func_136B1();
}
func_637D();
if(self.sessionstate == "spectator")
{
if(game["state"] == "postgame")
{
return;
}
if(game["state"] == "playing" && !scripts\mp\_utility::func_9E4A())
{
if(isdefined(self.var_13700) && self.var_13700)
{
return;
}
thread scripts\mp\_playerlogic::func_1083A();
}
thread scripts\mp\_spectating::func_F857();
}
self.var_4539 = gettime();
self notify("okToSpawn");
}
else
{
thread func_3327();
}
if(!isalive(self))
{
thread scripts\mp\_playerlogic::func_D81E(0.1);
}
}
//Function Number: 15
func_3327()
{
self.var_F1BA = 1;
self.var_136FE = 0;
if(!isbot(self) && scripts\mp\_utility::func_DCD5())
{
if(level.gametype == "infect" || isdefined(level.var_204B) && level.var_204B > 0)
{
scripts\mp\_utility::setlowermessage("spawn_info",game["strings"]["press_to_spawn"],undefined,undefined,undefined,undefined,undefined,undefined,1);
self notifyonplayercommand("pressToSpawn","+usereload");
self notifyonplayercommand("pressToSpawn","+activate");
self waittill("pressToSpawn");
}
}
if(isdefined(level.var_3328))
{
var_00 = self [[ level.var_3328 ]]();
self.var_4004 = var_00;
return;
}
self.var_4004 = "class0";
}
//Function Number: 16
func_2A7A()
{
self setclientomnvar("ui_options_menu",1);
}
//Function Number: 17
func_B678()
{
if(isdefined(self.pers["team"]) && self.pers["team"] == "spectator")
{
return;
}
if(isalive(self))
{
self.var_11377 = 1;
self.var_A49E = "spectator";
self.var_AB33 = self.pers["team"];
self suicide();
}
func_185F("spectator");
self.pers["class"] = undefined;
self.var_4004 = undefined;
thread scripts\mp\_playerlogic::func_10911();
}
//Function Number: 18
func_B670(param_00)
{
var_01 = self.pers["team"];
var_02 = scripts\mp\_class::func_7E2A(param_00);
var_03 = scripts\mp\_class::func_821E(param_00);
if(var_02 == "restricted")
{
func_2A61();
return;
}
if(isdefined(self.pers["class"]) && self.pers["class"] == var_02 && isdefined(self.pers["primary"]) && self.pers["primary"] == var_03)
{
return;
}
if(self.sessionstate == "playing")
{
if(isdefined(self.pers["lastClass"]) && isdefined(self.pers["class"]))
{
self.pers["lastClass"] = self.pers["class"];
self.var_A95C = self.pers["lastClass"];
}
self.pers["class"] = var_02;
self.var_4004 = var_02;
self.pers["primary"] = var_03;
if(game["state"] == "postgame")
{
return;
}
if(level.ingraceperiod && !self.var_8BE9)
{
scripts\mp\_class::func_F691(self.pers["class"]);
self.var_322 = undefined;
self.var_113E7 = undefined;
scripts\mp\_class::func_8379(self.pers["team"],self.pers["class"]);
}
else
{
self iprintlnbold(game["strings"]["change_class"]);
}
}
else
{
if(isdefined(self.pers["lastClass"]) && isdefined(self.pers["class"]))
{
self.pers["lastClass"] = self.pers["class"];
self.var_A95C = self.pers["lastClass"];
}
self.pers["class"] = var_02;
self.var_4004 = var_02;
self.pers["primary"] = var_03;
if(game["state"] == "postgame")
{
return;
}
if(game["state"] == "playing" && !scripts\mp\_utility::func_9E4A())
{
thread scripts\mp\_playerlogic::func_1083A();
}
}
thread scripts\mp\_spectating::func_F857();
}
//Function Number: 19
func_185F(param_00,param_01,param_02)
{
if(isdefined(self.team))
{
scripts\mp\_playerlogic::func_E11D();
if(isdefined(param_02) && param_02)
{
scripts\mp\_playerlogic::func_4FBD(self.team);
}
}
if(isdefined(self.pers["team"]) && self.pers["team"] != "" && self.pers["team"] != "spectator")
{
self.pers["last_team"] = self.pers["team"];
}
self.pers["team"] = param_00;
self.team = param_00;
if((!scripts\mp\_utility::func_B3EC() || isdefined(self.pers["isBot"]) || !scripts\mp\_utility::func_1CAD()) && !function_0303())
{
if(level.teambased)
{
self.sessionteam = param_00;
}
else if(param_00 == "spectator")
{
self.sessionteam = "spectator";
}
else
{
self.sessionteam = "none";
}
}
if(game["state"] != "postgame")
{
scripts\mp\_playerlogic::func_1860();
if(isdefined(param_02) && param_02)
{
scripts\mp\_playerlogic::func_93F8(self.team);
}
}
if(function_0303())
{
setmatchdata("players",self.var_41F0,"team",param_00);
}
scripts\mp\_utility::func_12EDC();
if(isdefined(param_01) && param_01)
{
waittillframeend;
}
scripts\mp\_utility::func_12EC8();
if(param_00 == "spectator")
{
self notify("joined_spectators");
level notify("joined_team",self);
return;
}
self notify("joined_team");
level notify("joined_team",self);
}
//Function Number: 20
func_637D()
{
self.var_136FF = 0;
self notify("end_respawn");
}
//Function Number: 21
func_AFDB(param_00)
{
if(getdvarint("scr_playtest",0) == 0)
{
return;
}
if(param_00 != "random")
{
iprintlnbold("" + self.name + " did not select auto-assign");
}
}
//Function Number: 22
func_13A67()
{
thread func_13A69();
thread func_13A6A();
thread func_13A6B();
}
//Function Number: 23
func_13A69()
{
self endon("disconnect");
for(;;)
{
self waittill("luinotifyserver",var_00,var_01);
if(var_00 == "rig_selected")
{
self.var_E535 = spawnstruct();
self.var_E535.var_26A = var_01;
}
}
}
//Function Number: 24
func_13A6A()
{
self endon("disconnect");
for(;;)
{
self waittill("luinotifyserver",var_00,var_01);
if(var_00 == "super_selected")
{
if(isdefined(self.var_E535))
{
self.var_E535.var_11261 = var_01;
continue;
}
}
}
}
//Function Number: 25
func_13A6B()
{
self endon("disconnect");
for(;;)
{
self waittill("luinotifyserver",var_00,var_01);
if(var_00 == "trait_selected")
{
if(isdefined(self.var_E535))
{
self.var_E535.var_11B2D = var_01;
if(isdefined(self.var_E535.var_26A) && isdefined(self.var_E535.var_11261))
{
var_02 = level.var_2128[self.var_E535.var_26A];
var_03 = level.var_11264[self.var_E535.var_11261];
var_04 = level.var_CA5E[self.var_E535.var_11B2D];
scripts\mp\_class::func_3C53(var_02,var_03,var_04);
}
else
{
}
continue;
}
}
}
}