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

1007 lines
26 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
ai_message_handler_spotted( var_0, var_1 )
{
self endon( "death" );
var_1 = var_1 + "spotted";
self notify( var_1 );
self endon( var_1 );
switch ( self.team )
{
case "allies":
for (;;)
{
maps\_utility::ent_flag_wait( "_stealth_enabled" );
maps\_stealth_utility::stealth_group_spotted_flag_wait();
if ( !maps\_utility::ent_flag( "_stealth_enabled" ) )
continue;
self thread [[ var_0 ]]();
maps\_stealth_utility::stealth_group_spotted_flag_waitopen();
}
break;
case "team3":
case "axis":
for (;;)
{
maps\_utility::ent_flag_wait( "_stealth_enabled" );
maps\_stealth_utility::stealth_group_spotted_flag_wait();
if ( !maps\_utility::ent_flag( "_stealth_enabled" ) )
continue;
self thread [[ var_0 ]]();
maps\_stealth_utility::stealth_group_spotted_flag_waitopen();
}
break;
}
}
ai_message_handler_hidden( var_0, var_1 )
{
self endon( "death" );
var_1 = var_1 + "hidden";
self notify( var_1 );
self endon( var_1 );
switch ( self.team )
{
case "allies":
for (;;)
{
maps\_utility::ent_flag_wait( "_stealth_enabled" );
common_scripts\utility::flag_waitopen( "_stealth_spotted" );
if ( !maps\_utility::ent_flag( "_stealth_enabled" ) )
continue;
self thread [[ var_0 ]]();
common_scripts\utility::flag_wait( "_stealth_spotted" );
}
break;
case "team3":
case "axis":
for (;;)
{
maps\_utility::ent_flag_wait( "_stealth_enabled" );
maps\_stealth_utility::stealth_group_spotted_flag_waitopen();
if ( !maps\_utility::ent_flag( "_stealth_enabled" ) )
continue;
self thread [[ var_0 ]]();
maps\_stealth_utility::stealth_group_spotted_flag_wait();
}
break;
}
}
ai_create_behavior_function( var_0, var_1, var_2 )
{
self._stealth.behavior.ai_functions[var_0][var_1] = var_2;
}
ai_get_behavior_function( var_0, var_1 )
{
return self._stealth.behavior.ai_functions[var_0][var_1];
}
ai_set_goback_override_function( var_0 )
{
self._stealth.behavior.goback_startfunc = var_0;
}
stealth_event_validate( var_0 )
{
if ( var_0 == "heard_scream" || var_0 == "doFlashBanged" || var_0 == "explode" )
return 1;
return 0;
}
stealth_debug_print( var_0 )
{
}
enemy_event_debug_print( var_0 )
{
setdvarifuninitialized( "stealth_debug_prints", "0" );
if ( !isdefined( getdvar( "stealth_debug_prints" ) ) )
setdvar( "stealth_debug_prints", "0" );
if ( getdvarint( "stealth_debug_prints" ) != 1 )
return;
}
stealth_flag_debug_print( var_0 )
{
}
group_flag_init( var_0 )
{
if ( isdefined( self.script_stealthgroup ) )
self.script_stealthgroup = maps\_utility::string( self.script_stealthgroup );
else
self.script_stealthgroup = "default";
if ( self.team == "allies" )
self.script_stealthgroup = self.script_stealthgroup + "allies";
var_1 = group_get_flagname( var_0 );
if ( !common_scripts\utility::flag_exist( var_1 ) )
{
common_scripts\utility::flag_init( var_1 );
if ( !isdefined( level._stealth.group.flags[var_0] ) )
level._stealth.group.flags[var_0] = [];
var_2 = level._stealth.group.flags[var_0].size;
level._stealth.group.flags[var_0][var_2] = var_1;
}
}
group_add_to_global_list()
{
if ( !isdefined( level._stealth.group.groups[self.script_stealthgroup] ) )
{
level._stealth.group.groups[self.script_stealthgroup] = [];
level._stealth.group notify( self.script_stealthgroup );
}
var_0 = level._stealth.group.groups[self.script_stealthgroup].size;
level._stealth.group.groups[self.script_stealthgroup][var_0] = self;
}
group_get_flagname( var_0 )
{
return group_get_flagname_from_group( var_0, self.script_stealthgroup );
}
group_get_flagname_from_group( var_0, var_1 )
{
var_2 = var_0 + "-Group:" + var_1;
return var_2;
}
group_flag_set( var_0 )
{
var_1 = group_get_flagname( var_0 );
common_scripts\utility::flag_set( var_1 );
common_scripts\utility::flag_set( var_0 );
}
group_return_groups_with_flag_set( var_0 )
{
var_1 = [];
var_2 = level._stealth.group.groups;
foreach ( var_6, var_4 in var_2 )
{
var_5 = group_get_flagname_from_group( var_0, var_6 );
if ( common_scripts\utility::flag( var_5 ) )
var_1[var_1.size] = var_6;
}
return var_1;
}
group_return_ai_with_flag_set( var_0 )
{
var_1 = [];
var_2 = level._stealth.group.groups;
foreach ( var_7, var_4 in var_2 )
{
var_5 = group_get_flagname_from_group( var_0, var_7 );
if ( common_scripts\utility::flag( var_5 ) )
{
var_6 = group_get_ai_in_group( var_7 );
var_1 = maps\_utility::array_merge( var_1, var_6 );
}
}
return var_1;
}
group_flag_clear( var_0, var_1 )
{
var_2 = group_get_flagname_from_group( var_0, var_1 );
common_scripts\utility::flag_clear( var_2 );
var_3 = level._stealth.group.flags[var_0];
var_4 = 1;
foreach ( var_7, var_6 in var_3 )
{
if ( !issubstr( var_6, "allies" ) && common_scripts\utility::flag( var_6 ) )
return;
}
common_scripts\utility::flag_clear( var_0 );
}
group_get_ai_in_group( var_0 )
{
level._stealth.group.groups[var_0] = maps\_utility::array_removedead( level._stealth.group.groups[var_0] );
return level._stealth.group.groups[var_0];
}
group_wait_group_spawned( var_0 )
{
if ( !isdefined( level._stealth.group.groups[var_0] ) )
level._stealth.group waittill( var_0 );
}
ai_stealth_pause_handler()
{
self endon( "death" );
self endon( "pain_death" );
for (;;)
{
maps\_utility::ent_flag_waitopen( "_stealth_enabled" );
var_0 = self._stealth.behavior.ai_functions["state"]["spotted"];
switch ( self.team )
{
case "allies":
self [[ var_0 ]]();
break;
case "team3":
case "axis":
self [[ var_0 ]]( 1 );
break;
}
maps\_utility::ent_flag_wait( "_stealth_enabled" );
var_1 = self._stealth.behavior.ai_functions["state"]["hidden"];
self [[ var_1 ]]();
}
}
enemy_go_back()
{
self notify( "going_back" );
self endon( "death" );
self notify( "stop_loop" );
if ( isdefined( self._stealth.behavior.goback_startfunc ) )
self [[ self._stealth.behavior.goback_startfunc ]]();
var_0 = self._stealth.behavior.last_spot;
if ( isdefined( var_0 ) && self.type != "dog" && !isdefined( self.custommovetransition ) )
self.custommovetransition = maps\_patrol::patrol_resume_move_start_func;
if ( isdefined( self.custommovetransition ) && isdefined( self.pathgoalpos ) )
{
self setgoalpos( self.origin );
wait 0.05;
}
if ( isdefined( self.script_patroller ) )
{
if ( isdefined( self.last_patrol_goal ) )
self.target = self.last_patrol_goal.targetname;
if ( isdefined( self.stealth_first_alert_new_patrol_path ) )
{
self.target = self.stealth_first_alert_new_patrol_path.targetname;
self.stealth_first_alert_new_patrol_path = undefined;
}
thread maps\_patrol::patrol();
}
else if ( isalive( self.patrol_master ) )
{
thread maps\_patrol::pet_patrol();
maps\_utility::set_dog_walk_anim();
self.script_growl = undefined;
}
else if ( isdefined( var_0 ) )
{
if ( self.type != "dog" )
stealth_set_run_anim( "_stealth_patrol_walk", 1 );
else
{
maps\_utility::set_dog_walk_anim();
self.script_growl = undefined;
}
self.disablearrivals = 1;
self.disableexits = 1;
self setgoalpos( var_0 );
self.goalradius = 40;
}
waittillframeend;
maps\_utility::ent_flag_clear( "_stealth_override_goalpos" );
if ( isdefined( var_0 ) )
thread enemy_go_back_clear_lastspot( var_0 );
}
enemy_go_back_clear_lastspot( var_0 )
{
self endon( "death" );
self endon( "_stealth_enemy_alert_level_change" );
maps\_utility::waittill_true_goal( var_0 );
self._stealth.behavior.last_spot = undefined;
}
enemy_get_nearby_pathnodes( var_0, var_1, var_2 )
{
if ( !isdefined( var_2 ) )
var_2 = 0;
if ( isdefined( level._stealth.node_search.nodes_array ) && distancesquared( var_0, level._stealth.node_search.origin ) < 4096 && var_1 == level._stealth.node_search.radius && var_2 == level._stealth.node_search.min_radius )
return level._stealth.node_search.nodes_array;
level._stealth.node_search.origin = var_0;
level._stealth.node_search.radius = var_1;
level._stealth.node_search.min_radius = var_2;
level._stealth.node_search.nodes_array = getnodesinradius( var_0, var_1, var_2, 512, "Path" );
return level._stealth.node_search.nodes_array;
}
enemy_reaction_state_alert()
{
self.fovcosine = 0.01;
self.ignoreall = 0;
self.diequietly = 0;
maps\_utility::clear_run_anim();
self.fixednode = 0;
}
enemy_alert_level_forget( var_0, var_1 )
{
self endon( "death" );
var_0 endon( "death" );
if ( !isdefined( var_1 ) )
var_1 = 60;
wait( var_1 );
if ( isdefined( var_0._stealth.logic.spotted_list[self.unique_id] ) && var_0._stealth.logic.spotted_list[self.unique_id] > 0 )
var_0._stealth.logic.spotted_list[self.unique_id]--;
}
enemy_stop_current_behavior()
{
if ( !maps\_utility::ent_flag( "_stealth_behavior_reaction_anim" ) )
{
maps\_utility::anim_stopanimscripted();
self notify( "stop_animmode" );
self notify( "stop_loop" );
}
if ( isdefined( self.script_patroller ) )
{
if ( isdefined( self.last_patrol_goal ) )
self.last_patrol_goal.patrol_claimed = undefined;
self notify( "release_node" );
self notify( "end_patrol" );
}
self notify( "stop_first_frame" );
maps\_utility::clear_run_anim();
maps\_utility::clear_generic_idle_anim();
}
enemy_find_original_goal()
{
if ( isdefined( self._stealth.behavior.last_spot ) )
return;
if ( isdefined( self.last_set_goalnode ) )
self._stealth.behavior.last_spot = self.last_set_goalnode.origin;
else if ( isdefined( self.last_set_goalent ) )
self._stealth.behavior.last_spot = self.last_set_goalent.origin;
else if ( isdefined( self.last_set_goalpos ) )
self._stealth.behavior.last_spot = self.last_set_goalpos;
else
self._stealth.behavior.last_spot = self.origin;
}
enemy_set_original_goal( var_0 )
{
self._stealth.behavior.last_spot = var_0;
}
enemy_react_and_displace_to( var_0, var_1 )
{
self notify( "enemy_react_and_displace_to" );
self endon( "enemy_react_and_displace_to" );
self endon( "death" );
self endon( "_stealth_enemy_alert_level_change" );
if ( self.type == "dog" )
return;
if ( isdefined( var_0 ) )
var_2 = var_0.origin;
else
var_2 = var_1;
var_3 = anglestoforward( self.angles );
var_4 = vectornormalize( var_3 );
var_5 = vectortoangles( var_4 );
var_6 = vectortoangles( var_2 - self.origin );
var_7 = var_5[1] - var_6[1];
var_7 = var_7 + 360;
var_7 = int( var_7 ) % 360;
if ( var_7 > 315 || var_7 < 45 )
var_8 = "8";
else if ( var_7 < 135 )
var_8 = "6";
else if ( var_7 < 225 )
var_8 = "2";
else
var_8 = "4";
stealth_anim_custom_animmode( self, "gravity", "_stealth_idle_to_run_" + var_8 );
}
enemy_runto_and_lookaround( var_0, var_1 )
{
self notify( "enemy_runto_and_lookaround" );
self endon( "enemy_runto_and_lookaround" );
self endon( "death" );
self endon( "_stealth_enemy_alert_level_change" );
if ( self.type != "dog" )
self endon( "_stealth_saw_corpse" );
var_2 = group_get_flagname( "_stealth_spotted" );
level endon( var_2 );
self notify( "stop_loop" );
maps\_utility::ent_flag_set( "_stealth_override_goalpos" );
if ( isdefined( var_0 ) )
self setgoalnode( var_0 );
else
self setgoalpos( var_1 );
self.goalradius = 64;
self waittill( "goal" );
if ( self.type != "dog" )
stealth_set_idle_anim( "_stealth_look_around" );
}
enemy_find_free_pathnode_near( var_0, var_1, var_2 )
{
var_3 = enemy_get_nearby_pathnodes( var_0, var_1, var_2 );
if ( !isdefined( var_3 ) || var_3.size == 0 )
return;
var_4 = var_3[randomint( var_3.size )];
for ( var_3 = common_scripts\utility::array_remove( var_3, var_4 ); isdefined( var_4.owner ); var_3 = common_scripts\utility::array_remove( var_3, var_4 ) )
{
if ( var_3.size == 0 )
return;
var_4 = var_3[randomint( var_3.size )];
}
level._stealth.node_search.nodes_array = var_3;
return var_4;
}
enemy_announce_wtf()
{
if ( self.type == "dog" )
return;
if ( !enemy_announce_snd( "wtf" ) )
return;
var_0 = "stealth_" + self.npcid + "_anexplosion";
self playsound( var_0 );
}
enemy_announce_huh()
{
if ( self.type == "dog" )
return;
if ( common_scripts\utility::flag( "_stealth_spotted" ) )
return;
if ( !enemy_announce_snd( "huh" ) )
return;
var_0 = "stealth_" + self.npcid + "_huh";
self playsound( var_0 );
}
enemy_announce_hmph()
{
if ( self.type == "dog" )
return;
if ( common_scripts\utility::flag( "_stealth_spotted" ) )
return;
if ( !enemy_announce_snd( "hmph" ) )
return;
var_0 = "stealth_" + self.npcid + "_hmph";
self playsound( var_0 );
}
enemy_announce_attack()
{
self endon( "death" );
self endon( "pain_death" );
if ( self.type == "dog" )
return;
if ( !enemy_announce_snd( "spotted" ) )
return;
var_0 = get_country_prefix();
self playsound( var_0 + self.npcid + "_stealth_alert" );
}
enemy_announce_spotted( var_0 )
{
self endon( "death" );
self endon( "pain_death" );
maps\_stealth_utility::stealth_group_spotted_flag_wait();
if ( self.type == "dog" )
return;
if ( enemy_announce_snd( "spotted" ) )
{
thread enemy_announce_spotted_bring_group( var_0 );
var_1 = get_country_prefix();
var_2 = var_1 + self.npcid + "_stealth_alert";
self playsound( var_2 );
}
if ( enemy_announce_snd( "acknowledge" ) )
thread enemy_announce_spotted_acknowledge( self.origin, get_country_prefix() );
}
enemy_announce_spotted_acknowledge( var_0, var_1 )
{
wait 1.5;
if ( isdefined( self.npcid ) )
var_2 = self.npcid;
else
var_2 = randomint( 3 );
var_3 = var_1 + var_2 + "_stealth_alert_r";
common_scripts\utility::play_sound_in_space( var_3, var_0 );
}
enemy_announce_spotted_bring_group( var_0 )
{
var_1 = group_get_ai_in_group( self.script_stealthgroup );
foreach ( var_4, var_3 in var_1 )
{
if ( var_3 == self )
continue;
if ( isdefined( var_3.enemy ) || isdefined( var_3.favoriteenemy ) )
continue;
var_3 notify( "heard_scream", var_0 );
}
}
enemy_announce_corpse()
{
self endon( "death" );
if ( isdefined( self.found_corpse_wait ) )
wait( self.found_corpse_wait );
if ( !enemy_announce_snd( "corpse" ) )
return;
if ( self.type == "dog" )
{
maps\_utility::ent_flag_waitopen( "_stealth_behavior_reaction_anim_in_progress" );
self notify( "event_awareness", "howl" );
return;
}
var_0 = "stealth_" + self.npcid + "_deadbody";
self playsound( var_0 );
}
enemy_announce_snd( var_0 )
{
if ( var_0 == "spotted" )
{
if ( level._stealth.behavior.sound[var_0][self.script_stealthgroup] )
return 0;
level._stealth.behavior.sound[var_0][self.script_stealthgroup] = 1;
}
else
{
if ( level._stealth.behavior.sound[var_0] )
return 0;
level._stealth.behavior.sound[var_0] = 1;
thread enemy_announce_snd_reset( var_0 );
}
return 1;
}
enemy_announce_snd_reset( var_0 )
{
wait( level._stealth.behavior.sound_reset_time );
level._stealth.behavior.sound[var_0] = 0;
}
enemy_animation_wrapper( var_0 )
{
self endon( "death" );
self endon( "pain_death" );
if ( enemy_animation_pre_anim( var_0 ) )
return;
enemy_animation_do_anim( var_0 );
enemy_animation_post_anim( var_0 );
}
enemy_animation_do_anim( var_0 )
{
if ( isdefined( self._stealth.behavior.event.custom_animation ) )
{
enemy_animation_custom( var_0 );
return;
}
var_1 = self._stealth.behavior.ai_functions["animation"][var_0];
self [[ var_1 ]]( var_0 );
}
enemy_animation_custom( var_0 )
{
var_1 = self._stealth.behavior.event.custom_animation.node;
var_2 = self._stealth.behavior.event.custom_animation.anime;
var_3 = self._stealth.behavior.event.custom_animation.tag;
var_4 = self._stealth.behavior.event.custom_animation.ender;
maps\_utility::ent_flag_set( "_stealth_behavior_reaction_anim" );
self.allowdeath = 1;
var_1 notify( var_4 );
if ( isdefined( self.anim_props ) )
{
self.anim_props_animated = 1;
var_1 thread maps\_anim::anim_single( self.anim_props, var_2 );
}
if ( var_0 != "doFlashBanged" )
{
if ( isdefined( var_3 ) || isdefined( self.has_delta ) )
var_1 stealth_anim( self, var_2, var_3 );
else
var_1 stealth_anim_custom_animmode( self, "gravity", var_2 );
}
ai_clear_custom_animation_reaction();
}
enemy_animation_pre_anim( var_0 )
{
self notify( "enemy_awareness_reaction", var_0 );
if ( maps\_utility::ent_flag( "_stealth_behavior_first_reaction" ) || maps\_utility::ent_flag( "_stealth_behavior_reaction_anim_in_progress" ) )
return 1;
enemy_stop_current_behavior();
if ( issubstr( var_0, "warning" ) )
var_0 = "warning";
switch ( var_0 )
{
case "found_corpse":
case "saw_corpse":
case "heard_corpse":
case "explode":
maps\_utility::ent_flag_set( "_stealth_behavior_reaction_anim" );
break;
case "reset":
case "warning":
break;
default:
if ( !maps\_utility::ent_flag_exist( "_stealth_behavior_asleep" ) || !maps\_utility::ent_flag( "_stealth_behavior_asleep" ) || maps\_stealth_utility::stealth_group_spotted_flag() )
{
maps\_utility::ent_flag_set( "_stealth_behavior_first_reaction" );
thread enemy_animation_pre_anim_dog_special_first_condition();
}
maps\_utility::ent_flag_set( "_stealth_behavior_reaction_anim" );
break;
}
maps\_utility::ent_flag_set( "_stealth_behavior_reaction_anim_in_progress" );
return 0;
}
enemy_animation_pre_anim_dog_special_first_condition()
{
var_0 = group_get_flagname( "_stealth_spotted" );
self endon( "death" );
common_scripts\utility::flag_wait_or_timeout( var_0, 3 );
if ( common_scripts\utility::flag( var_0 ) )
maps\_utility::ent_flag_set( "_stealth_behavior_first_reaction" );
}
enemy_animation_post_anim( var_0 )
{
switch ( var_0 )
{
default:
maps\_utility::ent_flag_clear( "_stealth_behavior_reaction_anim" );
break;
}
maps\_utility::ent_flag_clear( "_stealth_behavior_reaction_anim_in_progress" );
}
ai_clear_custom_animation_reaction()
{
self._stealth.behavior.event.custom_animation = undefined;
self.newenemyreactiondistsq = squared( 512 );
}
ai_clear_custom_animation_reaction_and_idle( var_0 )
{
if ( !isdefined( self._stealth.behavior.event.custom_animation ) )
return;
self._stealth.behavior.event.custom_animation.node notify( "stop_loop" );
if ( !isdefined( var_0 ) || var_0 == 0 )
self stopanimscripted();
ai_clear_custom_animation_reaction();
}
ai_set_custom_animation_reaction( var_0, var_1, var_2, var_3 )
{
self._stealth.behavior.event.custom_animation = spawnstruct();
self._stealth.behavior.event.custom_animation.node = var_0;
self._stealth.behavior.event.custom_animation.anime = var_1;
self._stealth.behavior.event.custom_animation.tag = var_2;
self._stealth.behavior.event.custom_animation.ender = var_3;
thread ai_animate_props_on_death( var_0, var_1, var_2, var_3 );
self.newenemyreactiondistsq = 0;
}
ai_animate_props_on_death( var_0, var_1, var_2, var_3 )
{
wait 0.1;
if ( !isdefined( self.anim_props ) )
return;
var_4 = self.anim_props;
self waittill( "death" );
if ( isdefined( self.anim_props_animated ) )
return;
var_0 thread maps\_anim::anim_single( var_4, var_1 );
}
event_awareness_main( var_0, var_1 )
{
level notify( "event_awareness_handler" );
level endon( "event_awareness_handler" );
level endon( "default_event_awareness_enders" );
event_awareness_enders( var_1 );
maps\_utility::add_wait( maps\_utility::waittill_msg, "event_awareness_handler" );
maps\_utility::add_wait( maps\_utility::waittill_msg, "default_event_awareness_enders" );
maps\_utility::add_func( common_scripts\utility::flag_clear, "_stealth_event" );
thread maps\_utility::do_wait_any();
for (;;)
{
common_scripts\utility::flag_wait( "_stealth_enabled" );
common_scripts\utility::flag_wait( "_stealth_event" );
if ( !common_scripts\utility::flag( "_stealth_enabled" ) )
continue;
wait 2;
event_awareness_dialogue_wrapper( var_0 );
common_scripts\utility::flag_waitopen( "_stealth_event" );
}
}
event_awareness_dialogue_wrapper( var_0 )
{
wait( randomfloatrange( 0.5, 1 ) );
if ( !isdefined( var_0 ) )
return;
var_1 = common_scripts\utility::random( var_0 );
level thread maps\_utility::function_stack( maps\_utility::radio_dialogue, var_1 );
}
event_awareness_enders( var_0 )
{
level endon( "default_event_awareness_enders" );
level endon( "event_awareness_handler" );
if ( isdefined( var_0 ) )
{
foreach ( var_2 in var_0 )
{
if ( common_scripts\utility::flag_exist( var_2 ) && common_scripts\utility::flag( var_2 ) )
level notify( "default_event_awareness_enders" );
}
foreach ( var_2 in var_0 )
maps\_utility::add_wait( maps\_utility::waittill_msg, var_2 );
}
maps\_utility::add_wait( common_scripts\utility::flag_wait, "_stealth_spotted" );
maps\_utility::add_wait( maps\_utility::waittill_msg, "end_event_awareness_handler" );
maps\_utility::add_wait( maps\_utility::waittill_msg, "event_awareness_handler" );
maps\_utility::add_func( maps\_utility::send_notify, "default_event_awareness_enders" );
thread maps\_utility::do_wait_any();
}
_autosave_stealthcheck()
{
if ( !maps\_stealth_utility::stealth_is_everything_normal() )
return 0;
if ( common_scripts\utility::flag( "_stealth_player_nade" ) )
return 0;
if ( common_scripts\utility::flag_exist( "_radiation_poisoning" ) )
{
if ( common_scripts\utility::flag( "_radiation_poisoning" ) )
return 0;
}
var_0 = getentarray( "destructible", "classname" );
foreach ( var_2 in var_0 )
{
if ( isdefined( var_2.healthdrain ) )
return 0;
}
var_4 = getentarray( "grenade", "classname" );
if ( var_4.size > 0 )
return 0;
return 1;
}
_patrol_endon_spotted_flag()
{
var_0 = maps\_stealth_utility::stealth_get_group_spotted_flag();
var_1 = maps\_stealth_utility::stealth_get_group_corpse_flag();
maps\_utility::add_wait( common_scripts\utility::flag_wait, var_0 );
maps\_utility::add_wait( common_scripts\utility::flag_wait, var_1 );
maps\_utility::add_abort( maps\_utility::waittill_msg, "death" );
maps\_utility::add_func( maps\_utility::send_notify, "end_patrol" );
thread maps\_utility::do_wait_any();
}
_spawner_stealth_default()
{
thread maps\_stealth_utility::stealth_default();
}
stealth_set_run_anim( var_0, var_1 )
{
if ( isdefined( self.script_animation ) && isdefined( level.scr_anim["generic"][var_0 + "_" + self.script_animation] ) )
{
maps\_utility::set_generic_run_anim( var_0 + "_" + self.script_animation, var_1 );
return;
}
maps\_utility::set_generic_run_anim( var_0, var_1 );
}
stealth_set_idle_anim( var_0 )
{
if ( isdefined( self.script_animation ) && isdefined( level.scr_anim["generic"][var_0 + "_" + self.script_animation] ) )
{
maps\_utility::set_generic_idle_anim( var_0 + "_" + self.script_animation );
return;
}
maps\_utility::set_generic_idle_anim( var_0 );
}
stealth_anim_custom_animmode( var_0, var_1, var_2, var_3 )
{
if ( isdefined( var_0.script_animation ) && isdefined( level.scr_anim["generic"][var_2 + "_" + var_0.script_animation] ) )
{
maps\_anim::anim_custom_animmode_solo( var_0, var_1, var_2 + "_" + var_0.script_animation, var_3 );
return;
}
maps\_anim::anim_generic_custom_animmode( var_0, var_1, var_2, var_3 );
}
stealth_anim( var_0, var_1, var_2 )
{
if ( isdefined( var_0.script_animation ) && isdefined( level.scr_anim["generic"][var_1 + "_" + var_0.script_animation] ) )
{
maps\_anim::anim_single_solo( var_0, var_1 + "_" + var_0.script_animation, var_2 );
return;
}
maps\_anim::anim_generic( var_0, var_1, var_2 );
}
get_country_prefix()
{
var_0 = self.voice;
switch ( var_0 )
{
case "african":
return "AF_";
case "american":
return "US_";
case "arab":
return "AB_";
case "british":
return "UK_";
case "czech":
return "CZ_";
case "delta":
return "DF_";
case "french":
return "FR_";
case "pmc":
return "PC_";
case "portugese":
return "PG_";
case "seal":
return "GS_";
case "secretservice":
return "SS_";
case "russian":
case "shadowcompany":
return "SP_";
case "taskforce":
return "tf_";
default:
return undefined;
}
}