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

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

View File

@ -0,0 +1,143 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\_agent_common.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 12
* Decompile Time: 466 ms
* Timestamp: 10/27/2023 12:32:09 AM
*******************************************************************/
//Function Number: 1
func_00A3()
{
self [[ level.var_97C2 ]]();
var_00 = "axis";
if(level.var_C20F % 2 == 0)
{
var_00 = "allies";
}
level.var_C20F++;
self method_8492("locdmgtable/mp_lochit_dmgtable");
self [[ level.var_F635 ]](var_00);
level.var_1900[level.var_1900.size] = self;
}
//Function Number: 2
func_00A4(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
param_01 = [[ level.var_190A ]](param_01);
var_0C = self [[ level.var_1908 ]]("on_damaged");
if(isdefined(var_0C))
{
self [[ var_0C ]](param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B);
}
}
//Function Number: 3
func_00A5(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07)
{
if(isdefined(level.var_3762))
{
[[ level.var_3762 ]](param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07);
}
}
//Function Number: 4
func_00A6(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
param_01 = [[ level.var_190A ]](param_01);
var_0A = self [[ level.var_1908 ]]("on_killed");
if(isdefined(var_0A))
{
self thread [[ var_0A ]](param_00,param_01,param_02,param_04,param_05,param_06,param_07,param_08,param_09);
}
}
//Function Number: 5
func_00A7(param_00,param_01,param_02,param_03)
{
}
//Function Number: 6
func_00A8(param_00,param_01)
{
}
//Function Number: 7
func_00A9(param_00,param_01,param_02,param_03)
{
}
//Function Number: 8
init()
{
func_97C1();
scripts\mp\agents\_scriptedagents::func_DF00();
level thread func_1691();
}
//Function Number: 9
func_4535(param_00,param_01,param_02)
{
var_03 = [[ level.var_7EC5 ]](param_00);
if(isdefined(var_03))
{
var_03.var_4539 = gettime();
if(isdefined(param_01))
{
var_03 [[ level.var_F635 ]](param_01);
}
else
{
var_03 [[ level.var_F635 ]](var_03.team);
}
if(isdefined(param_02))
{
var_03.var_4007 = param_02;
}
if(isdefined(level.agent_funcs[param_00]["onAIConnect"]))
{
var_03 [[ var_03 [[ level.var_1908 ]]("onAIConnect") ]]();
}
var_03 [[ level.var_184B ]]();
}
return var_03;
}
//Function Number: 10
func_97C1()
{
level.var_1900 = [];
level.var_C20F = 0;
}
//Function Number: 11
func_1691()
{
level endon("game_ended");
level waittill("connected",var_00);
var_01 = function_00AF();
while(level.var_1900.size < var_01)
{
var_02 = addagent();
if(!isdefined(var_02))
{
scripts\common\utility::func_136F7();
continue;
}
}
}
//Function Number: 12
func_F28C(param_00)
{
self.var_1E = param_00;
self.health = param_00;
self.maxhealth = param_00;
}

View File

@ -0,0 +1,435 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\_agents.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 12
* Decompile Time: 473 ms
* Timestamp: 10/27/2023 12:32:10 AM
*******************************************************************/
//Function Number: 1
main()
{
if(isdefined(level.createfx_enabled) && level.createfx_enabled)
{
return;
}
func_F8F4();
level.var_274F = ::badplace_cylinder;
level.var_2750 = ::badplace_delete;
scripts\mp\_mp_agent::init_agent("mp/default_agent_definition.csv");
lib_0F6E::registerscriptedagent();
level thread scripts\mp\agents\_agent_common::init();
level thread scripts\mp\killstreaks\_agent_killstreak::init();
}
//Function Number: 2
func_F8F4()
{
if(!isdefined(level.agent_funcs))
{
level.agent_funcs = [];
}
level.agent_funcs["player"] = [];
level.agent_funcs["player"]["spawn"] = ::func_10618;
level.agent_funcs["player"]["think"] = ::scripts\mp\bots\gametype_war::func_2ECE;
level.agent_funcs["player"]["on_killed"] = ::func_C4A9;
level.agent_funcs["player"]["on_damaged"] = ::func_C4A8;
level.agent_funcs["player"]["on_damaged_finished"] = ::func_18EC;
lib_0F6E::func_FA99();
lib_0DF9::func_CAC9();
scripts\mp\killstreaks\_agent_killstreak::func_F8F4();
scripts\mp\killstreaks\_rc8::func_F8F4();
}
//Function Number: 3
func_13672()
{
while(!isdefined(level.agent_funcs))
{
wait(0.05);
}
}
//Function Number: 4
func_16F2(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C,param_0D)
{
var_0E = scripts\mp\agents\_agent_common::func_4535(param_00,param_01,param_02);
if(isdefined(param_09))
{
var_0E.var_4009 = param_09;
}
if(isdefined(var_0E))
{
var_0E thread [[ var_0E lib_0D65::func_1908("spawn") ]](param_03,param_04,param_05,param_06,param_07,param_08,param_0A,param_0B,param_0C,param_0D);
}
return var_0E;
}
//Function Number: 5
func_10618(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
self endon("disconnect");
while(!isdefined(level.var_8136))
{
scripts\common\utility::func_136F7();
}
if(self.var_8BE2)
{
wait(randomintrange(6,10));
}
lib_0D65::func_98BB(1);
if(isdefined(param_00) && isdefined(param_01))
{
var_0A = param_00;
var_0B = param_01;
self.var_A9F4 = spawnstruct();
self.var_A9F4.origin = var_0A;
self.var_A9F4.angles = var_0B;
}
else
{
var_0C = self [[ level.var_8136 ]]();
var_0A = var_0C.origin;
var_0B = var_0C.angles;
self.var_A9F4 = var_0C;
}
lib_0D65::func_1601();
self.var_A9F6 = gettime();
self.var_10916 = gettime();
var_0D = var_0A + (0,0,25);
var_0E = var_0A;
var_0F = playerphysicstrace(var_0D,var_0E);
if(distancesquared(var_0F,var_0D) > 1)
{
var_0A = var_0F;
}
self method_838E(var_0A,var_0B);
if(isdefined(param_03) && param_03)
{
scripts\mp\bots\_bots_personality::func_2D0C();
}
else
{
scripts\mp\bots\_bots_util::func_2E83("default");
}
if(isdefined(param_05))
{
scripts\mp\bots\_bots_util::func_2E81(param_05);
}
func_98B6();
scripts\mp\agents\_agent_common::func_F28C(100);
if(isdefined(param_04) && param_04)
{
self.var_E28C = 1;
}
if(isdefined(param_02))
{
lib_0D65::func_F290(param_02.team,param_02);
}
if(isdefined(self.var_222))
{
thread func_5320(self.var_222);
}
thread scripts\mp\_flashgrenades::func_B9D9();
self method_80C8(0);
self method_83B7();
self [[ level.onspawnplayer ]]();
if(!scripts\mp\_utility::func_9FB3(param_06))
{
scripts\mp\_class::func_8379(self.team,self.var_4004,1);
}
thread scripts\mp\bots\_bots::func_2EBA(1);
thread scripts\mp\bots\_bots::func_2EAF();
if(self.agent_type == "player")
{
thread scripts\mp\bots\_bots::func_2EB3();
}
else if(self.agent_type == "odin_juggernaut")
{
thread scripts\mp\bots\_bots::func_2EB3(128);
}
thread scripts\mp\bots\_bots_strategy::func_2EB8();
self thread [[ lib_0D65::func_1908("think") ]]();
if(!self.var_8BE2)
{
scripts\mp\_spawnlogic::func_1855();
}
self.var_8BE2 = 0;
if(!scripts\mp\_utility::func_9FB3(param_07))
{
thread scripts\mp\_weapons::func_C57B();
}
if(!scripts\mp\_utility::func_9FB3(param_08))
{
thread scripts\mp\_healthoverlay::func_D3A5();
}
if(!scripts\mp\_utility::func_9FB3(param_09))
{
thread scripts\mp\_battlechatter_mp::func_C57B();
}
level notify("spawned_agent_player",self);
level notify("spawned_agent",self);
self notify("spawned_player");
}
//Function Number: 6
func_5320(param_00)
{
self endon("death");
param_00 waittill("killstreak_disowned");
self notify("owner_disconnect");
if(scripts\mp\_hostmigration::func_13834())
{
wait(0.05);
}
self suicide();
}
//Function Number: 7
func_18EC(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
if(isalive(self))
{
if(isdefined(param_00) || isdefined(param_01))
{
if(!isdefined(param_00))
{
param_00 = param_01;
}
if(isdefined(self.var_1CB0) && !self.var_1CB0)
{
if(isdefined(param_00.classname) && param_00.classname == "script_vehicle")
{
return 0;
}
}
if(isdefined(param_00.classname) && param_00.classname == "auto_turret")
{
param_01 = param_00;
}
if(isdefined(param_01) && param_04 != "MOD_FALLING" && param_04 != "MOD_SUICIDE")
{
if(level.teambased)
{
if(isdefined(param_01.team) && param_01.team != self.team)
{
self method_829A(param_01);
}
}
else
{
self method_829A(param_01);
}
}
}
self method_80E9(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,0,param_0A,param_0B);
if(!isdefined(self.var_9D25))
{
self.var_136FD = 1;
}
return 1;
}
}
//Function Number: 8
func_C4A7(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
var_0C = isdefined(param_01) && isdefined(self.var_222) && self.var_222 == param_01;
var_0D = scripts\mp\_utility::func_24F0(self.var_222,param_01) || var_0C;
if(!var_0C && self.agent_type == "playerProxy")
{
if(level.teambased && var_0D && !level.var_740A)
{
return 0;
}
if(!level.teambased && var_0C)
{
return 0;
}
}
if(isdefined(param_04) && param_04 == "MOD_CRUSH" && isdefined(param_00) && isdefined(param_00.classname) && param_00.classname == "script_vehicle")
{
return 0;
}
if(!isdefined(self) || !scripts\mp\_utility::func_9F19(self))
{
return 0;
}
if(isdefined(param_01) && param_01.classname == "script_origin" && isdefined(param_01.type) && param_01.type == "soft_landing")
{
return 0;
}
if(param_05 == "killstreak_emp_mp")
{
return 0;
}
if(param_05 == "bouncingbetty_mp" && !scripts\mp\_weapons::func_B767(param_00,self))
{
return 0;
}
if(issubstr(param_05,"throwingknife") && param_04 == "MOD_IMPACT")
{
param_02 = self.health + 1;
}
if(isdefined(param_00) && isdefined(param_00.var_11180) && param_00.var_11180 == self)
{
param_02 = self.health + 1;
}
if(param_02 <= 0)
{
return 0;
}
if(isdefined(param_01) && param_01 != self && param_02 > 0 && !isdefined(param_08) || param_08 != "shield")
{
if(param_03 & level.var_92CA)
{
var_0E = "stun";
}
else if(!scripts\mp\_damage::func_100C1(param_06))
{
var_0E = "none";
}
else
{
var_0E = "standard";
}
param_01 thread scripts\mp\_damagefeedback::func_12E84(var_0E,param_02 >= self.health);
}
if(isdefined(level.var_B93A))
{
param_02 = [[ level.var_B93A ]](self,param_01,param_02,param_04,param_05,param_06,param_07,param_08);
}
return self [[ lib_0D65::func_1908("on_damaged_finished") ]](param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B);
}
//Function Number: 9
func_C4A8(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
var_0C = isdefined(param_01) && isdefined(self.var_222) && self.var_222 == param_01;
if(!level.teambased && var_0C)
{
return 0;
}
if(isdefined(level.var_13CA6))
{
param_05 = [[ level.var_13CA6 ]](param_05,param_00);
}
scripts\mp\_damage::func_374D(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B);
}
//Function Number: 10
func_C4A9(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
func_C4B3(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,1);
if(isplayer(param_01) && !isdefined(self.var_222) || param_01 != self.var_222)
{
scripts\mp\_damage::func_C548("squad_mate",param_01,param_04,param_03,param_02,"destroyed_squad_mate");
}
scripts\mp\_weapons::func_5D52(param_01);
if(self.var_9D25)
{
self.var_8BE2 = 1;
if(scripts\mp\_utility::func_7ECE() != 1 && isdefined(self.var_E28C) && self.var_E28C)
{
self thread [[ lib_0D65::func_1908("spawn") ]]();
return;
}
lib_0D65::func_4DDB();
}
}
//Function Number: 11
func_C4B3(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
if(isdefined(self.var_8C1F) && self.var_8C1F)
{
scripts\mp\_damage::func_AAB5(param_02,param_03);
if(!param_09)
{
var_0A = self method_80B8(self getcurrentweapon());
if(isdefined(var_0A))
{
var_0A thread scripts\mp\_weapons::func_51CC();
var_0A.var_222 = self;
var_0A.var_C83A = param_01;
var_0A makeunusable();
}
}
}
if(param_09)
{
self [[ level.var_13C82 ]](param_01,param_03);
}
scripts\mp\_utility::func_E54E();
if(isdefined(self.nocorpse))
{
return;
}
self.var_2C09 = self method_8084(param_08);
thread scripts\mp\_damage::func_5124(self.var_2C09,param_06,param_05,param_04,param_00,param_03);
}
//Function Number: 12
func_98B6()
{
if(isdefined(self.var_4007))
{
self.var_4004 = self.var_4007;
return;
}
if(scripts\mp\bots\_bots_loadout::func_2E89())
{
self.var_4004 = "callback";
return;
}
self.var_4004 = "class1";
}

View File

@ -0,0 +1,23 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\_alien_agents.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 1
* Decompile Time: 35 ms
* Timestamp: 10/27/2023 12:23:14 AM
*******************************************************************/
//Function Number: 1
main()
{
if(isdefined(level.createfx_enabled) && level.createfx_enabled)
{
return;
}
level.var_274F = ::badplace_cylinder;
level.var_2750 = ::badplace_delete;
level thread scripts\mp\agents\_agent_common::init();
level.var_10A2A = 0;
}

View File

@ -0,0 +1,596 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\_scriptedagents.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 37
* Decompile Time: 1275 ms
* Timestamp: 10/27/2023 12:23:14 AM
*******************************************************************/
//Function Number: 1
func_197F(param_00,param_01)
{
self.var_2A80 = param_00;
lib_0A02::func_77();
lib_0A1D::func_234D(param_01);
thread func_19F7();
}
//Function Number: 2
func_DF00()
{
level.var_C118["footstep_right_large"] = ::func_C0F9;
level.var_C118["footstep_right_small"] = ::func_C0F9;
level.var_C118["footstep_left_large"] = ::func_C0F9;
level.var_C118["footstep_left_small"] = ::func_C0F9;
}
//Function Number: 3
func_C0F9(param_00,param_01)
{
var_02 = issubstr(param_00,"left");
var_03 = issubstr(param_00,"large");
var_04 = "right";
if(var_02)
{
var_04 = "left";
}
if(var_03)
{
self notify("large_footstep");
}
self.var_2303.var_7257.var_7254 = var_04;
self.var_2303.var_7257.time = gettime();
}
//Function Number: 4
func_89A9(param_00,param_01,param_02)
{
if(isdefined(level.var_C118[param_00]))
{
return [[ level.var_C118[param_00] ]](param_00,param_01);
}
return undefined;
}
//Function Number: 5
func_0219(param_00,param_01)
{
if(isdefined(self.var_C50F))
{
self [[ self.var_C50F ]](param_00,param_01);
}
}
//Function Number: 6
func_0218()
{
self notify("killanimscript");
self notify("terminate_ai_threads");
}
//Function Number: 7
func_19F7()
{
self endon("terminate_ai_threads");
thread lib_0A1D::func_C878();
thread lib_0A1D::func_126E5();
for(;;)
{
if(!isdefined(self))
{
break;
}
lib_0A02::func_90();
lib_0A1A::func_2314();
if(isdefined(self.var_2303.var_10E23))
{
lib_0A1A::func_2317(self.var_2303.var_10E23);
self.var_2303.var_10E23 = undefined;
}
lib_0A1A::func_2389();
wait(0.05);
}
}
//Function Number: 8
func_CED9(param_00,param_01,param_02,param_03)
{
func_CED5(param_00,0,param_01,param_02,param_03);
}
//Function Number: 9
func_CED5(param_00,param_01,param_02,param_03,param_04)
{
self method_82AF(param_00,param_01);
if(!isdefined(param_03))
{
param_03 = "end";
}
func_1384C(param_02,param_03,param_00,param_01,param_04);
}
//Function Number: 10
func_CED2(param_00,param_01,param_02,param_03,param_04,param_05)
{
self method_82AF(param_00,param_01,param_02);
if(!isdefined(param_04))
{
param_04 = "end";
}
func_1384C(param_03,param_04,param_00,param_01,param_05);
}
//Function Number: 11
func_1384A(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
var_07 = undefined;
if(isdefined(param_05))
{
var_07 = gettime() - param_06 * 0.001 / param_05;
}
func_89A9(param_00,param_02,param_04);
if(isdefined(param_02) && isdefined(self.var_2303))
{
lib_0A1D::func_2345(param_00,param_02,param_03,var_07);
}
if(!isdefined(param_05) || var_07 > 0)
{
if(param_00 == param_01 || param_00 == "end" || param_00 == "anim_will_finish" || param_00 == "finish")
{
return 1;
}
}
if(isdefined(param_04))
{
[[ param_04 ]](param_00,param_02,param_03,var_07);
}
return 0;
}
//Function Number: 12
func_1384C(param_00,param_01,param_02,param_03,param_04)
{
var_05 = gettime();
var_06 = undefined;
if(isdefined(param_02) && isdefined(param_03))
{
var_06 = getanimlength(self method_80FD(param_02,param_03));
}
for(var_07 = 0;!var_07;var_07 = func_1384A(var_08,param_01,param_02,param_03,param_04,var_06,var_05))
{
self waittill(param_00,var_08);
if(isarray(var_08))
{
foreach(var_0A in var_08)
{
if(func_1384A(var_0A,param_01,param_02,param_03,param_04,var_06,var_05))
{
var_07 = 1;
}
}
continue;
}
}
}
//Function Number: 13
func_CED0(param_00,param_01)
{
func_CED4(param_00,0,param_01);
}
//Function Number: 14
func_CED4(param_00,param_01,param_02)
{
self method_82AF(param_00,param_01);
wait(param_02);
}
//Function Number: 15
playanimnwithnotetracksfortime(param_00,param_01,param_02,param_03,param_04)
{
self method_82AF(param_00,param_01);
thread playanimnwithnotetracksfortime_helper(param_00,param_01,param_02,param_04);
wait(param_03);
self notify(param_00 + param_01);
}
//Function Number: 16
playanimnwithnotetracksfortime_helper(param_00,param_01,param_02,param_03)
{
self notify(param_00 + param_01);
self endon(param_00 + param_01);
var_04 = 0;
var_05 = self method_80FD(param_00,param_01);
var_06 = getanimlength(var_05);
var_07 = gettime();
while(!var_04)
{
self waittill(param_02,var_08);
if(!isarray(var_08))
{
var_08 = [var_08];
}
foreach(var_0A in var_08)
{
if(func_1384A(var_0A,"end",param_00,param_01,param_03,var_06,var_07))
{
var_04 = 1;
}
}
}
}
//Function Number: 17
func_CED1(param_00,param_01,param_02,param_03)
{
self method_82AF(param_00,param_01,param_02);
wait(param_03);
}
//Function Number: 18
func_7DC9(param_00,param_01,param_02)
{
var_03 = length2d(param_00);
var_04 = param_00[2];
var_05 = length2d(param_01);
var_06 = param_01[2];
var_07 = 1;
var_08 = 1;
if(isdefined(param_02) && param_02)
{
var_09 = (param_01[0],param_01[1],0);
var_0A = vectornormalize(var_09);
if(vectordot(var_0A,param_00) < 0)
{
var_07 = 0;
}
else if(var_05 > 0)
{
var_07 = var_03 / var_05;
}
}
else if(var_05 > 0)
{
var_07 = var_03 / var_05;
}
if(abs(var_06) > 0.001 && var_06 * var_04 >= 0)
{
var_08 = var_04 / var_06;
}
var_0B = spawnstruct();
var_0B.var_13E2B = var_07;
var_0B.var_3A6 = var_08;
return var_0B;
}
//Function Number: 19
func_5D51(param_00,param_01)
{
var_02 = 15;
var_03 = 45;
if(isdefined(self.var_257))
{
var_02 = self.var_257;
}
if(isdefined(self.height))
{
var_03 = self.height;
}
if(!isdefined(param_01))
{
param_01 = 18;
}
var_04 = param_00 + (0,0,param_01);
var_05 = param_00 + (0,0,param_01 * -1);
var_06 = self method_8007(var_04,var_05,self.var_257,self.height,1);
if(abs(var_06[2] - var_04[2]) < 0.1)
{
return undefined;
}
if(abs(var_06[2] - var_05[2]) < 0.1)
{
return undefined;
}
return var_06;
}
//Function Number: 20
func_38D0(param_00,param_01,param_02,param_03)
{
if(!isdefined(param_02))
{
param_02 = 6;
}
if(!isdefined(param_03))
{
param_03 = self.var_257;
}
var_04 = (0,0,1) * param_02;
var_05 = param_00 + var_04;
var_06 = param_01 + var_04;
return self method_8008(var_05,var_06,param_03,self.height - param_02,1);
}
//Function Number: 21
func_81F9(param_00,param_01,param_02)
{
if(!isdefined(param_02))
{
param_02 = 6;
}
var_03 = (0,0,1) * param_02;
var_04 = param_00 + var_03;
var_05 = param_01 + var_03;
return self method_8007(var_04,var_05,self.var_257 + 4,self.height - param_02,1);
}
//Function Number: 22
func_80FE(param_00)
{
var_01 = getmovedelta(param_00);
var_02 = self method_81E7(var_01);
var_03 = func_81F9(self.origin,var_02);
var_04 = distance(self.origin,var_03);
var_05 = distance(self.origin,var_02);
return min(1,var_04 / var_05);
}
//Function Number: 23
func_EA25(param_00,param_01,param_02,param_03)
{
var_04 = func_80AE(param_00);
func_EA24(param_00,var_04,param_01,param_02,param_03);
}
//Function Number: 24
func_EA22(param_00,param_01,param_02,param_03,param_04)
{
var_05 = func_80AE(param_00);
func_EA23(param_00,var_05,param_01,param_02,param_03,param_04);
}
//Function Number: 25
func_EA23(param_00,param_01,param_02,param_03,param_04,param_05)
{
self method_82AF(param_00,param_01,param_02);
func_EA24(param_00,param_01,param_03,param_04,param_05);
}
//Function Number: 26
func_EA24(param_00,param_01,param_02,param_03,param_04)
{
var_05 = self method_80FD(param_00,param_01);
var_06 = func_80FE(var_05);
self method_8282(var_06,1);
func_CED5(param_00,param_01,param_02,param_03,param_04);
self method_8282(1,1);
}
//Function Number: 27
func_80AE(param_00)
{
var_01 = self method_8100(param_00);
return randomint(var_01);
}
//Function Number: 28
func_7DBD(param_00)
{
var_01 = vectortoangles(param_00);
var_02 = angleclamp180(var_01[1] - self.angles[1]);
return function_02F9(var_02);
}
//Function Number: 29
func_F2B1(param_00,param_01,param_02)
{
if(isdefined(param_02))
{
self method_82AF(param_00,param_01,param_02);
return;
}
if(isdefined(param_01))
{
self method_82AF(param_00,param_01);
return;
}
self method_82AF(param_00);
}
//Function Number: 30
func_9F77()
{
if(!isdefined(self.var_2C6))
{
return 0;
}
return self.var_2C6;
}
//Function Number: 31
func_F85E(param_00,param_01)
{
self.var_2C6 = param_00;
}
//Function Number: 32
func_CED6(param_00,param_01,param_02,param_03,param_04)
{
func_CED3(param_00,param_01,1,param_02,param_03,param_04);
}
//Function Number: 33
func_1384D(param_00,param_01,param_02)
{
self endon("disconnect");
self endon("death");
if(isdefined(param_02))
{
childthread func_C0E0(param_00,param_02,param_01);
}
func_1384C(param_00,param_01);
self notify("Notetrack_Timeout");
}
//Function Number: 34
func_CED3(param_00,param_01,param_02,param_03,param_04,param_05)
{
self endon("disconnect");
self endon("death");
if(isdefined(param_00))
{
if(isdefined(param_01))
{
var_06 = getanimlength(self method_80FD(param_00,param_01));
}
else
{
var_06 = getanimlength(self method_80FD(param_01,0));
}
childthread func_C0E0(param_03,var_06 * 1 / param_02,param_04);
}
func_CED2(param_00,param_01,param_02,param_03,param_04,param_05);
self notify("Notetrack_Timeout");
}
//Function Number: 35
func_C0E0(param_00,param_01,param_02)
{
self notify("Notetrack_Timeout");
self endon("Notetrack_Timeout");
param_01 = max(0.05,param_01);
wait(param_01);
if(isdefined(param_02))
{
self notify(param_00,param_02);
return;
}
self notify(param_00,"end");
}
//Function Number: 36
func_5AC1(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07)
{
if(param_04 != "highest_point")
{
func_CED5(param_00,param_01,param_03,param_04,param_07);
}
if(param_06)
{
var_08 = self.var_6367;
var_09 = 1;
}
else
{
var_08 = scripts\common\utility::getstruct(self.var_6366.target,"targetname");
var_09 = var_09.origin;
var_0A = getnotetracktimes(param_03,"highest_point");
var_09 = var_0A[0];
}
func_5AC2(param_00,param_01,param_03,param_02,param_04,param_05,var_08,var_09,param_07);
}
//Function Number: 37
func_5AC2(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
var_09 = abs(self.origin[2] - param_06[2]);
var_0A = getnotetracktimes(param_03,param_04);
var_0B = var_0A[0];
var_0C = var_0B;
var_0D = getnotetracktimes(param_03,param_05);
var_0E = var_0D[0];
param_07 = var_0E;
var_0F = "flex_height_up_top";
var_10 = getnotetracktimes(param_03,var_0F);
var_11 = "flex_height_down_top";
var_12 = getnotetracktimes(param_03,var_11);
var_13 = "flex_height_down_bottom";
var_14 = getnotetracktimes(param_03,var_13);
if(param_04 == "flex_height_up_start" && var_10.size > 0)
{
param_07 = var_10[0];
}
if(param_04 == "flex_height_down_start")
{
if(var_12.size > 0)
{
var_0C = var_10[0];
}
if(var_14.size > 0)
{
param_07 = var_14[0];
}
}
var_15 = getmovedelta(param_03,var_0C,param_07);
var_16 = abs(var_15[2]);
var_18 = getmovedelta(param_03,var_0B,var_0E);
var_19 = abs(var_18[2]);
if(var_19 < 1)
{
var_1A = 1;
}
else
{
var_1B = var_18 - var_1A;
if(var_09 <= var_1B)
{
var_1A = var_1B - var_09 / var_19;
}
else
{
var_1A = var_09 - var_1B / var_19;
}
}
self method_8282(1,var_1A);
if(var_0B != 0)
{
var_1C = self method_8102(param_03);
if(var_1C < var_0B)
{
func_CED2(param_00,param_01,1,param_02,param_04,param_08);
}
}
var_1D = clamp(1 / var_1A,0.33,3);
func_CED2(param_00,param_01,var_1D,param_02,param_05,param_08);
}

View File

@ -0,0 +1,276 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\alien_goon\alien_goon_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 10
* Decompile Time: 544 ms
* Timestamp: 10/27/2023 12:11:04 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
scripts\mp\agents\alien_goon\alien_goon_tunedata::setuptunedata();
lib_0A02::init();
behaviortree\alien_goon::func_DEE8();
scripts\asm\alien_goon\mp\states::func_2371();
scripts\asm\dlc4\alien_anim_utils::func_97C5();
func_AEB0();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["alien_goon"]["setup_func"] = ::setupagent;
level.agent_definition["alien_goon"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["alien_goon"]["on_damaged"] = ::func_C4E0;
level.agent_funcs["alien_goon"]["gametype_on_damage_finished"] = ::lib_0CBC::func_C5CE;
level.agent_funcs["alien_goon"]["gametype_on_killed"] = ::scripts\cp\maps\cp_final\cp_final_damage::cp_final_onzombiekilled;
level.agent_funcs["alien_goon"]["on_damaged_finished"] = ::scripts\mp\agents\zombie\zmb_zombie_agent::func_C5CE;
level.agent_funcs["alien_goon"]["on_killed"] = ::scripts\mp\agents\zombie\zmb_zombie_agent::func_C5D2;
if(!isdefined(level.var_8CBD))
{
level.var_8CBD = [];
}
level.var_8CBD["alien_goon"] = ::calculatealiengoonhealth;
if(!isdefined(level.damage_feedback_overrride))
{
level.damage_feedback_overrride = [];
}
}
//Function Number: 3
func_FACE(param_00)
{
self setmodel("alien_goon");
}
//Function Number: 4
setupzombiegametypevars()
{
self.var_4004 = undefined;
self.var_BCF6 = undefined;
self.var_26B9 = undefined;
self.var_86BD = undefined;
self.name = undefined;
self.var_EB6A = undefined;
self.var_CA5B = undefined;
self.var_13CA0 = undefined;
self.var_C2AD = undefined;
self.sessionteam = undefined;
self.sessionstate = undefined;
self.var_55E6 = undefined;
self.disabledweaponswitch = undefined;
self.var_55D9 = undefined;
self.var_55E4 = 1;
self.nocorpse = undefined;
self.ignoreme = 0;
self.var_180 = 0;
self.var_116D4 = undefined;
self.var_441A = undefined;
self.var_4B82 = undefined;
self.do_immediate_ragdoll = undefined;
self.var_37FD = 0;
self.var_24CA = undefined;
self.entered_playspace = 0;
self.var_B36E = undefined;
self.var_126A3 = undefined;
self.var_8C35 = 0;
self.attackent = undefined;
self.var_9342 = 1;
self.var_1B03 = "idle";
self.var_1F5 = "walk";
self.sharpturnnotifydist = 100;
self.var_257 = 15;
self.height = 40;
self.var_252B = 26 + self.var_257;
self.var_B640 = "normal";
self.var_B641 = 50;
self.var_2539 = 54;
self.var_253A = -64;
self.var_4D45 = 2250000;
self.var_181 = 1;
self.var_86BD = self getentitynumber();
self.var_BCE4 = 0.9;
self.var_C081 = 1;
self.var_126E8 = 1;
self.var_772A = 1;
self.var_2AB2 = 0;
self.var_2AB8 = 1;
self.var_118FC = 0;
self.var_2F = 1;
self.var_B5F9 = 40;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_565C = 0;
self.var_9BAC = 0;
self.var_54CB = 0;
self.damaged_by_player = 0;
self.var_9E0C = undefined;
self.flung = undefined;
self.var_B0FC = 1;
self.full_gib = 0;
self.var_12E = undefined;
self.var_E821 = undefined;
self.var_A8A2 = [];
self.var_8C12 = 0;
self.hasplayedvignetteanim = undefined;
self.var_9BA7 = undefined;
self.var_179 = 200;
self.deathmethod = undefined;
self.var_10A57 = undefined;
self.var_828A = undefined;
self.var_CE65 = undefined;
self.var_29D2 = 1;
self.vignette_nocorpse = undefined;
self.death_anim_no_ragdoll = undefined;
self.allowpain = 0;
self method_84E6(45);
if(getdvarint("scr_zombie_left_foot_sharp_turn_only",0) == 1)
{
self.var_AB3F = 1;
}
}
//Function Number: 5
setupagent()
{
setupzombiegametypevars();
thread scripts\mp\agents\zombie\zmb_zombie_agent::func_12EE6();
self.height = self.var_18F4;
self.var_257 = self.var_18F9;
self.var_B62D = 70;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_B601 = 45;
self.var_504E = 55;
self.var_129AF = 55;
self.var_368 = -60;
self.var_100 = 60;
self.ground_pound_damage = 50;
self.footstepdetectdist = 2500;
self.footstepdetectdistwalk = 2500;
self.footstepdetectdistsprint = 2500;
self.var_180 = 1;
self.dontmutilate = 1;
if(scripts\common\utility::istrue(self.activated_venomx_sphere))
{
self.activated_venomx_sphere = undefined;
}
if(scripts\common\utility::istrue(self.dot_triggered))
{
self.dot_triggered = undefined;
}
self.aj_goon = 0;
self.preventplayerpushdist = 12;
thread monitorwhizbys();
}
//Function Number: 6
func_AEB0()
{
level._effect["alien_teleport_fx"] = loadfx("vfx/iw7/_requests/coop/zmb_fullbody_gib.vfx");
}
//Function Number: 7
monitorwhizbys()
{
self endon("death");
self.lastwhizbytime = undefined;
for(;;)
{
self waittill("bulletwhizby",var_00,var_01);
self.lastwhizbytime = gettime();
self.lastwhizbyshooter = var_00;
self.lastwhizbydist = var_01;
}
}
//Function Number: 8
calculatealiengoonhealth()
{
var_00 = 200;
switch(level.var_1096B)
{
case 0:
var_00 = 400;
break;
case 1:
var_00 = 900;
break;
case 2:
var_00 = 1300;
break;
case 3:
var_00 = 1600;
break;
case 4:
var_00 = 2000;
break;
default:
var_00 = 2000;
break;
}
return var_00;
}
//Function Number: 9
accumulatedamage(param_00,param_01)
{
if(!isdefined(self.damageaccumulator))
{
self.damageaccumulator = spawnstruct();
self.damageaccumulator.accumulateddamage = 0;
}
else if(!isdefined(self.damageaccumulator.var_A96A) || gettime() > self.damageaccumulator.var_A96A + 1000)
{
self.damageaccumulator.accumulateddamage = 0;
self.damageaccumulator.var_A96A = 0;
}
self.damageaccumulator.var_A96A = gettime();
if(!isdefined(param_01))
{
param_01 = (1,1,1);
}
self.damageaccumulator.lastdir = param_01;
if(isdefined(self.fake_damage))
{
self.damageaccumulator.accumulateddamage = self.damageaccumulator.accumulateddamage + self.fake_damage;
self.fake_damage = undefined;
return;
}
self.damageaccumulator.accumulateddamage = self.damageaccumulator.accumulateddamage + param_00;
}
//Function Number: 10
func_C4E0(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
accumulatedamage(param_02,param_07);
scripts\cp\maps\cp_final\cp_final_damage::cp_final_onzombiedamaged(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B);
}

