mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-10 18:27:57 -05:00
2266 lines
54 KiB
Plaintext
2266 lines
54 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps\mp\_vl_firingrange.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 82
|
|
* Decompile Time: 1347 ms
|
|
* Timestamp: 10/27/2023 1:46:48 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
init_firingrange()
|
|
{
|
|
var_00 = spawnstruct();
|
|
var_00.fr_start = getent("firingrange_start","targetname");
|
|
var_00.alltargetsarray = firing_range_setup_targets();
|
|
var_00.allenvarray = firing_range_setup_env();
|
|
var_00.transitionmeshes = [];
|
|
var_00.transitionmeshesrev = [];
|
|
var_00.alltriggerarray = firing_range_setup_triggers();
|
|
var_00.alltargetmin = firing_range_setup_min_range();
|
|
var_00.alltargetmax = firing_range_setup_max_range();
|
|
var_00.allboothdisplays = firing_range_setup_booth_displays();
|
|
var_00.alltargetlogicarray = firing_range_setup_target_logic();
|
|
var_00.allfloorpannels = firing_range_setup_floor_panels();
|
|
var_00.allvfx_struct = firing_range_setup_env_vfx();
|
|
var_00.all3duiscreens = firing_range_setup_3dui_screens();
|
|
var_00.audio_buzzer_struct = common_scripts\utility::getstruct("audio_buzzer_org","targetname");
|
|
var_00.soundents = [];
|
|
var_00.last_target = undefined;
|
|
var_00.target_move_dist = 32;
|
|
var_00.target_units_per_second = 256;
|
|
var_00.pressedup = 0;
|
|
var_00.presseddown = 0;
|
|
var_00.roundnumber = undefined;
|
|
var_00.minpoint = undefined;
|
|
var_00.minpointmodpos = undefined;
|
|
var_00.maxpoint = undefined;
|
|
var_00.buttontimertotal = 0.55;
|
|
var_00.buttontimer = 0;
|
|
var_00.gracedisance = 24;
|
|
var_00.damagedone = 0;
|
|
var_00.rangeinmeters = 0;
|
|
var_00.shotsfired = 0;
|
|
var_00.shotshit = 0;
|
|
var_00.percent = 0;
|
|
var_00.shouldupdateluadisplay = 0;
|
|
var_00.round_target_unit_per_second = 176;
|
|
var_00.time = 0;
|
|
var_00.groupdevider = 5;
|
|
var_00.roundactive = 0;
|
|
var_00.isshuttingdown = 0;
|
|
var_00.vfxtargetspawn = loadfx("vfx/props/holo_target_red_spawn_in");
|
|
var_00.vfxtargetspawnout = loadfx("vfx/props/holo_target_red_spawn_out");
|
|
var_00.vfxholoedge = loadfx("vfx/beam/firing_range_edge_glow");
|
|
common_scripts\utility::array_thread(var_00.alltriggerarray,::trigger_setup);
|
|
level.target_center_off = (1.3,0,25);
|
|
level.target_radius = 12;
|
|
level.hit_off = 18;
|
|
level.firingrange = var_00;
|
|
}
|
|
|
|
//Function Number: 2
|
|
firing_range_setup_floor_panels()
|
|
{
|
|
var_00 = getentarray("holo_emitter_floor","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02.og_position = var_02.origin;
|
|
var_02.up_position = var_02.origin + (0,0,4);
|
|
}
|
|
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 3
|
|
firing_range_setup_3dui_screens()
|
|
{
|
|
var_00 = getentarray("display_3dui_mesh","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 hide();
|
|
}
|
|
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 4
|
|
firing_range_setup_min_range()
|
|
{
|
|
var_00 = common_scripts\utility::getstructarray("target_track_min","targetname");
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 5
|
|
firing_range_setup_max_range()
|
|
{
|
|
var_00 = common_scripts\utility::getstructarray("target_track_max","targetname");
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 6
|
|
firing_range_setup_booth_displays()
|
|
{
|
|
var_00 = common_scripts\utility::getstructarray("booth_display_01","targetname");
|
|
var_01 = common_scripts\utility::getstructarray("booth_display_02","targetname");
|
|
var_02 = common_scripts\utility::getstructarray("booth_display_03","targetname");
|
|
var_03 = common_scripts\utility::getstructarray("booth_display_04","targetname");
|
|
var_04 = common_scripts\utility::getstructarray("booth_display_05","targetname");
|
|
var_05 = common_scripts\utility::getstructarray("booth_display_06","targetname");
|
|
var_06 = [var_00,var_01,var_02,var_03,var_04,var_05];
|
|
return var_06;
|
|
}
|
|
|
|
//Function Number: 7
|
|
trigger_setup()
|
|
{
|
|
var_00 = self;
|
|
var_00 thread common_scripts\_dynamic_world::triggertouchthink(::player_enter_round_trigger,::player_leave_round_trigger);
|
|
}
|
|
|
|
//Function Number: 8
|
|
player_enter_round_trigger(param_00)
|
|
{
|
|
level endon("shutdown_hologram");
|
|
while(level.firingrange.isshuttingdown == 1)
|
|
{
|
|
wait(0.1);
|
|
}
|
|
|
|
var_01 = self;
|
|
if(!isdefined(param_00.script_index))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_02 = int(param_00.script_index);
|
|
level.firingrange.roundnumber = var_02;
|
|
if(!isdefined(level.firingrange.allenvarray[var_02]))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_01 thread startround(var_02);
|
|
}
|
|
|
|
//Function Number: 9
|
|
player_leave_round_trigger(param_00)
|
|
{
|
|
var_01 = self;
|
|
if(!isdefined(param_00.script_index))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_02 = int(param_00.script_index);
|
|
level.firingrange.roundnumber = var_02;
|
|
if(!isdefined(level.firingrange.allenvarray[var_02]))
|
|
{
|
|
return;
|
|
}
|
|
|
|
thread shutdownround(var_02,var_01);
|
|
}
|
|
|
|
//Function Number: 10
|
|
snd_play_linked_firingrange(param_00,param_01,param_02,param_03)
|
|
{
|
|
var_04 = spawn("script_origin",param_01.origin);
|
|
var_04 vehicle_jetbikesethoverforcescale(param_01);
|
|
var_04 thread maps\mp\_audio::sndx_play_linked_internal(param_00,param_01,param_02,param_03);
|
|
if(!isdefined(level.firingrange.soundents))
|
|
{
|
|
level.firingrange.soundents = [];
|
|
}
|
|
else
|
|
{
|
|
level.firingrange.soundents = common_scripts\utility::add_to_array(level.firingrange.soundents,var_04);
|
|
}
|
|
|
|
return var_04;
|
|
}
|
|
|
|
//Function Number: 11
|
|
targetspreadshooting(param_00)
|
|
{
|
|
level endon("shutdown_hologram");
|
|
var_01 = self;
|
|
var_02 = level.firingrange.alltargetsarray[param_00][0][0];
|
|
var_02.alive = 1;
|
|
thread maps\mp\_audio::snd_play_in_space("mp_shooting_range_panels_bell",level.firingrange.audio_buzzer_struct.origin);
|
|
var_02 spawntarget();
|
|
var_02 show();
|
|
var_02 solid();
|
|
var_02 setcandamage(1);
|
|
var_02 setdamagecallbackon(1);
|
|
var_02.damagecallback = ::monitordamagecallback;
|
|
var_02.health = 9999;
|
|
var_02.maxhealth = 9999;
|
|
var_02 thermaldrawenable();
|
|
foreach(var_04 in level.firingrange.alltargetmin)
|
|
{
|
|
if(var_04.script_index == level.firingrange.roundnumber)
|
|
{
|
|
level.firingrange.minpoint = var_04;
|
|
break;
|
|
}
|
|
}
|
|
|
|
foreach(var_04 in level.firingrange.alltargetmax)
|
|
{
|
|
if(var_04.script_index == level.firingrange.roundnumber)
|
|
{
|
|
level.firingrange.maxpoint = var_04;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!isdefined(level.firingrange.minpoint) || !isdefined(level.firingrange.maxpoint))
|
|
{
|
|
thread shutdownround(param_00,var_01);
|
|
return;
|
|
}
|
|
|
|
level.firingrange.minpointmodpos = level.firingrange.minpoint.origin + anglestoforward(level.firingrange.minpoint.angles) * -64;
|
|
var_02 thread monitordistance(var_01,var_02,level.firingrange.minpoint);
|
|
thread monitorshotsfired(var_01);
|
|
thread monitorgrenades(var_01);
|
|
thread monitorhitpercent(var_01);
|
|
thread displayboothholo(var_01,param_00);
|
|
var_01 thread notifytracker(var_02);
|
|
}
|
|
|
|
//Function Number: 12
|
|
monitordistance(param_00,param_01,param_02)
|
|
{
|
|
param_00 endon("disconnect");
|
|
level endon("shutdown_hologram");
|
|
self endon("death");
|
|
var_03 = 0.0254;
|
|
for(;;)
|
|
{
|
|
if(!isdefined(param_01) || !isdefined(param_02))
|
|
{
|
|
level.firingrange.rangeinmeters = 0;
|
|
param_00 setclientomnvar("ui_vlobby_round_distance",level.firingrange.rangeinmeters);
|
|
}
|
|
else
|
|
{
|
|
var_04 = distance2d(param_01.origin,param_02.origin);
|
|
var_05 = int(maps\mp\_utility::rounddecimalplaces(var_03 * var_04,0));
|
|
if(var_05 != level.firingrange.rangeinmeters)
|
|
{
|
|
if(var_05 > 100)
|
|
{
|
|
var_05 = 100;
|
|
}
|
|
else if(var_05 < 0)
|
|
{
|
|
var_05 = 0;
|
|
}
|
|
|
|
level.firingrange.rangeinmeters = var_05;
|
|
param_00 setclientomnvar("ui_vlobby_round_distance",level.firingrange.rangeinmeters);
|
|
}
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 13
|
|
notifytracker(param_00)
|
|
{
|
|
self endon("disconnect");
|
|
level endon("shutdown_hologram");
|
|
self notifyonplayercommand("toggled_up_pressed","+actionslot 1");
|
|
self notifyonplayercommand("toggled_up_released","-actionslot 1");
|
|
self notifyonplayercommand("toggled_down_pressed","+actionslot 2");
|
|
self notifyonplayercommand("toggled_down_released","-actionslot 2");
|
|
thread monitoruppressed(param_00);
|
|
thread monitorupreleased(param_00);
|
|
thread monitordownpressed(param_00);
|
|
thread monitordownreleased(param_00);
|
|
thread movestopper(param_00,self);
|
|
}
|
|
|
|
//Function Number: 14
|
|
monitoruppressed(param_00)
|
|
{
|
|
self endon("disconnect");
|
|
level endon("shutdown_hologram");
|
|
for(;;)
|
|
{
|
|
self waittill("toggled_up_pressed");
|
|
level.firingrange.buttontimer = level.firingrange.buttontimertotal;
|
|
if(level.firingrange.pressedup == 0)
|
|
{
|
|
level.firingrange.pressedup = 1;
|
|
level.firingrange.presseddown = 0;
|
|
thread movelogic(level.firingrange.maxpoint.origin,param_00,self);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 15
|
|
monitorupreleased(param_00)
|
|
{
|
|
self endon("disconnect");
|
|
level endon("shutdown_hologram");
|
|
for(;;)
|
|
{
|
|
self waittill("toggled_up_released");
|
|
var_01 = distance2d(level.firingrange.maxpoint.origin,param_00.origin);
|
|
if(var_01 <= 1)
|
|
{
|
|
param_00 moveto(param_00.origin,0.05);
|
|
}
|
|
else
|
|
{
|
|
var_02 = param_00.origin + anglestoforward(level.firingrange.alltargetmax[0].angles) * level.firingrange.gracedisance * -1;
|
|
var_01 = distance2d(var_02,param_00.origin);
|
|
var_03 = var_01 / level.firingrange.target_units_per_second;
|
|
if(var_03 < 0.05)
|
|
{
|
|
var_03 = 0.05;
|
|
}
|
|
|
|
level.firingrange.buttontimer = var_03 + 0.05;
|
|
thread movelogic(var_02,param_00,self);
|
|
}
|
|
|
|
param_00 waittill("movedone");
|
|
level.firingrange.pressedup = 0;
|
|
}
|
|
}
|
|
|
|
//Function Number: 16
|
|
monitordownpressed(param_00)
|
|
{
|
|
self endon("disconnect");
|
|
level endon("shutdown_hologram");
|
|
for(;;)
|
|
{
|
|
self waittill("toggled_down_pressed");
|
|
level.firingrange.buttontimer = level.firingrange.buttontimertotal;
|
|
if(level.firingrange.presseddown == 0)
|
|
{
|
|
level.firingrange.presseddown = 1;
|
|
level.firingrange.pressedup = 0;
|
|
thread movelogic(level.firingrange.minpointmodpos,param_00,self);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 17
|
|
monitordownreleased(param_00)
|
|
{
|
|
self endon("disconnect");
|
|
level endon("shutdown_hologram");
|
|
for(;;)
|
|
{
|
|
self waittill("toggled_down_released");
|
|
var_01 = distance2d(level.firingrange.minpointmodpos,param_00.origin);
|
|
if(var_01 <= 1)
|
|
{
|
|
param_00 moveto(param_00.origin,0.05);
|
|
}
|
|
else
|
|
{
|
|
var_02 = param_00.origin + anglestoforward(level.firingrange.alltargetmax[0].angles) * level.firingrange.gracedisance;
|
|
var_01 = distance2d(var_02,param_00.origin);
|
|
var_03 = var_01 / level.firingrange.target_units_per_second;
|
|
if(var_03 < 0.05)
|
|
{
|
|
var_03 = 0.05;
|
|
}
|
|
|
|
level.firingrange.buttontimer = var_03 + 0.05;
|
|
thread movelogic(var_02,param_00,self);
|
|
}
|
|
|
|
param_00 waittill("movedone");
|
|
level.firingrange.presseddown = 0;
|
|
}
|
|
}
|
|
|
|
//Function Number: 18
|
|
movelogic(param_00,param_01,param_02)
|
|
{
|
|
var_03 = distance2d(param_00,param_01.origin);
|
|
if(var_03 <= 1)
|
|
{
|
|
param_01 notify("movedone");
|
|
return;
|
|
}
|
|
|
|
var_04 = var_03 / level.firingrange.target_units_per_second;
|
|
if(var_04 < 0.05)
|
|
{
|
|
var_04 = 0.05;
|
|
}
|
|
|
|
param_01 moveto(param_00,var_04);
|
|
}
|
|
|
|
//Function Number: 19
|
|
movestopper(param_00,param_01)
|
|
{
|
|
param_01 endon("disconnect");
|
|
level endon("shutdown_hologram");
|
|
for(;;)
|
|
{
|
|
wait(0.05);
|
|
if(level.firingrange.presseddown == 1 || level.firingrange.pressedup == 1)
|
|
{
|
|
if(level.firingrange.buttontimer > 0)
|
|
{
|
|
level.firingrange.buttontimer = level.firingrange.buttontimer - 0.05;
|
|
continue;
|
|
}
|
|
|
|
param_00 moveto(param_00.origin,0.05);
|
|
level.firingrange.presseddown = 0;
|
|
level.firingrange.pressedup = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 20
|
|
monitordamage(param_00)
|
|
{
|
|
param_00 endon("disconnect");
|
|
level endon("shutdown_hologram");
|
|
var_01 = undefined;
|
|
var_02 = param_00;
|
|
var_03 = undefined;
|
|
var_04 = undefined;
|
|
var_05 = undefined;
|
|
var_06 = undefined;
|
|
var_07 = undefined;
|
|
var_08 = undefined;
|
|
var_09 = undefined;
|
|
for(;;)
|
|
{
|
|
self waittill("damage",var_01,var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09,var_0A);
|
|
if(level.firingrange.roundnumber == 7)
|
|
{
|
|
self.health = self.maxhealth;
|
|
}
|
|
|
|
var_0B = self gettagorigin("tag_chest");
|
|
thread maps\mp\_audio::snd_play_in_space("mp_shooting_range_red_hit",var_0B);
|
|
var_0C = getmodifier(var_0A,var_08,param_00);
|
|
var_01 = maps\mp\_utility::rounddecimalplaces(float(var_01) * var_0C,0);
|
|
var_01 = int(var_01);
|
|
if(var_01 > 999)
|
|
{
|
|
var_01 = 999;
|
|
}
|
|
|
|
if(var_01 < 0)
|
|
{
|
|
var_01 = 0;
|
|
}
|
|
|
|
level.firingrange.damagedone = var_01;
|
|
var_0D = level.firingrange.shotshit + 1;
|
|
if(var_0D > 9999)
|
|
{
|
|
level.firingrange.shotshit = 0;
|
|
}
|
|
else if(var_0D < 0)
|
|
{
|
|
level.firingrange.shotshit = 0;
|
|
}
|
|
else
|
|
{
|
|
level.firingrange.shotshit = var_0D;
|
|
}
|
|
|
|
level.firingrange.shouldupdateluadisplay = 1;
|
|
}
|
|
}
|
|
|
|
//Function Number: 21
|
|
monitordamagecallback(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
|
|
{
|
|
if(!isdefined(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(level.firingrange.roundnumber == 7)
|
|
{
|
|
self.health = self.maxhealth;
|
|
}
|
|
|
|
var_0C = self gettagorigin("tag_chest");
|
|
thread maps\mp\_audio::snd_play_in_space("mp_shooting_range_red_hit",var_0C);
|
|
var_0D = 1;
|
|
if(isdefined(param_01))
|
|
{
|
|
var_0D = getmodifier(param_05,param_0B,param_01);
|
|
}
|
|
|
|
param_02 = maps\mp\_utility::rounddecimalplaces(float(param_02) * var_0D,0);
|
|
param_02 = int(param_02);
|
|
if(param_02 > 999)
|
|
{
|
|
param_02 = 999;
|
|
}
|
|
|
|
if(param_02 < 0)
|
|
{
|
|
param_02 = 0;
|
|
}
|
|
|
|
level.firingrange.damagedone = param_02;
|
|
if(isdefined(param_01))
|
|
{
|
|
if(isdefined(param_00) && param_00 != param_01)
|
|
{
|
|
if(!isdefined(param_00.damage_counted))
|
|
{
|
|
param_00.damage_counted = 1;
|
|
var_0E = level.firingrange.shotshit + 1;
|
|
if(var_0E > 9999)
|
|
{
|
|
level.firingrange.shotshit = 0;
|
|
}
|
|
else if(var_0E < 0)
|
|
{
|
|
level.firingrange.shotshit = 0;
|
|
}
|
|
else
|
|
{
|
|
level.firingrange.shotshit = var_0E;
|
|
}
|
|
|
|
level.firingrange.shouldupdateluadisplay = 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
param_01 thread countdamagingshots();
|
|
}
|
|
}
|
|
|
|
level.firingrange.shouldupdateluadisplay = 1;
|
|
}
|
|
|
|
//Function Number: 22
|
|
countdamagingshots()
|
|
{
|
|
level endon("shutdown_hologram");
|
|
self endon("disconnect");
|
|
if(!isdefined(self.damagingshot))
|
|
{
|
|
self.damagingshot = 1;
|
|
return;
|
|
}
|
|
|
|
self.damagingshot++;
|
|
}
|
|
|
|
//Function Number: 23
|
|
getmodifier(param_00,param_01,param_02)
|
|
{
|
|
var_03 = "none";
|
|
var_04 = 1;
|
|
var_05 = strtok(param_00,"_");
|
|
var_06 = var_05[0] + "_" + var_05[1];
|
|
if(param_00 != "specialty_null" && param_00 != "none" && param_00 != "iw5_combatknife_mp")
|
|
{
|
|
if(maps\mp\gametypes\_class::isvalidprimary(var_06) || maps\mp\gametypes\_class::isvalidsecondary(var_06,0))
|
|
{
|
|
if(param_01 == "tag_head")
|
|
{
|
|
var_03 = "head";
|
|
}
|
|
else if(param_01 == "tag_chest")
|
|
{
|
|
var_03 = "torso_upper";
|
|
}
|
|
else if(param_01 == "tag_arms")
|
|
{
|
|
var_03 = "right_arm_upper";
|
|
}
|
|
else if(param_01 == "tag_legs")
|
|
{
|
|
var_03 = "torso_lower";
|
|
}
|
|
else
|
|
{
|
|
var_03 = "none";
|
|
}
|
|
|
|
var_04 = param_02 getweapondamagelocationmultiplier(var_06 + "_mp",var_03);
|
|
return var_04;
|
|
}
|
|
|
|
return var_04;
|
|
}
|
|
|
|
return var_04;
|
|
}
|
|
|
|
//Function Number: 24
|
|
waitforweaponfired()
|
|
{
|
|
self endon("disconnect");
|
|
self endon("reload");
|
|
self endon("weapon_change");
|
|
var_00 = 0;
|
|
var_01 = self getcurrentweaponclipammo("right");
|
|
var_02 = self getcurrentweaponclipammo("left");
|
|
self waittill("weapon_fired");
|
|
var_00 = 1;
|
|
var_03 = self getcurrentweaponclipammo("right");
|
|
var_04 = self getcurrentweaponclipammo("left");
|
|
var_05 = var_01 - var_03 + var_02 - var_04;
|
|
if(var_05 > 0)
|
|
{
|
|
var_00 = var_05;
|
|
}
|
|
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 25
|
|
monitorshotsfired(param_00)
|
|
{
|
|
param_00 endon("disconnect");
|
|
level endon("shutdown_hologram");
|
|
for(;;)
|
|
{
|
|
param_00.damagingshot = 0;
|
|
var_01 = param_00 waitforweaponfired();
|
|
if(isdefined(var_01))
|
|
{
|
|
var_02 = level.firingrange.shotsfired + var_01;
|
|
if(var_02 > 9999)
|
|
{
|
|
level.firingrange.shotsfired = 0;
|
|
level.firingrange.shotshit = 0;
|
|
level.firingrange.percent = 0;
|
|
param_00 setclientomnvar("ui_vlobby_round_hits",level.firingrange.shotshit);
|
|
param_00 setclientomnvar("ui_vlobby_round_fired",level.firingrange.shotsfired);
|
|
param_00 setclientomnvar("ui_vlobby_round_accuracy",level.firingrange.percent);
|
|
}
|
|
else if(var_02 < 0)
|
|
{
|
|
level.firingrange.shotsfired = 0;
|
|
level.firingrange.shotshit = 0;
|
|
level.firingrange.percent = 0;
|
|
param_00 setclientomnvar("ui_vlobby_round_hits",level.firingrange.shotshit);
|
|
param_00 setclientomnvar("ui_vlobby_round_fired",level.firingrange.shotsfired);
|
|
param_00 setclientomnvar("ui_vlobby_round_accuracy",level.firingrange.percent);
|
|
}
|
|
else
|
|
{
|
|
level.firingrange.shouldupdateluadisplay = 1;
|
|
level.firingrange.shotsfired = var_02;
|
|
}
|
|
|
|
if(isdefined(param_00.damagingshot))
|
|
{
|
|
var_03 = param_00.damagingshot;
|
|
if(var_01 < param_00.damagingshot)
|
|
{
|
|
var_03 = var_01;
|
|
}
|
|
|
|
var_04 = level.firingrange.shotshit + var_03;
|
|
if(var_04 > 9999)
|
|
{
|
|
level.firingrange.shotshit = 0;
|
|
}
|
|
else if(var_04 < 0)
|
|
{
|
|
level.firingrange.shotshit = 0;
|
|
}
|
|
else
|
|
{
|
|
level.firingrange.shotshit = var_04;
|
|
}
|
|
|
|
param_00.damagingshot = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 26
|
|
monitorgrenades(param_00)
|
|
{
|
|
param_00 endon("disconnect");
|
|
level endon("shutdown_hologram");
|
|
for(;;)
|
|
{
|
|
param_00 waittill("grenade_fire",var_01);
|
|
if(isdefined(var_01))
|
|
{
|
|
waittillframeend;
|
|
if(isdefined(var_01.recall) && var_01.recall)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_02 = level.firingrange.shotsfired + 1;
|
|
if(var_02 > 9999)
|
|
{
|
|
level.firingrange.shotsfired = 0;
|
|
level.firingrange.shotshit = 0;
|
|
level.firingrange.percent = 0;
|
|
param_00 setclientomnvar("ui_vlobby_round_hits",level.firingrange.shotshit);
|
|
param_00 setclientomnvar("ui_vlobby_round_fired",level.firingrange.shotsfired);
|
|
param_00 setclientomnvar("ui_vlobby_round_accuracy",level.firingrange.percent);
|
|
}
|
|
else if(var_02 < 0)
|
|
{
|
|
level.firingrange.shotsfired = 0;
|
|
level.firingrange.shotshit = 0;
|
|
level.firingrange.percent = 0;
|
|
param_00 setclientomnvar("ui_vlobby_round_hits",level.firingrange.shotshit);
|
|
param_00 setclientomnvar("ui_vlobby_round_fired",level.firingrange.shotsfired);
|
|
param_00 setclientomnvar("ui_vlobby_round_accuracy",level.firingrange.percent);
|
|
}
|
|
else
|
|
{
|
|
level.firingrange.shouldupdateluadisplay = 1;
|
|
level.firingrange.shotsfired = var_02;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 27
|
|
monitorhitpercent(param_00)
|
|
{
|
|
param_00 endon("disconnect");
|
|
level endon("shutdown_hologram");
|
|
for(;;)
|
|
{
|
|
if(level.firingrange.shotsfired > 0)
|
|
{
|
|
var_01 = level.firingrange.shotshit / level.firingrange.shotsfired * 100;
|
|
var_01 = maps\mp\_utility::rounddecimalplaces(var_01,0);
|
|
if(var_01 != level.firingrange.percent)
|
|
{
|
|
if(var_01 > 999)
|
|
{
|
|
var_01 = 999;
|
|
}
|
|
else if(var_01 < 0)
|
|
{
|
|
var_01 = 0;
|
|
}
|
|
|
|
level.firingrange.percent = int(var_01);
|
|
level.firingrange.shouldupdateluadisplay = 1;
|
|
}
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 28
|
|
displayboothholo(param_00,param_01)
|
|
{
|
|
param_00 endon("disconnect");
|
|
level endon("shutdown_hologram");
|
|
var_02 = finddisplay(level.firingrange.all3duiscreens,param_01);
|
|
if(isdefined(var_02))
|
|
{
|
|
var_02 show();
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
if(level.firingrange.shouldupdateluadisplay == 1)
|
|
{
|
|
param_00 setclientomnvar("ui_vlobby_round_damage",level.firingrange.damagedone);
|
|
param_00 setclientomnvar("ui_vlobby_round_hits",level.firingrange.shotshit);
|
|
param_00 setclientomnvar("ui_vlobby_round_fired",level.firingrange.shotsfired);
|
|
param_00 setclientomnvar("ui_vlobby_round_accuracy",level.firingrange.percent);
|
|
level.firingrange.shouldupdateluadisplay = 0;
|
|
}
|
|
|
|
wait(0.2);
|
|
}
|
|
}
|
|
|
|
//Function Number: 29
|
|
finddisplay(param_00,param_01)
|
|
{
|
|
foreach(var_03 in param_00)
|
|
{
|
|
if(isdefined(var_03.script_index) && var_03.script_index == param_01)
|
|
{
|
|
return var_03;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 30
|
|
startround(param_00)
|
|
{
|
|
level endon("shutdown_hologram");
|
|
level notify("start_round");
|
|
level.firingrange.damagedone = 0;
|
|
level.firingrange.rangeinmeters = 0;
|
|
level.firingrange.time = 0;
|
|
level.firingrange.roundactive = 1;
|
|
level.firingrange.shouldupdateluadisplay = 1;
|
|
self setclientomnvar("ui_vlobby_round_distance",level.firingrange.rangeinmeters);
|
|
self setclientomnvar("ui_vlobby_round_damage",level.firingrange.damagedone);
|
|
self setclientomnvar("ui_vlobby_round_hits",level.firingrange.shotshit);
|
|
self setclientomnvar("ui_vlobby_round_fired",level.firingrange.shotsfired);
|
|
self setclientomnvar("ui_vlobby_round_accuracy",level.firingrange.percent);
|
|
foreach(var_02 in level.firingrange.alltargetsarray[param_00])
|
|
{
|
|
foreach(var_04 in var_02)
|
|
{
|
|
var_04.origin = var_04.original_position;
|
|
var_04.angles = var_04.original_orientation;
|
|
}
|
|
}
|
|
|
|
foreach(var_08 in level.firingrange.allfloorpannels)
|
|
{
|
|
var_08 thread movefloorpanelup();
|
|
}
|
|
|
|
thread snd_play_linked_firingrange("mp_shooting_range_panels_up",self);
|
|
thread lerp_spot_intensity("lt_shootingrange_bounce",0.25,0.01);
|
|
if(level.nextgen)
|
|
{
|
|
thread lerp_spot_intensity_array("lt_shootingrange",0.25,0.01);
|
|
thread lerp_spot_intensity("lt_hologram_blue",0.25,3000);
|
|
}
|
|
else
|
|
{
|
|
thread lerp_spot_intensity("lt_hologram_blue",0.25,60000);
|
|
}
|
|
|
|
wait(0.5);
|
|
var_0A = 0;
|
|
foreach(var_0C in level.firingrange.allvfx_struct[param_00])
|
|
{
|
|
if(level.nextgen)
|
|
{
|
|
thread particlespawn(level.firingrange.vfxholoedge,var_0C.origin,var_0C.angles,undefined,1);
|
|
}
|
|
else if(var_0A % 2 == 0)
|
|
{
|
|
thread particlespawn(level.firingrange.vfxholoedge,var_0C.origin,var_0C.angles,undefined,1);
|
|
}
|
|
|
|
var_0A++;
|
|
}
|
|
|
|
if(level.nextgen)
|
|
{
|
|
showtransition(param_00);
|
|
wait(0.1);
|
|
flickertransmeshes(level.firingrange.transitionmeshes);
|
|
wait(0.1);
|
|
flickertransmeshes(level.firingrange.transitionmeshes);
|
|
wait(0.1);
|
|
showtransitionrev(level.firingrange.transitionmeshes);
|
|
hidetransitionmeshes();
|
|
wait(0.4);
|
|
showroundmeshmesh(param_00);
|
|
wait(0.1);
|
|
deletetransrevmeshes();
|
|
}
|
|
else
|
|
{
|
|
var_0E = showtransition_cg(param_00);
|
|
wait(0.1);
|
|
flickertransmeshes(level.firingrange.allenvarray[param_00]);
|
|
flickertransmeshes(level.firingrange.allenvarray[param_00]);
|
|
wait(0.1);
|
|
flickertransmeshes(level.firingrange.allenvarray[param_00]);
|
|
wait(0.1);
|
|
hidetransitionmeshes_cg(param_00,var_0E);
|
|
wait(0.1);
|
|
showroundmeshmesh(param_00);
|
|
}
|
|
|
|
thread snd_play_linked_firingrange("mp_shooting_range_appear",self);
|
|
if(param_00 == 7)
|
|
{
|
|
self setclientomnvar("ui_vlobby_round_state",3);
|
|
thread targetspreadshooting(param_00);
|
|
return;
|
|
}
|
|
|
|
self setclientomnvar("ui_vlobby_round_state",1);
|
|
thread activate_targets(param_00);
|
|
}
|
|
|
|
//Function Number: 31
|
|
showroundmeshmesh(param_00)
|
|
{
|
|
level endon("shutdown_hologram");
|
|
var_01 = maps\mp\_utility::rounddecimalplaces(level.firingrange.allenvarray[param_00].size / level.firingrange.groupdevider,0,"up");
|
|
var_02 = 0;
|
|
foreach(var_04 in level.firingrange.allenvarray[param_00])
|
|
{
|
|
var_04 show();
|
|
var_04 solid();
|
|
}
|
|
}
|
|
|
|
//Function Number: 32
|
|
showtransitionrev(param_00)
|
|
{
|
|
level endon("shutdown_hologram");
|
|
level.firingrange.transitionmeshesrev = [];
|
|
foreach(var_02 in param_00)
|
|
{
|
|
if(isdefined(var_02) && !isremovedentity(var_02) && isdefined(var_02.classname) && var_02.classname == "script_model")
|
|
{
|
|
if(isdefined(var_02.model) && issubstr(var_02.model,"_trans"))
|
|
{
|
|
var_03 = var_02.model + "_rev";
|
|
var_04 = spawn("script_model",var_02.origin);
|
|
level.firingrange.transitionmeshesrev[level.firingrange.transitionmeshesrev.size] = var_04;
|
|
if(isdefined(var_02.angles))
|
|
{
|
|
var_04.angles = var_02.angles;
|
|
}
|
|
else
|
|
{
|
|
var_04.angles = (0,0,0);
|
|
}
|
|
|
|
var_04 setmodel(var_03);
|
|
var_04 notsolid();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 33
|
|
showtransition(param_00)
|
|
{
|
|
level endon("shutdown_hologram");
|
|
level.firingrange.transitionmeshes = [];
|
|
foreach(var_02 in level.firingrange.allenvarray[param_00])
|
|
{
|
|
if(isdefined(var_02.classname) && var_02.classname == "script_model")
|
|
{
|
|
if(isdefined(var_02.model) && issubstr(var_02.model,"rec_holo_range"))
|
|
{
|
|
var_03 = var_02.model + "_trans";
|
|
var_04 = spawn("script_model",var_02.origin);
|
|
level.firingrange.transitionmeshes[level.firingrange.transitionmeshes.size] = var_04;
|
|
if(isdefined(var_02.angles))
|
|
{
|
|
var_04.angles = var_02.angles;
|
|
}
|
|
else
|
|
{
|
|
var_04.angles = (0,0,0);
|
|
}
|
|
|
|
var_04 setmodel(var_03);
|
|
var_04 notsolid();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 34
|
|
flickertransmeshes(param_00)
|
|
{
|
|
level endon("shutdown_hologram");
|
|
if(isdefined(param_00) && isarray(param_00))
|
|
{
|
|
hidemodels(param_00);
|
|
wait(0.05);
|
|
showmodels(param_00);
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 35
|
|
showmodels(param_00)
|
|
{
|
|
level endon("shutdown_hologram");
|
|
foreach(var_02 in param_00)
|
|
{
|
|
if(isdefined(var_02) && !isremovedentity(var_02))
|
|
{
|
|
var_02 show();
|
|
var_02 notsolid();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 36
|
|
hidemodels(param_00)
|
|
{
|
|
level endon("shutdown_hologram");
|
|
foreach(var_02 in param_00)
|
|
{
|
|
if(isdefined(var_02) && !isremovedentity(var_02))
|
|
{
|
|
var_02 hide();
|
|
var_02 notsolid();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 37
|
|
hidetransitionmeshes()
|
|
{
|
|
if(isarray(level.firingrange.transitionmeshes))
|
|
{
|
|
level.firingrange.transitionmeshes = common_scripts\utility::array_remove_duplicates(level.firingrange.transitionmeshes);
|
|
foreach(var_01 in level.firingrange.transitionmeshes)
|
|
{
|
|
if(isdefined(var_01) && !isremovedentity(var_01))
|
|
{
|
|
var_01 hide();
|
|
var_01 notsolid();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 38
|
|
deletetransrevmeshes()
|
|
{
|
|
if(isarray(level.firingrange.transitionmeshesrev))
|
|
{
|
|
level.firingrange.transitionmeshesrev = common_scripts\utility::array_remove_duplicates(level.firingrange.transitionmeshesrev);
|
|
foreach(var_01 in level.firingrange.transitionmeshesrev)
|
|
{
|
|
if(isdefined(var_01) && !isremovedentity(var_01))
|
|
{
|
|
var_01 delete();
|
|
}
|
|
}
|
|
}
|
|
|
|
level.firingrange.transitionmeshesrev = [];
|
|
}
|
|
|
|
//Function Number: 39
|
|
removetransitionmeshes()
|
|
{
|
|
if(isarray(level.firingrange.transitionmeshes))
|
|
{
|
|
var_00 = common_scripts\utility::array_remove_duplicates(level.firingrange.transitionmeshes);
|
|
flickertransmeshes(var_00);
|
|
flickertransmeshes(var_00);
|
|
wait(0.1);
|
|
flickertransmeshes(var_00);
|
|
wait(0.1);
|
|
flickertransmeshes(var_00);
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(isdefined(var_02) && !isremovedentity(var_02))
|
|
{
|
|
var_02 delete();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 40
|
|
removerevnmeshes()
|
|
{
|
|
if(isarray(level.firingrange.scanlinemeshes))
|
|
{
|
|
level.firingrange.scanlinemeshes = common_scripts\utility::array_remove_duplicates(level.firingrange.scanlinemeshes);
|
|
foreach(var_01 in level.firingrange.scanlinemeshes)
|
|
{
|
|
if(isdefined(var_01) && !isremovedentity(var_01))
|
|
{
|
|
var_01 delete();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 41
|
|
movefloorpanelup()
|
|
{
|
|
level endon("shutdown_hologram");
|
|
var_00 = randomfloatrange(0,1);
|
|
wait(var_00);
|
|
self setmodel("rec_holo_emitter_floor_on");
|
|
self moveto(self.up_position,0.25,0.1,0.1);
|
|
}
|
|
|
|
//Function Number: 42
|
|
movefloorpaneldown()
|
|
{
|
|
level endon("start_round");
|
|
self setmodel("rec_holo_emitter_floor_off");
|
|
var_00 = randomfloatrange(0,1);
|
|
wait(var_00);
|
|
self moveto(self.og_position,0.25,0.1,0.1);
|
|
}
|
|
|
|
//Function Number: 43
|
|
shutdownround(param_00,param_01)
|
|
{
|
|
level notify("shutdown_hologram");
|
|
level.firingrange.isshuttingdown = 1;
|
|
param_01 setclientomnvar("ui_vlobby_round_state",0);
|
|
param_01 setclientomnvar("ui_vlobby_round_timer",0);
|
|
param_01 setclientomnvar("ui_vlobby_round_damage",0);
|
|
param_01 setclientomnvar("ui_vlobby_round_distance",0);
|
|
param_01 setclientomnvar("ui_vlobby_round_hits",0);
|
|
param_01 setclientomnvar("ui_vlobby_round_fired",0);
|
|
param_01 setclientomnvar("ui_vlobby_round_accuracy",0);
|
|
param_01 thread grenadecleanup(1);
|
|
thread removetransitionmeshes();
|
|
thread deletetransrevmeshes();
|
|
thread snd_play_linked_firingrange("mp_shooting_range_disappear",param_01);
|
|
foreach(var_03 in level.firingrange.allfloorpannels)
|
|
{
|
|
var_03 thread movefloorpaneldown();
|
|
}
|
|
|
|
thread snd_play_linked_firingrange("mp_shooting_range_panels_up",param_01);
|
|
foreach(var_06 in level.firingrange.allenvarray[param_00])
|
|
{
|
|
var_06 hide();
|
|
var_06 notsolid();
|
|
}
|
|
|
|
if(level.nextgen)
|
|
{
|
|
thread lerp_spot_intensity_array("lt_shootingrange",0.25,6000);
|
|
}
|
|
|
|
thread lerp_spot_intensity("lt_shootingrange_bounce",0.25,3000);
|
|
thread lerp_spot_intensity("lt_hologram_blue",0.25,0.01);
|
|
foreach(var_09 in level.firingrange.alltargetsarray[param_00])
|
|
{
|
|
foreach(var_0B in var_09)
|
|
{
|
|
if(var_0B.alive == 1)
|
|
{
|
|
var_0C = var_0B.origin;
|
|
var_0D = var_0B.angles;
|
|
thread particlespawn(level.firingrange.vfxtargetspawnout,var_0C,var_0D,3);
|
|
}
|
|
|
|
var_0B dontinterpolate();
|
|
var_0B.aimassist_target disableaimassist();
|
|
var_0B.origin = var_0B.original_position;
|
|
var_0B.angles = var_0B.original_orientation;
|
|
var_0B.aimassist_target hide();
|
|
var_0B.aimassist_target notsolid();
|
|
var_0B hide();
|
|
var_0B notsolid();
|
|
var_0B thermaldrawdisable();
|
|
var_0B.alive = 0;
|
|
}
|
|
}
|
|
|
|
foreach(var_11 in level.firingrange.all3duiscreens)
|
|
{
|
|
var_11 hide();
|
|
}
|
|
|
|
level.firingrange.minpoint = undefined;
|
|
level.firingrange.maxpoint = undefined;
|
|
level.firingrange.minpointmodpos = undefined;
|
|
level.firingrange.presseddown = 0;
|
|
level.firingrange.pressedup = 0;
|
|
level.firingrange.damagedone = 0;
|
|
level.firingrange.rangeinmeters = 0;
|
|
level.firingrange.shotsfired = 0;
|
|
level.firingrange.shotshit = 0;
|
|
level.firingrange.percent = 0;
|
|
level.firingrange.roundactive = 0;
|
|
level.firingrange.shouldupdateluadisplay = 1;
|
|
param_01 setclientomnvar("ui_vlobby_round_distance",level.firingrange.rangeinmeters);
|
|
param_01 setclientomnvar("ui_vlobby_round_damage",level.firingrange.damagedone);
|
|
param_01 setclientomnvar("ui_vlobby_round_hits",level.firingrange.shotshit);
|
|
param_01 setclientomnvar("ui_vlobby_round_fired",level.firingrange.shotsfired);
|
|
param_01 setclientomnvar("ui_vlobby_round_accuracy",level.firingrange.percent);
|
|
level.firingrange.isshuttingdown = 0;
|
|
}
|
|
|
|
//Function Number: 44
|
|
spawntarget()
|
|
{
|
|
level endon("shutdown_hologram");
|
|
var_00 = self.origin;
|
|
var_01 = self.angles;
|
|
thread particlespawn(level.firingrange.vfxtargetspawn,var_00,var_01,3);
|
|
thread snd_play_linked_firingrange("mp_shooting_range_red_appear",self);
|
|
wait(0.05);
|
|
self show();
|
|
self solid();
|
|
self thermaldrawenable();
|
|
}
|
|
|
|
//Function Number: 45
|
|
scalesoundsonexit()
|
|
{
|
|
level notify("ScaleSoundsOnExit");
|
|
level endon("ScaleSoundsOnExit");
|
|
if(isdefined(level.in_firingrange))
|
|
{
|
|
for(;;)
|
|
{
|
|
wait(0.05);
|
|
if(level.in_firingrange == 1 || getdvarint("virtualLobbyInFiringRange",0) == 1)
|
|
{
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
level.firingrange.soundents = common_scripts\utility::array_remove_duplicates(level.firingrange.soundents);
|
|
foreach(var_01 in level.firingrange.soundents)
|
|
{
|
|
var_01 scalevolume(0,0.5);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 46
|
|
enter_firingrange(param_00)
|
|
{
|
|
level.in_firingrange = 1;
|
|
thread wait_start_firingrange(0.4,param_00);
|
|
}
|
|
|
|
//Function Number: 47
|
|
wait_start_firingrange(param_00,param_01)
|
|
{
|
|
param_01 endon("enter_lobby");
|
|
wait(param_00);
|
|
param_01 setclientomnvar("ui_vlobby_round_state",0);
|
|
param_01 setclientomnvar("ui_vlobby_round_timer",0);
|
|
param_01 setclientomnvar("ui_vlobby_round_damage",0);
|
|
param_01 setclientomnvar("ui_vlobby_round_distance",0);
|
|
param_01 setclientomnvar("ui_vlobby_round_hits",0);
|
|
param_01 setclientomnvar("ui_vlobby_round_fired",0);
|
|
param_01 setclientomnvar("ui_vlobby_round_accuracy",0);
|
|
param_01 unlink();
|
|
param_01 cameraunlink();
|
|
var_02 = getgroundposition(level.firingrange.fr_start.origin,20,512,120);
|
|
param_01 dontinterpolate();
|
|
param_01 setorigin(var_02);
|
|
param_01 setplayerangles(level.firingrange.fr_start.angles);
|
|
param_01 setclientdvar("cg_fovscale","1.0");
|
|
level.firingrange.isshuttingdown = 0;
|
|
maps\mp\_vl_camera::virtual_lobby_set_class(0,"lobby" + param_01.currentselectedclass + 1,1,1);
|
|
param_01 chargebattery(param_01.loadoutoffhand);
|
|
param_01 chargebattery(param_01.loadoutequipment);
|
|
maps\mp\_utility::updatesessionstate("playing");
|
|
param_01 setclienttriggervisionset("mp_virtual_lobby_fr",0);
|
|
param_01 lightsetforplayer("mp_vl_firingrange");
|
|
param_01 thread maps\mp\_vl_base::enable_player_controls();
|
|
level.firingrange.soundents = [];
|
|
param_01 thread scalesoundsonexit();
|
|
if(!param_01 maps\mp\_utility::_hasperk("specialty_wildcard_dualtacticals") && maps\mp\gametypes\_class::isvalidequipment(param_01.loadoutequipment,0) && !isbadequipment(param_01.loadoutequipment))
|
|
{
|
|
param_01 thread monitor_grenade_count(param_01.loadoutequipment,0);
|
|
}
|
|
|
|
if(param_01 maps\mp\_utility::_hasperk("specialty_wildcard_duallethals") && maps\mp\gametypes\_class::isvalidequipment(param_01.loadoutoffhand,0) && !isbadequipment(param_01.loadoutoffhand))
|
|
{
|
|
param_01 thread monitor_grenade_count(param_01.loadoutoffhand,1);
|
|
}
|
|
|
|
if(param_01.primaryweapon != "specialty_null" && param_01.primaryweapon != "none" && param_01.primaryweapon != "iw5_combatknife_mp" && !issubstr(param_01.primaryweapon,"em1") && !issubstr(param_01.primaryweapon,"epm3") && !issubstr(param_01.primaryweapon,"dlcgun1_mp") && !issubstr(param_01.primaryweapon,"dlcgun1loot") && !issubstr(param_01.primaryweapon,"dlcgun9loot6") && !issubstr(param_01.primaryweapon,"dlcgun10loot4") && !issubstr(param_01.primaryweapon,"dlcgun10loot6"))
|
|
{
|
|
param_01 thread monitor_weapon_ammo_count(param_01.primaryweapon);
|
|
if(issubstr(param_01.primaryweapon,"_gl"))
|
|
{
|
|
param_01 thread monitor_weapon_ammo_count("alt_" + param_01.primaryweapon);
|
|
}
|
|
}
|
|
|
|
if(param_01.secondaryweapon != "specialty_null" && param_01.secondaryweapon != "none" && param_01.secondaryweapon != "iw5_combatknife_mp" && !issubstr(param_01.secondaryweapon,"em1") && !issubstr(param_01.secondaryweapon,"epm3") && !issubstr(param_01.primaryweapon,"dlcgun1_mp") && !issubstr(param_01.primaryweapon,"dlcgun1loot") && !issubstr(param_01.primaryweapon,"dlcgun9loot6") && !issubstr(param_01.primaryweapon,"dlcgun10loot4") && !issubstr(param_01.primaryweapon,"dlcgun10loot6"))
|
|
{
|
|
param_01 thread monitor_weapon_ammo_count(param_01.secondaryweapon);
|
|
if(issubstr(param_01.secondaryweapon,"_gl"))
|
|
{
|
|
param_01 thread monitor_weapon_ammo_count("alt_" + param_01.secondaryweapon);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 48
|
|
chargebattery(param_00)
|
|
{
|
|
var_01 = maps\mp\_utility::strip_suffix(param_00,"_lefthand");
|
|
if(var_01 != "none" && var_01 != "specialty_null" && maps\mp\gametypes\_class::isvalidoffhand(var_01,0))
|
|
{
|
|
self batteryfullrecharge(var_01);
|
|
self batterysetdischargescale(var_01,1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 49
|
|
isbadequipment(param_00)
|
|
{
|
|
switch(param_00)
|
|
{
|
|
case "exoknife_mp_lefthand":
|
|
case "exoknife_mp":
|
|
case "specialty_null":
|
|
case "none":
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
//Function Number: 50
|
|
giveplayerconroldelayed()
|
|
{
|
|
self endon("enter_lobby");
|
|
wait(2);
|
|
var_00 = getdvarint("virtualLobbyInFiringRange",0);
|
|
if(var_00 == 1 && level.in_firingrange == 1)
|
|
{
|
|
self allowfire(1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 51
|
|
activate_targets(param_00)
|
|
{
|
|
level endon("shutdown_hologram");
|
|
var_01 = self;
|
|
level.firingrange.last_target = undefined;
|
|
thread monitortime(var_01);
|
|
thread monitorshotsfired(var_01);
|
|
thread monitorhitpercent(var_01);
|
|
foreach(var_03 in level.firingrange.alltargetsarray[param_00])
|
|
{
|
|
foreach(var_05 in var_03)
|
|
{
|
|
var_05 thread monitordamage(var_01);
|
|
}
|
|
}
|
|
|
|
thread displayboothholo(var_01,param_00);
|
|
var_08 = level.firingrange.alltargetsarray[param_00].size;
|
|
var_09 = level.firingrange.alltargetsarray[param_00];
|
|
for(var_0A = 0;var_0A < var_08;var_0A++)
|
|
{
|
|
thread startwave(var_09[var_0A],var_01);
|
|
level waittill("wave_done");
|
|
wait(0.05);
|
|
}
|
|
|
|
level notify("round_done");
|
|
thread maps\mp\_audio::snd_play_in_space("mp_shooting_range_panels_bell",level.firingrange.audio_buzzer_struct.origin);
|
|
level.firingrange.roundactive = 0;
|
|
var_01 setclientomnvar("ui_vlobby_round_state",2);
|
|
}
|
|
|
|
//Function Number: 52
|
|
monitortime(param_00)
|
|
{
|
|
level endon("shutdown_hologram");
|
|
level endon("round_done");
|
|
var_01 = maps\mp\_utility::gettimepassed();
|
|
for(;;)
|
|
{
|
|
var_02 = maps\mp\_utility::gettimepassed();
|
|
var_03 = var_02 - var_01;
|
|
var_04 = maps\mp\_utility::rounddecimalplaces(var_03 / 1000,1);
|
|
if(var_04 > 9999.9)
|
|
{
|
|
level.firingrange.time = 0;
|
|
param_00 setclientomnvar("ui_vlobby_round_timer",level.firingrange.time);
|
|
param_00 setclientomnvar("ui_vlobby_round_state",0);
|
|
thread shutdownround(level.firingrange.roundnumber,param_00);
|
|
return;
|
|
}
|
|
else if(var_04 < 0)
|
|
{
|
|
level.firingrange.time = 0;
|
|
param_00 setclientomnvar("ui_vlobby_round_timer",level.firingrange.time);
|
|
param_00 setclientomnvar("ui_vlobby_round_state",0);
|
|
thread shutdownround(level.firingrange.roundnumber,param_00);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
level.firingrange.time = var_04;
|
|
param_00 setclientomnvar("ui_vlobby_round_timer",level.firingrange.time);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 53
|
|
startwave(param_00,param_01)
|
|
{
|
|
level endon("shutdown_hologram");
|
|
var_02 = 0;
|
|
thread maps\mp\_audio::snd_play_in_space("mp_shooting_range_panels_bell",level.firingrange.audio_buzzer_struct.origin);
|
|
foreach(var_04 in param_00)
|
|
{
|
|
var_04 thread target_lifetime(param_01);
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
level waittill("target_died");
|
|
var_02++;
|
|
if(var_02 == param_00.size)
|
|
{
|
|
level notify("wave_done");
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 54
|
|
target_lifetime(param_00)
|
|
{
|
|
level endon("shutdown_hologram");
|
|
self.original_position = self.origin;
|
|
self.original_orientation = self.angles;
|
|
self.alive = 1;
|
|
spawntarget();
|
|
thread target_handler(param_00);
|
|
thread target_logic();
|
|
thread target_handle_death();
|
|
thread target_handle_stop();
|
|
}
|
|
|
|
//Function Number: 55
|
|
particlespawn(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = (0,0,0);
|
|
}
|
|
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = (0,0,0);
|
|
}
|
|
|
|
var_05 = spawnfx(param_00,param_01,anglestoforward(param_02),anglestoup(param_02));
|
|
if(isdefined(param_04))
|
|
{
|
|
setfxkillondelete(var_05,param_04);
|
|
}
|
|
|
|
triggerfx(var_05);
|
|
if(isdefined(param_03))
|
|
{
|
|
wait(param_03);
|
|
if(isdefined(var_05) && !isremovedentity(var_05))
|
|
{
|
|
var_05 delete();
|
|
return;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
level waittill("shutdown_hologram");
|
|
if(isdefined(var_05) && !isremovedentity(var_05))
|
|
{
|
|
var_05 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 56
|
|
target_logic()
|
|
{
|
|
level endon("shutdown_hologram");
|
|
self endon("death");
|
|
if(isdefined(self.script_parameters))
|
|
{
|
|
var_00 = self.script_parameters;
|
|
movetargettodest();
|
|
switch(var_00)
|
|
{
|
|
case "stand":
|
|
break;
|
|
|
|
case "cover":
|
|
break;
|
|
|
|
case "move":
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 57
|
|
movetargettodest()
|
|
{
|
|
level endon("shutdown_hologram");
|
|
self endon("death");
|
|
if(!isdefined(level.firingrange.roundnumber))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_00 = level.firingrange.roundnumber;
|
|
var_01 = common_scripts\utility::getclosest(self.origin,level.firingrange.alltargetlogicarray[var_00]);
|
|
self.current_ent = var_01;
|
|
self.last_ent = self.current_ent;
|
|
for(;;)
|
|
{
|
|
if(isdefined(self))
|
|
{
|
|
var_02 = distance(self.current_ent.origin,self.origin);
|
|
var_03 = var_02 / level.firingrange.round_target_unit_per_second;
|
|
if(isdefined(self.current_ent.script_noteworthy) && self.current_ent.script_noteworthy == "jump")
|
|
{
|
|
self moveto(self.current_ent.origin,var_03 * 0.5,0,0.1);
|
|
}
|
|
else if(isdefined(self.last_ent.script_noteworthy) && self.last_ent.script_noteworthy == "jump")
|
|
{
|
|
self moveto(self.current_ent.origin,var_03 * 0.5,0.1,0);
|
|
}
|
|
else
|
|
{
|
|
self moveto(self.current_ent.origin,var_03);
|
|
}
|
|
|
|
self waittill("movedone");
|
|
if(isdefined(self.current_ent.target))
|
|
{
|
|
var_04 = getent(self.current_ent.target,"targetname");
|
|
self.last_ent = self.current_ent;
|
|
self.current_ent = var_04;
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 58
|
|
popinpopout()
|
|
{
|
|
level endon("shutdown_hologram");
|
|
self endon("death");
|
|
var_00 = 4;
|
|
var_01 = 1;
|
|
var_02 = self.current_ent.origin;
|
|
var_03 = self.last_ent.origin;
|
|
if(self.current_ent == self.last_ent)
|
|
{
|
|
var_03 = self.original_position;
|
|
}
|
|
|
|
wait(var_00);
|
|
for(;;)
|
|
{
|
|
if(isdefined(self))
|
|
{
|
|
var_04 = distance(var_03,var_02);
|
|
var_05 = var_04 / level.firingrange.round_target_unit_per_second;
|
|
self moveto(var_03,var_05);
|
|
self waittill("movedone");
|
|
wait(var_01);
|
|
var_04 = distance(var_03,var_02);
|
|
var_05 = var_04 / level.firingrange.round_target_unit_per_second;
|
|
self moveto(var_02,var_05);
|
|
self waittill("movedone");
|
|
wait(var_00);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 59
|
|
movebackforth()
|
|
{
|
|
level endon("shutdown_hologram");
|
|
self endon("death");
|
|
var_00 = undefined;
|
|
var_01 = undefined;
|
|
if(isdefined(self.last_ent.script_noteworthy) && self.last_ent.script_noteworthy == "jump")
|
|
{
|
|
var_00 = self.last_ent;
|
|
var_01 = var_00.origin;
|
|
self.last_ent = getent(var_00.targetname,"target");
|
|
}
|
|
|
|
var_02 = self.current_ent.origin;
|
|
var_03 = self.last_ent.origin;
|
|
if(self.current_ent == self.last_ent)
|
|
{
|
|
var_03 = self.original_position;
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
if(isdefined(self))
|
|
{
|
|
if(isdefined(var_01))
|
|
{
|
|
wait(2);
|
|
var_04 = distance(var_01,var_02);
|
|
var_05 = var_04 / level.firingrange.round_target_unit_per_second;
|
|
self moveto(var_01,var_05 * 0.5,0,0.1);
|
|
self waittill("movedone");
|
|
var_04 = distance(var_01,var_03);
|
|
var_05 = var_04 / level.firingrange.round_target_unit_per_second;
|
|
self moveto(var_03,var_05 * 0.5,0.1,0);
|
|
self waittill("movedone");
|
|
wait(2);
|
|
var_04 = distance(var_01,var_03);
|
|
var_05 = var_04 / level.firingrange.round_target_unit_per_second;
|
|
self moveto(var_01,var_05 * 0.5,0,0.1);
|
|
self waittill("movedone");
|
|
var_04 = distance(var_01,var_02);
|
|
var_05 = var_04 / level.firingrange.round_target_unit_per_second;
|
|
self moveto(var_02,var_05 * 0.5,0.1,0);
|
|
self waittill("movedone");
|
|
}
|
|
else
|
|
{
|
|
var_04 = distance(var_05,var_04);
|
|
var_05 = var_05 / level.firingrange.round_target_unit_per_second;
|
|
self moveto(var_03,var_05);
|
|
self waittill("movedone");
|
|
var_04 = distance(var_02,var_03);
|
|
var_05 = var_04 / level.firingrange.round_target_unit_per_second;
|
|
self moveto(var_02,var_05);
|
|
self waittill("movedone");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 60
|
|
score_handler()
|
|
{
|
|
level endon("shutdown_hologram");
|
|
for(;;)
|
|
{
|
|
var_00 = [];
|
|
for(var_01 = 0;var_01 < self.hits.size;var_01++)
|
|
{
|
|
self.hits[var_01].time = self.hits[var_01].time - 1;
|
|
if(self.hits[var_01].time > 0)
|
|
{
|
|
var_00[var_00.size] = self.hits[var_01];
|
|
}
|
|
}
|
|
|
|
self.hits = var_00;
|
|
foreach(var_03 in self.hits)
|
|
{
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 61
|
|
target_handler(param_00)
|
|
{
|
|
level endon("shutdown_hologram");
|
|
self.hits = [];
|
|
self.aimassist_target.health = 9999;
|
|
self.aimassist_target.maxhealth = 9999;
|
|
self.maxhealth = 9999;
|
|
self.health = self.maxhealth;
|
|
self.fakehealth = 100;
|
|
self setcandamage(1);
|
|
self.aimassist_target show();
|
|
self.aimassist_target solid();
|
|
self.aimassist_target enableaimassist();
|
|
while(self.health > 0)
|
|
{
|
|
var_01 = undefined;
|
|
var_02 = undefined;
|
|
var_03 = undefined;
|
|
var_04 = undefined;
|
|
var_05 = undefined;
|
|
var_06 = undefined;
|
|
var_07 = undefined;
|
|
var_08 = undefined;
|
|
var_09 = undefined;
|
|
self waittill("damage",var_01,var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09,var_0A);
|
|
var_0B = getmodifier(var_0A,var_08,param_00);
|
|
var_0C = self gettagorigin("tag_head");
|
|
var_0D = self gettagorigin("tag_chest");
|
|
self.health = self.maxhealth;
|
|
var_0E = self.fakehealth;
|
|
var_0E = float(var_0E) - float(var_01) * var_0B;
|
|
var_0E = maps\mp\_utility::rounddecimalplaces(var_0E,0);
|
|
self.fakehealth = int(var_0E);
|
|
if(self.fakehealth <= 0)
|
|
{
|
|
thread targetplaydeath(var_0D);
|
|
self.health = 0;
|
|
if(isdefined(var_02))
|
|
{
|
|
if(isdefined(var_08))
|
|
{
|
|
if(var_08 == "tag_head")
|
|
{
|
|
var_02 maps\mp\gametypes\_damagefeedback::updatedamagefeedback("killshot_headshot");
|
|
}
|
|
else if(var_08 == "tag_chest")
|
|
{
|
|
var_02 maps\mp\gametypes\_damagefeedback::updatedamagefeedback("mp_hit_kill");
|
|
}
|
|
}
|
|
}
|
|
|
|
self notify("death");
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(var_02))
|
|
{
|
|
if(isdefined(var_08) && var_08 == "tag_head")
|
|
{
|
|
var_02 maps\mp\gametypes\_damagefeedback::updatedamagefeedback("headshot");
|
|
continue;
|
|
}
|
|
|
|
var_02 maps\mp\gametypes\_damagefeedback::updatedamagefeedback("standard");
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 62
|
|
targetplaydeath(param_00)
|
|
{
|
|
playfx(level._effect["recovery_scoring_target_shutter_enemy"],param_00);
|
|
}
|
|
|
|
//Function Number: 63
|
|
deactivate_targets()
|
|
{
|
|
level notify("shutdown_hologram");
|
|
}
|
|
|
|
//Function Number: 64
|
|
firing_range_setup_triggers()
|
|
{
|
|
var_00 = getentarray("firing_range_round_trigger","targetname");
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 65
|
|
firing_range_setup_target_logic()
|
|
{
|
|
var_00 = getentarray("target_logic_point","targetname");
|
|
var_01 = [];
|
|
foreach(var_03 in var_00)
|
|
{
|
|
if(isdefined(var_03.script_index))
|
|
{
|
|
var_04 = int(var_03.script_index);
|
|
if(!isarray(var_01[var_04]))
|
|
{
|
|
var_05 = [var_03];
|
|
var_01[var_04] = var_05;
|
|
}
|
|
else
|
|
{
|
|
var_01[var_04] = common_scripts\utility::add_to_array(var_01[var_04],var_03);
|
|
}
|
|
}
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 66
|
|
firing_range_setup_env()
|
|
{
|
|
var_00 = getentarray("round_environment","targetname");
|
|
var_01 = [];
|
|
foreach(var_03 in var_00)
|
|
{
|
|
var_03 hide();
|
|
var_03 notsolid();
|
|
var_04 = undefined;
|
|
if(isdefined(var_03.script_index))
|
|
{
|
|
var_04 = int(var_03.script_index);
|
|
}
|
|
|
|
if(isdefined(var_04))
|
|
{
|
|
if(!isarray(var_01[var_04]))
|
|
{
|
|
var_05 = [var_03];
|
|
var_01[var_04] = var_05;
|
|
continue;
|
|
}
|
|
|
|
var_01[var_04] = common_scripts\utility::add_to_array(var_01[var_04],var_03);
|
|
}
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 67
|
|
firing_range_setup_env_vfx()
|
|
{
|
|
var_00 = common_scripts\utility::getstructarray("round_environment","targetname");
|
|
var_01 = [];
|
|
foreach(var_03 in var_00)
|
|
{
|
|
var_04 = undefined;
|
|
if(isdefined(var_03.script_index))
|
|
{
|
|
var_04 = int(var_03.script_index);
|
|
}
|
|
|
|
if(isdefined(var_04))
|
|
{
|
|
if(!isarray(var_01[var_04]))
|
|
{
|
|
var_05 = [var_03];
|
|
var_01[var_04] = var_05;
|
|
continue;
|
|
}
|
|
|
|
var_01[var_04] = common_scripts\utility::add_to_array(var_01[var_04],var_03);
|
|
}
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 68
|
|
firing_range_setup_targets()
|
|
{
|
|
var_00 = getentarray("target_enemy","targetname");
|
|
var_01 = [];
|
|
foreach(var_03 in var_00)
|
|
{
|
|
var_03.alive = 0;
|
|
var_03.pers["team"] = "axis";
|
|
var_03.team = "axis";
|
|
var_03.origin_ent = getent(var_03.target,"targetname");
|
|
var_03.aimassist_target = getent(var_03.origin_ent.target,"targetname");
|
|
var_03.aimassist_target vehicle_jetbikesethoverforcescale(var_03);
|
|
var_03.aimassist_target.pers["team"] = "axis";
|
|
var_03.aimassist_target.team = "axis";
|
|
var_03.original_position = var_03.origin;
|
|
var_03.original_orientation = var_03.angles;
|
|
var_03.aimassist_target hide();
|
|
var_03.aimassist_target notsolid();
|
|
var_03 hide();
|
|
var_03 notsolid();
|
|
if(isdefined(var_03.script_index))
|
|
{
|
|
var_04 = int(var_03.script_index);
|
|
if(!isarray(var_01[var_04]))
|
|
{
|
|
var_05 = [];
|
|
var_01[var_04] = var_05;
|
|
}
|
|
|
|
if(isdefined(var_03.script_group))
|
|
{
|
|
var_06 = int(var_03.script_group);
|
|
if(!isarray(var_01[var_04][var_06]))
|
|
{
|
|
var_07 = [var_03];
|
|
var_01[var_04][var_06] = var_07;
|
|
}
|
|
else
|
|
{
|
|
var_01[var_04][var_06] = common_scripts\utility::add_to_array(var_01[var_04][var_06],var_03);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 69
|
|
target_handle_death()
|
|
{
|
|
level endon("shutdown_hologram");
|
|
self waittill("death");
|
|
level notify("target_died");
|
|
target_reset();
|
|
}
|
|
|
|
//Function Number: 70
|
|
target_handle_stop()
|
|
{
|
|
self endon("death");
|
|
level waittill("shutdown_hologram");
|
|
target_reset();
|
|
}
|
|
|
|
//Function Number: 71
|
|
target_reset()
|
|
{
|
|
self setcandamage(0);
|
|
self hide();
|
|
self notsolid();
|
|
self.alive = 0;
|
|
if(isdefined(self.aimassist_target))
|
|
{
|
|
self.aimassist_target disableaimassist();
|
|
}
|
|
}
|
|
|
|
//Function Number: 72
|
|
lerp_spot_intensity(param_00,param_01,param_02)
|
|
{
|
|
var_03 = getent(param_00,"targetname");
|
|
if(!isdefined(var_03))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(level.currentgen && isdefined(var_03) == 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_04 = var_03 getlightintensity();
|
|
var_03.endintensity = param_02;
|
|
var_05 = 0;
|
|
while(var_05 < param_01)
|
|
{
|
|
var_06 = var_04 + param_02 - var_04 * var_05 / param_01;
|
|
var_05 = var_05 + 0.05;
|
|
var_03 setlightintensity(var_06);
|
|
wait(0.05);
|
|
}
|
|
|
|
var_03 setlightintensity(param_02);
|
|
}
|
|
|
|
//Function Number: 73
|
|
lerp_spot_intensity_array(param_00,param_01,param_02)
|
|
{
|
|
var_03 = getentarray(param_00,"targetname");
|
|
foreach(var_05 in var_03)
|
|
{
|
|
var_06 = var_05 getlightintensity();
|
|
var_05.endintensity = param_02;
|
|
var_07 = 0;
|
|
while(var_07 < param_01)
|
|
{
|
|
var_08 = var_06 + param_02 - var_06 * var_07 / param_01;
|
|
var_07 = var_07 + 0.05;
|
|
var_05 setlightintensity(var_08);
|
|
wait(0.05);
|
|
}
|
|
|
|
var_05 setlightintensity(param_02);
|
|
}
|
|
}
|
|
|
|
//Function Number: 74
|
|
monitor_weapon_ammo_count(param_00)
|
|
{
|
|
self endon("enter_lobby");
|
|
while(level.in_firingrange == 1)
|
|
{
|
|
var_01 = self getfractionmaxammo(param_00);
|
|
if(var_01 <= 0.25)
|
|
{
|
|
self givemaxammo(param_00);
|
|
continue;
|
|
}
|
|
|
|
wait(0.5);
|
|
}
|
|
}
|
|
|
|
//Function Number: 75
|
|
riotshieldcleanup()
|
|
{
|
|
if(isdefined(self.riotshieldentity))
|
|
{
|
|
self.riotshieldentity thread maps\mp\_riotshield::damagethendestroyriotshield();
|
|
}
|
|
}
|
|
|
|
//Function Number: 76
|
|
grenadecleanup(param_00)
|
|
{
|
|
if(isdefined(level.grenades) && isarray(level.grenades))
|
|
{
|
|
foreach(var_02 in level.grenades)
|
|
{
|
|
if(isdefined(var_02) && !isremovedentity(var_02))
|
|
{
|
|
if(!isdefined(self) || !isdefined(var_02.owner) || isremovedentity(var_02.owner))
|
|
{
|
|
if(!isdefined(var_02.weaponname))
|
|
{
|
|
continue;
|
|
}
|
|
else if(maps\mp\_utility::strip_suffix(var_02.weaponname,"_lefthand") == "explosive_drone_mp")
|
|
{
|
|
var_02 thread maps\mp\_explosive_drone::explosivegrenadedeath();
|
|
}
|
|
else
|
|
{
|
|
var_02 notify("death");
|
|
var_02 thread delaydelete();
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
if(var_02.owner == self)
|
|
{
|
|
if(!isdefined(var_02.weaponname))
|
|
{
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
if(maps\mp\_utility::strip_suffix(var_02.weaponname,"_lefthand") == "explosive_drone_mp")
|
|
{
|
|
var_02 thread maps\mp\_explosive_drone::explosivegrenadedeath();
|
|
continue;
|
|
}
|
|
|
|
if(maps\mp\_utility::strip_suffix(var_02.weaponname,"_lefthand") == "exoknife_mp")
|
|
{
|
|
if(isdefined(param_00) && param_00 == 1)
|
|
{
|
|
var_03 = getdvarint("virtualLobbyInFiringRange",0);
|
|
if(var_03 == 1 && level.in_firingrange == 1)
|
|
{
|
|
var_02 maps\mp\_exoknife::exo_knife_restock();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_02 notify("death");
|
|
var_02 thread delaydelete();
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
var_02 notify("death");
|
|
var_02 thread delaydelete();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
thread dronecleanup();
|
|
}
|
|
|
|
//Function Number: 77
|
|
dronecleanup()
|
|
{
|
|
if(isdefined(level.trackingdrones) && isarray(level.trackingdrones))
|
|
{
|
|
foreach(var_01 in level.trackingdrones)
|
|
{
|
|
if(isdefined(var_01) && !isremovedentity(var_01))
|
|
{
|
|
if(!isdefined(self) || !isdefined(var_01.owner) || isremovedentity(var_01.owner))
|
|
{
|
|
var_01 thread maps\mp\_tracking_drone::trackingdroneexplode();
|
|
continue;
|
|
}
|
|
|
|
if(var_01.owner == self)
|
|
{
|
|
var_01 thread maps\mp\_tracking_drone::trackingdroneexplode();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 78
|
|
delaydelete()
|
|
{
|
|
wait(0.05);
|
|
if(isdefined(self) && !isremovedentity(self))
|
|
{
|
|
self delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 79
|
|
monitor_grenade_count(param_00,param_01)
|
|
{
|
|
self endon("enter_lobby");
|
|
var_02 = 0;
|
|
var_03 = maps\mp\_utility::strip_suffix(param_00,"_lefthand");
|
|
if(var_03 == "smoke_grenade_var_mp" || var_03 == "stun_grenade_var_mp" || var_03 == "emp_grenade_var_mp" || var_03 == "paint_grenade_var_mp")
|
|
{
|
|
var_02 = 1;
|
|
}
|
|
|
|
if(var_03 == "explosive_drone_mp")
|
|
{
|
|
thread enforceexplosivedronelimit();
|
|
}
|
|
|
|
while(level.in_firingrange == 1)
|
|
{
|
|
if(var_02 == 1)
|
|
{
|
|
wait(1.5);
|
|
if(!param_01)
|
|
{
|
|
var_04 = self getammocount("paint_grenade_var_mp");
|
|
var_05 = self getammocount("smoke_grenade_var_mp");
|
|
var_06 = self getammocount("emp_grenade_var_mp");
|
|
var_07 = self getammocount("stun_grenade_var_mp");
|
|
if(var_04 == 0 && var_05 == 0 && var_06 == 0 && var_07 == 0)
|
|
{
|
|
self givestartammo("paint_grenade_var_mp");
|
|
self givestartammo("smoke_grenade_var_mp");
|
|
self givestartammo("emp_grenade_var_mp");
|
|
self givestartammo("stun_grenade_var_mp");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_08 = self getammocount("paint_grenade_var_mp_lefthand");
|
|
var_09 = self getammocount("smoke_grenade_var_mp_lefthand");
|
|
var_0A = self getammocount("emp_grenade_var_mp_lefthand");
|
|
var_0B = self getammocount("stun_grenade_var_mp_lefthand");
|
|
if(var_08 == 0 && var_09 == 0 && var_0A == 0 && var_0B == 0)
|
|
{
|
|
self givestartammo("paint_grenade_var_mp_lefthand");
|
|
self givestartammo("smoke_grenade_var_mp_lefthand");
|
|
self givestartammo("emp_grenade_var_mp_lefthand");
|
|
self givestartammo("stun_grenade_var_mp_lefthand");
|
|
}
|
|
}
|
|
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
wait(1.5);
|
|
var_0C = self getammocount(param_00);
|
|
if(var_0C == 0)
|
|
{
|
|
maps\mp\gametypes\_class::giveoffhand(param_00);
|
|
continue;
|
|
}
|
|
}
|
|
|
|
wait(0.5);
|
|
}
|
|
}
|
|
|
|
//Function Number: 80
|
|
enforceexplosivedronelimit()
|
|
{
|
|
self endon("enter_lobby");
|
|
for(;;)
|
|
{
|
|
self waittill("grenade_fire",var_00,var_01);
|
|
var_02 = maps\mp\_utility::strip_suffix(var_01,"_lefthand");
|
|
if(var_02 == "explosive_drone_mp")
|
|
{
|
|
if(isdefined(level.grenades) && isarray(level.grenades))
|
|
{
|
|
foreach(var_00 in level.grenades)
|
|
{
|
|
if(isdefined(var_00) && !isremovedentity(var_00) && isdefined(self) && isdefined(var_00.owner) && isdefined(var_00.weaponname))
|
|
{
|
|
if(maps\mp\_utility::strip_suffix(var_00.weaponname,"_lefthand") == "explosive_drone_mp" && var_00.owner == self)
|
|
{
|
|
if(isdefined(var_00.explosivedrone))
|
|
{
|
|
var_00.explosivedrone thread maps\mp\_explosive_drone::explosiveheaddeath();
|
|
continue;
|
|
}
|
|
|
|
var_00 thread maps\mp\_explosive_drone::explosivegrenadedeath();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 81
|
|
showtransition_cg(param_00)
|
|
{
|
|
level endon("shutdown_hologram");
|
|
var_01 = 0;
|
|
var_02 = [];
|
|
foreach(var_04 in level.firingrange.allenvarray[param_00])
|
|
{
|
|
if(isdefined(var_04.classname) && var_04.classname == "script_model")
|
|
{
|
|
if(isdefined(var_04.model) && issubstr(var_04.model,"rec_holo_range"))
|
|
{
|
|
var_02[var_01] = var_04.model;
|
|
if(!issubstr(var_04.model,"trans"))
|
|
{
|
|
var_05 = var_04.model + "_trans";
|
|
var_04 setmodel(var_05);
|
|
}
|
|
|
|
var_04 show();
|
|
}
|
|
else
|
|
{
|
|
var_02[var_01] = undefined;
|
|
}
|
|
}
|
|
|
|
var_01++;
|
|
}
|
|
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 82
|
|
hidetransitionmeshes_cg(param_00,param_01)
|
|
{
|
|
var_02 = 0;
|
|
foreach(var_04 in level.firingrange.allenvarray[param_00])
|
|
{
|
|
if(isdefined(var_04.classname) && var_04.classname == "script_model")
|
|
{
|
|
if(isdefined(var_04.model) && issubstr(var_04.model,"rec_holo_range"))
|
|
{
|
|
if(isstring(param_01[var_02]))
|
|
{
|
|
var_04 hide();
|
|
var_04 setmodel(param_01[var_02]);
|
|
}
|
|
}
|
|
}
|
|
|
|
var_02++;
|
|
}
|
|
} |