Files
IL-GSC/MW3/PC/SP/maps/_so_survival_code.gsc
InfinityLoader d559c1d414 Added MW3 Scripts
2023-10-27 03:47:01 -04:00

1300 lines
26 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\_so_survival_code.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: PC
* Function Count: 47
* Decompile Time: 818 ms
* Timestamp: 10/27/2023 2:21:05 AM
*******************************************************************/
//Function Number: 1
remotemissile_infantry_kills_dialogue_setup()
{
level.scr_radio["inv_hqr_fivenotenkills"] = "inv_hqr_fivenotenkills";
level.scr_radio["inv_hqr_tenmoreconfirms"] = "inv_hqr_tenmoreconfirms";
level.scr_radio["inv_hqr_tenpluskia"] = "inv_hqr_tenpluskia";
level.scr_radio["inv_hqr_fiveplus"] = "inv_hqr_fiveplus";
level.scr_radio["inv_hqr_another5plus"] = "inv_hqr_another5plus";
level.scr_radio["inv_hqr_morethanfive"] = "inv_hqr_morethanfive";
level.scr_radio["inv_hqr_yougotem"] = "inv_hqr_yougotem";
level.scr_radio["inv_hqr_goodkills"] = "inv_hqr_goodkills";
level.scr_radio["inv_hqr_directhit"] = "inv_hqr_directhit";
level.scr_radio["inv_hqr_hesdown"] = "inv_hqr_hesdown";
}
//Function Number: 2
remotemissile_infantry_kills_dialogue()
{
var_00 = [];
var_01 = 0;
var_02 = [];
var_03 = 0;
var_04 = 0;
var_05 = 0;
level.enemies_killed = 0;
var_06 = 0;
for(;;)
{
level waittill("inv_hqr_tenpluskia",var_7B[var_00.size],"inv_hqr_tenmoreconfirms",var_7B[var_7B.size],"inv_hqr_fivenotenkills",var_7B[var_7B.size],"inv_hqr_fiveplus",var_7B[var_02.size],"inv_hqr_another5plus",var_7B[var_02.size],"inv_hqr_morethanfive",var_7B[var_02.size],"remote_missile_exploded");
var_07 = level.enemies_killed;
wait 0.1;
if(isdefined(level.uav_killstats["ai"]))
{
var_06 = level.uav_killstats["ai"];
}
if(var_06 == 0)
{
continue;
}
wait 0.5;
if(isdefined(level.uav_is_destroyed))
{
return;
}
if(var_06 == 1)
{
if(var_04)
{
maps\_utility::radio_dialogue("inv_hqr_yougotem");
var_04 = 0;
}
else
{
maps\_utility::radio_dialogue("inv_hqr_hesdown");
var_04 = 1;
}
continue;
}
if(var_06 >= 10)
{
maps\_utility::radio_dialogue(var_7B[var_01]);
var_01++;
if(var_01 >= var_7B.size)
{
var_01 = 0;
}
continue;
}
if(var_06 >= 5)
{
maps\_utility::radio_dialogue(var_02[var_03]);
var_03++;
if(var_03 >= var_02.size)
{
var_03 = 0;
}
continue;
}
else
{
if(var_05)
{
maps\_utility::radio_dialogue("inv_hqr_goodkills");
var_05 = 0;
}
else
{
maps\_utility::radio_dialogue("inv_hqr_directhit");
var_05 = 1;
}
continue;
}
}
}
//Function Number: 3
remotemissile_uav()
{
level.uav = maps\_vehicle::spawn_vehicle_from_targetname("remotemissile_uav");
var_00 = getvehiclenode("vnode_remotemissile_uav_start","targetname");
level.uav attachpath(var_00);
maps\_vehicle::gopath(level.uav);
level.uav playloopsound("uav_engine_loop");
level.uavrig = spawn("script_model",level.uav.origin);
level.uavrig setmodel("tag_origin");
level thread uav_rig_aiming();
}
//Function Number: 4
uav_rig_aiming()
{
level.uav endon("death");
var_00 = common_scripts\utility::getstructarray("uav_focus_point","targetname");
for(;;)
{
var_01 = level.player.origin;
if(isdefined(level.uav_user))
{
var_01 = level.uav_user.origin;
}
var_02 = maps\_utility::getclosest(var_01,var_00);
var_03 = var_02.origin;
var_04 = vectortoangles(var_03 - level.uav.origin);
level.uavrig moveto(level.uav.origin,0.1,0,0);
level.uavrig rotateto(var_04,0.1,0,0);
wait 0.05;
}
}
//Function Number: 5
ai_remote_missile_fof_outline()
{
if(!isai(self))
{
return;
}
if(isdefined(self.ridingvehicle))
{
self endon("death");
self waittill("jumpedout");
}
maps\_remotemissile_utility::setup_remote_missile_target();
}
//Function Number: 6
splash_notify_message(param_00)
{
self endon("death");
if(!isdefined(param_00.type))
{
param_00.type = "";
}
var_01 = param_00.duration;
var_02 = 0.15;
self.doingnotify = 1;
self.splashtitle transitionreset();
self.splashdesc transitionreset();
self.var_3E17 transitionreset();
self.splashdesc2 transitionreset();
self.splashdesc3 transitionreset();
self.var_3E1A transitionreset();
self.splashhint transitionreset();
self.splashicon transitionreset();
wait 0.05;
setsaveddvar("cg_drawBreathHint","0");
var_03 = [];
self.splashtitle.label = var_01.title;
if(isdefined(var_01.title_set_value))
{
self.splashtitle setvalue(var_01.title_set_value);
}
self.splashtitle setpulsefx(int(5 * var_02),int(var_02 * 1000),1000);
var_04 = self.splashtitle.font;
if(isdefined(var_01.title_font))
{
self.splashtitle.font = var_01.title_font;
}
var_05 = var_01.title;
if(isdefined(var_01.title_label))
{
self.splashtitle.label = var_01.title_label;
}
var_06 = self.splashtitle.basefontscale;
if(isdefined(var_01.title_basefontscale))
{
self.splashtitle.basefontscale = var_01.title_basefontscale;
}
var_07 = self.splashtitle.glowcolor;
var_08 = self.splashtitle.glowalpha;
if(isdefined(var_01.title_glowcolor))
{
self.splashtitle.glowcolor = var_01.title_glowcolor;
self.splashtitle.glowalpha = 1;
}
var_09 = self.splashtitle.color;
if(isdefined(var_01.title_color))
{
var_09 = var_01.title_color;
self.splashtitle.color = var_01.title_color;
}
var_0A = self.splashicon.shader;
if(isdefined(var_01.icon) && var_01.icon != "")
{
var_7B[var_7B.size] = self.splashicon;
self.splashicon.shader = var_01.icon;
}
var_0B = undefined;
var_0C = undefined;
if(isdefined(var_01.var_189B) && !isstring(var_01.var_189B) || var_01.var_189B != "")
{
var_7B[var_7B.size] = self.splashdesc;
self.splashdesc.label = var_01.var_189B;
if(isdefined(var_01.desc_set_value))
{
self.splashdesc setvalue(var_01.desc_set_value);
}
var_0B = self.splashdesc.font;
if(isdefined(var_01.desc_font))
{
self.splashdesc.font = var_01.desc_font;
}
var_0C = self.splashdesc.basefontscale;
if(isdefined(var_01.desc_basefontscale))
{
self.splashdesc.basefontscale = var_01.desc_basefontscale;
}
if(isdefined(var_01.desc1) && !isstring(var_01.desc1) || var_01.desc1 != "")
{
var_7B[var_7B.size] = self.var_3E17;
self.var_3E17.label = var_01.desc1;
self.var_3E17.font = self.splashdesc.font;
if(isdefined(var_01.desc1_set_value))
{
self.var_3E17 setvalue(var_01.desc1_set_value);
}
}
if(isdefined(var_01.desc2) && !isstring(var_01.desc2) || var_01.desc2 != "")
{
var_7B[var_7B.size] = self.splashdesc2;
self.splashdesc2.label = var_01.desc2;
self.splashdesc2.font = self.splashdesc.font;
if(isdefined(var_01.desc2_set_value))
{
self.splashdesc2 setvalue(var_01.desc2_set_value);
}
}
if(isdefined(var_01.desc3) && !isstring(var_01.desc3) || var_01.desc3 != "")
{
var_7B[var_7B.size] = self.splashdesc3;
self.splashdesc3.label = var_01.desc3;
self.splashdesc3.font = self.splashdesc.font;
if(isdefined(var_01.desc3_set_value))
{
self.splashdesc3 setvalue(var_01.desc3_set_value);
}
}
if(isdefined(var_01.desc4) && !isstring(var_01.desc4) || var_01.desc4 != "")
{
var_7B[var_7B.size] = self.var_3E1A;
self.var_3E1A.label = var_01.desc4;
self.var_3E1A.font = self.splashdesc.font;
if(isdefined(var_01.desc4_set_value))
{
self.var_3E1A setvalue(var_01.desc4_set_value);
}
}
}
if(isdefined(var_01.hint) && !isstring(var_01.hint) || var_01.hint != "")
{
var_7B[var_7B.size] = self.splashhint;
self.splashhint.label = var_01.hint;
if(isdefined(var_01.hintlabel))
{
self.splashhint.label = var_01.hintlabel;
}
}
if(isdefined(var_01.fadein))
{
foreach(var_0E in var_7B)
{
var_0E transitionfadein(var_03);
}
}
if(isdefined(var_01.zoomin))
{
foreach(var_0E in var_7B)
{
var_0E transitionzoomin(var_03);
}
}
if(isdefined(var_01.slidein))
{
foreach(var_0E in var_7B)
{
var_0E transitionslidein(var_03,var_01.slidein);
}
}
if(isdefined(var_01.pulsefxin))
{
foreach(var_0E in var_7B)
{
var_0E transitionpulsefxin(var_03,var_02);
}
}
if(isdefined(var_01.sound))
{
if(isdefined(var_01.playsoundlocally))
{
self playlocalsound(var_01.sound);
}
else
{
foreach(var_17 in level.players)
{
var_17 playlocalsound(var_01.sound);
}
}
}
if(isdefined(var_01.abortflag))
{
maps\_utility::ent_flag_wait_or_timeout(var_01.abortflag,var_02);
}
else
{
wait var_02;
}
if(isdefined(var_01.fadeout))
{
foreach(var_0E in var_7B)
{
var_0E transitionfadeout(var_03);
}
}
if(isdefined(var_01.var_3E34))
{
foreach(var_0E in var_7B)
{
var_0E transitionzoomout(var_03);
}
}
if(isdefined(var_01.slideout))
{
foreach(var_0E in var_7B)
{
var_0E transitionslideout(var_03,var_01.slideout);
}
}
wait var_03;
setsaveddvar("cg_drawBreathHint","1");
self.splashtitle.font = var_04;
self.splashtitle.label = var_05;
self.splashtitle.basefontscale = var_06;
self.splashtitle.glowcolor = var_07;
self.splashtitle.glowalpha = var_08;
self.splashtitle.color = var_09;
self.splashicon.shader = var_0A;
if(isdefined(var_0B))
{
self.splashdesc.font = var_0B;
}
if(isdefined(var_0C))
{
self.splashdesc.basefontscale = var_0C;
}
self.doingnotify = 0;
}
//Function Number: 7
player_reward_splash_init()
{
var_00 = 15;
if(issplitscreen())
{
var_01 = "objective";
var_02 = 2.25;
if(getdvarint("survival_chaos") == 1)
{
if(self == level.player)
{
var_03 = 10;
}
else
{
var_03 = 37;
}
}
else
{
var_03 = 10;
}
var_04 = 0;
var_05 = "objective";
var_06 = 1;
var_07 = 57;
var_08 = 0;
var_09 = "small";
var_0A = 1.4;
var_0B = 72;
var_0C = 0;
var_0D = 24;
var_0E = 5;
var_0F = 0;
var_10 = "TOP";
var_11 = "BOTTOM";
}
else
{
var_01 = "objective";
var_02 = 2.5;
var_03 = 10;
var_04 = 0;
var_05 = "objective";
var_06 = 1.1;
var_07 = 42;
var_08 = 0;
var_09 = "small";
var_0A = 1.5;
var_0B = 300;
var_0C = 0;
var_0D = 42;
var_0E = 250;
var_0F = 0;
var_10 = "TOP";
var_11 = "BOTTOM";
}
var_12 = createfontstring_mp(var_01,var_02);
var_12 maps\_hud_util::setpoint(var_10,undefined,var_04,var_03);
var_12.glowcolor = (0.3,0.6,0.3);
var_12.glowalpha = 1;
var_12.hidewheninmenu = 1;
var_12.archived = 0;
var_12.alpha = 0;
self.splashtitle = var_12;
var_12 = undefined;
var_12 = createfontstring_mp(var_05,var_06);
var_12 maps\_hud_util::setparent(self.splashtitle);
var_12 maps\_hud_util::setpoint(var_10,var_11,var_08,var_07);
var_12.glowcolor = (0,0,0);
var_12.glowalpha = 0;
var_12.hidewheninmenu = 1;
var_12.archived = 0;
var_12.alpha = 0;
self.splashdesc = var_12;
var_12 = undefined;
var_12 = createfontstring_mp(var_05,var_06);
var_12 maps\_hud_util::setparent(self.splashtitle);
var_12 maps\_hud_util::setpoint(var_10,var_11,var_08,var_07 + 1 * var_00);
var_12.glowcolor = (0,0,0);
var_12.glowalpha = 0;
var_12.hidewheninmenu = 1;
var_12.archived = 0;
var_12.alpha = 0;
self.var_3E17 = var_12;
var_12 = undefined;
var_12 = createfontstring_mp(var_05,var_06);
var_12 maps\_hud_util::setparent(self.splashtitle);
var_12 maps\_hud_util::setpoint(var_10,var_11,var_08,var_07 + 2 * var_00);
var_12.glowcolor = (0,0,0);
var_12.glowalpha = 0;
var_12.hidewheninmenu = 1;
var_12.archived = 0;
var_12.alpha = 0;
self.splashdesc2 = var_12;
var_12 = undefined;
var_12 = createfontstring_mp(var_05,var_06);
var_12 maps\_hud_util::setparent(self.splashtitle);
var_12 maps\_hud_util::setpoint(var_10,var_11,var_08,var_07 + 3 * var_00);
var_12.glowcolor = (0,0,0);
var_12.glowalpha = 0;
var_12.hidewheninmenu = 1;
var_12.archived = 0;
var_12.alpha = 0;
self.splashdesc3 = var_12;
var_12 = undefined;
var_12 = createfontstring_mp(var_05,var_06);
var_12 maps\_hud_util::setparent(self.splashtitle);
var_12 maps\_hud_util::setpoint(var_10,var_11,var_08,var_07 + 4 * var_00);
var_12.glowcolor = (0,0,0);
var_12.glowalpha = 0;
var_12.hidewheninmenu = 1;
var_12.archived = 0;
var_12.alpha = 0;
self.var_3E1A = var_12;
var_12 = undefined;
var_12 = createfontstring_mp("hudbig",0.75);
var_12 maps\_hud_util::setparent(self.splashdesc);
var_12 maps\_hud_util::setpoint(var_10,var_11,var_0C,var_0B);
var_12.glowcolor = (0,0,0);
var_12.glowalpha = 0;
var_12.hidewheninmenu = 1;
var_12.archived = 0;
var_12.alpha = 0;
var_12.color = (0.75,1,0.75);
self.splashhint = var_12;
var_12 = undefined;
var_12 = createicon_mp("white",var_0D,var_0D);
var_12 maps\_hud_util::setparent(self.splashtitle);
var_12 maps\_sp_airdrop::setpoint(var_10,var_11,var_0F,var_0E);
var_12.hidewheninmenu = 1;
var_12.archived = 0;
var_12.alpha = 0;
self.splashicon = var_12;
}
//Function Number: 8
createfontstring_mp(param_00,param_01)
{
var_02 = newclienthudelem(self);
var_02.hidden = 0;
var_02.elemtype = "font";
var_02.font = param_00;
var_02.fontscale = param_01;
var_02.basefontscale = var_02.fontscale;
var_02.x = 0;
var_02.y = 0;
var_02.width = 0;
var_02.height = int(level.fontheight * var_02.fontscale);
var_02.xoffset = 0;
var_02.yoffset = 0;
var_02.children = [];
var_02 maps\_hud_util::setparent(level.uiparent);
return var_02;
}
//Function Number: 9
createicon_mp(param_00,param_01,param_02)
{
var_03 = newclienthudelem(self);
var_03.elemtype = "icon";
var_03.x = 0;
var_03.y = 0;
var_03.width = param_01;
var_03.height = param_02;
var_03.basewidth = var_03.width;
var_03.baseheight = var_03.height;
var_03.xoffset = 0;
var_03.yoffset = 0;
var_03.children = [];
var_03 maps\_hud_util::setparent(level.uiparent);
var_03.hidden = 0;
if(isdefined(param_00))
{
var_03 setshader(param_00,param_01,param_02);
var_03.shader = param_00;
}
return var_03;
}
//Function Number: 10
waittill_players_ready_for_splash(param_00)
{
var_01 = gettime() + milliseconds(param_00);
for(;;)
{
if(gettime() >= var_01)
{
break;
}
var_02 = 0;
foreach(var_04 in level.players)
{
if(var_04.doingnotify || var_04.using_uav)
{
var_02 = 1;
break;
}
}
if(var_02)
{
wait 0.1;
continue;
}
break;
}
}
//Function Number: 11
transitionreset()
{
self settext("");
self.x = self.xoffset;
self.y = self.yoffset;
if(self.elemtype == "font")
{
self.fontscale = self.basefontscale;
self.label = &"";
}
else if(self.elemtype == "icon")
{
self setshader(self.shader,self.width,self.height);
}
self.alpha = 0;
}
//Function Number: 12
transitionzoomin(param_00)
{
switch(self.elemtype)
{
case "timer":
case "font":
self.fontscale = 6.3;
self changefontscaleovertime(param_00);
self.fontscale = self.basefontscale;
break;
case "icon":
self setshader(self.shader,self.width * 6,self.height * 6);
self scaleovertime(param_00,self.width,self.height);
break;
}
}
//Function Number: 13
transitionpulsefxin(param_00,param_01)
{
var_02 = int(param_00) * 1000;
var_03 = int(param_01) * 1000;
switch(self.elemtype)
{
case "timer":
case "font":
self setpulsefx(var_02 + 250,var_03 + var_02,var_02 + 250);
break;
default:
break;
}
}
//Function Number: 14
transitionslidein(param_00,param_01)
{
if(!isdefined(param_01))
{
param_01 = "left";
}
switch(param_01)
{
case "left":
self.x = self.x + 1000;
break;
case "right":
self.x = self.x - 1000;
break;
case "up":
self.y = self.y - 1000;
break;
case "down":
self.y = self.y + 1000;
break;
}
self moveovertime(param_00);
self.x = self.xoffset;
self.y = self.yoffset;
}
//Function Number: 15
transitionslideout(param_00,param_01)
{
if(!isdefined(param_01))
{
param_01 = "left";
}
var_02 = self.xoffset;
var_03 = self.yoffset;
switch(param_01)
{
case "left":
var_02 = var_02 + 1000;
break;
case "right":
var_02 = var_02 - 1000;
break;
case "up":
var_03 = var_03 - 1000;
break;
case "down":
var_03 = var_03 + 1000;
break;
}
self.alpha = 1;
self moveovertime(param_00);
self.x = var_02;
self.y = var_03;
}
//Function Number: 16
transitionzoomout(param_00)
{
switch(self.elemtype)
{
case "timer":
case "font":
self changefontscaleovertime(param_00);
self.fontscale = 6.3;
break;
case "icon":
self scaleovertime(param_00,self.width * 6,self.height * 6);
break;
}
}
//Function Number: 17
transitionfadein(param_00)
{
self fadeovertime(param_00);
if(isdefined(self.maxalpha))
{
self.alpha = self.maxalpha;
return;
}
self.alpha = 1;
}
//Function Number: 18
transitionfadeout(param_00)
{
self fadeovertime(0.15);
self.alpha = 0;
}
//Function Number: 19
get_spawners_by_classname(param_00)
{
var_01 = getentarray(param_00,"classname");
var_02 = [];
foreach(var_04 in var_01)
{
if(isspawner(var_04))
{
var_02[var_02.size] = var_04;
}
}
return var_02;
}
//Function Number: 20
get_spawners_by_targetname(param_00)
{
var_01 = getspawnerarray();
var_02 = [];
foreach(var_04 in var_01)
{
if(isdefined(var_04.targetname) && var_04.targetname == param_00)
{
var_02[var_02.size] = var_04;
}
}
return var_02;
}
//Function Number: 21
get_furthest_from_these(param_00,param_01,param_02)
{
param_02 = common_scripts\utility::ter_op(isdefined(param_02),param_02,1);
param_02 = max(1,param_02);
while(param_00.size > param_02)
{
foreach(var_04 in param_01)
{
var_05 = maps\_utility::getclosest(var_04.origin,param_00);
if(param_00.size > param_02)
{
param_00 = common_scripts\utility::array_remove(param_00,var_05);
continue;
}
var_05 = param_00[0];
thread maps\_squad_enemies::draw_debug_marker(var_05.origin,(1,1,1));
break;
}
}
return param_00[randomint(param_00.size)];
}
//Function Number: 22
throw_grenade_at_player(param_00)
{
self endon("death");
param_00 endon("stopped camping");
if(common_scripts\utility::cointoss())
{
self.grenadeweapon = "flash_grenade";
}
else
{
self.grenadeweapon = "fraggrenade";
}
self.grenadeammo = 2;
self.script_forcegrenade = 1;
wait 8;
self.script_forcegrenade = 0;
self.grenadeweapon = "fraggrenade";
}
//Function Number: 23
clear_from_boss_array_when_dead()
{
self waittill("death");
var_00 = [];
foreach(var_02 in level.bosses)
{
if(isdefined(var_02) && !isdefined(self) || self != var_02)
{
var_00[var_00.size] = var_02;
}
}
level.bosses = var_00;
}
//Function Number: 24
clear_from_special_ai_array_when_dead()
{
self waittill("death");
var_00 = [];
foreach(var_02 in level.special_ai)
{
if(isalive(var_02))
{
var_00[var_00.size] = var_02;
}
}
level.special_ai = var_00;
}
//Function Number: 25
was_headshot()
{
if(isdefined(self.died_of_headshot) && self.died_of_headshot)
{
return 1;
}
if(!isdefined(self.damagelocation))
{
return 0;
}
return self.damagelocation == "helmet" || self.damagelocation == "head" || self.damagelocation == "neck";
}
//Function Number: 26
chopper_spawn_from_targetname_and_drive(param_00,param_01,param_02)
{
var_03 = "passed start struct without targetname: " + param_00;
param_02.in_use = 1;
var_04 = chopper_spawn_from_targetname(param_00,param_01);
var_04.loc_current = param_02;
var_04 thread maps\_vehicle::vehicle_paths(param_02);
return var_04;
}
//Function Number: 27
chopper_spawn_from_targetname(param_00,param_01)
{
var_02 = getent(param_00,"targetname");
var_03 = maps\_so_survival_ai::get_ai_health(param_00);
if(isdefined(var_03))
{
var_02.script_startinghealth = var_03;
}
while(isdefined(var_02.vehicle_spawned_thisframe))
{
wait 0.05;
}
if(isdefined(param_01))
{
var_02.origin = param_01;
}
var_04 = maps\_vehicle::spawn_vehicle_from_targetname(param_00);
return var_04;
}
//Function Number: 28
chopper_spawn_pilot_from_targetname(param_00,param_01)
{
var_02 = getspawnerarray();
var_03 = undefined;
foreach(var_03 in var_02)
{
if(isdefined(var_03.targetname) && var_03.targetname == param_00)
{
break;
}
}
var_06 = chopper_spawn_passenger(var_03,param_01,1);
var_06.health = 9999;
return var_06;
}
//Function Number: 29
chopper_spawn_passenger(param_00,param_01,param_02)
{
var_03 = undefined;
for(;;)
{
param_00.count = 1;
if(isdefined(param_02) && param_02)
{
var_03 = maps\_utility::dronespawn(param_00);
break;
}
else
{
var_03 = param_00 maps\_utility::spawn_ai(1);
if(!maps\_utility::spawn_failed(var_03))
{
break;
}
}
wait 0.5;
}
if(isdefined(param_01))
{
var_03.forced_startingposition = param_01;
}
maps\_utility::guy_enter_vehicle(var_03);
return var_03;
}
//Function Number: 30
chopper_drop_smoke_at_unloading()
{
self endon("death");
self waittill("unloading");
var_00 = self.origin - vectornormalize(anglestoforward(self.angles)) * 145;
var_01 = maps\_utility::groundpos(var_00);
magicgrenademanual("smoke_grenade_fast",var_01,(0,0,-1),0);
}
//Function Number: 31
chopper_wait_for_cloest_open_path_start(param_00,param_01,param_02)
{
var_03 = undefined;
for(;;)
{
var_03 = chopper_closest_open_path_start(param_00,param_01,param_02);
if(isdefined(var_03))
{
break;
}
wait 0.25;
}
return var_03;
}
//Function Number: 32
chopper_closest_open_path_start(param_00,param_01,param_02)
{
var_03 = common_scripts\utility::getstructarray(param_01,"targetname");
var_04 = undefined;
var_05 = undefined;
var_06 = undefined;
foreach(var_08 in var_03)
{
if(isdefined(var_08.in_use))
{
continue;
}
var_09 = var_08;
switch(param_02)
{
case "script_unload":
while(!isdefined(var_09.script_unload))
{
var_09 = common_scripts\utility::getstruct(var_09.target,"targetname");
}
if(!isdefined(var_09.script_unload))
{
break;
}
break;
case "script_stopnode":
while(!isdefined(var_09.script_stopnode))
{
var_09 = common_scripts\utility::getstruct(var_09.target,"targetname");
}
if(!isdefined(var_09.script_stopnode))
{
break;
}
break;
default:
break;
}
if(!isdefined(var_06))
{
var_06 = var_09;
var_05 = distance2d(param_00,var_09.origin);
var_04 = var_08;
continue;
}
var_0A = distance2d(param_00,var_09.origin);
if(var_0A < var_05)
{
var_06 = var_09;
var_05 = distance2d(param_00,var_06.origin);
var_04 = var_08;
}
}
return var_04;
}
//Function Number: 33
mp_ents_cleanup()
{
var_00 = getentarray();
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
if(isdefined(var_00[var_01].script_gameobjectname))
{
var_00[var_01] delete();
}
}
}
//Function Number: 34
precache_loadout_item(param_00)
{
if(isdefined(param_00) && param_00 != "")
{
precacheitem(param_00);
}
}
//Function Number: 35
int_capped(param_00,param_01,param_02)
{
return int(max(param_01,min(param_02,param_00)));
}
//Function Number: 36
float_capped(param_00,param_01,param_02)
{
return max(param_01,min(param_02,param_00));
}
//Function Number: 37
delete_on_load()
{
var_00 = getentarray("delete","targetname");
foreach(var_02 in var_00)
{
var_02 delete();
}
}
//Function Number: 38
milliseconds(param_00)
{
return param_00 * 1000;
}
//Function Number: 39
seconds(param_00)
{
return param_00 / 1000;
}
//Function Number: 40
random_player_origin()
{
return level.players[randomint(level.players.size)].origin;
}
//Function Number: 41
highest_player_rank()
{
var_00 = -1;
foreach(var_02 in level.players)
{
var_03 = var_02 maps\_rank::getrank();
if(var_03 > var_00)
{
var_00 = var_03;
}
}
return var_00;
}
//Function Number: 42
ent_linked_delete()
{
self endon("death");
self unlink();
wait 0.05;
if(isdefined(self))
{
self delete();
}
}
//Function Number: 43
so_survival_kill_ai(param_00,param_01,param_02)
{
if(isdefined(param_00))
{
if(isdefined(param_01) && isdefined(param_02))
{
self notify("death",param_00,param_01,param_02);
self kill();
return;
}
self kill(param_00.origin,param_00);
return;
}
self kill();
}
//Function Number: 44
break_glass()
{
var_00 = common_scripts\utility::getstructarray("struct_break_glass","targetname");
foreach(var_02 in var_00)
{
glassradiusdamage(var_02.origin,64,100,99);
}
}
//Function Number: 45
so_survival_validate_entities()
{
var_00 = getentarray("armory_script_brushmodel","targetname");
foreach(var_02 in var_00)
{
var_02 notsolid();
}
var_04 = (0,0,0);
var_05 = 60;
var_06 = 60;
var_07 = [];
var_7B = common_scripts\utility::array_combine(var_7B,common_scripts\utility::getstructarray("so_claymore_loc","targetname"));
var_7B = common_scripts\utility::array_combine(var_7B,common_scripts\utility::getstructarray("leader","script_noteworthy"));
var_7B = common_scripts\utility::array_combine(var_7B,common_scripts\utility::getstructarray("follower","script_noteworthy"));
foreach(var_09 in var_7B)
{
var_09 so_survival_validate_entity(var_05,var_06,var_07);
}
foreach(var_03 in var_01)
{
var_03 solid();
}
wait 2;
if(isdefined(level.debug_survival_error_msgs) && level.debug_survival_error_msgs.size)
{
foreach(var_0E in level.debug_survival_error_msgs)
{
}
}
}
//Function Number: 46
so_survival_validate_entity(param_00,param_01,param_02)
{
if(!isdefined(level.debug_survival_error_msgs))
{
level.debug_survival_error_msgs = [];
}
if(!isdefined(level.debug_survival_error_locs))
{
level.debug_survival_error_locs = [];
}
var_03 = self.origin + param_00 + (0,0,param_01);
var_04 = self.origin + param_00;
var_05 = physicstrace(var_03,var_04);
if(distance(var_05,var_04) > 0.1)
{
level.debug_survival_error_msgs[level.debug_survival_error_msgs.size] = "Error: Survival Entity may be in solid at: " + self.origin;
level.debug_survival_error_locs[level.debug_survival_error_locs.size] = self.origin;
return;
}
var_03 = self.origin + param_00;
var_04 = self.origin + param_00 - (0,0,param_02);
var_05 = physicstrace(var_03,var_04);
if(distance(var_05,var_04) < 0.1)
{
level.debug_survival_error_msgs[level.debug_survival_error_msgs.size] = "Error: Survival Entity floating or under floor: " + self.origin;
level.debug_survival_error_locs[level.debug_survival_error_locs.size] = self.origin;
}
}
//Function Number: 47
so_survival_display_entity_error_3d()
{
if(!isdefined(level.debug_survival_error_locs) || !level.debug_survival_error_locs.size)
{
return;
}
level endon("special_op_terminated");
for(;;)
{
foreach(var_01 in level.debug_survival_error_locs)
{
}
wait 10;
}
}