View File

@ -0,0 +1,73 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\alien_goon\alien_goon_tunedata.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 2
* Decompile Time: 150 ms
* Timestamp: 10/27/2023 12:11:05 AM
*******************************************************************/
//Function Number: 1
setuptunedata()
{
if(!isdefined(level.agenttunedata))
{
level.agenttunedata = [];
}
level.agenttunedata["alien_goon"] = spawnstruct();
setupmytunedata(level.agenttunedata["alien_goon"]);
}
//Function Number: 2
setupmytunedata(param_00)
{
param_00.min_time_between_melee_attacks_ms = 1000;
param_00.melee_max_flex_xy_scale = 2.5;
param_00.melee_xy_scale_boost = 0.5;
param_00.non_predicted_move_melee_dist_sq = 6724;
param_00.check_reachable_dist_sq = 4096;
param_00.moving_melee_attack_damage_radius_sq = 1600;
param_00.melee_attack_damage_radius_sq = 9216;
param_00.melee_dot = 0.867;
param_00.stand_melee_dist_sq = 4096;
param_00.stand_melee_attack_dot = 0.707;
param_00.move_melee_dist_sq = 16384;
param_00.post_attack_taunt_chance = 50;
param_00.post_attack_max_enemy_dist_sq = 256;
param_00.stumble_interval_ms = 10000;
param_00.stumble_damage_pct = 0.25;
param_00.stumble_chance = 50;
param_00.min_dist_to_enemy_to_allow_turn_sq = -25536;
param_00.max_dist_to_enemy_to_allow_turn_sq = 1048576;
param_00.min_stop_facing_enemy_time_before_hit = 0.1;
param_00.max_stop_facing_enemy_time_before_hit = 0.15;
param_00.melee_max_z_diff = 60;
param_00.avg_time_to_impact = 0.7;
param_00.reduce_damage_dot = 0.25;
param_00.reduce_damage_pct = 0.15;
param_00.min_enemy_dist_to_dodge_sq = 65536;
param_00.dodge_chance = 75;
param_00.min_dodge_test_interval_ms = 250;
param_00.min_dodge_interval_ms = 6000;
param_00.min_dodge_scale = 0.3;
param_00.max_dodge_scale = 0.5;
param_00.wander_goal_radius = 64;
param_00.wander_min_wait_time_ms = 1000;
param_00.wander_max_wait_time_ms = 2500;
param_00.jump_attack_damage_radius_sq = 8100;
param_00.jump_attack_min_enemy_dot = 0.985;
param_00.jump_attack_damage_dot = 0.867;
param_00.jump_attack_melee_damage_multiplier = 1.1;
param_00.jump_attack_initial_delay_ms = 5000;
param_00.jump_attack_min_interval = 10000;
param_00.max_leap_melee_drop_distance = 64;
param_00.min_leap_distance_sq = 90000;
param_00.max_leap_distance_sq = 562500;
param_00.leap_offset_xy = 48;
param_00.avg_leap_speed = 500;
param_00.teleport_chance = 0;
param_00.min_dist_to_teleport_sq = 1409865409;
param_00.force_melee_attack_damage_radius_sq = 256;
}

View File

@ -0,0 +1,114 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\alien_phantom\alien_phantom_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 6
* Decompile Time: 347 ms
* Timestamp: 10/27/2023 12:11:05 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
scripts\mp\agents\alien_phantom\alien_phantom_tunedata::setuptunedata();
lib_0A02::init();
behaviortree\alien_goon::func_DEE8();
scripts\asm\alien_goon\mp\states::func_2371();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["alien_phantom"]["setup_func"] = ::setupagent;
level.agent_definition["alien_phantom"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["alien_phantom"]["on_damaged"] = ::scripts\mp\agents\alien_goon\alien_goon_agent::func_C4E0;
level.agent_funcs["alien_phantom"]["gametype_on_damage_finished"] = ::lib_0CBC::func_C5CE;
level.agent_funcs["alien_phantom"]["gametype_on_killed"] = ::scripts\cp\maps\cp_final\cp_final_damage::cp_final_onzombiekilled;
level.agent_funcs["alien_phantom"]["on_damaged_finished"] = ::scripts\mp\agents\zombie\zmb_zombie_agent::func_C5CE;
level.agent_funcs["alien_phantom"]["on_killed"] = ::onkilled;
level.brute_loot_check = [];
if(!isdefined(level.var_8CBD))
{
level.var_8CBD = [];
}
level.var_8CBD["alien_phantom"] = ::calculatealienphantomhealth;
if(!isdefined(level.damage_feedback_overrride))
{
level.damage_feedback_overrride = [];
}
}
//Function Number: 3
func_FACE(param_00)
{
self setmodel("alien_brute");
}
//Function Number: 4
setupagent()
{
scripts\mp\agents\alien_goon\alien_goon_agent::setupagent();
self.var_B601 = 67;
self.preventplayerpushdist = 12;
self.spawn_round_num = level.wave_num;
self.var_9341 = 1;
}
//Function Number: 5
calculatealienphantomhealth()
{
var_00 = scripts\mp\agents\alien_goon\alien_goon_agent::calculatealiengoonhealth();
var_01 = scripts\asm\dlc4\dlc4_asm::gettunedata();
if(level.players.size < 2)
{
var_00 = var_00 / 2;
}
return var_00 * var_01.goon_health_multiplier;
}
//Function Number: 6
onkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
if(!isdefined(level.no_loot_drop) || !level.no_loot_drop)
{
var_09 = scripts\common\utility::random(["ammo_max","instakill_30","cash_2","instakill_30","cash_2","instakill_30","cash_2"]);
if(isdefined(var_09) && !isdefined(self.var_72AC))
{
if(!isdefined(level.brute_loot_check[self.spawn_round_num]))
{
level.brute_loot_check[self.spawn_round_num] = 1;
level thread scripts\cp\zombies\_powerups::drop_loot(self.origin,param_01,var_09,undefined,undefined,1);
}
}
var_0A = 400;
foreach(var_0C in level.players)
{
if(var_0C scripts\cp\_utility::is_valid_player())
{
var_0C scripts\cp\_persistence::func_82F9(var_0A);
}
}
}
if(self method_85B8())
{
level.totalphantomsjumping--;
if(level.totalphantomsjumping <= 0)
{
level.totalphantomsjumping = 0;
}
}
scripts\mp\agents\zombie\zmb_zombie_agent::func_C5D2(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}

View File

@ -0,0 +1,32 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\alien_phantom\alien_phantom_tunedata.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 2
* Decompile Time: 145 ms
* Timestamp: 10/27/2023 12:11:06 AM
*******************************************************************/
//Function Number: 1
setuptunedata()
{
if(!isdefined(level.agenttunedata))
{
level.agenttunedata = [];
}
level.agenttunedata["alien_phantom"] = spawnstruct();
setupmytunedata(level.agenttunedata["alien_phantom"]);
}
//Function Number: 2
setupmytunedata(param_00)
{
scripts\mp\agents\alien_goon\alien_goon_tunedata::setupmytunedata(param_00);
param_00.goon_health_multiplier = 7;
param_00.force_melee_attack_damage_radius_sq = 1024;
param_00.teleport_chance = 100;
param_00.min_dist_to_teleport_sq = 90000;
param_00.max_leap_distance_sq = 1000000;
}

View File

@ -0,0 +1,277 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\alien_rhino\alien_rhino_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 10
* Decompile Time: 523 ms
* Timestamp: 10/27/2023 12:11:07 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
scripts\mp\agents\alien_rhino\alien_rhino_tunedata::setuptunedata();
lib_0A02::init();
behaviortree\alien_rhino::func_DEE8();
scripts\asm\alien_rhino\mp\states::func_2371();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["alien_rhino"]["setup_func"] = ::setupagent;
level.agent_definition["alien_rhino"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["alien_rhino"]["on_damaged"] = ::func_C4E0;
level.agent_funcs["alien_rhino"]["gametype_on_damage_finished"] = ::lib_0CBC::func_C5CE;
level.agent_funcs["alien_rhino"]["gametype_on_killed"] = ::scripts\cp\maps\cp_final\cp_final_damage::cp_final_onzombiekilled;
level.agent_funcs["alien_rhino"]["on_damaged_finished"] = ::scripts\mp\agents\zombie\zmb_zombie_agent::func_C5CE;
level.agent_funcs["alien_rhino"]["on_killed"] = ::onrhinokilled;
if(!isdefined(level.var_8CBD))
{
level.var_8CBD = [];
}
level.var_8CBD["alien_rhino"] = ::calculatealienrhinohealth;
if(!isdefined(level.damage_feedback_overrride))
{
level.damage_feedback_overrride = [];
}
}
//Function Number: 3
func_FACE(param_00)
{
if(should_spawn_mammoth())
{
self setmodel("alien_queen_blue");
return;
}
self setmodel("alien_queen");
}
//Function Number: 4
setupzombiegametypevars()
{
self.var_4004 = undefined;
self.var_BCF6 = undefined;
self.var_26B9 = undefined;
self.var_86BD = undefined;
self.name = undefined;
self.var_EB6A = undefined;
self.var_CA5B = undefined;
self.var_13CA0 = undefined;
self.var_C2AD = undefined;
self.sessionteam = undefined;
self.sessionstate = undefined;
self.var_55E6 = undefined;
self.disabledweaponswitch = undefined;
self.var_55D9 = undefined;
self.var_55E4 = 1;
self.nocorpse = undefined;
self.ignoreme = 0;
self.var_180 = 0;
self.var_116D4 = undefined;
self.var_441A = undefined;
self.var_4B82 = undefined;
self.do_immediate_ragdoll = undefined;
self.var_37FD = 0;
self.var_24CA = undefined;
self.entered_playspace = 0;
self.var_B36E = undefined;
self.var_126A3 = undefined;
self.var_8C35 = 0;
self.attackent = undefined;
self.var_9342 = 1;
self.var_1B03 = "idle";
self.var_1F5 = "walk";
self.sharpturnnotifydist = 100;
self.var_257 = 15;
self.height = 40;
self.var_252B = 26 + self.var_257;
self.var_B640 = "normal";
self.var_B641 = 50;
self.var_2539 = 54;
self.var_253A = -64;
self.var_4D45 = 2250000;
self.var_181 = 1;
self.var_86BD = self getentitynumber();
self.var_BCE4 = 1;
self.var_C081 = 1;
self.var_126E8 = 1;
self.var_772A = 1;
self.var_2AB2 = 0;
self.var_2AB8 = 1;
self.var_118FC = 0;
self.var_2F = 1;
self.var_B5F9 = 40;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_565C = 0;
self.var_9BAC = 0;
self.var_54CB = 0;
self.damaged_by_player = 0;
self.var_9E0C = undefined;
self.flung = undefined;
self.var_B0FC = 1;
self.full_gib = 0;
self.var_12E = undefined;
self.var_E821 = undefined;
self.var_A8A2 = [];
self.var_8C12 = 0;
self.hasplayedvignetteanim = undefined;
self.var_9BA7 = undefined;
self.var_179 = 200;
self.deathmethod = undefined;
self.var_10A57 = undefined;
self.var_828A = undefined;
self.var_CE65 = undefined;
self.var_29D2 = 1;
self.vignette_nocorpse = undefined;
self.death_anim_no_ragdoll = undefined;
self.dont_cleanup = 1;
self.allowpain = 0;
self method_84E6(65);
if(getdvarint("scr_zombie_left_foot_sharp_turn_only",0) == 1)
{
self.var_AB3F = 1;
}
}
//Function Number: 5
setupagent()
{
setupzombiegametypevars();
thread scripts\mp\agents\zombie\zmb_zombie_agent::func_12EE6();
self.height = self.var_18F4;
self.var_257 = self.var_18F9;
self.var_9341 = 1;
self.var_B62D = 70;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_B601 = 90;
self.var_504E = 55;
self.var_129AF = 55;
self.var_368 = -60;
self.var_100 = 60;
self.ground_pound_damage = 50;
self.footstepdetectdist = 2500;
self.footstepdetectdistwalk = 2500;
self.footstepdetectdistsprint = 2500;
self.var_180 = 1;
self.dontmutilate = 1;
if(scripts\common\utility::istrue(self.activated_venomx_sphere))
{
self.activated_venomx_sphere = undefined;
}
if(scripts\common\utility::istrue(self.dot_triggered))
{
self.dot_triggered = undefined;
}
self.preventplayerpushdist = 12;
}
//Function Number: 6
calculatealienrhinohealth()
{
return -15536 * level.players.size;
}
//Function Number: 7
accumulatedamage(param_00,param_01)
{
if(!isdefined(self.damageaccumulator))
{
self.damageaccumulator = spawnstruct();
self.damageaccumulator.accumulateddamage = 0;
}
else if(!isdefined(self.damageaccumulator.var_A96A) || gettime() > self.damageaccumulator.var_A96A + 1000)
{
self.damageaccumulator.accumulateddamage = 0;
self.damageaccumulator.var_A96A = 0;
}
self.damageaccumulator.var_A96A = gettime();
if(!isdefined(param_01))
{
param_01 = (1,1,1);
}
self.damageaccumulator.lastdir = param_01;
if(isdefined(self.fake_damage))
{
self.damageaccumulator.accumulateddamage = self.damageaccumulator.accumulateddamage + self.fake_damage;
self.fake_damage = undefined;
return;
}
self.damageaccumulator.accumulateddamage = self.damageaccumulator.accumulateddamage + param_00;
}
//Function Number: 8
func_C4E0(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
if(isdefined(self.is_mammoth) && self.is_mammoth)
{
param_02 = param_02 / 4;
}
var_0C = weaponclass(param_05);
if(var_0C == "smg" || var_0C == "spread")
{
param_02 = param_02 / 2;
}
accumulatedamage(param_02,param_07);
scripts\cp\maps\cp_final\cp_final_damage::cp_final_onzombiedamaged(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B);
}
//Function Number: 9
should_spawn_mammoth()
{
if(isdefined(level.mammoth_spawn) && level.mammoth_spawn)
{
return 1;
}
return 0;
}
//Function Number: 10
onrhinokilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
if(scripts\common\utility::istrue(self.is_mammoth))
{
var_09 = 4000;
}
else
{
var_09 = 1000;
}
foreach(var_0B in level.players)
{
if(var_0B scripts\cp\_utility::is_valid_player())
{
var_0B scripts\cp\_persistence::func_82F9(var_09);
}
}
scripts\mp\_mp_agent::func_5006(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}

View File

@ -0,0 +1,88 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\alien_rhino\alien_rhino_tunedata.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 2
* Decompile Time: 149 ms
* Timestamp: 10/27/2023 12:11:07 AM
*******************************************************************/
//Function Number: 1
setuptunedata()
{
if(!isdefined(level.agenttunedata))
{
level.agenttunedata = [];
}
level.agenttunedata["alien_rhino"] = spawnstruct();
setupmytunedata(level.agenttunedata["alien_rhino"]);
}
//Function Number: 2
setupmytunedata(param_00)
{
param_00.min_time_between_melee_attacks_ms = 1000;
param_00.melee_max_flex_xy_scale = 2.5;
param_00.melee_xy_scale_boost = 0.5;
param_00.non_predicted_move_melee_dist_sq = 6724;
param_00.check_reachable_dist_sq = 4096;
param_00.moving_melee_attack_damage_radius_sq = 1600;
param_00.melee_attack_damage_radius_sq = 9216;
param_00.melee_dot = 0.867;
param_00.stand_melee_dist_sq = 4096;
param_00.stand_melee_attack_dot = 0.707;
param_00.move_melee_dist_sq = 16384;
param_00.post_attack_taunt_chance = 50;
param_00.post_attack_max_enemy_dist_sq = 256;
param_00.min_dist_to_enemy_to_allow_turn_sq = -25536;
param_00.max_dist_to_enemy_to_allow_turn_sq = 1048576;
param_00.min_stop_facing_enemy_time_before_hit = 0.3;
param_00.max_stop_facing_enemy_time_before_hit = 0.4;
param_00.melee_max_z_diff = 60;
param_00.avg_time_to_impact = 0.7;
param_00.reduce_damage_dot = 0.25;
param_00.reduce_damage_pct = 0.15;
param_00.charge_attack_damage_amt = 180;
param_00.charge_attack_damage_radius_sq = 900;
param_00.charge_attack_stop_facing_enemy_dist_sq = -25536;
param_00.max_charge_time_ms = 5000;
param_00.charge_abort_dot = 0;
param_00.charge_attack_damage_dot = 0;
param_00.charge_attack_mindist_sq = 14400;
param_00.charge_attack_maxdist_sq = 122500;
param_00.charge_attack_abort_dist_sq = 202500;
param_00.max_charge_attack_interval_ms = 6000;
param_00.min_charge_attack_interval_ms = 3000;
param_00.initial_taunt_wait_time_ms = 5000;
param_00.min_time_between_taunts_ms = 15000;
param_00.max_time_between_taunts_ms = 20000;
param_00.taunt_chance = 100;
param_00.taunt_min_dist_to_enemy_sq = 90000;
param_00.taunt_max_dist_to_enemy_sq = 90000;
param_00.min_time_between_melee_attacks_ms = 1000;
param_00.small_slam_radius = 150;
param_00.small_slam_max_damage = 90;
param_00.small_slam_min_damage = 90;
param_00.big_slam_radius = 150;
param_00.big_slam_max_damage = 180;
param_00.big_slam_min_damage = 180;
param_00.wander_goal_radius = 64;
param_00.wander_min_wait_time_ms = 1000;
param_00.wander_max_wait_time_ms = 2500;
param_00.jump_attack_damage_radius_sq = 8100;
param_00.jump_attack_min_enemy_dot = 0.985;
param_00.jump_attack_damage_dot = 0.867;
param_00.jump_attack_melee_damage_multiplier = 1.1;
param_00.jump_attack_initial_delay_ms = 5000;
param_00.jump_attack_min_interval = 10000;
param_00.max_leap_melee_drop_distance = 64;
param_00.min_leap_distance_sq = 129600;
param_00.max_leap_distance_sq = 562500;
param_00.leap_offset_xy = 48;
param_00.avg_leap_speed = 500;
param_00.teleport_chance = 0;
param_00.min_dist_to_teleport_sq = 1409865409;
param_00.force_melee_attack_damage_radius_sq = 256;
}

View File

@ -0,0 +1,369 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\c6\c6_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 20
* Decompile Time: 906 ms
* Timestamp: 10/27/2023 12:31:17 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
lib_03A9::func_DEE8();
lib_0F37::func_2371();
if(level.gametype != "zombie")
{
lib_09FD::func_3353();
}
func_9812();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
if(!isdefined(level.var_10970))
{
level.var_10970 = [];
}
level.var_10970["c6"] = [];
level.agent_definition["c6"]["setup_func"] = ::setupagent;
}
//Function Number: 3
setupagent()
{
self.accuracy = 0.5;
self.noattackeraccuracymod = 0;
self.sharpturnnotifydist = 48;
self.last_enemy_sight_time = 0;
self.desiredenemydistmax = 360;
self.desiredenemydistmin = 340;
self.maxtimetostrafewithoutlos = 3000;
self.strafeifwithindist = self.desiredenemydistmax + 100;
self.var_272A = self.desiredenemydistmin - 100;
self.fastcrawlanimscale = 12;
self.forcefastcrawldist = 340;
self.fastcrawlmaxhealth = 40;
self.dismemberchargeexplodedistsq = 2500;
self.explosionradius = 75;
self.explosiondamagemin = 30;
self.explosiondamagemax = 50;
self.meleerangesq = 9216;
self.meleechargedist = 160;
self.meleechargedistvsplayer = 250;
self.meleechargedistreloadmultiplier = 1.2;
self.maxzdiff = 50;
self.meleeactorboundsradius = 32;
self.meleemindamage = 30;
self.meleemaxdamage = 45;
self.footstepdetectdist = 600;
self.footstepdetectdistwalk = 600;
self.footstepdetectdistsprint = 600;
self.var_1A44 = 50;
func_FAFE();
thread scriptedgoalwaitforarrival();
thread func_899D();
}
//Function Number: 4
func_FAFE()
{
self.var_3402 = ::func_11562;
self.var_3404 = [::func_11562,::func_11559,::func_1156F,::func_1157B,::func_11570];
self.var_3403 = [15,40,17,17,11];
}
//Function Number: 5
func_899D()
{
self endon("death");
for(;;)
{
self waittill("enemy");
for(;;)
{
if(isdefined(self.var_10C))
{
self.var_6571 = gettime() + 1000;
}
else if(isdefined(self.var_6571))
{
if(gettime() > self.var_6571)
{
self.var_6571 = undefined;
break;
}
}
wait(0.25);
}
}
}
//Function Number: 6
func_11570()
{
var_00 = 70;
var_01 = 15;
if(isdefined(self.var_10C.var_18F4))
{
var_00 = self.var_10C.var_18F4;
var_01 = self.var_10C.var_18F9;
}
var_02 = var_00 * randomfloatrange(0.25,0.35);
var_03 = var_01 * 0.5;
var_04 = var_03 * -1;
var_05 = randomfloatrange(var_04,var_03);
var_06 = anglestoright(self.angles);
var_07 = (var_06[0] * var_05,var_06[1] * var_05,var_02);
var_08 = self.var_10C.origin + var_07;
return var_08;
}
//Function Number: 7
func_1157B()
{
var_00 = 70;
var_01 = 15;
if(isdefined(self.var_10C.var_18F4))
{
var_00 = self.var_10C.var_18F4;
var_01 = self.var_10C.var_18F9;
}
var_02 = var_00 * randomfloatrange(0.65,0.75);
var_03 = var_01 * 0.75;
var_04 = anglestoright(self.angles);
var_05 = (var_04[0] * var_03,var_04[1] * var_03,var_02);
var_06 = self.var_10C.origin + var_05;
return var_06;
}
//Function Number: 8
func_1156F()
{
var_00 = 70;
var_01 = 15;
if(isdefined(self.var_10C.var_18F4))
{
var_00 = self.var_10C.var_18F4;
var_01 = self.var_10C.var_18F9;
}
var_02 = var_00 * randomfloatrange(0.65,0.75);
var_03 = var_01 * -0.75;
var_04 = anglestoright(self.angles);
var_05 = (var_04[0] * var_03,var_04[1] * var_03,var_02);
var_06 = self.var_10C.origin + var_05;
return var_06;
}
//Function Number: 9
func_11559()
{
var_00 = 70;
var_01 = 15;
if(isdefined(self.var_10C.var_18F4))
{
var_00 = self.var_10C.var_18F4;
var_01 = self.var_10C.var_18F9;
}
var_02 = var_00 * randomfloatrange(0.65,0.75);
var_03 = var_01 * 0.5;
var_04 = var_03 * -1;
var_05 = randomfloatrange(var_04,var_03);
var_06 = anglestoright(self.angles);
var_07 = (var_06[0] * var_05,var_06[1] * var_05,var_02);
var_08 = self.var_10C.origin + var_07;
return var_08;
}
//Function Number: 10
func_11562()
{
var_00 = self.var_10C gettagorigin("j_head");
return var_00;
}
//Function Number: 11
func_2475()
{
if(isdefined(self.var_2AB4) && self.var_2AB4 == 0)
{
return;
}
self.var_13525 = "american";
self method_82C6("cloth");
self attach("robot_c6_armor");
var_00 = [];
var_00["tag_armor_head_ri"] = 165;
var_00["tag_armor_head_le"] = 165;
var_00["tag_armor_head_front"] = 165;
var_00["tag_armor_forearm_le"] = 120;
var_00["tag_armor_bicep_le"] = 120;
var_00["tag_armor_forearm_ri"] = 120;
var_00["tag_armor_bicep_ri"] = 120;
var_00["tag_armor_chest_upper_le"] = 165;
var_00["tag_armor_chest_upper_ri"] = 165;
var_00["tag_armor_back_upper"] = 165;
var_00["tag_armor_chest_stomach"] = 165;
var_00["tag_armor_back_lower"] = 165;
var_00["tag_armor_leg_thigh_front_le"] = 120;
var_00["tag_armor_leg_thigh_back_le"] = 120;
var_00["tag_armor_leg_thigh_front_ri"] = 120;
var_00["tag_armor_leg_thigh_back_ri"] = 120;
var_00["tag_armor_kneepad_behind_le"] = 50;
var_00["tag_armor_kneepad_down_le"] = 50;
var_00["tag_armor_kneepad_upper_le"] = 50;
var_00["tag_armor_kneepad_behind_ri"] = 50;
var_00["tag_armor_kneepad_down_ri"] = 50;
var_00["tag_armor_kneepad_upper_ri"] = 50;
self.var_2AB4 = 1;
}
//Function Number: 12
func_FAA6()
{
self.var_2AB5 = 1;
}
//Function Number: 13
func_17CC(param_00,param_01)
{
if(!isdefined(level.var_85DF))
{
anim.var_85DF = [];
anim.var_85E1 = [];
}
var_02 = level.var_85DF.size;
level.var_85DF[var_02] = param_00;
level.var_85E1[var_02] = param_01;
}
//Function Number: 14
func_9812()
{
func_17CC(0,(41.5391,7.28883,72.2128));
func_17CC(1,(34.8849,-4.77048,74.0488));
}
//Function Number: 15
scriptedgoalwaitforarrival()
{
self endon("death");
for(;;)
{
self waittill("goal_reached");
if(isdefined(self.var_EF7D))
{
var_00 = self.var_EF7D;
}
else if(isdefined(self.var_EF7A))
{
var_00 = self.var_EF7A.origin;
}
else if(isdefined(self.var_EF7C))
{
var_00 = self.var_EF7C.origin;
}
else
{
continue;
}
var_01 = 16;
if(isdefined(self.var_EF7E))
{
var_01 = self.var_EF7E * self.var_EF7E;
}
if(distance2dsquared(self.origin,var_00) <= var_01)
{
self.var_EF7D = undefined;
self.var_EF7C = undefined;
if(!isdefined(self.var_EF7B))
{
self.var_EF7A = undefined;
}
self notify("scriptedGoal_reached");
}
}
}
//Function Number: 16
func_F834(param_00,param_01)
{
if(!isdefined(param_01))
{
param_01 = 0;
}
self.var_EF79 = param_01;
self.var_EF73 = param_00;
}
//Function Number: 17
func_F835(param_00,param_01)
{
self.var_EF7A = undefined;
self.var_EF7B = undefined;
self.var_EF7C = undefined;
self.var_EF7D = param_00;
self.var_EF7E = param_01;
}
//Function Number: 18
func_F833(param_00,param_01)
{
self.var_EF7D = undefined;
self.var_EF7A = undefined;
self.var_EF7B = undefined;
self.var_EF7C = param_00;
self.var_EF7E = param_01;
}
//Function Number: 19
func_F832(param_00,param_01,param_02)
{
self.var_EF7D = undefined;
self.var_EF7C = undefined;
self.var_EF7A = param_00;
self.var_EF7E = param_01;
if(isdefined(param_02) && param_02)
{
self.var_EF7B = param_02;
return;
}
self.var_EF7B = undefined;
}
//Function Number: 20
func_41D9()
{
if(isdefined(self.var_EF7D) || isdefined(self.var_EF7A) || isdefined(self.var_EF7C))
{
self.var_EF7D = undefined;
self.var_EF7A = undefined;
self.var_EF7B = undefined;
self.var_EF7C = undefined;
self method_841F();
}
}

View File

@ -0,0 +1,83 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\cop_dlc2\cop_dlc2_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 7
* Decompile Time: 418 ms
* Timestamp: 10/27/2023 12:11:08 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
if(!isdefined(level.var_4632))
{
level.var_4632 = 5;
}
level.agent_funcs["cop_dlc2"]["on_damaged"] = ::lib_0CBC::func_C5CD;
level.agent_funcs["cop_dlc2"]["gametype_on_damage_finished"] = ::lib_0CBC::func_C5CE;
level.agent_funcs["cop_dlc2"]["gametype_on_killed"] = ::lib_0CBC::func_C5D2;
level.var_BCCE["cop_dlc2"] = ::lib_0CBC::func_E7FD;
lib_0A02::init();
func_AEB0();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["cop_dlc2"]["setup_func"] = ::setupagent;
level.agent_definition["cop_dlc2"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["cop_dlc2"]["on_damaged_finished"] = ::scripts\mp\agents\zombie\zmb_zombie_agent::func_C5CE;
level.agent_funcs["cop_dlc2"]["on_killed"] = ::scripts\mp\agents\zombie\zmb_zombie_agent::func_C5D2;
level.var_1094E["cop_dlc2"] = ::func_FF94;
}
//Function Number: 3
setupagent()
{
scripts\mp\agents\zombie\zmb_zombie_agent::setupagent();
thread func_899C();
self.var_9BA7 = 1;
}
//Function Number: 4
func_899C()
{
self endon("death");
level waittill("game_ended");
self method_841F();
foreach(var_04, var_01 in self.var_164D)
{
var_02 = var_01.var_4BC0;
var_03 = level.var_2303[var_04].var_10E2F[var_02];
lib_0A1A::func_2388(var_04,var_02,var_03,var_03.var_116FB);
lib_0A1A::func_238A(var_04,"idle",0.2,undefined,undefined,undefined);
}
}
//Function Number: 5
func_FACE(param_00)
{
self setmodel("police_officer_zombie");
thread scripts\mp\agents\zombie\zmb_zombie_agent::func_50EF();
}
//Function Number: 6
func_AEB0()
{
}
//Function Number: 7
func_FF94()
{
return undefined;
}

