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

392 lines
13 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
section_flag_inits()
{
common_scripts\utility::flag_init( "flag_hangar_start" );
common_scripts\utility::flag_init( "flag_hangar_door_open" );
common_scripts\utility::flag_init( "flag_hangar_screen_smash" );
common_scripts\utility::flag_init( "flag_rooftop_queue_tunnel" );
common_scripts\utility::flag_init( "flag_breach_final_tracks" );
common_scripts\utility::flag_init( "flag_hangar_intro_done" );
common_scripts\utility::flag_init( "flag_bridge_rog" );
common_scripts\utility::flag_init( "flag_hangar_end" );
}
section_precache()
{
precachemodel( "head_fed_army_f" );
precachemodel( "head_fed_basic_a" );
}
section_post_inits()
{
var_0 = getent( "player_start_hangar", "targetname" );
if ( isdefined( var_0 ) )
{
level._hangar = spawnstruct();
level._hangar.player_start = var_0;
level._hangar.ally_start = getent( "ally1_start_hangar", "targetname" );
var_1 = getent( "origin_hangar_intro", "targetname" );
var_2 = getentarray( "model_hangar_pip_screen_broken", "targetname" );
common_scripts\utility::array_thread( var_2, maps\skyway_util::hidenoshow );
var_3 = maps\skyway_util::setup_door( "model_hangar_door", "hangar_door" );
var_1 maps\_anim::anim_first_frame_solo( var_3, "hangar_intro" );
var_3.original_pos = common_scripts\utility::spawn_tag_origin();
var_3.original_pos.origin = var_3.origin;
var_3.original_pos.angles = var_3.angles;
var_3.original_pos maps\skyway_util::linktotrain( "train_hangar" );
var_4 = getent( "brush_hangar_ally_wedge", "targetname" );
var_5 = getent( "origin_hangar_ally_wedge_trigger", "targetname" );
var_5.col = getent( var_5.target, "targetname" );
var_5.col linkto( var_5 );
level._hangar.intro_node = var_1;
level._hangar.intro_door = var_3;
level._hangar.intro_tv_broken = var_2;
level._hangar.intro_wedge = var_4;
level._hangar.intro_wedge_trigger = var_5;
}
}
start()
{
common_scripts\utility::flag_set( "flag_hangar_start" );
maps\skyway_util::player_start( level._hangar.player_start );
level._allies[0] forceteleport( level._hangar.ally_start.origin, level._hangar.ally_start.angles );
level._allies[0] maps\_utility::set_force_color( "r" );
}
main()
{
if ( level.credits_only )
{
level.player allowcrouch( 0 );
level.player allowprone( 0 );
level.player takeallweapons();
level.player disableweapons();
level.player freezecontrols( 1 );
maps\_hud_util::fade_out( 0 );
setsaveddvar( "hud_showStance", "0" );
setsaveddvar( "compass", "0" );
setsaveddvar( "ammoCounterHide", "1" );
setsaveddvar( "g_friendlyNameDist", 0 );
setsaveddvar( "ui_hidemap", 1 );
level.player setclienttriggeraudiozone( "skyway_credits", 0.5 );
maps\skyway_endbeach::end_credits();
changelevel( "", 0 );
}
common_scripts\utility::flag_set( "flag_hangar_start" );
common_scripts\utility::array_call( level._train.cars["train_hangar"].trigs, ::setmovingplatformtrigger );
thread track_support();
thread hangar_door_opens();
thread skyway_sunsample();
thread dialogue();
thread maps\skyway_util::ambient_airbursts();
thread maps\skyway_util::flag_wait_func( "flag_hangar_door_open", common_scripts\utility::flag_set, "flag_hangar_end" );
getent( "intelligence_item", "targetname" ) thread maps\skyway_util::waittill_notify_func( "end_trigger_thread", ::delete_intel );
maps\skyway_util::setup_player_for_animated_sequence( 1, 0 );
if ( !isdefined( level.debug_no_move ) || !level.debug_no_move )
common_scripts\utility::flag_wait( "sw_introscreen_complete" );
thread maps\skyway_audio::skyway_intro_sfx();
thread event_intro();
thread event_sat_1_rog_hit();
thread event_jet_flyby();
thread maps\skyway_fx::fx_create_sunflare_source();
thread maps\skyway_fx::fx_intro_amb();
thread cleanup_hangar();
common_scripts\utility::flag_wait( "flag_hangar_end" );
}
event_intro()
{
var_0 = level._hangar.intro_node;
var_1 = level._allies[0];
var_2 = level._hangar.intro_door;
var_3 = level.player_rig;
thread event_intro_tv_pip();
level thread maps\skyway_util::waittill_notify_flag_set( "nt_punch_monitor", "flag_hangar_screen_smash" );
level thread maps\skyway_util::waittill_notify_flag_set( "nt_open_door", "flag_hangar_door_open" );
var_4[0] = build_human_model( "enemy_hangar_1", "head_fed_army_f" );
var_4[1] = build_human_model( "enemy_hangar_2", "head_fed_basic_a" );
var_3._enemy = var_4[0];
wait 0.1;
var_0 thread event_intro_player_anims( var_3 );
var_5 = common_scripts\utility::array_combine( [ var_2, var_3 ], var_4 );
var_1 linkto( var_0 );
common_scripts\utility::array_call( var_5, ::linkto, var_0 );
var_3 thread maps\skyway_util::start_nt_rumbles();
level.player setclienttriggeraudiozone( "skyway_train_int", 0.5 );
var_0 thread maps\skyway_vignette::vignette_single( var_5, "hangar_intro" );
var_0 maps\_anim::anim_single_solo( var_1, "hangar_intro" );
common_scripts\utility::flag_set( "flag_hangar_intro_done" );
var_2.col_brush connectpaths();
var_1 unlink();
var_1 maps\_utility::enable_ai_color();
var_1 pushplayer( 1 );
var_1 maps\_utility::delaythread( 8, maps\skyway_util::set_twitch, 0 );
}
origin_mover( var_0 )
{
self endon( "death" );
for (;;)
{
self.origin = var_0.origin;
wait 0.05;
}
}
player_push()
{
var_0 = 10;
level._hangar.intro_wedge delete();
level._hangar.intro_wedge_trigger thread origin_mover( level._ally );
while ( !common_scripts\utility::flag( "flag_hangar_door_open" ) )
{
common_scripts\utility::flag_wait( "flag_player_push" );
while ( common_scripts\utility::flag( "flag_player_push" ) && !common_scripts\utility::flag( "flag_hangar_door_open" ) )
{
player_push_impulse( anglestoforward( level._train.cars["train_hangar"].body.angles ) * var_0 );
wait 0.05;
}
level.player pushplayervector( ( 0, 0, 0 ) );
}
wait 0.2;
level._hangar.intro_wedge_trigger.col unlink();
level._hangar.intro_wedge_trigger delete();
}
player_push_impulse( var_0, var_1 )
{
if ( !isdefined( var_1 ) )
var_1 = 0.05;
var_2 = var_1;
while ( var_2 > 0.0 )
{
var_3 = clamp( var_2 / var_1, 0, 1 );
var_4 = var_0 * var_3;
level.player pushplayervector( var_4 );
var_2 = var_2 - 0.05;
wait 0.05;
}
}
event_intro_tv_pip()
{
var_0 = common_scripts\utility::getstruct( "struct_hangar_pip", "targetname" );
var_1 = level._boss;
var_2 = maps\_utility::spawn_anim_model( "hangar_pip_camera" );
var_3 = level._hangar.intro_tv_broken;
var_4 = getent( "actor_hangar_enemy_pip", "targetname" );
var_4 maps\_utility::add_spawn_function( ::spawnfunc_intro );
var_5 = var_4 maps\_utility::spawn_ai( 1 );
var_6 = [ var_1, var_2, var_5 ];
var_6 maps\skyway_util_ai::ignore_everything();
var_0 thread maps\_anim::anim_single( var_6, "hangar_intro" );
level.pip = level.player newpip();
level.pip.x = 0;
level.pip.y = 0;
level.pip.width = 128;
level.pip.height = 96;
level.pip.freecamera = 1;
level.pip.fov = 30;
level.pip.enableshadows = 1;
level.pip.origin = var_2.origin;
level.pip.entity = var_2;
level.pip.tag = "tag_origin";
level.pip.visionsetnaked = "skyway_pip";
level.pip.rendertotexture = 1;
level.pip.enable = 1;
var_7 = getent( "origin_hangar_tv_static", "targetname" );
var_8 = var_7 common_scripts\utility::spawn_tag_origin();
var_8 linkto( var_7 );
playfxontag( common_scripts\utility::getfx( "pip_static" ), var_8, "tag_origin" );
common_scripts\utility::flag_wait( "flag_hangar_screen_smash" );
thread maps\_art::dof_disable_script( 3 );
common_scripts\utility::array_thread( var_3, maps\skyway_util::shownoshow );
thread player_push();
level.pip.enable = 0;
level.pip.entity = undefined;
level.pip.camera = undefined;
level.pip = undefined;
var_2 delete();
var_5 delete();
var_8 delete();
var_7 delete();
}
fx_blood_splatter()
{
var_0 = getent( "origin_hangar_bloodsplatter", "targetname" );
var_1 = var_0 common_scripts\utility::spawn_tag_origin();
var_1 linkto( var_0 );
wait 2;
playfxontag( common_scripts\utility::getfx( "bloodsplatter_wall" ), var_1, "tag_origin" );
wait 100;
}
spawnfunc_intro()
{
self.animname = self.script_parameters;
if ( issubstr( self.animname, "1" ) )
level._hangar.player_enemy = self;
self.v.invincible = 1;
self.v.silent_script_death = 1;
self.v.death_on_end = 1;
}
event_intro_player_anims( var_0 )
{
var_0 waittill( "msg_vignette_state_start" );
wait 0.05;
maps\_anim::anim_set_rate( [ var_0, var_0._enemy ], "hangar_intro", 1.0 );
level waittill( "notify_draw_weapon" );
level.player enableweapons();
var_0 waittill( "msg_vignette_end" );
maps\skyway_util::player_animated_sequence_cleanup();
}
hangar_door_opens()
{
var_0 = getent( "trig_hangar_inside", "targetname" );
common_scripts\utility::flag_wait( "flag_hangar_door_open" );
for (;;)
{
var_0 waittill( "trigger" );
common_scripts\utility::flag_set( "wind_1" );
}
}
dialogue()
{
var_0 = level._allies[0];
level waittill( "notify_start_intro" );
wait 1;
if ( !isdefined( level.debug_no_move ) || !level.debug_no_move )
common_scripts\utility::flag_wait( "sw_introscreen_complete" );
common_scripts\utility::flag_wait( "flag_hangar_screen_smash" );
maps\_utility::radio_dialogue_stop();
common_scripts\utility::flag_wait( "flag_hangar_rog_hit" );
}
event_sat_1_rog_hit()
{
var_0 = level._sat.satellites;
var_1 = level._train.cars["train_sat_1"].body;
var_2 = [];
for ( var_3 = 0; var_3 < 1; var_3++ )
var_2[var_3] = getent( "model_rog_hit_ref_" + ( var_3 + 1 ), "targetname" );
thread maps\skyway_util::waittill_nt( level._allies[0] maps\_utility::getanim( "hangar_intro" ), "open_door", -0.5, "flag_hangar_rog_hit" );
common_scripts\utility::flag_wait( "flag_hangar_rog_hit" );
var_4 = 1.5;
var_5 = [ 0.35, 0.3, 0.22 ];
for ( var_3 = 0; var_3 < var_2.size; var_3++ )
thread maps\_utility::delaythread( var_3 * var_4, ::event_sat_1_rog_impact, var_2[var_3], var_5[var_3] );
}
event_sat_1_rog_impact( var_0, var_1 )
{
playfxontag( common_scripts\utility::getfx( "rog_maintrail_01" ), var_0, "tag_explode_base" );
var_0 thread maps\skyway_audio::sfx_rog_sat_impact( "tag_explode" );
wait 4.0;
playfxontag( common_scripts\utility::getfx( "vfx_rog_impact_temp_01" ), var_0, "tag_shockwave" );
thread maps\skyway_fx::fx_playerview_fieryflash_01();
thread maps\skyway_util::rog_flash( 0.5, 0.5, 1 );
thread maps\skyway_util::player_rumble_bump( level.player_rumble_rog_ent, 0.5, 0.0, 0.3, 0.0, 6.0, "notify_rog_rumble" );
level.player playrumbleonentity( "damage_heavy" );
thread maps\skyway_util::player_wind_bump( 0.2, 0.0, 2.0, 0.9 );
thread maps\skyway_util::train_quake( 0.7, 0.8, level.player.origin, 2000 );
wait 1.5;
common_scripts\utility::exploder( "intro_rog_hit_shockwave_01" );
}
event_jet_flyby()
{
common_scripts\utility::flag_wait( "flag_hangar_door_open" );
wait 3.2;
thread maps\skyway_util::jet_flyover( level._train.cars["train_hangar"].body, "hang_flyby", "jet_contrail", "jet_contrail", "jet_contrail", 1 );
}
track_support()
{
level endon( "notify_hangar_stop_track_support" );
var_0 = getent( "origin_hangar_track_support_1", "targetname" );
var_1 = getent( "origin_hangar_track_support_2", "targetname" );
var_2 = getent( "model_hangar_track_support", "targetname" );
while ( !common_scripts\utility::flag( "flag_hangar_door_open" ) )
{
var_2 hide();
var_2.origin = var_0.origin;
wait 0.05;
var_2 show();
var_2 moveto( var_1.origin, 1 );
wait 3;
}
var_2 delete();
}
skyway_sunsample()
{
setsaveddvar( "sm_sunSampleSizeNear", 0.1 );
common_scripts\utility::flag_wait( "flag_hangar_door_open" );
wait 2;
setsaveddvar( "sm_sunSampleSizeNear", 0.5 );
common_scripts\utility::flag_wait( "flag_loco_enter" );
wait 0.5;
setsaveddvar( "sm_sunSampleSizeNear", 0.25 );
common_scripts\utility::flag_wait( "flag_end_swim_end" );
setsaveddvar( "sm_sunSampleSizeNear", 0.1 );
}
delete_intel()
{
self delete();
}
cleanup_hangar()
{
common_scripts\utility::flag_wait( "flag_sat1_noticket" );
common_scripts\utility::flag_wait( "flag_hangar_intro_done" );
wait 0.5;
while ( issubstr( level.player.car, "hangar" ) )
wait 0.05;
var_0 = level._hangar.intro_door;
var_0 linkto( var_0.original_pos, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
foreach ( var_2 in level._train.cars["train_hangar"].other_linked_parts["script_model"] )
{
if ( issubstr( var_2.model, "cargo" ) || issubstr( var_2.model, "stacker" ) || issubstr( var_2.model, "lynx" ) || issubstr( var_2.model, "tool_cabinet" ) )
var_2 delete();
}
}
build_human_model( var_0, var_1, var_2 )
{
var_3 = maps\_utility::spawn_anim_model( var_0 );
var_3 attach( var_1 );
return var_3;
}