Files
IL-GSC/GHOSTS/PC/MP/maps/mp/bots/_bots_loadout.gsc
2023-10-27 03:49:01 -04:00

1682 lines
42 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\bots\_bots_loadout.gsc
* Game: Call of Duty: Ghosts
* Platform: PC
* Function Count: 41
* Decompile Time: 797 ms
* Timestamp: 10/27/2023 1:17:36 AM
*******************************************************************/
//Function Number: 1
func_44DF()
{
func_45BB();
func_4526();
func_4583();
func_451E();
init_bot_attachmenttable();
init_bot_camotable();
level.bot_loadouts_initialized = 1;
}
//Function Number: 2
func_4526()
{
var_00 = "mp/botClassTable.csv";
level.botloadoutsets = [];
var_01 = bot_loadout_fields();
var_02 = 0;
for(;;)
{
var_02++;
var_03 = tablelookup(var_00,0,"botPersonalities",var_02);
var_04 = tablelookup(var_00,0,"botDifficulties",var_02);
if(!isdefined(var_03) || var_03 == "")
{
break;
}
if(!isdefined(var_04) || var_04 == "")
{
break;
}
var_05 = [];
foreach(var_07 in var_01)
{
var_05[var_07] = tablelookup(var_00,0,var_07,var_02);
}
var_09 = strtok(var_03,"| ");
var_0A = strtok(var_04,"| ");
foreach(var_0C in var_09)
{
foreach(var_0E in var_0A)
{
var_0F = bot_loadout_set(var_0C,var_0E,1);
var_10 = spawnstruct();
var_10.loadoutvalues = var_05;
var_0F.loadouts[var_0F.loadouts.size] = var_10;
}
}
}
}
//Function Number: 3
func_45BB()
{
var_00 = "mp/botTemplateTable.csv";
level.botloadouttemplates = [];
var_01 = bot_loadout_fields();
var_02 = 0;
for(;;)
{
var_02++;
var_03 = tablelookup(var_00,0,"template_",var_02);
if(!isdefined(var_03) || var_03 == "")
{
break;
}
var_04 = "template_" + var_03;
level.botloadouttemplates[var_04] = [];
foreach(var_06 in var_01)
{
var_07 = tablelookup(var_00,0,var_06,var_02);
if(isdefined(var_07) && var_07 != "")
{
level.botloadouttemplates[var_04][var_06] = var_07;
}
}
}
}
//Function Number: 4
func_8FFE(param_00,param_01,param_02)
{
if(!isusingmatchrulesdata())
{
return 1;
}
if(!getmatchrulesdata("commonOption","allowCustomClasses"))
{
return 1;
}
if(param_01 == "specialty_null")
{
return 1;
}
if(param_01 == "none")
{
return 1;
}
if(param_00 == "equipment")
{
if(getmatchrulesdata("commonOption","perkRestricted",param_01))
{
return 0;
}
param_00 = "weapon";
}
var_03 = param_00 + "Restricted";
var_04 = param_00 + "ClassRestricted";
var_05 = "";
switch(param_00)
{
case "weapon":
var_05 = maps\mp\_utility::getweaponclass(param_01);
break;
case "attachment":
var_05 = maps\mp\_utility::getattachmenttype(param_01);
break;
case "killstreak":
var_05 = param_02;
break;
case "perk":
var_05 = "ability_" + level.bot_perktypes[param_01];
break;
default:
return 0;
}
if(getmatchrulesdata("commonOption",var_03,param_01))
{
return 0;
}
if(getmatchrulesdata("commonOption",var_04,var_05))
{
return 0;
}
return 1;
}
//Function Number: 5
func_8FFD(param_00)
{
var_01 = "none";
var_02 = ["veteran","hardened","regular","recruit"];
var_02 = common_scripts\utility::array_randomize(var_02);
foreach(var_04 in var_02)
{
var_01 = func_1623("weap_statstable",param_00,"loadoutPrimary",self.personality,var_04);
if(var_01 != "none")
{
return var_01;
}
}
if(isdefined(level.bot_personality_list))
{
var_06 = common_scripts\utility::array_randomize(level.bot_personality_list);
foreach(var_08 in var_06)
{
foreach(var_04 in var_02)
{
var_01 = func_1623("weap_statstable",param_00,"loadoutPrimary",var_08,var_04);
if(var_01 != "none")
{
self.bot_fallback_personality = var_08;
return var_01;
}
}
}
}
if(isusingmatchrulesdata())
{
for(var_0C = 0;var_0C < 6 && !isdefined(var_01) || var_01 == "none" || var_01 == "";var_0C++)
{
if(getmatchrulesdata("defaultClasses",self.team,var_0C,"class","inUse"))
{
var_01 = getmatchrulesdata("defaultClasses",self.team,var_0C,"class","weaponSetups",0,"weapon");
if(var_01 != "none")
{
self.bot_fallback_personality = "weapon";
return var_01;
}
}
}
}
self.bot_fallback_personality = "weapon";
return level.bot_fallback_weapon;
}
//Function Number: 6
func_9005(param_00)
{
if(isdefined(param_00))
{
var_01 = level.bot_weap_personality[param_00];
if(isdefined(var_01))
{
var_02 = strtok(var_01,"| ");
if(var_02.size > 0)
{
maps/mp/bots/_bots_util::bot_set_personality(common_scripts\utility::func_6306(var_02));
}
}
}
}
//Function Number: 7
bot_loadout_fields()
{
var_00 = [];
var_00[var_00.size] = "loadoutPrimary";
var_00[var_00.size] = "loadoutPrimaryBuff";
var_00[var_00.size] = "loadoutPrimaryAttachment";
var_00[var_00.size] = "loadoutPrimaryAttachment2";
var_00[var_00.size] = "loadoutPrimaryCamo";
var_00[var_00.size] = "loadoutPrimaryReticle";
var_00[var_00.size] = "loadoutSecondary";
var_00[var_00.size] = "loadoutSecondaryBuff";
var_00[var_00.size] = "loadoutSecondaryAttachment";
var_00[var_00.size] = "loadoutSecondaryAttachment2";
var_00[var_00.size] = "loadoutSecondaryCamo";
var_00[var_00.size] = "loadoutSecondaryReticle";
var_00[var_00.size] = "loadoutEquipment";
var_00[var_00.size] = "loadoutOffhand";
var_00[var_00.size] = "loadoutStreakType";
var_00[var_00.size] = "loadoutStreak1";
var_00[var_00.size] = "loadoutStreak2";
var_00[var_00.size] = "loadoutStreak3";
var_00[var_00.size] = "loadoutPerk1";
var_00[var_00.size] = "loadoutPerk2";
var_00[var_00.size] = "loadoutPerk3";
var_00[var_00.size] = "loadoutPerk4";
var_00[var_00.size] = "loadoutPerk5";
var_00[var_00.size] = "loadoutPerk6";
var_00[var_00.size] = "loadoutPerk7";
var_00[var_00.size] = "loadoutPerk8";
var_00[var_00.size] = "loadoutPerk9";
var_00[var_00.size] = "loadoutPerk10";
var_00[var_00.size] = "loadoutPerk11";
var_00[var_00.size] = "loadoutPerk12";
var_00[var_00.size] = "loadoutPerk13";
var_00[var_00.size] = "loadoutPerk14";
var_00[var_00.size] = "loadoutPerk15";
var_00[var_00.size] = "loadoutPerk16";
var_00[var_00.size] = "loadoutPerk17";
var_00[var_00.size] = "loadoutPerk18";
var_00[var_00.size] = "loadoutPerk19";
var_00[var_00.size] = "loadoutPerk20";
var_00[var_00.size] = "loadoutPerk21";
var_00[var_00.size] = "loadoutPerk22";
var_00[var_00.size] = "loadoutPerk23";
return var_00;
}
//Function Number: 8
bot_loadout_set(param_00,param_01,param_02)
{
var_03 = param_01 + "_" + param_00;
if(!isdefined(level.botloadoutsets))
{
level.botloadoutsets = [];
}
if(!isdefined(level.botloadoutsets[var_03]) && param_02)
{
level.botloadoutsets[var_03] = spawnstruct();
level.botloadoutsets[var_03].loadouts = [];
}
if(isdefined(level.botloadoutsets[var_03]))
{
return level.botloadoutsets[var_03];
}
}
//Function Number: 9
bot_loadout_pick(param_00,param_01)
{
var_02 = bot_loadout_set(param_00,param_01,0);
if(isdefined(var_02) && isdefined(var_02.loadouts) && var_02.loadouts.size > 0)
{
var_03 = randomint(var_02.loadouts.size);
return var_02.loadouts[var_03].loadoutvalues;
}
}
//Function Number: 10
bot_validate_weapon(param_00,param_01,param_02,param_03)
{
var_04 = maps\mp\_utility::func_3C6F(param_00);
if(isdefined(param_01) && param_01 != "none" && !func_8FFE("attachment",param_01))
{
return 0;
}
if(isdefined(param_02) && param_02 != "none" && !func_8FFE("attachment",param_02))
{
return 0;
}
if(isdefined(param_03) && param_03 != "none" && !func_8FFE("attachment",param_03))
{
return 0;
}
if(param_01 != "none" && !common_scripts\utility::array_contains(var_04,param_01))
{
return 0;
}
if(param_02 != "none" && !common_scripts\utility::array_contains(var_04,param_02))
{
return 0;
}
if(isdefined(param_03) && param_03 != "none" && !common_scripts\utility::array_contains(var_04,param_03))
{
return 0;
}
if((param_01 == "none" || param_02 == "none") && !isdefined(param_03) || param_03 == "none")
{
return 1;
}
if(!isdefined(level.bot_invalid_attachment_combos))
{
level.bot_invalid_attachment_combos = [];
level.allowable_double_attachments = [];
var_05 = "mp/attachmentcombos.csv";
var_06 = 0;
for(;;)
{
var_06++;
var_07 = tablelookupbyrow(var_05,0,var_06);
if(var_07 == "")
{
break;
}
var_08 = 0;
for(;;)
{
var_08++;
var_09 = tablelookupbyrow(var_05,var_08,0);
if(var_09 == "")
{
break;
}
if(var_09 == var_07)
{
if(tablelookupbyrow(var_05,var_08,var_06) != "no")
{
level.allowable_double_attachments[var_09] = 1;
}
continue;
}
if(tablelookupbyrow(var_05,var_08,var_06) == "no")
{
level.bot_invalid_attachment_combos[var_07][var_09] = 1;
}
}
}
}
if(param_01 == param_02 && !isdefined(level.allowable_double_attachments[param_01]))
{
return 0;
}
if(isdefined(param_03))
{
if(param_02 == param_03 && !isdefined(level.allowable_double_attachments[param_02]))
{
return 0;
}
if(param_01 == param_03 && !isdefined(level.allowable_double_attachments[param_01]))
{
return 0;
}
if(param_03 != "none" && param_01 == param_03 && param_02 == param_03)
{
return 0;
}
if(isdefined(level.bot_invalid_attachment_combos[param_02]) && isdefined(level.bot_invalid_attachment_combos[param_02][param_03]))
{
return 0;
}
if(isdefined(level.bot_invalid_attachment_combos[param_01]) && isdefined(level.bot_invalid_attachment_combos[param_01][param_03]))
{
return 0;
}
}
return !isdefined(level.bot_invalid_attachment_combos[param_01]) && isdefined(level.bot_invalid_attachment_combos[param_01][param_02]);
}
//Function Number: 11
bot_validate_reticle(param_00,param_01,param_02)
{
if(isdefined(param_01[param_00 + "Attachment"]) && isdefined(level.bot_attachment_reticle[param_01[param_00 + "Attachment"]]))
{
return 1;
}
if(isdefined(param_01[param_00 + "Attachment2"]) && isdefined(level.bot_attachment_reticle[param_01[param_00 + "Attachment2"]]))
{
return 1;
}
if(isdefined(param_01[param_00 + "Attachment3"]) && isdefined(level.bot_attachment_reticle[param_01[param_00 + "Attachment3"]]))
{
return 1;
}
return 0;
}
//Function Number: 12
bot_perk_cost(param_00)
{
return level.perktable_costs[param_00];
}
//Function Number: 13
func_5BA1(param_00,param_01)
{
if(bot_perk_cost(param_00) > 0)
{
var_02 = [];
var_02["type"] = param_01;
var_02["name"] = param_00;
level.bot_perktable[level.bot_perktable.size] = var_02;
level.bot_perktypes[param_00] = param_01;
}
}
//Function Number: 14
func_4583()
{
level.perktable_costs = [];
var_00 = 1;
for(;;)
{
var_01 = tablelookupbyrow("mp/perktable.csv",var_00,1);
if(var_01 == "")
{
break;
}
level.perktable_costs[var_01] = int(tablelookupbyrow("mp/perktable.csv",var_00,10));
var_00++;
}
level.perktable_costs["none"] = 0;
level.perktable_costs["specialty_null"] = 0;
level.bot_perktable = [];
level.bot_perktypes = [];
var_00 = 1;
var_02 = "ability_null";
while(isdefined(var_02) && var_02 != "")
{
var_02 = getsubstr(var_02,8);
for(var_03 = 4;var_03 <= 13;var_03++)
{
var_01 = tablelookupbyrow("mp/cacabilitytable.csv",var_00,var_03);
if(var_01 != "")
{
func_5BA1(var_01,var_02);
}
}
var_00++;
var_02 = tablelookupbyrow("mp/cacabilitytable.csv",var_00,1);
}
}
//Function Number: 15
func_451E()
{
var_00 = "mp/statstable.csv";
var_01 = 4;
var_02 = 37;
var_03 = 38;
level.bot_weap_statstable = [];
level.bot_weap_personality = [];
var_04 = 1;
for(;;)
{
var_05 = tablelookupbyrow(var_00,var_04,var_01);
if(var_05 == "specialty_null")
{
break;
}
var_06 = tablelookupbyrow(var_00,var_04,var_03);
var_07 = tablelookupbyrow(var_00,var_04,var_02);
if(var_05 != "" && var_07 != "")
{
level.bot_weap_personality[var_05] = var_07;
}
if(var_06 != "" && var_05 != "" && var_07 != "")
{
var_08 = "loadoutPrimary";
if(maps\mp\gametypes\_class::isvalidsecondary(var_05,0))
{
var_08 = "loadoutSecondary";
}
else if(!maps\mp\gametypes\_class::func_49A6(var_05,0))
{
var_04++;
continue;
}
if(!isdefined(level.bot_weap_statstable[var_08]))
{
level.bot_weap_statstable[var_08] = [];
}
var_09 = strtok(var_07,"| ");
var_0A = strtok(var_06,"| ");
foreach(var_0C in var_09)
{
if(!isdefined(level.bot_weap_statstable[var_08][var_0C]))
{
level.bot_weap_statstable[var_08][var_0C] = [];
}
foreach(var_0E in var_0A)
{
if(!isdefined(level.bot_weap_statstable[var_08][var_0C][var_0E]))
{
level.bot_weap_statstable[var_08][var_0C][var_0E] = [];
}
var_0F = level.bot_weap_statstable[var_08][var_0C][var_0E].size;
level.bot_weap_statstable[var_08][var_0C][var_0E][var_0F] = var_05;
}
}
}
var_04++;
}
}
//Function Number: 16
func_1623(param_00,param_01,param_02,param_03,param_04)
{
var_05 = "specialty_null";
if(param_02 == "loadoutPrimary")
{
var_05 = "iw6_honeybadger";
}
else if(param_02 == "loadoutSecondary")
{
var_05 = "iw6_p226";
}
if(param_03 == "default")
{
param_03 = "run_and_gun";
}
if(param_02 == "loadoutSecondary" && common_scripts\utility::array_contains(param_01,"specialty_twoprimaries"))
{
param_02 = "loadoutPrimary";
}
if(!isdefined(level.bot_weap_statstable))
{
return var_05;
}
if(!isdefined(level.bot_weap_statstable[param_02]))
{
return var_05;
}
if(!isdefined(level.bot_weap_statstable[param_02][param_03]))
{
return var_05;
}
if(!isdefined(level.bot_weap_statstable[param_02][param_03][param_04]))
{
return var_05;
}
var_05 = bot_loadout_choose_from_set(level.bot_weap_statstable[param_02][param_03][param_04],param_00,param_01,param_02);
return var_05;
}
//Function Number: 17
bot_loadout_choose_from_perktable(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = "specialty_null";
if(!isdefined(level.bot_perktable))
{
return var_06;
}
if(!isdefined(level.bot_perktable_groups))
{
level.bot_perktable_groups = [];
}
if(!isdefined(level.bot_perktable_groups[param_00]))
{
var_07 = strtok(param_00,"_");
var_07[0] = "";
var_08 = 0;
if(common_scripts\utility::array_contains(var_07,"any"))
{
var_08 = 1;
}
var_09 = [];
foreach(var_0B in level.bot_perktable)
{
if(var_08 || common_scripts\utility::array_contains(var_07,var_0B["type"]))
{
var_09[var_09.size] = var_0B["name"];
}
}
level.bot_perktable_groups[param_00] = var_09;
}
if(level.bot_perktable_groups[param_00].size > 0)
{
var_06 = bot_loadout_choose_from_set(level.bot_perktable_groups[param_00],param_01,param_02,param_03);
}
return var_06;
}
//Function Number: 18
bot_validate_perk(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = param_04 - param_03 + 1;
if(isdefined(param_05))
{
var_06 = param_05;
}
var_07 = 0;
var_08 = int(getsubstr(param_01,11));
if(param_00 == "specialty_twoprimaries")
{
return 0;
}
if(param_00 == "specialty_extra_attachment")
{
return 0;
}
if(!func_8FFE("perk",param_00))
{
return 0;
}
for(var_09 = var_08 - 1;var_09 > 0;var_09--)
{
var_0A = "loadoutPerk" + var_09;
if(param_02[var_0A] == "none" || param_02[var_0A] == "specialty_null")
{
continue;
}
if(param_00 == param_02[var_0A])
{
return 0;
}
if(var_09 >= param_03 && var_09 <= param_04)
{
var_07 = var_07 + bot_perk_cost(param_02[var_0A]);
}
}
if(var_07 + bot_perk_cost(param_00) > var_06)
{
return 0;
}
return 1;
}
//Function Number: 19
func_1620(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = int(getsubstr(param_00,5,6)) - 1;
switch(param_03)
{
case "loadoutPrimary":
return maps\mp\gametypes\_class::func_7E4F(level.classtablename,var_06,0);
case "loadoutPrimaryAttachment":
return maps\mp\gametypes\_class::func_7E50(level.classtablename,var_06,0,0);
case "loadoutPrimaryAttachment2":
return maps\mp\gametypes\_class::func_7E50(level.classtablename,var_06,0,1);
case "loadoutPrimaryBuff":
return maps\mp\gametypes\_class::table_getweaponbuff(level.classtablename,var_06,0);
case "loadoutPrimaryCamo":
return maps\mp\gametypes\_class::func_7E52(level.classtablename,var_06,0);
case "loadoutPrimaryReticle":
return maps\mp\gametypes\_class::table_getweaponreticle(level.classtablename,var_06,0);
case "loadoutSecondary":
return maps\mp\gametypes\_class::func_7E4F(level.classtablename,var_06,1);
case "loadoutSecondaryAttachment":
return maps\mp\gametypes\_class::func_7E50(level.classtablename,var_06,1,0);
case "loadoutSecondaryAttachment2":
return maps\mp\gametypes\_class::func_7E50(level.classtablename,var_06,1,1);
case "loadoutSecondaryBuff":
return maps\mp\gametypes\_class::table_getweaponbuff(level.classtablename,var_06,1);
case "loadoutSecondaryCamo":
return maps\mp\gametypes\_class::func_7E52(level.classtablename,var_06,1);
case "loadoutSecondaryReticle":
return maps\mp\gametypes\_class::table_getweaponreticle(level.classtablename,var_06,1);
case "loadoutEquipment":
return maps\mp\gametypes\_class::func_7E4A(level.classtablename,var_06,0);
case "loadoutOffhand":
return maps\mp\gametypes\_class::func_7E4C(level.classtablename,var_06,0);
case "loadoutStreak1":
return maps\mp\gametypes\_class::func_7E4B(level.classtablename,var_06,0);
case "loadoutStreak2":
return maps\mp\gametypes\_class::func_7E4B(level.classtablename,var_06,1);
case "loadoutStreak3":
return maps\mp\gametypes\_class::func_7E4B(level.classtablename,var_06,2);
case "loadoutPerk6":
case "loadoutPerk5":
case "loadoutPerk4":
case "loadoutPerk3":
case "loadoutPerk2":
case "loadoutPerk1":
var_07 = int(getsubstr(param_03,11));
var_08 = maps\mp\gametypes\_class::func_7E4D(level.classtablename,var_06,var_07);
if(var_08 == "")
{
return "specialty_null";
}
var_09 = int(getsubstr(var_08,0,1));
var_0A = int(getsubstr(var_08,1,2));
var_0B = tablelookupbyrow("mp/cacabilitytable.csv",var_09 + 1,var_0A + 3);
return var_0B;
}
return param_05;
}
//Function Number: 20
init_bot_attachmenttable()
{
var_00 = "mp/attachmenttable.csv";
var_01 = 5;
var_02 = 19;
var_03 = 11;
level.bot_attachmenttable = [];
level.bot_attachment_reticle = [];
var_04 = 1;
for(;;)
{
var_05 = tablelookupbyrow(var_00,var_04,var_01);
if(var_05 == "done")
{
break;
}
var_06 = tablelookupbyrow(var_00,var_04,var_02);
if(var_05 != "" && var_06 != "")
{
var_07 = tablelookupbyrow(var_00,var_04,var_03);
if(var_07 == "TRUE")
{
level.bot_attachment_reticle[var_05] = 1;
}
var_08 = strtok(var_06,"| ");
foreach(var_0A in var_08)
{
if(!isdefined(level.bot_attachmenttable[var_0A]))
{
level.bot_attachmenttable[var_0A] = [];
}
if(!common_scripts\utility::array_contains(level.bot_attachmenttable[var_0A],var_05))
{
var_0B = level.bot_attachmenttable[var_0A].size;
level.bot_attachmenttable[var_0A][var_0B] = var_05;
}
}
}
var_04++;
}
}
//Function Number: 21
bot_loadout_choose_from_attachmenttable(param_00,param_01,param_02,param_03,param_04)
{
var_05 = "none";
if(!isdefined(level.bot_attachmenttable))
{
return var_05;
}
if(!isdefined(level.bot_attachmenttable[param_04]))
{
return var_05;
}
var_05 = bot_loadout_choose_from_set(level.bot_attachmenttable[param_04],param_00,param_01,param_02);
return var_05;
}
//Function Number: 22
init_bot_camotable()
{
var_00 = "mp/camotable.csv";
var_01 = 1;
var_02 = 5;
level.bot_camotable = [];
var_03 = 0;
for(;;)
{
var_04 = tablelookupbyrow(var_00,var_03,var_01);
if(!isdefined(var_04) || var_04 == "")
{
break;
}
var_05 = tablelookupbyrow(var_00,var_03,var_02);
if(isdefined(var_05) && int(var_05))
{
level.bot_camotable[level.bot_camotable.size] = var_04;
}
var_03++;
}
}
//Function Number: 23
bot_loadout_choose_from_camotable(param_00,param_01,param_02,param_03,param_04)
{
var_05 = "none";
if(!isdefined(level.bot_camotable))
{
return var_05;
}
var_05 = bot_loadout_choose_from_set(level.bot_camotable,param_00,param_01,param_02);
return var_05;
}
//Function Number: 24
func_1628(param_00)
{
var_01 = 8;
if(isdefined(param_00["loadoutPrimary"]) && param_00["loadoutPrimary"] == "none")
{
var_01 = var_01 + 1;
}
if(isdefined(param_00["loadoutSecondary"]) && param_00["loadoutSecondary"] == "none")
{
var_01 = var_01 + 1;
}
if(isdefined(param_00["loadoutEquipment"]) && param_00["loadoutEquipment"] == "none")
{
var_01 = var_01 + 1;
}
if(isdefined(param_00["loadoutOffhand"]) && param_00["loadoutOffhand"] == "none")
{
var_01 = var_01 + 1;
}
return var_01;
}
//Function Number: 25
bot_loadout_valid_choice(param_00,param_01,param_02,param_03)
{
var_04 = 1;
switch(param_02)
{
case "loadoutPrimary":
var_04 = func_8FFE("weapon",param_03);
break;
case "loadoutOffhand":
case "loadoutEquipment":
var_04 = func_8FFE("equipment",param_03);
break;
case "loadoutPrimaryBuff":
var_04 = maps\mp\gametypes\_class::func_49AE(param_03,param_01["loadoutPrimary"]);
break;
case "loadoutPrimaryAttachment":
var_04 = bot_validate_weapon(param_01["loadoutPrimary"],param_03,"none");
break;
case "loadoutPrimaryAttachment2":
var_04 = bot_validate_weapon(param_01["loadoutPrimary"],param_01["loadoutPrimaryAttachment"],param_03);
break;
case "loadoutPrimaryAttachment3":
var_04 = bot_validate_weapon(param_01["loadoutPrimary"],param_01["loadoutPrimaryAttachment"],param_01["loadoutPrimaryAttachment2"],param_03);
break;
case "loadoutPrimaryReticle":
var_04 = bot_validate_reticle("loadoutPrimary",param_01,param_03);
break;
case "loadoutPrimaryCamo":
var_04 = !isdefined(self.botloadoutfavoritecamo) || param_03 == self.botloadoutfavoritecamo;
break;
case "loadoutSecondary":
var_04 = param_03 != param_01["loadoutPrimary"];
var_04 = var_04 && func_8FFE("weapon",param_03);
break;
case "loadoutSecondaryBuff":
var_04 = maps\mp\gametypes\_class::func_49AE(param_03,param_01["loadoutSecondary"]);
break;
case "loadoutSecondaryAttachment":
var_04 = bot_validate_weapon(param_01["loadoutSecondary"],param_03,"none");
break;
case "loadoutSecondaryAttachment2":
var_04 = bot_validate_weapon(param_01["loadoutSecondary"],param_01["loadoutSecondaryAttachment"],param_03);
break;
case "loadoutSecondaryAttachment3":
var_04 = bot_validate_weapon(param_01["loadoutSecondary"],param_01["loadoutSecondaryAttachment"],param_01["loadoutSecondaryAttachment2"],param_03);
break;
case "loadoutSecondaryReticle":
var_04 = bot_validate_reticle("loadoutSecondary",param_01,param_03);
break;
case "loadoutSecondaryCamo":
var_04 = !isdefined(self.botloadoutfavoritecamo) || param_03 == self.botloadoutfavoritecamo;
break;
case "loadoutStreak3":
case "loadoutStreak2":
case "loadoutStreak1":
var_04 = maps/mp/bots/_bots_ks::bot_killstreak_is_valid_internal(param_03,"bots",undefined,param_01["loadoutStreakType"]);
var_04 = var_04 && func_8FFE("killstreak",param_03,param_01["loadoutStreakType"]);
break;
case "loadoutPerk12":
case "loadoutPerk11":
case "loadoutPerk10":
case "loadoutPerk9":
case "loadoutPerk8":
case "loadoutPerk7":
case "loadoutPerk6":
case "loadoutPerk5":
case "loadoutPerk4":
case "loadoutPerk3":
case "loadoutPerk2":
case "loadoutPerk1":
var_04 = bot_validate_perk(param_03,param_02,param_01,1,12,func_1628(param_01));
break;
case "loadoutPerk15":
case "loadoutPerk14":
case "loadoutPerk13":
if(param_01["loadoutStreakType"] != "streaktype_specialist")
{
var_04 = 0;
}
else
{
var_04 = bot_validate_perk(param_03,param_02,param_01,-1,-1);
}
break;
case "loadoutPerk23":
case "loadoutPerk22":
case "loadoutPerk21":
case "loadoutPerk20":
case "loadoutPerk19":
case "loadoutPerk18":
case "loadoutPerk17":
case "loadoutPerk16":
if(param_01["loadoutStreakType"] != "streaktype_specialist")
{
var_04 = 0;
}
else
{
var_04 = bot_validate_perk(param_03,param_02,param_01,16,23,8);
}
break;
}
return var_04;
}
//Function Number: 26
bot_loadout_choose_from_set(param_00,param_01,param_02,param_03,param_04)
{
var_05 = "none";
var_06 = undefined;
var_07 = 0;
if(common_scripts\utility::array_contains(param_00,"specialty_null"))
{
var_05 = "specialty_null";
}
foreach(var_09 in param_00)
{
var_0A = undefined;
if(getsubstr(var_09,0,9) == "template_")
{
var_0A = var_09;
var_0B = level.botloadouttemplates[var_09][param_03];
var_09 = bot_loadout_choose_from_set(strtok(var_0B,"| "),param_01,param_02,param_03,1);
if(isdefined(var_0A) && isdefined(self.chosentemplates[var_0A]))
{
return var_09;
}
}
if(var_09 == "attachmenttable")
{
return bot_loadout_choose_from_attachmenttable(param_01,param_02,param_03,self.personality,self.difficulty);
}
if(var_09 == "weap_statstable")
{
return func_1623(param_01,param_02,param_03,self.personality,self.difficulty);
}
if(var_09 == "camotable")
{
return bot_loadout_choose_from_camotable(param_01,param_02,param_03,self.personality,self.difficulty);
}
if(getsubstr(var_09,0,5) == "class" && int(getsubstr(var_09,5,6)) > 0)
{
var_09 = func_1620(var_09,param_01,param_02,param_03,self.personality,self.difficulty);
}
if(isdefined(level.bot_perktable) && getsubstr(var_09,0,10) == "perktable_")
{
return bot_loadout_choose_from_perktable(var_09,param_01,param_02,param_03,self.personality,self.difficulty);
}
if(bot_loadout_valid_choice(param_01,param_02,param_03,var_09))
{
var_07 = var_07 + 1;
if(randomfloat(1) <= 1 / var_07)
{
var_05 = var_09;
var_06 = var_0A;
}
}
}
if(isdefined(var_06))
{
self.chosentemplates[var_06] = 1;
}
return var_05;
}
//Function Number: 27
func_1624(param_00)
{
self.chosentemplates = [];
foreach(var_06, var_02 in param_00)
{
var_03 = strtok(var_02,"| ");
var_04 = bot_loadout_choose_from_set(var_03,var_02,param_00,var_06);
param_00[var_06] = var_04;
}
return param_00;
}
//Function Number: 28
func_161E(param_00)
{
var_01 = "recruit";
for(var_02 = 18;var_02 >= 0;var_02--)
{
var_03 = int(tablelookupbyrow("mp/squadEloTable.csv",var_02,0));
if(param_00 >= var_03 || var_02 == 0)
{
return tablelookupbyrow("mp/squadEloTable.csv",var_02,self.pers["squadSlot"] + 1);
}
}
return var_01;
}
//Function Number: 29
bot_loadout_get_difficulty()
{
var_00 = "regular";
if(getdvar("squad_match") == "1")
{
var_00 = func_161E(getsquadassaultelo());
}
else
{
var_00 = self botgetdifficulty();
if(var_00 == "default")
{
maps/mp/bots/_bots_util::bot_set_difficulty("default");
var_00 = self botgetdifficulty();
}
}
return var_00;
}
//Function Number: 30
func_1625()
{
while(!isdefined(level.bot_loadouts_initialized))
{
wait(0.05);
}
while(!isdefined(self.personality))
{
wait(0.05);
}
var_00 = [];
var_01 = bot_loadout_get_difficulty();
self.difficulty = var_01;
var_02 = self botgetpersonality();
if(getdvar("squad_match") == "1")
{
var_00 = bot_loadout_setup_squad_match(var_00);
var_02 = self botgetpersonality();
}
else if(getdvar("squad_vs_squad") == "1")
{
var_00 = func_8FFF(var_00);
var_02 = self botgetpersonality();
}
else if(getdvar("squad_use_hosts_squad") == "1" && level.wargame_client.team == self.team)
{
var_00 = func_9000(var_00);
var_02 = self botgetpersonality();
}
else
{
if(isdefined(self.botlastloadout))
{
var_03 = self.botlastloadoutdifficulty == var_01;
var_04 = self.botlastloadoutpersonality == var_02;
if(var_03 && var_04 && !isdefined(self.hasdied) || self.hasdied && !isdefined(self.respawn_with_launcher))
{
return self.botlastloadout;
}
}
var_00 = bot_loadout_pick(var_02,var_01);
var_00 = func_1624(var_00);
if(isdefined(level.bot_funcs["gametype_loadout_modify"]))
{
var_00 = self [[ level.bot_funcs["gametype_loadout_modify"] ]](var_00);
}
if(var_00["loadoutPrimary"] == "none")
{
self.bot_fallback_personality = undefined;
var_00["loadoutPrimary"] = func_8FFD(var_00);
var_00["loadoutPrimaryCamo"] = "none";
var_00["loadoutPrimaryAttachment"] = "none";
var_00["loadoutPrimaryAttachment2"] = "none";
var_00["loadoutPrimaryAttachment3"] = "none";
var_00["loadoutPrimaryReticle"] = "none";
if(isdefined(self.bot_fallback_personality))
{
if(self.bot_fallback_personality == "weapon")
{
func_9005(var_00["loadoutPrimary"]);
}
else
{
maps/mp/bots/_bots_util::bot_set_personality(self.bot_fallback_personality);
}
var_02 = self.personality;
self.bot_fallback_personality = undefined;
}
}
self.botlastloadout = var_00;
self.botlastloadoutdifficulty = var_01;
self.botlastloadoutpersonality = var_02;
if(isdefined(var_00["loadoutPrimaryCamo"]) && var_00["loadoutPrimaryCamo"] != "none")
{
self.botloadoutfavoritecamo = var_00["loadoutPrimaryCamo"];
}
if(isdefined(self.respawn_with_launcher))
{
if(isdefined(level.bot_respawn_launcher_name) && func_8FFE("weapon",level.bot_respawn_launcher_name))
{
var_00["loadoutSecondary"] = level.bot_respawn_launcher_name;
var_00["loadoutSecondaryAttachment"] = "none";
var_00["loadoutSecondaryAttachment2"] = "none";
self.botlastloadout = undefined;
}
self.respawn_with_launcher = undefined;
}
}
var_00 = bot_loadout_setup_perks(var_00);
maps\mp\gametypes\_class::func_49A1(var_00["loadoutStreak1"]);
maps\mp\gametypes\_class::func_49A1(var_00["loadoutStreak2"]);
maps\mp\gametypes\_class::func_49A1(var_00["loadoutStreak3"]);
if(maps\mp\_utility::func_8FFB())
{
if(common_scripts\utility::array_contains(self.pers["loadoutPerks"],"specialty_twoprimaries"))
{
var_05 = bot_loadout_pick("cqb",var_01);
var_00["loadoutSecondary"] = var_05["loadoutPrimary"];
var_00["loadoutSecondaryAttachment"] = var_05["loadoutPrimaryAttachment"];
var_00["loadoutSecondaryAttachment2"] = var_05["loadoutPrimaryAttachment2"];
var_00 = func_1624(var_00);
var_00 = bot_loadout_setup_perks(var_00);
}
if(common_scripts\utility::array_contains(self.pers["loadoutPerks"],"specialty_extra_attachment"))
{
var_06 = bot_loadout_pick(var_02,var_01);
var_00["loadoutPrimaryAttachment3"] = var_06["loadoutPrimaryAttachment2"];
if(common_scripts\utility::array_contains(self.pers["loadoutPerks"],"specialty_twoprimaries"))
{
var_00["loadoutSecondaryAttachment2"] = var_06["loadoutPrimaryAttachment2"];
}
else
{
var_00["loadoutSecondaryAttachment2"] = var_06["loadoutSecondaryAttachment2"];
}
var_00 = func_1624(var_00);
var_00 = bot_loadout_setup_perks(var_00);
}
else
{
var_00["loadoutSecondaryAttachment2"] = "none";
if(!bot_validate_reticle("loadoutSecondary",var_00,var_00["loadoutSecondaryReticle"]))
{
var_00["loadoutSecondaryReticle"] = "none";
}
}
}
return var_00;
}
//Function Number: 31
bot_loadout_setup_perks(param_00)
{
self.pers["loadoutPerks"] = [];
self.pers["specialistBonusStreaks"] = [];
self.pers["specialistStreaks"] = [];
self.pers["specialistStreakKills"] = [];
var_01 = 0;
var_02 = isdefined(param_00["loadoutStreakType"]) && param_00["loadoutStreakType"] == "streaktype_specialist";
if(var_02)
{
param_00["loadoutStreak1"] = "none";
param_00["loadoutStreak2"] = "none";
param_00["loadoutStreak3"] = "none";
}
foreach(var_08, var_04 in param_00)
{
if(var_04 == "specialty_null" || var_04 == "none")
{
continue;
}
if(getsubstr(var_08,0,11) == "loadoutPerk")
{
var_05 = int(getsubstr(var_08,11));
if(!var_02 && var_05 > 12)
{
continue;
}
var_06 = maps\mp\_utility::getbaseperkname(var_04);
if(var_05 <= 12)
{
self.pers["loadoutPerks"][self.pers["loadoutPerks"].size] = var_06;
}
else if(var_05 <= 15)
{
param_00["loadoutStreak" + var_01 + 1] = var_06 + "_ks";
self.pers["specialistStreaks"][self.pers["specialistStreaks"].size] = var_06 + "_ks";
var_07 = 0;
if(var_01 > 0)
{
var_07 = self.pers["specialistStreakKills"][self.pers["specialistStreakKills"].size - 1];
}
self.pers["specialistStreakKills"][self.pers["specialistStreakKills"].size] = var_07 + bot_perk_cost(var_06) + 2;
var_01++;
}
else
{
self.pers["specialistBonusStreaks"][self.pers["specialistBonusStreaks"].size] = var_06;
}
}
}
if(var_02 && !isdefined(self.pers["specialistStreakKills"][0]))
{
self.pers["specialistStreakKills"][0] = 0;
self.pers["specialistStreaks"][0] = "specialty_null";
}
if(var_02 && !isdefined(self.pers["specialistStreakKills"][1]))
{
self.pers["specialistStreakKills"][1] = self.pers["specialistStreakKills"][0];
self.pers["specialistStreaks"][1] = "specialty_null";
}
if(var_02 && !isdefined(self.pers["specialistStreakKills"][2]))
{
self.pers["specialistStreakKills"][2] = self.pers["specialistStreakKills"][1];
self.pers["specialistStreaks"][2] = "specialty_null";
}
return param_00;
}
//Function Number: 32
func_1691()
{
var_00 = self botgetpersonality();
var_01 = bot_loadout_get_difficulty();
var_02 = bot_loadout_set(var_00,var_01,0);
if(isdefined(var_02) && isdefined(var_02.loadouts) && var_02.loadouts.size > 0)
{
self.classcallback = ::func_1625;
return 1;
}
var_03 = getsubstr(self.name,0,self.name.size - 10);
self.classcallback = undefined;
return 0;
}
//Function Number: 33
func_169F(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
if(isdefined(param_06))
{
return param_00 getprivateplayerdata("privateMatchSquadMembers",param_01,"loadouts",param_02,param_03,param_04,param_05,param_06);
}
if(isdefined(param_05))
{
return param_00 getprivateplayerdata("privateMatchSquadMembers",param_01,"loadouts",param_02,param_03,param_04,param_05);
}
if(isdefined(param_04))
{
return param_00 getprivateplayerdata("privateMatchSquadMembers",param_01,"loadouts",param_02,param_03,param_04);
}
return param_00 getprivateplayerdata("privateMatchSquadMembers",param_01,"loadouts",param_02,param_03);
}
//Function Number: 34
bot_squad_lookup_ranked(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
if(isdefined(param_06))
{
return param_00 getrankedplayerdata("squadMembers",param_01,"loadouts",param_02,param_03,param_04,param_05,param_06);
}
if(isdefined(param_05))
{
return param_00 getrankedplayerdata("squadMembers",param_01,"loadouts",param_02,param_03,param_04,param_05);
}
if(isdefined(param_04))
{
return param_00 getrankedplayerdata("squadMembers",param_01,"loadouts",param_02,param_03,param_04);
}
return param_00 getrankedplayerdata("squadMembers",param_01,"loadouts",param_02,param_03);
}
//Function Number: 35
bot_squad_lookup_enemy(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
if(isdefined(param_06))
{
return getenemysquaddata("squadMembers",param_01,"loadouts",param_02,param_03,param_04,param_05,param_06);
}
if(isdefined(param_05))
{
return getenemysquaddata("squadMembers",param_01,"loadouts",param_02,param_03,param_04,param_05);
}
if(isdefined(param_04))
{
return getenemysquaddata("squadMembers",param_01,"loadouts",param_02,param_03,param_04);
}
return getenemysquaddata("squadMembers",param_01,"loadouts",param_02,param_03);
}
//Function Number: 36
bot_squad_lookup(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
var_07 = ::bot_squad_lookup_ranked;
if(getdvar("squad_match") == "1" && self.team == "axis")
{
var_07 = ::bot_squad_lookup_enemy;
}
else if(!maps\mp\_utility::func_50C1())
{
var_07 = ::func_169F;
}
return self [[ var_07 ]](param_00,param_01,param_02,param_03,param_04,param_05,param_06);
}
//Function Number: 37
bot_squadmember_lookup(param_00,param_01,param_02)
{
if(getdvar("squad_match") == "1" && self.team == "axis")
{
return getenemysquaddata("squadMembers",param_01,param_02);
}
if(!maps\mp\_utility::func_50C1())
{
return param_00 getprivateplayerdata("privateMatchSquadMembers",param_01,param_02);
}
return param_00 getrankedplayerdata("squadMembers",param_01,param_02);
}
//Function Number: 38
bot_loadout_copy_from_client(param_00,param_01,param_02,param_03)
{
param_00["loadoutPrimary"] = bot_squad_lookup(param_01,param_02,param_03,"weaponSetups",0,"weapon");
param_00["loadoutPrimaryAttachment"] = bot_squad_lookup(param_01,param_02,param_03,"weaponSetups",0,"attachment",0);
param_00["loadoutPrimaryAttachment2"] = bot_squad_lookup(param_01,param_02,param_03,"weaponSetups",0,"attachment",1);
param_00["loadoutPrimaryAttachment3"] = bot_squad_lookup(param_01,param_02,param_03,"weaponSetups",0,"attachment",2);
param_00["loadoutPrimaryBuff"] = bot_squad_lookup(param_01,param_02,param_03,"weaponSetups",0,"buff");
param_00["loadoutPrimaryCamo"] = bot_squad_lookup(param_01,param_02,param_03,"weaponSetups",0,"camo");
param_00["loadoutPrimaryReticle"] = bot_squad_lookup(param_01,param_02,param_03,"weaponSetups",0,"reticle");
param_00["loadoutSecondary"] = bot_squad_lookup(param_01,param_02,param_03,"weaponSetups",1,"weapon");
param_00["loadoutSecondaryAttachment"] = bot_squad_lookup(param_01,param_02,param_03,"weaponSetups",1,"attachment",0);
param_00["loadoutSecondaryAttachment2"] = bot_squad_lookup(param_01,param_02,param_03,"weaponSetups",1,"attachment",1);
param_00["loadoutSecondaryBuff"] = bot_squad_lookup(param_01,param_02,param_03,"weaponSetups",1,"buff");
param_00["loadoutSecondaryCamo"] = bot_squad_lookup(param_01,param_02,param_03,"weaponSetups",1,"camo");
param_00["loadoutSecondaryReticle"] = bot_squad_lookup(param_01,param_02,param_03,"weaponSetups",1,"reticle");
param_00["loadoutEquipment"] = bot_squad_lookup(param_01,param_02,param_03,"perks",0);
param_00["loadoutOffhand"] = bot_squad_lookup(param_01,param_02,param_03,"perks",1);
param_00["loadoutStreak1"] = "none";
param_00["loadoutStreak2"] = "none";
param_00["loadoutStreak3"] = "none";
var_04 = bot_squad_lookup(param_01,param_02,param_03,"perks",5);
if(isdefined(var_04))
{
param_00["loadoutStreakType"] = var_04;
if(var_04 == "streaktype_assault")
{
param_00["loadoutStreak1"] = bot_squad_lookup(param_01,param_02,param_03,"assaultStreaks",0);
param_00["loadoutStreak2"] = bot_squad_lookup(param_01,param_02,param_03,"assaultStreaks",1);
param_00["loadoutStreak3"] = bot_squad_lookup(param_01,param_02,param_03,"assaultStreaks",2);
}
else if(var_04 == "streaktype_support")
{
param_00["loadoutStreak1"] = bot_squad_lookup(param_01,param_02,param_03,"supportStreaks",0);
param_00["loadoutStreak2"] = bot_squad_lookup(param_01,param_02,param_03,"supportStreaks",1);
param_00["loadoutStreak3"] = bot_squad_lookup(param_01,param_02,param_03,"supportStreaks",2);
}
else if(var_04 == "streaktype_specialist")
{
param_00["loadoutPerk13"] = bot_squad_lookup(param_01,param_02,param_03,"specialistStreaks",0);
param_00["loadoutPerk14"] = bot_squad_lookup(param_01,param_02,param_03,"specialistStreaks",1);
param_00["loadoutPerk15"] = bot_squad_lookup(param_01,param_02,param_03,"specialistStreaks",2);
}
}
var_05 = 1;
var_06 = maps\mp\gametypes\_class::getnumabilitycategories();
var_07 = maps\mp\gametypes\_class::getnumsubability();
for(var_08 = 0;var_08 < var_06;var_08++)
{
for(var_09 = 0;var_09 < var_07;var_09++)
{
var_0A = bot_squad_lookup(param_01,param_02,param_03,"abilitiesPicked",var_08,var_09);
if(isdefined(var_0A) && var_0A)
{
var_0B = tablelookup("mp/cacAbilityTable.csv",0,var_08 + 1,4 + var_09);
param_00["loadoutPerk" + var_05] = var_0B;
var_05++;
continue;
}
param_00["loadoutPerk" + var_05] = "specialty_null";
}
}
var_05 = 16;
for(var_08 = 0;var_08 < var_06;var_08++)
{
for(var_09 = 0;var_09 < var_07;var_09++)
{
var_0A = bot_squad_lookup(param_01,param_02,param_03,"specialistBonusStreaks",var_08,var_09);
if(isdefined(var_0A) && var_0A)
{
var_0B = tablelookup("mp/cacAbilityTable.csv",0,var_08 + 1,4 + var_09);
param_00["loadoutPerk" + var_05] = var_0B;
var_05++;
continue;
}
param_00["loadoutPerk" + var_05] = "specialty_null";
}
}
param_00["loadoutCharacterType"] = bot_squad_lookup(param_01,param_02,param_03,"type");
func_9005(param_00["loadoutPrimary"]);
self.playercardpatch = bot_squadmember_lookup(param_01,param_02,"patch");
self.playercardbackground = bot_squadmember_lookup(param_01,param_02,"background");
if(getdvar("squad_match") == "1" && self.team == "axis")
{
self.squad_bot_dog_type = getenemysquaddogtype();
}
else
{
self.squad_bot_dog_type = param_01 getcommonplayerdatareservedint("mp_dog_type");
}
return param_00;
}
//Function Number: 39
bot_loadout_setup_squad_match(param_00)
{
var_01 = level.players[0];
foreach(var_03 in level.players)
{
if(!isai(var_03) && isplayer(var_03))
{
var_01 = var_03;
break;
}
}
var_05 = self.pers["squadSlot"];
var_06 = bot_squadmember_lookup(var_01,var_05,"ai_loadout");
self.pers["rankxp"] = bot_squadmember_lookup(var_01,var_05,"squadMemXP");
if(self.team == "allies")
{
if(isdefined(var_01))
{
var_07 = var_01 getrankedplayerdatareservedint("prestigeLevel");
self.pers["prestige_fake"] = var_07;
}
}
else if(self.team == "axis")
{
self.pers["prestige_fake"] = getsquadassaultenemyprestige();
}
param_00 = bot_loadout_copy_from_client(param_00,var_01,var_05,var_06);
return param_00;
}
//Function Number: 40
func_8FFF(param_00)
{
var_01 = level.squad_vs_squad_allies_client;
if(self.team == "axis")
{
var_01 = level.squad_vs_squad_axis_client;
}
var_02 = self.pers["squadSlot"];
var_03 = bot_squadmember_lookup(var_01,var_02,"ai_loadout");
self.pers["rankxp"] = bot_squadmember_lookup(var_01,var_02,"squadMemXP");
if(isdefined(var_01))
{
var_04 = var_01 getrankedplayerdatareservedint("prestigeLevel");
self.pers["prestige_fake"] = var_04;
}
param_00 = bot_loadout_copy_from_client(param_00,var_01,var_02,var_03);
return param_00;
}
//Function Number: 41
func_9000(param_00)
{
var_01 = level.wargame_client;
var_02 = self.pers["squadSlot"];
var_03 = bot_squadmember_lookup(var_01,var_02,"ai_loadout");
self.pers["rankxp"] = bot_squadmember_lookup(var_01,var_02,"squadMemXP");
if(isdefined(var_01))
{
var_04 = var_01 getrankedplayerdatareservedint("prestigeLevel");
self.pers["prestige_fake"] = var_04;
}
param_00 = bot_loadout_copy_from_client(param_00,var_01,var_02,var_03);
return param_00;
}