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

909 lines
19 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\cp\cp_agent_utils.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 51
* Decompile Time: 2452 ms
* Timestamp: 10/27/2023 12:09:13 AM
*******************************************************************/
//Function Number: 1
func_108E8(param_00,param_01,param_02,param_03,param_04)
{
var_05 = func_7EC5(param_00);
if(isdefined(var_05))
{
var_05.var_4539 = gettime();
var_05 func_F28D(var_05,param_00);
var_05 func_F28F(var_05,param_00);
var_05 func_10971();
if(func_9CB3(param_00))
{
var_05 = func_107CF(var_05,param_00,param_02,param_03);
}
else
{
var_05 = func_107B2(var_05,param_02,param_03);
}
var_05 func_F8A9(param_00);
var_05 func_F290(param_01);
var_05 func_F28E(var_05,param_00);
var_05 func_F291(var_05,param_00);
var_05 func_184B();
var_05 func_1601();
}
return var_05;
}
//Function Number: 2
func_F28D(param_00,param_01)
{
param_00 detachall();
if(isdefined(level.var_13F58) && level.agent_definition[param_01]["traversal_unit_type"] == "zombie")
{
param_00 [[ level.var_13F58 ]](param_01);
}
else
{
param_00 setmodel(level.agent_definition[param_01]["body_model"]);
var_02 = strtok(level.agent_definition[param_01]["other_body_parts"]," ");
foreach(var_04 in var_02)
{
param_00 attach(var_04,"",1);
}
}
param_00 show();
}
//Function Number: 3
func_9CB3(param_00)
{
return level.agent_definition[param_00]["animclass"] != "";
}
//Function Number: 4
func_107CF(param_00,param_01,param_02,param_03)
{
param_00.var_C50F = param_00 func_10972("on_enter_animstate");
param_00.var_9CB3 = 1;
param_00 method_838E(param_02,param_03,level.agent_definition[param_01]["animclass"],15,60);
return param_00;
}
//Function Number: 5
func_107B2(param_00,param_01,param_02)
{
param_00.var_9CB3 = 0;
param_00 method_838E(param_01,param_02);
return param_00;
}
//Function Number: 6
func_9B53(param_00)
{
return param_00.var_9CB3;
}
//Function Number: 7
func_9B5A()
{
return isagent(self) && isdefined(self.var_1096F) && self.var_1096F == "alien";
}
//Function Number: 8
func_F8A9(param_00)
{
var_01 = level.agent_definition[param_00];
if(!isdefined(var_01))
{
return;
}
var_02 = var_01["setup_func"];
if(!isdefined(var_02))
{
return;
}
self [[ var_02 ]]();
}
//Function Number: 9
func_18F3(param_00,param_01,param_02,param_03,param_04)
{
if(func_9B53(self))
{
self method_8286(param_00);
return;
}
self botsetscriptgoal(param_00,param_01,param_02,param_03,param_04);
}
//Function Number: 10
func_F28F(param_00,param_01)
{
if(!isdefined(level.agent_funcs[param_01]))
{
level.agent_funcs[param_01] = [];
}
param_00.var_1096F = level.agent_definition[param_01]["species"];
func_23B2("spawn",::func_5016);
func_23B2("on_damaged",::func_5003);
func_23B2("on_damaged_finished",::func_5004);
func_23B2("on_killed",::func_5006);
}
//Function Number: 11
func_23B2(param_00,param_01)
{
var_02 = self.agent_type;
if(!isdefined(level.agent_funcs[var_02][param_00]))
{
if(!isdefined(level.var_10970[self.var_1096F]) || !isdefined(level.var_10970[self.var_1096F][param_00]))
{
level.agent_funcs[var_02][param_00] = param_01;
return;
}
level.agent_funcs[var_02][param_00] = level.var_10970[self.var_1096F][param_00];
}
}
//Function Number: 12
func_F28E(param_00,param_01)
{
param_00 func_F28C(level.agent_definition[param_01]["health"]);
}
//Function Number: 13
func_F291(param_00,param_01)
{
if(!func_384C(param_00))
{
return;
}
param_00 method_828C(level.agent_definition[param_01]["traversal_unit_type"]);
}
//Function Number: 14
func_384C(param_00)
{
if(func_9B53(param_00))
{
return 1;
}
return 0;
}
//Function Number: 15
func_10971()
{
if(isdefined(level.var_10970[self.var_1096F]) && isdefined(level.var_10970[self.var_1096F]["pre_spawn_init"]))
{
self [[ level.var_10970[self.var_1096F]["pre_spawn_init"] ]]();
}
}
//Function Number: 16
func_7EC5(param_00)
{
var_01 = undefined;
if(isdefined(level.var_1900))
{
foreach(var_03 in level.var_1900)
{
if(!isdefined(var_03.var_9D25) || !var_03.var_9D25)
{
if(isdefined(var_03.var_136FD) && var_03.var_136FD)
{
continue;
}
var_01 = var_03;
var_01.agent_type = param_00;
var_01 func_97C2();
break;
}
}
}
return var_01;
}
//Function Number: 17
func_97C2()
{
self.pers = [];
self.var_8BE2 = 0;
self.var_9D25 = 0;
self.var_10916 = 0;
self.var_6640 = self getentitynumber();
self.var_18F2 = 0;
self detachall();
func_98BB();
}
//Function Number: 18
func_98BB()
{
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_54CB = 0;
self.var_9E0C = undefined;
self.flung = undefined;
self.var_28E0 = undefined;
self.var_FF78 = undefined;
self.var_9CDD = undefined;
self.var_9CA2 = undefined;
self.is_coaster_zombie = undefined;
}
//Function Number: 19
func_F290(param_00,param_01)
{
self.team = param_00;
self.var_20 = param_00;
self.pers["team"] = param_00;
self.var_222 = param_01;
self method_831F(param_01);
self method_82DD(param_01);
}
//Function Number: 20
func_184B()
{
for(var_00 = 0;var_00 < level.var_3CB5.size;var_00++)
{
if(level.var_3CB5[var_00] == self)
{
return;
}
}
level.var_3CB5[level.var_3CB5.size] = self;
}
//Function Number: 21
func_1908(param_00)
{
return level.agent_funcs[self.agent_type][param_00];
}
//Function Number: 22
func_10972(param_00)
{
return level.var_10970[self.var_1096F][param_00];
}
//Function Number: 23
func_1313C(param_00)
{
if(isagent(param_00) && !isdefined(param_00.var_9D25) || !param_00.var_9D25)
{
return undefined;
}
if(isagent(param_00) && !isdefined(param_00.classname))
{
return undefined;
}
return param_00;
}
//Function Number: 24
func_F28C(param_00)
{
self.var_1E = param_00;
self.health = param_00;
self.maxhealth = param_00;
}
//Function Number: 25
func_5016(param_00,param_01,param_02)
{
var_03 = func_108E8("soldier","axis",param_00,param_01);
if(!isdefined(var_03))
{
return undefined;
}
var_03 botsetscriptgoal(var_03.origin,0,"hunt");
var_03 botsetstance("stand");
var_03 method_83B7();
if(isdefined(param_02))
{
var_03 giveweapon(param_02);
}
else
{
var_03 giveweapon("iw6_dlcweap02_mp");
}
var_03 method_804D("maxInaccuracy",4.5);
var_03 method_804D("minInaccuracy",2.25);
return var_03;
}
//Function Number: 26
func_5003(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 = self;
if(func_9BEA(var_0C,param_00))
{
return;
}
param_02 = scripts\cp\_damage::func_F29B(param_04,param_05,param_02,param_01,param_03,param_06,param_07,param_08,param_09,param_00);
if(isplayer(param_01) && !scripts\cp\_utility::func_9CEB(param_00,param_05,var_0C))
{
param_02 = scripts\cp\_damage::func_EB9D(param_01,param_02,param_04,param_05);
param_02 = scripts\cp\_damage::func_EB9F(param_01,param_02,param_04,param_05,param_08);
}
param_02 = func_E54A(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,var_0C);
param_02 = scripts\cp\_damage::func_EB9E(param_01,param_02);
param_02 = int(param_02);
func_D96E(param_01,param_02,param_04);
func_D96D(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,var_0C);
func_D96B(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,var_0C);
var_0C [[ level.agent_funcs[var_0C.agent_type]["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: 27
func_E54A(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A)
{
param_0A.var_E54C = undefined;
if(param_08 == "shield")
{
param_0A.var_E54C = 1;
param_02 = 0;
}
return param_02;
}
//Function Number: 28
func_D96E(param_00,param_01,param_02)
{
if(isdefined(level.var_12D84))
{
[[ level.var_12D84 ]](param_00,param_01,param_02);
}
}
//Function Number: 29
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)
{
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);
var_0D = scripts\cp\_utility::func_9CEB(param_00,param_05);
if(isdefined(param_01))
{
if(isplayer(param_01) || isdefined(param_01.var_222) && isplayer(param_01.var_222))
{
if(!var_0D)
{
param_01 scripts\cp\_damage::func_3D9D(self,param_05,param_04);
}
}
}
return 1;
}
//Function Number: 30
func_9BEA(param_00,param_01)
{
if(isdefined(param_01))
{
if(isdefined(param_01.team) && param_01.team == param_00.team)
{
return 1;
}
if(isdefined(param_01.var_222) && isdefined(param_01.var_222.team) && param_01.var_222.team == param_00.team)
{
return 1;
}
}
return 0;
}
//Function Number: 31
func_5006(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,0);
func_4DDB();
}
//Function Number: 32
func_8008(param_00)
{
if(!isdefined(param_00))
{
param_00 = "all";
}
var_01 = func_7D95(param_00);
return var_01.size;
}
//Function Number: 33
func_7D95(param_00)
{
var_01 = [];
if(!isdefined(level.var_1900))
{
return var_01;
}
foreach(var_03 in level.var_1900)
{
if(isdefined(var_03.var_9D25) && var_03.var_9D25)
{
if(param_00 == "all" || var_03.agent_type == param_00)
{
var_01[var_01.size] = var_03;
}
}
}
return var_01;
}
//Function Number: 34
func_7DB0(param_00)
{
var_01 = [];
foreach(var_03 in level.var_1900)
{
if(isalive(var_03) && isdefined(var_03.team) && var_03.team == param_00)
{
var_01[var_01.size] = var_03;
}
}
return var_01;
}
//Function Number: 35
func_7D94(param_00)
{
var_01 = [];
if(!isdefined(level.var_1900))
{
return var_01;
}
foreach(var_03 in level.var_1900)
{
if(isdefined(var_03.var_9D25) && var_03.var_9D25)
{
if(var_03.var_1096F == param_00)
{
var_01[var_01.size] = var_03;
}
}
}
return var_01;
}
//Function Number: 36
func_7DAF()
{
var_00 = [];
foreach(var_02 in level.var_1900)
{
if(isalive(var_02))
{
var_00[var_00.size] = var_02;
}
}
return var_00;
}
//Function Number: 37
func_1601()
{
self.var_9D25 = 1;
}
//Function Number: 38
func_C4B3(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
if(scripts\common\utility::istrue(self.var_8C1F))
{
scripts\cp\_utility::func_AAB5(param_02,param_03);
if(!param_09)
{
var_0A = self method_80B8(self getcurrentweapon());
if(isdefined(var_0A))
{
var_0A thread func_51CC();
var_0A.var_222 = self;
var_0A.var_C83A = param_01;
var_0A makeunusable();
}
}
}
if(isdefined(self.nocorpse))
{
return;
}
var_0B = self;
self.var_2C09 = self method_8084(param_08);
if(func_FF32(self))
{
do_immediate_ragdoll(self.var_2C09);
}
else
{
thread func_5124(self.var_2C09,param_06,param_05,param_04,param_00,param_03);
}
func_D97C(param_01,var_0B,param_06,param_04,param_03);
if(isdefined(level.var_12DC7))
{
[[ level.var_12DC7 ]](param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}
}
//Function Number: 39
func_FF32(param_00)
{
return scripts\common\utility::istrue(param_00.do_immediate_ragdoll);
}
//Function Number: 40
do_immediate_ragdoll(param_00)
{
if(isdefined(param_00))
{
param_00 method_839A();
}
}
//Function Number: 41
func_5124(param_00,param_01,param_02,param_03,param_04,param_05)
{
if(isdefined(param_00))
{
var_06 = param_00 method_8112();
if(animhasnotetrack(var_06,"ignore_ragdoll"))
{
return;
}
}
if(isdefined(level.var_C08A) && level.var_C08A.size)
{
foreach(var_08 in level.var_C08A)
{
if(distancesquared(param_00.origin,var_08.origin) < 65536)
{
return;
}
}
}
wait(0.2);
if(!isdefined(param_00))
{
return;
}
if(param_00 method_81B7())
{
return;
}
var_06 = param_00 method_8112();
var_0A = 0.35;
if(animhasnotetrack(var_06,"start_ragdoll"))
{
var_0B = getnotetracktimes(var_06,"start_ragdoll");
if(isdefined(var_0B))
{
var_0A = var_0B[0];
}
}
var_0C = var_0A * getanimlength(var_06);
wait(var_0C);
if(isdefined(param_00))
{
param_00 method_839A();
}
}
//Function Number: 42
func_51CC()
{
self endon("death");
wait(60);
if(!isdefined(self))
{
return;
}
self delete();
}
//Function Number: 43
func_179E(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = func_E08D(param_03);
var_07 = func_108E8(var_06,param_00,param_01,param_02);
if(isdefined(var_07))
{
var_07 thread [[ var_07 func_10972("spawn") ]](param_01,param_02,param_03,param_04,param_05);
}
return var_07;
}
//Function Number: 44
func_E08D(param_00)
{
var_01 = strtok(param_00," ");
if(isdefined(var_01) && var_01.size == 2)
{
return var_01[1];
}
return param_00;
}
//Function Number: 45
func_D96D(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A)
{
scripts\cp\_damage::func_12DA8(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09);
}
//Function Number: 46
func_D96B(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A)
{
if(!scripts\common\utility::func_9D74(param_04))
{
if(scripts\cp\_utility::func_9CEB(param_00,param_05))
{
return;
}
var_0B = gettime();
if(isdefined(param_01.var_BF85) && param_01.var_BF85 > var_0B)
{
return;
}
else
{
param_01.var_BF85 = var_0B + 250;
}
}
var_0C = "standard";
var_0D = undefined;
if(param_0A.health <= param_02)
{
var_0D = 1;
}
var_0E = scripts\cp\_utility::func_9E27(param_05,param_08,param_04,param_01);
if(var_0E)
{
var_0C = "hitcritical";
}
var_0F = scripts\common\utility::func_9D74(param_04);
var_10 = var_0E && param_01 scripts\cp\_utility::func_9BA0("sharp_shooter_upgrade");
var_11 = var_0F && param_01 scripts\cp\_utility::func_9BA0("bonus_damage_on_last_bullets");
var_12 = var_0F && param_01 scripts\cp\_utility::func_9BA0("damage_booster_upgrade");
var_13 = scripts\common\utility::istrue(param_01.inlaststand);
var_14 = !var_13 && var_0E && var_0F && param_01 scripts\cp\_utility::func_9BA0("headshot_explosion");
var_15 = !scripts\cp\_utility::func_9F19(param_0A) || isagent(param_0A) && param_02 >= param_0A.health;
var_16 = param_04 == "MOD_EXPLOSIVE_BULLET" || param_04 == "MOD_EXPLOSIVE" || param_04 == "MOD_GRENADE_SPLASH" || param_04 == "MOD_PROJECTILE" || param_04 == "MOD_PROJECTILE_SPLASH";
var_17 = param_04 == "MOD_MELEE";
if(scripts\cp\_damage::func_A010(param_05))
{
var_0C = "special_weapon";
}
else if(var_10 || var_11 || var_12 || var_14)
{
var_0C = "card_boosted";
}
else if(issubstr(param_05,"arkyellow") && param_04 == "MOD_EXPLOSIVE_BULLET" && param_08 == "none")
{
var_0C = "yellow_arcane_cp";
}
else if(isplayer(param_01) && param_01 scripts\cp\_utility::has_zombie_perk("perk_machine_boom") && var_16)
{
var_0C = "high_damage";
}
else if(isplayer(param_01) && param_01 scripts\cp\_utility::has_zombie_perk("perk_machine_smack") && var_17)
{
var_0C = "high_damage";
}
else if(isplayer(param_01) && param_01 scripts\cp\_utility::has_zombie_perk("perk_machine_rat_a_tat") && var_0F)
{
var_0C = "high_damage";
}
else if(isplayer(param_01) && scripts\common\utility::istrue(param_01.deadeye_charge) && var_0F)
{
var_0C = "dewdrops_cp";
}
else if(scripts\common\utility::istrue(level.var_9925))
{
var_0C = "high_damage";
}
else if(param_05 == "incendiary_ammo_mp")
{
var_0C = "red_arcane_cp";
}
else if(param_05 == "stun_ammo_mp")
{
var_0C = "blue_arcane_cp";
}
else if(param_05 == "slayer_ammo_mp")
{
var_0C = "pink_arcane_cp";
}
if(isdefined(param_01))
{
if(isdefined(param_01.var_222))
{
param_01.var_222 thread scripts\cp\_damage::func_12E84(var_0C,var_0D,param_02,param_0A.var_E54C);
return;
}
param_01 thread scripts\cp\_damage::func_12E84(var_0C,var_0D,param_02,param_0A.var_E54C);
}
}
//Function Number: 47
func_D97C(param_00,param_01,param_02,param_03,param_04)
{
scripts\cp\_reward::func_82A2(param_00,param_02);
var_05 = func_77D7(param_01);
var_06 = scripts\cp\_utility::func_7844(param_00);
if(isdefined(var_06))
{
scripts\cp\_persistence::func_DDE9(param_03,param_02,param_04,var_06);
if(isdefined(level.var_B07A) && isdefined(var_05))
{
[[ level.var_B07A ]](var_05,self.origin,param_00);
}
}
}
//Function Number: 48
get_alive_enemies()
{
var_00 = func_7DB0("axis");
var_01 = [];
if(isdefined(level.var_5755))
{
var_01 = [[ level.var_5755 ]]();
}
var_00 = scripts\common\utility::array_combine(var_00,var_01);
return var_00;
}
//Function Number: 49
func_77D7(param_00)
{
return param_00.agent_type;
}
//Function Number: 50
func_110A4(param_00,param_01)
{
param_00 = scripts\cp\_utility::func_7844(param_00);
if(!isdefined(param_00))
{
return;
}
if(!isdefined(self.var_24DA))
{
self.var_24DA = [];
}
foreach(var_03 in self.var_24DA)
{
if(var_03.player == param_00)
{
var_03.var_DA = var_03.var_DA + param_01;
return;
}
}
var_05 = spawnstruct();
var_05.player = param_00;
var_05.var_DA = param_01;
self.var_24DA[self.var_24DA.size] = var_05;
}
//Function Number: 51
func_4DDB()
{
if(scripts\cp\_utility::func_9E0E(self))
{
scripts\cp\_utility::func_E113();
}
scripts\cp\_utility::func_E106();
scripts\cp\_utility::func_E119();
self.var_9D25 = 0;
self.var_8BE2 = 0;
self.var_B36A = undefined;
self.var_BB9C = undefined;
self.var_222 = undefined;
self.var_4539 = undefined;
self.var_136FD = undefined;
self.var_9B81 = undefined;
self.var_9BC9 = undefined;
self.var_1118F = undefined;
self.var_BDF5 = undefined;
foreach(var_01 in level.var_3CB5)
{
if(isdefined(var_01.var_2507))
{
foreach(var_04, var_03 in var_01.var_2507)
{
if(var_03 == self)
{
var_01.var_2507[var_04] = undefined;
}
}
}
}
if(isdefined(self.var_8C98))
{
self.var_8C98 = undefined;
}
scripts\mp\_mp_agent::func_4DDB();
self notify("disconnect");
}