mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
196 lines
3.7 KiB
Plaintext
196 lines
3.7 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: _pdrone_threat_sensor.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 9
|
|
* Decompile Time: 132 ms
|
|
* Timestamp: 4/22/2024 2:05:26 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
build_threat_data()
|
|
{
|
|
var_00 = spawnstruct();
|
|
var_00.threat = undefined;
|
|
var_00.threat_visible_time = 0;
|
|
self.drone_threat_data = var_00;
|
|
}
|
|
|
|
//Function Number: 2
|
|
pdrone_update_threat_sensor()
|
|
{
|
|
self notify("pdrone_update_threat_sensor");
|
|
self endon("pdrone_update_threat_sensor");
|
|
self endon("death");
|
|
self endon("emp_death");
|
|
var_00 = "allies";
|
|
if(self.script_team == "allies")
|
|
{
|
|
var_00 = "axis";
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
wait(0.05);
|
|
if(maps\_utility::ent_flag("fire_disabled") || isdefined(self.pacifist) && self.pacifist || isdefined(self.ignoreall) && self.ignoreall)
|
|
{
|
|
self.drone_threat_data.threat = undefined;
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(self.favoriteenemy))
|
|
{
|
|
self.drone_threat_data.threat = self.favoriteenemy;
|
|
continue;
|
|
}
|
|
|
|
var_01 = getaiarray(var_00);
|
|
if(self.script_team == "axis")
|
|
{
|
|
var_01 = common_scripts\utility::array_add(var_01,level.player);
|
|
}
|
|
|
|
var_02 = undefined;
|
|
var_03 = -1;
|
|
foreach(var_05 in var_01)
|
|
{
|
|
wait(0.05);
|
|
var_06 = calculate_threat_level(self.drone_threat_data,var_05);
|
|
if(var_06 > var_03)
|
|
{
|
|
var_03 = var_06;
|
|
var_02 = var_05;
|
|
}
|
|
}
|
|
|
|
self.drone_threat_data.threat = var_02;
|
|
}
|
|
}
|
|
|
|
//Function Number: 3
|
|
calculate_threat_level(param_00,param_01)
|
|
{
|
|
var_02 = 0;
|
|
var_03[0] = ::evaluate_threat_valid_threat;
|
|
var_03[1] = ::evaluate_threat_range;
|
|
var_03[2] = ::evaluate_threat_player;
|
|
var_03[3] = ::evaluate_threat_avoid_friendly_fire;
|
|
var_03[4] = ::evaluate_threat_los;
|
|
for(var_04 = 0;var_04 < var_03.size;var_04++)
|
|
{
|
|
var_05 = self [[ var_03[var_04] ]](param_01);
|
|
if(var_05 < 0)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
var_02 = var_02 + var_05;
|
|
}
|
|
|
|
return var_02 / var_03.size;
|
|
}
|
|
|
|
//Function Number: 4
|
|
evaluate_threat_valid_threat(param_00)
|
|
{
|
|
if(!isdefined(param_00) || !isalive(param_00))
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
if(isdefined(param_00.ignoreme) && param_00.ignoreme == 1)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 5
|
|
evaluate_threat_los(param_00)
|
|
{
|
|
if(self.script_team == "allies")
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
var_01 = self.origin;
|
|
if(self gettagindex("tag_flash") != -1)
|
|
{
|
|
var_01 = self gettagorigin("tag_flash");
|
|
}
|
|
|
|
if(trace_to_enemy(var_01,param_00,undefined))
|
|
{
|
|
if(param_00 == level.player)
|
|
{
|
|
self.drone_threat_data.threat_visible_time = self.drone_threat_data.threat_visible_time + 0.05;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
if(param_00 == level.player)
|
|
{
|
|
self.drone_threat_data.threat_visible_time = 0;
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
//Function Number: 6
|
|
evaluate_threat_range(param_00)
|
|
{
|
|
var_01 = length(param_00.origin - self.origin);
|
|
var_02 = max(1 - var_01 / 3000,0);
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 7
|
|
evaluate_threat_player(param_00)
|
|
{
|
|
if(!isplayer(param_00))
|
|
{
|
|
return 0.8;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 8
|
|
evaluate_threat_avoid_friendly_fire(param_00)
|
|
{
|
|
if(self.script_team == "axis")
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(maps\_utility::shot_endangers_any_player(self.origin,param_00.origin))
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 9
|
|
trace_to_enemy(param_00,param_01,param_02)
|
|
{
|
|
var_03 = bullettrace(param_00,param_01 geteye(),0,param_02,0,0,0,0,0);
|
|
if(isdefined(var_03["entity"]) && var_03["entity"] maps\_vehicle::isvehicle())
|
|
{
|
|
if(isdefined(var_03["entity"].vehicletype) && var_03["entity"].vehicletype == "pdrone")
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
var_04 = var_03["entity"] getvehicleowner();
|
|
if(isdefined(var_04) && var_04 == param_01)
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return var_03["fraction"] == 1;
|
|
} |