View File

@ -0,0 +1,178 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\crab_boss\crab_boss_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 8
* Decompile Time: 466 ms
* Timestamp: 10/27/2023 12:11:09 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
behaviortree\crab_boss::func_DEE8();
scripts\asm\crab_boss\mp\states::func_2371();
scripts\mp\agents\crab_boss\crab_boss_tunedata::setuptunedata();
func_AEB0();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["crab_boss"]["setup_func"] = ::setupagent;
level.agent_definition["crab_boss"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["crab_boss"]["on_damaged_finished"] = ::ondamagefinished;
}
//Function Number: 3
func_FACE(param_00)
{
self setmodel("zmb_boss_crab");
}
//Function Number: 4
func_AEB0()
{
level._effect["boss_crab_beam_start_fx"] = loadfx("vfx/iw7/levels/cp_town/crog/vfx_lure_glow_charge.vfx");
}
//Function Number: 5
setupzombiegametypevars()
{
self.var_4004 = undefined;
self.var_BCF6 = undefined;
self.var_26B9 = undefined;
self.var_86BD = undefined;
self.name = undefined;
self.var_EB6A = undefined;
self.var_CA5B = undefined;
self.var_13CA0 = undefined;
self.var_C2AD = undefined;
self.sessionteam = undefined;
self.sessionstate = undefined;
self.var_55E6 = undefined;
self.disabledweaponswitch = undefined;
self.var_55D9 = undefined;
self.var_55E4 = 1;
self.nocorpse = undefined;
self.ignoreme = 0;
self.var_180 = 0;
self.var_116D4 = undefined;
self.var_441A = undefined;
self.var_4B82 = undefined;
self.do_immediate_ragdoll = undefined;
self.var_37FD = 0;
self.var_24CA = undefined;
self.entered_playspace = 0;
self.var_B36E = undefined;
self.var_126A3 = undefined;
self.var_8C35 = 0;
self.attackent = undefined;
self.var_9342 = 1;
self.var_1B03 = "idle";
self.var_1F5 = "walk";
self.sharpturnnotifydist = 100;
self.var_257 = 15;
self.height = 40;
self.var_252B = 26 + self.var_257;
self.var_B640 = "normal";
self.var_B641 = 50;
self.var_2539 = 54;
self.var_253A = -64;
self.var_4D45 = 2250000;
self.var_181 = 1;
self.var_86BD = self getentitynumber();
self.var_BCE4 = 1;
self.var_C081 = 1;
self.var_126E8 = 1;
self.var_772A = 1;
self.var_2AB2 = 0;
self.var_2AB8 = 1;
self.var_118FC = 0;
self.var_2F = 1;
self.var_B5F9 = 40;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_565C = 0;
self.var_9BAC = 0;
self.var_54CB = 0;
self.damaged_by_player = 0;
self.var_9E0C = undefined;
self.flung = undefined;
self.var_B0FC = 1;
self.full_gib = 0;
self.var_12E = undefined;
self.var_E821 = undefined;
self.var_A8A2 = [];
self.var_8C12 = 0;
self.hasplayedvignetteanim = undefined;
self.var_9BA7 = undefined;
self.var_179 = 200;
self.deathmethod = undefined;
self.var_10A57 = undefined;
self.var_828A = undefined;
self.var_CE65 = undefined;
self.var_29D2 = 1;
self.vignette_nocorpse = undefined;
self.death_anim_no_ragdoll = undefined;
self.dont_cleanup = 1;
if(getdvarint("scr_zombie_left_foot_sharp_turn_only",0) == 1)
{
self.var_AB3F = 1;
}
}
//Function Number: 6
setupagent()
{
setupzombiegametypevars();
self.height = self.var_18F4;
self.var_257 = self.var_18F9;
self.var_9341 = 1;
self.var_B62D = 70;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_B601 = 45;
self.var_504E = 55;
self.var_129AF = 55;
self.var_368 = -60;
self.var_100 = 60;
self.ground_pound_damage = 50;
self.footstepdetectdist = 2500;
self.footstepdetectdistwalk = 2500;
self.footstepdetectdistsprint = 2500;
self.var_180 = 1;
self.ignoreme = 1;
}
//Function Number: 7
getenemy()
{
if(isdefined(self.myenemy))
{
return self.myenemy;
}
return undefined;
}
//Function Number: 8
ondamagefinished(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
param_02 = 0;
}

View File

@ -0,0 +1,55 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\crab_boss\crab_boss_tunedata.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 3
* Decompile Time: 193 ms
* Timestamp: 10/27/2023 12:11:09 AM
*******************************************************************/
//Function Number: 1
setuptunedata()
{
if(!isdefined(level.agenttunedata))
{
level.agenttunedata = [];
}
level.agenttunedata["crab_boss"] = spawnstruct();
setupmytunedata(level.agenttunedata["crab_boss"]);
}
//Function Number: 2
setupmytunedata(param_00)
{
param_00.beam_move_rate = 300;
param_00.beam_tracking_rate = 250;
param_00.beam_target_z_offset = 40;
param_00.spawn_z_offset = 200;
param_00.spawn_max_radius = 200;
param_00.spawn_launch_angle = 60;
param_00.spawn_launch_speed = 200;
param_00.spawn_interval_min = 0.1;
param_00.spawn_interval_max = 0.25;
param_00.max_spawn_over_time_count = 6;
param_00.egg_sac_spawn_fly_time = 5;
param_00.egg_sac_bomb_fly_time = 5;
param_00.egg_sac_toxic_spawn_fly_time = 3;
param_00.roar_bomb_fly_time = 2;
param_00.heal_duration = 3;
param_00.spawn_target_positions = [];
param_00.spawn_target_positions[param_00.spawn_target_positions.size] = (2570,2681,-106);
param_00.spawn_target_positions[param_00.spawn_target_positions.size] = (2760,2353,-100);
param_00.spawn_target_positions[param_00.spawn_target_positions.size] = (3493,2039,-75);
param_00.spawn_target_positions[param_00.spawn_target_positions.size] = (3072,2242,4);
param_00.spawn_target_positions[param_00.spawn_target_positions.size] = (3837,2380,68);
param_00.spawn_target_positions[param_00.spawn_target_positions.size] = (4236,2838,-71);
param_00.egg_sack_launching_tags = ["tag_egg_1","tag_egg_2","tag_egg_3","tag_egg_4","tag_egg_5","tag_egg_6","tag_egg_7","tag_egg_8","tag_egg_9","tag_egg_10","tag_egg_11","tag_egg_12","tag_egg_13","tag_egg_14","tag_egg_15","tag_egg_16","tag_egg_17","tag_egg_18","tag_egg_19","tag_egg_20","tag_egg_21","tag_egg_22","tag_egg_23","tag_egg_24","tag_egg_25","tag_egg_26","tag_egg_27","tag_egg_28","tag_egg_29","tag_egg_30"];
}
//Function Number: 3
gettunedata()
{
return level.agenttunedata["crab_boss"];
}

View File

@ -0,0 +1,322 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\crab_brute\crab_brute_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 15
* Decompile Time: 916 ms
* Timestamp: 10/27/2023 12:11:10 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
behaviortree\crab_brute::func_DEE8();
scripts\asm\crab_brute\mp\states::func_2371();
scripts\mp\agents\crab_brute\crab_brute_tunedata::setuptunedata();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["crab_brute"]["setup_func"] = ::setupagent;
level.agent_definition["crab_brute"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["crab_brute"]["on_damaged"] = ::scripts\cp\maps\cp_town\cp_town_damage::cp_town_onzombiedamaged;
if(!isdefined(level.var_8CBD))
{
level.var_8CBD = [];
}
level.var_8CBD["crab_brute"] = ::calculatecrabbruteihealth;
level.agent_funcs["crab_brute"]["gametype_on_killed"] = ::func_C4D1;
level.brute_loot_check = [];
if(!isdefined(level.damage_feedback_overrride))
{
level.damage_feedback_overrride = [];
}
level.damage_feedback_overrride["crab_brute"] = ::scripts\cp\maps\cp_town\cp_town_damage::crog_processdamagefeedback;
if(!isdefined(level.special_zombie_damage_func))
{
level.special_zombie_damage_func = [];
}
level.special_zombie_damage_func["crab_brute"] = ::crab_brute_special_damage_func;
}
//Function Number: 3
func_FACE(param_00)
{
self setmodel("zmb_brutecrab");
}
//Function Number: 4
setupzombiegametypevars()
{
self.var_4004 = undefined;
self.var_BCF6 = undefined;
self.var_26B9 = undefined;
self.var_86BD = undefined;
self.name = undefined;
self.var_EB6A = undefined;
self.var_CA5B = undefined;
self.var_13CA0 = undefined;
self.var_C2AD = undefined;
self.sessionteam = undefined;
self.sessionstate = undefined;
self.var_55E6 = undefined;
self.disabledweaponswitch = undefined;
self.var_55D9 = undefined;
self.var_55E4 = 1;
self.nocorpse = undefined;
self.ignoreme = 0;
self.var_180 = 0;
self.var_116D4 = undefined;
self.var_441A = undefined;
self.var_4B82 = undefined;
self.do_immediate_ragdoll = undefined;
self.var_37FD = 0;
self.var_24CA = undefined;
self.entered_playspace = 0;
self.var_B36E = undefined;
self.var_126A3 = undefined;
self.var_8C35 = 0;
self.attackent = undefined;
self.var_9342 = 1;
self.var_1B03 = "idle";
self.var_1F5 = "walk";
self.sharpturnnotifydist = 100;
self.var_257 = 15;
self.height = 40;
self.var_252B = 26 + self.var_257;
self.var_B640 = "normal";
self.var_B641 = 50;
self.var_2539 = 54;
self.var_253A = -64;
self.var_4D45 = 2250000;
self.var_181 = 1;
self.var_86BD = self getentitynumber();
self.var_BCE4 = 1;
self.var_C081 = 1;
self.var_126E8 = 1;
self.var_772A = 1;
self.var_2AB2 = 0;
self.var_2AB8 = 1;
self.var_118FC = 0;
self.var_2F = 1;
self.var_B5F9 = 40;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_565C = 0;
self.var_9BAC = 0;
self.var_54CB = 0;
self.damaged_by_player = 0;
self.var_9E0C = undefined;
self.flung = undefined;
self.var_B0FC = 1;
self.full_gib = 0;
self.var_12E = undefined;
self.var_E821 = undefined;
self.var_A8A2 = [];
self.var_8C12 = 0;
self.hasplayedvignetteanim = undefined;
self.var_9BA7 = undefined;
self.var_179 = 200;
self.deathmethod = undefined;
self.var_10A57 = undefined;
self.var_828A = undefined;
self.var_CE65 = undefined;
self.var_29D2 = 1;
self.vignette_nocorpse = undefined;
self.death_anim_no_ragdoll = undefined;
self.dont_cleanup = 1;
self.var_594C = 1;
self.spawn_round_num = level.wave_num;
if(getdvarint("scr_zombie_left_foot_sharp_turn_only",0) == 1)
{
self.var_AB3F = 1;
}
}
//Function Number: 5
setupagent()
{
setupzombiegametypevars();
self.height = self.var_18F4;
self.var_257 = self.var_18F9;
self.var_9341 = 1;
self.var_B62D = 70;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_B601 = 45;
self.var_504E = 55;
self.var_129AF = 55;
self.var_368 = -60;
self.var_100 = 60;
self method_84E6(45);
self.ground_pound_damage = 50;
self.footstepdetectdist = 2500;
self.footstepdetectdistwalk = 2500;
self.footstepdetectdistsprint = 2500;
self.var_180 = 1;
self method_85C9(16);
thread dopostspawnupdates();
thread listen_for_death_sfx();
}
//Function Number: 6
dopostspawnupdates()
{
wait(0.5);
self.dont_cleanup = 1;
}
//Function Number: 7
listen_for_death_sfx()
{
self waittill("death");
self playsound("brute_crog_death");
wait(1);
self playsound("brute_crog_explo");
}
//Function Number: 8
getenemy()
{
if(isdefined(self.myenemy))
{
return self.myenemy;
}
return undefined;
}
//Function Number: 9
lookatenemy()
{
var_00 = getenemy();
if(isdefined(var_00))
{
var_01 = var_00.origin - self.origin;
var_02 = vectortoangles(var_01);
self method_8289("face angle abs",var_02);
return;
}
self method_8289("face angle abs",self.angles);
}
//Function Number: 10
crab_brute_special_damage_func(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
if(lib_0A1A::func_2354("burrow_loop"))
{
return 0;
}
if(param_05 == "gas_grenade_mp")
{
return 0;
}
self.var_A96A = gettime();
if(isdefined(param_07))
{
var_0C = scripts\mp\agents\crab_brute\crab_brute_tunedata::gettunedata();
var_0D = anglestoforward(self.angles) * -1;
var_0E = vectordot(var_0D,param_07);
if(var_0E > var_0C.reduce_damage_dot)
{
param_02 = param_02 * var_0C.reduce_damage_pct;
self.armor_hit = 1;
}
}
return param_02;
}
//Function Number: 11
func_C4D1(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
if(isdefined(self.agent_type) && self.agent_type == "crab_brute")
{
param_01 scripts\cp\_merits::func_D9AD("mt_dlc3_crab_brute");
}
var_0C = scripts\common\utility::random(["ammo_max","instakill_30","cash_2","instakill_30","cash_2","instakill_30","cash_2"]);
if(isdefined(var_0C) && !isdefined(self.var_72AC))
{
if(!isdefined(level.brute_loot_check[self.spawn_round_num]))
{
level.brute_loot_check[self.spawn_round_num] = 1;
level thread scripts\cp\zombies\_powerups::drop_loot(self.origin,param_01,var_0C);
}
}
var_0D = 400;
level thread boss_death_vo();
foreach(var_0F in level.players)
{
var_0F scripts\cp\_persistence::func_82F9(var_0D);
}
}
//Function Number: 12
boss_death_vo()
{
wait(10);
if(isdefined(level.elvira_ai))
{
level thread scripts\cp\_vo::try_to_play_vo("ww_crog_defeat_elvira","rave_announcer_vo","highest",70,0,0,1);
return;
}
level thread scripts\cp\_vo::try_to_play_vo("ww_crog_defeat_generic","rave_announcer_vo","highest",70,0,0,1);
}
//Function Number: 13
calculatecrabbruteihealth()
{
return 5000 * level.players.size;
}
//Function Number: 14
shouldignoreenemy(param_00)
{
if(!isalive(param_00))
{
return 1;
}
if(param_00.ignoreme || isdefined(param_00.var_222) && param_00.var_222.ignoreme)
{
return 1;
}
if(lib_0F74::func_1002C(param_00))
{
return 1;
}
return 0;
}
//Function Number: 15
create_brute_death_fx(param_00)
{
self.var_CE65 = 1;
}

View File

@ -0,0 +1,104 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\crab_brute\crab_brute_tunedata.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 3
* Decompile Time: 195 ms
* Timestamp: 10/27/2023 12:11:11 AM
*******************************************************************/
//Function Number: 1
setuptunedata()
{
if(!isdefined(level.agenttunedata))
{
level.agenttunedata = [];
}
level.agenttunedata["crab_brute"] = spawnstruct();
setupmytunedata(level.agenttunedata["crab_brute"]);
}
//Function Number: 2
setupmytunedata(param_00)
{
param_00.min_dist_to_enemy_to_do_arrival_sq = 250000;
param_00.max_dist_to_taunt_sq = 490000;
param_00.initial_burrow_wait_time_ms = 2000;
param_00.burrow_mindist_sq = 262144;
param_00.burrow_maxdist_sq = 9000000;
param_00.max_burrow_goal_radius = 128;
param_00.min_burrow_goal_radius = 64;
param_00.min_burrow_interval_ms = 5000;
param_00.max_burrow_interval_ms = 12000;
param_00.burrow_look_ahead_time = 0.25;
param_00.burrow_path_check_interval_dist = 64;
param_00.burrow_outro_damage_wait_time = 0.5;
param_00.burrow_outro_damage_radius = 200;
param_00.burrow_outro_min_damage_amt = 35;
param_00.burrow_outro_max_damage_amt = 50;
param_00.post_burrow_charge_chance = 30;
param_00.post_burrow_taunt_chance = 20;
param_00.post_burrow_flash_chance = 0;
param_00.post_burrow_summon_chance = 20;
param_00.post_burrow_nothing_chance = 30;
param_00.charge_attack_damage_amt = 80;
param_00.charge_attack_damage_radius_sq = 2500;
param_00.charge_attack_stop_facing_enemy_dist_sq = 22500;
param_00.max_charge_time_ms = 3000;
param_00.charge_abort_dot = 0;
param_00.charge_attack_damage_dot = 0;
param_00.charge_attack_mindist_sq = 14400;
param_00.charge_attack_maxdist_sq = 122500;
param_00.charge_attack_abort_dist_sq = 202500;
param_00.max_charge_attack_interval_ms = 6000;
param_00.min_charge_attack_interval_ms = 3000;
param_00.max_tired_time_ms = 2000;
param_00.min_tired_time_ms = 1000;
param_00.need_to_block_damage_threshold = 500;
param_00.max_time_after_last_damage_to_block = 333;
param_00.block_chance = 75;
param_00.min_block_time = 3000;
param_00.max_block_time = 6000;
param_00.quit_block_if_no_damage_time = 1000;
param_00.min_block_interval = 10000;
param_00.max_block_interval = 15000;
param_00.reduce_damage_dot = 0.25;
param_00.reduce_damage_pct = 0.15;
param_00.shield_reduce_damage_pct = 0;
param_00.shield_damage_dot = 0.25;
param_00.shields_up_duration_ms = 1000;
param_00.flash_chance = 80;
param_00.flash_radius_sq = 1000000;
param_00.flash_dot = 0.5;
param_00.flash_duration = 2.5;
param_00.flash_rumble_duration = 1;
param_00.flash_min_dist_to_enemy_to_attempt_sq = 16384;
param_00.min_initial_flash_wait_time_ms = 3000;
param_00.max_initial_flash_wait_time_ms = 10000;
param_00.flash_min_interval_ms = 8000;
param_00.flash_max_interval_ms = 12000;
param_00.flash_min_time_after_summon_ms = 8000;
param_00.min_moving_pain_dist = 128;
param_00.summon_chance = 60;
param_00.summon_max_radius = 1000;
param_00.summon_min_radius = 500;
param_00.summon_spawn_min_dist_between_agents_sq = 2500;
param_00.summon_min_spawn_num_per_player = 1;
param_00.summon_max_spawn_num_per_player = 2;
param_00.summon_min_dist_to_enemy_to_attempt_sq = 65536;
param_00.summon_min_interval_ms = 15000;
param_00.summon_max_interval_ms = 20000;
param_00.max_allowed_minis_to_allow_new_summon = 0;
param_00.min_initial_summon_wait_time_ms = 5000;
param_00.max_initial_summon_wait_time_ms = 15000;
param_00.summon_min_time_after_flash_ms = 5000;
param_00.melee_max_z_diff = 60;
}
//Function Number: 3
gettunedata()
{
return level.agenttunedata["crab_brute"];
}

View File

@ -0,0 +1,347 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\crab_mini\crab_mini_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 15
* Decompile Time: 793 ms
* Timestamp: 10/27/2023 12:11:12 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
scripts\mp\agents\crab_mini\crab_mini_tunedata::setuptunedata();
lib_0A02::init();
behaviortree\crab_mini::func_DEE8();
scripts\asm\crab_mini\mp\states::func_2371();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["crab_mini"]["setup_func"] = ::setupagent;
level.agent_definition["crab_mini"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["crab_mini"]["on_damaged"] = ::scripts\cp\maps\cp_town\cp_town_damage::cp_town_onzombiedamaged;
level.agent_funcs["crab_mini"]["gametype_on_damage_finished"] = ::lib_0CBC::func_C5CE;
level.agent_funcs["crab_mini"]["gametype_on_killed"] = ::scripts\cp\maps\cp_town\cp_town_damage::cp_town_onzombiekilled;
level.agent_funcs["crab_mini"]["on_damaged_finished"] = ::scripts\mp\agents\zombie\zmb_zombie_agent::func_C5CE;
level.agent_funcs["crab_mini"]["on_killed"] = ::onkilled;
if(!isdefined(level.var_8CBD))
{
level.var_8CBD = [];
}
level.var_8CBD["crab_mini"] = ::calculatecrabminihealth;
if(!isdefined(level.damage_feedback_overrride))
{
level.damage_feedback_overrride = [];
}
level.damage_feedback_overrride["crab_mini"] = ::scripts\cp\maps\cp_town\cp_town_damage::crog_processdamagefeedback;
if(!isdefined(level.special_zombie_damage_func))
{
level.special_zombie_damage_func = [];
}
level.special_zombie_damage_func["crab_mini"] = ::crab_mini_special_damage_func;
}
//Function Number: 3
func_FACE(param_00)
{
self setmodel("zmb_minicrab");
}
//Function Number: 4
setupzombiegametypevars()
{
self.var_4004 = undefined;
self.var_BCF6 = undefined;
self.var_26B9 = undefined;
self.var_86BD = undefined;
self.name = undefined;
self.var_EB6A = undefined;
self.var_CA5B = undefined;
self.var_13CA0 = undefined;
self.var_C2AD = undefined;
self.sessionteam = undefined;
self.sessionstate = undefined;
self.var_55E6 = undefined;
self.disabledweaponswitch = undefined;
self.var_55D9 = undefined;
self.var_55E4 = 1;
self.nocorpse = undefined;
self.ignoreme = 0;
self.var_180 = 0;
self.var_116D4 = undefined;
self.var_441A = undefined;
self.var_4B82 = undefined;
self.do_immediate_ragdoll = undefined;
self.var_37FD = 0;
self.var_24CA = undefined;
self.entered_playspace = 0;
self.var_B36E = undefined;
self.var_126A3 = undefined;
self.var_8C35 = 0;
self.attackent = undefined;
self.var_9342 = 1;
self.var_1B03 = "idle";
self.var_1F5 = "walk";
self.sharpturnnotifydist = 100;
self.var_257 = 15;
self.height = 40;
self.var_252B = 26 + self.var_257;
self.var_B640 = "normal";
self.var_B641 = 50;
self.var_2539 = 54;
self.var_253A = -64;
self.var_4D45 = 2250000;
self.var_181 = 1;
self.var_86BD = self getentitynumber();
self.var_BCE4 = 1;
self.var_C081 = 1;
self.var_126E8 = 1;
self.var_772A = 1;
self.var_2AB2 = 0;
self.var_2AB8 = 1;
self.var_118FC = 0;
self.var_2F = 1;
self.var_B5F9 = 40;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_565C = 0;
self.var_9BAC = 0;
self.var_54CB = 0;
self.damaged_by_player = 0;
self.var_9E0C = undefined;
self.flung = undefined;
self.var_B0FC = 1;
self.full_gib = 0;
self.var_12E = undefined;
self.var_E821 = undefined;
self.var_A8A2 = [];
self.var_8C12 = 0;
self.hasplayedvignetteanim = undefined;
self.var_9BA7 = undefined;
self.var_179 = 200;
self.deathmethod = undefined;
self.var_10A57 = undefined;
self.var_828A = undefined;
self.var_CE65 = undefined;
self.var_29D2 = 1;
self.vignette_nocorpse = undefined;
self.death_anim_no_ragdoll = undefined;
self.dont_cleanup = 1;
self.allowpain = 0;
self method_84E6(45);
if(getdvarint("scr_zombie_left_foot_sharp_turn_only",0) == 1)
{
self.var_AB3F = 1;
}
}
//Function Number: 5
setupagent()
{
setupzombiegametypevars();
thread scripts\mp\agents\zombie\zmb_zombie_agent::func_12EE6();
self.height = self.var_18F4;
self.var_257 = self.var_18F9;
self.var_B62D = 70;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_B601 = 45;
self.var_504E = 55;
self.var_129AF = 55;
self.var_368 = -60;
self.var_100 = 60;
self.ground_pound_damage = 50;
self.footstepdetectdist = 2500;
self.footstepdetectdistwalk = 2500;
self.footstepdetectdistsprint = 2500;
self.var_180 = 1;
self.dontmutilate = 1;
}
//Function Number: 6
getenemy()
{
if(isdefined(self.myenemy))
{
return self.myenemy;
}
return undefined;
}
//Function Number: 7
lookatenemy()
{
var_00 = getenemy();
if(isdefined(var_00))
{
var_01 = var_00.origin - self.origin;
var_02 = vectortoangles(var_01);
self method_8289("face angle abs",var_02);
return;
}
self method_8289("face angle abs",self.angles);
}
//Function Number: 8
calculatecrabminihealth()
{
var_00 = 200;
switch(level.var_1096B)
{
case 0:
var_00 = 300;
break;
case 1:
var_00 = 450;
break;
case 2:
var_00 = 450;
break;
case 3:
var_00 = 600;
break;
default:
var_00 = 600;
break;
}
return var_00;
}
//Function Number: 9
create_sludge_pool(param_00)
{
self.var_CE65 = 1;
if(!isdefined(level.goo_pool_ent_array))
{
level.goo_pool_ent_array = [];
}
var_01 = 2500;
foreach(var_03 in level.goo_pool_ent_array)
{
if(!isdefined(var_03))
{
continue;
}
if(distancesquared(param_00,var_03.origin) < var_01)
{
var_03.var_AC75 = gettime() + 10000;
return;
}
}
var_05 = spawn("script_model",param_00);
var_05 setmodel("tag_origin_crab_goo");
level.goo_pool_ent_array[level.goo_pool_ent_array.size] = var_05;
var_05 setscriptablepartstate("blood_pool","active");
var_05 thread run_sludge_pool_damage_func();
}
//Function Number: 10
run_sludge_pool_damage_func()
{
self endon("death");
var_00 = 2500;
self.var_AC75 = gettime() + 10000;
while(self.var_AC75 > gettime())
{
foreach(var_02 in level.players)
{
if(distancesquared(self.origin,var_02.origin) < var_00)
{
var_03 = gettime();
if(!isdefined(var_02.last_crab_sludge_time) || var_02.last_crab_sludge_time + 1000 < var_03)
{
var_02 dodamage(20,self.origin,self,self,"MOD_UNKNOWN");
var_02.last_crab_sludge_time = gettime();
}
}
}
wait(0.05);
}
self delete();
}
//Function Number: 11
setisstuck(param_00)
{
self.bisstuck = param_00;
}
//Function Number: 12
iscrabministuck()
{
return isdefined(self.bisstuck) && self.bisstuck;
}
//Function Number: 13
crab_mini_special_damage_func(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
if(isdefined(level.var_9925) && level.var_9925)
{
return self.health;
}
if(isdefined(param_05) && param_05 == "iw7_knife_zm_cleaver")
{
return self.health;
}
if(isdefined(param_07))
{
var_0C = scripts\mp\agents\crab_mini\crab_mini_tunedata::gettunedata();
var_0D = anglestoforward(self.angles) * -1;
var_0E = vectordot(var_0D,param_07);
if(var_0E > var_0C.reduce_damage_dot)
{
param_02 = param_02 * var_0C.reduce_damage_pct;
self.armor_hit = 1;
}
}
return param_02;
}
//Function Number: 14
onkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
thread play_death_sfx(1);
return scripts\mp\agents\zombie\zmb_zombie_agent::func_C5D2(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}
//Function Number: 15
play_death_sfx(param_00)
{
playsoundatpos(self.origin,"minion_crog_pre_explo");
wait(param_00);
playsoundatpos(self.origin,"minion_crog_explode");
}

View File

@ -0,0 +1,54 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\crab_mini\crab_mini_tunedata.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 3
* Decompile Time: 194 ms
* Timestamp: 10/27/2023 12:11:12 AM
*******************************************************************/
//Function Number: 1
setuptunedata()
{
if(!isdefined(level.agenttunedata))
{
level.agenttunedata = [];
}
level.agenttunedata["crab_mini"] = spawnstruct();
setupmytunedata(level.agenttunedata["crab_mini"]);
}
//Function Number: 2
setupmytunedata(param_00)
{
param_00.melee_max_flex_xy_scale = 2.5;
param_00.melee_xy_scale_boost = 0.5;
param_00.non_predicted_move_melee_dist_sq = 6724;
param_00.check_reachable_dist_sq = 4096;
param_00.moving_melee_attack_damage_radius_sq = 1600;
param_00.melee_attack_damage_radius_sq = 9216;
param_00.melee_dot = 0.867;
param_00.stand_melee_dist_sq = 4096;
param_00.stand_melee_attack_dot = 0.707;
param_00.move_melee_dist_sq = 16384;
param_00.chance_to_get_stuck_if_hit = 0;
param_00.chance_to_get_stuck_if_miss = 100;
param_00.stuck_min_time_ms = 1000;
param_00.stuck_max_time_ms = 2000;
param_00.min_dist_to_enemy_to_allow_turn_sq = -25536;
param_00.max_dist_to_enemy_to_allow_turn_sq = 1048576;
param_00.min_stop_facing_enemy_time_before_hit = 0.3;
param_00.max_stop_facing_enemy_time_before_hit = 0.4;
param_00.melee_max_z_diff = 60;
param_00.avg_time_to_impact = 0.5;
param_00.reduce_damage_dot = 0.25;
param_00.reduce_damage_pct = 0.15;
}
//Function Number: 3
gettunedata()
{
return level.agenttunedata["crab_mini"];
}

View File

