Added AW, BO2, Ghosts, IW, MWR, WW2 Scripts

This commit is contained in:
InfinityLoader
2023-10-27 03:49:01 -04:00
parent d559c1d414
commit fbfff3c275
5072 changed files with 3221958 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,677 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\_bots_fireteam.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 24
* Decompile Time: 1066 ms
* Timestamp: 10/27/2023 12:27:30 AM
*******************************************************************/
//Function Number: 1
func_2D92()
{
}
//Function Number: 2
func_2D8E()
{
level.var_2EF1 = [];
level thread func_2D8B();
}
//Function Number: 3
func_2D8B()
{
self notify("bot_connect_monitor");
self endon("bot_connect_monitor");
level.var_2EF0 = [];
for(;;)
{
foreach(var_01 in level.players)
{
if(!isbot(var_01) && !isdefined(var_01.var_D99A))
{
if(isdefined(var_01.team) && var_01.team == "allies" || var_01.team == "axis")
{
var_01.var_D99A = 1;
level.var_2EF0[var_01.team] = var_01;
level.var_2EF1[var_01.team] = 0;
var_02 = scripts\mp\bots\_bots_util::func_2DB5();
if(level.var_2EF0.size == 2)
{
scripts\mp\bots\_bots::func_5CE4(var_02 - 1,var_01.team);
}
scripts\mp\bots\_bots::func_10656(var_02 - 1,var_01.team,::func_2D93);
if(level.var_2EF0.size == 1)
{
var_03 = 0;
foreach(var_05 in level.players)
{
if(isdefined(var_05) && !isbot(var_05))
{
var_03++;
}
}
if(var_03 == 1)
{
scripts\mp\bots\_bots::func_10656(var_02 - 1,scripts\common\utility::func_7984(var_01.team));
}
}
}
}
}
wait(0.25);
}
}
//Function Number: 4
func_2D93()
{
self.var_C80E = ::func_2D91;
self.var_6D88 = level.var_2EF0[self.var_2EAC];
thread func_2D90();
}
//Function Number: 5
func_2D91()
{
self.var_4009 = ::func_2D8F;
return "callback";
}
//Function Number: 6
func_2D8F()
{
if(isdefined(self.var_2EE3))
{
return self.var_2EE3;
}
self.var_4006 = level.var_2EF1[self.team];
level.var_2EF1[self.team] = level.var_2EF1[self.team] + 1;
if(self.var_4006 == 5)
{
self.var_4006 = 0;
}
var_00["loadoutPrimary"] = self.var_6D88 func_2D85(self.var_4006,0);
var_00["loadoutPrimaryAttachment"] = self.var_6D88 func_2D86(self.var_4006,0);
var_00["loadoutPrimaryAttachment2"] = self.var_6D88 func_2D87(self.var_4006,0);
var_00["loadoutPrimaryCamo"] = self.var_6D88 func_2D89(self.var_4006,0);
var_00["loadoutPrimaryReticle"] = self.var_6D88 func_2D8A(self.var_4006,0);
var_00["loadoutSecondary"] = self.var_6D88 func_2D85(self.var_4006,1);
var_00["loadoutSecondaryAttachment"] = self.var_6D88 func_2D86(self.var_4006,1);
var_00["loadoutSecondaryAttachment2"] = self.var_6D88 func_2D87(self.var_4006,1);
var_00["loadoutSecondaryCamo"] = self.var_6D88 func_2D89(self.var_4006,1);
var_00["loadoutSecondaryReticle"] = self.var_6D88 func_2D8A(self.var_4006,1);
var_00["loadoutEquipment"] = self.var_6D88 func_2D82(self.var_4006);
var_00["loadoutOffhand"] = self.var_6D88 func_2D83(self.var_4006);
var_00["loadoutPerk1"] = self.var_6D88 func_2D81(self.var_4006,2);
var_00["loadoutPerk2"] = self.var_6D88 func_2D81(self.var_4006,3);
var_00["loadoutPerk3"] = self.var_6D88 func_2D81(self.var_4006,4);
var_00["loadoutStreakType"] = self.var_6D88 func_2D81(self.var_4006,5);
if(var_00["loadoutStreakType"] != "specialty_null")
{
var_01 = getsubstr(var_00["loadoutStreakType"],11) + "Streaks";
var_00["loadoutStreak1"] = self.var_6D88 func_2D84(self.var_4006,var_01,0);
if(var_00["loadoutStreak1"] == "none")
{
var_00["loadoutStreak1"] = undefined;
}
var_00["loadoutStreak2"] = self.var_6D88 func_2D84(self.var_4006,var_01,1);
if(var_00["loadoutStreak2"] == "none")
{
var_00["loadoutStreak2"] = undefined;
}
var_00["loadoutStreak3"] = self.var_6D88 func_2D84(self.var_4006,var_01,2);
if(var_00["loadoutStreak3"] == "none")
{
var_00["loadoutStreak3"] = undefined;
}
}
self.var_2EE3 = var_00;
return var_00;
}
//Function Number: 7
func_2D85(param_00,param_01)
{
return self getplayerdata(level.var_AEA6,"squadMembers",param_00,"weaponSetups",param_01,"weapon");
}
//Function Number: 8
func_2D86(param_00,param_01)
{
return self getplayerdata(level.var_AEA6,"squadMembers",param_00,"weaponSetups",param_01,"attachment",0);
}
//Function Number: 9
func_2D87(param_00,param_01)
{
return self getplayerdata(level.var_AEA6,"squadMembers",param_00,"weaponSetups",param_01,"attachment",1);
}
//Function Number: 10
func_2D89(param_00,param_01)
{
return self getplayerdata(level.var_AEA6,"squadMembers",param_00,"weaponSetups",param_01,"camo");
}
//Function Number: 11
func_2D8A(param_00,param_01)
{
return self getplayerdata(level.var_AEA6,"squadMembers",param_00,"weaponSetups",param_01,"reticle");
}
//Function Number: 12
func_2D82(param_00)
{
return self getplayerdata(level.var_AEA6,"squadMembers",param_00,"perks",0);
}
//Function Number: 13
func_2D83(param_00)
{
return self getplayerdata(level.var_AEA6,"squadMembers",param_00,"perks",1);
}
//Function Number: 14
func_2D81(param_00,param_01)
{
return self getplayerdata(level.var_AEA6,"squadMembers",param_00,"perks",param_01);
}
//Function Number: 15
func_2D84(param_00,param_01,param_02)
{
return self getplayerdata(level.var_AEA6,"squadMembers",param_00,param_01,param_02);
}
//Function Number: 16
func_2D7F()
{
var_00 = 250;
var_01 = var_00 * var_00;
if(!scripts\mp\bots\_bots_util::func_2DDA(self.var_222))
{
scripts\mp\bots\_bots_strategy::func_2DC1(self.var_222,var_00);
}
if(distancesquared(self.origin,self.var_222.origin) > var_01)
{
self botsetflag("force_sprint",1);
return;
}
if(self.var_222 method_81BD())
{
self botsetflag("force_sprint",1);
return;
}
self botsetflag("force_sprint",0);
}
//Function Number: 17
func_2D7E()
{
self endon("buddy_cancel");
self endon("disconnect");
self notify("buddy_search_start");
self endon("buddy_search_start");
for(;;)
{
if(isalive(self) && !isdefined(self.var_2D8C))
{
if(isdefined(self.var_222))
{
if(self.sessionstate == "playing")
{
if(!self.var_222.var_452B)
{
self.var_222.var_2D8C = undefined;
self.var_222 = undefined;
}
else if(isdefined(level.var_6D88[self.team]))
{
if(isdefined(level.var_6D88[self.team].var_4447) && level.var_6D88[self.team].var_4447 == self)
{
self.var_222.var_2D8C = undefined;
self.var_222.var_222 = level.var_6D88[self.team];
self.var_222.var_CA7B = ::func_2D7F;
self.var_222 = undefined;
}
else if(isdefined(level.var_6D88[self.team].var_4447) && level.var_6D88[self.team].var_4447 == self.var_222)
{
self.var_222.var_2D8C = undefined;
self.var_222 = level.var_6D88[self.team];
self.var_222.var_2D8C = self;
}
else if(self.var_222 == level.var_6D88[self.team] && !isdefined(self.var_222.var_4447))
{
self.var_222.var_2D8C = undefined;
if(isdefined(self.var_222.var_A89D))
{
self.var_222 = self.var_222.var_A89D;
self.var_222.var_2D8C = self;
}
else
{
self.var_222 = undefined;
}
}
}
}
else if(isdefined(level.var_6D88[self.team]))
{
if(isdefined(level.var_6D88[self.team].var_4447) && level.var_6D88[self.team].var_4447 == self)
{
self.var_222.var_2D8C = undefined;
self.var_222.var_222 = level.var_6D88[self.team];
self.var_222.var_CA7B = ::func_2D7F;
self.var_222 = undefined;
}
}
}
if(self.sessionstate == "playing")
{
if(!isdefined(self.var_222))
{
var_00 = [];
foreach(var_02 in level.players)
{
if(var_02 != self && var_02.team == self.team)
{
if(isalive(var_02) && var_02.sessionstate == "playing" && !isdefined(var_02.var_2D8C) && !isdefined(var_02.var_222))
{
var_00[var_00.size] = var_02;
}
}
}
if(var_00.size > 0)
{
var_04 = scripts\common\utility::getclosest(self.origin,var_00);
if(isdefined(var_04))
{
self.var_222 = var_04;
self.var_222.var_2D8C = self;
}
}
}
}
if(isdefined(self.var_222))
{
self.var_CA7B = ::func_2D7F;
}
else
{
scripts\mp\bots\_bots_personality::func_2D0C();
}
}
wait(0.5);
}
}
//Function Number: 18
func_6D94(param_00)
{
var_01 = [];
foreach(var_03 in level.players)
{
if(var_03.team == param_00)
{
if(var_03.var_452B && isalive(var_03) && var_03.sessionstate == "playing")
{
if(!isbot(var_03))
{
level.var_6D8C[param_00] = var_03;
return 1;
}
else
{
var_01[var_01.size] = var_03;
}
}
}
}
if(!isdefined(level.var_6D8C[param_00]))
{
if(var_01.size > 0)
{
if(var_01.size == 1)
{
level.var_6D8C[param_00] = var_01[0];
}
else
{
level.var_6D8C[param_00] = var_01[randomint(var_01.size)];
}
return 1;
}
}
return 0;
}
//Function Number: 19
func_6D92(param_00)
{
level notify("hunting_party_end_" + param_00);
level.var_6D8C[param_00] = undefined;
level.var_6D8E[param_00] = undefined;
level.var_2E5E[param_00] = ::scripts\mp\bots\_bots_personality::func_2E5D;
}
//Function Number: 20
func_6D93(param_00,param_01)
{
var_02 = 0;
var_03 = undefined;
var_04 = -1;
if(level.var_13FBD > 0)
{
for(var_05 = 0;var_05 < level.var_13FBD;var_05++)
{
var_06 = botzonegetcount(var_05,param_01,"enemy_predict");
if(var_06 < var_02)
{
continue;
}
var_07 = undefined;
if(var_06 == var_02)
{
var_07 = function_00F2(param_00,var_05);
if(!isdefined(var_07))
{
continue;
}
if(var_04 >= 0 && var_07.size > var_04)
{
continue;
}
}
var_02 = var_06;
var_03 = var_05;
if(isdefined(var_07))
{
var_04 = var_07.size;
continue;
}
var_04 = -1;
}
}
return var_03;
}
//Function Number: 21
func_6D91(param_00)
{
level endon("hunting_party_end_" + param_00);
self endon("disconnect");
level endon("game_ended");
if(level.var_13FBD <= 0)
{
return;
}
level.var_2E5E[param_00] = ::func_2D8D;
for(;;)
{
var_01 = 3;
if(!isdefined(level.var_6D8C[param_00]) || isbot(level.var_6D8C[param_00]) || isdefined(level.var_6D8C[param_00].var_4447))
{
func_6D94(param_00);
}
if(isdefined(level.var_6D8C[param_00]))
{
var_02 = getzonenearest(level.var_6D8C[param_00].origin);
if(!isdefined(var_02))
{
wait(var_01);
continue;
}
if(!isbot(level.var_6D8C[param_00]))
{
if(isalive(level.var_6D8C[param_00]) && level.var_6D8C[param_00].sessionstate == "playing" && !isdefined(level.var_6D8C[param_00].var_4E72) || level.var_6D8C[param_00].var_4E72 + 5000 < gettime())
{
level.var_6D8E[param_00] = var_02;
level.var_6D8D[param_00] = gettime() + 1000;
var_01 = 0.5;
}
else
{
var_01 = 1;
}
}
else
{
var_03 = 0;
var_04 = 0;
var_05 = undefined;
if(isdefined(level.var_6D8E[param_00]))
{
var_05 = level.var_6D8E[param_00];
}
else
{
var_03 = 1;
var_04 = 1;
var_05 = var_02;
}
var_06 = undefined;
if(isdefined(var_05))
{
var_06 = func_6D93(var_02,param_00);
if(!var_03)
{
if(!isdefined(var_06) || var_06 != var_05)
{
if(var_05 == var_02)
{
var_04 = 1;
}
else if(gettime() > level.var_6D8D[param_00])
{
var_04 = 1;
}
}
}
if(var_04)
{
if(!isdefined(var_06))
{
var_07 = 0;
var_08 = -1;
for(var_09 = 0;var_09 < level.var_13FBD;var_09++)
{
var_0A = distance2d(getzoneorigin(var_09),level.var_6D8C[param_00].origin);
if(var_0A > var_07)
{
var_07 = var_0A;
var_08 = var_09;
}
}
var_06 = var_08;
}
if(isdefined(var_06))
{
if(!isdefined(level.var_6D8E[param_00]) || level.var_6D8E[param_00] != var_06)
{
foreach(var_0C in level.players)
{
if(isbot(var_0C) && var_0C.team == param_00)
{
var_0C botclearscriptgoal();
var_0C.var_6D8B = undefined;
var_0C thread func_2D8D();
}
}
}
level.var_6D8E[param_00] = var_06;
level.var_6D8D[param_00] = gettime() + 12000;
}
}
}
}
}
wait(var_01);
}
}
//Function Number: 22
func_2D49()
{
self notify("bot_debug_script_goal");
level endon("hunting_party_end_" + self.team);
self endon("bot_debug_script_goal");
var_00 = 48;
for(;;)
{
if(self bothasscriptgoal())
{
var_01 = self botgetscriptgoal();
if(!isdefined(self.var_6D8B))
{
}
else if(self.var_6D8B != var_01)
{
}
else
{
}
}
else if(isdefined(self.var_6D8B))
{
}
wait(0.05);
}
}
//Function Number: 23
func_2D8D()
{
var_00 = 0;
var_01 = undefined;
if(isdefined(level.var_6D8E[self.team]))
{
var_02 = function_00EF(level.var_6D8E[self.team],0);
if(var_02.size <= 18)
{
var_02 = function_00EF(level.var_6D8E[self.team],1);
if(var_02.size <= 18)
{
var_02 = function_00EF(level.var_6D8E[self.team],2);
if(var_02.size <= 18)
{
var_02 = function_00EF(level.var_6D8E[self.team],3);
}
}
}
if(var_02.size <= 0)
{
return scripts\mp\bots\_bots_personality::func_2E5D();
}
var_01 = self botnodepick(var_02,var_02.size,"node_hide");
var_03 = 0;
while(!isdefined(var_01) || !self method_8042(var_01))
{
var_03++;
if(var_03 >= 10)
{
return scripts\mp\bots\_bots_personality::func_2E5D();
}
var_01 = var_02[randomint(var_02.size)];
}
var_04 = var_01.origin;
if(isdefined(var_04))
{
var_05 = "guard";
var_06 = getzonenearest(self.origin);
if(isdefined(var_06) && var_06 == level.var_6D8E[self.team])
{
self botsetflag("force_sprint",0);
}
else
{
self botsetflag("force_sprint",1);
}
var_00 = self botsetscriptgoal(var_04,128,var_05);
self.var_6D8B = var_04;
}
}
if(!var_00)
{
return scripts\mp\bots\_bots_personality::func_2E5D();
}
return var_00;
}
//Function Number: 24
func_2D90()
{
level endon("game_ended");
self endon("disconnect");
self notify("bot_fireteam_monitor_killstreak_earned");
self endon("bot_fireteam_monitor_killstreak_earned");
for(;;)
{
self waittill("bot_killstreak_earned",var_00,var_01);
if(scripts\mp\_utility::func_2DD9())
{
if(isdefined(self) && isbot(self))
{
if(isdefined(self.var_6D88))
{
var_02 = undefined;
if(isdefined(self.var_6D88.var_4447))
{
var_02 = self.var_6D88.var_4447;
}
else
{
var_02 = self.var_6D88 method_815D();
}
if(!isdefined(var_02) || var_02 != self)
{
self.var_6D88 thread scripts\mp\_hud_message::func_10151(var_00,var_01,self);
}
}
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,840 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\_bots_killstreaks.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 34
* Decompile Time: 1522 ms
* Timestamp: 10/27/2023 12:27:33 AM
*******************************************************************/
//Function Number: 1
func_2DF3()
{
if(!isdefined(level.var_A68C))
{
if(!isdefined(level.var_A68C))
{
level.var_A68C = [];
}
if(!isdefined(level.var_A68B))
{
level.var_A68B = [];
}
if(!isdefined(level.var_A68D))
{
level.var_A68D = [];
}
if(!isdefined(level.var_2EA4))
{
level.var_2EA4 = [];
}
func_2E63("nuke",::func_2DF4);
func_2E63("ball_drone_backup",::func_2DF4);
func_2E63("jackal",::func_2DF4);
func_2E63("uav",::func_2DF4);
func_2E63("counter_uav",::func_2DF4);
func_2E63("jammer",::func_2DF4,::func_2D28);
func_2E63("directional_uav",::func_2DF4);
if(isdefined(level.var_B32F))
{
[[ level.var_B32F ]]();
}
}
thread scripts\mp\bots\_bots_killstreaks_remote_vehicle::func_DF76();
}
//Function Number: 2
func_2E63(param_00,param_01,param_02,param_03)
{
level.var_A68C[param_00] = param_01;
level.var_A68B[param_00] = param_02;
level.var_A68D[param_00] = param_03;
level.var_2EA4[level.var_2EA4.size] = param_00;
}
//Function Number: 3
func_2DF5(param_00,param_01,param_02)
{
if(scripts\mp\_utility::func_2DD9())
{
return 1;
}
if(func_2DEE(param_00,"bots",undefined,param_01))
{
return 1;
}
else if(param_02)
{
}
return 0;
}
//Function Number: 4
func_2DEE(param_00,param_01,param_02,param_03)
{
var_04 = undefined;
if(param_00 == "specialist")
{
return 1;
}
if(!func_2DEF(param_00,param_01))
{
return 0;
}
if(isdefined(param_03))
{
var_04 = getsubstr(param_03,11);
switch(var_04)
{
case "assault":
if(!scripts\mp\_utility::func_9D4E(param_00))
{
return 0;
}
break;
case "support":
if(!scripts\mp\_utility::func_9F8E(param_00))
{
return 0;
}
break;
case "specialist":
if(!scripts\mp\_utility::func_9F6F(param_00))
{
return 0;
}
break;
}
}
return 1;
}
//Function Number: 5
func_2DEF(param_00,param_01)
{
if(param_01 == "humans")
{
return isdefined(level.var_A6B2[param_00]) && scripts\mp\_utility::func_7F44(param_00) != -1;
}
else if(param_01 == "bots")
{
return isdefined(level.var_A68C[param_00]);
}
}
//Function Number: 6
func_2ED1()
{
self notify("bot_watch_for_killstreak_use");
self endon("bot_watch_for_killstreak_use");
self endon("death");
self endon("disconnect");
level endon("game_ended");
for(;;)
{
self waittill("killstreak_use_finished");
scripts\mp\_utility::_switchtoweapon("none");
}
}
//Function Number: 7
func_2DDB(param_00)
{
if(!isdefined(param_00))
{
return 0;
}
if(!isdefined(level.var_A68C[param_00]))
{
return 0;
}
return 1;
}
//Function Number: 8
func_2D29(param_00)
{
var_01 = level.var_A68B[param_00];
if(!isdefined(var_01))
{
return 0;
}
if(isdefined(var_01) && !self [[ var_01 ]]())
{
return 0;
}
return 1;
}
//Function Number: 9
func_2EB2()
{
self notify("bot_think_killstreak");
self endon("bot_think_killstreak");
self endon("death");
self endon("disconnect");
level endon("game_ended");
while(!isdefined(level.var_A68C))
{
wait(0.05);
}
childthread func_2EA0();
childthread func_2ED1();
for(;;)
{
if(scripts\mp\bots\_bots_util::func_2D0A())
{
var_00 = self.pers["killstreaks"];
if(isdefined(var_00))
{
foreach(var_02 in var_00)
{
if(!isdefined(var_02))
{
continue;
}
if(isdefined(var_02.var_110EA) && isdefined(self.var_2DF7) && isdefined(self.var_2DF7[var_02.var_110EA]) && gettime() < self.var_2DF7[var_02.var_110EA])
{
continue;
}
if(var_02.var_269A)
{
var_03 = var_02.var_110EA;
if(var_02.var_110EA == "all_perks_bonus")
{
continue;
}
if(scripts\mp\_utility::func_9F6F(var_02.var_110EA))
{
if(!var_02.var_9E0B)
{
var_03 = "specialist";
}
else
{
continue;
}
}
var_02.var_394 = scripts\mp\_utility::func_7F55(var_02.var_110EA);
var_04 = level.var_A68B[var_03];
if(isdefined(var_04) && !self [[ var_04 ]]())
{
continue;
}
if(!scripts\mp\_utility::validateusestreak(var_02.var_110EA,1))
{
continue;
}
var_05 = level.var_A68C[var_03];
if(isdefined(var_05))
{
var_06 = self [[ var_05 ]](var_02,var_00,var_04,level.var_A68D[var_02.var_110EA]);
if(!isdefined(var_06) || var_06 == 0)
{
if(!isdefined(self.var_2DF7))
{
self.var_2DF7 = [];
}
self.var_2DF7[var_02.var_110EA] = gettime() + 5000;
}
}
else
{
if(level.gametype != "grnd")
{
}
var_02.var_269A = 0;
}
break;
}
}
}
}
wait(randomfloatrange(1,2));
}
}
//Function Number: 10
func_2D24()
{
return 0;
}
//Function Number: 11
func_2EA0()
{
var_00 = scripts\mp\killstreaks\_aalauncher::func_7D8F();
for(;;)
{
self waittill("aa_launcher_fire");
var_01 = self method_80FB(var_00);
if(var_01 == 0)
{
scripts\mp\_utility::_switchtoweapon(var_00);
var_02 = scripts\common\utility::func_13734("LGM_player_allMissilesDestroyed","enemy");
wait(0.5);
scripts\mp\_utility::_switchtoweapon("none");
}
}
}
//Function Number: 12
func_2DF0()
{
}
//Function Number: 13
func_2D25()
{
if(!func_18DB())
{
return 0;
}
var_00 = scripts\mp\killstreaks\_air_superiority::func_6CAA(self,self.team);
var_01 = gettime();
foreach(var_03 in var_00)
{
if(var_01 - var_03.var_64 > 5000)
{
return 1;
}
}
return 0;
}
//Function Number: 14
func_18DB()
{
if(scripts\mp\_utility::func_9D31())
{
return 0;
}
if(func_1325A())
{
return 0;
}
return 1;
}
//Function Number: 15
func_1325A()
{
return scripts\mp\_utility::func_4BD7() >= scripts\mp\_utility::func_B4D2() || level.var_6BAA + 1 >= scripts\mp\_utility::func_B4D2();
}
//Function Number: 16
func_2D28()
{
if(isdefined(level.var_61AD))
{
return 0;
}
var_00 = level.var_C74B[self.team];
if(isdefined(level.var_115C9) && isdefined(level.var_115C9[var_00]) && level.var_115C9[var_00])
{
return 0;
}
return 1;
}
//Function Number: 17
func_2D26()
{
if(scripts\mp\_utility::func_9FC6())
{
return 0;
}
if(scripts\mp\killstreaks\_ball_drone::func_68C0())
{
return 0;
}
if(func_1325A())
{
return 0;
}
if(isdefined(self.var_27D3))
{
return 0;
}
return 1;
}
//Function Number: 18
func_2DF4(param_00,param_01,param_02,param_03)
{
self endon("commander_took_over");
self endon("death");
self endon("disconnect");
level endon("game_ended");
wait(randomintrange(3,5));
if(!scripts\mp\bots\_bots_util::func_2D0A())
{
return 1;
}
if(isdefined(param_02) && !self [[ param_02 ]]())
{
return 0;
}
func_2EA5(param_00,param_01,param_00.var_394);
return 1;
}
//Function Number: 19
func_2DE6(param_00,param_01,param_02,param_03)
{
func_2DE5(param_00,param_01,param_02,param_03,"anywhere");
}
//Function Number: 20
func_2DE8(param_00,param_01,param_02,param_03)
{
func_2DE5(param_00,param_01,param_02,param_03,"outside");
}
//Function Number: 21
func_2DE7(param_00,param_01,param_02,param_03)
{
func_2DE5(param_00,param_01,param_02,param_03,"hidden");
}
//Function Number: 22
func_2DE5(param_00,param_01,param_02,param_03,param_04)
{
self endon("commander_took_over");
wait(randomintrange(2,4));
if(!isdefined(param_04))
{
param_04 = "anywhere";
}
if(!scripts\mp\bots\_bots_util::func_2D0A())
{
return 1;
}
if(isdefined(param_02) && !self [[ param_02 ]]())
{
return 0;
}
var_05 = self getweaponammoclip(param_00.var_394) + self getweaponammostock(param_00.var_394);
if(var_05 == 0)
{
foreach(var_07 in param_01)
{
if(isdefined(var_07.var_110EA) && var_07.var_110EA == param_00.var_110EA)
{
var_07.var_269A = 0;
}
}
return 1;
}
var_09 = undefined;
if(var_07 == "outside")
{
var_0A = [];
var_0B = scripts\mp\bots\_bots_util::func_2DB1(750,0.6,1);
foreach(var_0D in var_0B)
{
if(function_014A(var_0D))
{
var_0A = scripts\common\utility::array_add(var_0A,var_0D);
}
}
if(var_0B.size > 5 && var_0A.size > var_0B.size * 0.6)
{
var_0F = scripts\common\utility::func_782F(self.origin,var_0A,undefined,undefined,undefined,150);
if(var_0F.size > 0)
{
var_09 = scripts\common\utility::random(var_0F);
}
else
{
var_09 = scripts\common\utility::random(var_0A);
}
}
}
else if(var_07 == "hidden")
{
var_10 = getnodesinradius(self.origin,256,0,40);
var_11 = self getnearestnode();
if(isdefined(var_11))
{
var_12 = [];
foreach(var_0D in var_10)
{
if(nodesvisible(var_11,var_0D,1))
{
var_12 = scripts\common\utility::array_add(var_12,var_0D);
}
}
var_09 = self botnodepick(var_12,1,"node_hide");
}
}
if(isdefined(var_09) || var_07 == "anywhere")
{
self botsetflag("disable_movement",1);
if(isdefined(var_09))
{
self botlookatpoint(var_09.origin,2.45,"script_forced");
}
func_2EA5(param_03,param_04,param_03.var_394);
wait(2);
self botpressbutton("attack");
wait(1.5);
scripts\mp\_utility::_switchtoweapon("none");
self botsetflag("disable_movement",0);
}
return 1;
}
//Function Number: 23
func_2EA5(param_00,param_01,param_02)
{
func_2E29(param_00,param_01);
}
//Function Number: 24
func_2E29(param_00,param_01)
{
if(isdefined(param_00.var_9E10) && param_00.var_9E10)
{
self notify("ks_action_6");
return;
}
var_02 = 1;
while(var_02 < 4)
{
if(isdefined(param_01[var_02]))
{
if(isdefined(param_01[var_02].var_110EA))
{
if(param_01[var_02].var_110EA == param_00.var_110EA)
{
var_03 = var_02 + 2;
self notify("ks_action_" + var_03);
return;
}
}
}
var_03++;
}
}
//Function Number: 25
func_2DE4(param_00,param_01,param_02,param_03)
{
self endon("commander_took_over");
wait(randomintrange(3,5));
if(!scripts\mp\bots\_bots_util::func_2D0A())
{
return;
}
var_04 = getzonenearest(self.origin);
if(!isdefined(var_04))
{
return;
}
self botsetflag("disable_movement",1);
func_2EA5(param_00,param_01,param_00.var_394);
wait(2);
var_05 = level.var_13FBD;
var_06 = -1;
var_07 = 0;
var_08 = [];
var_09 = randomfloat(100) > 50;
for(var_0A = 0;var_0A < var_05;var_0A++)
{
if(var_09)
{
var_0B = var_05 - 1 - var_0A;
}
else
{
var_0B = var_0A;
}
if(var_0B != var_04 && function_0029(var_0B) < 0.25)
{
var_0C = botzonegetcount(var_0B,self.team,"enemy_predict");
if(var_0C > var_07)
{
var_06 = var_0B;
var_07 = var_0C;
}
var_08 = scripts\common\utility::array_add(var_08,var_0B);
}
}
if(var_06 >= 0)
{
var_0D = getzoneorigin(var_06);
}
else if(var_09.size > 0)
{
var_0D = getzoneorigin(scripts\common\utility::random(var_09));
}
else
{
var_0D = getzoneorigin(randomint(level.var_13FBD));
}
var_0E = (randomfloatrange(-500,500),randomfloatrange(-500,500),0);
self notify("confirm_location",var_0D + var_0E,randomintrange(0,360));
wait(1);
self botsetflag("disable_movement",0);
}
//Function Number: 26
func_2EB9()
{
self notify("bot_think_watch_aerial_killstreak");
self endon("bot_think_watch_aerial_killstreak");
self endon("death");
self endon("disconnect");
level endon("game_ended");
if(!isdefined(level.var_A8C2))
{
level.var_A8C2 = -10000;
}
level.var_A68F["allies"] = [];
level.var_A68F["axis"] = [];
var_00 = 0;
var_01 = randomfloatrange(0.05,4);
for(;;)
{
wait(var_01);
var_01 = randomfloatrange(0.05,4);
if(scripts\mp\bots\_bots_util::func_2DE0())
{
continue;
}
if(self botgetdifficultysetting("strategyLevel") == 0)
{
continue;
}
var_02 = 0;
if(isdefined(level.var_3F14) && level.var_3F14.team != self.team)
{
var_02 = 1;
}
if(isdefined(level.var_AAC8) && level.var_AAC8.team != self.team)
{
var_02 = 1;
}
if(isdefined(level.var_8D79[scripts\common\utility::func_7984(self.team)]))
{
var_02 = 1;
}
if(func_64E8(self.team))
{
var_02 = 1;
func_1286B("mortar_strike",::func_64E8);
}
if(func_6527(self.team))
{
var_02 = 1;
func_1286B("switchblade",::func_6527);
}
if(func_64EC(self.team))
{
var_02 = 1;
func_1286B("odin_assault",::func_64EC);
}
var_03 = func_7985();
if(isdefined(var_03))
{
var_04 = self geteye();
if(scripts\common\utility::func_13D90(var_04,self getplayerangles(),var_03.var_24D1.origin,self botgetfovdot()))
{
if(sighttracepassed(var_04,var_03.var_24D1.origin,0,self,var_03.var_24D1))
{
badplace_cylinder("vanguard_" + var_03 getentitynumber(),var_01 + 0.5,var_03.var_24D1.origin,200,100,self.team);
}
}
}
if(!var_00 && var_02)
{
var_00 = 1;
self botsetflag("hide_indoors",1);
}
if(var_00 && !var_02)
{
var_00 = 0;
self botsetflag("hide_indoors",0);
}
}
}
//Function Number: 27
func_1286B(param_00,param_01)
{
if(!isdefined(level.var_A68F[self.team][param_00]))
{
level.var_A68F[self.team][param_00] = 0;
}
if(!level.var_A68F[self.team][param_00])
{
level.var_A68F[self.team][param_00] = 1;
level thread func_B96A(self.team,param_00,param_01);
}
}
//Function Number: 28
func_B96A(param_00,param_01,param_02)
{
var_03 = 0.5;
while([[ param_02 ]](param_00))
{
if(gettime() > level.var_A8C2 + 4000)
{
badplace_global("",5,param_00,"only_sky");
level.var_A8C2 = gettime();
}
wait(var_03);
}
level.var_A68F[param_00][param_01] = 0;
}
//Function Number: 29
func_64E8(param_00)
{
if(isdefined(level.var_1A69) && level.var_1A69)
{
if(param_00 != level.var_1A6A)
{
return 1;
}
}
return 0;
}
//Function Number: 30
func_6527(param_00)
{
if(isdefined(level.var_DF80))
{
foreach(var_02 in level.var_E5DE)
{
if(isdefined(var_02.type) && var_02.type == "remote" && var_02.team != param_00)
{
return 1;
}
}
}
return 0;
}
//Function Number: 31
func_64EC(param_00)
{
foreach(var_02 in level.players)
{
if(!level.teambased || isdefined(var_02.team) && param_00 != var_02.team)
{
if(isdefined(var_02.var_C2D3) && var_02.var_C2D3.var_C322 == "odin_assault" && gettime() - var_02.var_C2D3.var_64 > 3000)
{
return 1;
}
}
}
return 0;
}
//Function Number: 32
func_7985()
{
foreach(var_01 in level.players)
{
if(!level.teambased || isdefined(var_01.team) && self.team != var_01.team)
{
if(isdefined(var_01.var_DF8A) && var_01.var_DF8A.var_8DD9 == "remote_uav")
{
return var_01.var_DF8A;
}
}
}
return undefined;
}
//Function Number: 33
func_9E66(param_00)
{
return isdefined(level.var_2EDA) && isdefined(level.var_2EDA[param_00]) && level.var_2EDA[param_00];
}
//Function Number: 34
func_2BBA(param_00)
{
level.var_2EDA[param_00] = 1;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,845 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\_bots_personality.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 23
* Decompile Time: 1124 ms
* Timestamp: 10/27/2023 12:27:41 AM
*******************************************************************/
//Function Number: 1
func_F9FD()
{
level.var_2E44 = [];
level.var_2E45 = [];
level.var_2E44["active"][0] = "default";
level.var_2E44["active"][1] = "run_and_gun";
level.var_2E44["active"][2] = "cqb";
level.var_2E44["stationary"][0] = "camper";
level.var_2E46 = [];
foreach(var_05, var_01 in level.var_2E44)
{
foreach(var_03 in var_01)
{
level.var_2E46[var_03] = var_05;
level.var_2E45[level.var_2E45.size] = var_03;
}
}
level.var_2E47 = [];
level.var_2E47["active"] = 2;
level.var_2E47["stationary"] = 1;
level.var_2E42 = [];
level.var_2E42["default"] = ::func_96D4;
level.var_2E42["camper"] = ::func_96D3;
level.var_2E43["default"] = ::func_12E08;
level.var_2E43["camper"] = ::func_12E07;
}
//Function Number: 2
func_2D0C()
{
self.var_CA79 = self method_8035();
self.var_CA7A = level.var_2E42[self.var_CA79];
if(!isdefined(self.var_CA7A))
{
self.var_CA7A = level.var_2E42["default"];
}
self [[ self.var_CA7A ]]();
self.var_CA7B = level.var_2E43[self.var_CA79];
if(!isdefined(self.var_CA7B))
{
self.var_CA7B = level.var_2E43["default"];
}
}
//Function Number: 3
func_2D10()
{
if(isdefined(self.var_CA7C) && self.var_CA7C)
{
return;
}
if(scripts\mp\_utility::func_2DD9())
{
return;
}
var_00 = [];
var_01 = [];
foreach(var_07, var_03 in level.var_2E44)
{
var_01[var_07] = 0;
foreach(var_05 in var_03)
{
var_00[var_05] = 0;
}
}
foreach(var_09 in level.players)
{
if(isbot(var_09) && isdefined(var_09.team) && var_09.team == self.team && var_09 != self && isdefined(var_09.var_8B68))
{
var_05 = var_09 method_8035();
var_07 = level.var_2E46[var_05];
var_00[var_05] = var_00[var_05] + 1;
var_01[var_07] = var_01[var_07] + 1;
}
}
var_0B = undefined;
while(!isdefined(var_0B))
{
for(var_0C = level.var_2E47;var_0C.size > 0;var_0C[var_0D] = undefined)
{
var_0D = scripts\mp\bots\_bots_util::func_2DB4(var_0C,randomint(var_0C.size));
var_01[var_0D] = var_01[var_0D] - level.var_2E47[var_0D];
if(var_01[var_0D] < 0)
{
var_0B = var_0D;
break;
}
}
}
var_0E = undefined;
var_0F = undefined;
var_10 = 9999;
var_11 = undefined;
var_12 = -9999;
var_13 = scripts\common\utility::array_randomize(level.var_2E44[var_0B]);
foreach(var_05 in var_13)
{
if(var_00[var_05] < var_10)
{
var_0F = var_05;
var_10 = var_00[var_05];
}
if(var_00[var_05] > var_12)
{
var_11 = var_05;
var_12 = var_00[var_05];
}
}
if(var_12 - var_10 >= 2)
{
var_0E = var_0F;
}
else
{
var_0E = scripts\common\utility::random(level.var_2E44[var_0B]);
}
if(self method_8035() != var_0E)
{
self botsetpersonality(var_0E);
}
self.var_8B68 = 1;
}
//Function Number: 4
func_96D3()
{
func_413A();
}
//Function Number: 5
func_96D4()
{
func_413A();
}
//Function Number: 6
func_12E07()
{
if(func_FF87() && !scripts\mp\bots\_bots_util::func_2DD7() && !scripts\mp\bots\_bots_util::func_2DE0())
{
var_00 = self botgetscriptgoaltype();
var_01 = 0;
if(!isdefined(self.var_37EB))
{
self.var_37EB = 0;
}
var_02 = var_00 == "hunt";
var_03 = gettime() > self.var_37EB + 10000;
if((!var_02 || var_03) && !scripts\mp\bots\_bots_util::func_2E3B())
{
if(!self bothasscriptgoal())
{
func_2E5C();
}
var_01 = func_6C7E();
if(!var_01)
{
self.var_37EB = gettime();
}
}
if(isdefined(var_01) && var_01)
{
self.var_1E16 = scripts\mp\bots\_bots_util::func_2E58("bot_find_ambush_entrances",::func_2D73,self.var_C02A,1);
var_04 = scripts\mp\bots\_bots_strategy::func_2DA3("trap_directional","trap","c4");
if(isdefined(var_04))
{
var_05 = gettime();
scripts\mp\bots\_bots_strategy::func_2E7E(var_04,self.var_1E16,self.var_C02A,self.var_1E2A);
var_05 = gettime() - var_05;
if(var_05 > 0 && isdefined(self.var_1E14) && isdefined(self.var_C02A))
{
self.var_1E14 = self.var_1E14 + var_05;
self.var_C02A.var_2D0B = self.var_1E14 + 10000;
}
}
if(!scripts\mp\bots\_bots_strategy::func_2DC5() && !scripts\mp\bots\_bots_util::func_2DD7() && isdefined(self.var_C02A))
{
self botsetscriptgoalnode(self.var_C02A,"camp",self.var_1E2A);
thread func_417C("bad_path","node_relinquished","out_of_ammo");
thread func_13961();
thread func_2D03("clear_camper_data","goal");
thread func_2ECF("clear_camper_data","bot_add_ambush_time_delayed",self.var_1E16,self.var_1E2A);
return;
}
return;
}
if(var_00 == "camp")
{
self botclearscriptgoal();
}
func_12E08();
}
}
//Function Number: 7
func_12E08()
{
var_00 = undefined;
var_01 = self bothasscriptgoal();
if(var_01)
{
var_00 = self botgetscriptgoal();
}
if(!scripts\mp\bots\_bots_strategy::func_2DC5() && !scripts\mp\bots\_bots_util::func_2DE0())
{
var_02 = undefined;
var_03 = undefined;
if(var_01)
{
var_02 = distancesquared(self.origin,var_00);
var_03 = self botgetscriptgoalradius();
var_04 = var_03 * 2;
if(isdefined(self.var_2E1F) && var_02 < var_04 * var_04)
{
var_05 = botmemoryflags("investigated");
function_0021(0,gettime() - self.var_2E20,1,self.var_2E1F,var_04,"kill",var_05,self);
function_0021(0,gettime() - self.var_2E20,1,self.var_2E1F,var_04,"death",var_05,self);
self.var_2E1F = undefined;
self.var_2E20 = undefined;
}
}
if(!var_01 || var_02 < var_03 * var_03)
{
var_06 = func_2E5C();
if(var_06 && randomfloat(100) < 25)
{
var_07 = scripts\mp\bots\_bots_strategy::func_2DA3("trap_directional","trap");
if(isdefined(var_07))
{
var_08 = self botgetscriptgoal();
if(isdefined(var_08))
{
var_09 = getclosestnodeinsight(var_08);
if(isdefined(var_09))
{
var_0A = scripts\mp\bots\_bots_util::func_2E58("bot_find_ambush_entrances",::func_2D73,var_09,0);
var_0B = scripts\mp\bots\_bots_strategy::func_2E7E(var_07,var_0A,var_09);
if(!isdefined(var_0B) || var_0B)
{
self botclearscriptgoal();
var_06 = func_2E5C();
}
}
}
}
}
if(var_06)
{
thread func_417C("enemy","bad_path","goal","node_relinquished","search_end");
return;
}
}
}
}
//Function Number: 8
func_417C(param_00,param_01,param_02,param_03,param_04)
{
self notify("clear_script_goal_on");
self endon("clear_script_goal_on");
self endon("death");
self endon("disconnect");
self endon("start_tactical_goal");
var_05 = self botgetscriptgoal();
var_06 = 1;
while(var_06)
{
var_07 = scripts\common\utility::func_13734(param_00,param_01,param_02,param_03,param_04,"script_goal_changed");
var_06 = 0;
var_08 = 1;
if(var_07 == "node_relinquished" || var_07 == "goal" || var_07 == "script_goal_changed")
{
if(!self bothasscriptgoal())
{
var_08 = 0;
}
else
{
var_09 = self botgetscriptgoal();
var_08 = scripts\mp\bots\_bots_util::func_2EC6(var_05,var_09);
}
}
if(var_07 == "enemy" && isdefined(self.var_10C))
{
var_08 = 0;
var_06 = 1;
}
if(var_08)
{
self botclearscriptgoal();
}
}
}
//Function Number: 9
func_13961()
{
self notify("watch_out_of_ammo");
self endon("watch_out_of_ammo");
self endon("death");
self endon("disconnect");
while(!scripts\mp\bots\_bots_util::func_2E3B())
{
wait(0.5);
}
self notify("out_of_ammo");
}
//Function Number: 10
func_2D03(param_00,param_01)
{
self notify("bot_add_ambush_time_delayed");
self endon("bot_add_ambush_time_delayed");
self endon("death");
self endon("disconnect");
if(isdefined(param_00))
{
self endon(param_00);
}
self endon("node_relinquished");
self endon("bad_path");
var_02 = gettime();
if(isdefined(param_01))
{
self waittill(param_01);
}
if(isdefined(self.var_1E14) && isdefined(self.var_C02A))
{
self.var_1E14 = self.var_1E14 + gettime() - var_02;
self.var_C02A.var_2D0B = self.var_1E14 + 10000;
}
self notify("bot_add_ambush_time_delayed");
}
//Function Number: 11
func_2ECF(param_00,param_01,param_02,param_03)
{
self notify("bot_watch_entrances_delayed");
if(param_02.size > 0)
{
self endon("bot_watch_entrances_delayed");
self endon("death");
self endon("disconnect");
self endon(param_00);
self endon("node_relinquished");
self endon("bad_path");
if(isdefined(param_01))
{
self waittill(param_01);
}
self endon("path_enemy");
childthread scripts\mp\bots\_bots_util::func_2ED4(param_02,param_03,0,self.var_1E14);
childthread func_2E24();
}
}
//Function Number: 12
func_2E24()
{
self notify("bot_monitor_watch_entrances_camp");
self endon("bot_monitor_watch_entrances_camp");
self notify("bot_monitor_watch_entrances");
self endon("bot_monitor_watch_entrances");
self endon("disconnect");
self endon("death");
while(!isdefined(self.var_1395E))
{
wait(0.05);
}
while(isdefined(self.var_1395E))
{
foreach(var_01 in self.var_1395E)
{
var_01.var_1395D[self.var_6640] = 1;
}
scripts\mp\bots\_bots_strategy::func_D924(0.5);
wait(randomfloatrange(0.5,0.75));
}
}
//Function Number: 13
func_2D73(param_00,param_01)
{
self endon("disconnect");
var_02 = [];
var_03 = findentrances(param_00.origin);
if(isdefined(var_03) && var_03.size > 0)
{
wait(0.05);
var_04 = param_00.type != "Cover Stand" && param_00.type != "Conceal Stand";
if(var_04 && param_01)
{
var_03 = self method_8045(var_03,"node_exposure_vis",param_00.origin,"crouch");
}
foreach(var_06 in var_03)
{
if(distancesquared(self.origin,var_06.origin) < 90000)
{
continue;
}
if(var_04 && param_01)
{
wait(0.05);
if(!scripts\mp\bots\_bots_util::func_6655(var_06.origin,param_00.origin,"crouch"))
{
continue;
}
}
var_02[var_02.size] = var_06;
}
}
return var_02;
}
//Function Number: 14
func_2D71(param_00)
{
var_01 = [];
var_02 = gettime();
var_03 = param_00.size;
for(var_04 = 0;var_04 < var_03;var_04++)
{
var_05 = param_00[var_04];
if(!isdefined(var_05.var_2D0B) || var_02 > var_05.var_2D0B)
{
var_01[var_01.size] = var_05;
}
}
return var_01;
}
//Function Number: 15
func_2D72(param_00,param_01,param_02)
{
var_03 = [];
var_04 = [];
var_05 = param_02 * param_02;
if(level.teambased)
{
foreach(var_07 in level.var_C928)
{
if(!scripts\mp\_utility::func_9F19(var_07))
{
continue;
}
if(!isdefined(var_07.team))
{
continue;
}
if(var_07.team == param_01.team && var_07 != param_01 && isdefined(var_07.var_C02A))
{
var_04[var_04.size] = var_07.var_C02A.origin;
}
}
}
var_09 = var_04.size;
var_0A = param_00.size;
for(var_0B = 0;var_0B < var_0A;var_0B++)
{
var_0C = 0;
var_0D = param_00[var_0B];
for(var_0E = 0;!var_0C && var_0E < var_09;var_0E++)
{
var_0F = distancesquared(var_04[var_0E],var_0D.origin);
var_0C = var_0F < var_05;
}
if(!var_0C)
{
var_03[var_03.size] = var_0D;
}
}
return var_03;
}
//Function Number: 16
func_413A()
{
self notify("clear_camper_data");
if(isdefined(self.var_C02A) && isdefined(self.var_C02A.var_2D0B))
{
self.var_C02A.var_2D0B = undefined;
}
self.var_C02A = undefined;
self.var_D63C = undefined;
self.var_1E2A = undefined;
self.var_1E16 = undefined;
self.var_1E12 = randomintrange(20000,30000);
self.var_1E14 = -1;
}
//Function Number: 17
func_FF87()
{
if(scripts\mp\bots\_bots_strategy::func_2DC5())
{
return 0;
}
if(gettime() > self.var_1E14)
{
return 1;
}
if(!self bothasscriptgoal())
{
return 1;
}
return 0;
}
//Function Number: 18
func_6C7E()
{
self notify("find_camp_node");
self endon("find_camp_node");
return scripts\mp\bots\_bots_util::func_2E58("find_camp_node_worker",::func_6C7F);
}
//Function Number: 19
func_6C7F()
{
self notify("find_camp_node_worker");
self endon("find_camp_node_worker");
self endon("death");
self endon("disconnect");
level endon("game_ended");
func_413A();
if(level.var_13FBD <= 0)
{
return 0;
}
var_00 = getzonenearest(self.origin);
var_01 = undefined;
var_02 = undefined;
var_03 = self.angles;
if(isdefined(var_00))
{
var_04 = botzonenearestcount(var_00,self.team,-1,"enemy_predict",">",0,"ally","<",1);
if(!isdefined(var_04))
{
var_04 = botzonenearestcount(var_00,self.team,-1,"enemy_predict",">",0);
}
if(!isdefined(var_04))
{
var_05 = -1;
var_06 = -1;
for(var_07 = 0;var_07 < level.var_13FBD;var_07++)
{
var_08 = distance2dsquared(getzoneorigin(var_07),self.origin);
if(var_08 > var_05)
{
var_05 = var_08;
var_06 = var_07;
}
}
var_04 = var_06;
}
var_09 = function_00F2(var_00,var_04);
if(isdefined(var_09) && var_09.size > 0)
{
for(var_0A = 0;var_0A <= int(var_09.size / 2);var_0A++)
{
var_01 = var_09[var_0A];
var_02 = var_09[int(min(var_0A + 1,var_09.size - 1))];
if(botzonegetcount(var_02,self.team,"enemy_predict") != 0)
{
break;
}
}
if(isdefined(var_01) && isdefined(var_02) && var_01 != var_02)
{
var_03 = getzoneorigin(var_02) - getzoneorigin(var_01);
var_03 = vectortoangles(var_03);
}
}
}
var_0B = undefined;
if(isdefined(var_01))
{
var_0C = 1;
var_0D = 1;
var_0E = 0;
while(var_0C)
{
var_0F = function_00F0(var_01,800 * var_0D,1);
if(var_0F.size > 1024)
{
var_0F = function_00EF(var_01,0);
}
wait(0.05);
var_10 = randomint(100);
if(var_10 < 66 && var_10 >= 33)
{
var_03 = (var_03[0],var_03[1] + 45,0);
}
else if(var_10 < 33)
{
var_03 = (var_03[0],var_03[1] - 45,0);
}
if(var_0F.size > 0)
{
var_11 = int(min(max(1,var_0F.size * 0.15),5));
if(var_0E)
{
var_0F = self botnodepickmultiple(var_0F,var_11,var_11,"node_camp",anglestoforward(var_03),"lenient");
}
else
{
var_0F = self botnodepickmultiple(var_0F,var_11,var_11,"node_camp",anglestoforward(var_03));
}
var_0F = func_2D71(var_0F);
if(!isdefined(self.var_3802) || !self.var_3802)
{
var_12 = 800;
var_0F = func_2D72(var_0F,self,var_12);
}
if(var_0F.size > 0)
{
var_0B = scripts\common\utility::func_DCA4(var_0F);
}
}
if(isdefined(var_0B))
{
var_0C = 0;
continue;
}
if(isdefined(self.var_37EF))
{
if(var_0D == 1 && !var_0E)
{
var_0D = 3;
}
else if(var_0D == 3 && !var_0E)
{
var_0E = 1;
}
else if(var_0D == 3 && var_0E)
{
var_0C = 0;
}
continue;
}
var_0C = 0;
if(var_0C)
{
wait(0.05);
}
}
}
if(!isdefined(var_0B) || !self method_8042(var_0B))
{
return 0;
}
self.var_C02A = var_0B;
self.var_1E14 = gettime() + self.var_1E12;
self.var_C02A.var_2D0B = self.var_1E14;
self.var_1E2A = var_03[1];
return 1;
}
//Function Number: 20
func_6C77(param_00,param_01)
{
func_413A();
if(isdefined(param_00))
{
self.var_D63C = param_00;
}
else
{
var_02 = undefined;
var_03 = getnodesinradius(self.origin,5000,0,2000);
if(var_03.size > 0)
{
var_02 = self botnodepick(var_03,var_03.size * 0.25,"node_traffic");
}
if(isdefined(var_02))
{
self.var_D63C = var_02.origin;
}
else
{
return 0;
}
}
var_04 = 2000;
if(isdefined(param_01))
{
var_04 = param_01;
}
var_05 = getnodesinradius(self.var_D63C,var_04,0,1000);
var_06 = undefined;
if(var_05.size > 0)
{
var_07 = int(max(1,int(var_05.size * 0.15)));
var_05 = self botnodepickmultiple(var_05,var_07,var_07,"node_ambush",self.var_D63C);
}
var_05 = func_2D71(var_05);
if(var_05.size > 0)
{
var_06 = scripts\common\utility::func_DCA4(var_05);
}
if(!isdefined(var_06) || !self method_8042(var_06))
{
return 0;
}
self.var_C02A = var_06;
self.var_1E14 = gettime() + self.var_1E12;
self.var_C02A.var_2D0B = self.var_1E14;
var_08 = vectornormalize(self.var_D63C - self.var_C02A.origin);
var_09 = vectortoangles(var_08);
self.var_1E2A = var_09[1];
return 1;
}
//Function Number: 21
func_2E5C()
{
if(scripts\mp\bots\_bots_util::func_2DE0())
{
return 0;
}
var_00 = level.var_2E5E[self.team];
return self [[ var_00 ]]();
}
//Function Number: 22
func_2E5D()
{
var_00 = 0;
var_01 = 50;
if(self.var_CA79 == "camper")
{
var_01 = 0;
}
var_02 = undefined;
if(randomint(100) < var_01)
{
var_02 = scripts\mp\bots\_bots_util::func_2E62();
}
if(!isdefined(var_02))
{
var_03 = self method_8029();
if(isdefined(var_03))
{
var_02 = var_03.origin;
}
}
if(isdefined(var_02))
{
var_00 = self botsetscriptgoal(var_02,128,"hunt");
}
return var_00;
}
//Function Number: 23
func_2E88()
{
if(scripts\mp\bots\_bots_loadout::func_2E89())
{
return "callback";
}
return "class0";
}

View File

@ -0,0 +1,335 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\_bots_powers.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 12
* Decompile Time: 580 ms
* Timestamp: 10/27/2023 12:27:42 AM
*******************************************************************/
//Function Number: 1
func_2E53()
{
level.var_2D1C = [];
level.var_2D1C["power_domeshield"] = ::lib_0D77::func_8995;
level.var_2D1C["power_overCharge"] = ::func_5234;
level.var_2D1C["power_adrenaline"] = ::func_5234;
level.var_2D1C["power_deployableCover"] = ::func_8991;
level.var_2D1C["power_rewind"] = ::lib_0D78::func_89DC;
level.var_2D1C["power_adrenaline"] = ::func_5234;
level.var_2D1C["power_multiVisor"] = ::func_5234;
level.var_2D1C["power_blinkKnife"] = ::func_897E;
}
//Function Number: 2
func_2D5A()
{
self notify("bot_detect_friendly_domeshields");
self endon("bot_detect_friendly_domeshields");
level endon("game_ended");
self endon("death");
self endon("disconnect");
var_00 = 0;
self botsetflag("disable_attack",0);
for(;;)
{
if(var_00)
{
wait(0.05);
}
else
{
wait(0.5);
}
if(var_00)
{
self botsetflag("disable_attack",0);
var_00 = 0;
}
if(isdefined(self.var_10C))
{
var_01 = self geteye();
var_02 = self.var_10C geteye();
var_03 = bullettrace(var_01,var_02,0,self);
var_04 = var_03["entity"];
if(!isdefined(var_04) || !isdefined(var_04.var_2B0E))
{
continue;
}
if(!isdefined(var_04.var_222))
{
continue;
}
if(var_04.var_222.team == self.team)
{
self botsetflag("disable_attack",1);
var_00 = 1;
continue;
}
}
}
}
//Function Number: 3
func_2EB4()
{
self notify("bot_think_powers");
self endon("bot_think_powers");
level endon("game_ended");
self endon("death");
self endon("disconnect");
thread func_2D5A();
if(isdefined(self.var_D782) && self.var_D782.size > 0)
{
if(isdefined(self.var_AE7B) && isdefined(self.var_D782[self.var_AE7B]))
{
if(isdefined(level.var_2D1C[self.var_AE7B]))
{
self thread [[ level.var_2D1C[self.var_AE7B] ]](self.var_AE7B,"primary");
}
}
if(isdefined(self.var_AE7D) && isdefined(self.var_D782[self.var_AE7D]))
{
if(isdefined(level.var_2D1C[self.var_AE7D]))
{
self thread [[ level.var_2D1C[self.var_AE7D] ]](self.var_AE7D,"secondary");
}
}
}
for(;;)
{
self waittill("power_available",var_00,var_01);
if(isdefined(level.var_2D1C[var_00]))
{
self thread [[ level.var_2D1C[var_00] ]](var_00,var_01);
}
}
}
//Function Number: 4
func_1384F(param_00,param_01)
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("powers_cleanUp");
for(;;)
{
self waittill("power_activated",var_02,var_03);
if(var_02 == param_00 && var_03 == param_01)
{
break;
}
}
}
//Function Number: 5
func_5234(param_00,param_01)
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("powers_cleanUp");
for(;;)
{
while(!isdefined(self.var_10C) || !isalive(self.var_10C))
{
wait(0.1);
}
if(!self botcanseeentity(self.var_10C))
{
wait(0.1);
continue;
}
var_02 = 0;
var_03 = 1400;
var_04 = distance(self.origin,self.var_10C.origin);
if(self method_8520())
{
var_02 = 700;
}
if(var_02 != 0)
{
if(var_04 < var_02)
{
wait(0.5);
continue;
}
}
if(var_04 > var_03)
{
wait(0.5);
continue;
}
break;
}
var_05 = param_01 + "_power_ready";
self botsetflag(var_05,1);
func_1384F(param_00,param_01);
self botsetflag(var_05,0);
}
//Function Number: 6
func_897E(param_00,param_01)
{
var_02 = self botgetdifficultysetting("throwKnifeChance");
self method_804D("throwKnifeChance",0.25);
}
//Function Number: 7
func_8BEE()
{
if(!isalive(self) || !isdefined(self.var_10C))
{
return 0;
}
if(self botcanseeentity(self.var_10C) && self method_8520())
{
return 1;
}
return 0;
}
//Function Number: 8
func_130C0(param_00,param_01)
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("powers_cleanUp");
var_02 = param_01 + "_power_ready";
self botsetflag(var_02,1);
func_1384F(param_00,param_01);
self botsetflag(var_02,0);
}
//Function Number: 9
func_9D7E()
{
if(isdefined(self.var_11A46))
{
foreach(var_01 in self.var_11A46)
{
if(!isdefined(var_01.var_130AC) || !isdefined(var_01.var_130AC.var_92B8))
{
continue;
}
if(var_01.var_130AC.var_92B8 == "domFlag")
{
if(scripts\mp\bots\gametype_dom::func_2DD6(var_01))
{
return 1;
}
}
}
}
return 0;
}
//Function Number: 10
func_130C1(param_00,param_01,param_02,param_03)
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("domeshield_used");
self endon("powers_cleanUp");
if(!isdefined(param_03))
{
param_03 = ::func_130C0;
}
for(;;)
{
wait(0.05);
while(!func_8BEE() && !func_9D7E())
{
wait(0.25);
}
if(!func_9D7E())
{
for(var_04 = self method_8118();var_04 > 0;var_04 = self method_8118())
{
wait(0.05);
if(!func_8BEE())
{
break;
}
}
}
if(func_8BEE() || func_9D7E())
{
if(isdefined(self.var_10C))
{
var_05 = distance(self.origin,self.var_10C.origin);
if(var_05 < param_02)
{
wait(0.25);
continue;
}
}
self thread [[ param_03 ]](param_00,param_01);
break;
}
}
}
//Function Number: 11
func_130C2(param_00,param_01,param_02,param_03,param_04)
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("domeshield_used");
self endon("powers_cleanUp");
if(!isdefined(param_04))
{
param_04 = ::func_130C0;
}
for(;;)
{
self waittill("damage");
if(isdefined(self.var_10C))
{
var_05 = distancesquared(self.origin,self.var_10C.origin);
if(var_05 < param_02 * param_02)
{
continue;
}
}
if(self.health < param_03)
{
self thread [[ param_04 ]](param_00,param_01);
break;
}
}
}
//Function Number: 12
func_8991(param_00,param_01)
{
thread func_130C1(param_00,param_01,400,::func_130C0);
thread func_130C2(param_00,param_01,450,80,::func_130C0);
}

