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

291 lines
6.4 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\killstreaks\_spiderbot.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 16
* Decompile Time: 742 ms
* Timestamp: 10/27/2023 12:29:41 AM
*******************************************************************/
//Function Number: 1
init()
{
level._effect["spider_explode"] = loadfx("vfx/core/expl/grenadeexp_default");
scripts\mp\killstreaks\_killstreaks::func_DEFB("spiderbot",::func_1288A);
}
//Function Number: 2
func_1288A(param_00)
{
var_01 = 0;
if(!var_01)
{
return 0;
}
func_10DF3(param_00.var_110EA);
thread func_13B56();
thread func_13B57();
thread func_13B55();
return 1;
}
//Function Number: 3
func_13B56()
{
self endon("disconnect");
self endon("detonate_spiderbot");
self notifyonplayercommand("manual_explode","+attack");
self notifyonplayercommand("manual_explode","+attack_akimbo_accessible");
self waittill("manual_explode");
self notify("detonate_spiderbot");
}
//Function Number: 4
func_13B58()
{
self endon("disconnect");
self endon("detonate_spiderbot");
self notifyonplayercommand("toggle_thermal","+smoke");
var_00 = 0;
for(;;)
{
self waittill("toggle_thermal");
if(!var_00)
{
self thermalvisionon();
var_00 = 1;
continue;
}
self thermalvisionoff();
var_00 = 0;
}
}
//Function Number: 5
func_13B57()
{
self endon("disconnect");
self endon("detonate_spiderbot");
self notifyonplayercommand("shoot_web","+speed_throw");
for(;;)
{
self waittill("shoot_web");
if(!isdefined(self.var_13CE7))
{
self.var_13CE7 = 1;
var_00 = anglestoforward(self getplayerangles());
var_01 = self geteye() + var_00 * 20 + (0,0,20);
var_02 = var_01 + var_00;
var_03 = scripts\mp\_utility::func_1309("iw7_webhook_mp",var_01,var_02,self);
thread func_13BB0(var_03,var_01);
thread func_13BB1(2,var_03);
}
}
}
//Function Number: 6
func_13BAF()
{
self notifyonplayercommand("web_cut","+gostand");
self waittill("web_cut");
if(isdefined(self.var_13CE7))
{
self.var_AD32 = undefined;
self.var_13CE7 = undefined;
self unlink();
}
}
//Function Number: 7
func_13BB0(param_00,param_01)
{
self endon("disconnect");
self endon("detonate_spiderbot");
self endon("web_cut");
param_00 waittill("explode",var_02);
var_03 = scripts\common\utility::spawn_tag_origin();
var_03.var_1155F = func_7F05(var_02,50,1,50);
var_03.origin = var_02;
var_04 = scripts\common\utility::spawn_tag_origin();
var_04.origin = param_01;
var_04.angles = vectortoangles(var_02 - var_04.origin);
self.var_AD32 = var_04;
self playerlinktoblend(var_04,"tag_origin",0.5);
if(isdefined(var_03.var_1155F) && isplayer(var_03.var_1155F))
{
var_03 linkto(var_03.var_1155F);
thread func_13B79(var_03);
var_05 = 0.5;
while(distance2dsquared(var_04.origin,var_03.origin) > 400 || !isdefined(var_03.var_1155F))
{
var_04 rotateto(vectortoangles(var_03.origin - var_04.origin),0.3);
var_04 moveto(var_03.origin,var_05);
wait(var_05);
var_05 = var_05 - 0.25;
var_05 = max(0.05,var_05);
}
self notify("detonate_spiderbot");
return;
}
var_04 moveto(var_03.origin,0.5);
var_04 thread func_13AD8(var_03.origin,self);
}
//Function Number: 8
func_13B79(param_00)
{
param_00 endon("death");
self endon("detonate_spiderbot");
param_00.var_1155F scripts\common\utility::waittill_any_3("phase_shift_power_activated","rewind_activated","powers_teleport_used","powers_transponder_used","orbital_deployment_action","death","disconnect");
param_00.var_1155F = undefined;
}
//Function Number: 9
func_13AD8(param_00,param_01)
{
param_01 endon("disconnect");
param_01 endon("detonate_spiderbot");
param_01 endon("web_cut");
while(self.origin != param_00)
{
scripts\common\utility::func_136F7();
}
param_01 notify("detonate_spiderbot");
}
//Function Number: 10
func_13BB1(param_00,param_01)
{
self endon("disconnect");
self endon("detonate_spiderbot");
param_01 endon("explode");
wait(param_00);
self.var_13CE7 = undefined;
}
//Function Number: 11
func_13B55()
{
self endon("disconnect");
level endon("game_ended");
self waittill("detonate_spiderbot",var_00);
var_01 = self.origin;
var_02 = 500;
var_03 = 200;
if(!isdefined(var_00))
{
radiusdamage(var_01,256,var_02,var_03,self,"MOD_EXPLOSIVE","killstreak_spiderbot_mp");
}
playfx(scripts\common\utility::getfx("spider_explode"),var_01);
playsoundatpos(var_01,"frag_grenade_explode");
playrumbleonposition("grenade_rumble",var_01);
earthquake(0.5,0.75,var_01,800);
foreach(var_05 in level.players)
{
if(var_05 scripts\mp\_utility::func_9FC6())
{
continue;
}
if(distancesquared(var_01,var_05.origin) > 360000)
{
continue;
}
var_05 setclientomnvar("ui_hud_shake",1);
}
func_1108D();
}
//Function Number: 12
func_10DF3(param_00)
{
self setclientomnvar("ui_spiderbot_controls",1);
self thermalvisionon();
self thermalvisionfofoverlayon();
func_511C(0.05,"spiderbot_steps");
scripts\common\utility::allow_weapon(0);
scripts\common\utility::func_1C6E(0);
self method_845A("spiderbot_mp");
self setmodel("alien_minion");
self allowslide(0);
self method_8422(0);
self allowcrouch(0);
self allowprone(0);
self method_8012(0);
self method_8412(1);
self method_8454(8);
self setscriptablepartstate("CompassIcon","spiderbot");
return 1;
}
//Function Number: 13
func_1108D()
{
self setclientomnvar("ui_spiderbot_controls",0);
self thermalvisionoff();
self thermalvisionfofoverlayoff();
self method_83AD();
scripts\common\utility::allow_weapon(1);
scripts\common\utility::func_1C6E(1);
if(isdefined(self.var_13CE7))
{
self.var_AD32 = undefined;
self.var_13CE7 = undefined;
self unlink();
}
self setscriptablepartstate("CompassIcon","defaulticon");
}
//Function Number: 14
func_7F05(param_00,param_01,param_02,param_03)
{
var_04 = [];
var_05 = undefined;
if(!isdefined(param_02))
{
param_02 = 0;
}
if(!isdefined(param_03))
{
param_03 = 0;
}
var_06 = param_01 * param_01;
foreach(var_08 in level.players)
{
if(func_38C1(var_08,param_00,var_06,param_02,param_03))
{
var_05 = var_08;
break;
}
}
return var_05;
}
//Function Number: 15
func_38C1(param_00,param_01,param_02,param_03,param_04)
{
var_05 = param_00.origin;
var_06 = distance2dsquared(param_01,var_05);
return var_06 < param_02 && !param_03 || scripts\mp\_weapons::func_13C7E(param_01,var_05,param_04,param_00);
}
//Function Number: 16
func_511C(param_00,param_01)
{
self endon("death");
wait(param_00);
self playloopsound(param_01);
}