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

3673 lines
129 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
intro_track_player_gunfire()
{
level endon( "start_small_wreck" );
for (;;)
{
level.player waittill( "weapon_fired" );
if ( level.deadly_sharks.size > 0 )
{
wait 0.5;
level.deadly_sharks = maps\_utility::array_removedead( level.deadly_sharks );
level.deadly_sharks = common_scripts\utility::array_removeundefined( level.deadly_sharks );
var_0 = sortbydistance( level.deadly_sharks, level.player.origin );
foreach ( var_2 in var_0 )
{
if ( level.player maps\_utility::player_looking_at( var_2.origin, 0.8 ) && distance( var_2.origin, level.player.origin ) < 800 )
{
var_2 maps\ship_graveyard_util::shark_kill_player();
wait 1;
break;
}
}
}
wait 0.05;
}
}
tutorial_player_recover()
{
var_0 = common_scripts\utility::get_target_ent( "tutorial_dive_player_anim" );
level.player_rig = maps\_player_rig::get_player_rig();
level.player_rig.origin = level.player.origin;
level.player_rig.angles = level.player.angles;
var_1 = ( 0, 0, 48 );
var_2 = common_scripts\utility::spawn_tag_origin();
var_2.origin = level.player_rig.origin;
var_2.angles = level.player_rig.angles;
var_2 linkto( level.player_rig, "tag_player", var_1, ( 0, 0, 0 ) );
var_3 = spawn( "script_model", ( 0, 0, 0 ) );
var_3 setmodel( level.baker.model );
var_3.animname = "legs";
var_3 maps\_anim::setanimtree();
level.player playerlinktoabsolute( var_2, "tag_player" );
playfxontag( common_scripts\utility::getfx( "dive_in_bubbles_hand" ), level.player_rig, "j_wrist_le" );
playfxontag( common_scripts\utility::getfx( "dive_in_bubbles_hand" ), level.player_rig, "j_wrist_ri" );
playfxontag( common_scripts\utility::getfx( "dive_in_bubbles_feet" ), var_3, "J_Ankle_LE" );
playfxontag( common_scripts\utility::getfx( "dive_in_bubbles_feet" ), var_3, "J_Ankle_RI" );
common_scripts\utility::exploder( "dive_in" );
var_4 = getent( "start_boat", "targetname" );
var_4.script_max_left_angle = 1;
var_4 thread maps\ship_graveyard_surface::pitch_and_roll();
var_0 maps\_anim::anim_single( [ level.player_rig, var_3 ], "below_water_tutorial_dive" );
level.player unlink();
level.player_rig delete();
var_3 delete();
level.player enableweapons();
level.player givemaxammo( "aps_underwater+swim" );
if ( !maps\ship_graveyard_util::greenlight_check() )
{
wait 2;
thread maps\ship_graveyard_util::track_hint_down();
if ( level.console || level.player usinggamepad() )
thread maps\_utility::display_hint_timeout( "hint_down_gamepad", 4 );
else if ( maps\_utility::is_command_bound( "+togglecrouch" ) )
thread maps\_utility::display_hint_timeout( "hint_down_crouch", 4 );
else if ( maps\_utility::is_command_bound( "+stance" ) )
thread maps\_utility::display_hint_timeout( "hint_down_stance", 4 );
else if ( maps\_utility::is_command_bound( "+movedown" ) )
thread maps\_utility::display_hint_timeout( "hint_down_hold_crouch", 4 );
else
thread maps\_utility::display_hint_timeout( "hint_down_crouch", 4 );
}
maps\_utility::trigger_wait_targetname( "exit_tiny_cave" );
maps\_utility::autosave_by_name( "intro" );
maps\_utility::smart_radio_dialogue( "shipg_bkr_thisway" );
maps\_utility::delaythread( 0.5, maps\_utility::smart_radio_dialogue, "shipg_bkr_5klicks" );
maps\_utility::trigger_wait_targetname( "tutorial_hint_up" );
}
intro_dialgue()
{
}
baker_path_to_wreck()
{
var_0 = common_scripts\utility::get_target_ent( "baker_start_path" );
wait 1;
level.baker maps\_utility::follow_path_and_animate( var_0 );
common_scripts\utility::flag_set( "baker_at_wreck" );
}
#using_animtree("generic_human");
wreck_reveal_spotted( var_0 )
{
level endon( "entering_small_wreck" );
common_scripts\utility::flag_wait( "_stealth_spotted" );
level.baker.ignoreall = 0;
var_1 = getnode( "baker_wreck_approach_spotted", "script_noteworthy" );
level.baker setgoalnode( var_1 );
common_scripts\utility::flag_set( "_stealth_spotted_punishment" );
common_scripts\utility::flag_set( "spotted_at_wreck" );
thread maps\_utility::smart_radio_dialogue_interrupt( "shipg_bkr_ontous" );
wait 1;
maps\_utility::array_spawn_targetname( "wreck_reveal_backup" );
common_scripts\utility::flag_clear( "_stealth_spotted_punishment" );
wait 1;
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_droppingin" );
thread wreck_reveal_spotted_ai_swarm();
wait 3;
level waittill( "never" );
var_0 thread maps\ship_graveyard_util::boat_shoot_entity( level.player, "entering_small_wreck" );
var_2 = common_scripts\utility::get_target_ent( "wreck_approach_dam_trig" );
for (;;)
{
var_2 waittill( "trigger", var_3 );
if ( var_3 == level.player )
break;
}
var_0 notify( "stop_shooting" );
var_4 = %ship_graveyard_boat_death_a;
var_5 = common_scripts\utility::get_target_ent( "wreck_approach_boat_shooter" );
var_6 = var_5 maps\_utility::spawn_ai( 1 );
var_6.origin = ( var_5.origin[0], var_5.origin[1], level.water_level_z + 5 );
common_scripts\utility::waitframe();
var_7 = getanimlength( var_4 );
var_8 = common_scripts\utility::get_target_ent( "wreck_approach_boat_shooter_fx" );
var_6 thread maps\_utility::magic_bullet_shield();
var_6.forceragdollimmediate = 1;
var_6.skipdeathanim = 1;
playfxontag( common_scripts\utility::getfx( "underwater_object_trail" ), var_6, "tag_origin" );
var_5 thread maps\_anim::anim_generic( var_6, "death_boat_A" );
wait 1.5;
playfx( common_scripts\utility::getfx( "jump_into_water_splash" ), var_8.origin );
thread common_scripts\utility::play_sound_in_space( "enemy_water_splash", var_8.origin );
var_5 waittill( "death_boat_A" );
var_9 = var_6 common_scripts\utility::spawn_tag_origin();
var_6 linkto( var_9, "tag_origin" );
var_10 = getweaponmodel( var_6.weapon );
var_11 = var_6.weapon;
if ( isdefined( var_10 ) )
{
var_6 detach( var_10, "tag_weapon_right" );
var_8 = var_6 gettagorigin( "tag_weapon_right" );
var_12 = var_6 gettagangles( "tag_weapon_right" );
var_13 = spawn( "script_model", ( 0, 0, 0 ) );
var_13 setmodel( var_10 );
var_13.angles = var_12;
var_13.origin = var_8;
var_13 physicslaunchclient( var_13.origin, ( 0, 0, 0 ) );
}
var_9 thread maps\_anim::anim_generic_loop( var_6, "death_boat_A_loop" );
var_14 = bullettrace( var_6.origin - ( 0, 0, 200 ), var_6.origin - ( 0, 0, 6000 ), 0, var_6 );
var_15 = var_14["position"];
var_15 = ( var_15[0], var_15[1], var_15[2] + 50 );
var_9 maps\ship_graveyard_util::moveto_speed( var_15, 100, 0, 0 );
var_6 maps\_utility::stop_magic_bullet_shield();
var_6 startragdoll();
var_6 unlink();
var_9 notify( "stop_loop" );
wait 0.1;
var_9 delete();
wait 0.5;
stopfxontag( common_scripts\utility::getfx( "underwater_object_trail" ), var_6, "tag_origin" );
var_6 kill();
}
wreck_reveal_spotted_ai_swarm()
{
var_0 = getaiarray( "axis" );
while ( var_0.size > 0 )
{
if ( var_0.size <= 3 )
{
var_0 = sortbydistance( var_0, level.player.origin );
var_1 = var_0[var_0.size - 1];
var_1 ai_go_to_player();
var_0 = getaiarray( "axis" );
continue;
}
wait 0.05;
}
}
ai_go_to_player()
{
self endon( "death" );
self.goalradius = 300;
self setgoalentity( level.player );
self waittill( "death" );
}
sonar_ping( var_0 )
{
var_1 = common_scripts\utility::spawn_tag_origin();
var_1 linkto( self, "tag_origin", ( 0, 0, -80 ), ( 0, 0, 0 ) );
playfxontag( common_scripts\utility::getfx( "sonar_ping_light" ), var_1, "tag_origin" );
playfxontag( common_scripts\utility::getfx( "sonar_ping_distortion" ), var_1, "tag_origin" );
wait 0.1;
if ( isdefined( var_0 ) )
{
var_2 = "";
var_2 = "sonar_ping_dist_" + var_0;
maps\_utility::play_sound_on_entity( var_2 );
}
else
maps\_utility::play_sound_on_entity( "sonar_ping_dist_01" );
var_1 delete();
}
boat_triggers_spotted()
{
level endon( "clear_to_enter_wreck" );
var_0 = common_scripts\utility::get_target_ent( "wreck_approach_dam_trig" );
for (;;)
{
var_0 waittill( "trigger", var_1 );
if ( var_1 == level.player )
break;
}
common_scripts\utility::flag_set( "_stealth_spotted" );
}
wreck_zodiac_event()
{
level.zodiac_b = maps\_vehicle::spawn_vehicle_from_targetname( "wreck_zodiac" );
var_0 = level.zodiac_b;
var_1 = maps\_vehicle::spawn_vehicle_from_targetname( "wreck_zodiac_dropoff" );
common_scripts\utility::flag_wait( "start_small_wreck" );
thread boat_triggers_spotted();
thread wreck_reveal_spotted( var_1 );
common_scripts\utility::flag_wait( "approaching_wreck" );
maps\_utility::array_spawn_targetname( "a1_patrol_2" );
var_1 vehicle_turnengineoff();
var_0 vehicle_turnengineoff();
var_1 thread maps\_utility::play_sound_on_entity( "scn_shipg_sm_wreck_zod1" );
var_0 thread maps\_utility::play_sound_on_entity( "scn_shipg_sm_wreck_zod2" );
var_0 thread maps\_vehicle::gopath();
thread zodiac_arrive( var_1 );
common_scripts\utility::flag_wait( "baker_at_wreck" );
wait 1;
common_scripts\utility::flag_wait( "drop_off_guys" );
maps\ship_graveyard_fx::trigger_fish_school( "fish_school_wreck_approach", "start" );
thread maps\ship_graveyard_util::sardines_path_sound_no_trigger( "fish_school_wreck_approach", "scn_fish_swim_away_wreck" );
wait 0.5;
var_1 thread sonar_ping( "04" );
wait 1.5;
maps\_utility::array_spawn_targetname( "a1_patrol_1" );
common_scripts\utility::flag_set( "wreck_patrol_in" );
thread too_close_to_guys();
thread too_close_to_boat();
}
zodiac_arrive( var_0 )
{
var_0 notify( "newpath" );
var_0.animname = "missile_boat";
var_1 = common_scripts\utility::get_target_ent( "wreck_approach_boat_arrival" );
var_1 maps\_anim::anim_single_solo( var_0, "missile_boat_arrive" );
common_scripts\utility::flag_set( "drop_off_guys" );
var_0 notify( "reached_end_node" );
var_1 thread maps\_anim::anim_loop_solo( var_0, "missile_boat_idle" );
}
too_close_to_guys()
{
level endon( "wreck_approach_guys_dead" );
level endon( "_stealth_spotted" );
maps\_utility::trigger_wait_targetname( "wreck_approach_too_close" );
var_0 = getaiarray( "axis" );
var_0 = sortbydistance( var_0, level.player.origin );
var_1 = var_0[0];
var_1 setgoalpos( level.player.origin );
}
too_close_to_boat()
{
level endon( "clear_to_enter_cave" );
level endon( "_stealth_spotted" );
level endon( "clear_to_enter_wreck" );
maps\_utility::trigger_wait_targetname( "wreck_approach_close_to_boat" );
var_0 = getaiarray( "axis" );
var_0 = sortbydistance( var_0, level.player.origin );
common_scripts\utility::flag_set( "_stealth_spotted" );
var_1 = var_0[0];
var_1 setgoalpos( level.player.origin );
}
baker_approach()
{
level endon( "_stealth_spotted" );
level.zodiac_b maps\_utility::delaythread( 0, ::sonar_ping, "01" );
wait 1.4;
maps\ship_graveyard_util::baker_glint_off();
level.baker.ignoreall = 1;
maps\_utility::smart_radio_dialogue( "shipg_bkr_enemysonar" );
thread maps\_utility::display_hint( "hint_flashlight" );
wait 0.3;
level.zodiac_b maps\_utility::delaythread( 0, ::sonar_ping, "02" );
wait 0.6;
maps\_utility::smart_radio_dialogue( "shipg_bkr_easy" );
wait 1.0;
level.zodiac_b maps\_utility::delaythread( 0, ::sonar_ping, "03" );
wait 0.7;
maps\_utility::smart_radio_dialogue( "shipg_bkr_hugtheground" );
maps\_utility::smart_radio_dialogue( "shipg_bkr_maskoursig" );
common_scripts\utility::flag_wait( "approaching_wreck" );
common_scripts\utility::flag_wait( "baker_at_wreck" );
wait 0.8;
maps\_utility::smart_radio_dialogue( "shipg_bkr_holdup" );
wait 1;
maps\_utility::smart_radio_dialogue( "shipg_bkr_boatpatrol" );
maps\_utility::autosave_stealth_silent();
level.baker maps\ship_graveyard_util::dyn_swimspeed_disable();
common_scripts\utility::flag_wait( "drop_off_guys" );
level endon( "wreck_approach_guys_dead" );
wait 2.7;
maps\_utility::smart_radio_dialogue( "shipg_bkr_gotcompany" );
wait 0.8;
maps\_utility::smart_radio_dialogue( "shipg_bkr_themseparate" );
wait 1.6;
maps\_utility::smart_radio_dialogue( "shipg_bkr_ok" );
wait 0.5;
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_staylow" );
wait 0.5;
maps\_utility::autosave_stealth();
level.baker maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "baker_approach_wreck" ) );
maps\ship_graveyard_util::baker_glint_off();
level.baker maps\_utility::delaythread( 2, maps\_utility::set_ignoreall, 0 );
maps\_utility::smart_radio_dialogue( "shipg_bkr_inposition" );
wait 0.9;
maps\_utility::smart_radio_dialogue( "shipg_bkr_aseffective" );
wait 1.2;
maps\_utility::smart_radio_dialogue( "shipg_bkr_weaponsfree" );
}
baker_wreck_cleanup()
{
level endon( "start_stealth_area_1" );
common_scripts\utility::flag_wait( "drop_off_guys" );
thread wreck_jumper_watcher();
maps\_utility::delaythread( 5, maps\ship_graveyard_util::paired_death_wait_flag, "wreck_approach_guys_dead" );
common_scripts\utility::flag_wait( "wreck_approach_guys_dead" );
wait 0.7;
common_scripts\utility::flag_wait( "wreck_jumpers_alive" );
common_scripts\utility::flag_waitopen( "_stealth_spotted" );
level endon( "_stealth_spotted" );
maps\ship_graveyard_util::baker_glint_on();
maps\ship_graveyard_util::baker_noncombat();
maps\_utility::smart_radio_dialogue_interrupt( "shipg_bkr_nicelydone" );
common_scripts\utility::flag_set( "clear_to_enter_wreck" );
level.baker thread maps\ship_graveyard_util::dyn_swimspeed_enable();
maps\_utility::smart_radio_dialogue( "shipg_hsh_letsmovethruthe" );
wait 0.3;
maps\_utility::smart_radio_dialogue( "shipg_bkr_distancefromboat" );
wait 0.3;
maps\_utility::smart_radio_dialogue( "shipg_bkr_moreattention" );
}
wreck_jumper_watcher()
{
level endon( "start_stealth_area_1" );
common_scripts\utility::flag_wait( "wreck_patrol_in" );
while ( level.total_jumpers.size )
{
level.total_jumpers = maps\_utility::array_removedead_or_dying( level.total_jumpers );
common_scripts\utility::waitframe();
}
common_scripts\utility::flag_set( "wreck_jumpers_alive" );
}
a1_patrol_1_setup()
{
self endon( "death" );
self endon( "_stealth_spotted" );
if ( isdefined( self.script_noteworthy ) && self.script_noteworthy == "jumper" )
self waittill( "done_jumping_in" );
else
{
thread maps\ship_graveyard_util::paired_death_think( level.baker );
maps\ship_graveyard_util::teleport_to_target();
return;
}
var_0 = common_scripts\utility::get_target_ent();
var_0 = var_0 common_scripts\utility::get_target_ent();
if ( isdefined( self.script_parameters ) && issubstr( self.script_parameters, "deleteme" ) )
{
if ( maps\_utility::ent_flag( "_stealth_spotted" ) )
return;
self.goalradius = 64;
self.goalheight = 64;
maps\_utility::follow_path_and_animate( var_0, 0 );
wait 2;
while ( level.player maps\_utility::player_looking_at( self.origin + ( 0, 0, 50 ), 0.7 ) )
common_scripts\utility::waitframe();
self delete();
}
else
{
thread maps\ship_graveyard_util::paired_death_think( level.baker );
if ( maps\_utility::ent_flag( "_stealth_spotted" ) )
return;
maps\ship_graveyard_util::stealth_idle_reach( var_0 );
}
}
baker_wait_in_front_of_wreck()
{
if ( common_scripts\utility::flag( "player_close_to_small_wreck" ) )
return;
level endon( "player_close_to_small_wreck" );
while ( !common_scripts\utility::flag( "player_close_to_small_wreck" ) )
{
level.baker maps\_utility::waittill_player_lookat_for_time( 0.5, 0.8 );
if ( distance( level.player.origin, level.baker.origin ) < 250 )
break;
wait 0.1;
}
}
baker_enter_wreck()
{
level endon( "stop_for_e3" );
common_scripts\utility::flag_wait_either( "clear_to_enter_wreck", "player_close_to_small_wreck" );
if ( common_scripts\utility::flag( "_stealth_spotted" ) )
return;
level endon( "_stealth_spotted" );
thread baker_wreck_dialogue();
level.baker pushplayer( 1 );
var_0 = common_scripts\utility::get_target_ent( "friendly_follow_2" );
level.baker setgoalpos( var_0.origin );
level.baker.ignoreall = 1;
baker_wait_in_front_of_wreck();
var_0 = var_0 common_scripts\utility::get_target_ent();
level.baker maps\_utility::follow_path_and_animate( var_0 );
var_1 = common_scripts\utility::get_target_ent( "baker_small_wreck_cover_l" );
var_1 maps\_anim::anim_generic_reach( level.baker, "swimming_aiming_move_to_cover_l1" );
common_scripts\utility::flag_set( "baker_at_small_wreck" );
var_2 = 0;
if ( !common_scripts\utility::flag( "sdv_passed" ) && !common_scripts\utility::flag( "salvage_baloon_goes" ) )
{
var_2 = 1;
var_1 maps\_anim::anim_generic( level.baker, "swimming_aiming_move_to_cover_l1" );
var_1.origin = level.baker.origin;
var_1.angles = level.baker.angles;
level.baker.my_animnode = var_1;
var_1 thread maps\_anim::anim_generic_loop( level.baker, "swimming_cover_l1_idle" );
common_scripts\utility::flag_wait( "sdv_passed" );
level.baker maps\_utility::disable_exits();
var_1 notify( "stop_loop" );
level.baker thread maps\ship_graveyard_util::dyn_swimspeed_disable();
var_1 thread maps\_anim::anim_generic_run( level.baker, "swimming_cover_l1_exit_r180" );
}
level.baker thread maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "friendly_follow_3" ), 250 );
if ( var_2 )
{
var_1 waittill( "swimming_cover_l1_exit_r180" );
wait 0.1;
level.baker maps\_utility::enable_exits();
}
}
baker_wreck_dialogue()
{
level endon( "stop_for_e3" );
if ( common_scripts\utility::flag( "_stealth_spotted" ) )
return;
level endon( "_stealth_spotted" );
common_scripts\utility::flag_wait( "small_wreck_sdv_spawned" );
common_scripts\utility::flag_wait_or_timeout( "baker_at_small_wreck", 1 );
wait 0.2;
maps\_utility::smart_radio_dialogue( "shipg_bkr_slowdown" );
wait 1.5;
if ( !common_scripts\utility::flag( "sdv_passed" ) )
{
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_stayyydownstaydown" );
common_scripts\utility::flag_wait( "sdv_passed" );
}
thread greenlight_skip();
if ( !common_scripts\utility::flag( "salvage_baloon_goes" ) )
{
wait 0.2;
thread maps\_utility::smart_radio_dialogue_interrupt( "shipg_bkr_salvaging" );
}
}
wreck_hint_up()
{
if ( common_scripts\utility::flag( "_stealth_spotted" ) || level.start_point == "old_e3" )
return;
level endon( "_stealth_spotted" );
common_scripts\utility::flag_wait( "clear_to_enter_wreck" );
level endon( "entering_small_wreck" );
maps\_utility::trigger_wait_targetname( "trigger_hint_up" );
if ( maps\ship_graveyard_util::greenlight_check() )
return;
thread maps\ship_graveyard_util::track_hint_up();
if ( level.console || level.player usinggamepad() )
thread maps\_utility::display_hint_timeout( "hint_up_gamepad", 4 );
else
thread maps\_utility::display_hint_timeout( "hint_up_stand", 4 );
}
wreck_spotted_reaction()
{
level endon( "start_stealth_area_1" );
level endon( "stop_for_e3" );
common_scripts\utility::flag_wait( "_stealth_spotted" );
if ( !common_scripts\utility::flag( "spotted_at_wreck" ) )
thread maps\_utility::smart_radio_dialogue_interrupt( "shipg_bkr_ontous" );
level.baker stopanimscripted();
level.baker notify( "stop_loop" );
if ( isdefined( level.baker.my_animnode ) )
level.baker.my_animnode notify( "stop_loop" );
common_scripts\utility::flag_waitopen( "_stealth_spotted" );
common_scripts\utility::flag_set( "move_to_stealth_1" );
if ( maps\ship_graveyard_util::greenlight_check() )
greenlight_skip();
maps\_utility::smart_radio_dialogue( "shipg_bkr_areaclear" );
wait 0.5;
maps\_utility::smart_radio_dialogue( "shipg_bkr_onme" );
}
sdv_follow_spotted_react()
{
self endon( "death" );
wait 5;
common_scripts\utility::flag_wait( "_stealth_spotted" );
maps\_vehicle::vehicle_unload();
}
wreck_cargo_surprise()
{
level endon( "_stealth_spotted" );
level endon( "stop_for_e3" );
var_0 = common_scripts\utility::get_target_ent( "baloon_rise_1" );
common_scripts\utility::flag_wait( "entering_small_wreck" );
common_scripts\utility::noself_delaycall( 3, ::playfx, common_scripts\utility::getfx( "bubble_burst_large" ), var_0.origin - ( 0, 32, 32 ) );
common_scripts\utility::flag_wait( "salvage_baloon_goes" );
musicstop( 4 );
maps\_utility::delaythread( 1.15, maps\_utility::smart_radio_dialogue, "shipg_bkr_hold2" );
var_1 = maps\_utility::spawn_targetname( "baloon_guy" );
var_1 setgoalpos( var_1.origin );
var_1 thread melee_on_spotted();
var_1.ignoreme = 1;
var_1.moveplaybackrate = 0.75;
var_1.movetransitionrate = var_1.moveplaybackrate;
thread common_scripts\utility::play_sound_in_space( "scn_shipg_balloon_inflate", var_0.origin );
common_scripts\utility::noself_delaycall( 0.15, ::playfx, common_scripts\utility::getfx( "bubble_burst_large" ), var_0.origin - ( 0, 32, 32 ) );
var_0 thread maps\ship_graveyard_util::salvage_cargo_rise( 38 );
wait 1;
var_2 = var_1 common_scripts\utility::get_target_ent();
var_1.goalradius = 32;
var_1.goalheight = 32;
var_1 forceteleport( var_2.origin, var_2.angles );
var_2 = var_2 common_scripts\utility::get_target_ent();
var_1 thread maps\_utility::follow_path_and_animate( var_2, 0 );
level.baker.oldbaseaccuracy = level.baker.baseaccuracy;
var_1 thread baker_quip_on_death();
var_1 thread delete_on_path_end();
var_1 thread maps\_utility::flag_on_death( "move_to_stealth_1" );
var_1.health = 1;
var_1 endon( "death" );
var_1 common_scripts\utility::waittill_notify_or_timeout( "kill_me", 16.5 );
common_scripts\utility::flag_set( "move_to_stealth_1" );
}
melee_on_spotted()
{
self endon( "death" );
maps\_utility::ent_flag_wait( "_stealth_spotted" );
self waittill( "stealth_change_values" );
common_scripts\utility::waitframe();
maps\ship_graveyard_util::enemy_attempt_melee();
}
shark_moment( var_0 )
{
var_1 = common_scripts\utility::get_target_ent( "shark_attack_1_node" );
var_2 = maps\_utility::spawn_anim_model( "shark", ( 0, 0, 0 ) );
level.deadly_sharks = common_scripts\utility::array_add( level.deadly_sharks, var_2 );
var_0.animname = "generic";
thread shark_attack_fx( var_0, var_2 );
var_1 maps\_anim::anim_single( [ var_0, var_2 ], "shark_moment" );
var_0 delete();
var_2 delete();
common_scripts\utility::flag_set( "move_to_stealth_1" );
}
shark_attack_fx( var_0, var_1 )
{
wait 8.9;
common_scripts\utility::flag_set( "no_shark_heartbeat" );
thread common_scripts\utility::play_sound_in_space( "scn_shark_bite_flesh", var_0 gettagorigin( "j_knee_ri" ) );
playfx( common_scripts\utility::getfx( "swim_ai_blood_impact" ), var_0 gettagorigin( "j_knee_ri" ) );
playfxontag( common_scripts\utility::getfx( "swim_ai_death_blood" ), var_0, "j_knee_ri" );
maps\_utility::delaythread( 0.5, common_scripts\utility::play_sound_in_space, "scn_shark_bite_flesh", var_0 gettagorigin( "j_knee_ri" ) );
maps\_utility::delaythread( 0.9, common_scripts\utility::play_sound_in_space, "scn_shark_bite_flesh", var_0 gettagorigin( "j_knee_ri" ) );
maps\_utility::delaythread( 1.6, common_scripts\utility::play_sound_in_space, "scn_shark_bite_flesh", var_0 gettagorigin( "j_knee_ri" ) );
}
transition_to_stealth_1()
{
level endon( "start_stealth_area_2" );
level endon( "stop_for_e3" );
common_scripts\utility::flag_wait( "move_to_stealth_1" );
thread transition_to_stealth_1_glint_off();
level.baker thread maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "baker_stealth_1_path" ) );
maps\_utility::autosave_stealth();
}
transition_to_stealth_1_glint_off()
{
maps\ship_graveyard_util::baker_glint_on();
var_0 = getnode( "trans1_eop", "script_noteworthy" );
var_0 waittill( "trigger" );
maps\ship_graveyard_util::baker_glint_off();
}
baker_quip_on_death()
{
var_0 = common_scripts\utility::waittill_any_return( "death", "kill_me" );
if ( !maps\ship_graveyard_util::greenlight_check() )
{
level.baker.baseaccuracy = level.baker.oldbaseaccuracy;
if ( isdefined( self ) )
wait 1.5;
var_1 = getaiarray( "axis" );
if ( var_1.size == 0 )
{
maps\_utility::smart_radio_dialogue( "shipg_bkr_closecall" );
wait 0.7;
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_thisway" );
wait 0.5;
}
maps\ship_graveyard_util::baker_noncombat();
}
common_scripts\utility::flag_set( "move_to_stealth_1" );
}
delete_on_path_end()
{
self waittill( "path_end_reached" );
var_0 = level.player maps\_utility::player_looking_at( self.origin + ( 0, 0, -100 ), 0.7 );
if ( !var_0 )
self delete();
else
self notify( "kill_me" );
common_scripts\utility::flag_set( "move_to_stealth_1" );
}
stealth_1_zodiac_setup()
{
if ( !isdefined( level.stealth_1_zodiac_sounds ) )
{
level.stealth_1_zodiac_sounds = [ "scn_shipg_stealth_1_zod1", "scn_shipg_stealth_1_zod2" ];
level.stealth_1_zodiac_soundindex = 0;
}
self vehicle_turnengineoff();
thread maps\_utility::play_sound_on_entity( level.stealth_1_zodiac_sounds[level.stealth_1_zodiac_soundindex] );
level.stealth_1_zodiac_soundindex = level.stealth_1_zodiac_soundindex + 1;
}
stealth_1_encounter()
{
level.baker.ignoreall = 1;
var_0 = maps\_utility::array_spawn_targetname( "stealth_1_guys" );
common_scripts\utility::array_thread( var_0, maps\ship_graveyard_util::teleport_to_target );
common_scripts\utility::flag_wait( "stealth_1_engage" );
wait 1;
level.baker.ignoreall = 0;
var_1 = maps\_utility::spawn_targetname( "stealth_1_jumper" );
var_0 = common_scripts\utility::array_add( var_0, var_1 );
level endon( "start_stealth_area_2" );
while ( getaiarray( "axis" ).size > 0 )
wait 0.05;
level notify( "stealth_1_done" );
wait 1;
maps\ship_graveyard_util::baker_noncombat();
maps\_utility::smart_radio_dialogue( "shipg_bkr_clear" );
thread baker_move_to_stealth_2();
thread move_to_stealth_2_dialogue();
}
sdv_follow_2_passby_audio()
{
maps\_utility::play_sound_on_entity( "scn_shipg_sub_by_01" );
}
sdv_stealth_2_sub_1_passby_audio()
{
maps\_utility::play_sound_on_entity( "scn_shipg_sub_by_02" );
}
sdv_stealth_2_sub_2_passby_audio()
{
maps\_utility::play_sound_on_entity( "scn_shipg_sub_by_03" );
}
baker_move_to_stealth_2()
{
maps\ship_graveyard_util::baker_glint_on();
thread stealth_2_light_off();
setsaveddvar( "player_swimSpeed", 85 );
level.baker.pathrandompercent = 0;
level.baker.goalradius = 128;
level.baker.moveplaybackrate = 1.15;
level.baker.movetransitionrate = level.baker.moveplaybackrate;
level.baker thread maps\ship_graveyard_util::dyn_swimspeed_enable( 100 );
level.baker.ignoreall = 1;
level.baker maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "baker_stealth_2_path" ) );
level.baker.ignoreall = 0;
level.baker maps\ship_graveyard_util::dyn_swimspeed_disable();
setsaveddvar( "player_swimSpeed", 75 );
maps\ship_graveyard_util::baker_glint_off();
}
stealth_2_light_off()
{
var_0 = common_scripts\utility::getstruct( "rounding_corner", "script_noteworthy" );
var_0 waittill( "trigger" );
maps\ship_graveyard_util::baker_glint_off();
}
move_to_stealth_2_dialogue()
{
wait 0.5;
maps\_utility::smart_radio_dialogue( "shipg_bkr_moveup" );
wait 5.5;
maps\_utility::smart_radio_dialogue( "shipg_bkr_rallypoint" );
wait 0.5;
maps\_utility::smart_radio_dialogue( "shipg_orb_doubletimeit" );
wait 0.5;
maps\_utility::smart_radio_dialogue( "shipg_hsh_rogerthat" );
}
stealth_1_spotted_cleanup()
{
level endon( "stealth_1_done" );
common_scripts\utility::flag_wait( "_stealth_spotted" );
common_scripts\utility::waitframe();
var_0 = ( 1683, -60695, 519 );
var_1 = getaiarray( "axis" );
foreach ( var_3 in var_1 )
{
if ( distance2d( var_3.origin, var_0 ) < 700 )
var_3 kill();
}
}
stealth_1_dialogue()
{
common_scripts\utility::flag_wait( "move_to_stealth_1" );
thread stealth_1_spotted_cleanup();
if ( common_scripts\utility::flag( "_stealth_spotted" ) )
return;
wait 4;
level endon( "_stealth_spotted" );
thread stealth_1_dialogue_kickoff();
maps\_utility::smart_radio_dialogue( "shipg_hsh_shittheyrealreadyhere" );
wait 0.8;
thread maps\_utility::smart_radio_dialogue( "shipg_hsh_neptunewehavecontact" );
wait 0.7;
thread maps\_utility::smart_radio_dialogue( "shipg_hsh_nosignofthe" );
wait 0.6;
maps\_utility::smart_radio_dialogue( "shipg_pri_bastardsdontwasteany" );
common_scripts\utility::flag_wait( "stealth_1_engage" );
if ( common_scripts\utility::flag( "_stealth_spotted" ) )
return;
level endon( "_stealth_spotted" );
wait 2.5;
maps\_utility::smart_radio_dialogue( "shipg_bkr_count4" );
wait 1.5;
maps\_utility::smart_radio_dialogue( "shipg_bkr_takeemout" );
}
vantage_nag()
{
level endon( "stealth_1_done" );
level endon( "_stealth_spotted" );
self endon( "trigger" );
wait 5;
maps\_utility::smart_radio_dialogue( "shipg_bkr_outoftime" );
wait 0.7;
maps\_utility::smart_radio_dialogue( "shipg_bkr_bettervantage" );
}
stealth_1_dialogue_kickoff()
{
level endon( "stealth_1_done" );
common_scripts\utility::flag_wait( "_stealth_spotted" );
maps\_utility::smart_radio_dialogue_interrupt( "shipg_bkr_weaponsfree2" );
}
stealth_2_encounter()
{
thread stealth_2_other_guys();
var_0 = maps\_utility::array_spawn_targetname( "stealth_2_guys" );
wait 0.5;
thread stealth_2_movement();
while ( getaiarray( "axis" ).size > 0 )
wait 0.05;
common_scripts\utility::flag_set( "clear_to_enter_cave" );
wait 2;
maps\ship_graveyard_util::baker_noncombat();
maps\_utility::smart_radio_dialogue( "shipg_bkr_areaclear" );
wait 0.75;
maps\_utility::smart_radio_dialogue( "shipg_bkr_onme" );
common_scripts\utility::flag_set( "to_cave_vo_begin" );
}
stealth_2_other_guys()
{
var_0 = common_scripts\utility::get_target_ent( "stealth_2_other_guys" );
var_0 waittill( "trigger" );
var_1 = maps\_utility::array_spawn_targetname( var_0.target );
level endon( "_stealth_spotted" );
if ( !common_scripts\utility::flag( "_stealth_spotted" ) )
{
wait 1;
common_scripts\utility::array_thread( var_1, maps\_utility::set_moveplaybackrate, 0.8 );
}
}
stealth_2_dialogue()
{
level endon( "clear_to_enter_cave" );
level endon( "_stealth_spotted" );
if ( common_scripts\utility::flag( "_stealth_spotted" ) )
return;
thread stealth_2_spotted();
maps\_utility::trigger_wait_targetname( "stealth_2_contact" );
thread maps\_utility::music_play( "mus_shipgrave_plane_stinger" );
maps\_utility::smart_radio_dialogue( "shipg_bkr_contact" );
wait 0.8;
maps\_utility::smart_radio_dialogue( "shipg_hsh_looksliketheygot" );
wait 2;
maps\_utility::smart_radio_dialogue( "shipg_bkr_flankthem" );
wait 5;
maps\_utility::autosave_stealth();
maps\_utility::smart_radio_dialogue( "shipg_bkr_weaponsfree" );
}
stealth_2_spotted()
{
level endon( "clear_to_enter_cave" );
common_scripts\utility::flag_wait( "_stealth_spotted" );
thread stealth_2_melee();
thread delay_drop_boat();
maps\_utility::delaythread( 3, maps\_utility::smart_radio_dialogue_interrupt, "shipg_bkr_knowwerehere" );
maps\_utility::array_spawn_targetname( "stealth_2_backup" );
while ( getaiarray( "axis" ).size > 2 )
wait 0.05;
var_0 = getaiarray( "axis" );
common_scripts\utility::array_call( var_0, ::setgoalentity, level.player );
common_scripts\utility::array_thread( var_0, ::find_best_cover );
}
stealth_2_melee()
{
common_scripts\utility::flag_wait( "middle_boat_fell" );
maps\ship_graveyard_util::try_to_melee_player( "clear_to_enter_cave" );
}
find_best_cover()
{
self endon( "death" );
self.favoriteenemy = level.player;
wait( randomfloatrange( 4, 8 ) );
var_0 = self findbestcovernode();
if ( isdefined( var_0 ) )
{
self.goalradius = 32;
self.goalheight = 96;
self setgoalnode( var_0 );
self waittill( "goal" );
self.goalradius = 800;
}
}
stealth_2_movement()
{
level endon( "clear_to_enter_cave" );
common_scripts\utility::flag_wait( "_stealth_spotted" );
maps\ship_graveyard_util::volume_waittill_no_axis( "stealth_2_area_1_volume", 1 );
level.baker maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "stealth_2_moveup_1" ) );
}
delay_drop_boat()
{
wait( randomfloatrange( 4, 7 ) );
if ( !common_scripts\utility::flag( "clear_to_enter_cave" ) )
{
foreach ( var_1 in level.middle_boat.balloons )
{
if ( isdefined( var_1 ) && isdefined( var_1.collision ) )
var_1.collision notify( "pop" );
}
}
}
stealth_2_middle_boat_think()
{
common_scripts\utility::flag_init( "middle_boat_fell" );
var_0 = common_scripts\utility::get_target_ent( "stealth_2_middle_boat" );
level.middle_boat = var_0;
var_1 = var_0 common_scripts\utility::get_linked_ents();
common_scripts\utility::array_call( var_1, ::linkto, var_0 );
var_2 = [];
var_3 = undefined;
var_4 = getentarray( var_0.target, "targetname" );
foreach ( var_6 in var_4 )
{
if ( var_6.script_parameters == "balloon" )
{
var_2 = common_scripts\utility::array_add( var_2, var_6 );
continue;
}
if ( var_6.script_parameters == "target_pos" )
var_3 = var_6;
}
level.middle_boat.balloons = var_2;
common_scripts\utility::flag_wait( "start_stealth_area_2" );
common_scripts\utility::array_thread( var_2, ::middle_boat_balloon_think, var_2 );
level waittill( "middle_boat_pop" );
var_8 = common_scripts\utility::get_target_ent( "middle_ship_hurttrigger" );
var_8 enablelinkto();
var_8 linkto( var_0 );
var_8 thread maps\ship_graveyard_util::trigger_hurt();
if ( !common_scripts\utility::flag( "_stealth_spotted" ) )
{
var_9 = getaiarray( "axis" );
foreach ( var_11 in var_9 )
var_11.favoriteenemy = level.player;
}
var_0 connectpaths();
var_13 = 5;
var_0 thread middle_boat_audio_explode_crash( var_13 );
var_0 maps\ship_graveyard_util::moveto_rotateto( var_3, var_13, 3, 0 );
earthquake( 0.5, 1.0, var_0.origin, 3000 );
common_scripts\utility::exploder( "plane_wreck_impact" );
var_8 delete();
var_0 disconnectpaths();
common_scripts\utility::flag_set( "middle_boat_fell" );
}
middle_boat_audio_explode_crash( var_0 )
{
thread maps\_utility::play_sound_on_entity( "scn_middle_airliner_fall" );
wait( var_0 - 0.766 );
thread maps\_utility::play_sound_on_entity( "scn_middle_airliner_crash" );
}
middle_boat_balloon_think( var_0 )
{
self.collision = common_scripts\utility::get_linked_ent();
self.collision setcandamage( 1 );
var_1 = self.collision common_scripts\utility::waittill_any_return( "damage", "pop" );
foreach ( var_3 in var_0 )
{
if ( isdefined( var_3 ) && isdefined( var_3.collision ) )
var_3.collision notify( "pop" );
}
if ( isdefined( var_1 ) && var_1 != "damage" )
wait( randomfloatrange( 0.2, 0.4 ) );
playfx( common_scripts\utility::getfx( "shpg_underwater_bubble_explo" ), self.origin );
level notify( "middle_boat_pop" );
self.collision delete();
common_scripts\utility::waitframe();
self delete();
}
cave_flashlight_logic()
{
for (;;)
{
common_scripts\utility::flag_wait( "flashlight_on" );
level.player notify( "toggle_flashlight_on" );
common_scripts\utility::flag_waitopen( "flashlight_on" );
level.player notify( "toggle_flashlight_off" );
}
}
sonar_approach()
{
level.baker endon( "start_weld" );
maps\ship_graveyard_util::baker_noncombat();
var_0 = common_scripts\utility::get_target_ent( "baker_cave_path" );
level.baker setgoalpos( var_0.origin );
maps\ship_graveyard_util::baker_glint_on();
level.baker thread kill_lookat_on_cave_enter();
while ( !common_scripts\utility::flag( "inside_cave" ) && distance( level.player.origin, ( 708, -59172, 277.9 ) ) > 300 )
{
if ( maps\_utility::player_looking_at( level.baker.origin, 0.8 ) && distance( level.player.origin, level.baker.origin ) < 300 )
break;
wait 0.1;
}
var_0 = var_0 common_scripts\utility::get_target_ent();
level.baker thread waittill_goal_and_set_flag_to_cave();
level.baker maps\_utility::follow_path_and_animate( var_0 );
level.baker.goalradius = 196;
level.baker maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "baker_cave_path_2" ), 150 );
level.baker.goalradius = 256;
common_scripts\utility::flag_set( "end_of_cave_path" );
}
kill_lookat_on_cave_enter()
{
common_scripts\utility::flag_wait( "inside_cave" );
self notify( "timeout" );
}
waittill_goal_and_set_flag_to_cave()
{
self waittill( "goal" );
common_scripts\utility::flag_set( "go_into_cave_vo" );
}
cave_dialogue()
{
common_scripts\utility::flag_wait_any( "to_cave_vo_begin", "cave_sonar" );
if ( common_scripts\utility::flag( "to_cave_vo_begin" ) && !common_scripts\utility::flag( "cave_sonar" ) )
{
wait 2;
maps\_utility::smart_radio_dialogue( "shipg_hsh_looksliketheresan" );
wait 2;
common_scripts\utility::flag_wait( "go_into_cave_vo" );
maps\_utility::smart_radio_dialogue( "shipg_hsh_okcheckyourregulator" );
wait 2;
common_scripts\utility::flag_wait( "inside_cave" );
maps\_utility::smart_radio_dialogue( "shipg_hsh_alrightweregoingfurther" );
}
thread cave_dialogue_2();
level endon( "stop_cave_dialogue_1" );
wait 3;
}
cave_dialogue_2()
{
level endon( "player_ready_to_weld" );
maps\_utility::trigger_wait_targetname( "sonat_boat_cave_spawn" );
level notify( "stop_cave_dialogue_1" );
wait 1.5;
if ( distance( level.baker.origin, level.player.origin ) < 1000 )
{
maps\_utility::smart_radio_dialogue( "shipg_bkr_theresheis" );
wait 1.5;
maps\_utility::smart_radio_dialogue( "shipg_bkr_movingtoengage" );
wait 3;
}
maps\_utility::smart_radio_dialogue( "shipg_orb_heavysonarblasts" );
maps\_utility::smart_radio_dialogue( "shipg_orb_waterpressure" );
maps\_utility::smart_radio_dialogue( "shipg_orb_proceedwithcaution" );
wait 0.5;
maps\_utility::smart_radio_dialogue( "shipg_bkr_wilco" );
wait 1;
while ( distance( level.baker.origin, level.weld_use_trigger.origin ) > 1000 )
wait 0.25;
maps\_utility::smart_radio_dialogue( "shipg_hsh_aintnowaywe" );
wait 0.5;
maps\_utility::smart_radio_dialogue( "shipg_hsh_weregonnahaveto" );
}
cave_dust()
{
common_scripts\utility::flag_wait( "cave_sonar" );
level endon( "stop_cave_dust" );
var_0 = common_scripts\utility::get_target_ent( "cave_volume" );
var_1 = common_scripts\utility::get_target_ent( "cave_shake_origin" );
var_2 = maps\_utility::getstructarray_delete( "cave_shake_source", "targetname" );
for (;;)
{
common_scripts\utility::flag_wait( "cave_sonar" );
wait( randomfloatrange( 1, 3 ) );
if ( !level.player istouching( var_0 ) )
continue;
var_3 = randomfloatrange( 0.3, 0.5 );
level notify( "sonar_ping_go" );
thread common_scripts\utility::play_sound_in_space( "weaponized_sonar_muffled", var_1.origin );
level.player playrumbleonentity( "damage_light" );
cave_shake( var_3, var_2 );
wait( randomfloatrange( 3, 6 ) );
}
}
cave_shake( var_0, var_1, var_2 )
{
var_1 = sortbydistance( var_1, level.player.origin );
var_3 = 0;
wait 0.2;
earthquake( var_0, randomfloatrange( 0.5, 1 ), level.player.origin, 1024 );
if ( isdefined( var_2 ) && var_1.size > 0 )
thread common_scripts\utility::play_sound_in_space( var_2, var_1[0].origin );
foreach ( var_5 in var_1 )
{
if ( maps\_utility::within_fov_2d( level.player.origin, level.player.angles, var_5.origin, 0.6 ) )
{
if ( common_scripts\utility::cointoss() )
{
if ( !isdefined( var_5.script_fxid ) )
var_5.script_fxid = "cave_ceiling_silt_knockoff";
var_6 = randomfloatrange( 0, 2.5 );
maps\_utility::delaythread( var_6, common_scripts\utility::play_sound_in_space, "cave_debris", var_5.origin );
common_scripts\utility::noself_delaycall( var_6, ::playfx, common_scripts\utility::getfx( var_5.script_fxid ), var_5.origin );
var_3 = var_3 + 1;
}
}
if ( var_3 > 5 )
break;
}
}
sonar_boat_cave_think()
{
wait 3;
common_scripts\utility::flag_clear( "cave_sonar" );
wait 10;
common_scripts\utility::flag_set( "cave_sonar" );
}
sonar_boat_cave_quake()
{
level.sonar_boat = self;
var_0 = common_scripts\utility::spawn_tag_origin();
var_0.origin = ( 0, 0, 1024 );
var_1 = common_scripts\utility::spawn_tag_origin();
var_2 = common_scripts\utility::spawn_tag_origin();
level.sonar_quake_org = var_2;
var_2 thread boat_quake( var_0 );
var_2 linkto( self );
var_1 linkto( self );
var_1 playrumblelooponentity( "littoral_ship_rumble" );
maps\_utility::trigger_wait_targetname( "cave_past_hole" );
var_0 moveto( ( 0, 0, 300 ), 3 );
var_1 moveto( var_1.origin + ( 0, 0, 2000 ), 4 );
common_scripts\utility::flag_wait( "start_sonar" );
waittillframeend;
common_scripts\utility::flag_wait( "welding_done" );
var_2 unlink();
var_2 moveto( level.sonar_boat.origin, 2 );
var_1 moveto( level.sonar_boat.origin, 3 );
var_1 waittill( "movedone" );
var_2 linkto( level.sonar_boat );
var_1 linkto( level.sonar_boat );
var_0 moveto( ( 0, 0, 1200 ), 6 );
level.sonar_boat waittill( "death" );
var_2 delete();
var_1 stoprumble( "littoral_ship_rumble" );
var_1 delete();
}
boat_quake( var_0 )
{
self endon( "death" );
for (;;)
{
earthquake( 0.3, 0.2, self.origin, var_0.origin[2] );
wait 0.1;
}
}
baker_weld_door()
{
var_0 = common_scripts\utility::get_target_ent( "weld_use_trigger" );
var_0 sethintstring( &"SHIP_GRAVEYARD_HINT_WELD" );
var_0 common_scripts\utility::trigger_off();
var_1 = common_scripts\utility::get_target_ent( "baker_weld_node_final" );
var_2 = common_scripts\utility::get_target_ent( "baker_weld_door_L" );
var_2.animname = "door_L";
var_2 maps\_anim::setanimtree();
weld_door_setup( var_2 );
var_3 = common_scripts\utility::get_target_ent( "baker_weld_door_R" );
var_3.animname = "door_R";
var_3 maps\_anim::setanimtree();
weld_door_setup( var_3 );
var_4 = spawn( "script_model", var_2.origin );
var_4.origin = var_2.origin;
var_4.angles = var_2.angles;
var_4 setmodel( "shpg_wrkdoor_a1_normal" );
var_4 linkto( var_2 );
var_5 = maps\_utility::spawn_anim_model( "pipe" );
var_1 maps\_anim::anim_first_frame( [ var_2, var_3, var_5 ], "weld_approach" );
common_scripts\utility::flag_wait( "inside_cave" );
var_6 = 16;
var_7 = [];
var_8 = getentarray( "barrel_col", "targetname" );
for ( var_9 = 0; var_9 < var_6; var_9++ )
{
var_10 = spawn( "script_model", ( 0, 0, 0 ) );
var_10 setmodel( "com_barrel_benzin2" );
var_10.animname = "barrel";
var_10 maps\_anim::setanimtree();
var_10.animname = "barrel_" + var_9;
var_7 = common_scripts\utility::array_add( var_7, var_10 );
var_8[var_9].origin = var_7[var_9].origin;
var_8[var_9].angles = var_7[var_9].angles;
var_8[var_9] linkto( var_7[var_9] );
}
var_1 maps\_anim::anim_first_frame( var_7, "weld_breach" );
common_scripts\utility::flag_wait( "end_of_cave_path" );
if ( maps\_utility::is_gen4() )
thread maps\_utility::lerp_saveddvar( "r_tessellationFactor", 15, 8 );
var_1 maps\_anim::anim_reach_solo( level.baker, "weld_approach" );
level.baker notify( "start_weld" );
level.baker notify( "stop_path" );
var_11 = maps\_player_rig::get_player_rig();
var_11 hide();
var_11 dontcastshadows();
var_12 = common_scripts\utility::spawn_tag_origin();
var_12.origin = var_11.origin;
var_12.angles = var_11.angles;
var_13 = spawn( "script_model", var_2.origin );
var_13.angles = var_2.angles;
var_13 setmodel( var_2.model + "_obj" );
var_13 hide();
var_13 linkto( var_2 );
var_13.top = var_4;
var_0 common_scripts\utility::trigger_on();
var_14 = maps\_utility::spawn_anim_model( "torch_f", ( 0, 0, 0 ) );
var_15 = maps\_utility::spawn_anim_model( "torch_p", ( 0, 0, 0 ) );
var_16 = common_scripts\utility::spawn_tag_origin();
var_16 linkto( var_15, "j_gun", ( 8, 0, 0 ), ( 0, 0, 0 ) );
level.player.torch_fx_org = var_16;
var_17 = common_scripts\utility::spawn_tag_origin();
var_17 linkto( var_14, "j_gun", ( 8, 0, 0 ), ( 0, 0, 0 ) );
level.baker.torch_fx_org = var_17;
var_16 thread maps\ship_graveyard_fx::weld_breach_fx( var_15, "" );
var_17 thread maps\ship_graveyard_fx::weld_breach_fx( var_14, "_npc" );
maps\_utility::delaythread( 1, ::player_approach_weld, var_1, var_11, var_12, var_2, var_13, var_15 );
if ( !maps\ship_graveyard_util::greenlight_check() )
var_1 maps\_anim::anim_single( [ level.baker, var_3, var_2, var_14, var_5 ], "weld_approach" );
else
{
var_18 = level.baker maps\_utility::getanim( "weld_approach" );
var_19 = var_3 maps\_utility::getanim( "weld_approach" );
var_20 = var_2 maps\_utility::getanim( "weld_approach" );
var_21 = var_14 maps\_utility::getanim( "weld_approach" );
var_22 = var_5 maps\_utility::getanim( "weld_approach" );
var_23 = 0.17;
var_1 thread maps\_anim::anim_single( [ level.baker, var_3, var_2, var_14, var_5 ], "weld_approach" );
var_24 = getanimlength( var_18 );
wait 0.5;
level.baker setanimtime( var_18, var_23 );
var_3 setanimtime( var_19, var_23 );
var_2 setanimtime( var_20, var_23 );
var_14 setanimtime( var_21, var_23 );
var_5 setanimtime( var_22, var_23 );
wait( var_24 * ( 1 - var_23 ) );
}
common_scripts\utility::flag_set( "ai_ready_to_weld" );
var_1 thread maps\_anim::anim_loop( [ level.baker, var_14 ], "weld_breach_idle" );
common_scripts\utility::waitframe();
common_scripts\utility::flag_wait( "player_ready_to_weld" );
var_25 = common_scripts\utility::get_target_ent( "sonar_player_blocker" );
var_25 delete();
common_scripts\utility::waitframe();
var_1 notify( "stop_loop" );
maps\_utility::delaythread( 6.5, common_scripts\utility::exploder, "barrel_collapse_dust" );
var_1 thread maps\_anim::anim_single( var_7, "weld_breach" );
var_1 thread maps\_anim::anim_single_solo_run( level.baker, "weld_breach" );
var_26 = common_scripts\utility::get_target_ent( "baker_path_after_weld" );
level.baker.goalradius = 96;
level.baker setgoalpos( var_26.origin );
level.baker maps\_utility::disable_exits();
var_4 thread door_l_modelswap( var_2 );
var_1 maps\_anim::anim_single( [ var_3, var_2, var_11, var_15, var_14 ], "weld_breach" );
if ( maps\_utility::is_gen4() )
thread maps\_utility::lerp_saveddvar( "r_tessellationFactor", 60, 8 );
common_scripts\utility::flag_set( "welding_done" );
level.player unlink();
var_11 delete();
var_12 delete();
var_14 delete();
var_15 delete();
var_16 delete();
var_17 delete();
level.player enableweapons();
level.player allowmelee( 1 );
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_thisway" );
maps\_utility::autosave_by_name( "sonar" );
common_scripts\utility::flag_wait( "start_new_trench" );
foreach ( var_10 in var_2.brushes )
var_10 delete();
foreach ( var_10 in var_3.brushes )
var_10 delete();
var_2 delete();
var_3 delete();
foreach ( var_10 in var_8 )
var_10 delete();
foreach ( var_10 in var_7 )
var_10 delete();
var_7 = undefined;
var_4 delete();
var_5 delete();
}
door_l_modelswap( var_0 )
{
var_0 waittillmatch( "single anim", "door_cut_1" );
self setmodel( "shpg_wrkdoor_a1_broken01" );
var_0 waittillmatch( "single anim", "door_cut_2" );
self setmodel( "shpg_wrkdoor_a1_broken02" );
}
player_approach_weld( var_0, var_1, var_2, var_3, var_4, var_5 )
{
level.player allowmelee( 0 );
var_6 = common_scripts\utility::get_target_ent( "weld_use_trigger" );
var_4 show();
var_3 hide();
var_0 maps\_anim::anim_first_frame( [ var_1 ], "weld_approach" );
var_6 waittill( "trigger" );
maps\ship_graveyard_util::baker_glint_off();
var_6 common_scripts\utility::trigger_off();
var_3 hudoutlinedisable();
var_3 show();
var_4 delete();
var_7 = ( 0, 0, 48 );
var_2 linkto( var_1, "tag_player", var_7, ( 0, 0, 0 ) );
level.player disableweapons();
level.player playerlinktoblend( var_2, "tag_origin", 1, 0.1, 0 );
var_1 common_scripts\utility::delaycall( 1, ::show );
thread open_up_player_view_during_weld( var_2 );
level.player notify( "toggle_flashlight_off" );
var_0 maps\_anim::anim_single( [ var_1, var_5 ], "weld_approach" );
common_scripts\utility::flag_set( "player_ready_to_weld" );
if ( !common_scripts\utility::flag( "ai_ready_to_weld" ) )
{
var_0 thread maps\_anim::anim_loop( [ var_1, var_5 ], "weld_breach_idle" );
common_scripts\utility::flag_wait( "ai_ready_to_weld" );
var_1 notify( "stop_loop" );
var_5 notify( "stop_loop" );
}
}
open_up_player_view_during_weld( var_0 )
{
level waittill( "script 87" );
level.player playerlinktodelta( var_0, "tag_origin", 1, 0, 0, 0, 1 );
var_1 = 4;
level.player lerpviewangleclamp( var_1, var_1 * 0.5, var_1 * 0.5, 25, 15, 30, 15 );
common_scripts\utility::flag_wait( "ai_ready_to_weld" );
common_scripts\utility::flag_wait( "player_ready_to_weld" );
wait 10.1;
level.player playerlinktoblend( var_0, "tag_origin", 1, 0.5, 0 );
}
weld_door_setup( var_0 )
{
var_1 = var_0 common_scripts\utility::get_linked_ents();
var_0.brushes = var_1;
common_scripts\utility::array_call( var_1, ::linkto, var_0 );
}
first_sonar_ping()
{
common_scripts\utility::flag_wait( "welding_done" );
if ( maps\ship_graveyard_util::greenlight_check() && level.start_point == "e3" )
{
level waittill( "e3_black_scene_done" );
wait 1.25;
}
thread weaponized_sonar_chargeup();
common_scripts\utility::flag_wait( "super_sonar_ping" );
level notify( "sonar_ping_go" );
thread common_scripts\utility::play_sound_in_space( "weaponized_sonar_near", level.sonar_boat.origin );
wait 0.2;
common_scripts\utility::exploder( 1 );
wait 0.3;
common_scripts\utility::noself_delaycall( 0.1, ::earthquake, 0.3, 1, level.player.origin, 512 );
level.player common_scripts\utility::delaycall( 0.1, ::playrumbleonentity, "damage_light" );
level.player common_scripts\utility::delaycall( 0.3, ::playrumbleonentity, "damage_light" );
level.player common_scripts\utility::delaycall( 0.5, ::playrumbleonentity, "damage_light" );
level.player common_scripts\utility::delaycall( 0.6, ::playrumbleonentity, "damage_light" );
level.player common_scripts\utility::delaycall( 0.7, ::playrumbleonentity, "damage_light" );
wait 1;
level.sonar_boat vehicle_setspeed( 6, 3, 1 );
level.sonar_boat common_scripts\utility::delaycall( 6, ::vehicle_setspeed, 1, 1, 1 );
var_0 = level.player common_scripts\utility::spawn_tag_origin();
var_0.angles = level.player getplayerangles();
thread baker_sonar_path_dialogue();
thread baker_sonar_path();
var_1 = getdvarint( "player_swimSpeed" );
earthquake( 0.7, 1, level.player.origin, 512 );
var_2 = 30 * anglestoforward( level.player.angles );
level.player disableweapons();
level.player allowsprint( 0 );
level.player playrumbleonentity( "damage_heavy" );
level.player common_scripts\utility::delaycall( 0.1, ::playrumbleonentity, "damage_heavy" );
level.player common_scripts\utility::delaycall( 0.2, ::playrumbleonentity, "damage_heavy" );
level.player common_scripts\utility::delaycall( 0.3, ::playrumbleonentity, "damage_light" );
level.player common_scripts\utility::delaycall( 0.4, ::playrumbleonentity, "damage_light" );
level.player common_scripts\utility::delaycall( 0.5, ::playrumbleonentity, "damage_light" );
level.player common_scripts\utility::delaycall( 0.6, ::playrumbleonentity, "damage_light" );
level.player shellshock( "sonar_ping", 5 );
level.player dodamage( 90, level.player.origin );
level.player common_scripts\utility::delaycall( 2, ::unlink );
wait 2;
wait 2;
level.player enableweapons();
wait 1;
level.player allowsprint( 1 );
thread maps\ship_graveyard_util::track_hint_sprint();
if ( !maps\ship_graveyard_util::greenlight_check() )
thread maps\_utility::display_hint_timeout( "hint_sprint", 4 );
common_scripts\utility::flag_set( "start_sonar_pings" );
}
baker_sonar_path()
{
level.baker endon( "stop_sonar_paths" );
level.baker maps\_utility::disable_exits();
level.baker maps\_anim::anim_generic_run( level.baker, "sonar_hit" );
level.baker maps\_utility::delaythread( 0.5, maps\_utility::enable_exits );
level.baker.goalradius = 128;
thread baker_sonar_speed_change();
level.baker.movetransitionrate = 1.7;
level.baker maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "sonar_path_1" ), 450 );
common_scripts\utility::flag_init( "sonar_baker_waiting" );
var_0 = common_scripts\utility::get_target_ent( "sonar_wait_at_container" );
level.sonar_node = var_0;
var_0 maps\_anim::anim_generic_reach( level.baker, "swimming_aiming_move_to_cover_l1_r90" );
thread baker_wait_at_container();
common_scripts\utility::flag_wait( "sonar_clear_to_go" );
wait 2.5;
level.baker.moveplaybackrate = 1.7;
level.baker.movetransitionrate = level.baker.moveplaybackrate;
common_scripts\utility::flag_wait( "sonar_baker_waiting" );
level.sonar_node notify( "stop_loop" );
level.baker maps\_utility::disable_exits();
level.sonar_node thread maps\_anim::anim_generic_run( level.baker, "swimming_cover_l1_to_aiming_move_l90" );
level.baker maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "sonar_path_3" ), 450 );
level.baker maps\_utility::enable_exits();
common_scripts\utility::flag_wait( "sonar_clear_to_go" );
wait 1;
thread maps\_utility::smart_radio_dialogue( "shipg_hsh_intothatlighthouse" );
level.baker maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "sonar_path_4" ), 450 );
level.baker maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "sonar_path_5" ), 450 );
level.sonar_node = undefined;
}
baker_wait_at_container()
{
level.sonar_node maps\_anim::anim_generic( level.baker, "swimming_aiming_move_to_cover_l1_r90" );
level.sonar_node.origin = level.baker.origin;
level.sonar_node.angles = level.baker.angles;
level.sonar_node thread maps\_anim::anim_generic_loop( level.baker, "swimming_cover_l1_idle" );
common_scripts\utility::flag_set( "sonar_baker_waiting" );
}
baker_sonar_path_dialogue()
{
maps\_utility::smart_radio_dialogue_interrupt( "shipg_bkr_pain2" );
wait 1;
maps\_utility::smart_radio_dialogue( "shipg_bkr_gettocover" );
wait 5;
if ( player_safe_from_sonar() )
maps\_utility::autosave_by_name( "sonar" );
maps\_utility::smart_radio_dialogue( "shipg_bkr_cannotengage" );
wait 0.7;
maps\_utility::smart_radio_dialogue( "shipg_orb_pulloutimmediately" );
wait 0.3;
maps\_utility::smart_radio_dialogue( "shipg_bkr_missionistoast" );
setsaveddvar( "player_swimSpeed", 90 );
setsaveddvar( "player_sprintUnlimited", "1" );
}
baker_sonar_speed_change()
{
level.baker.moveplaybackrate = 1.7;
level.baker.movetransitionrate = level.baker.moveplaybackrate;
level.baker waittill( "goal" );
wait 5.5;
level.baker.moveplaybackrate = 1;
level.baker.movetransitionrate = level.baker.moveplaybackrate;
}
weaponized_sonar_chargeup()
{
thread common_scripts\utility::play_sound_in_space( "weaponized_sonar_chargeup", level.sonar_boat.origin );
wait 1.8;
}
weaponized_sonar_pings()
{
common_scripts\utility::flag_wait( "start_sonar_pings" );
level.sonar_exploder = 1;
level.sonar_times_hit = 0;
level.sonar_ping_delay = 8;
var_0 = 1.9;
common_scripts\utility::array_thread( getentarray( "sonar_fire_trigger", "targetname" ), ::sonar_fire_trigger_think );
common_scripts\utility::array_thread( getentarray( "sonar_safe_trigger", "targetname" ), ::sonar_safe_trigger_think );
level.sonar_boat endon( "death" );
level endon( "mine_moveup" );
wait 1;
for (;;)
{
level common_scripts\utility::waittill_notify_or_timeout( "weaponized_ping", level.sonar_ping_delay );
common_scripts\utility::flag_waitopen( "pause_sonar_pings" );
weaponized_sonar_chargeup();
wait 0.75;
level notify( "sonar_ping_go" );
common_scripts\utility::exploder( level.sonar_exploder );
thread common_scripts\utility::play_sound_in_space( "weaponized_sonar_near", level.sonar_boat.origin );
wait( var_0 );
common_scripts\utility::flag_set( "sonar_clear_to_go" );
maps\_utility::delaythread( 1, common_scripts\utility::flag_clear, "sonar_clear_to_go" );
thread sonar_movers();
if ( player_safe_from_sonar() )
{
earthquake( 0.3, 1, level.player.origin, 512 );
level.player playrumbleonentity( "damage_light" );
level.player shellshock( "sonar_ping_light", 2 );
continue;
}
earthquake( 0.6, 1, level.player.origin, 512 );
level.player playrumbleonentity( "damage_heavy" );
level.player shellshock( "sonar_ping", 6 );
var_1 = 200;
if ( level.gameskill > 1 )
var_1 = 100;
level.player dodamage( var_1, level.player.origin );
if ( level.player getcurrentweapon() != "underwater_torpedo" && level.player getcurrentweapon() != "remote_torpedo_tablet" )
{
level.player common_scripts\utility::_disableweapon();
level.player maps\_utility::delaythread( 6, common_scripts\utility::_enableweapon );
}
level.sonar_times_hit++;
if ( level.sonar_times_hit > 1 )
level.player kill();
wait 4;
}
}
player_safe_from_sonar()
{
if ( common_scripts\utility::flag( "torpedo_out" ) )
return 1;
var_0 = getentarray( "sonar_safe_trigger", "targetname" );
foreach ( var_2 in var_0 )
{
if ( level.player istouching( var_2 ) )
return 1;
}
return 0;
}
sonar_safe_trigger_think()
{
for (;;)
{
self waittill( "trigger" );
if ( isdefined( self.script_index ) )
level.sonar_exploder = self.script_index;
wait 0.5;
}
}
sonar_fire_trigger_think()
{
self waittill( "trigger" );
maps\_utility::script_delay();
level notify( "weaponized_ping" );
}
sonar_movers()
{
var_0 = getentarray( "sonar_ping_mover", "targetname" );
foreach ( var_2 in var_0 )
var_2 thread sonar_mover_think();
}
sonar_wreck_think()
{
var_0 = common_scripts\utility::get_target_ent( "sonar_big_wreck_start" );
var_1 = getent( "main_lighthouse", "script_noteworthy" );
var_2 = common_scripts\utility::spawn_tag_origin();
var_3 = getglassarray( "lighthouse_glass" );
foreach ( var_5 in var_3 )
deleteglass( var_5 );
var_7 = getentarray( "sonar_big_wreck_d", "targetname" );
foreach ( var_9 in var_7 )
var_9 linkto( var_1 );
var_2.target = "sonar_wreck_move";
var_2.origin = var_0.origin;
var_2.angles = var_0.angles;
var_2.script_wait = 2.5;
var_2.script_radius = 1500;
var_1 linkto( var_2 );
level.sonar_wreck = var_1;
level.sonar_wreck.glass = spawn( "script_model", level.sonar_wreck.origin );
level.sonar_wreck.glass.angles = level.sonar_wreck.angles;
level.sonar_wreck.glass setmodel( "shpg_lighthouse_glass" );
level.sonar_wreck.glass linkto( level.sonar_wreck );
level.sonar_wreck.top = spawn( "script_model", level.sonar_wreck.origin );
level.sonar_wreck.top.angles = level.sonar_wreck.angles;
level.sonar_wreck.top setmodel( "shpg_lighthouse_top" );
level.sonar_wreck.top linkto( level.sonar_wreck );
level.sonar_wreck.damage_states = [];
level.sonar_wreck.mover = var_2;
var_11 = [];
for ( var_12 = 0; var_12 < var_7.size; var_12++ )
var_11[var_12] = [];
foreach ( var_9 in var_7 )
{
var_11[var_9.script_index] = common_scripts\utility::array_add( var_11[var_9.script_index], var_9 );
var_9 hide();
var_9 notsolid();
}
for ( var_12 = 0; var_12 < var_11.size; var_12++ )
{
if ( var_11[var_12].size > 0 )
{
level.sonar_wreck.damage_states[var_12] = var_11[var_12];
continue;
}
break;
}
if ( level.sonar_wreck.damage_states.size < 0 )
{
foreach ( var_9 in level.sonar_wreck.damage_states[0] )
{
var_9 show();
var_9 solid();
}
}
common_scripts\utility::flag_wait( "start_sonar_mines" );
level notify( "weaponized_ping" );
level.sonar_ping_delay = 2;
wait 0.5;
var_17 = 0;
while ( var_17 <= level.sonar_wreck.damage_states.size )
{
common_scripts\utility::flag_wait( "sonar_clear_to_go" );
if ( var_17 > 0 )
{
foreach ( var_9 in level.sonar_wreck.damage_states[var_17 - 1] )
{
var_9 hide();
var_9 notsolid();
}
foreach ( var_9 in level.sonar_wreck.damage_states[var_17] )
{
var_9 show();
var_9 solid();
if ( isdefined( var_9.script_noteworthy ) )
{
var_21 = var_9.origin - level.player.origin;
var_21 = vectortoangles( var_21 );
var_21 = anglestoforward( ( var_21[0], var_21[1] * 1.3, var_21[2] ) );
var_21 = vectornormalize( var_21 );
playfx( common_scripts\utility::getfx( "sm_dust" ), var_9.origin );
var_9 unlink();
var_9 rotatevelocity( var_21 * common_scripts\utility::random( [ 50, 12.5, 20.0, 32.5 ] ), 10 );
var_9 movegravity( var_21 * common_scripts\utility::random( [ 45.0, 57.5, 60.0, 22.5 ] ), 20 );
var_9 notsolid();
}
}
}
else
{
common_scripts\utility::exploder( "lighthouse_glass_break" );
level.sonar_wreck.glass setmodel( "shpg_lighthouse_glass_broken" );
var_23 = common_scripts\utility::getstruct( "lighthouse_break_org", "targetname" );
common_scripts\utility::play_sound_in_space( "scn_shipg_lighthouse_wood_hit", var_23.origin );
}
common_scripts\utility::flag_set( "first_damage_state" );
var_17++;
var_24 = getent( "inside_sonar_boat", "script_noteworthy" );
if ( isdefined( var_24 ) )
{
if ( level.player istouching( var_24 ) )
{
level.sonar_ping_delay = 7;
level.sonar_times_hit = 0;
}
else if ( !player_safe_from_sonar() )
level.player kill();
var_24 delete();
}
wait 1.1;
}
}
sonar_glass_destroy( var_0 )
{
wait( randomfloatrange( 0, 0.5 ) );
var_1 = getglassorigin( var_0 );
deleteglass( var_0 );
}
sonar_mover_think()
{
if ( !isdefined( self.done_linking ) )
{
self.linked = common_scripts\utility::get_linked_ents();
common_scripts\utility::array_call( self.linked, ::linkto, self );
self.done_linking = 1;
if ( !isdefined( self.script_wait ) )
self.script_wait = 0.75;
if ( !isdefined( self.script_radius ) )
self.script_radius = 400;
}
maps\_utility::script_delay();
var_0 = common_scripts\utility::get_target_ent();
var_1 = var_0;
if ( isdefined( var_0.target ) )
var_1 = var_0 common_scripts\utility::get_target_ent();
var_2 = self.origin;
var_3 = self.angles;
var_4 = self.script_wait;
if ( var_1 != var_0 )
thread common_scripts\utility::play_sound_in_space( var_1.script_sound, var_1.origin );
thread common_scripts\utility::play_sound_in_space( "metal_sonar_hit", self.origin );
self moveto( var_0.origin, var_4, 0, var_4 );
self rotateto( var_0.angles, var_4, 0, var_4 );
wait( var_4 );
self moveto( var_2, var_4, var_4, 0 );
self rotateto( var_3, var_4, var_4, 0 );
wait( var_4 );
earthquake( 0.35, 0.5, self.origin, self.script_radius );
}
sonar_door_think()
{
var_0 = common_scripts\utility::get_target_ent( "sonar_cargo_door" );
var_0.linked = var_0 common_scripts\utility::get_linked_ents();
common_scripts\utility::array_call( var_0.linked, ::linkto, var_0 );
var_1 = common_scripts\utility::get_target_ent( "sonar_cargo_door_start" );
var_2 = common_scripts\utility::get_target_ent( "sonar_cargo_door_slam" );
var_3 = var_2 common_scripts\utility::get_target_ent();
var_0.origin = var_1.origin;
var_0.angles = var_1.angles;
var_4 = 1.2;
for (;;)
{
common_scripts\utility::flag_wait( "sonar_clear_to_go" );
var_5 = 0.3 * var_4;
var_0 moveto( var_2.origin, var_5, var_5, 0 );
var_0 rotateto( var_2.angles, var_5, var_5, 0 );
wait( var_5 );
var_5 = 0.4 * var_4;
var_0 moveto( var_3.origin, var_5, 0, var_5 );
var_0 rotateto( var_3.angles, var_5, 0, var_5 );
wait( var_5 );
var_5 = 0.35 * var_4;
var_0 moveto( var_2.origin, var_5, var_5 / 2, var_5 / 2 );
var_0 rotateto( var_2.angles, var_5, var_5 / 2, var_5 / 2 );
wait( var_5 );
var_5 = 0.6 * var_4;
var_0 moveto( var_3.origin, var_5, var_5 / 2, var_5 / 2 );
var_0 rotateto( var_3.angles, var_5, var_5 / 2, var_5 / 2 );
wait( var_5 );
if ( !common_scripts\utility::flag( "sonar_door_fly" ) )
{
var_5 = 2 * var_4;
var_0 moveto( var_1.origin, var_5, 0, var_5 );
var_0 rotateto( var_1.angles, var_5, 0, var_5 );
wait( var_5 );
continue;
}
var_0 thread maps\_utility::play_sound_on_entity( "scn_shipg_mtl_door_flap" );
var_5 = 1.75;
var_0 rotateto( ( 15, 0, 0 ), var_5, 0, var_5 );
wait( var_5 - 0.4 );
var_1 = common_scripts\utility::get_target_ent( "sonar_cargo_door_fly" );
var_5 = 3;
var_0 moveto( var_1.origin, var_5, 0, 0 );
var_0 rotateto( var_1.angles, var_5, 0, 0 );
var_0 moveto( ( 2601, -60053, 157 ), var_5, 0, 0 );
var_0 rotateto( ( 25.6015, 355.278, 3.16485 ), var_5, 0, 0 );
wait( var_5 );
var_5 = 3;
var_0 moveto( ( 2609, -60087, 154 ), var_5, 0, 0 );
var_0 rotateto( ( 20.7217, 29.665, 93.757 ), var_5, 0, 0 );
wait( var_5 );
var_5 = 2;
var_0 moveto( ( 2600, -60098, 111 ), var_5, 0, var_5 );
var_0 rotateto( ( 334.31, 34.0427, 92.4214 ), var_5, 0, var_5 );
common_scripts\utility::array_call( var_0.linked, ::delete );
break;
}
}
sonar_boat_think()
{
var_0 = level.sonar_boat;
common_scripts\utility::flag_wait( "welding_done" );
maps\_utility::trigger_wait_targetname( "sonar_boat_allow_spawn" );
var_0 thread maps\ship_graveyard_util::lcs_setup();
var_1 = getvehiclenode( "sonar_boat_cont", "targetname" );
var_0 vehicle_teleport( var_1.origin, var_1.angles );
var_0.target = "sonar_boat_cont";
var_0 thread maps\_vehicle_code::getonpath();
var_0 resumespeed( 2 );
maps\_utility::delaythread( 1, ::weaponized_sonar_chargeup );
thread boat_teleport( var_0 );
var_0 thread sonar_ping_light_think();
}
sonar_ping_light_think( var_0 )
{
self endon( "death" );
for (;;)
{
level waittill( "sonar_ping_go" );
thread sonar_ping_light();
}
}
sonar_boat_e3()
{
var_0 = maps\_vehicle::spawn_vehicle_from_targetname( "sonar_boat" );
var_0 thread maps\ship_graveyard_util::littoral_ship_lights();
level.sonar_boat = var_0;
level.sonar_boat vehicle_turnengineoff();
common_scripts\utility::flag_wait( "welding_done" );
maps\_utility::trigger_wait_targetname( "sonar_boat_allow_spawn" );
var_0 thread maps\_vehicle::gopath();
level.sonar_boat vehicle_turnengineoff();
thread boat_teleport( var_0 );
var_0 thread sonar_ping_light_think();
}
sonar_boat_one_shot_audio()
{
maps\_utility::trigger_wait_targetname( "sonat_boat_cave_spawn" );
level thread common_scripts\utility::play_sound_in_space( "scn_lcs_passby_overhead_groans", ( 1516, -58253, 362 ) );
}
sonar_boat_audio( var_0 )
{
var_1 = common_scripts\utility::spawn_tag_origin();
var_2 = common_scripts\utility::spawn_tag_origin();
var_3 = common_scripts\utility::spawn_tag_origin();
var_4 = common_scripts\utility::spawn_tag_origin();
var_5 = common_scripts\utility::spawn_tag_origin();
var_1.origin = ( 1545.29, -57932.6, 560 );
var_2.origin = ( 1301.13, -57170.8, 560 );
var_3.origin = ( 1056.96, -56408.9, 560 );
var_4.origin = ( 921.01, -55657.1, 560 );
var_5.origin = ( 730.553, -55718.2, 560 );
var_1 playloopsound( "scn_sub_fronts_lp" );
var_2 playloopsound( "scn_sub_engine_lp" );
var_3 playloopsound( "scn_sub_rumble_lp" );
var_4 playloopsound( "scn_sub_prop_l_lp" );
var_5 playloopsound( "scn_sub_prop_r_lp" );
thread scale_lcs_audio_fade( var_1, var_2, var_3, var_4, var_5 );
while ( !isdefined( level.sonar_boat ) )
wait 0.1;
level.sonar_boat vehicle_turnengineoff();
var_1 linkto( level.sonar_boat, "tag_splash_front", ( 0, 0, 0 ), ( 0, 0, 0 ) );
var_2 linkto( level.sonar_boat, "tag_splash_front", ( -800, 0, 0 ), ( 0, 0, 0 ) );
var_3 linkto( level.sonar_boat, "tag_splash_front", ( -1600, 0, 0 ), ( 0, 0, 0 ) );
var_4 linkto( level.sonar_boat, "tag_splash_back", ( 0, 100, 0 ), ( 0, 0, 0 ) );
var_5 linkto( level.sonar_boat, "tag_splash_back", ( 0, -100, 0 ), ( 0, 0, 0 ) );
thread sonar_boat_audio_mover( var_1, var_2, var_3, var_4, var_5 );
common_scripts\utility::flag_wait( "player_ready_to_weld" );
common_scripts\utility::flag_wait( "ai_ready_to_weld" );
var_6 = 10;
var_1 moveto( level.sonar_boat gettagorigin( "tag_splash_front" ), var_6, var_6 * 0.5, var_6 * 0.5 );
var_2 moveto( level.sonar_boat gettagorigin( "tag_splash_front" ) + ( -800, 0, 0 ), var_6, var_6 * 0.5, var_6 * 0.5 );
var_3 moveto( level.sonar_boat gettagorigin( "tag_splash_front" ) + ( -1600, 0, 0 ), var_6, var_6 * 0.5, var_6 * 0.5 );
var_4 moveto( level.sonar_boat gettagorigin( "tag_splash_back" ) + ( 0, 100, 0 ), var_6, var_6 * 0.5, var_6 * 0.5 );
var_5 moveto( level.sonar_boat gettagorigin( "tag_splash_back" ) + ( 0, -100, 0 ), var_6, var_6 * 0.5, var_6 * 0.5 );
wait( var_6 );
var_1 linkto( level.sonar_boat, "tag_splash_front", ( 0, 0, 0 ), ( 0, 0, 0 ) );
var_2 linkto( level.sonar_boat, "tag_splash_front", ( -800, 0, 0 ), ( 0, 0, 0 ) );
var_3 linkto( level.sonar_boat, "tag_splash_front", ( -1600, 0, 0 ), ( 0, 0, 0 ) );
var_4 linkto( level.sonar_boat, "tag_splash_back", ( 0, 100, 0 ), ( 0, 0, 0 ) );
var_5 linkto( level.sonar_boat, "tag_splash_back", ( 0, -100, 0 ), ( 0, 0, 0 ) );
common_scripts\utility::flag_wait( "sonar_boat_explode" );
var_1 delete();
var_2 delete();
var_3 delete();
var_4 delete();
var_5 delete();
}
scale_lcs_audio_fade( var_0, var_1, var_2, var_3, var_4 )
{
var_5 = 5;
var_0 scalevolume( 0 );
var_1 scalevolume( 0 );
var_2 scalevolume( 0 );
var_3 scalevolume( 0 );
var_4 scalevolume( 0 );
wait 0.1;
var_0 scalevolume( 1, var_5 );
var_1 scalevolume( 1, var_5 );
var_2 scalevolume( 1, var_5 );
var_3 scalevolume( 1, var_5 );
var_4 scalevolume( 1, var_5 );
}
sonar_boat_audio_mover( var_0, var_1, var_2, var_3, var_4 )
{
level endon( "welding_done" );
wait 40;
var_0 unlink();
var_1 unlink();
var_2 unlink();
var_3 unlink();
var_4 unlink();
var_0.old_org = var_0.origin;
var_1.old_org = var_1.origin;
var_2.old_org = var_2.origin;
var_3.old_org = var_3.origin;
var_4.old_org = var_4.origin;
var_5 = 500;
var_6 = 30;
for (;;)
{
var_0 moveto( var_0.old_org - ( var_5, var_5, 0 ), var_6, var_6 / 2, var_6 / 2 );
var_1 moveto( var_1.old_org - ( var_5, var_5, 0 ), var_6, var_6 / 2, var_6 / 2 );
var_2 moveto( var_2.old_org - ( var_5, var_5, 0 ), var_6, var_6 / 2, var_6 / 2 );
var_3 moveto( var_3.old_org - ( var_5, var_5, 0 ), var_6, var_6 / 2, var_6 / 2 );
var_4 moveto( var_4.old_org - ( var_5, var_5, 0 ), var_6, var_6 / 2, var_6 / 2 );
wait( var_6 );
var_0 moveto( var_0.old_org + ( var_5, var_5, 0 ), var_6, var_6 / 2, var_6 / 2 );
var_1 moveto( var_1.old_org + ( var_5, var_5, 0 ), var_6, var_6 / 2, var_6 / 2 );
var_2 moveto( var_2.old_org + ( var_5, var_5, 0 ), var_6, var_6 / 2, var_6 / 2 );
var_3 moveto( var_3.old_org + ( var_5, var_5, 0 ), var_6, var_6 / 2, var_6 / 2 );
var_4 moveto( var_4.old_org + ( var_5, var_5, 0 ), var_6, var_6 / 2, var_6 / 2 );
wait( var_6 );
}
}
sonar_boat_audio_e3( var_0 )
{
if ( level.start_point != "start_sonar" && level.start_point != "start_sonar_mines" && level.start_point != "e3" )
return;
while ( !isdefined( level.sonar_boat ) )
common_scripts\utility::waitframe();
self vehicle_turnengineoff();
var_1 = common_scripts\utility::spawn_tag_origin();
var_2 = common_scripts\utility::spawn_tag_origin();
var_3 = common_scripts\utility::spawn_tag_origin();
var_4 = common_scripts\utility::spawn_tag_origin();
var_5 = common_scripts\utility::spawn_tag_origin();
var_1 linkto( self, "tag_splash_front", ( 0, 0, 0 ), ( 0, 0, 0 ) );
var_1 playloopsound( "scn_sub_fronts_lp" );
var_2 linkto( self, "tag_splash_front", ( -800, 0, 0 ), ( 0, 0, 0 ) );
var_2 playloopsound( "scn_sub_engine_lp" );
var_3 linkto( self, "tag_splash_front", ( -1600, 0, 0 ), ( 0, 0, 0 ) );
var_3 playloopsound( "scn_sub_rumble_lp" );
var_4 linkto( self, "tag_splash_back", ( 0, 100, 0 ), ( 0, 0, 0 ) );
var_4 playloopsound( "scn_sub_prop_l_lp" );
var_5 linkto( self, "tag_splash_back", ( 0, -100, 0 ), ( 0, 0, 0 ) );
var_5 playloopsound( "scn_sub_prop_r_lp" );
thread scale_lcs_audio_fade( var_1, var_2, var_3, var_4, var_5 );
common_scripts\utility::flag_wait( "sonar_boat_explode" );
var_1 delete();
var_2 delete();
var_3 delete();
var_4 delete();
var_5 delete();
}
update_line( var_0 )
{
while ( isdefined( var_0 ) )
{
thread common_scripts\utility::draw_line_for_time( var_0.origin, level.player.origin, 1, 1, 1, 0.05 );
wait 0.05;
}
}
boat_teleport( var_0 )
{
common_scripts\utility::flag_wait( "sonar_boat_teleport" );
var_1 = common_scripts\utility::get_target_ent( "sonar_boat_teleport" );
var_0 vehicle_teleport( var_1.origin, var_1.angles );
var_0.target = "sonar_boat_teleport";
var_0 thread maps\_vehicle_code::getonpath();
var_0 resumespeed( 2 );
}
sonar_ping_light()
{
playfxontag( common_scripts\utility::getfx( "sonar_ping_light" ), self, "TAG_SONAR" );
playfxontag( common_scripts\utility::getfx( "sonar_ping_distortion" ), self, "TAG_SONAR" );
}
sonar_mines_dialogue()
{
level endon( "start_new_trench" );
thread hit_chain_dialogue();
maps\_utility::smart_radio_dialogue( "shipg_bkr_endoftheline" );
wait 0.7;
maps\_utility::smart_radio_dialogue( "shipg_bkr_takeoutthatship" );
common_scripts\utility::flag_wait( "first_damage_state" );
level endon( "mine_moveup" );
wait 0.7;
maps\_utility::smart_radio_dialogue( "shipg_bkr_thosemines" );
wait 0.2;
maps\_utility::smart_radio_dialogue( "shipg_bkr_shootchains" );
wait 7;
while ( !common_scripts\utility::flag( "mine_moveup" ) )
{
maps\_utility::smart_radio_dialogue( "shipg_bkr_chainsonthemines" );
wait 7;
}
}
torpedo_dialogue()
{
thread torpedo_dialogue_2();
level endon( "player_holding_torpedo" );
maps\_utility::smart_radio_dialogue( "shipg_hsh_thereitis" );
wait 0.7;
maps\_utility::smart_radio_dialogue( "shipg_bkr_syncuponme" );
}
torpedo_dialogue_2()
{
common_scripts\utility::flag_wait( "player_holding_torpedo" );
thread torpedo_dialogue_3();
level endon( "player_on_torpedo" );
maps\_utility::smart_radio_dialogue_interrupt( "shipg_bkr_proteuscomingonline" );
wait 0.5;
thread maps\_utility::smart_radio_dialogue( "shipg_hsh_weveonlygotone" );
}
torpedo_dialogue_3()
{
common_scripts\utility::flag_wait( "player_on_torpedo" );
wait 0.3;
maps\_utility::smart_radio_dialogue_interrupt( "shipg_bkr_illlineitup" );
level waittill( "fire_torpedo" );
maps\_utility::smart_radio_dialogue( "shipg_bkr_firing" );
}
baker_torpedo_position( var_0 )
{
var_0 maps\_anim::anim_single( [ level.baker ], "lighthouse_entry" );
var_0 thread maps\_anim::anim_loop( [ level.baker ], "lighthouse_idle" );
}
torpedo_the_ship()
{
level.sonar_boat thermaldrawenable();
level.baker thermaldrawdisable();
var_0 = getentarray( "torpedo_nets", "targetname" );
common_scripts\utility::array_call( var_0, ::thermaldrawenable );
thread sonar_mines_boat_reaction();
var_1 = common_scripts\utility::get_target_ent( "lighthouse_node" );
var_2 = level.baker;
var_3 = getent( "grab_torpedo", "targetname" );
level.baker notify( "stop_path" );
level.baker notify( "stop_sonar_paths" );
var_1 maps\_anim::anim_reach_solo( level.baker, "lighthouse_entry" );
thread torpedo_dialogue();
thread baker_torpedo_position( var_1 );
var_2 makeusable();
var_2 thread watch_if_used();
var_3 common_scripts\utility::trigger_on();
var_3 thread watch_if_used();
if ( !maps\ship_graveyard_util::greenlight_check() )
{
var_2 sethintstring( &"SHIP_GRAVEYARD_USE_TORPEDO" );
var_3 sethintstring( &"SHIP_GRAVEYARD_USE_TORPEDO" );
}
common_scripts\utility::flag_wait( "grabbed_torpedo" );
var_2 makeunusable();
var_3 common_scripts\utility::trigger_off();
common_scripts\utility::flag_set( "player_holding_torpedo" );
common_scripts\utility::flag_set( "pause_sonar_pings" );
maps\_utility::delaythread( 6, common_scripts\utility::flag_clear, "pause_sonar_pings" );
setsaveddvar( "player_swimSpeed", 50 );
setsaveddvar( "ammoCounterHide", 1 );
level.player enableslowaim( 0.6, 0.6 );
level.player.last_weapon = level.player getcurrentweapon();
level.player disableweaponswitch();
level.player giveweapon( "underwater_torpedo" );
level.player switchtoweapon( "underwater_torpedo" );
level.player allowmelee( 0 );
level.player thread torpedo_drillbit_audio();
level.player allowfire( 0 );
wait 4;
for (;;)
{
level.player waittill( "fire weapon" );
if ( !maps\_utility::player_looking_at( level.sonar_boat.origin, 0.8, 1 ) )
{
maps\_utility::display_hint( "hint_notfound" );
continue;
}
if ( !maps\ship_graveyard_util::player_not_obstructed( 250 ) )
{
maps\_utility::display_hint( "hint_blocked" );
continue;
}
break;
}
var_4 = level.player getplayerangles();
var_5 = anglestoforward( var_4 );
var_6 = level.player geteye();
var_6 = var_6 + var_5 * 64;
common_scripts\utility::flag_set( "player_on_torpedo" );
thread maps\ship_graveyard_torpedo::torpedo_go( var_6, var_4 );
level waittill( "torpedo_ready" );
var_7 = 1.5;
level.player.dom.ref_ent moveto( level.player.dom.ref_ent.origin + var_5 * 32, var_7, 0, var_7 );
level.player.dom.ref_ent rotateto( level.player.dom.ref_ent.angles - ( level.player.dom.ref_ent.angles[0], 0, 0 ), var_7, 0, var_7 );
wait( var_7 );
var_1 notify( "stop_loop" );
while ( getdvarint( "debug_torpedo", 0 ) )
wait 0.05;
level notify( "fire_torpedo" );
level waittill( "exit_torpedo", var_8 );
level.baker thread maps\ship_graveyard_util::baker_glint_on();
setsaveddvar( "ammoCounterHide", 0 );
if ( var_8 )
{
thread impact_vision_set();
level.player takeweapon( "underwater_torpedo" );
level.player allowfire( 1 );
level.player allowmelee( 1 );
level notify( "mine_moveup" );
wait 0.15;
common_scripts\utility::flag_set( "sonar_boat_explode" );
wait 1.772;
thread maps\_utility::smart_radio_dialogue_interrupt( "shipg_bkr_nicework" );
if ( getdvarint( "shpg_torpedo_tries", 0 ) == 0 )
level.player maps\_utility::player_giveachievement_wrapper( "LEVEL_12A" );
}
else
{
wait 0.5;
maps\ship_graveyard_util::force_deathquote( &"SHIP_GRAVEYARD_HINT_TORPEDO" );
maps\_utility::missionfailedwrapper();
setdvar( "shpg_torpedo_tries", 1 );
}
}
watch_if_used()
{
self waittill( "trigger" );
common_scripts\utility::flag_set( "grabbed_torpedo" );
}
torpedo_drillbit_audio()
{
while ( level.player.disabledweapon )
common_scripts\utility::waitframe();
var_0 = 68;
for ( var_1 = 0; var_1 < var_0; var_1++ )
common_scripts\utility::waitframe();
level.sound_torpedo_ent = spawn( "script_origin", level.player geteye() );
level.sound_torpedo_ent playloopsound( "scn_shipg_torpedo_drillbit_loop" );
level.sound_torpedo_ent scalevolume( 0.7, 0.0 );
level.sound_torpedo_ent scalepitch( 0.5, 0.0 );
wait 0.1;
level.sound_torpedo_ent scalevolume( 1.0, 1.5 );
level.sound_torpedo_ent scalepitch( 1.0, 1.5 );
}
impact_vision_set()
{
wait 0.3;
thread maps\_utility::vision_set_fog_changes( "", 0 );
common_scripts\utility::flag_set( "pause_dynamic_dof" );
maps\_art::dof_enable_script( 1, 1, 4.5, 500, 500, 0.05, 0.1 );
wait 1;
thread maps\_utility::vision_set_fog_changes( "shpg_lcs_detonation", 1 );
wait 1;
thread maps\_utility::vision_set_fog_changes( "", 3 );
maps\_art::dof_disable_script( 1 );
wait 1;
common_scripts\utility::flag_clear( "pause_dynamic_dof" );
}
sonar_mines()
{
var_0 = getentarray( "sonar_mine", "targetname" );
common_scripts\utility::array_thread( var_0, ::sonar_mine_think );
level waittill( "sonar_boat_explode" );
wait 0.15;
foreach ( var_2 in var_0 )
{
if ( isdefined( var_2 ) )
{
var_2 notify( "explode" );
wait( randomfloatrange( 0.3, 0.5 ) );
}
}
}
hit_chain_dialogue()
{
level waittill( "mine_moveup" );
thread maps\_utility::smart_radio_dialogue_interrupt( "shipg_bkr_nicework" );
}
sonar_mine_think()
{
var_0 = common_scripts\utility::get_target_ent();
thread mine_notify_on_tigger( var_0 );
thread mine_notify_on_level();
thread mine_explode_think();
self waittill( "moveup" );
common_scripts\utility::flag_set( "mine_moveup" );
var_1 = ( self.origin[0], self.origin[1], level.water_level_z - 686 );
maps\ship_graveyard_util::moveto_speed( var_1, 150, 0.8 );
common_scripts\utility::flag_set( "sonar_boat_explode" );
self notify( "explode" );
}
mine_explode_think()
{
self waittill( "explode" );
playfx( common_scripts\utility::getfx( "shpg_underwater_explosion_med_a" ), self.origin + ( 0, 0, 646 ) );
if ( level.water_level_z - 120 - 686 - self.origin[2] < 10 )
playfx( common_scripts\utility::getfx( "underwater_surface_splash" ), self.origin + ( 0, 0, 646 ) );
playfx( common_scripts\utility::getfx( "shpg_underwater_explosion_med_a" ), self.origin + ( 0, 0, 646 ) );
thread common_scripts\utility::play_sound_in_space( "underwater_explosion", self.origin + ( 0, 0, 646 ) );
earthquake( 0.7, 0.7, self.origin + ( 0, 0, 646 ), 2000 );
self delete();
}
mine_notify_on_tigger( var_0 )
{
self endon( "moveup" );
var_0 waittill( "trigger" );
self notify( "moveup" );
}
mine_notify_on_level()
{
self endon( "moveup" );
level waittill( "mine_moveup" );
wait( randomfloatrange( 0.5, 1.5 ) );
self notify( "moveup" );
}
sonar_mines_boat_reaction()
{
var_0 = common_scripts\utility::get_target_ent( "lighthouse_node" );
common_scripts\utility::flag_wait( "player_on_torpedo" );
level waittill( "exit_torpedo" );
level.baker dontinterpolate();
level.baker.animname = "baker";
var_0 thread maps\_anim::anim_first_frame( [ level.baker ], "lighthouse_fall" );
common_scripts\utility::flag_wait( "sonar_boat_explode" );
musicstop( 1 );
var_1 = level.sonar_boat;
var_2 = spawn( "script_model", var_1.origin );
var_2 setmodel( "vehicle_lcs_destroyed_front" );
var_2.animname = "lcs_front";
var_2 maps\_anim::setanimtree();
var_3 = common_scripts\utility::spawn_tag_origin();
var_3.origin = var_2.origin;
var_3.angles = var_2.angles;
var_3 linkto( var_2 );
var_3 thread maps\ship_graveyard_util::lcs_lights_front();
var_4 = spawn( "script_model", var_1.origin );
var_4 setmodel( "vehicle_lcs_destroyed_back" );
var_4.animname = "lcs_back";
var_4 maps\_anim::setanimtree();
var_4 thread maps\ship_graveyard_util::lcs_lights_back();
var_5 = ( 0, 0, 48 );
var_6 = maps\_player_rig::get_player_rig();
var_6.origin = level.player.origin - var_5;
var_6.angles = level.player.angles;
var_7 = common_scripts\utility::spawn_tag_origin();
var_7.origin = var_6.origin;
var_7.angles = var_6.angles;
var_7 linkto( var_6, "tag_player", var_5, ( 0, 0, 0 ) );
var_8 = spawn( "script_model", ( 0, 0, 0 ) );
var_8 setmodel( "body_fed_udt_assault_a_ally_trailer" );
var_8.animname = "legs";
var_8 maps\_anim::setanimtree();
level.sonar_wreck unlink();
level.sonar_wreck.animname = "lighthouse";
level.sonar_wreck maps\_anim::setanimtree();
level.player thread maps\_utility::play_sound_on_entity( "scn_shipg_lighthosue_fall_lr" );
thread sonar_crash_player_setup( var_6, var_7, var_8 );
thread sonar_crash_dialogue();
var_1 delete();
level.baker notify( "stop_first_frame" );
thread sonar_crash_fx( var_6, var_2, var_4 );
setsaveddvar( "sv_znear", "1" );
var_9 = getanimlength( level.sonar_wreck maps\_utility::getanim( "lighthouse_fall" ) );
thread sonar_crash_solo_arms();
level.sonar_wreck.top delete();
var_0 thread maps\_anim::anim_single( [ var_6, level.sonar_wreck, var_2, var_4, level.baker, var_8 ], "lighthouse_fall" );
level.sonar_wreck waittillmatch( "single anim", "fadeout" );
level notify( "stop_earthquake" );
earthquake( 0.8, 0.5, level.player.origin, 2000 );
level.player_rig stoprumble( "subtle_tank_rumble" );
level.player playrumbleonentity( "damage_heavy" );
maps\_hud_util::fade_out( 0.05 );
wait 1;
level.player stopshellshock();
wait 0.05;
level.sonar_wreck.glass delete();
level.sonar_wreck.mover delete();
level.sonar_wreck delete();
level.player unlink();
level.player_rig delete();
common_scripts\utility::flag_set( "start_new_trench" );
level.player showviewmodel();
var_2 delete();
var_4 delete();
var_8 delete();
var_3 delete();
}
sonar_crash_solo_arms()
{
var_0 = maps\_utility::spawn_anim_model( "player_rig", level.player.origin );
var_0 linktoplayerview( level.player, "tag_origin", ( 0, 0, -64 ), ( 0, 0, 0 ), 1 );
var_0 setanim( var_0 maps\_utility::getanim( "lighthouse_fall_arms" ), 1, 0, 1 );
wait 7;
var_0 delete();
common_scripts\utility::flag_set( "turn_on_bubbles_after_torpedo" );
}
sonar_crash_fx( var_0, var_1, var_2 )
{
var_3 = level.sonar_wreck.origin;
var_4 = level.sonar_wreck.angles;
var_5 = anglestoup( var_4 );
var_6 = -1 * var_5;
var_7 = level.sonar_wreck common_scripts\utility::spawn_tag_origin();
var_8 = level.sonar_wreck common_scripts\utility::spawn_tag_origin();
var_8.angles = vectortoangles( var_6 );
var_9 = level.sonar_wreck common_scripts\utility::spawn_tag_origin();
var_8 linkto( level.sonar_wreck );
var_7 linkto( var_8, "tag_origin", ( -400, 0, 0 ), ( 0, 0, 0 ) );
var_9 linkto( var_8, "tag_origin", ( -600, 0, 0 ), ( -90, 0, 0 ) );
wait 0.1;
var_10 = common_scripts\utility::spawn_tag_origin();
var_10.origin = ( 2810, -61853, 89 );
var_10.angles = ( 0, 141, -45 );
common_scripts\utility::noself_delaycall( 2.5, ::playfxontag, common_scripts\utility::getfx( "lighthouse_window_mess" ), var_10, "tag_origin" );
common_scripts\utility::noself_delaycall( 6.0, ::playfxontag, common_scripts\utility::getfx( "lighthouse_debris" ), var_7, "tag_origin" );
common_scripts\utility::noself_delaycall( 6.0, ::playfxontag, common_scripts\utility::getfx( "lighthouse_bubbles" ), var_9, "tag_origin" );
maps\_utility::delaythread( 0.0, common_scripts\utility::exploder, "lighthouse_lcs_detonation" );
maps\_utility::delaythread( 2, common_scripts\utility::exploder, "debris_hit_wood_metal" );
playfxontag( common_scripts\utility::getfx( "lighthouse_debris" ), var_7, "tag_origin" );
playfxontag( common_scripts\utility::getfx( "lighthouse_bubbles" ), var_9, "tag_origin" );
maps\_utility::delaythread( 3.1, maps\ship_graveyard_util::player_panic_bubbles );
maps\_utility::delaythread( 4, common_scripts\utility::exploder, "base_snap_debris" );
maps\_utility::delaythread( 4.5, maps\ship_graveyard_util::player_panic_bubbles );
maps\_utility::delaythread( 6, maps\ship_graveyard_util::player_panic_bubbles );
common_scripts\utility::flag_wait( "start_new_trench" );
var_7 delete();
var_8 delete();
var_9 delete();
var_10 delete();
}
sonar_crash_earthquake()
{
level endon( "stop_earthquake" );
level.earthquake_strength = 0.2;
thread increase_earthquake_strength();
level.player common_scripts\utility::delaycall( 8, ::setblurforplayer, 6, 5 );
maps\_utility::delaythread( 9, maps\_hud_util::fade_out, 9 );
for (;;)
{
earthquake( level.earthquake_strength, 0.2, level.player.origin, 3000 );
wait 0.1;
}
}
increase_earthquake_strength()
{
level endon( "stop_earthquake" );
wait 4;
var_0 = common_scripts\utility::spawn_tag_origin();
var_0.origin = ( 0, 0, level.earthquake_strength );
var_0 movez( 0.22, 6, 6, 0 );
var_0 thread maps\ship_graveyard_util::delete_on_notify( "stop_earthquake" );
level.f_min["gasmask_overlay"] = 0.7;
level.f_max["gasmask_overlay"] = 0.9;
level.f_min["halo_overlay_scuba_steam"] = 0.6;
level.f_max["halo_overlay_scuba_steam"] = 0.7;
for (;;)
{
level.earthquake_strength = var_0.origin[2];
wait 0.05;
}
}
sonar_crash_player_setup( var_0, var_1, var_2 )
{
level.player disableweapons();
level.player playerlinktoabsolute( var_1, "tag_origin" );
wait 0.2;
level.player enableslowaim( 0.35, 0.35 );
setsaveddvar( "player_swimSpeed", 35 );
setsaveddvar( "player_swimVerticalSpeed", 10 );
var_0 hide();
var_2 hide();
level.player unlink();
level.player allowsprint( 0 );
thread sonar_crash_dof();
wait 3.25;
level.player playerlinktoblend( var_1, "tag_origin", 0.5, 0, 0 );
wait 0.5;
level.player playerlinktodelta( var_1, "tag_origin", 1, 10, 10, 10, 10 );
wait 1;
var_0 show();
var_2 show();
level.player shellshock( "nearby_crash_underwater", 4.5 );
wait 0.5;
var_0 hide();
var_2 hide();
wait 2.25;
wait 0.5;
var_0 show();
var_2 show();
level.player allowsprint( 1 );
}
sonar_crash_dof()
{
wait 0.75;
common_scripts\utility::flag_set( "pause_dynamic_dof" );
maps\_art::dof_enable_script( 0, 250, 4, 1500, 4000, 1.5, 1 );
wait 5.5;
maps\_art::dof_disable_script( 1 );
wait 1;
common_scripts\utility::flag_clear( "pause_dynamic_dof" );
}
sonar_crash_dialogue()
{
wait 5;
thread sonar_crash_earthquake();
level.player_rig playrumblelooponentity( "subtle_tank_rumble" );
wait 3;
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_ohshit" );
wait 3.3;
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_hangon" );
}
base_alarm()
{
common_scripts\utility::flag_init( "start_base_alarm" );
var_0 = getdvarint( "play_alarm", 1 );
if ( var_0 )
{
common_scripts\utility::flag_wait( "start_base_alarm" );
var_1 = getent( "origin_base_alarm", "targetname" );
var_1 base_alarm_loop();
common_scripts\utility::flag_waitopen( "start_base_alarm" );
}
}
base_alarm_loop()
{
level endon( "start_base_alarm" );
for (;;)
{
self playsound( "emt_alarm_base_alert", "done_playing" );
self waittill( "done_playing" );
}
}
canyon_jumper_setup()
{
self endon( "death" );
var_0 = common_scripts\utility::get_target_ent();
if ( isdefined( var_0 ) )
{
if ( isdefined( var_0.target ) )
{
self waittill( "done_jumping_in" );
var_0 = var_0 common_scripts\utility::get_target_ent();
maps\_utility::follow_path_and_animate( var_0, 0 );
}
}
}
initial_depth_charge_run()
{
level endon( "start_big_wreck" );
wait 4.5;
for (;;)
{
common_scripts\utility::array_thread( common_scripts\utility::getstructarray( "depth_charge_test", "targetname" ), maps\ship_graveyard_util::depth_charge_org );
wait 4;
common_scripts\utility::array_thread( common_scripts\utility::getstructarray( "depth_charge_test_2", "targetname" ), maps\ship_graveyard_util::depth_charge_org );
wait 6.5;
common_scripts\utility::array_thread( common_scripts\utility::getstructarray( "depth_charge_test_3", "targetname" ), maps\ship_graveyard_util::depth_charge_org );
wait 6.5;
}
}
depth_charges()
{
maps\_utility::autosave_by_name( "depth_charges" );
common_scripts\utility::array_thread( common_scripts\utility::getstructarray( "depth_charge_test", "targetname" ), maps\ship_graveyard_util::depth_charge_org );
wait 1.5;
wait 2.75;
wait 1.5;
level notify( "stop_killing_player" );
common_scripts\utility::flag_clear( "allow_killfirms" );
thread initial_depth_charge_run();
thread random_depth_charges( "depth_charge_constant", 9, 13 );
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_depthcharges" );
maps\_utility::delaythread( 4, common_scripts\utility::flag_set, "depth_charge_run_start" );
thread depth_charge_enemy_check();
common_scripts\utility::flag_wait( "depth_charge_run_start" );
var_0 = getaiarray( "axis" );
foreach ( var_2 in var_0 )
var_2.baseaccuracy = 0.01;
maps\_utility::delaythread( 2, ::depth_charges_near_player );
thread depth_charge_dialogue();
thread depth_charge_death();
var_4 = getdvarfloat( "player_swimSpeed" );
setsaveddvar( "player_swimSpeed", 110 );
setsaveddvar( "player_sprintUnlimited", "1" );
level.baker maps\_utility::disable_ai_color();
var_5 = level.baker.pathrandompercent;
level.baker.pathrandompercent = 0;
level.baker maps\ship_graveyard_util::dyn_swimspeed_disable();
level.baker.moveplaybackrate = 1.55;
level.baker.movetransitionrate = level.baker.moveplaybackrate;
level.baker.a.disablepain = 1;
level.baker maps\_utility::disable_arrivals();
level.baker maps\_utility::delaythread( 0.3, maps\_utility::disable_exits );
level.baker.ignoreall = 1;
maps\ship_graveyard_util::baker_noncombat();
level.baker maps\_utility::delaythread( 0.1, maps\ship_graveyard_util::dyn_swimspeed_enable, 350 );
maps\ship_graveyard_util::baker_glint_on();
level.baker thread big_wreck_wait_turnaround();
level.baker maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "baker_enter_big_wreck" ), 0 );
var_0 = getaiarray( "axis" );
foreach ( var_2 in var_0 )
var_2 kill();
level.baker maps\ship_graveyard_util::dyn_swimspeed_disable();
level.baker.moveplaybackrate = 1;
level.baker.movetransitionrate = level.baker.moveplaybackrate;
level.baker.pathrandompercent = var_5;
level.baker maps\_utility::enable_arrivals();
level.baker.a.disablepain = 0;
level.baker.ignoreall = 0;
common_scripts\utility::flag_wait( "start_big_wreck" );
setsaveddvar( "player_sprintUnlimited", "0" );
}
depth_charge_enemy_check()
{
level endon( "depth_charge_run_start" );
var_0 = getaiarray( "axis" );
var_1 = 0.0;
foreach ( var_3 in var_0 )
{
var_3 thread kill_after_time( var_1 );
var_1 = var_1 + 0.75;
}
for (;;)
{
var_5 = 0;
var_0 = getaiarray( "axis" );
foreach ( var_3 in var_0 )
{
if ( distance( var_3.origin, level.player.origin ) < 1024 )
var_5 = var_5 + 1;
}
if ( var_5 > 0 )
{
wait 0.1;
continue;
}
break;
}
common_scripts\utility::flag_set( "depth_charge_run_start" );
}
kill_after_time( var_0 )
{
self endon( "death" );
common_scripts\utility::flag_wait( "depth_charge_run_start" );
wait( var_0 );
self kill();
}
depth_charge_dialogue()
{
level.baker animscripts\weaponlist::refillclip();
maps\_utility::smart_radio_dialogue( "shipg_bkr_takecover" );
wait 1;
maps\_utility::smart_radio_dialogue( "shipg_bkr_thiswaymovemove" );
}
depth_charge_death()
{
level endon( "start_big_wreck" );
var_0 = getentarray( "depth_charge_death", "targetname" );
common_scripts\utility::array_thread( var_0, ::depth_charge_death_trig );
wait 2;
if ( !common_scripts\utility::flag( "baker_prepare_to_leave_flag" ) )
{
for (;;)
{
wait 3;
if ( distance( level.player.origin, level.baker.origin ) < 600 )
{
wait 3;
continue;
}
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_takecover" );
wait 5;
if ( distance( level.player.origin, level.baker.origin ) > 600 )
depth_charge_death_trig_kill();
}
}
}
random_depth_charges( var_0, var_1, var_2 )
{
level endon( "stop_depth_charges" );
var_3 = maps\_utility::getstructarray_delete( var_0, "targetname" );
for (;;)
{
var_4 = anglestoforward( level.player.angles );
var_4 = var_4 * 500;
var_5 = sortbydistance( var_3, level.player.origin + var_4 );
var_5 = [ var_5[0], var_5[1], var_5[2] ];
var_6 = common_scripts\utility::random( var_5 );
var_6 thread maps\ship_graveyard_util::depth_charge_org();
wait( randomfloatrange( var_1, var_2 ) );
}
}
depth_charges_near_player()
{
level endon( "stop_depth_charges" );
for (;;)
{
var_0 = anglestoforward( level.player.angles );
var_1 = anglestoright( level.player.angles );
var_0 = var_0 * randomfloatrange( 100, 300 );
var_1 = var_1 * randomfloatrange( 50, 200 );
var_1 = var_1 * common_scripts\utility::random( [ -1, 1 ] );
thread maps\ship_graveyard_util::drop_depth_charge( level.player.origin + var_0 + var_1 );
wait( randomfloatrange( 4, 6 ) );
}
}
boat_fall_trigs()
{
var_0 = getentarray( "depth_charge_boat_fall_trigger", "targetname" );
common_scripts\utility::array_thread( var_0, ::depth_charge_boat_fall_trigger );
}
depth_charge_boat_fall_trigger()
{
var_0 = common_scripts\utility::get_target_ent();
self waittill( "trigger" );
var_0 thread maps\_utility::play_sound_on_entity( "scn_shipg_depth_charge_boat_fall" );
var_0 thread maps\ship_graveyard_new_trench::crash_model_go( var_0 common_scripts\utility::get_linked_ents() );
}
middle_room_fall()
{
var_0 = common_scripts\utility::get_target_ent( "big_wreck_middle_room_beam" );
var_1 = var_0 common_scripts\utility::get_linked_ent();
var_1 linkto( var_0 );
var_2 = var_0 common_scripts\utility::get_target_ent();
var_3 = var_0 common_scripts\utility::spawn_tag_origin();
var_3 linkto( var_0 );
playfxontag( common_scripts\utility::getfx( "underwater_object_trail" ), var_3, "Tag_origin" );
var_0 thread maps\_utility::play_sound_on_entity( "scn_shipg_titanic_debris_fall" );
var_0 maps\ship_graveyard_util::moveto_rotateto( var_2, 5, 3, 0 );
stopfxontag( common_scripts\utility::getfx( "underwater_object_trail" ), var_3, "Tag_origin" );
earthquake( 0.4, 0.7, var_0.origin, 2000 );
common_scripts\utility::play_sound_in_space( "scn_shipg_titanic_debris_crash", var_0.origin );
}
big_wreck_baker_stealth()
{
level endon( "big_wreck_shark" );
level.baker.goalradius = 32;
common_scripts\utility::flag_wait( "big_wreck_baker_path_1" );
thread middle_room_fall();
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_areaclear" );
wait 2;
var_0 = common_scripts\utility::get_target_ent( "big_wreck_baker_node_1" );
level.baker maps\_utility::follow_path_and_animate( var_0 );
wait 2;
common_scripts\utility::flag_wait( "big_wreck_baker_path_2" );
level.baker thread maps\ship_graveyard_util::dyn_swimspeed_enable();
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_zerocontacts" );
wait 1;
var_0 = common_scripts\utility::get_target_ent( "big_wreck_baker_node_2" );
level.baker setgoalnode( var_0 );
level.baker waittill( "goal" );
}
big_wreck_shark()
{
common_scripts\utility::flag_wait( "big_wreck_shark" );
maps\_utility::autosave_stealth();
level endon( "shark_eating_player" );
level endon( "start_shark_room" );
common_scripts\utility::exploder( "wreck_hallway" );
big_wreck_shark_baker_teleport();
var_0 = common_scripts\utility::get_target_ent( "big_wreck_baker_node_2" );
level.baker setgoalnode( var_0 );
var_1 = maps\_utility::spawn_targetname( "big_wreck_shark_model" );
var_1 thread maps\_utility::deletable_magic_bullet_shield();
var_1 thread attack_player_after_death();
thread shark_moment_2( var_1 );
thread big_wreck_track_player_gunfire();
maps\_utility::delaythread( 1.15, maps\_utility::music_play, "mus_shipgrave_shark_showup" );
maps\_utility::smart_radio_dialogue_interrupt( "shipg_bkr_easy2" );
wait 2.5;
maps\_utility::smart_radio_dialogue( "shipg_bkr_handsfull" );
wait 0.8;
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_inthemiddle" );
wait 1;
level.baker getenemyinfo( var_1 );
level.baker.ignoreall = 1;
level.baker clearenemy();
level.baker maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "to_shark_room_turn" ) );
level.baker.my_animnode = common_scripts\utility::get_target_ent( "big_wreck_2_baker_shark_entry" );
level.baker pushplayer( 1 );
level.baker.my_animnode maps\_anim::anim_generic_reach( level.baker, "shark_pit_in" );
level.baker thread baker_post_up_at_sharks();
var_1 thread maps\_utility::stop_magic_bullet_shield();
level.baker maps\_utility::waittill_player_lookat( 0.65 );
common_scripts\utility::flag_set( "start_shark_room" );
}
big_wreck_shark_baker_teleport()
{
var_0 = common_scripts\utility::get_target_ent( "big_wreck_shark_check" );
if ( !level.baker istouching( var_0 ) )
{
if ( !level.player maps\_utility::player_looking_at( level.baker.origin, 0.7 ) )
{
var_1 = common_scripts\utility::get_target_ent( "big_wreck_shark_teleport" );
if ( !level.player maps\_utility::player_looking_at( var_1.origin, 0.7, 0 ) )
level.baker forceteleport( var_1.origin, var_1.angles );
}
}
}
baker_post_up_at_sharks()
{
common_scripts\utility::flag_set( "baker_ready_at_sharks" );
level.baker.my_animnode maps\_anim::anim_generic( level.baker, "shark_pit_in" );
level.baker maps\_anim::anim_generic_loop( level.baker, "shark_pit_idle", "stop_loop" );
}
shark_room_pusher()
{
level endon( "shark_eating_player" );
level endon( "player_past_sharks" );
var_0 = ( 13610.7, -54317.2, 39.9686 );
var_1 = spawn( "trigger_radius", var_0, 0, 24, 24 );
for (;;)
{
var_1 waittill( "trigger" );
var_2 = vectornormalize( level.player.origin - var_1.origin );
level.player setvelocity( level.player getvelocity() + var_2 * 5 );
common_scripts\utility::waitframe();
}
}
shark_room()
{
level endon( "shark_eating_player" );
level endon( "player_warp_hesh" );
thread shark_room_pusher();
thread shark_room_end();
thread player_shoots_sharks();
common_scripts\utility::flag_wait( "big_wreck_shark" );
var_0 = maps\_utility::array_spawn_targetname( "big_wreck_shark_model_veh" );
common_scripts\utility::array_thread( var_0, ::attack_player_after_death );
common_scripts\utility::array_call( var_0, ::pushplayer, 0 );
common_scripts\utility::flag_wait( "start_shark_room" );
level.baker maps\ship_graveyard_util::dyn_swimspeed_disable();
level.baker.ignoreall = 1;
var_1 = common_scripts\utility::get_target_ent( "shark_room_trig" );
maps\_utility::smart_radio_dialogue_interrupt( "shipg_bkr_holdup" );
wait 1.5;
maps\_utility::smart_radio_dialogue( "shipg_bkr_doesntlook" );
wait 1;
maps\_utility::smart_radio_dialogue( "shipg_bkr_oneatatime" );
wait 1;
thread greenlight_end();
if ( !level.player istouching( var_1 ) )
{
thread shark_room_baker_first_dialogue();
thread tell_player_to_stay( var_1 );
}
else
{
maps\_utility::smart_radio_dialogue( "shipg_bkr_headstart" );
wait 1.5;
maps\_utility::smart_radio_dialogue( "shipg_bkr_noquick" );
wait 1.5;
maps\_utility::smart_radio_dialogue( "shipg_bkr_trytoanticipatetheir" );
wait 1;
maps\_utility::smart_radio_dialogue( "shipg_bkr_coveryou" );
common_scripts\utility::flag_wait( "player_past_sharks" );
wait 2;
maps\_utility::smart_radio_dialogue( "shipg_bkr_keepcovered" );
wait 2;
}
common_scripts\utility::flag_wait( "shark_b_clear_2" );
level.baker.moveplaybackrate = 0.5;
level.baker.movetransitionrate = level.baker.moveplaybackrate;
level.baker.goalradius = 32;
var_2 = common_scripts\utility::get_target_ent( "baker_wreck_stealth_path_3" );
level.baker notify( "stop_loop" );
level.baker setgoalnode( var_2 );
if ( common_scripts\utility::flag( "baker_ready_at_sharks" ) )
{
level.baker.my_animnode thread maps\_anim::anim_generic_run( level.baker, "shark_pit_out" );
level.baker maps\_utility::disable_exits();
level.baker.my_animnode waittill( "shark_pit_out" );
wait 0.1;
level.baker maps\_utility::enable_exits();
}
level.baker waittill( "goal" );
if ( maps\ship_graveyard_util::greenlight_check() && ( isdefined( level.start_point ) && level.start_point != "fallon" ) )
return;
while ( !common_scripts\utility::flag( "shark_a_clear" ) || !common_scripts\utility::flag( "shark_b_clear" ) )
wait 0.05;
common_scripts\utility::flag_set( "shark_room_player_can_go" );
level.baker.goalradius = 256;
var_2 = var_2 common_scripts\utility::get_target_ent();
level.baker.moveplaybackrate = 0.7;
level.baker.movetransitionrate = level.baker.moveplaybackrate;
level.baker setgoalnode( var_2 );
common_scripts\utility::flag_set( "baker_past_sharks" );
if ( !common_scripts\utility::flag( "player_past_sharks" ) )
{
level.baker.dontevershoot = 1;
level.baker.ignoreall = 0;
maps\_utility::autosave_stealth();
if ( !level.player istouching( var_1 ) )
{
maps\_utility::smart_radio_dialogue( "shipg_bkr_youreup" );
maps\ship_graveyard_util::baker_glint_on();
var_3 = getdvarint( "shpg_killed_by_shark", 0 );
if ( var_3 > 1 )
{
}
common_scripts\utility::trigger_off( "big_wreck_shatk_heartbeat_trig", "targetname" );
wait 2;
}
maps\_utility::smart_radio_dialogue( "shipg_bkr_noquick" );
wait 2;
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_trytoanticipatetheir" );
thread shark_room_faster_hint();
common_scripts\utility::flag_wait( "player_past_sharks" );
wait 1;
level.baker.dontevershoot = undefined;
level.baker.ignoreall = 1;
level.baker.moveplaybackrate = 1;
}
}
attack_player_after_death()
{
self waittill( "death" );
wait 0.1;
var_0 = level.deadly_sharks;
var_0 = maps\_utility::array_removedead( var_0 );
var_0 = common_scripts\utility::array_removeundefined( var_0 );
var_0 = sortbydistance( var_0, level.player.origin );
common_scripts\utility::flag_clear( "shark_eating_player" );
foreach ( var_2 in var_0 )
{
var_2 thread maps\ship_graveyard_util::shark_kill_player( 1 );
break;
}
}
shark_room_end()
{
common_scripts\utility::flag_wait( "start_shark_room" );
common_scripts\utility::flag_wait( "player_past_sharks" );
level.baker hudoutlinedisable();
common_scripts\utility::flag_waitopen( "shark_eating_player" );
common_scripts\utility::flag_wait_either( "player_warp_hesh", "baker_past_sharks" );
if ( common_scripts\utility::flag( "baker_past_sharks" ) )
level.baker thread maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "baker_wreck_stealth_path_4" ), 250 );
else if ( common_scripts\utility::flag( "player_warp_hesh" ) )
{
level.baker notify( "stop_loop" );
level.baker stopanimscripted();
level.baker.moveplaybackrate = 1;
level.baker.goalradius = 196;
var_0 = common_scripts\utility::get_target_ent( "baker_shark_room_teleport" );
level.baker forceteleport( var_0.origin, var_0.angles );
common_scripts\utility::flag_set( "baker_past_sharks" );
level.baker thread maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "baker_wreck_stealth_path_5" ), 250 );
}
level notify( "shark_room_player_can_go" );
thread maps\_utility::smart_radio_dialogue_interrupt( "shipg_bkr_letsgo" );
maps\ship_graveyard_util::baker_glint_off();
level.baker.moveplaybackrate = 1;
level.baker.movetransitionrate = level.baker.moveplaybackrate;
thread shark_safe_autosave();
level.baker.goalradius = 200;
level.baker thread maps\ship_graveyard_util::dyn_swimspeed_enable();
}
shark_safe_autosave()
{
level endon( "trying_new_autosave" );
while ( common_scripts\utility::flag( "player_near_shark" ) )
wait 0.05;
thread maps\_utility::autosave_stealth();
}
player_shoots_sharks()
{
var_0 = common_scripts\utility::get_target_ent( "shark_room_trig" );
common_scripts\utility::flag_wait( "shark_eating_player" );
if ( isdefined( level.baker.my_animnode ) )
level.baker.my_animnode notify( "stop_loop" );
level.baker stopanimscripted();
var_1 = 1;
while ( var_1 )
{
common_scripts\utility::flag_waitopen( "shark_eating_player" );
wait 1;
common_scripts\utility::flag_waitopen( "shark_eating_player" );
var_1 = 0;
foreach ( var_3 in level.deadly_sharks )
{
if ( var_3 istouching( var_0 ) )
{
var_1 = 1;
break;
}
}
}
if ( !common_scripts\utility::flag( "baker_past_sharks" ) )
{
var_5 = common_scripts\utility::get_target_ent( "baker_wreck_stealth_path_3" );
level.baker thread maps\_utility::follow_path_and_animate( var_5 );
}
common_scripts\utility::flag_set( "baker_past_sharks" );
maps\_utility::smart_radio_dialogue( "shipg_bkr_onme" );
}
shark_room_faster_hint()
{
level.player endon( "death" );
level endon( "shark_eating_player" );
level endon( "player_past_sharks" );
common_scripts\utility::flag_wait( "shark_room_close_to_exit" );
common_scripts\utility::flag_wait_either( "shark_a_clear_comeback", "shark_b_clear_comeback" );
maps\_utility::smart_radio_dialogue( "shipg_hsh_hurryuptheyrecoming" );
}
big_wreck_track_player_gunfire()
{
for (;;)
{
level.player waittill( "weapon_fired" );
wait 0.5;
level.deadly_sharks = maps\_utility::array_removedead( level.deadly_sharks );
level.deadly_sharks = common_scripts\utility::array_removeundefined( level.deadly_sharks );
if ( level.deadly_sharks.size > 0 )
{
var_0 = sortbydistance( level.deadly_sharks, level.player.origin );
for ( var_1 = 0; var_1 < level.deadly_sharks.size; var_1++ )
{
if ( distance( var_0[var_1].origin, level.player.origin ) < 800 )
{
var_2 = var_0[var_1] maps\ship_graveyard_util::shark_kill_player();
if ( isdefined( var_2 ) && var_2 )
break;
}
else
break;
}
}
wait 0.05;
}
}
shark_moment_2( var_0 )
{
var_1 = common_scripts\utility::get_target_ent( "big_wreck_shark_1_path" );
var_2 = common_scripts\utility::get_target_ent( "shark_moment_2" );
var_3 = common_scripts\utility::get_target_ent( "shark_moment_2_sound" );
var_0.animnode = var_2;
var_0.animname = "shark";
var_0 thread maps\ship_graveyard_util::shark_kill_think();
var_0 endon( "killing_player" );
var_0 endon( "death" );
var_0 maps\_utility::follow_path_and_animate( var_1, 0 );
}
shark_attack_2_fx( var_0, var_1 )
{
wait 3.75;
thread common_scripts\utility::play_sound_in_space( "scn_shark_bite_flesh", var_0 gettagorigin( "j_knee_ri" ) );
playfx( common_scripts\utility::getfx( "swim_ai_blood_impact" ), var_0 gettagorigin( "j_knee_ri" ) );
wait 0.25;
thread common_scripts\utility::play_sound_in_space( "scn_shark_bite_flesh", var_0 gettagorigin( "j_knee_ri" ) );
playfxontag( common_scripts\utility::getfx( "swim_ai_death_blood" ), var_0, "j_knee_ri" );
common_scripts\utility::exploder( 10 );
}
shark_room_baker_first_dialogue()
{
level endon( "told_player_to_stay" );
maps\_utility::smart_radio_dialogue( "shipg_bkr_gofirst" );
wait 1.5;
if ( !maps\ship_graveyard_util::greenlight_check() )
maps\_utility::smart_radio_dialogue( "shipg_bkr_stayhere" );
wait 2;
}
tell_player_to_stay( var_0 )
{
level endon( "shark_eating_player" );
level endon( "shark_room_player_can_go" );
var_0 waittill( "trigger" );
level notify( "told_player_to_stay" );
maps\_utility::smart_radio_dialogue_interrupt( "shipg_bkr_stop" );
wait 1;
maps\_utility::smart_radio_dialogue( "shipg_bkr_onlyroom" );
wait 1;
maps\_utility::smart_radio_dialogue( "shipg_bkr_atentrance" );
}
big_wreck_wait_turnaround()
{
level.baker waittill( "path_end_reached" );
common_scripts\utility::flag_set( "big_wreck_wait_turnaround" );
}
big_wreck_dialogue()
{
maps\ship_graveyard_util::baker_noncombat();
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_saferhere" );
wait 2;
maps\ship_graveyard_util::baker_glint_off();
level.baker.pathrandompercent = 0;
level.baker.goalradius = 128;
maps\_utility::delaythread( 3.5, maps\_utility::smart_radio_dialogue, "shipg_bkr_eyeout" );
wait 0.5;
level.baker maps\_utility::disable_exits();
common_scripts\utility::flag_wait( "big_wreck_wait_turnaround" );
level.baker thread maps\_anim::anim_generic( level.baker, "swimming_idle_to_aiming_move_180" );
level.baker thread maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "baker_enter_big_wreck_inside" ) );
level.baker waittill( "swimming_idle_to_aiming_move_180" );
wait 0.2;
level.baker maps\_utility::enable_exits();
common_scripts\utility::flag_wait( "inside_big_wreck" );
maps\_utility::autosave_by_name( "big_wreck" );
level notify( "stop_depth_charges" );
var_0 = getaiarray( "axis" );
common_scripts\utility::array_call( var_0, ::delete );
}
big_wreck_encounter()
{
maps\_utility::trigger_wait_targetname( "big_wreck_spawn_1" );
level.baker maps\_utility::set_force_color( "r" );
wait 0.1;
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_contact" );
for (;;)
{
var_0 = getaiarray( "axis" );
if ( var_0.size <= 1 )
break;
wait 0.1;
}
level.baker.maxfaceenemydist = 64;
wait 1;
var_0 = getaiarray( "axis" );
if ( var_0.size > 0 )
{
foreach ( var_2 in var_0 )
var_2 setgoalentity( level.player );
}
}
big_wreck_kill_when_outside()
{
var_0 = common_scripts\utility::get_target_ent( "big_wreck_outside" );
var_0 thread depth_charge_death_trig();
}
depth_charge_death_trig()
{
self waittill( "trigger" );
depth_charge_death_trig_kill();
}
depth_charge_death_trig_kill()
{
playfx( common_scripts\utility::getfx( "shpg_underwater_explosion_med_a" ), level.player.origin );
thread common_scripts\utility::play_sound_in_space( "underwater_explosion", level.player.origin );
earthquake( 0.6, 0.75, level.player.origin, 1024 );
level.player viewkick( 15, level.player.origin );
level.player shellshock( "depth_charge_hit", 2.5 );
wait 0.3;
radiusdamage( level.player.origin, 300, 100, 20 );
wait 1;
level.player kill();
}
big_wreck_fake_shake()
{
level endon( "stop_wreck_shake" );
var_0 = maps\_utility::getstructarray_delete( "depth_charge_sound_source", "targetname" );
var_1 = maps\_utility::getstructarray_delete( "big_wreck_shake_org", "targetname" );
for (;;)
{
wait( randomfloatrange( 1, 2 ) );
var_2 = common_scripts\utility::random( var_0 );
var_3 = randomfloatrange( 0.2, 0.4 );
thread common_scripts\utility::play_sound_in_space( "underwater_explosion_muffled", var_2.origin );
cave_shake( var_3, var_1, "scn_shipg_wreck_rattle" );
wait( randomfloatrange( 1, 6 ) );
}
}
big_wreck_2_dialogue()
{
common_scripts\utility::flag_wait( "player_inside_glass_room" );
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_stayaway" );
maps\_utility::trigger_wait_targetname( "baker_down_hatch" );
maps\_utility::smart_radio_dialogue( "shipg_bkr_hatchmove" );
}
watch_baker_prepare_to_leave_trig()
{
maps\_utility::trigger_wait_targetname( "baker_prepare_to_leave_trig" );
common_scripts\utility::flag_set( "baker_prepare_to_leave_flag" );
thread depth_charge_death();
}
big_wreck_collapse()
{
thread watch_baker_prepare_to_leave_trig();
common_scripts\utility::flag_wait( "big_wreck_out" );
if ( maps\_utility::is_gen4() )
{
var_0 = getdvarfloat( "r_tessellationCutoffDistanceBase", 960.0 );
var_1 = getdvarfloat( "r_tessellationCutoffFalloffBase", 320.0 );
thread maps\_art::tess_set_goal( var_0, var_1, 3 );
thread maps\_utility::lerp_saveddvar( "r_tessellationFactor", 25, 10 );
}
thread exit_wreck_check();
thread common_scripts\utility::play_sound_in_space( "scn_shipg_end_collapse", ( 12539, -53384, 152 ) );
thread common_scripts\utility::play_sound_in_space( "scn_shipg_end_collapse_layer", ( 12378, -53513, 93 ) );
thread common_scripts\utility::exploder( 97 );
wait 0.5;
thread common_scripts\utility::exploder( 101 );
var_2 = common_scripts\utility::get_target_ent( "out_of_wreck_volume" );
if ( level.player istouching( var_2 ) )
{
musicstop( 1 );
level.player givemaxammo( level.player getcurrentweapon() );
level.player thread maps\ship_graveyard_util::delay_reset_swim_shock( 2 );
level.player disableweapons();
level.player common_scripts\utility::delaycall( 2, ::enableweapons );
}
else
level.player kill();
maps\_utility::smart_radio_dialogue( "shipg_bkr_pain2" );
wait 1;
maps\_utility::smart_radio_dialogue( "shipg_bkr_intheclear" );
thread maps\_utility::music_play( "mus_shipgrave_collapse_travel" );
if ( !common_scripts\utility::flag( "exiting_to_end" ) )
{
wait 0.5;
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_thisway2" );
}
maps\_utility::autosave_by_name( "end" );
setsaveddvar( "player_swimSpeed", 120 );
level.baker pushplayer( 1 );
level.baker.dontchangepushplayer = 1;
level.baker.goalradius = 256;
level.baker.moveplaybackrate = 1.7;
level.baker.movetransitionrate = level.baker.moveplaybackrate;
level.baker.pathrandompercent = 0;
level.baker maps\_utility::disable_exits();
level.baker thread maps\_anim::anim_generic_run( level.baker, "swimming_idle_to_aiming_move_180" );
level.baker setgoalnode( common_scripts\utility::get_target_ent( "baker_prepare_to_leave" ) );
common_scripts\utility::flag_wait( "baker_prepare_to_leave_flag" );
level.baker thread maps\ship_graveyard_util::dyn_swimspeed_enable();
level.baker thread maps\_utility::follow_path_and_animate( common_scripts\utility::get_target_ent( "baker_end_level_path" ) );
level.baker maps\_utility::delaythread( 2, maps\_utility::enable_exits );
thread end_dialogue();
common_scripts\utility::flag_wait( "the_end" );
level notify( "stop_depth_charges" );
}
exit_wreck_check()
{
maps\_utility::trigger_wait_targetname( "baker_prepare_to_leave_trig" );
common_scripts\utility::flag_set( "exiting_to_end" );
}
end_dialogue()
{
wait 7;
maps\_utility::smart_radio_dialogue( "shipg_bkr_rallypointecho" );
wait 0.5;
maps\_utility::smart_radio_dialogue( "shipg_orb_goodtohear" );
wait 0.2;
maps\_utility::smart_radio_dialogue( "shipg_bkr_ihearya" );
wait 1;
maps\_utility::smart_radio_dialogue( "shipg_orb_greenlit" );
wait 0.3;
thread maps\_hud_util::fade_out( 4 );
maps\_utility::smart_radio_dialogue( "shipg_bkr_seeyoutopside" );
maps\_utility::nextmission();
}
delay_remove_invul()
{
level endon( "killed_a_guy" );
wait 4;
level.player disableinvulnerability();
}
final_stand_dialogue()
{
maps\_utility::smart_radio_dialogue( "shipg_bkr_doorsjammed" );
wait 1;
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_watchmyback" );
}
player_notify_on_lookup()
{
var_0 = common_scripts\utility::get_target_ent( "big_wreck_player_looking_up" );
var_0 maps\_utility::waittill_player_lookat( 0.7 );
level.player notify( "player_looking_up" );
}
door_open()
{
var_0 = common_scripts\utility::get_target_ent();
var_1 = var_0.angles;
self rotateto( var_1, 0.5, 0, 0.3 );
}
underwater_flood_spawn()
{
level endon( "wreck_ceiling_collapse" );
for (;;)
{
var_0 = maps\_utility::spawn_ai( 1 );
var_0 thread maps\ship_graveyard_util::teleport_to_target();
var_0 waittill( "death" );
level notify( "killed_a_guy" );
wait( randomfloatrange( 2, 4 ) );
}
}
big_wreck_tilt()
{
common_scripts\utility::flag_wait( "wreck_tilt" );
wait 2.5;
thread common_scripts\utility::play_sound_in_space( "underwater_explosion", level.player.origin );
earthquake( 0.2, 0.75, level.player.origin, 1024 );
thread wreck_tilt_baker_hurt();
var_0 = common_scripts\utility::spawn_tag_origin();
level.player playersetgroundreferenceent( var_0 );
var_0 rotateto( ( 330, 0, 0 ), 0.6, 0, 0.4 );
level.player disableweapons();
level.player shellshock( "default", 2 );
level.player thread maps\ship_graveyard_util::delay_reset_swim_shock( 3 );
level.player common_scripts\utility::delaycall( 3, ::enableweapons );
var_0 waittill( "rotatedone" );
var_0 rotateto( ( 0, 0, 0 ), 0.8, 0.6, 0.1 );
var_0 waittill( "rotatedone" );
level.player playersetgroundreferenceent( undefined );
var_0 delete();
}
wreck_tilt_baker_hurt()
{
thread maps\_utility::smart_radio_dialogue( "shipg_bkr_pain2", 0.1 );
var_0 = level.baker common_scripts\utility::spawn_tag_origin();
level.baker linkto( var_0, "tag_origin" );
level.baker dodamage( 50, level.baker.origin + ( 0, 0, 0 ) );
var_0 rotateto( ( 30, 0, 0 ), 0.6, 0, 0.4 );
var_0 waittill( "rotatedone" );
var_0 rotateto( ( 0, 0, 0 ), 0.8, 0.6, 0.1 );
var_0 waittill( "rotatedone" );
level.baker unlink();
var_0 delete();
}
greenlight_skip()
{
if ( !maps\ship_graveyard_util::greenlight_check() )
return;
wait 3;
common_scripts\utility::flag_set( "greenlight_next_phase" );
level.player setclienttriggeraudiozone( "ship_graveyard_e3_black", 5 );
maps\_hud_util::fade_out( 3 );
level.baker setgoalpos( level.baker.origin );
wait 1;
maps\_utility::music_stop( 2 );
wait 2;
level notify( "e3_in_wreck" );
}
greenlight_end()
{
if ( !maps\ship_graveyard_util::greenlight_check() || isdefined( level.start_point ) && level.start_point == "fallon" )
return;
maps\_utility::battlechatter_off( "allies" );
thread maps\_utility::set_audio_zone( "ship_graveyard_gl_fadeout_end", 5.5 );
wait 5.65;
maps\_hud_util::fade_out( 0.05 );
if ( level.start_point == "e3" )
{
wait 0.1;
maps\ship_graveyard_util::set_start_positions( "sonar_event" );
}
level.player freezecontrols( 1 );
wait 11;
maps\_utility::nextmission();
}
end_tunnel_swim()
{
var_0 = getent( "trig_swim_up_transition_out", "targetname" );
var_0 waittill( "trigger" );
var_1 = 2;
maps\_hud_util::fade_out( var_1 );
thread stop_player_fire_sounds( var_1 );
level.player thread maps\_utility::play_sound_on_entity( "enemy_water_splash" );
common_scripts\utility::flag_set( "go_to_surface" );
}
stop_player_fire_sounds( var_0 )
{
wait( var_0 );
level.player disableweapons();
}
end_surface()
{
var_0 = common_scripts\utility::get_target_ent( "surface_ai_clip_end" );
var_0 moveto( var_0.origin + ( 0, 0, -28.5 ), 0.01 );
common_scripts\utility::flag_wait( "go_to_surface" );
level.player setclienttriggeraudiozone( "ship_graveyard_abovewater_end", 1 );
level notify( "stop_particulates" );
if ( !isdefined( level.ground_ref_ent ) )
{
level.ground_ref_ent = common_scripts\utility::spawn_tag_origin();
level.ground_ref_ent.script_duration = 1;
}
level.ground_ref_ent.script_max_left_angle = 1;
level.player playersetgroundreferenceent( level.ground_ref_ent );
level.ground_ref_ent thread maps\ship_graveyard_surface::pitch_and_roll();
level.player setorigin( common_scripts\utility::get_target_ent( "end_tunnel_above_surface" ).origin );
level.player setplayerangles( common_scripts\utility::get_target_ent( "end_tunnel_above_surface" ).angles );
level notify( "end_swimming" );
setsaveddvar( "player_swimWaterCurrent", "0 0 0" );
setsaveddvar( "g_gravity", 800 );
setsaveddvar( "sm_sunshadowscale", 1 );
setsaveddvar( "sm_sunsamplesizeNear", 1 );
maps\_art::dof_set_base( 1, 1, 4.5, 500, 500, 0.05, 0 );
if ( isdefined( level.distorg ) )
level.distorg delete();
var_1 = common_scripts\utility::get_target_ent( "baker_end" );
level.baker_end = var_1 maps\_utility::spawn_ai( 1 );
level.baker_end thread maps\_utility::magic_bullet_shield();
level.baker_end.animname = "baker";
level.baker_end maps\_utility::set_generic_idle_anim( "surface_swim_idle" );
level.player thread maps\_swim_player::disable_player_swim();
level.player notify( "stop_scuba_breathe" );
level.player allowcrouch( 0 );
level.player allowprone( 0 );
level.player allowjump( 0 );
level.player_view_pitch_down = getdvar( "player_view_pitch_down" );
setsaveddvar( "player_view_pitch_down", 5 );
level.player enableslowaim( 0.5, 0.5 );
level.player disableweapons();
level.player maps\_utility::player_speed_percent( 100, 0.1 );
level.player maps\_utility::player_speed_percent( 10, 0.1 );
wait 0.25;
thread maps\_hud_util::fade_in( 0.25 );
playfx( common_scripts\utility::getfx( "large_water_impact_surface_breach" ), level.player.origin );
level.player thread maps\_utility::play_sound_on_entity( "enemy_water_splash" );
wait 1;
maps\_utility::smart_radio_dialogue( "shipg_orb_greenlit" );
wait 0.3;
thread maps\_hud_util::fade_out( 4 );
maps\_utility::smart_radio_dialogue( "shipg_bkr_seeyoutopside" );
level.player setclienttriggeraudiozone( "ship_graveyard_fadeout_end", 2.1 );
wait 3.5;
maps\_utility::nextmission();
}