View File

@ -0,0 +1,391 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\_bots_sentry.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 15
* Decompile Time: 683 ms
* Timestamp: 10/27/2023 12:27:43 AM
*******************************************************************/
//Function Number: 1
func_2DF2(param_00,param_01,param_02,param_03)
{
self endon("bot_sentry_exited");
self endon("death");
self endon("disconnect");
level endon("game_ended");
wait(randomintrange(3,5));
while(isdefined(self.var_F250) && gettime() < self.var_F250)
{
wait(1);
}
if(isdefined(self.var_10C) && self.var_10C.health > 0 && self botcanseeentity(self.var_10C))
{
return 1;
}
var_04 = self.origin;
if(param_03 != "hide_nonlethal")
{
var_04 = func_2E78(param_03);
if(!isdefined(var_04))
{
return 1;
}
}
func_2E73(param_00,var_04,param_03,param_01);
while(scripts\mp\bots\_bots_strategy::func_2DC5("sentry_placement"))
{
wait(0.5);
}
return 1;
}
//Function Number: 2
func_2E73(param_00,param_01,param_02,param_03)
{
var_04 = func_2E77(param_00,param_01,param_02,param_03);
if(isdefined(var_04))
{
scripts\mp\bots\_bots_strategy::func_2D02("sentry_placement");
var_05 = spawnstruct();
var_05.var_C270 = var_04;
var_05.var_EDCC = var_04.var_13E48;
var_05.var_EDC9 = 10;
var_05.var_10D46 = ::func_2E7B;
var_05.var_6302 = ::func_2E74;
var_05.var_FF0D = ::func_2E7D;
var_05.var_157C = ::func_2E72;
self.var_CC2D = param_00.var_110EA;
scripts\mp\bots\_bots_strategy::func_2E27("sentry_placement",var_04.var_205.origin,0,var_05);
}
}
//Function Number: 3
func_2E7D(param_00)
{
self endon("death");
self endon("disconnect");
level endon("game_ended");
if(isdefined(self.var_10C) && self.var_10C.health > 0 && self botcanseeentity(self.var_10C))
{
return 1;
}
self.var_F250 = gettime() + 1000;
return 0;
}
//Function Number: 4
func_2E75()
{
self endon("death");
self endon("disconnect");
self endon("bot_sentry_canceled");
self endon("bot_sentry_ensure_exit");
level endon("game_ended");
for(;;)
{
if(isdefined(self.var_10C) && self.var_10C.health > 0 && self botcanseeentity(self.var_10C))
{
thread func_2E74();
}
wait(0.05);
}
}
//Function Number: 5
func_2E7B(param_00)
{
thread func_2E7C(param_00);
}
//Function Number: 6
func_2E7C(param_00)
{
self endon("stop_tactical_goal");
self endon("stop_goal_aborted_watch");
self endon("bot_sentry_canceled");
self endon("bot_sentry_exited");
self endon("death");
self endon("disconnect");
level endon("game_ended");
while(isdefined(param_00.var_C270) && isdefined(param_00.var_C270.var_394))
{
if(distance2d(self.origin,param_00.var_C270.var_205.origin) < 400)
{
thread scripts\mp\bots\_bots_util::func_2D9C("stand",5);
thread func_2E75();
scripts\mp\bots\_bots_killstreaks::func_2EA5(param_00.var_C270.var_A690,param_00.var_C270.var_A6AC,param_00.var_C270.var_394);
return;
}
wait(0.05);
}
}
//Function Number: 7
func_2E78(param_00)
{
var_01 = scripts\mp\bots\_bots_util::func_507A();
if(isdefined(var_01))
{
return var_01;
}
if(isdefined(self.var_C02A))
{
return self.var_C02A.origin;
}
var_02 = getnodesinradius(self.origin,1000,0,512);
var_03 = 5;
if(param_00 != "turret")
{
if(self botgetdifficultysetting("strategyLevel") == 1)
{
var_03 = 10;
}
else if(self botgetdifficultysetting("strategyLevel") == 0)
{
var_03 = 15;
}
}
if(param_00 == "turret_air")
{
var_04 = self botnodepick(var_02,var_03,"node_traffic","ignore_no_sky");
}
else
{
var_04 = self botnodepick(var_03,var_04,"node_traffic");
}
if(isdefined(var_04))
{
return var_04.origin;
}
}
//Function Number: 8
func_2E77(param_00,param_01,param_02,param_03)
{
var_04 = undefined;
var_05 = getnodesinradius(param_01,1000,0,512);
var_06 = 5;
if(param_02 != "turret")
{
if(self botgetdifficultysetting("strategyLevel") == 1)
{
var_06 = 10;
}
else if(self botgetdifficultysetting("strategyLevel") == 0)
{
var_06 = 15;
}
}
if(param_02 == "turret_air")
{
var_07 = self botnodepick(var_05,var_06,"node_sentry",param_01,"ignore_no_sky");
}
else if(param_03 == "trap")
{
var_07 = self botnodepick(var_06,var_07,"node_traffic");
}
else if(param_03 == "hide_nonlethal")
{
var_07 = self botnodepick(var_06,var_07,"node_hide");
}
else
{
var_07 = self botnodepick(var_06,var_07,"node_sentry",param_02);
}
if(isdefined(var_07))
{
var_04 = spawnstruct();
var_04.var_205 = var_07;
if(param_01 != var_07.origin && param_02 != "hide_nonlethal")
{
var_04.var_13E48 = vectortoyaw(param_01 - var_07.origin);
}
else
{
var_04.var_13E48 = undefined;
}
var_04.var_394 = param_00.var_394;
var_04.var_A690 = param_00;
var_04.var_A6AC = param_03;
}
return var_04;
}
//Function Number: 9
func_2E76()
{
if(isdefined(self.var_3AA5))
{
return self.var_3AA5;
}
if(isdefined(self.var_3A9F))
{
return self.var_3A9F;
}
if(isdefined(self.var_3AA0))
{
return self.var_3AA0;
}
}
//Function Number: 10
func_2E72(param_00)
{
var_01 = 0;
var_02 = func_2E76();
if(isdefined(var_02))
{
var_03 = 0;
if(!var_02.var_3872)
{
var_04 = 0.75;
var_05 = gettime();
var_06 = self.angles[1];
if(isdefined(param_00.var_C270.var_13E48))
{
var_06 = param_00.var_C270.var_13E48;
}
var_07 = [];
var_07[0] = var_06 + 180;
var_07[1] = var_06 + 135;
var_07[2] = var_06 - 135;
var_08 = 1000;
foreach(var_0A in var_07)
{
var_0B = playerphysicstrace(param_00.var_C270.var_205.origin,param_00.var_C270.var_205.origin + anglestoforward((0,var_0A + 180,0)) * 100);
var_0C = distance2d(var_0B,param_00.var_C270.var_205.origin);
if(var_0C < var_08)
{
var_08 = var_0C;
self botsetscriptmove(var_0A,var_04);
self botlookatpoint(param_00.var_C270.var_205.origin,var_04,"script_forced");
}
}
while(!var_03 && isdefined(var_02) && !var_02.var_3872)
{
var_0E = float(gettime() - var_05) / 1000;
if(!var_02.var_3872 && var_0E > var_04)
{
var_03 = 1;
self.var_F250 = gettime() + 30000;
}
wait(0.05);
}
}
if(isdefined(var_02) && var_02.var_3872)
{
func_2E71();
var_01 = 1;
}
}
wait(0.25);
func_2E79();
return var_01;
}
//Function Number: 11
func_2E71()
{
self notify("place_sentry");
self notify("place_ims");
self notify("placePlaceable");
}
//Function Number: 12
func_2E70()
{
self switchtoweapon("none");
self enableweapons();
self enableweaponswitch();
self notify("cancel_sentry");
self notify("cancel_ims");
self notify("cancelPlaceable");
}
//Function Number: 13
func_2E74(param_00)
{
self notify("bot_sentry_canceled");
func_2E70();
func_2E79();
}
//Function Number: 14
func_2E79()
{
self notify("bot_sentry_abort_goal_think");
self notify("bot_sentry_ensure_exit");
self endon("bot_sentry_ensure_exit");
self endon("death");
self endon("disconnect");
level endon("game_ended");
self switchtoweapon("none");
self botclearscriptgoal();
self botsetstance("none");
self enableweapons();
self enableweaponswitch();
wait(0.25);
var_00 = 0;
while(isdefined(func_2E76()))
{
var_00++;
func_2E70();
wait(0.25);
if(var_00 > 2)
{
func_2E7A();
}
}
self notify("bot_sentry_exited");
}
//Function Number: 15
func_2E7A()
{
if(isdefined(self.var_3AA5))
{
self.var_3AA5 scripts\mp\killstreaks\_autosentry::func_F253();
}
if(isdefined(self.var_3A9F))
{
self.var_3A9F scripts\mp\killstreaks\_ims::func_9376();
}
if(isdefined(self.var_3AA0))
{
self.var_3AA0 scripts\mp\killstreaks\_placeable::func_C4D2(self.var_CC2D,0);
}
self.var_3AA5 = undefined;
self.var_3A9F = undefined;
self.var_3AA0 = undefined;
self switchtoweapon("none");
self enableweapons();
self enableweaponswitch();
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,200 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\_bots_supers.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 7
* Decompile Time: 303 ms
* Timestamp: 10/27/2023 12:27:47 AM
*******************************************************************/
//Function Number: 1
func_2EA3()
{
level.var_2D1D["super_claw"] = ::func_89EF;
level.var_2D1D["super_steeldragon"] = ::func_89EF;
level.var_2D1D["super_armmgs"] = ::func_89EF;
level.var_2D1D["super_atomizer"] = ::func_89EF;
level.var_2D1D["super_blackholegun"] = ::func_89EF;
level.var_2D1D["super_penetrationrailgun"] = ::func_89EF;
level.var_2D1D["super_amplify"] = ::func_89EE;
level.var_2D1D["super_overdrive"] = ::func_89EE;
level.var_2D1D["super_armorup"] = ::func_89EE;
level.var_2D1D["super_rewind"] = ::func_89EE;
level.var_2D1D["super_phaseshift"] = ::func_89EE;
level.var_2D1D["super_teleport"] = ::func_89EE;
level.var_2D1D["super_invisible"] = ::func_89EE;
level.var_2D1D["super_visionpulse"] = ::func_89EE;
}
//Function Number: 2
func_9F8B(param_00)
{
if(!isdefined(level.var_2D1D))
{
return 0;
}
if(!isdefined(level.var_2D1D[param_00]))
{
return 0;
}
return 1;
}
//Function Number: 3
func_2EE9()
{
var_00 = self.var_2ED8;
var_01 = randomint(level.var_2EFC[var_00].size);
return level.var_2EFC[var_00][var_01];
}
//Function Number: 4
botpicktrait()
{
var_00 = self.var_2ED8;
if(!isdefined(level.botsupportedarchetypetraits))
{
level.botsupportedarchetypetraits = [];
level.botsupportedarchetypetraits["archetype_assault"] = [];
level.botsupportedarchetypetraits["archetype_heavy"] = [];
level.botsupportedarchetypetraits["archetype_scout"] = [];
level.botsupportedarchetypetraits["archetype_assassin"] = [];
level.botsupportedarchetypetraits["archetype_engineer"] = [];
level.botsupportedarchetypetraits["archetype_sniper"] = [];
level.botsupportedarchetypetraits["archetype_assault"][level.botsupportedarchetypetraits["archetype_assault"].size] = "specialty_boom";
level.botsupportedarchetypetraits["archetype_heavy"][level.botsupportedarchetypetraits["archetype_heavy"].size] = "specialty_regenfaster";
level.botsupportedarchetypetraits["archetype_heavy"][level.botsupportedarchetypetraits["archetype_heavy"].size] = "specialty_man_at_arms";
level.botsupportedarchetypetraits["archetype_scout"][level.botsupportedarchetypetraits["archetype_scout"].size] = "specialty_afterburner";
level.botsupportedarchetypetraits["archetype_scout"][level.botsupportedarchetypetraits["archetype_scout"].size] = "specialty_rush";
level.botsupportedarchetypetraits["archetype_assassin"][level.botsupportedarchetypetraits["archetype_assassin"].size] = "specialty_sixth_sense";
level.botsupportedarchetypetraits["archetype_engineer"][level.botsupportedarchetypetraits["archetype_engineer"].size] = "specialty_personal_trophy";
level.botsupportedarchetypetraits["archetype_engineer"][level.botsupportedarchetypetraits["archetype_engineer"].size] = "specialty_rugged_eqp";
level.botsupportedarchetypetraits["archetype_sniper"][level.botsupportedarchetypetraits["archetype_sniper"].size] = "specialty_rearguard";
level.botsupportedarchetypetraits["archetype_sniper"][level.botsupportedarchetypetraits["archetype_sniper"].size] = "specialty_mark_targets";
}
var_01 = randomint(level.botsupportedarchetypetraits[var_00].size);
return level.botsupportedarchetypetraits[var_00][var_01];
}
//Function Number: 5
func_2EB7()
{
if(isdefined(self.var_2EB7))
{
return;
}
self notify("bot_think_supers");
self endon("bot_think_supers");
self endon("disconnect");
level endon("game_ended");
self.var_2EB7 = 1;
for(;;)
{
self waittill("super_ready");
if(!isdefined(self.var_AEAA))
{
continue;
}
if(isdefined(level.var_2D1D[self.var_AEAA]))
{
self [[ level.var_2D1D[self.var_AEAA] ]]();
}
else
{
}
self botsetflag("super_ready",0);
self waittill("super_finished");
}
}
//Function Number: 6
func_89EF()
{
level endon("game_ended");
self endon("disconnect");
for(;;)
{
var_00 = randomfloatrange(3,6);
wait(var_00);
if(!isalive(self))
{
continue;
}
if(!isdefined(self.var_10C) || !isalive(self.var_10C))
{
scripts\common\utility::waittill_any_3("enemy","death");
}
if(!isalive(self))
{
continue;
}
if(!isdefined(self.var_10C))
{
continue;
}
var_01 = distance(self.var_10C.origin,self.origin);
if(var_01 < 800 && scripts\mp\bots\_bots_powers::func_8BEE())
{
if(var_01 < 550)
{
continue;
}
}
self botsetflag("super_ready",1);
break;
}
self waittill("super_started");
}
//Function Number: 7
func_89EE()
{
level endon("game_ended");
self endon("disconnect");
wait(randomfloatrange(1,3));
for(;;)
{
wait(0.25);
if(!isalive(self))
{
continue;
}
if(!isdefined(self.var_10C) || !isalive(self.var_10C))
{
scripts\common\utility::waittill_any_3("enemy","death");
}
if(!isalive(self))
{
continue;
}
if(scripts\mp\bots\_bots_powers::func_8BEE())
{
var_00 = distance(self.var_10C.origin,self.origin);
if(var_00 < 600)
{
continue;
}
}
break;
}
self botsetflag("super_ready",1);
self waittill("super_started");
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,663 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_ball.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 20
* Decompile Time: 1143 ms
* Timestamp: 10/27/2023 12:11:50 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
func_F8D6();
thread monitor_ball_carrier();
}
//Function Number: 2
func_F8F4()
{
level.var_2D9E["gametype_think"] = ::func_2D12;
}
//Function Number: 3
func_F8D6()
{
scripts\mp\bots\_bots_util::func_2ECA(1);
level.var_DAA3 = 600;
level.var_2C12 = 400;
thread func_2D11();
level.var_2DA1 = 1;
}
//Function Number: 4
func_2DA4()
{
foreach(var_01 in level.var_2800)
{
if(isdefined(var_01.carrier))
{
continue;
}
if(scripts\common\utility::istrue(var_01.var_9398))
{
continue;
}
if(scripts\common\utility::istrue(var_01.var_9F24))
{
continue;
}
return var_01;
}
return undefined;
}
//Function Number: 5
func_2DA5()
{
foreach(var_01 in level.var_2800)
{
if(isdefined(var_01.carrier))
{
return var_01.carrier;
}
}
return undefined;
}
//Function Number: 6
func_2D5D()
{
self endon("death");
self endon("disconnect");
level endon("game_ended");
self botsetstance("stand");
for(var_00 = 0;var_00 < 5;var_00++)
{
self botpressbutton("jump");
scripts\common\utility::func_136F7();
}
scripts\common\utility::func_136F7();
scripts\common\utility::func_136F7();
for(var_00 = 0;var_00 < 60;var_00++)
{
self botpressbutton("jump");
scripts\common\utility::func_136F7();
if(!isdefined(self.var_3AF7))
{
break;
}
}
}
//Function Number: 7
bot_throw_ball()
{
self endon("death");
self endon("disconnect");
level endon("game_ended");
for(var_00 = 0;var_00 < 5;var_00++)
{
self botpressbutton("attack");
scripts\common\utility::func_136F7();
}
}
//Function Number: 8
func_2DA7()
{
if(self.team == "allies")
{
return "axis";
}
return "allies";
}
//Function Number: 9
func_2D12()
{
self notify("bot_ball_think");
self endon("bot_ball_think");
self endon("death");
self endon("disconnect");
level endon("game_ended");
while(!isdefined(level.var_2DA1))
{
wait(0.05);
}
self botsetflag("separation",0);
var_00 = undefined;
var_01 = undefined;
for(;;)
{
wait(0.05);
if(!isdefined(self.var_E67C))
{
func_9841();
var_00 = undefined;
}
if(scripts\mp\bots\_bots_strategy::func_2DC5())
{
var_00 = undefined;
continue;
}
if(self.var_E67C != "carrier" && isdefined(self.var_3AF7))
{
var_00 = undefined;
func_27C2("carrier");
}
if(self.var_E67C == "carrier")
{
if(isdefined(self.var_3AF7))
{
self botsetflag("disable_attack",1);
var_02 = 0;
if(isdefined(self.var_10C))
{
var_02 = distancesquared(self.var_10C.origin,self.origin);
}
if(isdefined(self.var_10C) && var_02 < 9216)
{
self botsetflag("disable_attack",0);
self botsetflag("prefer_melee",1);
}
else
{
self botsetflag("prefer_melee",0);
self botsetflag("disable_attack",1);
}
if(isdefined(level.var_2798))
{
var_03 = level.var_2798[func_2DA7()].origin;
if(!isdefined(var_00))
{
var_00 = getclosestpointonnavmesh(var_03,self);
if(distance2dsquared(var_00,var_03) > 256)
{
var_04 = (var_03[0],var_03[1],var_03[2] - 90);
var_00 = getclosestpointonnavmesh(var_04,self);
}
}
self botsetscriptgoal(var_00,16,"critical");
var_05 = distance2dsquared(self.origin,var_03);
if(var_05 < 30625)
{
var_06 = self geteye();
var_07 = var_03;
if(scripts\common\trace::func_DCF1(var_06,var_07,self))
{
if(var_05 < 256)
{
self botsetscriptgoal(self.origin,16,"critical");
wait(0.25);
}
func_2D5D();
wait(0.2);
if(!isdefined(self.var_3AF7))
{
self botclearscriptgoal();
}
}
}
}
else
{
self botclearscriptgoal();
if(!isdefined(var_01))
{
var_01 = gettime() + randomintrange(500,1000);
}
if(gettime() > var_01)
{
var_01 = gettime() + randomintrange(500,1000);
if(isdefined(self.var_10C))
{
if(self botcanseeentity(self.var_10C))
{
var_08 = anglestoforward(self.angles);
var_09 = self.var_10C.origin - self.origin;
var_0A = vectornormalize((var_09[0],var_09[1],0));
var_0B = vectordot(var_08,var_0A);
if(var_0B > 0.707)
{
if(var_02 < -7936 && var_02 > 9216)
{
bot_throw_ball();
}
}
}
}
}
}
}
else
{
self botsetflag("disable_attack",0);
self botsetflag("prefer_melee",0);
var_0C = func_2DA4();
if(!isdefined(var_0C))
{
var_0D = func_2DA5();
if(isdefined(var_0D) && var_0D != self)
{
func_9841();
}
}
else
{
self botsetscriptgoal(var_0D.var_4B2C,16,"objective");
continue;
}
}
}
else
{
var_00 = undefined;
}
if(self.var_E67C == "attacker")
{
self botsetflag("disable_attack",0);
self botsetflag("prefer_melee",0);
var_0C = func_2DA4();
if(!isdefined(var_0C))
{
var_0D = func_2DA5();
if(isdefined(var_0D))
{
if(!scripts\mp\bots\_bots_util::func_2DDA(var_0D))
{
scripts\mp\bots\_bots_strategy::func_2DC1(var_0D,level.var_2C12);
}
}
}
else if(!scripts\common\utility::istrue(var_0C.var_9F24) && !scripts\common\utility::istrue(var_0C.var_9398))
{
var_0E = getclosestpointonnavmesh(var_0C.var_4B2C);
if(!scripts\mp\bots\_bots_util::func_2DD8(var_0E))
{
scripts\mp\bots\_bots_strategy::func_2E57(var_0E,level.var_DAA3);
}
}
continue;
}
if(self.var_E67C == "defender")
{
self botsetflag("disable_attack",0);
self botsetflag("prefer_melee",0);
var_0F = level.var_2798[self.team];
var_03 = var_0F.origin;
if(!scripts\mp\bots\_bots_util::func_2DD8(var_03))
{
scripts\mp\bots\_bots_strategy::func_2E57(var_03,level.var_DAA3);
}
}
}
}
//Function Number: 10
func_9841()
{
var_00 = func_7809(self.team);
var_01 = func_780A(self.team);
var_02 = func_2774(self.team);
var_03 = func_2775(self.team);
var_04 = level.var_2E46[self.var_CA79];
if(var_04 == "active")
{
if(var_00.size >= var_02)
{
var_05 = 0;
foreach(var_07 in var_00)
{
if(isai(var_07) && level.var_2E46[var_07.var_CA79] == "stationary")
{
var_07.var_E67C = undefined;
var_05 = 1;
break;
}
}
if(var_05)
{
func_27C2("attacker");
return;
}
func_27C2("defender");
return;
}
func_27C2("attacker");
return;
}
if(var_04 == "stationary")
{
if(var_01.size >= var_03)
{
var_05 = 0;
foreach(var_0A in var_01)
{
if(isai(var_0A) && level.var_2E46[var_0A.var_CA79] == "active")
{
var_0A.var_E67C = undefined;
var_05 = 1;
break;
}
}
if(var_05)
{
func_27C2("defender");
return;
}
func_27C2("attacker");
return;
}
func_27C2("defender");
return;
}
}
//Function Number: 11
func_2D11()
{
level notify("bot_ball_ai_director_update");
level endon("bot_ball_ai_director_update");
level endon("game_ended");
var_00[0] = "allies";
var_00[1] = "axis";
var_01 = [];
for(;;)
{
foreach(var_03 in var_00)
{
var_04 = func_2774(var_03);
var_05 = func_2775(var_03);
var_06 = func_7809(var_03);
var_07 = func_780A(var_03);
if(var_06.size > var_04)
{
var_08 = [];
var_09 = 0;
foreach(var_0B in var_06)
{
if(isai(var_0B))
{
if(level.var_2E46[var_0B.var_CA79] == "stationary")
{
var_0B func_27C2("defender");
var_09 = 1;
break;
}
else
{
var_08 = scripts\common\utility::array_add(var_08,var_0B);
}
}
}
if(!var_09 && var_08.size > 0)
{
scripts\common\utility::random(var_08) func_27C2("defender");
}
}
if(var_07.size > var_05)
{
var_0D = [];
var_0E = 0;
foreach(var_10 in var_07)
{
if(isai(var_10))
{
if(level.var_2E46[var_10.var_CA79] == "active")
{
var_10 func_27C2("attacker");
var_0E = 1;
break;
}
else
{
var_0D = scripts\common\utility::array_add(var_0D,var_10);
}
}
}
if(!var_0E && var_0D.size > 0)
{
scripts\common\utility::random(var_0D) func_27C2("attacker");
}
}
var_12 = func_2DA4();
if(isdefined(var_12))
{
var_13 = func_CB1C(var_03,var_12);
if(isdefined(var_13) && isdefined(var_13.var_E67C) && var_13.var_E67C != "carrier")
{
if(!isdefined(var_13.var_3AF7))
{
var_14 = var_01[var_03];
if(isdefined(var_14))
{
var_14 func_27C2(undefined);
}
var_13 func_27C2("carrier");
var_01[var_13.team] = var_13;
}
}
}
}
wait(1);
}
}
//Function Number: 12
func_2774(param_00)
{
var_01 = func_2790(param_00);
if(!isdefined(level.var_2798))
{
return var_01;
}
return int(int(var_01) / 2) + 1 + int(var_01) % 2;
}
//Function Number: 13
func_2775(param_00)
{
if(!isdefined(level.var_2798))
{
return 0;
}
var_01 = func_2790(param_00);
return max(int(int(var_01) / 2) - 1,0);
}
//Function Number: 14
func_2790(param_00)
{
var_01 = 0;
foreach(var_03 in level.var_C928)
{
if(scripts\mp\_utility::func_9F9D(var_03) && isdefined(var_03.team) && var_03.team == param_00)
{
var_01++;
}
}
return var_01;
}
//Function Number: 15
func_CB1C(param_00,param_01)
{
var_02 = undefined;
var_03 = undefined;
foreach(var_05 in level.var_C928)
{
if(!isdefined(var_05.team))
{
continue;
}
if(var_05.team != param_00)
{
continue;
}
if(!isalive(var_05))
{
continue;
}
if(!isai(var_05))
{
continue;
}
if(isdefined(var_05.var_E67C) && var_05.var_E67C == "defender")
{
continue;
}
var_06 = distancesquared(var_05.origin,param_01.var_4B2C);
if(!isdefined(var_03) || var_06 < var_03)
{
var_03 = var_06;
var_02 = var_05;
}
}
if(isdefined(var_02))
{
return var_02;
}
return undefined;
}
//Function Number: 16
func_7809(param_00)
{
var_01 = func_7BBE("attacker",param_00);
if(isdefined(level.var_2798))
{
foreach(var_03 in level.players)
{
if(!isai(var_03) && isdefined(var_03.team) && var_03.team == param_00)
{
if(distancesquared(level.var_2798[param_00].origin,var_03.origin) > level.var_DAA3 * level.var_DAA3)
{
var_01 = scripts\common\utility::array_add(var_01,var_03);
}
}
}
}
return var_01;
}
//Function Number: 17
func_780A(param_00)
{
var_01 = func_7BBE("defender",param_00);
if(isdefined(level.var_2798))
{
foreach(var_03 in level.players)
{
if(!isai(var_03) && isdefined(var_03.team) && var_03.team == param_00)
{
if(distancesquared(level.var_2798[param_00].origin,var_03.origin) <= level.var_DAA3 * level.var_DAA3)
{
var_01 = scripts\common\utility::array_add(var_01,var_03);
}
}
}
}
return var_01;
}
//Function Number: 18
func_27C2(param_00)
{
self.var_E67C = param_00;
self botclearscriptgoal();
scripts\mp\bots\_bots_strategy::func_2D4E();
}
//Function Number: 19
func_7BBE(param_00,param_01)
{
var_02 = [];
foreach(var_04 in level.var_C928)
{
if(!isdefined(var_04.team))
{
continue;
}
if(isalive(var_04) && scripts\mp\_utility::func_9F9D(var_04) && var_04.team == param_01 && isdefined(var_04.var_E67C) && var_04.var_E67C == param_00)
{
var_02[var_02.size] = var_04;
}
}
return var_02;
}
//Function Number: 20
monitor_ball_carrier()
{
level endon("game_ended");
var_00 = undefined;
for(;;)
{
var_01 = func_2DA5();
if(!isdefined(var_00) || !isdefined(var_01) || var_01 != var_00)
{
if(isdefined(var_00) && var_00.var_33F == 505)
{
var_00.var_33F = 0;
}
var_00 = var_01;
}
if(isdefined(var_01) && var_01.var_33F == 0)
{
var_01.var_33F = 505;
}
wait(0.05);
}
}

View File

@ -0,0 +1,465 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_conf.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 16
* Decompile Time: 863 ms
* Timestamp: 10/27/2023 12:11:51 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
func_F8D8();
}
//Function Number: 2
func_F8F4()
{
level.var_2D9E["gametype_think"] = ::func_2D39;
}
//Function Number: 3
func_F8D8()
{
level.var_2EA7 = 200;
level.var_2EA6 = 38;
}
//Function Number: 4
func_2D39()
{
self notify("bot_conf_think");
self endon("bot_conf_think");
self endon("death");
self endon("disconnect");
level endon("game_ended");
self.var_BF68 = gettime() + 500;
self.var_1141F = [];
childthread func_2ED3();
if(self.var_CA79 == "camper")
{
self.var_4503 = 0;
if(!isdefined(self.var_4504))
{
self.var_4504 = 0;
}
}
for(;;)
{
var_00 = isdefined(self.var_113DD);
var_01 = 0;
if(var_00 && self bothasscriptgoal())
{
var_02 = self botgetscriptgoal();
if(scripts\mp\bots\_bots_util::func_2EC6(self.var_113DD.var_4B2C,var_02))
{
if(self botpursuingscriptgoal())
{
var_01 = 1;
}
}
else if(scripts\mp\bots\_bots_strategy::func_2DC5("kill_tag") && self.var_113DD scripts\mp\_gameobjects::caninteractwith(self.team))
{
self.var_113DD = undefined;
var_00 = 0;
}
}
self botsetflag("force_sprint",var_01);
self.var_1141F = func_2E65(self.var_1141F);
var_03 = func_2D74(self.var_1141F,1);
var_04 = isdefined(var_03);
if((var_00 && !var_04) || !var_00 && var_04 || var_00 && var_04 && self.var_113DD != var_03)
{
self.var_113DD = var_03;
self botclearscriptgoal();
self notify("stop_camping_tag");
scripts\mp\bots\_bots_personality::func_413A();
scripts\mp\bots\_bots_strategy::func_2D02("kill_tag");
}
if(isdefined(self.var_113DD))
{
self.var_4504 = 0;
if(self.var_CA79 == "camper" && self.var_4503)
{
self.var_4504 = 1;
if(scripts\mp\bots\_bots_personality::func_FF87())
{
if(scripts\mp\bots\_bots_personality::func_6C77(self.var_113DD.var_4B2C,1000))
{
childthread func_2D1F(self.var_113DD,"camp");
}
else
{
self.var_4504 = 0;
}
}
}
if(!self.var_4504)
{
if(!scripts\mp\bots\_bots_strategy::func_2DC5("kill_tag"))
{
var_05 = spawnstruct();
var_05.var_EDCA = "objective";
var_05.var_C293 = level.var_2EA7;
scripts\mp\bots\_bots_strategy::func_2E27("kill_tag",self.var_113DD.var_4B2C,25,var_05);
}
}
}
var_06 = 0;
if(isdefined(self.var_17D9))
{
var_06 = self [[ self.var_17D9 ]]();
}
if(!isdefined(self.var_113DD))
{
if(!var_06)
{
self [[ self.var_CA7B ]]();
}
}
if(gettime() > self.var_BF68)
{
self.var_BF68 = gettime() + 500;
var_07 = func_2D7C(1);
self.var_1141F = func_2D38(var_07,self.var_1141F);
}
wait(0.05);
}
}
//Function Number: 5
func_2D2E(param_00)
{
if(isdefined(param_00.on_path_grid) && param_00.on_path_grid)
{
var_01 = self.origin + (0,0,55);
if(distance2dsquared(param_00.var_4B2C,var_01) < 144)
{
var_02 = param_00.var_4B2C[2] - var_01[2];
if(var_02 > 0)
{
if(var_02 < level.var_2EA6)
{
if(!isdefined(self.var_A920))
{
self.var_A920 = 0;
}
if(gettime() - self.var_A920 > 3000)
{
self.var_A920 = gettime();
thread func_2DE3();
}
}
else
{
param_00.on_path_grid = 0;
return 1;
}
}
}
}
return 0;
}
//Function Number: 6
func_2DE3()
{
self endon("death");
self endon("disconnect");
self botsetstance("stand");
wait(1);
self botpressbutton("jump");
wait(1);
self botsetstance("none");
}
//Function Number: 7
func_2ED3()
{
for(;;)
{
level waittill("new_tag_spawned",var_00);
self.var_BF68 = -1;
if(isdefined(var_00))
{
if((isdefined(var_00.var_13372) && var_00.var_13372 == self) || isdefined(var_00.var_4F) && var_00.var_4F == self)
{
if(!isdefined(var_00.on_path_grid) && !isdefined(var_00.var_3731))
{
thread func_3704(var_00);
func_1380A(var_00);
if(var_00.on_path_grid)
{
var_01 = spawnstruct();
var_01.origin = var_00.var_4B2C;
var_01.var_2DD = var_00;
var_02[0] = var_01;
self.var_1141F = func_2D38(var_02,self.var_1141F);
}
}
}
}
}
}
//Function Number: 8
func_2D38(param_00,param_01)
{
var_02 = param_01;
foreach(var_04 in param_00)
{
var_05 = 0;
foreach(var_07 in param_01)
{
if(var_04.var_2DD == var_07.var_2DD && scripts\mp\bots\_bots_util::func_2EC6(var_04.origin,var_07.origin))
{
var_05 = 1;
break;
}
}
if(!var_05)
{
var_02 = scripts\common\utility::array_add(var_02,var_04);
}
}
return var_02;
}
//Function Number: 9
func_2DE1(param_00,param_01,param_02)
{
if(!param_00.calculated_nearest_node)
{
param_00.nearest_node = getclosestnodeinsight(param_00.var_4B2C);
param_00.calculated_nearest_node = 1;
}
if(isdefined(param_00.var_3731))
{
return 0;
}
var_03 = param_00.nearest_node;
var_04 = !isdefined(param_00.on_path_grid);
if(isdefined(var_03) && var_04 || param_00.on_path_grid)
{
var_05 = var_03 == param_01 || nodesvisible(var_03,param_01,1);
if(var_05)
{
var_06 = scripts\common\utility::func_13D90(self.origin,self.angles,param_00.var_4B2C,param_02);
if(var_06)
{
if(var_04)
{
thread func_3704(param_00);
func_1380A(param_00);
if(!param_00.on_path_grid)
{
return 0;
}
}
return 1;
}
}
}
return 0;
}
//Function Number: 10
func_2D7C(param_00,param_01,param_02)
{
var_03 = undefined;
if(isdefined(param_01))
{
var_03 = param_01;
}
else
{
var_03 = self getnearestnode();
}
var_04 = undefined;
if(isdefined(param_02))
{
var_04 = param_02;
}
else
{
var_04 = self botgetfovdot();
}
var_05 = [];
if(isdefined(var_03) && isdefined(level.var_58C0))
{
foreach(var_07 in level.var_58C0)
{
if(var_07 scripts\mp\_gameobjects::caninteractwith(self.team))
{
var_08 = 0;
if(!param_00)
{
if(!isdefined(var_07.var_3731))
{
if(!isdefined(var_07.on_path_grid))
{
level thread func_3704(var_07);
func_1380A(var_07);
}
var_08 = distancesquared(self.origin,var_07.var_4B2C) < 1000000 && var_07.on_path_grid;
}
}
else if(func_2DE1(var_07,var_03,var_04))
{
var_08 = 1;
}
if(var_08)
{
var_09 = spawnstruct();
var_09.origin = var_07.var_4B2C;
var_09.var_2DD = var_07;
var_05 = scripts\common\utility::array_add(var_05,var_09);
}
}
}
}
return var_05;
}
//Function Number: 11
func_3704(param_00)
{
param_00 endon("reset");
param_00.var_3731 = 1;
param_00.on_path_grid = scripts\mp\bots\_bots_util::func_2E4E(param_00.var_4B2C,undefined,level.var_2EA6 + 55);
param_00.var_3731 = undefined;
}
//Function Number: 12
func_1380A(param_00)
{
while(!isdefined(param_00.on_path_grid))
{
wait(0.05);
}
}
//Function Number: 13
func_2D74(param_00,param_01)
{
var_02 = undefined;
if(param_00.size > 0)
{
var_03 = 1409865409;
foreach(var_05 in param_00)
{
var_06 = func_7B2E(var_05.var_2DD);
if(!param_01 || var_06 < 2)
{
var_07 = distancesquared(var_05.var_2DD.var_4B2C,self.origin);
if(var_07 < var_03)
{
var_02 = var_05.var_2DD;
var_03 = var_07;
}
}
}
}
return var_02;
}
//Function Number: 14
func_2E65(param_00)
{
var_01 = [];
foreach(var_03 in param_00)
{
if(var_03.var_2DD scripts\mp\_gameobjects::caninteractwith(self.team) && scripts\mp\bots\_bots_util::func_2EC6(var_03.var_2DD.var_4B2C,var_03.origin))
{
if(!func_2D2E(var_03.var_2DD) && var_03.var_2DD.on_path_grid)
{
var_01 = scripts\common\utility::array_add(var_01,var_03);
}
}
}
return var_01;
}
//Function Number: 15
func_7B2E(param_00)
{
var_01 = 0;
foreach(var_03 in level.var_C928)
{
if(!isdefined(var_03.team))
{
continue;
}
if(var_03.team == self.team && var_03 != self)
{
if(isai(var_03))
{
if(isdefined(var_03.var_113DD) && var_03.var_113DD == param_00)
{
var_01++;
}
continue;
}
if(distancesquared(var_03.origin,param_00.var_4B2C) < 160000)
{
var_01++;
}
}
}
return var_01;
}
//Function Number: 16
func_2D1F(param_00,param_01,param_02)
{
self notify("bot_camp_tag");
self endon("bot_camp_tag");
self endon("stop_camping_tag");
if(isdefined(param_02))
{
self endon(param_02);
}
self botsetscriptgoalnode(self.var_C02A,param_01,self.var_1E2A);
var_03 = scripts\mp\bots\_bots_util::func_2ECB();
if(var_03 == "goal")
{
var_04 = param_00.nearest_node;
if(isdefined(var_04))
{
var_05 = findentrances(self.origin);
var_05 = scripts\common\utility::array_add(var_05,var_04);
childthread scripts\mp\bots\_bots_util::func_2ED4(var_05);
}
}
}

