/******************************************************************* * 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; }