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

1665 lines
39 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\killstreaks\_thor.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 69
* Decompile Time: 3207 ms
* Timestamp: 10/27/2023 12:29:51 AM
*******************************************************************/
//Function Number: 1
init()
{
scripts\mp\killstreaks\_killstreaks::func_DEFB("thor",::func_12909,undefined,undefined,undefined,::func_13C8E,undefined,::func_13099,::func_13CD7);
level._effect["thor_clouds"] = loadfx("vfx/core/mp/killstreaks/odin/odin_parallax_clouds");
level._effect["thor_fisheye"] = loadfx("vfx/iw7/_requests/mp/vfx_scrnfx_thor_fisheye.vfx");
level._effect["thor_targeting"] = loadfx("vfx/core/mp/killstreaks/odin/vfx_marker_odin_cyan");
level._effect["thor_target_mark"] = loadfx("vfx/iw7/_requests/mp/vfx_marker_map_target");
level._effect["thor_explode"] = loadfx("vfx/iw7/core/mp/killstreaks/vfx_veh_exp_thor.vfx");
level.var_117B0 = [];
level.var_117B0["thor"] = spawnstruct();
level.var_117B0["thor"].var_11901 = 60;
level.var_117B0["thor"].maxhealth = 2600;
level.var_117B0["thor"].var_110EA = "thor";
level.var_117B0["thor"].var_13260 = "thor_mp";
level.var_117B0["thor"].var_B91A = "veh_mil_air_thor_wm";
level.var_117B0["thor"].var_115EB = "used_thor";
level.var_117B0["thor"].var_13553 = "loki_gone";
level.var_117B0["thor"].var_1352D = "odin_target_killed";
level.var_117B0["thor"].var_1352C = "odin_targets_killed";
level.var_117B0["thor"].var_12B20 = 4;
level.var_117B0["thor"].var_12B80 = &"KILLSTREAKS_LOKI_UNAVAILABLE";
level.var_117B0["thor"].var_73BE = "compass_objpoint_airstrike_friendly";
level.var_117B0["thor"].var_6485 = "compass_objpoint_airstrike_busy";
level.var_117B0["thor"].var_394["missile"] = spawnstruct();
level.var_117B0["thor"].var_394["missile"].var_39C = "thorproj_mp";
level.var_117B0["thor"].var_394["missile"].var_13FCB = "thorproj_zoomed_mp";
level.var_117B0["thor"].var_394["missile"].var_DA5A = "thorproj_mp";
level.var_117B0["thor"].var_394["missile"].var_E7BA = "heavygun_fire";
level.var_117B0["thor"].var_394["missile"].var_DF5C = 0.1;
level.var_117B0["thor"].var_394["missile"].var_B47C = 5;
level.var_117B0["thor"].var_394["missile"].var_D5E4 = "null";
level.var_117B0["thor"].var_394["missile"].var_D5DD = "null";
level.var_117B0["thor"].var_394["missile"].var_C195 = "null";
level.var_C20D = 0;
var_00 = ["passive_increased_armor","passive_decreased_duration","passive_seek_cluster","passive_no_cursor","passive_switch_thruster","passive_armor_duration"];
scripts\mp\_killstreak_loot::func_DF07("thor",var_00);
}
//Function Number: 2
func_13C8E(param_00)
{
var_01 = 1;
if(scripts\mp\_utility::func_4BD7() >= scripts\mp\_utility::func_B4D2() || level.var_6BAA + var_01 >= scripts\mp\_utility::func_B4D2())
{
scripts\mp\_hud_message::func_10122("KILLSTREAKS_TOO_MANY_VEHICLES");
return 0;
}
level.var_C20D++;
if(level.var_C20D > 1)
{
scripts\mp\_hud_message::func_10122("KILLSTREAKS_TOO_MANY_THORS");
level.var_C20D--;
return 0;
}
thread func_13B73();
self setclientomnvar("ui_remote_control_sequence",1);
return 1;
}
//Function Number: 3
func_13B73()
{
self endon("thor_weapon_switch_ended");
level endon("game_ended");
scripts\common\utility::waittill_any_3("death","disconnect");
if(isdefined(level.var_C20D) && level.var_C20D > 0)
{
level.var_C20D--;
}
if(isdefined(self))
{
self setclientomnvar("ui_remote_control_sequence",0);
}
}
//Function Number: 4
func_13CD7(param_00,param_01)
{
self notify("thor_weapon_switch_ended");
if(!scripts\mp\_utility::func_9FB3(param_01))
{
if(isdefined(level.var_C20D) && level.var_C20D > 0)
{
level.var_C20D--;
}
self setclientomnvar("ui_remote_control_sequence",0);
}
}
//Function Number: 5
func_13099(param_00)
{
level.var_C20D--;
self setclientomnvar("ui_remote_control_sequence",0);
}
//Function Number: 6
func_12909(param_00)
{
var_01 = scripts\mp\killstreaks\_killstreaks::func_D507(param_00);
if(!var_01)
{
level.var_C20D--;
return 0;
}
var_01 = func_10DFC(param_00);
if(!isdefined(var_01))
{
var_01 = 0;
}
return var_01;
}
//Function Number: 7
func_10DFC(param_00)
{
self.var_117AF = spawn("script_model",level.var_12AF6);
self.var_117AF setmodel("tag_origin");
self.var_117AF.angles = (0,115,0);
self.var_117AF.var_222 = self;
self.var_117AF hide();
self.var_117AF thread func_E731(-360,60,"thor_fire_thrusters","thor_switch_thrusters");
self.thorrigangle = -360;
self.var_E2D7 = vectortoangles(anglestoforward(self.angles));
scripts\mp\_utility::func_93FA();
var_01 = func_4A26(param_00.var_110EA,param_00);
if(!isdefined(var_01))
{
level.var_C20D--;
scripts\mp\_utility::func_4FC1();
thread scripts\mp\killstreaks\_killstreaks::func_11086();
return 0;
}
return 1;
}
//Function Number: 8
func_E731(param_00,param_01,param_02,param_03)
{
self endon("death");
self.var_222 endon("disconnect");
if(isdefined(param_02))
{
self.var_222 endon(param_02);
}
if(isdefined(param_03))
{
self.var_222 endon(param_03);
}
if(!isdefined(param_00))
{
param_00 = -360;
}
if(!isdefined(param_01))
{
param_01 = 60;
}
for(;;)
{
self rotateyaw(param_00,param_01);
wait(param_01);
}
}
//Function Number: 9
func_4A26(param_00,param_01)
{
var_02 = level.var_117B0[param_00];
var_03 = randomint(360);
var_04 = 7000;
var_05 = 10000;
var_06 = cos(var_03) * var_04;
var_07 = sin(var_03) * var_04;
var_08 = vectornormalize((var_06,var_07,var_05));
var_08 = var_08 * var_04;
var_09 = self.var_117AF.origin + var_08 + (0,0,1000);
var_0A = self.var_117AF.origin + var_08;
var_0B = var_02.var_B91A;
var_0C = scripts\mp\_killstreak_loot::getrarityforlootitem(param_01.var_1318B);
if(var_0C != "")
{
var_0B = var_0B + "_" + var_0C;
}
var_0D = spawn("script_model",var_09);
if(!isdefined(var_0D))
{
return undefined;
}
var_0D setmodel(var_0B);
var_0D.team = self.team;
var_0D.var_222 = self;
var_0D.health = 99999;
var_0D.var_C22B = 1;
var_0D.var_C239 = var_02.var_394["missile"].var_B47C;
var_0D.var_C238 = 0;
var_0D.var_B88C = func_989D("ID");
var_0D.var_B888 = func_989D("Distance");
var_0D.var_B47C = var_02.var_394["missile"].var_B47C;
var_0D.var_DF5C = var_02.var_394["missile"].var_DF5C;
var_0D.var_13F0A = 10000;
var_0D.var_110EA = param_00;
var_0D.var_117B2 = 1;
var_0D.var_110E8 = param_01;
var_0D.basemodel = var_0B;
var_0D setcandamage(1);
var_0D method_831F(self);
var_0D setscriptablepartstate("body","hide",0);
var_0D.angles = vectortoangles(self.var_117AF.origin - (var_0D.origin[0],var_0D.origin[1],self.var_117AF.origin[2]));
var_0D.var_10E4C = func_495B();
thread func_117AE(var_0D,var_0A);
return var_0D;
}
//Function Number: 10
func_117AE(param_00,param_01)
{
param_00 endon("death");
level endon("game_ended");
param_00.var_222 playlocalsound("thor_init_plr");
param_00 moveto(param_01,1);
param_00 scriptmodelplayanim("iw7_mp_killstreak_thor_idle",1);
param_00 setscriptablepartstate("thrusters","drop",0);
scripts\mp\_shellshock::func_1245(0.15,2,param_00.origin,2000);
var_02 = level.var_117B0[param_00.var_110EA];
if(getdvarint("camera_thirdPerson"))
{
scripts\mp\_utility::setthirdpersondof(0);
}
var_03 = var_02.var_394["missile"].var_39C;
var_04 = var_02.var_394["missile"].var_13FCB;
param_00.var_D8E1 = var_03;
param_00.var_F0C4 = var_04;
param_00.var_222 scripts\mp\_utility::func_12C6(var_03);
param_00.var_222 scripts\mp\_utility::func_12C6(var_04);
param_00.var_222 scripts\mp\_utility::_switchtoweaponimmediate(var_03);
param_00.var_222 playerlinkweaponviewtodelta(param_00,"tag_player",0,180,180,45,180);
param_00.var_222 method_8236(0);
param_00.var_222 method_85A2(getthormapvisionset(level.var_B335));
param_00.var_222 thread func_B011(param_00);
param_00.var_222 setclientomnvar("ui_thor_show",1);
param_00.var_222 setclientomnvar("ui_thor_missiles_loaded",var_02.var_394["missile"].var_B47C);
param_00.var_222 thermalvisionfofoverlayon();
param_00.var_222 thermalvisionon();
for(var_05 = 0;var_05 < 5;var_05++)
{
param_00.var_222 setclientomnvar(param_00.var_B88C[var_05].var_C4A1,undefined);
param_00.var_222 setclientomnvar(param_00.var_B888[var_05].var_C4A1,-1);
}
param_00.var_222 method_82C0("thor_killstreak",1);
var_06 = var_02.var_115EB;
var_07 = scripts\mp\_killstreak_loot::getrarityforlootitem(param_00.var_110E8.var_1318B);
if(var_07 != "")
{
var_06 = var_06 + "_" + var_07;
}
level thread scripts\mp\_utility::func_115DE(var_06,self);
param_00.var_222 scripts\common\utility::func_1C76(0);
param_00 func_8ED7(param_00.basemodel);
param_00 thread func_117A7();
param_00 thread func_117A0();
param_00 thread func_117A9();
wait(0.5);
param_00 scriptmodelplayanim("iw7_mp_killstreak_thor_extend",1);
wait(0.5);
param_00 scriptmodelplayanim("iw7_mp_killstreak_thor_extend_idle",1);
param_00 setscriptablepartstate("thrusters","idle",0);
scripts\mp\_shellshock::func_1245(0.2,0.76,param_00.origin,1000);
param_00 linkto(self.var_117AF,"tag_origin");
param_00 scripts\mp\killstreaks\_utility::func_1843(param_00.var_110EA,undefined,param_00.var_222,1);
var_08 = "icon_minimap_thor_friendly";
param_00.minimapid = param_00 scripts\mp\killstreaks\_airdrop::func_49F7(var_08,undefined,1,1,1);
var_09 = var_02.var_11901;
if(scripts\mp\killstreaks\_utility::func_A69F(param_00.var_110E8,"passive_armor_duration"))
{
var_09 = var_09 - 5;
}
param_00 thread func_1179D(param_00.var_222);
param_00 thread func_117AC(var_09);
param_00 thread func_117AA();
param_00 thread func_1179F();
param_00 thread func_117AD();
param_00 thread func_117AB();
param_00 thread func_117A2();
if(scripts\mp\killstreaks\_utility::func_A69F(param_00.var_110E8,"passive_switch_thruster"))
{
param_00 thread thor_watchswitchthrust(param_00.var_222);
}
param_00 thread func_117A3();
param_00 thread func_1179E();
param_00 thread func_117A5();
param_00 thread func_117A1();
param_00 thread func_117A8();
param_00 thread func_11790();
param_00 thread func_13AA2(self,var_02);
param_00.var_222 scripts\mp\_matchdata::func_AFC9(param_00.var_110EA,self.origin);
param_00.var_222 scripts\common\utility::func_1C6E(0);
param_00.var_222 setclientomnvar("ui_killstreak_countdown",gettime() + int(var_09 * 1000));
param_00.var_222 setclientomnvar("ui_killstreak_health",var_02.maxhealth / 2600);
}
//Function Number: 11
func_8ED7(param_00)
{
self method_8187("j_backend",param_00);
self method_8187("j_shield_1",param_00);
self method_8187("j_shield_2",param_00);
self method_8187("j_shield_3",param_00);
self method_8187("j_shield_4",param_00);
self method_8187("j_nose",param_00);
}
//Function Number: 12
func_989D(param_00)
{
var_01 = [];
switch(param_00)
{
case "ID":
for(var_02 = 0;var_02 < 5;var_02++)
{
var_03 = spawnstruct();
var_03.var_C4A1 = "ui_thor_missile_" + var_02;
var_03.var_9B04 = 0;
var_01[var_01.size] = var_03;
}
break;
case "Distance":
for(var_02 = 0;var_02 < 5;var_02++)
{
var_03 = spawnstruct();
var_03.var_C4A1 = "ui_thor_missile_" + var_02 + "_dist";
var_03.var_9B04 = 0;
var_01[var_01.size] = var_03;
}
break;
}
return var_01;
}
//Function Number: 13
func_13AA2(param_00,param_01)
{
param_00 endon("disconnect");
param_00 endon("joined_team");
param_00 endon("joined_spectators");
param_00 endon("killstreak_disowned");
level endon("game_ended");
self endon("death");
self endon("leaving");
for(;;)
{
level waittill("host_migration_end");
param_00 thermalvisionfofoverlayon();
if(scripts\mp\_utility::func_9FB3(self.var_117B2))
{
param_00 thermalvisionon();
continue;
}
param_00 thermalvisionoff();
}
}
//Function Number: 14
func_B011(param_00)
{
self endon("disconnect");
level endon("game_ended");
param_00 endon("death");
wait(0.05);
var_01 = vectortoangles(level.var_12AF5.origin - param_00 gettagorigin("tag_player"));
self setplayerangles(var_01);
}
//Function Number: 15
func_1369B(param_00)
{
self endon("disconnect");
param_00 endon("death");
scripts\mp\_hostmigration::func_13708(1);
var_01 = scripts\mp\_utility::func_C794(self,"cyan",self,0,0,"killstreak");
param_00 thread func_E146(var_01,self);
}
//Function Number: 16
func_13699(param_00)
{
self endon("death");
level endon("game_ended");
scripts\mp\_hostmigration::func_13708(param_00);
self delete();
}
//Function Number: 17
func_1179A(param_00)
{
scripts\mp\_utility::func_FB09(param_00.var_110EA);
}
//Function Number: 18
func_1178F(param_00)
{
if(isdefined(self))
{
scripts\mp\_utility::func_41E9();
}
}
//Function Number: 19
func_1179C(param_00)
{
while(isdefined(self.var_9BE2) && param_00 > 0)
{
wait(0.05);
param_00 = param_00 - 0.05;
}
}
//Function Number: 20
func_1179D(param_00)
{
param_00 endon("disconnect");
level endon("game_ended");
for(;;)
{
var_01 = scripts\common\utility::func_13734("start_fire","start_reload","death","leaving");
if(var_01 == "death" || var_01 == "leaving")
{
break;
}
param_00 scripts\common\utility::func_1C46(0);
scripts\common\utility::waittill_any_3("finished_single_fire","finished_reload","death","leaving");
param_00 scripts\common\utility::func_1C46(1);
}
}
//Function Number: 21
func_117A0()
{
level endon("game_ended");
self endon("leaving");
self waittill("death");
if(isdefined(self.var_222))
{
self.var_222 func_11791(self);
self.var_222 setclientomnvar("ui_thor_show",0);
self.var_222 setclientomnvar("ui_killstreak_countdown",0);
self.var_222 setclientomnvar("ui_killstreak_health",0);
self.var_222 setclientomnvar("ui_killstreak_missile_warn",0);
self.var_222 method_8070(1);
self.var_222 stoprumble("thor_thrust_rumble");
foreach(var_01 in self.var_B88C)
{
self.var_222 setclientomnvar(var_01.var_C4A1,undefined);
}
foreach(var_04 in self.var_B888)
{
self.var_222 setclientomnvar(var_04.var_C4A1,-1);
}
}
func_4074();
scripts\mp\_utility::func_4FC1();
playfx(scripts\common\utility::getfx("thor_explode"),self.origin);
self delete();
}
//Function Number: 22
func_117AC(param_00)
{
level endon("game_ended");
self endon("death");
self endon("leaving");
self endon("host_migration_lifetime_update");
self.var_222 endon("disconnect");
self.var_222 endon("joined_team");
self.var_222 endon("joined_spectators");
thread scripts\mp\killstreaks\_utility::watchhostmigrationlifetime("leaving",param_00,::func_117AC);
scripts\mp\_hostmigration::func_13708(param_00);
func_1179C(3);
var_01 = ["thor_end","thor_timeout"];
var_02 = randomint(var_01.size);
var_03 = var_01[var_02];
self.var_222 scripts\mp\_utility::func_D4B6(var_03,undefined,undefined,self.var_222.origin);
thread func_11795();
}
//Function Number: 23
func_117A7()
{
level endon("game_ended");
self endon("death");
self endon("leaving");
self.var_222 scripts\common\utility::waittill_any_3("disconnect","joined_team","joined_spectators");
self notify("death");
}
//Function Number: 24
func_117A5()
{
level endon("game_ended");
self endon("death");
self endon("leaving");
self.var_222 endon("disconnect");
self.var_222 endon("joined_team");
self.var_222 endon("joined_spectators");
level waittill("objective_cam");
thread func_11795();
}
//Function Number: 25
func_117A9()
{
self endon("death");
self endon("leaving");
self.var_222 endon("disconnect");
self.var_222 endon("joined_team");
self.var_222 endon("joined_spectators");
level scripts\common\utility::waittill_any_3("round_end_finished","game_ended");
var_00 = 1;
thread func_11795(var_00);
}
//Function Number: 26
func_11795(param_00)
{
self endon("death");
self notify("leaving");
var_01 = level.var_117B0[self.var_110EA];
scripts\mp\_utility::func_AAE7(var_01.var_13553);
if(isdefined(self.var_222))
{
self.var_222 func_11791(self,param_00);
self.var_222 setclientomnvar("ui_thor_show",0);
self.var_222 setclientomnvar("ui_killstreak_countdown",0);
self.var_222 setclientomnvar("ui_killstreak_health",0);
self.var_222 setclientomnvar("ui_killstreak_missile_warn",0);
self.var_222 method_8070(1);
self.var_222 stoprumble("thor_thrust_rumble");
foreach(var_03 in self.var_B88C)
{
self.var_222 setclientomnvar(var_03.var_C4A1,undefined);
}
foreach(var_06 in self.var_B888)
{
self.var_222 setclientomnvar(var_06.var_C4A1,-1);
}
}
self notify("gone");
self scriptmodelplayanim("iw7_mp_killstreak_thor_extend_to_up",1);
scripts\mp\_hostmigration::func_13708(1);
self moveto(self.origin + (0,0,15000),5,3.5);
self scriptmodelplayanim("iw7_mp_killstreak_thor_extend_up",1);
self setscriptablepartstate("thrusters","leave",0);
scripts\mp\_hostmigration::func_13708(5);
func_4074();
scripts\mp\_utility::func_4FC1();
self delete();
}
//Function Number: 27
func_11791(param_00,param_01)
{
var_02 = level.var_117B0[param_00.var_110EA];
scripts\mp\_utility::func_D915("killstreak ended - thor",self);
if(isdefined(param_00))
{
param_00 notify("end_remote");
self notify("thor_ride_ended");
scripts\common\utility::func_1C6E(1);
if(getdvarint("camera_thirdPerson"))
{
scripts\mp\_utility::setthirdpersondof(1);
}
self thermalvisionfofoverlayoff();
self thermalvisionoff();
self method_85A2("");
self unlink();
self setplayerangles(self.var_E2D7);
if(scripts\mp\_utility::func_9FB3(param_01))
{
scripts\mp\_utility::func_1136C(scripts\common\utility::getlastweapon(),1);
}
else
{
thread func_11794();
}
self stoplocalsound("odin_negative_action");
self stoplocalsound("odin_positive_action");
foreach(var_04 in level.var_117B0[param_00.var_110EA].var_394)
{
if(isdefined(var_04.var_D5E4))
{
self stoplocalsound(var_04.var_D5E4);
}
if(isdefined(var_04.var_D5DD))
{
self stoplocalsound(var_04.var_D5DD);
}
}
thread scripts\mp\killstreaks\_killstreaks::func_11086();
if(isdefined(self.var_117AF))
{
self.var_117AF delete();
}
thread scripts\mp\_utility::func_141E(param_00.var_D8E1);
thread scripts\mp\_utility::func_141E(param_00.var_F0C4);
scripts\common\utility::func_1C76(1);
}
}
//Function Number: 28
func_11794()
{
self endon("disconnect");
self endon("death");
level endon("game_ended");
scripts\mp\_utility::func_7385(1);
scripts\mp\_hostmigration::func_13708(0.5);
scripts\mp\_utility::func_7385(0);
}
//Function Number: 29
func_117AA()
{
self endon("death");
self endon("leaving");
level endon("game_ended");
var_00 = self.var_222;
var_00 endon("disconnect");
var_01 = spawn("script_model",(0,0,0));
var_01.angles = vectortoangles((0,0,1));
var_01 setmodel("tag_origin");
var_01 hide();
self.var_1156A = var_01;
self method_8549();
self method_8594();
for(;;)
{
var_02 = var_00 method_816E() - (0,0,50);
var_03 = var_02 + anglestoforward(var_00 getplayerangles()) * -15536;
var_04 = ["physicscontents_clipshot","physicscontents_corpseclipshot","physicscontents_missileclip","physicscontents_solid","physicscontents_vehicle"];
var_05 = physics_createcontents(var_04);
var_06 = scripts\common\trace::func_DCED(var_02,var_03,level.var_3CB5,var_05);
var_01.origin = var_06["position"] + (0,0,50);
scripts\common\utility::func_136F7();
}
}
//Function Number: 30
func_1179F()
{
self endon("death");
self endon("leaving");
var_00 = self.var_222;
var_00 endon("disconnect");
var_01 = level.var_117B0[self.var_110EA];
var_02 = var_01.maxhealth;
var_03 = 0;
var_04 = 3;
var_05 = 4;
var_06 = 5;
if(scripts\mp\killstreaks\_utility::func_A69F(self.var_110E8,"passive_armor_duration"))
{
var_04++;
var_05++;
var_06++;
}
for(;;)
{
self waittill("damage",var_07,var_08,var_09,var_0A,var_0B,var_0C,var_0D,var_0E,var_0F,var_10,var_11,var_12,var_13,var_14);
var_10 = scripts\mp\_utility::func_13CA1(var_10,var_14);
if(isdefined(var_08))
{
if(isdefined(var_08.var_222))
{
var_08 = var_08.var_222;
}
if(isdefined(var_08.team) && var_08.team == self.team && var_08 != self.var_222)
{
continue;
}
}
if(lib_0DF8::func_9DDF(var_08))
{
continue;
}
if(isdefined(var_0B))
{
var_00 func_4CF1(self,var_0B);
}
if(isdefined(var_10))
{
var_07 = scripts\mp\killstreaks\_utility::func_7FBD(var_08,var_10,var_0B,var_07,var_01.maxhealth,var_04,var_05,var_06);
if(scripts\mp\killstreaks\_utility::func_A69F(self.var_110E8,"passive_armor_duration"))
{
if(scripts\mp\killstreaks\_utility::isexplosiveantikillstreakweapon(var_10))
{
var_08 scripts\mp\_damagefeedback::func_12E84("hitblastshield");
}
}
}
var_02 = var_02 - var_07;
var_00 setclientomnvar("ui_killstreak_health",var_02 / var_01.maxhealth);
if(isplayer(var_08))
{
var_08 scripts\mp\_damagefeedback::func_12E84("");
scripts\mp\killstreaks\_killstreaks::func_A6A0(var_08,var_10,self,var_0B);
scripts\mp\_damage::func_AF96(self,var_07,var_08,var_09,var_0A,var_0B,var_0C,var_0D,var_0E,var_0F,var_10);
if(var_02 <= 0)
{
var_08 notify("destroyed_killstreak",var_10);
var_15 = "callout_destroyed_thor";
var_16 = scripts\mp\_killstreak_loot::getrarityforlootitem(self.var_110E8.var_1318B);
if(var_16 != "")
{
var_15 = var_15 + "_" + var_16;
}
scripts\mp\_damage::func_C548("thor",var_08,var_10,var_0B,var_07,"destroyed_thor","thor_destroyed",var_15);
return;
}
}
}
}
//Function Number: 31
func_4CF1(param_00,param_01)
{
switch(param_01)
{
case "MOD_GRENADE_SPLASH":
case "MOD_GRENADE":
case "MOD_PROJECTILE":
case "MOD_EXPLOSIVE_BULLET":
case "MOD_PISTOL_BULLET":
case "MOD_RIFLE_BULLET":
func_3239(param_00);
break;
case "MOD_PROJECTILE_SPLASH":
case "MOD_IMPACT":
case "MOD_EXPLOSIVE":
func_69E6(param_00);
break;
default:
break;
}
}
//Function Number: 32
func_3239(param_00)
{
self earthquakeforplayer(0.15,0.25,param_00 gettagorigin("tag_player"),50);
self playrumbleonentity("damage_light");
thread func_1349D(param_00,0.4);
}
//Function Number: 33
func_69E6(param_00)
{
self earthquakeforplayer(0.4,0.45,param_00 gettagorigin("tag_player"),1000);
self playrumbleonentity("damage_heavy");
thread func_1349D(param_00,0.7);
}
//Function Number: 34
func_1349D(param_00,param_01)
{
self endon("disconnect");
level endon("game_ended");
param_00 endon("death");
param_00.var_10E4C.alpha = param_01;
while(param_01 > 0)
{
scripts\common\utility::func_136F7();
param_01 = param_01 - 0.1;
param_00.var_10E4C.alpha = param_01;
}
}
//Function Number: 35
func_495B()
{
var_00 = newclienthudelem(self);
var_00.x = 0;
var_00.y = 0;
var_00 setshader("white",640,480);
var_00.alignx = "left";
var_00.aligny = "top";
var_00.sort = 1;
var_00.horzalign = "fullscreen";
var_00.vertalign = "fullscreen";
var_00.alpha = 0;
var_00.foreground = 1;
return var_00;
}
//Function Number: 36
func_117AD()
{
self endon("death");
self endon("leaving");
level endon("game_ended");
var_00 = self.var_222;
var_00 endon("disconnect");
var_01 = level.var_117B0[self.var_110EA];
if(!isai(var_00))
{
var_00 notifyonplayercommand("thor_missile_zoom_on","+weapnext");
}
for(;;)
{
var_00 waittill("thor_missile_zoom_on");
var_00 scripts\common\utility::func_1C76(1);
if(!isdefined(self.var_117B3))
{
var_00 scripts\mp\_utility::_switchtoweaponimmediate(self.var_F0C4);
self.var_117B3 = 1;
var_00 setclientomnvar("ui_thor_show",2);
}
else
{
var_00 scripts\mp\_utility::_switchtoweaponimmediate(self.var_D8E1);
self.var_117B3 = undefined;
var_00 setclientomnvar("ui_thor_show",1);
}
var_00 scripts\common\utility::func_1C76(0);
}
}
//Function Number: 37
func_117AB()
{
self endon("death");
self endon("leaving");
level endon("game_ended");
var_00 = self.var_222;
var_00 endon("disconnect");
var_01 = level.var_117B0[self.var_110EA];
if(!isai(var_00))
{
if(var_00 scripts\common\utility::func_9C70())
{
var_00 notifyonplayercommand("thor_thermal_toggle","+usereload");
}
var_00 notifyonplayercommand("thor_thermal_toggle","+activate");
}
for(;;)
{
var_00 waittill("thor_thermal_toggle");
if(!isdefined(self.var_117B2))
{
var_00 thermalvisionon();
self.var_117B2 = 1;
continue;
}
var_00 thermalvisionoff();
self.var_117B2 = undefined;
}
}
//Function Number: 38
func_117A2()
{
self endon("death");
self endon("leaving");
var_00 = self.var_222;
var_00 endon("disconnect");
if(!isai(var_00))
{
var_00 notifyonplayercommand("thor_fire_thrusters","+smoke");
var_00 notifyonplayercommand("thor_release_thrusters","-smoke");
}
for(;;)
{
var_01 = var_00 scripts\common\utility::func_13734("thor_fire_thrusters","thor_release_thrusters");
if(!isdefined(var_01))
{
continue;
}
if(var_01 == "thor_fire_thrusters")
{
var_00.var_117AF thread func_E731(var_00.thorrigangle,30,"thor_release_thrusters","thor_switch_thrusters");
thread func_B06B(var_00);
if(var_00.thorrigangle == -360)
{
self scriptmodelplayanim("iw7_mp_killstreak_thor_extend_thrust",1);
}
else
{
self scriptmodelplayanim("iw7_mp_killstreak_thor_extend_rev_thrust",1);
}
self setscriptablepartstate("thrusters","boost",0);
continue;
}
var_00.var_117AF thread func_E731(var_00.thorrigangle,60,"thor_fire_thrusters","thor_switch_thrusters");
var_00 stoprumble("thor_thrust_rumble");
if(var_00.thorrigangle == -360)
{
self scriptmodelplayanim("iw7_mp_killstreak_thor_extend_idle",1);
}
else
{
self scriptmodelplayanim("iw7_mp_killstreak_thor_extend_rev_idle",1);
}
self setscriptablepartstate("thrusters","idle",0);
}
}
//Function Number: 39
func_B06B(param_00)
{
self endon("death");
param_00 endon("thor_release_thrusters");
param_00 method_8244("thor_thrust_rumble");
for(;;)
{
scripts\mp\_shellshock::func_1245(0.15,0.05,self.origin,1000);
scripts\common\utility::func_136F7();
}
}
//Function Number: 40
func_B9F2(param_00)
{
self endon("death");
level endon("game_ended");
param_00 endon("disconnect");
scripts\mp\_hostmigration::func_13708(1.5);
var_01 = [];
for(;;)
{
var_02 = param_00 scripts\mp\_utility::func_7BC3();
foreach(var_04 in var_01)
{
if(!scripts\common\utility::func_2286(var_02,var_04))
{
var_01 = scripts\common\utility::func_22A9(var_01,var_04);
self hide();
self showtoplayer(param_00);
}
}
foreach(var_04 in var_02)
{
self showtoplayer(var_04);
if(!scripts\common\utility::func_2286(var_01,var_04))
{
var_01 = scripts\common\utility::array_add(var_01,var_04);
stopfxontag(level._effect["thor_targeting"],self,"tag_origin");
wait(0.05);
playfxontag(level._effect["thor_targeting"],self,"tag_origin");
}
}
wait(0.25);
}
}
//Function Number: 41
thor_watchswitchthrust(param_00)
{
self endon("death");
self endon("leaving");
level endon("game_ended");
param_00 = self.var_222;
param_00 endon("disconnect");
if(!isai(param_00))
{
param_00 notifyonplayercommand("thor_switch_thrusters","+speed_throw");
param_00 notifyonplayercommand("thor_switch_thrusters","+toggleads_throw");
param_00 notifyonplayercommand("thor_switch_thrusters","+ads_akimbo_accessible");
}
for(;;)
{
var_01 = param_00 scripts\common\utility::func_13734("thor_switch_thrusters");
if(param_00.thorrigangle == -360)
{
self scriptmodelplayanim("iw7_mp_killstreak_thor_extend_rev_idle",1);
param_00.thorrigangle = 360;
}
else
{
self scriptmodelplayanim("iw7_mp_killstreak_thor_extend_idle",1);
param_00.thorrigangle = -360;
}
param_00.var_117AF thread func_E731(param_00.thorrigangle,60,"thor_fire_thrusters","thor_switch_thrusters");
}
}
//Function Number: 42
thor_watchdebugtogglemovement(param_00)
{
self endon("death");
self endon("leaving");
level endon("game_ended");
param_00 endon("disconnect");
if(!isai(param_00))
{
param_00 notifyonplayercommand("thor_toggle_movement","+speed_throw");
param_00 notifyonplayercommand("thor_toggle_movement","+toggleads_throw");
param_00 notifyonplayercommand("thor_toggle_movement","+ads_akimbo_accessible");
}
var_01 = 1;
for(;;)
{
var_02 = param_00 scripts\common\utility::func_13734("thor_toggle_movement");
if(scripts\mp\_utility::func_9FB3(var_01))
{
self unlink();
var_01 = 0;
continue;
}
self linkto(param_00.var_117AF,"tag_origin");
var_01 = 1;
}
}
//Function Number: 43
func_117A3()
{
self endon("death");
self endon("leaving");
level endon("game_ended");
var_00 = self.var_222;
var_00 endon("disconnect");
var_01 = "missile";
var_02 = level.var_117B0[self.var_110EA].var_394[var_01];
for(;;)
{
var_00 waittill("missile_fire",var_03,var_04);
if(scripts\mp\_utility::func_9FB3(self.var_9BE2))
{
continue;
}
if(scripts\mp\_utility::func_9FB3(self.var_9C9F))
{
continue;
}
if(isdefined(level.var_90A9))
{
continue;
}
if(isdefined(self.var_C239) && self.var_C239 < 1)
{
continue;
}
if(isdefined(var_04) && var_04 != "thorproj_mp" && var_04 != "thorproj_zoomed_mp")
{
continue;
}
self setscriptablepartstate("muzzle","fire",0);
thread func_5104(0.1);
var_03.var_110E8 = self.var_110E8;
if(isdefined(var_04) && var_04 == "thorproj_mp")
{
var_03 thread func_139D1(var_00,var_01,self);
continue;
}
var_03 thread func_13B42(var_00,self);
}
}
//Function Number: 44
func_5104(param_00)
{
self endon("death");
wait(param_00);
self setscriptablepartstate("muzzle","neutral",0);
}
//Function Number: 45
func_139D1(param_00,param_01,param_02)
{
param_00 endon("disconnect");
param_02 endon("death");
var_03 = param_02.var_1156A;
var_04 = param_02.var_B88C;
var_05 = param_02.var_B888;
var_06 = self.angles;
param_02.var_9BE2 = 1;
param_02 notify("start_fire");
var_07 = var_03.origin;
var_08 = scripts\mp\killstreaks\_utility::func_7E92(param_00);
var_09 = [];
foreach(var_0B in var_08)
{
if(!scripts\mp\killstreaks\_utility::manualmissilecantracktarget(var_0B))
{
continue;
}
if(param_00 method_8409(var_0B.origin,65,55))
{
var_09[var_09.size] = var_0B;
}
}
self waittill("explode",var_0D);
var_0E = param_02.var_C239;
var_0F = "thorproj_tracking_mp";
for(var_10 = 0;var_10 < var_0E;var_10++)
{
if(!isdefined(param_02))
{
break;
}
var_11 = randomint(360);
var_12 = anglestoright(var_06) * cos(var_11);
var_13 = anglestoforward(var_06) * 3;
var_14 = anglestoup(var_06) * sin(var_11);
var_15 = var_12 + var_13 + var_14;
var_16 = scripts\mp\_utility::func_1309(var_0F,var_0D,var_0D + var_15,param_00);
var_16.var_222 = param_00;
var_16.var_13F0A = var_0D[2];
var_16.var_92B8 = func_7FBA(var_04);
var_16.var_5716 = func_7FBA(var_05);
var_16.var_C79D = scripts\mp\_utility::func_C794(var_16,"white",var_16.var_222,0,0,"killstreak_personal");
var_16.var_110E8 = param_02.var_110E8;
var_16.var_222 setclientomnvar(var_16.var_92B8.var_C4A1,var_16);
var_16.var_222 setclientomnvar(var_16.var_5716.var_C4A1,int(var_16.var_13F0A));
if(scripts\mp\killstreaks\_utility::func_A69F(param_02.var_110E8,"passive_seek_cluster"))
{
var_16 thread delayseekopentargetinview(0.3,var_16.var_222,var_07,var_09);
}
else
{
var_16 thread func_50E6(0.3,var_03);
}
var_16 thread func_139F6(var_16.var_222,param_02);
var_16 thread func_13A22(var_16.var_222,param_02);
var_16 thread scripts\mp\killstreaks\_utility::watchsupertrophynotify(var_16.var_222);
param_02.var_C239--;
param_00 setclientomnvar("ui_thor_missiles_loaded",param_02.var_C239);
scripts\mp\_hostmigration::func_13708(0.1);
}
param_02 scriptmodelplayanim("iw7_mp_killstreak_thor_extend_reload",1);
scripts\mp\_hostmigration::func_13708(2);
param_02 notify("start_reload");
param_02.var_9BE2 = undefined;
}
//Function Number: 46
delayseekopentargetinview(param_00,param_01,param_02,param_03)
{
var_04 = undefined;
wait(param_00);
foreach(var_06 in param_03)
{
if(!scripts\mp\killstreaks\_utility::manualmissilecantracktarget(var_06))
{
continue;
}
if(scripts\mp\_utility::func_9FB3(var_06.thortargetted))
{
continue;
}
var_04 = var_06;
break;
}
if(isdefined(var_04))
{
self missile_settargetent(var_04);
self missile_setflightmodedirect();
var_04.thortargetted = 1;
var_04 thread watchtarget(self);
return;
}
self missile_settargetpos(param_02);
self missile_setflightmodedirect();
}
//Function Number: 47
watchtarget(param_00)
{
self endon("disconnect");
for(;;)
{
if(!scripts\mp\killstreaks\_utility::manualmissilecantracktarget(self))
{
break;
}
if(!isdefined(param_00))
{
break;
}
scripts\common\utility::func_136F7();
}
self.thortargetted = undefined;
if(isdefined(param_00))
{
param_00 missile_cleartarget();
}
}
//Function Number: 48
func_390B(param_00)
{
var_01 = 0;
var_02 = scripts\common\trace::func_48BC(0,1,1,1,1,1,0);
var_03 = param_00 gettagorigin("j_head");
for(var_04 = 0;var_04 < var_03.size;var_04++)
{
if(!scripts\common\trace::func_DCF1(self.origin,var_03[var_04],self,var_02))
{
continue;
}
var_01 = 1;
break;
}
return var_01;
}
//Function Number: 49
func_50E6(param_00,param_01)
{
self.var_222 endon("disconnect");
wait(param_00);
if(isdefined(param_01))
{
self missile_settargetent(param_01);
}
self missile_setflightmodedirect();
}
//Function Number: 50
func_139F6(param_00,param_01)
{
self endon("explode");
self endon("death");
for(;;)
{
if(isdefined(param_01.var_9C9F))
{
break;
}
self.var_13F0A = self.origin[2];
var_02 = scripts\common\trace::func_DCED(self.origin,self.origin + (0,0,-1000000));
var_03 = var_02["position"];
self.var_13F0A = self.origin - var_02["position"];
self.var_13F0A = self.var_13F0A[2];
param_00 setclientomnvar(self.var_5716.var_C4A1,int(max(0,self.var_13F0A)));
scripts\common\utility::func_136F7();
}
}
//Function Number: 51
func_13A22(param_00,param_01)
{
self waittill("explode",var_02);
if(isdefined(self.var_C79D))
{
scripts\mp\_utility::func_C78F(self.var_C79D,self);
}
if(isdefined(param_00))
{
if(isdefined(self.var_92B8.var_C4A1))
{
param_00 setclientomnvar(self.var_92B8.var_C4A1,undefined);
}
}
}
//Function Number: 52
func_13B42(param_00,param_01)
{
param_00 endon("disconnect");
param_01 endon("death");
param_01.var_9BE2 = 1;
param_01 notify("start_fire");
var_02 = param_01.var_B88C;
var_03 = param_01.var_B888;
self.var_13F0A = self.origin[2];
self.var_92B8 = func_7FBA(var_02);
self.var_5716 = func_7FBA(var_03);
self.var_C79D = scripts\mp\_utility::func_C794(self,"white",param_00,0,0,"killstreak_personal");
param_00 setclientomnvar(self.var_92B8.var_C4A1,self);
param_00 setclientomnvar(self.var_5716.var_C4A1,int(self.var_13F0A));
thread func_139F6(param_00,param_01);
thread func_13A22(param_00,param_01);
thread scripts\mp\killstreaks\_utility::watchsupertrophynotify(param_00);
param_01.var_C239--;
param_00 setclientomnvar("ui_thor_missiles_loaded",param_01.var_C239);
scripts\mp\_hostmigration::func_13708(0.1);
if(param_01.var_C239 > 0)
{
param_01 notify("finished_single_fire");
}
else
{
param_01 scriptmodelplayanim("iw7_mp_killstreak_thor_extend_reload",1);
scripts\mp\_hostmigration::func_13708(2);
param_01 notify("start_reload");
}
param_01.var_9BE2 = undefined;
}
//Function Number: 53
func_1179E()
{
self endon("death");
self endon("leaving");
var_00 = 0;
for(;;)
{
self waittill("start_reload");
if(var_00 == 20)
{
func_1179C(3);
self notify("death");
}
thread func_1179B();
var_00++;
}
}
//Function Number: 54
func_1179B()
{
self endon("death");
var_00 = self.var_222;
var_00 endon("disconnect");
var_00 endon("thor_missile_fire_success");
level endon("game_ended");
func_1179C(3);
if(self.var_C239 < self.var_B47C)
{
self.var_9C9F = 1;
var_00 playlocalsound("thor_missile_reload");
thread func_510A(1);
while(self.var_C239 < self.var_B47C)
{
self.var_C239++;
var_00 setclientomnvar("ui_thor_missiles_loaded",self.var_C239);
self.var_B88C[self.var_C239 - 1].var_9B04 = 0;
self.var_B888[self.var_C239 - 1].var_9B04 = 0;
var_00 setclientomnvar(self.var_B888[self.var_C239 - 1].var_C4A1,-1);
}
return;
}
self notify("finished_reload");
}
//Function Number: 55
func_510A(param_00)
{
self endon("death");
scripts\mp\_hostmigration::func_13708(param_00);
self.var_9C9F = undefined;
self notify("finished_reload");
}
//Function Number: 56
func_12F01(param_00)
{
self endon("death");
param_00 endon("disconnect");
param_00 endon("thor_missile_fire_success");
level endon("game_ended");
var_01 = gettime();
var_02 = var_01 + self.var_DF5C * 1000;
var_03 = var_01;
while(var_03 < var_02)
{
var_03 = gettime();
var_04 = var_03 - var_01 / var_02 - var_01;
var_04 = clamp(var_04,0,1);
scripts\common\utility::func_136F7();
}
}
//Function Number: 57
func_13AD4()
{
self endon("death");
scripts\mp\_hostmigration::func_13708(1);
self delete();
}
//Function Number: 58
func_117A6()
{
self endon("death");
level endon("game_ended");
foreach(var_01 in level.var_C928)
{
func_20D2(var_01);
}
}
//Function Number: 59
func_20D2(param_00)
{
if(level.teambased && param_00.team != self.team)
{
return;
}
else if(!level.teambased)
{
return;
}
var_01 = scripts\mp\_utility::func_C794(param_00,"cyan",self.var_222,1,1,"killstreak");
thread func_E146(var_01,param_00);
}
//Function Number: 60
func_6567(param_00)
{
return param_00 scripts\mp\_utility::_hasperk("specialty_noplayertarget");
}
//Function Number: 61
func_E146(param_00,param_01,param_02)
{
if(isdefined(param_01))
{
param_01 endon("disconnect");
}
level endon("game_ended");
var_03 = ["leave","death"];
if(isdefined(param_02))
{
scripts\common\utility::func_1372F(var_03,param_02);
}
else
{
scripts\common\utility::func_13731(var_03);
}
scripts\mp\_utility::func_C78F(param_00,param_01);
}
//Function Number: 62
func_117A8()
{
self endon("death");
self endon("leaving");
level endon("game_ended");
self.var_63AB = 0;
for(;;)
{
level waittill("thor_killed_player",var_00);
self.var_63AB++;
self notify("thor_enemy_killed");
}
}
//Function Number: 63
func_11790(param_00)
{
self endon("death");
self endon("leaving");
level endon("game_ended");
var_01 = level.var_117B0[self.var_110EA];
var_02 = 1;
for(;;)
{
self waittill("thor_enemy_killed");
scripts\mp\_hostmigration::func_13708(var_02);
if(self.var_63AB > 1)
{
self.var_222 scripts\mp\_utility::func_AAEC(var_01.var_1352C);
}
else
{
self.var_222 scripts\mp\_utility::func_AAEC(var_01.var_1352D);
}
self.var_63AB = 0;
}
}
//Function Number: 64
func_11796()
{
self endon("death");
level endon("game_ended");
for(;;)
{
level waittill("connected",var_00);
var_00 thread func_11797(self);
}
}
//Function Number: 65
func_11797(param_00)
{
self endon("disconnect");
self waittill("spawned_player");
param_00 func_20D2(self);
}
//Function Number: 66
func_4074()
{
if(isdefined(self.var_1156A))
{
self.var_1156A delete();
}
if(isdefined(self.var_C7FF))
{
self.var_C7FF delete();
}
if(isdefined(self.var_10E4C))
{
self.var_10E4C destroy();
}
if(isdefined(self.minimapid))
{
scripts\mp\objidpoolmanager::returnminimapid(self.minimapid);
}
level.var_C20D--;
}
//Function Number: 67
func_117A1()
{
level endon("game_ended");
self endon("death");
self endon("leaving");
thread scripts\mp\killstreaks\_killstreaks::func_1CA5();
self waittill("killstreakExit");
var_00 = level.var_117B0[self.var_110EA];
scripts\mp\_utility::func_AAE7(var_00.var_13553);
thread func_11795();
}
//Function Number: 68
func_7FBA(param_00)
{
var_01 = undefined;
for(var_02 = 4;var_02 + 1 > 0;var_02--)
{
if(!param_00[var_02].var_9B04)
{
var_01 = param_00[var_02];
param_00[var_02].var_9B04 = 1;
break;
}
}
return var_01;
}
//Function Number: 69
getthormapvisionset(param_00)
{
var_01 = "";
switch(param_00)
{
case "mp_depot":
case "mp_hawkwar":
case "mp_paris":
case "mp_overflow":
case "mp_flip":
case "mp_geneva":
case "mp_dome_dusk":
case "mp_rivet":
case "mp_skyway":
case "mp_quarry":
case "mp_breakneck":
case "mp_junk":
var_01 = "thorbright_mp";
break;
default:
var_01 = "thor_mp";
break;
}
return var_01;
}