View File

@ -0,0 +1,16 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_cranked.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 1
* Decompile Time: 93 ms
* Timestamp: 10/27/2023 12:11:52 AM
*******************************************************************/
//Function Number: 1
main()
{
level.var_2E47["active"] = 1;
level.var_2E47["stationary"] = 0;
}

View File

@ -0,0 +1,328 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_ctf.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 11
* Decompile Time: 608 ms
* Timestamp: 10/27/2023 12:11:53 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
func_F8D9();
}
//Function Number: 2
func_F8F4()
{
level.var_2D9E["crate_can_use"] = ::func_4830;
level.var_2D9E["gametype_think"] = ::func_2D46;
}
//Function Number: 3
func_F8D9()
{
scripts\mp\bots\_bots_util::func_2ECA();
level.var_115CC["allies"].label = "allies";
level.var_115CC["axis"].label = "axis";
var_00[0] = level.var_115CC["allies"].var_4B2C;
var_01[0] = "flag_" + level.var_115CC["allies"].label;
var_00[1] = level.var_115CC["axis"].var_4B2C;
var_01[1] = "flag_" + level.var_115CC["axis"].label;
scripts\mp\bots\_bots_util::func_2D18(var_00,var_01);
var_02 = getzonenearest(level.var_115CC["allies"].var_4B2C);
if(isdefined(var_02))
{
function_002B(var_02,"allies");
}
var_02 = getzonenearest(level.var_115CC["axis"].var_4B2C);
if(isdefined(var_02))
{
function_002B(var_02,"axis");
}
level.var_2DA1 = 1;
}
//Function Number: 4
func_4830(param_00)
{
if(isagent(self) && !isdefined(param_00.var_2F33))
{
return 0;
}
if(isdefined(self.var_3AF4))
{
return 0;
}
if(!level.var_115CC[self.team] scripts\mp\_gameobjects::func_9E35())
{
return 0;
}
return 1;
}
//Function Number: 5
func_46BE()
{
var_00 = 0;
foreach(var_02 in level.var_C928)
{
if(!isdefined(var_02.team))
{
continue;
}
if(var_02 == self)
{
continue;
}
if(scripts\mp\_utility::func_9F9D(var_02) && var_02.team == self.team)
{
var_00++;
}
}
return var_00;
}
//Function Number: 6
func_2D46()
{
self notify("bot_ctf_think");
self endon("bot_ctf_think");
self endon("death");
self endon("disconnect");
level endon("game_ended");
while(!isdefined(level.var_2DA1))
{
wait(0.05);
}
func_9557();
self.var_BF69 = gettime();
self.var_BF3E = gettime();
self botsetflag("separation",0);
if(!isdefined(level.var_BF3F))
{
level.var_BF3F = gettime() - 100;
}
for(;;)
{
wait(0.05);
if(gettime() >= level.var_BF3F)
{
func_12DC1();
level.var_BF3F = gettime() + 100;
}
if(self.health <= 0)
{
continue;
}
if(!isdefined(self.var_E67C))
{
func_F319();
}
if(isdefined(self.var_3AF4))
{
func_4143();
if(!isdefined(level.var_6E28[level.var_C74B[self.team]]) || scripts\common\utility::istrue(level.var_3A3C))
{
self botsetscriptgoal(level.var_3A42[self.team].var_4B2C,16,"critical");
}
else if(isdefined(level.var_6E28[level.var_C74B[self.team]]) && func_46BE() == 0)
{
self botclearscriptgoal();
self botsetscriptgoal(level.var_6E28[level.var_C74B[self.team]].origin,256,"guard");
}
else if(gettime() > self.var_BF3E)
{
var_00 = getnodesinradius(level.var_3A42[self.team].var_4B2C,900,0,300);
var_01 = self botnodepick(var_00,var_00.size * 0.15,"node_hide");
if(isdefined(var_01))
{
self botsetscriptgoalnode(var_01,"critical");
}
self.var_BF3E = gettime() + 10000;
}
continue;
}
if(self.var_E67C == "attacker")
{
if(isdefined(level.var_6E28[self.team]))
{
if(!scripts\mp\bots\_bots_util::func_2DD4())
{
scripts\mp\bots\_bots_strategy::func_2DC1(level.var_6E28[self.team],400);
}
}
else
{
func_4143();
self botsetscriptgoal(level.var_115CC[level.var_C74B[self.team]].var_4B2C,16,"guard");
}
continue;
}
if(!level.var_115CC[self.team] scripts\mp\_gameobjects::func_9E35())
{
if(!isdefined(level.var_6E28[level.var_C74B[self.team]]))
{
func_4143();
self botsetscriptgoal(level.var_115CC[self.team].var_4B2C,16,"critical");
}
else
{
var_02 = level.var_6E28[level.var_C74B[self.team]];
if(gettime() > self.var_BF69 || self botcanseeentity(var_02))
{
func_4143();
self botsetscriptgoal(var_02.origin,16,"critical");
self.var_BF69 = gettime() + randomintrange(4500,5500);
}
}
continue;
}
if(!func_9C95())
{
self botclearscriptgoal();
var_03["entrance_points_index"] = "flag_" + level.var_115CC[self.team].label;
scripts\mp\bots\_bots_strategy::func_2E57(level.var_115CC[self.team].var_4B2C,600,var_03);
}
}
}
//Function Number: 7
func_4143()
{
if(scripts\mp\bots\_bots_util::func_2DD7())
{
scripts\mp\bots\_bots_strategy::func_2D4E();
}
}
//Function Number: 8
func_9C95()
{
return scripts\mp\bots\_bots_util::func_2DDD();
}
//Function Number: 9
func_F319()
{
self.var_E67C = level.var_BF57[self.team];
if(level.var_BF57[self.team] == "attacker")
{
level.var_BF57[self.team] = "defender";
return;
}
if(level.var_BF57[self.team] == "defender")
{
level.var_BF57[self.team] = "attacker";
}
}
//Function Number: 10
func_9557()
{
if(isdefined(level.var_2EF4) && level.var_2EF4)
{
return;
}
level.var_2EF4 = 1;
level.var_BF57["allies"] = "attacker";
level.var_BF57["axis"] = "attacker";
level.var_6E28 = [];
}
//Function Number: 11
func_12DC1()
{
level.var_6E28["allies"] = undefined;
level.var_6E28["axis"] = undefined;
foreach(var_01 in level.var_C928)
{
if(isalive(var_01) && isdefined(var_01.var_3AF4))
{
level.var_6E28[var_01.team] = var_01;
}
}
var_03 = [];
var_04 = [];
var_05 = [];
var_06 = [];
foreach(var_01 in level.var_C928)
{
if(isdefined(var_01.var_E67C))
{
if(var_01.team == "allies")
{
if(var_01.var_E67C == "attacker")
{
var_03[var_03.size] = var_01;
}
else if(var_01.var_E67C == "defender")
{
var_04[var_04.size] = var_01;
}
continue;
}
if(var_01.team == "axis")
{
if(var_01.var_E67C == "attacker")
{
var_05[var_05.size] = var_01;
continue;
}
if(var_01.var_E67C == "defender")
{
var_06[var_06.size] = var_01;
}
}
}
}
if(var_04.size > var_03.size)
{
scripts\common\utility::random(var_04).var_E67C = undefined;
}
else if(var_03.size > var_04.size + 1)
{
scripts\common\utility::random(var_03).var_E67C = undefined;
}
if(var_06.size > var_05.size)
{
scripts\common\utility::random(var_06).var_E67C = undefined;
return;
}
if(var_05.size > var_06.size + 1)
{
scripts\common\utility::random(var_05).var_E67C = undefined;
}
}

