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

10233 lines
220 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
set_hudoutline( var_0, var_1 )
{
var_2 = undefined;
var_0 = tolower( var_0 );
var_3["friendly"] = 3;
var_3["enemy"] = 4;
var_3["objective"] = 5;
var_3["neutral"] = 0;
var_2 = var_3[var_0];
self hudoutlineenable( var_2, var_1 );
}
is_coop()
{
if ( issplitscreen() || getdvar( "coop" ) == "1" )
return 1;
return 0;
}
is_coop_online()
{
if ( issplitscreen() )
return 0;
if ( !is_coop() )
return 0;
return 1;
}
is_player_down( var_0 )
{
if ( var_0 ent_flag_exist( "laststand_downed" ) )
return var_0 ent_flag( "laststand_downed" );
if ( isdefined( var_0.laststand ) )
return var_0.laststand;
return !isalive( var_0 );
}
is_player_down_and_out( var_0 )
{
if ( !isdefined( var_0.down_part2_proc_ran ) )
return 0;
return var_0.down_part2_proc_ran;
}
killing_will_down( var_0 )
{
if ( laststand_enabled() )
{
if ( isdefined( level.laststand_kill_will_down_func ) )
return var_0 [[ level.laststand_kill_will_down_func ]]();
}
return 0;
}
is_survival()
{
return is_specialop() && getdvarint( "so_survival" ) > 0;
}
laststand_enabled()
{
return isdefined( level.laststand_type ) && level.laststand_type > 0;
}
is_specialop()
{
return getdvarint( "specialops" ) >= 1;
}
convert_to_time_string( var_0, var_1 )
{
var_2 = "";
if ( var_0 < 0 )
var_2 = var_2 + "-";
var_0 = round_float( var_0, 1, 0 );
var_3 = var_0 * 100;
var_3 = int( var_3 );
var_3 = abs( var_3 );
var_4 = var_3 / 6000;
var_4 = int( var_4 );
var_2 = var_2 + var_4;
var_5 = var_3 / 100;
var_5 = int( var_5 );
var_5 = var_5 - var_4 * 60;
if ( var_5 < 10 )
var_2 = var_2 + ( ":0" + var_5 );
else
var_2 = var_2 + ( ":" + var_5 );
if ( isdefined( var_1 ) && var_1 )
{
var_6 = var_3;
var_6 = var_6 - var_4 * 6000;
var_6 = var_6 - var_5 * 100;
var_6 = int( var_6 / 10 );
var_2 = var_2 + ( "." + var_6 );
}
return var_2;
}
round_float( var_0, var_1, var_2 )
{
var_1 = int( var_1 );
if ( var_1 < 0 || var_1 > 4 )
return var_0;
var_3 = 1;
for ( var_4 = 1; var_4 <= var_1; var_4++ )
var_3 = var_3 * 10;
var_5 = var_0 * var_3;
if ( !isdefined( var_2 ) || var_2 )
var_5 = floor( var_5 );
else
var_5 = ceil( var_5 );
var_0 = var_5 / var_3;
return var_0;
}
round_millisec_on_sec( var_0, var_1, var_2 )
{
var_3 = var_0 / 1000;
var_3 = round_float( var_3, var_1, var_2 );
var_0 = var_3 * 1000;
return int( var_0 );
}
set_vision_set( var_0, var_1 )
{
if ( maps\_utility_code::init_vision_set( var_0 ) )
return;
if ( !isdefined( var_1 ) )
var_1 = 1;
visionsetnaked( var_0, var_1 );
setdvar( "vision_set_current", var_0 );
}
set_vision_set_player( var_0, var_1 )
{
if ( maps\_utility_code::init_vision_set( var_0 ) )
return;
if ( !isdefined( var_1 ) )
var_1 = 1;
self visionsetnakedforplayer( var_0, var_1 );
}
sun_light_fade( var_0, var_1, var_2 )
{
var_2 = int( var_2 * 20 );
var_3 = [];
for ( var_4 = 0; var_4 < 3; var_4++ )
var_3[var_4] = ( var_0[var_4] - var_1[var_4] ) / var_2;
var_5 = [];
for ( var_4 = 0; var_4 < var_2; var_4++ )
{
wait 0.05;
for ( var_6 = 0; var_6 < 3; var_6++ )
var_5[var_6] = var_0[var_6] - var_3[var_6] * var_4;
setsunlight( var_5[0], var_5[1], var_5[2] );
}
setsunlight( var_1[0], var_1[1], var_1[2] );
}
ent_flag_wait( var_0 )
{
while ( isdefined( self ) && !self.ent_flag[var_0] )
self waittill( var_0 );
}
ent_flag_wait_vehicle_node( var_0 )
{
while ( isdefined( self ) && !self.ent_flag[var_0] )
self waittill( var_0 );
}
ent_flag_wait_either( var_0, var_1 )
{
while ( isdefined( self ) )
{
if ( ent_flag( var_0 ) )
return;
if ( ent_flag( var_1 ) )
return;
common_scripts\utility::waittill_either( var_0, var_1 );
}
}
ent_flag_wait_or_timeout( var_0, var_1 )
{
var_2 = gettime();
while ( isdefined( self ) )
{
if ( self.ent_flag[var_0] )
break;
if ( gettime() >= var_2 + var_1 * 1000 )
break;
maps\_utility_code::ent_wait_for_flag_or_time_elapses( var_0, var_1 );
}
}
ent_flag_waitopen( var_0 )
{
while ( isdefined( self ) && self.ent_flag[var_0] )
self waittill( var_0 );
}
ent_flag_assert( var_0 )
{
}
ent_flag_waitopen_either( var_0, var_1 )
{
while ( isdefined( self ) )
{
if ( !ent_flag( var_0 ) )
return;
if ( !ent_flag( var_1 ) )
return;
common_scripts\utility::waittill_either( var_0, var_1 );
}
}
ent_flag_init( var_0 )
{
if ( !isdefined( self.ent_flag ) )
{
self.ent_flag = [];
self.ent_flags_lock = [];
}
self.ent_flag[var_0] = 0;
}
ent_flag_exist( var_0 )
{
if ( isdefined( self.ent_flag ) && isdefined( self.ent_flag[var_0] ) )
return 1;
return 0;
}
ent_flag_set_delayed( var_0, var_1 )
{
self endon( "death" );
wait( var_1 );
ent_flag_set( var_0 );
}
ent_flag_set( var_0 )
{
self.ent_flag[var_0] = 1;
self notify( var_0 );
}
ent_flag_clear( var_0, var_1 )
{
if ( self.ent_flag[var_0] )
{
self.ent_flag[var_0] = 0;
self notify( var_0 );
}
if ( isdefined( var_1 ) && var_1 )
self.ent_flag[var_0] = undefined;
}
ent_flag_clear_delayed( var_0, var_1 )
{
wait( var_1 );
ent_flag_clear( var_0 );
}
ent_flag( var_0 )
{
return self.ent_flag[var_0];
}
get_closest_to_player_view( var_0, var_1, var_2, var_3 )
{
if ( !var_0.size )
return;
if ( !isdefined( var_1 ) )
var_1 = level.player;
if ( !isdefined( var_3 ) )
var_3 = -1;
var_4 = var_1.origin;
if ( isdefined( var_2 ) && var_2 )
var_4 = var_1 geteye();
var_5 = undefined;
var_6 = var_1 getplayerangles();
var_7 = anglestoforward( var_6 );
var_8 = -1;
foreach ( var_10 in var_0 )
{
var_11 = vectortoangles( var_10.origin - var_4 );
var_12 = anglestoforward( var_11 );
var_13 = vectordot( var_7, var_12 );
if ( var_13 < var_8 )
continue;
if ( var_13 < var_3 )
continue;
var_8 = var_13;
var_5 = var_10;
}
return var_5;
}
get_closest_index_to_player_view( var_0, var_1, var_2 )
{
if ( !var_0.size )
return;
if ( !isdefined( var_1 ) )
var_1 = level.player;
var_3 = var_1.origin;
if ( isdefined( var_2 ) && var_2 )
var_3 = var_1 geteye();
var_4 = undefined;
var_5 = var_1 getplayerangles();
var_6 = anglestoforward( var_5 );
var_7 = -1;
for ( var_8 = 0; var_8 < var_0.size; var_8++ )
{
var_9 = vectortoangles( var_0[var_8].origin - var_3 );
var_10 = anglestoforward( var_9 );
var_11 = vectordot( var_6, var_10 );
if ( var_11 < var_7 )
continue;
var_7 = var_11;
var_4 = var_8;
}
return var_4;
}
flag_trigger_init( var_0, var_1, var_2 )
{
common_scripts\utility::flag_init( var_0 );
if ( !isdefined( var_2 ) )
var_2 = 0;
var_1 thread maps\_utility_code::_flag_wait_trigger( var_0, var_2 );
return var_1;
}
flag_triggers_init( var_0, var_1, var_2 )
{
common_scripts\utility::flag_init( var_0 );
if ( !isdefined( var_2 ) )
var_2 = 0;
for ( var_3 = 0; var_3 < var_1.size; var_3++ )
var_1[var_3] thread maps\_utility_code::_flag_wait_trigger( var_0, 0 );
return var_1;
}
flag_clear_delayed( var_0, var_1 )
{
wait( var_1 );
common_scripts\utility::flag_clear( var_0 );
}
level_end_save()
{
if ( arcademode() )
return;
if ( level.missionfailed )
return;
if ( common_scripts\utility::flag( "game_saving" ) )
return;
for ( var_0 = 0; var_0 < level.players.size; var_0++ )
{
var_1 = level.players[var_0];
if ( !isalive( var_1 ) )
return;
}
common_scripts\utility::flag_set( "game_saving" );
var_2 = "levelshots / autosave / autosave_" + level.script + "end";
savegame( "levelend", &"AUTOSAVE_AUTOSAVE", var_2, 1 );
common_scripts\utility::flag_clear( "game_saving" );
}
add_extra_autosave_check( var_0, var_1, var_2 )
{
level._extra_autosave_checks[var_0] = [];
level._extra_autosave_checks[var_0]["func"] = var_1;
level._extra_autosave_checks[var_0]["msg"] = var_2;
}
remove_extra_autosave_check( var_0 )
{
level._extra_autosave_checks[var_0] = undefined;
}
autosave_stealth()
{
thread autosave_by_name_thread( "autosave_stealth", 8, 1 );
}
autosave_stealth_silent()
{
thread autosave_by_name_thread( "autosave_stealth", 8, 1, 1 );
}
autosave_tactical()
{
maps\_utility_code::autosave_tactical_setup();
thread maps\_utility_code::autosave_tactical_proc();
}
autosave_by_name( var_0 )
{
thread autosave_by_name_thread( var_0 );
}
autosave_by_name_silent( var_0 )
{
thread autosave_by_name_thread( var_0, undefined, undefined, 1 );
}
autosave_by_name_thread( var_0, var_1, var_2, var_3 )
{
if ( !isdefined( level.curautosave ) )
level.curautosave = 1;
var_4 = "levelshots/autosave/autosave_" + level.script + level.curautosave;
var_5 = level maps\_autosave::tryautosave( level.curautosave, "autosave", var_4, var_1, var_2, var_3 );
if ( isdefined( var_5 ) && var_5 )
level.curautosave++;
}
autosave_or_timeout( var_0, var_1 )
{
thread autosave_by_name_thread( var_0, var_1 );
}
debug_message( var_0, var_1, var_2, var_3 )
{
if ( !isdefined( var_2 ) )
var_2 = 5;
if ( isdefined( var_3 ) )
{
var_3 endon( "death" );
var_1 = var_3.origin;
}
for ( var_4 = 0; var_4 < var_2 * 20; var_4++ )
{
if ( !isdefined( var_3 ) )
{
}
else
{
}
wait 0.05;
}
}
debug_message_ai( var_0, var_1 )
{
self notify( "debug_message_ai" );
self endon( "debug_message_ai" );
self endon( "death" );
if ( !isdefined( var_1 ) )
var_1 = 5;
for ( var_2 = 0; var_2 < var_1 * 20; var_2++ )
wait 0.05;
}
debug_message_clear( var_0, var_1, var_2, var_3 )
{
if ( isdefined( var_3 ) )
{
level notify( var_0 + var_3 );
level endon( var_0 + var_3 );
}
else
{
level notify( var_0 );
level endon( var_0 );
}
if ( !isdefined( var_2 ) )
var_2 = 5;
for ( var_4 = 0; var_4 < var_2 * 20; var_4++ )
wait 0.05;
}
precache( var_0 )
{
var_1 = spawn( "script_model", ( 0, 0, 0 ) );
var_1.origin = level.player getorigin();
var_1 setmodel( var_0 );
var_1 delete();
}
closerfunc( var_0, var_1 )
{
return var_0 >= var_1;
}
fartherfunc( var_0, var_1 )
{
return var_0 <= var_1;
}
getclosestfx( var_0, var_1, var_2 )
{
return maps\_utility_code::comparesizesfx( var_0, var_1, var_2, ::closerfunc );
}
get_closest_point( var_0, var_1, var_2 )
{
var_3 = var_1[0];
var_4 = distance( var_0, var_3 );
for ( var_5 = 0; var_5 < var_1.size; var_5++ )
{
var_6 = distance( var_0, var_1[var_5] );
if ( var_6 >= var_4 )
continue;
var_4 = var_6;
var_3 = var_1[var_5];
}
if ( !isdefined( var_2 ) || var_4 <= var_2 )
return var_3;
return undefined;
}
get_farthest_ent( var_0, var_1 )
{
if ( var_1.size < 1 )
return;
var_2 = distance( var_1[0] getorigin(), var_0 );
var_3 = var_1[0];
for ( var_4 = 0; var_4 < var_1.size; var_4++ )
{
var_5 = distance( var_1[var_4] getorigin(), var_0 );
if ( var_5 < var_2 )
continue;
var_2 = var_5;
var_3 = var_1[var_4];
}
return var_3;
}
get_within_range( var_0, var_1, var_2 )
{
var_3 = [];
for ( var_4 = 0; var_4 < var_1.size; var_4++ )
{
if ( distance( var_1[var_4].origin, var_0 ) <= var_2 )
var_3[var_3.size] = var_1[var_4];
}
return var_3;
}
get_outside_range( var_0, var_1, var_2 )
{
var_3 = [];
for ( var_4 = 0; var_4 < var_1.size; var_4++ )
{
if ( distance( var_1[var_4].origin, var_0 ) > var_2 )
var_3[var_3.size] = var_1[var_4];
}
return var_3;
}
get_closest_living( var_0, var_1, var_2 )
{
if ( !isdefined( var_2 ) )
var_2 = 9999999;
if ( var_1.size < 1 )
return;
var_3 = undefined;
for ( var_4 = 0; var_4 < var_1.size; var_4++ )
{
if ( !isalive( var_1[var_4] ) )
continue;
var_5 = distance( var_1[var_4].origin, var_0 );
if ( var_5 >= var_2 )
continue;
var_2 = var_5;
var_3 = var_1[var_4];
}
return var_3;
}
get_highest_dot( var_0, var_1, var_2 )
{
if ( !var_2.size )
return;
var_3 = undefined;
var_4 = vectortoangles( var_1 - var_0 );
var_5 = anglestoforward( var_4 );
var_6 = -1;
foreach ( var_8 in var_2 )
{
var_4 = vectortoangles( var_8.origin - var_0 );
var_9 = anglestoforward( var_4 );
var_10 = vectordot( var_5, var_9 );
if ( var_10 < var_6 )
continue;
var_6 = var_10;
var_3 = var_8;
}
return var_3;
}
get_closest_index( var_0, var_1, var_2 )
{
if ( !isdefined( var_2 ) )
var_2 = 9999999;
if ( var_1.size < 1 )
return;
var_3 = undefined;
foreach ( var_7, var_5 in var_1 )
{
var_6 = distance( var_5.origin, var_0 );
if ( var_6 >= var_2 )
continue;
var_2 = var_6;
var_3 = var_7;
}
return var_3;
}
get_closest_exclude( var_0, var_1, var_2 )
{
if ( !isdefined( var_1 ) )
return undefined;
var_3 = 0;
if ( isdefined( var_2 ) && var_2.size )
{
var_4 = [];
for ( var_5 = 0; var_5 < var_1.size; var_5++ )
var_4[var_5] = 0;
for ( var_5 = 0; var_5 < var_1.size; var_5++ )
{
for ( var_6 = 0; var_6 < var_2.size; var_6++ )
{
if ( var_1[var_5] == var_2[var_6] )
var_4[var_5] = 1;
}
}
var_7 = 0;
for ( var_5 = 0; var_5 < var_1.size; var_5++ )
{
if ( !var_4[var_5] && isdefined( var_1[var_5] ) )
{
var_7 = 1;
var_3 = distance( var_0, var_1[var_5].origin );
var_8 = var_5;
var_5 = var_1.size + 1;
}
}
if ( !var_7 )
return undefined;
}
else
{
for ( var_5 = 0; var_5 < var_1.size; var_5++ )
{
if ( isdefined( var_1[var_5] ) )
{
var_3 = distance( var_0, var_1[0].origin );
var_8 = var_5;
var_5 = var_1.size + 1;
}
}
}
var_8 = undefined;
for ( var_5 = 0; var_5 < var_1.size; var_5++ )
{
if ( isdefined( var_1[var_5] ) )
{
var_4 = 0;
if ( isdefined( var_2 ) )
{
for ( var_6 = 0; var_6 < var_2.size; var_6++ )
{
if ( var_1[var_5] == var_2[var_6] )
var_4 = 1;
}
}
if ( !var_4 )
{
var_9 = distance( var_0, var_1[var_5].origin );
if ( var_9 <= var_3 )
{
var_3 = var_9;
var_8 = var_5;
}
}
}
}
if ( isdefined( var_8 ) )
return var_1[var_8];
else
return undefined;
}
get_closest_player( var_0 )
{
if ( level.players.size == 1 )
return level.player;
var_1 = common_scripts\utility::getclosest( var_0, level.players );
return var_1;
}
get_closest_player_healthy( var_0 )
{
if ( level.players.size == 1 )
return level.player;
var_1 = get_players_healthy();
var_2 = common_scripts\utility::getclosest( var_0, var_1 );
return var_2;
}
get_players_healthy()
{
var_0 = [];
foreach ( var_2 in level.players )
{
if ( is_player_down( var_2 ) )
continue;
var_0[var_0.size] = var_2;
}
return var_0;
}
get_closest_ai( var_0, var_1, var_2 )
{
if ( isdefined( var_1 ) )
var_3 = getaiarray( var_1 );
else
var_3 = getaiarray();
if ( var_3.size == 0 )
return undefined;
if ( isdefined( var_2 ) )
var_3 = common_scripts\utility::array_remove_array( var_3, var_2 );
return common_scripts\utility::getclosest( var_0, var_3 );
}
get_closest_ai_exclude( var_0, var_1, var_2 )
{
if ( isdefined( var_1 ) )
var_3 = getaiarray( var_1 );
else
var_3 = getaiarray();
if ( var_3.size == 0 )
return undefined;
return get_closest_exclude( var_0, var_3, var_2 );
}
get_progress( var_0, var_1, var_2, var_3 )
{
if ( !isdefined( var_3 ) )
var_3 = distance( var_0, var_1 );
var_3 = max( 0.01, var_3 );
var_4 = vectornormalize( var_1 - var_0 );
var_5 = var_2 - var_0;
var_6 = vectordot( var_5, var_4 );
var_6 = var_6 / var_3;
var_6 = clamp( var_6, 0, 1 );
return var_6;
}
can_see_origin( var_0, var_1 )
{
if ( !isdefined( var_1 ) )
var_1 = 1;
if ( !point_in_fov( var_0 ) )
return 0;
if ( !sighttracepassed( self geteye(), var_0, var_1, self ) )
return 0;
return 1;
}
point_in_fov( var_0 )
{
var_1 = anglestoforward( self.angles );
var_2 = vectornormalize( var_0 - self.origin );
var_3 = vectordot( var_1, var_2 );
return var_3 > 0.766;
}
stop_magic_bullet_shield()
{
self notify( "stop_magic_bullet_shield" );
if ( isai( self ) )
self.attackeraccuracy = 1;
self.magic_bullet_shield = undefined;
self.damageshield = 0;
self notify( "internal_stop_magic_bullet_shield" );
}
magic_bullet_death_detection()
{
}
magic_bullet_shield( var_0 )
{
if ( isai( self ) )
{
}
else
self.health = 100000;
self endon( "internal_stop_magic_bullet_shield" );
if ( isai( self ) )
self.attackeraccuracy = 0.1;
self notify( "magic_bullet_shield" );
self.magic_bullet_shield = 1;
self.damageshield = 1;
}
disable_long_death()
{
self.a.disablelongdeath = 1;
}
enable_long_death()
{
self.a.disablelongdeath = 0;
}
enable_blood_pool()
{
self.skipbloodpool = undefined;
}
disable_blood_pool()
{
self.skipbloodpool = 1;
}
deletable_magic_bullet_shield()
{
magic_bullet_shield( 1 );
}
get_ignoreme()
{
return self.ignoreme;
}
set_ignoreme( var_0 )
{
self.ignoreme = var_0;
}
set_ignoreall( var_0 )
{
self.ignoreall = var_0;
}
set_favoriteenemy( var_0 )
{
self.favoriteenemy = var_0;
}
get_pacifist()
{
return self.pacifist;
}
set_pacifist( var_0 )
{
self.pacifist = var_0;
}
ignore_me_timer( var_0 )
{
self notify( "new_ignore_me_timer" );
self endon( "new_ignore_me_timer" );
self endon( "death" );
if ( !isdefined( self.ignore_me_timer_prev_value ) )
self.ignore_me_timer_prev_value = self.ignoreme;
var_1 = getaiarray( "bad_guys" );
foreach ( var_3 in var_1 )
{
if ( !isalive( var_3.enemy ) )
continue;
if ( var_3.enemy != self )
continue;
var_3 clearenemy();
}
self.ignoreme = 1;
wait( var_0 );
self.ignoreme = self.ignore_me_timer_prev_value;
self.ignore_me_timer_prev_value = undefined;
}
delete_exploder( var_0 )
{
common_scripts\_exploder::delete_exploder_proc( var_0 );
}
hide_exploder_models( var_0 )
{
common_scripts\_exploder::hide_exploder_models_proc( var_0 );
}
show_exploder_models( var_0 )
{
common_scripts\_exploder::show_exploder_models_proc( var_0 );
}
stop_exploder( var_0 )
{
common_scripts\_exploder::stop_exploder_proc( var_0 );
}
get_exploder_array( var_0 )
{
return common_scripts\_exploder::get_exploder_array_proc( var_0 );
}
flood_spawn( var_0 )
{
maps\_spawner::flood_spawner_scripted( var_0 );
}
force_crawling_death( var_0, var_1, var_2, var_3 )
{
if ( !isdefined( var_1 ) )
var_1 = 4;
thread force_crawling_death_proc( var_0, var_1, var_2, var_3 );
}
#using_animtree("generic_human");
override_crawl_death_anims()
{
if ( isdefined( self.a.custom_crawling_death_array ) )
{
self.a.array["crawl"] = self.a.custom_crawling_death_array["crawl"];
self.a.array["death"] = self.a.custom_crawling_death_array["death"];
self.a.crawl_fx_rate = self.a.custom_crawling_death_array["blood_fx_rate"];
if ( isdefined( self.a.custom_crawling_death_array["blood_fx"] ) )
self.a.crawl_fx = self.a.custom_crawling_death_array["blood_fx"];
}
self.a.array["stand_2_crawl"] = [];
self.a.array["stand_2_crawl"][0] = %dying_stand_2_crawl_v3;
if ( isdefined( self.nofallanim ) )
self.a.pose = "prone";
self orientmode( "face angle", self.a.force_crawl_angle );
self.a.force_crawl_angle = undefined;
}
force_crawling_death_proc( var_0, var_1, var_2, var_3 )
{
self.forcelongdeath = 1;
self.a.force_num_crawls = var_1;
self.noragdoll = 1;
self.nofallanim = var_3;
self.a.custom_crawling_death_array = var_2;
self.crawlingpainanimoverridefunc = ::override_crawl_death_anims;
self.maxhealth = 100000;
self.health = 100000;
enable_long_death();
if ( !isdefined( var_3 ) || var_3 == 0 )
self.a.force_crawl_angle = var_0 + 181.02;
else
{
self.a.force_crawl_angle = var_0;
thread animscripts\notetracks::notetrackposecrawl();
}
}
shock_ondeath()
{
precacheshellshock( "default" );
self waittill( "death" );
if ( isdefined( self.specialdeath ) )
return;
if ( getdvar( "r_texturebits" ) == "16" )
return;
self shellshock( "default", 3 );
}
playerwatch_unresolved_collision()
{
self endon( "death" );
self endon( "stop_unresolved_collision_script" );
reset_unresolved_collision_handler();
childthread playerwatch_unresolved_collision_count();
for (;;)
{
if ( self.unresolved_collision )
{
self.unresolved_collision = 0;
if ( self.unresolved_collision_count >= 20 )
{
if ( isdefined( self.handle_unresolved_collision ) )
self [[ self.handle_unresolved_collision ]]();
else
default_unresolved_collision_handler();
}
}
else
reset_unresolved_collision_handler();
wait 0.05;
}
}
playerwatch_unresolved_collision_count()
{
for (;;)
{
self waittill( "unresolved_collision" );
self.unresolved_collision = 1;
self.unresolved_collision_count++;
}
}
reset_unresolved_collision_handler()
{
self.unresolved_collision = 0;
self.unresolved_collision_count = 0;
}
default_unresolved_collision_handler()
{
var_0 = getnodesinradiussorted( self.origin, 300, 0, 200, "Path" );
if ( var_0.size )
{
self cancelmantle();
self dontinterpolate();
self setorigin( var_0[0].origin );
reset_unresolved_collision_handler();
}
else
self kill();
}
stop_playerwatch_unresolved_collision()
{
self notify( "stop_unresolved_collision_script" );
reset_unresolved_collision_handler();
}
delete_on_death_wait_sound( var_0, var_1 )
{
var_0 endon( "death" );
self waittill( "death" );
if ( isdefined( var_0 ) )
{
if ( var_0 iswaitingonsound() )
var_0 waittill( var_1 );
var_0 delete();
}
}
is_dead_sentient()
{
return issentient( self ) && !isalive( self );
}
play_sound_on_tag( var_0, var_1, var_2, var_3, var_4 )
{
if ( is_dead_sentient() )
return;
var_5 = spawn( "script_origin", ( 0, 0, 0 ) );
var_5 endon( "death" );
thread delete_on_death_wait_sound( var_5, "sounddone" );
if ( isdefined( var_1 ) )
var_5 linkto( self, var_1, ( 0, 0, 0 ), ( 0, 0, 0 ) );
else
{
var_5.origin = self.origin;
var_5.angles = self.angles;
var_5 linkto( self );
}
var_5 playsound( var_0, "sounddone" );
if ( isdefined( var_2 ) )
{
if ( !isdefined( maps\_utility_code::wait_for_sounddone_or_death( var_5 ) ) )
var_5 stopsounds();
wait 0.05;
}
else
var_5 waittill( "sounddone" );
if ( isdefined( var_3 ) )
self notify( var_3 );
var_5 delete();
}
play_sound_on_tag_endon_death( var_0, var_1 )
{
play_sound_on_tag( var_0, var_1, 1 );
}
play_sound_on_entity( var_0, var_1 )
{
play_sound_on_tag( var_0, undefined, undefined, var_1 );
}
play_loop_sound_on_tag( var_0, var_1, var_2, var_3 )
{
var_4 = spawn( "script_origin", ( 0, 0, 0 ) );
var_4 endon( "death" );
if ( !isdefined( var_2 ) )
var_2 = 1;
if ( var_2 )
thread common_scripts\utility::delete_on_death( var_4 );
if ( !isdefined( var_3 ) )
var_3 = 0;
if ( var_3 )
thread delete_on_removed( var_4 );
if ( isdefined( var_1 ) )
var_4 linkto( self, var_1, ( 0, 0, 0 ), ( 0, 0, 0 ) );
else
{
var_4.origin = self.origin;
var_4.angles = self.angles;
var_4 linkto( self );
}
var_4 playloopsound( var_0 );
self waittill( "stop sound" + var_0 );
var_4 stoploopsound( var_0 );
var_4 delete();
}
delete_on_removed( var_0 )
{
var_0 endon( "death" );
while ( isdefined( self ) )
wait 0.05;
if ( isdefined( var_0 ) )
var_0 delete();
}
save_friendlies()
{
var_0 = getaiarray( "allies" );
var_1 = 0;
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
{
if ( isdefined( var_0[var_2].script_friendname ) )
continue;
game["character" + var_1] = var_0[var_2] codescripts\character::save();
var_1++;
}
game["total characters"] = var_1;
}
spawn_failed( var_0 )
{
if ( !isalive( var_0 ) )
return 1;
if ( !isdefined( var_0.finished_spawning ) )
var_0 common_scripts\utility::waittill_either( "finished spawning", "death" );
if ( isalive( var_0 ) )
return 0;
return 1;
}
spawn_setcharacter( var_0 )
{
codescripts\character::precache( var_0 );
self waittill( "spawned", var_1 );
if ( spawn_failed( var_1 ) )
return;
var_1 codescripts\character::new();
var_1 codescripts\character::load( var_0 );
}
key_hint_print( var_0, var_1 )
{
iprintlnbold( var_0, var_1["key1"] );
}
view_tag( var_0 )
{
self endon( "death" );
for (;;)
{
maps\_debug::drawtag( var_0 );
wait 0.05;
}
}
assign_animtree( var_0 )
{
if ( isdefined( var_0 ) )
self.animname = var_0;
self useanimtree( level.scr_animtree[self.animname] );
}
assign_model()
{
if ( isarray( level.scr_model[self.animname] ) )
{
var_0 = randomint( level.scr_model[self.animname].size );
self setmodel( level.scr_model[self.animname][var_0] );
}
else
self setmodel( level.scr_model[self.animname] );
}
spawn_anim_model( var_0, var_1, var_2 )
{
if ( !isdefined( var_1 ) )
var_1 = ( 0, 0, 0 );
var_3 = spawn( "script_model", var_1 );
var_3.animname = var_0;
var_3 assign_animtree();
var_3 assign_model();
if ( isdefined( var_2 ) )
var_3.angles = var_2;
return var_3;
}
trigger_wait( var_0, var_1 )
{
var_2 = getent( var_0, var_1 );
if ( !isdefined( var_2 ) )
return;
var_2 waittill( "trigger", var_3 );
level notify( var_0, var_3 );
return var_3;
}
trigger_wait_targetname( var_0 )
{
return trigger_wait( var_0, "targetname" );
}
set_flag_on_dead( var_0, var_1 )
{
thread set_flag_on_func_wait_proc( var_0, var_1, ::waittill_dead, "set_flag_on_dead" );
}
set_flag_on_dead_or_dying( var_0, var_1 )
{
thread set_flag_on_func_wait_proc( var_0, var_1, ::waittill_dead_or_dying, "set_flag_on_dead_or_dying" );
}
set_flag_on_spawned( var_0, var_1 )
{
thread set_flag_on_func_wait_proc( var_0, var_1, ::empty_func, "set_flag_on_spawned" );
}
empty_func( var_0 )
{
return;
}
set_flag_on_spawned_ai_proc( var_0, var_1 )
{
self waittill( "spawned", var_2 );
if ( spawn_failed( var_2 ) )
return;
var_0.ai[var_0.ai.size] = var_2;
ent_flag_set( var_1 );
}
set_flag_on_func_wait_proc( var_0, var_1, var_2, var_3 )
{
var_4 = spawnstruct();
var_4.ai = [];
foreach ( var_7, var_6 in var_0 )
var_6 ent_flag_init( var_3 );
common_scripts\utility::array_thread( var_0, ::set_flag_on_spawned_ai_proc, var_4, var_3 );
foreach ( var_7, var_6 in var_0 )
var_6 ent_flag_wait( var_3 );
[[ var_2 ]]( var_4.ai );
common_scripts\utility::flag_set( var_1 );
}
set_flag_on_trigger( var_0, var_1 )
{
if ( !common_scripts\utility::flag( var_1 ) )
{
var_0 waittill( "trigger", var_2 );
common_scripts\utility::flag_set( var_1 );
return var_2;
}
}
set_flag_on_targetname_trigger( var_0 )
{
if ( common_scripts\utility::flag( var_0 ) )
return;
var_1 = getent( var_0, "targetname" );
var_1 waittill( "trigger" );
common_scripts\utility::flag_set( var_0 );
}
is_in_array( var_0, var_1 )
{
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
{
if ( var_0[var_2] == var_1 )
return 1;
}
return 0;
}
waittill_dead( var_0, var_1, var_2 )
{
var_10 = spawnstruct();
if ( isdefined( var_2 ) )
{
var_10 endon( "thread_timed_out" );
var_10 thread waittill_dead_timeout( var_2 );
}
var_10.count = var_0.size;
if ( isdefined( var_1 ) && var_1 < var_10.count )
var_10.count = var_1;
common_scripts\utility::array_thread( var_0, ::waittill_dead_thread, var_10 );
while ( var_10.count > 0 )
var_10 waittill( "waittill_dead guy died" );
}
waittill_dead_or_dying( var_0, var_1, var_2 )
{
var_3 = [];
foreach ( var_5 in var_0 )
{
if ( isalive( var_5 ) && !var_5.ignoreforfixednodesafecheck )
var_3[var_3.size] = var_5;
}
var_0 = var_3;
var_7 = spawnstruct();
if ( isdefined( var_2 ) )
{
var_7 endon( "thread_timed_out" );
var_7 thread waittill_dead_timeout( var_2 );
}
var_7.count = var_0.size;
if ( isdefined( var_1 ) && var_1 < var_7.count )
var_7.count = var_1;
common_scripts\utility::array_thread( var_0, ::waittill_dead_or_dying_thread, var_7 );
while ( var_7.count > 0 )
var_7 waittill( "waittill_dead_guy_dead_or_dying" );
}
waittill_dead_thread( var_0 )
{
self waittill( "death" );
var_0.count--;
var_0 notify( "waittill_dead guy died" );
}
waittill_dead_or_dying_thread( var_0 )
{
common_scripts\utility::waittill_either( "death", "pain_death" );
var_0.count--;
var_0 notify( "waittill_dead_guy_dead_or_dying" );
}
waittill_dead_timeout( var_0 )
{
wait( var_0 );
self notify( "thread_timed_out" );
}
waittill_aigroupcleared( var_0 )
{
while ( level._ai_group[var_0].spawnercount || level._ai_group[var_0].aicount )
wait 0.25;
}
waittill_aigroupcount( var_0, var_1 )
{
while ( level._ai_group[var_0].spawnercount + level._ai_group[var_0].aicount > var_1 )
wait 0.25;
}
get_ai_group_count( var_0 )
{
return level._ai_group[var_0].spawnercount + level._ai_group[var_0].aicount;
}
get_ai_group_sentient_count( var_0 )
{
return level._ai_group[var_0].aicount;
}
get_ai_group_ai( var_0 )
{
var_1 = [];
for ( var_2 = 0; var_2 < level._ai_group[var_0].ai.size; var_2++ )
{
if ( !isalive( level._ai_group[var_0].ai[var_2] ) )
continue;
var_1[var_1.size] = level._ai_group[var_0].ai[var_2];
}
return var_1;
}
waittill_notetrack_or_damage( var_0 )
{
self endon( "damage" );
self endon( "death" );
self waittillmatch( "single anim", var_0 );
}
get_living_ai( var_0, var_1 )
{
var_2 = get_living_ai_array( var_0, var_1 );
if ( var_2.size > 1 )
return undefined;
return var_2[0];
}
get_living_ai_array( var_0, var_1 )
{
var_2 = getaispeciesarray( "all", "all" );
var_3 = [];
foreach ( var_5 in var_2 )
{
if ( !isalive( var_5 ) )
continue;
switch ( var_1 )
{
case "targetname":
if ( isdefined( var_5.targetname ) && var_5.targetname == var_0 )
var_3[var_3.size] = var_5;
break;
case "script_noteworthy":
if ( isdefined( var_5.script_noteworthy ) && var_5.script_noteworthy == var_0 )
var_3[var_3.size] = var_5;
break;
}
}
return var_3;
}
get_vehicle( var_0, var_1 )
{
var_2 = get_vehicle_array( var_0, var_1 );
if ( !var_2.size )
return undefined;
return var_2[0];
}
get_vehicle_array( var_0, var_1 )
{
var_2 = getentarray( var_0, var_1 );
var_3 = [];
var_4 = [];
foreach ( var_6 in var_2 )
{
if ( var_6.code_classname != "script_vehicle" )
continue;
var_4[0] = var_6;
if ( isspawner( var_6 ) )
{
if ( isdefined( var_6.last_spawned_vehicle ) )
{
var_4[0] = var_6.last_spawned_vehicle;
var_3 = array_merge( var_3, var_4 );
}
continue;
}
var_3 = array_merge( var_3, var_4 );
}
return var_3;
}
get_living_aispecies( var_0, var_1, var_2 )
{
var_3 = get_living_aispecies_array( var_0, var_1, var_2 );
if ( var_3.size > 1 )
return undefined;
return var_3[0];
}
get_living_aispecies_array( var_0, var_1, var_2 )
{
if ( !isdefined( var_2 ) )
var_2 = "all";
var_3 = getaispeciesarray( "allies", var_2 );
var_3 = common_scripts\utility::array_combine( var_3, getaispeciesarray( "axis", var_2 ) );
var_4 = [];
for ( var_5 = 0; var_5 < var_3.size; var_5++ )
{
switch ( var_1 )
{
case "targetname":
if ( isdefined( var_3[var_5].targetname ) && var_3[var_5].targetname == var_0 )
var_4[var_4.size] = var_3[var_5];
break;
case "script_noteworthy":
if ( isdefined( var_3[var_5].script_noteworthy ) && var_3[var_5].script_noteworthy == var_0 )
var_4[var_4.size] = var_3[var_5];
break;
}
}
return var_4;
}
gather_delay_proc( var_0, var_1 )
{
if ( isdefined( level.gather_delay[var_0] ) )
{
if ( level.gather_delay[var_0] )
{
wait 0.05;
if ( isalive( self ) )
self notify( "gather_delay_finished" + var_0 + var_1 );
return;
}
level waittill( var_0 );
if ( isalive( self ) )
self notify( "gather_delay_finished" + var_0 + var_1 );
return;
}
level.gather_delay[var_0] = 0;
wait( var_1 );
level.gather_delay[var_0] = 1;
level notify( var_0 );
if ( isalive( self ) )
self notify( "gat her_delay_finished" + var_0 + var_1 );
}
gather_delay( var_0, var_1 )
{
thread gather_delay_proc( var_0, var_1 );
self waittill( "gather_delay_finished" + var_0 + var_1 );
}
death_waiter( var_0 )
{
self waittill( "death" );
level notify( var_0 );
}
getchar( var_0 )
{
if ( var_0 == 0 )
return "0";
if ( var_0 == 1 )
return "1";
if ( var_0 == 2 )
return "2";
if ( var_0 == 3 )
return "3";
if ( var_0 == 4 )
return "4";
if ( var_0 == 5 )
return "5";
if ( var_0 == 6 )
return "6";
if ( var_0 == 7 )
return "7";
if ( var_0 == 8 )
return "8";
if ( var_0 == 9 )
return "9";
}
getlinks_array( var_0, var_1 )
{
var_2 = [];
for ( var_3 = 0; var_3 < var_0.size; var_3++ )
{
var_4 = var_0[var_3];
var_5 = var_4.script_linkname;
if ( !isdefined( var_5 ) )
continue;
if ( !isdefined( var_1[var_5] ) )
continue;
var_2[var_2.size] = var_4;
}
return var_2;
}
array_merge_links( var_0, var_1 )
{
if ( !var_0.size )
return var_1;
if ( !var_1.size )
return var_0;
var_2 = [];
for ( var_3 = 0; var_3 < var_0.size; var_3++ )
{
var_4 = var_0[var_3];
var_2[var_4.script_linkname] = 1;
}
for ( var_3 = 0; var_3 < var_1.size; var_3++ )
{
var_4 = var_1[var_3];
if ( isdefined( var_2[var_4.script_linkname] ) )
continue;
var_2[var_4.script_linkname] = 1;
var_0[var_0.size] = var_4;
}
return var_0;
}
array_merge( var_0, var_1 )
{
if ( var_0.size == 0 )
return var_1;
if ( var_1.size == 0 )
return var_0;
var_2 = var_0;
foreach ( var_4 in var_1 )
{
var_5 = 0;
foreach ( var_7 in var_0 )
{
if ( var_7 == var_4 )
{
var_5 = 1;
break;
}
}
if ( var_5 )
continue;
else
var_2[var_2.size] = var_4;
}
return var_2;
}
array_exclude( var_0, var_1 )
{
var_2 = var_0;
for ( var_3 = 0; var_3 < var_1.size; var_3++ )
{
if ( is_in_array( var_0, var_1[var_3] ) )
var_2 = common_scripts\utility::array_remove( var_2, var_1[var_3] );
}
return var_2;
}
array_compare( var_0, var_1 )
{
if ( var_0.size != var_1.size )
return 0;
foreach ( var_5, var_3 in var_0 )
{
if ( !isdefined( var_1[var_5] ) )
return 0;
var_4 = var_1[var_5];
if ( var_4 != var_3 )
return 0;
}
return 1;
}
getlinkedvehiclenodes()
{
var_0 = [];
if ( isdefined( self.script_linkto ) )
{
var_1 = common_scripts\utility::get_links();
foreach ( var_3 in var_1 )
{
var_4 = getvehiclenodearray( var_3, "script_linkname" );
var_0 = common_scripts\utility::array_combine( var_0, var_4 );
}
}
return var_0;
}
draw_line( var_0, var_1, var_2, var_3, var_4 )
{
for (;;)
wait 0.05;
}
draw_line_to_ent_for_time( var_0, var_1, var_2, var_3, var_4, var_5 )
{
var_5 = gettime() + var_5 * 1000;
while ( gettime() < var_5 )
{
wait 0.05;
if ( !isdefined( var_1 ) || !isdefined( var_1.origin ) )
return;
}
}
draw_line_from_ent_for_time( var_0, var_1, var_2, var_3, var_4, var_5 )
{
draw_line_to_ent_for_time( var_1, var_0, var_2, var_3, var_4, var_5 );
}
draw_line_from_ent_to_ent_for_time( var_0, var_1, var_2, var_3, var_4, var_5 )
{
var_0 endon( "death" );
var_1 endon( "death" );
var_5 = gettime() + var_5 * 1000;
while ( gettime() < var_5 )
wait 0.05;
}
draw_line_from_ent_to_ent_until_notify( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
var_0 endon( "death" );
var_1 endon( "death" );
var_5 endon( var_6 );
for (;;)
wait 0.05;
}
draw_line_until_notify( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
var_5 endon( var_6 );
for (;;)
common_scripts\utility::draw_line_for_time( var_0, var_1, var_2, var_3, var_4, 0.05 );
}
draw_line_from_ent_to_vec_for_time( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
var_6 = gettime() + var_6 * 1000;
var_1 = var_1 * var_2;
while ( gettime() < var_6 )
{
wait 0.05;
if ( !isdefined( var_0 ) || !isdefined( var_0.origin ) )
return;
}
}
draw_circle_until_notify( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
var_7 = 16;
var_8 = 360 / var_7;
var_9 = [];
for ( var_10 = 0; var_10 < var_7; var_10++ )
{
var_11 = var_8 * var_10;
var_12 = cos( var_11 ) * var_1;
var_13 = sin( var_11 ) * var_1;
var_14 = var_0[0] + var_12;
var_15 = var_0[1] + var_13;
var_16 = var_0[2];
var_9[var_9.size] = ( var_14, var_15, var_16 );
}
thread draw_circle_lines_until_notify( var_9, var_2, var_3, var_4, var_5, var_6 );
}
draw_circle_lines_until_notify( var_0, var_1, var_2, var_3, var_4, var_5 )
{
for ( var_6 = 0; var_6 < var_0.size; var_6++ )
{
var_7 = var_0[var_6];
if ( var_6 + 1 >= var_0.size )
var_8 = var_0[0];
else
var_8 = var_0[var_6 + 1];
thread draw_line_until_notify( var_7, var_8, var_1, var_2, var_3, var_4, var_5 );
}
}
clear_enemy_passthrough()
{
self notify( "enemy" );
self clearenemy();
}
battlechatter_off( var_0 )
{
level notify( "battlechatter_off_thread" );
animscripts\battlechatter::bcs_setup_chatter_toggle_array();
if ( isdefined( var_0 ) )
{
set_battlechatter_variable( var_0, 0 );
var_1 = getaiarray( var_0 );
}
else
{
foreach ( var_0 in anim.teams )
set_battlechatter_variable( var_0, 0 );
var_1 = getaiarray();
}
if ( !isdefined( anim.chatinitialized ) || !anim.chatinitialized )
return;
for ( var_4 = 0; var_4 < var_1.size; var_4++ )
var_1[var_4].battlechatter = 0;
for ( var_4 = 0; var_4 < var_1.size; var_4++ )
{
var_5 = var_1[var_4];
if ( !isalive( var_5 ) )
continue;
if ( !var_5.chatinitialized )
continue;
if ( !var_5.isspeaking )
continue;
var_5 maps\_utility_code::wait_until_done_speaking();
}
var_6 = gettime() - anim.lastteamspeaktime["allies"];
if ( var_6 < 1500 )
wait( var_6 / 1000 );
if ( isdefined( var_0 ) )
level notify( var_0 + " done speaking" );
else
level notify( "done speaking" );
}
battlechatter_on( var_0 )
{
thread battlechatter_on_thread( var_0 );
}
battlechatter_on_thread( var_0 )
{
level endon( "battlechatter_off_thread" );
animscripts\battlechatter::bcs_setup_chatter_toggle_array();
while ( !isdefined( anim.chatinitialized ) )
wait 0.05;
common_scripts\utility::flag_set( "battlechatter_on_thread_waiting" );
wait 1.5;
common_scripts\utility::flag_clear( "battlechatter_on_thread_waiting" );
if ( isdefined( var_0 ) )
{
set_battlechatter_variable( var_0, 1 );
var_1 = getaiarray( var_0 );
}
else
{
foreach ( var_0 in anim.teams )
set_battlechatter_variable( var_0, 1 );
var_1 = getaiarray();
}
for ( var_4 = 0; var_4 < var_1.size; var_4++ )
var_1[var_4] set_battlechatter( 1 );
}
set_battlechatter( var_0 )
{
if ( !anim.chatinitialized )
return;
if ( self.type == "dog" )
return;
if ( var_0 )
{
if ( isdefined( self.script_bcdialog ) && !self.script_bcdialog )
self.battlechatter = 0;
else
self.battlechatter = 1;
}
else
{
self.battlechatter = 0;
if ( isdefined( self.isspeaking ) && self.isspeaking )
self waittill( "done speaking" );
}
}
set_team_bcvoice( var_0, var_1 )
{
if ( !anim.chatinitialized )
return;
var_2 = getarraykeys( anim.countryids );
var_3 = common_scripts\utility::array_contains( var_2, var_1 );
if ( !var_3 )
return;
var_4 = getaiarray( var_0 );
foreach ( var_6 in var_4 )
{
var_6 set_ai_bcvoice( var_1 );
common_scripts\utility::waitframe();
}
}
set_ai_bcvoice( var_0 )
{
if ( !anim.chatinitialized )
return;
var_1 = getarraykeys( anim.countryids );
var_2 = common_scripts\utility::array_contains( var_1, var_0 );
if ( !var_2 )
return;
if ( self.type == "dog" )
return;
if ( isdefined( self.isspeaking ) && self.isspeaking )
{
self waittill( "done speaking" );
wait 0.1;
}
animscripts\battlechatter_ai::removefromsystem();
waittillframeend;
self.voice = var_0;
animscripts\battlechatter_ai::addtosystem();
}
flavorbursts_on( var_0 )
{
thread set_flavorbursts_team_state( 1, var_0 );
}
flavorbursts_off( var_0 )
{
thread set_flavorbursts_team_state( 0, var_0 );
}
set_flavorbursts_team_state( var_0, var_1 )
{
if ( !isdefined( var_1 ) )
var_1 = "allies";
if ( !anim.chatinitialized )
return;
wait 1.5;
level.flavorbursts[var_1] = var_0;
var_2 = [];
var_2 = getaiarray( var_1 );
common_scripts\utility::array_thread( var_2, ::set_flavorbursts, var_0 );
}
set_flavorbursts( var_0 )
{
self.flavorbursts = var_0;
}
friendlyfire_warnings_off()
{
var_0 = getaiarray( "allies" );
foreach ( var_2 in var_0 )
{
if ( isalive( var_2 ) )
var_2 set_friendlyfire_warnings( 0 );
}
level.friendlyfire_warnings = 0;
}
friendlyfire_warnings_on()
{
var_0 = getaiarray( "allies" );
foreach ( var_2 in var_0 )
{
if ( isalive( var_2 ) )
var_2 set_friendlyfire_warnings( 1 );
}
level.friendlyfire_warnings = 1;
}
set_friendlyfire_warnings( var_0 )
{
if ( var_0 )
self.friendlyfire_warnings_disable = undefined;
else
self.friendlyfire_warnings_disable = 1;
}
get_obj_origin( var_0 )
{
var_1 = getentarray( "objective", "targetname" );
for ( var_2 = 0; var_2 < var_1.size; var_2++ )
{
if ( var_1[var_2].script_noteworthy == var_0 )
return var_1[var_2].origin;
}
}
get_obj_event( var_0 )
{
var_1 = getentarray( "objective_event", "targetname" );
for ( var_2 = 0; var_2 < var_1.size; var_2++ )
{
if ( var_1[var_2].script_noteworthy == var_0 )
return var_1[var_2];
}
}
waittill_objective_event()
{
maps\_utility_code::waittill_objective_event_proc( 1 );
}
waittill_objective_event_notrigger()
{
maps\_utility_code::waittill_objective_event_proc( 0 );
}
debugorigin()
{
self notify( "Debug origin" );
self endon( "Debug origin" );
self endon( "death" );
for (;;)
{
var_0 = anglestoforward( self.angles );
var_1 = var_0 * 30;
var_2 = var_0 * 20;
var_3 = anglestoright( self.angles );
var_4 = var_3 * -10;
var_3 = var_3 * 10;
wait 0.05;
}
}
get_linked_structs()
{
var_0 = [];
if ( isdefined( self.script_linkto ) )
{
var_1 = common_scripts\utility::get_links();
for ( var_2 = 0; var_2 < var_1.size; var_2++ )
{
var_3 = common_scripts\utility::getstruct( var_1[var_2], "script_linkname" );
if ( isdefined( var_3 ) )
var_0[var_0.size] = var_3;
}
}
return var_0;
}
get_last_ent_in_chain( var_0 )
{
var_1 = self;
while ( isdefined( var_1.target ) )
{
wait 0.05;
if ( isdefined( var_1.target ) )
{
switch ( var_0 )
{
case "vehiclenode":
var_1 = getvehiclenode( var_1.target, "targetname" );
break;
case "pathnode":
var_1 = getnode( var_1.target, "targetname" );
break;
case "ent":
var_1 = getent( var_1.target, "targetname" );
break;
case "struct":
var_1 = common_scripts\utility::getstruct( var_1.target, "targetname" );
break;
default:
}
continue;
}
break;
}
var_2 = var_1;
return var_2;
}
player_seek( var_0 )
{
var_1 = spawn( "script_origin", level.player.origin );
var_1 linkto( level.player );
if ( isdefined( var_0 ) )
thread timeout( var_0 );
self setgoalentity( var_1 );
if ( !isdefined( self.oldgoalradius ) )
self.oldgoalradius = self.goalradius;
self.goalradius = 300;
common_scripts\utility::waittill_any( "goal", "timeout" );
if ( isdefined( self.oldgoalradius ) )
{
self.goalradius = self.oldgoalradius;
self.oldgoalradius = undefined;
}
var_1 delete();
}
timeout( var_0 )
{
self endon( "death" );
wait( var_0 );
self notify( "timeout" );
}
set_forcegoal()
{
if ( isdefined( self.set_forcedgoal ) )
return;
self.oldfightdist = self.pathenemyfightdist;
self.oldmaxdist = self.pathenemylookahead;
self.oldmaxsight = self.maxsightdistsqrd;
self.pathenemyfightdist = 8;
self.pathenemylookahead = 8;
self.maxsightdistsqrd = 1;
self.set_forcedgoal = 1;
}
unset_forcegoal()
{
if ( !isdefined( self.set_forcedgoal ) )
return;
self.pathenemyfightdist = self.oldfightdist;
self.pathenemylookahead = self.oldmaxdist;
self.maxsightdistsqrd = self.oldmaxsight;
self.set_forcedgoal = undefined;
}
array_removedead_keepkeys( var_0 )
{
var_1 = [];
var_2 = getarraykeys( var_0 );
for ( var_3 = 0; var_3 < var_2.size; var_3++ )
{
var_4 = var_2[var_3];
if ( !isalive( var_0[var_4] ) )
continue;
var_1[var_4] = var_0[var_4];
}
return var_1;
}
array_removedead( var_0 )
{
var_1 = [];
foreach ( var_3 in var_0 )
{
if ( !isalive( var_3 ) )
continue;
var_1[var_1.size] = var_3;
}
return var_1;
}
array_removedead_or_dying( var_0 )
{
var_1 = [];
foreach ( var_3 in var_0 )
{
if ( !isalive( var_3 ) )
continue;
if ( var_3 doinglongdeath() )
continue;
var_1[var_1.size] = var_3;
}
return var_1;
}
array_remove_nokeys( var_0, var_1 )
{
var_2 = [];
for ( var_3 = 0; var_3 < var_0.size; var_3++ )
{
if ( var_0[var_3] != var_1 )
var_2[var_2.size] = var_0[var_3];
}
return var_2;
}
array_remove_index( var_0, var_1 )
{
for ( var_2 = 0; var_2 < var_0.size - 1; var_2++ )
{
if ( var_2 == var_1 )
{
var_0[var_2] = var_0[var_2 + 1];
var_1++;
}
}
var_0[var_0.size - 1] = undefined;
return var_0;
}
array_notify( var_0, var_1, var_2 )
{
foreach ( var_5, var_4 in var_0 )
var_4 notify( var_1, var_2 );
}
struct_arrayspawn()
{
var_0 = spawnstruct();
var_0.array = [];
var_0.lastindex = 0;
return var_0;
}
structarray_add( var_0, var_1 )
{
var_0.array[var_0.lastindex] = var_1;
var_1.struct_array_index = var_0.lastindex;
var_0.lastindex++;
}
structarray_remove( var_0, var_1 )
{
structarray_swaptolast( var_0, var_1 );
var_0.array[var_0.lastindex - 1] = undefined;
var_0.lastindex--;
}
structarray_remove_index( var_0, var_1 )
{
if ( isdefined( var_0.array[var_0.lastindex - 1] ) )
{
var_0.array[var_1] = var_0.array[var_0.lastindex - 1];
var_0.array[var_1].struct_array_index = var_1;
var_0.array[var_0.lastindex - 1] = undefined;
var_0.lastindex = var_0.array.size;
}
else
{
var_0.array[var_1] = undefined;
structarray_remove_undefined( var_0 );
}
}
structarray_remove_undefined( var_0 )
{
var_1 = [];
foreach ( var_3 in var_0.array )
{
if ( !isdefined( var_3 ) )
continue;
var_1[var_1.size] = var_3;
}
var_0.array = var_1;
foreach ( var_6, var_3 in var_0.array )
var_3.struct_array_index = var_6;
var_0.lastindex = var_0.array.size;
}
structarray_swaptolast( var_0, var_1 )
{
var_0 maps\_utility_code::structarray_swap( var_0.array[var_0.lastindex - 1], var_1 );
}
structarray_shuffle( var_0, var_1 )
{
for ( var_2 = 0; var_2 < var_1; var_2++ )
var_0 maps\_utility_code::structarray_swap( var_0.array[var_2], var_0.array[randomint( var_0.lastindex )] );
}
get_use_key()
{
if ( level.console )
return " + usereload";
else
return " + activate";
}
custom_battlechatter( var_0 )
{
return animscripts\battlechatter_ai::custom_battlechatter_internal( var_0 );
}
get_stop_watch( var_0, var_1 )
{
var_2 = newhudelem();
if ( level.console )
{
var_2.x = 68;
var_2.y = 35;
}
else
{
var_2.x = 58;
var_2.y = 95;
}
var_2.alignx = "center";
var_2.aligny = "middle";
var_2.horzalign = "left";
var_2.vertalign = "middle";
if ( isdefined( var_1 ) )
var_3 = var_1;
else
var_3 = level.explosiveplanttime;
var_2 setclock( var_3, var_0, "hudStopwatch", 64, 64 );
return var_2;
}
objective_is_active( var_0 )
{
var_1 = 0;
for ( var_2 = 0; var_2 < level.active_objective.size; var_2++ )
{
if ( level.active_objective[var_2] != var_0 )
continue;
var_1 = 1;
break;
}
return var_1;
}
objective_is_inactive( var_0 )
{
var_1 = 0;
for ( var_2 = 0; var_2 < level.inactive_objective.size; var_2++ )
{
if ( level.inactive_objective[var_2] != var_0 )
continue;
var_1 = 1;
break;
}
return var_1;
}
set_objective_inactive( var_0 )
{
var_1 = [];
for ( var_2 = 0; var_2 < level.active_objective.size; var_2++ )
{
if ( level.active_objective[var_2] == var_0 )
continue;
var_1[var_1.size] = level.active_objective[var_2];
}
level.active_objective = var_1;
var_3 = 0;
for ( var_2 = 0; var_2 < level.inactive_objective.size; var_2++ )
{
if ( level.inactive_objective[var_2] != var_0 )
continue;
var_3 = 1;
}
if ( !var_3 )
level.inactive_objective[level.inactive_objective.size] = var_0;
}
set_objective_active( var_0 )
{
var_1 = [];
for ( var_2 = 0; var_2 < level.inactive_objective.size; var_2++ )
{
if ( level.inactive_objective[var_2] == var_0 )
continue;
var_1[var_1.size] = level.inactive_objective[var_2];
}
level.inactive_objective = var_1;
var_3 = 0;
for ( var_2 = 0; var_2 < level.active_objective.size; var_2++ )
{
if ( level.active_objective[var_2] != var_0 )
continue;
var_3 = 1;
}
if ( !var_3 )
level.active_objective[level.active_objective.size] = var_0;
}
missionfailedwrapper()
{
if ( level.missionfailed )
return;
if ( isdefined( level.nextmission ) )
return;
level.missionfailed = 1;
common_scripts\utility::flag_set( "missionfailed" );
if ( arcademode() )
return;
if ( getdvar( "failure_disabled" ) == "1" )
return;
if ( isdefined( level.mission_fail_func ) )
{
thread [[ level.mission_fail_func ]]();
return;
}
maps\_utility_code::mission_recon( 0 );
missionfailed();
}
set_mission_failed_override( var_0 )
{
level.mission_fail_func = var_0;
}
script_delay()
{
if ( isdefined( self.script_delay ) )
{
wait( self.script_delay );
return 1;
}
else if ( isdefined( self.script_delay_min ) && isdefined( self.script_delay_max ) )
{
wait( randomfloatrange( self.script_delay_min, self.script_delay_max ) );
return 1;
}
return 0;
}
script_wait()
{
var_0 = gettime();
if ( isdefined( self.script_wait ) )
{
wait( self.script_wait );
if ( isdefined( self.script_wait_add ) )
self.script_wait = self.script_wait + self.script_wait_add;
}
else if ( isdefined( self.script_wait_min ) && isdefined( self.script_wait_max ) )
{
wait( randomfloatrange( self.script_wait_min, self.script_wait_max ) );
if ( isdefined( self.script_wait_add ) )
{
self.script_wait_min = self.script_wait_min + self.script_wait_add;
self.script_wait_max = self.script_wait_max + self.script_wait_add;
}
}
return gettime() - var_0;
}
guy_enter_vehicle( var_0 )
{
maps\_vehicle_aianim::guy_enter( var_0 );
}
guy_runtovehicle_load( var_0, var_1 )
{
maps\_vehicle_aianim::guy_runtovehicle( var_0, var_1 );
}
get_force_color_guys( var_0, var_1 )
{
var_2 = getaiarray( var_0 );
var_3 = [];
for ( var_4 = 0; var_4 < var_2.size; var_4++ )
{
var_5 = var_2[var_4];
if ( !isdefined( var_5.script_forcecolor ) )
continue;
if ( var_5.script_forcecolor != var_1 )
continue;
var_3[var_3.size] = var_5;
}
return var_3;
}
get_all_force_color_friendlies()
{
var_0 = getaiarray( "allies" );
var_1 = [];
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
{
var_3 = var_0[var_2];
if ( !isdefined( var_3.script_forcecolor ) )
continue;
var_1[var_1.size] = var_3;
}
return var_1;
}
get_all_target_ents( var_0 )
{
if ( !isdefined( var_0 ) )
var_0 = self.target;
var_1 = [];
var_2 = getentarray( var_0, "targetname" );
var_1 = common_scripts\utility::array_combine( var_1, var_2 );
var_2 = getnodearray( var_0, "targetname" );
var_1 = common_scripts\utility::array_combine( var_1, var_2 );
var_2 = common_scripts\utility::getstructarray( var_0, "targetname" );
var_1 = common_scripts\utility::array_combine( var_1, var_2 );
var_2 = getvehiclenodearray( var_0, "targetname" );
var_1 = common_scripts\utility::array_combine( var_1, var_2 );
return var_1;
}
enable_ai_color()
{
if ( isdefined( self.script_forcecolor ) )
return;
if ( !isdefined( self.old_forcecolor ) )
return;
set_force_color( self.old_forcecolor );
self.old_forcecolor = undefined;
}
enable_ai_color_dontmove()
{
self.dontcolormove = 1;
enable_ai_color();
}
disable_ai_color()
{
if ( isdefined( self.new_force_color_being_set ) )
{
self endon( "death" );
self waittill( "done_setting_new_color" );
}
self clearfixednodesafevolume();
if ( !isdefined( self.script_forcecolor ) )
return;
self.old_forcecolor = self.script_forcecolor;
level.arrays_of_colorforced_ai[maps\_colors::get_team()][self.script_forcecolor] = common_scripts\utility::array_remove( level.arrays_of_colorforced_ai[maps\_colors::get_team()][self.script_forcecolor], self );
maps\_colors::left_color_node();
self.script_forcecolor = undefined;
self.currentcolorcode = undefined;
}
clear_force_color()
{
disable_ai_color();
}
check_force_color( var_0 )
{
var_1 = level.colorchecklist[tolower( var_0 )];
if ( isdefined( self.script_forcecolor ) && var_1 == self.script_forcecolor )
return 1;
else
return 0;
}
get_force_color()
{
var_0 = self.script_forcecolor;
return var_0;
}
shortencolor( var_0 )
{
return level.colorchecklist[tolower( var_0 )];
}
set_force_color( var_0 )
{
var_1 = shortencolor( var_0 );
if ( !isai( self ) )
{
set_force_color_spawner( var_1 );
return;
}
if ( self.team == "allies" )
{
self.fixednode = 1;
self.fixednodesaferadius = 64;
self.pathenemyfightdist = 0;
self.pathenemylookahead = 0;
}
self.script_color_axis = undefined;
self.script_color_allies = undefined;
self.old_forcecolor = undefined;
var_2 = maps\_colors::get_team();
if ( isdefined( self.script_forcecolor ) )
level.arrays_of_colorforced_ai[var_2][self.script_forcecolor] = common_scripts\utility::array_remove( level.arrays_of_colorforced_ai[var_2][self.script_forcecolor], self );
self.script_forcecolor = var_1;
level.arrays_of_colorforced_ai[var_2][var_1] = array_removedead( level.arrays_of_colorforced_ai[var_2][var_1] );
level.arrays_of_colorforced_ai[var_2][self.script_forcecolor] = common_scripts\utility::array_add( level.arrays_of_colorforced_ai[var_2][self.script_forcecolor], self );
thread maps\_utility_code::new_color_being_set( var_1 );
}
set_force_color_spawner( var_0 )
{
self.script_forcecolor = var_0;
self.old_forcecolor = undefined;
}
issue_color_orders( var_0, var_1 )
{
var_2 = strtok( var_0, " " );
var_3 = [];
var_4 = [];
for ( var_5 = 0; var_5 < var_2.size; var_5++ )
{
var_6 = undefined;
if ( issubstr( var_2[var_5], "r" ) )
var_6 = "r";
else if ( issubstr( var_2[var_5], "b" ) )
var_6 = "b";
else if ( issubstr( var_2[var_5], "y" ) )
var_6 = "y";
else if ( issubstr( var_2[var_5], "c" ) )
var_6 = "c";
else if ( issubstr( var_2[var_5], "g" ) )
var_6 = "g";
else if ( issubstr( var_2[var_5], "p" ) )
var_6 = "p";
else if ( issubstr( var_2[var_5], "o" ) )
var_6 = "o";
else
{
}
var_4[var_6] = var_2[var_5];
var_3[var_3.size] = var_6;
}
for ( var_5 = 0; var_5 < var_2.size; var_5++ )
{
level.arrays_of_colorcoded_spawners[var_1][var_2[var_5]] = common_scripts\utility::array_removeundefined( level.arrays_of_colorcoded_spawners[var_1][var_2[var_5]] );
for ( var_7 = 0; var_7 < level.arrays_of_colorcoded_spawners[var_1][var_2[var_5]].size; var_7++ )
level.arrays_of_colorcoded_spawners[var_1][var_2[var_5]][var_7].currentcolorcode = var_2[var_5];
}
for ( var_5 = 0; var_5 < var_3.size; var_5++ )
{
level.arrays_of_colorforced_ai[var_1][var_3[var_5]] = array_removedead( level.arrays_of_colorforced_ai[var_1][var_3[var_5]] );
level.currentcolorforced[var_1][var_3[var_5]] = var_4[var_3[var_5]];
}
for ( var_5 = 0; var_5 < var_2.size; var_5++ )
thread maps\_colors::issue_color_order_to_ai( var_2[var_5], var_3[var_5], var_1 );
}
flashrumbleloop( var_0 )
{
var_1 = gettime() + var_0 * 1000;
while ( gettime() < var_1 )
{
self playrumbleonentity( "damage_heavy" );
wait 0.05;
}
}
flashmonitorenablehealthshield( var_0 )
{
self endon( "death" );
self endon( "flashed" );
wait 0.2;
self enablehealthshield( 0 );
wait( var_0 + 2 );
self enablehealthshield( 1 );
}
ninebanghandler( var_0, var_1, var_2, var_3, var_4 )
{
var_5 = [ 0.8, 0.7, 0.7, 0.6 ];
var_6 = [ 1.0, 0.8, 0.6, 0.6 ];
foreach ( var_12, var_8 in var_6 )
{
var_9 = ( var_1 - 0.85 ) / 0.15;
if ( var_9 > var_2 )
var_2 = var_9;
if ( var_2 < 0.25 )
var_2 = 0.25;
var_10 = 0.3;
if ( var_1 > 1 - var_10 )
var_1 = 1.0;
else
var_1 = var_1 / ( 1 - var_10 );
if ( var_4 != self.team )
var_11 = var_1 * var_2 * 6.0;
else
var_11 = var_1 * var_2 * 3.0;
if ( var_11 < 0.25 )
continue;
var_11 = var_8 * var_11;
if ( isdefined( self.maxflashedseconds ) && var_11 > self.maxflashedseconds )
var_11 = self.maxflashedseconds;
self.flashingteam = var_4;
self notify( "flashed" );
self.flashendtime = gettime() + var_11 * 1000;
self shellshock( "flashbang", var_11 );
common_scripts\utility::flag_set( "player_flashed" );
if ( var_1 * var_2 > 0.5 )
thread flashmonitorenablehealthshield( var_11 );
wait( var_5[var_12] );
}
thread maps\_utility_code::unflash_flag( 0.05 );
}
flashmonitor()
{
self endon( "death" );
for (;;)
{
self waittill( "flashbang", var_0, var_1, var_2, var_3, var_4 );
if ( "1" == getdvar( "noflash" ) )
continue;
if ( is_player_down( self ) )
continue;
if ( isdefined( self.threw_ninebang ) )
{
var_5 = 0.8;
var_6 = 1.0 - var_5;
self.threw_ninebang = undefined;
if ( var_1 < var_6 )
continue;
var_1 = ( var_1 - var_6 ) / var_5;
}
var_7 = ( var_1 - 0.85 ) / 0.15;
if ( var_7 > var_2 )
var_2 = var_7;
if ( var_2 < 0.25 )
var_2 = 0.25;
var_8 = 0.3;
if ( var_1 > 1 - var_8 )
var_1 = 1.0;
else
var_1 = var_1 / ( 1 - var_8 );
if ( var_4 != self.team )
var_9 = var_1 * var_2 * 6.0;
else
var_9 = var_1 * var_2 * 3.0;
if ( var_9 < 0.25 )
continue;
if ( isdefined( self.maxflashedseconds ) && var_9 > self.maxflashedseconds )
var_9 = self.maxflashedseconds;
self.flashingteam = var_4;
self notify( "flashed" );
self.flashendtime = gettime() + var_9 * 1000;
self shellshock( "flashbang", var_9 );
common_scripts\utility::flag_set( "player_flashed" );
thread maps\_utility_code::unflash_flag( var_9 );
if ( var_1 * var_2 > 0.5 )
thread flashmonitorenablehealthshield( var_9 );
if ( var_9 > 2 )
thread flashrumbleloop( 0.75 );
else
thread flashrumbleloop( 0.25 );
if ( var_4 != "allies" )
thread flashnearbyallies( var_9, var_4 );
}
}
flashnearbyallies( var_0, var_1 )
{
wait 0.05;
var_2 = getaiarray( "allies" );
for ( var_3 = 0; var_3 < var_2.size; var_3++ )
{
if ( distancesquared( var_2[var_3].origin, self.origin ) < 122500 )
{
var_4 = var_0 + randomfloatrange( -1000, 1500 );
if ( var_4 > 4.5 )
var_4 = 4.5;
else if ( var_4 < 0.25 )
continue;
var_5 = gettime() + var_4 * 1000;
if ( !isdefined( var_2[var_3].flashendtime ) || var_2[var_3].flashendtime < var_5 )
{
var_2[var_3].flashingteam = var_1;
var_2[var_3] flashbangstart( var_4 );
}
}
}
}
restarteffect()
{
common_scripts\_createfx::restart_fx_looper();
}
pauseexploder( var_0 )
{
var_0 = var_0 + "";
if ( isdefined( level.createfxexploders ) )
{
var_1 = level.createfxexploders[var_0];
if ( isdefined( var_1 ) )
{
foreach ( var_3 in var_1 )
var_3 common_scripts\utility::pauseeffect();
return;
}
}
else
{
foreach ( var_6 in level.createfxent )
{
if ( !isdefined( var_6.v["exploder"] ) )
continue;
if ( var_6.v["exploder"] != var_0 )
continue;
var_6 common_scripts\utility::pauseeffect();
}
}
}
restartexploder( var_0 )
{
var_0 = var_0 + "";
if ( isdefined( level.createfxexploders ) )
{
var_1 = level.createfxexploders[var_0];
if ( isdefined( var_1 ) )
{
foreach ( var_3 in var_1 )
var_3 restarteffect();
return;
}
}
else
{
foreach ( var_6 in level.createfxent )
{
if ( !isdefined( var_6.v["exploder"] ) )
continue;
if ( var_6.v["exploder"] != var_0 )
continue;
var_6 restarteffect();
}
}
}
getfxarraybyid( var_0 )
{
var_1 = [];
if ( isdefined( level.createfxbyfxid ) )
{
var_2 = level.createfxbyfxid[var_0];
if ( isdefined( var_2 ) )
var_1 = var_2;
}
else
{
for ( var_3 = 0; var_3 < level.createfxent.size; var_3++ )
{
if ( level.createfxent[var_3].v["fxid"] == var_0 )
var_1[var_1.size] = level.createfxent[var_3];
}
}
return var_1;
}
ignoreallenemies( var_0 )
{
self notify( "ignoreAllEnemies_threaded" );
self endon( "ignoreAllEnemies_threaded" );
if ( var_0 )
{
self.old_threat_bias_group = self getthreatbiasgroup();
var_1 = undefined;
createthreatbiasgroup( "ignore_everybody" );
self setthreatbiasgroup( "ignore_everybody" );
var_2 = [];
var_2["axis"] = "allies";
var_2["allies"] = "axis";
var_3 = getaiarray( var_2[self.team] );
var_4 = [];
for ( var_5 = 0; var_5 < var_3.size; var_5++ )
var_4[var_3[var_5] getthreatbiasgroup()] = 1;
var_6 = getarraykeys( var_4 );
for ( var_5 = 0; var_5 < var_6.size; var_5++ )
setthreatbias( var_6[var_5], "ignore_everybody", 0 );
}
else
{
var_1 = undefined;
if ( self.old_threat_bias_group != "" )
self setthreatbiasgroup( self.old_threat_bias_group );
self.old_threat_bias_group = undefined;
}
}
vehicle_detachfrompath()
{
maps\_vehicle_code::vehicle_pathdetach();
}
vehicle_resumepath()
{
thread maps\_vehicle_code::vehicle_resumepathvehicle();
}
vehicle_land( var_0 )
{
maps\_vehicle_code::vehicle_landvehicle( var_0 );
}
vehicle_liftoff( var_0 )
{
maps\_vehicle_code::vehicle_liftoffvehicle( var_0 );
}
vehicle_dynamicpath( var_0, var_1 )
{
maps\_vehicle::vehicle_paths( var_0, var_1 );
}
groundpos( var_0 )
{
return bullettrace( var_0, var_0 + ( 0, 0, -100000 ), 0, self )["position"];
}
change_player_health_packets( var_0 )
{
self.player_health_packets = self.player_health_packets + var_0;
self notify( "update_health_packets" );
if ( self.player_health_packets >= 3 )
self.player_health_packets = 3;
}
getvehiclespawner( var_0 )
{
var_1 = getvehiclespawnerarray( var_0 );
return var_1[0];
}
getvehiclespawnerarray( var_0 )
{
return maps\_vehicle_code::_getvehiclespawnerarray( var_0 );
}
describe_start( var_0, var_1, var_2, var_3, var_4, var_5 )
{
add_start_assert();
if ( !isdefined( level.start_description ) )
level.start_description = [];
level.start_description[var_0] = add_start_construct( var_0, var_1, var_2, var_3, var_4, var_5 );
}
add_start( var_0, var_1, var_2, var_3, var_4, var_5 )
{
add_start_assert();
var_0 = tolower( var_0 );
if ( isdefined( level.start_description ) && isdefined( level.start_description[var_0] ) )
var_7 = level.start_description[var_0];
else
var_7 = add_start_construct( var_0, var_1, var_2, var_3, var_4, var_5 );
if ( !isdefined( var_1 ) )
{
if ( !isdefined( level.start_description ) )
{
}
else if ( !issubstr( var_0, "no_game" ) )
{
if ( !isdefined( level.start_description[var_0] ) )
return;
}
}
level.start_functions[level.start_functions.size] = var_7;
level.start_arrays[var_0] = var_7;
}
is_no_game_start()
{
return issubstr( level.start_point, "no_game" );
}
add_start_construct( var_0, var_1, var_2, var_3, var_4, var_5 )
{
var_6 = [];
var_6["name"] = var_0;
var_6["start_func"] = var_1;
var_6["start_loc_string"] = var_2;
var_6["logic_func"] = var_3;
var_6["transient"] = var_4;
var_6["catchup_function"] = var_5;
return var_6;
}
add_start_assert()
{
if ( !isdefined( level.start_functions ) )
level.start_functions = [];
}
level_has_start_points()
{
return level.start_functions.size > 1;
}
set_default_start( var_0 )
{
level.default_start_override = var_0;
}
default_start( var_0 )
{
level.default_start = var_0;
}
linetime( var_0, var_1, var_2, var_3 )
{
thread maps\_utility_code::linetime_proc( var_0, var_1, var_2, var_3 );
}
within_fov_2d( var_0, var_1, var_2, var_3 )
{
var_4 = vectornormalize( ( var_2[0], var_2[1], 0 ) - ( var_0[0], var_0[1], 0 ) );
var_5 = anglestoforward( ( 0, var_1[1], 0 ) );
return vectordot( var_5, var_4 ) >= var_3;
}
get_dot( var_0, var_1, var_2 )
{
var_3 = vectornormalize( var_2 - var_0 );
var_4 = anglestoforward( var_1 );
var_5 = vectordot( var_4, var_3 );
return var_5;
}
within_fov_of_players( var_0, var_1 )
{
var_2 = undefined;
for ( var_3 = 0; var_3 < level.players.size; var_3++ )
{
var_4 = level.players[var_3] geteye();
var_2 = common_scripts\utility::within_fov( var_4, level.players[var_3] getplayerangles(), var_0, var_1 );
if ( !var_2 )
return 0;
}
return 1;
}
wait_for_buffer_time_to_pass( var_0, var_1 )
{
var_2 = var_1 * 1000 - ( gettime() - var_0 );
var_2 = var_2 * 0.001;
if ( var_2 > 0 )
wait( var_2 );
}
bcs_scripted_dialogue_start()
{
anim.scripteddialoguestarttime = gettime();
}
dialogue_queue( var_0 )
{
bcs_scripted_dialogue_start();
maps\_anim::anim_single_queue( self, var_0 );
}
generic_dialogue_queue( var_0, var_1 )
{
bcs_scripted_dialogue_start();
maps\_anim::anim_generic_queue( self, var_0, undefined, undefined, var_1 );
}
radio_dialogue( var_0, var_1 )
{
if ( !isdefined( level.player_radio_emitter ) )
{
var_2 = spawn( "script_origin", ( 0, 0, 0 ) );
var_2 linkto( level.player, "", ( 0, 0, 0 ), ( 0, 0, 0 ) );
level.player_radio_emitter = var_2;
}
bcs_scripted_dialogue_start();
var_3 = 0;
if ( !isdefined( var_1 ) )
var_3 = level.player_radio_emitter function_stack( ::play_sound_on_tag, level.scr_radio[var_0], undefined, 1 );
else
var_3 = level.player_radio_emitter function_stack_timeout( var_1, ::play_sound_on_tag, level.scr_radio[var_0], undefined, 1 );
return var_3;
}
radio_dialogue_overlap( var_0 )
{
level.player_radio_emitter play_sound_on_tag( level.scr_radio[var_0], undefined, 1 );
}
radio_dialogue_stop()
{
if ( !isdefined( level.player_radio_emitter ) )
return;
level.player_radio_emitter delete();
}
radio_dialogue_clear_stack()
{
if ( !isdefined( level.player_radio_emitter ) )
return;
level.player_radio_emitter function_stack_clear();
}
radio_dialogue_interupt( var_0 )
{
if ( !isdefined( level.player_radio_emitter ) )
{
var_1 = spawn( "script_origin", ( 0, 0, 0 ) );
var_1 linkto( level.player, "", ( 0, 0, 0 ), ( 0, 0, 0 ) );
level.player_radio_emitter = var_1;
}
level.player_radio_emitter play_sound_on_tag( level.scr_radio[var_0], undefined, 1 );
}
radio_dialogue_safe( var_0 )
{
return radio_dialogue( var_0, 0.05 );
}
smart_radio_dialogue( var_0, var_1 )
{
maps\_utility_code::add_to_radio( var_0 );
radio_dialogue( var_0, var_1 );
}
smart_radio_dialogue_interrupt( var_0 )
{
maps\_utility_code::add_to_radio( var_0 );
radio_dialogue_stop();
radio_dialogue_interupt( var_0 );
}
smart_radio_dialogue_overlap( var_0 )
{
maps\_utility_code::add_to_radio( var_0 );
radio_dialogue_overlap( var_0 );
}
smart_dialogue( var_0 )
{
maps\_utility_code::add_to_dialogue( var_0 );
dialogue_queue( var_0 );
}
smart_dialogue_generic( var_0 )
{
maps\_utility_code::add_to_dialogue_generic( var_0 );
generic_dialogue_queue( var_0 );
}
radio_dialogue_queue( var_0 )
{
radio_dialogue( var_0 );
}
hint_create( var_0, var_1, var_2 )
{
var_3 = spawnstruct();
if ( isdefined( var_1 ) && var_1 == 1 )
var_3.bg = newhudelem();
var_3.elm = newhudelem();
var_3 hint_position_internal( var_2 );
var_3.elm settext( var_0 );
return var_3;
}
hint_delete()
{
self notify( "death" );
if ( isdefined( self.elm ) )
self.elm destroy();
if ( isdefined( self.bg ) )
self.bg destroy();
}
hint_position_internal( var_0 )
{
if ( level.console )
self.elm.fontscale = 2;
else
self.elm.fontscale = 1.6;
self.elm.x = 0;
self.elm.y = -40;
self.elm.alignx = "center";
self.elm.aligny = "bottom";
self.elm.horzalign = "center";
self.elm.vertalign = "middle";
self.elm.sort = 1;
self.elm.alpha = 0.8;
if ( !isdefined( self.bg ) )
return;
self.bg.x = 0;
self.bg.y = -40;
self.bg.alignx = "center";
self.bg.aligny = "middle";
self.bg.horzalign = "center";
self.bg.vertalign = "middle";
self.bg.sort = -1;
if ( level.console )
self.bg setshader( "popmenu_bg", 650, 52 );
else
self.bg setshader( "popmenu_bg", 650, 42 );
if ( !isdefined( var_0 ) )
var_0 = 0.5;
self.bg.alpha = var_0;
}
string( var_0 )
{
return "" + var_0;
}
ignoreeachother( var_0, var_1 )
{
setignoremegroup( var_0, var_1 );
setignoremegroup( var_1, var_0 );
}
add_global_spawn_function( var_0, var_1, var_2, var_3, var_4 )
{
var_5 = [];
var_5["function"] = var_1;
var_5["param1"] = var_2;
var_5["param2"] = var_3;
var_5["param3"] = var_4;
level.spawn_funcs[var_0][level.spawn_funcs[var_0].size] = var_5;
}
remove_global_spawn_function( var_0, var_1 )
{
var_2 = [];
for ( var_3 = 0; var_3 < level.spawn_funcs[var_0].size; var_3++ )
{
if ( level.spawn_funcs[var_0][var_3]["function"] != var_1 )
var_2[var_2.size] = level.spawn_funcs[var_0][var_3];
}
level.spawn_funcs[var_0] = var_2;
}
exists_global_spawn_function( var_0, var_1 )
{
if ( !isdefined( level.spawn_funcs ) )
return 0;
for ( var_2 = 0; var_2 < level.spawn_funcs[var_0].size; var_2++ )
{
if ( level.spawn_funcs[var_0][var_2]["function"] == var_1 )
return 1;
}
return 0;
}
remove_spawn_function( var_0 )
{
var_1 = [];
foreach ( var_3 in self.spawn_functions )
{
if ( var_3["function"] == var_0 )
continue;
var_1[var_1.size] = var_3;
}
self.spawn_functions = var_1;
}
add_spawn_function( var_0, var_1, var_2, var_3, var_4, var_5 )
{
foreach ( var_7 in self.spawn_functions )
{
if ( var_7["function"] == var_0 )
return;
}
var_9 = [];
var_9["function"] = var_0;
var_9["param1"] = var_1;
var_9["param2"] = var_2;
var_9["param3"] = var_3;
var_9["param4"] = var_4;
var_9["param5"] = var_5;
self.spawn_functions[self.spawn_functions.size] = var_9;
}
array_delete( var_0 )
{
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
var_0[var_1] delete();
}
array_kill( var_0 )
{
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
var_0[var_1] kill();
}
ignore_triggers( var_0 )
{
self endon( "death" );
self.ignoretriggers = 1;
if ( isdefined( var_0 ) )
wait( var_0 );
else
wait 0.5;
self.ignoretriggers = 0;
}
activate_trigger_with_targetname( var_0 )
{
var_1 = getent( var_0, "targetname" );
var_1 activate_trigger();
}
activate_trigger_with_noteworthy( var_0 )
{
var_1 = getent( var_0, "script_noteworthy" );
var_1 activate_trigger();
}
disable_trigger_with_targetname( var_0 )
{
var_1 = getent( var_0, "targetname" );
var_1 common_scripts\utility::trigger_off();
}
disable_trigger_with_noteworthy( var_0 )
{
var_1 = getent( var_0, "script_noteworthy" );
var_1 common_scripts\utility::trigger_off();
}
enable_trigger_with_targetname( var_0 )
{
var_1 = getent( var_0, "targetname" );
var_1 common_scripts\utility::trigger_on();
}
enable_trigger_with_noteworthy( var_0 )
{
var_1 = getent( var_0, "script_noteworthy" );
var_1 common_scripts\utility::trigger_on();
}
is_hero()
{
return isdefined( level.hero_list[get_ai_number()] );
}
get_ai_number()
{
if ( !isdefined( self.unique_id ) )
set_ai_number();
return self.unique_id;
}
set_ai_number()
{
self.unique_id = "ai" + level.ai_number;
level.ai_number++;
}
make_hero()
{
level.hero_list[self.unique_id] = 1;
}
unmake_hero()
{
level.hero_list[self.unique_id] = undefined;
}
get_heroes()
{
var_0 = [];
var_1 = getaiarray( "allies" );
for ( var_2 = 0; var_2 < var_1.size; var_2++ )
{
if ( var_1[var_2] is_hero() )
var_0[var_0.size] = var_1[var_2];
}
return var_0;
}
set_team_pacifist( var_0, var_1 )
{
var_2 = getaiarray( var_0 );
for ( var_3 = 0; var_3 < var_2.size; var_3++ )
var_2[var_3].pacifist = var_1;
}
replace_on_death()
{
maps\_colors::colornode_replace_on_death();
}
spawn_reinforcement( var_0, var_1 )
{
maps\_colors::colornode_spawn_reinforcement( var_0, var_1 );
}
clear_promotion_order()
{
level.current_color_order = [];
}
set_promotion_order( var_0, var_1 )
{
if ( !isdefined( level.current_color_order ) )
level.current_color_order = [];
var_0 = shortencolor( var_0 );
var_1 = shortencolor( var_1 );
level.current_color_order[var_0] = var_1;
if ( !isdefined( level.current_color_order[var_1] ) )
set_empty_promotion_order( var_1 );
}
set_empty_promotion_order( var_0 )
{
if ( !isdefined( level.current_color_order ) )
level.current_color_order = [];
level.current_color_order[var_0] = "none";
}
remove_dead_from_array( var_0 )
{
var_1 = [];
foreach ( var_3 in var_0 )
{
if ( !isalive( var_3 ) )
continue;
var_1[var_1.size] = var_3;
}
return var_1;
}
remove_heroes_from_array( var_0 )
{
var_1 = [];
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
{
if ( var_0[var_2] is_hero() )
continue;
var_1[var_1.size] = var_0[var_2];
}
return var_1;
}
remove_color_from_array( var_0, var_1 )
{
var_2 = [];
for ( var_3 = 0; var_3 < var_0.size; var_3++ )
{
var_4 = var_0[var_3];
if ( !isdefined( var_4.script_forcecolor ) )
continue;
if ( var_4.script_forcecolor == var_1 )
continue;
var_2[var_2.size] = var_4;
}
return var_2;
}
remove_noteworthy_from_array( var_0, var_1 )
{
var_2 = [];
for ( var_3 = 0; var_3 < var_0.size; var_3++ )
{
var_4 = var_0[var_3];
if ( !isdefined( var_4.script_noteworthy ) )
continue;
if ( var_4.script_noteworthy == var_1 )
continue;
var_2[var_2.size] = var_4;
}
return var_2;
}
get_closest_colored_friendly( var_0, var_1 )
{
var_2 = get_force_color_guys( "allies", var_0 );
var_2 = remove_heroes_from_array( var_2 );
if ( !isdefined( var_1 ) )
var_3 = level.player.origin;
else
var_3 = var_1;
return common_scripts\utility::getclosest( var_3, var_2 );
}
remove_without_classname( var_0, var_1 )
{
var_2 = [];
for ( var_3 = 0; var_3 < var_0.size; var_3++ )
{
if ( !issubstr( var_0[var_3].classname, var_1 ) )
continue;
var_2[var_2.size] = var_0[var_3];
}
return var_2;
}
remove_without_model( var_0, var_1 )
{
var_2 = [];
for ( var_3 = 0; var_3 < var_0.size; var_3++ )
{
if ( !issubstr( var_0[var_3].model, var_1 ) )
continue;
var_2[var_2.size] = var_0[var_3];
}
return var_2;
}
get_closest_colored_friendly_with_classname( var_0, var_1, var_2 )
{
var_3 = get_force_color_guys( "allies", var_0 );
var_3 = remove_heroes_from_array( var_3 );
if ( !isdefined( var_2 ) )
var_4 = level.player.origin;
else
var_4 = var_2;
var_3 = remove_without_classname( var_3, var_1 );
return common_scripts\utility::getclosest( var_4, var_3 );
}
promote_nearest_friendly( var_0, var_1 )
{
for (;;)
{
var_2 = get_closest_colored_friendly( var_0 );
if ( !isalive( var_2 ) )
{
wait 1;
continue;
}
var_2 set_force_color( var_1 );
return;
}
}
instantly_promote_nearest_friendly( var_0, var_1 )
{
for (;;)
{
var_2 = get_closest_colored_friendly( var_0 );
if ( !isalive( var_2 ) )
return;
var_2 set_force_color( var_1 );
return;
}
}
instantly_promote_nearest_friendly_with_classname( var_0, var_1, var_2 )
{
for (;;)
{
var_3 = get_closest_colored_friendly_with_classname( var_0, var_2 );
if ( !isalive( var_3 ) )
return;
var_3 set_force_color( var_1 );
return;
}
}
promote_nearest_friendly_with_classname( var_0, var_1, var_2 )
{
for (;;)
{
var_3 = get_closest_colored_friendly_with_classname( var_0, var_2 );
if ( !isalive( var_3 ) )
{
wait 1;
continue;
}
var_3 set_force_color( var_1 );
return;
}
}
riotshield_lock_orientation( var_0 )
{
self orientmode( "face angle", var_0 );
self.lockorientation = 1;
}
riotshield_unlock_orientation()
{
self.lockorientation = 0;
}
instantly_set_color_from_array_with_classname( var_0, var_1, var_2 )
{
var_3 = 0;
var_4 = [];
for ( var_5 = 0; var_5 < var_0.size; var_5++ )
{
var_6 = var_0[var_5];
if ( var_3 || !issubstr( var_6.classname, var_2 ) )
{
var_4[var_4.size] = var_6;
continue;
}
var_3 = 1;
var_6 set_force_color( var_1 );
}
return var_4;
}
instantly_set_color_from_array( var_0, var_1 )
{
var_2 = 0;
var_3 = [];
for ( var_4 = 0; var_4 < var_0.size; var_4++ )
{
var_5 = var_0[var_4];
if ( var_2 )
{
var_3[var_3.size] = var_5;
continue;
}
var_2 = 1;
var_5 set_force_color( var_1 );
}
return var_3;
}
wait_for_script_noteworthy_trigger( var_0 )
{
maps\_utility_code::wait_for_trigger( var_0, "script_noteworthy" );
}
wait_for_targetname_trigger( var_0 )
{
maps\_utility_code::wait_for_trigger( var_0, "targetname" );
}
wait_for_flag_or_timeout( var_0, var_1 )
{
if ( common_scripts\utility::flag( var_0 ) )
return;
level endon( var_0 );
wait( var_1 );
}
wait_for_notify_or_timeout( var_0, var_1 )
{
self endon( var_0 );
wait( var_1 );
}
wait_for_trigger_or_timeout( var_0 )
{
self endon( "trigger" );
wait( var_0 );
}
wait_for_either_trigger( var_0, var_1 )
{
var_2 = spawnstruct();
var_3 = [];
var_3 = common_scripts\utility::array_combine( var_3, getentarray( var_0, "targetname" ) );
var_3 = common_scripts\utility::array_combine( var_3, getentarray( var_1, "targetname" ) );
for ( var_4 = 0; var_4 < var_3.size; var_4++ )
var_2 thread maps\_utility_code::ent_waits_for_trigger( var_3[var_4] );
var_2 waittill( "done" );
}
dronespawn_bodyonly( var_0 )
{
var_1 = maps\_spawner::spawner_dronespawn( var_0 );
return var_1;
}
dronespawn( var_0 )
{
if ( !isdefined( var_0 ) )
var_0 = self;
var_1 = maps\_spawner::spawner_dronespawn( var_0 );
var_1 [[ level.drone_spawn_func ]]();
var_1.spawn_funcs = var_0.spawn_functions;
var_1 thread maps\_spawner::run_spawn_functions();
return var_1;
}
makerealai( var_0 )
{
return maps\_spawner::spawner_makerealai( var_0 );
}
get_trigger_flag()
{
if ( isdefined( self.script_flag ) )
return self.script_flag;
if ( isdefined( self.script_noteworthy ) )
return self.script_noteworthy;
}
set_default_pathenemy_settings()
{
self.pathenemylookahead = 192;
self.pathenemyfightdist = 192;
}
cqb_walk( var_0 )
{
if ( var_0 == "on" )
enable_cqbwalk();
else
disable_cqbwalk();
}
enable_cqbwalk( var_0 )
{
if ( self.type == "dog" )
return;
if ( !isdefined( var_0 ) )
self.cqbenabled = 1;
self.cqbwalking = 1;
self.turnrate = 0.2;
level thread animscripts\cqb::findcqbpointsofinterest();
}
disable_cqbwalk()
{
if ( self.type == "dog" )
return;
self.cqbwalking = undefined;
self.cqbenabled = undefined;
self.turnrate = 0.3;
self.cqb_point_of_interest = undefined;
}
enable_readystand()
{
self.busereadyidle = 1;
}
disable_readystand()
{
self.busereadyidle = undefined;
}
cqb_aim( var_0 )
{
if ( !isdefined( var_0 ) )
self.cqb_target = undefined;
else
{
self.cqb_target = var_0;
if ( !isdefined( var_0.origin ) )
return;
}
}
set_force_cover( var_0 )
{
if ( isdefined( var_0 ) && var_0 )
self.forcesuppression = 1;
else
self.forcesuppression = undefined;
}
do_in_order( var_0, var_1, var_2, var_3 )
{
if ( isdefined( var_1 ) )
[[ var_0 ]]( var_1 );
else
[[ var_0 ]]();
if ( isdefined( var_3 ) )
[[ var_2 ]]( var_3 );
else
[[ var_2 ]]();
}
send_notify( var_0, var_1 )
{
if ( isdefined( var_1 ) )
self notify( var_0, var_1 );
else
self notify( var_0 );
}
waittill_match_or_timeout( var_0, var_1, var_2 )
{
var_3 = spawnstruct();
var_3 endon( "complete" );
var_3 delaythread( var_2, ::send_notify, "complete" );
self waittillmatch( var_0, var_1 );
}
deleteent( var_0 )
{
var_0 notify( "deleted" );
var_0 delete();
}
first_touch( var_0 )
{
if ( !isdefined( self.touched ) )
self.touched = [];
if ( isdefined( self.touched[var_0.unique_id] ) )
return 0;
self.touched[var_0.unique_id] = 1;
return 1;
}
getanim( var_0 )
{
return level.scr_anim[self.animname][var_0];
}
hasanim( var_0 )
{
return isdefined( level.scr_anim[self.animname][var_0] );
}
getanim_from_animname( var_0, var_1 )
{
return level.scr_anim[var_1][var_0];
}
getanim_generic( var_0 )
{
return level.scr_anim["generic"][var_0];
}
add_hint_string( var_0, var_1, var_2 )
{
if ( !isdefined( level.trigger_hint_string ) )
{
level.trigger_hint_string = [];
level.trigger_hint_func = [];
}
level.trigger_hint_string[var_0] = var_1;
precachestring( var_1 );
if ( isdefined( var_2 ) )
level.trigger_hint_func[var_0] = var_2;
}
show_hint( var_0 )
{
thread maps\_utility_code::showhintprint_struct( var_0 );
}
hide_hint( var_0 )
{
var_0.timeout = 1;
}
fire_radius( var_0, var_1 )
{
var_2 = spawn( "trigger_radius", var_0, 0, var_1, 48 );
for (;;)
{
var_2 waittill( "trigger", var_3 );
level.player dodamage( 5, var_0 );
}
}
clearthreatbias( var_0, var_1 )
{
setthreatbias( var_0, var_1, 0 );
setthreatbias( var_1, var_0, 0 );
}
throwgrenadeatplayerasap()
{
animscripts\combat_utility::throwgrenadeatplayerasap_combat_utility();
}
array_combine_keys( var_0, var_1 )
{
if ( !var_0.size )
return var_1;
var_2 = getarraykeys( var_1 );
for ( var_3 = 0; var_3 < var_2.size; var_3++ )
var_0[var_2[var_3]] = var_1[var_2[var_3]];
return var_0;
}
set_ignoresuppression( var_0 )
{
self.ignoresuppression = var_0;
}
set_goalradius( var_0 )
{
self.goalradius = var_0;
}
try_forever_spawn()
{
var_0 = self.export;
for (;;)
{
var_1 = self dospawn();
if ( spawn_failed( var_1 ) )
{
wait 1;
continue;
}
return var_1;
}
}
set_allowdeath( var_0 )
{
self.allowdeath = var_0;
}
set_run_anim( var_0, var_1 )
{
if ( isdefined( var_1 ) )
self.alwaysrunforward = var_1;
else
self.alwaysrunforward = 1;
disable_turnanims();
self.run_overrideanim = level.scr_anim[self.animname][var_0];
self.walk_overrideanim = self.run_overrideanim;
}
set_dog_walk_anim()
{
self.a.movement = "walk";
self.disablearrivals = 1;
self.disableexits = 1;
self.script_nobark = 1;
}
set_combat_stand_animset( var_0, var_1, var_2, var_3 )
{
animscripts\animset::init_animset_custom_stand( var_0, var_1, var_2, var_3 );
}
set_move_animset( var_0, var_1, var_2 )
{
var_3 = animscripts\utility::lookupanimarray( var_0 );
if ( isarray( var_1 ) )
{
var_3["straight"] = var_1[0];
var_3["move_f"] = var_1[0];
var_3["move_l"] = var_1[1];
var_3["move_r"] = var_1[2];
var_3["move_b"] = var_1[3];
}
else
{
var_3["straight"] = var_1;
var_3["move_f"] = var_1;
}
if ( isdefined( var_2 ) )
var_3["sprint"] = var_2;
self.custommoveanimset[var_0] = var_3;
}
set_generic_idle_anim( var_0 )
{
var_1 = level.scr_anim["generic"][var_0];
if ( isarray( var_1 ) )
self.specialidleanim = var_1;
else
self.specialidleanim[0] = var_1;
}
set_idle_anim( var_0 )
{
var_1 = level.scr_anim[self.animname][var_0];
if ( isarray( var_1 ) )
self.specialidleanim = var_1;
else
self.specialidleanim[0] = var_1;
}
clear_generic_idle_anim()
{
self.specialidleanim = undefined;
self notify( "stop_specialidle" );
}
set_generic_run_anim( var_0, var_1 )
{
set_generic_run_anim_array( var_0, undefined, var_1 );
}
clear_generic_run_anim()
{
self notify( "movemode" );
enable_turnanims();
self.run_overrideanim = undefined;
self.walk_overrideanim = undefined;
}
set_generic_run_anim_array( var_0, var_1, var_2 )
{
self notify( "movemode" );
if ( !isdefined( var_2 ) || var_2 )
self.alwaysrunforward = 1;
else
self.alwaysrunforward = undefined;
disable_turnanims();
self.run_overrideanim = level.scr_anim["generic"][var_0];
self.walk_overrideanim = self.run_overrideanim;
if ( isdefined( var_1 ) )
{
self.run_override_weights = level.scr_anim["generic"][var_1];
self.walk_override_weights = self.run_override_weights;
}
else
{
self.run_override_weights = undefined;
self.walk_override_weights = undefined;
}
}
set_run_anim_array( var_0, var_1, var_2 )
{
self notify( "movemode" );
if ( !isdefined( var_2 ) || var_2 )
self.alwaysrunforward = 1;
else
self.alwaysrunforward = undefined;
disable_turnanims();
self.run_overrideanim = level.scr_anim[self.animname][var_0];
self.walk_overrideanim = self.run_overrideanim;
if ( isdefined( var_1 ) )
{
self.run_override_weights = level.scr_anim[self.animname][var_1];
self.walk_override_weights = self.run_override_weights;
}
else
{
self.run_override_weights = undefined;
self.walk_override_weights = undefined;
}
}
clear_run_anim()
{
self notify( "clear_run_anim" );
self notify( "movemode" );
if ( self.type == "dog" )
{
self.a.movement = "run";
self.disablearrivals = 0;
self.disableexits = 0;
self.script_nobark = undefined;
return;
}
if ( !isdefined( self.casual_killer ) )
enable_turnanims();
self.alwaysrunforward = undefined;
self.run_overrideanim = undefined;
self.walk_overrideanim = undefined;
self.run_override_weights = undefined;
self.walk_override_weights = undefined;
}
debugvar( var_0, var_1 )
{
setdvarifuninitialized( var_0, var_1 );
return getdvarfloat( var_0 );
}
physicsjolt_proximity( var_0, var_1, var_2 )
{
self endon( "death" );
self endon( "stop_physicsjolt" );
if ( !isdefined( var_0 ) || !isdefined( var_1 ) || !isdefined( var_2 ) )
{
var_0 = 400;
var_1 = 256;
var_2 = ( 0, 0, 0.075 );
}
var_3 = var_0 * var_0;
var_4 = 3;
var_5 = var_2;
for (;;)
{
wait 0.1;
var_2 = var_5;
if ( self.code_classname == "script_vehicle" )
{
var_6 = self vehicle_getspeed();
if ( var_6 < var_4 )
{
var_7 = var_6 / var_4;
var_2 = var_5 * var_7;
}
}
var_8 = distancesquared( self.origin, level.player.origin );
var_7 = var_3 / var_8;
if ( var_7 > 1 )
var_7 = 1;
var_2 = var_2 * var_7;
var_9 = var_2[0] + var_2[1] + var_2[2];
if ( var_9 > 0.025 )
physicsjitter( self.origin, var_0, var_1, var_2[2], var_2[2] * 2.0 );
}
}
set_goal_entity( var_0 )
{
self setgoalentity( var_0 );
}
activate_trigger( var_0, var_1, var_2 )
{
if ( !isdefined( var_0 ) )
activate_trigger_process( var_2 );
else
common_scripts\utility::array_thread( getentarray( var_0, var_1 ), ::activate_trigger_process, var_2 );
}
activate_trigger_process( var_0 )
{
if ( isdefined( self.script_color_allies ) )
{
self.activated_color_trigger = 1;
maps\_colors::activate_color_trigger( "allies" );
}
if ( isdefined( self.script_color_axis ) )
{
self.activated_color_trigger = 1;
maps\_colors::activate_color_trigger( "axis" );
}
self notify( "trigger", var_0 );
}
self_delete()
{
self delete();
}
remove_nocolor_from_array( var_0 )
{
var_1 = [];
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
{
var_3 = var_0[var_2];
if ( var_3 has_color() )
var_1[var_1.size] = var_3;
}
return var_1;
}
has_color()
{
if ( maps\_colors::get_team() == "axis" )
return isdefined( self.script_color_axis ) || isdefined( self.script_forcecolor );
return isdefined( self.script_color_allies ) || isdefined( self.script_forcecolor );
}
clear_colors()
{
clear_team_colors( "axis" );
clear_team_colors( "allies" );
}
clear_team_colors( var_0 )
{
level.currentcolorforced[var_0]["r"] = undefined;
level.currentcolorforced[var_0]["b"] = undefined;
level.currentcolorforced[var_0]["c"] = undefined;
level.currentcolorforced[var_0]["y"] = undefined;
level.currentcolorforced[var_0]["p"] = undefined;
level.currentcolorforced[var_0]["o"] = undefined;
level.currentcolorforced[var_0]["g"] = undefined;
}
get_script_palette()
{
var_0 = [];
var_0["r"] = ( 1, 0, 0 );
var_0["o"] = ( 1, 0.5, 0 );
var_0["y"] = ( 1, 1, 0 );
var_0["g"] = ( 0, 1, 0 );
var_0["c"] = ( 0, 1, 1 );
var_0["b"] = ( 0, 0, 1 );
var_0["p"] = ( 1, 0, 1 );
return var_0;
}
notify_delay( var_0, var_1 )
{
self endon( "death" );
if ( var_1 > 0 )
wait( var_1 );
if ( !isdefined( self ) )
return;
self notify( var_0 );
}
gun_remove()
{
if ( isai( self ) )
animscripts\shared::placeweaponon( self.weapon, "none" );
else
self detach( getweaponmodel( self.weapon ), "tag_weapon_right" );
}
gun_recall()
{
if ( isai( self ) )
animscripts\shared::placeweaponon( self.weapon, "right" );
else
self attach( getweaponmodel( self.weapon ), "tag_weapon_right" );
}
place_weapon_on( var_0, var_1 )
{
if ( !animscripts\utility::aihasweapon( var_0 ) )
animscripts\init::initweapon( var_0 );
animscripts\shared::placeweaponon( var_0, var_1 );
}
forceuseweapon( var_0, var_1 )
{
if ( !animscripts\init::isweaponinitialized( var_0 ) )
animscripts\init::initweapon( var_0 );
var_2 = self.weapon != "none";
var_3 = animscripts\utility::usingsidearm();
var_4 = var_1 == "sidearm";
var_5 = var_1 == "secondary";
if ( var_2 && var_3 != var_4 )
{
if ( var_3 )
var_6 = "none";
else if ( var_5 )
var_6 = "back";
else
var_6 = "chest";
animscripts\shared::placeweaponon( self.weapon, var_6 );
self.lastweapon = self.weapon;
}
else
self.lastweapon = var_0;
animscripts\shared::placeweaponon( var_0, "right" );
if ( var_4 )
self.sidearm = var_0;
else if ( var_5 )
self.secondaryweapon = var_0;
else
self.primaryweapon = var_0;
self.weapon = var_0;
self.bulletsinclip = weaponclipsize( self.weapon );
self notify( "weapon_switch_done" );
}
lerp_player_view_to_tag( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7 )
{
maps\_utility_code::lerp_player_view_to_tag_internal( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, 0 );
}
lerp_player_view_to_tag_and_hit_geo( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7 )
{
maps\_utility_code::lerp_player_view_to_tag_internal( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, 1 );
}
lerp_player_view_to_position( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9 )
{
var_9 = get_player_from_self();
var_10 = spawn( "script_origin", ( 0, 0, 0 ) );
var_10.origin = var_9.origin;
var_10.angles = var_9 getplayerangles();
if ( isdefined( var_8 ) && var_8 )
var_9 playerlinkto( var_10, "", var_3, var_4, var_5, var_6, var_7, var_8 );
else if ( isdefined( var_4 ) )
var_9 playerlinkto( var_10, "", var_3, var_4, var_5, var_6, var_7 );
else if ( isdefined( var_3 ) )
var_9 playerlinkto( var_10, "", var_3 );
else
var_9 playerlinkto( var_10 );
var_10 moveto( var_0, var_2, var_2 * 0.25 );
var_10 rotateto( var_1, var_2, var_2 * 0.25 );
wait( var_2 );
var_10 delete();
}
lerp_player_view_to_tag_oldstyle( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7 )
{
maps\_utility_code::lerp_player_view_to_tag_oldstyle_internal( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, 0 );
}
lerp_player_view_to_position_oldstyle( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8 )
{
var_9 = get_player_from_self();
var_10 = spawn( "script_origin", ( 0, 0, 0 ) );
var_10.origin = var_9 get_player_feet_from_view();
var_10.angles = var_9 getplayerangles();
if ( isdefined( var_8 ) )
var_9 playerlinktodelta( var_10, "", var_3, var_4, var_5, var_6, var_7, var_8 );
else if ( isdefined( var_4 ) )
var_9 playerlinktodelta( var_10, "", var_3, var_4, var_5, var_6, var_7 );
else if ( isdefined( var_3 ) )
var_9 playerlinktodelta( var_10, "", var_3 );
else
var_9 playerlinktodelta( var_10 );
var_10 moveto( var_0, var_2, var_2 * 0.25 );
var_10 rotateto( var_1, var_2, var_2 * 0.25 );
wait( var_2 );
var_10 delete();
}
player_moves( var_0 )
{
var_1 = level.player.origin;
for (;;)
{
if ( distance( var_1, level.player.origin ) > var_0 )
break;
wait 0.05;
}
}
waittill_either_function( var_0, var_1, var_2, var_3 )
{
var_4 = spawnstruct();
thread maps\_utility_code::waittill_either_function_internal( var_4, var_0, var_1 );
thread maps\_utility_code::waittill_either_function_internal( var_4, var_2, var_3 );
var_4 waittill( "done" );
}
waittill_msg( var_0 )
{
self waittill( var_0 );
}
display_hint( var_0, var_1, var_2, var_3 )
{
var_4 = get_player_from_self();
if ( isdefined( level.trigger_hint_func[var_0] ) )
{
if ( var_4 [[ level.trigger_hint_func[var_0] ]]() )
return;
var_4 thread maps\_utility_code::hintprint( level.trigger_hint_string[var_0], level.trigger_hint_func[var_0], var_1, var_2, var_3, 30 );
}
else
var_4 thread maps\_utility_code::hintprint( level.trigger_hint_string[var_0], undefined, undefined, undefined, undefined, 30 );
}
display_hint_timeout( var_0, var_1, var_2, var_3, var_4 )
{
var_5 = get_player_from_self();
if ( var_5 [[ level.trigger_hint_func[var_0] ]]() )
return;
var_5 thread maps\_utility_code::hintprint( level.trigger_hint_string[var_0], level.trigger_hint_func[var_0], var_2, var_3, var_4, var_1 );
}
display_hint_timeout_mintime( var_0, var_1, var_2, var_3, var_4, var_5 )
{
var_6 = get_player_from_self();
if ( var_6 [[ level.trigger_hint_func[var_0] ]]() )
return;
var_6 thread maps\_utility_code::hintprint( level.trigger_hint_string[var_0], level.trigger_hint_func[var_0], var_3, var_4, var_5, var_1, var_2 );
}
display_hint_stick( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9 )
{
if ( !isdefined( var_6 ) )
var_6 = 0;
var_10 = maps\_utility_code::hint_stick_get_updated( var_0, var_1, var_2, var_3, var_4, var_5, var_6 );
thread display_hint( var_10, var_7, var_8, var_9 );
thread maps\_utility_code::hint_stick_update( var_0, var_1, var_2, var_3, var_4, var_5, var_6 );
}
display_hint_stick_timeout( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10 )
{
if ( !isdefined( var_7 ) )
var_7 = 0;
var_11 = maps\_utility_code::hint_stick_get_updated( var_0, var_2, var_3, var_4, var_5, var_6, var_7 );
thread display_hint_timeout( var_11, var_1, var_8, var_9, var_10 );
thread maps\_utility_code::hint_stick_update( var_0, var_2, var_3, var_4, var_5, var_6, var_7 );
}
display_hint_stick_timeout_mintime( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10, var_11 )
{
if ( !isdefined( var_8 ) )
var_8 = 0;
var_12 = maps\_utility_code::hint_stick_get_updated( var_0, var_3, var_4, var_5, var_6, var_7, var_8 );
thread display_hint_timeout_mintime( var_12, var_1, var_2, var_9, var_10, var_11 );
thread maps\_utility_code::hint_stick_update( var_0, var_3, var_4, var_5, var_6, var_7, var_8 );
}
check_hint_condition( var_0, var_1, var_2, var_3 )
{
if ( isdefined( var_3 ) )
return [[ level.trigger_hint_func[var_0] ]]( var_1, var_2, var_3 );
if ( isdefined( var_2 ) )
return [[ level.trigger_hint_func[var_0] ]]( var_1, var_2 );
if ( isdefined( var_1 ) )
return [[ level.trigger_hint_func[var_0] ]]( var_1 );
return [[ level.trigger_hint_func[var_0] ]]();
}
getgenericanim( var_0 )
{
return level.scr_anim["generic"][var_0];
}
enable_careful()
{
self.script_careful = 1;
}
disable_careful()
{
self.script_careful = 0;
self notify( "stop_being_careful" );
}
enable_sprint()
{
self.sprint = 1;
}
disable_sprint()
{
self.sprint = undefined;
}
disable_bulletwhizbyreaction()
{
self.disablebulletwhizbyreaction = 1;
}
enable_bulletwhizbyreaction()
{
self.disablebulletwhizbyreaction = undefined;
}
clear_dvar( var_0 )
{
setdvar( var_0, "" );
}
set_fixednode_true()
{
self.fixednode = 1;
}
set_fixednode_false()
{
self.fixednode = 0;
}
spawn_ai( var_0, var_1 )
{
if ( isdefined( self.script_delay_spawn ) )
{
self endon( "death" );
wait( self.script_delay_spawn );
}
var_2 = undefined;
var_3 = isdefined( self.script_stealth ) && common_scripts\utility::flag( "_stealth_enabled" ) && !common_scripts\utility::flag( "_stealth_spotted" );
if ( isdefined( self.script_forcespawn ) || isdefined( var_0 ) )
{
if ( !isdefined( self.script_drone ) )
var_2 = self stalingradspawn( var_3 );
else
var_2 = dronespawn( self );
}
else if ( !isdefined( self.script_drone ) )
var_2 = self dospawn( var_3 );
else
var_2 = dronespawn( self );
if ( isdefined( var_1 ) && var_1 && isalive( var_2 ) )
var_2 magic_bullet_shield();
if ( !isdefined( self.script_drone ) )
spawn_failed( var_2 );
if ( isdefined( self.script_spawn_once ) )
self delete();
return var_2;
}
function_stack( var_0, var_1, var_2, var_3, var_4, var_5 )
{
var_6 = spawnstruct();
var_6 thread maps\_utility_code::function_stack_proc( self, var_0, var_1, var_2, var_3, var_4, var_5 );
return maps\_utility_code::function_stack_wait_finish( var_6 );
}
function_stack_timeout( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
var_7 = spawnstruct();
var_7 thread maps\_utility_code::function_stack_proc( self, var_1, var_2, var_3, var_4, var_5, var_6 );
if ( isdefined( var_7.function_stack_func_begun ) || var_7 common_scripts\utility::waittill_any_timeout( var_0, "function_stack_func_begun" ) != "timeout" )
return maps\_utility_code::function_stack_wait_finish( var_7 );
else
{
var_7 notify( "death" );
return 0;
}
}
function_stack_clear()
{
var_0 = [];
if ( isdefined( self.function_stack[0] ) && isdefined( self.function_stack[0].function_stack_func_begun ) )
var_0[0] = self.function_stack[0];
self.function_stack = undefined;
self notify( "clear_function_stack" );
waittillframeend;
if ( !var_0.size )
return;
if ( !var_0[0].function_stack_func_begun )
return;
self.function_stack = var_0;
}
geo_off()
{
if ( isdefined( self.geo_off ) )
return;
self.realorigin = self getorigin();
self moveto( self.realorigin + ( 0, 0, -10000 ), 0.2 );
self.geo_off = 1;
}
geo_on()
{
if ( !isdefined( self.geo_off ) )
return;
self moveto( self.realorigin, 0.2 );
self waittill( "movedone" );
self.geo_off = undefined;
}
disable_exits()
{
self.disableexits = 1;
}
enable_exits()
{
self.disableexits = undefined;
}
disable_turnanims()
{
self.noturnanims = 1;
}
enable_turnanims()
{
self.noturnanims = undefined;
}
disable_arrivals()
{
self.disablearrivals = 1;
}
enable_arrivals()
{
self endon( "death" );
waittillframeend;
self.disablearrivals = undefined;
}
set_blur( var_0, var_1 )
{
setblur( var_0, var_1 );
}
set_goal_radius( var_0 )
{
self.goalradius = var_0;
}
set_goal_node( var_0 )
{
self.last_set_goalnode = var_0;
self.last_set_goalpos = undefined;
self.last_set_goalent = undefined;
self setgoalnode( var_0 );
}
set_goal_node_targetname( var_0 )
{
var_1 = getnode( var_0, "targetname" );
set_goal_node( var_1 );
}
set_goal_pos( var_0 )
{
self.last_set_goalnode = undefined;
self.last_set_goalpos = var_0;
self.last_set_goalent = undefined;
self setgoalpos( var_0 );
}
set_goal_ent( var_0 )
{
set_goal_pos( var_0.origin );
self.last_set_goalent = var_0;
}
objective_complete( var_0 )
{
maps\_utility_code::objective_recon( var_0 );
objective_state( var_0, "done" );
level notify( "objective_complete" + var_0 );
}
handsignal( var_0, var_1, var_2, var_3 )
{
var_4 = 1;
if ( isdefined( var_1 ) )
var_4 = !var_1;
if ( isdefined( var_2 ) )
level endon( var_2 );
if ( isdefined( var_3 ) )
level waittill( var_3 );
var_5 = "signal_" + var_0;
if ( self.a.pose == "crouch" )
var_5 = var_5 + "_crouch";
else if ( self.script == "cover_right" || self.script == "cover_multi" && self.cover.state == "right" )
var_5 = var_5 + "_coverR";
else if ( animscripts\utility::iscqbwalking() )
var_5 = var_5 + "_cqb";
if ( var_4 )
self setanimrestart( getgenericanim( var_5 ), 1, 0, 1.1 );
else
maps\_anim::anim_generic( self, var_5 );
}
array_spawn( var_0, var_1, var_2 )
{
if ( !isdefined( var_2 ) )
var_2 = 0;
var_3 = [];
foreach ( var_5 in var_0 )
{
var_5.count = 1;
if ( getsubstr( var_5.classname, 7, 10 ) == "veh" )
{
var_6 = var_5 spawn_vehicle();
if ( isdefined( var_6.target ) && !isdefined( var_6.script_moveoverride ) )
var_6 thread maps\_vehicle::gopath();
var_3[var_3.size] = var_6;
continue;
}
var_6 = var_5 spawn_ai( var_1 );
if ( !var_2 )
{
}
var_3[var_3.size] = var_6;
}
if ( !var_2 )
{
}
return var_3;
}
array_spawn_targetname( var_0, var_1, var_2, var_3 )
{
var_4 = getentarray( var_0, "targetname" );
if ( isdefined( level.spawn_pool_enabled ) )
{
var_5 = common_scripts\utility::getstructarray( var_0, "targetname" );
if ( isdefined( var_3 ) && var_3 )
deletestructarray_ref( var_5 );
var_6 = maps\_spawner::get_pool_spawners_from_structarray( var_5 );
var_4 = common_scripts\utility::array_combine( var_4, var_6 );
}
return array_spawn( var_4, var_1, var_2 );
}
array_spawn_noteworthy( var_0, var_1, var_2, var_3 )
{
var_4 = getentarray( var_0, "script_noteworthy" );
if ( isdefined( level.spawn_pool_enabled ) )
{
var_5 = common_scripts\utility::getstructarray( var_0, "script_noteworthy" );
if ( isdefined( var_3 ) && var_3 )
deletestructarray_ref( var_5 );
var_6 = maps\_spawner::get_pool_spawners_from_structarray( var_5 );
var_4 = common_scripts\utility::array_combine( var_4, var_6 );
}
return array_spawn( var_4, var_1, var_2 );
}
spawn_script_noteworthy( var_0, var_1 )
{
var_2 = getent( var_0, "script_noteworthy" );
var_3 = var_2 spawn_ai( var_1 );
return var_3;
}
spawn_targetname( var_0, var_1 )
{
var_2 = getent( var_0, "targetname" );
var_3 = var_2 spawn_ai( var_1 );
return var_3;
}
add_dialogue_line( var_0, var_1, var_2 )
{
if ( getdvarint( "loc_warnings", 0 ) )
return;
if ( !isdefined( level.dialogue_huds ) )
level.dialogue_huds = [];
var_3 = 0;
for (;;)
{
if ( !isdefined( level.dialogue_huds[var_3] ) )
break;
var_3++;
}
var_4 = "^3";
if ( isdefined( var_2 ) )
{
switch ( var_2 )
{
case "red":
case "r":
var_4 = "^1";
break;
case "green":
case "g":
var_4 = "^2";
break;
case "yellow":
case "y":
var_4 = "^3";
break;
case "blue":
case "b":
var_4 = "^4";
break;
case "cyan":
case "c":
var_4 = "^5";
break;
case "purple":
case "p":
var_4 = "^6";
break;
case "white":
case "w":
var_4 = "^7";
break;
case "black":
case "bl":
var_4 = "^8";
break;
}
}
level.dialogue_huds[var_3] = 1;
var_5 = maps\_hud_util::createfontstring( "default", 1.5 );
var_5.location = 0;
var_5.alignx = "left";
var_5.aligny = "top";
var_5.foreground = 1;
var_5.sort = 20;
var_5.alpha = 0;
var_5 fadeovertime( 0.5 );
var_5.alpha = 1;
var_5.x = 40;
var_5.y = 260 + var_3 * 18;
var_5.label = " " + var_4 + "< " + var_0 + " > ^7" + var_1;
var_5.color = ( 1, 1, 1 );
wait 2;
var_6 = 40;
var_5 fadeovertime( 6 );
var_5.alpha = 0;
for ( var_7 = 0; var_7 < var_6; var_7++ )
{
var_5.color = ( 1, 1, 0 / ( var_6 - var_7 ) );
wait 0.05;
}
wait 4;
var_5 destroy();
level.dialogue_huds[var_3] = undefined;
}
destructible_disable_explosion()
{
common_scripts\_destructible::disable_explosion();
}
destructible_force_explosion()
{
common_scripts\_destructible::force_explosion();
}
set_grenadeammo( var_0 )
{
self.grenadeammo = var_0;
}
get_player_feet_from_view()
{
var_0 = self.origin;
var_1 = anglestoup( self getplayerangles() );
var_2 = self getplayerviewheight();
var_3 = var_0 + ( 0, 0, var_2 );
var_4 = var_0 + var_1 * var_2;
var_5 = var_3 - var_4;
var_6 = var_0 + var_5;
return var_6;
}
set_baseaccuracy( var_0 )
{
self.baseaccuracy = var_0;
}
set_console_status()
{
if ( !isdefined( level.console ) )
level.console = getdvar( "consoleGame" ) == "true";
else
{
}
if ( !isdefined( level.xenon ) )
level.xenon = getdvar( "xenonGame" ) == "true";
else
{
}
if ( !isdefined( level.ps3 ) )
level.ps3 = getdvar( "ps3Game" ) == "true";
else
{
}
if ( !isdefined( level.xb3 ) )
level.xb3 = getdvar( "xb3Game" ) == "true";
else
{
}
if ( !isdefined( level.ps4 ) )
level.ps4 = getdvar( "ps4Game" ) == "true";
else
{
}
}
is_gen4()
{
if ( level.xb3 || level.ps4 || !level.console )
return 1;
else
return 0;
}
autosave_now( var_0 )
{
return maps\_autosave::_autosave_game_now( var_0 );
}
autosave_now_silent()
{
return maps\_autosave::_autosave_game_now( 1 );
}
set_generic_deathanim( var_0 )
{
self.deathanim = getgenericanim( var_0 );
}
set_deathanim( var_0 )
{
self.deathanim = getanim( var_0 );
}
clear_deathanim()
{
self.deathanim = undefined;
}
hunted_style_door_open( var_0 )
{
wait 1.75;
if ( isdefined( var_0 ) )
self playsound( var_0 );
else
self playsound( "door_wood_slow_open" );
self rotateto( self.angles + ( 0, 70, 0 ), 2, 0.5, 0 );
self connectpaths();
self waittill( "rotatedone" );
self rotateto( self.angles + ( 0, 40, 0 ), 2, 0, 2 );
}
palm_style_door_open( var_0 )
{
wait 1.35;
if ( isdefined( var_0 ) )
self playsound( var_0 );
else
self playsound( "door_wood_slow_open" );
self rotateto( self.angles + ( 0, 70, 0 ), 2, 0.5, 0 );
self connectpaths();
self waittill( "rotatedone" );
self rotateto( self.angles + ( 0, 40, 0 ), 2, 0, 2 );
}
lerp_fov_overtime( var_0, var_1 )
{
foreach ( var_3 in level.players )
var_3 lerpfov( var_1, var_0 );
wait( var_0 );
}
lerp_fovscale_overtime( var_0, var_1 )
{
var_2 = getdvarfloat( "cg_fovscale" );
var_3 = int( var_0 / 0.05 );
var_4 = ( var_1 - var_2 ) / var_3;
var_5 = var_2;
for ( var_6 = 0; var_6 < var_3; var_6++ )
{
var_5 = var_5 + var_4;
setsaveddvar( "cg_fovscale", var_5 );
wait 0.05;
}
setsaveddvar( "cg_fovscale", var_1 );
}
putgunaway()
{
animscripts\shared::placeweaponon( self.weapon, "none" );
self.weapon = "none";
}
apply_fog()
{
maps\_art::set_fog_progress( 0 );
}
apply_end_fog()
{
maps\_art::set_fog_progress( 1 );
}
anim_stopanimscripted()
{
self stopanimscripted();
self notify( "stop_loop" );
self notify( "single anim", "end" );
self notify( "looping anim", "end" );
}
disable_pain()
{
self.a.disablepain = 1;
self.allowpain = 0;
}
enable_pain()
{
self.a.disablepain = 0;
self.allowpain = 1;
}
kill_wrapper()
{
if ( isplayer( self ) )
{
if ( common_scripts\utility::flag_exist( "special_op_terminated" ) && common_scripts\utility::flag( "special_op_terminated" ) )
return 0;
if ( is_player_down( self ) )
self disableinvulnerability();
}
self enabledeathshield( 0 );
self kill();
return 1;
}
disable_oneshotfx_with_noteworthy( var_0 )
{
var_1 = getarraykeys( level._global_fx_ents[var_0] );
for ( var_2 = 0; var_2 < var_1.size; var_2++ )
{
level._global_fx_ents[var_0][var_1[var_2]].looper delete();
level._global_fx_ents[var_0][var_1[var_2]] = undefined;
}
}
array_wait( var_0, var_1, var_2 )
{
var_3 = getarraykeys( var_0 );
var_4 = [];
for ( var_5 = 0; var_5 < var_3.size; var_5++ )
var_6 = var_3[var_5];
for ( var_5 = 0; var_5 < var_3.size; var_5++ )
{
var_6 = var_3[var_5];
var_4[var_6] = spawnstruct();
var_4[var_6]._array_wait = 1;
var_4[var_6] thread maps\_utility_code::array_waitlogic1( var_0[var_6], var_1, var_2 );
}
for ( var_5 = 0; var_5 < var_3.size; var_5++ )
{
var_6 = var_3[var_5];
if ( isdefined( var_0[var_6] ) && var_4[var_6]._array_wait )
var_4[var_6] waittill( "_array_wait" );
}
}
die()
{
self kill( ( 0, 0, 0 ) );
}
getmodel( var_0 )
{
return level.scr_model[var_0];
}
isads()
{
return self playerads() > 0.5;
}
disable_replace_on_death()
{
self.replace_on_death = undefined;
self notify( "_disable_reinforcement" );
}
waittill_player_lookat( var_0, var_1, var_2, var_3, var_4, var_5 )
{
if ( !isdefined( var_5 ) )
var_5 = level.player;
var_6 = spawnstruct();
if ( isdefined( var_3 ) )
var_6 thread notify_delay( "timeout", var_3 );
var_6 endon( "timeout" );
if ( !isdefined( var_0 ) )
var_0 = 0.92;
if ( !isdefined( var_1 ) )
var_1 = 0;
var_7 = int( var_1 * 20 );
var_8 = var_7;
self endon( "death" );
var_9 = isai( self );
var_10 = undefined;
for (;;)
{
if ( var_9 )
var_10 = self geteye();
else
var_10 = self.origin;
if ( var_5 player_looking_at( var_10, var_0, var_2, var_4 ) )
{
var_8--;
if ( var_8 <= 0 )
return 1;
}
else
var_8 = var_7;
wait 0.05;
}
}
waittill_player_lookat_for_time( var_0, var_1, var_2, var_3 )
{
waittill_player_lookat( var_1, var_0, var_2, undefined, var_3 );
}
player_looking_at( var_0, var_1, var_2, var_3 )
{
if ( !isdefined( var_1 ) )
var_1 = 0.8;
var_4 = get_player_from_self();
var_5 = var_4 geteye();
var_6 = vectortoangles( var_0 - var_5 );
var_7 = anglestoforward( var_6 );
var_8 = var_4 getplayerangles();
var_9 = anglestoforward( var_8 );
var_10 = vectordot( var_7, var_9 );
if ( var_10 < var_1 )
return 0;
if ( isdefined( var_2 ) )
return 1;
var_11 = bullettrace( var_0, var_5, 0, var_3 );
return var_11["fraction"] == 1;
}
either_player_looking_at( var_0, var_1, var_2, var_3 )
{
for ( var_4 = 0; var_4 < level.players.size; var_4++ )
{
if ( level.players[var_4] player_looking_at( var_0, var_1, var_2, var_3 ) )
return 1;
}
return 0;
}
player_can_see_ai( var_0, var_1 )
{
var_2 = gettime();
if ( !isdefined( var_1 ) )
var_1 = 0;
if ( isdefined( var_0.playerseesmetime ) && var_0.playerseesmetime + var_1 >= var_2 )
return var_0.playerseesme;
var_0.playerseesmetime = var_2;
if ( !common_scripts\utility::within_fov( level.player.origin, level.player.angles, var_0.origin, 0.766 ) )
{
var_0.playerseesme = 0;
return 0;
}
var_3 = level.player geteye();
var_4 = var_0.origin;
if ( sighttracepassed( var_3, var_4, 1, level.player, var_0 ) )
{
var_0.playerseesme = 1;
return 1;
}
var_5 = var_0 geteye();
if ( sighttracepassed( var_3, var_5, 1, level.player, var_0 ) )
{
var_0.playerseesme = 1;
return 1;
}
var_6 = ( var_5 + var_4 ) * 0.5;
if ( sighttracepassed( var_3, var_6, 1, level.player, var_0 ) )
{
var_0.playerseesme = 1;
return 1;
}
var_0.playerseesme = 0;
return 0;
}
players_within_distance( var_0, var_1 )
{
var_2 = var_0 * var_0;
for ( var_3 = 0; var_3 < level.players.size; var_3++ )
{
if ( distancesquared( var_1, level.players[var_3].origin ) < var_2 )
return 1;
}
return 0;
}
ai_delete_when_out_of_sight( var_0, var_1 )
{
if ( !isdefined( var_0 ) )
return;
var_2 = 0.75;
if ( issplitscreen() )
var_2 = 0.65;
while ( var_0.size > 0 )
{
wait 1;
for ( var_3 = 0; var_3 < var_0.size; var_3++ )
{
if ( !isdefined( var_0[var_3] ) || !isalive( var_0[var_3] ) )
{
var_0 = common_scripts\utility::array_remove( var_0, var_0[var_3] );
continue;
}
if ( players_within_distance( var_1, var_0[var_3].origin ) )
continue;
if ( either_player_looking_at( var_0[var_3].origin + ( 0, 0, 48 ), var_2, 1 ) )
continue;
if ( isdefined( var_0[var_3].magic_bullet_shield ) )
var_0[var_3] stop_magic_bullet_shield();
var_0[var_3] delete();
var_0 = common_scripts\utility::array_remove( var_0, var_0[var_3] );
}
}
}
add_wait( var_0, var_1, var_2, var_3 )
{
var_4 = spawnstruct();
var_4.caller = self;
var_4.func = var_0;
var_4.parms = [];
if ( isdefined( var_1 ) )
var_4.parms[var_4.parms.size] = var_1;
if ( isdefined( var_2 ) )
var_4.parms[var_4.parms.size] = var_2;
if ( isdefined( var_3 ) )
var_4.parms[var_4.parms.size] = var_3;
level.wait_any_func_array[level.wait_any_func_array.size] = var_4;
}
add_abort( var_0, var_1, var_2, var_3 )
{
var_4 = spawnstruct();
var_4.caller = self;
var_4.func = var_0;
var_4.parms = [];
if ( isdefined( var_1 ) )
var_4.parms[var_4.parms.size] = var_1;
if ( isdefined( var_2 ) )
var_4.parms[var_4.parms.size] = var_2;
if ( isdefined( var_3 ) )
var_4.parms[var_4.parms.size] = var_3;
level.abort_wait_any_func_array[level.abort_wait_any_func_array.size] = var_4;
}
add_func( var_0, var_1, var_2, var_3, var_4, var_5 )
{
var_6 = spawnstruct();
var_6.caller = self;
var_6.func = var_0;
var_6.parms = [];
if ( isdefined( var_1 ) )
var_6.parms[var_6.parms.size] = var_1;
if ( isdefined( var_2 ) )
var_6.parms[var_6.parms.size] = var_2;
if ( isdefined( var_3 ) )
var_6.parms[var_6.parms.size] = var_3;
if ( isdefined( var_4 ) )
var_6.parms[var_6.parms.size] = var_4;
if ( isdefined( var_5 ) )
var_6.parms[var_6.parms.size] = var_5;
level.run_func_after_wait_array[level.run_func_after_wait_array.size] = var_6;
}
add_call( var_0, var_1, var_2, var_3, var_4, var_5 )
{
var_6 = spawnstruct();
var_6.caller = self;
var_6.func = var_0;
var_6.parms = [];
if ( isdefined( var_1 ) )
var_6.parms[var_6.parms.size] = var_1;
if ( isdefined( var_2 ) )
var_6.parms[var_6.parms.size] = var_2;
if ( isdefined( var_3 ) )
var_6.parms[var_6.parms.size] = var_3;
if ( isdefined( var_4 ) )
var_6.parms[var_6.parms.size] = var_4;
if ( isdefined( var_5 ) )
var_6.parms[var_6.parms.size] = var_5;
level.run_call_after_wait_array[level.run_call_after_wait_array.size] = var_6;
}
add_noself_call( var_0, var_1, var_2, var_3, var_4, var_5 )
{
var_6 = spawnstruct();
var_6.func = var_0;
var_6.parms = [];
if ( isdefined( var_1 ) )
var_6.parms[var_6.parms.size] = var_1;
if ( isdefined( var_2 ) )
var_6.parms[var_6.parms.size] = var_2;
if ( isdefined( var_3 ) )
var_6.parms[var_6.parms.size] = var_3;
if ( isdefined( var_4 ) )
var_6.parms[var_6.parms.size] = var_4;
if ( isdefined( var_5 ) )
var_6.parms[var_6.parms.size] = var_5;
level.run_noself_call_after_wait_array[level.run_noself_call_after_wait_array.size] = var_6;
}
add_endon( var_0 )
{
var_1 = spawnstruct();
var_1.caller = self;
var_1.ender = var_0;
level.do_wait_endons_array[level.do_wait_endons_array.size] = var_1;
}
do_wait_any()
{
do_wait( level.wait_any_func_array.size - 1 );
}
do_wait( var_0 )
{
if ( !isdefined( var_0 ) )
var_0 = 0;
var_1 = spawnstruct();
var_2 = level.wait_any_func_array;
var_3 = level.do_wait_endons_array;
var_4 = level.run_func_after_wait_array;
var_5 = level.run_call_after_wait_array;
var_6 = level.run_noself_call_after_wait_array;
var_7 = level.abort_wait_any_func_array;
level.wait_any_func_array = [];
level.run_func_after_wait_array = [];
level.do_wait_endons_array = [];
level.abort_wait_any_func_array = [];
level.run_call_after_wait_array = [];
level.run_noself_call_after_wait_array = [];
var_1.count = var_2.size;
var_1 common_scripts\utility::array_levelthread( var_2, maps\_utility_code::waittill_func_ends, var_3 );
var_1 thread maps\_utility_code::do_abort( var_7 );
var_1 endon( "any_funcs_aborted" );
for (;;)
{
if ( var_1.count <= var_0 )
break;
var_1 waittill( "func_ended" );
}
var_1 notify( "all_funcs_ended" );
common_scripts\utility::array_levelthread( var_4, maps\_utility_code::exec_func, [] );
common_scripts\utility::array_levelthread( var_5, maps\_utility_code::exec_call );
common_scripts\utility::array_levelthread( var_6, maps\_utility_code::exec_call_noself );
}
do_funcs()
{
var_0 = spawnstruct();
var_1 = level.run_func_after_wait_array;
level.run_func_after_wait_array = [];
foreach ( var_3 in var_1 )
level maps\_utility_code::exec_func( var_3, [] );
var_0 notify( "all_funcs_ended" );
}
is_default_start()
{
if ( isdefined( level.forced_start_catchup ) && level.forced_start_catchup == 1 )
return 0;
if ( isdefined( level.default_start_override ) && level.default_start_override == level.start_point )
return 1;
if ( isdefined( level.default_start ) )
return level.start_point == "default";
if ( level_has_start_points() )
return level.start_point == level.start_functions[0]["name"];
return level.start_point == "default";
}
force_start_catchup()
{
level.forced_start_catchup = 1;
}
is_first_start()
{
if ( !level_has_start_points() )
return 1;
return level.start_point == level.start_functions[0]["name"];
}
is_after_start( var_0 )
{
var_1 = 0;
if ( level.start_point == var_0 )
return 0;
for ( var_2 = 0; var_2 < level.start_functions.size; var_2++ )
{
if ( level.start_functions[var_2]["name"] == var_0 )
{
var_1 = 1;
continue;
}
if ( level.start_functions[var_2]["name"] == level.start_point )
return var_1;
}
}
waterfx( var_0, var_1 )
{
self endon( "death" );
var_2 = 0;
if ( isdefined( var_1 ) )
var_2 = 1;
if ( isdefined( var_0 ) )
{
common_scripts\utility::flag_assert( var_0 );
level endon( var_0 );
}
for (;;)
{
wait( randomfloatrange( 0.15, 0.3 ) );
var_3 = self.origin + ( 0, 0, 150 );
var_4 = self.origin - ( 0, 0, 150 );
var_5 = bullettrace( var_3, var_4, 0, undefined );
if ( var_5["surfacetype"] != "water" )
continue;
var_6 = "water_movement";
if ( isplayer( self ) )
{
if ( distance( self getvelocity(), ( 0, 0, 0 ) ) < 5 )
var_6 = "water_stop";
}
else if ( isdefined( level._effect["water_" + self.a.movement] ) )
var_6 = "water_" + self.a.movement;
var_7 = common_scripts\utility::getfx( var_6 );
var_3 = var_5["position"];
var_8 = ( 0, self.angles[1], 0 );
var_9 = anglestoforward( var_8 );
var_10 = anglestoup( var_8 );
playfx( var_7, var_3, var_10, var_9 );
if ( var_6 != "water_stop" && var_2 )
thread common_scripts\utility::play_sound_in_space( var_1, var_3 );
}
}
playersnowfootsteps( var_0 )
{
if ( isdefined( var_0 ) )
{
common_scripts\utility::flag_assert( var_0 );
level endon( var_0 );
}
for (;;)
{
wait( randomfloatrange( 0.25, 0.5 ) );
var_1 = self.origin + ( 0, 0, 0 );
var_2 = self.origin - ( 0, 0, 5 );
var_3 = bullettrace( var_1, var_2, 0, undefined );
var_4 = anglestoforward( self.angles );
var_5 = distance( self getvelocity(), ( 0, 0, 0 ) );
if ( isdefined( self.vehicle ) )
continue;
if ( var_3["surfacetype"] != "snow" )
continue;
if ( var_5 <= 10 )
continue;
var_6 = "snow_movement";
if ( distance( self getvelocity(), ( 0, 0, 0 ) ) <= 154 )
playfx( common_scripts\utility::getfx( "footstep_snow_small" ), var_3["position"], var_3["normal"], var_4 );
if ( distance( self getvelocity(), ( 0, 0, 0 ) ) > 154 )
playfx( common_scripts\utility::getfx( "footstep_snow" ), var_3["position"], var_3["normal"], var_4 );
}
}
mix_up( var_0 )
{
var_1 = 60;
for ( var_2 = 0; var_2 < var_1; var_2++ )
{
self setsoundblend( var_0, var_0 + "_off", ( var_1 - var_2 ) / var_1 );
wait 0.05;
}
}
mix_down( var_0 )
{
var_1 = 60;
for ( var_2 = 0; var_2 < var_1; var_2++ )
{
self setsoundblend( var_0, var_0 + "_off", var_2 / var_1 );
wait 0.05;
}
}
manual_linkto( var_0, var_1 )
{
var_0 endon( "death" );
self endon( "death" );
if ( !isdefined( var_1 ) )
var_1 = ( 0, 0, 0 );
for (;;)
{
self.origin = var_0.origin + var_1;
self.angles = var_0.angles;
wait 0.05;
}
}
nextmission()
{
maps\_utility_code::mission_recon();
maps\_endmission::_nextmission();
}
make_array( var_0, var_1, var_2, var_3, var_4 )
{
var_5 = [];
var_5[var_5.size] = var_0;
if ( isdefined( var_1 ) )
var_5[var_5.size] = var_1;
if ( isdefined( var_2 ) )
var_5[var_5.size] = var_2;
if ( isdefined( var_3 ) )
var_5[var_5.size] = var_3;
if ( isdefined( var_4 ) )
var_5[var_5.size] = var_4;
return var_5;
}
fail_on_friendly_fire()
{
level.failonfriendlyfire = 1;
}
normal_friendly_fire_penalty()
{
level.failonfriendlyfire = 0;
}
getplayerclaymores()
{
var_0 = self getweaponslistall();
var_1 = [];
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
{
var_3 = var_0[var_2];
var_1[var_3] = self getweaponammoclip( var_3 );
}
var_4 = 0;
if ( isdefined( var_1["claymore"] ) && var_1["claymore"] > 0 )
var_4 = var_1["claymore"];
return var_4;
}
_wait( var_0 )
{
wait( var_0 );
}
lerp_saveddvar( var_0, var_1, var_2 )
{
var_3 = getdvarfloat( var_0 );
level notify( var_0 + "_lerp_savedDvar" );
level endon( var_0 + "_lerp_savedDvar" );
var_4 = var_1 - var_3;
var_5 = 0.05;
var_6 = int( var_2 / var_5 );
for ( var_7 = var_4 / var_6; var_6; var_6-- )
{
var_3 = var_3 + var_7;
setsaveddvar( var_0, var_3 );
wait( var_5 );
}
setsaveddvar( var_0, var_1 );
}
lerp_saveddvar_cg_ng( var_0, var_1, var_2, var_3 )
{
if ( is_gen4() )
lerp_saveddvar( var_0, var_2, var_3 );
else
lerp_saveddvar( var_0, var_1, var_3 );
}
giveachievement_wrapper( var_0 )
{
if ( is_demo() )
return;
foreach ( var_2 in level.players )
var_2 giveachievement( var_0 );
}
player_giveachievement_wrapper( var_0 )
{
if ( is_demo() )
return;
self giveachievement( var_0 );
}
add_jav_glow( var_0 )
{
var_1 = spawn( "script_model", ( 0, 0, 0 ) );
var_1 setcontents( 0 );
var_1 setmodel( "weapon_javelin_obj" );
var_1.origin = self.origin;
var_1.angles = self.angles;
add_wait( ::delete_on_not_defined );
if ( isdefined( var_0 ) )
{
common_scripts\utility::flag_assert( var_0 );
add_wait( common_scripts\utility::flag_wait, var_0 );
}
do_wait_any();
var_1 delete();
}
add_c4_glow( var_0 )
{
var_1 = spawn( "script_model", ( 0, 0, 0 ) );
var_1 setcontents( 0 );
var_1 setmodel( "weapon_c4_obj" );
var_1.origin = self.origin;
var_1.angles = self.angles;
add_wait( ::delete_on_not_defined );
if ( isdefined( var_0 ) )
{
common_scripts\utility::flag_assert( var_0 );
add_wait( common_scripts\utility::flag_wait, var_0 );
}
do_wait_any();
var_1 delete();
}
delete_on_not_defined()
{
for (;;)
{
if ( !isdefined( self ) )
return;
wait 0.05;
}
}
slowmo_start()
{
}
slowmo_end()
{
}
slowmo_setspeed_slow( var_0 )
{
level.slowmo.speed_slow = var_0;
}
slowmo_setspeed_norm( var_0 )
{
level.slowmo.speed_norm = var_0;
}
slowmo_setlerptime_in( var_0 )
{
level.slowmo.lerp_time_in = var_0;
}
slowmo_setlerptime_out( var_0 )
{
level.slowmo.lerp_time_out = var_0;
}
slowmo_lerp_in()
{
if ( isdefined( level.no_slowmo ) && level.no_slowmo )
return;
setslowmotion( level.slowmo.speed_norm, level.slowmo.speed_slow, level.slowmo.lerp_time_in );
}
slowmo_lerp_out()
{
if ( isdefined( level.no_slowmo ) && level.no_slowmo )
return;
setslowmotion( level.slowmo.speed_slow, level.slowmo.speed_norm, level.slowmo.lerp_time_out );
}
add_earthquake( var_0, var_1, var_2, var_3 )
{
level.earthquake[var_0]["magnitude"] = var_1;
level.earthquake[var_0]["duration"] = var_2;
level.earthquake[var_0]["radius"] = var_3;
}
arcademode()
{
return getdvar( "arcademode" ) == "1";
}
arcademode_stop_timer()
{
if ( !isdefined( level.arcademode_hud_timer ) )
return;
level notify( "arcadeMode_remove_timer" );
level.arcademode_stoptime = gettime();
level.arcademode_hud_timer destroy();
level.arcademode_hud_timer = undefined;
}
musicplaywrapper( var_0, var_1, var_2 )
{
level._audio.last_song = var_0;
if ( !isdefined( var_1 ) )
var_1 = 1;
if ( !isdefined( var_2 ) )
var_2 = 0;
musicstop( 0 );
musicplay( var_0, 0, 1.0, 1, var_2 );
}
music_loop( var_0, var_1, var_2, var_3, var_4 )
{
thread maps\_utility_code::music_loop_internal( var_0, var_1, var_2, var_3, var_4 );
}
music_loop_stealth( var_0, var_1, var_2, var_3, var_4 )
{
thread maps\_utility_code::music_loop_internal( var_0, var_1, var_2, var_3, var_4, 1 );
}
music_play( var_0, var_1, var_2, var_3 )
{
if ( isdefined( var_1 ) && var_1 > 0 )
{
thread maps\_utility_code::music_play_internal_stop_with_fade_then_call( var_0, var_1, var_2, var_3 );
return;
}
music_stop();
musicplaywrapper( var_0, var_2, var_3 );
}
music_crossfade( var_0, var_1, var_2, var_3 )
{
if ( !isdefined( var_2 ) )
var_2 = 1;
if ( !isdefined( var_3 ) )
var_3 = 0;
if ( isdefined( level._audio.last_song ) )
musicstop( var_1, level._audio.last_song, var_3 );
else
iprintln( "^3WARNING! script music_crossfade(): No previous song was played - no previous song to crossfade from - not fading out anything" );
level._audio.last_song = var_0;
musicplay( var_0, var_1, var_2, 0, var_3 );
level endon( "stop_music" );
wait( var_1 );
level notify( "done_crossfading" );
}
music_stop( var_0 )
{
if ( !isdefined( var_0 ) || var_0 <= 0 )
musicstop();
else
musicstop( var_0 );
level notify( "stop_music" );
}
player_is_near_live_grenade()
{
var_0 = getentarray( "grenade", "classname" );
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
{
var_2 = var_0[var_1];
if ( var_2.model == "weapon_claymore" )
continue;
for ( var_3 = 0; var_3 < level.players.size; var_3++ )
{
var_4 = level.players[var_3];
if ( distancesquared( var_2.origin, var_4.origin ) < 75625 )
return 1;
}
}
return 0;
}
player_died_recently()
{
return getdvarint( "player_died_recently", "0" ) > 0;
}
all_players_istouching( var_0 )
{
foreach ( var_2 in level.players )
{
if ( !var_2 istouching( var_0 ) )
return 0;
}
return 1;
}
any_players_istouching( var_0 )
{
foreach ( var_2 in level.players )
{
if ( var_2 istouching( var_0 ) )
return 1;
}
return 0;
}
getdifficulty()
{
if ( level.gameskill < 1 )
return "easy";
if ( level.gameskill < 2 )
return "medium";
if ( level.gameskill < 3 )
return "hard";
return "fu";
}
getaverageplayerorigin()
{
var_0 = 0;
var_1 = 0;
var_2 = 0;
foreach ( var_4 in level.players )
{
var_0 = var_0 + var_4.origin[0];
var_1 = var_1 + var_4.origin[1];
var_2 = var_2 + var_4.origin[2];
}
var_0 = var_0 / level.players.size;
var_1 = var_1 / level.players.size;
var_2 = var_2 / level.players.size;
return ( var_0, var_1, var_2 );
}
get_average_origin( var_0 )
{
var_1 = ( 0, 0, 0 );
foreach ( var_3 in var_0 )
var_1 = var_1 + var_3.origin;
return var_1 * ( 1.0 / var_0.size );
}
generic_damage_think()
{
self.damage_functions = [];
self endon( "entitydeleted" );
self endon( "stop_generic_damage_think" );
for (;;)
{
self waittill( "damage", var_0, var_1, var_2, var_3, var_4, var_5, var_6 );
foreach ( var_8 in self.damage_functions )
thread [[ var_8 ]]( var_0, var_1, var_2, var_3, var_4, var_5, var_6 );
}
}
add_damage_function( var_0 )
{
self.damage_functions[self.damage_functions.size] = var_0;
}
remove_damage_function( var_0 )
{
var_1 = [];
foreach ( var_3 in self.damage_functions )
{
if ( var_3 == var_0 )
continue;
var_1[var_1.size] = var_3;
}
self.damage_functions = var_1;
}
givexp( var_0, var_1 )
{
if ( isdefined( level.xp_enable ) && level.xp_enable && isdefined( level.xp_give_func ) )
self [[ level.xp_give_func ]]( var_0, var_1 );
}
playlocalsoundwrapper( var_0 )
{
self playlocalsound( var_0 );
}
enableplayerweapons( var_0 )
{
if ( level.players.size < 1 )
return;
foreach ( var_2 in level.players )
{
if ( var_0 == 1 )
{
var_2 enableweapons();
continue;
}
var_2 disableweapons();
}
}
teleport_players( var_0 )
{
var_1 = undefined;
var_2 = undefined;
var_3 = undefined;
foreach ( var_5 in var_0 )
{
if ( isdefined( var_5.script_noteworthy ) && var_5.script_noteworthy == "player1" )
{
var_1 = var_5;
continue;
}
if ( isdefined( var_5.script_noteworthy ) && var_5.script_noteworthy == "player2" )
{
var_2 = var_5;
continue;
}
if ( !isdefined( var_1 ) )
var_1 = var_5;
if ( !isdefined( var_2 ) )
var_2 = var_5;
}
foreach ( var_8 in level.players )
{
if ( var_8 == level.player )
var_3 = var_1;
else if ( var_8 == level.player2 )
var_3 = var_2;
var_8 setorigin( var_3.origin );
var_8 setplayerangles( var_3.angles );
}
}
teleport_player( var_0 )
{
level.player setorigin( var_0.origin );
if ( isdefined( var_0.angles ) )
level.player setplayerangles( var_0.angles );
}
translate_local()
{
var_0 = [];
if ( isdefined( self.entities ) )
var_0 = self.entities;
if ( isdefined( self.entity ) )
var_0[var_0.size] = self.entity;
common_scripts\utility::array_levelthread( var_0, maps\_utility_code::translate_local_on_ent );
}
open_up_fov( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
level.player endon( "stop_opening_fov" );
wait( var_0 );
level.player playerlinktodelta( var_1, var_2, 1, var_3, var_4, var_5, var_6, 1 );
}
get_ai_touching_volume( var_0, var_1, var_2 )
{
if ( !isdefined( var_0 ) )
var_0 = "all";
if ( !isdefined( var_1 ) )
var_1 = "all";
var_3 = getaispeciesarray( var_0, var_1 );
var_4 = [];
foreach ( var_6 in var_3 )
{
if ( var_6 istouching( self ) )
var_4[var_4.size] = var_6;
}
return var_4;
}
get_drones_touching_volume( var_0 )
{
if ( !isdefined( var_0 ) )
var_0 = "all";
var_1 = [];
if ( var_0 == "all" )
{
var_1 = array_merge( level.drones["allies"].array, level.drones["axis"].array );
var_1 = array_merge( var_1, level.drones["neutral"].array );
}
else
var_1 = level.drones[var_0].array;
var_2 = [];
foreach ( var_4 in var_1 )
{
if ( !isdefined( var_4 ) )
continue;
if ( var_4 istouching( self ) )
var_2[var_2.size] = var_4;
}
return var_2;
}
get_drones_with_targetname( var_0 )
{
var_1 = array_merge( level.drones["allies"].array, level.drones["axis"].array );
var_1 = array_merge( var_1, level.drones["neutral"].array );
var_2 = [];
foreach ( var_4 in var_1 )
{
if ( !isdefined( var_4 ) )
continue;
if ( isdefined( var_4.targetname ) && var_4.targetname == var_0 )
var_2[var_2.size] = var_4;
}
return var_2;
}
get_other_player( var_0 )
{
foreach ( var_2 in level.players )
{
if ( var_0 == var_2 )
continue;
return var_2;
}
}
set_count( var_0 )
{
self.count = var_0;
}
follow_path( var_0, var_1, var_2, var_3 )
{
self notify( "_utility::follow_path" );
self endon( "_utility::follow_path" );
self endon( "death" );
var_4 = undefined;
if ( !isdefined( var_0.classname ) )
{
if ( !isdefined( var_0.type ) )
var_4 = "struct";
else
var_4 = "node";
}
else
var_4 = "entity";
if ( !isdefined( var_1 ) )
var_1 = 300;
var_5 = self.script_forcegoal;
self.script_forcegoal = 1;
maps\_spawner::go_to_node( var_0, var_4, var_2, var_1, var_3 );
self.script_forcegoal = var_5;
}
enable_dynamic_run_speed( var_0, var_1, var_2, var_3, var_4, var_5 )
{
if ( !isdefined( var_0 ) )
var_0 = 250;
if ( !isdefined( var_1 ) )
var_1 = 100;
if ( !isdefined( var_2 ) )
var_2 = var_0 * 2;
if ( !isdefined( var_3 ) )
var_3 = var_0 * 1.25;
if ( !isdefined( var_5 ) )
var_5 = 0;
self.dontchangemoveplaybackrate = var_5;
thread maps\_utility_code::dynamic_run_speed_proc( var_0, var_1, var_2, var_3, var_4 );
}
disable_dynamic_run_speed()
{
self notify( "stop_dynamic_run_speed" );
}
player_seek_enable()
{
self endon( "death" );
self endon( "stop_player_seek" );
var_0 = 1200;
if ( has_shotgun() )
var_0 = 250;
var_1 = distance( self.origin, level.player.origin );
for (;;)
{
wait 2;
self.goalradius = var_1;
var_2 = get_closest_player( self.origin );
self setgoalentity( var_2 );
var_1 = var_1 - 175;
if ( var_1 < var_0 )
{
var_1 = var_0;
return;
}
}
}
player_seek_disable()
{
self notify( "stop_player_seek" );
}
waittill_entity_in_range_or_timeout( var_0, var_1, var_2 )
{
self endon( "death" );
var_0 endon( "death" );
if ( !isdefined( var_2 ) )
var_2 = 5;
var_3 = gettime() + var_2 * 1000;
while ( isdefined( var_0 ) )
{
if ( distance( var_0.origin, self.origin ) <= var_1 )
break;
if ( gettime() > var_3 )
break;
wait 0.1;
}
}
waittill_entity_in_range( var_0, var_1 )
{
self endon( "death" );
var_0 endon( "death" );
while ( isdefined( var_0 ) )
{
if ( distance( var_0.origin, self.origin ) <= var_1 )
break;
wait 0.1;
}
}
waittill_entity_out_of_range( var_0, var_1 )
{
self endon( "death" );
var_0 endon( "death" );
while ( isdefined( var_0 ) )
{
if ( distance( var_0.origin, self.origin ) > var_1 )
break;
wait 0.1;
}
}
has_shotgun()
{
self endon( "death" );
if ( !isdefined( self.weapon ) )
return 0;
if ( weaponclass( self.weapon ) == "spread" )
return 1;
return 0;
}
isprimaryweapon( var_0 )
{
if ( var_0 == "none" )
return 0;
if ( weaponinventorytype( var_0 ) != "primary" )
return 0;
switch ( weaponclass( var_0 ) )
{
case "rifle":
case "sniper":
case "smg":
case "spread":
case "rocketlauncher":
case "pistol":
case "mg":
return 1;
default:
return 0;
}
}
player_has_thermal()
{
var_0 = self getweaponslistall();
if ( !isdefined( var_0 ) )
return 0;
foreach ( var_2 in var_0 )
{
if ( issubstr( var_2, "thermal" ) )
return 1;
}
return 0;
}
waittill_true_goal( var_0, var_1 )
{
self endon( "death" );
if ( !isdefined( var_1 ) )
var_1 = self.goalradius;
for (;;)
{
self waittill( "goal" );
if ( distance( self.origin, var_0 ) < var_1 + 10 )
break;
}
}
player_speed_percent( var_0, var_1 )
{
var_2 = int( getdvar( "g_speed" ) );
if ( !isdefined( level.player.g_speed ) )
level.player.g_speed = var_2;
var_3 = int( level.player.g_speed * var_0 * 0.01 );
level.player player_speed_set( var_3, var_1 );
}
blend_movespeedscale_percent( var_0, var_1 )
{
var_2 = self;
if ( !isplayer( var_2 ) )
var_2 = level.player;
if ( !isdefined( var_2.movespeedscale ) )
var_2.movespeedscale = 1.0;
var_3 = var_0 * 0.01;
var_2 blend_movespeedscale( var_3, var_1 );
}
player_speed_set( var_0, var_1 )
{
var_2 = int( getdvar( "g_speed" ) );
if ( !isdefined( level.player.g_speed ) )
level.player.g_speed = var_2;
var_3 = maps\_utility_code::g_speed_get_func;
var_4 = maps\_utility_code::g_speed_set_func;
level.player thread player_speed_proc( var_0, var_1, var_3, var_4, "player_speed_set" );
}
player_bob_scale_set( var_0, var_1 )
{
var_2 = maps\_utility_code::g_bob_scale_get_func;
var_3 = maps\_utility_code::g_bob_scale_set_func;
level.player thread player_speed_proc( var_0, var_1, var_2, var_3, "player_bob_scale_set" );
}
blend_movespeedscale( var_0, var_1 )
{
var_2 = self;
if ( !isplayer( var_2 ) )
var_2 = level.player;
if ( !isdefined( var_2.movespeedscale ) )
var_2.movespeedscale = 1.0;
var_3 = maps\_utility_code::movespeed_get_func;
var_4 = maps\_utility_code::movespeed_set_func;
var_2 thread player_speed_proc( var_0, var_1, var_3, var_4, "blend_movespeedscale" );
}
player_speed_proc( var_0, var_1, var_2, var_3, var_4 )
{
self notify( var_4 );
self endon( var_4 );
var_5 = [[ var_2 ]]();
var_6 = var_0;
if ( isdefined( var_1 ) )
{
var_7 = var_6 - var_5;
var_8 = 0.05;
var_9 = var_1 / var_8;
var_10 = var_7 / var_9;
while ( abs( var_6 - var_5 ) > abs( var_10 * 1.1 ) )
{
var_5 = var_5 + var_10;
[[ var_3 ]]( var_5 );
wait( var_8 );
}
}
[[ var_3 ]]( var_6 );
}
player_speed_default( var_0 )
{
if ( !isdefined( level.player.g_speed ) )
return;
level.player player_speed_set( level.player.g_speed, var_0 );
waittillframeend;
level.player.g_speed = undefined;
}
blend_movespeedscale_default( var_0 )
{
var_1 = self;
if ( !isplayer( var_1 ) )
var_1 = level.player;
if ( !isdefined( var_1.movespeedscale ) )
return;
var_1 blend_movespeedscale( 1.0, var_0 );
waittillframeend;
var_1.movespeedscale = undefined;
}
teleport_ent( var_0 )
{
if ( isplayer( self ) )
{
self setorigin( var_0.origin );
self setplayerangles( var_0.angles );
}
else
self forceteleport( var_0.origin, var_0.angles );
}
teleport_to_ent_tag( var_0, var_1 )
{
var_2 = var_0 gettagorigin( var_1 );
var_3 = var_0 gettagangles( var_1 );
self dontinterpolate();
if ( isplayer( self ) )
{
self setorigin( var_2 );
self setplayerangles( var_3 );
}
else if ( isai( self ) )
self forceteleport( var_2, var_3 );
else
{
self.origin = var_2;
self.angles = var_3;
}
}
teleport_ai( var_0 )
{
self forceteleport( var_0.origin, var_0.angles );
self setgoalpos( self.origin );
self setgoalnode( var_0 );
}
move_all_fx( var_0 )
{
foreach ( var_2 in level.createfxent )
var_2.v["origin"] = var_2.v["origin"] + var_0;
}
issliding()
{
return isdefined( self.slidemodel );
}
beginsliding( var_0, var_1, var_2 )
{
var_3 = self;
var_3 thread play_sound_on_entity( "foot_slide_plr_start" );
var_3 thread play_loop_sound_on_tag( "foot_slide_plr_loop" );
var_4 = isdefined( level.custom_linkto_slide );
if ( !isdefined( var_0 ) )
var_0 = var_3 getvelocity() + ( 0, 0, -10 );
if ( !isdefined( var_1 ) )
var_1 = 10;
if ( !isdefined( var_2 ) )
var_2 = 0.035;
var_5 = spawn( "script_origin", var_3.origin );
var_5.angles = var_3.angles;
var_3.slidemodel = var_5;
var_5 moveslide( ( 0, 0, 15 ), 15, var_0 );
if ( var_4 )
var_3 playerlinktoblend( var_5, undefined, 1 );
else
var_3 playerlinkto( var_5 );
var_3 disableweapons();
var_3 allowprone( 0 );
var_3 allowcrouch( 1 );
var_3 allowstand( 0 );
var_3 thread maps\_utility_code::doslide( var_5, var_1, var_2 );
}
endsliding()
{
var_0 = self;
var_0 notify( "stop soundfoot_slide_plr_loop" );
var_0 thread play_sound_on_entity( "foot_slide_plr_end" );
var_0 unlink();
var_0 setvelocity( var_0.slidemodel.slidevelocity );
var_0.slidemodel delete();
var_0 enableweapons();
var_0 allowprone( 1 );
var_0 allowcrouch( 1 );
var_0 allowstand( 1 );
var_0 notify( "stop_sliding" );
}
spawn_vehicle()
{
return maps\_vehicle::vehicle_spawn( self );
}
getentwithflag( var_0 )
{
var_1 = maps\_trigger::get_load_trigger_classes();
var_2 = [];
foreach ( var_6, var_4 in var_1 )
{
if ( !issubstr( var_6, "flag" ) )
continue;
var_5 = getentarray( var_6, "classname" );
var_2 = common_scripts\utility::array_combine( var_2, var_5 );
}
var_7 = maps\_trigger::get_load_trigger_funcs();
foreach ( var_9, var_4 in var_7 )
{
if ( !issubstr( var_9, "flag" ) )
continue;
var_5 = getentarray( var_9, "targetname" );
var_2 = common_scripts\utility::array_combine( var_2, var_5 );
}
var_10 = undefined;
foreach ( var_12 in var_2 )
{
if ( var_12.script_flag == var_0 )
return var_12;
}
}
getentarraywithflag( var_0 )
{
var_1 = maps\_trigger::get_load_trigger_classes();
var_2 = [];
foreach ( var_6, var_4 in var_1 )
{
if ( !issubstr( var_6, "flag" ) )
continue;
var_5 = getentarray( var_6, "classname" );
var_2 = common_scripts\utility::array_combine( var_2, var_5 );
}
var_7 = maps\_trigger::get_load_trigger_funcs();
foreach ( var_9, var_4 in var_7 )
{
if ( !issubstr( var_9, "flag" ) )
continue;
var_5 = getentarray( var_9, "targetname" );
var_2 = common_scripts\utility::array_combine( var_2, var_5 );
}
var_10 = [];
foreach ( var_12 in var_2 )
{
if ( var_12.script_flag == var_0 )
var_10[var_10.size] = var_12;
}
return var_10;
}
set_z( var_0, var_1 )
{
return ( var_0[0], var_0[1], var_1 );
}
add_z( var_0, var_1 )
{
return ( var_0[0], var_0[1], var_0[2] + var_1 );
}
set_y( var_0, var_1 )
{
return ( var_0[0], var_1, var_0[2] );
}
set_x( var_0, var_1 )
{
return ( var_1, var_0[1], var_0[2] );
}
player_using_missile()
{
var_0 = self getcurrentweapon();
if ( !isdefined( var_0 ) )
return 0;
if ( issubstr( tolower( var_0 ), "rpg" ) )
return 1;
if ( issubstr( tolower( var_0 ), "stinger" ) )
return 1;
if ( issubstr( tolower( var_0 ), "at4" ) )
return 1;
if ( issubstr( tolower( var_0 ), "javelin" ) )
return 1;
return 0;
}
doinglongdeath()
{
return isdefined( self.a.doinglongdeath );
}
get_rumble_ent( var_0 )
{
if ( is_coop() )
{
}
var_1 = get_player_from_self();
if ( !isdefined( var_0 ) )
var_0 = "steady_rumble";
var_2 = spawn( "script_origin", var_1 geteye() );
var_2.intensity = 1;
var_2 thread maps\_utility_code::update_rumble_intensity( var_1, var_0 );
return var_2;
}
set_rumble_intensity( var_0 )
{
self.intensity = var_0;
}
rumble_ramp_on( var_0 )
{
thread rumble_ramp_to( 1, var_0 );
}
rumble_ramp_off( var_0 )
{
thread rumble_ramp_to( 0, var_0 );
}
rumble_ramp_to( var_0, var_1 )
{
self notify( "new_ramp" );
self endon( "new_ramp" );
self endon( "death" );
var_2 = var_1 * 20;
var_3 = var_0 - self.intensity;
var_4 = var_3 / var_2;
for ( var_5 = 0; var_5 < var_2; var_5++ )
{
self.intensity = self.intensity + var_4;
wait 0.05;
}
self.intensity = var_0;
}
get_player_from_self()
{
if ( isdefined( self ) )
{
if ( !is_in_array( level.players, self ) )
return level.player;
else
return self;
}
else
return level.player;
}
get_player_gameskill()
{
return int( self getplayersetting( "gameskill" ) );
}
glow( var_0 )
{
if ( isdefined( self.non_glow_model ) )
return;
self.non_glow_model = self.model;
if ( !isdefined( var_0 ) )
var_0 = self.model + "_obj";
self setmodel( var_0 );
}
stopglow( var_0 )
{
if ( !isdefined( self.non_glow_model ) )
return;
self setmodel( self.non_glow_model );
self.non_glow_model = undefined;
}
array_delete_evenly( var_0, var_1, var_2 )
{
var_3 = [];
var_1 = var_2 - var_1;
foreach ( var_5 in var_0 )
{
var_3[var_3.size] = var_5;
if ( var_3.size == var_2 )
{
var_3 = common_scripts\utility::array_randomize( var_3 );
for ( var_6 = var_1; var_6 < var_3.size; var_6++ )
var_3[var_6] delete();
var_3 = [];
}
}
var_8 = [];
foreach ( var_5 in var_0 )
{
if ( !isdefined( var_5 ) )
continue;
var_8[var_8.size] = var_5;
}
return var_8;
}
waittill_in_range( var_0, var_1, var_2 )
{
if ( !isdefined( var_2 ) )
var_2 = 0.5;
self endon( "death" );
while ( isdefined( self ) )
{
if ( distance( var_0, self.origin ) <= var_1 )
break;
wait( var_2 );
}
}
add_trace_fx( var_0 )
{
var_1 = spawnstruct();
var_1 thread maps\_utility_code::add_trace_fx_proc( var_0 );
return var_1;
}
tracefx_on_tag( var_0, var_1, var_2 )
{
var_3 = self gettagorigin( var_1 );
var_4 = self gettagangles( var_1 );
tracefx( var_0, var_3, var_4, var_2 );
}
tracefx( var_0, var_1, var_2, var_3 )
{
var_4 = anglestoforward( var_2 );
var_5 = bullettrace( var_1, var_1 + var_4 * var_3, 0, undefined );
if ( var_5["fraction"] >= 1 )
return;
var_6 = var_5["surfacetype"];
if ( !isdefined( level.trace_fx[var_0][var_6] ) )
var_6 = "default";
var_7 = level.trace_fx[var_0][var_6];
if ( isdefined( var_7["fx"] ) )
playfx( var_7["fx"], var_5["position"], var_5["normal"] );
if ( isdefined( var_7["fx_array"] ) )
{
foreach ( var_9 in var_7["fx_array"] )
playfx( var_9, var_5["position"], var_5["normal"] );
}
if ( isdefined( var_7["sound"] ) )
level thread common_scripts\utility::play_sound_in_space( var_7["sound"], var_5["position"] );
if ( isdefined( var_7["rumble"] ) )
{
var_11 = get_player_from_self();
var_11 playrumbleonentity( var_7["rumble"] );
}
}
disable_surprise()
{
self.newenemyreactiondistsq = 0;
}
enable_surprise()
{
self.newenemyreactiondistsq = squared( 512 );
}
enable_heat_behavior( var_0 )
{
self.heat = 1;
self.no_pistol_switch = 1;
self.usecombatscriptatcover = 1;
if ( !isdefined( var_0 ) || !var_0 )
{
self.dontshootwhilemoving = 1;
self.maxfaceenemydist = 64;
self.pathenemylookahead = 2048;
disable_surprise();
}
self.specialreloadanimfunc = animscripts\animset::heat_reload_anim;
self.custommoveanimset["run"] = animscripts\utility::lookupanimarray( "heat_run" );
}
disable_heat_behavior()
{
self.heat = undefined;
self.no_pistol_switch = undefined;
self.dontshootwhilemoving = undefined;
self.usecombatscriptatcover = 0;
self.maxfaceenemydist = 512;
self.specialreloadanimfunc = undefined;
self.custommoveanimset = undefined;
}
getvehiclearray()
{
return vehicle_getarray();
}
hint( var_0, var_1, var_2 )
{
if ( !isdefined( var_2 ) )
var_2 = 0;
var_3 = 0.5;
level endon( "clearing_hints" );
if ( isdefined( level.hintelement ) )
level.hintelement maps\_hud_util::destroyelem();
level.hintelement = maps\_hud_util::createfontstring( "default", 1.5 );
level.hintelement maps\_hud_util::setpoint( "MIDDLE", undefined, 0, 30 + var_2 );
level.hintelement.color = ( 1, 1, 1 );
level.hintelement settext( var_0 );
level.hintelement.alpha = 0;
level.hintelement fadeovertime( 0.5 );
level.hintelement.alpha = 1;
wait 0.5;
level.hintelement endon( "death" );
if ( isdefined( var_1 ) )
wait( var_1 );
else
return;
level.hintelement fadeovertime( var_3 );
level.hintelement.alpha = 0;
wait( var_3 );
level.hintelement maps\_hud_util::destroyelem();
}
hint_fade()
{
var_0 = 1;
if ( isdefined( level.hintelement ) )
{
level notify( "clearing_hints" );
level.hintelement fadeovertime( var_0 );
level.hintelement.alpha = 0;
wait( var_0 );
}
}
kill_deathflag( var_0, var_1 )
{
if ( !isdefined( level.flag[var_0] ) )
return;
if ( !isdefined( var_1 ) )
var_1 = 0;
foreach ( var_3 in level.deathflags[var_0] )
{
foreach ( var_5 in var_3 )
{
if ( isalive( var_5 ) )
{
var_5 thread maps\_utility_code::kill_deathflag_proc( var_1 );
continue;
}
var_5 delete();
}
}
}
get_player_view_controller( var_0, var_1, var_2, var_3 )
{
if ( !isdefined( var_3 ) )
var_3 = "player_view_controller";
if ( !isdefined( var_2 ) )
var_2 = ( 0, 0, 0 );
var_4 = var_0 gettagorigin( var_1 );
var_5 = spawnturret( "misc_turret", var_4, var_3 );
var_5.angles = var_0 gettagangles( var_1 );
var_5 setmodel( "tag_turret" );
var_5 linkto( var_0, var_1, var_2, ( 0, 0, 0 ) );
var_5 makeunusable();
var_5 hide();
var_5 setmode( "manual" );
return var_5;
}
create_blend( var_0, var_1, var_2, var_3 )
{
var_4 = spawnstruct();
var_4 childthread maps\_utility_code::process_blend( var_0, self, var_1, var_2, var_3 );
return var_4;
}
store_players_weapons( var_0 )
{
if ( !isdefined( self.stored_weapons ) )
self.stored_weapons = [];
var_1 = [];
var_2 = self getweaponslistall();
foreach ( var_4 in var_2 )
{
var_1[var_4] = [];
var_1[var_4]["clip_left"] = self getweaponammoclip( var_4, "left" );
var_1[var_4]["clip_right"] = self getweaponammoclip( var_4, "right" );
var_1[var_4]["stock"] = self getweaponammostock( var_4 );
}
if ( !isdefined( var_0 ) )
var_0 = "default";
self.stored_weapons[var_0] = [];
self.stored_weapons[var_0]["current_weapon"] = self getcurrentweapon();
self.stored_weapons[var_0]["inventory"] = var_1;
}
restore_players_weapons( var_0 )
{
if ( !isdefined( var_0 ) )
var_0 = "default";
if ( !isdefined( self.stored_weapons ) || !isdefined( self.stored_weapons[var_0] ) )
return;
self takeallweapons();
foreach ( var_3, var_2 in self.stored_weapons[var_0]["inventory"] )
{
if ( weaponinventorytype( var_3 ) != "altmode" )
self giveweapon( var_3 );
self setweaponammoclip( var_3, var_2["clip_left"], "left" );
self setweaponammoclip( var_3, var_2["clip_right"], "right" );
self setweaponammostock( var_3, var_2["stock"] );
}
var_4 = self.stored_weapons[var_0]["current_weapon"];
if ( var_4 != "none" )
self switchtoweapon( var_4 );
}
hide_entity()
{
switch ( self.code_classname )
{
case "light_spot":
case "script_vehicle":
case "script_model":
self hide();
break;
case "script_brushmodel":
self hide();
self notsolid();
if ( self.spawnflags & 1 )
self connectpaths();
break;
case "trigger_multiple_flag_looking":
case "trigger_multiple_flag_lookat":
case "trigger_multiple_breachIcon":
case "trigger_multiple_flag_set":
case "trigger_use_touch":
case "trigger_use":
case "trigger_multiple":
case "trigger_radius":
common_scripts\utility::trigger_off();
break;
default:
}
}
show_entity()
{
switch ( self.code_classname )
{
case "light_spot":
case "script_vehicle":
case "script_model":
self show();
break;
case "script_brushmodel":
self show();
self solid();
if ( self.spawnflags & 1 )
self disconnectpaths();
break;
case "trigger_multiple_flag_looking":
case "trigger_multiple_flag_lookat":
case "trigger_multiple_breachIcon":
case "trigger_multiple_flag_set":
case "trigger_use_touch":
case "trigger_use":
case "trigger_multiple":
case "trigger_radius":
common_scripts\utility::trigger_on();
break;
default:
}
}
set_moveplaybackrate( var_0, var_1 )
{
self notify( "set_moveplaybackrate" );
self endon( "set_moveplaybackrate" );
if ( isdefined( var_1 ) )
{
var_2 = var_0 - self.moveplaybackrate;
var_3 = 0.05;
var_4 = var_1 / var_3;
var_5 = var_2 / var_4;
while ( abs( var_0 - self.moveplaybackrate ) > abs( var_5 * 1.1 ) )
{
self.moveplaybackrate = self.moveplaybackrate + var_5;
wait( var_3 );
}
}
self.moveplaybackrate = var_0;
}
array_spawn_function( var_0, var_1, var_2, var_3, var_4, var_5 )
{
foreach ( var_7 in var_0 )
var_7 thread add_spawn_function( var_1, var_2, var_3, var_4, var_5 );
}
array_spawn_function_targetname( var_0, var_1, var_2, var_3, var_4, var_5 )
{
var_6 = getentarray( var_0, "targetname" );
array_spawn_function( var_6, var_1, var_2, var_3, var_4, var_5 );
}
array_spawn_function_noteworthy( var_0, var_1, var_2, var_3, var_4, var_5 )
{
var_6 = getentarray( var_0, "script_noteworthy" );
array_spawn_function( var_6, var_1, var_2, var_3, var_4, var_5 );
}
enable_dontevershoot()
{
self.dontevershoot = 1;
}
disable_dontevershoot()
{
self.dontevershoot = undefined;
}
create_sunflare_setting( var_0 )
{
if ( !isdefined( level.sunflare_settings ) )
level.sunflare_settings = [];
var_1 = spawnstruct();
var_1.name = var_0;
level.sunflare_settings[var_0] = var_1;
return var_1;
}
create_vision_set_fog( var_0 )
{
if ( !isdefined( level.vision_set_fog ) )
level.vision_set_fog = [];
var_1 = spawnstruct();
var_1.name = var_0;
var_1.hdrcolorintensity = 1;
var_1.hdrsuncolorintensity = 1;
var_1.skyfogintensity = 0;
var_1.skyfogminangle = 0;
var_1.skyfogmaxangle = 0;
level.vision_set_fog[tolower( var_0 )] = var_1;
return var_1;
}
get_vision_set_fog( var_0 )
{
if ( !isdefined( level.vision_set_fog ) )
level.vision_set_fog = [];
var_1 = level.vision_set_fog[tolower( var_0 )];
if ( using_hdr_fog() && isdefined( var_1 ) && isdefined( var_1.hdroverride ) )
var_1 = level.vision_set_fog[tolower( var_1.hdroverride )];
return var_1;
}
create_fog( var_0 )
{
if ( !isdefined( level.fog_set ) )
level.fog_set = [];
var_1 = spawnstruct();
var_1.name = var_0;
level.fog_set[tolower( var_0 )] = var_1;
return var_1;
}
get_fog( var_0 )
{
if ( !isdefined( level.fog_set ) )
level.fog_set = [];
var_1 = level.fog_set[tolower( var_0 )];
return var_1;
}
init_self_fog_transition()
{
if ( !isdefined( self.fog_transition_ent ) )
{
self.fog_transition_ent = spawnstruct();
self.fog_transition_ent.fogset = "";
self.fog_transition_ent.time = 0;
}
}
using_hdr_fog()
{
if ( !isdefined( level.console ) )
set_console_status();
return is_gen4();
}
fog_set_changes( var_0, var_1 )
{
if ( !isplayer( self ) )
maps\_art::init_fog_transition();
else
init_self_fog_transition();
if ( !isdefined( level.fog_set ) )
level.fog_set = [];
var_2 = level.fog_set[tolower( var_0 )];
if ( !isdefined( var_2 ) )
var_2 = level.vision_set_fog[tolower( var_0 )];
if ( isdefined( var_2 ) && isdefined( var_2.hdroverride ) && using_hdr_fog() )
{
if ( isdefined( level.fog_set[tolower( var_2.hdroverride )] ) )
var_2 = level.fog_set[tolower( var_2.hdroverride )];
else if ( isdefined( level.vision_set_fog ) )
var_2 = level.vision_set_fog[tolower( var_2.hdroverride )];
}
if ( !isdefined( var_1 ) )
var_1 = var_2.transitiontime;
if ( !isplayer( self ) )
{
set_fog_to_ent_values( var_2, var_1 );
level.fog_transition_ent.fogset = var_0;
level.fog_transition_ent.time = var_1;
}
else
{
if ( var_0 != "" && self.fog_transition_ent.fogset == var_0 && self.fog_transition_ent.time == var_1 )
return;
set_fog_to_ent_values( var_2, var_1 );
self.fog_transition_ent.fogset = var_0;
self.fog_transition_ent.time = var_1;
}
}
set_fog_to_ent_values( var_0, var_1 )
{
if ( isdefined( var_0.sunfogenabled ) && var_0.sunfogenabled )
{
if ( !isplayer( self ) )
setexpfog( var_0.startdist, var_0.halfwaydist, var_0.red, var_0.green, var_0.blue, var_0.hdrcolorintensity, var_0.maxopacity, var_1, var_0.sunred, var_0.sungreen, var_0.sunblue, var_0.hdrsuncolorintensity, var_0.sundir, var_0.sunbeginfadeangle, var_0.sunendfadeangle, var_0.normalfogscale, var_0.skyfogintensity, var_0.skyfogminangle, var_0.skyfogmaxangle );
else
self playersetexpfog( var_0.startdist, var_0.halfwaydist, var_0.red, var_0.green, var_0.blue, var_0.hdrcolorintensity, var_0.maxopacity, var_1, var_0.sunred, var_0.sungreen, var_0.sunblue, var_0.hdrsuncolorintensity, var_0.sundir, var_0.sunbeginfadeangle, var_0.sunendfadeangle, var_0.normalfogscale, var_0.skyfogintensity, var_0.skyfogminangle, var_0.skyfogmaxangle );
}
else if ( !isplayer( self ) )
setexpfog( var_0.startdist, var_0.halfwaydist, var_0.red, var_0.green, var_0.blue, var_0.hdrcolorintensity, var_0.maxopacity, var_1, var_0.skyfogintensity, var_0.skyfogminangle, var_0.skyfogmaxangle );
else
self playersetexpfog( var_0.startdist, var_0.halfwaydist, var_0.red, var_0.green, var_0.blue, var_0.hdrcolorintensity, var_0.maxopacity, var_1, var_0.skyfogintensity, var_0.skyfogminangle, var_0.skyfogmaxangle );
}
vision_set_fog_changes( var_0, var_1 )
{
var_2 = vision_set_changes( var_0, var_1 );
if ( var_2 )
{
if ( isdefined( get_vision_set_fog( var_0 ) ) )
fog_set_changes( var_0, var_1 );
else
clearfog( var_1 );
}
}
init_self_visionset()
{
if ( !isdefined( self.vision_set_transition_ent ) )
{
self.vision_set_transition_ent = spawnstruct();
self.vision_set_transition_ent.vision_set = "";
self.vision_set_transition_ent.time = 0;
}
}
vision_set_changes( var_0, var_1 )
{
if ( !isplayer( self ) )
{
var_2 = 1;
if ( !isdefined( level.vision_set_transition_ent ) )
{
level.vision_set_transition_ent = spawnstruct();
level.vision_set_transition_ent.vision_set = "";
level.vision_set_transition_ent.time = 0;
var_2 = 0;
}
if ( var_0 != "" && level.vision_set_transition_ent.vision_set == var_0 && level.vision_set_transition_ent.time == var_1 )
return 0;
level.vision_set_transition_ent.vision_set = var_0;
level.vision_set_transition_ent.time = var_1;
if ( var_2 && getdvarint( "scr_art_tweak" ) != 0 )
{
}
else
visionsetnaked( var_0, var_1 );
level.lvl_visionset = var_0;
setdvar( "vision_set_current", var_0 );
}
else
{
init_self_visionset();
if ( var_0 != "" && self.vision_set_transition_ent.vision_set == var_0 && self.vision_set_transition_ent.time == var_1 )
return 0;
self.vision_set_transition_ent.vision_set = var_0;
self.vision_set_transition_ent.time = var_1;
self visionsetnakedforplayer( var_0, var_1 );
}
return 1;
}
enable_teamflashbangimmunity()
{
thread enable_teamflashbangimmunity_proc();
}
enable_teamflashbangimmunity_proc()
{
self endon( "death" );
for (;;)
{
self.teamflashbangimmunity = 1;
wait 0.05;
}
}
disable_teamflashbangimmunity()
{
self.teamflashbangimmunity = undefined;
}
mask_destructibles_in_volumes( var_0 )
{
var_1 = getentarray( "destructible_toy", "targetname" );
var_2 = getentarray( "destructible_vehicle", "targetname" );
var_3 = common_scripts\utility::array_combine( var_1, var_2 );
foreach ( var_5 in var_0 )
var_5.destructibles = [];
foreach ( var_8 in var_3 )
{
foreach ( var_5 in var_0 )
{
if ( !var_5 istouching( var_8 ) )
continue;
var_5 maps\_utility_code::put_toy_in_volume( var_8 );
break;
}
}
}
interactivekeypairs()
{
var_0 = [];
var_0[0] = [ "interactive_birds", "targetname" ];
var_0[1] = [ "interactive_vulture", "targetname" ];
var_0[2] = [ "interactive_fish", "script_noteworthy" ];
return var_0;
}
mask_interactives_in_volumes( var_0 )
{
var_1 = interactivekeypairs();
var_2 = [];
foreach ( var_4 in var_1 )
{
var_5 = getentarray( var_4[0], var_4[1] );
var_2 = common_scripts\utility::array_combine( var_2, var_5 );
}
foreach ( var_8 in var_2 )
{
if ( !isdefined( level._interactive[var_8.interactive_type].savetostructfn ) )
continue;
foreach ( var_11 in var_0 )
{
if ( !var_11 istouching( var_8 ) )
continue;
if ( !isdefined( var_11.interactives ) )
var_11.interactives = [];
var_11.interactives[var_11.interactives.size] = var_8 [[ level._interactive[var_8.interactive_type].savetostructfn ]]();
}
}
}
activate_interactives_in_volume()
{
if ( !isdefined( self.interactives ) )
return;
foreach ( var_1 in self.interactives )
var_1 [[ level._interactive[var_1.interactive_type].loadfromstructfn ]]();
self.interactives = undefined;
}
delete_interactives_in_volumes( var_0 )
{
mask_interactives_in_volumes( var_0 );
foreach ( var_2 in var_0 )
var_2.interactives = undefined;
}
mask_exploders_in_volume( var_0 )
{
if ( getdvar( "createfx" ) != "" )
return;
var_1 = getentarray( "script_brushmodel", "classname" );
var_2 = getentarray( "script_model", "classname" );
for ( var_3 = 0; var_3 < var_2.size; var_3++ )
var_1[var_1.size] = var_2[var_3];
foreach ( var_5 in var_0 )
{
foreach ( var_7 in var_1 )
{
if ( isdefined( var_7.script_prefab_exploder ) )
var_7.script_exploder = var_7.script_prefab_exploder;
if ( !isdefined( var_7.script_exploder ) )
continue;
if ( !isdefined( var_7.model ) )
continue;
if ( var_7.code_classname != "script_model" )
continue;
if ( !var_7 istouching( var_5 ) )
continue;
var_7.masked_exploder = 1;
}
}
}
activate_exploders_in_volume()
{
var_0 = spawn( "script_origin", ( 0, 0, 0 ) );
foreach ( var_2 in level.createfxent )
{
if ( !isdefined( var_2.v["masked_exploder"] ) )
continue;
var_0.origin = var_2.v["origin"];
var_0.angles = var_2.v["angles"];
if ( !var_0 istouching( self ) )
continue;
var_3 = var_2.v["masked_exploder"];
var_4 = var_2.v["masked_exploder_spawnflags"];
var_5 = var_2.v["masked_exploder_script_disconnectpaths"];
var_6 = spawn( "script_model", ( 0, 0, 0 ), var_4 );
var_6 setmodel( var_3 );
var_6.origin = var_2.v["origin"];
var_6.angles = var_2.v["angles"];
var_2.v["masked_exploder"] = undefined;
var_2.v["masked_exploder_spawnflags"] = undefined;
var_2.v["masked_exploder_script_disconnectpaths"] = undefined;
var_6.disconnect_paths = var_5;
var_6.script_exploder = var_2.v["exploder"];
common_scripts\_exploder::setup_individual_exploder( var_6 );
var_2.model = var_6;
}
var_0 delete();
}
precache_destructible( var_0 )
{
var_1 = common_scripts\_destructible::destructible_getinfoindex( var_0 );
if ( var_1 != -1 )
return;
if ( !isdefined( level.destructible_functions ) )
level.destructible_functions = [];
var_2 = spawnstruct();
var_2.destructibleinfo = common_scripts\_destructible::destructible_gettype( var_0 );
var_2 thread common_scripts\_destructible::precache_destructibles();
var_2 thread common_scripts\_destructible::add_destructible_fx();
}
delete_destructibles_in_volumes( var_0, var_1 )
{
foreach ( var_3 in var_0 )
var_3.destructibles = [];
var_5 = [ "destructible_toy", "destructible_vehicle" ];
var_6 = 0;
if ( !isdefined( var_1 ) )
var_1 = 0;
foreach ( var_8 in var_5 )
{
var_9 = getentarray( var_8, "targetname" );
foreach ( var_11 in var_9 )
{
foreach ( var_3 in var_0 )
{
if ( var_1 )
{
var_6++;
var_6 = var_6 % 5;
if ( var_6 == 1 )
wait 0.05;
}
if ( !var_3 istouching( var_11 ) )
continue;
var_11 delete();
break;
}
}
}
}
delete_exploders_in_volumes( var_0, var_1 )
{
var_2 = getentarray( "script_brushmodel", "classname" );
var_3 = getentarray( "script_model", "classname" );
for ( var_4 = 0; var_4 < var_3.size; var_4++ )
var_2[var_2.size] = var_3[var_4];
var_5 = [];
var_6 = spawn( "script_origin", ( 0, 0, 0 ) );
var_7 = 0;
if ( !isdefined( var_1 ) )
var_1 = 0;
foreach ( var_9 in var_0 )
{
foreach ( var_11 in var_2 )
{
if ( !isdefined( var_11.script_exploder ) )
continue;
var_6.origin = var_11 getorigin();
if ( !var_9 istouching( var_6 ) )
continue;
var_5[var_5.size] = var_11;
}
}
array_delete( var_5 );
var_6 delete();
}
activate_destructibles_in_volume()
{
if ( !isdefined( self.destructibles ) )
return;
foreach ( var_1 in self.destructibles )
{
var_2 = spawn( "script_model", ( 0, 0, 0 ) );
var_2 setmodel( var_1.toy_model );
var_2.origin = var_1.origin;
var_2.angles = var_1.angles;
var_2.script_noteworthy = var_1.script_noteworthy;
var_2.targetname = var_1.targetname;
var_2.target = var_1.target;
var_2.script_linkto = var_1.script_linkto;
var_2.destructible_type = var_1.destructible_type;
var_2.script_noflip = var_1.script_noflip;
var_2 common_scripts\_destructible::setup_destructibles( 1 );
}
self.destructibles = [];
}
setflashbangimmunity( var_0 )
{
self.flashbangimmunity = var_0;
}
flashbanggettimeleftsec()
{
var_0 = self.flashendtime - gettime();
if ( var_0 < 0 )
return 0;
return var_0 * 0.001;
}
flashbangisactive()
{
return flashbanggettimeleftsec() > 0;
}
flashbangstart( var_0 )
{
if ( isdefined( self.flashbangimmunity ) && self.flashbangimmunity )
return;
var_1 = gettime() + var_0 * 1000.0;
if ( isdefined( self.flashendtime ) )
self.flashendtime = max( self.flashendtime, var_1 );
else
self.flashendtime = var_1;
self notify( "flashed" );
self setflashbanged( 1 );
}
waittill_volume_dead()
{
for (;;)
{
var_0 = getaispeciesarray( "axis", "all" );
var_1 = 0;
foreach ( var_3 in var_0 )
{
if ( !isalive( var_3 ) )
continue;
if ( var_3 istouching( self ) )
{
var_1 = 1;
break;
}
wait 0.0125;
}
if ( !var_1 )
{
var_5 = get_ai_touching_volume( "axis" );
if ( !var_5.size )
break;
}
wait 0.05;
}
}
waittill_volume_dead_or_dying()
{
var_0 = 0;
for (;;)
{
var_1 = getaispeciesarray( "axis", "all" );
var_2 = 0;
foreach ( var_4 in var_1 )
{
if ( !isalive( var_4 ) )
continue;
if ( var_4 istouching( self ) )
{
if ( var_4 doinglongdeath() )
continue;
var_2 = 1;
var_0 = 1;
break;
}
wait 0.0125;
}
if ( !var_2 )
{
var_6 = get_ai_touching_volume( "axis" );
if ( !var_6.size )
break;
else
var_0 = 1;
}
wait 0.05;
}
return var_0;
}
waittill_volume_dead_then_set_flag( var_0 )
{
waittill_volume_dead();
common_scripts\utility::flag_set( var_0 );
}
waittill_targetname_volume_dead_then_set_flag( var_0, var_1 )
{
var_2 = getent( var_0, "targetname" );
var_2 waittill_volume_dead_then_set_flag( var_1 );
}
player_can_be_shot()
{
level.player ent_flag_clear( "player_zero_attacker_accuracy" );
level.player.ignorerandombulletdamage = 0;
level.player maps\_gameskill::update_player_attacker_accuracy();
}
player_cant_be_shot()
{
level.player ent_flag_set( "player_zero_attacker_accuracy" );
level.player.attackeraccuracy = 0;
level.player.ignorerandombulletdamage = 1;
}
set_player_attacker_accuracy( var_0 )
{
var_1 = get_player_from_self();
var_1.gs.player_attacker_accuracy = var_0;
var_1 maps\_gameskill::update_player_attacker_accuracy();
}
array_index_by_parameters( var_0 )
{
var_1 = [];
foreach ( var_3 in var_0 )
var_1[var_3.script_parameters] = var_3;
return var_1;
}
array_index_by_classname( var_0 )
{
var_1 = [];
foreach ( var_3 in var_0 )
var_1[var_3.classname] = var_3;
return var_1;
}
array_index_by_script_index( var_0 )
{
var_1 = [];
foreach ( var_3 in var_0 )
{
var_4 = var_3.script_index;
if ( isdefined( var_4 ) )
var_1[var_4] = var_3;
}
return var_1;
}
add_target_pivot( var_0 )
{
if ( isdefined( var_0 ) )
self.pivot = var_0;
else
self.pivot = getent( self.target, "targetname" );
self linkto( self.pivot );
}
get_color_volume_from_trigger()
{
var_0 = maps\_utility_code::get_color_info_from_trigger();
var_1 = var_0["team"];
foreach ( var_3 in var_0["codes"] )
{
var_4 = level.arrays_of_colorcoded_volumes[var_1][var_3];
if ( isdefined( var_4 ) )
return var_4;
}
return undefined;
}
get_color_nodes_from_trigger()
{
var_0 = maps\_utility_code::get_color_info_from_trigger();
var_1 = var_0["team"];
foreach ( var_3 in var_0["codes"] )
{
var_4 = level.arrays_of_colorcoded_nodes[var_1][var_3];
if ( isdefined( var_4 ) )
return var_4;
}
return undefined;
}
flashbangstop()
{
self.flashendtime = undefined;
self setflashbanged( 0 );
}
getent_or_struct( var_0, var_1 )
{
var_2 = getent( var_0, var_1 );
if ( isdefined( var_2 ) )
return var_2;
return common_scripts\utility::getstruct( var_0, var_1 );
}
grenade_earthquake()
{
thread endondeath();
self endon( "end_explode" );
self waittill( "explode", var_0 );
dirt_on_screen_from_position( var_0 );
}
endondeath()
{
self waittill( "death" );
waittillframeend;
self notify( "end_explode" );
}
dirt_on_screen_from_position( var_0 )
{
playrumbleonposition( "grenade_rumble", var_0 );
earthquake( 0.3, 0.5, var_0, 400 );
foreach ( var_2 in level.players )
{
if ( distance( var_0, var_2.origin ) > 600 )
continue;
if ( var_2 damageconetrace( var_0 ) )
var_2 thread dirteffect( var_0 );
}
}
player_rides_shotgun_in_humvee( var_0, var_1, var_2, var_3 )
{
return player_rides_in_humvee( "shotgun", level.player, var_0, var_1, var_2, var_3 );
}
player_rides_in_humvee( var_0, var_1, var_2, var_3, var_4, var_5 )
{
if ( !isdefined( var_1 ) )
var_1 = level.player;
var_1 allowcrouch( 0 );
var_1 allowprone( 0 );
var_1 disableweapons();
var_6 = common_scripts\utility::spawn_tag_origin();
var_6 linkto( self, "tag_passenger", player_rides_in_humvee_offset( var_0 ), ( 0, 0, 0 ) );
var_6.player_dismount = common_scripts\utility::spawn_tag_origin();
var_6.player_dismount linkto( self, "tag_body", player_rides_humvee_offset_dismount( var_0 ), ( 0, 0, 0 ) );
if ( !isdefined( var_2 ) )
var_2 = 90;
if ( !isdefined( var_3 ) )
var_3 = 90;
if ( !isdefined( var_4 ) )
var_4 = 40;
if ( !isdefined( var_5 ) )
var_5 = 40;
var_1 disableweapons();
var_1 playerlinkto( var_6, "tag_origin", 0.8, var_2, var_3, var_4, var_5 );
var_1.humvee_org = var_6;
return var_6;
}
player_rides_in_humvee_offset( var_0 )
{
switch ( var_0 )
{
case "shotgun":
return ( -5, 10, -34 );
case "backleft":
return ( -45, 45, -34 );
case "backright":
return ( -45, 5, -34 );
}
}
player_rides_humvee_offset_dismount( var_0 )
{
switch ( var_0 )
{
case "shotgun":
return ( -8, -90, -12.6 );
case "backleft":
return ( -58, 85, -12.6 );
case "backright":
return ( -58, -95, -12.6 );
}
}
player_leaves_humvee( var_0 )
{
if ( !isdefined( var_0 ) )
var_0 = 0;
var_1 = self;
var_2 = level.player;
if ( isplayer( self ) )
{
var_2 = self;
var_1 = var_2.humvee_org;
}
var_1 unlink();
if ( !var_0 )
{
var_3 = 0.6;
var_1 moveto( var_1.player_dismount.origin, var_3, var_3 * 0.5, var_3 * 0.5 );
wait( var_3 );
}
var_2 unlink();
var_2 enableweapons();
var_2 allowcrouch( 1 );
var_2 allowprone( 1 );
var_2.humvee_org = undefined;
var_1.player_dismount delete();
var_1 delete();
}
dirteffect( var_0, var_1 )
{
var_2 = screen_effect_sides( var_0 );
foreach ( var_5, var_4 in var_2 )
thread maps\_gameskill::grenade_dirt_on_screen( var_5 );
}
bloodsplateffect( var_0 )
{
if ( !isdefined( self.damageattacker ) )
return;
var_1 = screen_effect_sides( self.damageattacker.origin );
foreach ( var_4, var_3 in var_1 )
thread maps\_gameskill::blood_splat_on_screen( var_4 );
}
screen_effect_sides( var_0 )
{
var_1 = vectornormalize( anglestoforward( self.angles ) );
var_2 = vectornormalize( anglestoright( self.angles ) );
var_3 = vectornormalize( var_0 - self.origin );
var_4 = vectordot( var_3, var_1 );
var_5 = vectordot( var_3, var_2 );
var_6 = [];
var_7 = self getcurrentweapon();
if ( var_4 > 0 && var_4 > 0.5 && weapontype( var_7 ) != "riotshield" )
var_6["bottom"] = 1;
if ( abs( var_4 ) < 0.866 )
{
if ( var_5 > 0 )
var_6["right"] = 1;
else
var_6["left"] = 1;
}
return var_6;
}
pathrandompercent_set( var_0 )
{
if ( !isdefined( self.old_pathrandompercent ) )
self.old_pathrandompercent = self.pathrandompercent;
self.pathrandompercent = var_0;
}
pathrandompercent_zero()
{
if ( isdefined( self.old_pathrandompercent ) )
return;
self.old_pathrandompercent = self.pathrandompercent;
self.pathrandompercent = 0;
}
pathrandompercent_reset()
{
self.pathrandompercent = self.old_pathrandompercent;
self.old_pathrandompercent = undefined;
}
walkdist_zero()
{
if ( isdefined( self.old_walkdistfacingmotion ) )
return;
self.old_walkdist = self.walkdist;
self.old_walkdistfacingmotion = self.walkdistfacingmotion;
self.walkdist = 0;
self.walkdistfacingmotion = 0;
}
walkdist_reset()
{
self.walkdist = self.old_walkdist;
self.walkdistfacingmotion = self.old_walkdistfacingmotion;
self.old_walkdist = undefined;
self.old_walkdistfacingmotion = undefined;
}
enable_ignorerandombulletdamage_drone()
{
thread ignorerandombulletdamage_drone_proc();
}
ignorerandombulletdamage_drone_proc()
{
self endon( "disable_ignorerandombulletdamage_drone" );
self endon( "death" );
self.ignorerandombulletdamage = 1;
self.fakehealth = self.health;
self.health = 1000000;
for (;;)
{
self waittill( "damage", var_0, var_1 );
if ( !isplayer( var_1 ) && issentient( var_1 ) )
{
if ( isdefined( var_1.enemy ) && var_1.enemy != self )
continue;
}
self.fakehealth = self.fakehealth - var_0;
if ( self.fakehealth <= 0 )
break;
}
self kill();
}
hide_notsolid()
{
if ( !isdefined( self.oldcontents ) )
self.oldcontents = self setcontents( 0 );
self hide();
}
show_solid()
{
if ( !isai( self ) )
self solid();
if ( isdefined( self.oldcontents ) )
self setcontents( self.oldcontents );
self show();
}
set_brakes( var_0 )
{
self.veh_brake = var_0;
}
disable_ignorerandombulletdamage_drone()
{
if ( !isalive( self ) )
return;
if ( !isdefined( self.ignorerandombulletdamage ) )
return;
self notify( "disable_ignorerandombulletdamage_drone" );
self.ignorerandombulletdamage = undefined;
self.health = self.fakehealth;
}
timeoutent( var_0 )
{
var_1 = spawnstruct();
var_1 delaythread( var_0, ::send_notify, "timeout" );
return var_1;
}
delaythread( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7 )
{
thread maps\_utility_code::delaythread_proc( var_1, var_0, var_2, var_3, var_4, var_5, var_6, var_7 );
}
delaychildthread( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7 )
{
childthread maps\_utility_code::delaychildthread_proc( var_1, var_0, var_2, var_3, var_4, var_5, var_6, var_7 );
}
flagwaitthread( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7 )
{
if ( !isarray( var_0 ) )
var_0 = [ var_0, 0 ];
thread maps\_utility_code::flagwaitthread_proc( var_1, var_0, var_2, var_3, var_4, var_5, var_6, var_7 );
}
waittillthread( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7 )
{
self endon( "death" );
if ( !isarray( var_0 ) )
var_0 = [ var_0, 0 ];
thread maps\_utility_code::waittillthread_proc( var_1, var_0, var_2, var_3, var_4, var_5, var_6, var_7 );
}
enable_danger_react( var_0 )
{
var_0 = var_0 * 1000;
self.dodangerreact = 1;
self.dangerreactduration = var_0;
self.neversprintforvariation = undefined;
}
disable_danger_react()
{
self.dodangerreact = 0;
self.neversprintforvariation = 1;
}
set_group_advance_to_enemy_parameters( var_0, var_1 )
{
level.advancetoenemyinterval = var_0;
level.advancetoenemygroupmax = var_1;
}
reset_group_advance_to_enemy_timer( var_0 )
{
level.lastadvancetoenemytime[var_0] = gettime();
}
set_custom_gameskill_func( var_0 )
{
level.custom_gameskill_func = var_0;
thread maps\_gameskill::resetskill();
}
clear_custom_gameskill_func()
{
level.custom_gameskill_func = undefined;
thread maps\_gameskill::resetskill();
}
set_wind( var_0, var_1, var_2 )
{
maps\_animatedmodels::init_wind_if_uninitialized();
if ( isdefined( var_2 ) )
level.wind.variance = var_2;
level.wind.rate = var_1;
level.wind.weight = var_0;
level notify( "windchange", "strong" );
}
string_is_single_digit_integer( var_0 )
{
if ( var_0.size > 1 )
return 0;
var_1 = [];
var_1["0"] = 1;
var_1["1"] = 1;
var_1["2"] = 1;
var_1["3"] = 1;
var_1["4"] = 1;
var_1["5"] = 1;
var_1["6"] = 1;
var_1["7"] = 1;
var_1["8"] = 1;
var_1["9"] = 1;
if ( isdefined( var_1[var_0] ) )
return 1;
return 0;
}
set_battlechatter_variable( var_0, var_1 )
{
level.battlechatter[var_0] = var_1;
maps\_utility_code::update_battlechatter_hud();
}
objective_clearadditionalpositions( var_0 )
{
for ( var_1 = 0; var_1 < 8; var_1++ )
objective_additionalposition( var_0, var_1, ( 0, 0, 0 ) );
}
get_minutes_and_seconds( var_0 )
{
var_1 = [];
var_1["minutes"] = 0;
for ( var_1["seconds"] = int( var_0 / 1000 ); var_1["seconds"] >= 60; var_1["seconds"] = var_1["seconds"] - 60 )
var_1["minutes"]++;
if ( var_1["seconds"] < 10 )
var_1["seconds"] = "0" + var_1["seconds"];
return var_1;
}
player_has_weapon( var_0 )
{
var_1 = level.player getweaponslistprimaries();
foreach ( var_3 in var_1 )
{
if ( var_3 == var_0 )
return 1;
}
return 0;
}
obj( var_0 )
{
if ( !isdefined( level.obj_array ) )
level.obj_array = [];
if ( !isdefined( level.obj_array[var_0] ) )
level.obj_array[var_0] = level.obj_array.size + 1;
return level.obj_array[var_0];
}
obj_exists( var_0 )
{
return isdefined( level.obj_array ) && isdefined( level.obj_array[var_0] );
}
player_mount_vehicle( var_0 )
{
self mountvehicle( var_0 );
self.drivingvehicle = var_0;
}
player_dismount_vehicle()
{
self dismountvehicle();
self.drivingvehicle = undefined;
}
graph_position( var_0, var_1, var_2, var_3, var_4 )
{
var_5 = var_4 - var_2;
var_6 = var_3 - var_1;
var_7 = var_5 / var_6;
var_0 = var_0 - var_3;
var_0 = var_7 * var_0;
var_0 = var_0 + var_4;
return var_0;
}
enable_achievement_harder_they_fall()
{
self.rappeller = 1;
}
disable_achievement_harder_they_fall()
{
self.rappeller = undefined;
}
enable_achievement_harder_they_fall_guy( var_0 )
{
var_0 enable_achievement_harder_they_fall();
}
disable_achievement_harder_they_fall_guy( var_0 )
{
var_0 disable_achievement_harder_they_fall();
}
musiclength( var_0 )
{
var_1 = lookupsoundlength( var_0 );
var_1 = var_1 * 0.001;
return var_1;
}
is_command_bound( var_0 )
{
var_1 = getkeybinding( var_0 );
return var_1["count"];
}
linear_interpolate( var_0, var_1, var_2 )
{
var_3 = var_2 - var_1;
var_4 = var_0 * var_3;
var_5 = var_1 + var_4;
return var_5;
}
define_loadout( var_0 )
{
level.loadout = var_0;
}
template_level( var_0 )
{
define_loadout( var_0 );
level.template_script = var_0;
}
template_so_level( var_0 )
{
level.audio_stringtable_mapname = var_0;
}
fx_volume_pause_noteworthy( var_0, var_1 )
{
thread fx_volume_pause_noteworthy_thread( var_0, var_1 );
}
fx_volume_pause_noteworthy_thread( var_0, var_1 )
{
var_2 = getent( var_0, "script_noteworthy" );
var_2 notify( "new_volume_command" );
var_2 endon( "new_volume_command" );
wait 0.05;
fx_volume_pause( var_2, var_1 );
}
fx_volume_pause( var_0, var_1 )
{
var_0.fx_paused = 1;
if ( !isdefined( var_1 ) )
var_1 = 0;
if ( var_1 )
array_thread_mod_delayed( var_0.fx, common_scripts\utility::pauseeffect );
else
common_scripts\utility::array_thread( var_0.fx, common_scripts\utility::pauseeffect );
}
array_thread_mod_delayed( var_0, var_1, var_2 )
{
var_3 = 0;
if ( !isdefined( var_2 ) )
var_2 = 5;
var_4 = [];
foreach ( var_6 in var_0 )
{
var_4[var_4.size] = var_6;
var_3++;
var_3 = var_3 % var_2;
if ( var_2 == 0 )
{
common_scripts\utility::array_thread( var_4, var_1 );
wait 0.05;
var_4 = [];
}
}
}
fx_volume_restart_noteworthy( var_0 )
{
thread fx_volume_restart_noteworthy_thread( var_0 );
}
fx_volume_restart_noteworthy_thread( var_0 )
{
var_1 = getent( var_0, "script_noteworthy" );
var_1 notify( "new_volume_command" );
var_1 endon( "new_volume_command" );
wait 0.05;
if ( !isdefined( var_1.fx_paused ) )
return;
var_1.fx_paused = undefined;
fx_volume_restart( var_1 );
}
fx_volume_restart( var_0 )
{
common_scripts\utility::array_thread( var_0.fx, ::restarteffect );
}
flag_count_increment( var_0 )
{
if ( !isdefined( level.flag_count ) )
level.flag_count = [];
if ( !isdefined( level.flag_count[var_0] ) )
level.flag_count[var_0] = 1;
else
level.flag_count[var_0]++;
}
flag_count_decrement( var_0 )
{
level.flag_count[var_0]--;
level.flag_count[var_0] = int( max( 0, level.flag_count[var_0] ) );
if ( level.flag_count[var_0] )
return;
common_scripts\utility::flag_set( var_0 );
}
flag_count_set( var_0, var_1 )
{
level.flag_count[var_0] = var_1;
}
add_cleanup_ent( var_0, var_1 )
{
if ( !isdefined( level.cleanup_ents ) )
level.cleanup_ents = [];
if ( !isdefined( level.cleanup_ents[var_1] ) )
level.cleanup_ents[var_1] = [];
level.cleanup_ents[var_1][level.cleanup_ents[var_1].size] = var_0;
}
cleanup_ents( var_0 )
{
var_1 = level.cleanup_ents[var_0];
var_1 = common_scripts\utility::array_removeundefined( var_1 );
array_delete( var_1 );
level.cleanup_ents[var_0] = undefined;
}
cleanup_ents_removing_bullet_shield( var_0 )
{
if ( !isdefined( level.cleanup_ents ) )
return;
if ( !isdefined( level.cleanup_ents[var_0] ) )
return;
var_1 = level.cleanup_ents[var_0];
var_1 = common_scripts\utility::array_removeundefined( var_1 );
foreach ( var_3 in var_1 )
{
if ( !isai( var_3 ) )
continue;
if ( !isalive( var_3 ) )
continue;
if ( !isdefined( var_3.magic_bullet_shield ) )
continue;
if ( !var_3.magic_bullet_shield )
continue;
var_3 stop_magic_bullet_shield();
}
array_delete( var_1 );
level.cleanup_ents[var_0] = undefined;
}
add_trigger_function( var_0 )
{
if ( !isdefined( self.trigger_functions ) )
thread maps\_utility_code::add_trigger_func_thread();
self.trigger_functions[self.trigger_functions.size] = var_0;
}
getallweapons()
{
var_0 = [];
var_1 = getentarray();
foreach ( var_3 in var_1 )
{
if ( !isdefined( var_3.classname ) )
continue;
if ( issubstr( var_3.classname, "weapon_" ) )
var_0[var_0.size] = var_3;
}
return var_0;
}
radio_add( var_0 )
{
level.scr_radio[var_0] = var_0;
}
move_with_rate( var_0, var_1, var_2 )
{
self notify( "newmove" );
self endon( "newmove" );
if ( !isdefined( var_2 ) )
var_2 = 200;
var_3 = distance( self.origin, var_0 );
var_4 = var_3 / var_2;
var_5 = vectornormalize( var_0 - self.origin );
self moveto( var_0, var_4, 0, 0 );
self rotateto( var_1, var_4, 0, 0 );
wait( var_4 );
if ( !isdefined( self ) )
return;
self.velocity = var_5 * ( var_3 / var_4 );
}
flag_on_death( var_0 )
{
level endon( var_0 );
self waittill( "death" );
common_scripts\utility::flag_set( var_0 );
}
enable_damagefeedback()
{
level.damagefeedback = 1;
}
disable_damagefeedback()
{
level.damagefeedback = 0;
}
is_damagefeedback_enabled()
{
return isdefined( level.damagefeedback ) && level.damagefeedback;
}
add_damagefeedback()
{
maps\_damagefeedback::monitordamage();
}
remove_damagefeedback()
{
maps\_damagefeedback::stopmonitordamage();
}
is_demo()
{
if ( getdvar( "e3demo" ) == "1" )
return 1;
return 0;
}
deletestructarray( var_0, var_1, var_2 )
{
var_3 = common_scripts\utility::getstructarray( var_0, var_1 );
deletestructarray_ref( var_3, var_2 );
}
deletestruct_ref( var_0 )
{
if ( !isdefined( var_0 ) )
return;
var_1 = var_0.script_linkname;
if ( isdefined( var_1 ) && isdefined( level.struct_class_names["script_linkname"] ) && isdefined( level.struct_class_names["script_linkname"][var_1] ) )
{
foreach ( var_4, var_3 in level.struct_class_names["script_linkname"][var_1] )
{
if ( isdefined( var_3 ) && var_0 == var_3 )
level.struct_class_names["script_linkname"][var_1][var_4] = undefined;
}
if ( level.struct_class_names["script_linkname"][var_1].size == 0 )
level.struct_class_names["script_linkname"][var_1] = undefined;
}
var_1 = var_0.script_noteworthy;
if ( isdefined( var_1 ) && isdefined( level.struct_class_names["script_noteworthy"] ) && isdefined( level.struct_class_names["script_noteworthy"][var_1] ) )
{
foreach ( var_4, var_3 in level.struct_class_names["script_noteworthy"][var_1] )
{
if ( isdefined( var_3 ) && var_0 == var_3 )
level.struct_class_names["script_noteworthy"][var_1][var_4] = undefined;
}
if ( level.struct_class_names["script_noteworthy"][var_1].size == 0 )
level.struct_class_names["script_noteworthy"][var_1] = undefined;
}
var_1 = var_0.target;
if ( isdefined( var_1 ) && isdefined( level.struct_class_names["target"] ) && isdefined( level.struct_class_names["target"][var_1] ) )
{
foreach ( var_4, var_3 in level.struct_class_names["target"][var_1] )
{
if ( isdefined( var_3 ) && var_0 == var_3 )
level.struct_class_names["target"][var_1][var_4] = undefined;
}
if ( level.struct_class_names["target"][var_1].size == 0 )
level.struct_class_names["target"][var_1] = undefined;
}
var_1 = var_0.targetname;
if ( isdefined( var_1 ) && isdefined( level.struct_class_names["targetname"] ) && isdefined( level.struct_class_names["targetname"][var_1] ) )
{
foreach ( var_4, var_3 in level.struct_class_names["targetname"][var_1] )
{
if ( isdefined( var_3 ) && var_0 == var_3 )
level.struct_class_names["targetname"][var_1][var_4] = undefined;
}
if ( level.struct_class_names["targetname"][var_1].size == 0 )
level.struct_class_names["targetname"][var_1] = undefined;
}
if ( isdefined( level.struct ) )
{
foreach ( var_4, var_3 in level.struct )
{
if ( var_0 == var_3 )
level.struct[var_4] = undefined;
}
}
}
deletestructarray_ref( var_0, var_1 )
{
if ( !isdefined( var_0 ) || !isarray( var_0 ) || var_0.size == 0 )
return;
var_1 = common_scripts\utility::ter_op( isdefined( var_1 ), var_1, 0 );
var_1 = common_scripts\utility::ter_op( var_1 > 0, var_1, 0 );
if ( var_1 > 0 )
{
foreach ( var_3 in var_0 )
{
deletestruct_ref( var_3 );
wait( var_1 );
}
}
else
{
foreach ( var_3 in var_0 )
deletestruct_ref( var_3 );
}
}
getstruct_delete( var_0, var_1 )
{
var_2 = common_scripts\utility::getstruct( var_0, var_1 );
deletestruct_ref( var_2 );
return var_2;
}
getstructarray_delete( var_0, var_1, var_2 )
{
var_3 = common_scripts\utility::getstructarray( var_0, var_1 );
deletestructarray_ref( var_3, var_2 );
return var_3;
}
getent_or_struct_or_node( var_0, var_1 )
{
var_2 = getent_or_struct( var_0, var_1 );
if ( !isdefined( var_2 ) )
var_2 = getnode( var_0, var_1 );
if ( !isdefined( var_2 ) )
var_2 = getvehiclenode( var_0, var_1 );
return var_2;
}
setentityheadicon( var_0, var_1, var_2, var_3, var_4 )
{
if ( isdefined( var_3 ) )
self.entityheadiconoffset = var_3;
else
self.entityheadiconoffset = ( 0, 0, 0 );
if ( isdefined( var_4 ) )
self.entityheadiconreferencefunc = var_4;
self notify( "new_head_icon" );
var_5 = newhudelem();
var_5.archived = 1;
var_5.alpha = 0.8;
var_5 setshader( var_0, var_1, var_2 );
var_5 setwaypoint( 0, 0, 0, 1 );
self.entityheadicon = var_5;
updateentityheadiconorigin();
thread updateentityheadicon();
thread destroyentityheadiconondeath();
}
removeentityheadicon()
{
if ( !isdefined( self.entityheadicon ) )
return;
self.entityheadicon destroy();
}
updateentityheadicon()
{
self endon( "new_head_icon" );
self endon( "death" );
var_0 = self.origin;
for (;;)
{
if ( var_0 != self.origin )
{
updateentityheadiconorigin();
var_0 = self.origin;
}
wait 0.05;
}
}
updateentityheadiconorigin()
{
if ( isdefined( self.entityheadiconreferencefunc ) )
{
var_0 = self [[ self.entityheadiconreferencefunc ]]();
if ( isdefined( var_0 ) )
{
self.entityheadicon.x = self.entityheadiconoffset[0] + var_0[0];
self.entityheadicon.y = self.entityheadiconoffset[1] + var_0[1];
self.entityheadicon.z = self.entityheadiconoffset[2] + var_0[2];
return;
}
}
self.entityheadicon.x = self.origin[0] + self.entityheadiconoffset[0];
self.entityheadicon.y = self.origin[1] + self.entityheadiconoffset[1];
self.entityheadicon.z = self.origin[2] + self.entityheadiconoffset[2];
}
destroyentityheadiconondeath()
{
self endon( "new_head_icon" );
self waittill( "death" );
if ( !isdefined( self.entityheadicon ) )
return;
self.entityheadicon destroy();
}
worldtolocalcoords( var_0 )
{
var_1 = var_0 - self.origin;
return ( vectordot( var_1, anglestoforward( self.angles ) ), -1.0 * vectordot( var_1, anglestoright( self.angles ) ), vectordot( var_1, anglestoup( self.angles ) ) );
}
set_audio_zone( var_0, var_1 )
{
maps\_audio::set_zone( var_0, var_1 );
}
stop_audio_zones( var_0 )
{
maps\_audio::stop_zones( var_0 );
}
get_audio_zone()
{
return level._audio.zone.current_zone;
}
set_audio_filter( var_0, var_1 )
{
maps\_audio::set_filter( var_0, var_1 );
}
clear_audio_filter( var_0 )
{
maps\_audio::clear_filter( var_0 );
}
set_audio_occlusion( var_0 )
{
maps\_audio::set_occlusion( var_0 );
}
clear_audio_occlusion()
{
maps\_audio::deactivate_occlusion();
}
sound_fade_and_delete( var_0 )
{
self scalevolume( 0, var_0 );
common_scripts\utility::delaycall( var_0 + 0.05, ::stopsounds );
common_scripts\utility::delaycall( var_0 + 0.1, ::delete );
}
sound_fade_in( var_0, var_1, var_2, var_3 )
{
var_1 = clamp( var_1, 0, 1 );
var_2 = max( 0.05, var_2 );
if ( isdefined( var_3 ) )
self playloopsound( var_0 );
else
self playsound( var_0 );
self scalevolume( 0.0 );
common_scripts\utility::delaycall( 0.05, ::scalevolume, var_1, var_2 );
}
delete_on_sounddone()
{
self waittill( "sounddone" );
self delete();
}
set_level_fadein_time( var_0 )
{
level._audio.level_fade_time = var_0;
}
set_audio_mix( var_0 )
{
maps\_audio::set_mix( var_0 );
}
clear_audio_mix( var_0 )
{
maps\_audio::clear_mix( var_0 );
}
previous_audio_mix()
{
}
intro_screen_create( var_0, var_1, var_2, var_3, var_4 )
{
level.introscreen = spawnstruct();
level.introscreen.completed_delay = 3;
level.introscreen.fade_out_time = 1.5;
level.introscreen.fade_in_time = undefined;
if ( isdefined( var_3 ) )
level.introscreen.lines = [ var_0, var_1, var_2, var_3 ];
else
level.introscreen.lines = [ var_0, var_1, var_2 ];
common_scripts\utility::noself_array_call( level.introscreen.lines, ::precachestring );
}
intro_screen_custom_func( var_0 )
{
level.introscreen.customfunc = var_0;
}
intro_screen_custom_timing( var_0, var_1, var_2 )
{
level.introscreen.completed_delay = var_0;
level.introscreen.fade_out_time = var_1;
level.introscreen.fade_in_time = var_2;
}
register_archetype( var_0, var_1, var_2 )
{
animscripts\animset::registerarchetype( var_0, var_1, var_2 );
}
archetype_exists( var_0 )
{
return animscripts\animset::archetypeexists( var_0 );
}
set_archetype( var_0 )
{
self.animarchetype = var_0;
self notify( "move_loop_restart" );
if ( var_0 == "creepwalk" )
self.sharpturnlookaheaddist = 72;
}
clear_archetype()
{
if ( isdefined( self.animarchetype ) && self.animarchetype == "creepwalk" )
self.sharpturnlookaheaddist = 30;
self.animarchetype = undefined;
self notify( "move_loop_restart" );
}
in_alien_mode()
{
if ( isdefined( level.alien_mode ) && level.alien_mode == 1 )
return 1;
else
return 0;
}
transient_load( var_0 )
{
loadtransient( var_0 );
while ( !istransientloaded( var_0 ) )
wait 0.1;
common_scripts\utility::flag_set( var_0 + "_loaded" );
}
transient_unload( var_0 )
{
unloadtransient( var_0 );
while ( istransientloaded( var_0 ) )
wait 0.1;
common_scripts\utility::flag_clear( var_0 + "_loaded" );
}
transient_init( var_0 )
{
common_scripts\utility::flag_init( var_0 + "_loaded" );
}
transient_switch( var_0, var_1 )
{
if ( common_scripts\utility::flag( var_0 + "_loaded" ) )
transient_unload( var_0 );
if ( !common_scripts\utility::flag( var_1 + "_loaded" ) )
transient_load( var_1 );
}
transient_unloadall_and_load( var_0 )
{
unloadalltransients();
transient_load( var_0 );
}
deep_array_call( var_0, var_1, var_2 )
{
if ( !isdefined( var_2 ) )
{
foreach ( var_4 in var_0 )
{
if ( isdefined( var_4 ) )
{
if ( isarray( var_4 ) )
{
deep_array_call( var_4, var_1 );
continue;
}
var_4 call [[ var_1 ]]();
}
}
}
else
{
switch ( var_2.size )
{
case 0:
foreach ( var_4 in var_0 )
{
if ( isdefined( var_4 ) )
{
if ( isarray( var_4 ) )
{
deep_array_call( var_4, var_1, var_2 );
continue;
}
var_4 call [[ var_1 ]]();
}
}
break;
case 1:
foreach ( var_4 in var_0 )
{
if ( isdefined( var_4 ) )
{
if ( isarray( var_4 ) )
{
deep_array_call( var_4, var_1, var_2 );
continue;
}
var_4 call [[ var_1 ]]( var_2[0] );
}
}
break;
case 2:
foreach ( var_4 in var_0 )
{
if ( isdefined( var_4 ) )
{
if ( isarray( var_4 ) )
{
deep_array_call( var_4, var_1, var_2 );
continue;
}
var_4 call [[ var_1 ]]( var_2[0], var_2[1] );
}
}
break;
case 3:
foreach ( var_4 in var_0 )
{
if ( isdefined( var_4 ) )
{
if ( isarray( var_4 ) )
{
deep_array_call( var_4, var_1, var_2 );
continue;
}
var_4 call [[ var_1 ]]( var_2[0], var_2[1], var_2[2] );
}
}
break;
case 4:
foreach ( var_4 in var_0 )
{
if ( isdefined( var_4 ) )
{
if ( isarray( var_4 ) )
{
deep_array_call( var_4, var_1, var_2 );
continue;
}
var_4 call [[ var_1 ]]( var_2[0], var_2[1], var_2[2], var_2[3] );
}
}
break;
case 5:
foreach ( var_4 in var_0 )
{
if ( isdefined( var_4 ) )
{
if ( isarray( var_4 ) )
{
deep_array_call( var_4, var_1, var_2 );
continue;
}
var_4 call [[ var_1 ]]( var_2[0], var_2[1], var_2[2], var_2[3], var_2[4] );
}
}
break;
}
}
}
deep_array_thread( var_0, var_1, var_2 )
{
if ( !isdefined( var_2 ) )
{
foreach ( var_4 in var_0 )
{
if ( isdefined( var_4 ) )
{
if ( isarray( var_4 ) )
{
deep_array_thread( var_4, var_1, var_2 );
continue;
}
var_4 thread [[ var_1 ]]();
}
}
}
else
{
switch ( var_2.size )
{
case 0:
foreach ( var_4 in var_0 )
{
if ( isdefined( var_4 ) )
{
if ( isarray( var_4 ) )
{
deep_array_thread( var_4, var_1, var_2 );
continue;
}
var_4 thread [[ var_1 ]]();
}
}
break;
case 1:
foreach ( var_4 in var_0 )
{
if ( isdefined( var_4 ) )
{
if ( isarray( var_4 ) )
{
deep_array_thread( var_4, var_1, var_2 );
continue;
}
var_4 thread [[ var_1 ]]( var_2[0] );
}
}
break;
case 2:
foreach ( var_4 in var_0 )
{
if ( isdefined( var_4 ) )
{
if ( isarray( var_4 ) )
{
deep_array_thread( var_4, var_1, var_2 );
continue;
}
var_4 thread [[ var_1 ]]( var_2[0], var_2[1] );
}
}
break;
case 3:
foreach ( var_4 in var_0 )
{
if ( isdefined( var_4 ) )
{
if ( isarray( var_4 ) )
{
deep_array_thread( var_4, var_1, var_2 );
continue;
}
var_4 thread [[ var_1 ]]( var_2[0], var_2[1], var_2[2] );
}
}
break;
case 4:
foreach ( var_4 in var_0 )
{
if ( isdefined( var_4 ) )
{
if ( isarray( var_4 ) )
{
deep_array_thread( var_4, var_1, var_2 );
continue;
}
var_4 thread [[ var_1 ]]( var_2[0], var_2[1], var_2[2], var_2[3] );
}
}
break;
case 5:
foreach ( var_4 in var_0 )
{
if ( isdefined( var_4 ) )
{
if ( isarray( var_4 ) )
{
deep_array_thread( var_4, var_1, var_2 );
continue;
}
var_4 thread [[ var_1 ]]( var_2[0], var_2[1], var_2[2], var_2[3], var_2[4] );
}
}
break;
}
}
}
setdvar_cg_ng( var_0, var_1, var_2 )
{
if ( !isdefined( level.console ) )
set_console_status();
if ( is_gen4() )
setdvar( var_0, var_2 );
else
setdvar( var_0, var_1 );
}
setsaveddvar_cg_ng( var_0, var_1, var_2 )
{
if ( !isdefined( level.console ) )
set_console_status();
if ( is_gen4() )
setsaveddvar( var_0, var_2 );
else
setsaveddvar( var_0, var_1 );
}
follow_path_and_animate( var_0, var_1 )
{
self endon( "death" );
self endon( "stop_path" );
self notify( "stop_going_to_node" );
self notify( "follow_path" );
self endon( "follow_path" );
wait 0.1;
var_2 = var_0;
var_3 = undefined;
var_4 = undefined;
if ( !isdefined( var_1 ) )
var_1 = 300;
self.current_follow_path = var_2;
var_2 script_delay();
while ( isdefined( var_2 ) )
{
self.current_follow_path = var_2;
if ( isdefined( var_2.lookahead ) )
break;
if ( isdefined( level.struct_class_names["targetname"][var_2.targetname] ) )
var_4 = ::follow_path_animate_set_struct;
else if ( isdefined( var_2.classname ) )
var_4 = ::follow_path_animate_set_ent;
else
var_4 = ::follow_path_animate_set_node;
if ( isdefined( var_2.radius ) && var_2.radius != 0 )
self.goalradius = var_2.radius;
if ( self.goalradius < 16 )
self.goalradius = 16;
if ( isdefined( var_2.height ) && var_2.height != 0 )
self.goalheight = var_2.height;
var_5 = self.goalradius;
self childthread [[ var_4 ]]( var_2 );
if ( isdefined( var_2.animation ) )
var_2 waittill( var_2.animation );
else
{
for (;;)
{
self waittill( "goal" );
if ( distance( var_2.origin, self.origin ) < var_5 + 10 || self.team != "allies" )
break;
}
}
var_2 notify( "trigger", self );
if ( isdefined( var_2.script_flag_set ) )
common_scripts\utility::flag_set( var_2.script_flag_set );
if ( isdefined( var_2.script_parameters ) )
{
var_6 = strtok( var_2.script_parameters, " " );
for ( var_7 = 0; var_7 < var_6.size; var_7++ )
{
if ( isdefined( level.custom_followpath_parameter_func ) )
self [[ level.custom_followpath_parameter_func ]]( var_6[var_7], var_2 );
if ( self.type == "dog" )
continue;
switch ( var_6[var_7] )
{
case "enable_cqb":
enable_cqbwalk();
break;
case "disable_cqb":
disable_cqbwalk();
break;
case "deleteme":
self delete();
return;
}
}
}
if ( !isdefined( var_2.script_requires_player ) && var_1 > 0 && self.team == "allies" )
{
while ( isalive( level.player ) )
{
if ( follow_path_wait_for_player( var_2, var_1 ) )
break;
if ( isdefined( var_2.animation ) )
{
self.goalradius = var_5;
self setgoalpos( self.origin );
}
wait 0.05;
}
}
if ( !isdefined( var_2.target ) )
break;
if ( isdefined( var_2.script_flag_wait ) )
common_scripts\utility::flag_wait( var_2.script_flag_wait );
var_2 script_delay();
var_2 = var_2 common_scripts\utility::get_target_ent();
}
self notify( "path_end_reached" );
}
follow_path_wait_for_player( var_0, var_1 )
{
if ( distance( level.player.origin, var_0.origin ) < distance( self.origin, var_0.origin ) )
return 1;
var_2 = undefined;
var_2 = anglestoforward( self.angles );
var_3 = vectornormalize( level.player.origin - self.origin );
if ( isdefined( var_0.target ) )
{
var_4 = common_scripts\utility::get_target_ent( var_0.target );
var_2 = vectornormalize( var_4.origin - var_0.origin );
}
else if ( isdefined( var_0.angles ) )
var_2 = anglestoforward( var_0.angles );
else
var_2 = anglestoforward( self.angles );
if ( vectordot( var_2, var_3 ) > 0 )
return 1;
if ( distance( level.player.origin, self.origin ) < var_1 )
return 1;
return 0;
}
follow_path_animate_set_node( var_0 )
{
self notify( "follow_path_new_goal" );
if ( isdefined( var_0.animation ) )
{
var_0 maps\_anim::anim_generic_reach( self, var_0.animation );
self notify( "starting_anim", var_0.animation );
if ( isdefined( var_0.script_parameters ) && issubstr( var_0.script_parameters, "gravity" ) )
var_0 maps\_anim::anim_generic_gravity( self, var_0.animation );
else
var_0 maps\_anim::anim_generic_run( self, var_0.animation );
self setgoalpos( self.origin );
}
else
set_goal_node( var_0 );
}
follow_path_animate_set_ent( var_0 )
{
self notify( "follow_path_new_goal" );
if ( isdefined( var_0.animation ) )
{
var_0 maps\_anim::anim_generic_reach( self, var_0.animation );
self notify( "starting_anim", var_0.animation );
if ( isdefined( var_0.script_parameters ) && issubstr( var_0.script_parameters, "gravity" ) )
var_0 maps\_anim::anim_generic_gravity( self, var_0.animation );
else
var_0 maps\_anim::anim_generic_run( self, var_0.animation );
self setgoalpos( self.origin );
}
else
set_goal_ent( var_0 );
}
follow_path_animate_set_struct( var_0 )
{
self notify( "follow_path_new_goal" );
if ( isdefined( var_0.animation ) )
{
var_0 maps\_anim::anim_generic_reach( self, var_0.animation );
self notify( "starting_anim", var_0.animation );
disable_exits();
if ( isdefined( var_0.script_parameters ) && issubstr( var_0.script_parameters, "gravity" ) )
var_0 maps\_anim::anim_generic_gravity( self, var_0.animation );
else
var_0 maps\_anim::anim_generic_run( self, var_0.animation );
delaythread( 0.05, ::enable_exits );
self setgoalpos( self.origin );
}
else
set_goal_pos( var_0.origin );
}
post_load_precache( var_0 )
{
if ( !isdefined( level.post_load_funcs ) )
level.post_load_funcs = [];
level.post_load_funcs = common_scripts\utility::array_add( level.post_load_funcs, var_0 );
}
game_is_current_gen()
{
if ( level.xenon )
return 1;
if ( level.ps3 )
return 1;
return 0;
}
lerpfov_saved( var_0, var_1 )
{
thread lerpfov_saved_thread( var_0, var_1 );
}
lerpfov_saved_thread( var_0, var_1 )
{
self notify( "new_lerp_Fov_Saved" );
self endon( "new_lerp_Fov_Saved" );
self lerpfov( var_0, var_1 );
wait( var_1 );
setsaveddvar( "cg_fov", var_0 );
}
ui_action_slot_force_active_on( var_0 )
{
var_1 = "ui_actionslot_" + var_0 + "_forceActive";
setdvar( var_1, "on" );
}
ui_action_slot_force_active_off( var_0 )
{
var_1 = "ui_actionslot_" + var_0 + "_forceActive";
setdvar( var_1, "turn_off" );
}
ui_action_slot_force_active_one_time( var_0 )
{
var_1 = "ui_actionslot_" + var_0 + "_forceActive";
setdvar( var_1, "onetime" );
}
hastag( var_0, var_1 )
{
var_2 = getnumparts( var_0 );
for ( var_3 = 0; var_3 < var_2; var_3++ )
{
if ( tolower( getpartname( var_0, var_3 ) ) == tolower( var_1 ) )
return 1;
}
return 0;
}
stylized_center_text( var_0, var_1, var_2, var_3 )
{
if ( !isarray( var_0 ) )
var_0 = [ var_0 ];
var_4 = 320;
var_5 = 200;
var_6 = [];
foreach ( var_10, var_8 in var_0 )
{
var_9 = maps\_introscreen::stylized_line( var_8, var_1, var_4, var_5 + var_10 * 20, "center", var_2, var_3 );
var_6 = common_scripts\utility::array_combine( var_9, var_6 );
}
wait( var_1 );
maps\_introscreen::stylized_fadeout( var_6, var_4, var_5, var_0.size );
}