mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
936 lines
18 KiB
Plaintext
936 lines
18 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps/mp/_threatdetection.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 38
|
|
* Decompile Time: 599 ms
|
|
* Timestamp: 10/27/2023 1:49:28 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
init()
|
|
{
|
|
level._threatdetection = spawnstruct();
|
|
level._threatdetection.default_style = "stencil_outline";
|
|
level._threatdetection.activestyle = getdvar("threat_detection_highlight_style",level._threatdetection.default_style);
|
|
level thread onplayerconnect();
|
|
level thread watchagentspawn();
|
|
}
|
|
|
|
//Function Number: 2
|
|
changethreatstyle(param_00)
|
|
{
|
|
if(param_00 == level._threatdetection.activestyle)
|
|
{
|
|
return;
|
|
}
|
|
|
|
foreach(var_02 in level.players)
|
|
{
|
|
if(isdefined(var_02._threatdetection.mark_enemy_model))
|
|
{
|
|
var_02._threatdetection.mark_enemy_model delete();
|
|
}
|
|
|
|
if(isdefined(var_02._threatdetection.mark_friendly_model))
|
|
{
|
|
var_02._threatdetection.mark_friendly_model delete();
|
|
}
|
|
|
|
if(isdefined(var_02.mark_fx) && isdefined(var_02.mark_fx.fx_ent))
|
|
{
|
|
foreach(var_04 in var_02.mark_fx.fx_ent)
|
|
{
|
|
if(isdefined(var_04.enemymarker))
|
|
{
|
|
var_04.enemymarker delete();
|
|
}
|
|
|
|
if(isdefined(var_04.friendlymarker))
|
|
{
|
|
var_04.friendlymarker delete();
|
|
}
|
|
|
|
if(isdefined(var_04.enemylosmarker))
|
|
{
|
|
var_04.enemylosmarker delete();
|
|
}
|
|
|
|
if(isdefined(var_04.friendlylosmarker))
|
|
{
|
|
var_04.friendlylosmarker delete();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach(var_02 in level.players)
|
|
{
|
|
var_02 threat_init(param_00);
|
|
}
|
|
|
|
level._threatdetection.activestyle = param_00;
|
|
}
|
|
|
|
//Function Number: 3
|
|
getthreatstyle()
|
|
{
|
|
var_00 = getdvar("threat_detection_highlight_style",level._threatdetection.default_style);
|
|
if(var_00 != level._threatdetection.activestyle)
|
|
{
|
|
changethreatstyle(var_00);
|
|
}
|
|
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 4
|
|
onplayerconnect()
|
|
{
|
|
for(;;)
|
|
{
|
|
level waittill("connected",var_00);
|
|
var_00 thread onplayerspawned();
|
|
}
|
|
}
|
|
|
|
//Function Number: 5
|
|
watchagentspawn()
|
|
{
|
|
for(;;)
|
|
{
|
|
level waittill("spawned_agent",var_00);
|
|
var_00._threatdetection = spawnstruct();
|
|
var_00._threatdetection.showlist = [];
|
|
var_00 thread onagentspawned();
|
|
}
|
|
}
|
|
|
|
//Function Number: 6
|
|
onagentspawned()
|
|
{
|
|
self endon("death");
|
|
childthread monitorthreathighlight();
|
|
childthread cleanupondeath();
|
|
}
|
|
|
|
//Function Number: 7
|
|
onplayerspawned()
|
|
{
|
|
self endon("disconnect");
|
|
self._threatdetection = spawnstruct();
|
|
self._threatdetection.showlist = [];
|
|
self waittill("spawned_player");
|
|
childthread monitorthreathighlight();
|
|
childthread cleanupondeath();
|
|
childthread monitorthreathighlightnotification();
|
|
for(;;)
|
|
{
|
|
self waittill("spawned_player");
|
|
var_00 = getthreatstyle();
|
|
if(var_00 == "attached_glow")
|
|
{
|
|
visitfxent(::visitorrelink,::gethostilemarker,undefined);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 8
|
|
monitorthreathighlightnotification()
|
|
{
|
|
var_00 = newclienthudelem(self);
|
|
var_00.x = 0;
|
|
var_00.y = 0;
|
|
var_00.alignx = "left";
|
|
var_00.aligny = "top";
|
|
var_00.horzalign = "fullscreen";
|
|
var_00.vertalign = "fullscreen";
|
|
var_00 setshader("paint_overlay",640,480);
|
|
var_00.alpha = 0;
|
|
var_00.color = (0,0,0);
|
|
var_00.sort = -3;
|
|
var_00.hidden = 1;
|
|
var_01 = 0.5;
|
|
var_02 = 0.3;
|
|
for(;;)
|
|
{
|
|
if(self._threatdetection.showlist.size != 0)
|
|
{
|
|
if(var_00.hidden)
|
|
{
|
|
var_00.hidden = 0;
|
|
var_00 childthread threatnotificationoverlayflash(var_01,var_02);
|
|
}
|
|
}
|
|
else if(!var_00.hidden)
|
|
{
|
|
var_00.hidden = 1;
|
|
var_00 notify("stop_overlay_flash");
|
|
if(var_00.alpha > 0)
|
|
{
|
|
var_00 fadeovertime(var_02);
|
|
var_00.color = (0,0,0);
|
|
var_00.alpha = 0;
|
|
wait(var_02);
|
|
}
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 9
|
|
threatnotificationoverlayflash(param_00,param_01)
|
|
{
|
|
self endon("stop_overlay_flash");
|
|
self fadeovertime(param_00);
|
|
self.color = (1,1,1);
|
|
self.alpha = 1;
|
|
}
|
|
|
|
//Function Number: 10
|
|
debughelper()
|
|
{
|
|
for(;;)
|
|
{
|
|
var_00 = distance(self.origin,level.players[0].origin);
|
|
thread common_scripts\utility::draw_line_for_time(level.players[0].origin,self.origin,1,1,1,0.3);
|
|
if(isdefined(self._threatdetection.mark_enemy_model))
|
|
{
|
|
thread common_scripts\utility::draw_line_for_time(level.players[0].origin,self._threatdetection.mark_enemy_model.origin,1,1,1,0.3);
|
|
}
|
|
|
|
wait(0.3);
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
cleanupondeath()
|
|
{
|
|
self endon("disconnect");
|
|
for(;;)
|
|
{
|
|
self waittill("death");
|
|
removethreatevents();
|
|
}
|
|
}
|
|
|
|
//Function Number: 12
|
|
removethreatevents()
|
|
{
|
|
foreach(var_01 in level.players)
|
|
{
|
|
foreach(var_03 in var_01._threatdetection.showlist)
|
|
{
|
|
if(var_03.player == self)
|
|
{
|
|
var_03.endtime = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
var_06 = getthreatstyle();
|
|
if(var_06 == "attached_glow")
|
|
{
|
|
visitfxent(::visitorhideall,::gethostilemarker,undefined);
|
|
}
|
|
}
|
|
|
|
//Function Number: 13
|
|
detection_highlight_hud_effect_on(param_00,param_01,param_02)
|
|
{
|
|
var_03 = newclienthudelem(param_00);
|
|
if(isdefined(param_02) && param_02)
|
|
{
|
|
var_03.color = (0.1,0.0015,0.0015);
|
|
}
|
|
else
|
|
{
|
|
var_03.color = (1,0.015,0.015);
|
|
}
|
|
|
|
var_03.alpha = 1;
|
|
var_03 setradarhighlight(param_01);
|
|
return var_03;
|
|
}
|
|
|
|
//Function Number: 14
|
|
detection_highlight_hud_effect_off(param_00)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
param_00 destroy();
|
|
}
|
|
}
|
|
|
|
//Function Number: 15
|
|
detection_highlight_hud_effect(param_00,param_01,param_02,param_03)
|
|
{
|
|
var_04 = detection_highlight_hud_effect_on(param_00,param_01,param_02);
|
|
if(isdefined(param_03))
|
|
{
|
|
param_00 common_scripts\utility::waittill_notify_or_timeout(param_03,param_01);
|
|
}
|
|
else
|
|
{
|
|
wait(param_01);
|
|
}
|
|
|
|
detection_highlight_hud_effect_off(var_04);
|
|
}
|
|
|
|
//Function Number: 16
|
|
detection_grenade_hud_effect(param_00,param_01,param_02,param_03)
|
|
{
|
|
var_04 = newhudelem();
|
|
var_04.x = param_01[0];
|
|
var_04.y = param_01[1];
|
|
var_04.z = param_01[2];
|
|
var_04.color = (getdvarfloat("scr_paintexplosionred"),getdvarfloat("scr_paintexplosiongreen"),getdvarfloat("scr_paintexplosionblue"));
|
|
var_04.alpha = getdvarfloat("scr_paintexplosionalpha");
|
|
var_05 = getdvarint("paintexplosionwidth");
|
|
var_04 setradarping(int(param_03 + var_05 / 2),int(var_05),param_02 + 0.05);
|
|
wait(param_02);
|
|
if(isdefined(var_04))
|
|
{
|
|
var_04 destroy();
|
|
}
|
|
}
|
|
|
|
//Function Number: 17
|
|
exo_ping_hud_effect(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
var_05 = undefined;
|
|
if(isdefined(param_03))
|
|
{
|
|
var_05 = newclienthudelem(param_03);
|
|
}
|
|
else
|
|
{
|
|
var_05 = newhudelem();
|
|
}
|
|
|
|
var_05.x = param_00[0];
|
|
var_05.y = param_00[1];
|
|
var_05.z = param_00[2];
|
|
if(isdefined(param_04) && param_04)
|
|
{
|
|
var_05.color = (0.05,0.05,0.05);
|
|
}
|
|
else
|
|
{
|
|
var_05.color = (0.8,0.8,0.8);
|
|
}
|
|
|
|
var_05.alpha = 0.05;
|
|
var_06 = getdvarint("scr_exopingwidth",100);
|
|
var_05 setradarping(int(param_02),int(var_06),param_01 + 0.05);
|
|
wait(param_01);
|
|
if(isdefined(var_05))
|
|
{
|
|
var_05 destroy();
|
|
}
|
|
}
|
|
|
|
//Function Number: 18
|
|
addthreatevent(param_00,param_01,param_02,param_03,param_04,param_05)
|
|
{
|
|
if(!isalive(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_06 = gettime();
|
|
var_07 = var_06 + param_01 * 1000;
|
|
var_08 = var_07 - 9 * param_01 * 1000 / 10;
|
|
var_09 = getthreatstyle();
|
|
if(var_07 - var_08 < 250)
|
|
{
|
|
var_08 = 250 + var_06;
|
|
}
|
|
|
|
if(var_09 == "model")
|
|
{
|
|
var_08 = var_06;
|
|
}
|
|
else if(var_09 == "vfx_model")
|
|
{
|
|
var_08 = var_06;
|
|
}
|
|
else if(var_09 == "attached_glow")
|
|
{
|
|
var_08 = var_07;
|
|
}
|
|
else if(var_09 == "stencil_outline")
|
|
{
|
|
var_08 = var_07;
|
|
}
|
|
|
|
foreach(var_0B in param_00)
|
|
{
|
|
var_0C = 0;
|
|
foreach(var_0E in self._threatdetection.showlist)
|
|
{
|
|
if(var_0E.player == var_0B)
|
|
{
|
|
if(var_07 > var_0E.endtime)
|
|
{
|
|
var_0E.endtime = var_07;
|
|
var_0E.losendtime = var_08;
|
|
var_0E.eventtype = param_02;
|
|
}
|
|
|
|
var_0C = 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!var_0C)
|
|
{
|
|
var_10 = self._threatdetection.showlist.size;
|
|
self._threatdetection.showlist[var_10] = spawnstruct();
|
|
self._threatdetection.showlist[var_10].player = var_0B;
|
|
self._threatdetection.showlist[var_10].endtime = var_07;
|
|
self._threatdetection.showlist[var_10].losendtime = var_08;
|
|
self._threatdetection.showlist[var_10].eventtype = param_02;
|
|
if(isplayer(self))
|
|
{
|
|
if(!isdefined(param_05) || param_05)
|
|
{
|
|
self playlocalsound("flag_spawned");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(isplayer(self))
|
|
{
|
|
if(param_04)
|
|
{
|
|
visitfxent(::visitorupdatemarkerpos,::getfriendlymarker,undefined);
|
|
}
|
|
|
|
if(param_03)
|
|
{
|
|
visitfxent(::visitorupdatemarkerpos,::gethostilemarker,undefined);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 19
|
|
stopthreateventtype(param_00)
|
|
{
|
|
foreach(var_02 in self._threatdetection.showlist)
|
|
{
|
|
if(var_02.eventtype == param_00)
|
|
{
|
|
var_02.endtime = 0;
|
|
}
|
|
}
|
|
|
|
var_04 = getthreatstyle();
|
|
if(var_04 == "attached_glow")
|
|
{
|
|
visitfxent(::visitorhideall,::gethostilemarker,undefined);
|
|
}
|
|
}
|
|
|
|
//Function Number: 20
|
|
visitfxent(param_00,param_01,param_02)
|
|
{
|
|
var_03 = getthreatstyle();
|
|
if(var_03 == "glow")
|
|
{
|
|
foreach(var_06, var_05 in self.mark_fx.fx_ent)
|
|
{
|
|
[[ param_00 ]]([[ param_01 ]](var_05),param_02,level._threatdetection.fx_data[var_06][0]);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if(var_03 == "model")
|
|
{
|
|
[[ param_00 ]]([[ param_01 ]](self._threatdetection),param_02,"tag_origin");
|
|
return;
|
|
}
|
|
|
|
if(var_03 == "vfx_model")
|
|
{
|
|
[[ param_00 ]]([[ param_01 ]](self._threatdetection),param_02,"tag_origin");
|
|
return;
|
|
}
|
|
|
|
if(var_03 == "attached_glow")
|
|
{
|
|
foreach(var_06, var_05 in self.mark_fx.fx_ent)
|
|
{
|
|
[[ param_00 ]]([[ param_01 ]](var_05),param_02,level._threatdetection.fx_data[var_06][0]);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if(var_03 == "stencil_outline")
|
|
{
|
|
[[ param_00 ]](self,param_02,"tag_origin");
|
|
return;
|
|
}
|
|
}
|
|
|
|
//Function Number: 21
|
|
visitorrelink(param_00,param_01,param_02)
|
|
{
|
|
param_00 unlink();
|
|
param_00.origin = self gettagorigin(param_02);
|
|
param_00.angles = self gettagangles(param_02);
|
|
param_00 linkto(self,param_02);
|
|
wait(0.05);
|
|
playfxontag(param_00.fx,param_00,"tag_origin");
|
|
}
|
|
|
|
//Function Number: 22
|
|
visitorhideall(param_00,param_01,param_02)
|
|
{
|
|
var_03 = getthreatstyle();
|
|
if(var_03 == "attached_glow")
|
|
{
|
|
stopfxontag(param_00.fx,param_00,"tag_origin");
|
|
}
|
|
}
|
|
|
|
//Function Number: 23
|
|
visitorupdatemarkerpos(param_00,param_01,param_02)
|
|
{
|
|
var_03 = getthreatstyle();
|
|
param_00.origin = self gettagorigin(param_02);
|
|
param_00.angles = self gettagangles(param_02);
|
|
if(var_03 == "glow")
|
|
{
|
|
triggerfx(param_00);
|
|
return;
|
|
}
|
|
|
|
if(var_03 == "model")
|
|
{
|
|
var_04 = "mp_hud_" + self getstance() + "_char";
|
|
var_05 = param_00 != self._threatdetection.mark_friendly_model;
|
|
if(var_05)
|
|
{
|
|
var_04 = var_04 + "_hostile";
|
|
}
|
|
|
|
var_06 = param_00.model;
|
|
if(var_04 != var_06)
|
|
{
|
|
param_00 setmodel(var_04);
|
|
return;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if(var_03 == "vfx_model")
|
|
{
|
|
switch(self getstance())
|
|
{
|
|
case "prone":
|
|
break;
|
|
|
|
case "crouch":
|
|
break;
|
|
|
|
case "stand":
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 24
|
|
gethostilemarker(param_00)
|
|
{
|
|
var_01 = getthreatstyle();
|
|
if(var_01 == "glow")
|
|
{
|
|
return param_00.enemymarker;
|
|
}
|
|
|
|
if(var_01 == "model")
|
|
{
|
|
return param_00.mark_enemy_model;
|
|
}
|
|
|
|
if(var_01 == "vfx_model")
|
|
{
|
|
return param_00.mark_enemy_model;
|
|
}
|
|
|
|
if(var_01 == "attached_glow")
|
|
{
|
|
return param_00;
|
|
}
|
|
|
|
if(var_01 == "stencil_outline")
|
|
{
|
|
return param_00;
|
|
}
|
|
}
|
|
|
|
//Function Number: 25
|
|
getfriendlymarker(param_00)
|
|
{
|
|
var_01 = getthreatstyle();
|
|
if(var_01 == "glow")
|
|
{
|
|
return param_00.friendlymarker;
|
|
}
|
|
|
|
if(var_01 == "model")
|
|
{
|
|
return param_00.mark_friendly_model;
|
|
}
|
|
|
|
if(var_01 == "vfx_model")
|
|
{
|
|
return param_00.mark_friendly_model;
|
|
}
|
|
}
|
|
|
|
//Function Number: 26
|
|
getfriendlylosmarker(param_00)
|
|
{
|
|
var_01 = getthreatstyle();
|
|
if(var_01 == "glow")
|
|
{
|
|
return param_00.friendlylosmarker;
|
|
}
|
|
|
|
if(var_01 == "model")
|
|
{
|
|
return param_00.mark_friendly_model;
|
|
}
|
|
|
|
if(var_01 == "vfx_model")
|
|
{
|
|
return param_00.mark_friendly_model;
|
|
}
|
|
}
|
|
|
|
//Function Number: 27
|
|
gethostilelosmarker(param_00)
|
|
{
|
|
var_01 = getthreatstyle();
|
|
if(var_01 == "glow")
|
|
{
|
|
return param_00.enemylosmarker;
|
|
}
|
|
|
|
if(var_01 == "model")
|
|
{
|
|
return param_00.mark_enemy_model;
|
|
}
|
|
|
|
if(var_01 == "vfx_model")
|
|
{
|
|
return param_00.mark_enemy_model;
|
|
}
|
|
|
|
if(var_01 == "attached_glow")
|
|
{
|
|
return param_00;
|
|
}
|
|
|
|
if(var_01 == "stencil_outline")
|
|
{
|
|
return param_00;
|
|
}
|
|
}
|
|
|
|
//Function Number: 28
|
|
visithideallmarkers(param_00,param_01,param_02)
|
|
{
|
|
foreach(var_04 in param_00)
|
|
{
|
|
var_04 hide();
|
|
}
|
|
}
|
|
|
|
//Function Number: 29
|
|
accessallmarkers(param_00)
|
|
{
|
|
return [param_00.friendlymarker,param_00.enemymarker,param_00.friendlylosmarker,param_00.enemylosmarker];
|
|
}
|
|
|
|
//Function Number: 30
|
|
getnormaldirectionvec(param_00)
|
|
{
|
|
return vectornormalize(common_scripts\utility::flat_origin(param_00));
|
|
}
|
|
|
|
//Function Number: 31
|
|
monitorthreathighlight()
|
|
{
|
|
threat_init(getthreatstyle());
|
|
var_00 = (0,0,32);
|
|
var_01 = 0;
|
|
for(;;)
|
|
{
|
|
wait(0.05);
|
|
var_02 = gettime();
|
|
var_03 = 0;
|
|
foreach(var_05 in self._threatdetection.showlist)
|
|
{
|
|
if(var_05.endtime >= var_02)
|
|
{
|
|
if(!isdefined(var_05.player))
|
|
{
|
|
self._threatdetection.showlist = common_scripts\utility::array_remove(self._threatdetection.showlist,var_05);
|
|
continue;
|
|
}
|
|
|
|
var_05.los = 0;
|
|
var_06 = getnormaldirectionvec(anglestoforward(var_05.player.angles));
|
|
var_07 = getnormaldirectionvec(self.origin - var_05.player.origin);
|
|
var_08 = vectordot(var_07,var_06);
|
|
if(var_08 < 0)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(check_los(var_05))
|
|
{
|
|
var_05.los = 1;
|
|
if(var_05.losendtime <= var_02)
|
|
{
|
|
self._threatdetection.showlist = common_scripts\utility::array_remove(self._threatdetection.showlist,var_05);
|
|
continue;
|
|
}
|
|
}
|
|
|
|
var_03 = 1;
|
|
continue;
|
|
}
|
|
|
|
self._threatdetection.showlist = common_scripts\utility::array_remove(self._threatdetection.showlist,var_05);
|
|
}
|
|
|
|
var_0A = getthreatstyle();
|
|
if(!var_01)
|
|
{
|
|
var_01 = 1;
|
|
if(var_0A == "glow")
|
|
{
|
|
foreach(var_0C in self.mark_fx.fx_ent)
|
|
{
|
|
var_0C.enemymarker hide();
|
|
var_0C.friendlymarker hide();
|
|
var_0C.enemylosmarker hide();
|
|
var_0C.friendlylosmarker hide();
|
|
}
|
|
}
|
|
else if(var_0A == "model")
|
|
{
|
|
self._threatdetection.mark_friendly_model hide();
|
|
self._threatdetection.mark_enemy_model hide();
|
|
}
|
|
else if(var_0A == "vfx_model")
|
|
{
|
|
self._threatdetection.mark_friendly_model hide();
|
|
self._threatdetection.mark_enemy_model hide();
|
|
}
|
|
else if(var_0A == "attached_glow")
|
|
{
|
|
foreach(var_05 in self.mark_fx.fx_ent)
|
|
{
|
|
stopfxontag(var_05.fx,var_05,"tag_origin");
|
|
var_05 hide();
|
|
}
|
|
}
|
|
else if(var_0A == "stencil_outline")
|
|
{
|
|
self clearthreatdetected();
|
|
}
|
|
else
|
|
{
|
|
}
|
|
}
|
|
|
|
if(!var_03)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
foreach(var_10 in self._threatdetection.showlist)
|
|
{
|
|
if(var_10.los)
|
|
{
|
|
showthreat(var_10.player,::getfriendlylosmarker,::gethostilelosmarker,::visitorupdatelosmarker);
|
|
prepare_show_threat(var_01,var_0A,var_10.player);
|
|
var_01 = 0;
|
|
continue;
|
|
}
|
|
|
|
var_11 = bullettrace(var_10.player.origin + var_00,self.origin + var_00,1,var_10.player);
|
|
if(var_11["fraction"] < 1 && !isplayer(var_11["entity"]))
|
|
{
|
|
showthreat(var_10.player,::getfriendlymarker,::gethostilemarker,::visitorshowtoplayer);
|
|
prepare_show_threat(var_01,var_0A,var_10.player);
|
|
var_01 = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 32
|
|
prepare_show_threat(param_00,param_01,param_02)
|
|
{
|
|
if(param_00)
|
|
{
|
|
if(param_01 == "attached_glow")
|
|
{
|
|
showthreat(param_02,::getfriendlylosmarker,::gethostilelosmarker,::visitorretriggerfx);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 33
|
|
visitorretriggerfx(param_00,param_01,param_02)
|
|
{
|
|
playfxontag(param_00.fx,param_00,"tag_origin");
|
|
}
|
|
|
|
//Function Number: 34
|
|
check_los(param_00)
|
|
{
|
|
if(bullettracepassed(param_00.player geteye(),self geteye(),0,param_00.player))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 35
|
|
threat_init(param_00)
|
|
{
|
|
var_01 = spawnstruct();
|
|
var_01.fx_ent = [];
|
|
if(param_00 == "glow")
|
|
{
|
|
foreach(var_05, var_03 in level._threatdetection.fx_data)
|
|
{
|
|
var_04 = spawnstruct();
|
|
var_04.origin = self gettagorigin(var_03[0]);
|
|
var_04.angles = self gettagangles(var_03[0]);
|
|
var_04.enemymarker = spawnfx(var_03[1],var_04.origin);
|
|
triggerfx(var_04.enemymarker);
|
|
var_04.enemymarker hide();
|
|
var_04.enemylosmarker = spawnfx(var_03[3],var_04.origin);
|
|
triggerfx(var_04.enemylosmarker);
|
|
var_04.enemylosmarker hide();
|
|
var_04.friendlymarker = spawnfx(var_03[2],var_04.origin);
|
|
triggerfx(var_04.friendlymarker);
|
|
var_04.friendlymarker hide();
|
|
var_04.friendlylosmarker = spawnfx(var_03[4],var_04.origin);
|
|
triggerfx(var_04.friendlylosmarker);
|
|
var_04.friendlylosmarker hide();
|
|
var_01.fx_ent[var_05] = var_04;
|
|
}
|
|
|
|
self.mark_fx = var_01;
|
|
return;
|
|
}
|
|
|
|
if(param_00 == "model")
|
|
{
|
|
var_06 = spawn("script_model",self.origin);
|
|
var_06.origin = self.origin;
|
|
var_06.angles = self.angles;
|
|
var_06 setmodel(level._threatdetection.friendlymodel);
|
|
var_06 setcontents(0);
|
|
self._threatdetection.mark_friendly_model = var_06;
|
|
var_06 = spawn("script_model",self.origin);
|
|
var_06.origin = self.origin;
|
|
var_06.angles = self.angles;
|
|
var_06 setmodel(level._threatdetection.hostilemodel);
|
|
var_06 setcontents(0);
|
|
self._threatdetection.mark_enemy_model = var_06;
|
|
return;
|
|
}
|
|
|
|
if(param_00 == "vfx_model")
|
|
{
|
|
self._threatdetection.mark_friendly_model = spawnstruct();
|
|
self._threatdetection.mark_friendly_model = spawnfx(common_scripts\utility::getfx("threat_detect_model_stand"),self.origin,anglestoforward(self.angles),anglestoup(self.angles));
|
|
self._threatdetection.friendly_pose = "threat_detect_model_stand";
|
|
self._threatdetection.mark_enemy_model = spawnstruct();
|
|
self._threatdetection.mark_enemy_model = spawnfx(common_scripts\utility::getfx("threat_detect_model_stand_hostile"),self.origin,anglestoforward(self.angles),anglestoup(self.angles));
|
|
self._threatdetection.hostile_pose = "threat_detect_model_stand_hostile";
|
|
return;
|
|
}
|
|
|
|
if(param_00 == "attached_glow")
|
|
{
|
|
foreach(var_05, var_03 in level._threatdetection.fx_data)
|
|
{
|
|
var_08 = common_scripts\utility::spawn_tag_origin();
|
|
var_08 show();
|
|
var_08.origin = self gettagorigin(var_03[0]);
|
|
var_08.angles = self gettagangles(var_03[0]);
|
|
var_08 linkto(self,var_03[0]);
|
|
var_08.fx = var_03[1];
|
|
var_01.fx_ent[var_05] = var_08;
|
|
}
|
|
|
|
self.mark_fx = var_01;
|
|
return;
|
|
}
|
|
|
|
if(param_00 == "stencil_outline")
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
//Function Number: 36
|
|
visitorupdatelosmarker(param_00,param_01,param_02)
|
|
{
|
|
visitorupdatemarkerpos(param_00,param_01,param_02);
|
|
visitorshowtoplayer(param_00,param_01,param_02);
|
|
}
|
|
|
|
//Function Number: 37
|
|
visitorshowtoplayer(param_00,param_01,param_02)
|
|
{
|
|
var_03 = getthreatstyle();
|
|
if(var_03 == "stencil_outline")
|
|
{
|
|
param_00 threatdetectedtoplayer(param_01);
|
|
return;
|
|
}
|
|
|
|
param_00 showtoplayer(param_01);
|
|
}
|
|
|
|
//Function Number: 38
|
|
showthreat(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(param_00 == self)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_04 = param_02;
|
|
if((level.teambased || level.multiteambased) && param_00.team == self.team)
|
|
{
|
|
var_04 = param_01;
|
|
}
|
|
else if(param_00 == self)
|
|
{
|
|
var_04 = param_01;
|
|
}
|
|
|
|
visitfxent(param_03,var_04,param_00);
|
|
} |