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

262 lines
5.7 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\_shardball.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 14
* Decompile Time: 549 ms
* Timestamp: 10/27/2023 12:21:29 AM
*******************************************************************/
//Function Number: 1
func_FC58()
{
level._effect["shard_ball_rocket_trail"] = loadfx("vfx/iw7/_requests/mp/vfx_shard_ball_launch_trail.vfx");
level._effect["shard_ball_explosion_shards"] = loadfx("vfx/iw7/_requests/mp/vfx_shard_ball_proj_exp.vfx");
level._effect["shard_ball_explosion_rocket"] = loadfx("vfx/iw7/_requests/mp/vfx_shard_ball_launch_exp.vfx");
scripts\mp\_powerloot::func_DF06("power_shardBall",["passive_increased_radius","passive_increased_entities","passive_grenade_to_mine"]);
}
//Function Number: 2
func_FC5A()
{
scripts\mp\_weapons::func_B2A3();
self.var_222 func_FC5B(self,1);
self notify("detonateExplosive",self.var_222);
}
//Function Number: 3
func_FC59()
{
}
//Function Number: 4
func_FC5B(param_00,param_01)
{
self notify("powers_shardBall_used",1);
if(!isdefined(param_01))
{
param_01 = 0;
}
param_00 endon("death");
if(!isalive(self))
{
param_00 delete();
return;
}
if(!isdefined(param_00))
{
return;
}
if(!param_01)
{
param_00 waittill("missile_stuck",var_02);
if(isplayer(var_02) || isagent(var_02))
{
scripts\mp\_weapons::func_85DD(param_00,var_02);
}
}
param_00 thread scripts\mp\_shellshock::func_858A();
param_00 scripts\mp\_weapons::func_69FF(undefined);
param_00 thread func_13B39();
}
//Function Number: 5
func_13B39()
{
var_00 = self.var_11180;
var_01 = self.var_222;
var_02 = self.var_222.team;
var_03 = self.var_13C2E;
var_04 = func_7EA7();
self waittill("explode",var_05);
if(!isdefined(var_01))
{
return;
}
playsoundatpos(var_05,"frag_grenade_explode");
thread func_13B34(var_04,var_01);
self notify("start_secondary_explosion",var_05);
}
//Function Number: 6
func_7EA7()
{
var_00 = self.angles;
if(isdefined(self.var_11180))
{
var_00 = self.var_11180.angles;
}
return var_00;
}
//Function Number: 7
func_7EA8(param_00,param_01,param_02,param_03)
{
var_04 = 150;
var_05 = 200;
var_06 = anglestoup(param_00);
if(isdefined(param_02))
{
var_04 = param_02;
}
var_07 = var_05 * var_06;
var_08 = param_01 + var_07;
var_06 = var_04 * var_06;
var_09 = param_01 + var_06;
if(!isdefined(param_03) || !param_03)
{
var_0A = physics_createcontents(["physicscontents_solid","physicscontents_glass","physicscontents_vehicleclip","physicscontents_missileclip","physicscontents_clipshot"]);
var_0B = function_0287(param_01,var_08,var_0A,undefined,0,"physicsquery_closest");
if(var_0B.size > 0)
{
var_0C = var_0B[0]["position"];
var_09 = param_01 + var_0C / 2;
}
}
return var_09;
}
//Function Number: 8
func_13AEA(param_00)
{
param_00 waittill("death");
if(isdefined(self))
{
self delete();
}
}
//Function Number: 9
func_13A0A(param_00)
{
self waittill("death");
if(isdefined(param_00))
{
param_00 delete();
}
}
//Function Number: 10
func_13B1F(param_00)
{
self endon("death");
while(self.origin != param_00)
{
wait(0.05);
}
self notify("start_secondary_explosion",param_00);
}
//Function Number: 11
func_13B34(param_00,param_01,param_02,param_03,param_04,param_05)
{
param_01 endon("disconnect");
param_01 endon("joined_team");
param_01 endon("joined_spectators");
var_06 = "start_secondary_explosion";
if(isdefined(param_03))
{
var_06 = param_03;
}
self waittill(var_06,var_07);
playsoundatpos(var_07,"shard_ball_explode_default");
var_08 = [];
foreach(var_0A in level.players)
{
if(!isdefined(var_0A))
{
continue;
}
if(!scripts\mp\_utility::func_9F19(var_0A))
{
continue;
}
if(var_0A != param_01 && level.teambased && param_01.team != var_0A.team)
{
continue;
}
var_08 = scripts\common\utility::array_add_safe(var_08,var_0A);
}
var_0C = param_01 scripts\mp\_powerloot::func_7FC4("power_shardBall",30);
var_0D = param_01 scripts\mp\_powerloot::func_7FC4("power_shardBall",300);
var_0E = scripts\common\utility::func_782F(var_07,var_08,undefined,undefined,var_0D,var_0C);
var_0F = 15;
if(isdefined(param_04))
{
var_0F = param_04;
}
var_10 = param_01 scripts\mp\_powerloot::func_7FC2("power_shardBall",var_0F);
for(var_11 = 0;var_11 < var_10;var_11++)
{
var_12 = func_80B9(var_07,param_00);
var_13 = undefined;
if(isdefined(var_0E) && var_0E.size > 0)
{
var_14 = scripts\common\utility::random(var_0E);
var_13 = var_14 gettagorigin("j_mainroot");
var_0E = scripts\common\utility::func_22A9(var_0E,var_14);
}
param_01 thread func_6D81(var_07,var_12,param_02,var_13,param_05);
scripts\common\utility::func_136F7();
}
}
//Function Number: 12
func_80B9(param_00,param_01)
{
var_02 = anglestoup(param_01);
var_03 = anglestoright(param_01);
var_04 = anglestoforward(param_01);
var_05 = randomint(360);
var_06 = randomint(360);
var_07 = cos(var_06) * sin(var_05);
var_08 = sin(var_06) * sin(var_05);
var_09 = cos(var_05);
var_0A = var_07 * var_03 + var_08 * var_04 + var_09 * var_02 / 0.33;
return var_0A;
}
//Function Number: 13
func_6D81(param_00,param_01,param_02,param_03,param_04)
{
self endon("disconnect");
var_05 = param_00 + param_01;
if(isdefined(param_03))
{
var_05 = param_03;
}
var_06 = scripts\mp\_utility::func_1309("iw6_semtexshards_mp",param_00,var_05,self);
var_06.var_1653 = param_04;
if(isdefined(param_02))
{
var_06 method_82DD(param_02);
}
var_06 waittill("explode",var_07);
playsoundatpos(var_07,"mp_shard_grenade_impacts");
}
//Function Number: 14
func_CC21(param_00)
{
self notify("powers_shardBall_used",0);
scripts\mp\_utility::func_CC16(param_00.var_13C2E,1,param_00.origin);
}