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

681 lines
16 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\killstreaks\_venom.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 26
* Decompile Time: 1158 ms
* Timestamp: 10/27/2023 12:30:02 AM
*******************************************************************/
//Function Number: 1
init()
{
scripts\mp\killstreaks\_killstreaks::func_DEFB("venom",::func_1288B,undefined,undefined,undefined,::func_13C17);
var_00 = ["passive_increased_debuff","passive_decreased_damage","passive_increased_speed","passive_decreased_duration","passive_quiet_vehicle","passive_decreased_speed","passive_heavy","passive_increased_frost","passive_speed_heavy","passive_stealth_speed"];
scripts\mp\_killstreak_loot::func_DF07("venom",var_00);
level._effect["venom_gas"] = loadfx("vfx/iw7/_requests/mp/vfx_venom_gas_cloud");
level._effect["venom_trail"] = loadfx("vfx/iw7/_requests/mp/vfx_venom_gas_trail");
level._effect["venom_eyeglow"] = loadfx("vfx/iw7/_requests/mp/vfx_venom_glint");
level._effect["venom_kamikaze_boost"] = loadfx("vfx/iw7/_requests/mp/vfx_venom_kamikaze_boost");
level._effect["venom_kamikaze_trail"] = loadfx("vfx/iw7/_requests/mp/vfx_venom_kamikaze_trail");
level.venoms = 0;
}
//Function Number: 2
func_13C17(param_00)
{
var_01 = 0;
if(isdefined(level.venoms) && level.venoms > 0)
{
if(level.venoms >= 6)
{
var_01 = 1;
}
}
if(scripts\mp\_utility::func_9FB3(var_01))
{
scripts\mp\_hud_message::func_10122("KILLSTREAKS_VENOM_MAX");
return 0;
}
self setclientomnvar("ui_remote_control_sequence",1);
}
//Function Number: 3
func_1288B(param_00)
{
var_01 = scripts\mp\killstreaks\_killstreaks::func_D507(param_00);
if(!var_01)
{
return 0;
}
var_02 = func_6C9B(80,20,10);
if(!isdefined(var_02))
{
scripts\mp\_hud_message::func_10122("KILLSTREAKS_NOT_ENOUGH_SPACE");
thread scripts\mp\killstreaks\_killstreaks::func_11086();
return 0;
}
scripts\common\utility::func_1C6E(0);
scripts\common\utility::func_1C76(0);
var_03 = "venom_drone_wm";
var_04 = 30;
var_05 = 10;
var_06 = "veh_venom_mp";
var_07 = "used_venom";
var_08 = scripts\mp\_killstreak_loot::getrarityforlootitem(param_00.var_1318B);
if(var_08 != "")
{
var_03 = var_03 + "_" + var_08;
var_07 = var_07 + "_" + var_08;
}
if(scripts\mp\killstreaks\_utility::func_A69F(param_00,"passive_increased_frost"))
{
var_04 = var_04 - 10;
}
if(scripts\mp\killstreaks\_utility::func_A69F(param_00,"passive_speed_heavy"))
{
var_06 = "veh_venom_mp_fast";
}
if(scripts\mp\killstreaks\_utility::func_A69F(param_00,"passive_stealth_speed"))
{
var_06 = "veh_venom_mp_slow";
}
var_09 = spawnvehicle(var_03,param_00.var_110EA,var_06,var_02,self.angles,self);
var_09.team = self.team;
var_09.var_222 = self;
var_09.health = 99999;
var_09.maxhealth = var_05;
var_09.var_EDD7 = var_05;
var_09.var_110EA = param_00.var_110EA;
var_09.var_AC75 = var_04;
var_09.var_108FF = var_02;
var_09.var_C1D4 = ::scripts\mp\killstreaks\_utility::func_C1D3;
var_09.var_13C2E = "venomproj_mp";
var_09.var_110E8 = param_00;
var_09 method_8491("fly");
var_09 method_849F(0);
var_09 method_8317(1);
var_09 method_80C7();
var_09 method_831F(self);
var_09 method_82DD(self);
level.venoms++;
var_09 setscriptablepartstate("body","show",0);
var_09 setscriptablepartstate("dust","active",0);
var_09 setscriptablepartstate("eye","idle",0);
if(scripts\mp\killstreaks\_utility::func_A69F(param_00,"passive_stealth_speed"))
{
var_09 setscriptablepartstate("stealth","active",0);
var_09 setscriptablepartstate("center_disc","hide_fx",0);
var_09 setscriptablepartstate("side_discs","hide_fx",0);
var_09 setscriptablepartstate("lights","hide_fx",0);
}
else
{
var_09 setscriptablepartstate("center_disc","idle",0);
var_09 setscriptablepartstate("side_discs","idle",0);
var_09 setscriptablepartstate("lights","idle",0);
}
self setplayerangles(var_09.angles);
self method_825C(var_09);
self method_8490("disable_mode_switching",1);
self method_8490("disable_juke",0);
self method_8490("disable_guns",1);
self method_8490("disable_boost",1);
thread func_F673();
var_09 scripts\mp\killstreaks\_utility::func_1843(param_00.var_110EA,"Killstreak_Ground",var_09.var_222,1);
var_09 scripts\mp\killstreaks\_utility::func_FAE4("venom_end");
var_09 thread func_13285();
var_09 thread func_1327E();
var_09 thread func_1327D();
var_09 thread func_1327B();
var_09 thread func_13279();
var_09 thread func_1327A();
var_0A = var_09.var_AC75;
if(scripts\mp\_utility::func_9D46())
{
var_0A = int(var_0A / 2);
}
var_09 thread func_13281(var_0A);
var_09 thread func_13283();
var_09 thread func_1327C();
var_09 thread venom_watchempdamage();
scripts\mp\_matchdata::func_AFC9(param_00.var_110EA,var_09.origin);
if(getdvarint("camera_thirdPerson"))
{
scripts\mp\_utility::setthirdpersondof(0);
}
self.var_E2D7 = self.angles;
thread func_5130(var_09,var_0A);
level thread scripts\mp\_utility::func_115DE(var_07,self);
return 1;
}
//Function Number: 4
func_5130(param_00,param_01)
{
self endon("disconnect");
param_00 endon("venom_end");
level endon("game_ended");
scripts\mp\_hostmigration::func_13708(0.1);
self setclientomnvar("ui_venom_controls",1);
self setclientomnvar("ui_killstreak_countdown",gettime() + int(param_01 * 1000));
self setclientomnvar("ui_killstreak_health",param_00.var_EDD7 / 10);
self thermalvisionfofoverlayon();
}
//Function Number: 5
func_F673()
{
self endon("disconnect");
level endon("game_ended");
var_00 = 0;
var_01 = self method_842D(var_00);
var_02 = self method_8433(var_00);
var_03 = self method_842F(var_00);
self method_842E(var_00,140);
self method_8434(var_00,600);
self method_8430(var_00,500);
thread func_E2DE(var_01,var_02,var_03);
}
//Function Number: 6
func_E2DE(param_00,param_01,param_02)
{
self endon("disconnect");
level endon("game_ended");
self waittill("restore_old_values");
var_03 = 0;
self method_842E(var_03,param_00);
self method_8434(var_03,1000);
self method_8430(var_03,0);
wait(0.5);
self method_8434(var_03,param_01);
self method_8430(var_03,param_02);
}
//Function Number: 7
func_13285()
{
var_00 = self.var_222;
var_00 endon("disconnect");
self endon("venom_end");
level endon("game_ended");
for(;;)
{
self waittill("spaceship_thrusting",var_01);
if(scripts\mp\_utility::func_9FB3(var_01))
{
self setscriptablepartstate("center_disc","thrust",0);
continue;
}
if(scripts\mp\killstreaks\_utility::func_A69F(self.var_110E8,"passive_stealth_speed"))
{
self setscriptablepartstate("center_disc","hide_fx",0);
continue;
}
self setscriptablepartstate("center_disc","idle",0);
}
}
//Function Number: 8
func_1327E()
{
var_00 = self.var_222;
var_00 endon("disconnect");
self endon("venom_end");
level endon("game_ended");
for(;;)
{
self waittill("spaceship_juking",var_01,var_02);
if(scripts\mp\_utility::func_9FB3(var_02))
{
self setscriptablepartstate("side_discs","thrust",0);
continue;
}
if(scripts\mp\killstreaks\_utility::func_A69F(self.var_110E8,"passive_stealth_speed"))
{
self setscriptablepartstate("side_discs","hide_fx",0);
continue;
}
self setscriptablepartstate("side_discs","idle",0);
}
}
//Function Number: 9
func_1327D()
{
var_00 = self.var_222;
var_00 endon("disconnect");
self endon("venom_end");
level endon("game_ended");
for(;;)
{
var_00 waittill("energy_depleted",var_01);
if(var_01 == 0)
{
if(scripts\mp\killstreaks\_utility::func_A69F(self.var_110E8,"passive_stealth_speed"))
{
self setscriptablepartstate("center_disc","hide_fx",0);
continue;
}
self setscriptablepartstate("center_disc","idle",0);
}
}
}
//Function Number: 10
func_1327B()
{
var_00 = self.var_222;
var_00 endon("disconnect");
self endon("venom_end");
level endon("game_ended");
scripts\mp\_hostmigration::func_13708(0.5);
for(;;)
{
if(var_00 attackbuttonpressed())
{
var_01 = distancesquared(self.var_108FF,self.origin);
if(var_01 >= 5760000)
{
var_00 scripts\mp\_missions::func_D991("ch_venom_distance");
}
self notify("venom_end",self.origin);
}
scripts\common\utility::func_136F7();
}
}
//Function Number: 11
func_0118(param_00,param_01)
{
if(isdefined(param_00))
{
self method_8593();
self setscriptablepartstate("Explosion","explode",0);
}
}
//Function Number: 12
func_13279()
{
var_00 = self.var_222;
var_00 endon("disconnect");
self endon("venom_end");
level endon("game_ended");
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,var_0C,var_0D,var_0E);
var_0A = scripts\mp\_utility::func_13CA1(var_0A,var_0E);
if(isdefined(var_02) && var_02.classname != "trigger_hurt")
{
if(isdefined(var_02.var_222))
{
var_02 = var_02.var_222;
}
if(isdefined(var_02.team) && var_02.team == self.team && var_02 != self.var_222)
{
continue;
}
}
if(lib_0DF8::func_9DDF(var_02))
{
continue;
}
if(isdefined(var_0A))
{
var_01 = scripts\mp\killstreaks\_utility::func_7FBD(var_02,var_0A,var_05,var_01,self.maxhealth,1,1,1);
}
self.var_EDD7 = self.var_EDD7 - var_01;
if(self.var_EDD7 < 0)
{
self.var_EDD7 = 0;
}
var_00 setclientomnvar("ui_killstreak_health",self.var_EDD7 / 10);
if(isplayer(var_02))
{
scripts\mp\killstreaks\_killstreaks::func_A6A0(var_02,var_0A,self,var_05);
if(isdefined(var_0A) && var_0A == "concussion_grenade_mp")
{
if(scripts\mp\_utility::func_9FB3(scripts\mp\_utility::playersareenemies(self.var_222,var_02)))
{
var_02 scripts\mp\_missions::func_D991("ch_tactical_emp_eqp");
}
}
var_02 scripts\mp\_damagefeedback::func_12E84("");
if(self.var_EDD7 <= 0)
{
var_02 notify("destroyed_killstreak",var_0A);
var_0F = scripts\mp\_killstreak_loot::getrarityforlootitem(self.var_110E8.var_1318B);
var_10 = "callout_destroyed_" + self.var_110EA;
if(var_0F != "")
{
var_10 = var_10 + "_" + var_0F;
}
scripts\mp\_damage::func_C548(self.var_110EA,var_02,var_0A,var_05,var_01,"destroyed_" + self.var_110EA,"venom_destroyed",var_10,1);
self notify("venom_end",self.origin);
}
continue;
}
if(self.var_EDD7 <= 0)
{
self notify("venom_end",self.origin,1);
}
}
}
//Function Number: 13
func_1327A()
{
var_00 = self.var_222;
level endon("game_ended");
self waittill("venom_end",var_01,var_02);
scripts\mp\_utility::func_D915("killstreak ended - venom",var_00);
if(getdvarint("camera_thirdPerson"))
{
scripts\mp\_utility::setthirdpersondof(1);
}
self setscriptablepartstate("body","hide",0);
self setscriptablepartstate("center_disc","hide_fx",0);
self setscriptablepartstate("side_discs","hide_fx",0);
self setscriptablepartstate("eye","hide_fx",0);
self setscriptablepartstate("lights","hide_fx",0);
self setscriptablepartstate("stealth","neutral",0);
thread func_0118(var_00,var_01);
level.venoms--;
if(level.venoms < 0)
{
level.venoms = 0;
}
if(isdefined(var_00))
{
if(!scripts\mp\_utility::func_9FB3(var_02))
{
var_00 scripts\mp\_utility::func_7385(1);
scripts\mp\_hostmigration::func_13708(1);
var_00 scripts\mp\_utility::func_7385(0);
}
var_00 setclientomnvar("ui_out_of_bounds_countdown",0);
var_00 method_825D();
var_00 setclientomnvar("ui_venom_controls",0);
var_00 setclientomnvar("ui_killstreak_countdown",0);
var_00 setclientomnvar("ui_killstreak_health",0);
var_00 setclientomnvar("ui_killstreak_missile_warn",0);
var_00 setplayerangles(var_00.var_E2D7);
var_00 thermalvisionfofoverlayoff();
var_00.var_E2D7 = undefined;
var_00 thread scripts\mp\killstreaks\_killstreaks::func_11086();
var_00 scripts\common\utility::func_1C6E(1);
var_00 scripts\common\utility::func_1C76(1);
var_00 notify("restore_old_values");
}
self delete();
}
//Function Number: 14
func_13281(param_00)
{
var_01 = self.var_222;
var_01 endon("disconnect");
self endon("venom_end");
self endon("host_migration_lifetime_update");
level endon("game_ended");
thread scripts\mp\killstreaks\_utility::watchhostmigrationlifetime("venom_end",param_00,::func_13281);
scripts\mp\_hostmigration::func_13708(param_00);
var_01 scripts\mp\_utility::func_D4B6("venom_timeout",undefined,undefined,var_01.origin);
self notify("venom_end",self.origin);
}
//Function Number: 15
func_13283()
{
var_00 = self.var_222;
self endon("venom_end");
level endon("game_ended");
var_00 scripts\common\utility::waittill_any_3("joined_team","disconnect","joined_spectators");
self notify("venom_end",self.origin);
}
//Function Number: 16
func_1327C()
{
var_00 = self.var_222;
var_00 endon("disconnect");
self endon("venom_end");
level endon("game_ended");
thread scripts\mp\killstreaks\_killstreaks::func_1CA5("venom_end");
self waittill("killstreakExit");
self notify("venom_end",self.origin);
}
//Function Number: 17
venom_watchempdamage()
{
level endon("game_ended");
self endon("venom_end");
for(;;)
{
self waittill("emp_damage",var_00,var_01,var_02,var_03,var_04);
scripts\mp\killstreaks\_utility::dodamagetokillstreak(100,var_00,var_00,self.team,var_02,var_04,var_03);
}
}
//Function Number: 18
func_13284()
{
var_00 = self.var_222;
var_00 endon("disconnect");
self endon("venom_end");
level endon("game_ended");
for(;;)
{
level waittill("connected",var_01);
thread func_13276(var_01);
}
}
//Function Number: 19
func_13275()
{
var_00 = self.var_222;
foreach(var_02 in level.players)
{
if(var_02.team == var_00.team && var_02 != var_00)
{
continue;
}
scripts\mp\killstreaks\_utility::func_20CF(var_02,"venom_end");
}
}
//Function Number: 20
func_13276(param_00)
{
var_01 = self.var_222;
var_01 endon("disconnect");
self endon("venom_end");
param_00 endon("disconnect");
level endon("game_ended");
for(;;)
{
param_00 waittill("removed_spawn_perks");
if(param_00.team == var_01.team)
{
break;
}
scripts\mp\killstreaks\_utility::func_20CF(param_00,"venom_end");
}
}
//Function Number: 21
func_6C9B(param_00,param_01,param_02)
{
var_03 = anglestoforward(self.angles);
var_04 = anglestoright(self.angles);
var_05 = self geteye();
var_06 = var_05 + (0,0,param_01);
var_07 = var_06 + param_00 * var_03;
if(func_3DCF(var_05,var_07,param_02))
{
return var_07;
}
var_07 = var_06 - param_00 * var_03;
if(func_3DCF(var_05,var_07,param_02))
{
return var_07;
}
var_07 = var_07 + param_00 * var_04;
if(func_3DCF(var_05,var_07,param_02))
{
return var_07;
}
var_07 = var_06 - param_00 * var_04;
if(func_3DCF(var_05,var_07,param_02))
{
return var_07;
}
var_07 = var_06;
if(func_3DCF(var_05,var_07,param_02))
{
return var_07;
}
scripts\common\utility::func_136F7();
var_07 = var_06 + 0.707 * param_00 * var_03 + var_04;
if(func_3DCF(var_05,var_07,param_02))
{
return var_07;
}
var_07 = var_06 + 0.707 * param_00 * var_03 - var_04;
if(func_3DCF(var_05,var_07,param_02))
{
return var_07;
}
var_07 = var_06 + 0.707 * param_00 * var_04 - var_03;
if(func_3DCF(var_05,var_07,param_02))
{
return var_07;
}
var_07 = var_06 + 0.707 * param_00 * -1 * var_03 - var_04;
if(func_3DCF(var_05,var_07,param_02))
{
return var_07;
}
return undefined;
}
//Function Number: 22
func_3DCF(param_00,param_01,param_02)
{
var_03 = 0;
if(capsuletracepassed(param_01,param_02,param_02 * 2 + 0.01,undefined,1,1))
{
var_04 = [self];
var_05 = physics_createcontents(["physicscontents_solid","physicscontents_glass","physicscontents_vehicleclip","physicscontents_missileclip","physicscontents_clipshot"]);
var_06 = function_0287(param_00,param_01,var_05,var_04,0,"physicsquery_closest");
if(var_06.size == 0)
{
var_03 = 1;
}
}
return var_03;
}
//Function Number: 23
isvenom()
{
return isdefined(self.var_110EA) && self.var_110EA == "venom";
}
//Function Number: 24
makedamageimmune(param_00)
{
if(!isdefined(self.entsimmune))
{
self.entsimmune = [];
}
self.entsimmune[param_00 getentitynumber()] = param_00;
}
//Function Number: 25
isdamageimmune(param_00)
{
if(!isvenom())
{
return 0;
}
if(!isdefined(self.entsimmune))
{
return 0;
}
return isdefined(self.entsimmune[param_00 getentitynumber()]);
}
//Function Number: 26
venommodifieddamage(param_00,param_01,param_02,param_03,param_04)
{
if(isdefined(param_00) && isdefined(param_03) && isdefined(param_01))
{
if(param_03 isvenom() && scripts\mp\killstreaks\_utility::func_A69F(param_03.var_110E8,"passive_decreased_damage"))
{
var_05 = distance2dsquared(param_01.origin,param_03.origin);
if(var_05 >= 22500 && param_04 > 10)
{
param_04 = 0;
}
}
if(param_03 isdamageimmune(param_01))
{
param_04 = 0;
}
}
return param_04;
}