mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
452 lines
12 KiB
Plaintext
452 lines
12 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: _cloak_enemy_behavior.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 18
|
|
* Decompile Time: 286 ms
|
|
* Timestamp: 4/22/2024 2:20:17 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
cloak_enemy_reset_behavior()
|
|
{
|
|
self endon("death");
|
|
self endon("_stealth_enemy_alert_level_change");
|
|
wait(randomfloatrange(1,7));
|
|
self._stealth.logic.threat_level = "reset";
|
|
self._cloak_enemy_state = "default_stealth_state";
|
|
maps\_stealth_threat_enemy::enemy_alert_level_normal();
|
|
}
|
|
|
|
//Function Number: 2
|
|
cloak_enemy_reset_behavior_mech()
|
|
{
|
|
self endon("death");
|
|
self endon("_stealth_enemy_alert_level_change");
|
|
wait(randomfloatrange(1,7));
|
|
self._stealth.logic.threat_level = "reset";
|
|
self._cloak_enemy_state = "default_stealth_state";
|
|
maps\_stealth_threat_enemy::enemy_alert_level_normal();
|
|
}
|
|
|
|
//Function Number: 3
|
|
cloak_enemy_warning1_behavior_mech()
|
|
{
|
|
self endon("death");
|
|
self endon("_stealth_enemy_alert_level_change");
|
|
self._stealth.logic.threat_level = "warning1";
|
|
thread maps\_stealth_threat_enemy::enemy_announce_alert();
|
|
if(isdefined(self.enemy))
|
|
{
|
|
var_00 = self lastknownpos(self.enemy);
|
|
maps\_utility::ent_flag_set("_stealth_override_goalpos");
|
|
self setgoalpos(var_00);
|
|
self.goalradius = 36;
|
|
self._cloak_enemy_state = "Path 2 LKP";
|
|
self waittill("goal");
|
|
self._cloak_enemy_state = "Looking around LKP";
|
|
maps\_stealth_threat_enemy::enemy_lookaround_for_time(randomfloatrange(2,4));
|
|
self._cloak_enemy_state = "Unknown";
|
|
self.shootposoverride = undefined;
|
|
}
|
|
}
|
|
|
|
//Function Number: 4
|
|
cloak_enemy_warning1_behavior()
|
|
{
|
|
self endon("death");
|
|
self endon("_stealth_enemy_alert_level_change");
|
|
self._stealth.logic.threat_level = "warning1";
|
|
thread maps\_stealth_threat_enemy::enemy_announce_alert();
|
|
if(isdefined(self.script_patroller))
|
|
{
|
|
var_00 = "a";
|
|
if(common_scripts\utility::cointoss())
|
|
{
|
|
var_00 = "b";
|
|
}
|
|
|
|
maps\_stealth_shared_utilities::stealth_set_run_anim("_stealth_patrol_search_" + var_00,1);
|
|
self.disablearrivals = 1;
|
|
self.disableexits = 1;
|
|
}
|
|
|
|
if(isdefined(self.enemy))
|
|
{
|
|
var_01 = self lastknownpos(self.enemy);
|
|
maps\_utility::ent_flag_set("_stealth_override_goalpos");
|
|
self setgoalpos(var_01);
|
|
self.goalradius = 36;
|
|
self._cloak_enemy_state = "Path 2 LKP";
|
|
self waittill("goal");
|
|
self._cloak_enemy_state = "Looking around LKP";
|
|
maps\_stealth_threat_enemy::enemy_lookaround_for_time(randomfloatrange(2,4));
|
|
self._cloak_enemy_state = "Unknown";
|
|
self.shootposoverride = undefined;
|
|
}
|
|
}
|
|
|
|
//Function Number: 5
|
|
cloak_enemy_warning2_behavior()
|
|
{
|
|
self endon("death");
|
|
self endon("_stealth_enemy_alert_level_change");
|
|
self._stealth.logic.threat_level = "warning2";
|
|
maps\_stealth_threat_enemy::enemy_alert_level_warning2();
|
|
}
|
|
|
|
//Function Number: 6
|
|
_investigate_last_known_position_with_endons()
|
|
{
|
|
self endon("death");
|
|
self endon("_stealth_enemy_alert_level_change");
|
|
self.pathrandompercent = 50;
|
|
self.goalradius = 64;
|
|
maps\_utility::ent_flag_set("_stealth_override_goalpos");
|
|
self setgoalpos(level._stealth.logic.lastknownposition);
|
|
self._cloak_enemy_state = "Path 2 LKP";
|
|
self waittill("goal");
|
|
self._cloak_enemy_state = "Looking around LKP";
|
|
maps\_stealth_threat_enemy::enemy_lookaround_for_time(randomfloatrange(2,4));
|
|
}
|
|
|
|
//Function Number: 7
|
|
_investigate_last_known_position_wrapper()
|
|
{
|
|
level._stealth.logic.last_known_position_claimed = 1;
|
|
_investigate_last_known_position_with_endons();
|
|
level._stealth.logic.last_known_position_claimed = 0;
|
|
if(isdefined(self))
|
|
{
|
|
self.investigating_last_known_position = 0;
|
|
}
|
|
}
|
|
|
|
//Function Number: 8
|
|
cloak_enemy_attack_behavior_mech()
|
|
{
|
|
self endon("death");
|
|
self endon("_stealth_enemy_alert_level_change");
|
|
self._stealth.logic.threat_level = "attack";
|
|
self._stealth.logic.has_entered_attack_behavior = 1;
|
|
thread maps\_mech::mech_hunt_stealth_behavior();
|
|
}
|
|
|
|
//Function Number: 9
|
|
cloak_enemy_fast_attack_behavior()
|
|
{
|
|
var_00 = 10;
|
|
self endon("death");
|
|
self endon("_stealth_enemy_alert_level_change");
|
|
self._stealth.logic.threat_level = "attack";
|
|
self._cloak_enemy_state = "fast_attack";
|
|
thread maps\_stealth_shared_utilities::enemy_announce_spotted(self.origin);
|
|
if(isdefined(self.enemy))
|
|
{
|
|
self.enemy_who_surprised_me = self.enemy;
|
|
self.dontmelee = 1;
|
|
self.disablereactionanims = 1;
|
|
animscripts\shoot_behavior::decidewhatandhowtoshoot("normal");
|
|
wait(var_00);
|
|
self.disablereactionanims = 0;
|
|
self.dontmelee = undefined;
|
|
if(isdefined(self.mech))
|
|
{
|
|
self.dontmelee = 1;
|
|
}
|
|
|
|
self.enemy_who_surprised_me = undefined;
|
|
}
|
|
|
|
if(isdefined(self.script_goalvolume))
|
|
{
|
|
thread maps\_spawner::set_goal_volume();
|
|
return;
|
|
}
|
|
|
|
maps\_stealth_threat_enemy::enemy_close_in_on_target();
|
|
}
|
|
|
|
//Function Number: 10
|
|
cloak_enemy_investigative_attack_behavior()
|
|
{
|
|
self endon("death");
|
|
self endon("_stealth_enemy_alert_level_change");
|
|
self._stealth.logic.threat_level = "attack";
|
|
self._cloak_enemy_state = "investigative_attack";
|
|
self._stealth.logic.has_entered_attack_behavior = 1;
|
|
thread maps\_stealth_shared_utilities::enemy_announce_spotted(self.origin);
|
|
while(isdefined(self.enemy))
|
|
{
|
|
if(!isdefined(level._stealth.logic.last_known_position_claimed) || !level._stealth.logic.last_known_position_claimed)
|
|
{
|
|
foreach(var_01 in level._stealth.group.groups)
|
|
{
|
|
if(isdefined(common_scripts\utility::array_find(var_01,self)))
|
|
{
|
|
level._stealth.logic.lastknownposition = self lastknownpos(self.enemy);
|
|
if(isarray(var_01))
|
|
{
|
|
var_01 = maps\_utility::array_removedead(var_01);
|
|
var_02 = sortbydistance(var_01,level._stealth.logic.lastknownposition);
|
|
if(isdefined(var_02))
|
|
{
|
|
var_02[0] thread _investigate_last_known_position_wrapper();
|
|
var_02[0].investigating_last_known_position = 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
while(isdefined(self.investigating_last_known_position) && self.investigating_last_known_position)
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
wait(0.1);
|
|
continue;
|
|
}
|
|
|
|
var_05 = getentarray("info_v_stealth","targetname");
|
|
if(isdefined(var_05))
|
|
{
|
|
foreach(var_07 in var_05)
|
|
{
|
|
if(ispointinvolume(level._stealth.logic.lastknownposition,var_07))
|
|
{
|
|
self cleargoalvolume();
|
|
self setgoalvolumeauto(var_07);
|
|
wait(1);
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
self._cloak_enemy_state = "Thinking";
|
|
wait(randomfloatrange(0.2,1));
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
}
|
|
|
|
self._cloak_enemy_state = "Pathing to Cover";
|
|
self waittill("goal");
|
|
self._cloak_enemy_state = "In Cover";
|
|
wait(1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
cloak_enemy_attack_behavior()
|
|
{
|
|
var_00 = 180;
|
|
var_01 = 0;
|
|
if(isdefined(self.enemy))
|
|
{
|
|
var_02 = self.enemy.origin;
|
|
var_03 = self.origin;
|
|
if(distance2dsquared(var_03,var_02) < var_00 * var_00)
|
|
{
|
|
var_01 = 1;
|
|
}
|
|
}
|
|
|
|
if(var_01)
|
|
{
|
|
cloak_enemy_fast_attack_behavior();
|
|
return;
|
|
}
|
|
|
|
if(isdefined(self.mech) && self.mech)
|
|
{
|
|
self.goalradius = 1024;
|
|
self setgoalpos(self lastknownpos(self.enemy));
|
|
wait(randomfloatrange(0.5,1.5));
|
|
self setgoalpos(self.origin);
|
|
cloak_enemy_attack_behavior_mech();
|
|
return;
|
|
}
|
|
|
|
if(randomfloatrange(0,1) < 0.33)
|
|
{
|
|
maps\_utility::enable_cqbwalk();
|
|
}
|
|
|
|
cloak_enemy_investigative_attack_behavior();
|
|
}
|
|
|
|
//Function Number: 12
|
|
cloak_enemy_normal_behavior_mech()
|
|
{
|
|
self endon("death");
|
|
self endon("_stealth_enemy_alert_level_change");
|
|
self notify("stop_hunting");
|
|
self._stealth.logic.threat_level = "normal";
|
|
cloak_enemy_reset_behavior_mech();
|
|
}
|
|
|
|
//Function Number: 13
|
|
cloak_enemy_normal_behavior()
|
|
{
|
|
self endon("death");
|
|
self endon("_stealth_enemy_alert_level_change");
|
|
self._stealth.logic.threat_level = "normal";
|
|
cloak_enemy_reset_behavior();
|
|
}
|
|
|
|
//Function Number: 14
|
|
cloak_enemy_state_hidden()
|
|
{
|
|
self.fovcosine = 0.5;
|
|
self.fovcosinebusy = 0.1;
|
|
self.favoriteenemy = undefined;
|
|
self.dontattackme = 1;
|
|
self.dontevershoot = 1;
|
|
thread maps\_utility::set_battlechatter(0);
|
|
self.diequietly = 1;
|
|
self clearenemy();
|
|
}
|
|
|
|
//Function Number: 15
|
|
cloak_enemy_state_spotted(param_00)
|
|
{
|
|
self.fovcosine = 0.01;
|
|
self.ignoreall = 0;
|
|
self.dontattackme = undefined;
|
|
self.dontevershoot = undefined;
|
|
if(isdefined(self.oldfixednode))
|
|
{
|
|
self.fixednode = self.oldfixednode;
|
|
}
|
|
|
|
thread maps\_utility::set_battlechatter(1);
|
|
self.diequietly = 0;
|
|
if(!isdefined(param_00))
|
|
{
|
|
maps\_utility::clear_run_anim();
|
|
maps\_stealth_shared_utilities::enemy_stop_current_behavior();
|
|
}
|
|
|
|
if(isdefined(param_00))
|
|
{
|
|
}
|
|
}
|
|
|
|
//Function Number: 16
|
|
cloak_enemy_default_setup()
|
|
{
|
|
if(isplayer(self))
|
|
{
|
|
maps\_stealth_visibility_friendly::stealth_visibility_friendly_main();
|
|
return;
|
|
}
|
|
|
|
self._cloak_enemy_state = "default_stealth_state";
|
|
maps\_stealth_utility::stealth_plugin_basic();
|
|
self.pathrandompercent = 0;
|
|
maps\_stealth_utility::stealth_plugin_threat();
|
|
if(isdefined(self.mech))
|
|
{
|
|
var_00["reset"] = ::cloak_enemy_reset_behavior_mech;
|
|
var_00["attack"] = ::cloak_enemy_attack_behavior;
|
|
var_00["normal"] = ::cloak_enemy_normal_behavior_mech;
|
|
var_01 = [];
|
|
var_01["reset"] = ::maps\_stealth_animation_funcs::enemy_animation_nothing;
|
|
var_01["warning"] = ::maps\_stealth_animation_funcs::enemy_animation_nothing;
|
|
var_01["attack"] = ::maps\_stealth_animation_funcs::enemy_animation_nothing;
|
|
maps\_stealth_utility::stealth_threat_behavior_custom(var_00,var_01);
|
|
}
|
|
else
|
|
{
|
|
var_01["reset"] = ::cloak_enemy_reset_behavior;
|
|
var_01["attack"] = ::cloak_enemy_attack_behavior;
|
|
var_01["normal"] = ::cloak_enemy_normal_behavior;
|
|
var_01 = [];
|
|
var_01["reset"] = ::maps\_stealth_animation_funcs::enemy_animation_nothing;
|
|
var_01["warning"] = ::maps\_stealth_animation_funcs::enemy_animation_nothing;
|
|
var_01["attack"] = ::maps\_stealth_animation_funcs::enemy_animation_nothing;
|
|
maps\_stealth_utility::stealth_threat_behavior_custom(var_00,var_01);
|
|
}
|
|
|
|
maps\_stealth_utility::stealth_enable_seek_player_on_spotted();
|
|
maps\_stealth_utility::stealth_plugin_corpse();
|
|
maps\_stealth_utility::stealth_plugin_event_all();
|
|
maps\_stealth_event_enemy::stealth_event_mod("heard_alarm",::heard_alarm_reaction_behavior,::maps\_stealth_animation_funcs::enemy_animation_generic);
|
|
self.baseaccuracy = 2;
|
|
self.fovcosine = 0.5;
|
|
self.fovcosinebusy = 0.1;
|
|
var_02 = [];
|
|
if(isdefined(self.mech))
|
|
{
|
|
var_02["hidden"] = ::cloak_enemy_state_hidden;
|
|
var_02["spotted"] = ::cloak_enemy_state_spotted;
|
|
}
|
|
else
|
|
{
|
|
var_02["hidden"] = ::cloak_enemy_state_hidden;
|
|
var_02["spotted"] = ::cloak_enemy_state_spotted;
|
|
}
|
|
|
|
maps\_stealth_utility::stealth_basic_states_custom(var_02);
|
|
if(!isdefined(level._cloak_enemy_array))
|
|
{
|
|
level._cloak_enemy_array = [];
|
|
}
|
|
|
|
level._cloak_enemy_array[level._cloak_enemy_array.size] = self;
|
|
self setthreatbiasgroup("cloak_enemy_npcs");
|
|
maps\_utility::enable_surprise();
|
|
}
|
|
|
|
//Function Number: 17
|
|
cqb_investigate_behavior(param_00)
|
|
{
|
|
self endon("_stealth_enemy_alert_level_change");
|
|
level endon("_stealth_spotted");
|
|
self endon("_stealth_attack");
|
|
self endon("death");
|
|
self endon("pain_death");
|
|
self.disablearrivals = 0;
|
|
self.disableexits = 0;
|
|
var_01 = distance(param_00.origin,self.origin);
|
|
self setgoalnode(param_00);
|
|
self.goalradius = var_01 * 0.5;
|
|
wait(0.05);
|
|
maps\_utility::set_generic_run_anim("_stealth_patrol_cqb");
|
|
self._stealth.debug_state = "Investigate-CQB";
|
|
self waittill("goal");
|
|
if(!common_scripts\utility::flag("_stealth_spotted") && !isdefined(self.enemy) || !self cansee(self.enemy))
|
|
{
|
|
maps\_stealth_shared_utilities::enemy_runto_and_lookaround(param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 18
|
|
heard_alarm_reaction_behavior(param_00)
|
|
{
|
|
self endon("death");
|
|
self endon("pain_death");
|
|
level endon("_stealth_spotted");
|
|
self endon("_stealth_attack");
|
|
if(!common_scripts\utility::flag("_stealth_spotted") && !maps\_utility::ent_flag("_stealth_attack"))
|
|
{
|
|
var_01 = self._stealth.logic.event.awareness_param[param_00];
|
|
var_02 = maps\_stealth_shared_utilities::enemy_find_free_pathnode_near(var_01,300,40);
|
|
thread maps\_stealth_shared_utilities::enemy_announce_wtf();
|
|
if(isdefined(var_02))
|
|
{
|
|
thread cqb_investigate_behavior(var_02);
|
|
}
|
|
}
|
|
|
|
var_03 = maps\_stealth_shared_utilities::group_get_flagname("_stealth_spotted");
|
|
if(common_scripts\utility::flag(var_03))
|
|
{
|
|
common_scripts\utility::flag_waitopen(var_03);
|
|
return;
|
|
}
|
|
|
|
self waittill("normal");
|
|
} |