@ -0,0 +1,233 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\dlc4_boss\dlc4_boss_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 8
* Decompile Time: 457 ms
* Timestamp: 10/27/2023 12:11:13 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
behaviortree\dlc4_boss::func_DEE8();
scripts\asm\dlc4_boss\mp\states::func_2371();
scripts\mp\agents\dlc4_boss\dlc4_boss_tunedata::setuptunedata();
func_AEB0();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["dlc4_boss"]["setup_func"] = ::setupagent;
level.agent_definition["dlc4_boss"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["dlc4_boss"]["on_damaged"] = ::func_C4E0;
level.agent_funcs["dlc4_boss"]["on_damaged_finished"] = ::ondamagefinished;
}
//Function Number: 3
func_FACE(param_00)
{
self setmodel("zmb_mephistopheles");
}
//Function Number: 4
func_AEB0()
{
}
//Function Number: 5
setupzombiegametypevars()
{
self.var_4004 = undefined;
self.var_BCF6 = undefined;
self.var_26B9 = undefined;
self.var_86BD = undefined;
self.name = undefined;
self.var_EB6A = undefined;
self.var_CA5B = undefined;
self.var_13CA0 = undefined;
self.var_C2AD = undefined;
self.sessionteam = undefined;
self.sessionstate = undefined;
self.var_55E6 = undefined;
self.disabledweaponswitch = undefined;
self.var_55D9 = undefined;
self.var_55E4 = 1;
self.nocorpse = undefined;
self.ignoreme = 0;
self.var_180 = 0;
self.var_116D4 = undefined;
self.var_441A = undefined;
self.var_4B82 = undefined;
self.do_immediate_ragdoll = undefined;
self.var_37FD = 0;
self.var_24CA = undefined;
self.entered_playspace = 0;
self.var_B36E = undefined;
self.var_126A3 = undefined;
self.var_8C35 = 0;
self.attackent = undefined;
self.var_9342 = 1;
self.var_1B03 = "idle";
self.var_1F5 = "walk";
self.sharpturnnotifydist = 100;
self.var_257 = 15;
self.height = 40;
self.var_252B = 26 + self.var_257;
self.var_B640 = "normal";
self.var_B641 = 50;
self.var_2539 = 54;
self.var_253A = -64;
self.var_4D45 = 2250000;
self.var_181 = 1;
self.var_86BD = self getentitynumber();
self.var_BCE4 = 1;
self.var_C081 = 1;
self.var_126E8 = 1;
self.var_772A = 1;
self.var_2AB2 = 0;
self.var_2AB8 = 1;
self.var_118FC = 0;
self.var_2F = 1;
self.var_B5F9 = 40;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_565C = 0;
self.var_9BAC = 0;
self.var_54CB = 0;
self.damaged_by_player = 0;
self.var_9E0C = undefined;
self.flung = undefined;
self.var_B0FC = 1;
self.full_gib = 0;
self.var_12E = undefined;
self.var_E821 = undefined;
self.var_A8A2 = [];
self.var_8C12 = 0;
self.hasplayedvignetteanim = undefined;
self.var_9BA7 = undefined;
self.var_179 = 200;
self.deathmethod = undefined;
self.var_10A57 = undefined;
self.var_828A = undefined;
self.var_CE65 = undefined;
self.var_29D2 = 1;
self.vignette_nocorpse = undefined;
self.death_anim_no_ragdoll = undefined;
self.dont_cleanup = 1;
if(getdvarint("scr_zombie_left_foot_sharp_turn_only",0) == 1)
{
self.var_AB3F = 1;
}
}
//Function Number: 6
setupagent()
{
setupzombiegametypevars();
self.height = self.var_18F4;
self.var_257 = self.var_18F9;
self.var_9341 = 1;
self.var_B62D = 70;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_B601 = 45;
self.var_504E = 55;
self.var_129AF = 55;
self.var_368 = -60;
self.var_100 = 60;
self.var_180 = 1;
self method_828A("noclip");
}
//Function Number: 7
func_C4E0(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
var_0C = scripts\asm\dlc4\dlc4_asm::gettunedata();
if(param_05 == var_0C.entangler_weapon_name)
{
param_02 = 0;
}
if(!isdefined(param_01) || !isplayer(param_01))
{
param_02 = 0;
}
[[ level.agent_funcs["dlc4_boss"]["on_damaged_finished"] ]](param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,0,param_0A,param_0B);
}
//Function Number: 8
ondamagefinished(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
if(param_02 == 0)
{
return;
}
self.health = 999999;
var_0D = 0;
if(self.showblood || var_0D)
{
self method_80E9(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C);
}
if(self.var_FCA5 && !var_0D)
{
if(isdefined(param_06) && isdefined(param_07))
{
playfx(level._effect["boss_shield_hit"],param_06,param_07 * -150);
}
}
if(!self.cantakedamage)
{
return;
}
if(isplayer(param_01))
{
param_01 thread scripts\cp\_damage::func_12EA8("high_damage_cp");
}
var_0E = scripts\asm\dlc4\dlc4_asm::gettunedata();
if(level.fbd.bossstate == "FRENZIED")
{
self.frenziedhealth = self.frenziedhealth - min(param_02,self.damagecap);
self.damagecap = max(self.damagecap - param_02,0);
if(self.frenziedhealth <= 0)
{
if(!self.interruptable)
{
self.frenziedhealth = 1;
return;
}
return;
}
return;
}
if(level.fbd.bossstate == "LAST_STAND")
{
self.laststandhealth = self.laststandhealth - min(param_02,self.damagecap);
self.damagecap = max(self.damagecap - param_02,0);
}
}

View File

@ -0,0 +1,272 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\dlc4_boss\dlc4_boss_tunedata.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 6
* Decompile Time: 364 ms
* Timestamp: 10/27/2023 12:11:14 AM
*******************************************************************/
//Function Number: 1
setuptunedata()
{
if(!isdefined(level.agenttunedata))
{
level.agenttunedata = [];
}
level.agenttunedata["dlc4_boss"] = spawnstruct();
setupmytunedata(level.agenttunedata["dlc4_boss"]);
setupfighttunedata(level.agenttunedata["dlc4_boss"]);
setupfightweighttunedata(level.agenttunedata["dlc4_boss"]);
setupspecialwavetunedata(level.agenttunedata["dlc4_boss"]);
setupfrenziedtunedata(level.agenttunedata["dlc4_boss"]);
}
//Function Number: 2
setupmytunedata(param_00)
{
param_00.fireball_weight = 3;
param_00.clap_weight = 0;
param_00.throw_weight = 0;
param_00.tornado_weight = 0;
param_00.summon_weight = 1;
param_00.move_left_weight = 0.25;
param_00.move_right_weight = 0.25;
param_00.move_fireball_left_weight = 2;
param_00.move_fireball_right_weight = 2;
param_00.idle_weight = 0.5;
param_00.air_pound_weight = 0.8;
param_00.drop_move_weight = 0.75;
param_00.fly_over_weight = 0.7;
param_00.ground_vul_weight = 0;
param_00.black_hole_weight = 0.7;
param_00.eclipse_weight = 0.7;
param_00.ground_pound_weight = 0;
param_00.move_clap_left_weight = 0;
param_00.move_clap_right_weight = 0;
param_00.teleport_weight = 0;
param_00.fireball_cooldown_time = 4000;
param_00.clap_cooldown_time = -25536;
param_00.throw_cooldown_time = 20000;
param_00.tornado_cooldown_time = 20000;
param_00.summon_cooldown_time = 20000;
param_00.move_left_cooldown_time = 6000;
param_00.move_right_cooldown_time = 6000;
param_00.move_fireball_left_cooldown_time = 6000;
param_00.move_fireball_right_cooldown_time = 6000;
param_00.air_pound_cooldown_time = 20000;
param_00.drop_move_cooldown_time = 15000;
param_00.temp_idle_cooldown_time = 5000;
param_00.fly_over_cooldown_time = 20000;
param_00.black_hole_cooldown_time = 30000;
param_00.eclipse_cooldown_time = 0;
param_00.ground_vul_cooldown_time = 0;
param_00.passive_cooldown = 7000;
param_00.special_cooldown = 10000;
param_00.min_burst_count = 3;
param_00.max_burst_count = 5;
param_00.sawblade_min_offset = -30;
param_00.sawblade_max_offset = 30;
param_00.sawblade_burst_interval = 0.3;
param_00.sawblade_weapon = "iw7_demon_fireball_mp";
param_00.chance_to_target_charger = 0.7;
param_00.throw_weapon = "iw7_demon_throw_mp";
param_00.throw_offset = (0,0,500);
param_00.throw_distance = 2000;
param_00.throw_fidelity = 5;
param_00.throw_starting_pitch = 10;
param_00.throw_side_yaw = 10;
param_00.throw_meteor_radius = 130;
param_00.clap_duration = 10000;
param_00.staff_projectile_min_dist_sq = -25536;
param_00.staff_projectile_max_dist_sq = 262144;
param_00.staff_projectile_z_delta = 60;
param_00.staff_projectile_speed = 1000;
param_00.staff_projectile_range = 1000;
param_00.staff_projectile_damage = 300;
param_00.staff_projectile_interval = 0.1;
param_00.ratking_staff_projectile_model = "tag_origin_staff_proj";
param_00.summon_agent_type = "skeleton";
param_00.summon_min_spawn_num = [];
param_00.summon_max_spawn_num = [];
param_00.summon_min_spawn_num["1"] = 6;
param_00.summon_max_spawn_num["1"] = 10;
param_00.summon_min_spawn_num["2"] = 8;
param_00.summon_max_spawn_num["2"] = 13;
param_00.summon_min_spawn_num["3"] = 8;
param_00.summon_max_spawn_num["3"] = 13;
param_00.summon_min_spawn_num["4"] = 10;
param_00.summon_max_spawn_num["4"] = 15;
param_00.summon_max_total = [];
param_00.summon_max_total["1"] = 10;
param_00.summon_max_total["2"] = 13;
param_00.summon_max_total["3"] = 15;
param_00.summon_max_total["4"] = 17;
param_00.summon_min_radius = 100;
param_00.summon_max_radius = 450;
param_00.summon_min_dist_from_player = 200;
param_00.summon_min_zombies_before_active = 12;
param_00.skeleton_health = 8500;
param_00.automatic_spawn_time = 3000;
param_00.automatic_spawn_cap = 2;
param_00.min_idle_time = 500;
param_00.max_idle_time = 3000;
param_00.min_move_nodes = 2;
param_00.max_move_nodes = 5;
param_00.look_ahead_speed = 20;
param_00.look_ahead_radius = 200;
param_00.strafe_move_nodes = 4;
param_00.ground_vul_time = 8000;
param_00.ground_pound_radius = 300;
param_00.ground_pound_min_damage = 95;
param_00.ground_pound_max_damage = 300;
param_00.zombies_per_person = 0;
param_00.zombies_summon_radius = 200;
param_00.drop_down_time = 1000;
param_00.fly_over_nodes_travelled = 7;
param_00.persistent_fire_damage = 50;
param_00.persistent_fire_rate = 0.1;
param_00.fly_over_speed = 1.5;
param_00.ss_groundpound_radius = 500;
param_00.ss_groundpound_min_damage = 95;
param_00.ss_groundpound_max_damage = 500;
param_00.air_pound_rise_fx = level._effect["vfx_demon_spawn"];
param_00.air_pound_pound_fx = level._effect["demon_pound_slam_lrg"];
param_00.air_pound_pound_sfx = "rocket_explode_energy";
param_00.air_pound_pound_rumble_scale = 0.45;
param_00.air_pound_pound_rumble_duration = 3;
param_00.air_pound_pound_rumble_radius = 750;
param_00.air_pound_rise_rumble_scale = 0.35;
param_00.air_pound_rise_rumble_duration = 3;
param_00.air_pound_rise_rumble_radius = 750;
param_00.black_hole_duration = 5000;
param_00.var_2174 = 15000;
param_00.safe_zone_radius = 300;
param_00.meteor_min_period = 0.1;
param_00.meteor_max_period = 0.5;
param_00.meteor_period_stage_decay = 0.85;
param_00.meteor_target_radius = 1000;
param_00.eclipse_duration = 180000;
}
//Function Number: 3
setupfighttunedata(param_00)
{
param_00.max_soul_health = 4;
param_00.section_complete_notify = "SECTION_COMPLETE_NOTIFY";
param_00.weak_spot_model = "zmb_superslasher_weak_spot";
param_00.weak_spot_health = 12500;
param_00.min_health_percent = 0.15;
param_00.var_3CCC = 30000;
param_00.charge_rate = 1 / param_00.var_3CCC;
param_00.decharge_time = 10000;
param_00.decharge_rate = 1 / param_00.decharge_time;
param_00.buffer_time_solo = 6000;
param_00.buffer_time_coop = 4000;
param_00.var_1649 = 180000;
param_00.stolen_ghost_model = "zombie_ghost_cube_blue";
param_00.zombie_ghost_model = "dlc4_boss_soul";
param_00.fake_ghost_model = "fake_dlc4_boss_soul";
param_00.num_souls_released = 6;
param_00.soul_max_distance_from_arena = 5000;
param_00.soul_explosion_radius = 70;
param_00.boss_mid_height = 150;
param_00.boss_mid_offset = 0;
param_00.soul_mid_height = 12;
param_00.soul_health_depleted_notify = "SOUL_HEALTH_DEPLETED";
param_00.soul_respawn_time = 2000;
param_00.soul_lifetime = 2000;
param_00.entangler_weapon_name = "iw7_entangler_zm";
param_00.entangler_stop_notify = "stop_using_entangler";
param_00.entangler_hit_same_target_notify = "entangler_hit_same_target";
param_00.entangler_track_update_frequency = 0.2;
param_00.entangler_recharge_rate = 0.5;
param_00.entangler_track_time = 0.5;
}
//Function Number: 4
setupfightweighttunedata(param_00)
{
param_00.move_base_weight = 3;
param_00.move_stage_multiplier = -0.15;
param_00.idle_base_weight = 1;
param_00.idle_stage_multiplier = 0;
param_00.drop_move_base_weight = 0.5;
param_00.drop_move_stage_multiplier = 0;
param_00.fireball_base_weight = 1.8;
param_00.fireball_stage_multiplier = 0.15;
param_00.move_fireball_base_weight = 1.8;
param_00.move_fireball_stage_multiplier = 0.15;
param_00.black_hole_base_weight = 0.5;
param_00.black_hole_stage_multiplier = 0.2;
param_00.black_hole_charge_multiplier = 0.5;
param_00.fly_over_base_weight = 0.6;
param_00.fly_over_stage_multiplier = 0.2;
param_00.summon_base_weight = 50;
param_00.summon_stage_multiplier = 0;
param_00.special_base_weight = 2.2;
param_00.special_stage_multiplier = 0.1;
}
//Function Number: 5
setupspecialwavetunedata(param_00)
{
param_00.base_spawn_interval = 2;
param_00.spawn_interval_decay = 0.9;
param_00.specialwavesdata = [];
param_00.specialwavesdata["BASIC_1"] = 15;
param_00.specialwavesdata["PHANTOM_1"] = 4;
param_00.specialwavesdata["SPECIAL_1"] = ["zombie_clown","zombie_clown","zombie_clown","zombie_clown","zombie_clown","zombie_clown"];
param_00.specialwavesdata["BASIC_2"] = 18;
param_00.specialwavesdata["PHANTOM_2"] = 6;
param_00.specialwavesdata["SPECIAL_2"] = ["slasher"];
param_00.specialwavesdata["BASIC_3"] = 21;
param_00.specialwavesdata["PHANTOM_3"] = 7;
param_00.specialwavesdata["SPECIAL_3"] = ["karatemaster","karatemaster","karatemaster","karatemaster"];
param_00.specialwavesdata["BASIC_4"] = 24;
param_00.specialwavesdata["PHANTOM_4"] = 8;
param_00.specialwavesdata["SPECIAL_4"] = ["alien_rhino","alien_rhino"];
}
//Function Number: 6
setupfrenziedtunedata(param_00)
{
param_00.frenzied_health = 250000;
param_00.last_stand_health = 20000;
param_00.frenzied_damage_cap = 1500;
param_00.frenzied_damage_cap_wave_increase = 1500;
param_00.frenzied_damage_cap_time = 0.5;
param_00.last_stand_time = 15000;
param_00.last_stand_victory_min_time = 8000;
param_00.frenzied_blink_chance = 0.05;
param_00.frenzied_move_weight = 0;
param_00.frenzied_idle_weight = 0;
param_00.frenzied_drop_move_weight = 0;
param_00.frenzied_fireball_weight = 1.5;
param_00.frenzied_move_fireball_weight = 2.5;
param_00.frenzied_black_hole_weight = 0.5;
param_00.frenzied_fly_over_weight = 0.7;
param_00.frenzied_summon_weight = 0;
param_00.frenzied_special_weight = 1.1;
param_00.frenzied_summon_min_interval = 0.5;
param_00.frenzied_summon_max_interval = 1;
param_00.frenzied_summon_wave_period = -20536;
param_00.frenzied_summon_number = 8;
param_00.frenzied_summon_increase_per_wave = 2;
param_00.frenzied_summon_start_wave = 4;
param_00.frenzied_summon_agents = ["skeleton","alien_goon","alien_phantom","zombie_clown","karatemaster","slasher","alien_rhino"];
param_00.frenzied_summon_data = [];
param_00.frenzied_summon_data["skeleton"] = [10,2];
param_00.frenzied_summon_data["alien_goon"] = [10,2];
param_00.frenzied_summon_data["zombie_clown"] = [6,4];
param_00.frenzied_summon_data["alien_phantom"] = [6,7];
param_00.frenzied_summon_data["karatemaster"] = [5,10];
param_00.frenzied_summon_data["alien_rhino"] = [5,35];
param_00.frenzied_summon_data["slasher"] = [5,60];
param_00.frenzied_meteor_min_period = 0.5;
param_00.frenzied_meteor_max_period = 1;
param_00.frenzied_meteor_target_radius = 1200;
param_00.frenzied_meteor_target_min_radius = 800;
}

View File

@ -0,0 +1,271 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\elvira\elvira_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 16
* Decompile Time: 854 ms
* Timestamp: 10/27/2023 12:11:15 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
behaviortree\elvira::func_DEE8();
scripts\asm\elvira\mp\states::func_2371();
scripts\mp\agents\elvira\elvira_tunedata::setuptunedata();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
if(!isdefined(level.var_10970))
{
level.var_10970 = [];
}
level.var_10970["elvira"] = [];
level.agent_definition["elvira"]["setup_func"] = ::setupagent;
level.agent_definition["elvira"]["setup_model_func"] = ::func_FACE;
}
//Function Number: 3
func_FACE(param_00)
{
self setmodel("fullbody_zmb_hero_elvira");
}
//Function Number: 4
setupagent()
{
self.accuracy = 0.8;
self.noattackeraccuracymod = 0;
self.sharpturnnotifydist = 48;
self.last_enemy_sight_time = 0;
self.maxsightdistsqrd = 67108864;
self.meleerangesq = 9216;
self.meleechargedist = 45;
self.meleechargedistvsplayer = 45;
self.meleechargedistreloadmultiplier = 1.2;
self.maxzdiff = 50;
self.meleeactorboundsradius = 32;
self.meleemindamage = 300;
self.meleemaxdamage = 450;
self.footstepdetectdist = 1000;
self.footstepdetectdistwalk = 1000;
self.footstepdetectdistsprint = 1000;
self.var_1A44 = 50;
self.var_B62D = 70;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_B607 = 0.5;
self.var_B601 = 9999;
self.var_129AF = 55;
self.var_257 = 15;
self.height = 65;
self.allowpain = 0;
func_FAFE();
thread func_899D();
level.the_hoff_revive = 1;
thread elviracleanup();
}
//Function Number: 5
elviracleanup()
{
self waittill("death");
level.the_hoff_revive = undefined;
}
//Function Number: 6
func_FAFE()
{
self.targetcrawlerfunction = ::func_11562;
self.targetingfunctions = [::func_11562,::func_11559,::func_1156F,::func_1157B,::func_11570];
self.targetingfunctionchances = [0,47,21,21,11];
}
//Function Number: 7
func_899D()
{
self endon("death");
for(;;)
{
self waittill("enemy");
for(;;)
{
if(isdefined(self.var_10C))
{
self.var_6571 = gettime() + 1000;
}
else if(isdefined(self.var_6571))
{
if(gettime() > self.var_6571)
{
self.var_6571 = undefined;
break;
}
}
wait(0.25);
}
}
}
//Function Number: 8
func_11570()
{
var_00 = 70;
var_01 = 15;
if(isdefined(self.var_10C.var_18F4))
{
var_00 = self.var_10C.var_18F4;
var_01 = self.var_10C.var_18F9;
}
var_02 = var_00 * randomfloatrange(0.25,0.35);
var_03 = var_01 * 0.5;
var_04 = var_03 * -1;
var_05 = randomfloatrange(var_04,var_03);
var_06 = anglestoright(self.angles);
var_07 = (var_06[0] * var_05,var_06[1] * var_05,var_02);
var_08 = self.var_10C.origin + var_07;
return var_08;
}
//Function Number: 9
func_1157B()
{
var_00 = 70;
var_01 = 15;
if(isdefined(self.var_10C.var_18F4))
{
var_00 = self.var_10C.var_18F4;
var_01 = self.var_10C.var_18F9;
}
var_02 = var_00 * randomfloatrange(0.65,0.75);
var_03 = var_01 * 0.75;
var_04 = anglestoright(self.angles);
var_05 = (var_04[0] * var_03,var_04[1] * var_03,var_02);
var_06 = self.var_10C.origin + var_05;
return var_06;
}
//Function Number: 10
func_1156F()
{
var_00 = 70;
var_01 = 15;
if(isdefined(self.var_10C.var_18F4))
{
var_00 = self.var_10C.var_18F4;
var_01 = self.var_10C.var_18F9;
}
var_02 = var_00 * randomfloatrange(0.65,0.75);
var_03 = var_01 * -0.75;
var_04 = anglestoright(self.angles);
var_05 = (var_04[0] * var_03,var_04[1] * var_03,var_02);
var_06 = self.var_10C.origin + var_05;
return var_06;
}
//Function Number: 11
func_11559()
{
var_00 = 70;
var_01 = 15;
if(isdefined(self.var_10C.var_18F4))
{
var_00 = self.var_10C.var_18F4;
var_01 = self.var_10C.var_18F9;
}
var_02 = var_00 * randomfloatrange(0.65,0.75);
var_03 = var_01 * 0.5;
var_04 = var_03 * -1;
var_05 = randomfloatrange(var_04,var_03);
var_06 = anglestoright(self.angles);
var_07 = (var_06[0] * var_05,var_06[1] * var_05,var_02);
var_08 = self.var_10C.origin + var_07;
return var_08;
}
//Function Number: 12
func_11562()
{
var_00 = self.var_10C gettagorigin("j_head");
return var_00;
}
//Function Number: 13
func_CB30()
{
if(isdefined(self.var_10C) && isdefined(self.var_10C.var_565C) && self.var_10C.var_565C)
{
if(isdefined(self.targetcrawlerfunction))
{
return self.targetcrawlerfunction;
}
}
var_00 = 0;
var_01 = randomint(100);
for(var_02 = 0;var_02 < self.targetingfunctionchances.size;var_02++)
{
var_03 = self.targetingfunctionchances[var_02];
if(var_01 < var_03 + var_00)
{
return self.targetingfunctions[var_02];
}
var_00 = var_00 + var_03;
}
return undefined;
}
//Function Number: 14
func_7E8E()
{
var_00 = self.var_10C gettagorigin("j_head");
return var_00;
}
//Function Number: 15
func_7E66()
{
if(scripts\common\utility::istrue(self.var_565C))
{
return func_7E8E();
}
var_00 = 70;
var_01 = 15;
if(isdefined(self.var_10C.var_18F4))
{
var_00 = self.var_10C.var_18F4;
var_01 = self.var_10C.var_18F9;
}
var_02 = var_00 * 0.75;
var_03 = (0,0,var_02);
var_04 = self.var_10C.origin + var_03;
return var_04;
}
//Function Number: 16
getenemy()
{
return self.var_10C;
}

View File

@ -0,0 +1,61 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\elvira\elvira_tunedata.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 3
* Decompile Time: 195 ms
* Timestamp: 10/27/2023 12:11:15 AM
*******************************************************************/
//Function Number: 1
setuptunedata()
{
if(!isdefined(level.agenttunedata))
{
level.agenttunedata = [];
}
level.agenttunedata["elvira"] = spawnstruct();
setupmytunedata(level.agenttunedata["elvira"]);
}
//Function Number: 2
setupmytunedata(param_00)
{
param_00.revive_right_offset = 32;
param_00.revive_forward_offset = 60;
param_00.max_revive_snapp_2d_dist_sq = 64;
param_00.max_revive_snap_z_dist = 32;
param_00.max_revive_search_dist_sq = 2250000;
param_00.revive_wait_time = 2;
param_00.min_time_between_revivals = 5000;
param_00.min_time_between_revivals_solo = 10000;
param_00.max_dist_to_revive_player_sq = 10000;
param_00.melee_max_z_diff = 60;
param_00.melee_attack_range_sq = 30625;
param_00.desiredenemydistmax = 500;
param_00.desiredenemydistmin = 400;
param_00.maxtimetostrafewithoutlos = 3000;
param_00.strafeifwithindist = param_00.desiredenemydistmax + 100;
param_00.var_272A = param_00.desiredenemydistmin - 100;
param_00.backupdist = 100;
param_00.max_dist_from_closest_player_in_combat_sq = 250000;
param_00.max_dist_from_closest_player_sq = 16384;
param_00.return_to_closest_player_dist_in_combat_sq = 90000;
param_00.return_to_closest_player_dist_sq = 12100;
param_00.check_for_closest_player_interval_ms = 1000;
param_00.max_dist_for_spell_cast_sq = 562500;
param_00.init_spellcast_delay = 10000;
param_00.spellcast_interval = 15000;
param_00.max_enemy_spell_radius_sq = 262144;
param_00.min_enemies_for_spellcast = 1;
param_00.var_AC71 = 120000;
param_00.max_teleport_lookahead_dist = 600;
}
//Function Number: 3
gettunedata()
{
return level.agenttunedata["elvira"];
}

View File

@ -0,0 +1,57 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\gametype_assault.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 4
* Decompile Time: 240 ms
* Timestamp: 10/27/2023 12:11:31 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
}
//Function Number: 2
func_F8F4()
{
level.agent_funcs["squadmate"]["gametype_update"] = ::func_18FC;
level.agent_funcs["player"]["think"] = ::func_18F6;
}
//Function Number: 3
func_18F6()
{
thread scripts\mp\bots\gametype_dom::func_2D64();
}
//Function Number: 4
func_18FC()
{
var_00 = undefined;
foreach(var_02 in self.var_222.var_11A46)
{
if(var_02.var_130AC.var_92B8 == "domFlag")
{
var_00 = var_02;
}
}
if(isdefined(var_00))
{
var_04 = var_00 scripts\mp\gametypes\dom::func_7EBB();
if(var_04 != self.team)
{
if(!scripts\mp\bots\gametype_dom::func_2DD6(var_00))
{
scripts\mp\bots\gametype_dom::func_3A37(var_00,"critical",1);
}
return 1;
}
}
return 0;
}

View File

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

View File

@ -0,0 +1,75 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\gametype_conf.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 4
* Decompile Time: 266 ms
* Timestamp: 10/27/2023 12:11:31 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
}
//Function Number: 2
func_F8F4()
{
level.agent_funcs["squadmate"]["gametype_update"] = ::func_18FB;
level.agent_funcs["player"]["think"] = ::func_18F5;
}
//Function Number: 3
func_18F5()
{
thread scripts\mp\bots\gametype_conf::func_2D39();
}
//Function Number: 4
func_18FB()
{
if(!isdefined(self.var_11420))
{
self.var_11420 = [];
}
if(!isdefined(self.var_BF68))
{
self.var_BF68 = gettime() + 500;
}
if(gettime() > self.var_BF68)
{
self.var_BF68 = gettime() + 500;
var_00 = 0.78;
var_01 = self.var_222 getnearestnode();
if(isdefined(var_01))
{
var_02 = self.var_222 scripts\mp\bots\gametype_conf::func_2D7C(1,var_01,var_00);
self.var_11420 = scripts\mp\bots\gametype_conf::func_2D38(var_02,self.var_11420);
}
}
self.var_11420 = scripts\mp\bots\gametype_conf::func_2E65(self.var_11420);
var_03 = scripts\mp\bots\gametype_conf::func_2D74(self.var_11420,0);
if(isdefined(var_03))
{
if(!isdefined(self.var_113DD) || distancesquared(var_03.var_4B2C,self.var_113DD.var_4B2C) > 1)
{
self.var_113DD = var_03;
scripts\mp\bots\_bots_strategy::func_2D4E();
self botsetscriptgoal(self.var_113DD.var_4B2C,0,"objective",undefined,level.var_2EA7);
}
return 1;
}
else if(isdefined(self.var_113DD))
{
self botclearscriptgoal();
self.var_113DD = undefined;
}
return 0;
}

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,57 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\gametype_dom.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 4
* Decompile Time: 234 ms
* Timestamp: 10/27/2023 12:11:33 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
}
//Function Number: 2
func_F8F4()
{
level.agent_funcs["squadmate"]["gametype_update"] = ::func_18FC;
level.agent_funcs["player"]["think"] = ::func_18F6;
}
//Function Number: 3
func_18F6()
{
thread scripts\mp\bots\gametype_dom::func_2D64();
}
//Function Number: 4
func_18FC()
{
var_00 = undefined;
foreach(var_02 in self.var_222.var_11A46)
{
if(var_02.var_130AC.var_92B8 == "domFlag")
{
var_00 = var_02;
}
}
if(isdefined(var_00))
{
var_04 = var_00 scripts\mp\gametypes\dom::func_7EBB();
if(var_04 != self.team)
{
if(!scripts\mp\bots\gametype_dom::func_2DD6(var_00))
{
scripts\mp\bots\gametype_dom::func_3A37(var_00,"critical",1);
}
return 1;
}
}
return 0;
}

View File

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

View File

@ -0,0 +1,22 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\gametype_grind.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 2
* Decompile Time: 134 ms
* Timestamp: 10/27/2023 12:11:34 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
}
//Function Number: 2
func_F8F4()
{
level.agent_funcs["squadmate"]["gametype_update"] = ::scripts\mp\agents\gametype_conf::func_18FB;
level.agent_funcs["player"]["think"] = ::scripts\mp\agents\gametype_conf::func_18F5;
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,80 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\gametype_mugger.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 4
* Decompile Time: 229 ms
* Timestamp: 10/27/2023 12:11:37 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
}
//Function Number: 2
func_F8F4()
{
level.agent_funcs["squadmate"]["gametype_update"] = ::func_18FD;
level.agent_funcs["player"]["think"] = ::func_18F7;
}
//Function Number: 3
func_18F7()
{
thread scripts\mp\bots\gametype_mugger::func_2E26();
}
//Function Number: 4
func_18FD()
{
if(!isdefined(self.var_11420))
{
self.var_11420 = [];
}
if(!isdefined(self.var_BF68))
{
self.var_BF68 = gettime() + 500;
}
if(gettime() > self.var_BF68)
{
self.var_BF68 = gettime() + 500;
var_00 = 0.78;
if(isbot(self.var_222))
{
var_00 = self botgetfovdot();
}
var_01 = self.var_222 getnearestnode();
if(isdefined(var_01))
{
var_02 = self.var_222 scripts\mp\bots\gametype_mugger::func_2D7D(var_01,var_00);
self.var_11420 = scripts\mp\bots\gametype_conf::func_2D38(var_02,self.var_11420);
}
}
self.var_11420 = scripts\mp\bots\gametype_conf::func_2E65(self.var_11420);
var_03 = scripts\mp\bots\gametype_conf::func_2D74(self.var_11420,0);
if(isdefined(var_03))
{
if(!isdefined(self.var_113DD) || distancesquared(var_03.var_4B2C,self.var_113DD.var_4B2C) > 1)
{
self.var_113DD = var_03;
scripts\mp\bots\_bots_strategy::func_2D4E();
self botsetscriptgoal(self.var_113DD.var_4B2C,0,"objective",undefined,level.var_2EA7);
}
return 1;
}
else if(isdefined(self.var_113DD))
{
self botclearscriptgoal();
self.var_113DD = undefined;
}
return 0;
}

View File

