IL-GSC/IW/PC/ALL/3877.gsc
2023-10-27 03:49:01 -04:00

743 lines
14 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: 3877.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 27
* Decompile Time: 14 ms
* Timestamp: 10/27/2023 12:31:06 AM
*******************************************************************/
//Function Number: 1
func_11408()
{
if(!isdefined(self.var_11400))
{
func_11406();
}
func_1140B(1);
}
//Function Number: 2
func_11407()
{
func_1140B(0);
self notify("tagging_think");
}
//Function Number: 3
func_1140B(param_00,param_01)
{
if(!isdefined(self.var_11400))
{
func_11406();
}
if(!isdefined(param_01))
{
param_01 = 4;
}
self.var_11400["enabled"] = param_00;
self.var_11400["action_slot"] = param_01;
func_1140C(param_00);
}
//Function Number: 4
func_1140C(param_00)
{
if(!isdefined(self.var_11400))
{
func_11406();
}
self.var_11400["marking_enabled"] = param_00;
var_01 = func_11401();
if(!self.var_11400["marking_enabled"])
{
foreach(var_03 in var_01)
{
if(!isdefined(var_03))
{
continue;
}
if(issentient(var_03) && !isalive(var_03))
{
continue;
}
var_03 func_113EB("none",self);
var_03 notify("tagged_entity_death_cleanup");
var_03 func_113FA();
}
return;
}
foreach(var_03 in var_03)
{
if(!isdefined(var_03))
{
continue;
}
if(issentient(var_03) && !isalive(var_03))
{
continue;
}
if(isdefined(var_03.var_113F3) && isdefined(var_03.var_113F3[self getentitynumber()]))
{
var_03 func_113D9(self);
}
}
}
//Function Number: 5
func_113D9(param_00,param_01)
{
if(!isdefined(level.var_11414))
{
level func_11AE9();
level.var_11414 = 1;
}
if(!isdefined(param_01))
{
param_01 = 1;
}
if(!isdefined(self) || issentient(self) && !isalive(self))
{
if(isdefined(self))
{
func_113E2(0);
}
return;
}
if(param_01 && !isdefined(self.var_113F3) || !isdefined(self.var_113F3[param_00 getentitynumber()]) || !self.var_113F3[param_00 getentitynumber()])
{
param_00 thread scripts\sp\_utility::func_CE2F("drone_tag_success");
}
self.var_113F3[param_00 getentitynumber()] = 1;
func_113E2(1);
self.var_113E9 = undefined;
self.var_113E8 = undefined;
self.var_113EA = undefined;
func_113FB();
}
//Function Number: 6
func_113DA(param_00,param_01)
{
if(isdefined(self.var_113DB) && self.var_113DB == param_01)
{
return;
}
self.var_113DB = param_01;
self notify("tag_flash_entity");
self endon("tag_flash_entity");
self endon("death");
param_00 endon("death");
param_00 endon("disconnect");
if(!isdefined(self) || issentient(self) && !isalive(self))
{
if(isdefined(self))
{
func_113E2(0);
}
return;
}
var_02 = param_00 getentitynumber();
if(!isdefined(param_00.var_113E1))
{
param_00.var_113E1 = 0;
}
var_03 = isdefined(self.var_113F3) && scripts\common\utility::istrue(self.var_113F3[var_02]);
var_04 = 1;
while(param_01 && getdvarint("ai_threatsight",1))
{
self.var_113F9 = 1;
if(var_04)
{
func_113E2(1,"dead");
}
else
{
func_113E2(var_03);
}
var_05 = param_00.var_113E1 - gettime();
if(var_05 > 0)
{
wait(float(var_05) / 1000);
}
var_04 = !var_04;
param_00.var_113E1 = gettime() + 200;
var_03 = isdefined(self.var_113F3) && scripts\common\utility::istrue(self.var_113F3[var_02]);
}
func_113E2(var_03);
}
//Function Number: 7
func_11406()
{
if(!isdefined(level.var_11414))
{
level func_11AE9();
level.var_11414 = 1;
}
self.var_11400 = [];
self.var_11400["enabled"] = 1;
self.var_11400["marking_enabled"] = 1;
self.var_11400["outline_enabled"] = 1;
self.var_11400["tagging_mode"] = 0;
self.var_11400["last_tag_start"] = 0;
self.var_11400["action_slot"] = 4;
self.var_11400["tagging_fade_min"] = 500;
self.var_11400["tagging_fade_max"] = 3000;
}
//Function Number: 8
func_11AE9()
{
setdvarifuninitialized("tagging_ads_cone_range",3000);
setdvarifuninitialized("tagging_ads_cone_angle",10);
setdvarifuninitialized("tagging_normal_pulse_rate",50);
setdvarifuninitialized("tagging_normal_prep_time",250);
setdvarifuninitialized("tagging_normal_track_time",500);
setdvarifuninitialized("tagging_slow_pulse_rate",100);
setdvarifuninitialized("tagging_slow_prep_time",500);
setdvarifuninitialized("tagging_slow_track_time",1000);
setdvarifuninitialized("tagging_foliage",0);
setdvarifuninitialized("tagging_vehicle_ride",0);
scripts\sp\_utility::func_9189("tagging",-1,"default");
function_01C5("r_hudoutlineEnable",1);
}
//Function Number: 9
func_11405()
{
var_00 = [];
var_00["r_hudoutlineFillColor0"] = "0.5 0.5 0.5 0";
var_00["r_hudoutlineFillColor1"] = "0.5 0.5 0.5 0";
var_00["r_hudoutlineOccludedOutlineColor"] = "0.5 0.5 0.5 1";
var_00["r_hudoutlineOccludedInlineColor"] = "0.5 0.5 0.5 0.5";
var_00["r_hudoutlineOccludedInteriorColor"] = "0.5 0.5 0.5 0.5";
var_00["r_hudOutlineOccludedColorFromFill"] = 1;
return var_00;
}
//Function Number: 10
func_1140E()
{
self notify("tagging_shutdown");
func_1140B(0);
if(isdefined(self.var_11400) && isdefined(self.var_11400["camera"]))
{
self.var_11400["camera"] delete();
}
self.var_11400 = undefined;
}
//Function Number: 11
func_11401()
{
var_00 = level.var_10E6D.var_639D[self.team];
var_01 = getentarray("rss_static_robot","script_noteworthy");
var_02 = function_0072(self.team);
var_03 = scripts\common\utility::array_combine(var_00,var_01);
var_04 = scripts\common\utility::array_combine(var_03,var_02);
return var_04;
}
//Function Number: 12
func_1140D()
{
return isdefined(self.var_C337) && isdefined(self.var_C337.var_19) && self.var_C337.var_19;
}
//Function Number: 13
func_11412()
{
self notify("tagging_think");
self endon("tagging_think");
self endon("death");
self endon("disconnect");
while(isdefined(self) && isdefined(self.var_11400))
{
if(!isdefined(self.var_11400["enabled"]))
{
return;
}
if(!isdefined(self.var_11400["outline_enabled"]))
{
return;
}
var_00 = self.var_11400["enabled"] && self.var_11400["outline_enabled"];
if(var_00 && scripts\sp\_utility::func_9D27() || func_1140D())
{
func_113EC();
}
wait(0.05);
}
}
//Function Number: 14
func_113EC()
{
var_00 = func_11401();
var_01 = self geteye();
var_02 = anglestoforward(self getplayerangles());
var_03 = undefined;
var_04 = max(0.01,getdvarfloat("tagging_ads_cone_range"));
var_05 = cos(getdvarfloat("tagging_ads_cone_angle"));
var_06 = [0,0.5,1];
if(func_1140D())
{
var_04 = level.player.var_11400["tagging_fade_max"];
var_05 = cos(getdvarfloat("cg_fov"));
}
var_07 = bullettrace(var_01,var_01 + var_02 * 32000,1,self);
var_03 = var_07["entity"];
foreach(var_09 in var_00)
{
if(!isdefined(var_09))
{
continue;
}
if(issentient(var_09) && !isalive(var_09))
{
continue;
}
if(isdefined(var_09.var_113F3) && isdefined(var_09.var_113F3[self getentitynumber()]))
{
continue;
}
if(!getdvarint("tagging_vehicle_ride") && isdefined(var_09.var_13223) && var_09.var_13223.var_37A > 0)
{
continue;
}
var_0A = isdefined(var_03) && var_03 == var_09;
if(!var_0A)
{
var_0B = var_09 gettagorigin("tag_origin");
if(isai(var_09))
{
var_0B = var_09 geteye();
}
var_0C = distance(var_0B,var_01);
if(var_0C <= var_04)
{
var_0D = min(1,var_05 + 1 - var_05 * var_0C / var_04);
foreach(var_0F in var_06)
{
var_10 = vectorlerp(var_09.origin,var_0B,var_0F);
var_11 = var_10 - var_01;
var_12 = vectornormalize(var_11);
var_13 = vectordot(var_12,var_02);
if(var_13 > var_0D)
{
if(func_1140D())
{
var_0A = 1;
break;
}
if(func_650A(var_09))
{
var_0A = 1;
break;
}
}
}
}
}
if(var_0A)
{
var_09 func_113EB("tracking",self,1);
continue;
}
var_09 func_113EB("none",self,0);
}
}
//Function Number: 15
func_650C()
{
if(isdefined(self.var_11411))
{
return;
}
if(!isdefined(self.var_1140F))
{
self.var_1140F = 0;
}
if(!isdefined(level.var_11410))
{
level.var_11410 = [];
level thread func_650B();
}
level.var_11410 = scripts\common\utility::array_add(level.var_11410,self);
self.var_11411 = 1;
}
//Function Number: 16
func_650B()
{
self notify("enemy_sight_trace_process");
self endon("enemy_sight_trace_process");
var_00 = 3;
for(;;)
{
level.var_11410 = scripts\common\utility::func_22BC(level.var_11410);
for(var_01 = 0;var_01 < min(var_00,level.var_11410.size);var_01++)
{
var_02 = level.var_11410[0];
level.var_11410 = scripts\common\utility::func_22A9(level.var_11410,var_02);
var_02.var_1140F = func_6509(var_02);
var_02.var_11411 = undefined;
}
wait(0.05);
}
}
//Function Number: 17
func_650A(param_00)
{
param_00 func_650C();
return param_00.var_1140F;
}
//Function Number: 18
func_6509(param_00)
{
var_01 = 0;
var_02 = level.player geteye();
if(!var_01 && param_00 scripts\sp\_utility::func_8C32(param_00.model,"j_head"))
{
if(sighttracepassed(var_02,param_00 gettagorigin("j_head"),0,param_00.var_101E1,param_00,0))
{
var_01 = 1;
}
}
if(!var_01 && param_00 scripts\sp\_utility::func_8C32(param_00.model,"j_spinelower"))
{
if(sighttracepassed(var_02,param_00 gettagorigin("j_spinelower"),0,param_00.var_101E1,param_00,0))
{
var_01 = 1;
}
}
if(!var_01 && param_00 scripts\sp\_utility::func_8C32(param_00.model,"tag_attach"))
{
if(sighttracepassed(var_02,param_00 gettagorigin("tag_attach"),0,param_00.var_101E1,param_00,0))
{
var_01 = 1;
}
}
if(!var_01 && sighttracepassed(var_02,param_00.origin,0,param_00.var_101E1,param_00,0))
{
var_01 = 1;
}
return var_01;
}
//Function Number: 19
func_113EB(param_00,param_01,param_02)
{
var_03 = gettime();
if(!isdefined(param_02))
{
param_02 = 0;
}
var_04 = getdvarint("tagging_normal_pulse_rate");
var_05 = getdvarint("tagging_normal_prep_time");
var_06 = getdvarint("tagging_normal_track_time");
var_07 = 0;
if(!param_01.var_11400["marking_enabled"])
{
param_00 = "range";
}
switch(param_00)
{
case "view":
var_07 = 1;
self.var_113E9 = 0;
self.var_113EA = undefined;
break;
case "range":
self.var_113E9 = 0;
self.var_113EA = undefined;
break;
case "tracking_slow":
var_04 = getdvarint("tagging_slow_pulse_rate");
var_05 = getdvarint("tagging_slow_prep_time");
var_06 = getdvarint("tagging_slow_track_time");
break;
case "tracking":
if(!isdefined(self.var_113EA))
{
if(gettime() - param_01.var_11400["last_tag_start"] / 1000 <= 0.25)
{
return;
}
self.var_113EA = var_03;
param_01.var_11400["last_tag_start"] = var_03;
}
break;
case "obstructed":
case "none":
default:
func_113E2(0);
self.var_113EA = undefined;
break;
}
var_08 = var_06 + var_05;
var_09 = 0;
if(isdefined(self.var_113EA))
{
var_09 = var_03 - self.var_113EA;
}
if(var_09 >= var_08)
{
if(param_02)
{
param_01.var_113F4 = 1;
}
func_113D9(param_01);
}
}
//Function Number: 20
func_113E2(param_00,param_01)
{
if(!isdefined(self))
{
return;
}
if(param_00)
{
func_113FB(param_01);
thread func_113F7();
thread func_113F8();
return;
}
func_113FA();
self notify("tagged_entity_update");
}
//Function Number: 21
func_113F8()
{
self endon("death");
self notify("tagged_entity_update");
self endon("tagged_entity_update");
for(;;)
{
if(!getdvarint("tagging_vehicle_ride") && isdefined(self.var_13223) && self.var_13223.var_37A > 0)
{
func_113E2(0);
self notify("tagged_entity_death_cleanup");
self.var_113F3 = undefined;
return;
}
if(!isdefined(self.var_113F9))
{
if(!isdefined(self.var_113FD))
{
self.var_113FD = gettime();
}
var_00 = int(gettime() - self.var_113FD / 100);
if(var_00 % 2)
{
func_113FA();
}
else
{
func_113FB();
}
if(var_00 > 3)
{
func_113FB();
self.var_113F9 = 1;
}
}
if(isdefined(self.var_FC9D))
{
thread func_113FE();
}
wait(0.05);
}
}
//Function Number: 22
func_113FE()
{
self notify("tagged_wait_shield_off");
self endon("tagged_wait_shield_off");
self endon("death");
self waittill("hudoutline_off");
func_113FB();
}
//Function Number: 23
func_113F5()
{
var_00["allies"] = 3;
var_00["axis"] = 1;
var_00["team3"] = 0;
var_00["dead"] = 0;
var_01 = "dead";
if(isdefined(self.team))
{
var_01 = self.team;
}
return var_00[var_01];
}
//Function Number: 24
func_113FB(param_00)
{
if(!isdefined(self))
{
return;
}
func_113FA();
var_01 = func_113F5();
scripts\sp\_utility::func_9196(var_01,0,1,"tagging");
thread func_113FC();
self.var_11413 = 1;
}
//Function Number: 25
func_113FA()
{
if(!isdefined(self))
{
return;
}
self notify("tagged_status_update");
scripts\sp\_utility::func_9193("tagging");
self.var_11413 = undefined;
}
//Function Number: 26
func_113FC()
{
self notify("tagged_status_update");
self endon("tagged_status_update");
self endon("death");
while(isdefined(self) && !issentient(self) || isalive(self))
{
var_00 = level.player.var_11400["tagging_fade_max"];
var_01 = var_00 * var_00;
var_02 = lengthsquared(level.player.origin - self.origin);
if(var_02 > var_01)
{
func_113FA();
continue;
}
func_113FB();
wait(0.05);
}
}
//Function Number: 27
func_113F7()
{
if(isdefined(self.var_113F7))
{
return;
}
self notify("tagged_entity_death_cleanup");
self endon("tagged_entity_death_cleanup");
self.var_113F7 = 1;
self waittill("death",var_00,var_01);
if(isplayer(var_00))
{
wait(0.1);
if(isdefined(self) && distancesquared(self.origin,level.player.origin) > 90000)
{
var_02 = gettime();
var_03 = 1;
while(isdefined(self) && gettime() - var_02 < 1000)
{
if(var_03 == 0 && randomint(100) < 30)
{
func_113E2(1);
var_03 = 1;
continue;
}
if(var_03 == 1)
{
func_113E2(0);
var_03 = 0;
}
wait(0.05);
}
}
}
if(isdefined(self))
{
func_113E2(0);
}
self.var_113F7 = undefined;
}