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

660 lines
16 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\killstreaks\_nuke.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 31
* Decompile Time: 1557 ms
* Timestamp: 10/27/2023 12:29:09 AM
*******************************************************************/
//Function Number: 1
init()
{
level.var_C1D0 = "aftermath_post";
level._effect["mons_warp_flash"] = loadfx("vfx/iw7/_requests/mp/vfx_vehicle_nuke_warp_flash.vfx");
level._effect["mons_warp_in"] = loadfx("vfx/iw7/_requests/mp/vfx_vehicle_nuke_warp_in.vfx");
level._effect["mons_warp_out"] = loadfx("vfx/iw7/_requests/mp/vfx_vehicle_nuke_warp_out.vfx");
level._effect["mons_laser_charge"] = loadfx("vfx/iw7/_requests/mp/vfx_nuke_build_lgt_ship_belly.vfx");
level._effect["mons_laser"] = loadfx("vfx/iw7/_requests/mp/vfx_nuke_laser.vfx");
level._effect["mons_laser_flash"] = loadfx("vfx/iw7/_requests/mp/vfx_nuke_initial_flash.vfx");
level._effect["mons_laser_smoke"] = loadfx("vfx/iw7/_requests/mp/vfx_nuke_dust_wave.vfx");
level._effect["mons_screen_ash"] = loadfx("vfx/iw7/_requests/mp/vfx_nuke_cam_att_ashfall.vfx");
scripts\mp\killstreaks\_killstreaks::func_DEFB("nuke",::func_128F0);
setdvarifuninitialized("scr_nukeTimer",10);
setdvarifuninitialized("scr_nukeCancelMode",0);
level.var_C1CD = getdvarint("scr_nukeTimer");
level.var_3883 = getdvarint("scr_nukeCancelMode");
level.var_C1C5 = spawnstruct();
level.var_C1BB = undefined;
level.var_C1C3 = undefined;
level.var_C1B2 = undefined;
if(!scripts\mp\_utility::func_9FB3(level.var_C1B2))
{
level thread func_C56E();
}
}
//Function Number: 2
func_128F0(param_00)
{
if(isdefined(level.var_C1C4))
{
scripts\mp\_hud_message::func_10122("KILLSTREAKS_NUKE_ALREADY_INBOUND");
return 0;
}
if(scripts\mp\_utility::func_9FC6() && !isdefined(level.var_86AD) || !level.var_86AD)
{
return 0;
}
thread func_5973(0);
self notify("used_nuke");
scripts\mp\_matchdata::func_AFC9("nuke",self.origin);
return 1;
}
//Function Number: 3
func_512C(param_00,param_01,param_02)
{
level endon("nuke_cancelled");
scripts\mp\_hostmigration::func_13708(param_00);
level thread [[ param_01 ]](param_02);
}
//Function Number: 4
func_5973(param_00)
{
level endon("nuke_cancelled");
level.var_C1C5.player = self;
level.var_C1C5.team = self.pers["team"];
level.var_C1C4 = 1;
level.var_C1B2 = undefined;
level.var_D8C5 = int(getomnvar("ui_bomb_timer"));
setomnvar("ui_bomb_timer",4);
thread scripts\mp\_utility::func_115DE("used_nuke",self);
var_01 = func_108E6();
if(!isdefined(var_01))
{
return;
}
var_01 thread func_1395B(self);
var_01 thread func_1395A();
var_01 thread func_13959(param_00);
}
//Function Number: 5
func_108E6()
{
var_00 = level.var_B32E;
var_01 = 0;
var_02 = (0,var_01,0);
var_03 = 24000;
var_04 = 10000;
var_05 = 15000;
var_06 = 5000;
var_07 = getmonsflightpath(var_00,var_02,var_03,undefined,var_04,var_05,var_06);
var_08 = var_00 * (1,1,0);
var_09 = var_08 + (0,0,var_04);
var_0A = var_07["startPoint"];
var_0B = vectortoangles(var_09 - var_0A);
var_0C = spawn("script_model",var_0A);
var_0C setmodel("veh_mil_air_ca_olympus_mons_mp");
var_0C.angles = var_0B;
var_0C.team = self.team;
var_0C.var_222 = self;
var_0C.var_C96C = var_09;
var_0C setcandamage(0);
var_0C setscriptablepartstate("body","hide",0);
return var_0C;
}
//Function Number: 6
getmonsflightpath(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07)
{
var_08 = param_00 + anglestoforward(param_01) * -1 * param_02;
if(isdefined(param_03))
{
var_08 = var_08 * (1,1,0);
}
var_08 = var_08 + (0,0,param_04);
var_09 = param_00 + anglestoforward(param_01) * param_02;
if(isdefined(param_03))
{
var_09 = var_09 * (1,1,0);
}
var_09 = var_09 + (0,0,param_04);
var_0A = length(var_08 - var_09);
var_0B = var_0A / param_05;
var_0A = abs(var_0A / 2 + param_06);
var_0C = var_0A / param_05;
var_0D["startPoint"] = var_08;
var_0D["endPoint"] = var_09;
var_0D["bombTime"] = var_0C;
var_0D["flyTime"] = var_0B;
return var_0D;
}
//Function Number: 7
func_1395B(param_00)
{
soundsettimescalefactor("music_lr",0);
soundsettimescalefactor("music_lsrs",0);
soundsettimescalefactor("weap_plr_fire_1_2d",0.25);
soundsettimescalefactor("weap_plr_fire_2_2d",0.25);
soundsettimescalefactor("weap_plr_fire_3_2d",0.25);
soundsettimescalefactor("weap_plr_fire_4_2d",0.25);
soundsettimescalefactor("weap_plr_fire_overlap_2d",0.25);
soundsettimescalefactor("weap_plr_fire_lfe_2d",0);
soundsettimescalefactor("weap_plr_fire_alt_1_2d",0.25);
soundsettimescalefactor("weap_plr_fire_alt_2_2d",0.25);
soundsettimescalefactor("weap_plr_fire_alt_3_2d",0.25);
soundsettimescalefactor("weap_plr_fire_alt_4_2d",0.25);
soundsettimescalefactor("scn_fx_unres_3d",0.15);
soundsettimescalefactor("scn_fx_unres_2d",0.15);
soundsettimescalefactor("spear_refl_close_unres_3d_lim",0.15);
soundsettimescalefactor("spear_refl_unres_3d_lim",0.15);
soundsettimescalefactor("weap_npc_main_3d",0.15);
soundsettimescalefactor("weap_npc_mech_3d",0.15);
soundsettimescalefactor("weap_npc_mid_3d",0.15);
soundsettimescalefactor("weap_npc_lfe_3d",0);
soundsettimescalefactor("weap_npc_dist_3d",0.15);
soundsettimescalefactor("weap_npc_lo_3d",0.15);
soundsettimescalefactor("melee_npc_3d",0.15);
soundsettimescalefactor("melee_plr_2d",0.15);
soundsettimescalefactor("special_hi_unres_1_3d",0.15);
soundsettimescalefactor("special_lo_unres_1_2d",0);
soundsettimescalefactor("bulletflesh_npc_1_unres_3d_lim",0.15);
soundsettimescalefactor("bulletflesh_npc_2_unres_3d_lim",0.15);
soundsettimescalefactor("bulletflesh_1_unres_3d_lim",0.15);
soundsettimescalefactor("bulletflesh_2_unres_3d_lim",0.15);
soundsettimescalefactor("foley_plr_mvmt_unres_2d_lim",0.2);
soundsettimescalefactor("scn_fx_unres_2d_lim",0.2);
soundsettimescalefactor("scn_fx_special_unres_2d",0);
soundsettimescalefactor("menu_1_2d_lim",0);
soundsettimescalefactor("equip_use_unres_3d",0.15);
soundsettimescalefactor("explo_1_3d",0.15);
soundsettimescalefactor("explo_2_3d",0.15);
soundsettimescalefactor("explo_3_3d",0.15);
soundsettimescalefactor("explo_4_3d",0.15);
soundsettimescalefactor("explo_5_3d",0.15);
soundsettimescalefactor("explo_lfe_3d",0.15);
soundsettimescalefactor("vehicle_air_loops_3d_lim",0.15);
soundsettimescalefactor("projectile_loop_close",0.15);
soundsettimescalefactor("projectile_loop_mid",0.15);
soundsettimescalefactor("projectile_loop_dist",0.15);
self endon("nuke_ship_exit");
level endon("game_ended");
param_00 waittill("disconnect");
level.var_C1B2 = 1;
func_C1B5();
if(level.var_B335 != "mp_dome_dusk")
{
function_0234(-3,5);
}
setslowmotion(1,1,0);
level notify("nuke_cancelled");
self notify("nuke_ship_exit");
}
//Function Number: 8
func_13959(param_00)
{
self endon("nuke_ship_exit");
level endon("game_ended");
thread func_1395C();
wait(2);
self moveto(self.var_C96C,5,0.2,2);
thread func_665A();
self waittill("near_goal");
thread func_10DD1();
level thread func_512C(level.var_C1CD - 7,::func_C1B1,self);
level thread func_512C(level.var_C1CD - 3.3,::func_C1CC,self);
level thread func_512C(level.var_C1CD,::func_C1CB,self);
level thread func_512C(level.var_C1CD,::func_C1CA,self);
level thread func_512C(level.var_C1CD,::func_C1BE,self);
level thread func_512C(level.var_C1CD,::func_C1BC,self);
level thread func_512C(level.var_C1CD + 0.25,::func_C1CE,self);
level thread func_512C(level.var_C1CD + 1.5,::func_C1B8,self);
self waittill("at_goal");
self scriptmodelplayanimdeltamotion("veh_mil_air_ca_mons_mp_doors_open",1);
if(!isdefined(level.var_C1AE))
{
level.var_C1AE = spawn("script_origin",(0,0,1));
level.var_C1AE hide();
}
scripts\mp\_rank::func_1835(2,level.var_C1C5.team,"nuke");
if(level.var_3883 && param_00)
{
level thread func_3884(level.var_C1C5.player);
}
}
//Function Number: 9
func_10DD1()
{
level endon("nuke_cancelled");
setomnvar("ui_nuke_countdown_active",1);
if(level.var_B335 != "mp_dome_dusk")
{
function_0234(-1,10);
}
level thread func_12E43();
if(!isdefined(level.var_C1A7))
{
level.var_C1A7 = spawn("script_origin",(0,0,0));
level.var_C1A7 hide();
}
for(var_00 = level.var_C1CD;var_00 > 0;var_00--)
{
if(var_00 == 1)
{
level.var_C1A7 playsound("mp_killstreak_nuclearstrike_alarm_last");
}
else
{
level.var_C1A7 playsound("mp_killstreak_nuclearstrike_alarm");
}
wait(1);
}
wait(5);
self notify("nuke_ship_exit");
}
//Function Number: 10
func_665A()
{
self endon("nuke_ship_exit");
playfx(scripts\common\utility::getfx("mons_warp_in"),self.var_C96C);
playsoundatpos(self.var_C96C,"ks_nuke_mons_arrive");
wait(0.545);
scripts\mp\_shellshock::func_1245(0.8,0.5,level.var_B32E,100000);
playfx(scripts\common\utility::getfx("mons_warp_flash"),self.var_C96C);
self setscriptablepartstate("body","show",0);
wait(0.5);
self setscriptablepartstate("thrusters_burst","active",0);
self playsound("ks_nuke_mons_start");
wait(4);
self setscriptablepartstate("thrusters","active",0);
wait(1);
self setscriptablepartstate("thrusters_burst","neutral",0);
}
//Function Number: 11
func_1395C()
{
self endon("nuke_ship_exit");
for(;;)
{
var_00 = distance(self.origin,self.var_C96C);
if(var_00 <= 5000 && !isdefined(self.var_BE83))
{
self notify("near_goal");
self.var_BE83 = 1;
}
if(var_00 == 0)
{
self notify("at_goal");
break;
}
scripts\common\utility::func_136F7();
}
}
//Function Number: 12
func_1395A()
{
self waittill("nuke_ship_exit");
playfx(scripts\common\utility::getfx("mons_warp_out"),self.origin);
playsoundatpos(self.origin,"ks_nuke_mons_ftl_buildup");
wait(3);
scripts\mp\_shellshock::func_1245(0.8,0.5,level.var_B32E,100000);
playsoundatpos(self.origin,"ks_nuke_mons_ftl_out");
playfx(scripts\common\utility::getfx("mons_warp_flash"),self.origin);
self delete();
level.var_C1C4 = undefined;
}
//Function Number: 13
func_8051()
{
var_00 = 150;
var_01 = 100000;
var_02 = self.angles[1];
var_03 = (0,var_02,0);
var_04 = self.origin + anglestoforward(var_03) * var_01;
return var_04;
}
//Function Number: 14
func_3884(param_00)
{
level waittill("game_ended");
param_00 scripts\common\utility::waittill_any_3("death","disconnect");
func_C1B5();
level.var_C1C4 = undefined;
level notify("nuke_cancelled");
}
//Function Number: 15
func_C1B1(param_00)
{
param_00 endon("nuke_ship_exit");
level endon("nuke_cancelled");
playfx(scripts\common\utility::getfx("mons_laser_charge"),param_00.origin);
param_00 playsound("ks_nuke_mons_prepare");
var_01 = 15;
scripts\mp\_shellshock::func_1245(0.1,var_01,level.var_B32E,100000);
}
//Function Number: 16
func_C1CC(param_00)
{
param_00 endon("nuke_ship_exit");
level endon("nuke_cancelled");
}
//Function Number: 17
func_C1CB(param_00)
{
param_00 endon("nuke_ship_exit");
level endon("nuke_cancelled");
if(isdefined(level.var_C1AE))
{
}
}
//Function Number: 18
func_C1B5(param_00)
{
var_01 = 0;
if(isdefined(level.var_D8C5))
{
var_01 = level.var_D8C5;
}
setomnvar("ui_bomb_timer",var_01);
setomnvar("ui_nuke_countdown_active",0);
}
//Function Number: 19
func_C1BE(param_00)
{
param_00 endon("nuke_ship_exit");
level endon("nuke_cancelled");
func_C1B5();
level.var_C1BB = 1;
param_00 playsound("ks_nuke_mons_laser");
playfx(scripts\common\utility::getfx("mons_laser_flash"),param_00.origin - (0,0,500));
playfx(scripts\common\utility::getfx("mons_laser_smoke"),level.var_B32E);
}
//Function Number: 20
func_C1CA(param_00)
{
param_00 endon("nuke_ship_exit");
level endon("nuke_cancelled");
setslowmotion(1,0.25,0.5);
level waittill("nuke_death");
setslowmotion(0.25,1,3);
}
//Function Number: 21
func_C1CE(param_00)
{
param_00 endon("nuke_ship_exit");
level endon("nuke_cancelled");
level.var_C1CF = 1;
if(level.var_B335 != "mp_dome_dusk")
{
function_0234(-2,1.5);
}
setdvar("r_materialBloomHQScriptMasterEnable",0);
scripts\mp\_hostmigration::func_13708(0.5);
level notify("nuke_aftermath_post_started");
level waittill("nuke_death");
param_00 scriptmodelplayanimdeltamotion("veh_mil_air_ca_mons_mp_doors_close",1);
level thread func_12EDA();
foreach(var_02 in level.players)
{
if(scripts\mp\_utility::func_9F19(var_02))
{
playfxontagforclients(scripts\common\utility::getfx("mons_screen_ash"),var_02,"tag_eye",var_02);
}
}
scripts\mp\_hostmigration::func_13708(3.1);
if(level.var_B335 != "mp_dome_dusk")
{
function_0234(-3,1);
}
}
//Function Number: 22
func_C1B8(param_00)
{
param_00 endon("nuke_ship_exit");
level endon("nuke_cancelled");
level endon("game_ended");
level notify("nuke_death");
scripts\mp\_hostmigration::func_13834();
var_01 = 0;
if(level.gametype == "war" || level.gametype == "dm")
{
var_01 = 1;
}
if(isdefined(level.var_C1C5.player))
{
foreach(var_03 in level.var_3CB5)
{
if(func_C1B3(var_03,var_01))
{
if(isplayer(var_03))
{
var_03.var_C1B7 = 1;
if(scripts\mp\_utility::func_9F19(var_03))
{
scripts\mp\_damage::func_17AC(var_03,level.var_C1C5.player,undefined,"nuke_mp",0,undefined,undefined,undefined,undefined,undefined);
var_03 thread scripts\mp\_damage::func_6CE1(level.var_C1C5.player,level.var_C1C5.player,999999,0,"MOD_EXPLOSIVE","nuke_mp",var_03.origin,(0,0,1),"none",0,0,undefined,undefined);
}
}
}
}
if(scripts\mp\_utility::func_9FB3(var_01))
{
func_52C5();
}
else
{
func_52C5(scripts\mp\_utility::getotherteam(param_00.team));
}
scripts\mp\_utility::func_D915("killstreak ended - nuke",level.var_C1C5.player);
if(scripts\mp\_utility::func_9FB3(var_01))
{
level.var_C1C3 = 1;
var_05 = level.var_C1C5.player;
if(level.teambased)
{
var_05 = level.var_C1C5.player.team;
}
thread scripts\mp\_gamelogic::endgame(var_05,game["end_reason"]["nuke_end"],1);
}
}
level.var_C1C4 = undefined;
}
//Function Number: 23
func_C1B3(param_00,param_01)
{
if(!isdefined(level.var_C1C5))
{
return 0;
}
if(scripts\mp\_utility::func_9FB3(param_01))
{
return 1;
}
if(level.teambased)
{
if(isdefined(level.var_C1C5.team) && param_00.team == level.var_C1C5.team)
{
return 0;
}
}
else
{
var_02 = isdefined(level.var_C1C5.player) && param_00 == level.var_C1C5.player;
var_03 = isdefined(level.var_C1C5.player) && isdefined(param_00.var_222) && param_00.var_222 == level.var_C1C5.player;
if(var_02 || var_03)
{
return 0;
}
}
return 1;
}
//Function Number: 24
func_C1BC(param_00)
{
level endon("nuke_cancelled");
scripts\mp\_shellshock::func_1245(0.2,1.5,level.var_B32E,100000);
level waittill("nuke_death");
scripts\mp\_shellshock::func_1245(0.4,0.1,level.var_B32E,100000);
foreach(var_02 in level.players)
{
var_02 playrumbleonentity("damage_heavy");
}
}
//Function Number: 25
func_C56E()
{
for(;;)
{
level waittill("connected",var_00);
var_00 thread func_C57B();
}
}
//Function Number: 26
func_C57B()
{
self endon("disconnect");
level endon("nuke_cancelled");
for(;;)
{
self waittill("spawned_player");
if(isdefined(level.var_C1BB))
{
thread func_FB0F(0.1);
}
}
}
//Function Number: 27
func_FB0F(param_00)
{
wait(param_00);
if(level.var_B335 != "mp_dome_dusk")
{
self method_83FD(-3,0);
}
playfxontagforclients(scripts\common\utility::getfx("mons_screen_ash"),self,"tag_eye",self);
}
//Function Number: 28
func_12E43()
{
level endon("game_ended");
level endon("disconnect");
level endon("nuke_cancelled");
level endon("nuke_death");
var_00 = level.var_C1CD * 1000 + gettime();
setomnvar("ui_nuke_end_milliseconds",var_00);
level waittill("host_migration_begin");
var_01 = scripts\mp\_hostmigration::func_13834();
if(var_01 > 0)
{
setomnvar("ui_nuke_end_milliseconds",var_00 + var_01);
}
}
//Function Number: 29
func_12EDA()
{
level endon("game_ended");
for(;;)
{
level waittill("host_migration_end");
level func_F7BC(0);
}
}
//Function Number: 30
func_F7BC(param_00)
{
if(isdefined(level.var_C1BA))
{
level thread [[ level.var_C1BA ]]();
return;
}
if(level.var_B335 != "mp_dome_dusk")
{
function_0234(-3,param_00);
}
}
//Function Number: 31
func_52C5(param_00)
{
var_01 = "nuke_mp";
var_02 = level.var_1655;
var_03 = scripts\mp\perks\_perkfunctions::func_7D96();
var_04 = undefined;
if(isdefined(var_02) && isdefined(var_03))
{
var_04 = scripts\common\utility::func_2284(var_02,var_03);
}
else if(isdefined(var_02))
{
var_04 = var_02;
}
else if(isdefined(var_03))
{
var_04 = var_03;
}
if(isdefined(var_04))
{
foreach(var_06 in var_04)
{
if(isdefined(var_06))
{
var_06 scripts\mp\killstreaks\_utility::dodamagetokillstreak(10000,level.var_C1C5.player,level.var_C1C5.player,param_00,var_06.origin,"MOD_EXPLOSIVE",var_01);
}
}
}
}