/******************************************************************* * Decompiled By: Bog * Decompiled File: scripts\mp\bots\_bots.gsc * Game: Call of Duty: Infinite Warfare * Platform: PC * Function Count: 111 * Decompile Time: 5745 ms * Timestamp: 10/27/2023 12:11:46 AM *******************************************************************/ //Function Number: 1 main() { if(isdefined(level.createfx_enabled) && level.createfx_enabled) { return; } func_F8F4(); scripts\mp\bots\_bots_personality::func_F9FD(); level.var_274F = ::badplace_cylinder; level.var_2750 = ::badplace_delete; scripts\mp\bots\_bots_killstreaks::func_2DF3(); scripts\mp\bots\_bots_powers::func_2E53(); scripts\mp\bots\_bots_loadout::init(); level thread init(); } //Function Number: 2 func_F8F4() { level.var_2D9E = []; level.var_2D9E["bots_spawn"] = ::func_10656; level.var_2D9E["bots_add_scavenger_bag"] = ::func_2D04; level.var_2D9E["bots_add_to_level_targets"] = ::scripts\mp\bots\_bots_util::func_2D06; level.var_2D9E["bots_remove_from_level_targets"] = ::scripts\mp\bots\_bots_util::func_2E64; level.var_2D9E["bots_make_entity_sentient"] = ::func_2E16; level.var_2D9E["think"] = ::func_2EAE; level.var_2D9E["on_killed"] = ::func_C4AC; level.var_2D9E["should_do_killcam"] = ::func_2E8E; level.var_2D9E["get_attacker_ent"] = ::scripts\mp\bots\_bots_util::func_2DAF; level.var_2D9E["should_pickup_weapons"] = ::func_2E90; level.var_2D9E["on_damaged"] = ::func_2D47; level.var_2D9E["gametype_think"] = ::func_4FF3; level.var_2D9E["leader_dialog"] = ::scripts\mp\bots\_bots_util::func_2DFB; level.var_2D9E["player_spawned"] = ::func_2E4D; level.var_2D9E["should_start_cautious_approach"] = ::scripts\mp\bots\_bots_strategy::func_FF9A; level.var_2D9E["know_enemies_on_start"] = ::func_2DF8; level.var_2D9E["bot_get_rank_xp"] = ::func_2DB3; level.var_2D9E["ai_3d_sighting_model"] = ::func_2D00; level.var_2D9E["dropped_weapon_think"] = ::func_2EB6; level.var_2D9E["dropped_weapon_cancel"] = ::func_FFA0; level.var_2D9E["crate_can_use"] = ::func_4831; level.var_2D9E["crate_low_ammo_check"] = ::func_483E; level.var_2D9E["crate_should_claim"] = ::func_484B; level.var_2D9E["crate_wait_use"] = ::func_484D; level.var_2D9E["crate_in_range"] = ::func_483B; level.var_2D9E["post_teleport"] = ::func_2E50; level.var_2E5E = []; level.var_2E5E["allies"] = ::scripts\mp\bots\_bots_personality::func_2E5D; level.var_2E5E["axis"] = ::scripts\mp\bots\_bots_personality::func_2E5D; level.var_2D27["deployable_vest"] = ::func_2E93; level.var_2D27["deployable_ammo"] = ::func_2E92; level.var_2D27["scavenger_bag"] = ::func_2E96; level.var_2D27["deployable_grenades"] = ::func_2E94; level.var_2D27["deployable_juicebox"] = ::func_2E95; level.var_2E55["deployable_ammo"] = ::func_2E54; level.var_2E52["deployable_ammo"] = ::func_2E51; level.var_2D76["capture"] = ::scripts\mp\bots\_bots_strategy::func_6C87; level.var_2D76["capture_zone"] = ::scripts\mp\bots\_bots_strategy::func_6C88; level.var_2D76["protect"] = ::scripts\mp\bots\_bots_strategy::func_6C8A; level.var_2D76["bodyguard"] = ::scripts\mp\bots\_bots_strategy::func_6C86; level.var_2D76["patrol"] = ::scripts\mp\bots\_bots_strategy::func_6C89; scripts\mp\bots\gametype_war::func_F8F4(); if(scripts\mp\_utility::func_2DD9()) { scripts\mp\bots\_bots_fireteam::func_2D92(); } } //Function Number: 3 func_00AC(param_00,param_01) { if(isdefined(level.var_2D9E) && isdefined(level.var_2D9E["leader_dialog"])) { self [[ level.var_2D9E["leader_dialog"] ]](param_00,param_01); } } //Function Number: 4 init() { thread func_B9A3(); thread func_2EBB(); func_97DE(); if(!func_10082()) { return; } func_DE6C(); var_00 = function_001F(); if(var_00 > 0) { setmatchdata("hasBots",1); if(scripts\mp\_utility::func_2DD9()) { level thread scripts\mp\bots\_bots_fireteam::func_2D8E(); level thread scripts\mp\bots\_bots_fireteam_commander::init(); return; } level thread func_2D3A(); } } //Function Number: 5 func_97DE() { if(!isdefined(level.var_485C)) { level.var_485C = 500; } if(!isdefined(level.var_4859)) { level.var_4859 = 3000; } level.var_2E3C = 3000; level.var_2E66 = "iw6_panzerfaust3"; level.var_2D70 = "iw7_knife"; level.var_13FBD = function_00EC(); level.var_2413 = undefined; func_97DF(); } //Function Number: 6 func_97DF() { if(isdefined(level.var_1165C)) { var_00 = [[ level.var_1165C ]](); } else { var_00 = function_0076(); } level.var_2E1B = 0; level.var_2E18 = 0; level.var_2E1C = 0; level.var_2E19 = 0; level.var_2E1D = 0; level.var_2E1A = 0; if(var_00.size > 1) { level.var_2E1B = var_00[0].origin[0]; level.var_2E18 = var_00[0].origin[0]; level.var_2E1C = var_00[0].origin[1]; level.var_2E19 = var_00[0].origin[1]; level.var_2E1D = var_00[0].origin[2]; level.var_2E1A = var_00[0].origin[2]; for(var_01 = 1;var_01 < var_00.size;var_01++) { var_02 = var_00[var_01].origin; if(var_02[0] < level.var_2E1B) { level.var_2E1B = var_02[0]; } if(var_02[0] > level.var_2E18) { level.var_2E18 = var_02[0]; } if(var_02[1] < level.var_2E1C) { level.var_2E1C = var_02[1]; } if(var_02[1] > level.var_2E19) { level.var_2E19 = var_02[1]; } if(var_02[2] < level.var_2E1D) { level.var_2E1D = var_02[2]; } if(var_02[2] > level.var_2E1A) { level.var_2E1A = var_02[2]; } } } level.var_2E17 = (level.var_2E1B + level.var_2E18 / 2,level.var_2E1C + level.var_2E19 / 2,level.var_2E1D + level.var_2E1A / 2); level.var_2EC5 = 1; } //Function Number: 7 func_2E50() { level.var_2EC5 = undefined; level.var_2DD0 = undefined; func_97DF(); scripts\mp\bots\_bots_killstreaks_remote_vehicle::func_DF76(); } //Function Number: 8 func_10082() { return 1; } //Function Number: 9 func_DE6C() { wait(1); foreach(var_01 in level.players) { if(isbot(var_01)) { if(isalive(var_01)) { var_01.var_6695 = 1; var_01.var_2EAC = var_01.team; var_01.var_2E99 = 1; var_01 thread [[ level.var_2D9E["think"] ]](); continue; } } } } //Function Number: 10 func_2E4D() { func_2E82(); if(isdefined(self.var_D88E)) { scripts\mp\bots\_bots_util::func_2E83(self.var_D88E); self.var_D88E = undefined; } } //Function Number: 11 func_2E82() { if(!isdefined(self.var_2D33)) { if(!func_2D9F()) { while(!isdefined(level.var_2E14)) { wait(0.05); } if(isdefined(self.var_C80E)) { self.var_2D33 = [[ self.var_C80E ]](); return; } self.var_2D33 = scripts\mp\bots\_bots_personality::func_2E88(); return; } self.var_2D33 = self.var_4004; } } //Function Number: 12 func_13968() { for(;;) { level waittill("connected",var_00); if(!isai(var_00) && level.players.size > 0) { level.var_D40C = scripts\common\utility::array_add(level.var_D40C,var_00); childthread func_2EF7(var_00); childthread func_2EF6(var_00); childthread func_2EF8(var_00); } } } //Function Number: 13 func_2EF7(param_00) { param_00 endon("bots_human_disconnected"); while(!scripts\common\utility::func_2286(level.players,param_00)) { wait(0.05); } param_00 notify("bots_human_spawned"); } //Function Number: 14 func_2EF6(param_00) { param_00 endon("bots_human_spawned"); param_00 waittill("disconnect"); param_00 notify("bots_human_disconnected"); } //Function Number: 15 func_2EF8(param_00) { param_00 scripts\common\utility::waittill_any_3("bots_human_spawned","bots_human_disconnected"); level.var_D40C = scripts\common\utility::func_22A9(level.var_D40C,param_00); } //Function Number: 16 func_B985() { level.var_D40C = []; childthread func_13968(); for(;;) { if(level.var_D40C.size > 0) { level.var_C9D7 = 1; } else { level.var_C9D7 = 0; } wait(0.5); } } //Function Number: 17 func_2D22(param_00) { if(scripts\mp\_utility::func_B3EC()) { return 1; } if(!level.teambased) { return 1; } if(scripts\mp\_teams::func_7F24(param_00)) { return 1; } return 0; } //Function Number: 18 func_2D3A(param_00,param_01) { level endon("game_ended"); self notify("bot_connect_monitor"); self endon("bot_connect_monitor"); level.var_C9D7 = 0; childthread func_B985(); scripts\mp\_hostmigration::func_13708(0.5); var_02 = 1.5; if(!isdefined(level.var_2D36)) { level.var_2D36 = 0; } if(!isdefined(level.var_2D37)) { level.var_2D37 = 0; } if(!isdefined(level.var_2D35)) { level.var_2D35 = 0; } for(;;) { if(level.var_C9D7) { scripts\mp\_hostmigration::func_13708(var_02); continue; } var_03 = isdefined(level.var_2EF5) || !level.teambased; var_04 = function_0025(0); var_05 = function_0025(1); if(level.rankedmatch) { var_06 = "default"; var_07 = "default"; } else { var_06 = function_0024(0); var_07 = function_0024(1); } var_08 = "allies"; var_09 = "axis"; var_0A = func_2D34(); var_0B = func_3B22(var_0A,"humans"); if(var_0B > 1) { var_0C = func_2DAD(); if(!scripts\mp\_utility::func_B3EC() && isdefined(var_0C) && var_0C != "spectator") { var_08 = var_0C; var_09 = scripts\mp\_utility::getotherteam(var_0C); } else { var_0D = func_3B22(var_0A,"humans_allies"); var_0E = func_3B22(var_0A,"humans_axis"); if(var_0E > var_0D) { var_08 = "axis"; var_09 = "allies"; } } } else { var_0F = func_7A21(); if(isdefined(var_0F)) { var_10 = var_0F func_2DB2(); if(isdefined(var_10) && var_10 != "spectator") { var_08 = var_10; var_09 = scripts\mp\_utility::getotherteam(var_10); } } } var_11 = scripts\mp\bots\_bots_util::func_2DB5(); var_12 = scripts\mp\bots\_bots_util::func_2DB5(); if(var_11 + var_12 < scripts\mp\bots\_bots_util::func_2DA6()) { if(var_11 < var_04) { var_11++; } else if(var_12 < var_05) { var_12++; } } var_13 = func_3B22(var_0A,"humans_" + var_08); var_14 = func_3B22(var_0A,"humans_" + var_09); var_15 = var_13 + var_14; var_16 = func_3B22(var_0A,"spectator"); var_17 = 0; var_18 = 0; while(var_16 > 0) { var_19 = var_13 + var_17 + 1 <= var_11; var_1A = var_14 + var_18 + 1 <= var_12; if(var_19 && !var_1A) { var_17++; continue; } if(!var_19 && var_1A) { var_18++; continue; } if(var_19 && var_1A) { if(var_16 % 2 == 1) { var_17++; continue; } var_18++; } var_16--; } var_1B = func_3B22(var_0A,"bots_" + var_08); var_1C = func_3B22(var_0A,"bots_" + var_09); var_1D = var_1B + var_1C; if(var_1D > 0) { level.var_2D36 = 1; } var_1E = 0; if(!level.var_2D35) { var_1E = !func_2DAE(); if(!var_1E) { level.var_2D35 = 1; } } if(var_1E) { var_1F = !getdvarint("systemlink") && !getdvarint("onlinegame"); var_20 = !var_03 && var_05 != var_04 && !level.var_2D36 && level.var_2D37 < 10 || !scripts\mp\_utility::func_766C("prematch_done"); if(var_1F || var_20) { level.var_2D37 = level.var_2D37 + var_02; scripts\mp\_hostmigration::func_13708(var_02); continue; } } var_21 = int(min(var_11 - var_13 - var_17,var_04)); var_22 = int(min(var_12 - var_14 - var_18,var_05)); var_23 = 1; var_24 = var_21 + var_22 + var_0B; var_25 = var_04 + var_05 + var_0B; var_26 = [-1,-1]; while(var_24 < scripts\mp\bots\_bots_util::func_2DA6() && var_24 < var_25) { if(var_23 && var_21 < var_04 && func_2D22(var_08)) { var_21++; } else if(!var_23 && var_22 < var_05 && func_2D22(var_09)) { var_22++; } var_24 = var_21 + var_22 + var_0B; if(var_26[var_23] == var_24) { break; } var_26[var_23] = var_24; var_23 = !var_23; } if(var_04 == var_05 && !var_03 && var_17 == 1 && var_18 == 0 && var_22 > 0) { if(!isdefined(level.var_2E56) && scripts\mp\_utility::func_766C("prematch_done")) { level.var_2E56 = gettime(); } if(var_1E && !isdefined(level.var_2E56) || gettime() - level.var_2E56 < 10000) { var_22--; } } var_27 = var_21 - var_1B; var_28 = var_22 - var_1C; var_29 = 1; if(var_03) { var_2A = var_11 + var_12; var_2B = var_04 + var_05; var_2C = var_13 + var_14; var_2D = var_1B + var_1C; var_2E = int(min(var_2A - var_2C,var_2B)); var_2F = var_2E - var_2D; if(var_2F == 0) { var_29 = 0; } else if(var_2F > 0) { var_27 = int(var_2F / 2) + var_2F % 2; var_28 = int(var_2F / 2); } else if(var_2F < 0) { var_30 = var_2F * -1; var_27 = -1 * int(min(var_30,var_1B)); var_28 = -1 * var_30 + var_27; } } else if(!scripts\mp\_utility::func_B3EC() && var_27 * var_28 < 0 && scripts\mp\_utility::func_766C("prematch_done") && !isdefined(level.var_2EEE)) { var_31 = int(min(abs(var_27),abs(var_28))); if(var_27 > 0) { func_BC13(var_31,var_09,var_08,var_06); } else if(var_28 > 0) { func_BC13(var_31,var_08,var_09,var_07); } var_29 = 0; } if(var_29) { if(var_28 < 0) { func_5CE4(var_28 * -1,var_09); } if(var_27 < 0) { func_5CE4(var_27 * -1,var_08); } if(var_28 > 0) { level thread func_10656(var_28,var_09,undefined,undefined,"spawned_enemies",var_07); } if(var_27 > 0) { level thread func_10656(var_27,var_08,undefined,undefined,"spawned_allies",var_06); } if(var_28 > 0 && var_27 > 0) { level scripts\common\utility::func_137AC("spawned_enemies","spawned_allies"); } else if(var_28 > 0) { level waittill("spawned_enemies"); } else if(var_27 > 0) { level waittill("spawned_allies"); } } if(var_07 != var_06) { func_2EF9(var_09,var_07); func_2EF9(var_08,var_06); } scripts\mp\_hostmigration::func_13708(var_02); } } //Function Number: 19 func_2DB2() { if(isdefined(self.team)) { return self.team; } if(isdefined(self.pers["team"])) { return self.pers["team"]; } return undefined; } //Function Number: 20 func_2DAD() { foreach(var_01 in level.players) { if(!isai(var_01) && var_01 ishost()) { return var_01 func_2DB2(); } } return "spectator"; } //Function Number: 21 func_2DAE() { var_00 = 0; var_01 = 0; var_02 = 0; foreach(var_04 in level.players) { if(!isai(var_04)) { if(var_04 ishost()) { var_00 = 1; } if(func_D229(var_04)) { var_01 = 1; if(var_04 ishost()) { var_02 = 1; } } } } return var_02 || var_01 && !var_00; } //Function Number: 22 func_D229(param_00) { if(isdefined(param_00.team) && param_00.team != "spectator") { return 1; } if(isdefined(param_00.var_1097B) && param_00.var_1097B) { return 1; } if(param_00 ismlgspectator() && isdefined(param_00.team) && param_00.team == "spectator") { return 1; } return 0; } //Function Number: 23 func_2D34() { var_00 = []; for(var_01 = 0;var_01 < level.players.size;var_01++) { var_02 = level.players[var_01]; if(isdefined(var_02) && isdefined(var_02.team)) { var_00 = func_3B21(var_00,"all"); var_00 = func_3B21(var_00,var_02.team); if(isbot(var_02)) { var_00 = func_3B21(var_00,"bots"); var_00 = func_3B21(var_00,"bots_" + var_02.team); continue; } var_00 = func_3B21(var_00,"humans"); var_00 = func_3B21(var_00,"humans_" + var_02.team); } } return var_00; } //Function Number: 24 func_3B21(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: 25 func_3B22(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: 26 func_BC13(param_00,param_01,param_02,param_03) { foreach(var_05 in level.players) { if(!isdefined(var_05.team)) { continue; } if(isdefined(var_05.var_452B) && var_05.var_452B && isbot(var_05) && var_05.team == param_01) { var_05.var_2EAC = param_02; if(isdefined(param_03)) { var_05 scripts\mp\bots\_bots_util::func_2E81(param_03); } var_05 notify("luinotifyserver","team_select",func_2E15(param_02)); wait(0.05); var_05 notify("luinotifyserver","class_select",var_05.var_2D33); param_00--; if(param_00 <= 0) { break; } else { wait(0.1); } } } } //Function Number: 27 func_2EF9(param_00,param_01) { foreach(var_03 in level.players) { if(!isdefined(var_03.team)) { continue; } if(isdefined(var_03.var_452B) && var_03.var_452B && isbot(var_03) && var_03.team == param_00) { if(param_01 != var_03 botgetdifficulty()) { var_03 scripts\mp\bots\_bots_util::func_2E81(param_01); } } } } //Function Number: 28 func_2D68() { kick(self.var_6640,"EXE_PLAYERKICKED_BOT_BALANCE"); wait(0.1); } //Function Number: 29 func_5CE4(param_00,param_01) { var_02 = []; foreach(var_04 in level.players) { if(isdefined(var_04.var_452B) && var_04.var_452B && isbot(var_04) && !isdefined(param_01) || isdefined(var_04.team) && var_04.team == 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(!scripts\mp\_utility::func_9F19(var_02[var_06])) { var_02[var_06] func_2D68(); var_02 = scripts\common\utility::func_22A9(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_2D68(); param_00--; } } //Function Number: 30 func_2E15(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: 31 func_10655(param_00,param_01,param_02) { var_03 = gettime() + -5536; while(!self method_8062()) { if(gettime() >= var_03) { kick(self.var_6640,"EXE_PLAYERKICKED_BOT_BALANCE"); param_02.var_151D = 1; return; } wait(0.05); if(!isdefined(self)) { param_02.var_151D = 1; return; } } scripts\mp\_hostmigration::func_13708(randomfloatrange(0.25,2)); if(!isdefined(self)) { param_02.var_151D = 1; return; } self method_8390(); self.pers["isBot"] = 1; self.var_6695 = 1; self.var_2EAC = param_00; if(isdefined(param_02.var_54CF)) { scripts\mp\bots\_bots_util::func_2E81(param_02.var_54CF); } if(isdefined(param_01)) { self [[ param_01 ]](); } self thread [[ level.var_2D9E["think"] ]](); param_02.var_DD6B = 1; } //Function Number: 32 func_6CA1(param_00,param_01) { var_02 = 0; var_03 = 0; for(var_04 = 0;var_04 < 10;var_04++) { var_03 = 0; var_05 = param_00 getplayerdata("mp","squadHQ","aiSquadMembers",var_04); if(var_05 == var_02) { var_04++; continue; } if(!isdefined(level.var_91D3) || !isdefined(level.var_91D3[var_05]) || level.var_91D3[var_05] == 0) { return var_05; } } return -1; } //Function Number: 33 func_10656(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.players.size < scripts\mp\bots\_bots_util::func_2DA6() && var_07.size < param_00 && gettime() < var_06) { scripts\mp\_hostmigration::func_13708(0.05); var_09 = undefined; if(function_0280()) { if(level.teambased) { var_09 = function_0281(param_01); } else { var_09 = function_0281("none"); } } else { var_09 = function_0005("",0,0,0); } if(!isdefined(var_09)) { if(isdefined(param_03) && param_03) { if(isdefined(param_04)) { self notify(param_04); } return; } scripts\mp\_hostmigration::func_13708(1); continue; } else { var_0A = spawnstruct(); var_0A.var_2CFF = var_09; var_0A.var_DD6B = 0; var_0A.var_151D = 0; var_0A.index = var_08; var_0A.var_54CF = param_05; var_07[var_07.size] = var_0A; var_0A.var_2CFF thread func_10655(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_DD6B || var_0A.var_151D) { var_0B++; } } wait(0.05); } if(isdefined(param_04)) { self notify(param_04); } } //Function Number: 34 func_2DA0() { if(!level.teambased) { return 1; } if(isdefined(level.var_2EF3) && level.var_2EF3) { return 1; } return 0; } //Function Number: 35 func_2D9F() { return isdefined(level.var_2EF2) && level.var_2EF2; } //Function Number: 36 func_2DDF() { if(!isdefined(self.var_4009)) { return 0; } return 1; } //Function Number: 37 func_2EAE() { self notify("bot_think"); self endon("bot_think"); self endon("disconnect"); while(!isdefined(self.pers["team"])) { wait(0.05); } level.var_8BD8 = 1; if(func_2DA0()) { self.var_2EAC = self.pers["team"]; } var_00 = self.var_2EAC; if(!isdefined(var_00)) { var_00 = self.pers["team"]; } scripts\mp\bots\_bots_killstreaks::func_2DF3(); self.var_6640 = self getentitynumber(); var_01 = 0; if(!isdefined(self.var_2E99)) { var_01 = 1; self.var_2E99 = 1; if(!func_2DA0()) { self notify("luinotifyserver","team_select",func_2E15(var_00)); wait(0.5); if(self.pers["team"] == "spectator") { func_2D68(); return; } } } for(;;) { scripts\mp\bots\_bots_util::func_2E81(self botgetdifficulty()); var_02 = self botgetdifficultysetting("advancedPersonality"); if(var_01 && isdefined(var_02) && var_02 != 0) { scripts\mp\bots\_bots_personality::func_2D10(); } scripts\mp\bots\_bots_personality::func_2D0C(); if(var_01) { func_2E82(); if(!func_2D9F()) { self notify("luinotifyserver","class_select",self.var_2D33); } if(self.health == 0) { self.var_331E = 1; self notify("bot_ready_to_spawn"); self waittill("spawned_player"); self.var_331E = undefined; self.var_2EAC = var_00; } if(isdefined(level.var_2D9E) && isdefined(level.var_2D9E["know_enemies_on_start"])) { self thread [[ level.var_2D9E["know_enemies_on_start"] ]](); } var_01 = 0; } func_2E67(); wait(0.1); self waittill("death"); func_E292(); self waittill("spawned_player"); } } //Function Number: 38 func_E292() { self endon("started_spawnPlayer"); while(!self.var_136FF) { wait(0.05); } if(scripts\mp\_playerlogic::func_BE8F()) { while(self.var_136FF) { if(self.sessionstate == "spectator") { if(getdvarint("numlives") == 0 || self.pers["lives"] > 0) { self botpressbutton("use",0.5); } } wait(1); } } } //Function Number: 39 func_2DB3() { if(scripts\mp\_utility::func_2DE2() == 0) { if(!isdefined(self.pers["rankxp"])) { self.pers["rankxp"] = 0; } return self.pers["rankxp"]; } var_00 = self botgetdifficulty(); var_01 = "bot_rank_" + var_00; if(isdefined(self.pers[var_01]) && self.pers[var_01] > 0) { return self.pers[var_01]; } var_02 = func_2E5F(var_00); var_03 = var_02["rank"]; var_04 = var_02["prestige"]; var_05 = scripts\mp\_rank::func_80CF(var_03); var_06 = var_05 + scripts\mp\_rank::func_80D1(var_03); var_07 = randomintrange(var_05,var_06 + 1); self.pers[var_01] = var_07; return var_07; } //Function Number: 40 func_2D00(param_00) { thread func_2D01(param_00); } //Function Number: 41 func_2D01(param_00) { param_00 endon("disconnect"); self endon("disconnect"); level endon("game_ended"); for(;;) { if(isalive(self) && !self botcanseeentity(param_00) && scripts\common\utility::func_13D90(self.origin,self.angles,param_00.origin,self botgetfovdot())) { self botgetimperfectenemyinfo(param_00,param_00.origin); } wait(0.1); } } //Function Number: 42 func_2E5F(param_00) { var_01 = []; var_01["rank"] = 0; var_01["prestige"] = 0; if(param_00 == "default") { return var_01; } if(!isdefined(level.var_2E69)) { level.var_2E69 = []; level.var_2E69["recruit"][0] = 0; level.var_2E69["recruit"][1] = 5; level.var_2E69["regular"][0] = 6; level.var_2E69["regular"][1] = 9; level.var_2E69["hardened"][0] = 10; level.var_2E69["hardened"][1] = 19; level.var_2E69["veteran"][0] = 20; level.var_2E69["veteran"][1] = 29; } if(!isdefined(level.var_2E68)) { level.var_2E68 = []; level.var_2E68["recruit"][0] = 0; level.var_2E68["recruit"][1] = 0; level.var_2E68["regular"][0] = 0; level.var_2E68["regular"][1] = 0; level.var_2E68["hardened"][0] = 0; level.var_2E68["hardened"][1] = 0; level.var_2E68["veteran"][0] = 0; level.var_2E68["veteran"][1] = 9; } if(isdefined(level.var_2E69[param_00][0]) && isdefined(level.var_2E69[param_00][1])) { var_01["rank"] = randomintrange(level.var_2E69[param_00][0],level.var_2E69[param_00][1] + 1); } if(isdefined(level.var_2E68[param_00][0]) && isdefined(level.var_2E68[param_00][1])) { var_01["prestige"] = randomintrange(level.var_2E68[param_00][0],level.var_2E68[param_00][1] + 1); } return var_01; } //Function Number: 43 func_4831(param_00) { if(isagent(self) && !isdefined(param_00.var_2F33)) { return 0; } if(isdefined(param_00.var_485F) && !scripts\mp\bots\_bots_killstreaks::func_2DDB(param_00.var_485F)) { return 0; } return 1; } //Function Number: 44 func_7A21() { 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_452B) && var_01[var_02].var_452B && !isai(var_01[var_02]) && !isdefined(var_00) || var_00.team == "spectator") { var_00 = var_01[var_02]; } } } return var_00; } //Function Number: 45 func_2D47(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(isdefined(self.var_7197)) { self [[ self.var_7197 ]](param_00,param_01,param_02,param_03,param_04,param_05); } if(level.teambased) { if(isdefined(param_04.team) && param_04.team == self.team) { return; } else if(isdefined(param_00) && isdefined(param_00.team) && param_00.team == self.team) { return; } } var_06 = scripts\mp\bots\_bots_util::func_2DAF(param_00,param_04); if(isdefined(var_06)) { self method_804A(var_06); } } } //Function Number: 46 func_C4AC(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09) { self method_8027(); self botclearscriptgoal(); var_0A = scripts\mp\bots\_bots_util::func_2DAF(param_01,param_00); if(!scripts\mp\_utility::func_2DD9() && isdefined(var_0A) && var_0A.classname == "script_vehicle" && isdefined(var_0A.var_8DD9)) { var_0B = self botgetdifficultysetting("launcherRespawnChance"); if(randomfloat(1) < var_0B) { self.var_E293 = 1; } } } //Function Number: 47 func_2E8E() { if(scripts\mp\_utility::func_2DD9()) { return 0; } var_00 = 0; var_01 = self botgetdifficulty(); if(var_01 == "recruit") { var_00 = 0.1; } else if(var_01 == "regular") { var_00 = 0.4; } else if(var_01 == "hardened") { var_00 = 0.7; } else if(var_01 == "veteran") { var_00 = 1; } return randomfloat(1) < 1 - var_00; } //Function Number: 48 func_2E90() { if(scripts\mp\_utility::func_9E59()) { return 0; } return 1; } //Function Number: 49 func_2E67() { thread func_2EBA(); thread scripts\mp\bots\_bots_strategy::func_2EB8(); self thread [[ level.var_2D9E["dropped_weapon_think"] ]](); thread func_2EB3(); thread func_2EAF(); thread scripts\mp\bots\_bots_supers::func_2EB7(); thread scripts\mp\bots\_bots_powers::func_2EB4(); thread func_2EB0(); thread scripts\mp\bots\_bots_killstreaks::func_2EB2(); thread scripts\mp\bots\_bots_killstreaks::func_2EB9(); thread func_2EB1(); } //Function Number: 50 func_2EBA(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.last_enemy_sight_time = gettime(); for(;;) { if(isdefined(self.var_10C)) { if(self botcanseeentity(self.var_10C)) { self.last_enemy_sight_time = gettime(); } } wait(0.05); } } //Function Number: 51 func_2EB6() { self notify("bot_think_seek_dropped_weapons"); self endon("bot_think_seek_dropped_weapons"); self endon("death"); self endon("disconnect"); level endon("game_ended"); var_00 = "throwingknife_mp"; for(;;) { var_01 = 0; if(scripts\mp\bots\_bots_util::func_2E3B() && self [[ level.var_2D9E["should_pickup_weapons"] ]]() && !scripts\mp\bots\_bots_util::func_2DE0()) { var_02 = getentarray("dropped_weapon","targetname"); var_03 = scripts\common\utility::func_782F(self.origin,var_02); if(var_03.size > 0) { var_04 = var_03[0]; func_2E6F(var_04); } } if(!scripts\mp\bots\_bots_util::func_2DCA() && !scripts\mp\bots\_bots_util::func_2DE0() && self botgetdifficultysetting("strategyLevel") > 0) { var_05 = self hasweapon(var_00); var_06 = var_05 && self method_80FB(var_00) == 0; if(var_06) { if(isdefined(self.var_8444)) { wait(5); continue; } var_07 = getentarray("dropped_knife","targetname"); var_08 = scripts\common\utility::func_782F(self.origin,var_07); foreach(var_0A in var_08) { if(!isdefined(var_0A)) { continue; } if(!isdefined(var_0A.var_370D)) { var_0B = scripts\mp\bots\_bots_util::func_2E58("BotGetClosestNavigablePoint",::scripts\mp\bots\_bots_util::func_74C3,var_0A.origin,32,self); if(isdefined(var_0A)) { var_0A.var_429A = var_0B; var_0A.var_370D = 1; } else { continue; } } if(isdefined(var_0A.var_429A)) { self.var_8444 = 1; func_2E6F(var_0A); } } } else if(var_05) { self.var_8444 = undefined; } } wait(randomfloatrange(0.25,0.75)); } } //Function Number: 52 func_2E6F(param_00) { if(scripts\mp\bots\_bots_strategy::func_2DC5("seek_dropped_weapon",param_00) == 0) { var_01 = undefined; if(param_00.var_336 == "dropped_weapon") { var_02 = 1; var_03 = self getweaponslistprimaries(); foreach(var_05 in var_03) { if(param_00.model == function_00EA(var_05)) { var_02 = 0; } } if(var_02) { var_01 = ::func_2E4C; } } var_07 = spawnstruct(); var_07.var_C270 = param_00; var_07.var_EDC9 = 12; var_07.var_FF0D = level.var_2D9E["dropped_weapon_cancel"]; var_07.var_157C = var_01; scripts\mp\bots\_bots_strategy::func_2E27("seek_dropped_weapon",param_00.origin,100,var_07); } } //Function Number: 53 func_2E4C(param_00) { self botpressbutton("use",2); wait(2); } //Function Number: 54 func_FFA0(param_00) { if(!isdefined(param_00.var_C270)) { return 1; } if(param_00.var_C270.var_336 == "dropped_weapon") { if(scripts\mp\bots\_bots_util::func_2DB8() > 0) { return 1; } } else if(param_00.var_C270.var_336 == "dropped_knife") { if(scripts\mp\bots\_bots_util::func_2DCA()) { self.var_8444 = undefined; return 1; } } return 0; } //Function Number: 55 func_2EB3(param_00) { self notify("bot_think_level_actions"); self endon("bot_think_level_actions"); self endon("death"); self endon("disconnect"); level endon("game_ended"); for(;;) { scripts\common\utility::waittill_notify_or_timeout("calculate_new_level_targets",randomfloatrange(2,10)); if(!isdefined(level.var_ABE5) || level.var_ABE5.size == 0) { continue; } if(scripts\mp\bots\_bots_strategy::func_2DC5("map_interactive_object")) { continue; } if(scripts\mp\bots\_bots_util::func_2DCA() || scripts\mp\bots\_bots_util::func_2DE0()) { continue; } var_01 = undefined; foreach(var_03 in level.var_ABE5) { if(scripts\common\utility::func_2286(var_03.var_8EE3,self)) { var_01 = var_03; break; } } if(!isdefined(var_01)) { if(randomint(100) > 25) { continue; } var_05 = scripts\common\utility::func_782F(self.origin,level.var_ABE5); var_06 = 256; if(isdefined(param_00)) { var_06 = param_00; } else if(self botgetscriptgoaltype() == "hunt" && self botpursuingscriptgoal()) { var_06 = 512; } if(distancesquared(self.origin,var_05[0].origin) > var_06 * var_06) { continue; } var_01 = var_05[0]; } var_07 = 0; if(var_01.var_2DD1 == "damage") { var_07 = func_2E8F(var_01); if(var_07) { var_08 = var_01.origin[2] - var_01.var_2EAA[0].origin[2] + 55; var_09 = var_01.origin[2] - var_01.var_2EAA[1].origin[2] + 55; if(var_08 > 55 && var_09 > 55) { if(scripts\common\utility::func_2286(var_01.var_8EE3,self)) { var_01.var_8EE3 = scripts\common\utility::func_22A9(var_01.var_8EE3,self); } continue; } } var_0A = weaponclass(self getcurrentweapon()); if(var_0A == "spread") { var_0B = var_01.var_2EAA[0].origin - var_01.origin; var_0C = var_01.var_2EAA[1].origin - var_01.origin; var_0D = lengthsquared(var_0B); var_0E = lengthsquared(var_0C); if(var_0D > 22500 && var_0E > 22500) { if(scripts\common\utility::func_2286(var_01.var_8EE3,self)) { var_01.var_8EE3 = scripts\common\utility::func_22A9(var_01.var_8EE3,self); } continue; } } } var_0F = spawnstruct(); var_0F.var_C270 = var_01; if(var_01.var_2DD1 == "damage") { if(var_07) { var_0F.var_FF0D = ::func_ABEC; } else { var_0F.var_FF0D = ::func_ABED; } } if(var_01.var_2DD1 == "use") { var_0F.var_157C = ::func_13036; var_0F.var_FF0D = ::func_ABEB; var_0F.var_EDCC = vectortoangles(var_01.origin - var_01.var_2EA8.origin)[1]; scripts\mp\bots\_bots_strategy::func_2E27("map_interactive_object",var_01.var_2EA8.origin,10,var_0F); continue; } if(var_01.var_2DD1 == "damage") { if(var_07) { var_0F.var_157C = ::func_B57B; var_0F.var_EDC9 = 20; } else { var_0F.var_157C = ::func_24B3; var_0F.var_EDC9 = 50; } var_10 = undefined; var_11 = scripts\mp\bots\_bots_util::func_2E58("GetPathDistLevelAction",::scripts\mp\bots\_bots_util::func_74C9,self.origin,var_01.var_2EAA[0].origin); var_12 = scripts\mp\bots\_bots_util::func_2E58("GetPathDistLevelAction",::scripts\mp\bots\_bots_util::func_74C9,self.origin,var_01.var_2EAA[1].origin); if(!isdefined(var_01)) { continue; } if(var_11 <= 0 && var_12 <= 0) { continue; } if(var_11 > 0) { if(var_12 < 0 || var_11 <= var_12) { var_10 = var_01.var_2EAA[0]; } } if(var_12 > 0) { if(var_11 < 0 || var_12 <= var_11) { var_10 = var_01.var_2EAA[1]; } } if(!var_07) { childthread func_B981(var_10); } scripts\mp\bots\_bots_strategy::func_2E27("map_interactive_object",var_10.origin,10,var_0F); } } } //Function Number: 56 func_2E8F(param_00) { var_01 = self getcurrentweapon(); var_02 = scripts\mp\bots\_bots_util::func_2E3B() || self.var_8C1F || isdefined(self.var_9E5D) && self.var_9E5D == 1 || weaponclass(var_01) == "grenade" || scripts\mp\_weapons::func_9E6D(var_01); return var_02; } //Function Number: 57 func_B981(param_00) { self endon("goal"); wait(0.1); for(;;) { if(weaponclass(self getcurrentweapon()) == "spread") { if(distancesquared(self.origin,param_00.origin) > 90000) { wait(0.05); continue; } } var_01 = self getnearestnode(); if(isdefined(var_01)) { if(nodesvisible(var_01,param_00)) { if(sighttracepassed(self.origin + (0,0,55),param_00.origin + (0,0,55),0,self)) { self notify("goal"); } } } wait(0.05); } } //Function Number: 58 func_24B3(param_00) { if(param_00.var_C270.origin[2] - self geteye()[2] > 55) { if(distance2dsquared(param_00.var_C270.origin,self.origin) < 225) { return; } } self botsetflag("disable_movement",1); func_AFF0(param_00.var_C270,0.3); self botpressbutton("ads",0.3); wait(0.25); var_01 = gettime(); while(isdefined(param_00.var_C270) && !isdefined(param_00.var_C270.var_1D3F) && gettime() - var_01 < 5000) { func_AFF0(param_00.var_C270,0.15); self botpressbutton("ads",0.15); self botpressbutton("attack"); wait(0.1); } self botsetflag("disable_movement",0); } //Function Number: 59 func_B57B(param_00) { self botsetflag("disable_movement",1); func_AFF0(param_00.var_C270,0.3); wait(0.25); var_01 = gettime(); while(isdefined(param_00.var_C270) && !isdefined(param_00.var_C270.var_1D3F) && gettime() - var_01 < 5000) { func_AFF0(param_00.var_C270,0.15); self botpressbutton("melee"); wait(0.1); } self botsetflag("disable_movement",0); } //Function Number: 60 func_AFF0(param_00,param_01) { var_02 = param_00.origin; if(distance2dsquared(self.origin,var_02) < 100) { var_02 = (var_02[0],var_02[1],self geteye()[2]); } self botlookatpoint(var_02,param_01,"script_forced"); } //Function Number: 61 func_13036(param_00) { if(isagent(self)) { scripts\common\utility::func_1C6E(1); param_00.var_C270 enableplayeruse(self); wait(0.05); } var_01 = param_00.var_C270.var_13031; self botpressbutton("use",var_01); wait(var_01); if(isagent(self)) { scripts\common\utility::func_1C6E(0); if(isdefined(param_00.var_C270)) { param_00.var_C270 disableplayeruse(self); } } } //Function Number: 62 func_ABEC(param_00) { if(func_ABEB(param_00)) { return 1; } if(!func_2E8F(param_00.var_C270)) { return 1; } return 0; } //Function Number: 63 func_ABED(param_00) { if(func_ABEB(param_00)) { return 1; } if(func_2E8F(param_00.var_C270)) { return 1; } return 0; } //Function Number: 64 func_ABEB(param_00) { if(!isdefined(param_00.var_C270)) { return 1; } if(isdefined(param_00.var_C270.var_1D3F)) { return 1; } if(scripts\mp\bots\_bots_util::func_2DCA()) { return 1; } return 0; } //Function Number: 65 func_483B(param_00) { if(!isdefined(param_00.var_222) || param_00.var_222 != self) { if(distancesquared(self.origin,param_00.origin) > 4194304) { return 0; } } return 1; } //Function Number: 66 func_2D45(param_00) { if(!isdefined(param_00)) { return 0; } var_01 = self [[ level.var_2D9E["crate_can_use"] ]](param_00); if(!var_01) { if(level.gametype == "grnd") { var_01 = 1; } } if(!var_01) { return 0; } if(!func_483D(param_00)) { return 0; } if(level.teambased && isdefined(param_00.var_2C43) && isdefined(param_00.team) && param_00.team == self.team) { return 0; } if(!self [[ level.var_2D9E["crate_in_range"] ]](param_00)) { return 0; } if(isdefined(param_00.var_2F33)) { if(isdefined(level.var_2F30[param_00.var_2F33]) && ![[ level.var_2F30[param_00.var_2F33].var_3936 ]]()) { return 0; } if(isdefined(param_00.var_55BC) && isdefined(param_00.var_55BC[self getentitynumber()]) && param_00.var_55BC[self getentitynumber()]) { return 0; } if(!self [[ level.var_2D27[param_00.var_2F33] ]](param_00)) { return 0; } } return isdefined(param_00); } //Function Number: 67 func_483D(param_00) { if(!func_483A(param_00)) { return 0; } if(!func_483C(param_00)) { return 0; } return isdefined(param_00); } //Function Number: 68 func_483A(param_00) { if(isdefined(param_00.var_2F33)) { return gettime() > param_00.var_64 + 1000; } return isdefined(param_00.var_5D44) && !param_00.var_5D44; } //Function Number: 69 func_483C(param_00) { if(!isdefined(param_00.on_path_grid)) { func_482F(param_00); } return isdefined(param_00) && param_00.on_path_grid; } //Function Number: 70 func_C042(param_00,param_01) { if(isdefined(param_01.var_2F33) && param_01.var_2F33 == "scavenger_bag") { return abs(param_00.origin[0] - param_01.origin[0]) < 36 && abs(param_00.origin[0] - param_01.origin[0]) < 36 && abs(param_00.origin[0] - param_01.origin[0]) < 18; } var_02 = getdvarfloat("player_useRadius"); var_03 = distancesquared(param_01.origin,param_00.origin + (0,0,40)); return var_03 <= var_02 * var_02; } //Function Number: 71 func_482F(param_00) { param_00 thread func_483F(); param_00.on_path_grid = 0; var_01 = undefined; var_02 = undefined; if(isdefined(param_00.var_72B6)) { var_01 = param_00.var_72B6; var_02 = gettime() + 30000; param_00.var_72B6 = var_02; param_00 notify("path_disconnect"); } wait(0.05); if(!isdefined(param_00)) { return; } var_03 = func_4839(param_00); if(!isdefined(param_00)) { return; } if(isdefined(var_03) && var_03.size > 0) { param_00.var_BE7E = var_03; param_00.on_path_grid = 1; } else { var_04 = getdvarfloat("player_useRadius"); var_05 = getnodesinradiussorted(param_00.origin,var_04 * 2,0)[0]; var_06 = param_00 method_8159(0,0,-1); var_07 = undefined; if(isdefined(param_00.var_2F33) && param_00.var_2F33 == "scavenger_bag") { if(scripts\mp\bots\_bots_util::func_2E4E(param_00.origin)) { var_07 = param_00.origin; } } else { var_07 = function_0022(param_00.origin,var_04); } if(isdefined(var_05) && !var_05 method_821B() && isdefined(var_07) && abs(var_05.origin[2] - var_06[2]) < 30) { param_00.var_BE80 = [var_07]; param_00.var_BE7E = [var_05]; param_00.on_path_grid = 1; } } if(isdefined(param_00.var_72B6)) { if(param_00.var_72B6 == var_02) { param_00.var_72B6 = var_01; } } } //Function Number: 72 func_4839(param_00) { var_01 = getnodesinradiussorted(param_00.origin,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] = getclosestnodeinsight(param_00.origin); var_03 = undefined; if(isdefined(param_00.var_72B6)) { var_03 = function_0076(); } var_04 = []; var_05 = 1; if(!isdefined(param_00.var_2F33)) { 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_821B()) { continue; } if(!func_C042(var_06,param_00)) { if(var_02 == 0) { continue; } else { break; } } wait(0.05); if(!isdefined(param_00)) { break; } if(sighttracepassed(param_00.origin,var_06.origin + (0,0,55),0,param_00)) { wait(0.05); if(!isdefined(param_00)) { break; } if(!isdefined(param_00.var_72B6)) { 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 = scripts\common\utility::random(var_03); if(distancesquared(var_06.origin,var_09.origin) > 250000) { var_07 = var_09; } } if(isdefined(var_07)) { var_0A = scripts\mp\bots\_bots_util::func_2E58("GetNodesOnPathCrate",::scripts\mp\bots\_bots_util::func_74C8,var_06.origin,var_07.origin); 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: 73 func_4837(param_00) { if(isdefined(param_00.var_BE80)) { return param_00.var_BE80[0]; } if(isdefined(param_00.var_BE7E)) { if(param_00.var_BE7E.size > 1) { var_01 = scripts\common\utility::func_22BD(self method_8045(param_00.var_BE7E,"node_exposed")); return scripts\common\utility::func_DCA4(var_01).origin; } else { return var_01.var_BE7E[0].origin; } } } //Function Number: 74 func_4838(param_00,param_01) { var_02 = func_4837(param_00); var_02 = getclosestpointonnavmesh(var_02,self); var_03 = param_01 * 0.9; var_03 = var_03 * var_03; if(distancesquared(param_00.origin,var_02) <= var_03) { return var_02; } return undefined; } //Function Number: 75 func_2EAF() { self notify("bot_think_crate"); self endon("bot_think_crate"); self endon("death"); self endon("disconnect"); level endon("game_ended"); var_00 = getdvarfloat("player_useRadius"); for(;;) { var_01 = randomfloatrange(2,4); scripts\common\utility::waittill_notify_or_timeout("new_crate_to_take",var_01); if(isdefined(self.var_2F2B) && self.var_2F2B.size == 0) { self.var_2F2B = undefined; } var_02 = level.var_3A59; if(!scripts\mp\bots\_bots_util::func_2DCA() && isdefined(self.var_2F2B)) { var_02 = scripts\common\utility::array_combine(var_02,self.var_2F2B); } if(isdefined(level.var_2E6A) && scripts\mp\_utility::_hasperk("specialty_scavenger")) { var_02 = scripts\common\utility::array_combine(var_02,level.var_2E6A); } var_02 = scripts\common\utility::func_22BC(var_02); if(var_02.size == 0) { continue; } if(scripts\mp\bots\_bots_strategy::func_2DC5("airdrop_crate") || self botgetscriptgoaltype() == "tactical" || scripts\mp\bots\_bots_util::func_2DE0()) { continue; } var_03 = []; foreach(var_05 in var_02) { if(func_2D45(var_05)) { var_03[var_03.size] = var_05; } } var_03 = scripts\common\utility::func_22AF(var_03); if(var_03.size == 0) { continue; } var_03 = scripts\common\utility::func_782F(self.origin,var_03); var_07 = self getnearestnode(); if(!isdefined(var_07)) { continue; } var_08 = self [[ level.var_2D9E["crate_low_ammo_check"] ]](); var_09 = (var_08 || randomint(100) < 50) && !scripts\mp\killstreaks\_emp_common::isemped(); var_0A = undefined; foreach(var_05 in var_03) { var_0C = 0; if((!isdefined(var_05.var_222) || var_05.var_222 != self) && !isdefined(var_05.var_2F33)) { var_0D = []; foreach(var_0F in level.players) { if(!isdefined(var_0F.team)) { continue; } if(!isai(var_0F) && level.teambased && var_0F.team == self.team) { if(distancesquared(var_0F.origin,var_05.origin) < 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_BE7E) { var_0C = var_0C | nodesvisible(var_11,var_13,1); } } } } if(!var_0C) { var_15 = isdefined(var_05.var_2EEB) && isdefined(var_05.var_2EEB[self.team]) && var_05.var_2EEB[self.team] > 0; var_16 = 0; foreach(var_13 in var_05.var_BE7E) { var_16 = var_16 | nodesvisible(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_2D9E["crate_should_claim"] ]]()) { if(!isdefined(var_0A.var_2F33)) { if(!isdefined(var_0A.var_2EEB)) { var_0A.var_2EEB = []; } var_0A.var_2EEB[self.team] = 1; } } var_1A = spawnstruct(); var_1A.var_C270 = var_0A; var_1A.var_10D46 = ::func_1392B; var_1A.var_FF0D = ::func_4841; var_1B = undefined; if(isdefined(var_0A.var_2F33)) { if(isdefined(var_0A.var_2F32) && var_0A.var_2F32) { var_1A.var_EDC9 = 16; var_1A.var_157C = undefined; var_1B = var_0A.origin; } else { var_1A.var_EDC9 = 50; var_1A.var_157C = ::func_12FAF; var_1C = func_4838(var_0A,var_00); if(!isdefined(var_1C)) { continue; } var_1C = var_1C - var_0A.origin; var_1D = length(var_1C) * randomfloat(1); var_1B = var_0A.origin + vectornormalize(var_1C) * var_1D + (0,0,12); } } else { var_1A.var_157C = ::func_12FBF; var_1A.var_6302 = ::func_11052; var_1B = func_4838(var_0A,var_00); if(!isdefined(var_1B)) { continue; } var_1A.var_EDC9 = var_00 - distance(var_0A.origin,var_1B + (0,0,40)); var_1B = var_1B + (0,0,24); } if(isdefined(var_1A.var_EDC9)) { } var_0A notify("path_disconnect"); wait(0.05); if(!isdefined(var_0A)) { continue; } scripts\mp\bots\_bots_strategy::func_2E27("airdrop_crate",var_1B,30,var_1A); } } } //Function Number: 76 func_2E93(param_00) { return 1; } //Function Number: 77 func_484B() { return 1; } //Function Number: 78 func_483E() { return 0; } //Function Number: 79 func_2E92(param_00) { if(self getcurrentweapon() == level.var_2F30[param_00.var_2F33].var_B7A8) { return 0; } return 1; } //Function Number: 80 func_2E54(param_00) { scripts\mp\_utility::_switchtoweapon(self.var_F0C4); wait(1); } //Function Number: 81 func_2E51(param_00) { scripts\mp\_utility::_switchtoweapon("none"); self.var_F0C4 = self getcurrentweapon(); } //Function Number: 82 func_2E96(param_00) { if(scripts\mp\bots\_bots_util::func_2DB0(0.66)) { var_01 = self getnearestnode(); if(isdefined(param_00.var_BE7E) && isdefined(param_00.var_BE7E[0]) && isdefined(var_01)) { if(nodesvisible(var_01,param_00.var_BE7E[0],1)) { if(scripts\common\utility::func_13D90(self.origin,self.angles,param_00.origin,self botgetfovdot())) { return 1; } } } } return 0; } //Function Number: 83 func_2E94(param_00) { var_01 = self getweaponslistoffhands(); foreach(var_03 in var_01) { if(self getweaponammostock(var_03) == 0) { return 1; } } return 0; } //Function Number: 84 func_2E95(param_00) { return 1; } //Function Number: 85 func_483F() { self notify("crate_monitor_position"); self endon("crate_monitor_position"); self endon("death"); level endon("game_ended"); for(;;) { var_00 = self.origin; wait(0.5); if(!isalive(self)) { return; } if(!scripts\mp\bots\_bots_util::func_2EC6(self.origin,var_00)) { self.on_path_grid = undefined; self.var_BE7E = undefined; self.var_BE80 = undefined; } } } //Function Number: 86 func_484D() { } //Function Number: 87 func_4841(param_00) { if(!isdefined(param_00.var_C270)) { return 1; } return 0; } //Function Number: 88 func_12FBF(param_00) { if(isagent(self)) { scripts\common\utility::func_1C6E(1); param_00.var_C270 enableplayeruse(self); wait(0.05); } self [[ level.var_2D9E["crate_wait_use"] ]](); if(isdefined(param_00.var_C270.var_222) && param_00.var_C270.var_222 == self) { var_01 = level.var_485C / 1000 + 0.5; } else { var_01 = level.var_4859 / 1000 + 1; } self botpressbutton("use",var_01); wait(var_01); if(isagent(self)) { scripts\common\utility::func_1C6E(0); if(isdefined(param_00.var_C270)) { param_00.var_C270 disableplayeruse(self); } } if(isdefined(param_00.var_C270)) { if(!isdefined(param_00.var_C270.var_2EFA)) { param_00.var_C270.var_2EFA = []; } param_00.var_C270.var_2EFA[param_00.var_C270.var_2EFA.size] = self; } } //Function Number: 89 func_12FAF(param_00) { if(isagent(self)) { scripts\common\utility::func_1C6E(1); param_00.var_C270 enableplayeruse(self); wait(0.05); } if(isdefined(param_00.var_C270) && isdefined(param_00.var_C270.var_2F33)) { var_01 = param_00.var_C270.var_2F33; if(isdefined(level.var_2E55[var_01])) { self [[ level.var_2E55[var_01] ]](param_00.var_C270); } if(isdefined(param_00.var_C270)) { var_02 = level.var_2F30[param_00.var_C270.var_2F33].var_130EE / 1000 + 0.5; self botpressbutton("use",var_02); wait(var_02); if(isdefined(level.var_2E52[var_01])) { self [[ level.var_2E52[var_01] ]](param_00.var_C270); } } } if(isagent(self)) { scripts\common\utility::func_1C6E(0); if(isdefined(param_00.var_C270)) { param_00.var_C270 disableplayeruse(self); } } } //Function Number: 90 func_1392B(param_00) { thread func_2ED0(param_00.var_C270); } //Function Number: 91 func_11052(param_00) { if(isdefined(param_00.var_C270)) { param_00.var_C270.var_2EEB[self.team] = 0; } } //Function Number: 92 func_2ED0(param_00) { param_00 endon("death"); param_00 endon("revived"); param_00 endon("disconnect"); level endon("game_ended"); var_01 = self.team; scripts\common\utility::waittill_any_3("death","disconnect"); if(isdefined(param_00)) { param_00.var_2EEB[var_01] = 0; } } //Function Number: 93 func_2EB0() { 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("player_useRadius"); for(;;) { wait(3); if(self usebuttonpressed()) { continue; } if(scripts\mp\_utility::func_9FC6()) { continue; } var_01 = level.var_3A59; for(var_02 = 0;var_02 < var_01.size;var_02++) { var_03 = var_01[var_02]; if(!isdefined(var_03)) { continue; } if(distancesquared(self.origin,var_03.origin) < var_00 * var_00) { if(var_03.var_222 == self) { self botpressbutton("use",level.var_485C / 1000 + 0.5); continue; } self botpressbutton("use",level.var_4859 / 1000 + 0.5); } } } } //Function Number: 94 func_2EB5() { self notify("bot_think_revive"); self endon("bot_think_revive"); self endon("death"); self endon("disconnect"); level endon("game_ended"); if(!level.teambased) { return; } for(;;) { var_00 = 2; var_01 = getentarray("revive_trigger","targetname"); if(var_01.size > 0) { var_00 = 0.05; } level scripts\common\utility::waittill_notify_or_timeout("player_last_stand",var_00); if(!func_2D23()) { continue; } var_01 = getentarray("revive_trigger","targetname"); if(var_01.size > 1) { var_01 = sortbydistance(var_01,self.origin); if(isdefined(self.var_222)) { for(var_02 = 0;var_02 < var_01.size;var_02++) { if(var_01[var_02].var_222 != self.var_222) { 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_222; if(!isdefined(var_05)) { continue; } if(var_05 == self) { continue; } if(!isalive(var_05)) { continue; } if(var_05.team != self.team) { continue; } if(!isdefined(var_05.inlaststand) || !var_05.inlaststand) { continue; } if(isdefined(var_05.var_2EEB) && isdefined(var_05.var_2EEB[self.team]) && var_05.var_2EEB[self.team] > 0) { continue; } if(distancesquared(self.origin,var_05.origin) < 4194304) { var_06 = spawnstruct(); var_06.var_C270 = var_04; var_06.var_EDC9 = 64; if(isdefined(self.var_A8FB) && gettime() - self.var_A8FB < 1000) { var_06.var_EDC9 = 32; } var_06.var_10D46 = ::func_1392C; var_06.var_6302 = ::func_11039; var_06.var_FF0D = ::func_D261; var_06.var_157C = ::func_E4A0; scripts\mp\bots\_bots_strategy::func_2E27("revive",var_05.origin,60,var_06); break; } } } } //Function Number: 95 func_1392C(param_00) { thread func_2ED0(param_00.var_C270.var_222); } //Function Number: 96 func_11039(param_00) { if(isdefined(param_00.var_C270.var_222)) { param_00.var_C270.var_222.var_2EEB[self.team] = 0; } } //Function Number: 97 func_D261(param_00) { if(!isdefined(param_00.var_C270.var_222) || param_00.var_C270.var_222.health <= 0) { return 1; } if(!isdefined(param_00.var_C270.var_222.inlaststand) || !param_00.var_C270.var_222.inlaststand) { return 1; } return 0; } //Function Number: 98 func_E4A0(param_00) { if(distancesquared(self.origin,param_00.var_C270.var_222.origin) > 4096) { self.var_A8FB = gettime(); return; } if(isagent(self)) { scripts\common\utility::func_1C6E(1); param_00.var_C270 enableplayeruse(self); wait(0.05); } var_01 = self.team; self botpressbutton("use",level.var_AA15 / 1000 + 0.5); wait(level.var_AA15 / 1000 + 1.5); if(isdefined(param_00.var_C270.var_222)) { param_00.var_C270.var_2EEB[var_01] = 0; } if(isagent(self)) { scripts\common\utility::func_1C6E(0); if(isdefined(param_00.var_C270)) { param_00.var_C270 disableplayeruse(self); } } } //Function Number: 99 func_2D23() { if(isdefined(self.var_1B3) && self.var_1B3 == 1) { return 0; } if(scripts\mp\bots\_bots_strategy::func_2DC5("revive")) { return 0; } if(scripts\mp\bots\_bots_util::func_2DE0()) { return 0; } if(scripts\mp\bots\_bots_util::func_2DD4()) { return 1; } var_00 = self botgetscriptgoaltype(); if(var_00 == "none" || var_00 == "hunt" || var_00 == "guard") { return 1; } return 0; } //Function Number: 100 func_E4A7(param_00) { self endon("death"); self endon("disconnect"); self endon("bad_path"); self endon("goal"); param_00 scripts\common\utility::waittill_any_3("death","revived"); self notify("bad_path"); } //Function Number: 101 func_2DF8() { self endon("death"); self endon("disconnect"); level endon("game_ended"); if(gettime() > 15000) { return; } while(!scripts\mp\_utility::func_7672() || !scripts\mp\_utility::func_766C("prematch_done")) { wait(0.05); } var_00 = undefined; var_01 = undefined; for(var_02 = 0;var_02 < level.players.size;var_02++) { var_03 = level.players[var_02]; if(isdefined(var_03) && isdefined(self.team) && isdefined(var_03.team) && function_0106(self.team,var_03.team)) { if(!isdefined(var_03.var_2EA2)) { var_00 = var_03; } if(isai(var_03) && !isdefined(var_03.var_2EA1)) { var_01 = var_03; } } } if(isdefined(var_00)) { self.var_2EA1 = 1; var_00.var_2EA2 = 1; self getenemyinfo(var_00); } if(isdefined(var_01)) { var_01.var_2EA1 = 1; self.var_2EA2 = 1; var_01 getenemyinfo(self); } } //Function Number: 102 func_2E16(param_00,param_01) { if(isdefined(param_01)) { return self method_81F1(param_00,param_01); } return self method_81F1(param_00); } //Function Number: 103 func_2EB1() { self notify("bot_think_gametype"); self endon("bot_think_gametype"); self endon("death"); self endon("disconnect"); level endon("game_ended"); scripts\mp\_utility::func_7670("prematch_done"); self thread [[ level.var_2D9E["gametype_think"] ]](); } //Function Number: 104 func_4FF3() { } //Function Number: 105 func_B9A3() { for(;;) { level waittill("smoke",var_00,var_01); if(var_01 == "smoke_grenade_mp") { var_00 thread func_B9A2(); } } } //Function Number: 106 func_B9A2() { self endon("late_death"); thread func_1036D(); self waittill("explode",var_00); wait(1); var_01 = spawn("script_model",var_00); var_01 show(); var_02 = getent("smoke_grenade_sight_clip_256","targetname"); if(isdefined(var_02)) { var_01 clonebrushmodeltoscriptmodel(var_02); } wait(9.25); var_01 delete(); } //Function Number: 107 func_1036D() { self endon("explode"); self waittill("death"); waittillframeend; self notify("late_death"); } //Function Number: 108 func_2D04(param_00) { var_01 = 0; param_00.var_2F33 = "scavenger_bag"; param_00.var_2F32 = 1; if(!isdefined(level.var_2E6A)) { level.var_2E6A = []; } foreach(var_04, var_03 in level.var_2E6A) { if(!isdefined(var_03)) { var_01 = 1; level.var_2E6A[var_04] = param_00; break; } } if(!var_01) { level.var_2E6A[level.var_2E6A.size] = param_00; } foreach(var_06 in level.var_C928) { if(isai(var_06) && var_06 scripts\mp\_utility::_hasperk("specialty_scavenger")) { var_06 notify("new_crate_to_take"); } } } //Function Number: 109 func_2EBB() { var_00 = getentarray("bot_flag_set","targetname"); foreach(var_02 in var_00) { if(!isdefined(var_02.script_noteworthy)) { continue; } var_02 thread func_2D94(var_02.script_noteworthy); } } //Function Number: 110 func_2D94(param_00) { self endon("death"); for(;;) { self waittill("trigger",var_01); if(scripts\mp\_utility::func_9D2D(var_01)) { var_01 notify("flag_trigger_set_" + param_00); var_01 botsetflag(param_00,1); var_01 thread func_2D95(param_00); } } } //Function Number: 111 func_2D95(param_00) { self endon("flag_trigger_set_" + param_00); self endon("death"); self endon("disconnect"); level endon("game_ended"); scripts\common\utility::func_136F7(); waittillframeend; self botsetflag(param_00,0); }