Files
IL-GSC/IW/PC/ALL/scripts/sp/_patrol.gsc
2023-10-27 03:49:01 -04:00

962 lines
19 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\sp\_patrol.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 25
* Decompile Time: 1194 ms
* Timestamp: 10/27/2023 12:24:52 AM
*******************************************************************/
//Function Number: 1
func_C97C(param_00)
{
if(isdefined(self.var_10C))
{
return;
}
self endon("enemy");
self endon("death");
self endon("damage");
self endon("end_patrol");
self endon("dog_attacks_ai");
waittillframeend;
if(isdefined(self.var_EED1))
{
[[ level.var_83D2["_patrol_endon_spotted_flag"] ]]();
}
thread func_13749();
thread func_13759();
self.var_15C = 32;
self method_800B("stand");
self.var_55B0 = 1;
self.var_55ED = 1;
self.var_30 = 1;
self.var_EE7E = 1;
self.var_C3E8 = self.var_BC;
self.var_BC = "no_cover";
scripts\sp\_utility::func_5514();
if(isdefined(self.var_EE2C))
{
self.var_C3FA = self.var_BCD6;
self.var_BCD6 = self.var_EE2C;
}
func_AD3A();
func_F4C7();
var_01["ent"][1] = ::func_7CD9;
var_01["ent"][0] = ::scripts\sp\_utility::func_7A8F;
var_01["node"][1] = ::func_7CDB;
var_01["node"][0] = ::func_7A92;
var_01["struct"][1] = ::func_7CE0;
var_01["struct"][0] = ::scripts\sp\_utility::func_7A97;
var_02["ent"] = ::scripts\sp\_utility::func_F3D3;
var_02["node"] = ::scripts\sp\_utility::func_F3D9;
var_02["struct"] = ::scripts\sp\_utility::func_F3D3;
if(isdefined(param_00))
{
self.target = param_00;
}
if(isdefined(self.target))
{
var_03 = 1;
var_04 = func_7CD9();
var_05 = func_7CDB();
var_06 = func_7CE0();
if(var_04.size)
{
var_07 = scripts\common\utility::random(var_04);
var_08 = "ent";
}
else if(var_07.size)
{
var_07 = scripts\common\utility::random(var_07);
var_08 = "node";
}
else
{
var_07 = scripts\common\utility::random(var_08);
var_08 = "struct";
}
}
else
{
var_03 = 0;
var_04 = scripts\sp\_utility::func_7A8F();
var_05 = func_7A92();
var_06 = scripts\sp\_utility::func_7A97();
if(var_06.size)
{
var_07 = scripts\common\utility::random(var_06);
var_08 = "ent";
}
else if(var_07.size)
{
var_07 = scripts\common\utility::random(var_07);
var_08 = "node";
}
else
{
var_07 = scripts\common\utility::random(var_08);
var_08 = "struct";
}
}
var_09 = [];
var_09["pause"] = "patrol_idle_";
var_09["turn180"] = scripts\common\utility::func_116D7(isdefined(self.var_C97E),self.var_C97E,"patrol_turn180");
var_09["smoke"] = "patrol_idle_smoke";
var_09["stretch"] = "patrol_idle_stretch";
var_09["checkphone"] = "patrol_idle_checkphone";
var_09["phone"] = "patrol_idle_phone";
var_0A = var_07;
for(;;)
{
while(isdefined(var_0A.var_C97F))
{
wait(0.05);
}
var_07.var_C97F = undefined;
var_07 = var_0A;
self notify("release_node");
var_07.var_C97F = 1;
self.var_A8F4 = var_07;
[[ var_02[var_08] ]](var_07);
if(isdefined(var_07.var_257) && var_07.var_257 > 0)
{
self.var_15C = var_07.var_257;
}
else
{
self.var_15C = 32;
}
self waittill("goal");
var_07 notify("trigger",self);
if(isdefined(var_07.var_ED9E))
{
scripts\common\utility::flag_set(var_07.var_ED9E);
}
if(isdefined(var_07.var_ED80))
{
scripts\sp\_utility::func_65E1(var_07.var_ED80);
}
if(isdefined(var_07.var_ED9B))
{
scripts\common\utility::func_6E2A(var_07.var_ED9B);
}
var_0B = var_07 [[ var_01[var_08][var_03] ]]();
if(!var_0B.size)
{
if(isdefined(var_07.var_ED88))
{
self method_8221("face angle",var_07.angles[1]);
}
self notify("reached_path_end");
self notify("_patrol_reached_path_end");
if(isalive(self.var_C991))
{
self.var_C991 notify("master_reached_patrol_end");
}
}
var_0C = ::scripts\anim\reactions::func_DD51;
var_0D = var_07.var_ECF5;
var_0E = 1;
var_0F = 0;
if(isdefined(var_07.var_EE79))
{
var_10 = strtok(var_07.var_EE79," ");
for(var_11 = 0;var_11 < var_10.size;var_11++)
{
switch(var_10[var_11])
{
case "keep_running":
var_0E = 0;
break;
case "use_node":
var_0F = 1;
break;
case "animset":
var_11 = var_11 + 1;
self.var_ECF5 = var_10[var_11];
if(self.var_ECF5 == "default")
{
self.var_ECF5 = undefined;
self.var_C9AB = undefined;
self.var_C9AC = undefined;
self.var_C987 = undefined;
}
func_F4C7();
break;
}
}
}
if(isdefined(var_07.var_EE2C))
{
self.var_BCD6 = var_07.var_EE2C;
}
if((var_07 func_8BA5() && var_07 func_ED4E()) || isdefined(var_0D) || isdefined(var_07.var_EDA0) && !scripts\common\utility::flag(var_07.var_EDA0))
{
if(!isdefined(self.var_C98F) && var_0E)
{
func_C981(var_0D,var_0C,var_07);
}
if(isdefined(var_07.var_EDA0) && !scripts\common\utility::flag(var_07.var_EDA0))
{
scripts\common\utility::flag_wait(var_07.var_EDA0);
}
var_07 scripts\sp\_utility::script_delay();
if(isdefined(var_0D))
{
if(isdefined(var_07.var_ED88))
{
self method_8221("face angle",var_07.angles[1]);
}
self.var_C99C = 1;
var_12 = var_09[var_0D];
if(!isdefined(var_12))
{
if(isdefined(level.var_C99E))
{
var_12 = level.var_C99E[var_0D];
}
}
if(isdefined(var_12))
{
if(var_0D == "pause")
{
if(isdefined(self.var_C99D) && isdefined(self.var_C99D[var_0D]))
{
var_12 = self.var_C99D[var_0D][randomint(self.var_C99D[var_0D].size)];
}
else
{
var_12 = var_12 + randomintrange(1,6);
}
}
if(var_0F)
{
var_07 lib_0B06::func_1ECE(self,var_12);
var_07 lib_0B06::func_1EC8(self,"gravity",var_12,undefined,var_0C);
}
else
{
lib_0B06::func_1EC8(self,"gravity",var_12,undefined,var_0C);
}
}
self.var_C99C = undefined;
}
if(var_0B.size && !isdefined(var_0D) || var_0D != "turn180" && var_0E && !isdefined(self.var_1025F) || !self.var_1025F)
{
func_C980(var_0D,var_0C);
}
}
if(!var_0B.size)
{
if(isdefined(self.var_C982) && !isdefined(var_0D))
{
func_C981("path_end_idle",var_0C,var_07);
for(;;)
{
var_13 = self.var_C982[randomint(self.var_C982.size)];
lib_0B06::func_1EC8(self,"gravity",var_13,undefined,var_0C);
}
}
break;
}
var_0A = scripts\common\utility::random(var_0B);
}
}
//Function Number: 2
func_C981(param_00,param_01,param_02)
{
var_03 = self;
var_04 = 0;
if(isdefined(param_02.var_ED88))
{
var_03 = param_02;
self.var_C0C1 = 1;
var_04 = 1;
}
if(isdefined(self.var_C9A7) && isdefined(self.var_C9A7[param_00]))
{
var_03 lib_0B06::func_1EC8(self,"gravity",self.var_C9A7[param_00],undefined,param_01,var_04);
return;
}
if(isdefined(self.var_ECF5) && isdefined(level.var_EC85["generic"]["patrol_stop_" + self.var_ECF5]))
{
lib_0B06::func_1EC8(self,"gravity","patrol_stop_" + self.var_ECF5,undefined,param_01);
return;
}
var_03 lib_0B06::func_1EC8(self,"gravity","patrol_stop",undefined,param_01,var_04);
}
//Function Number: 3
func_C980(param_00,param_01)
{
if(isdefined(self.var_C9A3) && isdefined(self.var_C9A3[param_00]))
{
lib_0B06::func_1EC8(self,"gravity",self.var_C9A3[param_00],undefined,param_01);
return;
}
if(isdefined(self.var_ECF5) && isdefined(level.var_EC85["generic"]["patrol_start_" + self.var_ECF5]))
{
lib_0B06::func_1EC8(self,"gravity","patrol_start_" + self.var_ECF5,undefined,param_01);
return;
}
lib_0B06::func_1EC8(self,"gravity","patrol_start",undefined,param_01);
}
//Function Number: 4
func_10B63()
{
if(self.var_1491.var_D6A5 == "crouch" && isdefined(self.var_1491.var_2274))
{
var_00 = self.var_1491.var_2274["stance_change"];
if(isdefined(var_00))
{
self method_82E4("stand_up",var_00,%root,1);
scripts\anim\shared::func_592B("stand_up");
}
}
}
//Function Number: 5
func_C99B()
{
self endon("enemy");
self method_8016("zonly_physics",0);
self method_8221("face current");
func_10B63();
var_00 = level.var_EC85["generic"]["patrol_radio_in_clear"];
self method_82E4("radio",var_00,%root,1);
scripts\anim\shared::func_592B("radio");
func_12942();
}
//Function Number: 6
func_12942()
{
if(!isdefined(self.var_233))
{
return;
}
var_00 = self.var_233;
var_01 = var_00 - self.origin;
var_01 = (var_01[0],var_01[1],0);
var_02 = lengthsquared(var_01);
if(var_02 < 1)
{
return;
}
var_01 = var_01 / sqrt(var_02);
var_03 = anglestoforward(self.angles);
if(vectordot(var_03,var_01) < -0.5)
{
self method_8016("zonly_physics",0);
self method_8221("face current");
func_10B63();
var_04 = level.var_EC85["generic"]["patrol_turn180"];
self method_82E4("move",var_04,%root,1);
if(animhasnotetrack(var_04,"code_move"))
{
scripts\anim\shared::func_592B("move");
self method_8221("face motion");
self method_8016("none",0);
}
scripts\anim\shared::func_592B("move");
}
}
//Function Number: 7
func_F4C7()
{
if(isdefined(self.var_ECF5))
{
if(isdefined(level.var_EC85["generic"]["patrol_walk_" + self.var_ECF5]))
{
self.var_C9AB = "patrol_walk_" + self.var_ECF5;
}
if(isdefined(level.var_EC85["generic"]["patrol_walk_weights_" + self.var_ECF5]))
{
self.var_C9AC = "patrol_walk_weights_" + self.var_ECF5;
}
if(isdefined(level.var_EC85["generic"]["patrol_idle_" + self.var_ECF5]))
{
self.var_C987 = "patrol_idle_" + self.var_ECF5;
}
}
var_00 = "patrol_walk";
if(isdefined(self.var_C9AB))
{
var_00 = self.var_C9AB;
}
var_01 = undefined;
if(isdefined(self.var_C9AC))
{
var_01 = self.var_C9AC;
}
if(isdefined(self.var_ECF5))
{
if(isdefined(level.var_EC85["generic"]["patrol_idle_" + self.var_ECF5]))
{
scripts\sp\_utility::func_F3C8("patrol_idle_" + self.var_ECF5);
}
}
scripts\sp\_utility::func_F3CC(var_00,var_01);
}
//Function Number: 8
func_1374A()
{
self endon("end_patrol");
if(isdefined(self.var_C98C))
{
self.var_C98C endon("death");
}
self waittill("enemy");
}
//Function Number: 9
func_13759()
{
self waittill("death");
if(!isdefined(self))
{
return;
}
self notify("release_node");
if(!isdefined(self.var_A8F4))
{
return;
}
self.var_A8F4.var_C97F = undefined;
}
//Function Number: 10
func_13749()
{
self endon("death");
func_1374A();
var_00 = scripts\sp\_utility::func_65DF("_stealth_enabled") && scripts\sp\_utility::func_65DB("_stealth_enabled");
self.var_EE7E = 0;
if(isdefined(self.var_C3E8))
{
self.var_BC = self.var_C3E8;
}
if(!var_00)
{
scripts\sp\_utility::func_4154();
self.var_BC = self.var_C3E8;
scripts\sp\_utility::func_417A();
self method_800B("stand","crouch","prone");
self.var_55B0 = 0;
self.var_55ED = 0;
self method_83A1();
self notify("stop_animmode");
self.var_EE56 = undefined;
self.var_15C = level.var_4FF6;
}
if(isdefined(self.var_C3C3))
{
self.var_190 = self.var_C3C3;
}
self.var_BCD6 = 1;
if(!isdefined(self))
{
return;
}
self notify("release_node");
if(!isdefined(self.var_A8F4))
{
return;
}
self.var_A8F4.var_C97F = undefined;
}
//Function Number: 11
func_7CD9()
{
var_00 = [];
if(isdefined(self.target))
{
var_00 = getentarray(self.target,"targetname");
}
return var_00;
}
//Function Number: 12
func_7CDB()
{
var_00 = [];
if(isdefined(self.target))
{
var_00 = function_00B4(self.target,"targetname");
}
return var_00;
}
//Function Number: 13
func_7CE0()
{
var_00 = [];
if(isdefined(self.target))
{
var_00 = scripts\common\utility::getstructarray(self.target,"targetname");
}
return var_00;
}
//Function Number: 14
func_7A92()
{
var_00 = [];
if(isdefined(self.var_EE01))
{
var_01 = strtok(self.var_EE01," ");
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
var_03 = function_00B3(var_01[var_02],"script_linkname");
if(isdefined(var_03))
{
var_00[var_00.size] = var_03;
}
}
}
return var_00;
}
//Function Number: 15
func_10118(param_00)
{
self endon("release_node");
}
//Function Number: 16
func_AD3A()
{
if(isdefined(self.var_C991))
{
self.var_C991 thread func_CA83();
return;
}
if(!isdefined(self.var_EE81))
{
return;
}
waittillframeend;
var_00 = function_0074(self.team,"dog");
var_01 = undefined;
for(var_02 = 0;var_02 < var_00.size;var_02++)
{
if(!isdefined(var_00[var_02].var_EE81))
{
continue;
}
if(var_00[var_02].var_EE81 != self.var_EE81)
{
continue;
}
var_01 = var_00[var_02];
self.var_C991 = var_01;
var_01.var_C98C = self;
break;
}
if(!isdefined(var_01))
{
return;
}
var_01 thread func_CA83();
}
//Function Number: 17
func_CA83()
{
scripts\sp\_utility::func_106ED(self);
if(isdefined(self.var_10C))
{
return;
}
self endon("enemy");
self endon("death");
self endon("end_patrol");
if(isdefined(self.var_EED1))
{
[[ level.var_83D2["_patrol_endon_spotted_flag"] ]]();
}
self.var_C98C endon("death");
thread func_13749();
self.var_15C = 4;
self.var_30 = 1;
var_00 = func_CA84();
var_01 = vectornormalize(self.origin - self.var_C98C.origin);
var_02 = anglestoright(self.var_C98C.angles);
var_03 = "left";
if(vectordot(var_01,var_02) > 0)
{
var_03 = "right";
}
wait(1);
thread func_CA86();
thread func_CA87();
self.var_C3C3 = self.var_190;
self.var_190 = 70;
for(;;)
{
if(isdefined(self.var_C98C) && !isdefined(self.var_C98C.var_C99C))
{
var_00 = func_CA88(var_00);
if(var_03 == "null")
{
var_03 = "back";
}
var_03 = func_CA85(var_00,var_03);
self.var_C986 = var_00[var_03].origin;
}
else
{
self.var_C986 = self.origin;
}
self method_82EF(self.var_C986);
wait(0.05);
}
}
//Function Number: 18
func_CA84()
{
var_00 = [];
var_01 = spawnstruct();
var_01.var_C6C0 = [];
var_01.var_C6C0[var_01.var_C6C0.size] = "right";
var_01.var_C6C0[var_01.var_C6C0.size] = "back_right";
var_02 = spawnstruct();
var_02.var_C6C0 = [];
var_02.var_C6C0[var_02.var_C6C0.size] = "right";
var_02.var_C6C0[var_02.var_C6C0.size] = "back_right";
var_02.var_C6C0[var_02.var_C6C0.size] = "back";
var_03 = spawnstruct();
var_03.var_C6C0 = [];
var_03.var_C6C0[var_03.var_C6C0.size] = "back_right";
var_03.var_C6C0[var_03.var_C6C0.size] = "back_left";
var_03.var_C6C0[var_03.var_C6C0.size] = "back";
var_04 = spawnstruct();
var_04.var_C6C0 = [];
var_04.var_C6C0[var_04.var_C6C0.size] = "left";
var_04.var_C6C0[var_04.var_C6C0.size] = "back_left";
var_04.var_C6C0[var_04.var_C6C0.size] = "back";
var_05 = spawnstruct();
var_05.var_C6C0 = [];
var_05.var_C6C0[var_05.var_C6C0.size] = "left";
var_05.var_C6C0[var_05.var_C6C0.size] = "back_left";
var_06 = spawnstruct();
var_00["right"] = var_01;
var_00["left"] = var_05;
var_00["back_right"] = var_02;
var_00["back_left"] = var_04;
var_00["back"] = var_03;
var_00["null"] = var_06;
return var_00;
}
//Function Number: 19
func_CA88(param_00)
{
var_01 = vectortoangles(self.var_C98C.var_A8F4.origin - self.var_C98C.origin);
var_02 = self.var_C98C.origin;
var_03 = anglestoright(var_01);
var_04 = anglestoforward(var_01);
param_00["right"].origin = var_02 + var_03 * 40 + var_04 * 30;
param_00["left"].origin = var_02 + var_03 * -40 + var_04 * 30;
param_00["back_right"].origin = var_02 + var_03 * 32 + var_04 * -16;
param_00["back_left"].origin = var_02 + var_03 * -32 + var_04 * -16;
param_00["back"].origin = var_02 + var_04 * -48;
param_00["null"].origin = self.origin;
var_05 = getarraykeys(param_00);
for(var_06 = 0;var_06 < var_05.size;var_06++)
{
var_07 = var_05[var_06];
param_00[var_07].var_3E06 = 0;
param_00[var_07].var_DE05 = 0;
}
return param_00;
}
//Function Number: 20
func_CA82(param_00)
{
var_01 = getarraykeys(param_00);
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
var_03 = var_01[var_02];
if(var_03 == "null")
{
continue;
}
}
}
//Function Number: 21
func_CA85(param_00,param_01)
{
param_00[param_01].var_DE05 = 1;
for(var_02 = 0;var_02 < param_00[param_01].var_C6C0.size;var_02++)
{
var_03 = param_00[param_01].var_C6C0[var_02];
if(param_00[var_03].var_3E06)
{
continue;
}
if(self method_8200(param_00[var_03].origin))
{
return var_03;
}
param_00[var_03].var_3E06 = 1;
}
for(var_02 = 0;var_02 < param_00[param_01].var_C6C0.size;var_02++)
{
var_03 = param_00[param_01].var_C6C0[var_02];
if(param_00[var_03].var_DE05)
{
continue;
}
var_03 = func_CA85(param_00,var_03);
return var_03;
}
return "null";
}
//Function Number: 22
func_CA86(param_00)
{
if(isdefined(self.var_10C))
{
return;
}
self endon("enemy");
self endon("death");
self endon("end_patrol");
self.var_C98C endon("death");
if(isdefined(self.var_C98C.script_noteworthy) && self.var_C98C.script_noteworthy == "cqb_patrol")
{
scripts\sp\_utility::func_F35F();
return;
}
if(!isdefined(param_00))
{
param_00 = 200;
}
scripts\sp\_utility::func_F35F();
for(;;)
{
wait(0.1);
var_01 = self.var_C986;
var_02 = distancesquared(self.origin,self.var_C986);
if(var_02 > squared(param_00))
{
if(self.var_1491.var_BCC8 == "run")
{
continue;
}
lib_0B06::func_1EC8(self,"gravity","patrol_dog_start");
scripts\sp\_utility::func_417A();
self.var_EE56 = 1;
continue;
}
if(self.var_1491.var_BCC8 != "walk")
{
self notify("stopped_while_patrolling");
lib_0B06::func_1EC8(self,"gravity","patrol_dog_stop");
scripts\sp\_utility::func_F35F();
}
}
}
//Function Number: 23
func_CA87(param_00,param_01)
{
if(isdefined(self.var_10C))
{
return;
}
self endon("enemy");
self endon("death");
self endon("end_patrol");
self.var_C98C endon("death");
if(isdefined(self.var_C98C.script_noteworthy) && self.var_C98C.script_noteworthy == "cqb_patrol")
{
for(;;)
{
wait(0.05);
var_02 = self.var_C986;
var_03 = distancesquared(self.origin,self.var_C986);
if(var_03 < squared(16))
{
if(self.var_BCD6 > 0.4)
{
self.var_BCD6 = self.var_BCD6 - 0.05;
}
continue;
}
if(var_03 > squared(48))
{
if(self.var_BCD6 < 1.8)
{
self.var_BCD6 = self.var_BCD6 + 0.05;
}
continue;
}
self.var_BCD6 = 1;
}
}
if(!isdefined(param_00))
{
param_00 = 16;
}
if(!isdefined(param_01))
{
param_01 = 48;
}
var_04 = param_00 * param_00;
var_05 = param_01 * param_01;
for(;;)
{
wait(0.05);
var_02 = self.var_C986;
var_03 = distancesquared(self.origin,self.var_C986);
if(self.var_1491.var_BCC8 != "walk")
{
self.var_BCD6 = 1;
continue;
}
if(var_03 < var_04)
{
if(self.var_BCD6 > 0.4)
{
self.var_BCD6 = self.var_BCD6 - 0.05;
}
continue;
}
if(var_03 > var_05)
{
if(self.var_BCD6 < 0.75)
{
self.var_BCD6 = self.var_BCD6 + 0.05;
}
continue;
}
self.var_BCD6 = 0.5;
}
}
//Function Number: 24
func_8BA5()
{
if(isdefined(self.script_delay) || isdefined(self.var_ED50))
{
return 1;
}
return 0;
}
//Function Number: 25
func_ED4E()
{
if(isdefined(self.script_delay))
{
return self.script_delay > 0.5;
}
if(isdefined(self.var_ED50))
{
return self.var_ED50 > 0.5;
}
return 0;
}