iw6-scripts/maps/mp/bots/_bots_loadout.gsc
2024-02-13 13:20:49 +01:00

1430 lines
46 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
init()
{
init_template_table();
init_class_table();
init_perktable();
init_bot_weap_statstable();
init_bot_attachmenttable();
init_bot_camotable();
level.bot_loadouts_initialized = 1;
}
init_class_table()
{
var_0 = "mp/botClassTable.csv";
level.botloadoutsets = [];
var_1 = bot_loadout_fields();
var_2 = 0;
for (;;)
{
var_2++;
var_3 = tablelookup( var_0, 0, "botPersonalities", var_2 );
var_4 = tablelookup( var_0, 0, "botDifficulties", var_2 );
if ( !isdefined( var_3 ) || var_3 == "" )
break;
if ( !isdefined( var_4 ) || var_4 == "" )
break;
var_5 = [];
foreach ( var_7 in var_1 )
var_5[var_7] = tablelookup( var_0, 0, var_7, var_2 );
var_9 = strtok( var_3, "| " );
var_10 = strtok( var_4, "| " );
foreach ( var_12 in var_9 )
{
foreach ( var_14 in var_10 )
{
var_15 = bot_loadout_set( var_12, var_14, 1 );
var_16 = spawnstruct();
var_16.loadoutvalues = var_5;
var_15.loadouts[var_15.loadouts.size] = var_16;
}
}
}
}
init_template_table()
{
var_0 = "mp/botTemplateTable.csv";
level.botloadouttemplates = [];
var_1 = bot_loadout_fields();
var_2 = 0;
for (;;)
{
var_2++;
var_3 = tablelookup( var_0, 0, "template_", var_2 );
if ( !isdefined( var_3 ) || var_3 == "" )
break;
var_4 = "template_" + var_3;
level.botloadouttemplates[var_4] = [];
foreach ( var_6 in var_1 )
{
var_7 = tablelookup( var_0, 0, var_6, var_2 );
if ( isdefined( var_7 ) && var_7 != "" )
level.botloadouttemplates[var_4][var_6] = var_7;
}
}
}
bot_loadout_item_allowed( var_0, var_1, var_2 )
{
if ( !isusingmatchrulesdata() )
return 1;
if ( !getmatchrulesdata( "commonOption", "allowCustomClasses" ) )
return 1;
if ( var_1 == "specialty_null" )
return 1;
if ( var_1 == "none" )
return 1;
if ( var_0 == "equipment" )
{
if ( getmatchrulesdata( "commonOption", "perkRestricted", var_1 ) )
return 0;
var_0 = "weapon";
}
var_3 = var_0 + "Restricted";
var_4 = var_0 + "ClassRestricted";
var_5 = "";
switch ( var_0 )
{
case "weapon":
var_5 = maps\mp\_utility::getweaponclass( var_1 );
break;
case "attachment":
var_5 = maps\mp\_utility::getattachmenttype( var_1 );
break;
case "killstreak":
var_5 = var_2;
break;
case "perk":
var_5 = "ability_" + level.bot_perktypes[var_1];
break;
default:
return 0;
}
if ( getmatchrulesdata( "commonOption", var_3, var_1 ) )
return 0;
if ( getmatchrulesdata( "commonOption", var_4, var_5 ) )
return 0;
return 1;
}
bot_loadout_choose_fallback_primary( var_0 )
{
var_1 = "none";
var_2 = [ "veteran", "hardened", "regular", "recruit" ];
var_2 = common_scripts\utility::array_randomize( var_2 );
foreach ( var_4 in var_2 )
{
var_1 = bot_loadout_choose_from_statstable( "weap_statstable", var_0, "loadoutPrimary", self.personality, var_4 );
if ( var_1 != "none" )
return var_1;
}
if ( isdefined( level.bot_personality_list ) )
{
var_6 = common_scripts\utility::array_randomize( level.bot_personality_list );
foreach ( var_8 in var_6 )
{
foreach ( var_4 in var_2 )
{
var_1 = bot_loadout_choose_from_statstable( "weap_statstable", var_0, "loadoutPrimary", var_8, var_4 );
if ( var_1 != "none" )
{
self.bot_fallback_personality = var_8;
return var_1;
}
}
}
}
if ( isusingmatchrulesdata() )
{
for ( var_12 = 0; var_12 < 6 && ( !isdefined( var_1 ) || var_1 == "none" || var_1 == "" ); var_12++ )
{
if ( getmatchrulesdata( "defaultClasses", self.team, var_12, "class", "inUse" ) )
{
var_1 = getmatchrulesdata( "defaultClasses", self.team, var_12, "class", "weaponSetups", 0, "weapon" );
if ( var_1 != "none" )
{
self.bot_fallback_personality = "weapon";
return var_1;
}
}
}
}
self.bot_fallback_personality = "weapon";
return level.bot_fallback_weapon;
}
bot_pick_personality_from_weapon( var_0 )
{
if ( isdefined( var_0 ) )
{
var_1 = level.bot_weap_personality[var_0];
if ( isdefined( var_1 ) )
{
var_2 = strtok( var_1, "| " );
if ( var_2.size > 0 )
maps\mp\bots\_bots_util::bot_set_personality( common_scripts\utility::random( var_2 ) );
}
}
}
bot_loadout_fields()
{
var_0 = [];
var_0[var_0.size] = "loadoutPrimary";
var_0[var_0.size] = "loadoutPrimaryBuff";
var_0[var_0.size] = "loadoutPrimaryAttachment";
var_0[var_0.size] = "loadoutPrimaryAttachment2";
var_0[var_0.size] = "loadoutPrimaryCamo";
var_0[var_0.size] = "loadoutPrimaryReticle";
var_0[var_0.size] = "loadoutSecondary";
var_0[var_0.size] = "loadoutSecondaryBuff";
var_0[var_0.size] = "loadoutSecondaryAttachment";
var_0[var_0.size] = "loadoutSecondaryAttachment2";
var_0[var_0.size] = "loadoutSecondaryCamo";
var_0[var_0.size] = "loadoutSecondaryReticle";
var_0[var_0.size] = "loadoutEquipment";
var_0[var_0.size] = "loadoutOffhand";
var_0[var_0.size] = "loadoutStreakType";
var_0[var_0.size] = "loadoutStreak1";
var_0[var_0.size] = "loadoutStreak2";
var_0[var_0.size] = "loadoutStreak3";
var_0[var_0.size] = "loadoutPerk1";
var_0[var_0.size] = "loadoutPerk2";
var_0[var_0.size] = "loadoutPerk3";
var_0[var_0.size] = "loadoutPerk4";
var_0[var_0.size] = "loadoutPerk5";
var_0[var_0.size] = "loadoutPerk6";
var_0[var_0.size] = "loadoutPerk7";
var_0[var_0.size] = "loadoutPerk8";
var_0[var_0.size] = "loadoutPerk9";
var_0[var_0.size] = "loadoutPerk10";
var_0[var_0.size] = "loadoutPerk11";
var_0[var_0.size] = "loadoutPerk12";
var_0[var_0.size] = "loadoutPerk13";
var_0[var_0.size] = "loadoutPerk14";
var_0[var_0.size] = "loadoutPerk15";
var_0[var_0.size] = "loadoutPerk16";
var_0[var_0.size] = "loadoutPerk17";
var_0[var_0.size] = "loadoutPerk18";
var_0[var_0.size] = "loadoutPerk19";
var_0[var_0.size] = "loadoutPerk20";
var_0[var_0.size] = "loadoutPerk21";
var_0[var_0.size] = "loadoutPerk22";
var_0[var_0.size] = "loadoutPerk23";
return var_0;
}
bot_loadout_set( var_0, var_1, var_2 )
{
var_3 = var_1 + "_" + var_0;
if ( !isdefined( level.botloadoutsets ) )
level.botloadoutsets = [];
if ( !isdefined( level.botloadoutsets[var_3] ) && var_2 )
{
level.botloadoutsets[var_3] = spawnstruct();
level.botloadoutsets[var_3].loadouts = [];
}
if ( isdefined( level.botloadoutsets[var_3] ) )
return level.botloadoutsets[var_3];
}
bot_loadout_pick( var_0, var_1 )
{
var_2 = bot_loadout_set( var_0, var_1, 0 );
if ( isdefined( var_2 ) && isdefined( var_2.loadouts ) && var_2.loadouts.size > 0 )
{
var_3 = randomint( var_2.loadouts.size );
return var_2.loadouts[var_3].loadoutvalues;
}
}
bot_validate_weapon( var_0, var_1, var_2, var_3 )
{
var_4 = maps\mp\_utility::getweaponattachmentarrayfromstats( var_0 );
if ( isdefined( var_1 ) && var_1 != "none" && !bot_loadout_item_allowed( "attachment", var_1 ) )
return 0;
if ( isdefined( var_2 ) && var_2 != "none" && !bot_loadout_item_allowed( "attachment", var_2 ) )
return 0;
if ( isdefined( var_3 ) && var_3 != "none" && !bot_loadout_item_allowed( "attachment", var_3 ) )
return 0;
if ( var_1 != "none" && !common_scripts\utility::array_contains( var_4, var_1 ) )
return 0;
if ( var_2 != "none" && !common_scripts\utility::array_contains( var_4, var_2 ) )
return 0;
if ( isdefined( var_3 ) && var_3 != "none" && !common_scripts\utility::array_contains( var_4, var_3 ) )
return 0;
if ( ( var_1 == "none" || var_2 == "none" ) && ( !isdefined( var_3 ) || var_3 == "none" ) )
return 1;
if ( !isdefined( level.bot_invalid_attachment_combos ) )
{
level.bot_invalid_attachment_combos = [];
level.allowable_double_attachments = [];
var_5 = "mp/attachmentcombos.csv";
var_6 = 0;
for (;;)
{
var_6++;
var_7 = tablelookupbyrow( var_5, 0, var_6 );
if ( var_7 == "" )
break;
var_8 = 0;
for (;;)
{
var_8++;
var_9 = tablelookupbyrow( var_5, var_8, 0 );
if ( var_9 == "" )
break;
if ( var_9 == var_7 )
{
if ( tablelookupbyrow( var_5, var_8, var_6 ) != "no" )
level.allowable_double_attachments[var_9] = 1;
continue;
}
if ( tablelookupbyrow( var_5, var_8, var_6 ) == "no" )
level.bot_invalid_attachment_combos[var_7][var_9] = 1;
}
}
}
if ( var_1 == var_2 && !isdefined( level.allowable_double_attachments[var_1] ) )
return 0;
if ( isdefined( var_3 ) )
{
if ( var_2 == var_3 && !isdefined( level.allowable_double_attachments[var_2] ) )
return 0;
if ( var_1 == var_3 && !isdefined( level.allowable_double_attachments[var_1] ) )
return 0;
if ( var_3 != "none" && var_1 == var_3 && var_2 == var_3 )
return 0;
if ( isdefined( level.bot_invalid_attachment_combos[var_2] ) && isdefined( level.bot_invalid_attachment_combos[var_2][var_3] ) )
return 0;
if ( isdefined( level.bot_invalid_attachment_combos[var_1] ) && isdefined( level.bot_invalid_attachment_combos[var_1][var_3] ) )
return 0;
}
return !( isdefined( level.bot_invalid_attachment_combos[var_1] ) && isdefined( level.bot_invalid_attachment_combos[var_1][var_2] ) );
}
bot_validate_reticle( var_0, var_1, var_2 )
{
if ( isdefined( var_1[var_0 + "Attachment"] ) && isdefined( level.bot_attachment_reticle[var_1[var_0 + "Attachment"]] ) )
return 1;
if ( isdefined( var_1[var_0 + "Attachment2"] ) && isdefined( level.bot_attachment_reticle[var_1[var_0 + "Attachment2"]] ) )
return 1;
if ( isdefined( var_1[var_0 + "Attachment3"] ) && isdefined( level.bot_attachment_reticle[var_1[var_0 + "Attachment3"]] ) )
return 1;
return 0;
}
bot_perk_cost( var_0 )
{
return level.perktable_costs[var_0];
}
perktable_add( var_0, var_1 )
{
if ( bot_perk_cost( var_0 ) > 0 )
{
var_2 = [];
var_2["type"] = var_1;
var_2["name"] = var_0;
level.bot_perktable[level.bot_perktable.size] = var_2;
level.bot_perktypes[var_0] = var_1;
}
}
init_perktable()
{
level.perktable_costs = [];
var_0 = 1;
for (;;)
{
var_1 = tablelookupbyrow( "mp/perktable.csv", var_0, 1 );
if ( var_1 == "" )
break;
level.perktable_costs[var_1] = int( tablelookupbyrow( "mp/perktable.csv", var_0, 10 ) );
var_0++;
}
level.perktable_costs["none"] = 0;
level.perktable_costs["specialty_null"] = 0;
level.bot_perktable = [];
level.bot_perktypes = [];
var_0 = 1;
for ( var_2 = "ability_null"; isdefined( var_2 ) && var_2 != ""; var_2 = tablelookupbyrow( "mp/cacabilitytable.csv", var_0, 1 ) )
{
var_2 = getsubstr( var_2, 8 );
for ( var_3 = 4; var_3 <= 13; var_3++ )
{
var_1 = tablelookupbyrow( "mp/cacabilitytable.csv", var_0, var_3 );
if ( var_1 != "" )
perktable_add( var_1, var_2 );
}
var_0++;
}
}
init_bot_weap_statstable()
{
var_0 = "mp/statstable.csv";
var_1 = 4;
var_2 = 37;
var_3 = 38;
level.bot_weap_statstable = [];
level.bot_weap_personality = [];
var_4 = 1;
for (;;)
{
var_5 = tablelookupbyrow( var_0, var_4, var_1 );
if ( var_5 == "specialty_null" )
break;
var_6 = tablelookupbyrow( var_0, var_4, var_3 );
var_7 = tablelookupbyrow( var_0, var_4, var_2 );
if ( var_5 != "" && var_7 != "" )
level.bot_weap_personality[var_5] = var_7;
if ( var_6 != "" && var_5 != "" && var_7 != "" )
{
var_8 = "loadoutPrimary";
if ( maps\mp\gametypes\_class::isvalidsecondary( var_5, 0 ) )
var_8 = "loadoutSecondary";
else if ( !maps\mp\gametypes\_class::isvalidprimary( var_5, 0 ) )
{
var_4++;
continue;
}
if ( !isdefined( level.bot_weap_statstable[var_8] ) )
level.bot_weap_statstable[var_8] = [];
var_9 = strtok( var_7, "| " );
var_10 = strtok( var_6, "| " );
foreach ( var_12 in var_9 )
{
if ( !isdefined( level.bot_weap_statstable[var_8][var_12] ) )
level.bot_weap_statstable[var_8][var_12] = [];
foreach ( var_14 in var_10 )
{
if ( !isdefined( level.bot_weap_statstable[var_8][var_12][var_14] ) )
level.bot_weap_statstable[var_8][var_12][var_14] = [];
var_15 = level.bot_weap_statstable[var_8][var_12][var_14].size;
level.bot_weap_statstable[var_8][var_12][var_14][var_15] = var_5;
}
}
}
var_4++;
}
}
bot_loadout_choose_from_statstable( var_0, var_1, var_2, var_3, var_4 )
{
var_5 = "specialty_null";
if ( var_2 == "loadoutPrimary" )
var_5 = "iw6_honeybadger";
else if ( var_2 == "loadoutSecondary" )
var_5 = "iw6_p226";
if ( var_3 == "default" )
var_3 = "run_and_gun";
if ( var_2 == "loadoutSecondary" && common_scripts\utility::array_contains( var_1, "specialty_twoprimaries" ) )
var_2 = "loadoutPrimary";
if ( !isdefined( level.bot_weap_statstable ) )
return var_5;
if ( !isdefined( level.bot_weap_statstable[var_2] ) )
return var_5;
if ( !isdefined( level.bot_weap_statstable[var_2][var_3] ) )
return var_5;
if ( !isdefined( level.bot_weap_statstable[var_2][var_3][var_4] ) )
return var_5;
var_5 = bot_loadout_choose_from_set( level.bot_weap_statstable[var_2][var_3][var_4], var_0, var_1, var_2 );
return var_5;
}
bot_loadout_choose_from_perktable( var_0, var_1, var_2, var_3, var_4, var_5 )
{
var_6 = "specialty_null";
if ( !isdefined( level.bot_perktable ) )
return var_6;
if ( !isdefined( level.bot_perktable_groups ) )
level.bot_perktable_groups = [];
if ( !isdefined( level.bot_perktable_groups[var_0] ) )
{
var_7 = strtok( var_0, "_" );
var_7[0] = "";
var_8 = 0;
if ( common_scripts\utility::array_contains( var_7, "any" ) )
var_8 = 1;
var_9 = [];
foreach ( var_11 in level.bot_perktable )
{
if ( var_8 || common_scripts\utility::array_contains( var_7, var_11["type"] ) )
var_9[var_9.size] = var_11["name"];
}
level.bot_perktable_groups[var_0] = var_9;
}
if ( level.bot_perktable_groups[var_0].size > 0 )
var_6 = bot_loadout_choose_from_set( level.bot_perktable_groups[var_0], var_1, var_2, var_3 );
return var_6;
}
bot_validate_perk( var_0, var_1, var_2, var_3, var_4, var_5 )
{
var_6 = var_4 - var_3 + 1;
if ( isdefined( var_5 ) )
var_6 = var_5;
var_7 = 0;
var_8 = int( getsubstr( var_1, 11 ) );
if ( var_0 == "specialty_twoprimaries" )
return 0;
if ( var_0 == "specialty_extra_attachment" )
return 0;
if ( !bot_loadout_item_allowed( "perk", var_0 ) )
return 0;
for ( var_9 = var_8 - 1; var_9 > 0; var_9-- )
{
var_10 = "loadoutPerk" + var_9;
if ( var_2[var_10] == "none" || var_2[var_10] == "specialty_null" )
continue;
if ( var_0 == var_2[var_10] )
return 0;
if ( var_9 >= var_3 && var_9 <= var_4 )
var_7 = var_7 + bot_perk_cost( var_2[var_10] );
}
if ( var_7 + bot_perk_cost( var_0 ) > var_6 )
return 0;
return 1;
}
bot_loadout_choose_from_default_class( var_0, var_1, var_2, var_3, var_4, var_5 )
{
var_6 = int( getsubstr( var_0, 5, 6 ) ) - 1;
switch ( var_3 )
{
case "loadoutPrimary":
return maps\mp\gametypes\_class::table_getweapon( level.classtablename, var_6, 0 );
case "loadoutPrimaryAttachment":
return maps\mp\gametypes\_class::table_getweaponattachment( level.classtablename, var_6, 0, 0 );
case "loadoutPrimaryAttachment2":
return maps\mp\gametypes\_class::table_getweaponattachment( level.classtablename, var_6, 0, 1 );
case "loadoutPrimaryBuff":
return maps\mp\gametypes\_class::table_getweaponbuff( level.classtablename, var_6, 0 );
case "loadoutPrimaryCamo":
return maps\mp\gametypes\_class::table_getweaponcamo( level.classtablename, var_6, 0 );
case "loadoutPrimaryReticle":
return maps\mp\gametypes\_class::table_getweaponreticle( level.classtablename, var_6, 0 );
case "loadoutSecondary":
return maps\mp\gametypes\_class::table_getweapon( level.classtablename, var_6, 1 );
case "loadoutSecondaryAttachment":
return maps\mp\gametypes\_class::table_getweaponattachment( level.classtablename, var_6, 1, 0 );
case "loadoutSecondaryAttachment2":
return maps\mp\gametypes\_class::table_getweaponattachment( level.classtablename, var_6, 1, 1 );
case "loadoutSecondaryBuff":
return maps\mp\gametypes\_class::table_getweaponbuff( level.classtablename, var_6, 1 );
case "loadoutSecondaryCamo":
return maps\mp\gametypes\_class::table_getweaponcamo( level.classtablename, var_6, 1 );
case "loadoutSecondaryReticle":
return maps\mp\gametypes\_class::table_getweaponreticle( level.classtablename, var_6, 1 );
case "loadoutEquipment":
return maps\mp\gametypes\_class::table_getequipment( level.classtablename, var_6, 0 );
case "loadoutOffhand":
return maps\mp\gametypes\_class::table_getoffhand( level.classtablename, var_6, 0 );
case "loadoutStreak1":
return maps\mp\gametypes\_class::table_getkillstreak( level.classtablename, var_6, 0 );
case "loadoutStreak2":
return maps\mp\gametypes\_class::table_getkillstreak( level.classtablename, var_6, 1 );
case "loadoutStreak3":
return maps\mp\gametypes\_class::table_getkillstreak( level.classtablename, var_6, 2 );
case "loadoutPerk6":
case "loadoutPerk5":
case "loadoutPerk4":
case "loadoutPerk3":
case "loadoutPerk2":
case "loadoutPerk1":
var_7 = int( getsubstr( var_3, 11 ) );
var_8 = maps\mp\gametypes\_class::table_getperk( level.classtablename, var_6, var_7 );
if ( var_8 == "" )
return "specialty_null";
var_9 = int( getsubstr( var_8, 0, 1 ) );
var_10 = int( getsubstr( var_8, 1, 2 ) );
var_11 = tablelookupbyrow( "mp/cacabilitytable.csv", var_9 + 1, var_10 + 3 );
return var_11;
}
return var_0;
}
init_bot_attachmenttable()
{
var_0 = "mp/attachmenttable.csv";
var_1 = 5;
var_2 = 19;
var_3 = 11;
level.bot_attachmenttable = [];
level.bot_attachment_reticle = [];
var_4 = 1;
for (;;)
{
var_5 = tablelookupbyrow( var_0, var_4, var_1 );
if ( var_5 == "done" )
break;
var_6 = tablelookupbyrow( var_0, var_4, var_2 );
if ( var_5 != "" && var_6 != "" )
{
var_7 = tablelookupbyrow( var_0, var_4, var_3 );
if ( var_7 == "TRUE" )
level.bot_attachment_reticle[var_5] = 1;
var_8 = strtok( var_6, "| " );
foreach ( var_10 in var_8 )
{
if ( !isdefined( level.bot_attachmenttable[var_10] ) )
level.bot_attachmenttable[var_10] = [];
if ( !common_scripts\utility::array_contains( level.bot_attachmenttable[var_10], var_5 ) )
{
var_11 = level.bot_attachmenttable[var_10].size;
level.bot_attachmenttable[var_10][var_11] = var_5;
}
}
}
var_4++;
}
}
bot_loadout_choose_from_attachmenttable( var_0, var_1, var_2, var_3, var_4 )
{
var_5 = "none";
if ( !isdefined( level.bot_attachmenttable ) )
return var_5;
if ( !isdefined( level.bot_attachmenttable[var_4] ) )
return var_5;
var_5 = bot_loadout_choose_from_set( level.bot_attachmenttable[var_4], var_0, var_1, var_2 );
return var_5;
}
init_bot_camotable()
{
var_0 = "mp/camotable.csv";
var_1 = 1;
var_2 = 5;
level.bot_camotable = [];
var_3 = 0;
for (;;)
{
var_4 = tablelookupbyrow( var_0, var_3, var_1 );
if ( !isdefined( var_4 ) || var_4 == "" )
break;
var_5 = tablelookupbyrow( var_0, var_3, var_2 );
if ( isdefined( var_5 ) && int( var_5 ) )
level.bot_camotable[level.bot_camotable.size] = var_4;
var_3++;
}
}
bot_loadout_choose_from_camotable( var_0, var_1, var_2, var_3, var_4 )
{
var_5 = "none";
if ( !isdefined( level.bot_camotable ) )
return var_5;
var_5 = bot_loadout_choose_from_set( level.bot_camotable, var_0, var_1, var_2 );
return var_5;
}
bot_loadout_perk_slots( var_0 )
{
var_1 = 8;
if ( isdefined( var_0["loadoutPrimary"] ) && var_0["loadoutPrimary"] == "none" )
var_1 = var_1 + 1;
if ( isdefined( var_0["loadoutSecondary"] ) && var_0["loadoutSecondary"] == "none" )
var_1 = var_1 + 1;
if ( isdefined( var_0["loadoutEquipment"] ) && var_0["loadoutEquipment"] == "none" )
var_1 = var_1 + 1;
if ( isdefined( var_0["loadoutOffhand"] ) && var_0["loadoutOffhand"] == "none" )
var_1 = var_1 + 1;
return var_1;
}
bot_loadout_valid_choice( var_0, var_1, var_2, var_3 )
{
var_4 = 1;
switch ( var_2 )
{
case "loadoutPrimary":
var_4 = bot_loadout_item_allowed( "weapon", var_3 );
break;
case "loadoutOffhand":
case "loadoutEquipment":
var_4 = bot_loadout_item_allowed( "equipment", var_3 );
break;
case "loadoutPrimaryBuff":
var_4 = maps\mp\gametypes\_class::isvalidweaponbuff( var_3, var_1["loadoutPrimary"] );
break;
case "loadoutPrimaryAttachment":
var_4 = bot_validate_weapon( var_1["loadoutPrimary"], var_3, "none" );
break;
case "loadoutPrimaryAttachment2":
var_4 = bot_validate_weapon( var_1["loadoutPrimary"], var_1["loadoutPrimaryAttachment"], var_3 );
break;
case "loadoutPrimaryAttachment3":
var_4 = bot_validate_weapon( var_1["loadoutPrimary"], var_1["loadoutPrimaryAttachment"], var_1["loadoutPrimaryAttachment2"], var_3 );
break;
case "loadoutPrimaryReticle":
var_4 = bot_validate_reticle( "loadoutPrimary", var_1, var_3 );
break;
case "loadoutPrimaryCamo":
var_4 = !isdefined( self.botloadoutfavoritecamo ) || var_3 == self.botloadoutfavoritecamo;
break;
case "loadoutSecondary":
var_4 = var_3 != var_1["loadoutPrimary"];
var_4 = var_4 && bot_loadout_item_allowed( "weapon", var_3 );
break;
case "loadoutSecondaryBuff":
var_4 = maps\mp\gametypes\_class::isvalidweaponbuff( var_3, var_1["loadoutSecondary"] );
break;
case "loadoutSecondaryAttachment":
var_4 = bot_validate_weapon( var_1["loadoutSecondary"], var_3, "none" );
break;
case "loadoutSecondaryAttachment2":
var_4 = bot_validate_weapon( var_1["loadoutSecondary"], var_1["loadoutSecondaryAttachment"], var_3 );
break;
case "loadoutSecondaryAttachment3":
var_4 = bot_validate_weapon( var_1["loadoutSecondary"], var_1["loadoutSecondaryAttachment"], var_1["loadoutSecondaryAttachment2"], var_3 );
break;
case "loadoutSecondaryReticle":
var_4 = bot_validate_reticle( "loadoutSecondary", var_1, var_3 );
break;
case "loadoutSecondaryCamo":
var_4 = !isdefined( self.botloadoutfavoritecamo ) || var_3 == self.botloadoutfavoritecamo;
break;
case "loadoutStreak3":
case "loadoutStreak2":
case "loadoutStreak1":
var_4 = maps\mp\bots\_bots_ks::bot_killstreak_is_valid_internal( var_3, "bots", undefined, var_1["loadoutStreakType"] );
var_4 = var_4 && bot_loadout_item_allowed( "killstreak", var_3, var_1["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_4 = bot_validate_perk( var_3, var_2, var_1, 1, 12, bot_loadout_perk_slots( var_1 ) );
break;
case "loadoutPerk15":
case "loadoutPerk14":
case "loadoutPerk13":
if ( var_1["loadoutStreakType"] != "streaktype_specialist" )
var_4 = 0;
else
var_4 = bot_validate_perk( var_3, var_2, var_1, -1, -1 );
break;
case "loadoutPerk23":
case "loadoutPerk22":
case "loadoutPerk21":
case "loadoutPerk20":
case "loadoutPerk19":
case "loadoutPerk18":
case "loadoutPerk17":
case "loadoutPerk16":
if ( var_1["loadoutStreakType"] != "streaktype_specialist" )
var_4 = 0;
else
var_4 = bot_validate_perk( var_3, var_2, var_1, 16, 23, 8 );
break;
}
return var_4;
}
bot_loadout_choose_from_set( var_0, var_1, var_2, var_3, var_4 )
{
var_5 = "none";
var_6 = undefined;
var_7 = 0.0;
if ( common_scripts\utility::array_contains( var_0, "specialty_null" ) )
var_5 = "specialty_null";
foreach ( var_9 in var_0 )
{
var_10 = undefined;
if ( getsubstr( var_9, 0, 9 ) == "template_" )
{
var_10 = var_9;
var_11 = level.botloadouttemplates[var_9][var_3];
var_9 = bot_loadout_choose_from_set( strtok( var_11, "| " ), var_1, var_2, var_3, 1 );
if ( isdefined( var_10 ) && isdefined( self.chosentemplates[var_10] ) )
return var_9;
}
if ( var_9 == "attachmenttable" )
return bot_loadout_choose_from_attachmenttable( var_1, var_2, var_3, self.personality, self.difficulty );
if ( var_9 == "weap_statstable" )
return bot_loadout_choose_from_statstable( var_1, var_2, var_3, self.personality, self.difficulty );
if ( var_9 == "camotable" )
return bot_loadout_choose_from_camotable( var_1, var_2, var_3, self.personality, self.difficulty );
if ( getsubstr( var_9, 0, 5 ) == "class" && int( getsubstr( var_9, 5, 6 ) ) > 0 )
var_9 = bot_loadout_choose_from_default_class( var_9, var_1, var_2, var_3, self.personality, self.difficulty );
if ( isdefined( level.bot_perktable ) && getsubstr( var_9, 0, 10 ) == "perktable_" )
return bot_loadout_choose_from_perktable( var_9, var_1, var_2, var_3, self.personality, self.difficulty );
if ( bot_loadout_valid_choice( var_1, var_2, var_3, var_9 ) )
{
var_7 = var_7 + 1.0;
if ( randomfloat( 1.0 ) <= 1.0 / var_7 )
{
var_5 = var_9;
var_6 = var_10;
}
}
}
if ( isdefined( var_6 ) )
self.chosentemplates[var_6] = 1;
return var_5;
}
bot_loadout_choose_values( var_0 )
{
self.chosentemplates = [];
foreach ( var_6, var_2 in var_0 )
{
var_3 = strtok( var_2, "| " );
var_4 = bot_loadout_choose_from_set( var_3, var_2, var_0, var_6 );
var_0[var_6] = var_4;
}
return var_0;
}
bot_load_setup_difficulty_squad_match( var_0 )
{
var_1 = "recruit";
for ( var_2 = 18; var_2 >= 0; var_2-- )
{
var_3 = int( tablelookupbyrow( "mp/squadEloTable.csv", var_2, 0 ) );
if ( var_0 >= var_3 || var_2 == 0 )
return tablelookupbyrow( "mp/squadEloTable.csv", var_2, self.pers["squadSlot"] + 1 );
}
return var_1;
}
bot_loadout_get_difficulty()
{
var_0 = "regular";
if ( getdvar( "squad_match" ) == "1" )
var_0 = bot_load_setup_difficulty_squad_match( getsquadassaultelo() );
else
{
var_0 = self botgetdifficulty();
if ( var_0 == "default" )
{
maps\mp\bots\_bots_util::bot_set_difficulty( "default" );
var_0 = self botgetdifficulty();
}
}
return var_0;
}
bot_loadout_class_callback()
{
while ( !isdefined( level.bot_loadouts_initialized ) )
wait 0.05;
while ( !isdefined( self.personality ) )
wait 0.05;
var_0 = [];
var_1 = bot_loadout_get_difficulty();
self.difficulty = var_1;
var_2 = self botgetpersonality();
if ( getdvar( "squad_match" ) == "1" )
{
var_0 = bot_loadout_setup_squad_match( var_0 );
var_2 = self botgetpersonality();
}
else if ( getdvar( "squad_vs_squad" ) == "1" )
{
var_0 = bot_loadout_setup_squad_vs_squad_match( var_0 );
var_2 = self botgetpersonality();
}
else if ( getdvar( "squad_use_hosts_squad" ) == "1" && level.wargame_client.team == self.team )
{
var_0 = bot_loadout_setup_wargame_match( var_0 );
var_2 = self botgetpersonality();
}
else
{
if ( isdefined( self.botlastloadout ) )
{
var_3 = self.botlastloadoutdifficulty == var_1;
var_4 = self.botlastloadoutpersonality == var_2;
if ( var_3 && var_4 && ( !isdefined( self.hasdied ) || self.hasdied ) && !isdefined( self.respawn_with_launcher ) )
return self.botlastloadout;
}
var_0 = bot_loadout_pick( var_2, var_1 );
var_0 = bot_loadout_choose_values( var_0 );
if ( isdefined( level.bot_funcs["gametype_loadout_modify"] ) )
var_0 = self [[ level.bot_funcs["gametype_loadout_modify"] ]]( var_0 );
if ( var_0["loadoutPrimary"] == "none" )
{
self.bot_fallback_personality = undefined;
var_0["loadoutPrimary"] = bot_loadout_choose_fallback_primary( var_0 );
var_0["loadoutPrimaryCamo"] = "none";
var_0["loadoutPrimaryAttachment"] = "none";
var_0["loadoutPrimaryAttachment2"] = "none";
var_0["loadoutPrimaryAttachment3"] = "none";
var_0["loadoutPrimaryReticle"] = "none";
if ( isdefined( self.bot_fallback_personality ) )
{
if ( self.bot_fallback_personality == "weapon" )
bot_pick_personality_from_weapon( var_0["loadoutPrimary"] );
else
maps\mp\bots\_bots_util::bot_set_personality( self.bot_fallback_personality );
var_2 = self.personality;
self.bot_fallback_personality = undefined;
}
}
self.botlastloadout = var_0;
self.botlastloadoutdifficulty = var_1;
self.botlastloadoutpersonality = var_2;
if ( isdefined( var_0["loadoutPrimaryCamo"] ) && var_0["loadoutPrimaryCamo"] != "none" )
self.botloadoutfavoritecamo = var_0["loadoutPrimaryCamo"];
if ( isdefined( self.respawn_with_launcher ) )
{
if ( isdefined( level.bot_respawn_launcher_name ) && bot_loadout_item_allowed( "weapon", level.bot_respawn_launcher_name ) )
{
var_0["loadoutSecondary"] = level.bot_respawn_launcher_name;
var_0["loadoutSecondaryAttachment"] = "none";
var_0["loadoutSecondaryAttachment2"] = "none";
self.botlastloadout = undefined;
}
self.respawn_with_launcher = undefined;
}
}
var_0 = bot_loadout_setup_perks( var_0 );
maps\mp\gametypes\_class::isvalidkillstreak( var_0["loadoutStreak1"] );
maps\mp\gametypes\_class::isvalidkillstreak( var_0["loadoutStreak2"] );
maps\mp\gametypes\_class::isvalidkillstreak( var_0["loadoutStreak3"] );
if ( maps\mp\_utility::bot_israndom() )
{
if ( common_scripts\utility::array_contains( self.pers["loadoutPerks"], "specialty_twoprimaries" ) )
{
var_5 = bot_loadout_pick( "cqb", var_1 );
var_0["loadoutSecondary"] = var_5["loadoutPrimary"];
var_0["loadoutSecondaryAttachment"] = var_5["loadoutPrimaryAttachment"];
var_0["loadoutSecondaryAttachment2"] = var_5["loadoutPrimaryAttachment2"];
var_0 = bot_loadout_choose_values( var_0 );
var_0 = bot_loadout_setup_perks( var_0 );
}
if ( common_scripts\utility::array_contains( self.pers["loadoutPerks"], "specialty_extra_attachment" ) )
{
var_6 = bot_loadout_pick( var_2, var_1 );
var_0["loadoutPrimaryAttachment3"] = var_6["loadoutPrimaryAttachment2"];
if ( common_scripts\utility::array_contains( self.pers["loadoutPerks"], "specialty_twoprimaries" ) )
var_0["loadoutSecondaryAttachment2"] = var_6["loadoutPrimaryAttachment2"];
else
var_0["loadoutSecondaryAttachment2"] = var_6["loadoutSecondaryAttachment2"];
var_0 = bot_loadout_choose_values( var_0 );
var_0 = bot_loadout_setup_perks( var_0 );
}
else
{
var_0["loadoutSecondaryAttachment2"] = "none";
if ( !bot_validate_reticle( "loadoutSecondary", var_0, var_0["loadoutSecondaryReticle"] ) )
var_0["loadoutSecondaryReticle"] = "none";
}
}
return var_0;
}
bot_loadout_setup_perks( var_0 )
{
self.pers["loadoutPerks"] = [];
self.pers["specialistBonusStreaks"] = [];
self.pers["specialistStreaks"] = [];
self.pers["specialistStreakKills"] = [];
var_1 = 0;
var_2 = isdefined( var_0["loadoutStreakType"] ) && var_0["loadoutStreakType"] == "streaktype_specialist";
if ( var_2 )
{
var_0["loadoutStreak1"] = "none";
var_0["loadoutStreak2"] = "none";
var_0["loadoutStreak3"] = "none";
}
foreach ( var_8, var_4 in var_0 )
{
if ( var_4 == "specialty_null" || var_4 == "none" )
continue;
if ( getsubstr( var_8, 0, 11 ) == "loadoutPerk" )
{
var_5 = int( getsubstr( var_8, 11 ) );
if ( !var_2 && var_5 > 12 )
continue;
var_6 = maps\mp\_utility::getbaseperkname( var_4 );
if ( var_5 <= 12 )
self.pers["loadoutPerks"][self.pers["loadoutPerks"].size] = var_6;
else if ( var_5 <= 15 )
{
var_0["loadoutStreak" + ( var_1 + 1 )] = var_6 + "_ks";
self.pers["specialistStreaks"][self.pers["specialistStreaks"].size] = var_6 + "_ks";
var_7 = 0;
if ( var_1 > 0 )
var_7 = self.pers["specialistStreakKills"][self.pers["specialistStreakKills"].size - 1];
self.pers["specialistStreakKills"][self.pers["specialistStreakKills"].size] = var_7 + bot_perk_cost( var_6 ) + 2;
var_1++;
}
else
self.pers["specialistBonusStreaks"][self.pers["specialistBonusStreaks"].size] = var_6;
}
}
if ( var_2 && !isdefined( self.pers["specialistStreakKills"][0] ) )
{
self.pers["specialistStreakKills"][0] = 0;
self.pers["specialistStreaks"][0] = "specialty_null";
}
if ( var_2 && !isdefined( self.pers["specialistStreakKills"][1] ) )
{
self.pers["specialistStreakKills"][1] = self.pers["specialistStreakKills"][0];
self.pers["specialistStreaks"][1] = "specialty_null";
}
if ( var_2 && !isdefined( self.pers["specialistStreakKills"][2] ) )
{
self.pers["specialistStreakKills"][2] = self.pers["specialistStreakKills"][1];
self.pers["specialistStreaks"][2] = "specialty_null";
}
return var_0;
}
bot_setup_loadout_callback()
{
var_0 = self botgetpersonality();
var_1 = bot_loadout_get_difficulty();
var_2 = bot_loadout_set( var_0, var_1, 0 );
if ( isdefined( var_2 ) && isdefined( var_2.loadouts ) && var_2.loadouts.size > 0 )
{
self.classcallback = ::bot_loadout_class_callback;
return 1;
}
var_3 = getsubstr( self.name, 0, self.name.size - 10 );
self.classcallback = undefined;
return 0;
}
bot_squad_lookup_private( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
if ( isdefined( var_6 ) )
return var_0 getprivateplayerdata( "privateMatchSquadMembers", var_1, "loadouts", var_2, var_3, var_4, var_5, var_6 );
else if ( isdefined( var_5 ) )
return var_0 getprivateplayerdata( "privateMatchSquadMembers", var_1, "loadouts", var_2, var_3, var_4, var_5 );
else if ( isdefined( var_4 ) )
return var_0 getprivateplayerdata( "privateMatchSquadMembers", var_1, "loadouts", var_2, var_3, var_4 );
else
return var_0 getprivateplayerdata( "privateMatchSquadMembers", var_1, "loadouts", var_2, var_3 );
}
bot_squad_lookup_ranked( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
if ( isdefined( var_6 ) )
return var_0 getrankedplayerdata( "squadMembers", var_1, "loadouts", var_2, var_3, var_4, var_5, var_6 );
else if ( isdefined( var_5 ) )
return var_0 getrankedplayerdata( "squadMembers", var_1, "loadouts", var_2, var_3, var_4, var_5 );
else if ( isdefined( var_4 ) )
return var_0 getrankedplayerdata( "squadMembers", var_1, "loadouts", var_2, var_3, var_4 );
else
return var_0 getrankedplayerdata( "squadMembers", var_1, "loadouts", var_2, var_3 );
}
bot_squad_lookup_enemy( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
if ( isdefined( var_6 ) )
return getenemysquaddata( "squadMembers", var_1, "loadouts", var_2, var_3, var_4, var_5, var_6 );
else if ( isdefined( var_5 ) )
return getenemysquaddata( "squadMembers", var_1, "loadouts", var_2, var_3, var_4, var_5 );
else if ( isdefined( var_4 ) )
return getenemysquaddata( "squadMembers", var_1, "loadouts", var_2, var_3, var_4 );
else
return getenemysquaddata( "squadMembers", var_1, "loadouts", var_2, var_3 );
}
bot_squad_lookup( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
var_7 = ::bot_squad_lookup_ranked;
if ( getdvar( "squad_match" ) == "1" && self.team == "axis" )
var_7 = ::bot_squad_lookup_enemy;
else if ( !maps\mp\_utility::matchmakinggame() )
var_7 = ::bot_squad_lookup_private;
return self [[ var_7 ]]( var_0, var_1, var_2, var_3, var_4, var_5, var_6 );
}
bot_squadmember_lookup( var_0, var_1, var_2 )
{
if ( getdvar( "squad_match" ) == "1" && self.team == "axis" )
return getenemysquaddata( "squadMembers", var_1, var_2 );
else if ( !maps\mp\_utility::matchmakinggame() )
return var_0 getprivateplayerdata( "privateMatchSquadMembers", var_1, var_2 );
else
return var_0 getrankedplayerdata( "squadMembers", var_1, var_2 );
}
bot_loadout_copy_from_client( var_0, var_1, var_2, var_3 )
{
var_0["loadoutPrimary"] = bot_squad_lookup( var_1, var_2, var_3, "weaponSetups", 0, "weapon" );
var_0["loadoutPrimaryAttachment"] = bot_squad_lookup( var_1, var_2, var_3, "weaponSetups", 0, "attachment", 0 );
var_0["loadoutPrimaryAttachment2"] = bot_squad_lookup( var_1, var_2, var_3, "weaponSetups", 0, "attachment", 1 );
var_0["loadoutPrimaryAttachment3"] = bot_squad_lookup( var_1, var_2, var_3, "weaponSetups", 0, "attachment", 2 );
var_0["loadoutPrimaryBuff"] = bot_squad_lookup( var_1, var_2, var_3, "weaponSetups", 0, "buff" );
var_0["loadoutPrimaryCamo"] = bot_squad_lookup( var_1, var_2, var_3, "weaponSetups", 0, "camo" );
var_0["loadoutPrimaryReticle"] = bot_squad_lookup( var_1, var_2, var_3, "weaponSetups", 0, "reticle" );
var_0["loadoutSecondary"] = bot_squad_lookup( var_1, var_2, var_3, "weaponSetups", 1, "weapon" );
var_0["loadoutSecondaryAttachment"] = bot_squad_lookup( var_1, var_2, var_3, "weaponSetups", 1, "attachment", 0 );
var_0["loadoutSecondaryAttachment2"] = bot_squad_lookup( var_1, var_2, var_3, "weaponSetups", 1, "attachment", 1 );
var_0["loadoutSecondaryBuff"] = bot_squad_lookup( var_1, var_2, var_3, "weaponSetups", 1, "buff" );
var_0["loadoutSecondaryCamo"] = bot_squad_lookup( var_1, var_2, var_3, "weaponSetups", 1, "camo" );
var_0["loadoutSecondaryReticle"] = bot_squad_lookup( var_1, var_2, var_3, "weaponSetups", 1, "reticle" );
var_0["loadoutEquipment"] = bot_squad_lookup( var_1, var_2, var_3, "perks", 0 );
var_0["loadoutOffhand"] = bot_squad_lookup( var_1, var_2, var_3, "perks", 1 );
var_0["loadoutStreak1"] = "none";
var_0["loadoutStreak2"] = "none";
var_0["loadoutStreak3"] = "none";
var_4 = bot_squad_lookup( var_1, var_2, var_3, "perks", 5 );
if ( isdefined( var_4 ) )
{
var_0["loadoutStreakType"] = var_4;
if ( var_4 == "streaktype_assault" )
{
var_0["loadoutStreak1"] = bot_squad_lookup( var_1, var_2, var_3, "assaultStreaks", 0 );
var_0["loadoutStreak2"] = bot_squad_lookup( var_1, var_2, var_3, "assaultStreaks", 1 );
var_0["loadoutStreak3"] = bot_squad_lookup( var_1, var_2, var_3, "assaultStreaks", 2 );
}
else if ( var_4 == "streaktype_support" )
{
var_0["loadoutStreak1"] = bot_squad_lookup( var_1, var_2, var_3, "supportStreaks", 0 );
var_0["loadoutStreak2"] = bot_squad_lookup( var_1, var_2, var_3, "supportStreaks", 1 );
var_0["loadoutStreak3"] = bot_squad_lookup( var_1, var_2, var_3, "supportStreaks", 2 );
}
else if ( var_4 == "streaktype_specialist" )
{
var_0["loadoutPerk13"] = bot_squad_lookup( var_1, var_2, var_3, "specialistStreaks", 0 );
var_0["loadoutPerk14"] = bot_squad_lookup( var_1, var_2, var_3, "specialistStreaks", 1 );
var_0["loadoutPerk15"] = bot_squad_lookup( var_1, var_2, var_3, "specialistStreaks", 2 );
}
}
var_5 = 1;
var_6 = maps\mp\gametypes\_class::getnumabilitycategories();
var_7 = maps\mp\gametypes\_class::getnumsubability();
for ( var_8 = 0; var_8 < var_6; var_8++ )
{
for ( var_9 = 0; var_9 < var_7; var_9++ )
{
var_10 = bot_squad_lookup( var_1, var_2, var_3, "abilitiesPicked", var_8, var_9 );
if ( isdefined( var_10 ) && var_10 )
{
var_11 = tablelookup( "mp/cacAbilityTable.csv", 0, var_8 + 1, 4 + var_9 );
var_0["loadoutPerk" + var_5] = var_11;
var_5++;
continue;
}
var_0["loadoutPerk" + var_5] = "specialty_null";
}
}
var_5 = 16;
for ( var_8 = 0; var_8 < var_6; var_8++ )
{
for ( var_9 = 0; var_9 < var_7; var_9++ )
{
var_10 = bot_squad_lookup( var_1, var_2, var_3, "specialistBonusStreaks", var_8, var_9 );
if ( isdefined( var_10 ) && var_10 )
{
var_11 = tablelookup( "mp/cacAbilityTable.csv", 0, var_8 + 1, 4 + var_9 );
var_0["loadoutPerk" + var_5] = var_11;
var_5++;
continue;
}
var_0["loadoutPerk" + var_5] = "specialty_null";
}
}
var_0["loadoutCharacterType"] = bot_squad_lookup( var_1, var_2, var_3, "type" );
bot_pick_personality_from_weapon( var_0["loadoutPrimary"] );
self.playercardpatch = bot_squadmember_lookup( var_1, var_2, "patch" );
self.playercardbackground = bot_squadmember_lookup( var_1, var_2, "background" );
if ( getdvar( "squad_match" ) == "1" && self.team == "axis" )
self.squad_bot_dog_type = getenemysquaddogtype();
else
self.squad_bot_dog_type = var_1 getcommonplayerdatareservedint( "mp_dog_type" );
return var_0;
}
bot_loadout_setup_squad_match( var_0 )
{
var_1 = level.players[0];
foreach ( var_3 in level.players )
{
if ( !isai( var_3 ) && isplayer( var_3 ) )
{
var_1 = var_3;
break;
}
}
var_5 = self.pers["squadSlot"];
var_6 = bot_squadmember_lookup( var_1, var_5, "ai_loadout" );
self.pers["rankxp"] = bot_squadmember_lookup( var_1, var_5, "squadMemXP" );
if ( self.team == "allies" )
{
if ( isdefined( var_1 ) )
{
var_7 = var_1 getrankedplayerdatareservedint( "prestigeLevel" );
self.pers["prestige_fake"] = var_7;
}
}
else if ( self.team == "axis" )
self.pers["prestige_fake"] = getsquadassaultenemyprestige();
var_0 = bot_loadout_copy_from_client( var_0, var_1, var_5, var_6 );
return var_0;
}
bot_loadout_setup_squad_vs_squad_match( var_0 )
{
var_1 = level.squad_vs_squad_allies_client;
if ( self.team == "axis" )
var_1 = level.squad_vs_squad_axis_client;
var_2 = self.pers["squadSlot"];
var_3 = bot_squadmember_lookup( var_1, var_2, "ai_loadout" );
self.pers["rankxp"] = bot_squadmember_lookup( var_1, var_2, "squadMemXP" );
if ( isdefined( var_1 ) )
{
var_4 = var_1 getrankedplayerdatareservedint( "prestigeLevel" );
self.pers["prestige_fake"] = var_4;
}
var_0 = bot_loadout_copy_from_client( var_0, var_1, var_2, var_3 );
return var_0;
}
bot_loadout_setup_wargame_match( var_0 )
{
var_1 = level.wargame_client;
var_2 = self.pers["squadSlot"];
var_3 = bot_squadmember_lookup( var_1, var_2, "ai_loadout" );
self.pers["rankxp"] = bot_squadmember_lookup( var_1, var_2, "squadMemXP" );
if ( isdefined( var_1 ) )
{
var_4 = var_1 getrankedplayerdatareservedint( "prestigeLevel" );
self.pers["prestige_fake"] = var_4;
}
var_0 = bot_loadout_copy_from_client( var_0, var_1, var_2, var_3 );
return var_0;
}