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

2399 lines
89 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
clockwork_interior_pre_load()
{
common_scripts\utility::flag_init( "interior_finished" );
common_scripts\utility::flag_init( "interior_combat_finished" );
common_scripts\utility::flag_init( "interior_cqb_finished" );
common_scripts\utility::flag_init( "at_vault_door" );
common_scripts\utility::flag_init( "green_zone" );
common_scripts\utility::flag_init( "lights_on" );
common_scripts\utility::flag_init( "vault_blast_area" );
common_scripts\utility::flag_init( "approaching_vault_door" );
common_scripts\utility::flag_init( "drill_pickup_ready" );
common_scripts\utility::flag_init( "got_drill" );
common_scripts\utility::flag_init( "drill_safezone" );
common_scripts\utility::flag_init( "drill_toofar" );
common_scripts\utility::flag_init( "drill_spot1_ready" );
common_scripts\utility::flag_init( "drill1_start" );
common_scripts\utility::flag_init( "drill1_complete" );
common_scripts\utility::flag_init( "drill_spot2_ready" );
common_scripts\utility::flag_init( "drill2_start" );
common_scripts\utility::flag_init( "drill2_complete" );
common_scripts\utility::flag_init( "enable_charge" );
common_scripts\utility::flag_init( "glow_start" );
common_scripts\utility::flag_init( "thermite_start" );
common_scripts\utility::flag_init( "thermite_stop" );
common_scripts\utility::flag_init( "explosion_start" );
common_scripts\utility::flag_init( "start_pip_cams" );
common_scripts\utility::flag_init( "discovery_guys" );
common_scripts\utility::flag_init( "discovery_spawn" );
common_scripts\utility::flag_init( "start_discovery" );
common_scripts\utility::flag_init( "end_discovery" );
common_scripts\utility::flag_init( "attack_discovery_guys" );
common_scripts\utility::flag_init( "combat_start" );
common_scripts\utility::flag_init( "combat_guys1" );
common_scripts\utility::flag_init( "combat_sidehall" );
common_scripts\utility::flag_init( "combat_first_guys_dead" );
common_scripts\utility::flag_init( "combat_1_over" );
common_scripts\utility::flag_init( "combat_flee" );
common_scripts\utility::flag_init( "to_cqb" );
common_scripts\utility::flag_init( "to_cqb2" );
common_scripts\utility::flag_init( "catwalks_open" );
common_scripts\utility::flag_init( "kick_a_door" );
common_scripts\utility::flag_init( "shut_catwalk_door" );
common_scripts\utility::flag_init( "cqb_attack5" );
common_scripts\utility::flag_init( "catwalk_melee_abort" );
common_scripts\utility::flag_init( "cqb1_dead" );
common_scripts\utility::flag_init( "cqb2_dead" );
common_scripts\utility::flag_init( "cqb3_dead" );
common_scripts\utility::flag_init( "cqb4_dead" );
common_scripts\utility::flag_init( "cqb5_dead" );
common_scripts\utility::flag_init( "cqb6_dead" );
common_scripts\utility::flag_init( "cqb7_dead" );
common_scripts\utility::flag_init( "extra_guys_dead" );
common_scripts\utility::flag_init( "round_room_fight" );
common_scripts\utility::flag_init( "rotunda_cam" );
common_scripts\utility::flag_init( "thermite_started" );
common_scripts\utility::flag_init( "aud_drilling_door" );
common_scripts\utility::flag_init( "drill_attached" );
common_scripts\utility::flag_init( "starting_rotunda_kill" );
common_scripts\utility::flag_init( "obj_vault_complete" );
common_scripts\utility::flag_init( "Obj_datacenter_complete" );
common_scripts\utility::flag_init( "at_slow_door" );
common_scripts\utility::flag_init( "hesh_ready_for_catwalks" );
}
setup_interior_vault_scene()
{
maps\clockwork_code::dog_setup();
maps\clockwork_code::setup_player();
maps\clockwork_code::spawn_allies();
level.player switchtoweapon( "cz805bren+reflex_sp+silencer_sp" );
maps\_utility::battlechatter_off( "allies" );
maps\_utility::battlechatter_off( "axis" );
common_scripts\utility::array_thread( level.allies, maps\_utility::enable_cqbwalk );
common_scripts\utility::flag_set( "lights_out" );
common_scripts\utility::flag_set( "FLAG_eyes_and_ears_complete" );
common_scripts\utility::flag_clear( "lights_on" );
maps\_utility::vision_set_changes( "clockwork_lights_off", 0 );
visionsetnight( "clockwork_night" );
level.player setactionslot( 1, "nightvision" );
thread maps\clockwork_audio::checkpoint_interior_vault_scene();
level.player thread maps\_nightvision::nightvision_on();
level.player nightvisiongogglesforceon();
common_scripts\utility::flag_set( "nvg_light_on" );
thread maps\clockwork_interior_nvg::player_light();
thread vault_objective();
}
begin_interior_vault_scene()
{
var_0 = common_scripts\utility::array_combine( getentarray( "chaos_decals", "targetname" ), getentarray( "chaos_decals1", "targetname" ) );
var_0 = common_scripts\utility::array_combine( var_0, getentarray( "chaos_decals2", "targetname" ) );
var_0 = common_scripts\utility::array_combine( var_0, getentarray( "chaos_decals_delete", "targetname" ) );
foreach ( var_2 in var_0 )
var_2 hide();
if ( level.woof )
thread handle_dog_interior_attack();
maps\clockwork_code::setup_drill( 1 );
maps\_utility::disable_trigger_with_targetname( "pickup_drill_trigger" );
setup_vault_door( 1 );
setup_vault_props();
thread new_vault_scene();
thread interior_vault_handle_ps4_ssao();
common_scripts\utility::flag_wait( "interior_finished" );
maps\_utility::delaythread( 4, maps\_utility::autosave_by_name, "vault_open" );
}
interior_vault_handle_ps4_ssao()
{
if ( !level.ps4 )
return;
common_scripts\utility::flag_wait( "explosion_start" );
maps\_art::disable_ssao_over_time( 0.2 );
wait 6;
maps\_art::enable_ssao_over_time( 2 );
}
handle_dog_interior_attack()
{
level.dog setdogattackradius( 200 );
}
setup_vault_props()
{
level.tablet_prop = maps\_utility::spawn_anim_model( "vault_tablet_prop" );
level.tablet = maps\_utility::spawn_anim_model( "vault_tablet" );
level.tablet linkto( level.tablet_prop, "J_prop_1" );
level.tablet hide();
playfxontag( level._effect["vfx/moments/clockwork/vfx_vault_tablet_screen"], level.tablet_prop, "J_prop_1" );
level.thermite1 = maps\_utility::spawn_anim_model( "vault_thermite1" );
level.thermite2 = maps\_utility::spawn_anim_model( "vault_thermite2" );
level.thermite3 = maps\_utility::spawn_anim_model( "vault_thermite3" );
level.thermite1 hide();
level.thermite2 hide();
level.thermite3 hide();
level.charge1 = maps\_utility::spawn_anim_model( "vault_charge1" );
level.charge2 = maps\_utility::spawn_anim_model( "vault_charge2" );
level.charge1 hide();
level.charge2 hide();
level.drill_prop = maps\_utility::spawn_anim_model( "vault_drill_prop" );
maps\clockwork_code::setup_drill( 0 );
foreach ( var_1 in level.drill_pickup )
var_1 linkto( level.drill_prop, "J_prop_1", ( 0, 0, 0 ), ( 0, 0, 0 ) );
level.vault_props = maps\_utility::make_array( level.thermite1, level.thermite2, level.charge1, level.charge2 );
level.spool_prop = maps\_utility::spawn_anim_model( "vault_spool_prop" );
level.spool = maps\_utility::spawn_anim_model( "vault_spool" );
level.spool linkto( level.spool_prop, "J_prop_1" );
level.spool hide();
level.glowstick1_prop = maps\_utility::spawn_anim_model( "vault_glowstick1_prop" );
level.glowstick1 = maps\_utility::spawn_anim_model( "vault_glowstick1" );
level.glowstick1 linkto( level.glowstick1_prop, "J_prop_1" );
level.glowstick1 hide();
level.glowstick2_prop = maps\_utility::spawn_anim_model( "vault_glowstick2_prop" );
level.glowstick2 = maps\_utility::spawn_anim_model( "vault_glowstick2" );
level.glowstick2 linkto( level.glowstick2_prop, "J_prop_1" );
level.glowstick2 hide();
}
vault_nvg_off_hint()
{
common_scripts\utility::flag_wait( "at_vault_door" );
level.player thread maps\_utility::display_hint_timeout( "disable_nvg", 5 );
common_scripts\utility::flag_wait( "approaching_vault_door" );
while ( level.player isswitchingweapon() )
wait 0.01;
thread maps\clockwork_code::nvg_goggles_off();
}
new_vault_scene()
{
level.number = 1;
level.drilled_good_line = 0;
common_scripts\utility::flag_wait( "FLAG_eyes_and_ears_complete" );
thread vault_vo();
common_scripts\utility::array_thread( level.allies, maps\_utility::disable_ai_color );
var_0 = getent( "vault_door_scene", "targetname" );
level.allies[0].animname = "baker";
level.allies[1].animname = "keegan";
level.allies[2].animname = "cypher";
var_0 thread maps\_anim::anim_reach_together( level.allies, "vault_approach" );
common_scripts\utility::array_thread( level.allies, ::ally_animate_vault_scene );
level.allies[0] waittill( "anim_reach_complete" );
var_1 = getaiarray( "axis" );
common_scripts\utility::array_thread( var_1, maps\clockwork_code::die_quietly );
thread vault_nvg_off_hint();
common_scripts\utility::flag_set( "FLAG_obj_enterbase_complete" );
thread vault_objective();
thread animate_vault_door();
thread maps\clockwork_audio::vault_foley();
thread handle_misc_drill_details();
wait 1;
maps\_utility::autosave_by_name_silent( "at_vault" );
common_scripts\utility::flag_wait_or_timeout( "vault_blast_area", 1 );
getdrill();
level.player_arms = maps\_utility::spawn_anim_model( "player_rig" );
level.player_arms hide();
common_scripts\utility::flag_wait( "drill_spot1_ready" );
var_0 thread maps\_anim::anim_first_frame_solo( level.player_arms, "back1" );
handle_drill_spot( "drill_spot1", "drill1_start", "drill1_complete", "TAG_FX_XMark_RI" );
var_0 thread maps\_anim::anim_single_solo( level.player_arms, "back1" );
level.player allowads( 0 );
level.player playerlinktodelta( level.player_arms, "tag_player", 1, 45, 45, 10, 10 );
level.player_arms waittillmatch( "single anim", "end" );
level.player unlink();
level.player allowads( 1 );
common_scripts\utility::flag_wait( "drill_spot2_ready" );
var_0 thread maps\_anim::anim_first_frame_solo( level.player_arms, "back2" );
handle_drill_spot( "drill_spot2", "drill2_start", "drill2_complete", "TAG_FX_XMark_LE" );
var_2 = getanimlength( level.scr_anim["player_rig"]["back2"] );
var_0 thread maps\_anim::anim_single_solo( level.player_arms, "back2" );
level.player allowads( 0 );
level.player playerlinktodelta( level.player_arms, "tag_player", 0.5, 90, 20, 10, 10 );
level.player_arms waittillmatch( "single anim", "end" );
level.player unlink();
level.player enableweaponpickup();
level.player giveweapon( level.pre_drill_weapon );
level.player switchtoweapon( level.pre_drill_weapon );
level.player allowads( 1 );
wait 1;
level.player takeweapon( "drill_press" );
level.player setactionslot( 1, "" );
common_scripts\utility::flag_wait( "explosion_start" );
common_scripts\utility::array_thread( level.allies, maps\_utility::enable_ai_color );
if ( common_scripts\utility::flag( "vault_blast_area" ) )
{
var_3 = getent( "smoke_spot", "targetname" );
level.player dodamage( level.player.health - 5, var_3.origin );
level.player shellshock( "default", 5 );
level.player setstance( "prone" );
level.player pushplayervector( ( 100, 0, 0 ), 1 );
wait 0.2;
level.player pushplayervector( ( 0, 0, 0 ), 1 );
}
level.player playrumbleonentity( "artillery_rumble" );
maps\_utility::battlechatter_on( "axis" );
maps\_utility::battlechatter_on( "allies" );
maps\_utility::set_team_bcvoice( "allies", "taskforce" );
}
getdrill()
{
common_scripts\utility::flag_wait( "drill_pickup_ready" );
common_scripts\utility::array_thread( level.drill_pickup, maps\_utility::show_entity );
maps\_utility::enable_trigger_with_targetname( "pickup_drill_trigger" );
common_scripts\utility::flag_wait( "got_drill" );
maps\_utility::disable_trigger_with_targetname( "pickup_drill_trigger" );
common_scripts\utility::array_thread( level.drill_pickup, maps\_utility::hide_entity );
switchtodrill();
}
switchtodrill()
{
level.pre_drill_weapon = level.player getcurrentweapon();
level.player giveweapon( "drill_press" );
level.player disableweaponpickup();
level.player switchtoweapon( "drill_press" );
level.player disableweapons();
wait 0.75;
level.player playsound( "clkw_scn_vault_drill_from_bag" );
level.player takeweapon( level.pre_drill_weapon );
wait 0.5;
level.player enableweapons();
wait 1;
}
handle_drill_spot( var_0, var_1, var_2, var_3 )
{
thread handle_drilling( var_2, var_1 );
var_4 = 0;
var_5 = 0;
var_6 = 0;
var_7 = 0;
var_8 = 1;
var_9 = 1;
var_10 = undefined;
var_11 = undefined;
var_12 = getent( "vault_door_scene", "targetname" );
var_13 = spawn( "script_origin", ( 0, 0, 0 ) );
var_14 = spawn( "script_origin", ( 0, 0, 0 ) );
var_15 = getent( "pip_xray_cam", "targetname" );
maps\_utility::enable_trigger_with_targetname( var_0 );
while ( !common_scripts\utility::flag( var_2 ) )
{
if ( !common_scripts\utility::flag( var_1 ) || var_6 == 1 && level.player getcurrentweapon() != "drill_press" || var_7 == 1 && level.player getcurrentweapon() == "drill_press" )
{
var_8 = 1;
var_9 = 1;
var_6 = 0;
var_7 = 0;
if ( isdefined( var_10 ) )
{
var_10 maps\_utility::hint_delete();
var_10 = undefined;
}
if ( isdefined( var_11 ) )
{
var_11 maps\_utility::hint_delete();
var_11 = undefined;
}
}
common_scripts\utility::flag_wait( var_1 );
if ( common_scripts\utility::flag( "drill_toofar" ) )
return;
if ( var_8 )
{
var_8 = 0;
if ( level.player getcurrentweapon() == "drill_press" )
{
var_10 = maps\_utility::hint_create( &"CLOCKWORK_HINT_DRILL" );
var_6 = 1;
}
else
{
var_10 = maps\_utility::hint_create( &"CLOCKWORK_HINT_DRILL_SWITCH" );
var_7 = 1;
}
}
if ( ( level.player adsbuttonpressed() || level.player attackbuttonpressed() ) && level.player getcurrentweapon() == "drill_press" && !level.player isswitchingweapon() )
{
if ( isdefined( var_10 ) )
{
var_10 maps\_utility::hint_delete();
var_10 = undefined;
}
if ( var_5 == 0 )
{
level.frag_ammo = level.player getweaponammostock( "fraggrenade" );
level.flash_ammo = level.player getweaponammostock( "flash_grenade" );
level.player takeweapon( "fraggrenade" );
level.player takeweapon( "flash_grenade" );
level.player setstance( "stand" );
level.player allowcrouch( 0 );
level.player allowprone( 0 );
var_5 = 1;
level.player disableweaponswitch();
level.player playerlinktoblend( level.player_arms, "tag_player", 0.25 );
thread maps\clockwork_audio::drill_plant();
level.player setactionslot( 1, "" );
if ( level.drill_bink )
{
}
else
maps\clockwork_pip::pip_enable( var_15, undefined, undefined, undefined, undefined, 50, 50, 400, 225, "clockwork_pillar_room" );
wait 0.3;
common_scripts\utility::flag_set( "drill_attached" );
}
if ( var_9 )
{
if ( level.drill_bink )
{
if ( !isdefined( var_11 ) )
var_11 = maps\_utility::hint_create( &"CLOCKWORK_HINT_DRILL" );
}
var_9 = 0;
}
if ( level.player attackbuttonpressed() && level.player getcurrentweapon() == "drill_press" && !level.player isswitchingweapon() )
{
if ( isdefined( var_11 ) )
{
var_11 maps\_utility::hint_delete();
var_11 = undefined;
}
if ( var_4 == 0 )
{
level notify( "started_drilling" );
thread showdrillhole( var_3 );
if ( level.drill_bink )
pausecinematicingame( 0 );
var_4 = 1;
playfxontag( level._effect["drill_sparks"], level.vault_door, var_3 );
thread drill_progress_fx( var_3 );
level.player playsound( "clkw_scn_vault_drill_wind_up" );
var_13 playloopsound( "clkw_scn_vault_drill_lp" );
}
}
else if ( var_4 == 1 )
{
if ( level.drill_bink )
pausecinematicingame( 1 );
var_4 = 0;
stopfxontag( level._effect["drill_sparks"], level.vault_door, var_3 );
level notify( "kill_drill_progress_fx" );
stop_drilling_sounds( var_13, var_14 );
}
}
else
{
if ( var_4 == 1 )
{
var_4 = 0;
stopfxontag( level._effect["drill_sparks"], level.vault_door, var_3 );
level notify( "kill_drill_progress_fx" );
thread stop_drilling_sounds( var_13, var_14 );
}
if ( var_5 == 1 )
{
common_scripts\utility::waitframe();
restore_grenade_weapons();
var_8 = 1;
var_9 = 1;
var_5 = 0;
common_scripts\utility::flag_clear( "drill_attached" );
if ( !common_scripts\utility::flag( var_2 ) )
level.player unlink();
level.player thread maps\_utility::play_sound_on_entity( "clkw_scn_vault_drill_off_door" );
if ( isdefined( var_11 ) )
{
var_11 maps\_utility::hint_delete();
var_11 = undefined;
}
level.player setactionslot( 1, "nightvision" );
if ( level.drill_bink )
reset_tablet_screen();
else
maps\clockwork_pip::pip_disable();
level.player enableweaponswitch();
level.player allowcrouch( 1 );
level.player allowprone( 1 );
}
}
wait 0.01;
}
if ( isdefined( var_11 ) )
{
var_11 maps\_utility::hint_delete();
var_11 = undefined;
}
if ( isdefined( var_10 ) )
{
var_10 maps\_utility::hint_delete();
var_10 = undefined;
}
if ( var_4 == 1 )
{
var_4 = 0;
stopfxontag( level._effect["drill_sparks"], level.vault_door, var_3 );
level notify( "kill_drill_progress_fx" );
thread stop_drilling_sounds( var_13, var_14 );
}
if ( var_5 == 1 )
{
restore_grenade_weapons();
level.player thread maps\_utility::play_sound_on_entity( "clkw_scn_vault_drill_pullout" );
level.player setactionslot( 1, "nightvision" );
if ( level.drill_bink )
reset_tablet_screen();
else
thread maps\clockwork_pip::pip_disable();
level.player enableweaponswitch();
level.player allowcrouch( 1 );
level.player allowprone( 1 );
}
common_scripts\utility::flag_clear( "aud_drilling_door" );
maps\_utility::disable_trigger_with_targetname( var_0 );
common_scripts\utility::flag_set( var_1 );
}
restore_grenade_weapons()
{
if ( level.woof )
return;
level.player giveweapon( "fraggrenade" );
level.player giveweapon( "flash_grenade" );
level.player setweaponammostock( "fraggrenade", level.frag_ammo );
level.player setweaponammostock( "flash_grenade", level.flash_ammo );
}
drill_fail_animation()
{
var_0 = [];
var_0[0] = getent( "piston_01", "targetname" );
var_0[1] = getent( "piston_02", "targetname" );
var_0[2] = getent( "piston_03", "targetname" );
var_0[3] = getent( "piston_04", "targetname" );
var_1 = [];
var_1[0] = getent( "cog_01", "targetname" );
var_1[1] = getent( "cog_02", "targetname" );
var_1[2] = getent( "cog_03", "targetname" );
var_1[3] = getent( "cog_04", "targetname" );
var_1[0] rotatepitch( 90, 1 );
var_1[1] rotatepitch( 90, 1.5 );
var_1[2] rotatepitch( -90, 1 );
var_1[3] rotatepitch( -90, 1.5 );
wait 0.25;
foreach ( var_3 in var_0 )
{
var_3 movey( 200, 0.5 );
wait 0.25;
}
}
stop_drilling_sounds( var_0, var_1 )
{
level.player playsound( "clkw_scn_vault_drill_wind_down" );
wait 0.05;
var_0 stoploopsound( "clkw_scn_vault_drill_lp" );
var_1 stopsounds();
}
reset_tablet_screen()
{
if ( level.drill_bink )
{
level endon( "started_drilling" );
cinematicingame( "clockwork_vault_drill" );
wait 0.05;
while ( cinematicgetframe() < 2 )
wait 0.05;
pausecinematicingame( 1 );
}
}
handle_drilling( var_0, var_1 )
{
common_scripts\utility::flag_clear( "drill_safezone" );
common_scripts\utility::flag_clear( "drill_toofar" );
var_2 = 300;
if ( level.drill_bink )
var_2 = var_2 + 50;
var_3 = 550;
var_4 = 450;
level.backplate_sound_on = 0;
level.safezone_sound_on = 0;
var_5 = spawn( "script_origin", ( 0, 0, 0 ) );
var_6 = spawn( "script_origin", ( 0, 0, 0 ) );
var_7 = 0;
var_8 = ( 0, 4, 0 );
var_9 = 0;
var_10 = 1;
var_11 = getent( "pip_drill", "targetname" );
var_12 = var_11.angles;
if ( isdefined( level.drill_reset_pos ) )
var_13 = level.drill_reset_pos;
else
{
var_13 = var_11.origin + ( 0, -900, 0 );
level.drill_reset_pos = var_13;
}
var_11.origin = var_13;
var_14 = var_13;
var_15 = 0;
var_16 = 115;
var_17 = 160;
var_18 = 200;
var_19 = 0;
common_scripts\utility::flag_clear( "aud_drilling_door" );
while ( !common_scripts\utility::flag( var_0 ) && !common_scripts\utility::flag( "drill_toofar" ) )
{
common_scripts\utility::flag_wait( var_1 );
if ( ( level.player adsbuttonpressed() || level.player attackbuttonpressed() ) && level.player getcurrentweapon() == "drill_press" && !level.player isswitchingweapon() )
{
var_15 = cinematicgetframe();
if ( level.player attackbuttonpressed() )
{
common_scripts\utility::flag_set( "aud_drilling_door" );
var_13 = var_13 + var_8;
var_11.angles = var_11.angles + ( 45, 0, 0 );
var_11.origin = var_13;
var_9 = var_13 - var_14[1];
if ( var_15 > var_16 )
{
if ( !var_7 )
{
thread drilled_good_vo( var_0 );
level.player playrumbleonentity( "drill_through" );
var_7 = 1;
level.player thread maps\_utility::play_sound_on_entity( "clkw_scn_vault_drill_safezone_beep" );
}
}
if ( var_15 <= var_16 )
{
if ( var_15 > var_16 - 15 && var_19 == 0 )
{
var_19 = 1;
var_6 playsound( "clkw_scn_vault_drill_safezone" );
level notify( "drill_progress_safe" );
}
thread drillthrough_plate_sound( var_5, "clkw_scn_vault_drill_frontplate" );
}
if ( var_15 > var_18 )
{
level notify( "stop_drilling_sounds" );
common_scripts\utility::flag_set( "drill_toofar" );
common_scripts\utility::flag_set( "drill_safezone" );
if ( !level.drill_bink )
thread drill_fail_animation();
level.player maps\_utility::play_sound_on_entity( "clkw_scn_vault_drill_gears" );
thread vault_fail_vo();
thread maps\clockwork_code::screenshakefade( 1, 0.5 );
level.player playrumbleonentity( "drill_through" );
level.player playrumbleonentity( "drill_through" );
if ( level.drill_bink )
{
setdvar( "ui_deadquote", &"CLOCKWORK_QUOTE_BACKPLATE" );
maps\_utility::missionfailedwrapper();
}
else
wait 10;
break;
}
if ( var_15 > var_17 )
{
thread drillthrough_plate_sound( var_5, "clkw_scn_vault_drill_backplate" );
level notify( "drill_progress_danger" );
}
}
else
{
level notify( "stop_drilling_sounds" );
if ( var_15 > var_16 && !common_scripts\utility::flag( var_0 ) )
common_scripts\utility::flag_set( var_0 );
}
}
else
{
level notify( "stop_drilling_sounds" );
common_scripts\utility::flag_clear( "aud_drilling_door" );
var_6 stopsounds();
var_11.origin = var_14;
var_13 = var_11.origin;
var_19 = 0;
if ( var_15 > var_16 )
{
common_scripts\utility::flag_set( var_0 );
common_scripts\utility::flag_set( "drill_safezone" );
}
}
wait 0.05;
}
level notify( "stop_drilling_sounds" );
if ( common_scripts\utility::flag( "drill_toofar" ) )
wait 100;
var_11.origin = level.drill_reset_pos;
}
vault_fail_vo()
{
var_0 = [];
var_0[0] = "clockwork_cyr_toofar";
var_0[1] = "clockwork_cyr_lockingdown";
level.allies[2] maps\clockwork_code::char_dialog_add_and_go( var_0[randomint( var_0.size )] );
level.allies[2] thread maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_abortmission" );
}
drillthrough_plate_sound( var_0, var_1 )
{
if ( level.backplate_sound_on == 0 )
{
level.backplate_sound_on = 1;
common_scripts\utility::flag_wait( "drill_attached" );
if ( level.player attackbuttonpressed() )
{
var_0 playsound( var_1 );
level waittill( "stop_drilling_sounds" );
var_0 stopsounds();
}
level.backplate_sound_on = 0;
}
}
waittill_fired_or_timeout( var_0, var_1 )
{
self endon( var_0 );
wait( var_1 );
return 0;
}
watch_for_ally()
{
level.aiming_at_ally = 0;
while ( !common_scripts\utility::flag( "thermite_start" ) )
{
var_0 = level.player waittill_fired_or_timeout( "weapon_fired", 0.2 );
if ( isdefined( var_0 ) )
{
level.aiming_at_ally = 1;
continue;
}
level.aiming_at_ally = 0;
}
}
handle_misc_drill_details()
{
var_0 = spawn( "script_origin", ( 0, 0, 0 ) );
var_1 = 0;
var_2 = 0;
var_3 = 0;
thread watch_for_ally();
while ( !common_scripts\utility::flag( "thermite_start" ) )
{
var_4 = level.player getcurrentweapon();
if ( var_4 == "drill_press" )
{
setsaveddvar( "ammoCounterHide", "1" );
level.player setactionslot( 1, "" );
}
else
{
setsaveddvar( "ammoCounterHide", "0" );
level.player setactionslot( 1, "nightvision" );
}
if ( var_4 == "drill_press" && level.player attackbuttonpressed() && !level.aiming_at_ally )
{
common_scripts\utility::waitframe();
if ( var_1 != 1 )
{
if ( !common_scripts\utility::flag( "aud_drilling_door" ) )
{
var_1 = 1;
if ( var_1 == 1 )
{
level.player playsound( "clkw_scn_vault_drill_wind_up" );
var_0 playloopsound( "clkw_scn_vault_drill_removed_lp" );
}
}
}
}
else if ( var_1 == 1 )
{
var_1 = 0;
level.player playsound( "clkw_scn_vault_drill_wind_down_removed" );
wait 0.05;
var_0 stoploopsound( "clkw_scn_vault_drill_lp" );
}
if ( var_4 == "drill_press" )
{
level.player givemaxammo( var_4 );
level.player setweaponammoclip( var_4, weaponclipsize( var_4 ) );
if ( level.player attackbuttonpressed() )
{
if ( ( common_scripts\utility::flag( "drill1_start" ) || common_scripts\utility::flag( "drill2_start" ) ) && ( level.player adsbuttonpressed() || level.player attackbuttonpressed() ) )
{
thread maps\clockwork_code::screenshakefade( 0.15, 0.5 );
level.player playrumbleonentity( "drill_vault" );
}
else if ( !level.aiming_at_ally )
{
thread maps\clockwork_code::screenshakefade( 0.1, 0.5 );
level.player playrumbleonentity( "drill_normal" );
}
}
if ( level.player adsbuttonpressed() || level.player attackbuttonpressed() )
{
if ( var_2 == 0 )
{
var_3 = 0;
var_2 = 1;
thread maps\clockwork_audio::drill_pullout();
}
}
else if ( var_3 == 0 )
{
var_3 = 1;
var_2 = 0;
thread maps\clockwork_audio::drill_pullout();
}
}
wait 0.05;
}
}
get_animating_actors( var_0, var_1 )
{
var_2 = [];
foreach ( var_4 in var_0 )
{
if ( isdefined( var_4 ) && isdefined( level.scr_anim[var_4.animname][var_1] ) )
var_2[var_2.size] = var_4;
}
return var_2;
}
ally_animate_vault_scene()
{
var_0 = getent( "vault_door_scene", "targetname" );
var_1 = ally_vault_props();
var_2 = common_scripts\utility::array_add( var_1, self );
self waittill( "anim_reach_complete" );
if ( self.animname == "cypher" && level.drill_bink )
setsaveddvar( "cg_cinematicFullScreen", "0" );
var_3 = get_animating_actors( var_2, "vault_approach" );
var_0 maps\_anim::anim_single( var_3, "vault_approach" );
if ( self.animname == "cypher" )
level.tablet unlink();
if ( !common_scripts\utility::flag( "drill1_complete" ) )
{
var_3 = get_animating_actors( var_2, "vault_loop1" );
var_0 thread maps\_anim::anim_loop( var_3, "vault_loop1", "drill1_complete" + self.animname );
common_scripts\utility::flag_wait( "drill1_complete" );
var_0 notify( "drill1_complete" + self.animname );
}
if ( self.animname == "cypher" )
level.tablet linkto( level.tablet_prop, "J_prop_1" );
var_3 = get_animating_actors( var_2, "vault_betweener" );
var_0 thread maps\_anim::anim_single( var_3, "vault_betweener" );
self waittillmatch( "single anim", "end" );
if ( !common_scripts\utility::flag( "drill2_complete" ) )
{
var_3 = get_animating_actors( var_2, "vault_loop2" );
var_0 thread maps\_anim::anim_loop( var_3, "vault_loop2", "drill2_complete" + self.animname );
common_scripts\utility::flag_wait( "drill2_complete" );
var_0 notify( "drill2_complete" + self.animname );
}
var_3 = get_animating_actors( var_2, "vault_finish" );
var_0 maps\_anim::anim_single( var_3, "vault_finish" );
var_0 thread maps\_anim::anim_loop_solo( self, "vault_loop3", "loop3_complete" + self.animname );
common_scripts\utility::flag_wait( "explosion_start" );
var_0 notify( "loop3_complete" + self.animname );
var_3 = get_animating_actors( var_2, "vault_exit" );
var_0 maps\_anim::anim_single( var_3, "vault_exit" );
if ( self.animname == "keegan" )
maps\_utility::forceuseweapon( "cz805bren+reflex_sp", "primary" );
if ( self.animname == "baker" )
maps\_utility::forceuseweapon( "cz805bren+reflex_sp", "primary" );
if ( self.animname == "cypher" )
maps\_utility::forceuseweapon( "mts255", "primary" );
}
animate_vault_door()
{
var_0 = getent( "vault_door_scene", "targetname" );
var_1 = maps\_utility::make_array( level.vault_door );
common_scripts\utility::flag_wait( "drill2_complete" );
var_0 notify( "animate_vault" );
waittillframeend;
thread vault_ceiling_lights( var_0 );
wait 1;
thread thermite_fx();
common_scripts\utility::flag_wait( "glow_start" );
level.player thread maps\_utility::display_hint( "disable_nvg" );
thread maps\clockwork_audio::thermite();
common_scripts\utility::flag_wait( "thermite_start" );
level.player setactionslot( 1, "" );
thread maps\clockwork_code::nvg_goggles_off();
level.player setactionslot( 1, "" );
var_0 thread maps\_anim::anim_single( var_1, "vault_burn" );
common_scripts\utility::flag_wait( "explosion_start" );
var_0 thread maps\_anim::anim_single( var_1, "vault_finish" );
thread turn_on_lights();
maps\clockwork_code::toggle_visibility( "vault_ceiling_structure", 0 );
maps\clockwork_code::toggle_visibility( "vault_ceiling_structure_damaged", 1 );
maps\clockwork_code::toggle_visibility( "vault_frame_damage", 1 );
maps\clockwork_code::toggle_visibility( "drill_hole_01", 0 );
maps\clockwork_code::toggle_visibility( "drill_hole_02", 0 );
level.tablet_prop delete();
level.tablet delete();
level.thermite3 delete();
foreach ( var_3 in level.vault_props )
var_3 delete();
foreach ( var_6 in level.chalk_mark )
var_6 delete();
if ( isdefined( level.spool_prop ) )
level.spool_prop delete();
if ( isdefined( level.spool ) )
level.spool delete();
if ( isdefined( level.glowstick1 ) )
level.glowstick1 delete();
if ( isdefined( level.glowstick1_prop ) )
level.glowstick1_prop delete();
if ( isdefined( level.glowstick2 ) )
level.glowstick2 delete();
if ( isdefined( level.glowstick2_prop ) )
level.glowstick2_prop delete();
if ( isdefined( level.charge1 ) )
level.charge1 delete();
if ( isdefined( level.charge2 ) )
level.charge2 delete();
if ( isdefined( level.thermite1 ) )
level.thermite1 delete();
if ( isdefined( level.thermite2 ) )
level.thermite2 delete();
thread maps\clockwork_code::screenshakefade( 0.45, 1.25, 0.25, 0.8 );
var_8 = getent( "smoke_spot", "targetname" );
playfx( level._effect["vault_smoke"], var_8.origin );
common_scripts\utility::exploder( 1001 );
common_scripts\utility::exploder( 1005 );
level.player giveweapon( "fraggrenade" );
level.player setweaponammoclip( "fraggrenade", level.grenades );
level.player setweaponammostock( "fraggrenade", level.grenades );
level.player setweaponammoclip( "flash_grenade", level.flashbangs );
thread handle_pip_cams();
common_scripts\utility::flag_set( "interior_finished" );
thread maps\clockwork_code::nvg_goggles_off();
open_vault( 0, var_0 );
}
ally_vault_props()
{
var_0 = [];
if ( self.animname == "cypher" )
var_0 = maps\_utility::make_array( level.tablet_prop );
if ( self.animname == "baker" )
var_0 = maps\_utility::make_array( level.thermite1, level.thermite2, level.thermite3, level.glowstick1_prop, level.spool_prop );
if ( self.animname == "keegan" )
var_0 = maps\_utility::make_array( level.drill_prop, level.charge1, level.charge2, level.glowstick2_prop );
return var_0;
}
tablet_light_on( var_0 )
{
playfxontag( level._effect["vfx/moments/clockwork/vfx_vault_tablet_screen"], level.tablet_prop, "J_prop_1" );
}
tablet_light_off( var_0 )
{
stopfxontag( level._effect["vfx/moments/clockwork/vfx_vault_tablet_screen"], level.tablet_prop, "J_prop_1" );
}
start_scan( var_0 )
{
if ( level.drill_bink )
{
thread maps\clockwork_audio::drill_monitor();
cinematicingameloopresident( "clockwork_vault_scan" );
}
}
stop_scan( var_0 )
{
if ( level.drill_bink )
{
cinematicingame( "clockwork_vault_drill" );
wait 0.05;
while ( cinematicgetframe() < 2 )
wait 0.05;
pausecinematicingame( 1 );
}
}
vault_ceiling_lights( var_0 )
{
var_1 = getent( "vault_ceiling_light_right", "targetname" );
var_2 = getent( "vault_ceiling_light_left", "targetname" );
var_1.animname = "vault_light_r";
var_1 maps\_utility::assign_animtree();
var_2.animname = "vault_light_l";
var_2 maps\_utility::assign_animtree();
common_scripts\utility::flag_wait( "explosion_start" );
var_1 thread animate_vault_light( var_0 );
var_2 thread animate_vault_light( var_0 );
}
animate_vault_light( var_0 )
{
level endon( "death" );
var_0 maps\_anim::anim_single_solo( self, "light_explode" );
}
setup_vault_door( var_0 )
{
level.drill_bink = 1;
level.world_vault_door = getent( "model_vault_door", "targetname" );
level.world_vault_door delete();
level.world_vault_clip = getent( "vault_door_clip", "targetname" );
level.vault_door = maps\_utility::spawn_anim_model( "vault_door" );
level.vault_door.animname = "vault_door";
if ( isdefined( var_0 ) && var_0 == 1 )
{
var_1 = getent( "vault_door_scene", "targetname" );
var_1 thread maps\_anim::anim_loop_solo( level.vault_door, "vault_closed", "animate_vault" );
maps\clockwork_code::toggle_visibility( "vault_ceiling_structure_damaged", 0 );
maps\clockwork_code::toggle_visibility( "vault_frame_damage", 0 );
maps\clockwork_code::toggle_visibility( "vault_frame_hotmetal", 0 );
maps\clockwork_code::toggle_visibility( "vault_frame_destroyed_hotmetal", 0 );
}
level.chalk_mark = [];
level.chalk_mark[0] = getent( "chalk_swipe_1a", "targetname" );
level.chalk_mark[1] = getent( "chalk_swipe_1b", "targetname" );
level.chalk_mark[2] = getent( "chalk_swipe_2a", "targetname" );
level.chalk_mark[3] = getent( "chalk_swipe_2b", "targetname" );
common_scripts\utility::array_thread( level.chalk_mark, maps\clockwork_code::safe_hide );
thread align_chalk_marks();
}
align_chalk_marks()
{
wait 1;
var_0 = level.vault_door gettagorigin( "TAG_FX_XMark_RI" );
level.chalk_mark[0].origin = var_0;
level.chalk_mark[1].origin = var_0;
level.fx_charge1_pos = common_scripts\utility::spawn_tag_origin();
level.fx_charge1_pos.origin = var_0;
var_0 = level.vault_door gettagorigin( "TAG_FX_XMark_LE" );
level.chalk_mark[2].origin = var_0;
level.chalk_mark[3].origin = var_0;
level.fx_charge2_pos = common_scripts\utility::spawn_tag_origin();
level.fx_charge2_pos.origin = var_0;
}
showdrillhole( var_0 )
{
var_1 = level.vault_door gettagorigin( var_0 );
var_2 = getent( "drill_hole_01", "targetname" );
if ( var_0 != "TAG_FX_XMark_RI" )
var_2 = getent( "drill_hole_02", "targetname" );
var_2.origin = var_1;
}
chalk_swipe1( var_0 )
{
thread maps\clockwork_audio::chalk_swipe1();
level.chalk_mark[1] show();
wait 0.3;
level.chalk_mark[0] show();
}
chalk_swipe2( var_0 )
{
thread maps\clockwork_audio::chalk_swipe2();
level.chalk_mark[3] show();
wait 0.3;
level.chalk_mark[2] show();
}
turn_on_lights()
{
wait 2;
common_scripts\utility::flag_set( "lights_on" );
thread maps\clockwork_interior_nvg::nvg_area_lights_on_fx();
common_scripts\utility::exploder( 5 );
maps\_utility::vision_set_changes( "clockwork_indoor", 0 );
wait 0.05;
maps\_utility::vision_set_changes( "clockwork_lights_off", 0 );
wait 0.1;
maps\_utility::vision_set_changes( "clockwork_indoor", 0 );
wait 0.05;
maps\_utility::vision_set_changes( "clockwork_lights_off", 0.1 );
wait 0.1;
maps\_utility::vision_set_changes( "clockwork_indoor", 0 );
wait 0.05;
maps\_utility::vision_set_changes( "clockwork_lights_off", 0.1 );
wait 0.5;
maps\_utility::vision_set_changes( "clockwork_indoor", 0 );
wait 0.1;
maps\_utility::vision_set_changes( "clockwork_lights_off", 0.2 );
wait 0.1;
maps\_utility::vision_set_changes( "clockwork_indoor", 0 );
wait 0.05;
maps\_utility::vision_set_changes( "clockwork_lights_off", 0.1 );
wait 0.6;
maps\_utility::vision_set_changes( "clockwork_indoor", 0 );
wait 0.05;
maps\_utility::vision_set_changes( "clockwork_lights_off", 0.1 );
wait 0.1;
maps\_utility::vision_set_changes( "clockwork_indoor", 0 );
wait 0.1;
maps\_utility::vision_set_changes( "clockwork_lights_off", 0.2 );
wait 0.65;
maps\_utility::vision_set_changes( "clockwork_indoor", 0 );
wait 0.1;
maps\_utility::vision_set_changes( "clockwork_lights_off", 0.2 );
wait 0.3;
maps\_utility::vision_set_changes( "clockwork_indoor", 0.1 );
}
drill_progress_fx( var_0 )
{
level endon( "kill_drill_progress_fx" );
level waittill( "drill_progress_safe" );
playfxontag( level._effect["drill_progress1"], level.vault_door, var_0 );
level waittill( "drill_progress_danger" );
playfxontag( level._effect["drill_progress2"], level.vault_door, var_0 );
}
thermite_fx()
{
var_0 = common_scripts\utility::getfx( "vfx/moments/clockwork/vfx_vault_thermite_fuse" );
var_1 = common_scripts\utility::getfx( "vfx/moments/clockwork/vfx_vault_thermite_start" );
var_2 = common_scripts\utility::getfx( "vfx/moments/clockwork/vfx_vault_thermite_end" );
common_scripts\utility::flag_wait( "glow_start" );
playfxontag( var_0, level.thermite1, "tag_thermite_strip" );
wait 0.1;
playfxontag( var_0, level.thermite2, "tag_thermite_strip" );
wait 0.15;
playfxontag( var_0, level.thermite3, "tag_thermite_strip" );
common_scripts\utility::flag_wait( "thermite_start" );
playfxontag( var_1, level.vault_door, "TAG_FX_Thermite_Top_LE" );
playfxontag( var_2, level.vault_door, "TAG_FX_Thermite_Top_LE" );
stopfxontag( var_0, level.thermite1, "tag_thermite_strip" );
wait 0.25;
playfxontag( var_1, level.vault_door, "TAG_FX_Thermite_Bot_LE" );
playfxontag( var_2, level.vault_door, "TAG_FX_Thermite_Bot_LE" );
stopfxontag( var_0, level.thermite2, "tag_thermite_strip" );
wait 0.35;
playfxontag( var_1, level.vault_door, "TAG_FX_Thermite_Mid_RI" );
playfxontag( var_2, level.vault_door, "TAG_FX_Thermite_Mid_RI" );
stopfxontag( var_0, level.thermite3, "tag_thermite_strip" );
level waittill( "thermite_stop" );
stopfxontag( var_1, level.vault_door, "TAG_FX_Thermite_Top_LE" );
wait 0.25;
stopfxontag( var_1, level.vault_door, "TAG_FX_Thermite_Bot_LE" );
wait 0.5;
stopfxontag( var_1, level.vault_door, "TAG_FX_Thermite_Mid_RI" );
common_scripts\utility::flag_wait( "explosion_start" );
stopfxontag( var_2, level.vault_door, "TAG_FX_Thermite_Top_LE" );
stopfxontag( var_2, level.vault_door, "TAG_FX_Thermite_Bot_LE" );
stopfxontag( var_2, level.vault_door, "TAG_FX_Thermite_Mid_RI" );
}
breach_charge_fx_unhide( var_0 )
{
var_1 = common_scripts\utility::getfx( "vfx/moments/clockwork/vfx_vault_charge_warmup" );
playfxontag( var_1, var_0, "TAG_LIGHT" );
}
breach_charge_fx_set( var_0 )
{
var_1 = common_scripts\utility::getfx( "vfx/moments/clockwork/vfx_vault_charge_warmup" );
var_2 = common_scripts\utility::getfx( "vfx/moments/clockwork/vfx_vault_charge_set" );
stopfxontag( var_1, var_0, "TAG_LIGHT" );
playfxontag( var_2, var_0, "TAG_LIGHT" );
}
breach_charge_fx_activate()
{
var_0 = common_scripts\utility::getfx( "vfx/moments/clockwork/vfx_vault_charge_warmup" );
var_1 = common_scripts\utility::getfx( "vfx/moments/clockwork/vfx_vault_charge_set" );
var_2 = common_scripts\utility::getfx( "vfx/moments/clockwork/vfx_vault_charge_activate" );
var_3 = common_scripts\utility::getfx( "vfx/moments/clockwork/vfx_vault_charge_explode" );
stopfxontag( var_1, level.charge1, "TAG_LIGHT" );
stopfxontag( var_1, level.charge2, "TAG_LIGHT" );
playfxontag( var_2, level.charge1, "TAG_LIGHT" );
playfxontag( var_2, level.charge2, "TAG_LIGHT" );
common_scripts\utility::flag_wait( "explosion_start" );
playfxontag( var_3, level.fx_charge1_pos, "tag_origin" );
wait 0.2;
playfxontag( var_3, level.fx_charge2_pos, "tag_origin" );
wait 30;
level.fx_charge1_pos delete();
level.fx_charge2_pos delete();
}
open_vault( var_0, var_1 )
{
if ( !isdefined( var_1 ) )
var_1 = getent( "vault_door_scene", "targetname" );
if ( isdefined( var_0 ) && var_0 == 1 )
{
maps\clockwork_code::setup_drill( 1 );
maps\_utility::disable_trigger_with_targetname( "pickup_drill_trigger" );
maps\clockwork_code::toggle_visibility( "vault_frame_hotmetal", 0 );
maps\clockwork_code::toggle_visibility( "vault_ceiling_structure", 0 );
}
level.world_vault_clip notsolid();
level.world_vault_clip connectpaths();
level.world_vault_clip delete();
maps\clockwork_code::glass_destroy_targetname( "post_vault_door_glass" );
}
drilled_good_vo( var_0 )
{
var_1 = [];
var_1[0] = "clockwork_hsh_stopthatsgood";
var_1[1] = "clockwork_cyr_farenough";
var_1[2] = "clockwork_cyr_woahwoah";
while ( !common_scripts\utility::flag( var_0 ) && !common_scripts\utility::flag( "drill_toofar" ) )
{
level.allies[2] maps\clockwork_code::char_dialog_add_and_go( var_1[level.drilled_good_line] );
level.drilled_good_line++;
if ( level.drilled_good_line >= var_1.size )
level.drilled_good_line = 0;
}
}
vault_vo()
{
var_0 = level.allies[0];
var_1 = level.allies[1];
var_2 = level.allies[2];
level.drill_nag_num = 0;
common_scripts\utility::flag_wait( "green_zone" );
level.grenades = level.player getweaponammoclip( "fraggrenade" );
level.flashbangs = level.player getweaponammoclip( "flash_grenade" );
level.player takeweapon( "fraggrenade" );
level.player takeweapon( "flash_grenade" );
var_0 maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_preppingvictor" );
level.player maps\clockwork_code::radio_dialog_add_and_go( "clockwork_diz_powerisrestored" );
var_0 maps\clockwork_code::char_dialog_add_and_go( "clockwork_mrk_hydraulicsealneedsto" );
common_scripts\utility::flag_wait_either( "drill_spot1_ready", "drill1_start" );
if ( !common_scripts\utility::flag( "drill1_start" ) )
{
var_2 maps\clockwork_code::char_dialog_add_and_go( "clockwork_cyr_drillhere" );
thread drill_nag( "drill1_start", "drill1_complete" );
common_scripts\utility::flag_wait( "drill1_start" );
}
var_2 maps\clockwork_code::char_dialog_add_and_go( "clockwork_hsh_theresabacktrip" );
common_scripts\utility::flag_wait( "drill1_complete" );
var_2 maps\clockwork_code::char_dialog_add_and_go( "clockwork_cyr_1stshell" );
var_1 maps\clockwork_code::char_dialog_add_and_go( "clockwork_kgn_settingcharge" );
var_2 maps\clockwork_code::char_dialog_add_and_go( "clockwork_cyr_number2" );
level.player maps\clockwork_code::radio_dialog_add_and_go( "clockwork_brv_20seconds" );
common_scripts\utility::flag_wait( "drill_spot2_ready" );
var_2 maps\clockwork_code::char_dialog_add_and_go( "clockwork_cyr_yourspot" );
thread drill_nag( "drill2_start", "drill2_complete" );
common_scripts\utility::flag_wait( "drill2_complete" );
var_2 maps\clockwork_code::char_dialog_add_and_go( "clockwork_hsh_hydraulicsealsaredown" );
var_1 maps\clockwork_code::char_dialog_add_and_go( "clockwork_kgn_armed" );
var_0 maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_ignitethermite" );
thread thermite_timing();
var_0 maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_backup2" );
common_scripts\utility::flag_wait( "thermite_stop" );
wait 1;
thread maps\clockwork_audio::blowit_beep();
var_0 maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_blowit" );
thread breach_charge_fx_activate();
wait 0.25;
common_scripts\utility::flag_set( "explosion_start" );
}
thermite_timing()
{
wait 0.1;
common_scripts\utility::flag_set( "glow_start" );
wait 1.36;
common_scripts\utility::flag_set( "thermite_start" );
wait 6;
common_scripts\utility::flag_set( "thermite_stop" );
}
drill_nag( var_0, var_1 )
{
var_2 = [];
var_2[0] = "clockwork_cyr_drillit";
var_2[1] = "clockwork_hsh_wastingtimehere";
var_3 = 0;
wait 8;
while ( !common_scripts\utility::flag( var_0 ) && !common_scripts\utility::flag( var_1 ) )
{
level.allies[2] maps\clockwork_code::char_dialog_add_and_go( var_2[level.drill_nag_num] );
level.drill_nag_num++;
if ( level.drill_nag_num >= var_2.size )
level.drill_nag_num = 0;
wait 8;
}
}
setup_interior_combat()
{
maps\clockwork_code::dog_setup();
maps\clockwork_code::setup_player();
maps\clockwork_code::spawn_allies();
level.player switchtoweapon( "cz805bren+reflex_sp+silencer_sp" );
var_0 = getent( "vault_door_scene", "targetname" );
maps\_utility::disable_trigger_with_targetname( "drill_spot1" );
maps\_utility::disable_trigger_with_targetname( "drill_spot2" );
setup_vault_door();
open_vault( 1 );
common_scripts\utility::flag_set( "lights_on" );
common_scripts\utility::flag_set( "interior_finished" );
thread handle_pip_cams();
maps\_utility::vision_set_changes( "clockwork_indoor", 0 );
var_1 = getent( "smoke_spot", "targetname" );
playfx( level._effect["vault_smoke"], var_1.origin );
maps\_utility::battlechatter_off( "allies" );
maps\_utility::battlechatter_off( "axis" );
common_scripts\utility::waitframe();
thread maps\clockwork_audio::checkpoint_interior_combat();
}
vault_objective()
{
var_0 = maps\_utility::obj( "vaultobj" );
objective_add( var_0, "current", &"CLOCKWORK_DISABLE_THE_SECURITY" );
common_scripts\utility::flag_wait( "obj_vault_complete" );
maps\_utility::objective_complete( var_0 );
}
fight_objective()
{
var_0 = maps\_utility::obj( "fightobj" );
objective_add( var_0, "current", &"CLOCKWORK_ADVANCE_TO_THE_DATA_CENTER" );
common_scripts\utility::flag_wait( "Obj_datacenter_complete" );
maps\_utility::objective_complete( var_0 );
}
begin_interior_combat()
{
var_0 = common_scripts\utility::array_combine( getentarray( "chaos_decals", "targetname" ), getentarray( "chaos_decals1", "targetname" ) );
var_0 = common_scripts\utility::array_combine( var_0, getentarray( "chaos_decals2", "targetname" ) );
var_0 = common_scripts\utility::array_combine( var_0, getentarray( "chaos_decals_delete", "targetname" ) );
foreach ( var_2 in var_0 )
var_2 hide();
common_scripts\utility::flag_clear( "player_dynamic_move_speed" );
thread maps\clockwork_code::blend_movespeedscale_custom( 85, 1 );
thread ambient_combat_guys();
foreach ( var_5 in level.allies )
{
common_scripts\utility::array_thread( level.allies, maps\_utility::cqb_walk, "on" );
var_5.old_baseaccuracy = var_5.baseaccuracy;
var_5 maps\_utility::set_baseaccuracy( 500 );
var_5.ignoreall = 0;
var_5.disablereactionanims = 1;
if ( var_5.animname == "keegan" )
var_5 maps\_utility::forceuseweapon( "cz805bren+reflex_sp", "primary" );
if ( var_5.animname == "baker" )
var_5 maps\_utility::forceuseweapon( "cz805bren+reflex_sp", "primary" );
if ( var_5.animname == "cypher" )
var_5 maps\_utility::forceuseweapon( "mts255", "primary" );
}
maps\_utility::battlechatter_on( "axis" );
maps\_utility::battlechatter_on( "allies" );
maps\_utility::set_team_bcvoice( "allies", "taskforce" );
common_scripts\utility::flag_set( "obj_vault_complete" );
thread fight_objective();
thread spawn_discovery_guys();
thread cqb_dog();
thread handle_combat_guys();
thread combat_handle_allies();
thread handle_combat_guys2();
wait 3.5;
thread combat_vo();
common_scripts\utility::flag_wait( "discovery_guys" );
common_scripts\utility::flag_wait( "to_cqb2" );
}
spawn_discovery_guys()
{
common_scripts\utility::flag_wait( "discovery_spawn" );
level.discovery_guys = maps\clockwork_code::array_spawn_targetname_allow_fail( "discovery_grunt", 1 );
level.override_dog_enemy = level.discovery_guys[0];
thread maps\clockwork_code::ai_array_killcount_flag_set( level.discovery_guys, 2, "end_discovery" );
var_0 = common_scripts\utility::getstruct( "discovery_scene", "targetname" );
var_1 = 1;
foreach ( var_3 in level.discovery_guys )
{
if ( isdefined( var_3 ) && isalive( var_3 ) && !var_3 maps\_utility::doinglongdeath() )
{
var_3.allowdeath = 1;
var_3.ignoreall = 0;
var_3.animname = "discoverguy" + maps\_utility::string( var_1 );
var_1++;
}
}
var_0 thread maps\_anim::anim_single( level.discovery_guys, "discover_vault" );
thread discovery_guys_wakeup();
common_scripts\utility::flag_wait_or_timeout( "discovery_guys", 3 );
wait 1;
maps\clockwork_code::attack_targets( level.allies, level.discovery_guys );
wait 1;
common_scripts\utility::flag_set( "discovery_guys" );
}
discovery_guys_wakeup()
{
common_scripts\utility::flag_wait( "discovery_guys" );
level.discovery_guys = maps\_utility::array_removedead_or_dying( level.discovery_guys );
foreach ( var_1 in level.discovery_guys )
{
var_1 maps\_utility::anim_stopanimscripted();
var_1 maps\_utility::set_ignoreall( 0 );
var_1 getenemyinfo( level.player );
}
}
combat_handle_allies()
{
common_scripts\utility::flag_wait( "end_discovery" );
maps\clockwork_code::safe_activate_trigger_with_targetname( "allies_start_combat" );
common_scripts\utility::flag_wait( "combat_guys1" );
thread combat_allies_mainhall();
common_scripts\utility::flag_wait( "combat_1_over" );
maps\clockwork_code::safe_activate_trigger_with_targetname( "to_second_combat" );
}
combat_allies_mainhall()
{
common_scripts\utility::flag_wait( "combat_first_guys_dead" );
if ( !common_scripts\utility::flag( "combat_sidehall" ) )
maps\clockwork_code::safe_activate_trigger_with_targetname( "combat_mainhall1" );
}
handle_combat_guys()
{
common_scripts\utility::flag_wait_either( "combat_guys1", "end_discovery" );
foreach ( var_1 in level.allies )
var_1 maps\_utility::set_baseaccuracy( var_1.old_baseaccuracy );
maps\_utility::battlechatter_on( "allies" );
maps\_utility::battlechatter_on( "axis" );
var_3 = maps\clockwork_code::array_spawn_targetname_allow_fail( "combat_guys1_pre", 1 );
common_scripts\utility::array_thread( var_3, maps\_utility::disable_careful );
thread maps\clockwork_code::ai_array_killcount_flag_set( var_3, 1, "combat_guys1" );
thread maps\clockwork_code::ai_array_killcount_flag_set( var_3, var_3.size, "combat_first_guys_dead" );
common_scripts\utility::flag_wait( "combat_guys1" );
var_3 = maps\clockwork_code::array_spawn_targetname_allow_fail( "combat_guys1", 1 );
thread maps\clockwork_code::ai_array_killcount_flag_set( var_3, var_3.size, "combat_1_over" );
}
ambient_combat_guys()
{
var_0 = getentarray( "pillar_ambient_guys", "targetname" );
common_scripts\utility::array_thread( var_0, maps\clockwork_code::ambient_animate, 0, "bogus", 1 );
}
handle_combat_guys2()
{
common_scripts\utility::flag_wait_any( "combat_1_over", "combat_guys2" );
var_0 = maps\clockwork_code::array_spawn_targetname_allow_fail( "combat_guys2_pre" );
var_1 = getentarray( "combat_guys2_waver", "targetname" );
foreach ( var_3 in var_1 )
var_3 thread maps\clockwork_code::ambient_animate( 0, "start_combat2", 0, 0 );
common_scripts\utility::flag_wait( "combat_guys2" );
var_0 = maps\clockwork_code::array_spawn_targetname_allow_fail( "combat_guys2" );
thread combat_ambient_guys2();
common_scripts\utility::flag_wait_or_timeout( "start_combat2", 5 );
level notify( "start_combat2" );
foreach ( var_6 in var_0 )
{
if ( isalive( var_6 ) )
{
var_6.ignoreme = 0;
var_6.ignoreall = 0;
}
}
wait 1;
var_8 = maps\clockwork_code::array_spawn_targetname_allow_fail( "combat_guys2b" );
var_9 = maps\_utility::get_ai_group_ai( "waver_guy" );
var_10 = common_scripts\utility::array_combine( var_0, var_8 );
var_10 = common_scripts\utility::array_combine( var_10, var_9 );
var_10 = maps\_utility::array_removedead_or_dying( var_10 );
thread maps\clockwork_code::ai_array_killcount_flag_set( var_10, var_10.size, "to_cqb" );
common_scripts\utility::flag_wait( "to_cqb" );
maps\clockwork_code::safe_activate_trigger_with_targetname( "to_cqb" );
maps\_utility::disable_trigger_with_targetname( "to_cqb" );
common_scripts\utility::flag_wait( "kick_a_door" );
}
combat_ambient_guys2()
{
var_0 = getentarray( "flee_guy1", "targetname" );
maps\_utility::array_spawn_function( var_0, maps\clockwork_defend::setup_scientist );
maps\_utility::array_spawn_function( var_0, maps\_utility::disable_bulletwhizbyreaction );
maps\_utility::array_spawn_function( var_0, maps\_utility::disable_pain );
maps\_utility::array_spawn_function( var_0, maps\_utility::disable_surprise );
maps\_utility::array_spawn_function( var_0, maps\_utility::disable_arrivals );
maps\_utility::array_spawn_function( var_0, maps\_utility::disable_exits );
maps\_utility::array_spawn_function( var_0, ::set_scientist_sprinting );
common_scripts\utility::array_thread( var_0, maps\clockwork_code::ambient_animate, 1, "", 0, 1 );
common_scripts\utility::flag_wait( "combat_flee" );
wait 2;
var_0 = getentarray( "flee_guy2", "targetname" );
maps\_utility::array_spawn_function( var_0, maps\clockwork_defend::setup_scientist );
maps\_utility::array_spawn_function( var_0, maps\_utility::disable_bulletwhizbyreaction );
maps\_utility::array_spawn_function( var_0, maps\_utility::disable_pain );
maps\_utility::array_spawn_function( var_0, maps\_utility::disable_surprise );
maps\_utility::array_spawn_function( var_0, maps\_utility::disable_arrivals );
maps\_utility::array_spawn_function( var_0, maps\_utility::disable_exits );
maps\_utility::array_spawn_function( var_0, ::set_scientist_sprinting );
common_scripts\utility::array_thread( var_0, maps\clockwork_code::ambient_animate, 1, "", 0, 1 );
}
set_scientist_sprinting()
{
if ( !isdefined( self ) )
return;
maps\_utility::clear_run_anim();
maps\_utility::clear_generic_idle_anim();
common_scripts\utility::waitframe();
self.animname = "generic";
var_0 = "defend_run_scientist_" + randomintrange( 1, 4 );
maps\_utility::set_run_anim( var_0 );
maps\_utility::set_generic_idle_anim( "scientist_idle" );
}
setup_interior_cqb()
{
maps\clockwork_code::dog_setup();
maps\clockwork_code::setup_player();
maps\clockwork_code::spawn_allies();
common_scripts\utility::flag_set( "to_cqb" );
foreach ( var_1 in level.allies )
{
if ( var_1.animname == "keegan" )
var_1 maps\_utility::forceuseweapon( "cz805bren+reflex_sp", "primary" );
if ( var_1.animname == "baker" )
var_1 maps\_utility::forceuseweapon( "cz805bren+reflex_sp", "primary" );
if ( var_1.animname == "cypher" )
var_1 maps\_utility::forceuseweapon( "mts255", "primary" );
}
maps\_utility::disable_trigger_with_targetname( "to_cqb" );
maps\_utility::vision_set_changes( "clockwork_indoor", 0 );
level.player switchtoweapon( "cz805bren+reflex_sp+silencer_sp" );
thread handle_cqb_pip_cams();
thread maps\clockwork_audio::checkpoint_interior_cqb();
}
begin_interior_cqb()
{
common_scripts\utility::flag_set( "aud_stop_interior_combat_pa" );
var_0 = getent( "ai_closet_clip", "targetname" );
var_0 notsolid();
var_0 connectpaths();
maps\_utility::battlechatter_on( "axis" );
maps\_utility::battlechatter_on( "allies" );
maps\_utility::set_team_bcvoice( "allies", "taskforce" );
thread handle_cqb_enemies();
thread handle_cqb_allies();
thread spin_fans( "interior_cqb_finished" );
var_1 = getent( "cqb_exit_clip", "targetname" );
var_1 notsolid();
var_2 = getent( "cqb_exterior_door", "targetname" );
var_2.animname = "cqb_ext_door";
var_2 maps\_utility::assign_animtree();
var_3 = getent( "combat_exit_door_clip2", "targetname" );
var_3 linkto( var_2 );
var_4 = common_scripts\utility::getstruct( "cqb_door_kick1", "targetname" );
var_4 maps\_anim::anim_first_frame_solo( var_2, "slow_open_door" );
var_5 = maps\_utility::spawn_anim_model( "cqb_int_door" );
var_6 = getent( "combat_exit_door_clip1", "targetname" );
var_7 = getent( "combat_exit_inside_door", "targetname" );
var_4 maps\_anim::anim_first_frame_solo( var_5, "bust_door" );
wait 0.01;
var_7 linkto( var_5, "J_prop_1" );
var_6 linkto( var_5, "J_prop_1" );
var_8 = level.allies[1];
var_4 maps\_anim::anim_generic_reach( var_8, "bust_door" );
thread maps\clockwork_audio::cqb_door_shove();
level.allies[0] thread maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_throughhere" );
var_4 thread maps\_anim::anim_single_solo( var_5, "bust_door" );
var_4 maps\_anim::anim_generic_run( var_8, "bust_door" );
var_6 connectpaths();
var_8 maps\_utility::enable_ai_color();
level.allies[0] thread door_closer_guy( var_5, var_6 );
level.allies[1] thread wait_at_slow_door();
thread handle_closet_clip( level.allies[2] );
common_scripts\utility::array_thread( level.allies, maps\_utility::disable_ai_color );
maps\clockwork_code::safe_activate_trigger_with_targetname( "cqb_move_up4" );
thread ambient_road_vehicles();
common_scripts\utility::flag_wait( "interior_combat_finished" );
common_scripts\utility::array_thread( level.allies, maps\_utility::enable_ai_color );
thread rotunda_kill();
thread start_rotunda_fight();
thread maps\_utility::autosave_by_name( "pillar_room_complete" );
maps\_utility::battlechatter_off( "allies" );
maps\_utility::battlechatter_off( "axis" );
maps\_utility::player_speed_percent( 85 );
common_scripts\utility::flag_wait( "interior_cqb_finished" );
thread maps\_utility::autosave_by_name( "cqb_finished" );
}
handle_closet_clip( var_0 )
{
var_1 = getnode( "keegan_catwalk_door_node", "targetname" );
var_0.oldgoalradius = var_0.goalradius;
var_0.goalradius = 20;
var_0 setgoalnode( var_1 );
var_0 waittill( "goal" );
while ( distance2d( var_0.origin, var_1.origin ) > var_0.goalradius )
{
var_0 setgoalnode( var_1 );
var_0 waittill( "goal" );
}
common_scripts\utility::flag_set( "hesh_ready_for_catwalks" );
var_0.goalradius = var_0.oldgoalradius;
common_scripts\utility::flag_wait( "at_slow_door" );
var_2 = getent( "ai_closet_clip", "targetname" );
var_2 solid();
var_2 disconnectpaths();
}
spin_fans( var_0 )
{
var_1 = getentarray( "clk_fan_spin01", "targetname" );
var_2 = randomfloatrange( -5.0, 5.0 );
while ( !common_scripts\utility::flag( var_0 ) )
{
foreach ( var_4 in var_1 )
var_4 rotatepitch( 30 + var_2, 0.25 );
wait 0.25;
}
common_scripts\utility::flag_set( "aud_stop_fan_sound" );
}
ambient_road_vehicles()
{
common_scripts\utility::flag_wait( "interior_combat_finished" );
var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "catwalk_gaz" );
var_0 maps\_vehicle::vehicle_lights_on( "running" );
}
wait_at_slow_door()
{
var_0 = getent( "cqb_door_kick2", "targetname" );
self.animname = "generic";
var_0 maps\_anim::anim_reach_and_approach_solo( self, "slow_open_door_idle", undefined, "Cover Right" );
common_scripts\utility::flag_set( "at_slow_door" );
var_0 thread maps\_anim::anim_generic_loop( self, "slow_open_door_idle", "stop_waiting" );
common_scripts\utility::flag_wait( "shut_catwalk_door" );
thread maps\clockwork_audio::cqb_door_open_slow();
var_0 notify( "stop_waiting" );
var_0 = common_scripts\utility::getstruct( "cqb_door_kick1", "targetname" );
var_1 = getent( "cqb_exterior_door", "targetname" );
var_1.animname = "cqb_ext_door";
var_1 maps\_utility::assign_animtree();
thread maps\clockwork_fx::turn_effects_on( "ch_industrial_light_02_on_red", "fx/lights/bulb_single_offset_red" );
thread maps\clockwork_fx::turn_effects_on( "clk_cargoship_wall_light_on", "fx/lights/bulb_single_cargoship" );
common_scripts\utility::exploder( 200 );
common_scripts\utility::exploder( 850 );
common_scripts\utility::exploder( 6400 );
var_2 = getent( "combat_exit_door_clip2", "targetname" );
common_scripts\utility::exploder( 40 );
var_2 notsolid();
var_2 connectpaths();
self.animname = "generic";
var_0 thread maps\_anim::anim_single_solo( var_1, "slow_open_door" );
var_0 maps\_anim::anim_single_run_solo( self, "slow_open_door" );
common_scripts\utility::flag_set( "catwalks_open" );
maps\_utility::enable_ai_color();
maps\clockwork_code::blend_movespeedscale_custom( 85, 1 );
maps\_utility::player_speed_percent( 85 );
}
door_closer_guy( var_0, var_1 )
{
var_2 = common_scripts\utility::getstruct( "cqb_door_kick1", "targetname" );
var_2 maps\_anim::anim_generic_reach( self, "shut_door_start" );
var_2 maps\_anim::anim_generic( self, "shut_door_start" );
var_3 = maps\_utility::make_array( self, var_0 );
self.animname = "generic";
if ( !common_scripts\utility::flag( "to_catwalks" ) || !common_scripts\utility::flag( "hesh_ready_for_catwalks" ) )
{
var_2 thread maps\_anim::anim_loop( var_3, "shut_door_loop", "shut_door" );
common_scripts\utility::flag_wait_all( "to_catwalks", "hesh_ready_for_catwalks" );
var_2 notify( "shut_door" );
}
common_scripts\utility::flag_set( "shut_catwalk_door" );
thread maps\clockwork_audio::cqb_door_close_behind();
var_4 = getent( "cqb_exit_clip", "targetname" );
var_4 notsolid();
thread turn_off_safety_clip();
self.animname = "generic";
var_2 maps\_anim::anim_single( var_3, "shut_door_end" );
var_4 = getent( "cqb_exit_clip", "targetname" );
var_4 notsolid();
var_1 disconnectpaths();
maps\_utility::enable_ai_color();
thread maps\clockwork_code::transient_switch_to_end();
var_5 = getaiarray( "axis" );
common_scripts\utility::array_thread( var_5, maps\clockwork_code::die_quietly );
var_6 = maps\clockwork_code::array_spawn_targetname_allow_fail( "combat_run_past_guys", 1 );
common_scripts\utility::array_thread( var_6, maps\clockwork_code::delete_on_path_end );
common_scripts\utility::array_thread( var_6, maps\_utility::pathrandompercent_set, 200 );
wait 5;
var_6 = maps\clockwork_code::array_spawn_targetname_allow_fail( "combat_run_past_guys2", 1 );
common_scripts\utility::array_thread( var_6, maps\clockwork_code::delete_on_path_end );
common_scripts\utility::array_thread( var_6, maps\_utility::pathrandompercent_set, 200 );
}
turn_off_safety_clip()
{
wait 2;
var_0 = getent( "player_door_guy_clip", "targetname" );
var_0 notsolid();
}
catwalk_melee()
{
var_0 = level.allies[1];
var_1 = getent( "cqb_guys5", "targetname" );
var_2 = var_1 maps\_utility::spawn_ai( 1 );
var_2.ignoreme = 1;
var_2.no_dog_target = 1;
wait 0.01;
var_3 = var_0.animname;
var_0.animname = "winner";
var_2.animname = "loser";
var_4 = maps\_utility::make_array( var_0, var_2 );
var_5 = common_scripts\utility::getstruct( "catwalk_melee_org", "targetname" );
var_5 thread maps\_anim::anim_first_frame_solo( var_2, "catwalk_melee" );
var_2 maps\_utility::magic_bullet_shield();
var_2 thread catwalk_melee_abort();
var_0.ignoreall = 1;
var_0 maps\_utility::disable_arrivals();
var_5 maps\_anim::anim_reach_solo( var_0, "catwalk_melee" );
if ( !common_scripts\utility::flag( "catwalk_melee_abort" ) )
{
var_2 notify( "ambushing" );
var_0.animname = "winner";
var_2.animname = "loser";
var_5 thread maps\_anim::anim_single( var_4, "catwalk_melee" );
thread maps\clockwork_audio::locker_brawl();
thread maps\clockwork_audio::locker_brawl_vo();
wait 1.5;
common_scripts\utility::flag_set( "cqb5_dead" );
var_0 waittillmatch( "single anim", "end" );
var_2 maps\_utility::stop_magic_bullet_shield();
var_2 maps\clockwork_code::die_quietly();
}
var_0.ignoreall = 0;
var_0 maps\_utility::enable_arrivals();
var_0 maps\_utility::enable_ai_color();
var_0.animname = var_3;
maps\clockwork_code::blend_movespeedscale_custom( 100, 1 );
maps\_utility::player_speed_percent( 100 );
}
catwalk_melee_glass_break( var_0 )
{
maps\clockwork_code::glass_destroy_targetname( "exterior_catwalk_glass01" );
}
catwalk_melee_abort()
{
self endon( "ambushing" );
common_scripts\utility::flag_wait( "catwalk_melee_abort" );
common_scripts\utility::waitframe();
maps\_utility::anim_stopanimscripted();
maps\_utility::stop_magic_bullet_shield();
thread maps\_anim::anim_generic( self, "surprise_stop" );
self.ignoreall = 0;
self.ignoreme = 0;
wait 1;
common_scripts\utility::flag_set( "cqb5_dead" );
}
rotunda_kill()
{
var_0 = level.allies[1];
var_1 = common_scripts\utility::getstruct( "melee_moment", "targetname" );
common_scripts\utility::flag_wait( "rotunda_runners" );
maps\_utility::autosave_by_name( "pre_rotunda" );
var_2 = maps\clockwork_code::array_spawn_targetname_allow_fail( "run_squad2", 1 );
common_scripts\utility::array_thread( var_2, maps\_utility::pathrandompercent_set, 200 );
common_scripts\utility::array_thread( var_2, ::attack_if_provoked );
wait 1;
level.rotunda_knife = spawn( "script_model", ( 0, 0, 0 ) );
level.rotunda_knife setmodel( "weapon_commando_knife" );
level.rotunda_knife linkto( var_0, "tag_inhand", ( 0, 0, 0 ), ( 0, 0, 0 ) );
level.rotunda_knife hide();
common_scripts\utility::flag_wait( "hold_fire" );
if ( !common_scripts\utility::flag( "round_room_fight" ) )
{
var_3 = maps\clockwork_code::array_spawn_targetname_allow_fail( "rotunda_kill_guys", 1 );
common_scripts\utility::array_thread( var_3, ::interrupt_rotunda_kill );
var_4 = 1;
foreach ( var_6 in var_3 )
{
var_6.animname = "guard" + maps\_utility::string( var_4 );
var_6.grenadeawareness = 0;
var_6.allowdeath = 1;
var_6.health = 1;
var_6.nodrop = 1;
if ( var_4 <= 2 )
{
var_6.health = 1;
var_6 thread rotunda_kill_gun_sync();
}
var_4++;
}
var_1 maps\_anim::anim_first_frame( var_3, "rotunda_kill" );
common_scripts\utility::flag_wait_either( "rotunda_kill", "moved_into_rotunda" );
thread handle_troll_player( var_3 );
if ( !common_scripts\utility::flag( "round_room_fight" ) )
{
var_0.animname = "cipher";
var_0 thread interrupt_ally_rotunda_kill();
thread activate_rotunda_fight( var_1, var_0 );
common_scripts\utility::flag_wait_any( "moved_into_rotunda", "round_room_fight", "starting_rotunda_kill" );
if ( !common_scripts\utility::flag( "starting_rotunda_kill" ) )
{
maps\_anim::anim_reach_cleanup_solo( var_0 );
var_0 notify( "cancel_rotunda_kill" );
maps\_utility::array_notify( var_3, "cancel" );
maps\_utility::array_delete( var_3 );
wait 0.1;
}
else
{
var_8 = var_3;
var_3 = common_scripts\utility::array_add( var_3, var_0 );
thread maps\clockwork_audio::rotunda_kill();
var_1 thread maps\_anim::anim_single( var_3, "rotunda_kill" );
common_scripts\utility::array_thread( var_8, ::enemy_waittill_rotunda_animation_finished );
var_0 waittill_rotunda_animation_finished();
level common_scripts\utility::waittill_any( "rotunda_kill_done", "rotunda_kill_interrupted" );
wait 0.5;
}
}
else
{
maps\_utility::array_notify( var_3, "cancel" );
maps\_utility::array_delete( var_3 );
}
}
var_0 maps\_utility::enable_ai_color();
maps\clockwork_code::safe_disable_trigger_with_targetname( "rotunda_allies0" );
maps\clockwork_code::safe_activate_trigger_with_targetname( "rotunda_allies1" );
if ( isdefined( level.rotunda_knife ) )
{
level.rotunda_knife unlink();
level.rotunda_knife hide();
level.rotunda_knife delete();
}
}
waittill_rotunda_animation_finished()
{
level endon( "rotunda_kill_interrupted" );
self waittillmatch( "single anim", "end" );
level notify( "rotunda_kill_done" );
}
enemy_waittill_rotunda_animation_finished()
{
level endon( "rotunda_kill_interrupted" );
self endon( "death" );
self waittillmatch( "single anim", "end" );
self.ignoreme = 0;
self.ignoreall = 0;
maps\_utility::enable_ai_color();
}
activate_rotunda_fight( var_0, var_1 )
{
var_1 endon( "cancel_rotunda_kill" );
var_0 maps\_anim::anim_reach_solo( var_1, "rotunda_kill" );
common_scripts\utility::flag_set( "starting_rotunda_kill" );
}
handle_troll_player( var_0 )
{
thread troll_stairs_trigger();
level common_scripts\utility::waittill_either( "cqb_guys7", "troll_stairs_trigger" );
if ( isdefined( var_0[0] ) && isalive( var_0[0] ) )
var_0[0] notify( "damage", 1, level.player );
level notify( "rotunda_kill_interrupted" );
}
troll_stairs_trigger()
{
level endon( "cqb_guys7" );
var_0 = getent( "rotunda_stairs", "targetname" );
if ( !isdefined( var_0 ) )
return;
var_0 waittill( "trigger" );
level notify( "troll_stairs_trigger" );
}
start_rotunda_fight()
{
level common_scripts\utility::waittill_any( "rotunda_kill_done", "rotunda_kill_interrupted", "runner_killed" );
var_0 = getaiarray( "axis" );
maps\_utility::array_notify( var_0, "fight" );
wait 0.5;
common_scripts\utility::array_thread( level.allies, maps\_utility::enable_ai_color );
}
rotunda_knife_stab( var_0 )
{
var_0.stabbed = 1;
}
show_rotunda_knife( var_0 )
{
level.rotunda_knife show();
}
hide_rotunda_knife( var_0 )
{
level.rotunda_knife hide();
}
get_killed( var_0 )
{
if ( !isalive( var_0 ) )
return;
var_0.allowdeath = 1;
var_0.a.nodeath = 1;
var_0 maps\_utility::set_battlechatter( 0 );
var_0 kill();
}
catch_interrupt_notify()
{
self endon( "death" );
level waittill( "rotunda_kill_interrupted" );
self notify( "rotunda_interrupt" );
}
catch_death_notify()
{
self waittill( "death", var_0 );
if ( isdefined( var_0 ) && isplayer( var_0 ) )
self notify( "death_by_player" );
}
catch_damage_notify()
{
self waittill( "damage", var_0, var_1 );
if ( isdefined( var_1 ) && isplayer( var_1 ) )
self notify( "damage_by_player" );
}
interrupt_rotunda_kill()
{
thread catch_interrupt_notify();
thread catch_death_notify();
thread catch_damage_notify();
self addaieventlistener( "grenade danger" );
self addaieventlistener( "projectile_impact" );
self addaieventlistener( "silenced_shot" );
self addaieventlistener( "bulletwhizby" );
self addaieventlistener( "gunshot" );
self addaieventlistener( "gunshot_teammate" );
self addaieventlistener( "explode" );
common_scripts\utility::waittill_any( "ai_event", "death_by_player", "damage_by_player", "rotunda_interrupt" );
wait 0.25;
level notify( "rotunda_kill_interrupted" );
if ( !isdefined( self ) || !isalive( self ) )
return;
self.player_interrupted = 1;
self.noragdoll = 0;
maps\_utility::anim_stopanimscripted();
if ( isdefined( self.stabbed ) )
return;
maps\_utility::pathrandompercent_set( 0 );
maps\_utility::enable_ai_color();
maps\_utility::gun_recall();
self endon( "death" );
wait 0.5;
self.ignoreme = 0;
wait 0.5;
self.ignoreall = 0;
return;
}
rotunda_kill_gun_sync()
{
maps\_utility::gun_remove();
var_0 = spawn( "script_model", self.origin );
var_0 setmodel( "weapon_sc2010" );
var_0 linkto( self, "tag_sync", ( 0, 0, 0 ), ( 0, 0, 0 ) );
thread unlink_gun( var_0 );
common_scripts\utility::waittill_any( "death", "damage", "cancel" );
if ( isdefined( self.player_interrupted ) )
{
var_0 unlink();
var_1 = spawn( "weapon_sc2010", var_0.origin );
var_1.angles = var_0.angles;
var_0 delete();
}
else if ( !common_scripts\utility::flag( "starting_rotunda_kill" ) )
var_0 delete();
}
unlink_gun( var_0 )
{
level endon( "rotunda_kill_interrupted" );
level waittill( "rotunda_kill_done" );
var_0 unlink();
var_1 = spawn( "weapon_sc2010", var_0.origin, 1 );
var_1.angles = var_0.angles;
var_0 delete();
}
interrupt_ally_rotunda_kill( var_0 )
{
level waittill( "rotunda_kill_interrupted" );
maps\_utility::anim_stopanimscripted();
self.ignoreme = 0;
self.ignoreall = 0;
maps\_utility::enable_ai_color();
maps\clockwork_code::safe_disable_trigger_with_targetname( "rotunda_allies0" );
maps\clockwork_code::safe_activate_trigger_with_targetname( "rotunda_allies1" );
}
cqb_encounter( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
{
common_scripts\utility::flag_wait( var_0 );
var_7 = getentarray( var_4, "targetname" );
var_8 = [];
foreach ( var_10 in var_7 )
{
if ( isdefined( var_10.animation ) )
var_8[var_8.size] = var_10 maps\clockwork_code::ambient_animate( 0, "cqb_attack5" );
}
var_8 = common_scripts\utility::array_combine( var_8, maps\clockwork_code::array_spawn_targetname_allow_fail( var_4 ) );
thread maps\clockwork_code::ai_array_killcount_flag_set( var_8, var_8.size, var_1 );
thread cqb_encounter_allies_move_up( var_1, var_2 );
if ( isdefined( var_5 ) )
common_scripts\utility::flag_wait( var_5 );
else
wait 1;
thread maps\clockwork_code::attack_targets( var_3, var_8, undefined, undefined, var_6 );
}
cqb_encounter_allies_move_up( var_0, var_1 )
{
common_scripts\utility::flag_wait( var_0 );
maps\clockwork_code::safe_activate_trigger_with_targetname( var_1 );
}
handle_cqb_allies()
{
thread cqb_ally_vo();
common_scripts\utility::flag_wait( "cqb5_dead" );
maps\clockwork_code::safe_activate_trigger_with_targetname( "cqb_move_up5" );
common_scripts\utility::flag_wait( "cqb_guys6" );
maps\_utility::autosave_by_name( "catwalks" );
wait 1;
while ( level.run_guy_count > 0 && !common_scripts\utility::flag( "moved_into_rotunda" ) )
wait 0.25;
common_scripts\utility::flag_wait( "cqb_guys7" );
level.player allowsprint( 1 );
level.player allowjump( 1 );
thread maps\clockwork_code::blend_movespeedscale_custom( 80, 1 );
common_scripts\utility::flag_wait( "interior_cqb_finished" );
maps\clockwork_code::blend_movespeedscale_custom( 100, 1 );
maps\_utility::player_speed_percent( 100 );
}
handle_cqb_enemies()
{
common_scripts\utility::flag_wait( "cqb_guys5" );
thread catwalk_melee();
common_scripts\utility::flag_wait( "round_room_fight" );
common_scripts\utility::flag_wait( "cqb_guys7" );
var_0 = maps\_utility::get_ai_group_ai( "roundroom_runners" );
foreach ( var_2 in var_0 )
var_2.ignoreme = 0;
if ( var_0.size < 3 )
{
thread maps\clockwork_code::ai_array_killcount_flag_set( var_0, var_0.size, "extra_guys_dead" );
thread cqb_encounter( "cqb_guys7", "cqb7_dead", "cqb_move_up7", level.allies, "cqb_guys7" );
}
else
{
common_scripts\utility::flag_set( "extra_guys_dead" );
thread maps\clockwork_code::ai_array_killcount_flag_set( var_0, var_0.size, "cqb7_dead" );
thread cqb_encounter_allies_move_up( "cqb7_dead", "cqb_move_up7" );
}
thread cqb_encounter( "cqb_guys8", "interior_cqb_finished", "cqb_move_up8", level.allies, "cqb_guys8" );
}
attack_if_provoked()
{
self addaieventlistener( "grenade danger" );
self addaieventlistener( "projectile_impact" );
self addaieventlistener( "silenced_shot" );
self addaieventlistener( "bulletwhizby" );
self addaieventlistener( "gunshot" );
self addaieventlistener( "gunshot_teammate" );
self addaieventlistener( "explode" );
common_scripts\utility::waittill_any( "ai_event", "fight", "damage" );
level notify( "runner_killed" );
wait 1;
if ( !isdefined( self ) || !isalive( self ) )
return;
self notify( "stop_going_to_node" );
self.ignoreall = 0;
self.ignoreme = 0;
self setgoalpos( self.origin );
maps\_utility::pathrandompercent_set( 0 );
maps\_utility::enable_ai_color();
wait 0.1;
if ( !common_scripts\utility::flag( "round_room_fight" ) )
maps\clockwork_code::reassign_goal_volume( self, "round_room_alerted_volume" );
else
maps\clockwork_code::reassign_goal_volume( self, "round_room_combat_volume" );
level notify( "round_room_enemies_provoked" );
}
watch_for_round_room_combat()
{
level endon( "death" );
level common_scripts\utility::waittill_any( "round_room_enemies_provoked", "rotunda_kill_interrupted" );
common_scripts\utility::flag_set( "round_room_fight" );
level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_goinghot" );
level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_pickitupboys" );
maps\clockwork_code::safe_activate_trigger_with_targetname( "rotunda_allies0" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs2_gunfirecatwalks", 1, "cqb7_dead" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs1_sendallunits", 2, "cqb7_dead" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs2_ontheway", 3, "cqb7_dead" );
}
combat_vo()
{
maps\_utility::delaythread( 3, common_scripts\utility::flag_set, "start_pip_cams" );
level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_mrk_frontdoorsopeneta" );
common_scripts\utility::flag_wait( "discovery_guys" );
level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_weaponsfree" );
wait 1;
maps\clockwork_code::radio_dialog_add_and_go( "clockwork_dz_patchyouin" );
maps\clockwork_code::radio_dialog_add_and_go( "clockwork_oby_bossyougottamess" );
common_scripts\utility::flag_wait( "combat_guys1" );
wait 2;
level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_eyeonlabs" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs2_gunfirelevel1", 3, "combat_1_over" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs3_securitybreach", 4, "combat_1_over" );
common_scripts\utility::flag_wait( "combat_1_over" );
level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_letsgo" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs3_intruderslevel2", 2, "combat_guys2" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs1_locksectordown", 3, "combat_guys2" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs4_engaginglevel2", 4, "combat_guys2" );
common_scripts\utility::flag_wait( "combat_guys2" );
wait 1;
level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_getthatguy" );
common_scripts\utility::flag_wait( "combat_flee" );
level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_headright" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs4_engaginglevel2", 1, "to_cqb" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs2_takethemalive", 2, "to_cqb" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs4_siberianuniforms", 3, "to_cqb" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs2_traitors", 4, "to_cqb" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs4_idontknow", 5, "to_cqb" );
common_scripts\utility::flag_wait( "start_combat2" );
level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_boggeddown" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs4_requestassistance", 10, "to_cqb" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs2_evacuatingpersonnel", 11, "to_cqb" );
common_scripts\utility::flag_wait( "to_cqb" );
maps\clockwork_code::radio_dialog_add_and_go( "clockwork_dz_allclear" );
level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_movemove" );
}
cqb_ally_vo()
{
common_scripts\utility::flag_wait( "shut_catwalk_door" );
maps\clockwork_code::radio_dialog_add_and_go( "clockwork_dz_southcorridor" );
maps\clockwork_code::radio_dialog_add_and_go( "clockwork_dz_tangoesconverging" );
level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_mrk_exitingthetreetaking" );
maps\clockwork_code::radio_dialog_add_and_go( "clockwork_dz_minimalactivity" );
maps\clockwork_code::radio_dialog_add_and_go( "clockwork_dz_offradar" );
common_scripts\utility::flag_wait( "cqb5_dead" );
level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_watchthosecorners" );
common_scripts\utility::flag_wait( "hold_fire" );
maps\clockwork_code::radio_dialog_add_and_go( "clockwork_bkr_hold" );
wait 3;
common_scripts\utility::flag_set( "rotunda_kill" );
wait 2;
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs2_squad1reportin", 2, "round_room_fight" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs2_squad3status", 4, "round_room_fight" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs2_confirmid", 6, "round_room_fight" );
wait 3;
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs2_squadsunresponsive", 8, "round_room_fight" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs1_sendentirecompany", 10, "round_room_fight" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs2_yessir", 12, "round_room_fight" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs3_massivecasualties", 14, "round_room_fight" );
thread maps\clockwork_code::overheard_radio_chatter( "clockwork_rs2_locateintruders", 16, "round_room_fight" );
common_scripts\utility::flag_wait( "cqb_guys7" );
level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_wholebase" );
common_scripts\utility::flag_wait( "cqb7_dead" );
level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_targetlocation" );
common_scripts\utility::flag_wait_all( "almost_there", "interior_cqb_finished", "extra_guys_dead" );
level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_90secstonest" );
}
handle_pip_cams()
{
common_scripts\utility::flag_wait( "start_pip_cams" );
common_scripts\utility::flag_wait_either( "combat_guys1", "end_discovery" );
common_scripts\utility::flag_wait( "combat_1_over" );
wait 2;
maps\clockwork_code::radio_dialog_add_and_go( "clockwork_dz_majoractivity" );
common_scripts\utility::flag_wait( "combat_flee" );
thread handle_cqb_pip_cams();
}
handle_cqb_pip_cams()
{
common_scripts\utility::flag_wait( "shut_catwalk_door" );
wait 5;
common_scripts\utility::flag_wait( "cqb_guys5" );
common_scripts\utility::flag_wait( "cqb_guys6" );
var_0 = maps\clockwork_code::array_spawn_targetname_allow_fail( "run_squad1", 1 );
level.run_guy_count = var_0.size;
common_scripts\utility::array_thread( var_0, maps\_utility::pathrandompercent_set, 200 );
common_scripts\utility::array_thread( var_0, maps\clockwork_code::delete_on_path_end, "round_room_enemies_provoked", ::run_guy_done );
common_scripts\utility::array_thread( var_0, ::attack_if_provoked );
thread watch_for_round_room_combat();
wait 1;
maps\clockwork_code::radio_dialog_add_and_go( "clockwork_dz_tangoesmassing" );
level.allies[0] thread maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_takeitslow" );
common_scripts\utility::flag_set( "rotunda_cam" );
common_scripts\utility::flag_wait( "cqb_guys7" );
}
run_guy_done()
{
level.run_guy_count--;
}
cqb_dog()
{
if ( !isdefined( level.dog ) )
return;
common_scripts\utility::flag_wait( "discovery_spawn" );
level.dog setdogattackradius( 64 );
wait 0.1;
var_0 = level.override_dog_enemy;
wait 2;
level.dog maps\ally_attack_dog::dog_disable_ai_color();
if ( isalive( var_0 ) )
{
level.player notify( "dog_attack_override" );
var_0 common_scripts\utility::waittill_notify_or_timeout( "dead", 15 );
}
common_scripts\utility::flag_wait( "to_cqb" );
level.dog maps\ally_attack_dog::dog_enable_ai_color();
level.dog maps\ally_attack_dog::lock_player_control_until_flag( "catwalks_open" );
}