iw6-scripts/maps/_stealth_behavior_enemy.gsc
2024-02-13 13:20:49 +01:00

173 lines
5.8 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
stealth_behavior_enemy_main()
{
enemy_init();
var_0 = self._stealth.behavior.ai_functions["state"]["hidden"];
thread maps\_stealth_shared_utilities::ai_message_handler_hidden( var_0, "enemy_behavior" );
var_0 = self._stealth.behavior.ai_functions["state"]["spotted"];
thread maps\_stealth_shared_utilities::ai_message_handler_spotted( var_0, "enemy_behavior" );
thread enemy_animation_loop();
}
enemy_animation_loop()
{
self endon( "death" );
self endon( "pain_death" );
self endon( "damage" );
self endon( "dog_attacks_ai" );
for (;;)
{
self waittill( "event_awareness", var_0 );
if ( !maps\_utility::ent_flag( "_stealth_enabled" ) )
continue;
var_1 = self._stealth.behavior.ai_functions["animation"]["wrapper"];
self thread [[ var_1 ]]( var_0 );
}
}
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 );
if ( self.type == "dog" )
return;
self.diequietly = 1;
self clearenemy();
}
enemy_state_spotted( var_0 )
{
self.fovcosine = 0.01;
if ( !isdefined( self.dog_attacking_me ) )
{
self.ignoreall = 0;
thread maps\_utility::set_battlechatter( 1 );
}
self.dontattackme = undefined;
self.dontevershoot = undefined;
if ( isdefined( self.oldfixednode ) )
self.fixednode = self.oldfixednode;
if ( self.type != "dog" )
{
self.diequietly = 0;
if ( !isdefined( var_0 ) )
{
maps\_utility::clear_run_anim();
maps\_stealth_shared_utilities::enemy_stop_current_behavior();
}
}
else
{
self.script_growl = undefined;
self.script_nobark = undefined;
}
if ( isdefined( var_0 ) )
return;
if ( isdefined( level._stealth.group.spotted_enemy ) )
{
var_1 = level._stealth.group.spotted_enemy[self.script_stealthgroup];
if ( isdefined( var_1 ) )
self getenemyinfo( var_1 );
}
}
enemy_init()
{
maps\_utility::ent_flag_init( "_stealth_override_goalpos" );
maps\_utility::ent_flag_init( "_stealth_enemy_alert_level_action" );
maps\_utility::ent_flag_init( "_stealth_running_to_corpse" );
maps\_utility::ent_flag_init( "_stealth_behavior_reaction_anim" );
maps\_utility::ent_flag_init( "_stealth_behavior_first_reaction" );
maps\_utility::ent_flag_init( "_stealth_behavior_reaction_anim_in_progress" );
self._stealth.behavior = spawnstruct();
self.a.nofirstframemelee = 1;
self._stealth.behavior.ai_functions = [];
enemy_default_state_behavior();
enemy_default_anim_behavior();
self._stealth.behavior.event = spawnstruct();
if ( self.type == "dog" )
enemy_dog_init();
self._stealth.plugins = spawnstruct();
thread maps\_stealth_shared_utilities::ai_stealth_pause_handler();
}
enemy_dog_init()
{
if ( threatbiasgroupexists( "dog" ) )
self setthreatbiasgroup( "dog" );
if ( isdefined( self.enemy ) || isdefined( self.favoriteenemy ) )
return;
maps\_utility::ent_flag_init( "_stealth_behavior_asleep" );
if ( isdefined( self.script_pet ) || isdefined( self.script_patroller ) )
return;
self.ignoreme = 1;
self.ignoreall = 1;
self.allowdeath = 1;
thread maps\_anim::anim_generic_custom_animmode_loop( self, "gravity", "_stealth_dog_sleeping" );
maps\_utility::ent_flag_set( "_stealth_behavior_asleep" );
}
enemy_custom_state_behavior( var_0 )
{
foreach ( var_3, var_2 in var_0 )
maps\_stealth_shared_utilities::ai_create_behavior_function( "state", var_3, var_2 );
var_4 = self._stealth.behavior.ai_functions["state"]["hidden"];
thread maps\_stealth_shared_utilities::ai_message_handler_hidden( var_4, "enemy_behavior" );
var_4 = self._stealth.behavior.ai_functions["state"]["spotted"];
thread maps\_stealth_shared_utilities::ai_message_handler_spotted( var_4, "enemy_behavior" );
}
enemy_default_state_behavior()
{
var_0 = [];
var_0["hidden"] = ::enemy_state_hidden;
var_0["spotted"] = ::enemy_state_spotted;
enemy_custom_state_behavior( var_0 );
}
enemy_default_anim_behavior()
{
maps\_stealth_shared_utilities::ai_create_behavior_function( "animation", "wrapper", maps\_stealth_shared_utilities::enemy_animation_wrapper );
if ( self.type == "dog" )
{
maps\_stealth_shared_utilities::ai_create_behavior_function( "animation", "grenade danger", maps\_stealth_animation_funcs::dog_animation_wakeup_fast );
maps\_stealth_shared_utilities::ai_create_behavior_function( "animation", "bulletwhizby", maps\_stealth_animation_funcs::dog_animation_wakeup_fast );
maps\_stealth_shared_utilities::ai_create_behavior_function( "animation", "gunshot_teammate", maps\_stealth_animation_funcs::dog_animation_wakeup_fast );
maps\_stealth_shared_utilities::ai_create_behavior_function( "animation", "projectile_impact", maps\_stealth_animation_funcs::dog_animation_wakeup_slow );
}
else
{
maps\_stealth_shared_utilities::ai_create_behavior_function( "animation", "grenade danger", maps\_stealth_animation_funcs::enemy_animation_nothing );
maps\_stealth_shared_utilities::ai_create_behavior_function( "animation", "bulletwhizby", maps\_stealth_animation_funcs::enemy_animation_nothing );
maps\_stealth_shared_utilities::ai_create_behavior_function( "animation", "gunshot_teammate", maps\_stealth_animation_funcs::enemy_animation_nothing );
maps\_stealth_shared_utilities::ai_create_behavior_function( "animation", "projectile_impact", maps\_stealth_animation_funcs::enemy_animation_nothing );
}
}