/******************************************************************* * 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) { }