Files
IL-GSC/WW2/PC/ALL/maps/mp/bots/_bots.gsc
2023-10-27 03:49:01 -04:00

2990 lines
55 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\bots\_bots.gsc
* Game: Call of Duty: WWII
* Platform: PC
* Function Count: 107
* Decompile Time: 1911 ms
* Timestamp: 10/27/2023 3:09:11 AM
*******************************************************************/
//Function Number: 1
func_00F9()
{
if(isdefined(level.var_27F6) && level.var_27F6)
{
return;
}
if(getdvarint("4017") == 1)
{
return;
}
if(getdvarint("233") == 1)
{
return;
}
if(function_0367())
{
return;
}
if(isdefined(level.var_585D) && level.var_585D)
{
return;
}
func_87A7();
maps/mp/bots/_bots_personality::func_897D();
level.var_14F6 = ::badplace_cylinder;
level.var_14F7 = ::badplace_delete;
if(isdefined(level.var_1A4F))
{
[[ level.var_1A4F ]]();
}
else
{
maps/mp/bots/_bots_ks::func_1A4E();
}
maps/mp/bots/_bots_loadout::func_D5();
level thread func_00D5();
}
//Function Number: 2
func_87A7()
{
level.var_19D5 = [];
level.var_19D5["bots_spawn"] = ::func_8F88;
level.var_19D5["bots_add_scavenger_bag"] = ::func_192F;
level.var_19D5["bots_add_to_level_targets"] = ::maps/mp/bots/_bots_util::func_1931;
level.var_19D5["bots_remove_from_level_targets"] = ::maps/mp/bots/_bots_util::func_1AB4;
level.var_19D5["bots_make_entity_sentient"] = ::func_1A70;
level.var_19D5["bots_free_entity_sentient"] = ::bot_free_entity_sentient;
level.var_19D5["think"] = ::func_1AFD;
level.var_19D5["on_killed"] = ::func_6A7A;
level.var_19D5["should_do_killcam"] = ::func_1AE2;
level.var_19D5["get_attacker_ent"] = ::maps/mp/bots/_bots_util::func_19F7;
level.var_19D5["should_pickup_weapons"] = ::func_1AE3;
level.var_19D5["on_damaged"] = ::func_1996;
level.var_19D5["gametype_think"] = ::func_2B9C;
level.var_19D5["leader_dialog"] = ::maps/mp/bots/_bots_util::func_1A59;
level.var_19D5["player_spawned"] = ::func_1A9C;
level.var_19D5["should_start_cautious_approach"] = ::maps/mp/bots/_bots_strategy::func_8B7A;
level.var_19D5["know_enemies_on_start"] = ::func_1A52;
level.var_19D5["bot_get_rank_xp_and_prestige"] = ::func_19FE;
level.var_19D5["bot_set_rank_options"] = ::func_1AD6;
level.var_19D5["ai_3d_sighting_model"] = ::func_192A;
level.var_19D5["dropped_weapon_think"] = ::func_1B03;
level.var_19D5["dropped_weapon_cancel"] = ::func_8B80;
level.var_19D5["crate_can_use"] = ::func_2735;
level.var_19D5["post_teleport"] = ::func_1A9E;
level.var_19D5["bot_set_difficulty"] = ::maps/mp/bots/_bots_util::func_1AD3;
level.var_19D5["bot_set_personality"] = ::maps/mp/bots/_bots_util::func_1AD5;
level.var_19D5["bot_think_watch_enemy"] = ::func_1B06;
level.var_19D5["bot_think_tactical_goals"] = ::maps/mp/bots/_bots_strategy::func_1B04;
level.var_19D5["bot_bots_enabled_or_added"] = ::maps/mp/bots/_bots_util::func_194B;
level.var_1AB0 = [];
level.var_1AB0["allies"] = ::maps/mp/bots/_bots_personality::func_1AAF;
level.var_1AB0["axis"] = ::maps/mp/bots/_bots_personality::func_1AAF;
level.var_1AB0["hostile"] = ::maps/mp/bots/_bots_personality::func_1AAF;
level.var_1AB0["neutral"] = ::maps/mp/bots/_bots_personality::func_1AAF;
level.var_19CA["capture"] = ::maps/mp/bots/_bots_strategy::func_3B6F;
level.var_19CA["capture_zone"] = ::maps/mp/bots/_bots_strategy::func_3B70;
level.var_19CA["protect"] = ::maps/mp/bots/_bots_strategy::func_3B72;
level.var_19CA["protect_zone"] = ::maps/mp/bots/_bots_strategy::func_3B73;
level.var_19CA["bodyguard"] = ::maps/mp/bots/_bots_strategy::func_3B6E;
level.var_19CA["patrol"] = ::maps/mp/bots/_bots_strategy::func_3B71;
func_87BF();
maps/mp/bots/_bots_gametype_war::func_87A7();
}
//Function Number: 3
func_87BF()
{
level.var_19D5["crate_low_ammo_check"] = ::func_273D;
level.var_19D5["crate_should_claim"] = ::func_2741;
level.var_19D5["crate_wait_use"] = ::func_2743;
level.var_19D5["crate_in_range"] = ::func_2739;
level.var_1962["deployable_vest"] = ::func_1AE6;
level.var_1962["deployable_ammo"] = ::func_1AE5;
level.var_1962["scavenger_bag"] = ::func_1AE9;
level.var_1962["deployable_grenades"] = ::func_1AE7;
level.var_1962["deployable_juicebox"] = ::func_1AE8;
level.var_1AA2["deployable_ammo"] = ::func_1AA1;
level.var_1AA0["deployable_ammo"] = ::func_1A9F;
}
//Function Number: 4
archived(param_00,param_01)
{
if(isdefined(level.var_19D5) && isdefined(level.var_19D5["leader_dialog"]))
{
self [[ level.var_19D5["leader_dialog"] ]](param_00,param_01);
}
}
//Function Number: 5
func_00D5()
{
thread func_6348();
thread func_1B07();
func_5299();
if(!func_8BA9())
{
return;
}
func_7B8D();
var_00 = botautoconnectenabled();
if(var_00 == "enabled_fill_open" || var_00 == "enabled_fill_open_dev" || level.var_53C7)
{
setmatchdata("match_common","has_bots",1);
level thread func_197E();
return;
}
level thread func_1A81();
}
//Function Number: 6
func_5299()
{
if(!isdefined(level.var_2751))
{
level.var_2751 = 500;
}
if(!isdefined(level.var_274E))
{
level.var_274E = 3000;
}
level.var_1A8C = 3000;
level.var_1AB6["recruit"] = "iw5_maaws";
level.var_1AB6["regular"] = "iw5_maaws";
level.var_1AB6["hardened"] = "iw5_maaws";
level.var_1AB6["veteran"] = "iw5_maaws";
level.var_19C3 = "m1garand_mp";
level.var_AC9C = getzonecount();
func_529A();
}
//Function Number: 7
func_529A()
{
if(isdefined(level.var_98C4))
{
var_00 = [[ level.var_98C4 ]]();
}
else
{
var_00 = getallnodes();
}
level.var_1A75 = 0;
level.var_1A72 = 0;
level.var_1A76 = 0;
level.var_1A73 = 0;
level.var_1A77 = 0;
level.var_1A74 = 0;
if(var_00.size > 1)
{
level.var_1A75 = var_00[0].var_116[0];
level.var_1A72 = var_00[0].var_116[0];
level.var_1A76 = var_00[0].var_116[1];
level.var_1A73 = var_00[0].var_116[1];
level.var_1A77 = var_00[0].var_116[2];
level.var_1A74 = var_00[0].var_116[2];
for(var_01 = 1;var_01 < var_00.size;var_01++)
{
var_02 = var_00[var_01].var_116;
if(var_02[0] < level.var_1A75)
{
level.var_1A75 = var_02[0];
}
if(var_02[0] > level.var_1A72)
{
level.var_1A72 = var_02[0];
}
if(var_02[1] < level.var_1A76)
{
level.var_1A76 = var_02[1];
}
if(var_02[1] > level.var_1A73)
{
level.var_1A73 = var_02[1];
}
if(var_02[2] < level.var_1A77)
{
level.var_1A77 = var_02[2];
}
if(var_02[2] > level.var_1A74)
{
level.var_1A74 = var_02[2];
}
}
}
level.var_1A71 = (level.var_1A75 + level.var_1A72 / 2,level.var_1A76 + level.var_1A73 / 2,level.var_1A77 + level.var_1A74 / 2);
level.var_1B1B = 1;
}
//Function Number: 8
func_1A9E()
{
level.var_1B1B = undefined;
level.var_1A22 = undefined;
func_529A();
maps/mp/bots/_bots_ks_remote_vehicle::func_7C63();
}
//Function Number: 9
func_8BA9()
{
return 1;
}
//Function Number: 10
func_7B8D()
{
wait(1);
foreach(var_01 in level.var_744A)
{
if(isbot(var_01))
{
var_01.var_37F4 = 1;
var_01.var_1AFA = var_01.var_1A7;
var_01.var_1AEE = 1;
var_01 thread [[ level.var_19D5["think"] ]]();
}
}
}
//Function Number: 11
func_1A9C()
{
func_1AD4();
}
//Function Number: 12
func_1AD4()
{
if(!isdefined(self.var_1976))
{
if(!func_19DC())
{
while(!isdefined(level.var_1A6E))
{
wait 0.05;
}
if(isdefined(self.var_6CB8))
{
self.var_1976 = [[ self.var_6CB8 ]]();
return;
}
self.var_1976 = maps/mp/bots/_bots_personality::func_1ADD();
return;
}
self.var_1976 = self.var_2319;
}
}
//Function Number: 13
func_A8DE()
{
for(;;)
{
level waittill("connected",var_00);
if(!isai(var_00) && level.var_744A.size > 0)
{
level.var_744C = common_scripts\utility::func_F6F(level.var_744C,var_00);
childthread func_1B41(var_00);
childthread func_1B40(var_00);
childthread func_1B42(var_00);
}
}
}
//Function Number: 14
func_1B41(param_00)
{
param_00 endon("bots_human_disconnected");
while(!common_scripts\utility::func_F79(level.var_744A,param_00))
{
wait 0.05;
}
param_00 notify("bots_human_spawned");
}
//Function Number: 15
func_1B40(param_00)
{
param_00 endon("bots_human_spawned");
param_00 waittill("disconnect");
param_00 notify("bots_human_disconnected");
}
//Function Number: 16
func_1B42(param_00)
{
param_00 common_scripts\utility::knock_off_battery("bots_human_spawned","bots_human_disconnected");
level.var_744C = common_scripts\utility::func_F93(level.var_744C,param_00);
}
//Function Number: 17
func_632D()
{
level.var_744C = [];
childthread func_A8DE();
for(;;)
{
if(level.var_744C.size > 0)
{
level.var_6F29 = 1;
}
else
{
level.var_6F29 = 0;
}
wait(0.5);
}
}
//Function Number: 18
func_1958(param_00)
{
if(maps\mp\_utility::func_602B())
{
return 1;
}
if(!level.var_984D)
{
return 1;
}
if(maps\mp\gametypes\_teams::func_452D(param_00))
{
return 1;
}
return 0;
}
//Function Number: 19
func_1935()
{
if(isdefined(level.var_1B3B) && level.var_1B3B)
{
return 0;
}
if(isdefined(level.var_6034) && level.var_6034)
{
return 0;
}
return 1;
}
//Function Number: 20
func_197E()
{
level endon("game_ended");
self notify("bot_connect_monitor");
self endon("bot_connect_monitor");
level.var_6F29 = 0;
childthread func_632D();
maps\mp\gametypes\_hostmigration::func_A6F5(0.5);
var_00 = 1.5;
if(!isdefined(level.var_197A))
{
level.var_197A = 0;
}
if(!isdefined(level.var_197B))
{
level.var_197B = 0;
}
if(!isdefined(level.var_1979))
{
level.var_1979 = 0;
}
for(;;)
{
if(level.var_6F29)
{
maps\mp\gametypes\_hostmigration::func_A6F5(var_00);
continue;
}
var_01 = isdefined(level.var_1B3F) || !level.var_984D;
var_02 = botgetteamlimit(0);
var_03 = botgetteamlimit(1);
if(level.var_53C7)
{
var_02 = level.var_80BF;
var_03 = level.var_80C0;
}
var_04 = botgetteamdifficulty(0);
var_05 = botgetteamdifficulty(1);
var_09 = "allies";
if(isdefined(level.var_1A57))
{
var_09 = level.var_1A57;
}
var_0A = "axis";
if(isdefined(level.var_1A58))
{
var_0A = level.var_1A58;
}
var_0B = func_1978();
var_0C = func_2032(var_0B,"humans");
if(var_0C > 1)
{
var_0D = func_19F5();
if(!maps\mp\_utility::func_602B() && isdefined(var_0D) && var_0D != "spectator")
{
var_09 = var_0D;
var_0A = maps\mp\_utility::func_45DE(var_0D);
}
else
{
var_0E = func_2032(var_0B,"humans_allies");
var_0F = func_2032(var_0B,"humans_axis");
if(var_0F > var_0E)
{
var_09 = "axis";
var_0A = "allies";
}
}
}
else
{
var_10 = func_41D2();
if(isdefined(var_10))
{
var_11 = var_10 func_19FD();
if(isdefined(var_11) && var_11 != "spectator")
{
var_09 = var_11;
var_0A = maps\mp\_utility::func_45DE(var_11);
}
}
}
level.var_1A57 = var_09;
level.var_1A58 = var_0A;
var_12 = maps/mp/bots/_bots_util::func_1A02();
var_13 = maps/mp/bots/_bots_util::func_1A02();
var_14 = maps/mp/bots/_bots_util::func_19EE();
if(var_12 + var_13 < var_14)
{
if(var_12 < var_02)
{
var_12++;
}
else if(var_13 < var_03)
{
var_13++;
}
}
var_15 = func_2032(var_0B,"humans_" + var_09);
var_16 = func_2032(var_0B,"humans_" + var_0A);
var_17 = var_15 + var_16;
var_18 = func_2032(var_0B,"spectator");
var_19 = 0;
var_1A = 0;
while(var_18 > 0)
{
var_1B = var_15 + var_19 + 1 <= var_12;
var_1C = var_16 + var_1A + 1 <= var_13;
if(var_1B && !var_1C)
{
var_19++;
continue;
}
if(!var_1B && var_1C)
{
var_1A++;
continue;
}
if(var_1B && var_1C)
{
if(var_18 % 2 == 1)
{
var_19++;
continue;
}
var_1A++;
}
var_18--;
}
var_1D = func_2032(var_0B,"bots_" + var_09);
var_1E = func_2032(var_0B,"bots_" + var_0A);
var_1F = var_1D + var_1E;
if(var_1F > 0)
{
level.var_197A = 1;
}
var_20 = 0;
if(!level.var_1979)
{
var_20 = !func_19F6();
if(!var_20)
{
level.var_1979 = 1;
}
}
if(var_20)
{
var_21 = !function_02A3();
var_22 = var_03 != var_02;
var_23 = !func_19F6() && !var_01 && var_22 && !level.var_197A && level.var_197B < 10 || !maps\mp\_utility::func_3FA0("prematch_done");
var_24 = 0;
if(var_21 || var_23 || var_24)
{
level.var_197B = level.var_197B + var_00;
maps\mp\gametypes\_hostmigration::func_A6F5(var_00);
continue;
}
}
var_25 = int(min(var_12 - var_15 - var_19,var_02));
var_26 = int(min(var_13 - var_16 - var_1A,var_03));
var_27 = 1;
var_28 = var_25 + var_26 + var_0C;
var_29 = var_02 + var_03 + var_0C;
var_2A = [-1,-1];
while(var_28 < var_14 && var_28 < var_29)
{
if(var_27 && var_25 < var_02 && func_1958(var_09))
{
var_25++;
}
else if(!var_27 && var_26 < var_03 && func_1958(var_0A))
{
var_26++;
}
var_28 = var_25 + var_26 + var_0C;
if(var_2A[var_27] == var_28)
{
break;
}
var_2A[var_27] = var_28;
var_27 = !var_27;
}
level.var_1A79[var_09] = int(var_25 + var_15 + var_19);
level.var_1A79[var_0A] = int(var_26 + var_16 + var_1A);
func_A0AF();
if(var_02 == var_03 && !var_01 && var_19 == 1 && var_1A == 0 && var_26 > 0)
{
if(!isdefined(level.var_1AA3) && maps\mp\_utility::func_3FA0("prematch_done"))
{
level.var_1AA3 = gettime();
}
if(var_20 && !isdefined(level.var_1AA3) || gettime() - level.var_1AA3 < 10000)
{
var_26--;
}
}
var_2C = var_25 - var_1D;
var_2D = var_26 - var_1E;
var_2E = 1;
if(var_01)
{
var_2F = var_12 + var_13;
var_30 = var_02 + var_03;
var_31 = var_15 + var_16;
var_32 = var_1D + var_1E;
var_33 = int(min(var_2F - var_31,var_30));
var_34 = var_33 - var_32;
if(var_34 == 0)
{
var_2E = 0;
}
else if(var_34 > 0)
{
var_2C = int(var_34 / 2) + var_34 % 2;
var_2D = int(var_34 / 2);
}
else if(var_34 < 0)
{
var_35 = var_34 * -1;
var_2C = -1 * int(min(var_35,var_1D));
var_2D = -1 * var_35 + var_2C;
}
}
else if(!maps\mp\_utility::func_602B() && var_2C * var_2D < 0 && maps\mp\_utility::func_3FA0("prematch_done") && func_1935())
{
var_36 = int(min(abs(var_2C),abs(var_2D)));
if(var_2C > 0)
{
func_6475(var_36,var_0A,var_09,var_04);
}
else if(var_2D > 0)
{
func_6475(var_36,var_09,var_0A,var_05);
}
var_2E = 0;
}
if(var_2E)
{
if(var_2D < 0)
{
func_3447(var_2D * -1,var_0A);
}
if(var_2C < 0)
{
func_3447(var_2C * -1,var_09);
}
if(var_2D > 0)
{
level thread func_8F88(var_2D,var_0A,undefined,undefined,"spawned_enemies",var_05);
}
if(var_2C > 0)
{
level thread func_8F88(var_2C,var_09,undefined,undefined,"spawned_allies",var_04);
}
if(var_2D > 0 && var_2C > 0)
{
level common_scripts\utility::func_A746("spawned_enemies","spawned_allies");
}
else if(var_2D > 0)
{
level waittill("spawned_enemies");
}
else if(var_2C > 0)
{
level waittill("spawned_allies");
}
}
if(var_05 != var_04)
{
func_1B43(var_0A,var_05);
func_1B43(var_09,var_04);
}
maps\mp\gametypes\_hostmigration::func_A6F5(var_00);
}
}
//Function Number: 21
func_1A81()
{
level endon("game_ended");
self notify("bot_monitor_team_limits");
self endon("bot_monitor_team_limits");
maps\mp\gametypes\_hostmigration::func_A6F5(0.5);
var_00 = 1.5;
for(;;)
{
level.var_1A79["allies"] = 0;
level.var_1A79["axis"] = 0;
foreach(var_02 in level.var_744A)
{
if(isdefined(var_02.var_1A7) && var_02.var_1A7 == "allies" || var_02.var_1A7 == "axis")
{
level.var_1A79[var_02.var_1A7]++;
}
}
func_A0AF();
maps\mp\gametypes\_hostmigration::func_A6F5(var_00);
}
}
//Function Number: 22
func_A0AF()
{
if(isdefined(level.var_A4E))
{
foreach(var_01 in level.var_A4E)
{
if(isdefined(var_01.var_565F) && var_01.var_565F)
{
if(maps\mp\_utility::func_5800(var_01) && isdefined(var_01.var_1A7) && var_01.var_1A7 == "allies" || var_01.var_1A7 == "axis")
{
level.var_1A79[var_01.var_1A7]++;
}
}
}
}
}
//Function Number: 23
func_19FD()
{
if(isdefined(self.var_1A7))
{
return self.var_1A7;
}
if(isdefined(self.var_12C["team"]))
{
return self.var_12C["team"];
}
return undefined;
}
//Function Number: 24
func_19F5()
{
foreach(var_01 in level.var_744A)
{
if(!isai(var_01) && var_01 ishost())
{
return var_01 func_19FD();
}
}
return "spectator";
}
//Function Number: 25
func_19F6()
{
var_00 = 0;
var_01 = 0;
var_02 = 0;
foreach(var_04 in level.var_744A)
{
if(!isai(var_04))
{
if(var_04 ishost())
{
var_00 = 1;
}
if(func_72FA(var_04))
{
var_01 = 1;
if(var_04 ishost())
{
var_02 = 1;
}
}
}
}
return var_02 || var_01 && !var_00;
}
//Function Number: 26
func_72FA(param_00)
{
if(isdefined(param_00.var_1A7) && param_00.var_1A7 != "spectator")
{
return 1;
}
if(isdefined(param_00.var_90E3) && param_00.var_90E3)
{
return 1;
}
if(param_00 method_8436())
{
return 1;
}
return 0;
}
//Function Number: 27
bot_get_human_picked_class()
{
var_00 = 0;
var_01 = 0;
var_02 = 0;
foreach(var_04 in level.var_744A)
{
if(!isai(var_04))
{
if(var_04 ishost())
{
var_00 = 1;
}
if(isdefined(var_04.var_2319))
{
var_01 = 1;
if(var_04 ishost())
{
var_02 = 1;
}
}
}
}
return var_02 || var_01 && !var_00;
}
//Function Number: 28
func_1978()
{
var_00 = [];
for(var_01 = 0;var_01 < level.var_744A.size;var_01++)
{
var_02 = level.var_744A[var_01];
if(isdefined(var_02) && isdefined(var_02.var_1A7))
{
var_00 = func_2031(var_00,"all");
var_00 = func_2031(var_00,var_02.var_1A7);
if(isbot(var_02))
{
var_00 = func_2031(var_00,"bots");
var_00 = func_2031(var_00,"bots_" + var_02.var_1A7);
continue;
}
var_00 = func_2031(var_00,"humans");
var_00 = func_2031(var_00,"humans_" + var_02.var_1A7);
}
}
return var_00;
}
//Function Number: 29
func_2031(param_00,param_01)
{
if(!isdefined(param_00))
{
param_00 = [];
}
if(!isdefined(param_00[param_01]))
{
param_00[param_01] = 0;
}
param_00[param_01] = param_00[param_01] + 1;
return param_00;
}
//Function Number: 30
func_2032(param_00,param_01)
{
if(!isdefined(param_00))
{
return 0;
}
if(!isdefined(param_00[param_01]))
{
return 0;
}
return param_00[param_01];
}
//Function Number: 31
func_6475(param_00,param_01,param_02,param_03)
{
foreach(var_05 in level.var_744A)
{
if(!isdefined(var_05.var_1A7))
{
continue;
}
if(isdefined(var_05.var_2582) && var_05.var_2582 && isbot(var_05) && var_05.var_1A7 == param_01)
{
var_05.var_1AFA = param_02;
if(isdefined(param_03))
{
var_05 maps/mp/bots/_bots_util::func_1AD3(param_03);
}
var_05 notify("luinotifyserver","team_select",func_1A6F(param_02));
wait 0.05;
var_05 notify("luinotifyserver","class_select",var_05.var_1976);
param_00--;
if(param_00 <= 0)
{
break;
}
else
{
wait(0.1);
}
}
}
}
//Function Number: 32
func_1B43(param_00,param_01)
{
foreach(var_03 in level.var_744A)
{
if(!isdefined(var_03.var_1A7))
{
continue;
}
if(isdefined(var_03.var_2582) && var_03.var_2582 && isbot(var_03) && var_03.var_1A7 == param_00)
{
if(param_01 != var_03 botgetdifficulty())
{
var_03 maps/mp/bots/_bots_util::func_1AD3(param_01);
}
}
}
}
//Function Number: 33
func_19BB()
{
kick(self.var_37CD,"EXE_PLAYERKICKED_BOT_BALANCE");
wait(0.1);
}
//Function Number: 34
func_3447(param_00,param_01)
{
var_02 = [];
foreach(var_04 in level.var_744A)
{
if(isdefined(var_04.var_2582) && var_04.var_2582 && isbot(var_04) && !isdefined(param_01) || isdefined(var_04.var_1A7) && var_04.var_1A7 == param_01)
{
var_02[var_02.size] = var_04;
}
}
for(var_06 = var_02.size - 1;var_06 >= 0;var_06--)
{
if(param_00 <= 0)
{
break;
}
if(!maps\mp\_utility::func_57A0(var_02[var_06]))
{
var_02[var_06] func_19BB();
var_02 = common_scripts\utility::func_F93(var_02,var_02[var_06]);
param_00--;
}
}
for(var_06 = var_02.size - 1;var_06 >= 0;var_06--)
{
if(param_00 <= 0)
{
break;
}
var_02[var_06] func_19BB();
param_00--;
}
}
//Function Number: 35
func_1A6F(param_00)
{
if(param_00 == "axis")
{
return 0;
}
if(param_00 == "allies")
{
return 1;
}
if(param_00 == "autoassign" || param_00 == "random")
{
return 2;
}
return 3;
}
//Function Number: 36
func_8F87(param_00,param_01,param_02)
{
var_03 = gettime() + -5536;
while(!self canspawntestclient())
{
if(gettime() >= var_03)
{
kick(self.var_37CD,"EXE_PLAYERKICKED_BOT_BALANCE");
param_02.var_843 = 1;
return;
}
wait 0.05;
if(!isdefined(self))
{
param_02.var_843 = 1;
return;
}
}
maps\mp\gametypes\_hostmigration::func_A6F5(randomfloatrange(0.25,2));
if(!isdefined(self))
{
param_02.var_843 = 1;
return;
}
self spawntestclient();
self.var_37F4 = 1;
self.var_1AFA = param_00;
if(isdefined(param_02.var_2F05))
{
maps/mp/bots/_bots_util::func_1AD3(param_02.var_2F05);
}
if(isdefined(param_01))
{
self [[ param_01 ]]();
}
self thread [[ level.var_19D5["think"] ]]();
param_02.var_7ABD = 1;
}
//Function Number: 37
func_8F88(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = gettime() + 10000;
var_07 = [];
var_08 = var_07.size;
while(level.var_744A.size < maps/mp/bots/_bots_util::func_19EE() && var_07.size < param_00 && gettime() < var_06)
{
maps\mp\gametypes\_hostmigration::func_A6F5(0.05);
var_09 = addbot("",param_01);
if(!isdefined(var_09))
{
if(isdefined(param_03) && param_03)
{
if(isdefined(param_04))
{
self notify(param_04);
}
return;
}
maps\mp\gametypes\_hostmigration::func_A6F5(1);
continue;
}
else
{
var_0A = spawnstruct();
var_0A.var_1929 = var_09;
var_0A.var_7ABD = 0;
var_0A.var_843 = 0;
var_0A.var_D4 = var_08;
var_0A.var_2F05 = param_05;
var_07[var_07.size] = var_0A;
var_0A.var_1929 thread func_8F87(param_01,param_02,var_0A);
var_08++;
}
}
var_0B = 0;
var_06 = gettime() + -5536;
while(var_0B < var_07.size && gettime() < var_06)
{
var_0B = 0;
foreach(var_0A in var_07)
{
if(var_0A.var_7ABD || var_0A.var_843)
{
var_0B++;
}
}
wait 0.05;
}
if(isdefined(param_04))
{
self notify(param_04);
}
}
//Function Number: 38
func_19DD()
{
if(maps\mp\_utility::func_602B() && self.var_179 != "none")
{
var_00 = 0;
}
else if(!maps\mp\_utility::func_602B() && maps\mp\_utility::func_C2D())
{
var_00 = 1;
}
else
{
var_00 = 0;
}
return !var_00;
}
//Function Number: 39
func_19DC()
{
return isdefined(level.var_1B3D) && level.var_1B3D;
}
//Function Number: 40
func_1AFD()
{
self notify("bot_think");
self endon("bot_think");
self endon("disconnect");
while(!isdefined(self.var_12C["team"]))
{
wait 0.05;
}
level.var_4B58 = 1;
if(func_19DD())
{
self.var_1AFA = self.var_12C["team"];
}
var_00 = self.var_1AFA;
if(!isdefined(var_00))
{
var_00 = self.var_12C["team"];
}
self.var_37CD = self getentitynumber();
var_01 = 0;
if(!isdefined(self.var_1AEE))
{
var_01 = 1;
self.var_1AEE = 1;
if(!func_19DD())
{
var_02 = self.var_12C["team"] != "spectator" && !isdefined(self.var_1AFA);
if(!var_02)
{
self notify("luinotifyserver","team_select",func_1A6F(var_00));
wait(0.5);
if(self.var_12C["team"] == "spectator")
{
func_19BB();
return;
}
}
}
}
for(;;)
{
maps/mp/bots/_bots_util::func_1AD3(self botgetdifficulty());
self.var_2F05 = self botgetdifficulty();
var_03 = self botgetdifficultysetting("advancedPersonality");
if(var_01 && isdefined(var_03) && var_03 != 0)
{
maps/mp/bots/_bots_personality::func_193F();
}
maps/mp/bots/_bots_personality::func_1939();
if(var_01)
{
if(isdefined(level.var_19D5) && isdefined(level.var_19D5["class_select_override"]))
{
self [[ level.var_19D5["class_select_override"] ]]();
}
else
{
func_1AD4();
if(!func_19DC())
{
if(isdefined(self.var_2589) && self.var_2589 == gettime())
{
waittillframeend;
waittillframeend;
}
if(maps\mp\_utility::isprophuntgametype() && var_00 == game["attackers"] && game["roundsPlayed"] > 0)
{
wait(0.5);
}
self notify("luinotifyserver","class_select",self.var_1976);
}
}
if(self.var_BC == 0)
{
self waittill("spawned_player");
}
if(isdefined(level.var_19D5) && isdefined(level.var_19D5["know_enemies_on_start"]))
{
self thread [[ level.var_19D5["know_enemies_on_start"] ]]();
}
var_01 = 0;
}
maps/mp/bots/_bots_loadout::func_1A7E();
func_1A7F();
func_1AB7();
wait(0.1);
self waittill("death");
if(isdefined(level.var_19D5) && isdefined(level.var_19D5["post_death_func"]))
{
self [[ level.var_19D5["post_death_func"] ]]();
}
func_7DB1();
self waittill("spawned_player");
}
}
//Function Number: 41
func_1AD6()
{
}
//Function Number: 42
func_1A7F()
{
if(maps\mp\gametypes\_tweakables::func_46F7("game","onlyheadshots"))
{
self botsetflag("only_headshots",1);
}
}
//Function Number: 43
func_7DB1()
{
self endon("started_spawnPlayer");
while(!self.var_A6F0)
{
wait 0.05;
}
if(maps\mp\gametypes\_playerlogic::func_664E())
{
while(self.var_A6F0)
{
if(self.var_178 == "spectator")
{
if(getdvarint("numlives") == 0 || self.var_12C["lives"] > 0)
{
self botpressbutton("use",0.5);
}
}
wait(1);
}
}
}
//Function Number: 44
func_1A39()
{
return self method_837F();
}
//Function Number: 45
func_19FE()
{
var_00 = spawnstruct();
if(!func_1A39())
{
if(!isdefined(self.var_12C["rankxp"]))
{
self.var_12C["rankxp"] = 0;
}
if(!isdefined(self.var_12C["prestige"]))
{
self.var_12C["prestige"] = 0;
}
var_00.var_7A6D = self.var_12C["rankxp"];
var_00.var_76B0 = self.var_12C["prestige"];
return var_00;
}
var_01 = self botgetdifficulty();
var_02 = "bot_rank_" + var_01;
var_03 = "bot_prestige_" + var_01;
var_04 = self.var_12C[var_02];
var_05 = self.var_12C[var_03];
var_06 = undefined;
if(isdefined(var_04))
{
var_00.var_7A6D = var_04;
}
else
{
if(!isdefined(var_06))
{
var_06 = func_1AB1(var_01);
}
var_07 = var_06["rank"];
var_08 = maps\mp\gametypes\_rank::func_4658(var_07);
var_09 = maps\mp\gametypes\_rank::func_4657(var_07);
var_0A = randomintrange(var_08,var_09);
self.var_12C[var_02] = var_0A;
var_00.var_7A6D = var_0A;
}
if(isdefined(var_05))
{
var_00.var_76B0 = var_05;
}
else
{
if(!isdefined(var_06))
{
var_06 = func_1AB1(var_01);
}
var_0B = var_06["prestige"];
self.var_12C[var_03] = var_0B;
var_00.var_76B0 = var_0B;
}
return var_00;
}
//Function Number: 46
func_192A(param_00)
{
thread func_192B(param_00);
}
//Function Number: 47
func_192B(param_00)
{
param_00 endon("disconnect");
self endon("disconnect");
level endon("game_ended");
for(;;)
{
if(isalive(self) && !self method_8371(param_00) && common_scripts\utility::func_AA4A(self.var_116,self getangles(),param_00.var_116,self method_8375()))
{
self method_8379(param_00,param_00.var_116);
}
wait(0.1);
}
}
//Function Number: 48
func_1AB1(param_00)
{
var_01 = [];
var_01["rank"] = 0;
var_01["prestige"] = 0;
if(param_00 == "default")
{
return var_01;
}
if(!isdefined(level.var_1ABA))
{
level.var_1ABA = [];
level.var_1ABA["recruit"][0] = 0;
level.var_1ABA["recruit"][1] = 1;
level.var_1ABA["regular"][0] = 20;
level.var_1ABA["regular"][1] = 28;
level.var_1ABA["hardened"][0] = 40;
level.var_1ABA["hardened"][1] = 48;
level.var_1ABA["veteran"][0] = 50;
level.var_1ABA["veteran"][1] = 54;
}
if(!isdefined(level.var_1AB9))
{
level.var_1AB9 = [];
level.var_1AB9["recruit"][0] = 0;
level.var_1AB9["recruit"][1] = 0;
level.var_1AB9["regular"][0] = 0;
level.var_1AB9["regular"][1] = 0;
level.var_1AB9["hardened"][0] = 0;
level.var_1AB9["hardened"][1] = 0;
level.var_1AB9["veteran"][0] = 0;
level.var_1AB9["veteran"][1] = 9;
}
var_01["rank"] = randomintrange(level.var_1ABA[param_00][0],level.var_1ABA[param_00][1] + 1);
var_01["prestige"] = randomintrange(level.var_1AB9[param_00][0],level.var_1AB9[param_00][1] + 1);
return var_01;
}
//Function Number: 49
func_2735(param_00)
{
if(function_01EF(self) && !isdefined(param_00.var_1B7B))
{
return 0;
}
return 1;
}
//Function Number: 50
func_41D2()
{
var_00 = undefined;
var_01 = getentarray("player","classname");
if(isdefined(var_01))
{
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
if(isdefined(var_01[var_02]) && isdefined(var_01[var_02].var_2582) && var_01[var_02].var_2582 && !isai(var_01[var_02]) && !isdefined(var_00) || var_00.var_1A7 == "spectator")
{
var_00 = var_01[var_02];
}
}
}
return var_00;
}
//Function Number: 51
func_1996(param_00,param_01,param_02,param_03,param_04,param_05)
{
if(!isdefined(self) || !isalive(self))
{
return;
}
if(param_02 == "MOD_FALLING" || param_02 == "MOD_SUICIDE")
{
return;
}
if(param_01 <= 0)
{
return;
}
if(!isdefined(param_04))
{
if(!isdefined(param_00))
{
return;
}
param_04 = param_00;
}
if(isdefined(param_04))
{
if(level.var_984D)
{
if(isdefined(param_04.var_1A7) && param_04.var_1A7 == self.var_1A7)
{
return;
}
else if(isdefined(param_00) && isdefined(param_00.var_1A7) && param_00.var_1A7 == self.var_1A7)
{
return;
}
}
var_06 = maps/mp/bots/_bots_util::func_19F7(param_00,param_04);
if(isdefined(var_06))
{
self method_835B(var_06);
}
}
if(function_01EF(self))
{
self notify("agentDamage");
}
}
//Function Number: 52
func_6A7A(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
self method_835A();
self method_8358();
var_0A = maps/mp/bots/_bots_util::func_19F7(param_01,param_00);
if(isdefined(var_0A) && var_0A.var_3A == "misc_turret" && isdefined(var_0A.var_2210))
{
var_0A = var_0A.var_2210;
}
if(isdefined(var_0A) && (var_0A.var_3A == "script_vehicle" || var_0A.var_3A == "script_model") && isdefined(var_0A.var_4C9E))
{
var_0B = self botgetdifficultysetting("launcherRespawnChance");
if(randomfloat(1) < var_0B)
{
self.var_7DB2 = 1;
}
}
}
//Function Number: 53
func_1AE2()
{
var_05 = 0;
var_06 = self botgetdifficulty();
if(var_06 == "recruit")
{
var_05 = 0.1;
}
else if(var_06 == "regular")
{
var_05 = 0.4;
}
else if(var_06 == "hardened")
{
var_05 = 0.7;
}
else if(var_06 == "veteran")
{
var_05 = 1;
}
return randomfloat(1) < 1 - var_05;
}
//Function Number: 54
func_1AE3()
{
return 1;
}
//Function Number: 55
func_1AB7()
{
self thread [[ level.var_19D5["bot_think_watch_enemy"] ]]();
self thread [[ level.var_19D5["bot_think_tactical_goals"] ]]();
self thread [[ level.var_19D5["dropped_weapon_think"] ]]();
if(!level.var_53C7)
{
thread func_1AFE();
thread func_1AFF();
}
if(maps\mp\_utility::func_F5C())
{
thread maps/mp/bots/_bots_ks::func_1B01();
thread maps/mp/bots/_bots_ks::func_1B05();
}
thread func_1B00();
}
//Function Number: 56
func_1B06(param_00)
{
var_01 = "spawned_player";
if(isdefined(param_00) && param_00)
{
var_01 = "death";
}
self notify("bot_think_watch_enemy");
self endon("bot_think_watch_enemy");
self endon(var_01);
self endon("disconnect");
level endon("game_ended");
self.var_5B21 = 0;
for(;;)
{
if(isdefined(self.var_88))
{
if(self method_8371(self.var_88))
{
self.var_5B21 = gettime();
}
}
wait 0.05;
}
}
//Function Number: 57
func_1B03()
{
self notify("bot_think_seek_dropped_weapons");
self endon("bot_think_seek_dropped_weapons");
self endon("death");
self endon("disconnect");
level endon("game_ended");
for(;;)
{
var_00 = 0;
if(maps/mp/bots/_bots_util::func_1A8B())
{
if(self [[ level.var_19D5["should_pickup_weapons"] ]]() && !maps/mp/bots/_bots_util::func_1A36())
{
var_01 = getentarray("dropped_weapon","targetname");
var_02 = common_scripts\utility::func_40B0(self.var_116,var_01);
if(var_02.size > 0)
{
var_03 = var_02[0];
func_1AC1(var_03);
}
}
}
wait(randomfloatrange(0.25,0.75));
}
}
//Function Number: 58
func_1AC1(param_00)
{
if(maps/mp/bots/_bots_strategy::func_1A14("seek_dropped_weapon",param_00) == 0)
{
var_01 = undefined;
if(param_00.var_1A5 == "dropped_weapon")
{
var_02 = 1;
var_03 = self getweaponslistprimaries();
foreach(var_05 in var_03)
{
if(param_00.var_106 == getweaponmodel(var_05))
{
var_02 = 0;
}
}
if(var_02)
{
var_01 = ::func_1A9B;
}
}
var_07 = spawnstruct();
var_07.var_68FB = param_00;
var_07.var_81C8 = 12;
var_07.var_8B3E = level.var_19D5["dropped_weapon_cancel"];
var_07.var_87F = var_01;
maps/mp/bots/_bots_strategy::func_1A85("seek_dropped_weapon",param_00.var_116,100,var_07);
}
}
//Function Number: 59
func_1A9B(param_00)
{
self botpressbutton("use",2);
wait(2);
}
//Function Number: 60
func_8B80(param_00)
{
if(!isdefined(param_00.var_68FB))
{
return 1;
}
if(param_00.var_68FB.var_1A5 == "dropped_weapon")
{
if(maps/mp/bots/_bots_util::func_1A07() > 0)
{
return 1;
}
}
else if(param_00.var_68FB.var_1A5 == "dropped_knife")
{
if(maps/mp/bots/_bots_util::func_1A1C())
{
self.var_4813 = undefined;
return 1;
}
}
return 0;
}
//Function Number: 61
func_2739(param_00)
{
if(!isdefined(param_00.var_117) || param_00.var_117 != self)
{
if(distancesquared(self.var_116,param_00.var_116) > 4194304)
{
return 0;
}
}
return 1;
}
//Function Number: 62
func_1982(param_00)
{
if(!isdefined(param_00))
{
return 0;
}
if(!self [[ level.var_19D5["crate_can_use"] ]](param_00))
{
return 0;
}
if(!func_273B(param_00))
{
return 0;
}
if(level.var_984D && isdefined(param_00.var_18B3) && isdefined(param_00.var_1A7) && param_00.var_1A7 == self.var_1A7)
{
return 0;
}
if(!self [[ level.var_19D5["crate_in_range"] ]](param_00))
{
return 0;
}
if(isdefined(param_00.var_1B7B))
{
if(isdefined(level.var_1B79) && isdefined(level.var_1B79[param_00.var_1B7B]) && ![[ level.var_1B79[param_00.var_1B7B].var_1F7A ]]())
{
return 0;
}
if(isdefined(param_00.var_2F75) && isdefined(param_00.var_2F75[self getentitynumber()]) && param_00.var_2F75[self getentitynumber()])
{
return 0;
}
if(!self [[ level.var_1962[param_00.var_1B7B] ]](param_00))
{
return 0;
}
}
else if(func_1A13(param_00))
{
return 0;
}
return isdefined(param_00);
}
//Function Number: 63
func_1A13(param_00)
{
if(isdefined(param_00.var_944E) && isdefined(self.var_12C["killstreaks"]))
{
foreach(var_02 in self.var_12C["killstreaks"])
{
if(common_scripts\utility::func_562E(var_02.var_5703) && isdefined(var_02.var_944C) && var_02.var_944C == param_00.var_944E)
{
return 1;
}
}
}
return 0;
}
//Function Number: 64
func_273B(param_00)
{
if(!func_2738(param_00))
{
return 0;
}
if(!func_273A(param_00))
{
return 0;
}
return isdefined(param_00);
}
//Function Number: 65
func_2738(param_00)
{
if(isdefined(param_00.var_1B7B))
{
return gettime() > param_00.alignx + 1000;
}
return isdefined(param_00.var_34A3) && !param_00.var_34A3;
}
//Function Number: 66
func_273A(param_00)
{
if(!isdefined(param_00.var_6AA9))
{
func_2733(param_00);
}
return isdefined(param_00) && param_00.var_6AA9;
}
//Function Number: 67
func_6717(param_00,param_01)
{
if(isdefined(param_01.var_1B7B) && param_01.var_1B7B == "scavenger_bag")
{
return abs(param_00.var_116[0] - param_01.var_116[0]) < 36 && abs(param_00.var_116[0] - param_01.var_116[0]) < 36 && abs(param_00.var_116[0] - param_01.var_116[0]) < 18;
}
var_02 = getdvarfloat("2098");
var_03 = distancesquared(param_01.var_116,param_00.var_116 + (0,0,40));
return var_03 <= var_02 * var_02;
}
//Function Number: 68
func_2733(param_00)
{
param_00 thread func_273E();
param_00.var_6AA9 = 0;
var_01 = undefined;
var_02 = undefined;
if(isdefined(param_00.var_3E18))
{
var_01 = param_00.var_3E18;
var_02 = gettime() + 30000;
param_00.var_3E18 = var_02;
param_00 notify("path_disconnect");
}
wait 0.05;
if(!isdefined(param_00))
{
return;
}
var_03 = [];
var_03 = func_2737(param_00);
if(!isdefined(param_00))
{
return;
}
if(isdefined(var_03) && var_03.size > 0)
{
param_00.var_663A = var_03;
param_00.var_6AA9 = 1;
}
else
{
var_04 = getdvarfloat("2098");
var_05 = getnodesinradiussorted(param_00.var_116,var_04 * 2,0)[0];
var_06 = param_00 method_8216(0,0,-1);
var_07 = undefined;
if(isdefined(param_00.var_1B7B) && param_00.var_1B7B == "scavenger_bag")
{
if(maps/mp/bots/_bots_util::func_1A9D(param_00.var_116))
{
var_07 = param_00.var_116;
}
}
else
{
var_07 = botgetclosestnavigablepoint(param_00.var_116,var_04);
}
if(isdefined(var_05) && !var_05 method_8389() && isdefined(var_07) && abs(var_05.var_116[2] - var_06[2]) < 30)
{
param_00.var_663B = [var_07];
param_00.var_663A = [var_05];
param_00.var_6AA9 = 1;
}
}
if(isdefined(param_00.var_3E18))
{
if(param_00.var_3E18 == var_02)
{
param_00.var_3E18 = var_01;
}
}
}
//Function Number: 69
func_2737(param_00)
{
var_01 = getnodesinradiussorted(param_00.var_116,256,0);
for(var_02 = var_01.size;var_02 > 0;var_02--)
{
var_01[var_02] = var_01[var_02 - 1];
}
var_01[0] = function_00BA(param_00.var_116);
var_03 = undefined;
if(isdefined(param_00.var_3E18))
{
var_03 = getallnodes();
}
var_04 = [];
var_05 = 1;
if(!isdefined(param_00.var_1B7B))
{
var_05 = 2;
}
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
var_06 = var_01[var_02];
if(!isdefined(var_06) || !isdefined(param_00))
{
continue;
}
if(var_06 method_8389())
{
continue;
}
if(!func_6717(var_06,param_00))
{
if(var_02 == 0)
{
continue;
}
else
{
break;
}
}
wait 0.05;
if(!isdefined(param_00))
{
break;
}
if(sighttracepassed(param_00.var_116,var_06.var_116 + (0,0,55),0,param_00))
{
wait 0.05;
if(!isdefined(param_00))
{
break;
}
if(!isdefined(param_00.var_3E18))
{
var_04[var_04.size] = var_06;
if(var_04.size == var_05)
{
return var_04;
}
else
{
continue;
}
}
var_07 = undefined;
var_08 = 0;
while(!isdefined(var_07) && var_08 < 100)
{
var_08++;
var_09 = common_scripts\utility::func_7A33(var_03);
if(distancesquared(var_06.var_116,var_09.var_116) > 250000)
{
var_07 = var_09;
}
}
if(isdefined(var_07))
{
var_0A = maps/mp/bots/_bots_util::func_1AA8("GetNodesOnPathCrate",::maps/mp/bots/_bots_util::func_3F07,var_06.var_116,var_07.var_116);
if(isdefined(var_0A))
{
var_04[var_04.size] = var_06;
if(var_04.size == var_05)
{
return var_04;
}
else
{
continue;
}
}
}
}
}
return undefined;
}
//Function Number: 70
func_2736(param_00)
{
if(isdefined(param_00.var_663B))
{
return param_00.var_663B[0];
}
if(isdefined(param_00.var_663A) && param_00.var_663A.size > 0)
{
var_01 = common_scripts\utility::func_FA2(self method_8382(param_00.var_663A,"node_exposed"));
return common_scripts\utility::func_7A46(var_01).var_116;
}
}
//Function Number: 71
func_1AFE()
{
self notify("bot_think_crate");
self endon("bot_think_crate");
self endon("death");
self endon("disconnect");
level endon("game_ended");
var_00 = getdvarfloat("2098");
for(;;)
{
var_01 = randomfloatrange(2,4);
common_scripts\utility::func_A74B("new_crate_to_take",var_01);
if(isdefined(self.var_1B75) && self.var_1B75.size == 0)
{
self.var_1B75 = undefined;
}
var_02 = level.var_1FFD;
if(!maps/mp/bots/_bots_util::func_1A1C() && isdefined(self.var_1B75))
{
var_02 = common_scripts\utility::func_F73(var_02,self.var_1B75);
}
if(isdefined(level.var_1ABB) && maps\mp\_utility::func_649("specialty_scavenger"))
{
var_02 = common_scripts\utility::func_F73(var_02,level.var_1ABB);
}
var_02 = common_scripts\utility::func_FA0(var_02);
if(var_02.size == 0)
{
continue;
}
if(maps/mp/bots/_bots_strategy::func_1A14("airdrop_crate") || self method_835F() == "tactical" || maps/mp/bots/_bots_util::func_1A36())
{
continue;
}
var_03 = [];
foreach(var_05 in var_02)
{
if(func_1982(var_05))
{
var_03[var_03.size] = var_05;
}
}
var_03 = common_scripts\utility::func_F97(var_03);
if(var_03.size == 0)
{
continue;
}
var_03 = common_scripts\utility::func_40B0(self.var_116,var_03);
var_07 = self getnearestnode();
if(!isdefined(var_07))
{
continue;
}
var_08 = self [[ level.var_19D5["crate_low_ammo_check"] ]]();
var_09 = (var_08 || randomint(100) < 50) && !maps\mp\_utility::func_56D7();
var_0A = undefined;
foreach(var_05 in var_03)
{
var_0C = 0;
if((!isdefined(var_05.var_117) || var_05.var_117 != self) && !isdefined(var_05.var_1B7B))
{
var_0D = [];
foreach(var_0F in level.var_744A)
{
if(!isdefined(var_0F.var_1A7))
{
continue;
}
if(!isai(var_0F) && level.var_984D && var_0F.var_1A7 == self.var_1A7)
{
if(distancesquared(var_0F.var_116,var_05.var_116) < 490000)
{
var_0D[var_0D.size] = var_0F;
}
}
}
if(var_0D.size > 0)
{
var_11 = var_0D[0] getnearestnode();
if(isdefined(var_11))
{
var_0C = 0;
foreach(var_13 in var_05.var_663A)
{
var_0C = var_0C | function_01F4(var_11,var_13,1);
}
}
}
}
if(!var_0C)
{
var_15 = isdefined(var_05.var_1B39) && isdefined(var_05.var_1B39[self.var_1A7]) && var_05.var_1B39[self.var_1A7] > 0;
var_16 = 0;
foreach(var_13 in var_05.var_663A)
{
var_16 = var_16 | function_01F4(var_07,var_13,1);
}
if(var_16 || var_09 && !var_15)
{
var_0A = var_05;
break;
}
}
}
if(isdefined(var_0A))
{
if(self [[ level.var_19D5["crate_should_claim"] ]]())
{
if(!isdefined(var_0A.var_1B7B))
{
if(!isdefined(var_0A.var_1B39))
{
var_0A.var_1B39 = [];
}
var_0A.var_1B39[self.var_1A7] = 1;
}
}
var_1A = spawnstruct();
var_1A.var_68FB = var_0A;
var_1A.var_9296 = ::func_A87F;
var_1A.var_8B3E = ::func_2740;
var_1B = undefined;
if(isdefined(var_0A.var_1B7B))
{
if(isdefined(var_0A.var_1B7A) && var_0A.var_1B7A)
{
var_1A.var_81C8 = 16;
var_1A.var_87F = undefined;
var_1B = var_0A.var_116;
}
else
{
var_1A.var_81C8 = 50;
var_1A.var_87F = ::func_A1D8;
var_1C = func_2736(var_0A) - var_0A.var_116;
var_1D = length(var_1C) * randomfloat(1);
var_1B = var_0A.var_116 + vectornormalize(var_1C) * var_1D + (0,0,12);
}
}
else
{
var_1A.var_87F = ::func_A1DC;
var_1A.var_36AC = ::func_93F1;
var_1B = func_2736(var_0A);
var_1A.var_81C8 = var_00 - distance(var_0A.var_116,var_1B + (0,0,40));
var_1B = var_1B + (0,0,24);
}
if(isdefined(var_1A.var_81C8))
{
}
var_0A notify("path_disconnect");
wait 0.05;
if(!isdefined(var_0A))
{
continue;
}
maps/mp/bots/_bots_strategy::func_1A85("airdrop_crate",var_1B,30,var_1A);
}
}
}
//Function Number: 72
func_1AE6(param_00)
{
return 1;
}
//Function Number: 73
func_2741()
{
return 1;
}
//Function Number: 74
func_273D()
{
return 0;
}
//Function Number: 75
func_1AE5(param_00)
{
if(self getcurrentweapon() == level.var_1B79[param_00.var_1B7B].var_6209)
{
return 0;
}
return 1;
}
//Function Number: 76
func_1AA1(param_00)
{
self switchtoweapon(self.var_835A);
wait(1);
}
//Function Number: 77
func_1A9F(param_00)
{
self switchtoweapon("none");
self.var_835A = self getcurrentweapon();
}
//Function Number: 78
func_1AE9(param_00)
{
if(maps/mp/bots/_bots_util::func_19F8(0.66))
{
var_01 = self getnearestnode();
if(isdefined(param_00.var_663A) && isdefined(param_00.var_663A[0]) && isdefined(var_01))
{
if(function_01F4(var_01,param_00.var_663A[0],1))
{
if(common_scripts\utility::func_AA4A(self.var_116,self getangles(),param_00.var_116,self method_8375()))
{
return 1;
}
}
}
}
return 0;
}
//Function Number: 79
func_1AE7(param_00)
{
var_01 = self getweaponslistoffhands();
foreach(var_03 in var_01)
{
if(self getweaponammostock(var_03) == 0)
{
return 1;
}
}
return 0;
}
//Function Number: 80
func_1AE8(param_00)
{
return 1;
}
//Function Number: 81
func_273E()
{
self notify("crate_monitor_position");
self endon("crate_monitor_position");
self endon("death");
level endon("game_ended");
for(;;)
{
var_00 = self.var_116;
wait(0.5);
if(!isdefined(self))
{
return;
}
if(!maps/mp/bots/_bots_util::func_1B1C(self.var_116,var_00))
{
self.var_6AA9 = undefined;
self.var_663A = undefined;
self.var_663B = undefined;
}
}
}
//Function Number: 82
func_2743()
{
}
//Function Number: 83
func_2740(param_00)
{
if(!isdefined(param_00.var_68FB))
{
return 1;
}
return 0;
}
//Function Number: 84
func_A1DC(param_00)
{
if(function_01EF(self))
{
common_scripts\utility::func_615();
param_00.var_68FB enableplayeruse(self);
wait 0.05;
}
self [[ level.var_19D5["crate_wait_use"] ]]();
if(isdefined(param_00.var_68FB.var_117) && param_00.var_68FB.var_117 == self)
{
var_01 = level.var_2751 / 1000 + 0.5;
}
else
{
var_01 = level.var_274E / 1000 + 1;
}
self botpressbutton("use",var_01);
while(var_01 > 0 && isdefined(param_00.var_68FB))
{
wait 0.05;
var_01 = var_01 - 0.05;
}
if(var_01 > 0)
{
wait(randomfloatrange(0.05,0.5));
}
if(function_01EF(self))
{
common_scripts\utility::func_601();
if(isdefined(param_00.var_68FB))
{
param_00.var_68FB disableplayeruse(self);
}
}
if(isdefined(param_00.var_68FB))
{
if(!isdefined(param_00.var_68FB.var_1B44))
{
param_00.var_68FB.var_1B44 = [];
}
param_00.var_68FB.var_1B44[param_00.var_68FB.var_1B44.size] = self;
}
}
//Function Number: 85
func_A1D8(param_00)
{
if(function_01EF(self))
{
common_scripts\utility::func_615();
param_00.var_68FB enableplayeruse(self);
wait 0.05;
}
if(isdefined(param_00.var_68FB) && isdefined(param_00.var_68FB.var_1B7B))
{
var_01 = param_00.var_68FB.var_1B7B;
if(isdefined(level.var_1AA2[var_01]))
{
self [[ level.var_1AA2[var_01] ]](param_00.var_68FB);
}
if(isdefined(param_00.var_68FB))
{
var_02 = level.var_1B79[param_00.var_68FB.var_1B7B].var_A23F / 1000 + 0.5;
self botpressbutton("use",var_02);
wait(var_02);
if(isdefined(level.var_1AA0[var_01]))
{
self [[ level.var_1AA0[var_01] ]](param_00.var_68FB);
}
}
}
if(function_01EF(self))
{
common_scripts\utility::func_601();
if(isdefined(param_00.var_68FB))
{
param_00.var_68FB disableplayeruse(self);
}
}
}
//Function Number: 86
func_A87F(param_00)
{
thread func_1B28(param_00.var_68FB);
}
//Function Number: 87
func_93F1(param_00)
{
if(isdefined(param_00.var_A861) && param_00.var_A861)
{
self botsetstance("none");
self botlookatpoint(undefined);
}
if(isdefined(param_00.var_68FB))
{
param_00.var_68FB.var_1B39[self.var_1A7] = 0;
}
}
//Function Number: 88
func_1B28(param_00)
{
param_00 endon("death");
param_00 endon("revived");
param_00 endon("disconnect");
level endon("game_ended");
var_01 = self.var_1A7;
common_scripts\utility::knock_off_battery("death","disconnect");
if(isdefined(param_00))
{
param_00.var_1B39[var_01] = 0;
}
}
//Function Number: 89
func_1AFF()
{
self notify("bot_think_crate_blocking_path");
self endon("bot_think_crate_blocking_path");
self endon("death");
self endon("disconnect");
level endon("game_ended");
var_00 = getdvarfloat("2098");
for(;;)
{
wait(3);
if(self usebuttonpressed())
{
continue;
}
if(maps\mp\_utility::func_581D())
{
continue;
}
var_01 = level.var_1FFD;
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
var_03 = var_01[var_02];
if(!isdefined(var_03))
{
continue;
}
var_04 = self method_84D1();
if(!isdefined(var_04) || var_04 != var_03)
{
continue;
}
if(distancesquared(self.var_116,var_03.var_116) < var_00 * var_00)
{
if(!func_1A13(var_03))
{
if(isdefined(var_03.var_117) && var_03.var_117 == self)
{
self botpressbutton("use",level.var_2751 / 1000 + 0.5);
continue;
}
self botpressbutton("use",level.var_274E / 1000 + 0.5);
}
}
}
}
}
//Function Number: 90
func_1B02()
{
self notify("bot_think_revive");
self endon("bot_think_revive");
self endon("death");
self endon("disconnect");
level endon("game_ended");
if(!level.var_984D)
{
return;
}
for(;;)
{
var_00 = 2;
var_01 = getentarray("revive_trigger","targetname");
if(var_01.size > 0)
{
var_00 = 0.05;
}
level common_scripts\utility::func_A74B("player_last_stand",var_00);
if(!func_1959())
{
continue;
}
var_01 = getentarray("revive_trigger","targetname");
if(var_01.size > 1)
{
var_01 = function_01AC(var_01,self.var_116);
if(isdefined(self.var_117))
{
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
if(var_01[var_02].var_117 != self.var_117)
{
continue;
}
if(var_02 == 0)
{
break;
}
var_03 = var_01[var_02];
var_01[var_02] = var_01[0];
var_01[0] = var_03;
break;
}
}
}
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
var_04 = var_01[var_02];
var_05 = var_04.var_117;
if(!isdefined(var_05))
{
continue;
}
if(var_05 == self)
{
continue;
}
if(!isalive(var_05))
{
continue;
}
if(var_05.var_1A7 != self.var_1A7)
{
continue;
}
if(!isdefined(var_05.var_5378) || !var_05.var_5378)
{
continue;
}
if(isdefined(var_05.var_1B39) && isdefined(var_05.var_1B39[self.var_1A7]) && var_05.var_1B39[self.var_1A7] > 0)
{
continue;
}
if(distancesquared(self.var_116,var_05.var_116) < 4194304)
{
var_06 = spawnstruct();
var_06.var_68FB = var_04;
var_06.var_81C8 = 64;
if(isdefined(self.var_5B44) && gettime() - self.var_5B44 < 1000)
{
var_06.var_81C8 = 32;
}
var_06.var_9296 = ::func_A880;
var_06.var_36AC = ::func_93E6;
var_06.var_8B3E = ::func_7311;
var_06.var_87F = ::func_7E52;
maps/mp/bots/_bots_strategy::func_1A85("revive",var_05.var_116,60,var_06);
break;
}
}
}
}
//Function Number: 91
func_A880(param_00)
{
thread func_1B28(param_00.var_68FB.var_117);
}
//Function Number: 92
func_93E6(param_00)
{
if(isdefined(param_00.var_68FB.var_117))
{
param_00.var_68FB.var_117.var_1B39[self.var_1A7] = 0;
}
}
//Function Number: 93
func_7311(param_00)
{
if(!isdefined(param_00.var_68FB.var_117) || param_00.var_68FB.var_117.var_BC <= 0)
{
return 1;
}
if(!isdefined(param_00.var_68FB.var_117.var_5378) || !param_00.var_68FB.var_117.var_5378)
{
return 1;
}
return 0;
}
//Function Number: 94
func_7E52(param_00)
{
if(distancesquared(self.var_116,param_00.var_68FB.var_117.var_116) > 4096)
{
self.var_5B44 = gettime();
return;
}
if(function_01EF(self))
{
common_scripts\utility::func_615();
param_00.var_68FB enableplayeruse(self);
wait 0.05;
}
var_01 = self.var_1A7;
self botpressbutton("use",level.var_5BFA / 1000 + 0.5);
wait(level.var_5BFA / 1000 + 1.5);
if(isdefined(param_00.var_68FB.var_117))
{
param_00.var_68FB.var_1B39[var_01] = 0;
}
if(function_01EF(self))
{
common_scripts\utility::func_601();
if(isdefined(param_00.var_68FB))
{
param_00.var_68FB disableplayeruse(self);
}
}
}
//Function Number: 95
func_1959()
{
if(isdefined(self.var_E8) && self.var_E8 == 1)
{
return 0;
}
if(maps/mp/bots/_bots_strategy::func_1A14("revive"))
{
return 0;
}
if(maps/mp/bots/_bots_util::func_1A36())
{
return 0;
}
if(maps/mp/bots/_bots_util::func_1A27())
{
return 1;
}
var_00 = self method_835F();
if(var_00 == "none" || var_00 == "hunt" || var_00 == "guard")
{
return 1;
}
return 0;
}
//Function Number: 96
func_7E53(param_00)
{
self endon("death");
self endon("disconnect");
self endon("bad_path");
self endon("goal");
param_00 common_scripts\utility::knock_off_battery("death","revived");
self notify("bad_path");
}
//Function Number: 97
func_1A52()
{
self endon("death");
self endon("disconnect");
level endon("game_ended");
if(gettime() > 15000)
{
return;
}
while(!maps\mp\_utility::func_3FA6() || !maps\mp\_utility::func_3FA0("prematch_done"))
{
wait 0.05;
}
var_00 = undefined;
var_01 = undefined;
for(var_02 = 0;var_02 < level.var_744A.size;var_02++)
{
var_03 = level.var_744A[var_02];
if(isdefined(var_03) && isdefined(self.var_1A7) && isdefined(var_03.var_1A7) && !isalliedsentient(self,var_03))
{
if(!isdefined(var_03.var_1AF2))
{
var_00 = var_03;
}
if(isai(var_03) && !isdefined(var_03.var_1AF1))
{
var_01 = var_03;
}
}
}
if(isdefined(var_00))
{
self.var_1AF1 = 1;
var_00.var_1AF2 = 1;
self getenemyinfo(var_00);
}
if(isdefined(var_01))
{
var_01.var_1AF1 = 1;
self.var_1AF2 = 1;
var_01 getenemyinfo(self);
}
}
//Function Number: 98
func_1A70(param_00,param_01,param_02,param_03,param_04)
{
return self makeentitysentient(param_00,param_01,param_02,param_03,param_04);
}
//Function Number: 99
bot_free_entity_sentient()
{
self freeentitysentient();
}
//Function Number: 100
func_1B00()
{
self notify("bot_think_gametype");
self endon("bot_think_gametype");
self endon("death");
self endon("disconnect");
level endon("game_ended");
maps\mp\_utility::func_3FA5("prematch_done");
self thread [[ level.var_19D5["gametype_think"] ]]();
}
//Function Number: 101
func_2B9C()
{
}
//Function Number: 102
func_6348()
{
maps/mp/bots/_bots_util::func_1B20();
level.var_1AEC = getent("smoke_grenade_sight_clip_small","targetname");
if(!isdefined(level.var_1AEC))
{
return;
}
level.var_1AEB = getent("smoke_grenade_sight_clip_medium","targetname");
if(!isdefined(level.var_1AEB))
{
return;
}
level.var_1AEA = getent("smoke_grenade_sight_clip_large","targetname");
if(!isdefined(level.var_1AEA))
{
return;
}
for(;;)
{
level waittill("smoke",var_00,var_01);
var_02 = maps\mp\_utility::func_9472(var_01,"_lefthand");
if(var_02 == "smoke_grenade_mp" || var_02 == "smoke_grenade_axis_mp" || var_02 == "smoke_grenade_expeditionary_mp" || var_02 == "smoke_grenade_axis_expeditionary_mp")
{
var_00 thread func_4A5C();
}
}
}
//Function Number: 103
func_4A5C()
{
self waittill("explode",var_00);
var_01 = common_scripts\utility::func_8FFC();
var_01 method_805B();
var_01 enableaiseethroughentatshortdistance(1);
var_01.var_116 = var_00;
var_02 = 0.3;
wait(var_02);
var_02 = 0.4;
var_01 clonebrushmodeltoscriptmodel(level.var_1AEC);
wait(var_02);
var_02 = 0.45;
var_01 clonebrushmodeltoscriptmodel(level.var_1AEB);
wait(var_02);
var_02 = 9.8;
var_01 clonebrushmodeltoscriptmodel(level.var_1AEA);
wait(var_02);
var_02 = 1;
var_01 clonebrushmodeltoscriptmodel(level.var_1AEB);
wait(var_02);
var_02 = 0.65;
var_01 clonebrushmodeltoscriptmodel(level.var_1AEC);
wait(var_02);
var_01 delete();
}
//Function Number: 104
func_192F(param_00)
{
var_01 = 0;
param_00.var_1B7B = "scavenger_bag";
param_00.var_1B7A = 1;
if(!isdefined(level.var_1ABB))
{
level.var_1ABB = [];
}
foreach(var_04, var_03 in level.var_1ABB)
{
if(!isdefined(var_03))
{
var_01 = 1;
level.var_1ABB[var_04] = param_00;
break;
}
}
if(!var_01)
{
level.var_1ABB[level.var_1ABB.size] = param_00;
}
foreach(var_06 in level.var_6E97)
{
if(isai(var_06) && var_06 maps\mp\_utility::func_649("specialty_scavenger"))
{
var_06 notify("new_crate_to_take");
}
}
}
//Function Number: 105
func_1B07()
{
var_00 = getentarray("bot_flag_set","targetname");
foreach(var_02 in var_00)
{
if(!isdefined(var_02.var_165))
{
continue;
}
var_02 thread func_19D2(var_02.var_165);
}
}
//Function Number: 106
func_19D2(param_00)
{
self endon("death");
for(;;)
{
self waittill("trigger",var_01);
if(maps\mp\_utility::func_5666(var_01))
{
var_01 notify("flag_trigger_set_" + param_00);
var_01 botsetflag(param_00,1);
var_01 thread func_19D3(param_00);
}
}
}
//Function Number: 107
func_19D3(param_00)
{
self endon("flag_trigger_set_" + param_00);
self endon("death");
self endon("disconnect");
level endon("game_ended");
wait 0.05;
waittillframeend;
self botsetflag(param_00,0);
}