View File

@ -0,0 +1,659 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_dd.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 26
* Decompile Time: 1282 ms
* Timestamp: 10/27/2023 12:11:54 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
func_F8DA();
}
//Function Number: 2
func_F8F4()
{
level.var_2D9E["crate_can_use"] = ::func_4830;
level.var_2D9E["gametype_think"] = ::func_2D59;
}
//Function Number: 3
func_4830(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 func_9C96();
}
//Function Number: 4
func_B9B0()
{
self notify("monitor_zone_control");
self endon("monitor_zone_control");
self endon("death");
level endon("game_ended");
for(;;)
{
wait(1);
var_00 = getzonenearest(self.var_4B2C);
if(isdefined(var_00))
{
if(self.var_2C5C)
{
var_01 = scripts\common\utility::func_7984(self.ownerteam);
}
else
{
var_01 = self.ownerteam;
}
if(var_01 != "neutral")
{
function_002B(var_00,var_01);
}
}
}
}
//Function Number: 5
iw7_ship_hack_add_bombzone_node(param_00,param_01)
{
var_02 = spawnstruct();
var_02.origin = param_01;
var_02.angles = (0,randomint(360),0);
level.var_2C7A[param_00].var_2EFE[level.var_2C7A[param_00].var_2EFE.size] = var_02;
}
//Function Number: 6
bot_fixup_bombzone_issues()
{
if(level.var_B335 == "mp_metropolis")
{
if(scripts\mp\_utility::func_9900() && level.var_2C7A[0].var_2EFE.size == 0)
{
var_00 = (-505,-361,68);
iw7_ship_hack_add_bombzone_node(0,var_00);
var_00 = (-582,-311,68);
iw7_ship_hack_add_bombzone_node(0,var_00);
var_00 = (-583,-387,68);
iw7_ship_hack_add_bombzone_node(0,var_00);
var_00 = (-583,-387,68);
iw7_ship_hack_add_bombzone_node(0,var_00);
var_00 = (-497,-326,68);
iw7_ship_hack_add_bombzone_node(0,var_00);
}
}
}
//Function Number: 7
func_F8DA()
{
scripts\mp\bots\_bots_util::func_2ECA();
scripts\mp\bots\_bots_strategy::func_2E86();
bot_fixup_bombzone_issues();
foreach(var_01 in level.var_2C7A)
{
foreach(var_03 in var_01.var_2EFE)
{
var_04 = scripts\common\utility::array_randomize(var_01.var_2EFE);
var_01.var_2EFD = var_04[0];
break;
}
}
scripts\mp\bots\_bots_util::func_2D19();
foreach(var_01 in level.var_2C7A)
{
var_01 thread func_B9B0();
}
level.var_2DA1 = 1;
}
//Function Number: 8
getovertimebombzone()
{
return level.var_2C7A[0];
}
//Function Number: 9
isattacker()
{
if(!scripts\mp\_utility::func_9900())
{
if(self.team == game["attackers"])
{
return 1;
}
return 0;
}
var_00 = getovertimebombzone();
if(var_00.ownerteam == "neutral")
{
return 1;
}
if(var_00.ownerteam == self.team)
{
return 0;
}
return 1;
}
//Function Number: 10
isdefender()
{
if(!scripts\mp\_utility::func_9900())
{
if(self.team == game["defenders"])
{
return 1;
}
return 0;
}
var_00 = getovertimebombzone();
if(var_00.ownerteam == "neutral")
{
return 0;
}
if(var_00.ownerteam == self.team)
{
return 1;
}
return 0;
}
//Function Number: 11
func_2D59()
{
self notify("bot_dem_think");
self endon("bot_dem_think");
self endon("death");
self endon("disconnect");
level endon("game_ended");
while(!isdefined(level.var_2DA1))
{
wait(0.05);
}
func_9558();
self botsetflag("separation",0);
self botsetflag("grenade_objectives",1);
self botsetflag("use_obj_path_style",1);
self.var_9BB6 = 0;
self.var_9C6A = 0;
self.var_4B48 = undefined;
if(!isdefined(level.var_BF3F))
{
level.var_BF3F = gettime() - 100;
}
for(;;)
{
wait(0.05);
if(gettime() >= level.var_BF3F)
{
func_12DC2();
level.var_BF3F = gettime() + 100;
}
if(self.health <= 0)
{
continue;
}
if(scripts\mp\_utility::func_9900() && !isdefined(self.var_4B48))
{
self.var_4B48 = getovertimebombzone();
}
if(isattacker())
{
if(self.var_9C6A)
{
func_CC49();
}
else
{
if(!isdefined(self.var_4B48))
{
self.var_4B48 = func_6C7A("attackers");
}
if(isdefined(self.var_4B48))
{
if(func_9B7E(self.var_4B48) && !func_9C96())
{
scripts\mp\bots\_bots_strategy::func_2E57(self.var_4B48.var_2EFD.origin,600);
}
else if(!func_9B7E(self.var_4B48) && !func_9B84())
{
var_00["entrance_points_index"] = "zone" + self.var_4B48.label;
scripts\mp\bots\_bots_strategy::func_2D2B(self.var_4B48.var_2EFD.origin,350,var_00);
}
}
}
continue;
}
if(self.var_9BB6)
{
if(!isdefined(level.var_4DA4[self.var_4B48.label]))
{
self.var_9BB6 = 0;
}
}
if(self.var_9BB6)
{
func_50A6();
continue;
}
if(!isdefined(self.var_4B48))
{
self.var_4B48 = func_6C7A("defenders");
}
if(isdefined(self.var_4B48))
{
if(func_9B7E(self.var_4B48) && !func_9B84())
{
var_00["entrance_points_index"] = "zone" + self.var_4B48.label;
scripts\mp\bots\_bots_strategy::func_2D2B(self.var_4B48.var_2EFD.origin,350,var_00);
continue;
}
if(!func_9B7E(self.var_4B48) && !func_9C96())
{
scripts\mp\bots\_bots_strategy::func_2E57(self.var_4B48.var_2EFD.origin,600);
}
}
}
}
//Function Number: 12
func_CC49()
{
func_8466(1);
}
//Function Number: 13
func_50A6()
{
func_8466(0);
}
//Function Number: 14
func_8466(param_00)
{
scripts\mp\bots\_bots_strategy::func_2D4E();
if(param_00)
{
self botsetscriptgoal(self.var_4B48.var_2EFD.origin,20,"critical",self.var_4B48.var_2EFD.angles[1]);
}
else
{
var_01 = level.var_4DA4[self.var_4B48.label].origin;
self botsetscriptgoal(var_01,20,"critical");
}
var_02 = scripts\mp\bots\_bots_util::func_2ECB(undefined,"dem_bomb_exploded","no_longer_bomb_defuser");
if(var_02 == "goal")
{
self botpressbutton("use",level.var_50AB + 2);
func_1381B(level.var_50AB + 2,param_00);
if(param_00)
{
self.var_9C6A = 0;
return;
}
self.var_9BB6 = 0;
}
}
//Function Number: 15
func_1381B(param_00,param_01)
{
var_02 = gettime();
var_03 = var_02 + param_00 * 1000;
wait(0.05);
while(self usebuttonpressed() && gettime() < var_03 && isdefined(self.var_4B48) && param_01 != func_9B7E(self.var_4B48))
{
wait(0.05);
}
}
//Function Number: 16
func_9C96()
{
return scripts\mp\bots\_bots_util::func_2DDD();
}
//Function Number: 17
func_9B84()
{
return scripts\mp\bots\_bots_util::func_2DD5();
}
//Function Number: 18
func_787A(param_00,param_01)
{
var_02 = [];
foreach(var_04 in level.var_C928)
{
if(param_01 == "attackers" && !var_04 isattacker())
{
continue;
}
if(param_01 == "defenders" && !var_04 isdefender())
{
continue;
}
if(isalive(var_04) && scripts\mp\_utility::func_9F9D(var_04) && isdefined(var_04.var_4B48) && var_04.var_4B48 == param_00)
{
var_02[var_02.size] = var_04;
}
}
return var_02;
}
//Function Number: 19
func_7877(param_00)
{
var_01 = func_787A(param_00,"defenders");
foreach(var_03 in var_01)
{
if(var_03.var_9BB6)
{
return var_03;
}
}
return undefined;
}
//Function Number: 20
func_7878(param_00)
{
var_01 = func_787A(param_00,"attackers");
foreach(var_03 in var_01)
{
if(var_03.var_9C6A)
{
return var_03;
}
}
return undefined;
}
//Function Number: 21
func_6C7A(param_00)
{
var_01 = [];
foreach(var_03 in level.var_2C7A)
{
if(!scripts\common\utility::istrue(var_03.var_2C58))
{
var_04 = 0;
if(param_00 == "defenders")
{
var_04 = var_03.var_2EED > func_787A(var_03,"defenders").size;
}
else if(param_00 == "attackers")
{
var_04 = var_03.var_2EEC > func_787A(var_03,"attackers").size;
}
if(var_04)
{
var_01[var_01.size] = var_03;
}
}
}
var_06 = undefined;
if(var_01.size > 0)
{
var_07 = 999999999;
foreach(var_03 in var_01)
{
var_09 = distancesquared(var_03.var_2EFD.origin,self.origin);
if(var_09 < var_07)
{
var_06 = var_03;
var_07 = var_09;
}
}
}
return var_06;
}
//Function Number: 22
func_12DC2()
{
var_00 = [];
foreach(var_02 in level.var_2C7A)
{
if(!scripts\common\utility::istrue(var_02.var_2C58))
{
var_00[var_00.size] = var_02;
}
}
if(level.var_D88D == 2 && var_00.size == 1)
{
foreach(var_05 in level.var_C928)
{
if(scripts\mp\_utility::func_9F9D(var_05) && isdefined(var_05.var_4B48) && var_05.var_4B48 != var_00[0])
{
var_05.var_4B48 = undefined;
var_05 scripts\mp\bots\_bots_strategy::func_2D4E();
var_05 notify("dem_bomb_exploded");
var_05.var_9BB6 = 0;
var_05.var_9C6A = 0;
}
}
level.var_D88D = 1;
}
func_12DAD(var_00);
func_12DAE(var_00);
}
//Function Number: 23
func_12DAD(param_00)
{
if(gettime() > level.var_BF62)
{
level.var_4BD6 = 1 - level.var_4BD6;
level.var_BF62 = gettime() + 90000;
}
var_01 = 0;
foreach(var_03 in level.var_C928)
{
if(scripts\mp\_utility::func_9D36(var_03) && isalive(var_03) && var_03 isattacker())
{
var_01++;
}
}
if(param_00.size == 2)
{
if(var_01 >= 2)
{
param_00[1 - level.var_4BD6].var_2EEC = 1;
}
else
{
param_00[1 - level.var_4BD6].var_2EEC = 0;
}
param_00[level.var_4BD6].var_2EEC = var_01 - param_00[1 - level.var_4BD6].var_2EEC;
}
else if(param_00.size == 1)
{
param_00[0].var_2EEC = var_01;
}
foreach(var_06 in param_00)
{
var_07 = func_787A(var_06,"attackers");
if(var_07.size > var_06.var_2EEC)
{
var_07 = scripts\common\utility::array_randomize(var_07);
foreach(var_09 in var_07)
{
if(!var_09.var_9C6A)
{
var_09.var_4B48 = undefined;
var_09 scripts\mp\bots\_bots_strategy::func_2D4E();
break;
}
}
}
}
foreach(var_06 in param_00)
{
if(!func_9B7E(var_06) && !isdefined(func_7878(var_06)))
{
var_07 = func_787A(var_06,"attackers");
if(var_07.size > 0)
{
var_0D = scripts\common\utility::func_782F(var_06.var_2EFD.origin,var_07);
var_0D[0].var_9C6A = 1;
var_0D[0] scripts\mp\bots\_bots_strategy::func_2D4E();
}
}
}
}
//Function Number: 24
func_12DAE(param_00)
{
var_01 = 0;
foreach(var_03 in level.var_C928)
{
if(scripts\mp\_utility::func_9D36(var_03) && isalive(var_03) && var_03 isdefender())
{
var_01++;
}
}
if(param_00.size == 2)
{
param_00[0].var_2EED = int(var_01 / 2);
param_00[1].var_2EED = int(var_01 / 2);
param_00[level.var_BB52].var_2EED = param_00[level.var_BB52].var_2EED + var_01 % 2;
for(var_05 = 0;var_05 < param_00.size;var_05++)
{
if(func_9B7E(param_00[var_05]))
{
param_00[var_05].var_2EED++;
param_00[1 - var_05].var_2EED--;
}
}
}
else if(param_00.size == 1)
{
param_00[0].var_2EED = var_01;
}
foreach(var_07 in param_00)
{
var_08 = func_787A(var_07,"defenders");
if(var_08.size > var_07.var_2EED)
{
var_08 = scripts\common\utility::array_randomize(var_08);
foreach(var_0A in var_08)
{
if(!var_0A.var_9BB6)
{
var_0A.var_4B48 = undefined;
var_0A scripts\mp\bots\_bots_strategy::func_2D4E();
break;
}
}
}
}
foreach(var_07 in param_00)
{
if(func_9B7E(var_07))
{
var_0E = func_7877(var_07);
if(!isdefined(var_0E) || gettime() > level.var_BF6A)
{
var_08 = func_787A(var_07,"defenders");
if(var_08.size > 0)
{
var_0F = scripts\common\utility::func_782F(var_07.var_2EFD.origin,var_08);
if(!isdefined(var_0E) || var_0F[0] != var_0E)
{
var_0F[0].var_9BB6 = 1;
var_0F[0] scripts\mp\bots\_bots_strategy::func_2D4E();
if(isdefined(var_0E))
{
var_0E.var_9BB6 = 0;
var_0E notify("no_longer_bomb_defuser");
}
}
}
level.var_BF6A = gettime() + 2500;
}
}
}
}
//Function Number: 25
func_9B7E(param_00)
{
return isdefined(param_00.var_2C5C) && param_00.var_2C5C == 1;
}
//Function Number: 26
func_9558()
{
if(isdefined(level.var_2EF4) && level.var_2EF4)
{
return;
}
level.var_2EF4 = 1;
level.var_BB52 = randomint(2);
level.var_D88D = 2;
level.var_4BD6 = randomint(2);
level.var_BF62 = gettime() + 90000;
level.var_BF6A = 0;
}

