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

720 lines
14 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: 3117.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 47
* Decompile Time: 18 ms
* Timestamp: 10/27/2023 12:26:09 AM
*******************************************************************/
//Function Number: 1
func_98E7(param_00)
{
self.var_2B0F = 1;
self.var_1FC6 = 1;
self.var_4BDC = undefined;
self.var_4BDB = undefined;
self method_828A("noclip");
self method_8287(99999999);
self method_828B(1);
func_F722("hover");
thread lib_0C77::func_13F62();
return level.var_111AE;
}
//Function Number: 2
func_8281(param_00)
{
if(func_7ED5() == "launched")
{
if(func_8285(self))
{
func_827B(self,self.var_D04C,func_7ED2());
}
return level.var_E87A;
}
return level.var_6AD5;
}
//Function Number: 3
func_827A(param_00)
{
if(func_7ED5() == "entangled")
{
if(isdefined(self.var_D04C) && !scripts\cp\_laststand::player_in_laststand(self.var_D04C) && self.var_D04C attackbuttonpressed())
{
var_01 = self.var_D04C;
var_02 = anglestoforward(self.var_D04C getplayerangles());
var_03 = var_01.origin + (0,0,5);
var_04 = var_03 + var_02 * func_79E8();
var_05 = bullettrace(var_03,var_04,0,var_01)["position"];
if(distancesquared(self.origin,var_05) < 360000)
{
var_06 = var_05;
}
else
{
var_07 = vectornormalize(var_06 - self.origin);
var_06 = self.origin + var_07 * 600;
}
self setorigin(var_06,0);
self.var_8272 = var_01.origin;
scripts\cp\maps\cp_zmb\cp_zmb_ghost_wave::func_12DBA(var_01,self);
return level.var_111AE;
}
else
{
func_AAA9(self);
return level.var_E87A;
}
}
return level.var_6AD5;
}
//Function Number: 4
func_79E8()
{
return 175;
}
//Function Number: 5
func_827F(param_00)
{
if(func_7ED5() == "hover")
{
func_41B5();
lib_0A1B::func_2968("fly");
if(!isdefined(self.var_8268))
{
self.var_8268 = scripts\common\utility::getclosest(self.origin,level.var_13F29);
self.var_8272 = self.var_8268.origin;
return level.var_111AE;
}
if(distancesquared(self.var_8268.origin,self.origin) < 4096)
{
self notify("ghost_reached_hover_node");
var_01 = scripts\common\utility::func_22A9(level.var_13F29,self.var_8268);
var_02 = func_7DB1();
if(var_02.size > 0)
{
var_03 = scripts\common\utility::random(var_02).origin;
}
else
{
var_03 = self.origin;
}
self.var_8268 = func_80BB(var_03,var_01);
self.var_8272 = self.var_8268.origin;
}
return level.var_111AE;
}
return level.var_6AD5;
}
//Function Number: 6
func_827E(param_00)
{
if(func_7ED5() == "hide")
{
func_41B7();
lib_0A1B::func_2968("fly");
if(!isdefined(self.var_8267))
{
self.var_8267 = scripts\common\utility::getclosest(self.origin,level.var_13F28);
self.var_8272 = self.var_8267.origin;
return level.var_111AE;
}
if(distancesquared(self.var_8267.origin,self.origin) < 1024)
{
self notify("ghost_reached_hide_node");
self.var_8267 = scripts\common\utility::getstruct(self.var_8267.target,"targetname");
self.var_8272 = self.var_8267.origin;
}
return level.var_111AE;
}
return level.var_6AD5;
}
//Function Number: 7
func_3DF0(param_00)
{
lib_0A1B::func_2914();
if(!func_7ED5() == "attack")
{
return level.var_6AD5;
}
if(self.var_180)
{
return level.var_6AD5;
}
if(!isdefined(self.var_13F2C))
{
return level.var_6AD5;
}
if(!scripts\cp\_utility::func_9F19(self.var_13F2C))
{
return level.var_6AD5;
}
if(isdefined(self.var_13F2C.ignoreme) && self.var_13F2C.ignoreme == 1)
{
return level.var_6AD5;
}
if(self.var_1B03 == "melee" || scripts\mp\agents\_scriptedagents::func_9F77())
{
return level.var_6AD5;
}
if(distancesquared(self.var_13F2C.origin,self.origin) > 9216)
{
return level.var_6AD5;
}
lib_0A1B::func_2965(self.var_13F2C);
return level.var_6AD5;
}
//Function Number: 8
func_3D46(param_00)
{
if(!func_7ED5() == "attack")
{
return level.var_6AD5;
}
if(self.var_180)
{
self.var_4B26 = undefined;
return level.var_6AD5;
}
if(!isdefined(self.var_13F2C))
{
return level.var_6AD5;
}
if(distancesquared(self.var_13F2C.origin,self.origin) > 147456)
{
return level.var_6AD5;
}
self.var_8272 = self.var_13F2C.origin;
func_12871();
return level.var_111AE;
}
//Function Number: 9
func_F108(param_00)
{
if(!func_7ED5() == "attack")
{
return level.var_6AD5;
}
if(isdefined(self.var_5969))
{
return level.var_6AD5;
}
if(!isdefined(self.var_13F2C))
{
return level.var_6AD5;
}
self.var_8272 = self.var_13F2C.origin;
func_12871(1024);
return level.var_6AD5;
}
//Function Number: 10
func_8278(param_00)
{
var_01 = self;
var_01 endon("death");
var_01 endon("ghost_stop_attack");
level endon("game_ended");
var_01 func_8279(param_00);
var_02 = func_7AE1();
var_03 = func_7AC9();
var_04 = randomintrange(func_7AE1(),func_7AC9() + 1);
for(var_05 = 0;var_05 < var_04;var_05++)
{
var_01 waittill("ghost_played_melee_anim");
}
if(isdefined(param_00))
{
param_00.var_C1F5--;
}
var_01 lib_0A1B::func_2914();
var_01 func_41B7();
var_01 func_F722("hover");
var_01 waittill("ghost_reached_hover_node");
var_01 func_12EA1(1);
}
//Function Number: 11
func_7AE1()
{
return 1;
}
//Function Number: 12
func_7AC9()
{
return 1;
}
//Function Number: 13
func_8279(param_00)
{
func_F723(param_00);
func_F722("attack");
func_12EA1(2.5);
}
//Function Number: 14
func_F723(param_00)
{
self.var_13F2C = param_00;
self.var_8272 = param_00.origin;
}
//Function Number: 15
func_7DB1()
{
var_00 = [];
foreach(var_02 in level.players)
{
if(var_02.ignoreme || isdefined(var_02.var_222) && var_02.var_222.ignoreme)
{
continue;
}
if(lib_0F74::func_1002C(var_02))
{
continue;
}
if(!isalive(var_02))
{
continue;
}
var_00[var_00.size] = var_02;
}
return var_00;
}
//Function Number: 16
func_12871(param_00)
{
if(!isdefined(param_00))
{
param_00 = 1;
}
if(isdefined(self.var_8272) && distancesquared(self.var_8272,self.origin) > param_00)
{
lib_0A1B::func_2968("fly");
return;
}
lib_0A1B::func_2968("");
}
//Function Number: 17
func_65FE(param_00,param_01)
{
param_00 notify("ghost_stop_attack");
param_01.ghost_in_entanglement = param_00;
param_00.var_D04C = param_01;
param_00 func_F75F(param_00,1);
param_00 func_F722("entangled");
param_00 func_41B5();
param_00 func_41B7();
param_00 func_12EA1(1);
param_00 lib_0A1B::func_2968("entangled");
param_00 lib_0A1B::func_2914();
param_00 func_F79D("off",param_00);
if(isdefined(level.fbd) && isdefined(level.fbd.fightstarted) && level.fbd.fightstarted)
{
param_00 setscriptablepartstate("soul","captured");
}
}
//Function Number: 18
func_673C(param_00)
{
param_00 func_12EA1(1);
param_00 func_F75F(param_00,0);
param_00 func_F722("hover");
param_00 lib_0A1B::func_2968("fly");
param_00 func_F65F("off",param_00);
param_00 func_F79D("active",param_00);
}
//Function Number: 19
func_AAA9(param_00)
{
level thread func_AAAD(param_00.origin,param_00.angles,param_00.color,param_00.var_D04C);
param_00.nocorpse = 1;
param_00 suicide();
}
//Function Number: 20
func_AAAD(param_00,param_01,param_02,param_03)
{
level endon("game_ended");
param_03 endon("disconnect");
param_03.ghost_in_entanglement = undefined;
var_04 = spawn("script_model",param_00);
var_04.angles = vectortoangles(param_01);
var_04.color = get_fake_ghost_color(param_02);
var_04 setmodel(get_fake_ghost_model(var_04.color));
var_04 setscriptablepartstate("animation","on");
if(isdefined(param_03))
{
var_05 = anglestoforward(param_03 getplayerangles());
}
else
{
var_05 = (0,0,1);
}
var_05 = var_05 * 9000;
var_04 physicslaunchserver(var_04.origin,var_05);
var_04 method_84D1();
if(isdefined(level.fbd) && isdefined(level.fbd.fightstarted) && level.fbd.fightstarted)
{
thread [[ level.fbd.soulprojectilemonitorfunc ]](var_04,param_03);
thread [[ level.fbd.soulprojectiledeathfunc ]](var_04);
}
var_04 thread func_CAFB(var_04,param_03);
}
//Function Number: 21
get_fake_ghost_color(param_00)
{
return param_00;
}
//Function Number: 22
get_fake_ghost_model(param_00)
{
if(isdefined(level.get_fake_ghost_model_func))
{
return [[ level.get_fake_ghost_model_func ]](param_00);
}
return "fake_zombie_ghost_" + param_00;
}
//Function Number: 23
func_CAFB(param_00,param_01)
{
param_00 endon("death");
param_00 waittill("collision",var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09);
if(isdefined(level.fbd) && isdefined(level.fbd.fightstarted) && level.fbd.fightstarted)
{
var_0A = param_00 gettagorigin("j_spine4");
playfx(level._effect["flying_soul_hit_fail"],var_0A,anglestoforward(param_00.angles),anglestoup(param_00.angles));
}
func_6AEC(param_00,param_01,func_7ED4());
}
//Function Number: 24
func_6AEC(param_00,param_01,param_02)
{
if(isdefined(level.fbd) && isdefined(level.fbd.fightstarted) && level.fbd.fightstarted)
{
param_00 delete();
return;
}
func_827D(param_00,param_01,param_02);
playfx(level._effect["ghost_explosion_death_" + get_exp_vfx_color(param_00.color)],param_00.origin,anglestoforward(param_00.angles),anglestoup(param_00.angles));
param_00 setscriptablepartstate("animation","off");
param_00 delete();
}
//Function Number: 25
get_exp_vfx_color(param_00)
{
if(issubstr(param_00,"bomb"))
{
return strtok(param_00,"_")[0];
}
return param_00;
}
//Function Number: 26
func_8285(param_00)
{
if(isdefined(param_00.var_D04C) && param_00.var_D04C secondaryoffhandbuttonpressed())
{
return 1;
}
if(gettime() - param_00.var_10BBB > 5000)
{
return 1;
}
return 0;
}
//Function Number: 27
func_827B(param_00,param_01,param_02)
{
func_D48C(param_00);
func_827D(param_00,param_01,param_02);
param_00.nocorpse = 1;
param_00 suicide();
}
//Function Number: 28
func_827D(param_00,param_01,param_02)
{
var_03 = getclosestactivemovingtargetwithinrange(param_00,param_02);
if(isplayer(param_01))
{
if(isdefined(var_03))
{
param_01 thread scripts\cp\_damage::func_12E84("hitcritical");
if([[ level.should_moving_target_explode ]](param_00,var_03))
{
if(isdefined(level.process_player_gns_combo_func))
{
[[ level.process_player_gns_combo_func ]](param_01,var_03);
}
process_moving_target_hit(var_03,param_01,param_00);
return;
}
if(isdefined(level.hit_wrong_moving_target_func))
{
[[ level.hit_wrong_moving_target_func ]](param_01,var_03,param_00);
return;
}
return;
}
if(isdefined(level.process_player_gns_combo_func))
{
[[ level.process_player_gns_combo_func ]](param_01,var_03);
return;
}
}
}
//Function Number: 29
process_moving_target_hit(param_00,param_01,param_02)
{
if(isdefined(level.process_moving_target_hit_func))
{
[[ level.process_moving_target_hit_func ]](param_00,param_01,param_02);
return;
}
remove_moving_target_default(param_00,param_01);
}
//Function Number: 30
remove_moving_target_default(param_00,param_01)
{
func_E05A(param_00,param_01);
scripts\cp\maps\cp_zmb\cp_zmb_ghost_wave::func_93F2(param_01);
}
//Function Number: 31
func_E05A(param_00,param_01)
{
param_00 setscriptablepartstate("skull_vfx","off");
param_00 delete();
param_01 thread scripts\cp\_vo::try_to_play_vo("killfirm_ghost","zmb_comment_vo","highest",10,0,0,1,10);
scripts\cp\maps\cp_zmb\cp_zmb_ghost_wave::func_DB04();
}
//Function Number: 32
getclosestactivemovingtargetwithinrange(param_00,param_01)
{
if(!isdefined(level.var_BD43))
{
return undefined;
}
var_02 = [];
foreach(var_04 in level.var_BD43)
{
foreach(var_06 in var_04)
{
if(!isdefined(var_06))
{
continue;
}
if(distancesquared(param_00.origin,var_06.origin) < param_01)
{
var_02[var_02.size] = var_06;
}
}
}
var_09 = sortbydistance(var_02,param_00.origin);
return var_09[0];
}
//Function Number: 33
func_7D97(param_00,param_01)
{
var_02 = [];
foreach(var_04 in level.var_13F2D)
{
if(var_04 == param_00)
{
continue;
}
if(func_9DDD(var_04))
{
continue;
}
if(distancesquared(param_00.origin,var_04.origin) < param_01)
{
var_02[var_02.size] = var_04;
}
}
return var_02;
}
//Function Number: 34
func_7ED2()
{
return -25536;
}
//Function Number: 35
func_7ED4()
{
return 7225;
}
//Function Number: 36
func_F75F(param_00,param_01)
{
param_00.var_9BD4 = param_01;
}
//Function Number: 37
func_9DDD(param_00)
{
return scripts\common\utility::istrue(param_00.var_9BD4);
}
//Function Number: 38
func_C0B6(param_00)
{
return level.var_6AD5;
}
//Function Number: 39
func_F722(param_00)
{
self.var_826C = param_00;
}
//Function Number: 40
func_7ED5()
{
return self.var_826C;
}
//Function Number: 41
func_41B5()
{
self.var_8267 = undefined;
}
//Function Number: 42
func_41B7()
{
self.var_8268 = undefined;
}
//Function Number: 43
func_12EA1(param_00)
{
if(!isdefined(self.var_4BDC))
{
return;
}
if(!isdefined(self.var_4BDB))
{
return;
}
self.var_1FC6 = param_00;
self method_82AF(self.var_4BDC,self.var_4BDB,self.var_1FC6);
}
//Function Number: 44
func_F65F(param_00,param_01)
{
param_01 setscriptablepartstate("being_entangled",param_00);
}
//Function Number: 45
func_F79D(param_00,param_01)
{
param_01 setscriptablepartstate("mist_trail",param_00);
}
//Function Number: 46
func_80BB(param_00,param_01)
{
var_02 = 4;
var_03 = sortbydistance(param_01,param_00);
var_04 = scripts\common\utility::func_116D7(var_03.size > var_02,var_02,var_03.size);
var_05 = randomint(var_04);
return var_03[var_05];
}
//Function Number: 47
func_D48C(param_00)
{
var_01 = vectornormalize(param_00.var_381);
if(var_01 == (0,0,0))
{
var_01 = (0,0,1);
}
var_02 = vectortoangles(var_01);
playfx(level._effect["ghost_explosion_death"],param_00.origin,var_01,anglestoup(var_02));
}