@ -0,0 +1,28 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\gametype_sd.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 3
* Decompile Time: 185 ms
* Timestamp: 10/27/2023 12:11:38 AM
*******************************************************************/
//Function Number: 1
main()
{
func_F8F4();
}
//Function Number: 2
func_F8F4()
{
level.agent_funcs["player"]["think"] = ::func_18F8;
}
//Function Number: 3
func_18F8()
{
scripts\common\utility::func_1C6E(1);
thread scripts\mp\bots\gametype_sd::func_2E6E();
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,316 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\karatemaster\karatemaster_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 14
* Decompile Time: 809 ms
* Timestamp: 10/27/2023 12:11:16 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
behaviortree\karatemaster::func_DEE8();
scripts\asm\karatemaster\mp\states::func_2371();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["karatemaster"]["setup_func"] = ::setupagent;
level.agent_definition["karatemaster"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["karatemaster"]["gametype_on_damage_finished"] = ::lib_0CBC::func_C5CE;
level.agent_funcs["karatemaster"]["gametype_on_killed"] = ::lib_0CBC::func_C5D2;
level.agent_funcs["karatemaster"]["on_damaged"] = ::func_C4E0;
level.agent_funcs["karatemaster"]["on_damaged_finished"] = ::ondamagefinished;
level.agent_funcs["karatemaster"]["on_killed"] = level.var_C4BE;
level.var_1094E["karatemaster"] = ::should_spawn_karatemaster;
}
//Function Number: 3
func_FACE(param_00)
{
if(isdefined(level.karate_zombie_model_list))
{
var_01 = scripts\common\utility::random(level.karate_zombie_model_list);
}
else
{
var_01 = "karatemaster_male_3_black";
}
self setmodel(var_01);
thread scripts\mp\agents\zombie\zmb_zombie_agent::func_50EF();
}
//Function Number: 4
setupzombiegametypevars()
{
self.var_4004 = undefined;
self.var_BCF6 = undefined;
self.var_26B9 = undefined;
self.var_86BD = undefined;
self.name = undefined;
self.var_EB6A = undefined;
self.var_CA5B = undefined;
self.var_13CA0 = undefined;
self.var_C2AD = undefined;
self.sessionteam = undefined;
self.sessionstate = undefined;
self.var_55E6 = undefined;
self.disabledweaponswitch = undefined;
self.var_55D9 = undefined;
self.var_55E4 = 1;
self.nocorpse = undefined;
self.ignoreme = 0;
self.var_180 = 0;
self.var_116D4 = undefined;
self.var_441A = undefined;
self.var_4B82 = undefined;
self.do_immediate_ragdoll = undefined;
self.var_37FD = 0;
self.var_24CA = undefined;
self.entered_playspace = 0;
self.var_B36E = undefined;
self.var_126A3 = undefined;
self.var_8C35 = 0;
self.attackent = undefined;
self.var_1B03 = "idle";
self.var_1F5 = "walk";
self.sharpturnnotifydist = 100;
self.var_257 = 15;
self.height = 40;
self.var_252B = 26 + self.var_257;
self.var_B640 = "normal";
self.var_B641 = 50;
self.var_2539 = 54;
self.var_253A = -64;
self.var_4D45 = 2250000;
self.var_181 = 1;
self.var_86BD = self getentitynumber();
self.var_BCE4 = 1;
self.var_C081 = 1;
self.var_126E8 = 1;
self.var_772A = 1;
self.var_2AB2 = 0;
self.var_2AB8 = 1;
self.var_118FC = 0;
self.var_2F = 1;
self.var_B5F9 = 40;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_565C = 0;
self.var_9BAC = 0;
self.var_54CB = 0;
self.damaged_by_player = 0;
self.var_9E0C = undefined;
self.flung = undefined;
self.var_B0FC = 1;
self.full_gib = 0;
self.var_12E = undefined;
self.var_E821 = undefined;
self.var_A8A2 = [];
self.var_8C12 = 0;
self.hasplayedvignetteanim = undefined;
self.var_9BA7 = undefined;
self.var_179 = 200;
self.deathmethod = undefined;
self.var_10A57 = undefined;
self.var_828A = undefined;
self.var_CE65 = undefined;
self.var_29D2 = 1;
self.vignette_nocorpse = undefined;
self.death_anim_no_ragdoll = undefined;
self.dont_cleanup = 1;
self method_84E6(30);
if(getdvarint("scr_zombie_left_foot_sharp_turn_only",0) == 1)
{
self.var_AB3F = 1;
}
setmovemode("run");
}
//Function Number: 5
setupagent()
{
thread scripts\mp\agents\zombie\zmb_zombie_agent::func_12EE6();
setupzombiegametypevars();
self.karatemaster = 1;
self.aj_karatemaster = 0;
self.height = self.var_18F4;
self.var_257 = self.var_18F9;
self.var_B62D = 70;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_B601 = 45;
self.var_504E = 55;
self.var_129AF = 55;
self.var_368 = -60;
self.var_100 = 60;
self.ground_pound_damage = 50;
self.footstepdetectdist = 2500;
self.footstepdetectdistwalk = 2500;
self.footstepdetectdistsprint = 2500;
self.allowpain = 0;
self.dontmutilate = 1;
scripts\mp\agents\karatemaster\karatemaster_tunedata::setuptunedata();
}
//Function Number: 6
getenemy()
{
return self.myenemy;
}
//Function Number: 7
setmovemode(param_00)
{
self.desiredmovemode = param_00;
}
//Function Number: 8
findgoodteleportcloserspot()
{
if(isdefined(self.var_233))
{
var_00 = self method_841E();
var_01 = self method_845D(var_00 - scripts\mp\agents\karatemaster\karatemaster_tunedata::gettunedata().cteleportthisclosetoplayer);
return var_01;
}
return self.initialteleportpos;
}
//Function Number: 9
accumulatedamage(param_00,param_01)
{
var_02 = scripts\mp\agents\karatemaster\karatemaster_tunedata::gettunedata();
if(!isdefined(self.damageaccumulator))
{
self.damageaccumulator = spawnstruct();
self.damageaccumulator.accumulateddamage = 0;
}
else if(!isdefined(self.damageaccumulator.var_A96A) || gettime() > self.damageaccumulator.var_A96A + var_02.cdamageaccumulationcleartimems)
{
self.damageaccumulator.accumulateddamage = 0;
self.damageaccumulator.var_A96A = 0;
}
self.damageaccumulator.var_A96A = gettime();
if(!isdefined(param_01))
{
param_01 = (1,1,1);
}
self.damageaccumulator.lastdir = param_01;
self.damageaccumulator.accumulateddamage = self.damageaccumulator.accumulateddamage + param_00;
}
//Function Number: 10
getdamageaccumulator()
{
if(!isdefined(self.damageaccumulator))
{
self.damageaccumulator = spawnstruct();
self.damageaccumulator.accumulateddamage = 0;
}
var_00 = scripts\mp\agents\karatemaster\karatemaster_tunedata::gettunedata();
if(!isdefined(self.damageaccumulator.var_A96A) || gettime() > self.damageaccumulator.var_A96A + var_00.cdamageaccumulationcleartimems)
{
self.damageaccumulator.accumulateddamage = 0;
self.damageaccumulator.var_A96A = 0;
}
if(self.damageaccumulator.accumulateddamage == 0)
{
return undefined;
}
return self.damageaccumulator;
}
//Function Number: 11
cleardamageaccumulator()
{
self.damageaccumulator.accumulateddamage = 0;
self.damageaccumulator.var_A96A = 0;
}
//Function Number: 12
ondamagefinished(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
accumulatedamage(param_02,param_07);
scripts\mp\agents\zombie\zmb_zombie_agent::func_C5CE(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C);
}
//Function Number: 13
func_C4E0(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
if(scripts\common\utility::istrue(self.ishidden))
{
return;
}
[[ level.on_zombie_damaged_func ]](param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B);
}
//Function Number: 14
should_spawn_karatemaster()
{
if(scripts\common\utility::func_6E34("rk_fight_started") && scripts\common\utility::flag("rk_fight_started"))
{
return undefined;
}
var_00 = 0;
if(level.wave_num >= 20)
{
var_00 = min(level.wave_num - 19,10);
}
else if(level.wave_num < 10)
{
return undefined;
}
var_01 = 5;
if(getdvarint("scr_force_karatemaster_spawn",0) == 1)
{
var_01 = 0;
var_00 = 100;
}
if(getdvarint("scr_force_no_karatemaster_spawn",0) == 1)
{
var_01 = 500;
var_00 = 0;
}
if(level.wave_num > var_01)
{
if(randomint(100) < var_00)
{
return "karatemaster";
}
return undefined;
}
return undefined;
}

View File

@ -0,0 +1,24 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\karatemaster\karatemaster_agent_dlc4.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 2
* Decompile Time: 140 ms
* Timestamp: 10/27/2023 12:11:17 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
behaviortree\karatemaster::func_DEE8();
scripts\asm\karatemaster_dlc4\mp\states::func_2371();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
scripts\mp\agents\karatemaster\karatemaster_agent::func_FAB0();
}

View File

@ -0,0 +1,82 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\karatemaster\karatemaster_tunedata.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 3
* Decompile Time: 188 ms
* Timestamp: 10/27/2023 12:11:17 AM
*******************************************************************/
//Function Number: 1
setuptunedata()
{
if(!isdefined(level.agenttunedata))
{
level.agenttunedata = [];
}
level.agenttunedata["karatemaster"] = spawnstruct();
setupkaratemastertunedata(level.agenttunedata["karatemaster"]);
}
//Function Number: 2
setupkaratemastertunedata(param_00)
{
param_00.cteleportthisclosetoplayer = 60;
param_00.cmeleemaxstanddistsq = 4096;
param_00.cmeleemaxzdiff = 60;
param_00.cteleportmindist = 400;
param_00.cteleportmintimebetween = 1000;
param_00.cteleportmintimebetween_global = 1000;
param_00.cwiggleroom = 30;
param_00.cstandattackwiggleroom = 30;
param_00.crethinkmovemeleetime = 3000;
param_00.cpunchmeleedamage = 45;
param_00.ckickmeleedamage = 55;
param_00.cpunchandkickmeleeradiussq = 1600;
param_00.cmaxmeleeflexscale = 5;
param_00.ballowteleportinfrontofsprinter = 1;
param_00.cfastteleportduetodamagechance = 100;
param_00.cfastteleportdamagepct = 0.001;
param_00.cdamageaccumulationcleartimems = 750;
var_01 = spawnstruct();
var_01.cfastteleportmindisttoenemytoteleport = 200;
var_01.cfastteleportcloseindistpctmin = 0.7;
var_01.cfastteleportcloseindistpctmax = 0.8;
var_01.cfastteleportminangledelta = 40;
var_01.cfastteleportmaxangledelta = 45;
param_00.fastteleportparams = var_01;
var_02 = spawnstruct();
var_02.cfastteleportmindisttoenemytoteleport = 200;
var_02.cfastteleportcloseindistpctmin = 0.4;
var_02.cfastteleportcloseindistpctmax = 0.6;
var_02.cfastteleportminangledelta = 40;
var_02.cfastteleportmaxangledelta = 45;
param_00.bunchedupteleportparams = var_02;
param_00.cplayerfacingawayfrommedot = 0.258;
param_00.cminenemydistforlongpathteleport = 250;
param_00.cfastteleportduetolongpathmultiplier = 4;
param_00.cminteleportwaittimeaftermelee = 500;
var_03 = spawnstruct();
var_03.csprinterteleportminangledelta = 5;
var_03.csprinterteleportmaxangledelta = 15;
var_03.csprinterteleportmindist = 500;
var_03.csprinterteleportmaxdist = 700;
param_00.sprinterteleportparams = var_03;
var_04 = spawnstruct();
var_04.csprinterteleportminangledelta = 5;
var_04.csprinterteleportmaxangledelta = 15;
var_04.csprinterteleportmindist = 300;
var_04.csprinterteleportmaxdist = 500;
param_00.runnerteleportparams = var_04;
param_00.ccrowdedcount = 2;
param_00.ccrowdedradiussq = 5625;
param_00.cmaxteleportsnappeddistsq = 64;
}
//Function Number: 3
gettunedata()
{
return level.agenttunedata["karatemaster"];
}

View File