View File

@ -0,0 +1,14 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_dm.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 1
* Decompile Time: 150 ms
* Timestamp: 10/27/2023 12:11:55 AM
*******************************************************************/
//Function Number: 1
main()
{
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,174 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_front.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 5
* Decompile Time: 305 ms
* Timestamp: 10/27/2023 12:11:58 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
func_F8E2();
}
//Function Number: 2
func_F8F4()
{
level.var_2D9E["gametype_think"] = ::func_2ECE;
level.var_2D9E["commander_gametype_tactics"] = ::func_2EAB;
}
//Function Number: 3
func_F8E2()
{
if(scripts\mp\_utility::func_2DD9())
{
level.var_2EAD = "default";
level.var_2D80 = 0;
}
}
//Function Number: 4
func_2ECE()
{
self notify("bot_war_think");
self endon("bot_war_think");
self endon("death");
self endon("disconnect");
level endon("game_ended");
self endon("owner_disconnect");
for(;;)
{
self [[ self.var_CA7B ]]();
wait(0.05);
}
}
//Function Number: 5
func_2EAB(param_00)
{
var_01 = 0;
var_02 = level.var_2D80;
var_03 = 0;
level.var_2D80 = 0;
switch(param_00)
{
case "tactic_none":
level.var_2EAD = "revert";
var_01 = 1;
break;
case "tactic_war_hp":
level.var_2EAD = "revert";
level thread scripts\mp\bots\_bots_fireteam::func_6D91(self.team);
var_03 = 1;
var_01 = 1;
break;
case "tactic_war_buddy":
level.var_2EAD = "revert";
level.var_2D80 = 1;
var_01 = 1;
break;
case "tactic_war_hyg":
level.var_2EAD = "camper";
var_01 = 1;
break;
}
if(!var_03)
{
level scripts\mp\bots\_bots_fireteam::func_6D92(self.team);
}
if(var_01)
{
foreach(var_05 in level.players)
{
if(!isdefined(var_05.team))
{
continue;
}
if(isbot(var_05) && var_05.team == self.team)
{
var_05 botsetflag("force_sprint",0);
if(level.var_2EAD == "revert")
{
if(isdefined(var_05.var_6D90))
{
var_05 notify("stop_camping_tag");
var_05 scripts\mp\bots\_bots_personality::func_413A();
var_05 scripts\mp\bots\_bots_util::func_2E83(var_05.var_6D90);
var_05.var_3802 = undefined;
var_05.var_37EF = undefined;
}
continue;
}
if(!isdefined(var_05.var_6D90))
{
var_05.var_6D90 = var_05 method_8035();
}
var_05 notify("stop_camping_tag");
var_05 scripts\mp\bots\_bots_personality::func_413A();
var_05 scripts\mp\bots\_bots_util::func_2E83(level.var_2EAD);
if(level.var_2EAD == "camper")
{
var_05.var_3802 = 1;
var_05.var_37EF = 1;
}
}
}
}
if(level.var_2D80)
{
foreach(var_05 in level.players)
{
if(!isdefined(var_05.team))
{
continue;
}
if(var_05.team == self.team)
{
if(isbot(var_05))
{
var_05 thread scripts\mp\bots\_bots_fireteam::func_2D7E();
}
}
}
return;
}
if(var_02)
{
foreach(var_05 in level.players)
{
if(!isdefined(var_05.team))
{
continue;
}
if(var_05.team == self.team)
{
if(isbot(var_05))
{
var_05.var_222 = undefined;
var_05.var_2D8C = undefined;
var_05 notify("buddy_cancel");
var_05 scripts\mp\bots\_bots_personality::func_2D0C();
}
}
}
}
}

