mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-07-06 05:47:51 -05:00
1029 lines
24 KiB
Plaintext
1029 lines
24 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: scripts\cp\crafted_entangler.gsc
|
|
* Game: Call of Duty: Infinite Warfare
|
|
* Platform: PC
|
|
* Function Count: 28
|
|
* Decompile Time: 1446 ms
|
|
* Timestamp: 10/27/2023 12:10:18 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
init()
|
|
{
|
|
var_00 = spawnstruct();
|
|
var_00.var_11901 = 60;
|
|
var_00.var_9F43 = 0;
|
|
if(!isdefined(level.var_47B3))
|
|
{
|
|
level.var_47B3 = [];
|
|
}
|
|
|
|
level.var_47B3["crafted_entangler"] = var_00;
|
|
level thread watchforentangleractivation();
|
|
initentanglermodels();
|
|
}
|
|
|
|
//Function Number: 2
|
|
watchforentangleractivation()
|
|
{
|
|
level endon("game_ended");
|
|
level waittill("complete_stay_on_pressure_plates");
|
|
scripts\cp\_utility::set_quest_icon(2);
|
|
scripts\cp\maps\cp_final\cp_final_mpq::activateinteractionsbynoteworthy("entangler_spawner");
|
|
var_00 = scripts\common\utility::getstruct("entangler_spawner","script_noteworthy");
|
|
var_01 = spawn("script_model",var_00.origin);
|
|
var_01.angles = var_00.angles;
|
|
var_01 setmodel("weapon_entangler_wm");
|
|
var_01 thread moveandrotateentangler(var_01,var_00.origin);
|
|
var_02 = spawn("script_model",scripts\common\utility::func_5D14(var_00.origin,12,-100) + (0,0,1));
|
|
var_02 setmodel("final_gns_quest_origin");
|
|
var_01.var_7542 = var_02;
|
|
var_01.var_7542 setscriptablepartstate("pressure_plate","on");
|
|
var_00.var_870F = var_01;
|
|
}
|
|
|
|
//Function Number: 3
|
|
moveandrotateentangler(param_00,param_01)
|
|
{
|
|
level endon("game_ended");
|
|
for(;;)
|
|
{
|
|
param_00 rotateyaw(360,6);
|
|
param_00 moveto(param_01 + (0,0,48),3,1,1);
|
|
wait(3);
|
|
param_00 moveto(param_01,3,0.5,0.5);
|
|
wait(3);
|
|
}
|
|
}
|
|
|
|
//Function Number: 4
|
|
give_crafted_entangler(param_00,param_01)
|
|
{
|
|
param_01 thread func_13932();
|
|
param_01 notify("new_power","crafted_entangler");
|
|
param_01 setclientomnvar("zom_crafted_weapon",19);
|
|
param_01 thread scripts\cp\_utility::func_1308C(param_01,"iw7_pickup_zm");
|
|
param_01.hascraftedentangler = 1;
|
|
scripts\cp\_utility::func_F313("crafted_entangler",::give_crafted_entangler,param_01);
|
|
}
|
|
|
|
//Function Number: 5
|
|
unsetentanglerflagondeath(param_00)
|
|
{
|
|
param_00 endon("disconnect");
|
|
param_00 endon("craft_dpad_watcher");
|
|
param_00 waittill("death");
|
|
param_00.hascollectedentangler = undefined;
|
|
}
|
|
|
|
//Function Number: 6
|
|
func_13932()
|
|
{
|
|
self endon("disconnect");
|
|
self endon("death");
|
|
self notify("craft_dpad_watcher");
|
|
self endon("craft_dpad_watcher");
|
|
self.hascollectedentangler = 1;
|
|
thread unsetentanglerflagondeath(self);
|
|
self notifyonplayercommand("pullout_trap","+actionslot 3");
|
|
for(;;)
|
|
{
|
|
self waittill("pullout_trap");
|
|
if(scripts\common\utility::istrue(self.var_9D81))
|
|
{
|
|
self playlocalsound("perk_machine_deny");
|
|
continue;
|
|
}
|
|
|
|
if(scripts\common\utility::istrue(self.var_9FCB))
|
|
{
|
|
self playlocalsound("perk_machine_deny");
|
|
continue;
|
|
}
|
|
|
|
if(scripts\common\utility::istrue(self.var_AD2C))
|
|
{
|
|
self playlocalsound("perk_machine_deny");
|
|
continue;
|
|
}
|
|
|
|
if(scripts\common\utility::istrue(self.attemptingpuzzle))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(self.allow_carry) && self.allow_carry == 0)
|
|
{
|
|
self playlocalsound("perk_machine_deny");
|
|
continue;
|
|
}
|
|
|
|
if(scripts\common\utility::istrue(self.var_3AA5))
|
|
{
|
|
self playlocalsound("perk_machine_deny");
|
|
continue;
|
|
}
|
|
|
|
if(scripts\cp\_utility::is_valid_player())
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
thread give_entangler(self);
|
|
}
|
|
|
|
//Function Number: 7
|
|
give_entangler(param_00)
|
|
{
|
|
param_00 endon("disconnect");
|
|
foreach(var_02 in level.wall_buy_interactions)
|
|
{
|
|
if(isdefined(var_02.trigger))
|
|
{
|
|
var_02.trigger method_8429(param_00);
|
|
}
|
|
|
|
scripts\cp\_interaction::func_E01A(var_02,param_00);
|
|
}
|
|
|
|
level notify("entangler_given",param_00);
|
|
param_00.hasentanglerequipped = 1;
|
|
param_00 scripts\cp\_utility::clearlowermessage("msg_power_hint");
|
|
param_00.var_A039 = "entangler";
|
|
param_00 func_E152();
|
|
param_00.var_E2E6 = param_00 scripts\cp\_utility::getvalidtakeweapon();
|
|
var_04 = "iw7_entangler2_zm";
|
|
if(scripts\common\utility::flag("meph_fight"))
|
|
{
|
|
var_04 = "iw7_entangler_zm";
|
|
}
|
|
|
|
param_00.var_9FCB = 1;
|
|
param_00 scripts\cp\_utility::func_12C6(var_04,undefined,undefined,1);
|
|
param_00 switchtoweapon(var_04);
|
|
var_05 = param_00 watchforputaway();
|
|
param_00.hasentanglerequipped = undefined;
|
|
foreach(var_02 in level.wall_buy_interactions)
|
|
{
|
|
if(scripts\common\utility::istrue(var_02.should_be_hidden))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(var_02.trigger))
|
|
{
|
|
var_02.trigger showtoplayer(param_00);
|
|
}
|
|
|
|
scripts\cp\_interaction::func_175D(var_02,param_00);
|
|
}
|
|
|
|
param_00.var_9FCB = undefined;
|
|
param_00.var_3AA5 = undefined;
|
|
param_00 thread func_1370F();
|
|
param_00 func_E2E8();
|
|
param_00.var_9D81 = 0;
|
|
param_00 notify("entangler_removed");
|
|
level notify("entangler_removed_" + param_00.name);
|
|
}
|
|
|
|
//Function Number: 8
|
|
watchforputaway()
|
|
{
|
|
self endon("disconnect");
|
|
scripts\common\utility::func_1C76(0);
|
|
self notifyonplayercommand("cancel_entangler","+actionslot 3");
|
|
self notifyonplayercommand("cancel_entangler","+weapnext");
|
|
if(!level.console)
|
|
{
|
|
self notifyonplayercommand("cancel_entangler","+actionslot 5");
|
|
self notifyonplayercommand("cancel_entangler","+actionslot 6");
|
|
self notifyonplayercommand("cancel_entangler","+actionslot 7");
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
var_00 = scripts\cp\_utility::func_1372D(self,"cancel_entangler",self,"craft_dpad_watcher",self,"weapon_purchased",self,"last_stand",self,"death",level,"players_activated_gns");
|
|
if(scripts\common\utility::istrue(self.playing_ghosts_n_skulls))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(var_00))
|
|
{
|
|
if(var_00 == "death")
|
|
{
|
|
self.hascollectedentangler = undefined;
|
|
}
|
|
|
|
if(var_00 == "craft_dpad_watcher")
|
|
{
|
|
if(!scripts\common\utility::func_A009())
|
|
{
|
|
scripts\common\utility::func_1C76(1);
|
|
}
|
|
|
|
if(scripts\common\utility::flag("meph_fight"))
|
|
{
|
|
var_01 = "iw7_entangler_zm";
|
|
}
|
|
else
|
|
{
|
|
var_01 = "iw7_entangler2_zm";
|
|
self.hascollectedentangler = undefined;
|
|
}
|
|
|
|
if(self hasweapon(var_01))
|
|
{
|
|
self takeweapon(var_01);
|
|
}
|
|
|
|
scripts\cp\_utility::func_DFE0(self);
|
|
self notify("end_Ghost_Idle_Loop");
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
if(!scripts\common\utility::func_A009())
|
|
{
|
|
scripts\common\utility::func_1C76(1);
|
|
}
|
|
|
|
var_01 = "iw7_entangler2_zm";
|
|
if(scripts\common\utility::flag("meph_fight"))
|
|
{
|
|
var_01 = "iw7_entangler_zm";
|
|
}
|
|
|
|
if(self hasweapon(var_01))
|
|
{
|
|
self takeweapon(var_01);
|
|
}
|
|
|
|
self notify("end_Ghost_Idle_Loop");
|
|
thread func_13932();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 9
|
|
func_E152()
|
|
{
|
|
if(scripts\cp\_utility::_hasperk("specialty_explosivebullets"))
|
|
{
|
|
self.var_E2DF = "specialty_explosivebullets";
|
|
scripts\cp\_utility::func_1430("specialty_explosivebullets");
|
|
}
|
|
}
|
|
|
|
//Function Number: 10
|
|
func_E2E8()
|
|
{
|
|
if(isdefined(self.var_E2E6))
|
|
{
|
|
if(self hasweapon(self.var_E2E6))
|
|
{
|
|
self switchtoweapon(self.var_E2E6);
|
|
}
|
|
else
|
|
{
|
|
self switchtoweapon(scripts\cp\_utility::getvalidtakeweapon());
|
|
}
|
|
}
|
|
else
|
|
{
|
|
self switchtoweapon(scripts\cp\_utility::getvalidtakeweapon());
|
|
}
|
|
|
|
self.var_E2E6 = undefined;
|
|
}
|
|
|
|
//Function Number: 11
|
|
func_E2E0()
|
|
{
|
|
if(isdefined(self.var_E2DF))
|
|
{
|
|
scripts\cp\_utility::func_8387(self.var_E2DF);
|
|
self.var_E2DF = undefined;
|
|
}
|
|
}
|
|
|
|
//Function Number: 12
|
|
func_1370F()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
level endon("game_ended");
|
|
wait(0.05);
|
|
func_E2E0();
|
|
}
|
|
|
|
//Function Number: 13
|
|
entangleitem(param_00,param_01,param_02)
|
|
{
|
|
param_02 endon("death");
|
|
if(isdefined(param_00))
|
|
{
|
|
param_00 notifyonplayercommand("item_released","-attack");
|
|
param_00 setscriptablepartstate("entangler","active");
|
|
}
|
|
|
|
param_02 notify("item_entangled");
|
|
if(param_00 scripts\cp\_utility::isweaponfireenabled())
|
|
{
|
|
param_00 scripts\common\utility::func_1C46(0);
|
|
}
|
|
|
|
if(param_00 scripts\cp\_utility::issprintenabled())
|
|
{
|
|
param_00 scripts\common\utility::func_1C67(0);
|
|
}
|
|
|
|
if(param_02.model == "cp_final_brute_mascot_mask")
|
|
{
|
|
param_02 scripts\cp\maps\cp_final\cp_final_interactions::helmet_not_useable();
|
|
}
|
|
|
|
var_03 = gettagfrommodel(param_02);
|
|
var_04 = function_02DF(level._effect["entangler_beam"],param_00,"tag_flash",param_02,var_03);
|
|
param_02.entangled = 1;
|
|
param_02.var_3A9D = param_00;
|
|
moveitemtowardsplayer(param_00,param_01,var_03);
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_02.forcerelease = 1;
|
|
}
|
|
|
|
if(isdefined(param_00))
|
|
{
|
|
param_00 notify("end_move_towards_player");
|
|
param_00 setscriptablepartstate("entangler","fired");
|
|
}
|
|
|
|
if(isdefined(var_04))
|
|
{
|
|
var_04 delete();
|
|
}
|
|
|
|
if(isdefined(param_00))
|
|
{
|
|
if(!param_00 scripts\cp\_utility::isweaponfireenabled())
|
|
{
|
|
param_00 scripts\common\utility::func_1C46(1);
|
|
}
|
|
|
|
if(!param_00 scripts\cp\_utility::issprintenabled())
|
|
{
|
|
param_00 scripts\common\utility::func_1C67(1);
|
|
}
|
|
}
|
|
|
|
if(isdefined(param_02.customlaunchfunc))
|
|
{
|
|
thread [[ param_02.customlaunchfunc ]](param_00,param_02,param_01);
|
|
return;
|
|
}
|
|
|
|
launchitem(param_00,param_02,param_01);
|
|
}
|
|
|
|
//Function Number: 14
|
|
releaseitemaftertime(param_00,param_01)
|
|
{
|
|
level endon("game_ended");
|
|
param_00 endon("disconnect");
|
|
param_00 endon("item_released");
|
|
param_00 endon("entangler_removed");
|
|
wait(gettimeoutfrommodel(param_01));
|
|
param_01.forcerelease = 1;
|
|
param_00 notify("item_released");
|
|
}
|
|
|
|
//Function Number: 15
|
|
gettimeoutfrommodel(param_00)
|
|
{
|
|
switch(param_00.model)
|
|
{
|
|
case "ref_space_helmet_02":
|
|
return 60;
|
|
|
|
default:
|
|
return 90;
|
|
}
|
|
}
|
|
|
|
//Function Number: 16
|
|
gettagfrommodel(param_00)
|
|
{
|
|
switch(param_00.model)
|
|
{
|
|
case "ref_space_helmet_02":
|
|
return "us_space_helmet_a_lod1";
|
|
|
|
default:
|
|
return "tag_origin";
|
|
}
|
|
}
|
|
|
|
//Function Number: 17
|
|
initentanglermodels()
|
|
{
|
|
var_00 = scripts\common\utility::getstructarray("entangler_structs","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
level thread spawnentanglermodel(var_02);
|
|
}
|
|
}
|
|
|
|
//Function Number: 18
|
|
spawnentanglermodel(param_00,param_01,param_02)
|
|
{
|
|
if(isdefined(param_00.entanglemodel))
|
|
{
|
|
param_00.entanglemodel scripts\cp\_weapon::func_CC16("pillage",1,param_00.entanglemodel.origin);
|
|
param_00.entanglemodel delete();
|
|
}
|
|
|
|
if(isdefined(param_01))
|
|
{
|
|
var_03 = param_01;
|
|
}
|
|
else
|
|
{
|
|
var_03 = param_01.origin;
|
|
}
|
|
|
|
if(isdefined(param_02))
|
|
{
|
|
var_04 = param_02;
|
|
}
|
|
else if(isdefined(param_01.angles))
|
|
{
|
|
var_04 = param_01.angles;
|
|
}
|
|
else
|
|
{
|
|
var_04 = (0,0,0);
|
|
}
|
|
|
|
var_05 = spawn("script_model",var_03);
|
|
var_05.angles = var_04;
|
|
if(isdefined(param_00.script_noteworthy))
|
|
{
|
|
var_05 setmodel(param_00.script_noteworthy);
|
|
}
|
|
else
|
|
{
|
|
var_05 setmodel("ref_space_helmet_02");
|
|
}
|
|
|
|
param_00.entanglemodel = var_05;
|
|
param_00 notify("new_model_created");
|
|
var_05.parent_struct = param_00;
|
|
var_05 thread watchforentanglerdamage(param_00,var_05);
|
|
var_05 thread outlineitemforplayers(param_00,var_05);
|
|
}
|
|
|
|
//Function Number: 19
|
|
watchforentanglerdamage(param_00,param_01)
|
|
{
|
|
param_01 notify("watchForEntanglerDamage");
|
|
param_01 endon("watchForEntanglerDamage");
|
|
level endon("game_ended");
|
|
param_00 endon("new_model_created");
|
|
param_00 endon("vent_grabbed_puzzle_piece");
|
|
param_01 endon("end_entangler_funcs");
|
|
param_00 endon("stop_watching_for_entangler_damage");
|
|
param_01 setcandamage(1);
|
|
param_01.health = 9999999;
|
|
param_01.maxhealth = 9999999;
|
|
for(;;)
|
|
{
|
|
param_01 waittill("damage",var_02,var_03,var_02,var_02,var_02,var_02,var_02,var_02,var_02,var_04);
|
|
if(isdefined(var_04) && getweaponbasename(var_04) == "iw7_entangler2_zm")
|
|
{
|
|
var_03.entangledmodel = param_01;
|
|
thread entangleitem(var_03,param_00,param_01);
|
|
param_01 waittill("released",var_05,var_06,var_07);
|
|
var_08 = isdefined(param_00.var_86A2);
|
|
var_09 = param_01.origin;
|
|
if(param_01 istouching(getent("electric_trap_trig","targetname")))
|
|
{
|
|
var_05 = 1;
|
|
}
|
|
|
|
if(!scripts\common\utility::istrue(var_05) && scripts\cp\maps\cp_final\cp_final::validateplayspace(var_09,var_03,var_08,var_08,var_07))
|
|
{
|
|
if(param_01.model == "cp_final_brute_mascot_mask")
|
|
{
|
|
param_01 scripts\cp\maps\cp_final\cp_final_interactions::helmet_useable();
|
|
}
|
|
else
|
|
{
|
|
param_01 method_851B();
|
|
if(isdefined(param_00.var_86A2))
|
|
{
|
|
level.undergratepuzzlepiece = param_01;
|
|
level notify("vent_fx");
|
|
}
|
|
|
|
if(scripts\common\utility::istrue(var_06))
|
|
{
|
|
param_01 notify("end_entangler_funcs");
|
|
}
|
|
}
|
|
}
|
|
else if(isdefined(param_00.var_1088C))
|
|
{
|
|
thread [[ param_00.var_1088C ]](param_00.var_92B8,param_00);
|
|
}
|
|
else if(param_01.model == "cp_final_brute_mascot_mask")
|
|
{
|
|
param_01 scripts\cp\maps\cp_final\cp_final_interactions::helmet_useable();
|
|
level.brute_helm_out_of_bounds = 1;
|
|
}
|
|
else
|
|
{
|
|
level thread spawnentanglermodel(param_00,param_00.origin,param_00.angles);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 20
|
|
moveitemtowardsplayer(param_00,param_01,param_02)
|
|
{
|
|
param_00 endon("entangler_removed");
|
|
param_00 endon("disconnect");
|
|
param_00 endon("item_released");
|
|
level endon("entangler_removed_" + param_00.name);
|
|
wait(0.1);
|
|
var_03 = 1250;
|
|
var_04 = 0;
|
|
var_05 = 72;
|
|
var_06 = 0;
|
|
var_07 = param_00.entangledmodel;
|
|
var_08 = 1;
|
|
var_09 = scripts\common\trace::func_48BC(1,1,1,1,0,0,1);
|
|
var_0A = scripts\common\trace::func_48BC(1,1,1,1,1,0,0);
|
|
var_0B = getcapsulefrommodel(var_07);
|
|
var_07 endon("end_entangle_move_to_logic");
|
|
var_07.lasteffecttime = 0;
|
|
if(isdefined(var_07.var_EE79) && var_07.var_EE79 == "heavy_helmet")
|
|
{
|
|
var_05 = 100;
|
|
var_03 = 250;
|
|
var_08 = 0;
|
|
}
|
|
|
|
playfxontag(level._effect["vfx_item_entagled"],var_07,param_02);
|
|
thread delaykillfx(var_07,param_02,param_00);
|
|
param_00 thread monitorplayerviewangles(param_00,var_07);
|
|
var_0C = 0;
|
|
var_0D = 0;
|
|
for(var_0E = 0;isdefined(param_00) && param_00 getcurrentweapon() == "iw7_entangler2_zm";var_0E++)
|
|
{
|
|
var_0F = gettime();
|
|
if(var_07.lasteffecttime + 250 <= var_0F)
|
|
{
|
|
var_07.lasteffecttime = var_0F;
|
|
}
|
|
|
|
var_05 = 72;
|
|
var_10 = param_00 getvelocity();
|
|
var_11 = vectordot(var_10,param_00.angles);
|
|
if(var_11 >= 1)
|
|
{
|
|
var_12 = length(var_10);
|
|
if(var_12 >= 250)
|
|
{
|
|
var_05 = var_05 + 48;
|
|
}
|
|
else if(var_12 >= 185)
|
|
{
|
|
var_05 = var_05 + 24;
|
|
}
|
|
else if(var_12 >= 100)
|
|
{
|
|
var_05 = var_05 + 12;
|
|
}
|
|
}
|
|
|
|
var_13 = var_0C >= 10;
|
|
var_14 = var_0C >= 20;
|
|
var_0D = var_0E >= 5;
|
|
var_15 = scripts\common\utility::array_combine(level.players,[var_07]);
|
|
var_16 = param_00 geteye();
|
|
var_17 = param_00.origin + (0,0,56);
|
|
var_18 = (0,var_05,0);
|
|
var_19 = param_00 getplayerangles();
|
|
var_1A = anglestoforward(var_19);
|
|
var_1B = anglestoup(var_19);
|
|
var_1C = anglestoright(var_19);
|
|
var_1D = var_06;
|
|
var_17 = var_17 + var_18[0] * var_1C;
|
|
var_17 = var_17 + var_18[1] * var_1A;
|
|
var_17 = var_17 + var_18[2] * var_1B;
|
|
var_1E = rotatepointaroundvector(anglestoup(var_19),anglestoforward(var_19),var_1D);
|
|
var_1F = var_17 + var_1E;
|
|
var_20 = var_1F[2];
|
|
var_21 = scripts\common\utility::func_5D14(var_16,12,-100)[2] + 16;
|
|
var_22 = min(var_16[2] + 12,var_21 + 56);
|
|
var_20 = clamp(var_1F[2],var_21,var_22);
|
|
var_1F = (var_1F[0],var_1F[1],var_20);
|
|
if(isdefined(param_01.entanglerangleupdate))
|
|
{
|
|
var_17 = [[ param_01.entanglerangleupdate ]](param_00,param_01,var_07);
|
|
var_23 = vectortoangles(var_17 - var_07.origin);
|
|
}
|
|
else
|
|
{
|
|
var_23 = vectortoangles(param_00.origin - var_07.origin);
|
|
}
|
|
|
|
if(var_07.model == "cp_final_subway_turnstyle_arm")
|
|
{
|
|
var_07.angles = (var_23[0],var_23[1],var_23[2]);
|
|
}
|
|
else
|
|
{
|
|
var_07.angles = (var_07.angles[0],var_23[1],var_23[2]);
|
|
}
|
|
|
|
var_24 = distance(var_07.origin,var_1F);
|
|
var_04 = var_24 / var_03;
|
|
if(var_04 < 0.05)
|
|
{
|
|
var_04 = 0.05;
|
|
}
|
|
|
|
if(var_08)
|
|
{
|
|
if(scripts\common\utility::istrue(param_00.var_9C54) || scripts\common\utility::istrue(param_00.isfasttravelling))
|
|
{
|
|
var_13 = 0;
|
|
var_0C = 0;
|
|
var_07.origin = var_1F;
|
|
}
|
|
else if(!isdefined(param_01.entanglemovetofunc))
|
|
{
|
|
if(var_0D)
|
|
{
|
|
var_25 = var_07.origin + anglestoforward(vectortoangles(param_00.origin - var_07.origin)) * 12;
|
|
var_26 = scripts\common\trace::func_3A09(var_25,var_1F,var_0B[0],var_0B[1],undefined,var_15,var_09,1);
|
|
var_1F = var_26["shape_position"] - (0,0,var_26["shape_position"][2]) + (0,0,var_20);
|
|
}
|
|
|
|
if(var_24 <= 64)
|
|
{
|
|
var_07.origin = var_1F;
|
|
}
|
|
else
|
|
{
|
|
var_07 moveto(var_1F,var_04);
|
|
param_00 scripts\common\utility::waittill_any_timeout_1(var_04,"update_item_pos","delete_equipment");
|
|
}
|
|
}
|
|
else if(isdefined(param_01.entanglemovetofunc))
|
|
{
|
|
var_13 = 0;
|
|
if([[ param_01.entanglemovetofunc ]](param_01,var_1F,var_07,param_00))
|
|
{
|
|
if(var_24 <= 64)
|
|
{
|
|
var_07.origin = var_1F;
|
|
}
|
|
else
|
|
{
|
|
var_07 moveto(var_1F,var_04);
|
|
param_00 scripts\common\utility::waittill_any_timeout_1(var_04,"update_item_pos","delete_equipment");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_15 = scripts\common\utility::array_combine(level.players,[var_07]);
|
|
var_26 = scripts\common\trace::func_3A09(param_01.origin,param_00.origin,var_0B[0],var_0B[1],undefined,var_15,var_09,24);
|
|
var_27 = var_26["shape_position"] + (0,0,32);
|
|
var_07.origin = var_27;
|
|
}
|
|
}
|
|
else if(var_24 <= 56)
|
|
{
|
|
var_07.origin = var_1F;
|
|
}
|
|
else
|
|
{
|
|
var_07 moveto(var_1F,var_04);
|
|
param_00 scripts\common\utility::waittill_any_timeout_1(var_04,"update_item_pos","delete_equipment");
|
|
}
|
|
|
|
scripts\common\utility::func_136F7();
|
|
if(var_13)
|
|
{
|
|
var_25 = var_07.origin + anglestoforward(var_07.angles) * 18;
|
|
var_15 = scripts\common\utility::array_combine(level.players,[var_07]);
|
|
var_28 = scripts\common\trace::func_DCED(var_16,var_25 + (0,0,16),var_15,var_0A);
|
|
if(isdefined(var_28["hittype"]) && var_28["hittype"] != "hittype_none")
|
|
{
|
|
if(var_28["hittype"] == "hittype_entity" && isdefined(var_28["entity"]) && !isplayer(var_28["entity"]))
|
|
{
|
|
if(var_14)
|
|
{
|
|
var_07.forcerelease = 1;
|
|
param_00 notify("item_released");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_07.forcerelease = 1;
|
|
param_00 notify("item_released");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_0C = 0;
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
else if(var_24 >= 8)
|
|
{
|
|
var_07 moveto(var_1F,var_04);
|
|
param_00 scripts\common\utility::waittill_any_timeout_1(var_04,"update_item_pos","delete_equipment");
|
|
}
|
|
else
|
|
{
|
|
scripts\common\utility::func_136F7();
|
|
if(var_13)
|
|
{
|
|
var_25 = var_07.origin + anglestoforward(var_07.angles) * 18;
|
|
var_15 = scripts\common\utility::array_combine(level.players,[var_07]);
|
|
var_28 = scripts\common\trace::func_DCED(var_16,var_25 + (0,0,16),var_15,var_0A);
|
|
if(isdefined(var_28["hittype"]) && var_28["hittype"] != "hittype_none")
|
|
{
|
|
if(var_28["hittype"] == "hittype_entity" && isdefined(var_28["entity"]) && !isplayer(var_28["entity"]))
|
|
{
|
|
if(var_14)
|
|
{
|
|
var_07.forcerelease = 1;
|
|
param_00 notify("item_released");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_07.forcerelease = 1;
|
|
param_00 notify("item_released");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_0C = 0;
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
|
|
var_0C++;
|
|
}
|
|
}
|
|
|
|
//Function Number: 21
|
|
delaykillfx(param_00,param_01,param_02)
|
|
{
|
|
level endon("game_ended");
|
|
param_02 scripts\common\utility::waittill_any_3("disconnect","end_move_towards_player");
|
|
stopfxontag(level._effect["vfx_item_entagled"],param_00,param_01);
|
|
}
|
|
|
|
//Function Number: 22
|
|
getcapsulefrommodel(param_00)
|
|
{
|
|
switch(param_00.model)
|
|
{
|
|
case "cp_final_brute_mascot_mask":
|
|
return [16,32];
|
|
|
|
case "final_kevin_head":
|
|
return [10,20];
|
|
|
|
case "ref_space_helmet_02":
|
|
return [8,16];
|
|
|
|
default:
|
|
return [12,24];
|
|
}
|
|
}
|
|
|
|
//Function Number: 23
|
|
monitorplayerviewangles(param_00,param_01)
|
|
{
|
|
param_00 endon("disconnect");
|
|
param_01 endon("death");
|
|
param_00 endon("item_released");
|
|
level endon("entangler_removed_" + param_00.name);
|
|
for(;;)
|
|
{
|
|
var_02 = param_00 geteye();
|
|
var_03 = vectornormalize(anglestoforward(param_00 getplayerangles())) * 72;
|
|
var_04 = var_02 + var_03;
|
|
if(distance(param_01.origin,var_04) >= 5)
|
|
{
|
|
param_00 notify("update_item_pos");
|
|
}
|
|
|
|
scripts\common\utility::func_136F7();
|
|
}
|
|
}
|
|
|
|
//Function Number: 24
|
|
launchitem(param_00,param_01,param_02)
|
|
{
|
|
level endon("game_ended");
|
|
if(isdefined(param_00))
|
|
{
|
|
param_00 endon("disconnect");
|
|
var_03 = [param_00,param_01];
|
|
}
|
|
else
|
|
{
|
|
var_03 = [param_02];
|
|
}
|
|
|
|
if(!isdefined(param_01))
|
|
{
|
|
if(isdefined(param_00) && isdefined(param_00.entangledmodel))
|
|
{
|
|
param_01 = param_00.entangledmodel;
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(isdefined(param_00))
|
|
{
|
|
param_00.entangledmodel = undefined;
|
|
}
|
|
|
|
param_01.var_AAA8 = 1;
|
|
if(isdefined(param_00))
|
|
{
|
|
var_04 = param_00 geteye();
|
|
}
|
|
else
|
|
{
|
|
var_04 = param_02.origin;
|
|
}
|
|
|
|
var_05 = param_01.origin;
|
|
var_06 = (0,10000,0);
|
|
if(isdefined(param_00))
|
|
{
|
|
var_07 = param_00 getplayerangles();
|
|
}
|
|
else
|
|
{
|
|
var_07 = anglestoforward(param_02.angles) * -1;
|
|
}
|
|
|
|
var_08 = 0;
|
|
var_05 = var_05 + var_06[0] * anglestoright(var_07);
|
|
var_05 = var_05 + var_06[1] * anglestoforward(var_07);
|
|
var_05 = var_05 + var_06[2] * anglestoup(var_07);
|
|
var_09 = rotatepointaroundvector(anglestoup(var_07),anglestoforward(var_07),var_08);
|
|
var_0A = scripts\common\trace::func_48BC(1,1,1,1,0,0,1);
|
|
var_0B = scripts\common\trace::func_3A09(var_04,var_05 + var_09,16,32,undefined,var_03,var_0A,24);
|
|
var_0C = var_0B["shape_position"];
|
|
var_0D = var_05;
|
|
var_0E = vectornormalize(var_05 - var_0C);
|
|
var_0E = var_0E * 10000;
|
|
if(isdefined(param_01.var_EE79) && param_01.var_EE79 == "heavy_helmet")
|
|
{
|
|
var_0E = var_0E / 2;
|
|
}
|
|
|
|
if(scripts\common\utility::istrue(param_01.forcerelease))
|
|
{
|
|
var_0F = scripts\common\utility::func_5D14(param_01.origin,24,-200);
|
|
var_10 = -150;
|
|
var_0E = trajectorycalculateinitialvelocity(var_0F + (0,0,20),var_0F + (0,0,20) + (randomintrange(-10,10),randomintrange(-10,10),0),(0,0,var_10),2);
|
|
param_01.forcerelease = undefined;
|
|
}
|
|
|
|
param_01 physicslaunchserver(var_0D,var_0E);
|
|
param_01 method_84D1();
|
|
if(isdefined(param_01.collisionfunc))
|
|
{
|
|
thread [[ param_01.collisionfunc ]](param_01,param_02,param_00);
|
|
return;
|
|
}
|
|
|
|
thread delaykillitem(param_01,param_02,param_00);
|
|
}
|
|
|
|
//Function Number: 25
|
|
delaykillitem(param_00,param_01,param_02)
|
|
{
|
|
level endon("game_ended");
|
|
param_00 waittill("collision",var_03,var_04,var_05,var_06,var_07,var_08,var_09,var_0A);
|
|
var_0B = gettime();
|
|
param_00.soundlastplayed = var_0B;
|
|
playsoundatpos(param_00.origin,"weap_axe_throw_impact");
|
|
var_0C = param_00.origin;
|
|
for(var_0D = 0;var_0D <= 20;var_0D++)
|
|
{
|
|
var_0E = param_00.origin;
|
|
var_0F = param_00.angles;
|
|
param_00 scripts\common\utility::waittill_any_timeout_1(0.1,"collision");
|
|
level notify("entangler_item_collision",param_00.origin);
|
|
if(distance(var_0E,param_00.origin) < 1 && var_0F == param_00.angles)
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_0B = gettime();
|
|
if(param_00.soundlastplayed <= var_0B - 250)
|
|
{
|
|
param_00.soundlastplayed = var_0B;
|
|
playsoundatpos(param_00.origin,"weap_axe_throw_impact");
|
|
}
|
|
}
|
|
|
|
if(var_0D >= 20)
|
|
{
|
|
param_00.forcedrespawn = 1;
|
|
}
|
|
|
|
param_00.hasbeenthrown = 1;
|
|
param_00.var_AAA8 = undefined;
|
|
param_00 notify("released");
|
|
param_00.var_A5AB = 0;
|
|
}
|
|
|
|
//Function Number: 26
|
|
outlineitemforplayers(param_00,param_01)
|
|
{
|
|
}
|
|
|
|
//Function Number: 27
|
|
outlineitemforplayer(param_00,param_01)
|
|
{
|
|
if(!isdefined(param_01))
|
|
{
|
|
return;
|
|
}
|
|
|
|
level endon("game_ended");
|
|
param_00 endon("disconnect");
|
|
param_01 endon("death");
|
|
entangleritemoutlinemonitor(param_00,param_01);
|
|
if(!isdefined(param_01))
|
|
{
|
|
return;
|
|
}
|
|
|
|
param_01 hudoutlinedisableforclient(param_00);
|
|
}
|
|
|
|
//Function Number: 28
|
|
entangleritemoutlinemonitor(param_00,param_01)
|
|
{
|
|
level endon("game_ended");
|
|
level endon("entangler_removed_" + param_00.name);
|
|
param_00 endon("disconnect");
|
|
param_01 endon("end_entangler_funcs");
|
|
param_01 endon("death");
|
|
for(;;)
|
|
{
|
|
if(isdefined(param_01))
|
|
{
|
|
if(isdefined(param_00.entangledmodel) && param_00.entangledmodel == param_01)
|
|
{
|
|
param_01 hudoutlinedisableforclient(param_00);
|
|
}
|
|
else if(scripts\common\utility::istrue(param_01.var_AAA8))
|
|
{
|
|
param_01 hudoutlinedisableforclient(param_00);
|
|
}
|
|
else if(distance(param_00.origin,param_01.origin) <= 500)
|
|
{
|
|
param_01 hudoutlineenableforclient(param_00,5,1,0,0);
|
|
}
|
|
else
|
|
{
|
|
param_01 hudoutlinedisableforclient(param_00);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
|
|
wait(0.25);
|
|
}
|
|
} |