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

190 lines
4.4 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\_ricochet.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 9
* Decompile Time: 478 ms
* Timestamp: 10/27/2023 12:21:27 AM
*******************************************************************/
//Function Number: 1
func_E4E3()
{
level.var_E4DF = [];
level._effect["proto_ricochet_temp"] = loadfx("vfx/old/misc/proto_ricochet_temp");
level._effect["proto_ricochet_shot_temp"] = loadfx("vfx/old/misc/proto_ricochet_shot_temp");
level.var_E4DF["proto_ricochet_device_mp"] = spawnstruct();
level.var_E4DF["proto_ricochet_device_mp"].var_C739 = 60;
level.var_E4DF["proto_ricochet_device_mp"].var_B9DC = ::func_E4E5;
level.var_E4DF["proto_ricochet_device_mp"].model = "prop_mp_ricochet_temp";
level.var_E4DF["proto_ricochet_device_mp"].var_7542 = "proto_ricochet_temp";
}
//Function Number: 2
func_E4E9(param_00)
{
self endon("spawned_player");
self endon("disconnect");
if(!isalive(self))
{
param_00 delete();
return;
}
param_00 waittill("missile_stuck",var_01);
var_02 = (param_00.origin[0],param_00.origin[1],param_00.origin[2] + level.var_E4DF[param_00.var_13C2E].var_C739);
var_03 = spawn("script_model",var_02);
var_03 setmodel(level.var_E4DF[param_00.var_13C2E].model);
var_03.angles = param_00.angles;
var_03.team = self.team;
var_03.var_222 = self;
var_03.var_15F = param_00;
var_04 = (var_02[0],var_02[1],var_02[2] + 12);
var_03.var_7542 = spawnfx(scripts\common\utility::getfx(level.var_E4DF[param_00.var_13C2E].var_7542),var_04);
triggerfx(var_03.var_7542);
var_05 = 16;
var_06 = anglestoup(var_03.angles);
var_06 = var_05 * var_06;
var_07 = var_03.origin + var_06;
var_03.trigger = spawn("script_origin",var_07);
var_03.trigger linkto(var_03);
var_03 setcandamage(1);
var_03 thread func_E4E0(self);
var_03 thread [[ level.var_E4DF[param_00.var_13C2E].var_B9DC ]](self);
var_03 method_831F(self);
}
//Function Number: 3
func_E4E8()
{
if(isdefined(self.var_15F))
{
self.var_15F delete();
}
if(isdefined(self.var_7542))
{
self.var_7542 delete();
}
self delete();
self notify("death");
}
//Function Number: 4
func_E4E7()
{
self endon("death");
while(getdvarint("scr_ric_debug",0) == 1)
{
wait(1);
}
wait(6);
func_E4E8();
}
//Function Number: 5
func_E4E0(param_00)
{
scripts\mp\_damage::func_B9C6(100,"trophy",::func_E4E2,::func_E4E4,0);
}
//Function Number: 6
func_E4E4(param_00,param_01,param_02,param_03,param_04)
{
return 0;
}
//Function Number: 7
func_E4E2(param_00,param_01,param_02,param_03)
{
if(isdefined(self.var_222) && param_00 != self.var_222)
{
param_00 notify("destroyed_equipment");
}
self notify("detonateExplosive");
}
//Function Number: 8
func_E4E5(param_00)
{
param_00 endon("disconnect");
self endon("death");
thread func_E4E7();
for(;;)
{
self waittill("damage",var_01,var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09,var_0A);
var_0B = func_E4E1(var_04,var_03);
if(isdefined(var_0B))
{
var_0C = var_04 + var_0B * 5000;
if(getdvarint("scr_ric_debug",0) == 1)
{
}
if(getdvarint("scr_ric_debug",0) != 1)
{
scripts\mp\_utility::func_1309(var_0A,var_04,var_0C,param_00);
}
var_0D = scripts\common\utility::getfx("proto_ricochet_shot_temp");
playfx(var_0D,var_04,var_0B * -1,(0,0,1));
}
}
}
//Function Number: 9
func_E4E1(param_00,param_01)
{
var_02 = (param_01[0],param_01[1],0);
var_03 = getdvarfloat("scr_ric_spread",7);
var_04 = undefined;
var_05 = -15536;
foreach(var_07 in level.players)
{
if(!scripts\mp\_utility::func_9F19(var_07))
{
continue;
}
if(var_07.team == self.team)
{
continue;
}
var_08 = (var_07.origin[0],var_07.origin[1],var_07.origin[2] + 36);
var_09 = var_08 - param_00;
var_0A = distance(var_07.origin,param_00);
var_09 = var_09 * 1 / var_0A;
var_0B = vectordot(var_09,param_01);
if(abs(var_0B) < 0.707)
{
if(var_0A < 500)
{
if(var_0A < var_05)
{
var_04 = var_08;
var_05 = var_0A;
}
}
}
}
if(isdefined(var_04))
{
var_09 = var_04 - param_00;
var_09 = var_09 * 1 / var_05;
var_0D = randomfloatrange(-180,180);
var_0E = vectorcross((0,0,1),var_09);
var_0F = vectorcross(var_09,var_0E);
var_10 = sin(var_0D);
var_11 = cos(var_0D);
var_12 = randomfloatrange(var_03 * -1,var_03);
var_12 = tan(var_12);
var_13 = var_0E * var_11 + var_0F * var_10 * var_12 + var_09;
return var_13;
}
}