753 lines
25 KiB
Plaintext
753 lines
25 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
interroation_scene()
|
|
{
|
|
common_scripts\utility::flag_init( "vargas_at_edge" );
|
|
common_scripts\utility::flag_init( "iplane_start_intro_anim" );
|
|
common_scripts\utility::flag_init( "iplane_player_holding_vargas" );
|
|
common_scripts\utility::flag_init( "player_can_push_chair" );
|
|
common_scripts\utility::flag_init( "iplane_drag_talk_done" );
|
|
common_scripts\utility::flag_init( "iplane_start_drag_anim" );
|
|
common_scripts\utility::flag_init( "finish_dialogue" );
|
|
thread ropes();
|
|
thread clouds();
|
|
maps\_hud_util::fade_out( 0 );
|
|
maps\_utility::battlechatter_off( "allies" );
|
|
maps\_utility::battlechatter_off( "axis" );
|
|
level.earthquake_min = 0.05;
|
|
level.earthquake_max = 0.075;
|
|
thread plane_quakes();
|
|
thread open_the_ramp();
|
|
thread connect_and_start_tarps();
|
|
level.player shellshock( "plane_sway", 9999 );
|
|
var_0 = getaiarray();
|
|
common_scripts\utility::array_call( var_0, ::unlink );
|
|
set_start_positions( "start_plane_interrogation" );
|
|
var_1 = common_scripts\utility::get_target_ent( "interrogation_main_node" );
|
|
var_2 = [ level.elias, level.vargas, level.hesh, level.merrick, level.keegan ];
|
|
var_1 thread maps\_anim::anim_first_frame( var_2, "int_intro" );
|
|
var_3 = common_scripts\utility::spawn_tag_origin();
|
|
var_3.origin = var_1.origin;
|
|
var_3.angles = var_1.angles;
|
|
level.elias set_unarmed_walk();
|
|
level.hesh set_unarmed_walk();
|
|
level.merrick set_unarmed_walk();
|
|
level.elias thread get_pistol_plane_attack();
|
|
level.elias thread do_elias_head_look();
|
|
thread blackscreen_intro( var_3 );
|
|
level.player_rig = maps\_utility::spawn_anim_model( "player_rig" );
|
|
common_scripts\utility::flag_wait( "iplane_start_intro_anim" );
|
|
thread intro_logic( var_2, var_1, var_3 );
|
|
wait 27.5;
|
|
thread drag_nag( 0 );
|
|
level thread wait_for_player_use_rourke();
|
|
level.vargas waittill( "trigger" );
|
|
level.vargas makeunusable();
|
|
level notify( "stop_nag" );
|
|
thread player_hold_vargas( var_3 );
|
|
common_scripts\utility::flag_wait( "player_can_push_chair" );
|
|
wait 1;
|
|
level.elias maps\_utility::smart_dialogue( "iplane_els_bringthatbastardover" );
|
|
thread drag_vargas_to_edge( var_3 );
|
|
common_scripts\utility::flag_wait( "iplane_player_holding_vargas" );
|
|
common_scripts\utility::flag_set( "iplane_start_drag_anim" );
|
|
wait 1.5;
|
|
common_scripts\utility::flag_set( "player_activated_ramps_open" );
|
|
wait 21;
|
|
common_scripts\utility::flag_set( "iplane_drag_talk_done" );
|
|
thread drag_nag( 1 );
|
|
common_scripts\utility::flag_wait( "vargas_at_edge" );
|
|
level notify( "stop_nag" );
|
|
level notify( "drop_vargas" );
|
|
level notify( "stop_plane_quakes" );
|
|
thread stop_drag_sounds( var_3 );
|
|
stopallrumbles();
|
|
wait 2;
|
|
level.earthquake_min = 0.175;
|
|
level.earthquake_max = 0.2;
|
|
thread plane_quakes();
|
|
wait 1;
|
|
wait 0.5;
|
|
level waittill( "start_plane_attack" );
|
|
common_scripts\utility::flag_set( "raise_enemy_plane" );
|
|
wait 1;
|
|
level.chair_vargas_2 unlink();
|
|
}
|
|
|
|
wait_for_player_use_rourke()
|
|
{
|
|
level.vargas endon( "trigger" );
|
|
var_0 = getent( "player_use_vargas", "targetname" );
|
|
var_1 = spawn( "script_origin", var_0.origin );
|
|
var_2 = getent( "v_use_trigger", "targetname" );
|
|
var_3 = getent( "player_push_lookat", "targetname" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( level.player istouching( var_0 ) )
|
|
{
|
|
if ( level.player maps\_utility::player_looking_at( var_3.origin ) )
|
|
{
|
|
if ( distance2d( level.player.origin, var_0.origin ) <= 15 )
|
|
{
|
|
level.vargas makeusable();
|
|
level.vargas sethintstring( &"JUNGLE_GHOSTS_RORKE_PUSH" );
|
|
wait 0.05;
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
|
|
wait 0.05;
|
|
level.vargas makeunusable();
|
|
}
|
|
}
|
|
|
|
get_pistol_plane_attack()
|
|
{
|
|
level waittill( "equip_pistol" );
|
|
maps\_utility::forceuseweapon( "p226", "primary" );
|
|
wait 2;
|
|
level.player enableweapons();
|
|
level.player giveweapon( "p226" );
|
|
level.player switchtoweapon( "p226" );
|
|
level.player setweaponammoclip( "p226", 0 );
|
|
common_scripts\utility::flag_wait( "start_explosion_breach" );
|
|
level.player takeweapon( "p226" );
|
|
level.player disableweapons();
|
|
}
|
|
|
|
do_elias_head_look()
|
|
{
|
|
level endon( "inter_done" );
|
|
|
|
for (;;)
|
|
{
|
|
level waittill( "headlook_start" );
|
|
level.elias setlookatentity( level.vargas );
|
|
level waittill( "end_headlook" );
|
|
level.elias setlookatentity();
|
|
}
|
|
}
|
|
|
|
intro_logic( var_0, var_1, var_2 )
|
|
{
|
|
var_0 = [ level.elias, level.hesh, level.merrick, level.keegan, level.chair_vargas_2 ];
|
|
var_1 thread maps\_anim::anim_single( var_0, "int_intro" );
|
|
level.player_rig thread handle_player_punch_animation( var_1 );
|
|
var_2 maps\_anim::anim_single_solo( level.vargas, "int_intro" );
|
|
level.vargas linkto( var_2 );
|
|
|
|
foreach ( var_4 in var_0 )
|
|
var_4 thread create_node_and_idle( var_1, "int_intro_idle" );
|
|
|
|
level.chair_vargas_2 linkto( var_2 );
|
|
var_2 thread maps\_anim::anim_loop_solo( level.vargas, "int_intro_idle" );
|
|
common_scripts\utility::flag_set( "player_can_push_chair" );
|
|
common_scripts\utility::flag_wait( "iplane_start_drag_anim" );
|
|
common_scripts\utility::flag_set( "elias_activated_button" );
|
|
level.elias maps\_utility::delaythread( 1.1, common_scripts\utility::play_sound_in_space, "scn_iplane_elias_press_button", ( 14993, -29610, -36942 ) );
|
|
level thread drag_animation( var_0, var_2, var_1 );
|
|
level waittill( "drop_vargas" );
|
|
level.hesh unlink();
|
|
level.player enableslowaim( 0.3, 0.3 );
|
|
level.player playerlinktodelta( level.player_rig, "tag_origin", 1, 90, 10, 40, 10 );
|
|
var_6 = common_scripts\utility::get_target_ent( "interrogation_slam_node" );
|
|
var_7 = common_scripts\utility::get_target_ent( "vargas_drag_1" );
|
|
var_8 = common_scripts\utility::get_target_ent( "int_player_drop_vargas" );
|
|
level.elias notify( "stop_loop" );
|
|
var_2 notify( "stop_loop" );
|
|
level.elias unlink();
|
|
level.vargas unlink();
|
|
var_1 thread maps\_anim::anim_single( [ level.vargas, level.elias, level.hesh, level.chair_vargas_2 ], "int_slam" );
|
|
wait 1.1;
|
|
level.player lerpfov( 55, 2 );
|
|
var_9 = 0.5;
|
|
var_10 = 0.75;
|
|
level.player_rig moveto( var_8.origin, var_10, 0.25, 0 );
|
|
level.player_rig rotateto( var_8.angles, var_10, 0.25, 0 );
|
|
earthquake( 0.4, 1.75, level.player.origin, 500 );
|
|
level notify( "inter_done" );
|
|
}
|
|
|
|
handle_player_punch_animation( var_0 )
|
|
{
|
|
level.player playerlinktoabsolute( self, "tag_player" );
|
|
wait 0.1;
|
|
maps\_art::dof_enable_script( 1, 2, 6, 20, 30, 5, 1.0 );
|
|
thread dot();
|
|
var_0 maps\_anim::anim_single_solo( self, "intro_punch" );
|
|
level.player unlink();
|
|
self hide();
|
|
}
|
|
|
|
dot()
|
|
{
|
|
wait 11;
|
|
maps\_art::dof_enable_script( 1, 2, 6, 60, 600, 5, 7.0 );
|
|
wait 20;
|
|
maps\_art::dof_disable_script( 0.1 );
|
|
}
|
|
|
|
drag_animation( var_0, var_1, var_2 )
|
|
{
|
|
level endon( "drop_vargas" );
|
|
|
|
foreach ( var_4 in var_0 )
|
|
var_4.animnode notify( "stop_loop" );
|
|
|
|
var_1 notify( "stop_loop" );
|
|
var_2 thread do_elias_int_anim();
|
|
var_2 thread maps\_anim::anim_single_solo( level.hesh, "int_drag" );
|
|
var_1 maps\_anim::anim_single_solo( level.vargas, "int_drag" );
|
|
common_scripts\utility::flag_set( "finish_dialogue" );
|
|
var_1 thread maps\_anim::anim_loop( [ level.vargas, level.hesh ], "int_intro_idle" );
|
|
}
|
|
|
|
do_elias_int_anim()
|
|
{
|
|
maps\_anim::anim_single_solo( level.elias, "int_drag" );
|
|
level.elias thread maps\_anim::anim_loop_solo( level.elias, "int_drag_idle" );
|
|
var_0 = common_scripts\utility::spawn_tag_origin();
|
|
var_0.origin = level.elias.origin;
|
|
var_0.angles = ( 0, 0, 0 );
|
|
level.elias linkto( var_0 );
|
|
var_0 rotateyaw( -110, 4 );
|
|
}
|
|
|
|
create_node_and_idle( var_0, var_1 )
|
|
{
|
|
if ( self == level.merrick )
|
|
wait 1.5;
|
|
|
|
self.animnode = spawnstruct();
|
|
self.animnode.origin = var_0.origin;
|
|
self.animnode.angles = var_0.angles;
|
|
self.animnode thread maps\_anim::anim_loop_solo( self, var_1 );
|
|
}
|
|
|
|
drag_nag( var_0 )
|
|
{
|
|
level endon( "stop_nag" );
|
|
var_1 = "iplane_els_loganbringrorketo";
|
|
level.chair_nags = [ "iplane_els_loganbringrorketo", "iplane_els_gethimonthe", "iplane_els_pushhimoverhere", "iplane_els_bringhimbackhere" ];
|
|
level.nag_index = 0;
|
|
wait 4;
|
|
|
|
for (;;)
|
|
{
|
|
say_nag_after_delay( level.chair_nags[level.nag_index], 5, var_0 );
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
say_nag_after_delay( var_0, var_1, var_2 )
|
|
{
|
|
level endon( "stop_nag" );
|
|
wait( var_1 );
|
|
level.nag_index = ( level.nag_index + 1 ) % level.chair_nags.size;
|
|
level.elias maps\_utility::smart_dialogue( var_0 );
|
|
}
|
|
|
|
merrick_move_to_edge()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent( "int_merrick_door_node" );
|
|
var_0 maps\_anim::anim_reach_solo( level.merrick, "merrick_wait_at_door" );
|
|
var_0 thread maps\_anim::anim_loop_solo( level.merrick, "merrick_wait_at_door" );
|
|
}
|
|
|
|
drag_vargas_to_edge( var_0 )
|
|
{
|
|
var_1 = common_scripts\utility::get_target_ent( "vargas_drag_temp" );
|
|
level.vargas linkto( var_0 );
|
|
level.hesh linkto( var_0 );
|
|
level.player_rig linkto( var_0 );
|
|
var_2 = distance( var_0.origin, var_1.origin );
|
|
var_3 = 15.0;
|
|
var_4 = var_2 / var_3;
|
|
common_scripts\utility::flag_init( "vargas_drag" );
|
|
thread drag_hints( var_0, var_1, var_4 );
|
|
thread drag_on_ls( var_0, var_1, var_4 );
|
|
thread drag_sounds( var_0, var_1, var_4 );
|
|
maps\_utility::trigger_wait_targetname( "plane_shake_inc1" );
|
|
level.earthquake_min = 0.1;
|
|
level.earthquake_max = 0.175;
|
|
maps\_utility::trigger_wait_targetname( "plane_shake_inc2" );
|
|
level.earthquake_min = 0.15;
|
|
level.earthquake_max = 0.2;
|
|
}
|
|
|
|
drag_sounds( var_0, var_1, var_2 )
|
|
{
|
|
level endon( "drop_vargas" );
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( "vargas_drag" );
|
|
var_0 playsound( "chair_mvmt_start", "chair_mvmt_start_done" );
|
|
wait 0.2;
|
|
var_0 playloopsound( "chair_mvmt_loop" );
|
|
level.player lerpfov( 55, 2 );
|
|
common_scripts\utility::flag_waitopen( "vargas_drag" );
|
|
thread stop_drag_sounds( var_0 );
|
|
var_0 playsound( "chair_mvmt_end" );
|
|
level.player lerpfov( 65, 2 );
|
|
}
|
|
}
|
|
|
|
stop_drag_sounds( var_0 )
|
|
{
|
|
wait 0.4;
|
|
var_0 stoploopsound( "chair_mvmt_loop" );
|
|
}
|
|
|
|
drag_hints( var_0, var_1, var_2 )
|
|
{
|
|
level endon( "drop_vargas" );
|
|
level.old_dist = distance( var_0.origin, var_1.origin );
|
|
wait 4;
|
|
|
|
for (;;)
|
|
{
|
|
if ( level.old_dist - distance( var_0.origin, var_1.origin ) < 6 )
|
|
maps\_utility::display_hint( "hint_drag" );
|
|
|
|
wait 1;
|
|
}
|
|
}
|
|
|
|
drag_on_ls( var_0, var_1, var_2 )
|
|
{
|
|
level endon( "drop_vargas" );
|
|
|
|
for (;;)
|
|
{
|
|
var_3 = level.player getnormalizedmovement();
|
|
|
|
if ( var_3[0] > 0.1 )
|
|
{
|
|
level notify( "player_pushing" );
|
|
var_4 = vectornormalize( var_1.origin - var_0.origin );
|
|
var_5 = var_2 * 0.07 * ( var_3[0] + 0.01 );
|
|
|
|
if ( common_scripts\utility::flag( "iplane_drag_talk_done" ) )
|
|
var_5 = var_5 * 2;
|
|
|
|
var_6 = length( var_1.origin - var_0.origin );
|
|
|
|
if ( var_5 > var_6 )
|
|
var_5 = var_6;
|
|
|
|
var_0 moveto( var_0.origin + var_5 * var_4, 0.1 );
|
|
level.old_dist = distance( var_0.origin, var_1.origin ) - var_5;
|
|
level.player playrumbleonentity( "tank_rumble" );
|
|
common_scripts\utility::flag_set( "vargas_drag" );
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::flag_clear( "vargas_drag" );
|
|
stopallrumbles();
|
|
wait 0.5;
|
|
}
|
|
|
|
wait 0.05;
|
|
|
|
if ( distance( var_1.origin, var_0.origin ) < 1 )
|
|
{
|
|
common_scripts\utility::flag_clear( "vargas_drag" );
|
|
common_scripts\utility::flag_wait( "finish_dialogue" );
|
|
common_scripts\utility::flag_set( "vargas_at_edge" );
|
|
}
|
|
}
|
|
}
|
|
|
|
player_hold_vargas( var_0 )
|
|
{
|
|
var_1 = common_scripts\utility::get_target_ent( "int_player_hold_vargas" );
|
|
level.player_rig = maps\_utility::spawn_anim_model( "player_rig", var_1.origin );
|
|
level.player_rig.origin = var_1.origin;
|
|
level.player_rig.angles = var_1.angles + ( -60, 0, 0 );
|
|
level.player_rig hide();
|
|
var_2 = common_scripts\utility::get_target_ent( "interrogation_main_node" );
|
|
var_0 thread maps\_anim::anim_first_frame_solo( level.player_rig, "int_intro" );
|
|
level.player allowcrouch( 0 );
|
|
level.player allowprone( 0 );
|
|
maps\_art::dof_enable_script( 0, 0, 10, 50, 7000, 6, 2 );
|
|
thread blend_player_position();
|
|
common_scripts\utility::flag_set( "iplane_player_holding_vargas" );
|
|
level.player thread maps\_utility::play_sound_on_entity( "scn_iplane_plr_grab_chair" );
|
|
wait 0.8;
|
|
var_0 maps\_anim::anim_single_solo( level.player_rig, "int_intro" );
|
|
wait 0.5;
|
|
var_0 thread maps\_anim::anim_loop_solo( level.player_rig, "int_drag_idle" );
|
|
level waittill( "drop_vargas" );
|
|
thread common_scripts\utility::play_sound_in_space( "scn_iplane_elias_push_rorke_over", level.player.origin );
|
|
var_2 thread maps\_anim::anim_single_solo( level.player_rig, "int_slam" );
|
|
wait 2.2;
|
|
level.player playrumbleonentity( "artillery_rumble" );
|
|
}
|
|
|
|
blend_player_position()
|
|
{
|
|
level.player playerlinktoblend( level.player_rig, "tag_player", 1, 0.1, 0.4 );
|
|
level.player_rig maps\_utility::delaythread( 0, ::show_rig );
|
|
wait 1;
|
|
level.player playerlinktodelta( level.player_rig, "tag_player", 1, 8, 0, 20, 5, 8 );
|
|
}
|
|
|
|
show_rig()
|
|
{
|
|
wait 0.7;
|
|
self show();
|
|
}
|
|
|
|
hesh_hold_vargas( var_0 )
|
|
{
|
|
var_0 notify( "stop_loop" );
|
|
level.hesh stopanimscripted();
|
|
var_1 = common_scripts\utility::get_target_ent( "int_hesh_push_node" );
|
|
var_1 maps\_anim::anim_reach_solo( level.hesh, "hesh_hold_vargas" );
|
|
var_1 thread maps\_anim::anim_first_frame_solo( level.hesh, "hesh_hold_vargas" );
|
|
}
|
|
|
|
elias_move_to_button()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent( "int_elias_button_node" );
|
|
level.elias stopanimscripted();
|
|
level.elias notify( "stop_first_frame" );
|
|
level.elias.anim_node = var_0;
|
|
var_0 maps\_anim::anim_reach_solo( level.elias, "elias_door_open" );
|
|
var_0 thread maps\_anim::anim_loop_solo( level.elias, "elias_door_open" );
|
|
}
|
|
|
|
keegan_start_at_button()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent( "int_keegan_button_node" );
|
|
var_0 thread maps\_anim::anim_loop_solo( level.keegan, "elias_door_open" );
|
|
}
|
|
|
|
set_unarmed_walk()
|
|
{
|
|
maps\_utility::set_generic_run_anim( "int_unarmed_walk" );
|
|
maps\_utility::disable_arrivals();
|
|
maps\_utility::disable_exits();
|
|
}
|
|
|
|
punching_sounds()
|
|
{
|
|
level.player thread maps\_utility::play_sound_on_entity( "scn_iplane_intro_punches" );
|
|
level.player thread maps\_utility::play_sound_on_entity( "iplane_rke_gettingbeatupinterrogated" );
|
|
}
|
|
|
|
blackscreen_intro( var_0 )
|
|
{
|
|
level.player freezecontrols( 1 );
|
|
level.player allowcrouch( 0 );
|
|
level.player allowprone( 0 );
|
|
thread punching_sounds();
|
|
thread punching_rumbles();
|
|
level.player setclienttriggeraudiozone( "jungle_ghosts_plane_int_closed_no_elm", 1.2 );
|
|
wait 0.75;
|
|
wait 0.5;
|
|
level.player lerpfov( 10, 0.1 );
|
|
common_scripts\utility::flag_set( "iplane_start_intro_anim" );
|
|
level waittill( "punch_notetrack_fade_in" );
|
|
level.player lerpfov( 65, 0.3 );
|
|
level.player freezecontrols( 0 );
|
|
earthquake( 0.7, 0.6, level.player.origin, 500 );
|
|
thread maps\_hud_util::fade_in( 0.15, "black" );
|
|
wait 1;
|
|
level.player setclienttriggeraudiozone( "jungle_ghosts_plane_int_closed", 1.0 );
|
|
thread maps\iplane::rotate_camera_pre_crash_one();
|
|
}
|
|
|
|
punching_rumbles()
|
|
{
|
|
level.player playrumbleonentity( "damage_heavy" );
|
|
wait 0.2;
|
|
level.player playrumbleonentity( "damage_heavy" );
|
|
wait 0.75;
|
|
level.player playrumbleonentity( "damage_heavy" );
|
|
wait 0.6;
|
|
level.player playrumbleonentity( "damage_heavy" );
|
|
wait 0.9;
|
|
level.player playrumbleonentity( "grenade_rumble" );
|
|
wait 0.6;
|
|
level.player playrumbleonentity( "damage_heavy" );
|
|
wait 0.9;
|
|
level.player playrumbleonentity( "damage_heavy" );
|
|
wait 0.8;
|
|
level.player playrumbleonentity( "grenade_rumble" );
|
|
wait 5.5;
|
|
level.player playrumbleonentity( "damage_heavy" );
|
|
wait 0.3;
|
|
level.player playrumbleonentity( "damage_heavy" );
|
|
}
|
|
|
|
plane_quakes()
|
|
{
|
|
level endon( "stop_plane_quakes" );
|
|
|
|
for (;;)
|
|
{
|
|
earthquake( randomfloatrange( level.earthquake_min, level.earthquake_max ), 0.6, level.player.origin, 500 );
|
|
wait( randomfloatrange( 0.05, 0.15 ) );
|
|
}
|
|
}
|
|
|
|
open_the_ramp()
|
|
{
|
|
common_scripts\utility::flag_wait( "player_activated_ramps_open" );
|
|
var_0 = getent( "ramp_collision", "script_noteworthy" );
|
|
var_0 linkto( level.bay_door_lower_model );
|
|
var_1 = 3;
|
|
var_2 = getentarray( "destroy_plane_debris02", "targetname" );
|
|
|
|
foreach ( var_4 in var_2 )
|
|
var_4 linkto( level.bay_door_lower );
|
|
|
|
thread maps\iplane::setup_plane_debris( var_2, var_1 );
|
|
var_1 = 6.1;
|
|
var_2 = getentarray( "destroy_plane_debris", "targetname" );
|
|
thread maps\iplane::setup_plane_debris( var_2, var_1 );
|
|
level.bay_door_lower thread maps\_utility::play_sound_on_entity( "scn_iplane_ramp_open_start" );
|
|
level.bay_door_lower thread lower_bottom_bay_door();
|
|
level.bay_door_upper thread raise_top_bay_door();
|
|
maps\_utility::delaythread( 2.5, maps\_utility::set_vision_set, "iplane_sunblind", 4 );
|
|
maps\_utility::delaythread( 4.9, maps\_utility::set_vision_set, "iplane", 4 );
|
|
level notify( "stop_plane_quakes" );
|
|
earthquake( 0.3, 3, level.player.origin, 500 );
|
|
var_6 = common_scripts\utility::spawn_tag_origin();
|
|
var_6.origin = level.plane_core.origin - ( 0, 0, 80 );
|
|
var_6.angles = level.plane_core.angles + ( 0, 90, 0 );
|
|
var_7 = common_scripts\utility::spawn_tag_origin();
|
|
var_7.origin = level.plane_core.origin - ( 0, 0, 40 );
|
|
var_7.angles = level.plane_core.angles + ( 90, 0, 0 );
|
|
playfxontag( common_scripts\utility::getfx( "escape_dust_hijack1" ), var_6, "tag_origin" );
|
|
common_scripts\utility::exploder( "az_int_debr_back" );
|
|
wait 2;
|
|
level.player maps\_utility::delaythread( 1.6, maps\iplane::player_flap_sleeves_setup );
|
|
var_8 = getentarray( "animated_ramp_tarp", "targetname" );
|
|
var_9 = getentarray( "fake_tarp_ramp", "targetname" );
|
|
|
|
for ( var_10 = 0; var_10 < var_8.size; var_10++ )
|
|
{
|
|
var_9[var_10] delete();
|
|
var_8[var_10] show();
|
|
}
|
|
|
|
maps\_utility::stop_exploder( "door_closed" );
|
|
level.earthquake_min = 0.075;
|
|
level.earthquake_max = 0.15;
|
|
thread plane_quakes();
|
|
common_scripts\utility::flag_wait( "start_explosion_breach" );
|
|
var_6 delete();
|
|
var_7 delete();
|
|
}
|
|
|
|
connect_and_start_tarps()
|
|
{
|
|
var_0 = getentarray( "crates", "targetname" );
|
|
var_1 = getentarray( "crates02", "targetname" );
|
|
|
|
foreach ( var_3 in var_0 )
|
|
var_3 linkto( level.bay_door_lower );
|
|
|
|
foreach ( var_6 in var_1 )
|
|
var_6 linkto( level.plane_tail );
|
|
|
|
foreach ( var_3 in var_0 )
|
|
{
|
|
var_3.animname = "crates_tarp";
|
|
var_3 maps\_anim::setanimtree();
|
|
wait( randomfloatrange( 1.3, 4 ) );
|
|
var_3 thread maps\_anim::anim_loop_solo( var_3, "tarps_anim" );
|
|
var_3 hide();
|
|
}
|
|
|
|
common_scripts\utility::flag_wait( "player_activated_ramps_open" );
|
|
wait 2;
|
|
|
|
foreach ( var_3 in var_0 )
|
|
var_3 show();
|
|
|
|
foreach ( var_6 in var_1 )
|
|
{
|
|
var_6.animname = "crates_tarp";
|
|
var_6 maps\_anim::setanimtree();
|
|
wait( randomfloatrange( 0.3, 1 ) );
|
|
var_6 thread maps\_anim::anim_loop_solo( var_6, "tarps_light_anim" );
|
|
}
|
|
}
|
|
|
|
lower_bottom_bay_door( var_0 )
|
|
{
|
|
self linkto( level.bay_door_lower_model );
|
|
level.bay_door_lower_model.animname = "bottom_ramp";
|
|
level.bay_door_lower_model maps\_anim::setanimtree();
|
|
level.bay_door_lower_model unlink();
|
|
|
|
if ( isdefined( var_0 ) )
|
|
level.bay_door_lower_model rotatepitch( -30, 0.05 );
|
|
else
|
|
level.bay_door_lower_model rotatepitch( -30, 10, 5, 1 );
|
|
|
|
level.bay_door_lower_model waittill( "rotatedone" );
|
|
level.bay_door_lower_model linkto( level.plane_core );
|
|
}
|
|
|
|
raise_top_bay_door( var_0 )
|
|
{
|
|
self linkto( level.bay_door_upper_model );
|
|
level.bay_door_upper_model.animname = "top_ramp";
|
|
level.bay_door_upper_model maps\_anim::setanimtree();
|
|
level.bay_door_upper_model unlink();
|
|
|
|
if ( isdefined( var_0 ) )
|
|
level.bay_door_upper_model rotatepitch( -25, 0.05 );
|
|
else
|
|
level.bay_door_upper_model rotatepitch( -25, 10, 5, 1 );
|
|
|
|
level.bay_door_upper_model waittill( "rotatedone" );
|
|
level.bay_door_upper_model thread maps\_utility::play_sound_on_entity( "scn_iplane_ramp_open_end" );
|
|
level.bay_door_upper_model linkto( level.plane_core );
|
|
}
|
|
|
|
set_start_positions( var_0 )
|
|
{
|
|
var_1 = common_scripts\utility::getstructarray( var_0, "targetname" );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
switch ( var_3.script_noteworthy )
|
|
{
|
|
case "player":
|
|
level.player setorigin( var_3.origin );
|
|
level.player setplayerangles( var_3.angles );
|
|
break;
|
|
case "hesh":
|
|
level.hesh forceteleport( var_3.origin, var_3.angles );
|
|
level.hesh setgoalpos( var_3.origin );
|
|
|
|
if ( isdefined( var_3.animation ) )
|
|
var_3 thread maps\_anim::anim_generic( level.hesh, var_3.animation );
|
|
|
|
if ( isdefined( var_3.target ) )
|
|
{
|
|
var_3 = var_3 common_scripts\utility::get_target_ent();
|
|
level.hesh thread maps\_utility::follow_path_and_animate( var_3 );
|
|
}
|
|
|
|
break;
|
|
case "merrick":
|
|
level.merrick forceteleport( var_3.origin, var_3.angles );
|
|
level.merrick setgoalpos( var_3.origin );
|
|
|
|
if ( isdefined( var_3.animation ) )
|
|
var_3 thread maps\_anim::anim_generic( level.merrick, var_3.animation );
|
|
|
|
if ( isdefined( var_3.target ) )
|
|
{
|
|
var_3 = var_3 common_scripts\utility::get_target_ent();
|
|
level.merrick thread maps\_utility::follow_path_and_animate( var_3 );
|
|
}
|
|
|
|
break;
|
|
case "elias":
|
|
level.elias forceteleport( var_3.origin, var_3.angles );
|
|
level.elias setgoalpos( var_3.origin );
|
|
|
|
if ( isdefined( var_3.animation ) )
|
|
var_3 thread maps\_anim::anim_generic( level.elias, var_3.animation );
|
|
|
|
if ( isdefined( var_3.target ) )
|
|
{
|
|
var_3 = var_3 common_scripts\utility::get_target_ent();
|
|
level.elias thread maps\_utility::follow_path_and_animate( var_3 );
|
|
}
|
|
|
|
break;
|
|
case "vargas":
|
|
level.vargas forceteleport( var_3.origin, var_3.angles );
|
|
level.vargas setgoalpos( var_3.origin );
|
|
|
|
if ( isdefined( var_3.animation ) )
|
|
var_3 thread maps\_anim::anim_generic( level.vargas, var_3.animation );
|
|
|
|
if ( isdefined( var_3.target ) )
|
|
{
|
|
var_3 = var_3 common_scripts\utility::get_target_ent();
|
|
level.vargas thread maps\_utility::follow_path_and_animate( var_3 );
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
throw_player_to_window()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent( "int_player_window" );
|
|
common_scripts\utility::flag_set( "ground_rotate_ref_off" );
|
|
level.player playerlinktoblend( level.player_rig, "tag_player" );
|
|
level.player_rig unlink();
|
|
level.player_rig moveto( var_0.origin, 0.15 );
|
|
level.player_rig rotateto( var_0.angles, 0.15 );
|
|
level.player_rig waittill( "movedone" );
|
|
}
|
|
|
|
ropes()
|
|
{
|
|
common_scripts\utility::flag_init( "fire_ropes" );
|
|
var_0 = getentarray( "ropes", "targetname" );
|
|
common_scripts\utility::array_thread( var_0, ::rope_think );
|
|
var_0 = getentarray( "ropes_hidden", "targetname" );
|
|
common_scripts\utility::array_thread( var_0, ::hidden_rope_think );
|
|
}
|
|
|
|
hidden_rope_think()
|
|
{
|
|
self hide();
|
|
var_0 = common_scripts\utility::spawn_tag_origin();
|
|
var_0.origin = self.origin;
|
|
var_0.angles = self.angles;
|
|
self.animname = "rope";
|
|
maps\_anim::setanimtree();
|
|
var_0 thread maps\_anim::anim_first_frame_solo( self, "rope_fire" );
|
|
common_scripts\utility::flag_wait( "fire_ropes" );
|
|
self linkto( level.rope_main_org );
|
|
var_0 thread maps\_anim::anim_single_solo( self, "rope_fire" );
|
|
common_scripts\utility::flag_wait( "start_explosion_breach" );
|
|
wait 2.5;
|
|
self show();
|
|
self vibrate( ( 1, 0, 0 ), 1, 1, 30 );
|
|
}
|
|
|
|
rope_think()
|
|
{
|
|
self hide();
|
|
var_0 = common_scripts\utility::spawn_tag_origin();
|
|
var_0.origin = self.origin;
|
|
var_0.angles = self.angles;
|
|
self.animname = "rope";
|
|
maps\_anim::setanimtree();
|
|
var_0 thread maps\_anim::anim_first_frame_solo( self, "rope_fire" );
|
|
common_scripts\utility::flag_wait( "fire_ropes" );
|
|
self linkto( level.rope_main_org );
|
|
maps\_utility::script_delay();
|
|
self show();
|
|
var_0 thread maps\_anim::anim_single_solo( self, "rope_fire" );
|
|
wait 4;
|
|
common_scripts\utility::flag_wait( "start_explosion_breach" );
|
|
wait 2.5;
|
|
self delete();
|
|
}
|
|
|
|
clouds()
|
|
{
|
|
var_0 = common_scripts\utility::spawn_tag_origin();
|
|
var_0.origin = level.plane_core.origin + ( 0, 0, 0 );
|
|
playfxontag( common_scripts\utility::getfx( "clouds" ), var_0, "tag_origin" );
|
|
}
|