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

1030 lines
38 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
section_flag_inits()
{
common_scripts\utility::flag_init( "flag_sat1_end" );
common_scripts\utility::flag_init( "flag_sat2_end" );
common_scripts\utility::flag_init( "flag_ally_at_sat1" );
common_scripts\utility::flag_init( "flag_left_bridge_down" );
}
section_precache()
{
maps\_utility::add_hint_string( "hint_sat_bridge_1", &"SKYWAY_HINT_BRIDGE", ::hint_bridge_1 );
maps\_utility::add_hint_string( "hint_sat_bridge_2", &"SKYWAY_HINT_BRIDGE", ::hint_bridge_2 );
}
hint_bridge_1()
{
return !common_scripts\utility::flag( "hint_sat_bridge_1" ) || !level._sat.bridges[0]._up;
}
hint_bridge_2()
{
return !common_scripts\utility::flag( "hint_sat_bridge_2" ) || !level._sat.bridges[1]._up;
}
section_post_inits()
{
level._sat = spawnstruct();
level._sat.ally_start_1 = getent( "ally1_start_sat1", "targetname" );
level._sat.player_start_1 = getent( "player_start_sat1", "targetname" );
level._sat.ally_start_2 = getent( "ally1_start_sat2", "targetname" );
level._sat.player_start_2 = getent( "player_start_sat2", "targetname" );
thread base_array_ambient_dogfight_1();
thread base_array_ambient_dogfight_3();
thread base_array_ambient_dogfight_1b();
thread base_array_ambient_dogfight_2b();
thread base_array_ambient_dogfight_3b();
thread base_array_ambient_dogfight_4b();
thread base_array_ambient_dogfight_5b();
thread base_array_ambient_dogfight_6b();
thread base_array_ambient_dogfight_6c();
if ( isdefined( level._sat.player_start_1 ) )
{
var_0 = [ "model_sat1_crane", "model_sat2_crane", "model_sat_cargo_cage" ];
foreach ( var_2 in var_0 )
{
var_3 = getentarray( var_2, "targetname" );
foreach ( var_5 in var_3 )
{
var_6 = [];
if ( issubstr( var_2, "crane" ) )
{
var_5.animname = "crane_" + var_5.script_noteworthy;
if ( issubstr( var_5.model, "crane_1" ) )
common_scripts\utility::array_call( getentarray( var_5.target, "targetname" ), ::linkto, var_5, "j_spine4" );
else
common_scripts\utility::array_call( getentarray( var_5.target, "targetname" ), ::linkto, var_5, "j_spine" );
var_6 = common_scripts\utility::array_add( var_6, var_5 );
}
else if ( issubstr( var_2, "cargo_cage" ) )
{
var_7 = strtok( var_5.target, "_" );
var_5.animname = "cage" + var_7[var_7.size - 1];
var_8 = getentarray( var_5.target, "targetname" );
var_6 = common_scripts\utility::array_add( var_6, var_5 );
foreach ( var_10 in var_8 )
{
if ( issubstr( var_10.classname, "trigger" ) )
{
var_10 enablelinkto();
var_10 setmovingplatformtrigger();
}
if ( issubstr( var_10.classname, "script_origin" ) && !( isdefined( var_10.model ) && issubstr( var_10.model, "weapon" ) ) )
{
var_5.link_point = var_10;
continue;
}
if ( isdefined( var_10.script_parameters ) )
{
if ( issubstr( var_10.script_parameters, "upper" ) )
{
if ( var_10.classname == "script_model" )
{
var_5._traverses["in"] = [];
var_5._traverses["out"] = [];
for ( var_11 = 0; var_11 < 2; var_11++ )
{
var_5._traverses["in"] = common_scripts\utility::array_add( var_5._traverses["in"], getent( var_5.target + "_traverse_in_" + ( var_11 + 1 ), "targetname" ) );
var_5._traverses["out"] = common_scripts\utility::array_add( var_5._traverses["out"], getent( var_5.target + "_traverse_out_" + ( var_11 + 1 ), "targetname" ) );
}
foreach ( var_13 in var_5._traverses )
{
foreach ( var_15 in var_13 )
{
if ( isdefined( var_15.script_parameters ) && var_15.script_parameters == "linkto_cargo" )
var_15 linkto( var_10 );
}
}
if ( isdefined( var_10.target ) )
common_scripts\utility::array_call( getentarray( var_10.target, "targetname" ), ::linkto, var_10 );
var_10 linkto( var_5, "tag_sat1", ( 0, 0, 0 ), ( 0, resolve_link_yaw( var_5, var_10 ), 0 ) );
}
else
var_10 linkto( var_5, "j_spine4" );
}
else if ( issubstr( var_10.script_parameters, "lower" ) )
{
if ( var_10.classname == "script_model" )
var_10 linkto( var_5, "tag_sat2", ( 0, 0, 0 ), ( 0, resolve_link_yaw( var_5, var_10 ), 0 ) );
else
var_10 linkto( var_5, "j_elbow_le" );
}
else if ( issubstr( var_10.script_parameters, "weapon" ) )
{
var_18 = spawn( var_10.script_parameters, var_10.origin );
var_18.angles = var_10.angles;
var_18 linkto( var_5, "tag_sat1" );
}
continue;
}
if ( isdefined( var_10.model ) && issubstr( var_10.model, "strap" ) )
{
var_10.animname = var_5.animname;
var_6 = common_scripts\utility::array_add( var_6, var_10 );
var_5.straps = var_10;
continue;
}
var_10 linkto( var_5, "j_spine4" );
}
}
common_scripts\utility::array_thread( var_6, maps\_anim::setanimtree );
var_20 = randomfloatrange( 0.1, 0.5 );
common_scripts\utility::array_thread( var_6, common_scripts\utility::delaycall, var_20, ::setanim, var_5 maps\_utility::getanim( "sway" ) );
if ( isdefined( var_5.link_point ) )
{
var_5.link_point setmodel( "tag_origin" );
maps\_utility::deep_array_call( [ var_5, var_5.straps ], ::linkto, [ var_5.link_point, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) ] );
}
else
var_5.link_point = var_5;
if ( !isdefined( level._train.cars[var_5.link_point.script_noteworthy].accessory ) )
level._train.cars[var_5.link_point.script_noteworthy].accessory = [];
level._train.cars[var_5.link_point.script_noteworthy].accessory = common_scripts\utility::array_combine( level._train.cars[var_5.link_point.script_noteworthy].accessory, var_6 );
}
}
}
if ( isdefined( level._sat.player_start_1 ) )
{
for ( var_11 = 0; var_11 < 2; var_11++ )
{
var_23 = var_11 + 1;
var_24 = maps\skyway_util::setup_door( "model_sat1_bridge_" + var_23, "bridge", "jnt_bridge" );
var_24._anim_node = getent( "origin_sat1_bridge_" + var_23, "targetname" );
var_24._anim_node maps\_anim::anim_last_frame_solo( var_24, "bridge_push" );
var_24 linkto( var_24._anim_node );
}
}
if ( isdefined( level._sat.player_start_2 ) )
{
level._sat.bridges = [];
for ( var_11 = 0; var_11 < 2; var_11++ )
{
var_23 = var_11 + 1;
var_24 = maps\skyway_util::setup_door( "model_sat2_bridge_" + var_23, "bridge", "jnt_bridge" );
var_24._index = var_23;
var_25 = getentarray( var_24.col_brush.target, "targetname" );
foreach ( var_27 in var_25 )
{
if ( var_27.script_parameters == "ai" )
var_24._ai_col = var_27;
else if ( var_27.script_parameters == "player" )
var_24._player_col = var_27;
else if ( var_27.script_parameters == "main_col" )
var_24._main_col = var_27;
var_27 linkto( var_24 );
}
var_24._walkway_brush = getent( "brush_sat2_bridge_" + var_23, "targetname" );
var_24._walkway_brush_node = var_24._walkway_brush common_scripts\utility::spawn_tag_origin();
var_24._hint = "hint_sat_bridge_" + var_23;
var_24._up = 1;
var_24._anim_node = getent( "origin_sat2_bridge_" + var_23, "targetname" );
var_24._anim_node maps\_anim::anim_first_frame_solo( var_24, "bridge_push" );
var_24 linkto( var_24._anim_node );
var_24._walkway_brush_node linkto( var_24._anim_node );
level._sat.bridges = common_scripts\utility::array_add( level._sat.bridges, var_24 );
}
}
level.player thread maps\skyway_util::flag_watcher( "flag_force_mantle", ::enableforcemantle );
getent( "flag_sat2_jump", "targetname" ) setmovingplatformtrigger();
}
enableforcemantle()
{
self forcemantle();
}
resolve_link_yaw( var_0, var_1 )
{
if ( var_0.angles[1] != var_1.angles[1] )
return 0;
else
return 180;
}
start()
{
iprintln( level.start_point );
var_0 = undefined;
var_1 = undefined;
if ( issubstr( level.start_point, "1" ) )
{
var_0 = level._sat.player_start_1;
var_1 = level._sat.ally_start_1;
}
else
{
var_0 = level._sat.player_start_2;
var_1 = level._sat.ally_start_2;
}
maps\skyway_util::player_start( var_0 );
level._allies[0] forceteleport( var_1.origin, var_1.angles );
level._allies[0] maps\_utility::set_force_color( "r" );
level._allies[0] maps\skyway_util::set_twitch( 0 );
thread maps\skyway_fx::fx_create_sunflare_source();
thread maps\skyway_fx::fx_turnon_tunnel_lights_01();
thread maps\skyway_fx::fx_turnon_rooftop_lights();
thread tunnel_lights();
thread maps\skyway_util::ambient_airbursts_startpoint();
}
main_sat1()
{
thread allies_sat1();
thread enemies_sat1();
thread dialogue_sat1();
maps\_utility::autosave_by_name( "sat1" );
common_scripts\utility::array_call( level._train.cars["train_sat_1"].trigs, ::setmovingplatformtrigger );
thread maps\skyway_util::flag_wait_func( "flag_sat_rog", ::event_rog_impact, "1" );
common_scripts\utility::flag_wait( "flag_sat1_end" );
}
main_sat2()
{
thread allies_sat2();
thread enemies_sat2();
thread dialogue_sat2();
level.player setclienttriggeraudiozone( "skyway_train_ext_sat", 0.5 );
common_scripts\utility::array_thread( level._sat.bridges, ::event_player_bridge_push );
thread autosave_sat( "sat2" );
common_scripts\utility::array_call( level._train.cars["train_sat_2"].trigs, ::setmovingplatformtrigger );
thread maps\skyway_util::flag_wait_func( "flag_sat_rog2", ::event_rog_impact, "2" );
thread maps\skyway_fx::fx_turnon_tunnel_lights_01();
thread tunnel_lights();
thread maps\skyway_fx::fx_turnon_rooftop_lights();
common_scripts\utility::flag_wait( "flag_sat2_end" );
thread autosave_sat( "sat2_end" );
common_scripts\utility::flag_clear( "flag_pause_ambient_train_shakes" );
}
dialogue_sat1()
{
var_0 = level._allies[0];
if ( !issubstr( level.start_point, "sat" ) )
{
common_scripts\utility::flag_wait( "flag_hangar_intro_done" );
for ( var_1 = var_0 maps\skyway_util::getcurrenttraincar(); !isdefined( var_1 ) || !issubstr( var_1, "sat" ); var_1 = var_0 maps\skyway_util::getcurrenttraincar() )
wait 2;
}
var_0 maps\_utility::smart_dialogue( "skyway_hsh_rorkemustbeat" );
common_scripts\utility::flag_wait( "flag_sat1_enemy_spawn" );
wait 3;
var_0 maps\_utility::smart_dialogue( "skyway_hsh_contact" );
var_0 maps\_utility::smart_dialogue( "skyway_hsh_theyremovingontothe" );
common_scripts\utility::flag_wait( "flag_sat1_sniper_spawn" );
wait 2;
var_0 maps\_utility::smart_dialogue( "skyway_hsh_sniper12oclock" );
}
dialogue_sat2()
{
var_0 = level._allies[0];
level waittill( "hero_train_impact_hit2" );
wait 1;
var_0 maps\_utility::smart_dialogue( "skyway_hsh_shitthatwasclose" );
wait 1;
var_0 maps\_utility::smart_dialogue( "skyway_hsh_takecoverinthe" );
common_scripts\utility::flag_wait( "flag_sat2_retreat_2" );
var_0 maps\_utility::smart_dialogue( "skyway_mrk_thisway" );
common_scripts\utility::flag_wait( "flag_sat2_end" );
thread dialogue_mantle();
}
dialogue_mantle()
{
var_0 = level._allies[0];
var_0 maps\_utility::smart_dialogue( "skyway_hsh_wellgettorourke" );
var_1 = [ "skyway_hsh_jumptotheroof", "skyway_hsh_dammitadamtakethe" ];
if ( !common_scripts\utility::flag( "flag_rooftops_start" ) )
var_0 thread maps\skyway_util::dialogue_nag( var_1, "flag_rooftops_start" );
}
allies_sat1()
{
var_0 = level._allies[0];
thread maps\skyway_util::flag_wait_func( "flag_sat1_enemy_spawn", common_scripts\utility::flag_set, "flag_killer_tracker" );
thread maps\skyway_util::flag_wait_func( "flag_sat_retreat_1", common_scripts\utility::flag_clear, "flag_killer_tracker" );
thread maps\skyway_util::flag_wait_func( "flag_sat1_end", common_scripts\utility::flag_set, "flag_killer_tracker" );
var_0 thread maps\skyway_util_ai::ally_advance_watcher( "trig_sat_1_allies_1", "sat1", "flag_sat2_jump", common_scripts\utility::flag_set, "flag_sat1_end" );
if ( !issubstr( level.start_point, "sat" ) )
{
var_0 thread maps\skyway_util::waittill_func( "rt_traverse_done", common_scripts\utility::flag_set, "flag_ally_at_sat1" );
common_scripts\utility::flag_wait( "flag_hangar_intro_done" );
}
else
common_scripts\utility::flag_set( "flag_ally_at_sat1" );
var_0 maps\_utility::set_ignoresuppression( 1 );
var_0 maps\_utility::disable_pain();
var_0 pushplayer( 1 );
if ( !common_scripts\utility::flag( "trig_sat_1_allies_1" ) )
maps\_utility::activate_trigger_with_targetname( "trig_sat1_ally_jump" );
var_0 thread event_noticket();
common_scripts\utility::flag_wait( "flag_sat1_enemy_spawn" );
maps\_utility::autosave_by_name( "sat1_combat" );
}
allies_sat2()
{
thread maps\skyway_util::flag_wait_func( "flag_sat2_retreat_1", common_scripts\utility::flag_clear, "flag_killer_tracker" );
thread maps\skyway_util::flag_wait_func( "flag_sat2_main_killer_tracker", common_scripts\utility::flag_set, "flag_killer_tracker" );
thread maps\skyway_util::flag_wait_func( "flag_sat2_retreat_2", common_scripts\utility::flag_clear, "flag_killer_tracker" );
var_0 = level._allies[0];
var_0 maps\_utility::set_ignoresuppression( 1 );
var_0 maps\_utility::disable_pain();
var_0 pushplayer( 1 );
var_1 = level._sat.bridges[0];
var_2 = level._sat.bridges[1];
level._ally_dist = 512;
var_0 thread maps\skyway_util_ai::ally_advance_watcher( "trig_sat_2_allies_1", "sat2", "flag_rooftops_jump", common_scripts\utility::flag_set, "flag_sat2_end" );
if ( issubstr( level.start_point, "sat2" ) )
maps\_utility::activate_trigger_with_targetname( "trig_sat_2_allies_1" );
common_scripts\utility::flag_wait_either( "flag_sat2_retreat_2", "flag_sat2_end" );
level._ally_dist = undefined;
if ( !common_scripts\utility::flag( "flag_sat2_end" ) )
{
thread autosave_sat( "sat2_bridge" );
if ( var_2._up )
{
var_0 maps\_utility::disable_ai_color();
var_0.oldgoalradius = var_0.goalradius;
var_0.goalradius = 16;
var_0 setgoalnode( getnode( "node_sat2_bridge", "targetname" ) );
common_scripts\utility::waittill_any_ents( var_0, "rt_traverse_done", level, "flag_sat2_end" );
var_0.goalradius = var_0.oldgoalradius;
}
if ( var_2._up && !common_scripts\utility::flag( "flag_sat2_end" ) )
var_0 event_ally_bridge_push( var_2 );
}
if ( common_scripts\utility::flag( "flag_sat2_end" ) )
var_0 forceteleport( getnode( "node_sat2_hesh_warp", "targetname" ).origin, var_0.angles );
var_0 maps\_utility::enable_ai_color();
}
autosave_sat( var_0 )
{
level endon( "flag_kill_plane" );
level endon( "flag_death_crush" );
for ( var_1 = level.player getmovingplatformparent(); !isdefined( var_1 ) || issubstr( var_1.targetname, "cargo" ); var_1 = level.player getmovingplatformparent() )
wait 0.2;
maps\_utility::autosave_by_name( var_0 );
}
enemies_sat1()
{
maps\_utility::array_spawn_function_targetname( "actor_sat1_1", ::spawnfunc_enemies_ignore, "sat1" );
maps\_utility::array_spawn_function_targetname( "actor_sat1_2", ::spawnfunc_enemies_ignore, "sat1" );
maps\_utility::array_spawn_function_targetname( "actor_sat1_enemy_rog_fall", ::spawnfunc_enemies_rog, "sat1_rog" );
maps\_utility::array_spawn_function_targetname( "actor_sat1_noticket", ::spawnfunc_enemies_noticket );
common_scripts\utility::flag_wait( "flag_sat1_end" );
if ( isdefined( level._enemies["sat1"] ) )
{
var_0 = maps\_utility::remove_dead_from_array( level._enemies["sat1"] );
common_scripts\utility::array_thread( var_0, maps\_utility::follow_path, getnode( "node_sat2_start", "targetname" ) );
common_scripts\utility::array_thread( var_0, maps\skyway_util_ai::add_to_group, "sat2" );
common_scripts\utility::array_thread( var_0, maps\skyway_util::spawnfunc_death_override );
}
maps\_utility::array_spawn_targetname( "actor_sat2_1" );
}
enemies_sat2()
{
thread maps\skyway_util::flag_wait_func( "flag_sat2_end", ::cleanup_sat_enemies );
maps\_utility::array_spawn_function_targetname( "actor_sat2_1", ::spawnfunc_enemies_ignore, "sat2" );
maps\_utility::array_spawn_function_targetname( "actor_sat2_2", ::spawnfunc_enemies_ignore, "sat2" );
maps\_utility::array_spawn_function_targetname( "actor_sat2_3", ::spawnfunc_enemies_runner );
maps\_utility::array_spawn_function_targetname( "actor_sat2_enemy_rog_run", ::spawnfunc_enemies_rog, "sat2" );
maps\_utility::array_spawn_function_targetname( "actor_sat2_right", ::spawnfunc_enemies_sat2_top, "surprise" );
maps\_utility::array_spawn_function_targetname( "actor_sat2_left", ::spawnfunc_enemies_sat2_top, "surprise" );
level waittill( "hero_train_impact_hit2" );
maps\_utility::array_spawn_targetname( "actor_sat2_enemy_rog_run" );
}
cleanup_sat_enemies( var_0 )
{
if ( isdefined( var_0 ) )
{
foreach ( var_2 in var_0 )
{
if ( isdefined( level._enemies[var_2] ) )
cleanup_sat_enemies_solo( level._enemies[var_2] );
}
}
else
{
foreach ( var_5 in level._enemies )
cleanup_sat_enemies_solo( var_5 );
}
}
cleanup_sat_enemies_solo( var_0 )
{
var_0 = maps\_utility::remove_dead_from_array( var_0 );
common_scripts\utility::array_thread( var_0, maps\_utility::player_seek_disable );
thread ai_kill_when_out_of_sight( var_0, 512 );
}
spawnfunc_enemies_sat2_top( var_0 )
{
maps\skyway_util_ai::add_to_group( var_0 );
self.script_forcegoal = 1;
self.maxfaceenemydist = 256;
self.a.disablelongdeath = 1;
self.health = 1;
self.baseaccuracy = 0.1;
thread maps\skyway_util::spawnfunc_death_override();
thread proximity_player_seek();
}
spawnfunc_enemies_rog( var_0 )
{
maps\skyway_util_ai::add_to_group( var_0 );
self.script_forcegoal = 1;
self.maxfaceenemydist = 256;
self.a.disablelongdeath = 1;
var_1 = self.script_parameters;
self.animname = "generic";
if ( issubstr( self.script_parameters, "fall" ) )
{
thread rail_fall_forcedeathfall();
maps\skyway_util_ai::ignore_everything();
}
if ( isdefined( self.script_index ) )
thread murderzone();
wait 0.05;
if ( issubstr( self.script_parameters, "stumble" ) )
{
var_2 = level._train.cars["train_sat_2"].body;
var_3 = common_scripts\utility::spawn_tag_origin();
var_3 linkto( var_2, "j_spineupper" );
self linkto( var_3, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
var_3 maps\skyway_vignette::vignette_single_solo( self, var_1, undefined, undefined, undefined, 0.3 );
thread proximity_player_seek();
self unlink();
var_3 delete();
}
else
{
var_3 = getent( "origin_" + var_1, "targetname" );
self linkto( var_3 );
if ( issubstr( self.script_parameters, "fall" ) )
{
var_3 maps\_anim::anim_first_frame_solo( self, var_1 );
self endon( "death" );
wait 1;
var_3 maps\skyway_vignette::vignette_single_solo( self, var_1 );
}
else
{
var_3 maps\skyway_vignette::vignette_single_solo( self, var_1, undefined, undefined, undefined, 0.3 );
self unlink();
if ( issubstr( self.script_parameters, "run" ) )
maps\_utility::kill_deathflag( "deathflag_sat2_rog_run" );
}
}
}
rail_fall_forcedeathfall()
{
self endon( "death" );
level waittill( "notify_sat1_rog_run_fall" );
self.v.invincible = 1;
level waittill( "notify_sat1_rog_run_delete" );
if ( isdefined( self.magic_bullet_shield ) && self.magic_bullet_shield )
maps\_utility::stop_magic_bullet_shield();
self delete();
}
spawnfunc_enemies_ignore( var_0 )
{
maps\skyway_util_ai::add_to_group( var_0 );
self.script_forcegoal = 1;
self.maxfaceenemydist = 256;
self.a.disablelongdeath = 1;
if ( isdefined( self.script_parameters ) && issubstr( self.script_parameters, "death_override" ) )
thread maps\skyway_util::spawnfunc_death_override();
maps\skyway_util_ai::ignore_until_goal( 2 );
thread proximity_player_seek();
if ( isdefined( self.script_index ) )
thread murderzone();
}
spawnfunc_enemies_noticket()
{
self.v.delete_on_end = 1;
self.v.invincible = 1;
self.animname = "noticket_enemy";
self.a.disablelongdeath = 1;
}
spawnfunc_enemies_runner()
{
self.a.disablelongdeath = 1;
wait 6;
maps\_utility::kill_deathflag( "deathflag_sat2_run" );
}
event_noticket()
{
common_scripts\utility::flag_wait( "flag_sat1_noticket" );
if ( common_scripts\utility::flag( "flag_ally_at_sat1" ) )
{
var_0 = getent( "origin_sat1_noticket", "targetname" );
var_0 maps\_anim::anim_reach_solo( self, "noticket" );
if ( !common_scripts\utility::flag( "flag_sat1_noticket_stop" ) )
{
var_1 = getent( "actor_sat1_noticket", "targetname" ) maps\_utility::spawn_ai();
thread maps\skyway_audio::sfx_noticket( var_1 );
common_scripts\utility::array_call( [ self, var_1 ], ::linkto, var_0 );
var_0 thread maps\skyway_vignette::vignette_single( [ self, var_1 ], "noticket" );
self waittill( "msg_vignette_end" );
self unlink();
}
}
maps\_utility::enable_ai_color();
}
event_player_bridge_push()
{
self endon( "notify_bridge_down" );
maps\skyway_util::waittill_trigger_activate_looking_at( self, self._hint, 128, undefined, "jnt_handle", 5 );
self._up = 0;
level.player enableinvulnerability();
level.player disableweapons();
maps\skyway_util::setup_player_for_animated_sequence( 0, 0 );
level.player_rig hide();
self._anim_node maps\_anim::anim_first_frame_solo( level.player_rig, "bridge_push_player" );
level.player_rig linkto( self._anim_node );
if ( issubstr( level.player getcurrentweapon(), "svu" ) )
wait 1;
self._main_col connectpaths();
self._main_col delete();
self._player_col delete();
thread maps\skyway_audio::sfx_bridge_down_plr();
level.player playerlinktoblend( level.player_rig, "tag_player", 0.5 );
level.player_rig common_scripts\utility::delaycall( 0.5, ::show );
self._anim_node thread maps\_anim::anim_single( [ self, level.player_rig ], "bridge_push_player" );
level waittill( "notify_draw_weapon" );
level.player enableweapons();
self._walkway_brush linkto( self._walkway_brush_node, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
self._anim_node waittill( "bridge_push_player" );
maps\skyway_util::player_animated_sequence_cleanup();
if ( self._index == 2 )
{
self._ai_col connectpaths();
self._ai_col delete();
common_scripts\utility::flag_set( "flag_left_bridge_down" );
}
else
thread remove_ai_collision();
level.player disableinvulnerability();
}
remove_ai_collision()
{
common_scripts\utility::flag_wait_either( "flag_left_bridge_down", "flag_sat2_end" );
self._ai_col connectpaths();
self._ai_col delete();
}
event_ally_bridge_push( var_0 )
{
level endon( "flag_sat2_end" );
var_0._anim_node maps\_anim::anim_reach_solo( self, "bridge_push" );
if ( var_0._up )
{
maps\skyway_util_ai::ignore_everything();
self linkto( var_0._anim_node );
var_0 notify( "notify_bridge_down" );
var_0._up = 0;
var_0._main_col connectpaths();
var_0._main_col delete();
var_0._ai_col connectpaths();
var_0._ai_col delete();
var_0._player_col common_scripts\utility::delaycall( 4, ::delete );
thread maps\skyway_audio::sfx_bridge_down_npc();
var_0._anim_node maps\_anim::anim_single( [ self, var_0 ], "bridge_push" );
var_0._walkway_brush linkto( var_0._walkway_brush_node, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
self unlink();
maps\skyway_util_ai::unignore_everything();
common_scripts\utility::flag_set( "flag_left_bridge_down" );
}
}
event_rog_impact( var_0 )
{
var_1 = level._allies[0];
var_2 = 0.5;
var_3 = 0;
var_4 = level._train.cars["train_sat_2"].body;
var_5 = anglestoright( var_4.angles );
var_6 = level.player.origin - var_4.origin;
var_7 = vectordot( var_5, var_6 );
if ( var_7 > 0 )
{
var_8 = "tag_explode_close_r";
var_9 = "sathit_sat_explode_R";
var_10 = [ "scn_skyway_missile_explode", "scn_skyway_missile_impact", "skyway_missile_hit_01" ];
}
else
{
var_8 = "tag_explode_close_l";
var_9 = "sathit_sat_explode_L";
var_10 = [ "scn_skyway_missile_explode", "scn_skyway_missile_impact", "skyway_missile_hit_01" ];
}
thread maps\skyway_util::hero_train_impact( level._train.cars["train_rt0"].body, var_8, var_9, var_10, var_2, var_3, undefined, var_0, 1 );
level waittill( "hero_train_impact_hit" );
var_11 = var_1 maps\skyway_util::getcurrenttraincar();
if ( isdefined( var_11 ) )
{
var_12 = level._train.cars[var_11].body;
var_13 = var_1 common_scripts\utility::spawn_tag_origin();
var_13.angles = var_12 gettagangles( "j_spineupper" );
var_13 linkto( var_12, "j_spineupper" );
var_1 linkto( var_13, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
var_13 maps\_anim::anim_single_solo( var_1, "sat_rog_hit", undefined, 0.1 );
var_1 unlink();
var_1 maps\_utility::enable_ai_color();
var_13 delete();
}
else
{
}
}
proximity_player_seek( var_0 )
{
self endon( "death" );
self endon( "stop_player_seek" );
if ( !isdefined( var_0 ) )
var_0 = 128;
var_1 = var_0 * var_0;
for (;;)
{
if ( distancesquared( level.player.origin, self.origin ) < var_1 )
break;
wait 1;
}
maps\_utility::set_fixednode_false();
maps\_utility::set_baseaccuracy( 3 );
maps\_utility::player_seek_enable();
}
murderzone()
{
self endon( "death" );
var_0 = self.baseaccuracy;
while ( !common_scripts\utility::flag( "flag_sat2_retreat_2" ) )
{
if ( common_scripts\utility::flag( "flag_sat2_murderzone" ) )
{
maps\_utility::set_baseaccuracy( var_0 );
setthreatbias( "axis", "player", 1000 );
}
else
{
maps\_utility::set_baseaccuracy( 0.7 );
maps\_utility::clearthreatbias( "axis", "player" );
}
wait 0.5;
}
maps\_utility::set_baseaccuracy( 0.3 );
maps\_utility::clearthreatbias( "axis", "player" );
}
tunnel_lights()
{
var_0 = getentarray( "light_tunnel_warm", "targetname" );
var_1 = getentarray( "light_tunnel_cool", "targetname" );
foreach ( var_3 in var_0 )
{
var_3 setlightcolor( ( 0.99, 0.95, 0.81 ) );
var_3 setlightintensity( 0.75 );
}
foreach ( var_3 in var_1 )
{
var_3 setlightcolor( ( 0.66, 0.78, 0.85 ) );
var_3 setlightintensity( 0.65 );
}
}
flag_tester_law()
{
common_scripts\utility::flag_wait( "flag_sat1_end" );
common_scripts\utility::flag_wait( "flag_sat2_end" );
common_scripts\utility::flag_wait( "flag_vision_tunnel" );
}
base_array_ambient_dogfight_1()
{
level endon( "kill_vista_a10" );
wait( randomfloatrange( 35.0, 36.0 ) );
level.base_array_ambient_a10_gun_dive_1 = undefined;
level.base_array_ambient_a10_gun_dive_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_a10_gun_dive_1" );
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_mig29_missile_dive_1" );
var_0 thread maps\skyway_ambient_a10::mig29_afterburners_node_wait();
if ( common_scripts\utility::cointoss() )
var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_mig29_missile_dive_1_buddy" );
wait( randomfloatrange( 4.0, 5.0 ) );
}
base_array_ambient_dogfight_2()
{
level endon( "kill_vista_a10" );
for (;;)
{
wait( randomfloatrange( 5.0, 25.0 ) );
level.base_array_ambient_a10_gun_dive_2 = undefined;
level.base_array_ambient_a10_gun_dive_2 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_a10_gun_dive_2" );
if ( common_scripts\utility::cointoss() )
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_a10_gun_dive_2_buddy" );
wait 0.5;
var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_mig29_missile_dive_2" );
var_1 thread maps\skyway_ambient_a10::mig29_afterburners_node_wait();
if ( common_scripts\utility::cointoss() )
var_2 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_mig29_missile_dive_2_buddy" );
wait( randomfloatrange( 5.0, 10.0 ) );
}
}
base_array_ambient_dogfight_3()
{
level endon( "kill_vista_a10" );
for (;;)
{
wait( randomfloatrange( 35.0, 36.0 ) );
level.base_array_ambient_a10_gun_dive_3 = undefined;
level.base_array_ambient_a10_gun_dive_3 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_a10_gun_dive_3" );
wait 0.5;
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_mig29_missile_dive_3" );
var_0 thread maps\skyway_ambient_a10::mig29_afterburners_node_wait();
if ( common_scripts\utility::cointoss() )
var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_mig29_missile_dive_3_buddy" );
wait( randomfloatrange( 5.0, 10.0 ) );
}
}
base_array_ambient_dogfight_1b()
{
level endon( "kill_vista_a10" );
for (;;)
{
wait( randomfloatrange( 2.0, 10.0 ) );
level.base_array_ambient_a10_gun_dive_1b = undefined;
level.base_array_ambient_a10_gun_dive_1b = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_a10_gun_dive_1b" );
if ( common_scripts\utility::cointoss() )
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_a10_gun_dive_1b_buddy" );
wait 0.5;
var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_mig29_missile_dive_1b" );
var_1 thread maps\skyway_ambient_a10::mig29_afterburners_node_wait();
if ( common_scripts\utility::cointoss() )
var_2 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_mig29_missile_dive_1b_buddy" );
wait( randomfloatrange( 4.0, 8.0 ) );
}
}
base_array_ambient_dogfight_2b()
{
level endon( "kill_vista_a10" );
for (;;)
{
wait( randomfloatrange( 5.0, 7.0 ) );
level.base_array_ambient_a10_gun_dive_2b = undefined;
level.base_array_ambient_a10_gun_dive_2b = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_a10_gun_dive_2b" );
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_a10_gun_dive_2b_buddy" );
wait 0.5;
var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_mig29_missile_dive_2b" );
var_1 thread maps\skyway_ambient_a10::mig29_afterburners_node_wait();
wait( randomfloatrange( 1.0, 2.5 ) );
}
}
base_array_ambient_dogfight_3b()
{
level endon( "kill_vista_a10" );
for (;;)
{
wait( randomfloatrange( 15.0, 20.0 ) );
level.base_array_ambient_a10_gun_dive_3b = undefined;
level.base_array_ambient_a10_gun_dive_3b = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_a10_gun_dive_3b" );
if ( common_scripts\utility::cointoss() )
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_a10_gun_dive_3b_buddy" );
wait 0.5;
var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_mig29_missile_dive_3b" );
var_1 thread maps\skyway_ambient_a10::mig29_afterburners_node_wait();
if ( common_scripts\utility::cointoss() )
var_2 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "base_array_ambient_mig29_missile_dive_3b_buddy" );
wait( randomfloatrange( 5.0, 10.0 ) );
}
}
base_array_ambient_dogfight_4b()
{
common_scripts\utility::flag_wait( "flag_sat1_end" );
level endon( "flag_vision_tunnel" );
for (;;)
{
wait( randomfloatrange( 3.0, 7.0 ) );
var_0 = getentarray( "base_array_ambient_a10_gun_dive_4b", "targetname" );
var_1 = common_scripts\utility::getclosest( level.player.origin, var_0 );
var_2 = var_1 maps\_vehicle::spawn_vehicle_and_gopath();
wait 0.5;
var_3 = getentarray( "base_array_ambient_mig29_gun_dive_4b", "targetname" );
var_4 = common_scripts\utility::getclosest( level.player.origin, var_3 );
var_5 = var_4 maps\_vehicle::spawn_vehicle_and_gopath();
var_5 thread maps\skyway_ambient_a10::mig29_afterburners_node_wait();
wait( randomfloatrange( 1.0, 2.0 ) );
}
}
base_array_ambient_dogfight_5b()
{
common_scripts\utility::flag_wait( "flag_sat1_end" );
level endon( "flag_vision_tunnel" );
for (;;)
{
wait( randomfloatrange( 3.0, 4.0 ) );
var_0 = getentarray( "base_array_ambient_a10_gun_dive_5b", "targetname" );
var_1 = common_scripts\utility::getclosest( level.player.origin, var_0 );
var_2 = var_1 maps\_vehicle::spawn_vehicle_and_gopath();
wait 0.5;
var_3 = getentarray( "base_array_ambient_mig29_gun_dive_5b", "targetname" );
var_4 = common_scripts\utility::getclosest( level.player.origin, var_3 );
var_5 = var_4 maps\_vehicle::spawn_vehicle_and_gopath();
var_5 thread maps\skyway_ambient_a10::mig29_afterburners_node_wait();
wait( randomfloatrange( 1.0, 2.0 ) );
}
}
base_array_ambient_dogfight_6b()
{
common_scripts\utility::flag_wait( "flag_sat1_end" );
level endon( "flag_vision_tunnel" );
for (;;)
{
wait( randomfloatrange( 4.0, 6.0 ) );
var_0 = getentarray( "base_array_ambient_mig29_gun_dive_6b", "targetname" );
var_1 = common_scripts\utility::getclosest( level.player.origin, var_0 );
var_2 = var_1 maps\_vehicle::spawn_vehicle_and_gopath();
wait( randomfloatrange( 1.0, 2.0 ) );
}
}
base_array_ambient_dogfight_6c()
{
common_scripts\utility::flag_wait( "flag_sat1_end" );
level endon( "flag_vision_tunnel" );
for (;;)
{
wait( randomfloatrange( 2.0, 4.0 ) );
var_0 = getentarray( "base_array_ambient_mig29_gun_dive_6c", "targetname" );
var_1 = common_scripts\utility::getclosest( level.player.origin, var_0 );
var_2 = var_1 maps\_vehicle::spawn_vehicle_and_gopath();
wait( randomfloatrange( 1.0, 2.0 ) );
}
}
ai_kill_when_out_of_sight( var_0, var_1 )
{
if ( !isdefined( var_0 ) )
return;
var_2 = 0.75;
if ( issplitscreen() )
var_2 = 0.65;
while ( var_0.size > 0 )
{
wait 1;
for ( var_3 = 0; var_3 < var_0.size; var_3++ )
{
if ( !isdefined( var_0[var_3] ) || !isalive( var_0[var_3] ) )
{
var_0 = common_scripts\utility::array_remove( var_0, var_0[var_3] );
continue;
}
if ( maps\_utility::players_within_distance( var_1, var_0[var_3].origin ) )
continue;
if ( maps\_utility::either_player_looking_at( var_0[var_3].origin + ( 0, 0, 48 ), var_2, 1 ) )
continue;
if ( isdefined( var_0[var_3].magic_bullet_shield ) )
var_0[var_3] maps\_utility::stop_magic_bullet_shield();
var_0[var_3] maps\_utility_code::kill_deathflag_proc();
var_0 = common_scripts\utility::array_remove( var_0, var_0[var_3] );
}
}
}