View File

@ -0,0 +1,229 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_grind.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 7
* Decompile Time: 378 ms
* Timestamp: 10/27/2023 12:11:58 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
scripts\mp\bots\gametype_conf::func_F8D8();
}
//Function Number: 2
func_F8F4()
{
level.var_2D9E["gametype_think"] = ::func_2DBF;
}
//Function Number: 3
func_2DBF()
{
self notify("bot_grind_think");
self endon("bot_grind_think");
self endon("death");
self endon("disconnect");
level endon("game_ended");
self.var_860B = 0;
self.var_8432 = undefined;
self.var_4505 = 0;
self.var_17D9 = ::func_2DBE;
if(self botgetdifficultysetting("strategyLevel") > 0)
{
childthread func_6541();
}
scripts\mp\bots\gametype_conf::func_2D39();
}
//Function Number: 4
func_2DBE()
{
if(!isdefined(self.var_113DD))
{
if(self.var_11422 > 0)
{
var_00 = squared(500 + self.var_11422 * 250);
if(game["teamScores"][self.team] + self.var_11422 >= level.var_E763)
{
var_00 = squared(5000);
}
else if(!isdefined(self.var_10C) && !scripts\mp\bots\_bots_util::func_2DCA())
{
var_00 = squared(1500 + self.var_11422 * 250);
}
var_01 = undefined;
foreach(var_03 in level.var_13FC1)
{
var_04 = distancesquared(self.origin,var_03.origin);
if(var_04 < var_00)
{
var_00 = var_04;
var_01 = var_03;
}
}
if(isdefined(var_01))
{
var_06 = 1;
if(self.var_860B)
{
if(isdefined(self.var_8432) && self.var_8432 == var_01)
{
var_06 = 0;
}
}
if(var_06)
{
self.var_860B = 1;
self.var_8432 = var_01;
self botclearscriptgoal();
self notify("stop_going_to_zone");
self notify("stop_camping_zone");
self.var_4505 = 0;
scripts\mp\bots\_bots_personality::func_413A();
scripts\mp\bots\_bots_strategy::func_2D02("kill_tag");
childthread func_2DBC(var_01,"tactical");
}
}
if(self.var_860B)
{
if(game["teamScores"][self.team] + self.var_11422 >= level.var_E763)
{
self botsetflag("force_sprint",1);
}
}
}
else if(self.var_860B)
{
self.var_860B = 0;
self.var_8432 = undefined;
self notify("stop_going_to_zone");
self botclearscriptgoal();
}
if(self.var_CA79 == "camper" && !self.var_4504 && !self.var_860B)
{
var_00 = undefined;
var_01 = undefined;
foreach(var_03 in level.var_13FC1)
{
var_04 = distancesquared(self.origin,var_03.origin);
if(!isdefined(var_00) || var_04 < var_00)
{
var_00 = var_04;
var_01 = var_03;
}
}
if(isdefined(var_01))
{
if(scripts\mp\bots\_bots_personality::func_FF87())
{
if(scripts\mp\bots\_bots_personality::func_6C77(var_01.origin))
{
self.var_4505 = 1;
self notify("stop_going_to_zone");
self.var_860B = 0;
self botclearscriptgoal();
childthread func_2D20(var_01,"camp");
}
else
{
self notify("stop_camping_zone");
self.var_4505 = 0;
scripts\mp\bots\_bots_personality::func_413A();
}
}
}
else
{
self.var_4505 = 1;
}
}
}
else
{
self notify("stop_going_to_zone");
self.var_860B = 0;
self.var_8432 = undefined;
self notify("stop_camping_zone");
self.var_4505 = 0;
}
return self.var_860B || self.var_4505;
}
//Function Number: 5
func_2DBC(param_00,param_01)
{
self endon("stop_going_to_zone");
if(!isdefined(param_00.calculated_nearest_node))
{
param_00.nearest_node = getclosestnodeinsight(param_00.origin);
param_00.calculated_nearest_node = 1;
}
var_02 = param_00.nearest_node;
self botsetscriptgoal(var_02.origin,32,param_01);
var_03 = scripts\mp\bots\_bots_util::func_2ECB();
}
//Function Number: 6
func_2D20(param_00,param_01)
{
self endon("stop_camping_zone");
self botsetscriptgoalnode(self.var_C02A,param_01,self.var_1E2A);
var_02 = scripts\mp\bots\_bots_util::func_2ECB();
if(var_02 == "goal")
{
if(!isdefined(param_00.calculated_nearest_node))
{
param_00.nearest_node = getclosestnodeinsight(param_00.origin);
param_00.calculated_nearest_node = 1;
}
var_03 = param_00.nearest_node;
if(isdefined(var_03))
{
var_04 = findentrances(self.origin);
var_04 = scripts\common\utility::array_add(var_04,var_03);
childthread scripts\mp\bots\_bots_util::func_2ED4(var_04);
}
}
}
//Function Number: 7
func_6541()
{
self.var_5001 = self botgetdifficultysetting("meleeChargeDist");
for(;;)
{
if(self botgetdifficultysetting("strategyLevel") < 2)
{
wait(0.5);
}
else
{
wait(0.2);
}
if(isdefined(self.var_10C) && isplayer(self.var_10C) && isdefined(self.var_10C.var_11422) && self.var_10C.var_11422 >= 3 && self botcanseeentity(self.var_10C) && distance(self.origin,self.var_10C.origin) <= 500)
{
self method_804D("meleeChargeDist",500);
self botsetflag("prefer_melee",1);
continue;
}
self method_804D("meleeChargeDist",self.var_5001);
self botsetflag("prefer_melee",0);
}
}

View File

@ -0,0 +1,109 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_grnd.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 7
* Decompile Time: 414 ms
* Timestamp: 10/27/2023 12:11:59 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
func_F8DC();
}
//Function Number: 2
func_F8F4()
{
level.var_2D9E["gametype_think"] = ::func_2DC0;
}
//Function Number: 3
func_F8DC()
{
scripts\mp\bots\_bots_util::func_2ECA(1);
level.var_DAA3 = 128;
level.var_2DA1 = 1;
}
//Function Number: 4
func_2DC0()
{
self notify("bot_grnd_think");
self endon("bot_grnd_think");
self endon("death");
self endon("disconnect");
level endon("game_ended");
self botclearscriptgoal();
while(!isdefined(level.var_2DA1))
{
wait(0.05);
}
self botsetflag("separation",0);
thread func_4143();
for(;;)
{
wait(0.05);
if(scripts\mp\bots\_bots_strategy::func_2DC5())
{
continue;
}
if(!self bothasscriptgoal())
{
var_00 = func_7FFA();
if(isdefined(var_00))
{
self botsetscriptgoal(var_00.origin,0,"objective");
}
continue;
}
if(!scripts\mp\bots\_bots_util::func_2DD7())
{
self botclearscriptgoal();
var_00 = func_7FFA();
if(isdefined(var_00))
{
scripts\mp\bots\_bots_strategy::func_2E57(var_00.origin,level.var_DAA3);
}
}
}
}
//Function Number: 5
func_4143()
{
for(;;)
{
level waittill("zone_reset");
if(scripts\mp\bots\_bots_util::func_2DD7())
{
scripts\mp\bots\_bots_strategy::func_2D4E();
}
}
}
//Function Number: 6
func_7FFA()
{
var_00 = function_00B7(level.var_13FB0.var_767B.trigger);
if(var_00.size == 0 || !isdefined(var_00))
{
return undefined;
}
var_01 = randomintrange(0,var_00.size);
var_02 = var_00[var_01];
return var_02;
}
//Function Number: 7
func_1166D()
{
}

View File

@ -0,0 +1,27 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_gun.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 2
* Decompile Time: 142 ms
* Timestamp: 10/27/2023 12:11:59 AM
*******************************************************************/
//Function Number: 1
main()
{
level.var_2D9E["gametype_think"] = ::bot_gun_think;
}
//Function Number: 2
bot_gun_think()
{
var_00 = self botgetdifficultysetting("throwKnifeChance");
if(var_00 < 0.25)
{
self method_804D("throwKnifeChance",0.25);
}
self method_804D("allowGrenades",1);
}

View File

@ -0,0 +1,339 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_infect.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 10
* Decompile Time: 536 ms
* Timestamp: 10/27/2023 12:12:00 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
func_F8DD();
}
//Function Number: 2
func_F8F4()
{
level.var_2D9E["gametype_think"] = ::func_2DCF;
level.var_2D9E["should_pickup_weapons"] = ::func_2E91;
}
//Function Number: 3
func_F8DD()
{
level.var_2EF2 = 1;
level.var_2EF5 = 1;
level.var_2EF3 = 1;
thread func_2DCB();
}
//Function Number: 4
func_2E91()
{
if(level.var_9410 && self.team == "axis")
{
return 0;
}
return scripts\mp\bots\_bots::func_2E90();
}
//Function Number: 5
func_2DCF()
{
self notify("bot_infect_think");
self endon("bot_infect_think");
self endon("death");
self endon("disconnect");
level endon("game_ended");
childthread func_2DCE();
for(;;)
{
if(level.var_9410)
{
if(self.team == "axis" && self method_8035() != "run_and_gun")
{
scripts\mp\bots\_bots_util::func_2E83("run_and_gun");
}
}
if(self.var_2EAC != self.team)
{
self.var_2EAC = self.team;
}
if(self.team == "axis")
{
var_00 = scripts\mp\bots\_bots_strategy::func_2E1E();
if(!isdefined(var_00) || var_00)
{
self botclearscriptgoal();
}
}
self [[ self.var_CA7B ]]();
wait(0.05);
}
}
//Function Number: 6
func_2DCB()
{
level notify("bot_infect_ai_director_update");
level endon("bot_infect_ai_director_update");
level endon("game_ended");
for(;;)
{
var_00 = [];
var_01 = [];
foreach(var_03 in level.players)
{
if(!isdefined(var_03.var_982D) && var_03.health > 0 && isdefined(var_03.team) && var_03.team == "allies" || var_03.team == "axis")
{
var_03.var_982D = gettime();
}
if(isdefined(var_03.var_982D) && gettime() - var_03.var_982D > 5000)
{
if(!isdefined(var_03.team))
{
continue;
}
if(var_03.team == "axis")
{
var_00[var_00.size] = var_03;
continue;
}
if(var_03.team == "allies")
{
var_01[var_01.size] = var_03;
}
}
}
if(var_00.size > 0 && var_01.size > 0)
{
var_05 = 1;
foreach(var_07 in var_01)
{
if(isbot(var_07))
{
var_05 = 0;
}
}
if(var_05)
{
foreach(var_03 in var_01)
{
if(!isdefined(var_03.var_A8D2))
{
var_03.var_A8D2 = gettime();
var_03.var_A8D1 = var_03.origin;
var_03.var_118DA = 0;
}
if(gettime() >= var_03.var_A8D2 + 5000)
{
var_03.var_A8D2 = gettime();
var_0A = distancesquared(var_03.origin,var_03.var_A8D1);
var_03.var_A8D1 = var_03.origin;
if(var_0A < 90000)
{
var_03.var_118DA = var_03.var_118DA + 5000;
if(var_03.var_118DA >= 20000)
{
var_0B = scripts\common\utility::func_782F(var_03.origin,var_00);
foreach(var_0D in var_0B)
{
if(isbot(var_0D))
{
var_0E = var_0D botgetscriptgoaltype();
if(var_0E != "tactical" && var_0E != "critical")
{
var_0D thread func_91E4(var_03);
break;
}
}
}
}
}
else
{
var_03.var_118DA = 0;
var_03.var_A8D1 = var_03.origin;
}
}
}
}
}
wait(1);
}
}
//Function Number: 7
func_91E4(param_00)
{
self endon("disconnect");
self endon("death");
self botsetscriptgoal(param_00.origin,0,"critical");
scripts\mp\bots\_bots_util::func_2ECB();
self botclearscriptgoal();
}
//Function Number: 8
func_2DCE()
{
if(self.team == "axis")
{
self.var_3829 = 0;
self.var_B58B = undefined;
self.var_B58D = undefined;
self.var_B58C = 0;
self.var_B5B2 = undefined;
self.var_B5B1 = 0;
var_00 = self botgetdifficultysetting("throwKnifeChance");
if(var_00 < 0.25)
{
self method_804D("throwKnifeChance",0.25);
}
self method_804D("allowGrenades",1);
self botsetflag("path_traverse_wait",1);
for(;;)
{
if(self hasweapon("throwingknife_mp"))
{
if(scripts\mp\_utility::func_9E0E(self.var_10C))
{
var_01 = gettime();
if(!isdefined(self.var_B58B) || self.var_B58B != self.var_10C)
{
self.var_B58B = self.var_10C;
self.var_B58D = self.var_10C getnearestnode();
self.var_B58C = var_01;
}
else
{
var_02 = squared(self botgetdifficultysetting("meleeDist"));
if(distancesquared(self.var_10C.origin,self.origin) <= var_02)
{
self.var_3829 = var_01;
}
var_03 = self.var_10C getnearestnode();
var_04 = self getnearestnode();
if(!isdefined(self.var_B58D) || self.var_B58D != var_03)
{
self.var_B58C = var_01;
self.var_B58D = var_03;
}
if(!isdefined(self.var_B5B2) || self.var_B5B2 != var_04)
{
self.var_B5B1 = var_01;
self.var_B5B2 = var_04;
}
else if(distancesquared(self.origin,self.var_B5B2.origin) > 9216)
{
self.var_B5B0 = var_01;
}
if(self.var_3829 + 3000 < var_01)
{
if(self.var_B5B1 + 3000 < var_01)
{
if(self.var_B58C + 3000 < var_01)
{
if(func_2DCC(self.origin,self.var_10C.origin))
{
scripts\mp\bots\_bots_util::func_2E58("find_node_can_see_ent",::func_2DCD,self.var_10C,self.var_B5B2);
}
if(!self method_80FB("throwingknife_mp"))
{
self setweaponammoclip("throwingknife_mp",1);
}
scripts\mp\_utility::func_136EF(30,"enemy");
self botclearscriptgoal();
}
}
}
}
}
}
wait(0.25);
}
}
}
//Function Number: 9
func_2DCC(param_00,param_01)
{
if(abs(param_00[2] - param_01[2]) > 56 && distance2dsquared(param_00,param_01) < 2304)
{
return 1;
}
return 0;
}
//Function Number: 10
func_2DCD(param_00,param_01)
{
if(!isdefined(param_00) || !isdefined(param_01))
{
return;
}
var_02 = 0;
if(issubstr(param_01.type,"Begin"))
{
var_02 = 1;
}
var_03 = getlinkednodes(param_01);
if(isdefined(var_03) && var_03.size)
{
var_04 = scripts\common\utility::array_randomize(var_03);
foreach(var_06 in var_04)
{
if(var_02 && issubstr(var_06.type,"End"))
{
continue;
}
if(func_2DCC(var_06.origin,param_00.origin))
{
continue;
}
var_07 = self geteye() - self.origin;
var_08 = var_06.origin + var_07;
var_09 = param_00.origin;
if(isplayer(param_00))
{
var_09 = param_00 scripts\mp\_utility::func_815C();
}
if(sighttracepassed(var_08,var_09,0,self,param_00))
{
var_0A = vectortoyaw(var_09 - var_08);
self botsetscriptgoalnode(var_06,"critical",var_0A);
scripts\mp\bots\_bots_util::func_2ECB(3);
return;
}
wait(0.05);
}
}
}

View File

