mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
493 lines
11 KiB
Plaintext
493 lines
11 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps/mp/_stingerm7.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 15
|
|
* Decompile Time: 228 ms
|
|
* Timestamp: 10/27/2023 1:49:21 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
stingerm7_think()
|
|
{
|
|
thread stingerm7_targeting();
|
|
thread stingerm7_monitor_fire();
|
|
}
|
|
|
|
//Function Number: 2
|
|
stingerm7_targeting()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("faux_spawn");
|
|
self endon("joined_team");
|
|
self.stingerm7_info = spawnstruct();
|
|
self.stingerm7_info.locked_targets = [];
|
|
self.stingerm7_info.locking_time = 0;
|
|
var_00 = 0;
|
|
for(;;)
|
|
{
|
|
var_01 = self getcurrentweapon();
|
|
var_02 = 0;
|
|
if(issubstr(var_01,"stingerm7"))
|
|
{
|
|
var_02 = 1;
|
|
}
|
|
else if(issubstr(var_01,"dlcgun11loot2"))
|
|
{
|
|
var_02 = 1;
|
|
}
|
|
|
|
if(var_02 && self playerads() > 0.99)
|
|
{
|
|
var_00 = 1;
|
|
if(self.stingerm7_info.locked_targets.size > 0)
|
|
{
|
|
remove_invalid_locks();
|
|
}
|
|
|
|
self.stingerm7_info.locked_targets = array_remove_dead(common_scripts\utility::array_removeundefined(self.stingerm7_info.locked_targets));
|
|
if(isdefined(self.stingerm7_info.locking_target))
|
|
{
|
|
if(!locking_target_still_valid(self.stingerm7_info.locking_target))
|
|
{
|
|
self.stingerm7_info.locking_target = undefined;
|
|
self notify("stop_javelin_locking_feedback");
|
|
}
|
|
}
|
|
|
|
if(isdefined(self.stingerm7_info.locking_target))
|
|
{
|
|
self.stingerm7_info.locking_time = self.stingerm7_info.locking_time + 0.05;
|
|
}
|
|
else
|
|
{
|
|
self.stingerm7_info.locking_time = 0;
|
|
if(self.stingerm7_info.locked_targets.size < 4)
|
|
{
|
|
self.stingerm7_info.locking_target = get_best_locking_target();
|
|
if(isdefined(self.stingerm7_info.locking_target))
|
|
{
|
|
thread locking_feedback();
|
|
}
|
|
}
|
|
}
|
|
|
|
if(self.stingerm7_info.locking_time >= 1 && isdefined(self.stingerm7_info.locking_target) && self.stingerm7_info.locked_targets.size < 4)
|
|
{
|
|
self notify("stop_javelin_locking_feedback");
|
|
self.stingerm7_info.locked_targets[self.stingerm7_info.locked_targets.size] = self.stingerm7_info.locking_target;
|
|
thread locked_feedback();
|
|
self.stingerm7_info.locking_target = undefined;
|
|
}
|
|
|
|
if(self.stingerm7_info.locked_targets.size > 0)
|
|
{
|
|
self weaponlockfinalize(self.stingerm7_info.locked_targets[0]);
|
|
}
|
|
else
|
|
{
|
|
self weaponlockfree();
|
|
self notify("stop_javelin_locked_feedback");
|
|
}
|
|
}
|
|
else if(var_00 == 1)
|
|
{
|
|
var_00 = 0;
|
|
self weaponlockfree();
|
|
self notify("stop_javelin_locking_feedback");
|
|
self notify("stop_javelin_locked_feedback");
|
|
self.stingerm7_info.locked_targets = [];
|
|
if(isdefined(self.stingerm7_info.locking_target))
|
|
{
|
|
self.stingerm7_info.locking_target = undefined;
|
|
}
|
|
|
|
self.stingerm7_info.locking_time = 0;
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 3
|
|
stingerm7_monitor_fire()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("faux_spawn");
|
|
self endon("joined_team");
|
|
for(;;)
|
|
{
|
|
self waittill("missile_fire",var_00,var_01);
|
|
if(issubstr(var_01,"stingerm7") || issubstr(var_01,"dlcgun11loot2"))
|
|
{
|
|
thread stinger_fire(self,var_00,var_01);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 4
|
|
stinger_fire(param_00,param_01,param_02)
|
|
{
|
|
var_03 = (0,0,0);
|
|
var_04 = (0,0,0);
|
|
if(isdefined(param_01))
|
|
{
|
|
var_03 = param_01.origin;
|
|
var_04 = param_01.angles;
|
|
param_01 delete();
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
|
|
param_00.stingerm7_info.locked_targets = array_remove_dead(common_scripts\utility::array_removeundefined(self.stingerm7_info.locked_targets));
|
|
var_05 = [];
|
|
for(var_06 = 0;var_06 < 4;var_06++)
|
|
{
|
|
var_07 = var_04 + random_vector(20,20,20);
|
|
var_08 = anglestoforward(var_07);
|
|
var_09 = magicbullet(param_02,var_03,var_03 + var_08,param_00);
|
|
var_09.owner = param_00;
|
|
if(param_00.stingerm7_info.locked_targets.size > 0)
|
|
{
|
|
var_0A = undefined;
|
|
if(var_06 < param_00.stingerm7_info.locked_targets.size)
|
|
{
|
|
var_0A = param_00.stingerm7_info.locked_targets[var_06];
|
|
}
|
|
else
|
|
{
|
|
var_0A = param_00.stingerm7_info.locked_targets[randomint(param_00.stingerm7_info.locked_targets.size)];
|
|
}
|
|
|
|
var_09 missile_settargetent(var_0A,stingerm7_get_target_offset(var_0A));
|
|
var_09.lockedstingertarget = var_0A;
|
|
}
|
|
|
|
var_05[var_05.size] = var_09;
|
|
}
|
|
|
|
level notify("stinger_fired",param_00,var_05);
|
|
param_00 setweaponammoclip(param_02,0);
|
|
}
|
|
|
|
//Function Number: 5
|
|
anystingermissilelockedon(param_00,param_01)
|
|
{
|
|
foreach(var_03 in param_00)
|
|
{
|
|
if(isdefined(var_03.lockedstingertarget) && var_03.lockedstingertarget == param_01)
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 6
|
|
get_best_locking_target()
|
|
{
|
|
var_00 = maps\mp\_utility::getotherteam(self.team);
|
|
var_01 = [];
|
|
foreach(var_03 in level.players)
|
|
{
|
|
if(level.teambased && var_03.team == self.team)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!maps\mp\_utility::isreallyalive(var_03))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_01[var_01.size] = var_03;
|
|
}
|
|
|
|
var_05 = vehicle_getarray();
|
|
var_06 = [];
|
|
foreach(var_08 in var_05)
|
|
{
|
|
if(!isdefined(var_08.owner))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_08 maps\mp\killstreaks\_aerial_utility::vehicleiscloaked())
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(level.teambased && var_08.owner.team == self.team)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_06[var_06.size] = var_08;
|
|
}
|
|
|
|
if(isdefined(level.ishorde) && level.ishorde)
|
|
{
|
|
foreach(var_0B in level.agentarray)
|
|
{
|
|
if(level.teambased && var_0B.team == self.team)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!maps\mp\_utility::isreallyalive(var_0B))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_01[var_01.size] = var_0B;
|
|
}
|
|
|
|
foreach(var_08 in var_05)
|
|
{
|
|
if(var_08 maps\mp\killstreaks\_aerial_utility::vehicleiscloaked())
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(level.teambased && var_08.team == self.team)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_06[var_06.size] = var_08;
|
|
}
|
|
}
|
|
|
|
var_0F = maps\mp\killstreaks\_killstreaks::getaerialkillstreakarray(var_00);
|
|
var_10 = common_scripts\utility::array_combine(var_01,var_06);
|
|
var_10 = common_scripts\utility::array_combine(var_10,var_0F);
|
|
if(isdefined(level.stingerlockonentsfunc))
|
|
{
|
|
var_10 = common_scripts\utility::array_combine(var_10,[[ level.stingerlockonentsfunc ]](self));
|
|
}
|
|
|
|
var_11 = self geteye();
|
|
var_12 = anglestoforward(self getplayerangles());
|
|
var_13 = undefined;
|
|
var_14 = cos(5);
|
|
foreach(var_16 in var_10)
|
|
{
|
|
if(!common_scripts\utility::array_contains(self.stingerm7_info.locked_targets,var_16))
|
|
{
|
|
var_17 = stingerm7_get_target_pos(var_16);
|
|
var_18 = vectordot(vectornormalize(var_17 - var_11),var_12);
|
|
if(var_18 > var_14)
|
|
{
|
|
var_19 = undefined;
|
|
var_1A = !1;
|
|
if(!var_1A)
|
|
{
|
|
var_1B = bullettracepassed(var_11,var_17,0,var_16);
|
|
if(var_1B)
|
|
{
|
|
var_1A = 1;
|
|
}
|
|
}
|
|
|
|
if(var_1A)
|
|
{
|
|
var_13 = var_16;
|
|
var_14 = var_18;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return var_13;
|
|
}
|
|
|
|
//Function Number: 7
|
|
locking_target_still_valid(param_00)
|
|
{
|
|
var_01 = self geteye();
|
|
var_02 = anglestoforward(self getplayerangles());
|
|
var_03 = stingerm7_get_target_pos(param_00);
|
|
if((isplayer(param_00) || isbot(param_00) || isdefined(level.ishorde) && level.ishorde && isagent(param_00)) && !maps\mp\_utility::isreallyalive(param_00))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(vectordot(vectornormalize(var_03 - var_01),var_02) > cos(5))
|
|
{
|
|
if(!1 || bullettracepassed(var_01,var_03,0,param_00))
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 8
|
|
remove_invalid_locks()
|
|
{
|
|
for(var_00 = 0;var_00 <= self.stingerm7_info.locked_targets.size;var_00++)
|
|
{
|
|
if(isdefined(self.stingerm7_info.locked_targets[var_00]) && isdefined(self.stingerm7_info.locked_targets[var_00].origin))
|
|
{
|
|
if(!isdefined(self.stingerm7_info.locked_targets[var_00].sight_lost_time))
|
|
{
|
|
self.stingerm7_info.locked_targets[var_00].sight_lost_time = -1;
|
|
}
|
|
|
|
var_01 = (0,0,0);
|
|
if(isplayer(self.stingerm7_info.locked_targets[var_00]) || isbot(self.stingerm7_info.locked_targets[var_00]))
|
|
{
|
|
var_01 = (0,0,64);
|
|
}
|
|
|
|
if(self worldpointinreticle_rect(self.stingerm7_info.locked_targets[var_00].origin + var_01,50,400,200))
|
|
{
|
|
if(bullettracepassed(self geteye(),self.stingerm7_info.locked_targets[var_00].origin + var_01,0,self.stingerm7_info.locked_targets[var_00]))
|
|
{
|
|
self.stingerm7_info.locked_targets[var_00].sight_lost_time = -1;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if(self.stingerm7_info.locked_targets[var_00].sight_lost_time == -1)
|
|
{
|
|
self.stingerm7_info.locked_targets[var_00].sight_lost_time = gettime();
|
|
continue;
|
|
}
|
|
|
|
if(gettime() - self.stingerm7_info.locked_targets[var_00].sight_lost_time >= 500)
|
|
{
|
|
self.stingerm7_info.locked_targets[var_00].sight_lost_time = -1;
|
|
self.stingerm7_info.locked_targets[var_00] = undefined;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 9
|
|
stingerm7_get_target_pos(param_00)
|
|
{
|
|
if(isdefined(param_00.getstingertargetposfunc))
|
|
{
|
|
return param_00 [[ param_00.getstingertargetposfunc ]]();
|
|
}
|
|
|
|
return param_00 getpointinbounds(0,0,0);
|
|
}
|
|
|
|
//Function Number: 10
|
|
stingerm7_get_target_offset(param_00)
|
|
{
|
|
return stingerm7_get_target_pos(param_00) - param_00.origin;
|
|
}
|
|
|
|
//Function Number: 11
|
|
locking_feedback()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("faux_spawn");
|
|
self endon("joined_team");
|
|
self endon("stop_javelin_locking_feedback");
|
|
for(;;)
|
|
{
|
|
if(isdefined(level.spawnedwarbirds))
|
|
{
|
|
foreach(var_01 in level.spawnedwarbirds)
|
|
{
|
|
if(isdefined(var_01.owner) && isdefined(var_01.player) && isdefined(self.stingerm7_info.locking_target) && self.stingerm7_info.locking_target == var_01)
|
|
{
|
|
var_01.owner playlocalsound("wpn_stingerm7_enemy_locked");
|
|
}
|
|
}
|
|
}
|
|
|
|
if(isdefined(level.orbitalsupport_player) && isdefined(self.stingerm7_info.locking_target) && self.stingerm7_info.locking_target == level.orbitalsupport_planemodel)
|
|
{
|
|
level.orbitalsupport_player playlocalsound("wpn_stingerm7_enemy_locked");
|
|
}
|
|
|
|
self playlocalsound("wpn_stingerm7_locking");
|
|
self playrumbleonentity("heavygun_fire");
|
|
wait(0.6);
|
|
}
|
|
}
|
|
|
|
//Function Number: 12
|
|
locked_feedback()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("faux_spawn");
|
|
self endon("joined_team");
|
|
self endon("stop_javelin_locked_feedback");
|
|
for(;;)
|
|
{
|
|
if(isdefined(level.spawnedwarbirds))
|
|
{
|
|
foreach(var_01 in level.spawnedwarbirds)
|
|
{
|
|
if(isdefined(var_01.owner) && isdefined(var_01.player) && isdefined(self.stingerm7_info.locked_targets) && isinarray(self.stingerm7_info.locked_targets,var_01))
|
|
{
|
|
var_01.owner playlocalsound("wpn_stingerm7_enemy_locked");
|
|
}
|
|
}
|
|
}
|
|
|
|
if(isdefined(level.orbitalsupport_player) && isdefined(self.stingerm7_info.locked_targets) && isinarray(self.stingerm7_info.locked_targets,level.orbitalsupport_planemodel))
|
|
{
|
|
level.orbitalsupport_player playlocalsound("wpn_stingerm7_enemy_locked");
|
|
}
|
|
|
|
self playlocalsound("wpn_stingerm7_locked");
|
|
self playrumbleonentity("heavygun_fire");
|
|
wait(0.25);
|
|
}
|
|
}
|
|
|
|
//Function Number: 13
|
|
array_remove_dead(param_00)
|
|
{
|
|
var_01 = [];
|
|
foreach(var_03 in param_00)
|
|
{
|
|
if(!isalive(var_03))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_01[var_01.size] = var_03;
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 14
|
|
random_vector(param_00,param_01,param_02)
|
|
{
|
|
return (randomfloat(param_00) - param_00 * 0.5,randomfloat(param_01) - param_01 * 0.5,randomfloat(param_02) - param_02 * 0.5);
|
|
}
|
|
|
|
//Function Number: 15
|
|
isinarray(param_00,param_01)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
foreach(var_03 in param_00)
|
|
{
|
|
if(var_03 == param_01)
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
} |