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

1190 lines
20 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\_movers.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 49
* Decompile Time: 1963 ms
* Timestamp: 10/27/2023 12:21:04 AM
*******************************************************************/
//Function Number: 1
main()
{
if(getdvar("r_reflectionProbeGenerate") == "1")
{
return;
}
level.var_EE36 = [];
level.var_EE36["move_time"] = 5;
level.var_EE36["accel_time"] = 0;
level.var_EE36["decel_time"] = 0;
level.var_EE36["wait_time"] = 0;
level.var_EE36["delay_time"] = 0;
level.var_EE36["usable"] = 0;
level.var_EE36["hintstring"] = "activate";
func_EE2E("activate",&"MP_ACTIVATE_MOVER");
func_EE2F("none","");
level.var_EE41 = [];
scripts\common\utility::func_136F7();
var_00 = [];
var_01 = func_EE34();
foreach(var_03 in var_01)
{
var_00 = scripts\common\utility::array_combine(var_00,getentarray(var_03,"classname"));
}
scripts\common\utility::array_thread(var_00,::func_EE3C);
}
//Function Number: 2
func_EE34()
{
return ["script_model_mover","script_brushmodel_mover"];
}
//Function Number: 3
func_EE3D()
{
if(isdefined(self.var_EE2D))
{
return self.var_EE2D;
}
var_00 = func_EE34();
foreach(var_02 in var_00)
{
if(self.classname == var_02)
{
self.var_EE2D = 1;
return 1;
}
}
return 0;
}
//Function Number: 4
func_EE2E(param_00,param_01)
{
if(!isdefined(level.var_EE3A))
{
level.var_EE3A = [];
}
level.var_EE3A[param_00] = param_01;
}
//Function Number: 5
func_EE2F(param_00,param_01)
{
if(!isdefined(level.var_EE42))
{
level.var_EE42 = [];
}
level.var_EE42[param_00] = param_01;
}
//Function Number: 6
func_EE3C()
{
if(!isdefined(self.target))
{
return;
}
self.var_EE2D = 1;
self.var_BD30 = 0;
self.var_C714 = self;
self.var_13034 = [];
self.var_AD1E = [];
var_00 = scripts\common\utility::getstructarray(self.target,"targetname");
foreach(var_02 in var_00)
{
if(!isdefined(var_02.script_noteworthy))
{
continue;
}
switch(var_02.script_noteworthy)
{
case "origin":
if(!isdefined(var_02.angles))
{
var_02.angles = (0,0,0);
}
self.var_C714 = spawn("script_model",var_02.origin);
self.var_C714.angles = var_02.angles;
self.var_C714 setmodel("tag_origin");
self.var_C714 linkto(self);
break;
default:
break;
}
}
var_04 = getentarray(self.target,"targetname");
foreach(var_02 in var_04)
{
if(!isdefined(var_02.script_noteworthy))
{
continue;
}
switch(var_02.script_noteworthy)
{
case "use_trigger_link":
var_02 enablelinkto();
var_02 linkto(self);
break;
case "use_trigger":
var_02 func_EE45();
thread func_EE4F(var_02);
self.var_13034[self.var_13034.size] = var_02;
break;
case "link":
var_02 linkto(self);
self.var_AD1E[self.var_AD1E.size] = var_02;
break;
default:
break;
}
}
thread func_EE45();
thread func_EE3B();
thread func_EE47();
thread func_EE32(self);
thread func_EE40();
foreach(var_08 in self.var_13034)
{
func_EE4A(var_08,1);
}
}
//Function Number: 7
func_EE4F(param_00)
{
self endon("death");
for(;;)
{
param_00 waittill("trigger");
if(param_00.var_8436.size > 0)
{
self notify("new_path");
thread func_EE40(param_00);
continue;
}
self notify("trigger");
}
}
//Function Number: 8
func_EE3F(param_00)
{
if(isdefined(level.var_EE41[param_00]))
{
self notify("new_path");
self.var_8436 = [level.var_EE41[param_00]];
thread func_EE40();
}
}
//Function Number: 9
func_1E8B(param_00)
{
return (angleclamp180(param_00[0]),angleclamp180(param_00[1]),angleclamp180(param_00[2]));
}
//Function Number: 10
func_EE45()
{
if(isdefined(self.var_C907) && self.var_C907)
{
return;
}
self.var_C907 = 1;
self.var_8436 = [];
self.var_BCEA = [];
self.var_ABDF = [];
var_00 = [];
var_01 = [];
if(isdefined(self.target))
{
var_00 = scripts\common\utility::getstructarray(self.target,"targetname");
var_01 = getentarray(self.target,"targetname");
}
for(var_02 = 0;var_02 < var_00.size;var_02++)
{
var_03 = var_00[var_02];
if(!isdefined(var_03.script_noteworthy))
{
var_03.script_noteworthy = "goal";
}
switch(var_03.script_noteworthy)
{
case "ignore":
if(isdefined(var_03.target))
{
var_04 = scripts\common\utility::getstructarray(var_03.target,"targetname");
foreach(var_06 in var_04)
{
var_00[var_00.size] = var_06;
}
}
break;
case "goal":
var_03 func_EE3B();
var_03 func_EE45();
self.var_8436[self.var_8436.size] = var_03;
if(isdefined(var_03.var_C8F0["name"]))
{
level.var_EE41[var_03.var_C8F0["name"]] = var_03;
}
break;
case "level_notify":
if(isdefined(var_03.var_EE79))
{
self.var_ABDF[self.var_ABDF.size] = var_03;
}
break;
default:
break;
}
}
foreach(var_09 in var_01)
{
if(var_09 func_EE3D())
{
self.var_BCEA[self.var_BCEA.size] = var_09;
continue;
}
if(!isdefined(var_09.script_noteworthy))
{
continue;
}
var_0A = strtok(var_09.script_noteworthy,"_");
if(var_0A.size != 3 || var_0A[1] != "on")
{
continue;
}
switch(var_0A[0])
{
case "delete":
thread func_EE33(var_09,::delete,var_0A[2]);
break;
case "hide":
thread func_EE33(var_09,::hide,var_0A[2]);
break;
case "show":
var_09 hide();
thread func_EE33(var_09,::show,var_0A[2]);
break;
case "triggerHide":
case "triggerhide":
thread func_EE37(var_09,::scripts\common\utility::trigger_off,var_0A[2]);
break;
case "triggerShow":
case "triggershow":
var_09 scripts\common\utility::trigger_off();
thread func_EE37(var_09,::scripts\common\utility::trigger_on,var_0A[2]);
break;
default:
break;
}
}
}
//Function Number: 11
func_EE37(param_00,param_01,param_02)
{
self endon("death");
param_00 endon("death");
for(;;)
{
self waittill(param_02);
param_00 [[ param_01 ]]();
}
}
//Function Number: 12
func_EE33(param_00,param_01,param_02)
{
self endon("death");
param_00 endon("death");
for(;;)
{
self waittill(param_02);
param_00 [[ param_01 ]]();
}
}
//Function Number: 13
func_EE4C()
{
scripts\common\utility::trigger_on();
}
//Function Number: 14
func_EE40(param_00)
{
self endon("death");
self endon("new_path");
if(!isdefined(param_00))
{
param_00 = self;
}
while(param_00.var_8436.size != 0)
{
var_01 = scripts\common\utility::random(param_00.var_8436);
var_02 = self;
var_02 func_EE32(var_01);
if(isdefined(var_02.var_C8F0["delay_till"]))
{
level waittill(var_02.var_C8F0["delay_till"]);
}
if(isdefined(var_02.var_C8F0["delay_till_trigger"]) && var_02.var_C8F0["delay_till_trigger"])
{
self waittill("trigger");
}
if(var_02.var_C8F0["delay_time"] > 0)
{
wait(var_02.var_C8F0["delay_time"]);
}
var_03 = var_02.var_C8F0["move_time"];
var_04 = var_02.var_C8F0["accel_time"];
var_05 = var_02.var_C8F0["decel_time"];
var_06 = 0;
var_07 = 0;
var_08 = transformmove(var_01.origin,var_01.angles,self.var_C714.origin,self.var_C714.angles,self.origin,self.angles);
if(var_02.origin != var_01.origin)
{
if(isdefined(var_02.var_C8F0["move_speed"]))
{
var_09 = distance(var_02.origin,var_01.origin);
var_03 = var_09 / var_02.var_C8F0["move_speed"];
}
if(isdefined(var_02.var_C8F0["accel_frac"]))
{
var_04 = var_02.var_C8F0["accel_frac"] * var_03;
}
if(isdefined(var_02.var_C8F0["decel_frac"]))
{
var_05 = var_02.var_C8F0["decel_frac"] * var_03;
}
var_02 moveto(var_08["origin"],var_03,var_04,var_05);
foreach(var_0B in var_01.var_ABDF)
{
thread func_EE46(var_0B.origin,var_0B.var_EE79,self.origin,var_01.origin);
}
var_06 = 1;
}
if(func_1E8B(var_08["angles"]) != func_1E8B(var_02.angles))
{
var_02 rotateto(var_08["angles"],var_03,var_04,var_05);
var_07 = 1;
}
foreach(var_0E in var_02.var_BCEA)
{
var_0E notify("trigger");
}
param_00 notify("depart");
var_02 func_EE31(0);
self.var_BD30 = 1;
if(isdefined(var_02.var_C8F0["move_time_offset"]) && var_02.var_C8F0["move_time_offset"] + var_03 > 0)
{
wait(var_02.var_C8F0["move_time_offset"] + var_03);
}
else if(var_06)
{
self waittill("movedone");
}
else if(var_07)
{
self waittill("rotatedone");
}
else
{
wait(var_03);
}
self.var_BD30 = 0;
self notify("move_end");
var_01 notify("arrive");
if(isdefined(var_02.var_C8F0["solid"]))
{
if(var_02.var_C8F0["solid"])
{
var_02 solid();
}
else
{
var_02 notsolid();
}
}
foreach(var_0E in var_01.var_BCEA)
{
var_0E notify("trigger");
}
if(isdefined(var_02.var_C8F0["wait_till"]))
{
level waittill(var_02.var_C8F0["wait_till"]);
}
if(var_02.var_C8F0["wait_time"] > 0)
{
wait(var_02.var_C8F0["wait_time"]);
}
var_02 func_EE31(1);
param_00 = var_01;
}
}
//Function Number: 15
func_EE46(param_00,param_01,param_02,param_03)
{
self endon("move_end");
var_04 = self;
var_05 = vectornormalize(param_03 - param_02);
for(;;)
{
var_06 = vectornormalize(param_00 - var_04.origin);
if(vectordot(var_05,var_06) <= 0)
{
break;
}
wait(0.05);
}
level notify(param_01);
}
//Function Number: 16
func_EE3B()
{
self.var_C8F0 = [];
if(!isdefined(self.angles))
{
self.angles = (0,0,0);
}
self.angles = func_1E8B(self.angles);
func_EE43(self.var_EE79);
}
//Function Number: 17
func_EE43(param_00)
{
if(!isdefined(param_00))
{
param_00 = "";
}
var_01 = strtok(param_00,";");
foreach(var_03 in var_01)
{
var_04 = strtok(var_03,"=");
if(var_04.size != 2)
{
continue;
}
if(var_04[1] == "undefined" || var_04[1] == "default")
{
self.var_C8F0[var_04[0]] = undefined;
continue;
}
switch(var_04[0])
{
case "move_time_offset":
case "decel_frac":
case "accel_frac":
case "move_speed":
case "delay_time":
case "wait_time":
case "decel_time":
case "accel_time":
case "move_time":
self.var_C8F0[var_04[0]] = func_EE44(var_04[1]);
break;
case "wait_till":
case "delay_till":
case "hintstring":
case "name":
self.var_C8F0[var_04[0]] = var_04[1];
break;
case "delay_till_trigger":
case "usable":
case "solid":
self.var_C8F0[var_04[0]] = int(var_04[1]);
break;
case "script_params":
var_05 = var_04[1];
var_06 = level.var_EE42[var_05];
if(isdefined(var_06))
{
func_EE43(var_06);
}
break;
default:
break;
}
}
}
//Function Number: 18
func_EE44(param_00)
{
var_01 = 0;
var_02 = strtok(param_00,",");
if(var_02.size == 1)
{
var_01 = float(var_02[0]);
}
else if(var_02.size == 2)
{
var_03 = float(var_02[0]);
var_04 = float(var_02[1]);
if(var_03 >= var_04)
{
var_01 = var_03;
}
else
{
var_01 = randomfloatrange(var_03,var_04);
}
}
return var_01;
}
//Function Number: 19
func_EE32(param_00)
{
foreach(var_03, var_02 in param_00.var_C8F0)
{
func_EE49(var_03,var_02);
}
func_EE48();
}
//Function Number: 20
func_EE49(param_00,param_01)
{
if(!isdefined(param_00))
{
return;
}
if(param_00 == "usable" && isdefined(param_01))
{
func_EE4A(self,param_01);
}
self.var_C8F0[param_00] = param_01;
}
//Function Number: 21
func_EE31(param_00)
{
if(self.var_C8F0["usable"])
{
func_EE4A(self,param_00);
}
foreach(var_02 in self.var_13034)
{
func_EE4A(var_02,param_00);
}
}
//Function Number: 22
func_EE4A(param_00,param_01)
{
if(param_01)
{
param_00 makeusable();
param_00 setcursorhint("HINT_NOICON");
param_00 sethintstring(level.var_EE3A[self.var_C8F0["hintstring"]]);
return;
}
param_00 makeunusable();
}
//Function Number: 23
func_EE47()
{
self.var_C8F1 = [];
foreach(var_02, var_01 in self.var_C8F0)
{
self.var_C8F1[var_02] = var_01;
}
}
//Function Number: 24
func_EE48()
{
foreach(var_02, var_01 in level.var_EE36)
{
if(!isdefined(self.var_C8F0[var_02]))
{
func_EE49(var_02,var_01);
}
}
if(isdefined(self.var_C8F1))
{
foreach(var_02, var_01 in self.var_C8F1)
{
if(!isdefined(self.var_C8F0[var_02]))
{
func_EE49(var_02,var_01);
}
}
}
}
//Function Number: 25
init()
{
level thread func_EE35();
level thread func_EE30();
}
//Function Number: 26
func_EE35()
{
for(;;)
{
level waittill("connected",var_00);
var_00 thread func_D312();
}
}
//Function Number: 27
func_EE30()
{
for(;;)
{
level waittill("spawned_agent",var_00);
var_00 thread func_D312();
}
}
//Function Number: 28
func_D312()
{
self endon("disconnect");
if(isagent(self))
{
self endon("death");
}
self.var_12BE5 = 0;
for(;;)
{
self waittill("unresolved_collision",var_00);
self.var_12BE5++;
thread func_418E();
var_01 = 3;
if(isdefined(var_00) && isdefined(var_00.var_12BEC))
{
var_01 = var_00.var_12BEC;
}
if(self.var_12BE5 >= var_01)
{
if(isdefined(var_00))
{
if(isdefined(var_00.var_12BE7))
{
var_00 [[ var_00.var_12BE7 ]](self);
}
else if(isdefined(var_00.var_12BE8) && var_00.var_12BE8)
{
var_00 func_12BED(self);
}
else
{
var_00 func_12BEA(self,undefined,var_00);
}
}
else
{
func_12BEA(self);
}
self.var_12BE5 = 0;
}
}
}
//Function Number: 29
func_418E()
{
self endon("unresolved_collision");
scripts\common\utility::func_136F7();
if(isdefined(self))
{
self.var_12BE5 = 0;
}
}
//Function Number: 30
func_12BED(param_00)
{
var_01 = self;
if(!isdefined(var_01.var_222))
{
param_00 func_BCDE();
return;
}
var_02 = 0;
if(level.teambased)
{
if(isdefined(var_01.var_222.team) && var_01.var_222.team != param_00.team)
{
var_02 = 1;
}
}
else if(param_00 != var_01.var_222)
{
var_02 = 1;
}
if(!var_02)
{
param_00 func_BCDE();
return;
}
var_03 = 1000;
if(isdefined(var_01.var_12BE6))
{
var_03 = var_01.var_12BE6;
}
param_00 dodamage(var_03,var_01.origin,var_01.var_222,var_01,"MOD_CRUSH");
}
//Function Number: 31
func_12BEA(param_00,param_01,param_02)
{
if(isdefined(level.var_C81D))
{
self [[ level.var_C81D ]](param_00,param_01);
return;
}
if(param_00.sessionstate == "spectator")
{
return;
}
var_03 = self.var_12BEB;
var_04 = undefined;
if(isdefined(var_03))
{
var_03 = sortbydistance(var_03,param_00.origin);
}
else
{
var_03 = getnodesinradiussorted(param_00.origin,500,0,128,"path");
}
var_05 = (0,0,-100);
param_00 cancelmantle();
param_00 dontinterpolate();
var_06 = get_mover_ents(param_02);
var_07 = scripts\common\utility::array_combine(var_06,level.var_3CB5);
for(var_08 = 0;var_08 < var_03.size;var_08++)
{
if(var_08 == 3)
{
break;
}
var_09 = var_03[var_08];
var_0A = var_09.origin + (0,0,10);
var_0B = scripts\common\trace::func_48BC(0,1,1,1,1,1);
var_0C = scripts\common\trace::func_DCED(param_00 gettagorigin("tag_eye"),var_0A,var_07,var_0B);
if(isdefined(var_0C["hittype"]) && var_0C["hittype"] != "hittype_none")
{
continue;
}
if(!canspawn(var_0A))
{
continue;
}
if(positionwouldtelefrag(var_0A))
{
continue;
}
if(param_00 getstance() == "prone")
{
param_00 setstance("crouch");
}
param_00 setorigin(var_0A);
return;
}
if(!isdefined(param_01))
{
param_01 = 1;
}
if(param_01)
{
param_00 func_BCDE();
}
}
//Function Number: 32
get_mover_ents(param_00)
{
var_01 = [];
var_01[var_01.size] = param_00;
var_02 = param_00 getlinkedparent();
var_03 = param_00 getlinkedchildren(1);
if(isdefined(var_02))
{
var_01[var_01.size] = var_02;
}
if(isdefined(var_03))
{
foreach(var_05 in var_03)
{
var_01[var_01.size] = var_05;
}
}
return var_01;
}
//Function Number: 33
func_12BEE(param_00)
{
}
//Function Number: 34
func_BCDE()
{
scripts\mp\_utility::func_1417();
}
//Function Number: 35
func_D246(param_00)
{
self endon("death");
self endon("stop_player_pushed_kill");
for(;;)
{
self waittill("player_pushed",var_01,var_02);
if(isplayer(var_01) || isagent(var_01))
{
var_03 = length(var_02);
if(var_03 >= param_00)
{
func_12BED(var_01);
}
}
}
}
//Function Number: 36
func_11030()
{
self notify("stop_player_pushed_kill");
}
//Function Number: 37
func_EE38()
{
var_00 = self getlinkedparent();
for(var_01 = var_00;isdefined(var_01);var_01 = var_01 getlinkedparent())
{
var_00 = var_01;
}
return var_00;
}
//Function Number: 38
func_EE4B(param_00)
{
var_01 = param_00 func_EE38();
if(isdefined(var_01))
{
var_01.var_10E07 = var_01.origin;
}
self.var_10E06 = self getmovingplatformparent();
if(isdefined(self.var_10E06))
{
var_02 = self.var_10E06 func_EE38();
if(isdefined(var_02))
{
self.var_10E06 = var_02;
}
self.var_10E06.var_10E07 = self.var_10E06.origin;
}
}
//Function Number: 39
func_EE39(param_00)
{
if(!isdefined(param_00))
{
return 0;
}
return lengthsquared(param_00.origin - param_00.var_10E07) > 0.001;
}
//Function Number: 40
func_EE4E(param_00)
{
if(!isplayer(self))
{
return 1;
}
if(!isdefined(param_00))
{
return 0;
}
var_01 = param_00 func_EE38();
var_02 = self.var_10E06;
if(!isdefined(var_01) && !isdefined(var_02))
{
return 1;
}
if(isdefined(var_01) && isdefined(var_02) && var_01 == var_02)
{
return 1;
}
if(func_EE39(var_01))
{
return 0;
}
if(func_EE39(var_02))
{
return 0;
}
return 1;
}
//Function Number: 41
func_EE3E(param_00)
{
if(isplayer(param_00))
{
param_00 func_EE4B(self);
}
param_00 allowmovement(0);
param_00 allowjump(0);
}
//Function Number: 42
func_EE4D(param_00)
{
param_00 allowmovement(1);
param_00 allowjump(1);
}
//Function Number: 43
func_C13B()
{
var_00 = self getlinkedchildren(0);
if(!isdefined(var_00))
{
return;
}
foreach(var_02 in var_00)
{
if(isdefined(var_02.var_C000) && var_02.var_C000)
{
continue;
}
var_02 unlink();
var_02 notify("invalid_parent",self);
}
}
//Function Number: 44
func_D981(param_00,param_01)
{
if(isdefined(param_01) && isdefined(param_01.var_BFFF) && param_01.var_BFFF)
{
return;
}
if(isdefined(param_00.var_CF14))
{
playfx(scripts\common\utility::getfx("airdrop_crate_destroy"),self.origin);
}
if(isdefined(param_00.var_4E53))
{
param_00.var_AA33 = param_01;
self thread [[ param_00.var_4E53 ]](param_00);
return;
}
self delete();
}
//Function Number: 45
func_892E(param_00)
{
self notify("handle_moving_platform_touch");
self endon("handle_moving_platform_touch");
level endon("game_ended");
self endon("death");
self endon("stop_handling_moving_platforms");
if(isdefined(param_00.var_6371))
{
self endon(param_00.var_6371);
}
for(;;)
{
self waittill("touching_platform",var_01);
if(isdefined(param_00.var_13139) && param_00.var_13139)
{
if(!self istouching(var_01))
{
wait(0.05);
continue;
}
}
thread func_D981(param_00,var_01);
break;
}
}
//Function Number: 46
func_892D(param_00)
{
self notify("handle_moving_platform_invalid");
self endon("handle_moving_platform_invalid");
level endon("game_ended");
self endon("death");
self endon("stop_handling_moving_platforms");
if(isdefined(param_00.var_6371))
{
self endon(param_00.var_6371);
}
self waittill("invalid_parent",var_01);
if(isdefined(param_00.var_9B11))
{
self thread [[ param_00.var_9B11 ]](param_00);
return;
}
thread func_D981(param_00,var_01);
}
//Function Number: 47
func_892F(param_00)
{
self notify("handle_moving_platforms");
self endon("handle_moving_platforms");
level endon("game_ended");
self endon("death");
self endon("stop_handling_moving_platforms");
if(!isdefined(param_00))
{
param_00 = spawnstruct();
}
if(isdefined(param_00.var_6371))
{
self endon(param_00.var_6371);
}
if(isdefined(param_00.var_AD39))
{
var_01 = self getlinkedparent();
if(!isdefined(var_01) || var_01 != param_00.var_AD39)
{
self linkto(param_00.var_AD39);
}
}
thread func_892E(param_00);
thread func_892D(param_00);
}
//Function Number: 48
func_11001()
{
self notify("stop_handling_moving_platforms");
}
//Function Number: 49
func_BD3C(param_00)
{
}