@ -0,0 +1,701 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_koth.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 25
* Decompile Time: 1305 ms
* Timestamp: 10/27/2023 12:12:02 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
func_F998();
}
//Function Number: 2
func_F998()
{
scripts\mp\bots\_bots_util::func_2ECA(1);
thread func_2DC3();
level.var_DAA3 = 128;
level.var_C992 = 800;
level.var_2DA1 = 1;
}
//Function Number: 3
func_F8F4()
{
level.var_2D9E["gametype_think"] = ::func_2DC4;
}
//Function Number: 4
func_986A()
{
var_00 = func_7809(self.team);
var_01 = func_780A(self.team);
var_02 = func_2D0F(self.team);
var_03 = func_2D50(self.team);
var_04 = level.var_2E46[self.var_CA79];
if(var_04 == "active")
{
if(var_00.size >= var_02)
{
var_05 = 0;
foreach(var_07 in var_00)
{
if(isai(var_07) && level.var_2E46[var_07.var_CA79] == "stationary")
{
var_07.var_E67C = undefined;
var_05 = 1;
break;
}
}
if(var_05)
{
func_2E84("attacker");
return;
}
func_2E84("defender");
return;
}
func_2E84("attacker");
return;
}
if(var_04 == "stationary")
{
if(var_01.size >= var_03)
{
var_05 = 0;
foreach(var_0A in var_01)
{
if(isai(var_0A) && level.var_2E46[var_0A.var_CA79] == "active")
{
var_0A.var_E67C = undefined;
var_05 = 1;
break;
}
}
if(var_05)
{
func_2E84("defender");
return;
}
func_2E84("attacker");
return;
}
func_2E84("defender");
return;
}
}
//Function Number: 5
func_2DC4()
{
self notify("bot_grnd_think");
self endon("bot_grnd_think");
self endon("death");
self endon("disconnect");
level endon("game_ended");
self botclearscriptgoal();
while(!isdefined(level.var_2DA1))
{
wait(0.05);
}
self botsetflag("separation",0);
var_00 = undefined;
var_01 = undefined;
for(;;)
{
wait(0.05);
if(scripts\mp\bots\_bots_strategy::func_2DC5())
{
continue;
}
if(!isdefined(self.var_E67C))
{
func_986A();
}
if(!scripts\common\utility::istrue(self.var_2D51))
{
var_00 = undefined;
var_01 = undefined;
}
if(self.var_E67C == "attacker")
{
var_02 = 0;
var_01 = undefined;
if(!isdefined(var_00))
{
var_02 = 1;
}
else if(isdefined(level.var_13FB0.var_767B.trigger))
{
if(var_00 != level.var_13FB0.var_767B.trigger)
{
var_02 = 1;
}
}
if(var_02)
{
var_03 = getclosestpointonnavmesh(level.var_13FB0.var_767B.trigger.origin,self);
var_04["min_goal_time"] = 1;
var_04["max_goal_time"] = 4;
scripts\mp\bots\_bots_strategy::func_2E3D(var_03,level.var_C992,var_04);
var_00 = level.var_13FB0.var_767B.trigger;
}
continue;
}
if(self.var_E67C == "defender")
{
var_00 = undefined;
var_05 = 0;
if(!isdefined(var_01))
{
var_05 = 1;
}
else if(isdefined(level.var_13FB0.var_767B.trigger))
{
if(var_01 != level.var_13FB0.var_767B.trigger)
{
var_05 = 1;
}
}
if(var_05)
{
var_06 = function_00B7(level.var_13FB0.var_767B.trigger);
if(var_06.size > 0)
{
var_04["min_goal_time"] = 3;
var_04["max_goal_time"] = 6;
scripts\mp\bots\_bots_strategy::func_2D2C(level.var_13FB0.var_767B.trigger.origin,var_06,level.var_13FB0.var_767B.trigger,var_04);
var_01 = level.var_13FB0.var_767B.trigger;
}
}
}
}
}
//Function Number: 6
func_2D0F(param_00)
{
var_01 = func_7B3C(param_00);
return int(int(var_01) / 2) + 1 + int(var_01) % 2;
}
//Function Number: 7
func_2D50(param_00)
{
var_01 = func_7B3C(param_00);
return max(int(int(var_01) / 2) - 1,0);
}
//Function Number: 8
func_7B3C(param_00)
{
var_01 = 0;
foreach(var_03 in level.var_C928)
{
if(scripts\mp\_utility::func_9F9D(var_03) && isdefined(var_03.team) && var_03.team == param_00)
{
var_01++;
}
}
return var_01;
}
//Function Number: 9
func_7809(param_00)
{
var_01 = func_7BBE("attacker",param_00);
if(isdefined(level.var_13FB0.var_767B.trigger))
{
foreach(var_03 in level.players)
{
if(!isai(var_03) && isdefined(var_03.team) && var_03.team == param_00)
{
if(!var_03 istouching(level.var_13FB0.var_767B.trigger))
{
var_01 = scripts\common\utility::array_add(var_01,var_03);
}
}
}
}
return var_01;
}
//Function Number: 10
func_780A(param_00)
{
var_01 = func_7BBE("defender",param_00);
if(isdefined(level.var_13FB0.var_767B.trigger))
{
foreach(var_03 in level.players)
{
if(!isai(var_03) && isdefined(var_03.team) && var_03.team == param_00)
{
if(var_03 istouching(level.var_13FB0.var_767B.trigger))
{
var_01 = scripts\common\utility::array_add(var_01,var_03);
}
}
}
}
return var_01;
}
//Function Number: 11
func_7BBE(param_00,param_01)
{
var_02 = [];
foreach(var_04 in level.var_C928)
{
if(!isdefined(var_04.team))
{
continue;
}
if(isalive(var_04) && scripts\mp\_utility::func_9F9D(var_04) && var_04.team == param_01 && isdefined(var_04.var_E67C) && var_04.var_E67C == param_00)
{
var_02[var_02.size] = var_04;
}
}
return var_02;
}
//Function Number: 12
func_2E84(param_00)
{
self.var_E67C = param_00;
self botclearscriptgoal();
scripts\mp\bots\_bots_strategy::func_2D4E();
}
//Function Number: 13
func_9B74(param_00,param_01)
{
var_02 = param_00 istouching(level.var_13FB0.var_767B.trigger);
var_03 = param_01 istouching(level.var_13FB0.var_767B.trigger);
if(var_02 != var_03)
{
if(var_02)
{
return 0;
}
return 1;
}
if(var_02)
{
if(param_00.var_E67C != param_01.var_E67C)
{
if(param_01.var_E67C == "defender")
{
return 1;
}
return 0;
}
}
var_04 = distance2dsquared(param_00.origin,level.var_13FB0.var_767B.trigger.origin);
var_05 = distance2dsquared(param_01.origin,level.var_13FB0.var_767B.trigger.origin);
if(var_04 < var_05)
{
return 1;
}
return 0;
}
//Function Number: 14
func_2DC3()
{
level notify("bot_hardpoint_ai_director_update");
level endon("bot_hardpoint_ai_director_update");
level endon("game_ended");
var_00[0] = "allies";
var_00[1] = "axis";
var_01["allies"] = 0;
var_01["axis"] = 0;
for(;;)
{
var_02 = "neutral";
if(isdefined(level.var_13FB0.var_767B.trigger))
{
var_02 = level.var_13FB0.var_767B scripts\mp\_gameobjects::func_803E();
}
foreach(var_04 in var_00)
{
var_05 = [];
var_06 = [];
if(var_04 != var_02)
{
var_01[var_04] = 0;
foreach(var_08 in level.var_C928)
{
if(scripts\mp\_utility::func_9F9D(var_08) && isdefined(var_08.team) && var_08.team == var_04)
{
if(isbot(var_08) && !isdefined(var_08.var_E67C) || var_08.var_E67C != "defender")
{
var_08 func_2E84("defender");
}
}
}
continue;
}
var_0A = func_2D0F(var_04);
var_0B = func_2D50(var_04);
if(!var_01[var_04])
{
var_01[var_04] = 1;
var_0C = [];
foreach(var_08 in level.var_C928)
{
if(scripts\mp\_utility::func_9F9D(var_08) && isdefined(var_08.team) && var_08.team == var_04)
{
if(isbot(var_08))
{
var_0C[var_0C.size] = var_08;
}
}
}
var_0F = scripts\common\utility::func_22C3(var_0C,::func_9B74);
if(var_0C.size < var_0B)
{
var_0B = var_0C.size;
}
var_0B = int(var_0B);
for(var_10 = 0;var_10 < var_0B;var_10++)
{
var_0C[var_10] func_2E84("defender");
}
for(var_10 = var_0B;var_10 < var_0C.size;var_10++)
{
var_0C[var_10] func_2E84("attacker");
}
wait(1);
continue;
}
var_11 = func_7809(var_04);
var_12 = func_780A(var_04);
if(var_11.size > var_0A)
{
var_13 = 0;
foreach(var_15 in var_11)
{
if(isai(var_15))
{
if(level.var_2E46[var_15.var_CA79] == "stationary")
{
var_15 func_2E84("defender");
var_13 = 1;
break;
}
else
{
var_05 = scripts\common\utility::array_add(var_05,var_15);
}
}
}
if(!var_13 && var_05.size > 0)
{
scripts\common\utility::random(var_05) func_2E84("defender");
}
}
if(var_12.size > var_0B)
{
var_17 = 0;
foreach(var_19 in var_12)
{
if(isai(var_19))
{
if(level.var_2E46[var_19.var_CA79] == "active")
{
var_19 func_2E84("attacker");
var_17 = 1;
break;
}
else
{
var_06 = scripts\common\utility::array_add(var_06,var_19);
}
}
}
if(!var_17 && var_06.size > 0)
{
scripts\common\utility::random(var_06) func_2E84("attacker");
}
}
if(var_12.size == 0)
{
var_1B = func_7BBE("attacker",var_04);
if(var_1B.size > 0)
{
scripts\common\utility::random(var_1B) func_2E84("defender");
}
}
}
wait(1);
}
}
//Function Number: 15
func_4830(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 !scripts\mp\bots\_bots_util::func_2DD7() || scripts\mp\bots\_bots_util::func_2DDD();
}
//Function Number: 16
func_B9B0()
{
self notify("monitor_zone_control");
self endon("monitor_zone_control");
self endon("death");
level endon("game_ended");
for(;;)
{
wait(1);
var_00 = 0;
if(isdefined(level.var_DBFD) && self.var_1270F == level.var_DBFD.trigger)
{
var_01 = level.var_DBFD scripts\mp\_gameobjects::func_803E();
if(var_01 != "neutral")
{
var_02 = getzonenearest(self.origin);
if(isdefined(var_02))
{
function_002B(var_02,var_01);
var_00 = 1;
}
}
}
if(!var_00)
{
var_02 = getzonenearest(self.origin);
if(isdefined(var_02))
{
function_002B(var_02,"free");
}
}
}
}
//Function Number: 17
func_F8DE()
{
scripts\mp\bots\_bots_util::func_2ECA();
while(!isdefined(level.var_DBFE))
{
wait(0.05);
}
scripts\mp\bots\_bots_strategy::func_2E8A();
for(var_00 = 0;var_00 < level.var_DBFE.size;var_00++)
{
level.var_DBFE[var_00].script_label = "_" + var_00;
level.var_DBFE[var_00] thread func_B9B0();
}
scripts\mp\bots\_bots_util::func_2D1A(level.var_DBFE,"radio");
level.var_2DA1 = 1;
}
//Function Number: 18
func_2DC6()
{
self notify("bot_hq_think");
self endon("bot_hq_think");
self endon("death");
self endon("disconnect");
level endon("game_ended");
while(!isdefined(level.var_2DA1))
{
wait(0.05);
}
self botsetflag("grenade_objectives",1);
func_9559();
for(;;)
{
var_00 = randomintrange(1,11) * 0.05;
wait(var_00);
if(self.health <= 0)
{
continue;
}
if(!isdefined(level.var_DBFD))
{
if(scripts\mp\bots\_bots_util::func_2DD7())
{
scripts\mp\bots\_bots_strategy::func_2D4E();
}
var_01 = 1;
if(self botgetscriptgoaltype() != "none")
{
var_02 = distancesquared(self botgetscriptgoal(),self.origin);
var_03 = self botgetscriptgoalradius();
if(var_02 > var_03 * var_03)
{
var_01 = 0;
}
}
if(var_01)
{
var_04 = self method_8029();
if(isdefined(var_04))
{
self botsetscriptgoal(var_04.origin,128,"hunt");
}
}
continue;
}
var_05 = level.var_DBFD scripts\mp\_gameobjects::func_803E();
if(self.team != var_05)
{
if(!func_9B83())
{
var_06 = func_7B2C();
var_07 = func_6C85().var_2E28.size;
if(var_06 < var_07)
{
func_3A36();
}
else if(!func_9C94())
{
func_DAA1();
}
}
}
else if(!func_9C94())
{
wait(randomfloat(2));
if(isdefined(level.var_DBFD))
{
func_DAA1();
}
}
}
}
//Function Number: 19
func_6C85()
{
foreach(var_01 in level.var_DBFE)
{
if(var_01.var_1270F == level.var_DBFD.trigger)
{
return var_01;
}
}
}
//Function Number: 20
func_9B83()
{
return scripts\mp\bots\_bots_util::func_2DD5();
}
//Function Number: 21
func_7B2C()
{
var_00 = 0;
foreach(var_02 in level.var_C928)
{
if(isai(var_02) && var_02.health > 0 && var_02.team == self.team && var_02 func_9B83())
{
var_00++;
}
}
return var_00;
}
//Function Number: 22
func_3A36()
{
var_00 = func_6C85();
var_01["entrance_points_index"] = "radio" + var_00.script_label;
scripts\mp\bots\_bots_strategy::func_2D2C(var_00.origin,var_00.var_2E28,undefined,var_01);
}
//Function Number: 23
func_9C94()
{
return scripts\mp\bots\_bots_util::func_2DDD();
}
//Function Number: 24
func_DAA1()
{
var_00 = self method_803C();
var_01 = var_00[0] + var_00[1] / 2;
var_02 = min(1000,var_01 / 4);
scripts\mp\bots\_bots_strategy::func_2E57(func_6C85().origin,var_02);
}
//Function Number: 25
func_9559()
{
if(isdefined(level.var_2EF4) && level.var_2EF4)
{
return;
}
level.var_2EF4 = 1;
foreach(var_01 in level.var_DBFE)
{
var_01.var_2E28 = function_00B7(var_01.var_1270F);
}
}

View File

@ -0,0 +1,14 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_lava.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 1
* Decompile Time: 114 ms
* Timestamp: 10/27/2023 12:12:02 AM
*******************************************************************/
//Function Number: 1
main()
{
}

View File

@ -0,0 +1,14 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_mp_zomb.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 1
* Decompile Time: 92 ms
* Timestamp: 10/27/2023 12:12:03 AM
*******************************************************************/
//Function Number: 1
main()
{
}

View File

@ -0,0 +1,472 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_mugger.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 13
* Decompile Time: 696 ms
* Timestamp: 10/27/2023 12:12:04 AM
*******************************************************************/
//Function Number: 1
main()
{
level.var_2EA7 = 200;
func_F8F4();
}
//Function Number: 2
func_F8F4()
{
level.var_2D9E["gametype_think"] = ::func_2E26;
level.var_2D9E["gametype_loadout_modify"] = ::func_2E25;
}
//Function Number: 3
func_2E26()
{
self notify("bot_mugger_think");
self endon("bot_mugger_think");
self endon("death");
self endon("disconnect");
level endon("game_ended");
self.var_A8D9 = (0,0,0);
self.var_113DD = undefined;
self.var_8C7C = 0;
self.var_8EE1 = 0;
self.var_5001 = self botgetdifficultysetting("meleeChargeDist");
childthread func_113ED();
if(self botgetdifficultysetting("strategyLevel") > 0)
{
childthread func_113E3();
}
if(self botgetdifficultysetting("strategyLevel") > 0)
{
childthread func_6541();
}
for(;;)
{
if(self botgetdifficultysetting("strategyLevel") > 1)
{
if(isdefined(self.var_1141D) && level.var_BD7D <= self.var_1141D)
{
if(!self.var_8EE1)
{
var_00 = getnodesinradius(self.origin,1000,0,500,"node_hide");
var_01 = self botnodepick(var_00,3,"node_hide");
if(isdefined(var_01))
{
self botsetscriptgoalnode(var_01,"critical");
self.var_8EE1 = 1;
}
}
}
else if(self.var_8EE1)
{
self botclearscriptgoal();
self.var_8EE1 = 0;
}
}
if(!self.var_8EE1)
{
if(!isdefined(self.var_113DD) && !self.var_8C7C)
{
self [[ self.var_CA7B ]]();
}
}
wait(0.05);
}
}
//Function Number: 4
func_6541()
{
for(;;)
{
if(self botgetdifficultysetting("strategyLevel") < 2)
{
wait(0.5);
}
else
{
wait(0.2);
}
if(isdefined(self.var_10C) && isplayer(self.var_10C) && isdefined(self.var_10C.var_1141D) && self.var_10C.var_1141D >= 3 && self botcanseeentity(self.var_10C) && distance(self.origin,self.var_10C.origin) <= 500)
{
self method_804D("meleeChargeDist",500);
self botsetflag("prefer_melee",1);
self botsetflag("throw_knife_melee",level.var_BDA6 > 0);
continue;
}
self method_804D("meleeChargeDist",self.var_5001);
self botsetflag("prefer_melee",0);
self botsetflag("throw_knife_melee",0);
}
}
//Function Number: 5
func_113E3()
{
for(;;)
{
level waittill("mugger_tag_pile",var_00);
if(self.health <= 0)
{
continue;
}
if(self.var_8EE1)
{
continue;
}
if(!isdefined(self.var_A91B) || gettime() - self.var_A91B > 7500)
{
self.var_A91B = undefined;
self.var_A91A = undefined;
self.var_8C7C = 0;
}
if(!isdefined(self.var_A91A) || distancesquared(self.origin,self.var_A91A) > distancesquared(self.origin,var_00))
{
self.var_A91B = gettime();
self.var_A91A = var_00;
}
}
}
//Function Number: 6
func_2D75()
{
var_00 = self getnearestnode();
var_01 = undefined;
if(isdefined(var_00))
{
var_02 = 1000000;
var_03 = scripts\common\utility::array_combine(level.var_58C0,level.var_BD82);
foreach(var_05 in var_03)
{
if(var_05 scripts\mp\_gameobjects::caninteractwith(self.team))
{
var_06 = distancesquared(self.origin,var_05.var_4B2C);
if(!isdefined(var_01) || var_06 < var_02)
{
if((self botgetdifficultysetting("strategyLevel") > 0 && var_06 < 122500) || var_06 < 1000000 && scripts\mp\bots\gametype_conf::func_2DE1(var_05,var_00,self botgetfovdot()))
{
var_02 = var_06;
var_01 = var_05;
}
}
}
}
}
return var_01;
}
//Function Number: 7
func_2D7D(param_00,param_01)
{
var_02 = [];
if(isdefined(param_00))
{
var_03 = scripts\common\utility::array_combine(level.var_58C0,level.var_BD82);
foreach(var_05 in var_03)
{
if(var_05 scripts\mp\_gameobjects::caninteractwith(self.team))
{
if(isplayer(self) || distancesquared(self.origin,var_05.var_4B2C) < 1000000)
{
if(scripts\mp\bots\gametype_conf::func_2DE1(var_05,param_00,param_01))
{
var_06 = spawnstruct();
var_06.origin = var_05.var_4B2C;
var_06.var_2DD = var_05;
var_02[var_02.size] = var_06;
}
}
}
}
}
return var_02;
}
//Function Number: 8
func_113ED()
{
wait(randomfloatrange(0,0.5));
for(;;)
{
if(self botgetdifficultysetting("strategyLevel") == 0)
{
wait(3);
}
else if(self botgetdifficultysetting("strategyLevel") == 1)
{
wait(1.5);
}
else
{
wait(0.5);
}
if(self.health <= 0)
{
continue;
}
if(self.var_8EE1)
{
continue;
}
if(isdefined(self.var_10C) && isplayer(self.var_10C) && self botcanseeentity(self.var_10C))
{
continue;
}
var_00 = func_2D75();
if(isdefined(var_00))
{
func_BD9F(var_00);
continue;
}
if(!self.var_8C7C)
{
if(isdefined(self.var_A91A) && isdefined(self.var_A91B) && gettime() - self.var_A91B <= 7500)
{
thread func_BD86(self.var_A91A);
}
}
}
}
//Function Number: 9
func_BD86(param_00)
{
self endon("disconnect");
level endon("game_ended");
self.var_8C7C = 1;
var_01 = spawnstruct();
var_01.var_EDCA = "objective";
var_01.var_C293 = level.var_2EA7;
scripts\mp\bots\_bots_strategy::func_2E27("kill_tag_pile",param_00,25,var_01);
var_02 = scripts\common\utility::func_13734("death","tag_spotted");
self botclearscriptgoal();
self.var_8C7C = 0;
scripts\mp\bots\_bots_strategy::func_2D02("kill_tag_pile");
}
//Function Number: 10
func_BD9F(param_00)
{
self endon("disconnect");
level endon("game_ended");
self.var_113DD = param_00;
self notify("tag_spotted");
childthread func_C157(param_00,"tag_picked_up");
scripts\mp\bots\_bots_strategy::func_2D02("kill_tag");
var_01 = param_00.var_4B2C;
if(scripts\mp\bots\_bots_util::func_2EC6(self.var_A8D9,param_00.var_4B2C))
{
var_02 = param_00.nearest_node;
if(isdefined(var_02))
{
var_03 = var_02.origin - var_01;
var_01 = var_01 + vectornormalize(var_03) * length(var_03) * 0.5;
}
}
self.var_A8D9 = param_00.var_4B2C;
var_04 = spawnstruct();
var_04.var_EDCA = "objective";
var_04.var_C293 = level.var_2EA7;
scripts\mp\bots\_bots_strategy::func_2E27("kill_tag",var_01,25,var_04);
thread func_C156("tag_aborted");
var_05 = scripts\common\utility::func_13734("death","tag_picked_up");
self notify("tag_watch_stop");
self.var_113DD = undefined;
self botclearscriptgoal();
scripts\mp\bots\_bots_strategy::func_2D02("kill_tag");
}
//Function Number: 11
func_C156(param_00)
{
self endon("disconnect");
level endon("game_ended");
self endon("tag_watch_stop");
while(scripts\mp\bots\_bots_strategy::func_2DC5("kill_tag"))
{
wait(0.05);
}
self notify(param_00);
}
//Function Number: 12
func_C157(param_00,param_01)
{
self endon("disconnect");
level endon("game_ended");
self endon("tag_watch_stop");
while(param_00 scripts\mp\_gameobjects::caninteractwith(self.team))
{
wait(0.05);
}
self notify(param_01);
}
//Function Number: 13
func_2E25(param_00)
{
var_01 = 0;
var_02 = self botgetdifficulty();
if(var_02 == "recruit")
{
var_01 = 0.1;
}
else if(var_02 == "regular")
{
var_01 = 0.25;
}
else if(var_02 == "hardened")
{
var_01 = 0.6;
}
else if(var_02 == "veteran")
{
var_01 = 0.9;
}
var_03 = param_00["loadoutEquipment"] == "throwingknife_mp";
if(!var_03)
{
if(var_01 >= randomfloat(1))
{
param_00["loadoutEquipment"] = "throwingknife_mp";
var_03 = 1;
}
}
if(var_01 >= randomfloat(1))
{
if(param_00["loadoutOffhand"] != "concussion_grenade_mp")
{
param_00["loadoutOffhand"] = "concussion_grenade_mp";
}
}
if(var_01 >= randomfloat(1))
{
if(param_00["loadoutPrimaryAttachment"] != "tactical" && param_00["loadoutPrimaryAttachment2"] != "tactical")
{
var_04 = scripts\mp\bots\_bots_loadout::func_2EC2(param_00["loadoutPrimary"],param_00["loadoutPrimaryAttachment"],"tactical");
if(var_04)
{
param_00["loadoutPrimaryAttachment2"] = "tactical";
}
else
{
var_04 = scripts\mp\bots\_bots_loadout::func_2EC2(param_00["loadoutPrimary"],"tactical",param_00["loadoutPrimaryAttachment2"]);
if(var_04)
{
param_00["loadoutPrimaryAttachment"] = "tactical";
}
}
}
}
if(var_01 >= randomfloat(1))
{
if(param_00["loadoutSecondaryAttachment"] != "tactical" && param_00["loadoutSecondaryAttachment2"] != "tactical")
{
var_04 = scripts\mp\bots\_bots_loadout::func_2EC2(param_00["loadoutSecondary"],param_00["loadoutSecondaryAttachment"],"tactical");
if(var_04)
{
param_00["loadoutSecondaryAttachment2"] = "tactical";
}
else
{
var_04 = scripts\mp\bots\_bots_loadout::func_2EC2(param_00["loadoutSecondary"],"tactical",param_00["loadoutSecondaryAttachment2"]);
if(var_04)
{
param_00["loadoutSecondaryAttachment"] = "tactical";
}
}
}
}
var_05 = [];
var_06 = [];
var_07 = [];
var_08 = [];
if(var_03)
{
var_08[var_08.size] = "specialty_extra_deadly";
}
var_08[var_08.size] = "specialty_lightweight";
var_08[var_08.size] = "specialty_marathon";
var_08[var_08.size] = "specialty_fastsprintrecovery";
var_08[var_08.size] = "specialty_stun_resistance";
for(var_09 = 1;var_09 < 9;var_09++)
{
if(isdefined(param_00["loadoutPerk" + var_09]))
{
if(param_00["loadoutPerk" + var_09] != "none")
{
var_05[var_05.size] = param_00["loadoutPerk" + var_09];
var_06[var_06.size] = var_09;
continue;
}
var_07[var_07.size] = var_09;
}
}
foreach(var_0B in var_08)
{
if(var_01 >= randomfloat(1))
{
if(!scripts\common\utility::func_2286(var_05,var_0B))
{
var_0C = -1;
if(var_07.size)
{
var_0C = var_07[0];
var_07 = scripts\common\utility::func_22A9(var_07,var_0C);
}
else if(var_06.size)
{
var_0C = scripts\common\utility::random(var_06);
var_06 = scripts\common\utility::func_22A9(var_06,var_0C);
}
if(var_0C != -1)
{
param_00["loadoutPerk" + var_0C] = var_0B;
}
}
}
}
if(var_01 >= randomfloat(1))
{
if(param_00["loadoutStreakType"] == "streaktype_assault" && param_00["loadoutStreak1"] != "airdrop_juggernaut_maniac" && param_00["loadoutStreak2"] != "airdrop_juggernaut_maniac" && param_00["loadoutStreak3"] != "airdrop_juggernaut_maniac")
{
param_00["loadoutStreak3"] = "airdrop_juggernaut_maniac";
}
}
return param_00;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,146 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_siege.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 6
* Decompile Time: 327 ms
* Timestamp: 10/27/2023 12:12:07 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
thread func_2E97();
func_F8E0();
}
//Function Number: 2
func_F8F4()
{
level.var_2D9E["gametype_think"] = ::func_2E98;
}
//Function Number: 3
func_F8E0()
{
level.var_2DA1 = 1;
}
//Function Number: 4
func_2E97()
{
level.var_101C3 = [];
scripts\mp\_utility::func_7670("prematch_done");
for(;;)
{
level.var_101C3 = [];
foreach(var_01 in level.players)
{
if(!scripts\mp\_utility::func_9F19(var_01) && var_01.var_8C2A)
{
if(var_01.team != "spectator" && var_01.team != "neutral")
{
level.var_101C3[var_01.team] = 1;
}
}
}
var_03 = [];
foreach(var_05 in level.var_134)
{
var_06 = var_05.var_130AC scripts\mp\_gameobjects::func_803E();
if(var_06 != "neutral")
{
if(!isdefined(var_03[var_06]))
{
var_03[var_06] = 1;
continue;
}
var_03[var_06]++;
}
}
foreach(var_06, var_09 in var_03)
{
if(var_09 >= 2)
{
var_0A = scripts\mp\_utility::getotherteam(var_06);
level.var_101C3[var_0A] = 1;
}
}
wait(1);
}
}
//Function Number: 5
func_2E98()
{
self notify("bot_siege_think");
self endon("bot_siege_think");
self endon("death");
self endon("disconnect");
level endon("game_ended");
while(!isdefined(level.var_2DA1))
{
wait(0.05);
}
while(!isdefined(level.var_101C3))
{
wait(0.05);
}
self botsetflag("separation",0);
self botsetflag("use_obj_path_style",1);
for(;;)
{
if(isdefined(level.var_101C3[self.team]) && level.var_101C3[self.team])
{
func_2D31();
}
else if(isdefined(self.var_8434))
{
if(scripts\mp\bots\_bots_util::func_2DD7())
{
scripts\mp\bots\_bots_strategy::func_2D4E();
}
self.var_8434 = undefined;
}
wait(1);
}
}
//Function Number: 6
func_2D31()
{
var_00 = undefined;
var_01 = undefined;
foreach(var_03 in level.var_134)
{
var_04 = var_03.var_130AC scripts\mp\_gameobjects::func_803E();
if(var_04 != self.team)
{
var_05 = distancesquared(self.origin,var_03.origin);
if(!isdefined(var_01) || var_05 < var_01)
{
var_01 = var_05;
var_00 = var_03;
}
}
}
if(isdefined(var_00))
{
if(!isdefined(self.var_8434) || self.var_8434 != var_00)
{
self.var_8434 = var_00;
scripts\mp\bots\_bots_strategy::func_2D2B(var_00.origin,100);
}
}
}

