mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-07-10 07:27:55 -05:00
2990 lines
55 KiB
Plaintext
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);
|
|
} |