mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-07-05 21:37:51 -05:00
Added AW, BO2, Ghosts, IW, MWR, WW2 Scripts
This commit is contained in:
3208
IW/PC/ALL/scripts/mp/bots/_bots.gsc
Normal file
3208
IW/PC/ALL/scripts/mp/bots/_bots.gsc
Normal file
File diff suppressed because it is too large
Load Diff
677
IW/PC/ALL/scripts/mp/bots/_bots_fireteam.gsc
Normal file
677
IW/PC/ALL/scripts/mp/bots/_bots_fireteam.gsc
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
1030
IW/PC/ALL/scripts/mp/bots/_bots_fireteam_commander.gsc
Normal file
1030
IW/PC/ALL/scripts/mp/bots/_bots_fireteam_commander.gsc
Normal file
File diff suppressed because it is too large
Load Diff
840
IW/PC/ALL/scripts/mp/bots/_bots_killstreaks.gsc
Normal file
840
IW/PC/ALL/scripts/mp/bots/_bots_killstreaks.gsc
Normal 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;
|
||||
}
|
2395
IW/PC/ALL/scripts/mp/bots/_bots_killstreaks_remote_vehicle.gsc
Normal file
2395
IW/PC/ALL/scripts/mp/bots/_bots_killstreaks_remote_vehicle.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1512
IW/PC/ALL/scripts/mp/bots/_bots_loadout.gsc
Normal file
1512
IW/PC/ALL/scripts/mp/bots/_bots_loadout.gsc
Normal file
File diff suppressed because it is too large
Load Diff
845
IW/PC/ALL/scripts/mp/bots/_bots_personality.gsc
Normal file
845
IW/PC/ALL/scripts/mp/bots/_bots_personality.gsc
Normal 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";
|
||||
}
|
335
IW/PC/ALL/scripts/mp/bots/_bots_powers.gsc
Normal file
335
IW/PC/ALL/scripts/mp/bots/_bots_powers.gsc
Normal 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);
|
||||
}
|
391
IW/PC/ALL/scripts/mp/bots/_bots_sentry.gsc
Normal file
391
IW/PC/ALL/scripts/mp/bots/_bots_sentry.gsc
Normal 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();
|
||||
}
|
1942
IW/PC/ALL/scripts/mp/bots/_bots_strategy.gsc
Normal file
1942
IW/PC/ALL/scripts/mp/bots/_bots_strategy.gsc
Normal file
File diff suppressed because it is too large
Load Diff
200
IW/PC/ALL/scripts/mp/bots/_bots_supers.gsc
Normal file
200
IW/PC/ALL/scripts/mp/bots/_bots_supers.gsc
Normal 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");
|
||||
}
|
1974
IW/PC/ALL/scripts/mp/bots/_bots_util.gsc
Normal file
1974
IW/PC/ALL/scripts/mp/bots/_bots_util.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1460
IW/PC/ALL/scripts/mp/bots/gametype_assault.gsc
Normal file
1460
IW/PC/ALL/scripts/mp/bots/gametype_assault.gsc
Normal file
File diff suppressed because it is too large
Load Diff
663
IW/PC/ALL/scripts/mp/bots/gametype_ball.gsc
Normal file
663
IW/PC/ALL/scripts/mp/bots/gametype_ball.gsc
Normal 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);
|
||||
}
|
||||
}
|
465
IW/PC/ALL/scripts/mp/bots/gametype_conf.gsc
Normal file
465
IW/PC/ALL/scripts/mp/bots/gametype_conf.gsc
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
16
IW/PC/ALL/scripts/mp/bots/gametype_cranked.gsc
Normal file
16
IW/PC/ALL/scripts/mp/bots/gametype_cranked.gsc
Normal 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;
|
||||
}
|
328
IW/PC/ALL/scripts/mp/bots/gametype_ctf.gsc
Normal file
328
IW/PC/ALL/scripts/mp/bots/gametype_ctf.gsc
Normal 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;
|
||||
}
|
||||
}
|
659
IW/PC/ALL/scripts/mp/bots/gametype_dd.gsc
Normal file
659
IW/PC/ALL/scripts/mp/bots/gametype_dd.gsc
Normal 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;
|
||||
}
|
14
IW/PC/ALL/scripts/mp/bots/gametype_dm.gsc
Normal file
14
IW/PC/ALL/scripts/mp/bots/gametype_dm.gsc
Normal 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()
|
||||
{
|
||||
}
|
1369
IW/PC/ALL/scripts/mp/bots/gametype_dom.gsc
Normal file
1369
IW/PC/ALL/scripts/mp/bots/gametype_dom.gsc
Normal file
File diff suppressed because it is too large
Load Diff
174
IW/PC/ALL/scripts/mp/bots/gametype_front.gsc
Normal file
174
IW/PC/ALL/scripts/mp/bots/gametype_front.gsc
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
229
IW/PC/ALL/scripts/mp/bots/gametype_grind.gsc
Normal file
229
IW/PC/ALL/scripts/mp/bots/gametype_grind.gsc
Normal 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);
|
||||
}
|
||||
}
|
109
IW/PC/ALL/scripts/mp/bots/gametype_grnd.gsc
Normal file
109
IW/PC/ALL/scripts/mp/bots/gametype_grnd.gsc
Normal 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()
|
||||
{
|
||||
}
|
27
IW/PC/ALL/scripts/mp/bots/gametype_gun.gsc
Normal file
27
IW/PC/ALL/scripts/mp/bots/gametype_gun.gsc
Normal 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);
|
||||
}
|
339
IW/PC/ALL/scripts/mp/bots/gametype_infect.gsc
Normal file
339
IW/PC/ALL/scripts/mp/bots/gametype_infect.gsc
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
701
IW/PC/ALL/scripts/mp/bots/gametype_koth.gsc
Normal file
701
IW/PC/ALL/scripts/mp/bots/gametype_koth.gsc
Normal 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);
|
||||
}
|
||||
}
|
14
IW/PC/ALL/scripts/mp/bots/gametype_lava.gsc
Normal file
14
IW/PC/ALL/scripts/mp/bots/gametype_lava.gsc
Normal 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()
|
||||
{
|
||||
}
|
14
IW/PC/ALL/scripts/mp/bots/gametype_mp_zomb.gsc
Normal file
14
IW/PC/ALL/scripts/mp/bots/gametype_mp_zomb.gsc
Normal 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()
|
||||
{
|
||||
}
|
472
IW/PC/ALL/scripts/mp/bots/gametype_mugger.gsc
Normal file
472
IW/PC/ALL/scripts/mp/bots/gametype_mugger.gsc
Normal 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;
|
||||
}
|
1631
IW/PC/ALL/scripts/mp/bots/gametype_sd.gsc
Normal file
1631
IW/PC/ALL/scripts/mp/bots/gametype_sd.gsc
Normal file
File diff suppressed because it is too large
Load Diff
146
IW/PC/ALL/scripts/mp/bots/gametype_siege.gsc
Normal file
146
IW/PC/ALL/scripts/mp/bots/gametype_siege.gsc
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
232
IW/PC/ALL/scripts/mp/bots/gametype_sotf.gsc
Normal file
232
IW/PC/ALL/scripts/mp/bots/gametype_sotf.gsc
Normal 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;
|
||||
}
|
16
IW/PC/ALL/scripts/mp/bots/gametype_sotf_ffa.gsc
Normal file
16
IW/PC/ALL/scripts/mp/bots/gametype_sotf_ffa.gsc
Normal 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();
|
||||
}
|
289
IW/PC/ALL/scripts/mp/bots/gametype_sr.gsc
Normal file
289
IW/PC/ALL/scripts/mp/bots/gametype_sr.gsc
Normal 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;
|
||||
}
|
173
IW/PC/ALL/scripts/mp/bots/gametype_tdef.gsc
Normal file
173
IW/PC/ALL/scripts/mp/bots/gametype_tdef.gsc
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
174
IW/PC/ALL/scripts/mp/bots/gametype_war.gsc
Normal file
174
IW/PC/ALL/scripts/mp/bots/gametype_war.gsc
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user