View File

@ -0,0 +1,232 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_sotf.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 12
* Decompile Time: 604 ms
* Timestamp: 10/27/2023 12:12:08 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
func_F8E1();
}
//Function Number: 2
func_F8F4()
{
level.var_2D9E["dropped_weapon_think"] = ::func_10441;
level.var_2D9E["dropped_weapon_cancel"] = ::func_10448;
level.var_2D9E["crate_low_ammo_check"] = ::func_10444;
level.var_2D9E["crate_should_claim"] = ::func_10445;
level.var_2D9E["crate_wait_use"] = ::func_10446;
level.var_2D9E["crate_in_range"] = ::func_10443;
level.var_2D9E["crate_can_use"] = ::func_10442;
}
//Function Number: 3
func_F8E1()
{
level.var_2EF2 = 1;
}
//Function Number: 4
func_10448(param_00)
{
if(scripts\mp\bots\_bots_util::func_2DB8() > 0)
{
var_01 = scripts\mp\_utility::func_8225(self getcurrentweapon());
if(isdefined(param_00.var_C270))
{
var_02 = param_00.var_C270.classname;
if(scripts\common\utility::string_starts_with(var_02,"weapon_"))
{
var_02 = getsubstr(var_02,7);
}
var_03 = scripts\mp\_utility::func_8225(var_02);
if(!func_2ED7(var_01,var_03))
{
return 1;
}
}
}
if(!isdefined(param_00.var_C270))
{
return 1;
}
return 0;
}
//Function Number: 5
func_10441()
{
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(self [[ level.var_2D9E["should_pickup_weapons"] ]]() && !scripts\mp\bots\_bots_util::func_2DE0())
{
if(scripts\mp\bots\_bots_util::func_2E3B())
{
var_01 = getentarray("dropped_weapon","targetname");
var_02 = scripts\common\utility::func_782F(self.origin,var_01);
if(var_02.size > 0)
{
var_03 = var_02[0];
scripts\mp\bots\_bots::func_2E6F(var_03);
}
}
else
{
var_01 = getentarray("dropped_weapon","targetname");
var_02 = scripts\common\utility::func_782F(self.origin,var_02);
if(var_02.size > 0)
{
var_04 = self getnearestnode();
if(isdefined(var_04))
{
var_05 = scripts\mp\_utility::func_8225(self getcurrentweapon());
foreach(var_03 in var_02)
{
var_07 = var_03.classname;
if(scripts\common\utility::string_starts_with(var_07,"weapon_"))
{
var_07 = getsubstr(var_07,7);
}
var_08 = scripts\mp\_utility::func_8225(var_07);
if(func_2ED7(var_05,var_08))
{
if(!isdefined(var_03.calculated_nearest_node) || !var_03.calculated_nearest_node)
{
var_03.nearest_node = getclosestnodeinsight(var_03.origin);
var_03.calculated_nearest_node = 1;
}
if(isdefined(var_03.nearest_node) && nodesvisible(var_04,var_03.nearest_node,1))
{
scripts\mp\bots\_bots::func_2E6F(var_03);
break;
}
}
}
}
}
}
}
wait(randomfloatrange(0.25,0.75));
}
}
//Function Number: 6
func_2E60(param_00)
{
var_01 = 0;
switch(param_00)
{
case "weapon_other":
case "weapon_explosive":
case "weapon_grenade":
case "weapon_projectile":
break;
case "weapon_pistol":
var_01 = 1;
break;
case "weapon_dmr":
case "weapon_sniper":
var_01 = 2;
break;
case "weapon_shotgun":
case "weapon_lmg":
case "weapon_assault":
case "weapon_smg":
var_01 = 3;
break;
}
return var_01;
}
//Function Number: 7
func_2ED7(param_00,param_01)
{
var_02 = func_2E60(param_00);
var_03 = func_2E60(param_01);
return var_03 > var_02;
}
//Function Number: 8
func_10444()
{
var_00 = self getcurrentweapon();
var_01 = self getweaponammoclip(var_00);
var_02 = self getweaponammostock(var_00);
var_03 = weaponclipsize(var_00);
return var_01 + var_02 < var_03 * 0.25;
}
//Function Number: 9
func_10445()
{
return 0;
}
//Function Number: 10
func_10446()
{
scripts\mp\bots\_bots_util::func_2ECC(5000);
}
//Function Number: 11
func_10443(param_00)
{
return 1;
}
//Function Number: 12
func_10442(param_00)
{
if(scripts\mp\bots\_bots::func_4831(param_00))
{
if(isdefined(param_00) && isdefined(param_00.var_2EFA) && scripts\common\utility::func_2286(param_00.var_2EFA,self))
{
if(scripts\mp\bots\_bots_util::func_2E3B())
{
return 1;
}
else
{
return 0;
}
}
var_01 = scripts\mp\_utility::func_8225(self getcurrentweapon());
if(func_2E60(var_01) <= 1)
{
return 1;
}
if(func_10444())
{
return 1;
}
return 0;
}
return 0;
}

View File

@ -0,0 +1,16 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_sotf_ffa.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 1
* Decompile Time: 94 ms
* Timestamp: 10/27/2023 12:12:08 AM
*******************************************************************/
//Function Number: 1
main()
{
scripts\mp\bots\gametype_sotf::func_F8F4();
scripts\mp\bots\gametype_sotf::func_F8E1();
}

View File

@ -0,0 +1,289 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_sr.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 14
* Decompile Time: 751 ms
* Timestamp: 10/27/2023 12:12:09 AM
*******************************************************************/
//Function Number: 1
main()
{
scripts\mp\bots\gametype_sd::func_F8F4();
func_F8F4();
scripts\mp\bots\gametype_conf::func_F8D8();
scripts\mp\bots\gametype_sd::func_2E6D();
}
//Function Number: 2
func_F8F4()
{
level.var_2D9E["gametype_think"] = ::func_2E9F;
}
//Function Number: 3
func_2E9F()
{
self notify("bot_sr_think");
self endon("bot_sr_think");
self endon("death");
self endon("disconnect");
level endon("game_ended");
self.var_8BAF = undefined;
while(!isdefined(level.var_2DA1))
{
wait(0.05);
}
self.var_112FD = undefined;
childthread func_113ED();
scripts\mp\bots\gametype_sd::func_2E6E();
}
//Function Number: 4
func_113ED()
{
for(;;)
{
wait(0.05);
if(self.health <= 0)
{
continue;
}
if(!isdefined(self.var_E67C))
{
continue;
}
var_00 = scripts\mp\bots\gametype_conf::func_2D7C(0);
if(var_00.size > 0)
{
var_01 = scripts\common\utility::random(var_00);
if(distancesquared(self.origin,var_01.var_2DD.var_4B2C) < 10000)
{
func_10B2C(var_01.var_2DD);
}
else if(self.team == game["attackers"])
{
if(self.var_E67C != "atk_bomber")
{
func_10B2C(var_01.var_2DD);
}
}
else if(self.var_E67C != "bomb_defuser")
{
func_10B2C(var_01.var_2DD);
}
}
}
}
//Function Number: 5
func_10B2C(param_00)
{
if(isdefined(param_00.var_2E4B) && isdefined(param_00.var_2E4B[self.team]) && isalive(param_00.var_2E4B[self.team]) && param_00.var_2E4B[self.team] != self)
{
return;
}
if(func_10B28(param_00))
{
return;
}
if(!isdefined(self.var_E67C))
{
return;
}
if(scripts\mp\bots\_bots_util::func_2DD7())
{
scripts\mp\bots\_bots_strategy::func_2D4E();
}
param_00.var_2E4B[self.team] = self;
param_00 thread func_4136();
param_00 thread func_4135(self);
self.var_112FD = 1;
childthread func_C158(param_00,"tag_picked_up");
var_01 = param_00.var_4B2C;
self botsetscriptgoal(var_01,0,"tactical");
childthread func_1397F(param_00);
var_02 = scripts\mp\bots\_bots_util::func_2ECB(undefined,"tag_picked_up","new_role");
self notify("stop_watch_tag_destination");
if(var_02 == "no_path")
{
var_01 = var_01 + (16 * func_DC68(),16 * func_DC68(),0);
self botsetscriptgoal(var_01,0,"tactical");
var_02 = scripts\mp\bots\_bots_util::func_2ECB(undefined,"tag_picked_up","new_role");
if(var_02 == "no_path")
{
var_01 = scripts\mp\bots\_bots_util::func_2E58("BotGetClosestNavigablePoint",::scripts\mp\bots\_bots_util::func_74C3,param_00.var_4B2C,32,self);
if(isdefined(var_01))
{
self botsetscriptgoal(var_01,0,"tactical");
var_02 = scripts\mp\bots\_bots_util::func_2ECB(undefined,"tag_picked_up","new_role");
}
}
}
else if(var_02 == "bad_path")
{
var_03 = getnodesinradiussorted(param_00.var_4B2C,256,0,level.var_2EA6 + 55);
if(var_03.size > 0)
{
var_04 = (param_00.var_4B2C[0],param_00.var_4B2C[1],var_03[0].origin[2] + param_00.var_4B2C[2] * 0.5);
self botsetscriptgoal(var_04,0,"tactical");
var_02 = scripts\mp\bots\_bots_util::func_2ECB(undefined,"tag_picked_up","new_role");
}
}
if(var_02 == "goal" && param_00 scripts\mp\_gameobjects::caninteractwith(self.team))
{
wait(3);
}
if(self bothasscriptgoal() && isdefined(var_01))
{
var_05 = self botgetscriptgoal();
if(scripts\mp\bots\_bots_util::func_2EC6(var_05,var_01))
{
self botclearscriptgoal();
}
}
self notify("stop_tag_watcher");
param_00.var_2E4B[self.team] = undefined;
self.var_112FD = undefined;
}
//Function Number: 6
func_1397F(param_00)
{
self endon("stop_watch_tag_destination");
for(;;)
{
if(!param_00 scripts\mp\_gameobjects::caninteractwith(self.team))
{
wait(0.05);
}
var_01 = self botgetscriptgoal();
wait(0.05);
}
}
//Function Number: 7
func_10B28(param_00)
{
var_01 = distance(self.origin,param_00.var_4B2C);
var_02 = scripts\mp\bots\gametype_sd::func_7AA1(self.team,1);
foreach(var_04 in var_02)
{
if(var_04 != self && isdefined(var_04.var_E67C) && var_04.var_E67C != "atk_bomber" && var_04.var_E67C != "bomb_defuser")
{
var_05 = distance(var_04.origin,param_00.var_4B2C);
if(var_05 < var_01 * 0.5)
{
return 1;
}
}
}
return 0;
}
//Function Number: 8
func_DC68()
{
return randomintrange(0,2) * 2 - 1;
}
//Function Number: 9
func_4136()
{
self waittill("reset");
self.var_2E4B = [];
}
//Function Number: 10
func_4135(param_00)
{
self endon("reset");
var_01 = param_00.team;
param_00 scripts\common\utility::waittill_any_3("death","disconnect");
self.var_2E4B[var_01] = undefined;
}
//Function Number: 11
func_C158(param_00,param_01)
{
self endon("stop_tag_watcher");
while(param_00 scripts\mp\_gameobjects::caninteractwith(self.team) && !scripts\mp\bots\gametype_conf::func_2D2E(param_00))
{
wait(0.05);
}
self notify(param_01);
}
//Function Number: 12
func_10B29(param_00)
{
if(isdefined(param_00.var_2D21) && isdefined(param_00.var_2D21[self.team]) && isalive(param_00.var_2D21[self.team]) && param_00.var_2D21[self.team] != self)
{
return;
}
if(!isdefined(self.var_E67C))
{
return;
}
if(scripts\mp\bots\_bots_util::func_2DD7())
{
scripts\mp\bots\_bots_strategy::func_2D4E();
}
param_00.var_2D21[self.team] = self;
param_00 thread func_4134();
param_00 thread func_4133(self);
self.var_112FD = 1;
scripts\mp\bots\_bots_personality::func_413A();
var_01 = self.var_E67C;
while(param_00 scripts\mp\_gameobjects::caninteractwith(self.team) && self.var_E67C == var_01)
{
if(scripts\mp\bots\_bots_personality::func_FF87())
{
if(scripts\mp\bots\_bots_personality::func_6C77(param_00.var_4B2C,1000))
{
childthread scripts\mp\bots\gametype_conf::func_2D1F(param_00,"tactical","new_role");
}
}
wait(0.05);
}
self notify("stop_camping_tag");
self botclearscriptgoal();
param_00.var_2D21[self.team] = undefined;
self.var_112FD = undefined;
}
//Function Number: 13
func_4134()
{
self waittill("reset");
self.var_2D21 = [];
}
//Function Number: 14
func_4133(param_00)
{
self endon("reset");
var_01 = param_00.team;
param_00 scripts\common\utility::waittill_any_3("death","disconnect");
self.var_2D21[var_01] = undefined;
}

View File

@ -0,0 +1,173 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_tdef.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 5
* Decompile Time: 291 ms
* Timestamp: 10/27/2023 12:12:10 AM
*******************************************************************/
//Function Number: 1
main()
{
scripts\mp\bots\gametype_ball::main();
}
//Function Number: 2
func_F8F4()
{
level.var_2D9E["gametype_think"] = ::func_2ECE;
level.var_2D9E["commander_gametype_tactics"] = ::func_2EAB;
}
//Function Number: 3
func_F8E2()
{
if(scripts\mp\_utility::func_2DD9())
{
level.var_2EAD = "default";
level.var_2D80 = 0;
}
}
//Function Number: 4
func_2ECE()
{
self notify("bot_war_think");
self endon("bot_war_think");
self endon("death");
self endon("disconnect");
level endon("game_ended");
self endon("owner_disconnect");
for(;;)
{
self [[ self.var_CA7B ]]();
wait(0.05);
}
}
//Function Number: 5
func_2EAB(param_00)
{
var_01 = 0;
var_02 = level.var_2D80;
var_03 = 0;
level.var_2D80 = 0;
switch(param_00)
{
case "tactic_none":
level.var_2EAD = "revert";
var_01 = 1;
break;
case "tactic_war_hp":
level.var_2EAD = "revert";
level thread scripts\mp\bots\_bots_fireteam::func_6D91(self.team);
var_03 = 1;
var_01 = 1;
break;
case "tactic_war_buddy":
level.var_2EAD = "revert";
level.var_2D80 = 1;
var_01 = 1;
break;
case "tactic_war_hyg":
level.var_2EAD = "camper";
var_01 = 1;
break;
}
if(!var_03)
{
level scripts\mp\bots\_bots_fireteam::func_6D92(self.team);
}
if(var_01)
{
foreach(var_05 in level.players)
{
if(!isdefined(var_05.team))
{
continue;
}
if(isbot(var_05) && var_05.team == self.team)
{
var_05 botsetflag("force_sprint",0);
if(level.var_2EAD == "revert")
{
if(isdefined(var_05.var_6D90))
{
var_05 notify("stop_camping_tag");
var_05 scripts\mp\bots\_bots_personality::func_413A();
var_05 scripts\mp\bots\_bots_util::func_2E83(var_05.var_6D90);
var_05.var_3802 = undefined;
var_05.var_37EF = undefined;
}
continue;
}
if(!isdefined(var_05.var_6D90))
{
var_05.var_6D90 = var_05 method_8035();
}
var_05 notify("stop_camping_tag");
var_05 scripts\mp\bots\_bots_personality::func_413A();
var_05 scripts\mp\bots\_bots_util::func_2E83(level.var_2EAD);
if(level.var_2EAD == "camper")
{
var_05.var_3802 = 1;
var_05.var_37EF = 1;
}
}
}
}
if(level.var_2D80)
{
foreach(var_05 in level.players)
{
if(!isdefined(var_05.team))
{
continue;
}
if(var_05.team == self.team)
{
if(isbot(var_05))
{
var_05 thread scripts\mp\bots\_bots_fireteam::func_2D7E();
}
}
}
return;
}
if(var_02)
{
foreach(var_05 in level.players)
{
if(!isdefined(var_05.team))
{
continue;
}
if(var_05.team == self.team)
{
if(isbot(var_05))
{
var_05.var_222 = undefined;
var_05.var_2D8C = undefined;
var_05 notify("buddy_cancel");
var_05 scripts\mp\bots\_bots_personality::func_2D0C();
}
}
}
}
}

View File

@ -0,0 +1,174 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\bots\gametype_war.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 5
* Decompile Time: 280 ms
* Timestamp: 10/27/2023 12:12:10 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
func_F8E2();
}
//Function Number: 2
func_F8F4()
{
level.var_2D9E["gametype_think"] = ::func_2ECE;
level.var_2D9E["commander_gametype_tactics"] = ::func_2EAB;
}
//Function Number: 3
func_F8E2()
{
if(scripts\mp\_utility::func_2DD9())
{
level.var_2EAD = "default";
level.var_2D80 = 0;
}
}
//Function Number: 4
func_2ECE()
{
self notify("bot_war_think");
self endon("bot_war_think");
self endon("death");
self endon("disconnect");
level endon("game_ended");
self endon("owner_disconnect");
for(;;)
{
self [[ self.var_CA7B ]]();
wait(0.05);
}
}
//Function Number: 5
func_2EAB(param_00)
{
var_01 = 0;
var_02 = level.var_2D80;
var_03 = 0;
level.var_2D80 = 0;
switch(param_00)
{
case "tactic_none":
level.var_2EAD = "revert";
var_01 = 1;
break;
case "tactic_war_hp":
level.var_2EAD = "revert";
level thread scripts\mp\bots\_bots_fireteam::func_6D91(self.team);
var_03 = 1;
var_01 = 1;
break;
case "tactic_war_buddy":
level.var_2EAD = "revert";
level.var_2D80 = 1;
var_01 = 1;
break;
case "tactic_war_hyg":
level.var_2EAD = "camper";
var_01 = 1;
break;
}
if(!var_03)
{
level scripts\mp\bots\_bots_fireteam::func_6D92(self.team);
}
if(var_01)
{
foreach(var_05 in level.players)
{
if(!isdefined(var_05.team))
{
continue;
}
if(isbot(var_05) && var_05.team == self.team)
{
var_05 botsetflag("force_sprint",0);
if(level.var_2EAD == "revert")
{
if(isdefined(var_05.var_6D90))
{
var_05 notify("stop_camping_tag");
var_05 scripts\mp\bots\_bots_personality::func_413A();
var_05 scripts\mp\bots\_bots_util::func_2E83(var_05.var_6D90);
var_05.var_3802 = undefined;
var_05.var_37EF = undefined;
}
continue;
}
if(!isdefined(var_05.var_6D90))
{
var_05.var_6D90 = var_05 method_8035();
}
var_05 notify("stop_camping_tag");
var_05 scripts\mp\bots\_bots_personality::func_413A();
var_05 scripts\mp\bots\_bots_util::func_2E83(level.var_2EAD);
if(level.var_2EAD == "camper")
{
var_05.var_3802 = 1;
var_05.var_37EF = 1;
}
}
}
}
if(level.var_2D80)
{
foreach(var_05 in level.players)
{
if(!isdefined(var_05.team))
{
continue;
}
if(var_05.team == self.team)
{
if(isbot(var_05))
{
var_05 thread scripts\mp\bots\_bots_fireteam::func_2D7E();
}
}
}
return;
}
if(var_02)
{
foreach(var_05 in level.players)
{
if(!isdefined(var_05.team))
{
continue;
}
if(var_05.team == self.team)
{
if(isbot(var_05))
{
var_05.var_222 = undefined;
var_05.var_2D8C = undefined;
var_05 notify("buddy_cancel");
var_05 scripts\mp\bots\_bots_personality::func_2D0C();
}
}
}
}
}