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

1299 lines
32 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
cull_distance_logic()
{
switch ( level.start_point )
{
case "e3":
case "jungle_corridor":
case "parachute":
case "default":
if ( game_is_ng() )
setculldist( 5000 );
else
setculldist( 5000 );
level.player waittill( "start_falling_anim" );
if ( game_is_ng() )
setculldist( 5000 );
else
setculldist( 4500 );
common_scripts\utility::flag_wait( "jungle_entrance" );
if ( game_is_ng() )
setculldist( 6000 );
else
setculldist( 4500 );
common_scripts\utility::flag_wait( "hill_pos_1" );
case "jungle_hill":
if ( game_is_ng() )
setculldist( 19000 );
else
setculldist( 15000 );
common_scripts\utility::flag_wait_any( "waterfall_approach", "e3_warp" );
setculldist( 0 );
}
}
game_is_pc()
{
if ( level.xenon )
return 0;
if ( level.ps3 )
return 0;
if ( level.ps4 )
return 0;
if ( level.xb3 )
return 0;
return 1;
}
game_is_ng()
{
if ( game_is_pc() )
return 1;
if ( level.ps4 )
return 1;
if ( level.xb3 )
return 1;
return 0;
}
stream_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 );
}
}
player_jump_watcher()
{
level endon( "player_jump_watcher_stop" );
var_0 = "player_jumping";
if ( !common_scripts\utility::flag_exist( var_0 ) )
common_scripts\utility::flag_init( var_0 );
else
common_scripts\utility::flag_clear( var_0 );
notifyoncommand( "playerjump", "+gostand" );
notifyoncommand( "playerjump", "+moveup" );
for (;;)
{
level.player waittill( "playerjump" );
wait 0.1;
if ( !level.player isonground() )
common_scripts\utility::flag_set( var_0 );
while ( !level.player isonground() )
wait 0.05;
common_scripts\utility::flag_clear( var_0 );
}
}
bigjump_player_blend_to_anim( var_0 )
{
var_1 = var_0 common_scripts\utility::spawn_tag_origin();
var_1 linkto( var_0, "tag_player", ( 5, 0, 3 ), ( 0, 0, 0 ) );
var_2 = 0.5;
level.player playerlinktoblend( var_1, "tag_origin", var_2 );
wait( var_2 );
level.player playerlinktodelta( var_1, "tag_origin", 1, 0, 0, 0, 0, 1 );
var_0 show();
common_scripts\utility::waitframe();
level.player lerpviewangleclamp( 1, 1, 0, 12, 12, 25, 20 );
}
do_bokeh( var_0, var_1, var_2, var_3, var_4 )
{
level.player notify( "stop_bokeh" );
level.player endon( "stop_bokeh" );
if ( isdefined( var_0 ) )
level endon( var_0 );
if ( isdefined( var_2 ) )
level.player thread maps\_utility::notify_delay( "stop_bokeh", var_2 );
if ( !isdefined( var_3 ) )
var_3 = 10;
if ( !isdefined( var_4 ) )
var_4 = 30;
if ( !isdefined( level.player.bokeh_ent ) )
{
var_5 = anglestoforward( level.player.angles );
var_6 = level.player.origin + var_5 * 60;
var_7 = level.player geteye();
level.player.bokeh_ent = spawn( "script_model", var_6 );
level.player.bokeh_ent setmodel( "tag_origin" );
level.player.bokeh_ent linktoplayerview( level.player, "tag_origin", ( 5, 0, 0 ), ( 0, 0, 0 ), 1 );
}
if ( !isdefined( var_1 ) )
var_1 = "vfx_atmos_bokeh_jungle";
for (;;)
{
playfxontag( common_scripts\utility::getfx( var_1 ), level.player.bokeh_ent, "tag_origin" );
wait( randomfloatrange( var_3, var_4 ) );
}
}
kill_me_from_closest_enemy()
{
self endon( "death" );
var_0 = getaiarray( "allies" );
var_0 = sortbydistance( var_0, self.origin );
wait( randomfloatrange( 0.5, 2.5 ) );
foreach ( var_2 in var_0 )
{
if ( bullettracepassed( var_2 gettagorigin( "tag_flash" ), self geteye(), 1, self ) )
{
magicbullet( "ak47", var_2 gettagorigin( "tag_flash" ), self geteye() );
maps\_utility::die();
return;
}
}
if ( isalive( self ) )
maps\_utility::die();
}
stream_trig_logic()
{
level endon( "tall_grass_begin" );
level endon( "player_jump_watcher_stop" );
common_scripts\utility::flag_wait( "jungle_entrance" );
for (;;)
{
if ( level.player istouching( self ) )
level.player allowprone( 0 );
else
level.player allowprone( 1 );
wait 0.05;
}
}
escape_earthquake_on_missile_impact()
{
while ( isdefined( self ) )
wait 0.05;
earthquake( 0.3, 0.5, level.player.origin, 300 );
level.player playrumbleonentity( "grenade_rumble" );
}
set_flag_when_x_remain( var_0, var_1, var_2 )
{
level endon( var_2 );
while ( var_0.size > var_1 )
{
var_0 = maps\_utility::array_removedead_or_dying( var_0 );
if ( var_0.size == 1 )
{
if ( !isdefined( var_0[0].imminent_death ) )
var_0[0] thread timeout_death( 10 );
}
wait 1;
}
if ( !common_scripts\utility::flag( var_2 ) )
common_scripts\utility::flag_set( var_2 );
}
set_flag_when_x_remain_custom_stream( var_0, var_1 )
{
level endon( var_1 );
while ( level.stream_baddies.size > var_0 )
{
level.stream_baddies = maps\_utility::array_removedead_or_dying( level.stream_baddies );
if ( level.stream_baddies.size == 1 )
{
if ( !isdefined( level.stream_baddies[0].imminent_death ) )
level.stream_baddies[0] thread timeout_death( 10 );
}
wait 1;
}
if ( !common_scripts\utility::flag( var_1 ) )
common_scripts\utility::flag_set( var_1 );
}
timeout_death( var_0 )
{
self endon( "death" );
if ( isdefined( self.imminent_death ) )
return;
self.imminent_death = 1;
wait( var_0 );
thread kill_me_from_closest_enemy();
}
start_raining()
{
if ( !isdefined( level.rain_effect ) )
level.rain_effect = common_scripts\utility::getfx( "rain_light" );
level endon( "stop_rain" );
var_0 = 0;
var_1 = 0;
for (;;)
{
if ( var_0 > 10 )
{
level.rain_effect = common_scripts\utility::getfx( "rain_heavy" );
var_1 = 1024;
}
playfx( level.rain_effect, level.player.origin + ( 0, 0, var_1 ) );
wait 0.333333;
var_0++;
}
}
thunder_and_lightning( var_0, var_1 )
{
level notify( "stop_lightning" );
level endon( "stop_lightning" );
for (;;)
{
do_lightning();
wait( randomintrange( var_0, var_1 ) );
}
}
do_lightning()
{
if ( common_scripts\utility::flag( "doing_lightning" ) )
return;
common_scripts\utility::flag_set( "doing_lightning" );
var_0 = anglestoforward( level.player.angles );
var_1 = anglestoup( level.player.angles );
var_2 = getmapsunlight();
playfx( common_scripts\utility::getfx( "lightning" ), level.player.origin, var_0, var_1 );
setsunlight( 2, 2, 2 );
wait 0.25;
setsunlight( var_2[0], var_2[1], var_2[2] );
wait( randomfloatrange( 0.35, 0.85 ) );
level.player thread maps\_utility::play_sound_on_entity( "thunder_strike" );
common_scripts\utility::flag_clear( "doing_lightning" );
}
manually_alert_me()
{
if ( isdefined( self.script_stealth ) )
maps\_stealth_shared_utilities::group_flag_set( "_stealth_spotted" );
}
blend_wind_setting_internal( var_0, var_1 )
{
var_2 = getdvarfloat( var_1, 0 );
if ( var_2 == var_0 )
return;
if ( var_0 > var_2 )
{
while ( var_0 >= var_2 )
{
var_2 = var_2 + 0.02;
setsaveddvar( var_1, var_2 );
wait 0.05;
}
}
else if ( var_0 < var_2 )
{
while ( var_0 <= var_2 )
{
var_2 = var_2 - 0.02;
setsaveddvar( var_1, var_2 );
wait 0.05;
}
}
}
has_script_parameters( var_0 )
{
if ( !isdefined( self.script_parameters ) )
return 0;
if ( self.script_parameters != var_0 )
return 0;
return 1;
}
adjust_moving_grass( var_0, var_1, var_2, var_3 )
{
if ( isdefined( var_1 ) )
setsaveddvar( "r_reactiveMotionWindAreaScale", var_1 );
if ( isdefined( var_0 ) )
thread blend_wind_setting_internal( var_0, "r_reactiveMotionWindStrength" );
if ( isdefined( var_2 ) )
thread blend_wind_setting_internal( var_2, "r_reactiveMotionWindAmplitudeScale" );
if ( isdefined( var_3 ) )
thread blend_wind_setting_internal( var_3, "r_reactiveMotionWindFrequencyScale" );
}
stealth_ai_idle( var_0, var_1, var_2, var_3 )
{
if ( isdefined( var_3 ) )
{
}
var_0 maps\_stealth_utility::stealth_insure_enabled();
var_4 = var_0 maps\_stealth_shared_utilities::group_get_flagname( "_stealth_spotted" );
if ( common_scripts\utility::flag( var_4 ) )
return;
var_5 = "stop_loop";
var_0.allowdeath = 1;
if ( !isdefined( var_3 ) )
thread maps\_anim::anim_generic_custom_animmode_loop( var_0, "gravity", var_1, var_2 );
else
thread maps\_anim::anim_generic_loop( var_0, var_1, var_2 );
maps\_utility::add_wait( maps\_utility::waittill_msg, "stop_idle_proc" );
maps\_utility::add_func( maps\_stealth_utility::stealth_ai_clear_custom_idle_and_react );
thread maps\_stealth_utility::do_wait_thread();
}
arm_player( var_0, var_1, var_2 )
{
level.player takeallweapons();
foreach ( var_4 in var_0 )
{
level.player giveweapon( var_4 );
level.player givemaxammo( var_4 );
}
level.player switchtoweapon( var_0[0] );
if ( isdefined( var_1 ) )
level.player giveweapon( "fraggrenade" );
}
move_player_to_start( var_0 )
{
var_1 = common_scripts\utility::getstruct( var_0, "targetname" );
if ( !isdefined( var_1 ) )
{
var_1 = getent( var_0, "targetname" );
if ( !isdefined( var_1 ) )
return;
}
level.player setorigin( var_1.origin );
var_2 = undefined;
if ( isdefined( var_1.target ) )
var_2 = getent( var_1.target, "targetname" );
if ( isdefined( var_2 ) )
level.player setplayerangles( vectortoangles( var_2.origin - var_1.origin ) );
else
level.player setplayerangles( var_1.angles );
wait 0.1;
}
grenade_ammo_probability( var_0 )
{
self endon( "death" );
if ( randomint( 100 ) > var_0 )
self.grenadeammo = 0;
}
print3d_on_me( var_0 )
{
}
fade_out_in( var_0, var_1, var_2, var_3 )
{
var_4 = newhudelem();
var_4.x = 0;
var_4.y = 0;
var_4 setshader( var_0, 640, 480 );
var_4.alignx = "left";
var_4.aligny = "top";
var_4.horzalign = "fullscreen";
var_4.vertalign = "fullscreen";
var_4.alpha = 1;
var_4.sort = -2;
if ( isdefined( var_1 ) )
level waittill( var_1 );
else
wait( var_2 );
if ( !isdefined( var_3 ) )
var_3 = 0.5;
var_4 fadeovertime( var_3 );
var_4.alpha = 0;
wait 1;
var_4 destroy();
}
play_hand_signal_for_player()
{
self.did_handsignal = undefined;
self waittill( "trigger" );
if ( isdefined( self.did_handsignal ) )
return;
if ( isdefined( level.doing_hand_signal ) && level.doing_hand_signal )
return;
else
level.doing_hand_signal = 1;
self.did_handsignal = 1;
var_0 = getaiarray( "allies" );
if ( var_0.size == 0 )
return;
var_1 = maps\_utility::get_closest_to_player_view( var_0, level.player, 1 );
var_1 maps\_utility::disable_ai_color();
var_1 do_hand_signal();
var_1 maps\_utility::enable_ai_color();
wait 5;
level.doing_hand_signal = 0;
}
do_hand_signal()
{
if ( isdefined( self.node ) )
{
var_0 = self.node.type;
if ( tolower( var_0 ) == "cover right" )
var_1 = "signal_enemy_coverR";
else if ( tolower( var_0 ) == "cover left" )
var_1 = "signal_moveout_coverL";
else
var_1 = "signal_go";
}
else
var_1 = "signal_onme_cqb";
if ( isdefined( self.animname ) )
{
if ( self.animname != "generic" )
self.old_animname = self.animname;
}
self.animname = "generic";
if ( isdefined( self.old_animname ) )
self.animname = self.old_animname;
}
delete_ai_array_safe( var_0 )
{
if ( isdefined( var_0 ) )
thread maps\_utility::ai_delete_when_out_of_sight( var_0, 800 );
}
isdefined_and_alive( var_0 )
{
if ( !isdefined( var_0 ) )
return 0;
if ( !isalive( var_0 ) )
return 0;
if ( !var_0 maps\_vehicle::isvehicle() )
{
if ( var_0 maps\_utility::doinglongdeath() )
return 0;
}
return 1;
}
delete_if_player_cant_see_me()
{
self endon( "death" );
if ( !isdefined_and_alive( self ) )
return;
while ( maps\_utility::player_can_see_ai( self ) )
wait 0.15;
self delete();
}
spawn_ai_throttled_targetname( var_0, var_1, var_2 )
{
var_3 = getentarray( var_0, "targetname" );
var_4 = [];
foreach ( var_6 in var_3 )
{
var_7 = var_6 maps\_utility::spawn_ai( 1 );
var_4 = common_scripts\utility::array_add( var_4, var_7 );
wait( randomfloatrange( var_1, var_2 ) );
}
level notify( "done_throttled_spawn" );
return var_4;
}
spawn_ai_from_spawner_send_to_volume( var_0, var_1, var_2 )
{
var_3 = [];
var_0.count = var_1;
for ( var_4 = 0; var_4 < var_1; var_4++ )
{
var_5 = var_0 stalingradspawn();
wait 0.05;
var_5 setgoalvolumeauto( var_2 );
var_5 laserforceon();
var_3 = common_scripts\utility::add_to_array( var_3, var_5 );
}
return var_3;
}
do_nags_til_flag( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7 )
{
if ( common_scripts\utility::flag( var_0 ) || common_scripts\utility::flag( "waterfall_ambush_begin" ) || common_scripts\utility::flag( "stream_backend_start" ) )
return;
level endon( var_0 );
level endon( "waterfall_ambush_begin" );
level endon( "stream_backend_start" );
var_8 = [];
var_8[0] = var_3;
if ( isdefined( var_4 ) )
var_8[1] = var_4;
if ( isdefined( var_5 ) )
var_8[2] = var_5;
if ( isdefined( var_6 ) )
var_8[3] = var_6;
if ( isdefined( var_7 ) )
var_8[4] = var_7;
while ( !common_scripts\utility::flag( var_0 ) && !common_scripts\utility::flag( "waterfall_ambush_begin" ) )
{
foreach ( var_10 in var_8 )
{
maps\jungle_ghosts_jungle::do_story_line( var_10 );
wait( randomintrange( var_1, var_2 ) );
}
wait 0.15;
}
}
battle_chatter_controller_friendlies()
{
level endon( "field_halfway" );
for (;;)
{
maps\_utility::battlechatter_off( "allies" );
if ( !common_scripts\utility::flag( "ambush_open_fire" ) )
common_scripts\utility::flag_wait_any( "_stealth_spotted", "ambush_open_fire" );
else
common_scripts\utility::flag_wait( "_stealth_spotted" );
maps\_utility::battlechatter_on( "allies" );
if ( common_scripts\utility::flag( "ambush_open_fire" ) )
common_scripts\utility::flag_wait( "field_entrance" );
common_scripts\utility::flag_waitopen( "_stealth_spotted" );
common_scripts\utility::waitframe();
}
}
squad_manager( var_0 )
{
var_1 = var_0.size;
for (;;)
{
var_0 = maps\_utility::array_removedead_or_dying( var_0 );
if ( var_0.size != var_1 )
{
if ( !isdefined( var_0["leader"] ) )
{
foreach ( var_3 in var_0 )
{
if ( isdefined_and_alive( var_3 ) )
{
var_3 notify( "elected_squad_leader" );
var_0["leader"] = var_3;
var_3 thread squad_leader_logic();
common_scripts\utility::array_thread( var_0, ::reset_my_leader, var_3 );
break;
}
}
}
if ( var_0.size == 0 )
return;
var_1 = var_0.size;
}
wait 0.5;
}
}
create_a_squad_from_spawner( var_0, var_1, var_2 )
{
var_3 = var_2;
var_0.count = var_3;
var_4 = undefined;
for ( var_5 = 0; var_5 < var_3; var_5++ )
{
if ( !isdefined( var_4 ) )
{
var_6 = var_0 stalingradspawn();
wait 0.05;
var_1["leader"] = var_6;
var_6 thread squad_leader_logic();
var_1 = common_scripts\utility::add_to_array( var_1, var_6 );
wait 1.5;
var_4 = 1;
continue;
}
var_6 = var_0 stalingradspawn();
wait 0.05;
var_6 thread squad_member_logic( var_1 );
var_1 = common_scripts\utility::add_to_array( var_1, var_6 );
}
return var_1;
}
reset_my_leader( var_0 )
{
self.leader = var_0;
}
squad_leader_logic()
{
self laserforceon();
self.baseaccuracy = 3;
maps\_utility::disable_long_death();
while ( isalive( self ) )
{
self.goalradius = randomintrange( 800, 1200 );
self setgoalpos( level.player.origin );
wait( randomintrange( 3, 5 ) );
}
}
squad_member_logic( var_0 )
{
self endon( "death" );
self laserforceon();
maps\_utility::disable_long_death();
self endon( "elected_squad_leader" );
self.fixednode = 0;
self.goalradius = randomintrange( 200, 500 );
self.leader = var_0["leader"];
for (;;)
{
if ( isdefined( self.leader ) )
{
self setgoalpos( self.leader.origin );
wait( randomfloatrange( 2.5, 3 ) );
continue;
}
iprintln( "squad member has no leader to follow" );
wait 1;
}
}
player_swim_think()
{
level.player setblurforplayer( 6, 0.2 );
wait 0.3;
thread enable_player_swim();
level.player setblurforplayer( 0, 0.8 );
level.player maps\_utility::player_speed_percent( 20, 0.1 );
common_scripts\utility::flag_wait( "player_out_of_water" );
}
enable_player_swim()
{
setsaveddvar( "hud_showStance", "0" );
setsaveddvar( "compass", "0" );
level.player_view_pitch_down = getdvar( "player_view_pitch_down" );
level.bg_viewbobmax = getdvar( "bg_viewBobMax" );
level.player_sprintcamerabob = getdvar( "player_sprintCameraBob" );
setsaveddvar( "player_view_pitch_down", 5 );
setsaveddvar( "bg_viewBobMax", 0 );
level.player allowstand( 1 );
level.player allowcrouch( 0 );
level.player allowprone( 0 );
level.player allowjump( 0 );
level.player disableweapons();
level.player allowsprint( 0 );
level.player allowmelee( 0 );
level.player setstance( "stand" );
}
player_water_wade()
{
for (;;)
{
common_scripts\utility::flag_wait( "player_is_moving" );
childthread player_water_wade_sounds();
childthread player_water_wade_speed();
wait 0.1;
common_scripts\utility::flag_waitopen( "player_is_moving" );
level.player notify( "stop_water_sounds" );
}
}
player_water_wade_sounds()
{
level.player endon( "stop_water_sounds" );
wait( randomfloatrange( 0, 1 ) );
for (;;)
{
level.player maps\_utility::play_sound_on_entity( "scn_prague_swim_slow_plr" );
wait( randomfloatrange( 0.5, 1.5 ) );
}
}
player_water_wade_speed()
{
level endon( "player_swim_faster" );
level.player endon( "stop_water_sounds" );
while ( !common_scripts\utility::flag( "player_swim_faster" ) )
{
level.player thread maps\_utility::play_sound_on_entity( "scn_prague_swim_slow_plr" );
thread maps\_utility::player_speed_percent( 27, 1 );
wait 1;
thread maps\_utility::player_speed_percent( 18, 0.3 );
wait 0.5;
}
}
custom_waterfx( var_0, var_1 )
{
self endon( "death" );
if ( isdefined( var_0 ) )
{
common_scripts\utility::flag_assert( var_0 );
level endon( var_0 );
}
if ( !isdefined( var_1 ) )
var_1 = ( 0, 0, 0 );
for (;;)
{
wait( randomfloatrange( 0.15, 0.3 ) );
var_2 = self.origin + ( 0, 0, 150 );
var_3 = self.origin - ( 0, 0, 150 );
var_4 = bullettrace( var_2, var_3, 0, undefined );
if ( var_4["surfacetype"] != "water" )
continue;
var_5 = "water_movement";
if ( isplayer( self ) )
{
if ( distance( self getvelocity(), ( 0, 0, 0 ) ) < 5 )
var_5 = "water_stop";
}
else if ( isdefined( level._effect["water_" + self.a.movement] ) )
var_5 = "water_" + self.a.movement;
var_6 = common_scripts\utility::getfx( var_5 );
var_2 = var_4["position"] + var_1;
var_7 = ( 0, self.angles[1], 0 );
var_8 = anglestoforward( var_7 );
var_9 = anglestoup( var_7 );
playfx( var_6, var_2, var_9, var_8 );
}
}
enable_ai_swim()
{
self.animname = "generic";
maps\_utility::disable_cqbwalk();
maps\_utility::disable_sprint();
self stopanimscripted();
set_generic_idle_forever( "swim_idle" );
maps\_utility::set_moveplaybackrate( 1 );
maps\_utility::set_generic_run_anim( "swim_fast", 1 );
self pushplayer( 1 );
self.disableexits = 1;
self.disablearrivals = 1;
self.a.disablepain = 1;
self.ignoreall = 1;
thread custom_waterfx( "player_out_of_water", ( 0, 0, -0.5 ) );
thread ai_swim_sound();
maps\_utility::putgunaway();
}
ai_swim_sound()
{
self endon( "stop_swimming" );
childthread ai_swim_sound_idle();
for (;;)
{
self waittill( "moveanim", var_0 );
if ( var_0 == "ps_scn_prague_swim_slow_npc" || var_0 == "end" )
maps\_utility::play_sound_on_entity( "scn_prague_swim_slow_npc" );
wait 0.2;
}
}
ai_swim_sound_idle()
{
self endon( "stop_swimming" );
for (;;)
{
self waittill( "Special_idle", var_0 );
if ( var_0 == "ps_scn_prague_swim_idle_npc" || var_0 == "end" )
maps\_utility::play_sound_on_entity( "scn_prague_swim_idle_npc" );
wait 0.2;
}
}
set_generic_idle_forever( var_0 )
{
thread set_generic_idle_internal( var_0 );
}
set_generic_idle_internal( var_0 )
{
self endon( "death" );
self endon( "clear_idle_anim" );
for (;;)
{
maps\_utility::set_generic_idle_anim( var_0 );
self waittill( "clearing_specialIdleAnim" );
}
}
pitch_and_roll()
{
self endon( "stop_bob" );
self endon( "death" );
var_0 = self;
var_1 = ( 0, var_0.angles[1], 0 );
var_2 = 20;
if ( isdefined( var_0.script_max_left_angle ) )
var_2 = var_0.script_max_left_angle;
var_3 = var_2 * 0.5;
var_4 = 4;
if ( isdefined( var_0.script_duration ) )
var_4 = var_0.script_duration;
var_5 = var_4 * 0.5;
var_0 = undefined;
for (;;)
{
var_6 = ( randomfloatrange( var_3, var_2 ), 0, randomfloatrange( var_3, var_2 ) );
var_7 = randomfloatrange( var_5, var_4 );
self rotateto( var_1 + var_6, var_7, var_7 * 0.2, var_7 * 0.2 );
self waittill( "rotatedone" );
self rotateto( var_1 - var_6, var_7, var_7 * 0.2, var_7 * 0.2 );
self waittill( "rotatedone" );
}
}
stop_anim_on_damage_stealth( var_0 )
{
self endon( "death" );
level endon( "_stealth_spotted" );
self waittill( "damage" );
var_0 notify( "stop_loop" );
maps\_utility::anim_stopanimscripted();
}
stop_anim_on_spotted_or_chopper_leaves( var_0 )
{
self endon( "death" );
level common_scripts\utility::waittill_any( "_stealth_spotted", "stream_heli_out" );
var_0 notify( "stop_loop" );
maps\_utility::anim_stopanimscripted();
}
generic_ignore_on()
{
self.ignoreme = 1;
self.ignoreall = 1;
}
generic_ignore_off()
{
self.ignoreme = 0;
self.ignoreall = 0;
}
is_moving()
{
self endon( "death" );
var_0 = self.origin;
wait 0.2;
var_1 = self.origin;
if ( var_0 == var_1 )
return 0;
return 1;
}
hud_on( var_0 )
{
var_1 = 0;
var_2 = 1;
if ( !var_0 )
{
var_1 = 1;
var_2 = 0;
}
setsaveddvar( "compass", var_2 );
setsaveddvar( "ammoCounterHide", var_1 );
setsaveddvar( "actionSlotsHide", var_1 );
setsaveddvar( "hud_showStance", var_2 );
setsaveddvar( "hud_drawhud", var_2 );
}
waittill_x_passed( var_0 )
{
while ( level.player.origin[0] < var_0 )
common_scripts\utility::waitframe();
}
waittill_y_passed( var_0 )
{
while ( level.player.origin[1] < var_0 )
common_scripts\utility::waitframe();
}
enemy_weapons_force_use_init()
{
level.jg_enemy_smgs = [];
level.jg_enemy_smgs = common_scripts\utility::array_add( level.jg_enemy_smgs, "kriss+silencer_sp" );
level.jg_enemy_smgs = common_scripts\utility::array_add( level.jg_enemy_smgs, "microtar+silencer_sp" );
level.jg_enemy_ars = [];
level.jg_enemy_ars = common_scripts\utility::array_add( level.jg_enemy_ars, "cz805bren+silencer_sp" );
level.jg_enemy_ars = common_scripts\utility::array_add( level.jg_enemy_ars, "ak12+silencer_sp" );
level.jg_enemy_ars = common_scripts\utility::array_add( level.jg_enemy_ars, "honeybadger" );
level.jg_enemy_ars = common_scripts\utility::array_add( level.jg_enemy_ars, "sc2010+silencer_sp" );
}
enemy_weapons_force_use_silencer()
{
if ( !isdefined( self ) )
return;
if ( !isdefined( self.classname ) )
return;
self endon( "death" );
if ( self.classname == "actor_enemy_fed_army_smg_nohelmet" )
{
var_0 = common_scripts\utility::array_randomize( level.jg_enemy_smgs );
maps\_utility::forceuseweapon( var_0[0], "primary" );
}
if ( self.classname == "actor_enemy_fed_army_ar_nohelmet" )
{
var_0 = common_scripts\utility::array_randomize( level.jg_enemy_ars );
maps\_utility::forceuseweapon( var_0[0], "primary" );
}
}
friendly_jungle_stealth_color_behavior()
{
var_0["hidden"] = ::do_nothing;
var_0["spotted"] = ::do_nothing;
maps\_stealth_utility::stealth_color_state_custom( var_0 );
}
do_nothing()
{
}
music_start()
{
level endon( "_stealth_spotted" );
level endon( "stop_music_jg" );
wait 0.1;
thread music_stealth_tension_loop();
}
music_stealth_tension_loop()
{
level endon( "_stealth_spotted" );
level endon( "stop_tension_music_jg" );
level notify( "stop_stealth_music_jg" );
thread music_stealth_broken();
for (;;)
{
var_0 = "mus_jungle_tension";
if ( common_scripts\utility::flag( "second_distant_sat_launch" ) && !common_scripts\utility::flag( "to_grassy_field" ) )
var_0 = "mus_jungle_stealth";
else if ( common_scripts\utility::flag( "second_distant_sat_launch" ) && common_scripts\utility::flag( "to_grassy_field" ) )
var_0 = "mus_jungle_reveal";
if ( !common_scripts\utility::flag( "jungle_entrance" ) )
{
common_scripts\utility::flag_wait( "intro_lines" );
var_0 = "mus_jungle_tension_reveal";
}
music_play_jg( var_0, 4, 0, 1 );
common_scripts\utility::waitframe();
}
}
music_stealth_broken()
{
level endon( "stop_stealth_music_jg" );
level common_scripts\utility::waittill_any( "_stealth_spotted", "ambush_open_fire" );
level notify( "stop_tension_music_jg" );
var_0 = "mus_jungle_stealthbreak1";
if ( common_scripts\utility::cointoss() )
var_0 = "mus_jungle_stealthbreak2";
if ( common_scripts\utility::flag( "second_distant_sat_launch" ) && !common_scripts\utility::flag( "to_grassy_field" ) && !common_scripts\utility::flag( "player_in_ambush_position" ) )
{
maps\_utility::music_stop( 2 );
var_0 = "mus_jungle_chopper_crash_battle";
if ( common_scripts\utility::flag( "smaw_target_detroyed" ) )
wait 7;
}
var_1 = 0;
if ( common_scripts\utility::flag( "player_in_ambush_position" ) )
var_1 = 1;
music_play_jg( var_0, 0.5, 1, 0, var_1 );
if ( common_scripts\utility::flag( "intro_lines" ) )
{
while ( common_scripts\utility::flag( "_stealth_spotted" ) || common_scripts\utility::flag( "ambush_open_fire" ) && !common_scripts\utility::flag( "field_halfway" ) )
wait 1;
}
thread music_stealth_tension_loop();
}
music_tall_grass()
{
if ( !common_scripts\utility::flag( "_stealth_spotted" ) )
stop_music_jg( 0 );
var_0 = "mus_jungle_tall_grass_intro";
common_scripts\utility::flag_waitopen( "_stealth_spotted" );
thread music_play_jg( var_0, 1 );
thread music_stealth_broken();
}
music_escape_hot()
{
stop_music_jg( 0 );
var_0 = "mus_jungle_escape";
maps\_utility::music_play( var_0, 1 );
}
music_end_jump_stinger()
{
if ( !common_scripts\utility::flag( "choppers_saw_player" ) )
maps\_utility::music_stop( 4 );
else
{
if ( level.start_point != "escape_river" && level.start_point != "underwater" )
{
maps\_utility::music_crossfade( "mus_jungle_end_stinger", 0.5 );
return;
}
maps\_utility::music_play( "mus_jungle_end_stinger", 0.5 );
}
}
music_play_jg( var_0, var_1, var_2, var_3, var_4 )
{
level endon( "stop_music_jg" );
var_5 = maps\_utility::musiclength( var_0 );
var_6 = 15;
var_7 = 35;
if ( !isdefined( var_1 ) )
var_1 = 0.5;
if ( !isdefined( var_4 ) )
var_4 = 0;
if ( isdefined( var_3 ) && var_3 && common_scripts\utility::flag( "_stealth_spotted" ) )
return;
maps\_utility::music_play( var_0, var_1 );
if ( !isdefined( var_2 ) || !var_2 || var_4 )
wait( randomfloatrange( var_5 + var_6, var_5 + var_7 ) );
else
{
while ( common_scripts\utility::flag( "_stealth_spotted" ) || var_0 == "mus_jungle_chopper_crash_battle" && !common_scripts\utility::flag( "stream_clear" ) )
wait 1;
maps\_utility::music_stop( 4 );
wait 8;
}
}
stop_music_jg( var_0 )
{
level notify( "stop_music_jg" );
level notify( "stop_tension_music_jg" );
level notify( "stop_stealth_music_jg" );
if ( var_0 )
maps\_utility::music_stop( 4 );
}
set_death_quote( var_0 )
{
setdvar( "ui_deadquote", var_0 );
}
give_jg_achievement()
{
if ( !level.was_spotted )
level.player maps\_utility::player_giveachievement_wrapper( "LEVEL_9A" );
}
dialogue_stop()
{
level.hesh stopsounds();
level.merrick stopsounds();
level.alpha1 stopsounds();
level.alpha2 stopsounds();
common_scripts\utility::waitframe();
}