@ -0,0 +1,113 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\lumberjack\lumberjack_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 9
* Decompile Time: 500 ms
* Timestamp: 10/27/2023 12:11:18 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
behaviortree\lumberjack::func_DEE8();
scripts\asm\lumberjack\mp\states::func_2371();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["lumberjack"]["setup_func"] = ::setupagent;
level.agent_definition["lumberjack"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["lumberjack"]["on_damaged"] = ::lib_0CBC::func_C5CD;
level.agent_funcs["lumberjack"]["gametype_on_damage_finished"] = ::lib_0CBC::func_C5CE;
level.agent_funcs["lumberjack"]["gametype_on_killed"] = ::lib_0CBC::func_C5D2;
level.var_1094E["lumberjack"] = ::should_spawn_lumberjack;
}
//Function Number: 3
setupagent()
{
scripts\mp\agents\zombie\zmb_zombie_agent::setupagent();
}
//Function Number: 4
func_FACE(param_00)
{
self setmodel("zombie_lumberjack");
thread delay_eye_glow();
}
//Function Number: 5
delay_eye_glow()
{
self endon("death");
wait(0.5);
self method_80BB(1,0.1);
}
//Function Number: 6
func_C5CE(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_C5CE(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C);
}
//Function Number: 7
func_C5D2(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_C5D2(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}
//Function Number: 8
func_C4BD(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_C4BD(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09);
}
//Function Number: 9
should_spawn_lumberjack()
{
var_00 = 0;
if(level.wave_num >= 20)
{
var_00 = min(level.wave_num - 10,20);
}
else
{
var_00 = level.lumberjack_spawn_percent;
}
var_01 = 5;
if(getdvarint("scr_force_lumberjack_spawn",0) == 1)
{
var_01 = 0;
var_00 = 100;
}
if(getdvarint("scr_force_no_lumberjack_spawn",0) == 1)
{
var_01 = 500;
var_00 = 0;
}
if(level.wave_num > var_01)
{
if(randomint(100) < var_00)
{
return "lumberjack";
}
return undefined;
}
return undefined;
}

View File

@ -0,0 +1,212 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\pamgrier\pamgrier_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 11
* Decompile Time: 569 ms
* Timestamp: 10/27/2023 12:11:19 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
behaviortree\pamgrier::func_DEE8();
scripts\asm\pamgrier\mp\states::func_2371();
scripts\mp\agents\pamgrier\pamgrier_tunedata::setuptunedata();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["pamgrier"]["setup_func"] = ::setupagent;
level.agent_definition["pamgrier"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["pamgrier"]["on_damaged_finished"] = ::ondamagefinished;
}
//Function Number: 3
func_FACE(param_00)
{
self setmodel("cp_disco_female_boss_pam_grier");
self attach("weapon_zmb_katana_wm_camo","tag_weapon_right");
}
//Function Number: 4
setupzombiegametypevars()
{
self.var_4004 = undefined;
self.var_BCF6 = undefined;
self.var_26B9 = undefined;
self.var_86BD = undefined;
self.name = undefined;
self.var_EB6A = undefined;
self.var_CA5B = undefined;
self.var_13CA0 = undefined;
self.var_C2AD = undefined;
self.sessionteam = undefined;
self.sessionstate = undefined;
self.var_55E6 = undefined;
self.disabledweaponswitch = undefined;
self.var_55D9 = undefined;
self.var_55E4 = 1;
self.nocorpse = undefined;
self.ignoreme = 0;
self.var_180 = 0;
self.var_116D4 = undefined;
self.var_441A = undefined;
self.var_4B82 = undefined;
self.do_immediate_ragdoll = undefined;
self.var_37FD = 0;
self.var_24CA = undefined;
self.entered_playspace = 0;
self.var_B36E = undefined;
self.var_126A3 = undefined;
self.var_8C35 = 0;
self.attackent = undefined;
self.var_1B03 = "idle";
self.var_1F5 = "walk";
self.sharpturnnotifydist = 100;
self.var_257 = 15;
self.height = 40;
self.var_252B = 26 + self.var_257;
self.var_B640 = "normal";
self.var_B641 = 50;
self.var_2539 = 54;
self.var_253A = -64;
self.var_4D45 = 2250000;
self.var_181 = 1;
self.var_86BD = self getentitynumber();
self.var_BCE4 = 1;
self.var_C081 = 1;
self.var_126E8 = 1;
self.var_772A = 1;
self.var_2AB2 = 0;
self.var_2AB8 = 1;
self.var_118FC = 0;
self.var_2F = 1;
self.var_B5F9 = 40;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_565C = 0;
self.var_9BAC = 0;
self.var_54CB = 0;
self.damaged_by_player = 0;
self.var_9E0C = undefined;
self.flung = undefined;
self.var_B0FC = 1;
self.full_gib = 0;
self.var_12E = undefined;
self.var_E821 = undefined;
self.var_A8A2 = [];
self.var_8C12 = 0;
self.hasplayedvignetteanim = undefined;
self.var_9BA7 = undefined;
self.var_179 = 200;
self.deathmethod = undefined;
self.var_10A57 = undefined;
self.var_828A = undefined;
self.var_CE65 = undefined;
self.var_29D2 = 1;
self.vignette_nocorpse = undefined;
self.death_anim_no_ragdoll = undefined;
self.dont_cleanup = 1;
if(getdvarint("scr_zombie_left_foot_sharp_turn_only",0) == 1)
{
self.var_AB3F = 1;
}
}
//Function Number: 5
setupagent()
{
setupzombiegametypevars();
self.height = self.var_18F4;
self.var_257 = self.var_18F9;
self.var_9341 = 1;
self.var_B62D = 70;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_B601 = 9999;
self.var_504E = 55;
self.var_129AF = 55;
self.var_368 = -60;
self.var_100 = 60;
self.ground_pound_damage = 50;
self.footstepdetectdist = 2500;
self.footstepdetectdistwalk = 2500;
self.footstepdetectdistsprint = 2500;
self.team = "allies";
self.var_180 = 1;
self.ignoreme = 1;
self.bchillin = 0;
self.chillinpos = self.origin;
self.chillinangles = self.angles;
level.the_hoff_revive = 1;
thread pamcleanup();
}
//Function Number: 6
pamcleanup()
{
self waittill("death");
level.the_hoff_revive = undefined;
}
//Function Number: 7
getenemy()
{
return self.pamenemy;
}
//Function Number: 8
lookatenemy()
{
var_00 = getenemy();
if(isdefined(var_00))
{
var_01 = var_00.origin - self.origin;
var_02 = vectortoangles(var_01);
self method_8289("face angle abs",(0,var_02[1],0));
return;
}
self method_8289("face angle abs",self.angles);
}
//Function Number: 9
setpassive()
{
if(scripts\common\utility::istrue(self.bpassive))
{
return;
}
self.bneedschilltransition = 1;
self.bpassive = 1;
}
//Function Number: 10
clearpassive()
{
self.bneedschilltransition = undefined;
self.bpassive = undefined;
}
//Function Number: 11
ondamagefinished(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
}

View File

@ -0,0 +1,64 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\pamgrier\pamgrier_tunedata.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 3
* Decompile Time: 191 ms
* Timestamp: 10/27/2023 12:11:19 AM
*******************************************************************/
//Function Number: 1
setuptunedata()
{
if(!isdefined(level.agenttunedata))
{
level.agenttunedata = [];
}
level.agenttunedata["pamgrier"] = spawnstruct();
setuppamgriertunedata(level.agenttunedata["pamgrier"]);
}
//Function Number: 2
setuppamgriertunedata(param_00)
{
param_00.min_time_between_attacks = 1000;
param_00.max_time_between_attacks = 2000;
param_00.min_chillin_time = 15000;
param_00.max_chillin_time = 25000;
param_00.max_non_chillin_time = 10000;
param_00.chill_time_before_going_passive = 8;
param_00.min_moving_pain_dist = 128;
param_00.target_agent_types = [];
param_00.target_agent_types[0] = "karatemaster";
param_00.target_agent_types[1] = "generic_zombie";
param_00.min_target_path_dist_to_goal = 100;
param_00.teleport_behind_target_dist = 24;
param_00.teleport_attack_dist_to_target = 50;
param_00.telefrag_dist_sq = 1600;
param_00.navmesh_correction_dist_sq = 16;
param_00.player_too_close_teleport_dist_sq = 1600;
param_00.max_teleports_per_chill = 3;
param_00.melee_attack_range_sq = 30625;
param_00.revive_right_offset = 32;
param_00.revive_forward_offset = 60;
param_00.max_revive_snapp_2d_dist_sq = 64;
param_00.max_revive_snap_z_dist = 32;
param_00.revive_wait_time = 2;
param_00.min_time_between_revivals = 5000;
param_00.min_time_between_revivals_solo = -5536;
param_00.max_dist_to_revive_player_sq = 10000;
param_00.max_time_to_attack_targets_when_player_needs_revive_ms = 4000;
param_00.min_wait_time = 500;
param_00.max_wait_time = 1000;
param_00.min_wait_time_before_teleport = 1000;
param_00.min_wait_for_twitch_time = 2;
param_00.max_wait_for_twitch_time = 4.5;
}
//Function Number: 3
gettunedata()
{
return level.agenttunedata["pamgrier"];
}

View File

@ -0,0 +1,402 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\ratking\ratking_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 22
* Decompile Time: 1147 ms
* Timestamp: 10/27/2023 12:11:21 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
behaviortree\ratking::func_DEE8();
scripts\asm\ratking\mp\states::func_2371();
scripts\mp\agents\ratking\ratking_tunedata::setuptunedata();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["ratking"]["setup_func"] = ::setupagent;
level.agent_definition["ratking"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["ratking"]["on_damaged_finished"] = ::onratkingdamagefinished;
level.agent_funcs["ratking"]["on_killed"] = ::onratkingkilled;
}
//Function Number: 3
func_FACE(param_00)
{
self setmodel("zmb_rat_king");
thread delaygiveequipment();
}
//Function Number: 4
delaygiveequipment()
{
level endon("game_ended");
self endon("fake_death");
wait(0.1);
self setscriptablepartstate("staff","staff_activate");
self setscriptablepartstate("shield","shield_activate");
}
//Function Number: 5
setupzombiegametypevars()
{
self.var_4004 = undefined;
self.var_BCF6 = undefined;
self.var_26B9 = undefined;
self.var_86BD = undefined;
self.name = undefined;
self.var_EB6A = undefined;
self.var_CA5B = undefined;
self.var_13CA0 = undefined;
self.var_C2AD = undefined;
self.sessionteam = undefined;
self.sessionstate = undefined;
self.var_55E6 = undefined;
self.disabledweaponswitch = undefined;
self.var_55D9 = undefined;
self.var_55E4 = 1;
self.nocorpse = undefined;
self.ignoreme = 0;
self.var_180 = 0;
self.var_116D4 = undefined;
self.var_441A = undefined;
self.var_4B82 = undefined;
self.do_immediate_ragdoll = undefined;
self.var_37FD = 0;
self.var_24CA = undefined;
self.entered_playspace = 0;
self.var_B36E = undefined;
self.var_126A3 = undefined;
self.var_8C35 = 0;
self.attackent = undefined;
self.var_1B03 = "idle";
self.var_1F5 = "walk";
self.sharpturnnotifydist = 100;
self.var_257 = 15;
self.height = 40;
self.var_252B = 26 + self.var_257;
self.var_B640 = "normal";
self.var_B641 = 50;
self.var_2539 = 54;
self.var_253A = -64;
self.var_4D45 = 2250000;
self.var_181 = 1;
self.var_86BD = self getentitynumber();
self.var_BCE4 = 1;
self.var_C081 = 1;
self.var_126E8 = 1;
self.var_772A = 1;
self.var_2AB2 = 0;
self.var_2AB8 = 1;
self.var_118FC = 0;
self.var_2F = 1;
self.var_B5F9 = 40;
self.var_B62E = 75;
self.var_B631 = 120;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_565C = 0;
self.var_9BAC = 0;
self.var_54CB = 0;
self.damaged_by_player = 0;
self.var_9E0C = undefined;
self.flung = undefined;
self.var_B0FC = 1;
self.full_gib = 0;
self.var_12E = undefined;
self.var_E821 = undefined;
self.var_A8A2 = [];
self.var_8C12 = 0;
self.hasplayedvignetteanim = undefined;
self.var_9BA7 = undefined;
self.var_179 = 200;
self.deathmethod = undefined;
self.var_10A57 = undefined;
self.var_828A = undefined;
self.var_CE65 = undefined;
self.var_29D2 = 1;
self.vignette_nocorpse = undefined;
self.death_anim_no_ragdoll = undefined;
self.dont_cleanup = 1;
self.hasshield = 1;
self.hasstaff = 1;
self.next_block_fx_time = 0;
self.next_pain_time = 0;
self.next_forced_teleport_time = 0;
self.fake_death = undefined;
if(getdvarint("scr_zombie_left_foot_sharp_turn_only",0) == 1)
{
self.var_AB3F = 1;
}
}
//Function Number: 6
setupagent()
{
setupzombiegametypevars();
self.height = self.var_18F4;
self.var_257 = self.var_18F9;
self.var_9341 = 1;
self.var_B62D = 75;
self.var_B62E = 75;
self.var_B631 = 120;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_B601 = 67;
self.fake_death = undefined;
self.meleeattackchance["melee_attack"] = 70;
self.meleeattackchance["staff_stomp"] = 30;
self.var_504E = 55;
self.var_129AF = 55;
self.var_368 = -60;
self.var_100 = 60;
self.var_166 = "slasher_grenade_zm";
self.var_162 = 999;
self.ground_pound_damage = 50;
self.footstepdetectdist = 2500;
self.footstepdetectdistwalk = 2500;
self.footstepdetectdistsprint = 2500;
self.var_71D0 = ::shouldratkingplaypainanim;
thread listen_for_fake_death();
}
//Function Number: 7
accumulatedamage(param_00,param_01)
{
if(!isdefined(self.damageaccumulator))
{
self.damageaccumulator = spawnstruct();
self.damageaccumulator.accumulateddamage = 0;
}
else if(!isdefined(self.damageaccumulator.var_A96A) || gettime() > self.damageaccumulator.var_A96A + 1000)
{
self.damageaccumulator.accumulateddamage = 0;
self.damageaccumulator.var_A96A = 0;
}
self.damageaccumulator.var_A96A = gettime();
if(!isdefined(param_01))
{
param_01 = (1,1,1);
}
self.damageaccumulator.lastdir = param_01;
if(isdefined(self.fake_damage))
{
self.damageaccumulator.accumulateddamage = self.damageaccumulator.accumulateddamage + self.fake_damage;
self.fake_damage = undefined;
return;
}
self.damageaccumulator.accumulateddamage = self.damageaccumulator.accumulateddamage + param_00;
}
//Function Number: 8
isinravemode()
{
if(self method_85B8())
{
return 1;
}
return 0;
}
//Function Number: 9
onratkingdamagefinished(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
accumulatedamage(param_02,param_07);
ratking_on_damage_finished(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,0,param_0B,param_0C);
}
//Function Number: 10
ratking_on_damage_finished(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
var_0D = self.health;
if(isdefined(param_07))
{
var_0E = vectortoyaw(param_07);
var_0F = self.angles[1];
self.var_E3 = angleclamp180(var_0E - var_0F);
}
else
{
self.var_E3 = 0;
}
self.var_DD = param_08;
self.var_DE = param_04;
self.var_4D3F = param_01;
self.var_DC = param_07;
self.var_E1 = param_02;
self.var_E2 = param_05;
self.var_4D62 = param_06;
if(param_02 >= self.health)
{
param_02 = 0;
level.rat_king_death_pos = self.origin;
if(scripts\common\utility::func_2286(level.spawned_enemies,self))
{
level.spawned_enemies = scripts\common\utility::func_22A9(level.spawned_enemies,self);
}
self notify("fake_death");
}
self method_80E9(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,0,param_0B,param_0C,0,1);
if(self.health > 0 && self.health < var_0D)
{
self notify("pain");
}
if(isalive(self) && isdefined(self.agent_type))
{
var_10 = level.agent_funcs[self.agent_type]["gametype_on_damage_finished"];
if(isdefined(var_10))
{
[[ var_10 ]](param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C);
}
}
}
//Function Number: 11
onratkingkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
self.nocorpse = 1;
scripts\mp\_mp_agent::func_5006(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}
//Function Number: 12
getratkinggrenadehandoffset()
{
return (12,12,100);
}
//Function Number: 13
getratkinghandposition()
{
return self method_81E7(self.origin + (12,12,100));
}
//Function Number: 14
shouldratkingplaypainanim()
{
return 0;
}
//Function Number: 15
getstructpos()
{
if(isdefined(self.ratkingbouncetarget))
{
return self.ratkingbouncetarget;
}
return undefined;
}
//Function Number: 16
getenemy()
{
if(isdefined(self.ratkingenemy) && isalive(self.ratkingenemy))
{
return self.ratkingenemy;
}
return undefined;
}
//Function Number: 17
lookatspot()
{
var_00 = getstructpos();
if(isdefined(var_00))
{
var_01 = var_00.origin - self.origin;
var_02 = vectortoangles(var_01);
self method_8289("face angle abs",(0,var_02[1],0));
return;
}
self method_8289("face angle abs",self.angles);
}
//Function Number: 18
lookatenemy()
{
var_00 = getenemy();
if(isdefined(var_00))
{
var_01 = var_00.origin - self.origin;
var_02 = vectortoangles(var_01);
self method_8289("face angle abs",(0,var_02[1],0));
return;
}
self method_8289("face angle abs",self.angles);
}
//Function Number: 19
executefakedeath()
{
self method_85B7(1);
wait(0.2);
self suicide();
wait(0.2);
}
//Function Number: 20
listen_for_fake_death()
{
self endon("death");
for(;;)
{
self waittill("fake_death");
if(!scripts\common\utility::istrue(level.ratking_fight))
{
self.fake_death = 1;
scripts\cp\maps\cp_disco\rat_king_fight::forcerkteleport();
continue;
}
if(scripts\common\utility::istrue(level.ratking_fight))
{
self.var_180 = 1;
self.var_EF64 = 1;
foreach(var_01 in level.players)
{
var_01 thread scripts\cp\maps\cp_disco\rat_king_fight::outroblackscreen();
}
wait(2);
self suicide();
}
}
}
//Function Number: 21
rkhasstaff()
{
return scripts\common\utility::istrue(self.hasstaff);
}
//Function Number: 22
rkhasshield()
{
return self.var_2303.shieldstate == "equipped";
}

View File

@ -0,0 +1,193 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\ratking\ratking_tunedata.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 4
* Decompile Time: 239 ms
* Timestamp: 10/27/2023 12:11:21 AM
*******************************************************************/
//Function Number: 1
setuptunedata()
{
if(!isdefined(level.agenttunedata))
{
level.agenttunedata = [];
}
level.soloratkingtuning = ::setupsoloratkingtunedata;
level.ratkingtuning = ::setupratkingtunedata;
level.agenttunedata["ratking"] = spawnstruct();
setupsoloratkingtunedata(level.agenttunedata["ratking"]);
}
//Function Number: 2
setupratkingtunedata(param_00)
{
param_00.slasher_spin_damage_range_sq = 5625;
param_00.slasher_spin_damage_amt = 60;
param_00.min_grenade_throw_interval = 10000;
param_00.max_grenade_throw_interval = 30000;
param_00.min_grenade_throw_dist_sq = -25536;
param_00.max_grenade_throw_dist_sq = 1562500;
param_00.min_dist_to_enemy_for_taunt_sq = 262144;
param_00.min_taunt_interval = 15000;
param_00.max_taunt_interval = 20000;
param_00.taunt_chance = 75;
param_00.min_summon_interval = 10000;
param_00.max_summon_interval = 20000;
param_00.summon_chance = 100;
param_00.need_to_block_damage_threshold = 20;
param_00.max_time_after_last_damage_to_block = 1000;
param_00.block_chance = 100;
param_00.min_block_time = 5000;
param_00.max_block_time = 10000;
param_00.quit_block_if_no_damage_time = 2000;
param_00.min_block_interval = 10000;
param_00.max_block_interval = 20000;
param_00.staff_stomp_inner_radius_sq = 5625;
param_00.staff_stomp_outer_radius_sq = 22500;
param_00.staff_stomp_damage_radius = 175;
param_00.staff_stomp_interval = 10000;
param_00.staff_stomp_inner_interval = 3000;
param_00.staff_stomp_max_damage = 200;
param_00.staff_stomp_min_damage = 30;
param_00.min_moving_pain_dist = 128;
param_00.staff_projectile_min_dist_sq = -25536;
param_00.staff_projectile_max_dist_sq = 262144;
param_00.staff_projectile_interval_min = 10000;
param_00.staff_projectile_interval_max = 20000;
param_00.staff_projectile_z_delta = 60;
param_00.staff_projectile_speed = 1000;
param_00.staff_projectile_range = 1000;
param_00.staff_projectile_damage = 85;
param_00.staff_projectile_interval = 0.1;
param_00.staff_shield_attack_min_dist_sq = 90000;
param_00.staff_shield_attack_max_dist_sq = 6250000;
param_00.staff_shield_attack_interval_min = 10000;
param_00.staff_shield_attack_interval_max = 20000;
param_00.min_clear_los_time_before_shield_attack = 500;
param_00.min_path_dist_for_teleport = 500;
param_00.no_los_wait_time_before_teleport = 500;
param_00.min_time_between_teleports = 5000;
param_00.min_time_between_traversal_teleports = 1500;
param_00.min_teleport_dist_to_player = 300;
param_00.max_teleport_dist_to_player = 700;
param_00.min_travel_dist_for_teleport = 400;
param_00.telefrag_dist_sq = 576;
param_00.attempt_teleport_if_no_engagement_within_time = 2500;
param_00.teleport_min_dist_to_enemy_to_teleport_sq = 250000;
param_00.cfastteleportduetodamagechance = 100;
param_00.cfastteleportdamagepct = 0.001;
param_00.cdamageaccumulationcleartimems = 750;
param_00.cfastteleportmindisttoenemytoteleport = 100;
param_00.cfastteleportcloseindistpctmin = 0.7;
param_00.cfastteleportcloseindistpctmax = 0.8;
param_00.cfastteleportminangledelta = 85;
param_00.cfastteleportmaxangledelta = 86;
param_00.csprinterteleportminangledelta = 5;
param_00.csprinterteleportmaxangledelta = 15;
param_00.csprinterteleportmindist = 400;
param_00.csprinterteleportmaxdist = 500;
param_00.summon_agent_type = "karatemaster";
param_00.summon_min_spawn_num = 4;
param_00.summon_max_spawn_num = 6;
param_00.summon_min_radius = 100;
param_00.summon_max_radius = 600;
param_00.summon_spawn_min_dist_between_agents_sq = 2500;
param_00.max_num_agents_to_allow_summon = 1;
param_00.min_time_between_summon_rounds = 5000;
if(isdefined(level.rk_tuning_override))
{
[[ level.rk_tuning_override ]](param_00);
}
}
//Function Number: 3
setupsoloratkingtunedata(param_00)
{
param_00.slasher_spin_damage_range_sq = 5625;
param_00.slasher_spin_damage_amt = 60;
param_00.min_grenade_throw_interval = 10000;
param_00.max_grenade_throw_interval = 30000;
param_00.min_grenade_throw_dist_sq = -25536;
param_00.max_grenade_throw_dist_sq = 1562500;
param_00.min_dist_to_enemy_for_taunt_sq = 262144;
param_00.min_taunt_interval = 15000;
param_00.max_taunt_interval = 20000;
param_00.taunt_chance = 75;
param_00.min_summon_interval = 8000;
param_00.max_summon_interval = 15000;
param_00.summon_chance = 100;
param_00.need_to_block_damage_threshold = 20;
param_00.max_time_after_last_damage_to_block = 1000;
param_00.block_chance = 100;
param_00.min_block_time = 2000;
param_00.max_block_time = 5000;
param_00.quit_block_if_no_damage_time = 2000;
param_00.min_block_interval = 10000;
param_00.max_block_interval = 20000;
param_00.staff_stomp_inner_radius_sq = 2500;
param_00.staff_stomp_outer_radius_sq = 22500;
param_00.staff_stomp_damage_radius = 175;
param_00.staff_stomp_interval = 10000;
param_00.staff_stomp_inner_interval = 3000;
param_00.staff_stomp_max_damage = 200;
param_00.staff_stomp_min_damage = 30;
param_00.min_moving_pain_dist = 128;
param_00.staff_projectile_min_dist_sq = -25536;
param_00.staff_projectile_max_dist_sq = 262144;
param_00.staff_projectile_interval_min = 10000;
param_00.staff_projectile_interval_max = 20000;
param_00.staff_projectile_z_delta = 60;
param_00.staff_projectile_speed = 1000;
param_00.staff_projectile_range = 1000;
param_00.staff_projectile_damage = 85;
param_00.staff_projectile_interval = 0.1;
param_00.staff_shield_attack_min_dist_sq = 90000;
param_00.staff_shield_attack_max_dist_sq = 2250000;
param_00.staff_shield_attack_interval_min = 3000;
param_00.staff_shield_attack_interval_max = 5000;
param_00.min_clear_los_time_before_shield_attack = 1000;
param_00.min_path_dist_for_teleport = 400;
param_00.no_los_wait_time_before_teleport = 500;
param_00.min_time_between_teleports = 5000;
param_00.min_time_between_traversal_teleports = 1500;
param_00.min_teleport_dist_to_player = 300;
param_00.max_teleport_dist_to_player = 700;
param_00.min_travel_dist_for_teleport = 400;
param_00.telefrag_dist_sq = 576;
param_00.attempt_teleport_if_no_engagement_within_time = 4000;
param_00.teleport_min_dist_to_enemy_to_teleport_sq = 250000;
param_00.cfastteleportduetodamagechance = 100;
param_00.cfastteleportdamagepct = 0.001;
param_00.cdamageaccumulationcleartimems = 750;
param_00.cfastteleportmindisttoenemytoteleport = 100;
param_00.cfastteleportcloseindistpctmin = 0.7;
param_00.cfastteleportcloseindistpctmax = 0.8;
param_00.cfastteleportminangledelta = 85;
param_00.cfastteleportmaxangledelta = 86;
param_00.csprinterteleportminangledelta = 5;
param_00.csprinterteleportmaxangledelta = 15;
param_00.csprinterteleportmindist = 400;
param_00.csprinterteleportmaxdist = 500;
param_00.summon_agent_type = "karatemaster";
param_00.summon_min_spawn_num = 4;
param_00.summon_max_spawn_num = 6;
param_00.summon_min_radius = 100;
param_00.summon_max_radius = 600;
param_00.summon_spawn_min_dist_between_agents_sq = 2500;
param_00.max_num_agents_to_allow_summon = 0;
param_00.min_time_between_summon_rounds = 3000;
if(isdefined(level.rk_solo_tuning_override))
{
[[ level.rk_solo_tuning_override ]](param_00);
}
}
//Function Number: 4
gettunedata()
{
return level.agenttunedata["ratking"];
}

View File

@ -0,0 +1,119 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\skater\skater_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 7
* Decompile Time: 412 ms
* Timestamp: 10/27/2023 12:11:22 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
behaviortree\zombie_dlc2::func_DEE8();
scripts\asm\zombie_dlc2\mp\states::func_2371();
func_AEB0();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_funcs["skater"]["on_damaged"] = ::scripts\cp\maps\cp_disco\cp_disco_damage::cp_disco_onzombiedamaged;
level.agent_funcs["skater"]["gametype_on_damage_finished"] = ::lib_0CBC::func_C5CE;
level.agent_funcs["skater"]["gametype_on_killed"] = ::lib_0CBC::func_C5D2;
level.var_BCCE["skater"] = ::lib_0CBC::func_E7FD;
level.agent_definition["skater"]["setup_func"] = ::setupagent;
level.agent_definition["skater"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["skater"]["on_damaged_finished"] = ::scripts\mp\agents\zombie\zmb_zombie_agent::func_C5CE;
level.agent_funcs["skater"]["on_killed"] = ::scripts\mp\agents\zombie\zmb_zombie_agent::func_C5D2;
if(!isdefined(level.var_8CBD))
{
level.var_8CBD = [];
}
level.var_8CBD["skater"] = ::func_3725;
}
//Function Number: 3
setupagent()
{
scripts\mp\agents\zombie\zmb_zombie_agent::setupagent();
self.entered_playspace = 1;
self.var_9CDD = 1;
self.nocorpse = 1;
self.allowpain = 0;
if(isdefined(level.suicider_avoidance_radius))
{
self method_84E6(level.suicider_avoidance_radius);
}
thread func_899C();
}
//Function Number: 4
func_899C()
{
self endon("death");
level waittill("game_ended");
self method_841F();
foreach(var_04, var_01 in self.var_164D)
{
var_02 = var_01.var_4BC0;
var_03 = level.var_2303[var_04].var_10E2F[var_02];
lib_0A1A::func_2388(var_04,var_02,var_03,var_03.var_116FB);
lib_0A1A::func_238A(var_04,"idle",0.2,undefined,undefined,undefined);
}
}
//Function Number: 5
func_FACE(param_00)
{
self setmodel("roller_skater_female_white");
thread scripts\mp\agents\zombie\zmb_zombie_agent::func_50EF();
}
//Function Number: 6
func_AEB0()
{
level._effect["suicide_zmb_death"] = loadfx("vfx/iw7/_requests/coop/vfx_zmb_blackhole_death");
level._effect["suicide_zmb_explode"] = loadfx("vfx/iw7/levels/cp_disco/vfx_disco_rollerskate_exp.vfx");
}
//Function Number: 7
func_3725()
{
var_00 = 200;
switch(level.var_1096B)
{
case 0:
var_00 = 145;
break;
case 1:
var_00 = 400;
break;
case 2:
var_00 = 900;
break;
case 3:
var_00 = 900;
break;
default:
var_00 = 900;
break;
}
return var_00;
}

View File

@ -0,0 +1,451 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\slasher\slasher_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 17
* Decompile Time: 915 ms
* Timestamp: 10/27/2023 12:11:23 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
behaviortree\slasher::func_DEE8();
scripts\asm\slasher\mp\states::func_2371();
scripts\mp\agents\slasher\slasher_tunedata::setuptunedata();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["slasher"]["setup_func"] = ::setupagent;
level.agent_definition["slasher"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["slasher"]["on_damaged_finished"] = ::onslasherdamagefinished;
level.agent_funcs["slasher"]["on_killed"] = ::onslasherkilled;
}
//Function Number: 3
func_FACE(param_00)
{
var_01 = getdvar("ui_mapname");
if(var_01 == "cp_final")
{
self setmodel("body_final_slasher");
}
else
{
self setmodel("body_zmb_slasher");
}
self attach("head_zmb_slasher");
self attach("weapon_zmb_slasher_vm","tag_weapon_right");
}
//Function Number: 4
setupzombiegametypevars()
{
self.var_4004 = undefined;
self.var_BCF6 = undefined;
self.var_26B9 = undefined;
self.var_86BD = undefined;
self.name = undefined;
self.var_EB6A = undefined;
self.var_CA5B = undefined;
self.var_13CA0 = undefined;
self.var_C2AD = undefined;
self.sessionteam = undefined;
self.sessionstate = undefined;
self.var_55E6 = undefined;
self.disabledweaponswitch = undefined;
self.var_55D9 = undefined;
self.var_55E4 = 1;
self.nocorpse = undefined;
self.ignoreme = 0;
self.var_180 = 0;
self.var_116D4 = undefined;
self.var_441A = undefined;
self.var_4B82 = undefined;
self.do_immediate_ragdoll = undefined;
self.var_37FD = 0;
self.var_24CA = undefined;
self.entered_playspace = 0;
self.var_B36E = undefined;
self.var_126A3 = undefined;
self.var_8C35 = 0;
self.attackent = undefined;
self.var_9342 = 1;
self.var_1B03 = "idle";
self.var_1F5 = "walk";
self.sharpturnnotifydist = 100;
self.var_257 = 15;
self.height = 40;
self.var_252B = 26 + self.var_257;
self.var_B640 = "normal";
self.var_B641 = 50;
self.var_2539 = 54;
self.var_253A = -64;
self.var_4D45 = 2250000;
self.var_181 = 1;
self.var_86BD = self getentitynumber();
self.var_BCE4 = 1;
self.var_C081 = 1;
self.var_126E8 = 1;
self.var_772A = 1;
self.var_2AB2 = 0;
self.var_2AB8 = 1;
self.var_118FC = 0;
self.var_2F = 1;
self.var_B5F9 = 40;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_565C = 0;
self.var_9BAC = 0;
self.var_54CB = 0;
self.damaged_by_player = 0;
self.var_9E0C = undefined;
self.flung = undefined;
self.var_B0FC = 1;
self.full_gib = 0;
self.var_12E = undefined;
self.var_E821 = undefined;
self.var_A8A2 = [];
self.var_8C12 = 0;
self.hasplayedvignetteanim = undefined;
self.var_9BA7 = undefined;
self.var_179 = 200;
self.deathmethod = undefined;
self.var_10A57 = undefined;
self.var_828A = undefined;
self.var_CE65 = undefined;
self.var_29D2 = 1;
self.vignette_nocorpse = undefined;
self.death_anim_no_ragdoll = undefined;
self.dont_cleanup = 1;
if(getdvarint("scr_zombie_left_foot_sharp_turn_only",0) == 1)
{
self.var_AB3F = 1;
}
}
//Function Number: 5
setupagent()
{
setupzombiegametypevars();
self.height = self.var_18F4;
self.var_257 = self.var_18F9;
self.var_9341 = 1;
self.var_B62D = 70;
self.var_B62E = 70;
self.var_B631 = 80;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_B601 = 45;
self.meleeattackchance["melee_spin"] = 10;
self.meleeattackchance["ground_pound"] = 30;
self.meleeattackchance["swipe_attack"] = 100;
self.var_504E = 55;
self.var_129AF = 55;
self.var_368 = -60;
self.var_100 = 60;
self.var_166 = "slasher_grenade_zm";
self.var_162 = 999;
self.ground_pound_damage = 50;
self.footstepdetectdist = 2500;
self.footstepdetectdistwalk = 2500;
self.footstepdetectdistsprint = 2500;
self.var_71D0 = ::shouldslasherplaypainanim;
self.var_180 = 1;
var_00 = getdvar("ui_mapname");
if(var_00 != "cp_final")
{
self method_85B7(1);
}
if(isdefined(level.slasher_level))
{
if(level.wave_num < 30 && level.wave_num > 19 && level.slasher_level < 3)
{
level.slasher_level = 2;
}
else if(level.wave_num > 29)
{
level.slasher_level = 3;
}
}
thread turn_on_saw_blade_after_time(5);
thread listen_for_fake_death();
}
//Function Number: 6
turn_on_saw_blade_after_time(param_00)
{
self endon("death");
wait(param_00);
self setscriptablepartstate("slasher_saw","active");
var_01 = getdvar("ui_mapname");
if(var_01 == "cp_final")
{
return;
}
if(isdefined(level.slasher_level))
{
switch(level.slasher_level)
{
case 1:
self setscriptablepartstate("mask","blue_mask");
break;
case 2:
self setscriptablepartstate("mask","yellow_mask");
break;
case 3:
self setscriptablepartstate("mask","green_mask");
break;
default:
break;
}
}
}
//Function Number: 7
accumulatedamage(param_00,param_01)
{
if(!isdefined(self.damageaccumulator))
{
self.damageaccumulator = spawnstruct();
self.damageaccumulator.accumulateddamage = 0;
}
else if(!isdefined(self.damageaccumulator.var_A96A) || gettime() > self.damageaccumulator.var_A96A + 1000)
{
self.damageaccumulator.accumulateddamage = 0;
self.damageaccumulator.var_A96A = 0;
}
self.damageaccumulator.var_A96A = gettime();
if(!isdefined(param_01))
{
param_01 = (1,1,1);
}
self.damageaccumulator.lastdir = param_01;
self.damageaccumulator.accumulateddamage = self.damageaccumulator.accumulateddamage + param_00;
}
//Function Number: 8
isinravemode()
{
if(self method_85B8())
{
return 1;
}
return 0;
}
//Function Number: 9
onslasherdamagefinished(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
var_0D = param_02;
if(param_05 == "iw7_harpoon_zm")
{
param_02 = min(0.1 * self.maxhealth,2000);
param_02 = int(param_02);
}
else if(issubstr(param_05,"harpoon1"))
{
param_02 = min(0.01 * self.maxhealth,100);
param_02 = int(param_02);
}
else if(issubstr(param_05,"harpoon2"))
{
param_02 = min(0.1 * self.maxhealth,1500);
param_02 = int(param_02);
}
else if(issubstr(param_05,"harpoon3"))
{
param_02 = min(0.1 * self.maxhealth,1500);
param_02 = int(param_02);
}
else if(issubstr(param_05,"harpoon4"))
{
param_02 = min(0.01 * self.maxhealth,1000);
param_02 = int(param_02);
}
if(isdefined(param_05) && param_05 == "iw7_slasher_zm")
{
param_02 = param_02 * 0.1;
param_02 = int(param_02);
}
else
{
if(isinravemode() || scripts\common\utility::istrue(param_01.var_DCEB))
{
param_02 = 0;
}
if(lib_0A1A::func_2354("block"))
{
param_02 = param_02 * 0.1;
param_02 = int(param_02);
}
}
if(isdefined(level.players) && level.players.size > 1)
{
if(param_02 != 0)
{
var_0E = int(param_02 / level.players.size + 1);
param_02 = int(max(var_0E,1));
}
}
if(param_02 > 0)
{
accumulatedamage(param_02,param_07);
}
if(isdefined(self.nodamagescale))
{
param_02 = var_0D;
}
slasher_on_damage_finished(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,0,param_0B,param_0C);
}
//Function Number: 10
slasher_on_damage_finished(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
var_0D = self.health;
if(isdefined(param_07))
{
var_0E = vectortoyaw(param_07);
var_0F = self.angles[1];
self.var_E3 = angleclamp180(var_0E - var_0F);
}
else
{
self.var_E3 = 0;
}
self.var_DD = param_08;
self.var_DE = param_04;
self.var_4D3F = param_01;
self.var_DC = param_07;
self.var_E1 = param_02;
self.var_E2 = param_05;
self.var_4D62 = param_06;
if(param_02 >= self.health)
{
param_02 = 0;
if(isdefined(param_05) && param_05 == "iw7_slasher_zm")
{
param_01 notify("slasher_killed_by_own_weapon",param_01,param_05);
}
self notify("fake_death");
}
self method_80E9(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,0,param_0B,param_0C,0,1);
if(self.health > 0 && self.health < var_0D)
{
self notify("pain");
}
if(isalive(self) && isdefined(self.agent_type))
{
var_10 = level.agent_funcs[self.agent_type]["gametype_on_damage_finished"];
if(isdefined(var_10))
{
[[ var_10 ]](param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C);
}
}
}
//Function Number: 11
onslasherkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
self detach("weapon_zmb_slasher_vm","tag_weapon_right");
self.nocorpse = 1;
scripts\mp\_mp_agent::func_5006(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}
//Function Number: 12
getslashergrenadehandoffset()
{
return (12,12,100);
}
//Function Number: 13
getslasherhandposition()
{
return self method_81E7(self.origin + (12,12,100));
}
//Function Number: 14
shouldslasherplaypainanim()
{
return 0;
}
//Function Number: 15
getenemy()
{
if(isdefined(self.slasherenemy))
{
return self.slasherenemy;
}
return undefined;
}
//Function Number: 16
lookatslasherenemy()
{
var_00 = getenemy();
if(isdefined(var_00))
{
var_01 = var_00.origin - self.origin;
var_02 = vectortoangles(var_01);
self method_8289("face angle abs",var_02);
return;
}
self method_8289("face angle abs",self.angles);
}
//Function Number: 17
listen_for_fake_death()
{
self endon("death");
for(;;)
{
self waittill("fake_death");
if(!scripts\common\utility::istrue(level.slasher_fight))
{
self.var_180 = 1;
self setscriptablepartstate("teleport","hide");
wait(0.1);
self hide();
wait(0.1);
self suicide();
}
}
}

View File

@ -0,0 +1,89 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\slasher\slasher_agent_dlc4.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 6
* Decompile Time: 325 ms
* Timestamp: 10/27/2023 12:11:24 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
behaviortree\slasher::func_DEE8();
scripts\asm\slasher_dlc4\mp\states::func_2371();
scripts\mp\agents\slasher\slasher_tunedata::setuptunedata();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
scripts\mp\agents\slasher\slasher_agent::func_FAB0();
level.agent_funcs["slasher"]["on_damaged"] = ::onslasherdamaged;
level.agent_funcs["slasher"]["on_killed"] = ::onslasherkilled;
level.agent_definition["slasher"]["setup_func"] = ::setup_slasher_dlc4_agent;
if(!isdefined(level.damage_feedback_overrride))
{
level.damage_feedback_overrride = [];
}
level.damage_feedback_overrride["slasher"] = ::scripts\cp\maps\cp_final\cp_final_damage::slasher_processdamagefeedback;
if(!isdefined(level.var_8CBD))
{
level.var_8CBD = [];
}
level.var_8CBD["slasher"] = ::calculateslasherhealth;
}
//Function Number: 3
setup_slasher_dlc4_agent()
{
scripts\mp\agents\slasher\slasher_agent::setupagent();
self.spawn_round_num = level.wave_num;
self.not_affected_by_traps = 1;
}
//Function Number: 4
calculateslasherhealth()
{
return 30000;
}
//Function Number: 5
onslasherdamaged(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
var_0C = param_02;
param_02 = min(param_02,300);
if(isdefined(self.nodamagescale))
{
param_02 = var_0C;
}
scripts\cp\maps\cp_final\cp_final_damage::cp_final_onzombiedamaged(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B);
}
//Function Number: 6
onslasherkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
self detach("weapon_zmb_slasher_vm","tag_weapon_right");
self.nocorpse = 1;
if(isdefined(level.slasher_loot_func))
{
self [[ level.slasher_loot_func ]](param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}
var_09 = 1000;
foreach(var_0B in level.players)
{
if(var_0B scripts\cp\_utility::is_valid_player())
{
var_0B scripts\cp\_persistence::func_82F9(var_09);
}
}
scripts\mp\_mp_agent::func_5006(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}

View File

@ -0,0 +1,94 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\slasher\slasher_tunedata.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 3
* Decompile Time: 218 ms
* Timestamp: 10/27/2023 12:11:24 AM
*******************************************************************/
//Function Number: 1
setuptunedata()
{
if(!isdefined(level.agenttunedata))
{
level.agenttunedata = [];
}
level.agenttunedata["slasher"] = spawnstruct();
setupslashertunedata(level.agenttunedata["slasher"]);
}
//Function Number: 2
setupslashertunedata(param_00)
{
param_00.slasher_spin_damage_range_sq = 5625;
param_00.slasher_spin_damage_amt = 60;
param_00.ram_attack_collision_dist_sq = 1024;
param_00.ram_attack_melee_dist_sq = 2025;
param_00.ram_attack_dot = 0.5;
param_00.ram_attack_push = 120;
param_00.ram_attack_damage = 90;
param_00.ram_attack_go_straight_radius_sq = 5625;
param_00.min_ram_attack_interval = 1000;
param_00.max_ram_attack_interval = 4000;
param_00.ram_attack_mindist_sq = 14400;
param_00.ram_attack_maxdist_sq = 122500;
param_00.ram_attack_abort_dist_sq = 202500;
param_00.ram_attack_chase_radius = 70;
param_00.ram_attack_chase_radius_if_playing_chicken = 120;
param_00.ram_attack_timeout = 3000;
param_00.min_sawblade_fire_interval = 0.5;
param_00.max_sawblade_fire_interval = 1.5;
param_00.sawblade_burst_interval = 0.15;
param_00.sawblade_burst_chance = 100;
param_00.min_burst_count = 2;
param_00.max_burst_count = 5;
param_00.sawblade_min_offset = -24;
param_00.sawblade_max_offset = 24;
param_00.sawblade_min_randomness = 0.9;
param_00.sawblade_max_randomness = 1.1;
param_00.no_los_wait_time_before_teleport = 3000;
param_00.min_time_between_teleports = 2000;
param_00.min_jump_scare_dist_to_player = 0;
param_00.max_jump_scare_dist_to_player = 1000;
param_00.attempt_teleport_if_no_engagement_within_time = 8000;
param_00.teleport_min_dist_to_enemy_to_teleport_sq = 1000000;
param_00.min_path_dist_for_teleport = 512;
param_00.min_grenade_throw_interval = 10000;
param_00.max_grenade_throw_interval = 30000;
param_00.min_grenade_throw_dist_sq = -25536;
param_00.max_grenade_throw_dist_sq = 1562500;
param_00.min_sawblade_attack_dist_sq = 160000;
param_00.max_sawblade_attack_dist_sq = 2250000;
param_00.min_sawblade_attack_time = 2000;
param_00.max_sawblade_attack_time = 4000;
param_00.min_sawblade_attack_interval = 3000;
param_00.max_sawblade_attack_interval = 6000;
param_00.min_clear_los_time_before_firing_saw = 1000;
param_00.min_dist_to_enemy_for_taunt_sq = 262144;
param_00.min_taunt_interval = 15000;
param_00.max_taunt_interval = 20000;
param_00.taunt_chance = 75;
param_00.min_summon_interval = 8000;
param_00.max_summon_interval = 15000;
param_00.summon_chance = 25;
param_00.need_to_block_damage_threshold = 500;
param_00.max_time_after_last_damage_to_block = 333;
param_00.block_chance = 75;
param_00.min_block_time = 3000;
param_00.max_block_time = 6000;
param_00.quit_block_if_no_damage_time = 1000;
param_00.min_block_interval = 10000;
param_00.max_block_interval = 15000;
param_00.ground_pound_radius_sq = 30625;
param_00.ground_pound_damage_radius_sq = -25536;
param_00.min_moving_pain_dist = 128;
}
//Function Number: 3
gettunedata()
{
return level.agenttunedata["slasher"];
}

View File

@ -0,0 +1,313 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\superslasher\superslasher_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 13
* Decompile Time: 697 ms
* Timestamp: 10/27/2023 12:11:25 AM
*******************************************************************/
//Function Number: 1
superslasheragentinit()
{
registerscriptedagent();
}
//Function Number: 2
registerscriptedagent()
{
lib_0A02::init();
behaviortree\superslasher::func_DEE8();
scripts\asm\superslasher\mp\states::func_2371();
thread func_FAB0();
level.superslasherspawnspot = (-4803,4703,-130);
level.superslasherspawnangles = (0,-170,0);
level.superslasherrooftopspot = (-6119,4829,355);
level.superslasherrooftopangles = (0,10,0);
level.superslashergotogroundspot = (-5024,4857,-130);
level.superslasherjumptoroofangles = (0,-170,0);
loadsuperslasherscriptmodelanim();
loadsuperslashervfx();
}
//Function Number: 3
loadsuperslasherscriptmodelanim()
{
precachempanim("IW7_cp_super_death_01");
}
//Function Number: 4
loadsuperslashervfx()
{
level._effect["super_slasher_death_base"] = loadfx("vfx/iw7/levels/cp_rave/superslasher/vfx_ss_death_base_start.vfx");
level._effect["super_slasher_death_hand"] = loadfx("vfx/iw7/levels/cp_rave/superslasher/vfx_ss_death_hands_glow.vfx");
level._effect["super_slasher_death_limb"] = loadfx("vfx/iw7/levels/cp_rave/superslasher/vfx_ss_death_limbs_glow.vfx");
level._effect["super_slasher_shield_hit"] = loadfx("vfx/iw7/levels/cp_rave/superslasher/vfx_ss_shield_hit.vfx");
level._effect["super_slasher_saw_shark_hit"] = loadfx("vfx/iw7/levels/cp_rave/superslasher/vfx_rave_superslasher_stomp_attack.vfx");
level._effect["super_slasher_saw_shark_spark"] = loadfx("vfx/iw7/levels/cp_rave/superslasher/vfx_rave_superslasher_saw_spark.vfx");
}
//Function Number: 5
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
if(!isdefined(level.var_10970))
{
level.var_10970 = [];
}
level.var_10970["superslasher"] = [];
level.agent_definition["superslasher"]["setup_func"] = ::setupagent;
level.agent_definition["superslasher"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["superslasher"] = [];
level.agent_funcs["superslasher"]["on_damaged"] = ::onsuperslasherdamaged;
level.agent_funcs["superslasher"]["on_killed"] = ::onsuperslasherkilled;
level.agent_funcs["superslasher"]["on_damaged_finished"] = ::onsuperslasherdamagefinished;
}
//Function Number: 6
setupagent()
{
self.var_4004 = undefined;
self.var_BCF6 = undefined;
self.var_26B9 = undefined;
self.var_86BD = undefined;
self.name = undefined;
self.var_EB6A = undefined;
self.var_CA5B = undefined;
self.var_13CA0 = undefined;
self.var_C2AD = undefined;
self.sessionteam = undefined;
self.sessionstate = undefined;
self.var_55E6 = undefined;
self.disabledweaponswitch = undefined;
self.var_55D9 = undefined;
self.var_55E4 = 1;
self.nocorpse = undefined;
self.ignoreme = 0;
self.var_180 = 0;
self.var_116D4 = undefined;
self.var_441A = undefined;
self.var_4B82 = undefined;
self.do_immediate_ragdoll = undefined;
self.var_37FD = 0;
self.var_24CA = undefined;
self.entered_playspace = 0;
self.var_B36E = undefined;
self.var_126A3 = undefined;
self.var_8C35 = 0;
self.var_9341 = 1;
self.var_9342 = 1;
self.var_9341 = 1;
self.var_1B03 = "idle";
self.var_1F5 = "run";
self.sharpturnnotifydist = 150;
self.var_257 = 20;
self.height = 53;
self.var_252B = 26 + self.var_257;
self.var_2539 = 54;
self.var_253A = -64;
self.var_4D45 = 2250000;
self.var_181 = 1;
self.var_86BD = self getentitynumber();
self.var_BCE4 = 1;
self.var_C081 = 1;
self.var_126E8 = 1;
self.var_772A = 1;
self.var_2AB2 = 0;
self.var_2AB8 = 1;
self.var_118FC = 0;
self.var_2F = 1;
self.var_503C = self.var_257 + 1;
self.var_565C = 0;
self.var_54CB = 0;
self.var_9E0C = undefined;
self.flung = undefined;
self.var_565C = 0;
self.var_B0FC = 1;
self.full_gib = 0;
self.croc_chomp = 0;
self.spawn_round_num = level.wave_num;
self.dont_cleanup = 1;
self.footstepdetectdist = 600;
self.footstepdetectdistwalk = 600;
self.footstepdetectdistsprint = 600;
self.allowpain = 1;
self.var_A8A2 = [];
self.var_A964 = [];
self.var_A96A = 0;
if(getdvarint("scr_zombie_left_foot_sharp_turn_only",0) == 1)
{
self.var_AB3F = 1;
}
thread func_899C();
}
//Function Number: 7
func_FACE(param_00)
{
self setmodel("fullbody_zmb_superslasher");
}
//Function Number: 8
func_899C()
{
self endon("death");
level waittill("game_ended");
self.var_1198.bgameended = 1;
}
//Function Number: 9
onsuperslasherkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
self.death_anim_no_ragdoll = 1;
self.nocorpse = 1;
if(isdefined(self.attackents))
{
foreach(var_0A in self.attackents)
{
var_0A delete();
}
}
if(isdefined(self.shields))
{
foreach(var_0D in self.shields)
{
var_0D delete();
}
}
scripts\asm\superslasher\superslasher_actions::stopwireattack();
thread superslasherdeathscriptmodelsequence(self);
var_0F = self.var_238F;
var_10 = self.var_164D[var_0F].var_4BC0;
var_11 = level.var_2303[var_0F].var_10E2F[var_10];
lib_0A1A::func_2388(var_0F,var_10,var_11,undefined);
scripts\mp\_mp_agent::func_5006(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}
//Function Number: 10
superslasherdeathscriptmodelsequence(param_00)
{
level.soul_key_drop_pos = scripts\common\utility::func_5D14(param_00.origin,200,-5000) + (0,0,50);
var_01 = param_00.origin;
var_02 = spawn("script_model",var_01);
var_02 setmodel("fullbody_zmb_superslasher");
var_02 scriptmodelplayanim("IW7_cp_super_death_01");
playsoundatpos(var_02.origin,"zmb_superslasher_death_lr");
var_02 thread super_slasher_death_vfx_sequence(var_02);
wait(3.5);
var_02 moveto(var_01 + (0,0,-300),11.5);
var_02 waittill("movedone");
var_02 delete();
level notify("super_slasher_death");
}
//Function Number: 11
super_slasher_death_vfx_sequence(param_00)
{
var_01 = spawnfx(level._effect["super_slasher_death_base"],param_00.origin);
triggerfx(var_01);
wait(0.6);
playfxontag(level._effect["super_slasher_death_hand"],param_00,"j_wrist_ri");
playfxontag(level._effect["super_slasher_death_limb"],param_00,"j_hip_ri");
wait(0.5);
playfxontag(level._effect["super_slasher_death_hand"],param_00,"j_wrist_le");
wait(0.2);
playfxontag(level._effect["super_slasher_death_limb"],param_00,"j_hip_le");
wait(1.3);
playfxontag(level._effect["super_slasher_death_limb"],param_00,"j_elbow_le");
wait(1);
playfxontag(level._effect["super_slasher_death_limb"],param_00,"j_clavicle_ri");
wait(0.7);
playfxontag(level._effect["super_slasher_death_limb"],param_00,"j_clavicle_le");
param_00 waittill("movedone");
var_01 delete();
}
//Function Number: 12
onsuperslasherdamaged(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
if(isdefined(param_01) && param_01 == self)
{
return;
}
if(scripts\common\utility::istrue(self.var_E0) && isdefined(param_06) && isdefined(param_07))
{
playfx(level._effect["super_slasher_shield_hit"],param_06,param_07 * -150);
}
if(isdefined(self.btrophysystem))
{
if(isdefined(param_01) && isplayer(param_01))
{
self.var_A964[self.var_A964.size] = vectornormalize(param_01.origin - self.origin);
self.var_A96A = gettime();
}
return;
}
if(scripts\common\utility::istrue(self.var_E0))
{
return;
}
if(isdefined(self.var_1198.binair))
{
param_02 = int(min(param_02,self.health - 1));
if(param_02 == 0)
{
return;
}
}
if(param_05 == "iw7_harpoon_zm")
{
param_02 = min(0.1 * self.maxhealth,2000);
param_02 = int(param_02);
}
else if(issubstr(param_05,"harpoon1"))
{
param_02 = min(0.01 * self.maxhealth,75);
param_02 = int(param_02);
}
else if(issubstr(param_05,"harpoon2"))
{
param_02 = min(0.1 * self.maxhealth,1500);
param_02 = int(param_02);
}
else if(issubstr(param_05,"harpoon3"))
{
param_02 = min(0.1 * self.maxhealth,2000);
param_02 = int(param_02);
}
else if(issubstr(param_05,"harpoon4"))
{
param_02 = min(0.01 * self.maxhealth,1000);
param_02 = int(param_02);
}
param_03 = param_03 | level.var_92C0;
if(isdefined(level.players) && level.players.size >= 1)
{
param_02 = param_02 / level.players.size;
}
scripts\cp\maps\cp_rave\cp_rave_damage::cp_rave_onzombiedamaged(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B);
}
//Function Number: 13
onsuperslasherdamagefinished(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
scripts\mp\_mp_agent::func_5004(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C);
}

View File

@ -0,0 +1,300 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\the_hoff\the_hoff_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 17
* Decompile Time: 812 ms
* Timestamp: 10/27/2023 12:31:19 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
lib_03A9::func_DEE8();
lib_0F37::func_2371();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
if(!isdefined(level.var_10970))
{
level.var_10970 = [];
}
level.var_10970["the_hoff"] = [];
level.agent_definition["the_hoff"]["setup_func"] = ::setupagent;
level.agent_definition["the_hoff"]["setup_model_func"] = ::func_FACE;
}
//Function Number: 3
setupagent()
{
self.accuracy = 0.5;
self.noattackeraccuracymod = 0;
self.sharpturnnotifydist = 48;
self.last_enemy_sight_time = 0;
self.desiredenemydistmax = 500;
self.desiredenemydistmin = 400;
self.maxtimetostrafewithoutlos = 3000;
self.strafeifwithindist = self.desiredenemydistmax + 100;
self.maxsightdistsqrd = 67108864;
self.var_272A = self.desiredenemydistmin - 100;
self.meleerangesq = 9216;
self.meleechargedist = 45;
self.meleechargedistvsplayer = 45;
self.meleechargedistreloadmultiplier = 1.2;
self.maxzdiff = 50;
self.meleeactorboundsradius = 32;
self.meleemindamage = 300;
self.meleemaxdamage = 450;
self.footstepdetectdist = 1000;
self.footstepdetectdistwalk = 1000;
self.footstepdetectdistsprint = 1000;
self.var_1A44 = 50;
func_FAFE();
thread scriptedgoalwaitforarrival();
thread func_899D();
}
//Function Number: 4
func_FAFE()
{
self.var_3402 = ::func_11562;
self.var_3404 = [::func_11562,::func_11559,::func_1156F,::func_1157B,::func_11570];
self.var_3403 = [0,47,21,21,11];
}
//Function Number: 5
func_899D()
{
self endon("death");
for(;;)
{
self waittill("enemy");
for(;;)
{
if(isdefined(self.var_10C))
{
self.var_6571 = gettime() + 1000;
}
else if(isdefined(self.var_6571))
{
if(gettime() > self.var_6571)
{
self.var_6571 = undefined;
break;
}
}
wait(0.25);
}
}
}
//Function Number: 6
func_11570()
{
var_00 = 70;
var_01 = 15;
if(isdefined(self.var_10C.var_18F4))
{
var_00 = self.var_10C.var_18F4;
var_01 = self.var_10C.var_18F9;
}
var_02 = var_00 * randomfloatrange(0.25,0.35);
var_03 = var_01 * 0.5;
var_04 = var_03 * -1;
var_05 = randomfloatrange(var_04,var_03);
var_06 = anglestoright(self.angles);
var_07 = (var_06[0] * var_05,var_06[1] * var_05,var_02);
var_08 = self.var_10C.origin + var_07;
return var_08;
}
//Function Number: 7
func_1157B()
{
var_00 = 70;
var_01 = 15;
if(isdefined(self.var_10C.var_18F4))
{
var_00 = self.var_10C.var_18F4;
var_01 = self.var_10C.var_18F9;
}
var_02 = var_00 * randomfloatrange(0.65,0.75);
var_03 = var_01 * 0.75;
var_04 = anglestoright(self.angles);
var_05 = (var_04[0] * var_03,var_04[1] * var_03,var_02);
var_06 = self.var_10C.origin + var_05;
return var_06;
}
//Function Number: 8
func_1156F()
{
var_00 = 70;
var_01 = 15;
if(isdefined(self.var_10C.var_18F4))
{
var_00 = self.var_10C.var_18F4;
var_01 = self.var_10C.var_18F9;
}
var_02 = var_00 * randomfloatrange(0.65,0.75);
var_03 = var_01 * -0.75;
var_04 = anglestoright(self.angles);
var_05 = (var_04[0] * var_03,var_04[1] * var_03,var_02);
var_06 = self.var_10C.origin + var_05;
return var_06;
}
//Function Number: 9
func_11559()
{
var_00 = 70;
var_01 = 15;
if(isdefined(self.var_10C.var_18F4))
{
var_00 = self.var_10C.var_18F4;
var_01 = self.var_10C.var_18F9;
}
var_02 = var_00 * randomfloatrange(0.65,0.75);
var_03 = var_01 * 0.5;
var_04 = var_03 * -1;
var_05 = randomfloatrange(var_04,var_03);
var_06 = anglestoright(self.angles);
var_07 = (var_06[0] * var_05,var_06[1] * var_05,var_02);
var_08 = self.var_10C.origin + var_07;
return var_08;
}
//Function Number: 10
func_11562()
{
var_00 = self.var_10C gettagorigin("j_head");
return var_00;
}
//Function Number: 11
scriptedgoalwaitforarrival()
{
self endon("death");
for(;;)
{
self waittill("goal_reached");
if(isdefined(self.var_EF7D))
{
var_00 = self.var_EF7D;
}
else if(isdefined(self.var_EF7A))
{
var_00 = self.var_EF7A.origin;
}
else if(isdefined(self.var_EF7C))
{
var_00 = self.var_EF7C.origin;
}
else
{
continue;
}
var_01 = 16;
if(isdefined(self.var_EF7E))
{
var_01 = self.var_EF7E * self.var_EF7E;
}
if(distance2dsquared(self.origin,var_00) <= var_01)
{
self.var_EF7D = undefined;
self.var_EF7C = undefined;
if(!isdefined(self.var_EF7B))
{
self.var_EF7A = undefined;
}
self notify("scriptedGoal_reached");
}
}
}
//Function Number: 12
func_F834(param_00,param_01)
{
if(!isdefined(param_01))
{
param_01 = 0;
}
self.var_EF79 = param_01;
self.var_EF73 = param_00;
}
//Function Number: 13
func_F835(param_00,param_01)
{
self.var_EF7A = undefined;
self.var_EF7B = undefined;
self.var_EF7C = undefined;
self.var_EF7D = param_00;
self.var_EF7E = param_01;
}
//Function Number: 14
func_F833(param_00,param_01)
{
self.var_EF7D = undefined;
self.var_EF7A = undefined;
self.var_EF7B = undefined;
self.var_EF7C = param_00;
self.var_EF7E = param_01;
}
//Function Number: 15
func_F832(param_00,param_01,param_02)
{
self.var_EF7D = undefined;
self.var_EF7C = undefined;
self.var_EF7A = param_00;
self.var_EF7E = param_01;
if(isdefined(param_02) && param_02)
{
self.var_EF7B = param_02;
return;
}
self.var_EF7B = undefined;
}
//Function Number: 16
func_41D9()
{
if(isdefined(self.var_EF7D) || isdefined(self.var_EF7A) || isdefined(self.var_EF7C))
{
self.var_EF7D = undefined;
self.var_EF7A = undefined;
self.var_EF7B = undefined;
self.var_EF7C = undefined;
self method_841F();
}
}
//Function Number: 17
func_FACE(param_00)
{
self setmodel("body_zmb_hero_dj_agent");
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,738 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\zombie_brute\zombie_brute_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 34
* Decompile Time: 1247 ms
* Timestamp: 10/27/2023 12:31:49 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
lib_03B3::func_DEE8();
lib_0F45::func_2371();
func_AEB0();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["zombie_brute"]["setup_func"] = ::setupagent;
level.agent_definition["zombie_brute"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["zombie_brute"]["on_killed"] = ::func_C4D1;
level.agent_funcs["zombie_brute"]["on_damaged_finished"] = ::func_C4D0;
level.var_3111 = ::func_3110;
level.brute_loot_check = [];
}
//Function Number: 3
setupagent()
{
self.var_4004 = undefined;
self.var_BCF6 = undefined;
self.var_26B9 = undefined;
self.var_86BD = undefined;
self.name = undefined;
self.var_EB6A = undefined;
self.var_CA5B = undefined;
self.var_13CA0 = undefined;
self.var_C2AD = undefined;
self.sessionteam = undefined;
self.sessionstate = undefined;
self.var_55E6 = undefined;
self.disabledweaponswitch = undefined;
self.var_55D9 = undefined;
self.var_55E4 = 1;
self.nocorpse = undefined;
self.ignoreme = 0;
self.var_180 = 0;
self.var_116D4 = undefined;
self.var_441A = undefined;
self.var_4B82 = undefined;
self.do_immediate_ragdoll = undefined;
self.var_37FD = 0;
self.var_24CA = undefined;
self.entered_playspace = 0;
self.var_B36E = undefined;
self.var_126A3 = undefined;
self.var_8C35 = 0;
self.var_9342 = 1;
self.var_9341 = 1;
self.var_1B03 = "idle";
self.var_1F5 = "run";
self.sharpturnnotifydist = 150;
self.var_257 = 20;
self.height = 53;
self.var_252B = 26 + self.var_257;
self.var_B640 = "normal";
self.var_B641 = 50;
self.var_2539 = 54;
self.var_253A = -64;
self.var_4D45 = 2250000;
self.var_181 = 1;
self.var_86BD = self getentitynumber();
self.var_BCE4 = 1;
self.var_C081 = 1;
self.var_126E8 = 1;
self.var_772A = 1;
self.var_2AB2 = 0;
self.var_2AB8 = 1;
self.var_118FC = 0;
self.var_2F = 1;
self.var_B5F9 = 40;
self.var_B62E = 100;
self.var_B62F = squared(self.var_B62E);
self.var_503C = self.var_257 + 1;
self.var_B607 = 0.5;
self.var_565C = 0;
self.var_54CB = 0;
self.var_9E0C = undefined;
self.flung = undefined;
self.var_565C = 0;
self.var_B0FC = 1;
self.full_gib = 0;
lib_0F74::func_F794(self.var_B62E);
self.var_B631 = 100;
self.croc_chomp = 0;
self.spawn_round_num = level.wave_num;
self.footstepdetectdist = 600;
self.footstepdetectdistwalk = 600;
self.footstepdetectdistsprint = 600;
self.allowpain = 1;
if(getdvarint("scr_zombie_left_foot_sharp_turn_only",0) == 1)
{
self.var_AB3F = 1;
}
self.var_1009D = ::func_3121;
thread func_B9B9();
thread func_BA27();
thread func_899C();
var_00 = getdvarint("scr_zombie_traversal_push",1);
if(var_00 == 1)
{
thread func_311D();
}
thread func_89C9();
func_108D6();
thread func_3112();
thread func_88F5();
thread func_88BA();
}
//Function Number: 4
func_89C9()
{
scripts\common\utility::func_136F7();
lib_0A1B::func_2968("run");
level thread lib_0D62::func_CE9C(self,"run_grunt",1);
}
//Function Number: 5
func_899C()
{
self endon("death");
level waittill("game_ended");
self method_841F();
foreach(var_04, var_01 in self.var_164D)
{
var_02 = var_01.var_4BC0;
var_03 = level.var_2303[var_04].var_10E2F[var_02];
lib_0A1A::func_2388(var_04,var_02,var_03,var_03.var_116FB);
lib_0A1A::func_238A(var_04,"idle",0.2,undefined,undefined,undefined);
}
}
//Function Number: 6
func_FACE(param_00)
{
self setmodel(func_7D86());
thread func_50EF();
}
//Function Number: 7
func_7D86()
{
var_00 = ["zmb_brute_mascot_body"];
return scripts\common\utility::random(var_00);
}
//Function Number: 8
func_50EF()
{
self endon("death");
wait(0.5);
if(isdefined(level.var_C01F))
{
return;
}
self method_80BB(1,0.1);
}
//Function Number: 9
func_AEB0()
{
level._effect["laser_muzzle_flash"] = loadfx("vfx/iw7/core/zombie/vfx_zmb_brute_lensf.vfx");
}
//Function Number: 10
func_3110(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
var_0C = 25;
var_0D = var_0C * var_0C;
var_0E = self gettagorigin("tag_eye");
var_0F = (param_08 == "head" || param_08 == "helmet" || param_08 == "neck") && param_04 != "MOD_MELEE" && param_04 != "MOD_IMPACT" && param_04 != "MOD_CRUSH";
if(!var_0F && param_08 == "torso_upper" && self.var_8E14 == "hand" && distancesquared(param_06,var_0E) < var_0D)
{
var_0F = 1;
}
if(var_0F)
{
param_02 = func_EBAC(param_02,param_05);
var_10 = param_02 / 3;
if(isdefined(param_05) && param_05 == "zmb_imsprojectile_mp" || param_05 == "zmb_fireworksprojectile_mp")
{
param_02 = 0;
}
else
{
param_02 = max(10,var_10);
}
if(self.var_8E14 == "head")
{
if(!isdefined(self.var_8DDE))
{
self.var_8DDE = 0;
}
self.var_8DDE = self.var_8DDE + param_02;
param_02 = 1;
}
}
else
{
param_02 = 1;
}
return param_02;
}
//Function Number: 11
func_EBAC(param_00,param_01)
{
var_02 = getweaponbasename(param_01);
if(!isdefined(var_02))
{
return;
}
var_03 = 2000;
switch(var_02)
{
case "iw7_headcutter_zm_pap1":
case "iw7_headcutter_zm":
case "iw7_facemelter_zm_pap1":
case "iw7_facemelter_zm":
case "iw7_dischord_zm_pap1":
case "iw7_dischord_zm":
case "iw7_shredder_zm_pap1":
case "iw7_shredder_zm":
param_00 = var_03;
break;
}
return param_00;
}
//Function Number: 12
func_108D6()
{
self.var_527A = "head";
self.var_8E14 = "head";
}
//Function Number: 13
func_BCBC()
{
self.var_8E14 = "hand";
self setscriptablepartstate("eyes","yellow_eyes");
self.var_BCE4 = 1;
lib_0A1B::func_2968("sprint");
}
//Function Number: 14
func_BCBD()
{
self setscriptablepartstate("eyes","eye_glow_off");
self.var_8E14 = "head";
self.var_BCE4 = 1;
lib_0A1B::func_2968("run");
}
//Function Number: 15
func_DB25(param_00)
{
self endon("death");
self notify("reset_helmet_timer");
self endon("reset_helmet_timer");
wait(param_00);
if(self.var_8E14 == "hand")
{
self.var_527A = "head";
}
}
//Function Number: 16
func_3112()
{
self endon("death");
if(!isdefined(self.var_8DDE))
{
self.var_8DDE = 0;
}
while(!isdefined(self.maxhealth))
{
wait(0.1);
}
self.var_8E09 = 0;
for(;;)
{
var_00 = self.health / self.maxhealth;
var_01 = max(self.var_8DF0 * var_00,1000);
if(self.var_8E09 == 1)
{
var_01 = var_01 * 0.5;
}
self waittill("helmet_damage");
if(self.var_8DDE > var_01)
{
self.var_8E09++;
self.var_527A = "hand";
self.var_8DDE = 0;
if(self.var_8E09 < 2)
{
thread func_DB25(20);
}
}
}
}
//Function Number: 17
func_C4D0(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
if(!isdefined(self.var_8E09))
{
self.var_8E09 = 0;
}
if(self.croc_chomp)
{
param_02 = 1;
}
else if(param_08 == "head" || param_02 > 1)
{
var_0D = "standard";
if(self.var_8E14 == "head")
{
if(!isdefined(self.var_8DDE))
{
self.var_8DDE = 0;
}
self notify("helmet_damage");
param_02 = 0;
}
else
{
var_0D = "hitcritical";
if(self.var_8E09 < 2)
{
thread func_DB25(5);
}
}
if(isplayer(param_01))
{
param_01 thread scripts\cp\_damage::func_12E84(var_0D,undefined,param_02);
}
}
else if(param_08 == "helmet")
{
var_0D = "standard";
if(self.var_8E14 == "head")
{
if(!isdefined(self.var_8DDE))
{
self.var_8DDE = 0;
}
self notify("helmet_damage");
if(isplayer(param_01))
{
param_01 thread scripts\cp\_damage::func_12E84(var_0D,undefined,param_02);
}
param_02 = 0;
}
else
{
param_02 = 0;
}
}
else
{
param_02 = 0;
}
scripts\mp\_mp_agent::func_5004(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C);
}
//Function Number: 18
brute_killed_vo(param_00)
{
if(isplayer(param_00))
{
param_00 thread scripts\cp\_vo::try_to_play_vo("killfirm_brute","zmb_comment_vo","medium",10,0,0,0,20);
}
wait(4);
level thread scripts\cp\_vo::try_to_play_vo("ww_brute_death","zmb_ww_vo","highest",60,0,0,1);
}
//Function Number: 19
func_C4D1(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
level thread brute_killed_vo(param_01);
func_10838(self.var_1657,param_03,param_04);
self.death_anim_no_ragdoll = 1;
scripts\mp\_mp_agent::func_5006(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
var_09 = scripts\common\utility::random(["ammo_max","instakill_30","cash_2","instakill_30","cash_2","instakill_30","cash_2"]);
if(isdefined(var_09) && !isdefined(self.var_72AC))
{
if(!isdefined(level.brute_loot_check[self.spawn_round_num]))
{
level.brute_loot_check[self.spawn_round_num] = 1;
level thread scripts\cp\zombies\_powerups::drop_loot(self.origin,param_01,var_09);
}
}
var_0A = 400;
foreach(var_0C in level.players)
{
var_0C scripts\cp\_persistence::func_82F9(var_0A);
var_0C lib_0D2A::func_12D7C("THE_BIGGER_THEY_ARE",1);
}
}
//Function Number: 20
func_10838(param_00,param_01,param_02)
{
self.var_CE65 = 1;
}
//Function Number: 21
func_10840(param_00)
{
}
//Function Number: 22
func_B9B9()
{
self endon("death");
level endon("game_ended");
}
//Function Number: 23
func_BA27()
{
self endon("death");
level endon("game_ended");
}
//Function Number: 24
func_A012()
{
if(!isdefined(level.var_13F60))
{
return 0;
}
return level.var_13F60;
}
//Function Number: 25
func_A632(param_00)
{
param_00 dodamage(param_00.health + 500000,param_00.origin);
}
//Function Number: 26
func_311E(param_00,param_01)
{
foreach(var_03 in level.players)
{
var_04 = self.origin[2] - var_03.origin[2];
if(abs(var_04) < param_01)
{
var_05 = distance2dsquared(self.origin,var_03.origin);
if(var_05 < param_00)
{
var_06 = self.var_381;
var_07 = length2d(var_06);
if(var_07 == 0)
{
break;
}
var_08 = var_03.origin - self.origin;
var_08 = (var_08[0],var_08[1],0);
var_09 = vectornormalize(var_08);
if(var_07 < 60)
{
var_07 = 60;
}
var_0A = var_03 getvelocity();
var_0A = (var_0A[0],var_0A[1],0);
var_0B = length2d(var_0A);
if(var_0B > 0)
{
var_0C = var_09 * var_07;
var_0D = var_0A + var_0C;
var_0E = length2d(var_0D);
if(vectordot(var_0D,var_0C) < 0)
{
var_0F = vectorcross((0,0,1),var_09);
if(vectordot(var_0F,var_0A) > 0)
{
var_0B = length2d(var_0A);
var_0A = var_0F * var_0B;
}
else
{
var_10 = var_0F * -1;
var_0B = length2d(var_0A);
var_0A = var_10 * var_0B;
}
var_0D = var_0A + var_0C;
var_07 = length2d(var_0D);
}
else
{
if(var_0B > var_07)
{
var_07 = var_0B;
}
var_09 = vectornormalize(var_0D);
}
}
var_03 method_84DC(var_09,var_07);
}
}
}
}
//Function Number: 27
func_311F()
{
self endon("death");
level endon("game_ended");
self endon("traverse_end");
for(;;)
{
func_311E(3600,100);
scripts\common\utility::func_136F7();
}
}
//Function Number: 28
func_311D()
{
self endon("death");
self endon("game_ended");
for(;;)
{
self waittill("traverse_begin");
func_311F();
}
}
//Function Number: 29
func_3121()
{
if(!isdefined(self.var_527A) || !isdefined(self.var_8E14))
{
return 0;
}
if(self.var_8E14 != self.var_527A)
{
return 1;
}
return 0;
}
//Function Number: 30
func_88F5()
{
self endon("death");
level endon("game_ended");
for(;;)
{
self waittill("large_footstep");
var_00 = scripts\common\utility::func_782F(self.origin,level.players,undefined,undefined,500);
foreach(var_02 in var_00)
{
var_02 earthquakeforplayer(0.2,0.25,self.origin,500);
var_02 method_8246("artillery_rumble",self.origin);
}
}
}
//Function Number: 31
func_3116()
{
self endon("death");
var_00 = 0;
for(;;)
{
if(scripts\common\utility::istrue(self.var_3117))
{
var_00 = 0;
wait(1);
continue;
}
if(scripts\common\utility::istrue(self.var_9CEC))
{
var_00 = 0;
wait(1);
continue;
}
var_01 = undefined;
var_02 = level.var_10816;
foreach(var_04 in var_02)
{
if(!var_04.var_19)
{
continue;
}
if(self istouching(var_04))
{
var_01 = var_04;
break;
}
}
if(!isdefined(var_01))
{
var_00 = 0;
self notify("no_path_to_targets");
}
else
{
var_06 = lib_0D60::func_800B(var_01);
if(var_06 == 0)
{
var_07 = 0;
var_02 = var_01.var_186E;
if(isdefined(var_02))
{
foreach(var_04 in var_02)
{
var_06 = lib_0D60::func_800B(var_04);
if(var_06 > 0)
{
var_07 = 1;
break;
}
}
}
if(!var_07)
{
var_00++;
}
else
{
var_00 = 0;
}
}
else
{
var_00 = 0;
}
if(var_00 > 5)
{
self notify("no_path_to_targets");
var_00 = 0;
}
}
wait(1);
}
}
//Function Number: 32
func_88BA()
{
self endon("death");
level endon("game_ended");
thread func_3116();
for(;;)
{
self waittill("no_path_to_targets");
self.var_3117 = 1;
func_1164D();
self.var_3117 = 0;
}
}
//Function Number: 33
func_6CA4()
{
var_00 = scripts\cp\zombies\zombies_spawning::func_7C2E();
return var_00;
}
//Function Number: 34
func_1164D()
{
var_00 = spawnstruct();
var_00.origin = self.origin;
scripts\cp\zombies\zombies_spawning::func_3115(var_00);
self.var_180 = 1;
var_01 = scripts\common\utility::getstruct("brute_hide_org","targetname");
self setorigin(var_01.origin,1);
self method_82EF(self.origin);
wait(3);
var_02 = func_6CA4();
scripts\cp\zombies\zombies_spawning::func_3115(var_02);
self setorigin(var_02.origin + (0,0,3),1);
self.var_180 = 0;
wait(3);
}

View File

@ -0,0 +1,111 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\zombie_dlc1\zombie_dlc1_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 9
* Decompile Time: 482 ms
* Timestamp: 10/27/2023 12:11:26 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
behaviortree\zombie_dlc1::func_DEE8();
scripts\asm\zombie_dlc1\mp\states::func_2371();
level.var_13BDC = 1;
level.var_4878 = 0;
level.var_BF7C = 0;
level.var_BCCE = [];
level.var_BCE5 = [];
level.var_C082 = [];
level.var_126E9 = [];
level.var_8EE6 = [];
level.var_5662 = [];
level.var_D437 = "allies";
scripts\mp\agents\zombie\zmb_zombie_agent::func_9890();
scripts\mp\agents\zombie\zmb_zombie_agent::func_98A5();
scripts\mp\agents\zombie\zmb_zombie_agent::func_97FB();
scripts\mp\agents\zombie\zmb_zombie_agent::func_AEB0();
thread func_FAB0();
thread scripts\mp\agents\zombie\zmb_zombie_agent::func_BC5C();
}
//Function Number: 2
zombieinit_dlc1()
{
lib_0C75::func_13F9A();
}
//Function Number: 3
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["generic_zombie"]["setup_func"] = ::setupagent;
level.agent_definition["generic_zombie"]["setup_model_func"] = ::func_FACE;
level.var_BCCE["generic_zombie"] = ::lib_0CBC::func_E7FD;
level.agent_funcs["generic_zombie"]["on_damaged_finished"] = ::func_C5CE;
level.agent_funcs["generic_zombie"]["on_killed"] = ::func_C5D2;
}
//Function Number: 4
setupagent()
{
scripts\mp\agents\zombie\zmb_zombie_agent::setupagent();
}
//Function Number: 5
func_FACE(param_00)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_FACE();
}
//Function Number: 6
dopiranhatrapdeath()
{
lib_0A1A::func_237C("piranha_trap");
}
//Function Number: 7
func_C5CE(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_C5CE(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C);
}
//Function Number: 8
func_C5D2(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
if(isdefined(self.balloon_in_hand))
{
self.balloon_in_hand delete();
self.balloon_in_hand = undefined;
}
if(isdefined(self.bholdingballooninleft) && isdefined(self.balloon_model))
{
if(self.bholdingballooninleft)
{
self detach(self.balloon_model,"tag_accessory_left");
}
else
{
self detach(self.balloon_model,"tag_accessory_right");
}
}
self.bholdingballooninleft = undefined;
self.balloon_model = undefined;
scripts\mp\agents\zombie\zmb_zombie_agent::func_C5D2(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}
//Function Number: 9
func_C4BD(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_C4BD(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09);
}

View File

@ -0,0 +1,98 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\zombie_dlc2\zombie_dlc2_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 9
* Decompile Time: 495 ms
* Timestamp: 10/27/2023 12:11:27 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
behaviortree\zombie_dlc2::func_DEE8();
scripts\asm\zombie_dlc2\mp\states::func_2371();
level.agent_definition["generic_zombie"]["asm"] = "zombie_dlc2";
level.agent_definition["generic_zombie"]["behaviorTree"] = "zombie_dlc2";
level.agent_definition["generic_zombie"]["animclass"] = "zombie_dlc2_animclass";
level.var_13BDC = 1;
level.var_4878 = 0;
level.var_BF7C = 0;
level.var_BCCE = [];
level.var_BCE5 = [];
level.var_C082 = [];
level.var_126E9 = [];
level.var_8EE6 = [];
level.var_5662 = [];
level.var_D437 = "allies";
scripts\mp\agents\zombie\zmb_zombie_agent::func_9890();
scripts\mp\agents\zombie\zmb_zombie_agent::func_98A5();
scripts\mp\agents\zombie\zmb_zombie_agent::func_97FB();
scripts\mp\agents\zombie\zmb_zombie_agent::func_AEB0();
thread func_FAB0();
thread scripts\mp\agents\zombie\zmb_zombie_agent::func_BC5C();
}
//Function Number: 2
zombieinit_dlc2()
{
lib_0C75::func_13F9A();
}
//Function Number: 3
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["generic_zombie"]["setup_func"] = ::setupagent;
level.agent_definition["generic_zombie"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["generic_zombie"]["gametype_on_killed"] = ::scripts\cp\maps\cp_disco\cp_disco_damage::cp_disco_onzombiekilled;
level.var_BCCE["generic_zombie"] = ::lib_0CBC::func_E7FD;
level.agent_funcs["generic_zombie"]["on_damaged"] = ::scripts\cp\maps\cp_disco\cp_disco_damage::cp_disco_onzombiedamaged;
level.agent_funcs["generic_zombie"]["on_damaged_finished"] = ::scripts\mp\agents\zombie\zmb_zombie_agent::func_C5CE;
level.agent_funcs["generic_zombie"]["on_killed"] = ::func_C5D2;
}
//Function Number: 4
setupagent()
{
scripts\mp\agents\zombie\zmb_zombie_agent::setupagent();
self.kung_fu_punched = 0;
self.pinched = undefined;
}
//Function Number: 5
func_FACE(param_00)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_FACE();
}
//Function Number: 6
dopiranhatrapdeath()
{
lib_0A1A::func_237C("piranha_trap");
}
//Function Number: 7
func_C5CE(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_C5CE(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C);
}
//Function Number: 8
func_C5D2(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_C5D2(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}
//Function Number: 9
func_C4BD(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_C4BD(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09);
}

View File

@ -0,0 +1,135 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\zombie_dlc3\zombie_dlc3_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 11
* Decompile Time: 576 ms
* Timestamp: 10/27/2023 12:11:28 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
behaviortree\zombie_dlc3::func_DEE8();
scripts\asm\zombie_dlc3\mp\states::func_2371();
level.agent_definition["generic_zombie"]["asm"] = "zombie_dlc3";
level.agent_definition["generic_zombie"]["behaviorTree"] = "zombie_dlc3";
level.agent_definition["generic_zombie"]["animclass"] = "zombie_dlc3_animclass";
level.var_13BDC = 1;
level.var_4878 = 0;
level.var_BF7C = 0;
level.var_BCCE = [];
level.var_BCE5 = [];
level.var_C082 = [];
level.var_126E9 = [];
level.var_8EE6 = [];
level.var_5662 = [];
level.var_D437 = "allies";
scripts\mp\agents\zombie\zmb_zombie_agent::func_9890();
scripts\mp\agents\zombie\zmb_zombie_agent::func_98A5();
scripts\mp\agents\zombie\zmb_zombie_agent::func_97FB();
scripts\mp\agents\zombie\zmb_zombie_agent::func_AEB0();
thread func_FAB0();
thread scripts\mp\agents\zombie\zmb_zombie_agent::func_BC5C();
}
//Function Number: 2
zombieinit_dlc()
{
lib_0C75::func_13F9A();
}
//Function Number: 3
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["generic_zombie"]["setup_func"] = ::setupagent;
level.agent_definition["generic_zombie"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["generic_zombie"]["gametype_on_killed"] = ::scripts\cp\maps\cp_town\cp_town_damage::cp_town_onzombiekilled;
level.agent_funcs["generic_zombie"]["gametype_on_damage_finished"] = ::lib_0CBC::func_C5CE;
level.agent_funcs["generic_zombie"]["on_damaged"] = ::scripts\cp\maps\cp_town\cp_town_damage::cp_town_onzombiedamaged;
level.agent_funcs["generic_zombie"]["on_damaged_finished"] = ::func_C5CE;
level.agent_funcs["generic_zombie"]["on_killed"] = ::func_C5D2;
level.var_BCCE["generic_zombie"] = ::lib_0CBC::func_E7FD;
level.soldier_models = ["zombie_dlc3_male_soldier_02","zombie_dlc3_male_soldier_03","zombie_dlc3_male_soldier_04"];
}
//Function Number: 4
setupagent()
{
scripts\mp\agents\zombie\zmb_zombie_agent::setupagent();
self.kung_fu_punched = 0;
self.pinched = undefined;
}
//Function Number: 5
func_FACE(param_00)
{
if(should_be_soldier())
{
self.is_soldier = 1;
self.dontmutilate = 1;
setup_solider_model();
return;
}
self.is_soldier = undefined;
scripts\mp\agents\zombie\zmb_zombie_agent::func_FACE();
}
//Function Number: 6
should_be_soldier()
{
if(level.wave_num < 5)
{
return 0;
}
var_00 = randomint(100);
if(var_00 < 15)
{
return 1;
}
return 0;
}
//Function Number: 7
setup_solider_model()
{
var_00 = randomint(level.soldier_models.size);
var_01 = level.soldier_models[var_00];
self setmodel(var_01);
thread scripts\mp\agents\zombie\zmb_zombie_agent::func_50EF();
}
//Function Number: 8
dopiranhatrapdeath()
{
lib_0A1A::func_237C("piranha_trap");
}
//Function Number: 9
func_C5CE(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_C5CE(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C);
}
//Function Number: 10
func_C5D2(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_C5D2(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}
//Function Number: 11
func_C4BD(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_C4BD(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09);
}

View File

@ -0,0 +1,113 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\zombie_dlc4\zombie_dlc4_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 9
* Decompile Time: 541 ms
* Timestamp: 10/27/2023 12:11:29 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
behaviortree\zombie_dlc4::func_DEE8();
scripts\asm\zombie_dlc4\mp\states::func_2371();
if(!isdefined(level.var_10970))
{
level.var_10970 = [];
}
level.agent_definition["generic_zombie"]["asm"] = "zombie_dlc4";
level.agent_definition["generic_zombie"]["behaviorTree"] = "zombie_dlc4";
level.agent_definition["generic_zombie"]["animclass"] = "zombie_dlc4_animclass";
level.var_13BDC = 1;
level.var_4878 = 0;
level.var_BF7C = 0;
level.var_BCCE = [];
level.var_BCE5 = [];
level.var_C082 = [];
level.var_126E9 = [];
level.var_8EE6 = [];
level.var_5662 = [];
level.var_D437 = "allies";
scripts\mp\agents\zombie\zmb_zombie_agent::func_9890();
scripts\mp\agents\zombie\zmb_zombie_agent::func_98A5();
scripts\mp\agents\zombie\zmb_zombie_agent::func_97FB();
scripts\mp\agents\zombie\zmb_zombie_agent::func_AEB0();
thread func_FAB0();
thread scripts\mp\agents\zombie\zmb_zombie_agent::func_BC5C();
}
//Function Number: 2
zombieinit_dlc()
{
lib_0C75::func_13F9A();
}
//Function Number: 3
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["generic_zombie"]["setup_func"] = ::setupagent;
level.agent_definition["generic_zombie"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["generic_zombie"]["gametype_on_damage_finished"] = ::lib_0CBC::func_C5CE;
level.agent_funcs["generic_zombie"]["gametype_on_killed"] = ::scripts\cp\maps\cp_final\cp_final_damage::cp_final_onzombiekilled;
level.agent_funcs["generic_zombie"]["on_damaged"] = ::scripts\cp\maps\cp_final\cp_final_damage::cp_final_onzombiedamaged;
level.agent_funcs["generic_zombie"]["on_damaged_finished"] = ::func_C5CE;
level.agent_funcs["generic_zombie"]["on_killed"] = ::func_C5D2;
}
//Function Number: 4
setupagent()
{
scripts\mp\agents\zombie\zmb_zombie_agent::setupagent();
self.kung_fu_punched = 0;
self.pinched = undefined;
self.fridge_trap_marked = undefined;
if(scripts\common\utility::istrue(self.activated_venomx_sphere))
{
self.activated_venomx_sphere = undefined;
}
if(scripts\common\utility::istrue(self.dot_triggered))
{
self.dot_triggered = undefined;
}
}
//Function Number: 5
func_FACE(param_00)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_FACE();
}
//Function Number: 6
dopiranhatrapdeath()
{
lib_0A1A::func_237C("piranha_trap");
}
//Function Number: 7
func_C5CE(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_C5CE(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C);
}
//Function Number: 8
func_C5D2(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_C5D2(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}
//Function Number: 9
func_C4BD(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
scripts\mp\agents\zombie\zmb_zombie_agent::func_C4BD(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09);
}

View File

@ -0,0 +1,662 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\zombie_grey\zombie_grey_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 34
* Decompile Time: 1204 ms
* Timestamp: 10/27/2023 12:31:52 AM
*******************************************************************/
//Function Number: 1
registerscriptedagent()
{
lib_0A02::init();
lib_03B5::func_DEE8();
lib_0F47::func_2371();
func_9812();
func_98E9();
func_98E8();
func_9885();
func_98D8();
thread func_FAB0();
}
//Function Number: 2
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["zombie_grey"]["setup_func"] = ::setupagent;
level.agent_funcs["zombie_grey"]["on_killed"] = ::func_C5D1;
level.agent_funcs["zombie_grey"]["on_damaged"] = ::func_C5CF;
level.agent_funcs["zombie_grey"]["gametype_on_killed"] = ::lib_0CBC::func_C5D2;
level.agent_funcs["zombie_grey"]["gametype_on_damage_finished"] = ::func_C5D0;
}
//Function Number: 3
func_98E8()
{
scripts\common\utility::flag_init("clone_complete");
}
//Function Number: 4
func_9885()
{
level.var_85EE = 0;
}
//Function Number: 5
func_98D8()
{
level.var_85F2 = [];
var_00 = [(324,1657,195),(319,1164,195),(980,1639,196),(966,1148,196),(210,3338,259),(425,3778,259),(985,3777,259),(1164,3204,259),(453,187,226),(452,-86,195),(859,189,195),(839,-62,227),(184,2260,284),(1066,2275,285),(974,1752,220),(334,1049,220),(967,1516,219),(968,1281,219),(967,1043,222),(934,313,248),(373,314,243),(236,990,243),(1048,991,242),(1272,999,283),(1224,319,297),(-56,990,297),(77,318,297),(141,-197,302),(-344,-941,182),(133,-1281,606),(695,-1616,611),(449,-1472,595),(-277,-396,239),(-395,-339,388),(1151,-840,115)];
foreach(var_02 in var_00)
{
var_03 = func_B28D(var_02);
level.var_85F2[level.var_85F2.size] = var_03;
}
}
//Function Number: 6
func_B28D(param_00)
{
var_01 = spawnstruct();
var_01.origin = param_00;
return var_01;
}
//Function Number: 7
setupagent()
{
self.var_71D0 = ::func_1004E;
self.accuracy = 0.5;
self.noattackeraccuracymod = 0;
self.sharpturnnotifydist = 48;
self.last_enemy_sight_time = 0;
self.desiredenemydistmax = 360;
self.desiredenemydistmin = 340;
self.maxtimetostrafewithoutlos = 3000;
self.strafeifwithindist = self.desiredenemydistmax + 100;
self.fastcrawlanimscale = 12;
self.forcefastcrawldist = 340;
self.fastcrawlmaxhealth = 40;
self.dismemberchargeexplodedistsq = 2500;
self.explosionradius = 75;
self.explosiondamagemin = 30;
self.explosiondamagemax = 50;
self.var_86BD = self getentitynumber();
self.var_272A = 0;
self.meleerangesq = 22500;
self.meleechargedist = 160;
self.meleechargedistvsplayer = 250;
self.meleechargedistreloadmultiplier = 1.2;
self.maxzdiff = 50;
self.meleeactorboundsradius = 32;
self.meleemindamage = 50;
self.meleemaxdamage = 70;
self.var_B62B = ::func_85F8;
self.var_BF9F = gettime() + randomintrange(3000,5000);
self.var_9343 = 1;
self.var_9340 = 1;
self.var_9342 = 1;
self.var_9341 = 1;
self.allowpain = 0;
self.var_1A44 = 90;
self.footstepdetectdist = 600;
self.footstepdetectdistwalk = 600;
self.footstepdetectdistsprint = 600;
self.var_4F63 = ::func_85F6;
func_2475();
func_FAA6();
self setscriptablepartstate("backpack_dome_shield","on");
if(isdefined(level.var_8600))
{
[[ level.var_8600 ]](self);
}
thread scriptedgoalwaitforarrival();
thread func_8CAC(self);
}
//Function Number: 8
func_85F6(param_00,param_01)
{
if(scripts\common\utility::istrue(self.var_927D))
{
lib_0C33::func_295A();
return;
}
lib_0C33::func_295C();
}
//Function Number: 9
func_85F8(param_00,param_01)
{
var_02 = vectornormalize(param_01.origin - param_00.origin) * (1,1,0);
param_01 setvelocity(var_02 * 800);
param_00 playsound("grey_force_push");
if(isplayer(param_01))
{
param_01 earthquakeforplayer(0.5,1,param_01.origin,800);
if(!scripts\common\utility::istrue(param_00.var_927D))
{
param_01 shellshock("frag_grenade_mp",1);
}
}
}
//Function Number: 10
func_1004E()
{
if(isdefined(self.allowpain) && self.allowpain == 0)
{
return 0;
}
var_00 = gettime();
if(var_00 < self.var_BF9F)
{
return 0;
}
self.var_BF9F = var_00 + randomintrange(3000,5000);
return 1;
}
//Function Number: 11
func_2475()
{
if(isdefined(self.var_2AB4) && self.var_2AB4 == 0)
{
return;
}
self.var_13525 = "american";
self method_82C6("cloth");
var_00 = [];
var_00["tag_armor_head_ri"] = 165;
var_00["tag_armor_head_le"] = 165;
var_00["tag_armor_head_front"] = 165;
var_00["tag_armor_forearm_le"] = 120;
var_00["tag_armor_bicep_le"] = 120;
var_00["tag_armor_forearm_ri"] = 120;
var_00["tag_armor_bicep_ri"] = 120;
var_00["tag_armor_chest_upper_le"] = 165;
var_00["tag_armor_chest_upper_ri"] = 165;
var_00["tag_armor_back_upper"] = 165;
var_00["tag_armor_chest_stomach"] = 165;
var_00["tag_armor_back_lower"] = 165;
var_00["tag_armor_leg_thigh_front_le"] = 120;
var_00["tag_armor_leg_thigh_back_le"] = 120;
var_00["tag_armor_leg_thigh_front_ri"] = 120;
var_00["tag_armor_leg_thigh_back_ri"] = 120;
var_00["tag_armor_kneepad_behind_le"] = 50;
var_00["tag_armor_kneepad_down_le"] = 50;
var_00["tag_armor_kneepad_upper_le"] = 50;
var_00["tag_armor_kneepad_behind_ri"] = 50;
var_00["tag_armor_kneepad_down_ri"] = 50;
var_00["tag_armor_kneepad_upper_ri"] = 50;
self.var_2AB4 = 1;
}
//Function Number: 12
func_FAA6()
{
self.var_2AB5 = 1;
}
//Function Number: 13
func_17CC(param_00,param_01)
{
if(!isdefined(level.var_85DF))
{
anim.var_85DF = [];
anim.var_85E1 = [];
}
var_02 = level.var_85DF.size;
level.var_85DF[var_02] = param_00;
level.var_85E1[var_02] = param_01;
}
//Function Number: 14
func_9812()
{
func_17CC(0,(41.5391,7.28883,72.2128));
func_17CC(1,(34.8849,-4.77048,74.0488));
}
//Function Number: 15
scriptedgoalwaitforarrival()
{
self endon("death");
for(;;)
{
self waittill("goal_reached");
if(isdefined(self.var_EF7D))
{
var_00 = self.var_EF7D;
}
else if(isdefined(self.var_EF7A))
{
var_00 = self.var_EF7A.origin;
}
else if(isdefined(self.var_EF7C))
{
var_00 = self.var_EF7C.origin;
}
else
{
continue;
}
var_01 = 16;
if(isdefined(self.var_EF7E))
{
var_01 = self.var_EF7E * self.var_EF7E;
}
if(distance2dsquared(self.origin,var_00) <= var_01)
{
self.var_EF7D = undefined;
self.var_EF7C = undefined;
if(!isdefined(self.var_EF7B))
{
self.var_EF7A = undefined;
}
self notify("scriptedGoal_reached");
}
}
}
//Function Number: 16
func_F834(param_00,param_01)
{
if(!isdefined(param_01))
{
param_01 = 0;
}
self.var_EF79 = param_01;
self.var_EF73 = param_00;
}
//Function Number: 17
func_F835(param_00,param_01)
{
self.var_EF7A = undefined;
self.var_EF7B = undefined;
self.var_EF7C = undefined;
self.var_EF7D = param_00;
self.var_EF7E = param_01;
}
//Function Number: 18
func_F833(param_00,param_01)
{
self.var_EF7D = undefined;
self.var_EF7A = undefined;
self.var_EF7B = undefined;
self.var_EF7C = param_00;
self.var_EF7E = param_01;
}
//Function Number: 19
func_F832(param_00,param_01,param_02)
{
self.var_EF7D = undefined;
self.var_EF7C = undefined;
self.var_EF7A = param_00;
self.var_EF7E = param_01;
if(isdefined(param_02) && param_02)
{
self.var_EF7B = param_02;
return;
}
self.var_EF7B = undefined;
}
//Function Number: 20
func_41D9()
{
if(isdefined(self.var_EF7D) || isdefined(self.var_EF7A) || isdefined(self.var_EF7C))
{
self.var_EF7D = undefined;
self.var_EF7A = undefined;
self.var_EF7B = undefined;
self.var_EF7C = undefined;
self method_841F();
}
}
//Function Number: 21
func_C5D1(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
scripts\mp\_mp_agent::func_5006(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
foreach(var_0A in level.players)
{
var_0A scripts\cp\_persistence::give_player_xp(1000,1);
}
if(isdefined(level.var_85F1))
{
[[ level.var_85F1 ]](self,param_01,param_04,param_06,param_03);
}
}
//Function Number: 22
try_merge_clones(param_00)
{
if(isdefined(level.var_10850) && level.var_10850.size > 1)
{
if(!isdefined(param_00))
{
param_00 = func_79F0();
}
var_01 = func_79F1(param_00);
foreach(var_03 in level.var_10850)
{
if(var_03 == var_01)
{
continue;
}
func_B67C(var_03,var_01);
}
func_12BFD(var_01);
var_01 notify("update_mobile_shield_visibility",1);
var_01 thread func_50D4(var_01);
}
level notify("grey_duplicating_attack_end");
}
//Function Number: 23
func_50D4(param_00)
{
param_00 endon("death");
wait(1.5);
param_00 suicide();
}
//Function Number: 24
func_12BFD(param_00)
{
func_B2C4(param_00);
param_00.var_927D = 0;
param_00.var_10AB7 = undefined;
param_00.desiredenemydistmax = 360;
param_00.meleerangesq = 90000;
param_00.strafeifwithindist = param_00.desiredenemydistmax + 100;
param_00.var_380E = 0;
param_00.var_380F = 0;
param_00 setmodel("park_alien_gray");
param_00 method_834E();
lib_0C2E::func_F499(param_00);
lib_0C2E::func_E223(param_00);
lib_0C78::func_E2FB(param_00);
lib_0C78::func_E2FA(param_00);
param_00 thread func_8CAC(param_00);
param_00 scripts\mp\_mp_agent::func_FAFA("iw7_zapper_grey");
}
//Function Number: 25
func_B2C4(param_00)
{
var_01 = param_00.var_269C;
foreach(var_03 in var_01)
{
if(scripts\common\utility::func_2286(param_00.var_269D,var_03.var_113E0))
{
var_03 show();
continue;
}
param_00.var_269C = scripts\common\utility::func_22A9(param_00.var_269C,var_03);
}
}
//Function Number: 26
func_79F1(param_00)
{
var_01 = undefined;
var_02 = -1;
foreach(var_04 in level.var_10850)
{
if(!isdefined(var_04))
{
continue;
}
if(var_04 == param_00)
{
continue;
}
if(var_04.health > var_02)
{
var_01 = var_04;
var_02 = var_04.health;
}
}
return var_01;
}
//Function Number: 27
func_79F0()
{
var_00 = undefined;
var_01 = 9999999;
foreach(var_03 in level.var_10850)
{
if(!isdefined(var_03))
{
continue;
}
if(var_03.health < var_01)
{
var_00 = var_03;
var_01 = var_03.health;
}
}
return var_00;
}
//Function Number: 28
func_B67C(param_00,param_01)
{
level thread func_CD95(param_00,param_01);
param_01.health = param_01.health + param_00.health;
param_00.nocorpse = 1;
if(isalive(param_00))
{
param_00 suicide();
}
}
//Function Number: 29
func_CD95(param_00,param_01)
{
var_02 = spawn("script_model",param_00.origin + (0,0,50));
var_02 setmodel("tag_origin");
wait(0.2);
playfxontag(level._effect["zombie_grey_teleport_trail"],var_02,"tag_origin");
var_02 moveto(param_01.origin + (0,0,50),0.8,0.8);
var_02 waittill("movedone");
var_02 delete();
}
//Function Number: 30
func_C5CF(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
var_0C = 3.5;
if(isdefined(param_01) && param_01 == self)
{
return;
}
if(scripts\common\utility::istrue(self.var_9C9D))
{
if(isdefined(param_04) && param_04 == "MOD_MELEE" && isdefined(self.var_1B6C) && isdefined(param_06) && distancesquared(param_06,self.var_1B6C.origin) < 225)
{
self playsound("grey_fuse_smash");
self.var_4C17 = max(self.var_B748,self.var_4C17 - self.var_B43F);
self.var_B570 = param_01;
self notify("stop_regen_health");
return;
}
else
{
var_0D = gettime();
if(isplayer(param_01))
{
if(!scripts\common\utility::istrue(self.actually_doing_regen))
{
scripts\cp\_agent_utils::func_D96B(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,self);
}
if(func_FF8A(self,param_01,var_0D))
{
param_01.var_D8A2 = var_0D;
if(randomint(100) > 80)
{
param_01 thread scripts\cp\_vo::try_to_play_vo("nag_ufo_fusefail","zmb_comment_vo","low",3,0,0,1);
}
}
}
return;
}
}
if(isdefined(var_0C) && var_0C == "j_chest_light")
{
param_09 = "head";
param_03 = int(param_03 * var_0D);
}
else if(isdefined(param_09) && param_09 == "head" || param_09 == "helmet" || param_09 == "neck")
{
param_09 = "soft";
param_03 = int(param_03 / var_0D);
}
if(isdefined(param_06) && param_06 == "zmb_imsprojectile_mp" || param_06 == "zmb_fireworksprojectile_mp")
{
param_03 = min(int(self.maxhealth / 20),1000);
}
param_04 = param_04 | level.var_92C0;
lib_0CBC::func_C5CD(param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,var_0C);
if(isdefined(param_03))
{
if(isplayer(param_02))
{
if(!isdefined(self.var_111BF))
{
lib_0C2E::func_E223(self);
}
self.var_111BF = self.var_111BF + param_03;
if(!scripts\common\utility::func_2286(self.var_DDBA,param_02))
{
self.var_DDBA = scripts\common\utility::array_add(self.var_DDBA,param_02);
return;
}
}
}
}
//Function Number: 31
func_C5D0(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
lib_0CBC::func_C5CE(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C);
lib_0C2E::func_12888(self,param_01);
lib_0C2E::func_12870(self);
}
//Function Number: 32
func_98E9()
{
level._effect["zombie_grey_shockwave_begin"] = loadfx("vfx/iw7/core/zombie/vfx_zmb_swave_begin.vfx");
level._effect["zombie_grey_shockwave_deploy"] = loadfx("vfx/iw7/core/zombie/vfx_zmb_swave_deploy.vfx");
level._effect["zombie_grey_teleport"] = loadfx("vfx/old/_requests/archetypes/vfx_phase_shift_start_volume");
level._effect["zombie_grey_teleport_trail"] = loadfx("vfx/iw7/core/zombie/vfx_zmb_grey_tport_trail.vfx");
level._effect["zombie_grey_start_duplicate"] = loadfx("vfx/iw7/_requests/coop/vfx_magicwheel_beam.vfx");
level._effect["summon_zombie_energy_ring"] = loadfx("vfx/iw7/core/zombie/vfx_zmb_grey_spawn_portal.vfx");
level._effect["zombie_mini_grey_shock_arc"] = loadfx("vfx/iw7/_requests/coop/vfx_mini_grey_shock_arc.vfx");
}
//Function Number: 33
func_FF8A(param_00,param_01,param_02)
{
var_03 = 3000;
var_04 = 22500;
if(distancesquared(param_00.origin,param_01.origin) > var_04)
{
return 0;
}
if(!isdefined(param_01.var_D8A2))
{
return 1;
}
if(param_02 - param_01.var_D8A2 > var_03)
{
return 1;
}
return 0;
}
//Function Number: 34
func_8CAC(param_00)
{
param_00 notify("stop_health_light_monitor");
level endon("game_ended");
param_00 endon("death");
param_00 endon("stop_health_light_monitor");
scripts\common\utility::func_136F7();
if(scripts\common\utility::istrue(param_00.var_927D))
{
return;
}
while(!isdefined(param_00.maxhealth))
{
scripts\common\utility::func_136F7();
}
var_01 = param_00.maxhealth * 0.33;
var_02 = param_00.maxhealth * 0.66;
for(;;)
{
if(param_00.health <= var_01)
{
param_00 setscriptablepartstate("health_light","red");
}
else if(param_00.health <= var_02)
{
param_00 setscriptablepartstate("health_light","yellow");
}
else
{
param_00 setscriptablepartstate("health_light","green");
}
param_00 scripts\common\utility::waittill_any_3("damage","update_health_light");
}
}

View File

@ -0,0 +1,172 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\zombie_sasquatch\zombie_sasquatch_agent.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 10
* Decompile Time: 634 ms
* Timestamp: 10/27/2023 12:11:29 AM
*******************************************************************/
//Function Number: 1
zombiesasquatchagentinit()
{
registerscriptedagent();
}
//Function Number: 2
registerscriptedagent()
{
lib_0A02::init();
behaviortree\zombie_sasquatch::func_DEE8();
scripts\asm\zombie_sasquatch\mp\states::func_2371();
thread func_FAB0();
func_AE11();
}
//Function Number: 3
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
if(!isdefined(level.var_10970))
{
level.var_10970 = [];
}
level.var_10970["zombie_sasquatch"] = [];
level.agent_definition["zombie_sasquatch"]["setup_func"] = ::setupagent;
level.agent_definition["zombie_sasquatch"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["zombie_sasquatch"] = [];
level.agent_funcs["zombie_sasquatch"]["on_killed"] = ::onsasquatchkilled;
level.agent_funcs["zombie_sasquatch"]["on_damaged_finished"] = ::onsasquatchdamagefinished;
}
//Function Number: 4
func_AE11()
{
level._effect["sasquatch_rock_hit"] = loadfx("vfx/iw7/levels/cp_rave/sasquatch/vfx_rave_sas_projectile_impact.vfx");
}
//Function Number: 5
setupagent()
{
self.var_4004 = undefined;
self.var_BCF6 = undefined;
self.var_26B9 = undefined;
self.var_86BD = undefined;
self.name = undefined;
self.var_EB6A = undefined;
self.var_CA5B = undefined;
self.var_13CA0 = undefined;
self.var_C2AD = undefined;
self.sessionteam = undefined;
self.sessionstate = undefined;
self.var_55E6 = undefined;
self.disabledweaponswitch = undefined;
self.var_55D9 = undefined;
self.var_55E4 = 1;
self.nocorpse = undefined;
self.ignoreme = 0;
self.var_180 = 0;
self.var_116D4 = undefined;
self.var_441A = undefined;
self.var_4B82 = undefined;
self.do_immediate_ragdoll = undefined;
self.var_37FD = 0;
self.var_24CA = undefined;
self.var_B36E = undefined;
self.var_126A3 = undefined;
self.var_8C35 = 0;
self.var_9341 = 1;
self.var_1B03 = "idle";
self.var_1F5 = "run";
self.sharpturnnotifydist = 150;
self.var_257 = 20;
self.height = 53;
self.var_252B = 26 + self.var_257;
self.var_2539 = 54;
self.var_253A = -64;
self.var_4D45 = 2250000;
self.var_181 = 1;
self.var_86BD = self getentitynumber();
self.var_BCE4 = 1;
self.var_C081 = 1;
self.var_126E8 = 1;
self.var_772A = 1;
self.var_2AB2 = 0;
self.var_2AB8 = 1;
self.var_118FC = 0;
self.var_2F = 1;
self.var_503C = self.var_257 + 1;
self.var_565C = 0;
self.var_54CB = 0;
self.var_9E0C = undefined;
self.flung = undefined;
self.var_565C = 0;
self.var_B0FC = 1;
self.full_gib = 0;
self.croc_chomp = 0;
self.spawn_round_num = level.wave_num;
self.footstepdetectdist = 600;
self.footstepdetectdistwalk = 600;
self.footstepdetectdistsprint = 600;
self.var_A8A2 = [];
self.allowpain = 1;
self method_84E6(45);
if(getdvarint("scr_zombie_left_foot_sharp_turn_only",0) == 1)
{
self.var_AB3F = 1;
}
self.entered_playspace = 1;
thread func_899C();
}
//Function Number: 6
func_FACE(param_00)
{
self setmodel("zmb_sasquatch_fullbody");
}
//Function Number: 7
setup_eye_glow()
{
self endon("death");
self method_80BB(1,0.1);
wait(1);
self setscriptablepartstate("right_eye","active");
self setscriptablepartstate("left_eye","active");
}
//Function Number: 8
func_899C()
{
self endon("death");
level waittill("game_ended");
self method_841F();
var_00 = self.var_164D[self.var_238F];
var_01 = var_00.var_4BC0;
var_02 = level.var_2303[self.var_238F].var_10E2F[var_01];
lib_0A1A::func_2388(self.var_238F,var_01,var_02,var_02.var_116FB);
lib_0A1A::func_238A(self.var_238F,"idle",0.2,undefined,undefined,undefined);
}
//Function Number: 9
onsasquatchkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
self method_80BB(1,0);
self setscriptablepartstate("right_eye","inactive");
self setscriptablepartstate("left_eye","inactive");
scripts\mp\_mp_agent::func_5006(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}
//Function Number: 10
onsasquatchdamagefinished(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
scripts\mp\_mp_agent::func_5004(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C);
}

View File

@ -0,0 +1,90 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\agents\zombie_skeleton\zombie_skeleton.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 8
* Decompile Time: 431 ms
* Timestamp: 10/27/2023 12:11:30 AM
*******************************************************************/
//Function Number: 1
zombie_skeleton_init()
{
registerscriptedagent();
level.agent_funcs["skeleton"]["on_damaged"] = ::lib_0CBC::func_C5CD;
level.agent_funcs["skeleton"]["gametype_on_damage_finished"] = ::lib_0CBC::func_C5CE;
level.agent_funcs["skeleton"]["gametype_on_killed"] = ::lib_0CBC::func_C5D2;
level.var_BCCE["skeleton"] = ::lib_0CBC::func_E7FD;
}
//Function Number: 2
registerscriptedagent()
{
lib_0A02::init();
func_AEB0();
thread func_FAB0();
}
//Function Number: 3
func_FAB0()
{
level endon("game_ended");
if(!isdefined(level.agent_definition))
{
level waittill("scripted_agents_initialized");
}
level.agent_definition["skeleton"]["setup_func"] = ::setupagent;
level.agent_definition["skeleton"]["setup_model_func"] = ::func_FACE;
level.agent_funcs["skeleton"]["on_damaged_finished"] = ::scripts\mp\agents\zombie\zmb_zombie_agent::func_C5CE;
level.agent_funcs["skeleton"]["on_killed"] = ::scripts\mp\agents\zombie\zmb_zombie_agent::func_C5D2;
}
//Function Number: 4
setupagent()
{
scripts\mp\agents\zombie\zmb_zombie_agent::setupagent();
self.is_skeleton = 1;
}
//Function Number: 5
func_899C()
{
self endon("death");
level waittill("game_ended");
self method_841F();
foreach(var_04, var_01 in self.var_164D)
{
var_02 = var_01.var_4BC0;
var_03 = level.var_2303[var_04].var_10E2F[var_02];
lib_0A1A::func_2388(var_04,var_02,var_03,var_03.var_116FB);
lib_0A1A::func_238A(var_04,"idle",0.2,undefined,undefined,undefined);
}
}
//Function Number: 6
func_FACE(param_00)
{
if(isdefined(level.skeleton_model_override))
{
self setmodel(level.skeleton_model_override);
}
else
{
self setmodel("fullbody_zmb_skeleton");
}
thread scripts\mp\agents\zombie\zmb_zombie_agent::func_50EF();
}
//Function Number: 7
func_AEB0()
{
}
//Function Number: 8
should_spawn_skeleton()
{
return undefined;
}