// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool clockwork_intro_pre_load() { common_scripts\utility::flag_init( "intro_finished" ); common_scripts\utility::flag_init( "FLAG_swap_ally_heads" ); common_scripts\utility::flag_init( "FLAG_player_mask_anim" ); common_scripts\utility::flag_init( "FLAG_let_btr_pass" ); common_scripts\utility::flag_init( "FLAG_start_approach_vo" ); common_scripts\utility::flag_init( "delete_ambush_jeep2" ); common_scripts\utility::flag_init( "ally_checkpoint_approach" ); common_scripts\utility::flag_init( "FLAG_attach_keegan_helmet" ); common_scripts\utility::flag_init( "flag_intro_baker_exit" ); common_scripts\utility::flag_init( "flag_intro_cipher_exit" ); common_scripts\utility::flag_init( "flag_intro_keegan_exit" ); common_scripts\utility::flag_init( "trigger_spotlight_b" ); common_scripts\utility::flag_init( "FLAG_obj_enterbase" ); common_scripts\utility::flag_init( "FLAG_obj_enterbase_complete" ); common_scripts\utility::flag_init( "destroy_player_intro" ); common_scripts\utility::flag_init( "start_watch_anim" ); common_scripts\utility::flag_init( "checkpoint_vo_rook_shoot" ); common_scripts\utility::flag_init( "start_enemies_provoked_early" ); common_scripts\utility::flag_init( "ok_shoot_radio" ); common_scripts\utility::flag_init( "checkpoint_taken" ); common_scripts\utility::flag_init( "player_at_checkpoint" ); common_scripts\utility::flag_init( "intro_destroy_player_off" ); common_scripts\utility::flag_init( "start_ambush_scene" ); common_scripts\utility::flag_init( "start_ambush_scene_enemies" ); common_scripts\utility::flag_init( "intro_text_done" ); common_scripts\utility::flag_init( "start_spotlight_b" ); common_scripts\utility::flag_init( "ambush_destroy_player_off" ); common_scripts\utility::flag_init( "player_drag_body" ); common_scripts\utility::flag_init( "ambush_scene_started" ); common_scripts\utility::flag_init( "ambush_anim_finished" ); common_scripts\utility::flag_init( "introdrive_finished" ); common_scripts\utility::flag_init( "FLAG_obj_bodydrag" ); common_scripts\utility::flag_init( "FLAG_obj_bodydrag_complete" ); common_scripts\utility::flag_init( "FLAG_baker_bodydrag_complete" ); common_scripts\utility::flag_init( "FLAG_obj_getinjeep" ); common_scripts\utility::flag_init( "FLAG_obj_getinjeep_complete" ); common_scripts\utility::flag_init( "FLAG_obj_pickupbags_complete" ); common_scripts\utility::flag_init( "entering_blackbird_vo" ); common_scripts\utility::flag_init( "start_intro_convoy" ); common_scripts\utility::flag_init( "player_looking_at_tower" ); common_scripts\utility::flag_init( "bakerambush_finished" ); common_scripts\utility::flag_init( "cipherambush_finished" ); common_scripts\utility::flag_init( "keeganambush_finished" ); common_scripts\utility::flag_init( "start_enemies_weaponsfree" ); common_scripts\utility::flag_init( "FLAG_pay_attention" ); common_scripts\utility::flag_init( "ally_dead" ); common_scripts\utility::flag_init( "spawn_checkpoint_guards" ); common_scripts\utility::flag_init( "bodydrag1_fakedead" ); common_scripts\utility::flag_init( "bodydrag2_fakedead" ); common_scripts\utility::flag_init( "bodydrag3_fakedead" ); common_scripts\utility::flag_init( "player_told_to_get_bags" ); common_scripts\utility::flag_init( "player_didnt_shoot_target" ); common_scripts\utility::flag_init( "FLAG_cipher_kicks_jeep" ); common_scripts\utility::flag_init( "btr_reverse_here" ); common_scripts\utility::flag_init( "allies_prep_lightsout" ); common_scripts\utility::flag_init( "FLAG_keegan_wave_jeep" ); common_scripts\utility::flag_init( "FLAG_baker_out_of_hut" ); common_scripts\utility::flag_init( "FLAG_enable_enter_jeep" ); common_scripts\utility::flag_init( "ambush_scene_shot" ); common_scripts\utility::flag_init( "ambush_scene_stab" ); common_scripts\utility::flag_init( "bulbs_parking" ); common_scripts\utility::flag_init( "FLAG_gunshot_drag" ); common_scripts\utility::flag_init( "FLAG_entrance_drones" ); common_scripts\utility::flag_init( "FLAG_player_failcase_tunnel" ); common_scripts\utility::flag_init( "btr_sees_playerdrag_body" ); common_scripts\utility::flag_init( "spotlight_track_player" ); common_scripts\utility::flag_init( "FLAG_intro_light_off" ); common_scripts\utility::flag_init( "ambush_player_timeout" ); common_scripts\utility::flag_init( "checkpoint_vo_tango" ); common_scripts\utility::flag_init( "lights_out" ); common_scripts\utility::flag_init( "ambush_scene_timeout" ); common_scripts\utility::flag_init( "FLAG_checkcheck" ); common_scripts\utility::flag_init( "tower_kill_ok" ); common_scripts\utility::flag_init( "checkpoint_taken2" ); common_scripts\utility::flag_init( "k_reached_ambush_anim" ); common_scripts\utility::flag_init( "c_reached_ambush_anim" ); common_scripts\utility::flag_init( "FLAG_take_the_rest" ); common_scripts\utility::flag_init( "FLAG_intro_jeeps_pull_away" ); common_scripts\utility::flag_init( "FLAG_keegan_drag_door" ); common_scripts\utility::flag_init( "keegan_delay_flag_hack" ); common_scripts\utility::flag_init( "FLAG_bodydrag2_deathflag" ); common_scripts\utility::flag_init( "FLAG_bodydrag_deathflag" ); common_scripts\utility::flag_init( "player_near_stab_guy" ); common_scripts\utility::flag_init( "player_looking_at_stab_guy" ); common_scripts\utility::flag_init( "player_in_position_for_stab_kill" ); common_scripts\utility::flag_init( "enable_stab" ); common_scripts\utility::flag_init( "intro_cp_radio" ); common_scripts\utility::flag_init( "FLAG_the_last_guy" ); common_scripts\utility::flag_init( "flag_ambush_knife_fx" ); common_scripts\utility::flag_init( "start_watchsync_vo" ); common_scripts\utility::flag_init( "start_playerstand_reveal" ); common_scripts\utility::flag_init( "destroy_player_ambush" ); common_scripts\utility::flag_init( "start_ambush_vo" ); common_scripts\utility::flag_init( "ambush_enemies_provoked" ); common_scripts\utility::flag_init( "ambush_finished" ); common_scripts\utility::flag_init( "ambush_stop_vo" ); common_scripts\utility::flag_init( "quiet_kill_balcony_guy" ); common_scripts\utility::flag_init( "checkpoint_player_picks_target" ); common_scripts\utility::flag_init( "player_in_jeep" ); common_scripts\utility::flag_init( "start_intro_drive" ); common_scripts\utility::flag_init( "FLAG_start_blackout_vo" ); common_scripts\utility::flag_init( "nvg_gun_up" ); } setup_intro2() { maps\clockwork_code::dog_setup(); level.start_point = "intro2"; maps\clockwork_code::setup_player(); intro_display_introscreen(); maps\_utility::disable_trigger_with_targetname( "TRIG_checkpoint_taken2" ); maps\_utility::vision_set_changes( "clockwork", 0 ); } setup_ambush() { maps\clockwork_code::dog_setup(); level.start_point = "start_ambush"; maps\clockwork_code::setup_player(); maps\_utility::vision_set_changes( "clockwork", 0 ); common_scripts\utility::flag_set( "checkpoint_taken" ); thread delay_keegan_color(); maps\_utility::disable_trigger_with_targetname( "trig_get_in_jeep" ); level.pre_ambush_scene_org = common_scripts\utility::getstruct( "ambush_scene_org", "targetname" ); level.ambush_jeep_scene = common_scripts\utility::getstruct( "ambush_jeep_scene", "targetname" ); thread maps\clockwork_audio::checkpoint_start_ambush(); maps\clockwork_code::spawn_allies(); foreach ( var_1 in level.allies ) { var_1.ignoreall = 1; var_1.ignoreme = 1; var_1 maps\_utility::forceuseweapon( "gm6+scopegm6_sp+silencer03_sp", "primary" ); } setup_bodydrag_startpoint(); thread cipher_ambush_approach( level.allies[2], "cipher", "cipher_bag", "ambush_approach", "ambush_approach_loop", level.pre_ambush_scene_org ); maps\clockwork_code::init_animated_dufflebags_baker(); thread handle_baker_ambush_anims( level.pre_ambush_scene_org, level.allies[0], "clock_intro", level.bags[0], level.intro_balcony_guy, undefined ); thread intro_ambush_vo(); level.player.ignoreme = 1; maps\_utility::battlechatter_off(); if ( level.woof ) thread handle_dog_ambush(); thread spawn_ambush_vehicles(); thread player_failcase_tunnel(); thread obj_enterbase(); common_scripts\utility::flag_set( "FLAG_obj_enterbase" ); } delay_keegan_color() { wait 3.75; var_0 = level.allies[1].goalradius; var_1 = getnode( "keegan_ambush_goal1", "targetname" ); level.allies[1].goalradius = 32; level.allies[1] setgoalnode( var_1 ); level.allies[1] waittill( "goal" ); common_scripts\utility::flag_set( "keegan_delay_flag_hack" ); level.allies[1].goalradius = var_0; } setup_checkpoint() { maps\clockwork_code::dog_setup(); level.start_point = "checkpoint"; maps\clockwork_code::setup_player(); level.pre_ambush_scene_org = common_scripts\utility::getstruct( "ambush_scene_org", "targetname" ); level.ambush_jeep_scene = common_scripts\utility::getstruct( "ambush_jeep_scene", "targetname" ); maps\_utility::vision_set_changes( "clockwork", 0 ); maps\clockwork_code::spawn_allies(); maps\_utility::disable_trigger_with_targetname( "trig_get_in_jeep" ); maps\_utility::disable_trigger_with_targetname( "TRIG_checkpoint_taken2" ); foreach ( var_1 in level.allies ) { var_1.ignoreall = 1; var_1.ignoreme = 1; var_1 maps\_utility::forceuseweapon( "gm6+scopegm6_sp+silencer03_sp", "primary" ); } level.player.ignoreme = 1; maps\_utility::battlechatter_off(); if ( level.woof ) thread handle_dog_checkpoint(); thread intro_checkpoint_vo(); thread obj_enterbase(); common_scripts\utility::flag_set( "FLAG_obj_enterbase" ); common_scripts\utility::flag_set( "FLAG_start_approach_vo" ); level.checkpoint_patrol_anim = []; level.checkpoint_patrol_anim[0] = "patrol_walk"; level.checkpoint_patrol_anim[1] = "walk_gun_unwary"; level.ambush_recover_anim = []; level.ambush_recover_anim[0] = "ambush_enemy_react1"; level.ambush_recover_anim[1] = "ambush_enemy_react2"; level.ambush_recover_anim[2] = "ambush_enemy_react3"; wait 0.5; maps\_utility::activate_trigger_with_targetname( "TRIG_allies_goto_checkpoint" ); } override_setup_headmodels_for_allies() { wait 3; var_0 = level.allies[0]; var_1 = var_0.script_parameters; var_0.disguise_head = var_0.headmodel; var_0 detach( var_0.headmodel, "" ); var_0 attach( var_1, "", 1 ); var_0.headmodel = var_1; var_0 = level.allies[1]; var_1 = "head_hesh_stealth_b_no_helmet"; var_0.disguise_head = var_0.headmodel; var_0 detach( var_0.headmodel, "" ); var_0 attach( var_1, "", 1 ); var_0.headmodel = var_1; } setup_disguise_for_allies() { var_0 = level.allies[0]; var_1 = var_0.disguise_head; var_0 detach( var_0.headmodel, "" ); var_0 attach( var_1, "", 1 ); var_0.headmodel = var_1; var_0.disguise_head = undefined; } begin_intro() { maps\clockwork_code::spawn_allies(); thread override_setup_headmodels_for_allies(); if ( level.woof ) thread handle_dog_intro(); foreach ( var_1 in level.allies ) { var_1.ignoreall = 1; var_1.ignoreme = 1; var_1 maps\_utility::enable_cqbwalk(); var_1.disable_sniper_glint = 1; } maps\_utility::disable_trigger_with_targetname( "trig_get_in_jeep" ); level.player.ignoreme = 1; level.player allowcrouch( 0 ); common_scripts\utility::flag_wait( "intro_text_done" ); level.checkpoint_patrol_anim = []; level.checkpoint_patrol_anim[0] = "patrol_walk"; level.checkpoint_patrol_anim[1] = "walk_gun_unwary"; level.ambush_recover_anim = []; level.ambush_recover_anim[0] = "ambush_enemy_react1"; level.ambush_recover_anim[1] = "ambush_enemy_react2"; level.ambush_recover_anim[2] = "ambush_enemy_react3"; common_scripts\utility::flag_wait( "intro_finished" ); } begin_checkpoint() { } begin_ambush() { thread prepare_ambush(); thread intro_drive(); maps\_utility::disable_trigger_with_targetname( "trig_get_in_jeep" ); common_scripts\utility::flag_wait( "introdrive_finished" ); } intro_display_introscreen() { level.player freezecontrols( 1 ); take_away_offhands(); thread maps\_utility::endondeath(); maps\_utility::intro_screen_create( &"CLOCKWORK_INTROSCREEN_LINE_1", &"CLOCKWORK_INTROSCREEN_LINE_2", &"CLOCKWORK_INTROSCREEN_LINE_5" ); level.introscreen_complete_delay = 2; wait 1; level.intro_black = thread maps\clockwork_code::introscreen_generic_black_fade_in_on_flag( "start_watch_anim", 2.5 ); maps\_utility::battlechatter_off( "allies" ); maps\_utility::battlechatter_off( "axis" ); thread intro_anims(); thread obj_enterbase(); thread spawn_convoy(); common_scripts\utility::flag_set( "intro_text_done" ); } player_intro_anims( var_0, var_1, var_2, var_3 ) { setsaveddvar( "cg_cinematicFullScreen", "0" ); var_4 = maps\_utility::spawn_anim_model( "player_rig" ); var_5 = maps\_utility::spawn_anim_model( "player_rig" ); var_5 setmodel( "clk_watch_viewhands" ); thread maps\clockwork_code::watch_light_fx( var_4, var_5 ); thread maps\clockwork_code::watch_tick( var_5 ); var_4 show(); var_5 hide(); level.player playerlinktoabsolute( var_4, "tag_player" ); var_0 thread maps\_anim::anim_single_solo( var_5, var_1 ); var_0 maps\_anim::anim_single_solo( var_4, var_1 ); var_4 hide(); var_5 hide(); setsaveddvar( "ammoCounterHide", 1 ); level.player giveweapon( "helmet_goggles" ); level.player switchtoweapon( "helmet_goggles" ); wait 2.467; foreach ( var_7 in var_3 ) level.player giveweapon( var_7 ); level.player switchtoweapon( "gm6+scopegm6_sp+silencer03_sp" ); level.player takeweapon( "helmet_goggles" ); setsaveddvar( "ammoCounterHide", 0 ); level.player playerlinktoblend( var_2, "J_prop_1", 1.0 ); wait 1.0; give_back_offhands(); level.player unlink(); var_4 delete(); var_5 delete(); level.player allowcrouch( 1 ); level.player freezecontrols( 0 ); } take_away_offhands() { level.player disableoffhandweapons(); level.player setweaponammoclip( "fraggrenade", 0 ); level.player setweaponammostock( "fraggrenade", 0 ); level.player setweaponammoclip( "flash_grenade", 0 ); level.player setweaponammostock( "flash_grenade", 0 ); } give_back_offhands() { level.player enableoffhandweapons(); level.player giveweapon( "fraggrenade" ); var_0 = weaponmaxammo( "fraggrenade" ); var_1 = weaponclipsize( "fraggrenade" ); level.player setweaponammoclip( "fraggrenade", var_1 ); level.player setweaponammostock( "fraggrenade", var_0 ); level.player giveweapon( "flash_grenade" ); var_0 = weaponmaxammo( "flash_grenade" ); var_1 = weaponclipsize( "flash_grenade" ); level.player setweaponammoclip( "flash_grenade", var_1 ); level.player setweaponammostock( "flash_grenade", var_0 ); } intro_anims() { thread maps\clockwork_audio::intro_black(); var_0 = common_scripts\utility::getstruct( "intro2_start", "targetname" ); var_1 = maps\_utility::spawn_anim_model( "player_view" ); var_0 maps\_anim::anim_first_frame_solo( var_1, "clock_prepare" ); var_2 = level.player getweaponslistprimaries(); foreach ( var_4 in var_2 ) level.player takeweapon( var_4 ); wait 1.5; thread player_intro_anims( var_0, "watch_sync_intro", var_1, var_2 ); thread intro_anims_enemies(); thread maps\clockwork_audio::intro_watch(); level.allies[0] thread handle_baker_intro_anim( var_0, var_1 ); level.allies[1] thread handle_keegan_intro_anim( var_0 ); level.allies[2] thread handle_cipher_intro_anim( var_0 ); foreach ( var_7 in level.allies ) var_7 maps\_utility::forceuseweapon( "gm6+scopegm6_sp+silencer03_sp", "primary" ); wait 1; common_scripts\utility::flag_set( "start_watch_anim" ); wait 8; common_scripts\utility::flag_set( "FLAG_obj_enterbase" ); foreach ( var_7 in level.allies ) var_7 maps\_utility::enable_cqbwalk(); wait 5; common_scripts\utility::flag_set( "start_intro_convoy" ); thread player_failcase_tunnel(); wait 1.5; level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_jeeppatrol" ); thread intro_checkpoint_vo(); } handle_baker_intro_anim( var_0, var_1 ) { level.allies[0].animname = "baker"; var_2 = maps\_utility::spawn_anim_model( "baker_mask" ); var_3 = maps\_utility::spawn_anim_model( "player_mask" ); thread hide_at_end_anim( var_2 ); thread hide_at_end_anim( var_3 ); var_4 = animscripts\utility::array( var_1, level.allies[0] ); var_0 thread maps\_anim::anim_single_solo( var_3, "clock_prepare" ); var_0 thread maps\_anim::anim_single_solo( var_2, "clock_prepare" ); var_0 maps\_anim::anim_single( var_4, "clock_prepare" ); maps\_utility::activate_trigger_with_targetname( "baker_intro_color" ); } helmet_swap_keegan( var_0 ) { self waittillmatch( "single anim", "helmet_attach" ); var_1 = self.disguise_head; self detach( self.headmodel, "" ); self attach( var_1, "", 1 ); self.headmodel = var_1; self.disguise_head = undefined; var_0 delete(); } handle_keegan_intro_anim( var_0 ) { level.allies[1].animname = "keegan"; var_1 = maps\_utility::spawn_anim_model( "keegan_mask" ); var_0 thread maps\_anim::anim_single_solo( self, "clock_prepare" ); var_0 thread maps\_anim::anim_single_solo( var_1, "clock_prepare" ); thread helmet_swap_keegan( var_1 ); maps\_utility::activate_trigger_with_targetname( "kb_intro_color" ); } handle_cipher_intro_anim( var_0 ) { level.allies[2].animname = "cipher"; var_0 maps\_anim::anim_single_solo( self, "clock_prepare" ); maps\_utility::activate_trigger_with_targetname( "intro_allymove_jeep" ); } hide_at_end_anim( var_0 ) { level.allies[0] waittillmatch( "single anim", "head_swap" ); if ( var_0.animname == "player_mask" ) setup_disguise_for_allies(); var_0 delete(); } intro_anims_enemies() { var_0 = common_scripts\utility::getstruct( "intro2_start", "targetname" ); var_1 = maps\_utility::spawn_anim_model( "sm_body1", var_0.origin ); var_1.animname = "sm_body1"; var_2 = maps\_utility::spawn_anim_model( "sm_body2", var_0.origin ); var_2.animname = "sm_body2"; var_3 = maps\_utility::spawn_anim_model( "sm_body3", var_0.origin ); var_3.animname = "sm_body3"; var_0 thread maps\_anim::anim_first_frame_solo( var_1, "clock_prepare_bodies" ); var_0 thread maps\_anim::anim_first_frame_solo( var_2, "clock_prepare_bodies" ); var_0 maps\_anim::anim_single_solo( var_3, "clock_prepare_bodies" ); } setup_checkpoint_combat() { common_scripts\utility::flag_wait( "spawn_checkpoint_guards" ); thread player_failcase_tunnel(); level.pre_ambush_scene_org = common_scripts\utility::getstruct( "ambush_scene_org", "targetname" ); level.ambush_jeep_scene = common_scripts\utility::getstruct( "ambush_jeep_scene", "targetname" ); maps\_utility::array_spawn_function_targetname( "introcp_guy_radio", ::handle_radio_alert ); maps\_utility::array_spawn_function_targetname( "introcp_guys_tower", ::handle_tower_alert ); maps\_utility::array_spawn_function_targetname( "introcp_guys_remaining", ::handle_remaining_alert ); maps\_utility::array_spawn_function_targetname( "intro_bodydrag_enemy", ::handle_remaining_alert ); maps\_utility::array_spawn_function_targetname( "intro_bodydrag2_enemy", ::handle_remaining_alert ); maps\_utility::array_spawn_function_targetname( "balcony_death_guy", ::handle_remaining_alert ); maps\_utility::array_spawn_function_noteworthy( "checkpoint_patrollers", ::checkpoint_patrol, 1 ); thread handle_radiotower_guy(); level.introcp_guys_tower = maps\_utility::array_spawn_targetname( "introcp_guys_tower", 1 ); level.introcp_guys_remaining = maps\_utility::array_spawn_targetname( "introcp_guys_remaining", 1 ); level.special_death_guys = []; thread handle_balcony_death(); wait 2; thread handle_player_bodydrag_death(); thread handle_keegandrag_death(); } handle_radiotower_guy() { level.introcp_guy_radio = maps\_utility::spawn_targetname( "introcp_guy_radio", 1 ); level.introcp_guy_radio.animname = "radioguy"; level.introcp_guy_radio.allowdeath = 1; level.introcp_guy_radio maps\_utility::gun_remove(); var_0 = spawn( "script_model", ( 0, 0, 0 ) ); var_0 setmodel( "com_hand_radio" ); var_0 linkto( level.introcp_guy_radio, "tag_weapon_left", ( 0, 0, 0 ), ( 0, 0, 0 ) ); var_1 = spawn( "script_model", ( 0, 0, 0 ) ); var_1 setmodel( "weapon_binocular" ); var_1 linkto( level.introcp_guy_radio, "tag_weapon_right", ( 0, 0, 0 ), ( 0, 0, 0 ) ); level.pre_ambush_scene_org thread maps\_anim::anim_loop_solo( level.introcp_guy_radio, "lookout" ); thread delete_accessories_on_death( var_1, var_0 ); common_scripts\utility::flag_wait( "start_enemies_provoked_early" ); if ( isdefined( level.introcp_guy_radio ) && isalive( level.introcp_guy_radio ) ) magicbullet( level.allies[2].weapon, level.allies[2] gettagorigin( "tag_flash" ), level.introcp_guy_radio gettagorigin( "j_head" ) ); } delete_accessories_on_death( var_0, var_1 ) { common_scripts\utility::flag_wait( "intro_cp_radio" ); var_0 delete(); var_1 delete(); } intro_checkpoint_vo() { thread setup_checkpoint_combat(); thread checkpoint_combat_failsafe(); thread radio_tower_guy_shot(); thread ally_checkpoint_approaches(); level endon( "start_enemies_provoked_early" ); common_scripts\utility::flag_wait( "FLAG_start_approach_vo" ); level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_checkpointsahead" ); wait 1; maps\clockwork_code::radio_dialog_add_and_go( "clockwork_diz_northernridge" ); wait 1; level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_copyall" ); wait 3; level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_quicklyandquietly" ); common_scripts\utility::flag_wait( "checkpoint_vo_tango" ); thread maps\_utility::autosave_by_name( "checkpoint" ); level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_count8" ); common_scripts\utility::flag_wait( "checkpoint_vo_rook_shoot" ); thread look_for_last_guy(); common_scripts\utility::flag_wait( "FLAG_the_last_guy" ); level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_thereheis" ); common_scripts\utility::flag_set( "ok_shoot_radio" ); if ( isdefined( level.introcp_guy_radio ) && isalive( level.introcp_guy_radio ) ) { level.allies[0] thread maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_bestshot" ); thread look_at_tower_early_vo(); thread nag_shoot_radio_vo(); } thread handle_radio_tower_kill(); common_scripts\utility::flag_wait( "intro_cp_radio" ); wait 1.5; level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_mrk_wevegot3on" ); foreach ( var_1 in level.introcp_guys_tower ) var_1 thread handle_com_tower_kill(); level.allies[0] thread maps\clockwork_code::char_dialog_add_and_go( "clockwork_mrk_letsdropemtogether" ); thread look_at_tower_vo(); thread look_at_tower_vo_timeout(); common_scripts\utility::flag_wait( "player_looking_at_tower" ); thread cipher_keegan_tower_kill(); thread vo_tower_shoot(); common_scripts\utility::flag_set( "tower_kill_ok" ); maps\_utility::waittill_aigroupcleared( "intro_cp_tower" ); level notify( "disable_combat_failsafe" ); foreach ( var_1 in level.introcp_guys_remaining ) { if ( isdefined( var_1 ) ) { var_1 thread handle_remaining_kill(); var_1 thread alert_enemies(); } } foreach ( var_1 in level.special_death_guys ) { if ( isdefined( var_1 ) ) { var_1 thread handle_remaining_kill(); var_1 thread alert_enemies(); } } thread handle_checkpoint_end_condition(); level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_splash3" ); common_scripts\utility::waitframe(); thread remaining_kill(); level.allies[0] thread maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_pickatarget" ); maps\_utility::waittill_aigroupcleared( "intro_cp_remaining" ); } ally_checkpoint_approaches() { level endon( "start_enemies_provoked_early" ); common_scripts\utility::flag_wait( "ally_checkpoint_approach" ); foreach ( var_1 in level.allies ) { var_1 maps\_utility::cqb_walk( "on" ); var_1 maps\_utility::disable_ai_color(); } thread approach_anims( level.allies[0], "baker", "checkpoint_approach", "checkpoint_approach_loop", level.pre_ambush_scene_org ); thread approach_anims( level.allies[1], "keegan", "checkpoint_approach", "checkpoint_approach_loop", level.pre_ambush_scene_org ); thread cipher_approach_anims( level.allies[2], "cipher", "checkpoint_approach", "checkpoint_approach_loop", level.pre_ambush_scene_org ); } approach_anims( var_0, var_1, var_2, var_3, var_4 ) { level endon( "cancel_approach_anims" ); var_0 maps\_utility::disable_ai_color(); var_0.animname = var_1; var_4 maps\_anim::anim_reach_solo( var_0, var_2 ); var_4 maps\_anim::anim_single_solo( var_0, var_2 ); var_4 thread maps\_anim::anim_loop_solo( var_0, var_3, "stop_loop" ); var_0 thread handle_approach_anims_end( var_4 ); } handle_approach_anims_end( var_0 ) { common_scripts\utility::flag_wait_any( "intro_finished", "start_enemies_provoked_early" ); var_0 notify( "stop_loop" ); maps\_utility::anim_stopanimscripted(); } cipher_approach_anims( var_0, var_1, var_2, var_3, var_4 ) { level endon( "cancel_approach_anims" ); var_0 maps\_utility::disable_ai_color(); var_0.animname = var_1; var_4 maps\_anim::anim_reach_solo( var_0, var_2 ); var_4 maps\_anim::anim_single_solo( var_0, var_2 ); var_4 thread maps\_anim::anim_loop_solo( var_0, var_3, "stop_loop" ); var_0 thread handle_ciper_approach_anims_end( var_4 ); } handle_ciper_approach_anims_end( var_0 ) { common_scripts\utility::flag_wait_any( "intro_finished", "start_enemies_provoked_early" ); if ( common_scripts\utility::flag( "start_enemies_provoked_early" ) ) maps\_utility::enable_ai_color(); var_0 notify( "stop_loop" ); maps\_utility::anim_stopanimscripted(); } cipher_ambush_approach( var_0, var_1, var_2, var_3, var_4, var_5 ) { var_0.animname = var_1; var_5 maps\_anim::anim_reach_solo( var_0, var_3 ); var_5 maps\_anim::anim_single_solo( var_0, var_3 ); level notify( "c_reached_ambush_anim" ); common_scripts\utility::flag_set( "c_reached_ambush_anim" ); if ( !common_scripts\utility::flag( "k_reached_ambush_anim" ) ) var_5 thread maps\_anim::anim_loop_solo( var_0, var_4, "stop_loop" ); level waittill( "k_reached_ambush_anim" ); var_5 notify( "stop_loop" ); } vo_tower_shoot() { level endon( "start_enemies_provoked_early" ); level endon( "player_shot_gun" ); level endon( "player_shot_target_on_tower" ); wait 0.75; common_scripts\utility::flag_set( "FLAG_take_the_rest" ); level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_mrk_keeganrightigot" ); wait 3.5; level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_mrk_adamonyou" ); wait 5; level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_mrk_adamonyou" ); } radio_tower_guy_shot() { level endon( "start_enemies_provoked_early" ); common_scripts\utility::flag_wait( "intro_cp_radio" ); if ( common_scripts\utility::flag( "ok_shoot_radio" ) ) { wait 0.25; level.allies[2] maps\clockwork_code::char_dialog_add_and_go( "clockwork_kgn_hesdown" ); wait 1.5; } if ( !common_scripts\utility::flag( "ok_shoot_radio" ) ) common_scripts\utility::flag_set( "start_enemies_provoked_early" ); } handle_checkpoint_end_condition() { common_scripts\utility::flag_wait_all( "bodydrag1_fakedead", "bodydrag2_fakedead", "bodydrag3_fakedead" ); maps\_utility::battlechatter_off(); thread maps\clockwork_audio::pre_ambush(); thread spawn_ambush_vehicles(); foreach ( var_1 in level.allies ) { var_1 maps\_utility::disable_ai_color(); var_1.ignoreall = 1; } common_scripts\utility::flag_set( "intro_finished" ); common_scripts\utility::flag_set( "checkpoint_taken" ); maps\_utility::enable_trigger_with_targetname( "TRIG_checkpoint_taken2" ); thread delay_keegan_color(); thread cipher_ambush_approach( level.allies[2], "cipher", "cipher_bag", "ambush_approach", "ambush_approach_loop", level.pre_ambush_scene_org ); maps\clockwork_code::init_animated_dufflebags_baker(); thread handle_baker_ambush_anims( level.pre_ambush_scene_org, level.allies[0], "clock_intro", level.bags[0], level.intro_balcony_guy, undefined ); thread intro_ambush_vo(); thread maps\_utility::autosave_by_name( "checkpoint_clear" ); } look_at_tower_early_vo() { level endon( "player_shot_someone_on_radio" ); level endon( "player_shot_target_on_tower" ); level endon( "start_enemies_provoked_early" ); var_0 = getent( "towerorg", "targetname" ); for (;;) { if ( level.player maps\_utility::isads() && level.player adsbuttonpressed() ) { var_0 maps\_utility::waittill_player_lookat_for_time( 1, 0.98 ); level notify( "reset_radio_tower_vo" ); level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_talltower" ); wait 0.05; thread nag_shoot_radio_vo(); wait 3; } wait 0.25; } } nag_shoot_radio_vo() { level endon( "player_shot_someone_on_radio" ); level endon( "start_enemies_provoked_early" ); level endon( "reset_radio_tower_vo" ); for (;;) { wait 10; level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_mrk_radiotowerrightside" ); wait 10; level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_mrk_timeswastingtakehim" ); } } look_for_last_guy() { thread look_for_last_guy_timeout(); level endon( "last_guy_out_building" ); level endon( "player_shot_someone_on_radio" ); var_0 = getent( "lastguyorg", "targetname" ); for (;;) { var_0 maps\_utility::waittill_player_lookat_for_time( 0.6, 0.98 ); common_scripts\utility::flag_set( "FLAG_the_last_guy" ); wait 2; break; } } look_for_last_guy_timeout() { wait 3; common_scripts\utility::flag_set( "FLAG_the_last_guy" ); level notify( "last_guy_out_building" ); } look_at_tower_vo() { level endon( "player_shot_target_on_tower" ); level endon( "player_looking_at_tower" ); level endon( "start_enemies_provoked_early" ); var_0 = cos( 7 ); var_1 = getent( "towerorg", "targetname" ); var_1 maps\_utility::waittill_player_lookat_for_time( 0.05, var_0 ); common_scripts\utility::flag_set( "player_looking_at_tower" ); } look_at_tower_vo_timeout() { level endon( "start_enemies_provoked_early" ); wait 7; common_scripts\utility::flag_set( "player_looking_at_tower" ); level notify( "player_looking_at_tower" ); } checkpoint_combat_failsafe() { level endon( "player_shot_target_on_tower" ); level endon( "disable_combat_failsafe" ); common_scripts\utility::flag_wait( "start_enemies_provoked_early" ); level notify( "going_in_hot" ); level notify( "cancel_approach_anims" ); maps\_utility::activate_trigger_with_targetname( "inhot_color_trig" ); common_scripts\utility::flag_set( "FLAG_intro_jeeps_pull_away" ); level notify( "start_enemies_provoked_early" ); level.allies[0] stopsounds(); common_scripts\utility::waitframe(); wait 1; level.allies[0] thread maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_goinginhot" ); common_scripts\utility::flag_set( "FLAG_the_last_guy" ); var_0 = getaiarray( "axis" ); foreach ( var_2 in var_0 ) { if ( isdefined( var_2 ) && isalive( var_2 ) && !isdefined( var_2.fake_dead ) ) var_2 thread alert_enemies_early(); } var_4 = maps\_utility::get_ai_group_ai( "intro_cp_radio" ); var_5 = maps\_utility::get_ai_group_ai( "intro_cp_tower" ); var_6 = maps\_utility::get_ai_group_ai( "intro_cp_remaining" ); var_7 = maps\_utility::get_ai_group_ai( "intro_cp_specialcase" ); var_8 = common_scripts\utility::array_combine( var_4, var_5 ); var_9 = common_scripts\utility::array_combine( var_6, var_7 ); var_10 = common_scripts\utility::array_combine( var_8, var_9 ); wait 1.5; thread maps\clockwork_code::attack_targets( level.allies, var_10, 3, 4.5, 1 ); maps\_utility::waittill_aigroupcleared( "intro_cp_radio" ); maps\_utility::waittill_aigroupcleared( "intro_cp_tower" ); maps\_utility::waittill_aigroupcleared( "intro_cp_remaining" ); thread handle_checkpoint_end_condition(); } handle_radio_tower_kill() { level endon( "player_shot_someone_on_radio" ); level endon( "start_enemies_provoked_early" ); self waittill( "damage", var_0, var_1 ); if ( var_1 == level.player ) level notify( "player_shot_someone_on_radio" ); } handle_com_tower_kill() { level endon( "player_shot_target_on_tower" ); level endon( "start_enemies_provoked_early" ); self waittill( "damage", var_0, var_1 ); if ( var_1 == level.player ) level notify( "player_shot_target_on_tower" ); } handle_remaining_kill() { level endon( "player_shot_someone_in_remaining" ); level endon( "start_enemies_provoked_early" ); self waittill( "damage", var_0, var_1 ); if ( var_1 == level.player ) level notify( "player_shot_someone_in_remaining" ); } cipher_keegan_tower_kill() { level endon( "start_enemies_provoked_early" ); level waittill( "player_shot_target_on_tower" ); level.allies[0] stopsounds(); var_0 = maps\_utility::get_ai_group_ai( "intro_cp_tower" ); maps\clockwork_code::attack_targets( level.allies, var_0, 0.5, 0.75, 1, 1 ); level notify( "allies_shot_targets_tower" ); } remaining_kill() { var_0 = maps\_utility::get_ai_group_ai( "intro_cp_remaining" ); var_1 = maps\_utility::get_ai_group_ai( "intro_cp_specialcase" ); var_2 = common_scripts\utility::array_combine( var_0, var_1 ); common_scripts\utility::waittill_notify_or_timeout( "player_shot_someone_in_remaining", 5 ); common_scripts\utility::flag_set( "checkpoint_player_picks_target" ); maps\clockwork_code::attack_targets( level.allies, var_2, 0.3, 0.6, 1 ); thread force_kill_balcony_keeganguy(); } force_kill_balcony_keeganguy() { wait 1; if ( isdefined( level.intro_balcony_guy ) && isalive( level.intro_balcony_guy ) ) magicbullet( level.allies[0].weapon, level.allies[0] gettagorigin( "tag_flash" ), level.intro_balcony_guy gettagorigin( "j_head" ) ); wait 1.5; if ( isdefined( level.intro_keegandrag_guy ) && isalive( level.intro_keegandrag_guy ) ) magicbullet( level.allies[1].weapon, level.allies[0] gettagorigin( "tag_flash" ), level.intro_keegandrag_guy gettagorigin( "j_head" ) ); } handle_radio_alert() { self.dropweapon = 0; self.ignoreme = 1; self.ignoreall = 1; self.diequietly = 1; self.health = 1; thread handle_radio_tower_kill(); } handle_tower_alert() { self.dropweapon = 0; self.health = 1; self.ignoreme = 1; self.ignoreall = 1; self.diequietly = 1; self.reactingtobullet = 0; self.disablebulletwhizbyreaction = 1; self.disable_dive_whizby_react = 1; maps\_utility::gun_remove(); if ( isdefined( self.script_noteworthy ) && self.script_noteworthy == "tower_player_target" ) thread tower_tapglass_scene( "tapglass_enemy_a" ); if ( isdefined( self.script_noteworthy ) && self.script_noteworthy == "tower_walkout_guy" ) thread tower_tapglass_scene( "tapglass_enemy_b" ); if ( isdefined( self.script_noteworthy ) && self.script_noteworthy == "leanrailguy" ) { self.allowdeath = 1; self.animname = "leanrailguy"; level.pre_ambush_scene_org thread maps\_anim::anim_loop_solo( self, "scnleanrailguy" ); } thread handle_tower_enemy_provoked_early(); } tower_tapglass_scene( var_0 ) { self endon( "death" ); self endon( "start_enemies_provoked_early" ); self.fixednode = 1; self.alertlevel = "noncombat"; self.allowdeath = 1; self.animname = "generic"; level.pre_ambush_scene_org maps\_anim::anim_single_solo( self, var_0 ); self setgoalpos( self.origin ); } handle_remaining_alert() { self.dropweapon = 0; var_0 = level.pre_ambush_scene_org; if ( isdefined( self.script_noteworthy ) && self.script_noteworthy == "spotlight_checkpoint_a" ) { thread kill_on_failsafe(); common_scripts\utility::flag_wait( "FLAG_the_last_guy" ); if ( isdefined( self ) && isalive( self ) ) { self.animname = "generic"; var_1 = self; self.allowdeath = 1; maps\_utility::gun_remove(); thread kill_crate_guy(); level.pre_ambush_scene_org thread maps\_anim::anim_single_solo( self, "spotlight_enemy_a" ); var_2 = maps\_utility::spawn_anim_model( "cp_ammo_jt", var_0.origin ); var_3 = maps\_utility::spawn_anim_model( "cp_ammo_mdl", var_0.origin ); var_3 linkto( var_2, "J_prop_1" ); var_4 = maps\_utility::spawn_anim_model( "cp_ammo_mdl", var_0.origin ); var_4 linkto( var_2, "J_prop_2" ); var_0 thread maps\_anim::anim_single_solo( var_2, "cp_ammo_joint" ); var_2 thread ammo_crate_failsafe( var_1, var_3, var_4 ); } } if ( isdefined( self.script_noteworthy ) && self.script_noteworthy == "spotlight_checkpoint_b" ) { thread kill_checkpointb_guy(); thread handle_spotlight_enemy_b(); thread kill_on_failsafe(); } if ( isdefined( self ) && isalive( self ) ) { self.alertlevel = "noncombat"; self.ignoreme = 1; self.ignoreall = 1; self.ignoreexplosionevents = 1; self.grenadeawareness = 0; self.badplaceawareness = 0; self.a.nodeath = 0; maps\_utility::set_allowdeath( 1 ); thread handle_remaining_enemy_provoked_early(); } } kill_crate_guy() { self waittill( "damage" ); if ( isdefined( self ) && isalive( self ) ) magicbullet( level.allies[2].weapon, level.allies[2] gettagorigin( "tag_flash" ), self gettagorigin( "j_head" ) ); if ( isdefined( self ) && isalive( self ) ) self kill(); } kill_checkpointb_guy() { self waittill( "damage" ); if ( isdefined( self ) && isalive( self ) ) magicbullet( level.allies[1].weapon, level.allies[1] gettagorigin( "tag_flash" ), self gettagorigin( "j_head" ) ); if ( isdefined( self ) && isalive( self ) ) self kill(); } kill_on_failsafe() { common_scripts\utility::flag_wait_any( "start_enemies_provoked_early", "checkpoint_player_picks_target" ); wait( randomintrange( 1, 2 ) ); if ( isdefined( self ) && isalive( self ) ) magicbullet( level.allies[2].weapon, level.allies[2] gettagorigin( "tag_flash" ), self gettagorigin( "j_head" ) ); wait 1; if ( isdefined( self ) && isalive( self ) ) self kill(); } ammo_crate_failsafe( var_0, var_1, var_2 ) { common_scripts\utility::flag_wait( "drop_ammo_crates" ); maps\_utility::anim_stopanimscripted(); var_0 maps\_utility::anim_stopanimscripted(); var_3 = randomfloatrange( 10, 100 ); var_4 = vectornormalize( var_1.origin - 1 - var_1.origin ); var_1 unlink(); var_1 physicslaunchclient( var_1.origin, var_4 * var_3 ); var_5 = vectornormalize( var_2.origin - 1 - var_2.origin ); var_2 unlink(); var_2 physicslaunchclient( var_2.origin, var_5 * var_3 ); } handle_spotlight_enemy_b() { self endon( "death" ); var_0 = level.pre_ambush_scene_org; self.animname = "generic"; var_0 thread maps\_anim::anim_loop_solo( self, "spotlight_enemy_b_loop", "stop_spotlight_enemy_b_loop" ); var_1 = maps\_utility::spawn_anim_model( "cp_light_jt", var_0.origin ); var_2 = maps\_utility::spawn_anim_model( "cp_light_mdl", var_0.origin ); var_2 linkto( var_1, "J_prop_2" ); var_0 thread maps\_anim::anim_first_frame_solo( var_1, "cp_light_joint" ); common_scripts\utility::flag_wait( "start_spotlight_b" ); var_0 notify( "stop_spotlight_enemy_b_loop" ); var_3 = getent( "clip_checkpoint_searchlight", "targetname" ); var_3 linkto( var_2 ); if ( isdefined( self ) && isalive( self ) ) { var_0 thread maps\_anim::anim_single_solo( self, "spotlight_enemy_b" ); thread stop_spotlight_provoked( self, var_0, var_1, "cp_light_joint" ); thread stop_spotlight_killed( self, var_0, var_1, "cp_light_joint" ); var_0 maps\_anim::anim_single_solo( var_1, "cp_light_joint" ); var_0 notify( "spotlight_move_done" ); } } stop_spotlight_provoked( var_0, var_1, var_2, var_3 ) { var_1 endon( "spotlight_move_done" ); common_scripts\utility::flag_wait( "start_enemies_provoked_early" ); var_1 maps\_anim::anim_set_rate_single( var_2, var_3, 0 ); var_1 notify( "spotlight_move_done" ); } stop_spotlight_killed( var_0, var_1, var_2, var_3 ) { var_1 endon( "spotlight_move_done" ); var_0 waittill( "damage" ); var_1 maps\_anim::anim_set_rate_single( var_2, var_3, 0 ); var_1 notify( "spotlight_move_done" ); } alert_enemies() { self endon( "death" ); maps\_utility::clear_run_anim(); self.animname = "generic"; var_0 = level.ambush_recover_anim[randomint( level.ambush_recover_anim.size )]; if ( isdefined( self.script_noteworthy ) && self.script_noteworthy == "checkpoint_patrollers" ) { maps\_utility::cqb_walk( "on" ); self waittill( "goal" ); thread maps\_anim::anim_single_solo( self, var_0 ); maps\_utility::set_allowdeath( 1 ); self waittillmatch( "anim single", "end" ); thread maps\_anim::anim_loop_solo( self, "nvg_recover_anim1" ); } else { maps\_utility::set_allowdeath( 1 ); self waittillmatch( "anim single", "end" ); thread maps\_anim::anim_loop_solo( self, "nvg_recover_anim1" ); } wait 2; self.baseaccuracy = 1; self.ignoreall = 0; self.ignoreme = 0; self.grenadeawareness = 0; maps\_utility::set_moveplaybackrate( 1 ); level.player maps\_utility::set_ignoreme( 0 ); self.ignoreall = 0; self.disablearrivals = 0; self.disableexits = 0; } alert_enemies_early() { self endon( "death" ); maps\_utility::anim_stopanimscripted(); wait( randomfloatrange( 1.5, 2.5 ) ); self.baseaccuracy = 1; self.ignoreall = 0; self.ignoreme = 0; self.grenadeawareness = 0; maps\_utility::set_moveplaybackrate( 1 ); foreach ( var_1 in level.allies ) { var_1.ignoreall = 0; var_1.ignoreme = 0; var_1.accuracy = 0.8; } wait 3; level.player maps\_utility::set_ignoreme( 0 ); } handle_tower_enemy_provoked_early() { level endon( "player_shot_target_on_tower" ); level endon( "allies_shot_targets_tower" ); level endon( "disable_combat_failsafe" ); self addaieventlistener( "grenade danger" ); self addaieventlistener( "projectile_impact" ); self addaieventlistener( "bulletwhizby" ); self addaieventlistener( "gunshot" ); self addaieventlistener( "explode" ); common_scripts\utility::waittill_any( "ai_event", "flashbang" ); wait 0.25; common_scripts\utility::flag_set( "start_enemies_provoked_early" ); self stopanimscripted(); self.ignoreall = 0; self.ignoreme = 0; self.fixednode = 0; maps\_utility::gun_recall(); } someone_please_kill_me_now() { level endon( "player_shot_target_on_tower" ); level endon( "allies_shot_targets_tower" ); level endon( "disable_combat_failsafe" ); self waittill( "damage" ); common_scripts\utility::flag_set( "start_enemies_provoked_early" ); } handle_remaining_enemy_provoked_early() { self endon( "damage" ); level endon( "player_shot_target_on_tower" ); level endon( "allies_shot_targets_tower" ); level endon( "disable_combat_failsafe" ); self addaieventlistener( "grenade danger" ); self addaieventlistener( "projectile_impact" ); self addaieventlistener( "bulletwhizby" ); self addaieventlistener( "gunshot" ); self addaieventlistener( "explode" ); thread someone_please_kill_me_now(); common_scripts\utility::waittill_any( "ai_event", "flashbang", "death", "going_in_hot" ); common_scripts\utility::flag_set( "start_enemies_provoked_early" ); maps\_utility::anim_stopanimscripted(); self.ignoreall = 0; self.ignoreme = 0; } spawn_convoy() { common_scripts\utility::flag_wait( "start_intro_convoy" ); thread maps\clockwork_audio::jeeps_by(); var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "convoyjeep1" ); var_0 maps\_vehicle::vehicle_lights_on( "headlights" ); wait 2; var_1 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "convoyjeep2" ); var_1 maps\_vehicle::vehicle_lights_on( "headlights" ); var_2 = []; var_2[0] = var_0; var_2[1] = var_1; var_0 thread damage_watcher_intro(); var_0 thread destroy_player_intro(); var_1 thread damage_watcher_intro(); var_1 thread destroy_player_intro(); } prepare_ambush() { common_scripts\utility::flag_wait_all( "checkpoint_taken2", "keegan_delay_flag_hack" ); foreach ( var_1 in level.allies ) { var_1.ignoreall = 1; var_1.ignoreme = 1; var_1 maps\_utility::disable_cqbwalk(); } level.player.ignoreme = 1; thread obj_bodydrag(); thread obj_getinjeep(); thread start_ambush_scene(); level.allies[0].animname = "baker"; level.allies[1].animname = "keegan"; level.allies[2].animname = "cipher"; maps\clockwork_code::init_animated_dufflebags_candk(); var_3 = []; var_3[0] = level.allies[1]; var_3[1] = level.allies[2]; var_4 = []; var_4[0] = level.bags[1]; var_4[1] = level.bags[2]; thread allies_reach_and_start_scene( level.pre_ambush_scene_org, var_3, "clock_intro", var_4, level.intro_keegandrag_guy, undefined ); } handle_baker_ambush_anims( var_0, var_1, var_2, var_3, var_4, var_5 ) { level endon( "ambush_player_shot" ); level endon( "ambush_player_kill" ); level endon( "ambush_keegan_kill" ); level endon( "player_knifes_driver" ); var_1 maps\_utility::disable_ai_color(); var_0 maps\_anim::anim_reach_solo( var_1, var_2 ); thread player_stab_driver(); thread maps\clockwork_audio::baker_drag_body1(); var_6 = []; var_6[0] = var_1; var_6[1] = var_3; var_6[0].animname = "baker"; var_6[1].animname = "baker_bag"; if ( isdefined( var_4 ) ) var_6 = common_scripts\utility::add_to_array( var_6, var_4 ); var_1 maps\clockwork_code::hide_dufflebag(); var_0 maps\_anim::anim_single( var_6, "clock_intro" ); if ( var_4 == level.intro_balcony_guy ) level.intro_balcony_guy thread kill_guy_at_end_of_anim(); if ( isdefined( var_5 ) ) common_scripts\utility::flag_set( var_5 ); var_0 thread maps\_anim::anim_loop_solo( var_1, "clock_ambush_hut_wait", "stop_clock_ambush_hut_wait" ); common_scripts\utility::flag_wait( "FLAG_baker_out_of_hut" ); var_0 notify( "stop_clock_ambush_hut_wait" ); var_1 maps\_utility::anim_stopanimscripted(); var_0 maps\_anim::anim_single_solo( var_6[0], "clock_ambush_hut_walkout" ); } allies_reach_and_start_scene( var_0, var_1, var_2, var_3, var_4, var_5 ) { var_1[0] thread goto_anim_start_spot( var_2, var_0 ); common_scripts\utility::flag_wait_all( "k_reached_ambush_anim", "c_reached_ambush_anim" ); thread failsafe_c_k_bags( var_3 ); var_6 = []; var_6 = common_scripts\utility::array_combine( var_1, var_3 ); if ( isdefined( var_4 ) ) { var_4.animname = "keegandrag"; var_6 = common_scripts\utility::add_to_array( var_6, var_4 ); } var_0 thread maps\_anim::anim_single( var_6, "clock_intro" ); thread maps\clockwork_audio::foley_pre_ambush(); wait 0.05; foreach ( var_8 in var_1 ) var_8 maps\clockwork_code::hide_dufflebag(); level.intro_keegandrag_guy thread kill_guy_at_end_of_anim(); foreach ( var_11 in var_1 ) var_11 thread waittill_end_of_anim_for_loop( var_0, "clock_ambush_wait", "stop_clock_ambush_wait" ); } goto_anim_start_spot( var_0, var_1 ) { var_1 maps\_anim::anim_reach_solo( self, var_0 ); if ( self.animname == "keegan" ) { level notify( "k_reached_ambush_anim" ); common_scripts\utility::flag_set( "k_reached_ambush_anim" ); } if ( self.animname == "cipher" ) { level notify( "c_reached_ambush_anim" ); common_scripts\utility::flag_set( "c_reached_ambush_anim" ); } } failsafe_c_k_bags( var_0 ) { common_scripts\utility::flag_wait( "destroy_player_ambush" ); foreach ( var_2 in var_0 ) { var_2 maps\_utility::anim_stopanimscripted(); var_2 hide(); var_3 = maps\_utility::spawn_anim_model( "keegan_bag", var_2.origin ); var_3.animname = "keegan_bag"; var_3.origin = var_2.origin; var_4 = randomfloatrange( 10, 20 ); var_5 = ( 0, 0, -1 ); wait 0.05; var_3 physicslaunchclient( var_3.origin, var_5 * var_4 ); } } waittill_end_of_anim_for_loop( var_0, var_1, var_2 ) { level endon( "player_knifes_driver" ); level endon( "destroy_player_ambush" ); level endon( "ambush_player_shot" ); level endon( "ambush_player_kill" ); level endon( "ambush_keegan_kill" ); level endon( "ambush_scene_start" ); self waittillmatch( "single anim", "end" ); var_0 maps\_anim::anim_loop_solo( self, var_1, var_2 ); } kill_guy_at_end_of_anim() { self waittillmatch( "single anim", "end" ); guy_silent_death(); } obj_enterbase() { common_scripts\utility::flag_wait( "FLAG_obj_enterbase" ); var_0 = maps\_utility::obj( "enterbase" ); objective_add( var_0, "active", &"CLOCKWORK_OBJ_INTO_BASE" ); objective_current( var_0 ); common_scripts\utility::flag_wait( "FLAG_obj_enterbase_complete" ); maps\_utility::objective_complete( var_0 ); } obj_bodydrag() { common_scripts\utility::flag_wait( "FLAG_obj_bodydrag" ); var_0 = maps\_utility::obj( "CleanupCheckpoint" ); var_1 = getent( "obj_dragbody", "targetname" ); objective_add( var_0, "active", &"CLOCKWORK_OBJ_CHECKPOINT" ); objective_current( var_0 ); objective_position( var_0, var_1.origin ); common_scripts\utility::flag_wait( "FLAG_obj_bodydrag_complete" ); if ( !common_scripts\utility::flag( "destroy_player_ambush" ) ) maps\_utility::objective_complete( var_0 ); } obj_getinjeep() { common_scripts\utility::flag_wait( "FLAG_enable_enter_jeep" ); wait 2; maps\_utility::enable_trigger_with_targetname( "trig_get_in_jeep" ); level notify( "enable_look_jeep_door_trigger" ); level.gold_jeep_player_door = spawn( "script_model", level.jeep.origin ); level.gold_jeep_player_door setmodel( "chinese_brave_warrior_obj_door_back_LE" ); level.gold_jeep_player_door.angles = level.jeep.angles; level.gold_jeep_player_door linkto( level.jeep ); common_scripts\utility::flag_wait( "FLAG_obj_getinjeep_complete" ); } obj_stabdriver() { var_0 = maps\_utility::obj( "stab" ); var_1 = getent( "obj_stabdriver", "targetname" ); objective_add( var_0, "current", &"CLOCKWORK_OBJ_DRIVER" ); objective_current( var_0 ); thread complete_stabdriver( var_0 ); wait 1.75; objective_position( var_0, var_1.origin ); } complete_stabdriver( var_0 ) { level common_scripts\utility::waittill_any( "ambush_player_shot", "ambush_player_kill", "ambush_keegan_kill", "player_knifes_driver", "ambush_scene_start" ); maps\_utility::objective_complete( var_0 ); } spawn_ambush_vehicles() { common_scripts\utility::flag_wait( "FLAG_baker_bodydrag_complete" ); level.save_aianims = level.vehicle_aianims["script_vehicle_warrior"]; level.vehicle_aianims["script_vehicle_warrior"][0].death = undefined; level.jeep = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "intro_jeep" ); level.jeep hidepart( "back_door_left_jnt" ); wait 0.25; level.player_door = maps\_utility::spawn_anim_model( "jeep_left_door" ); level.player_door linkto( level.jeep, "body_animate_jnt", ( 0, 0, 0 ), ( 0, 0, 0 ) ); level.jeep2 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "intro_jeep2" ); level.jeep maps\_vehicle::vehicle_lights_on( "headlights" ); level.jeep2 maps\_vehicle::vehicle_lights_on( "headlights" ); level.jeep maps\_vehicle::godon(); level.jeep2 maps\_vehicle::godon(); spawn_jeep_riders(); spawn_jeep2_riders(); thread maps\clockwork_audio::vehicles_approaching(); wait 2; level.btr_ambush = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "intro_btr_ambush" ); level.btr_ambush maps\_vehicle::vehicle_lights_on( "running" ); level.btr_ambush maps\_vehicle::godon(); level.btr_ambush maps\_vehicle_code::_mgoff(); level.btr_ambush thread btr_look_logic(); var_0 = []; var_0[0] = level.jeep; var_0[1] = level.btr_ambush; var_0[2] = level.jeep2; thread notify_ambush_destroy_player_off(); common_scripts\utility::array_thread( level.ambush_enemies, ::damage_watcher_ambush, "ambush_destroy_player_off" ); common_scripts\utility::array_thread( var_0, ::damage_watcher_ambush, "ambush_destroy_player_off" ); common_scripts\utility::array_thread( var_0, ::destroy_player_ambush ); thread fail_mission_ambush(); thread bullet_watcher_ambush_failsafe(); thread destroy_player_ambush_vo(); thread handle_grenade_thrown_failcase(); } ambush_jeep2_guy_wave( var_0 ) { level endon( "destroy_player_ambush" ); common_scripts\utility::flag_wait( "FLAG_baker_out_of_hut" ); var_0 maps\_anim::anim_single_solo( self, "ambush_jeep2_passenger_wave", "tag_passenger" ); } guy_silent_death( var_0 ) { if ( isdefined( var_0 ) ) wait( var_0 ); if ( isdefined( self.magic_bullet_shield ) && self.magic_bullet_shield ) maps\_utility::stop_magic_bullet_shield(); self.a.nodeath = 1; maps\_utility::set_allowdeath( 1 ); maps\_utility::die(); } swap_head( var_0 ) { wait 2; self detach( self.headmodel, "" ); self attach( var_0, "", 1 ); self.headmodel = var_0; } spawn_jeep_riders() { level.jeep.dontunloadonend = 1; level.ambush_jeep_driver = getent( "ambush_jeep_driver", "targetname" ) maps\_utility::spawn_ai( 1 ); level.ambush_jeep_driver maps\_utility::magic_bullet_shield(); level.ambush_jeep_driver maps\_utility::gun_remove(); level.ambush_jeep_driver.animname = "ambush_jeep_driver"; level.ambush_jeep_driver.script_startingposition = 0; level.jeep thread maps\_vehicle_aianim::guy_enter( level.ambush_jeep_driver ); level.ambush_jeep_driver thread swap_head( "head_fed_army_c_arctic" ); level.ambush_jeep_passenger = getent( "ambush_jeep_passenger", "targetname" ) maps\_utility::spawn_ai( 1 ); level.ambush_jeep_passenger maps\_utility::magic_bullet_shield(); level.ambush_jeep_passenger maps\_utility::gun_remove(); level.ambush_jeep_passenger.animname = "ambush_jeep_passenger"; level.ambush_jeep_passenger.script_startingposition = 1; level.jeep thread maps\_vehicle_aianim::guy_enter( level.ambush_jeep_passenger ); level.ambush_jeep_passenger thread swap_head( "head_fed_army_a_arctic" ); level.ambush_enemies = []; level.ambush_enemies[0] = level.ambush_jeep_driver; level.ambush_enemies[1] = level.ambush_jeep_passenger; } spawn_jeep2_riders() { level.jeep2.dontunloadonend = 1; level.ambush_jeep2_driver = getent( "ambush_jeep2_driver", "targetname" ) maps\_utility::spawn_ai( 1 ); level.ambush_jeep2_driver maps\_utility::gun_remove(); level.ambush_jeep2_driver.animname = "ambush_jeep2_driver"; level.ambush_jeep2_driver.script_startingposition = 0; level.jeep2 thread maps\_vehicle_aianim::guy_enter( level.ambush_jeep2_driver ); level.ambush_jeep2_passenger = getent( "ambush_jeep2_passenger", "targetname" ) maps\_utility::spawn_ai( 1 ); level.ambush_jeep2_passenger maps\_utility::gun_remove(); level.ambush_jeep2_passenger.animname = "ambush_jeep2_passenger"; level.ambush_jeep2_passenger.script_startingposition = 1; level.jeep2 thread maps\_vehicle_aianim::guy_enter( level.ambush_jeep2_passenger ); level.ambush_jeep2_backr = getent( "ambush_jeep2_backR", "targetname" ) maps\_utility::spawn_ai( 1 ); level.ambush_jeep2_backr maps\_utility::gun_remove(); level.ambush_jeep2_backr.animname = "ambush_jeep2_backR"; level.ambush_jeep2_backr.script_startingposition = 3; level.jeep2 thread maps\_vehicle_aianim::guy_enter( level.ambush_jeep2_backr ); } handle_player_bodydrag_death() { var_0 = level.pre_ambush_scene_org; var_1 = getent( "intro_bodydrag_enemy", "targetname" ); level.intro_bodydrag_guy = var_1 maps\_utility::spawn_ai( 1 ); level.intro_bodydrag_guy.animname = "playerdrag"; level.intro_bodydrag_guy.allowdeath = 1; level.intro_bodydrag_guy.nodrop = 1; var_2 = maps\_utility::spawn_anim_model( "cp_key_jt", var_0.origin ); var_3 = maps\_utility::spawn_anim_model( "cp_key_mdl", var_0.origin ); var_3 linkto( var_2, "J_prop_1" ); var_2 thread key_failsafe( var_3 ); var_0 thread maps\_anim::anim_single_solo( var_2, "cp_key_joint" ); level.pre_ambush_scene_org thread maps\_anim::anim_single_solo( level.intro_bodydrag_guy, "keytoss_enemy_b" ); level.intro_bodydrag_guy thread player_bodydrag_damage_watcher(); level.intro_bodydrag_guy.dontmelee = 1; level.special_death_guys[1] = level.intro_bodydrag_guy; level.special_death_guys[1].special_case = 1; level common_scripts\utility::waittill_any( "player_shot_someone_in_remaining", "going_in_hot" ); if ( isdefined( level.intro_bodydrag_guy ) && isalive( level.intro_bodydrag_guy ) ) { level.intro_bodydrag_guy.ignoreall = 0; level.intro_bodydrag_guy.ignoreme = 0; } wait 3; if ( isdefined( level.intro_bodydrag_guy ) && isalive( level.intro_bodydrag_guy ) ) magicbullet( level.allies[2].weapon, level.allies[2] gettagorigin( "tag_flash" ), level.intro_bodydrag_guy gettagorigin( "j_head" ) ); } key_failsafe( var_0 ) { common_scripts\utility::flag_wait_any( "start_enemies_provoked_early", "bodydrag1_fakedead", "bodydrag2_fakedead" ); maps\_utility::anim_stopanimscripted(); var_1 = randomfloatrange( 10, 100 ); var_2 = vectornormalize( var_0.origin - 1 - var_0.origin ); var_0 unlink(); var_0 physicslaunchclient( var_0.origin, var_2 * var_1 ); var_0 delete(); } player_bodydrag_damage_watcher() { self.health = 999; self.delete_on_death = 0; self.dontdonotetracks = 1; self.allowdeath = 0; self.allowpain = 0; self.no_pain_sound = 1; self.diequietly = 1; self.a.nodeath = 1; self.noragdoll = 1; self.nocorpsedelete = 1; self.no_dog_target = 1; self waittill( "damage" ); if ( !common_scripts\utility::flag( "FLAG_take_the_rest" ) ) common_scripts\utility::flag_set( "start_enemies_provoked_early" ); thread handle_backpack_objective(); self.dontevershoot = 1; self.ignoreme = 1; self setcontents( 0 ); maps\_utility::gun_remove(); self.fake_dead = 1; common_scripts\utility::flag_set( "bodydrag1_fakedead" ); self.animname = "playerdrag"; level.pre_ambush_scene_org maps\_anim::anim_single_solo( self, "clock_bodydrag_death" ); self.team = "neutral"; level.pre_ambush_scene_org maps\_anim::anim_first_frame_solo( self, "clock_bodydrag_drag" ); thread player_body_drag(); } handle_backpack_objective() { var_0 = maps\_utility::spawn_anim_model( "backpack" ); var_0 hide(); level.pre_ambush_scene_org maps\_anim::anim_first_frame_solo( var_0, "clock_bodydrag_drag" ); common_scripts\utility::flag_wait( "FLAG_obj_bodydrag" ); var_0 show(); level waittill( "player_triggered_body_drag" ); var_0 delete(); } handle_keegandrag_death() { var_0 = getent( "intro_bodydrag2_enemy", "targetname" ); level.intro_keegandrag_guy = var_0 maps\_utility::spawn_ai( 1 ); level.intro_keegandrag_guy.animname = "keegandrag"; level.intro_keegandrag_guy.allowdeath = 1; level.intro_keegandrag_guy.nodrop = 1; level.pre_ambush_scene_org thread maps\_anim::anim_single_solo( level.intro_keegandrag_guy, "keytoss_enemy_a" ); level.intro_keegandrag_guy thread keegandrag_death_damage_watcher(); level.intro_keegandrag_guy.dontmelee = 1; level.special_death_guys[2] = level.intro_keegandrag_guy; level.special_death_guys[2].special_case = 1; level common_scripts\utility::waittill_any( "player_shot_someone_in_remaining", "going_in_hot" ); if ( isdefined( level.intro_keegandrag_guy ) && isalive( level.intro_keegandrag_guy ) ) { level.intro_keegandrag_guy.ignoreall = 0; level.intro_keegandrag_guy.ignoreme = 0; } wait 2; if ( isdefined( level.intro_keegandrag_guy ) && isalive( level.intro_keegandrag_guy ) ) magicbullet( level.allies[1].weapon, level.allies[1] gettagorigin( "tag_flash" ), level.intro_keegandrag_guy gettagorigin( "j_head" ) ); thread keegan_body_door_close(); } keegan_body_door_close() { common_scripts\utility::flag_wait( "FLAG_keegan_drag_door" ); var_0 = getent( "keegan_body_door_close", "targetname" ); var_0 rotateyaw( -50, 2.5 ); } keegandrag_death_damage_watcher() { self.health = 999; self.delete_on_death = 0; self.dontdonotetracks = 1; self.allowdeath = 0; self.allowpain = 0; self.no_pain_sound = 1; self.diequietly = 1; self.a.nodeath = 1; self.noragdoll = 1; self.nocorpsedelete = 1; self.grenadeawareness = 0; self.no_dog_target = 1; self waittill( "damage" ); if ( !common_scripts\utility::flag( "FLAG_take_the_rest" ) ) common_scripts\utility::flag_set( "start_enemies_provoked_early" ); self.dontevershoot = 1; self.ignoreme = 1; self setcontents( 0 ); maps\_utility::gun_remove(); self.fake_dead = 1; self.no_dog_target = 1; common_scripts\utility::flag_set( "bodydrag2_fakedead" ); self.animname = "keegandrag"; level.pre_ambush_scene_org maps\_anim::anim_single_solo( self, "clock_intro_death_guard2" ); level.pre_ambush_scene_org maps\_anim::anim_first_frame_solo( self, "clock_intro" ); } setup_bodydrag_startpoint() { thread handle_backpack_objective(); var_0 = getent( "intro_bodydrag_enemy", "targetname" ); level.intro_bodydrag_guy = var_0 maps\_utility::spawn_ai( 1 ); level.intro_bodydrag_guy.animname = "playerdrag"; level.intro_bodydrag_guy.dontmelee = 1; level.intro_bodydrag_guy.ignoreme = 1; level.intro_bodydrag_guy.ignoreall = 1; level.intro_bodydrag_guy setcontents( 0 ); level.intro_bodydrag_guy maps\_utility::gun_remove(); level.pre_ambush_scene_org maps\_anim::anim_first_frame_solo( level.intro_bodydrag_guy, "clock_bodydrag_drag" ); thread player_body_drag(); var_0 = getent( "intro_bodydrag2_enemy", "targetname" ); level.intro_keegandrag_guy = var_0 maps\_utility::spawn_ai( 1 ); level.intro_keegandrag_guy.animname = "keegandrag"; level.intro_keegandrag_guy.dontmelee = 1; level.intro_keegandrag_guy.ignoreme = 1; level.intro_keegandrag_guy.ignoreall = 1; level.intro_keegandrag_guy setcontents( 0 ); level.intro_keegandrag_guy maps\_utility::gun_remove(); level.pre_ambush_scene_org maps\_anim::anim_first_frame_solo( level.intro_keegandrag_guy, "clock_intro" ); var_0 = getent( "balcony_death_guy", "targetname" ); level.intro_balcony_guy = var_0 maps\_utility::spawn_ai( 1 ); level.intro_balcony_guy.animname = "bakerdrag"; level.intro_balcony_guy.dontmelee = 1; level.intro_balcony_guy.ignoreall = 1; level.intro_balcony_guy.ignoreme = 1; level.intro_balcony_guy setcontents( 0 ); level.intro_balcony_guy.nodrop = 1; level.pre_ambush_scene_org maps\_anim::anim_first_frame_solo( level.intro_balcony_guy, "clock_intro" ); } player_body_drag() { common_scripts\utility::flag_wait( "FLAG_obj_bodydrag" ); thread btr_sees_body(); var_0 = getent( "trig_intro_bodydrag_scene", "targetname" ); var_0 sethintstring( &"CLOCKWORK_HINT_DRAG" ); var_1 = common_scripts\utility::getstruct( "body_drag_look_at", "targetname" ); maps\player_scripted_anim_util::waittill_trigger_activate_looking_at( var_0, var_1, undefined, undefined, 1 ); common_scripts\utility::flag_set( "FLAG_obj_bodydrag_complete" ); level notify( "player_triggered_body_drag" ); level.drag_player_arms = maps\_utility::spawn_anim_model( "player_rig" ); level.drag_player_arms hide(); var_2 = []; var_2[0] = level.drag_player_arms; var_2[1] = level.intro_bodydrag_guy; level.pre_ambush_scene_org maps\_anim::anim_first_frame( var_2, "clock_bodydrag_drag" ); level.player freezecontrols( 1 ); level.player allowcrouch( 0 ); level.player allowprone( 0 ); level.player disableweapons(); if ( level.player getstance() != "stand" ) { level.player setstance( "stand" ); wait 0.8; } level.player playerlinktoblend( level.drag_player_arms, "tag_player", 0.6 ); wait 0.6; thread maps\clockwork_audio::player_drag_body(); level.intro_bodydrag_guy.a.nodeath = 1; level.intro_bodydrag_guy maps\_utility::set_allowdeath( 1 ); level.drag_player_arms show(); level.pre_ambush_scene_org thread maps\_anim::anim_single( var_2, "clock_bodydrag_drag" ); level.player disableweapons(); thread maps\clockwork_code::hold_fire_unless_ads( "ambush_scene_stab" ); level.intro_bodydrag_guy waittillmatch( "single anim", "end" ); common_scripts\utility::waitframe(); level.player unlink(); level.drag_player_arms delete(); level.player enableweapons(); level.player enableoffhandweapons(); level.player allowcrouch( 1 ); level.player allowprone( 1 ); level.player freezecontrols( 0 ); level.intro_bodydrag_guy guy_silent_death(); level notify( "player_hid_barrier_body" ); } btr_sees_body() { level endon( "player_hid_barrier_body" ); common_scripts\utility::flag_wait( "btr_sees_playerdrag_body" ); common_scripts\utility::flag_set( "destroy_player_ambush" ); } player_stab_driver() { level endon( "destroy_player_ambush" ); level endon( "ambush_scene_start" ); level endon( "ambush_player_kill" ); common_scripts\utility::flag_wait( "enable_stab" ); thread obj_stabdriver(); level notify( "enable_stab" ); level.jeep maps\_vehicle::vehicle_stop_named( "jeep_ambush_stop", 1, 1 ); wait 0.5; level endon( "ambush_player_shot" ); level endon( "ambush_player_kill" ); level endon( "ambush_keegan_kill" ); level.cosine["25"] = cos( 25 ); var_0 = maps\_utility::spawn_anim_model( "player_rig", level.pre_ambush_scene_org.origin ); var_0 attach( "viewmodel_commando_knife", "TAG_WEAPON_RIGHT" ); var_0 hide(); level.pre_ambush_scene_org thread maps\_anim::anim_first_frame_solo( var_0, "clock_ambush_end_knife" ); thread stab_enemy_hint(); thread player_looking_at_stabguy(); thread waittill_scene_over_enable_weapons(); waittill_player_triggers_stealth_kill(); level notify( "pre_player_knifes_driver" ); level.player setstance( "stand" ); level.player disableweapons(); level.player playerlinktoblend( var_0, "tag_player", 0.15 ); wait 0.15; for (;;) { if ( level.player ismeleeing() ) { wait 1; break; } if ( level.player isthrowinggrenade() ) break; break; } level notify( "player_knifes_driver" ); common_scripts\utility::flag_set( "ambush_scene_stab" ); level.player notify( "player_cancel_hold_fire" ); var_0 show(); wait 0.15; level.pre_ambush_scene_org notify( "stop_clock_ambush_wait" ); var_1 = []; var_1[0] = var_0; var_1[1] = level.ambush_jeep_driver; var_1[1] unlink(); level.pre_ambush_scene_org thread maps\_anim::anim_single( var_1, "clock_ambush_end_knife" ); var_1[1] playsound( "enemy_jeep_death" ); level.ambush_jeep_driver thread maps\clockwork_fx::handle_stab_fx(); level.ambush_jeep_driver thread waittill_clockambush_end_enemies(); level.ambush_jeep_driver thread waittill_clockambush_driver_dead(); level.player playerlinktoabsolute( var_0, "tag_player" ); var_0 waittillmatch( "single anim", "end" ); level.player unlink(); var_0 delete(); level notify( "ambush_scene_over" ); } waittill_scene_over_enable_weapons() { var_0 = level common_scripts\utility::waittill_any_return( "ambush_player_shot", "ambush_player_kill", "ambush_keegan_kill", "player_knifes_driver", "ambush_scene_start" ); if ( var_0 == "player_knifes_driver" ) level waittill( "ambush_scene_over" ); level.player enableweapons(); level.player allowmelee( 1 ); } player_looking_at_stabguy() { level endon( "player_knifes_driver" ); level endon( "pre_player_knifes_driver" ); level endon( "ambush_player_shot" ); level endon( "ambush_player_kill" ); level endon( "ambush_keegan_kill" ); thread handle_weapon_melee_toggle(); var_0 = undefined; var_1 = getent( "trig_player_stab", "script_noteworthy" ); var_2 = getent( var_1.target, "targetname" ); for (;;) { wait 0.05; if ( common_scripts\utility::flag( "player_near_stab_guy" ) ) { var_0 = common_scripts\utility::within_fov( level.player geteye(), level.player getplayerangles(), var_2.origin, level.cosine["25"] ); if ( var_0 ) common_scripts\utility::flag_set( "player_looking_at_stab_guy" ); else common_scripts\utility::flag_clear( "player_looking_at_stab_guy" ); continue; } common_scripts\utility::flag_clear( "player_looking_at_stab_guy" ); } } handle_weapon_melee_toggle() { level endon( "player_knifes_driver" ); level endon( "pre_player_knifes_driver" ); level endon( "ambush_player_shot" ); level endon( "ambush_player_kill" ); level endon( "ambush_keegan_kill" ); level endon( "ambush_scene_timeout" ); level endon( "ambush_scene_over" ); for (;;) { wait 0.05; if ( common_scripts\utility::flag( "player_near_stab_guy" ) ) { level.player disableweapons(); level.player allowmelee( 0 ); } if ( !common_scripts\utility::flag( "player_near_stab_guy" ) ) { level.player enableweapons(); level.player allowmelee( 1 ); } } } stab_enemy_hint() { level endon( "player_knifes_driver" ); level endon( "pre_player_knifes_driver" ); level endon( "ambush_player_shot" ); level endon( "ambush_player_kill" ); level endon( "ambush_keegan_kill" ); level endon( "ambush_player_timeout" ); var_0 = &"CLOCKWORK_PROMPT_STAB"; thread stab_enemy_hint_cleanup(); while ( !common_scripts\utility::flag( "ambush_scene_stab" ) ) { common_scripts\utility::flag_wait( "player_looking_at_stab_guy" ); thread maps\_utility::hint( var_0 ); common_scripts\utility::flag_set( "player_in_position_for_stab_kill" ); while ( common_scripts\utility::flag( "player_looking_at_stab_guy" ) ) wait 0.05; common_scripts\utility::flag_clear( "player_in_position_for_stab_kill" ); thread maps\_utility::hint_fade(); } thread maps\_utility::hint_fade(); } stab_enemy_hint_cleanup() { common_scripts\utility::flag_wait_any( "ambush_scene_stab", "ambush_scene_shot", "ambush_scene_timeout" ); thread maps\_utility::hint_fade(); } waittill_player_triggers_stealth_kill() { while ( !common_scripts\utility::flag( "ambush_scene_stab" ) ) { wait 0.05; if ( common_scripts\utility::flag( "player_looking_at_stab_guy" ) && level.player meleebuttonpressed() ) break; } } handle_balcony_death() { var_0 = getent( "balcony_death_guy", "targetname" ); level.intro_balcony_guy = var_0 maps\_utility::spawn_ai( 1 ); level.intro_balcony_guy.animname = "bakerdrag"; level.intro_balcony_guy.nodrop = 1; level.special_death_guys[0] = level.intro_balcony_guy; level.special_death_guys[0].special_case = 1; level.intro_balcony_guy thread balcony_death_damage_watcher(); level.intro_balcony_guy.dontmelee = 1; level common_scripts\utility::waittill_any( "player_shot_someone_in_remaining" ); level.intro_balcony_guy.ignoreall = 0; wait 4; if ( isdefined( level.intro_balcony_guy ) && isalive( level.intro_balcony_guy ) ) magicbullet( level.allies[0].weapon, level.allies[0] gettagorigin( "tag_flash" ), level.intro_balcony_guy gettagorigin( "j_head" ) ); } balcony_death_damage_watcher() { self.health = 999; self.delete_on_death = 0; self.dontdonotetracks = 1; self.allowdeath = 0; self.allowpain = 0; self.no_pain_sound = 1; self.diequietly = 1; self.a.nodeath = 1; self.noragdoll = 1; self.nocorpsedelete = 1; self.no_dog_target = 1; self waittill( "damage" ); if ( !common_scripts\utility::flag( "FLAG_take_the_rest" ) ) common_scripts\utility::flag_set( "start_enemies_provoked_early" ); self.dontevershoot = 1; self.ignoreme = 1; self.ignoreall = 1; self setcontents( 0 ); self.fake_dead = 1; common_scripts\utility::flag_set( "bodydrag3_fakedead" ); self.animname = "bakerdrag"; level.pre_ambush_scene_org maps\_anim::anim_single_solo( self, "clock_intro_guy_death" ); level.pre_ambush_scene_org maps\_anim::anim_first_frame_solo( self, "clock_intro" ); } start_ambush_scene() { level endon( "destroy_player_ambush" ); common_scripts\utility::flag_wait( "FLAG_baker_out_of_hut" ); if ( !common_scripts\utility::flag( "destroy_player_ambush" ) ) { thread animate_ambush_scene_enemies(); level.allies[0].script_startingposition = 1; level.allies[1].script_startingposition = 0; level.allies[2].script_startingposition = 3; level.allies[0].animname = "baker"; level.allies[1].animname = "keegan"; level.allies[2].animname = "cipher"; level waittill( "enable_stab" ); foreach ( var_1 in level.ambush_enemies ) var_1 thread ambush_notify_on_player_kill(); thread ambush_notify_on_player_shot(); level common_scripts\utility::waittill_any( "ambush_player_shot", "ambush_player_kill", "ambush_keegan_kill", "player_knifes_driver", "ambush_scene_start" ); common_scripts\utility::flag_set( "ambush_scene_started" ); level.pre_ambush_scene_org notify( "stop_clock_ambush_wait" ); if ( !common_scripts\utility::flag( "destroy_player_ambush" ) ) { thread maps\clockwork_audio::foley_post_ambush(); var_3 = []; var_3[0] = level.allies[0]; var_3[1] = level.allies[2]; var_3[2] = level.ambush_enemies[1]; var_3[3] = level.bags[0]; var_3[4] = level.bags[1]; var_3[5] = level.bags[2]; level.jeep.animname = "ambush_jeep"; level.pre_ambush_scene_org thread maps\_anim::anim_single( var_3, "clock_ambush_end" ); level.jeep.dontunloadonend = 1; if ( common_scripts\utility::flag( "ambush_scene_stab" ) ) { level.pre_ambush_scene_org thread maps\_anim::anim_single_solo( level.allies[1], "clock_ambush_end_knife" ); level.pre_ambush_scene_org notify( "stop_loop" ); thread vehicle_play_jeep_scripted_anim( "clock_ambush_end" ); thread maps\clockwork_audio::ambush_kill_driver_player(); } if ( common_scripts\utility::flag( "ambush_scene_shot" ) ) { level.pre_ambush_scene_org notify( "stop_loop" ); common_scripts\utility::flag_set( "ambush_scene_stab" ); var_4 = []; var_4[0] = level.allies[1]; var_4[1] = level.ambush_jeep_driver; level.pre_ambush_scene_org thread maps\_anim::anim_single_solo( var_4[0], "clock_ambush_end_gunshot" ); level.pre_ambush_scene_org thread maps\_anim::anim_single_solo( var_4[1], "clock_ambush_end_gunshot" ); thread vehicle_play_jeep_scripted_anim( "clock_ambush_end_gun" ); var_4[1] thread wait_keegan_drag(); thread maps\clockwork_audio::ambush_kill_driver_cypher(); level.allies[1] maps\clockwork_code::char_dialog_add_and_go( "clockwork_kgn_goodshot" ); } if ( common_scripts\utility::flag( "ambush_player_timeout" ) ) { common_scripts\utility::flag_set( "ambush_scene_timeout" ); common_scripts\utility::flag_set( "ambush_scene_stab" ); level notify( "ambush_scene_timeout" ); level.allies[2] thread maps\clockwork_code::char_dialog_add_and_go( "clockwork_cyr_dropem2" ); level.pre_ambush_scene_org notify( "stop_loop" ); var_4 = []; var_4[0] = level.allies[1]; var_4[1] = level.ambush_jeep_driver; level.pre_ambush_scene_org thread maps\_anim::anim_single_solo( var_4[0], "clock_ambush_end_gunshot" ); thread vehicle_play_jeep_scripted_anim( "clock_ambush_end_gun" ); wait 1; level.pre_ambush_scene_org thread maps\_anim::anim_single_solo( var_4[1], "clock_ambush_end_gunshot" ); var_4[1] thread wait_keegan_drag(); thread maps\clockwork_audio::ambush_kill_driver_cypher(); } level.ambush_enemies[1] thread waittill_clockambush_end_enemies(); common_scripts\utility::flag_set( "FLAG_enable_enter_jeep" ); level.allies[0] thread anim_clockambush_finished( "bakerambush_finished" ); level.allies[1] thread anim_clockambush_finished( "cipherambush_finished" ); level.allies[2] thread anim_clockambush_finished( "keeganambush_finished" ); level.bags[0] thread link_bag_to_jeep_after_anim(); level.bags[1] thread link_bag_to_jeep_after_anim(); level.bags[2] thread link_bag_to_jeep_after_anim(); common_scripts\utility::waitframe(); while ( !common_scripts\utility::flag( "FLAG_obj_getinjeep_complete" ) ) { level.jeep vehicle_setspeed( 0, 10 ); wait 0.01; } } } } wait_keegan_drag() { level endon( "destroy_player_ambush" ); wait 1.3; self setanim( maps\_utility::getanim( "clock_ambush_end_gunshot" ), 1.0, 0, 0 ); common_scripts\utility::flag_wait( "FLAG_gunshot_drag" ); level.pre_ambush_scene_org thread maps\_anim::anim_single_solo( self, "clock_ambush_end_gunshot_drag" ); waittill_clockambush_end_enemies(); } animate_ambush_scene_enemies() { level endon( "ambush_player_shot" ); level endon( "ambush_player_kill" ); level endon( "ambush_keegan_kill" ); level endon( "player_knifes_driver" ); level endon( "destroy_player_ambush" ); common_scripts\utility::flag_wait( "start_ambush_scene_enemies" ); foreach ( var_1 in level.ambush_enemies ) { var_1.health = 9999; var_1.delete_on_death = 0; var_1.a.nodeath = 1; var_1.allowpain = 1; var_1.no_pain_sound = 1; var_1.diequietly = 1; var_1.dontevershoot = 1; var_1.noragdoll = 1; var_1.nocorpsedelete = 1; var_1.ignoreme = 1; var_1 unlink(); } foreach ( var_4 in level.ambush_enemies ) var_4 maps\_utility::anim_stopanimscripted(); level.jeep notify( "stop_loop" ); level.pre_ambush_scene_org maps\_anim::anim_single( level.ambush_enemies, "clock_ambush_start_enemies" ); thread ambush_notify_on_player_timeout( 12 ); if ( isdefined( level.ambush_enemies[0] ) && isalive( level.ambush_enemies[0] ) ) level.pre_ambush_scene_org thread maps\_anim::anim_loop_solo( level.ambush_enemies[0], "clock_ambush_wait", "stop_clock_ambush_wait" ); if ( isdefined( level.ambush_enemies[1] ) && isalive( level.ambush_enemies[1] ) ) level.pre_ambush_scene_org thread maps\_anim::anim_loop_solo( level.ambush_enemies[1], "clock_ambush_wait", "stop_clock_ambush_wait" ); } ambush_notify_on_player_timeout( var_0 ) { level endon( "ambush_player_shot" ); level endon( "ambush_player_kill" ); level endon( "ambush_keegan_kill" ); level endon( "player_knifes_driver" ); level endon( "pre_player_knifes_driver" ); wait( var_0 ); common_scripts\utility::flag_set( "ambush_player_timeout" ); level notify( "ambush_scene_start" ); wait 1.5; if ( isdefined( level.ambush_jeep_driver ) && isalive( level.ambush_jeep_driver ) ) magicbullet( level.allies[2].weapon, level.allies[2] gettagorigin( "tag_flash" ), level.ambush_jeep_driver gettagorigin( "j_head" ) ); thread maps\clockwork_audio::ambush_kill_driver_cypher(); } ambush_notify_on_player_kill() { level endon( "ambush_player_kill" ); level endon( "ambush_keegan_kill" ); level endon( "player_knifes_driver" ); self waittill( "damage", var_0, var_1 ); if ( var_1 == level.player ) { common_scripts\utility::flag_set( "ambush_scene_shot" ); level notify( "ambush_player_kill" ); } if ( var_1 == level.allies[1] ) { common_scripts\utility::flag_set( "ambush_scene_shot" ); level notify( "ambush_keegan_kill" ); } } ambush_notify_on_player_shot() { level endon( "ambush_player_kill" ); level endon( "ambush_keegan_kill" ); level.player waittill( "weapon_fired" ); level notify( "ambush_player_shot" ); thread ambush_kill_driver(); } ambush_kill_driver() { if ( !common_scripts\utility::flag( "start_ambush_scene_enemies" ) ) wait 1; if ( isdefined( level.ambush_jeep_driver ) && isalive( level.ambush_jeep_driver ) ) { magicbullet( level.allies[2].weapon, level.allies[2] gettagorigin( "tag_flash" ), level.ambush_jeep_driver gettagorigin( "j_head" ) ); common_scripts\utility::flag_set( "ambush_scene_shot" ); } } waittill_clockambush_end_enemies() { self waittillmatch( "single anim", "end" ); self.a.nodeath = 1; self.allowdeath = 1; maps\_utility::stop_magic_bullet_shield(); maps\_utility::die(); self unlink(); } waittill_clockambush_driver_dead() { self waittillmatch( "single anim", "end" ); common_scripts\utility::exploder( "162" ); } anim_clockambush_finished( var_0 ) { level endon( "destroy_player_ambush" ); self waittillmatch( "single anim", "end" ); common_scripts\utility::flag_set( var_0 ); var_1 = maps\_vehicle_aianim::anim_pos( level.jeep, self.script_startingposition ); self linkto( level.jeep, var_1.sittag, ( 0, 0, 0 ), ( 0, 0, 0 ) ); thread maps\_anim::anim_loop_solo( self, "jeep_idle", "stop_idle" ); } vehicle_play_guy_anim( var_0, var_1, var_2, var_3, var_4 ) { var_1 notify( "stop_idle" ); var_1 notify( "stop_anim" ); var_1 endon( "stop_anim" ); var_1 maps\_anim::anim_single_solo( var_1, var_0 ); if ( isdefined( var_3 ) && !var_3 ) { if ( isdefined( var_4 ) && var_4 ) self unlink(); self notify( "vehicle_play_guy_anim_complete" ); return; } var_1 thread maps\_anim::anim_loop_solo( var_1, "jeep_idle", "stop_idle" ); } link_bag_to_jeep_after_anim() { self waittillmatch( "single anim", "end" ); self linkto( level.jeep ); common_scripts\utility::flag_wait( "jeep_intro_ride_done" ); self delete(); } intro_ambush_vo() { level endon( "player_knifes_driver" ); level endon( "ambush_player_shot" ); level endon( "ambush_player_kill" ); level endon( "ambush_keegan_kill" ); level endon( "destroy_player_ambush" ); if ( common_scripts\utility::flag( "start_enemies_provoked_early" ) ) level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_beencleaner" ); else level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_nicejob" ); common_scripts\utility::flag_wait( "checkpoint_taken2" ); wait 0.5; common_scripts\utility::flag_set( "FLAG_obj_bodydrag" ); level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_clearthatbody" ); level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_intheback" ); level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_wherespatrol" ); maps\clockwork_code::radio_dialog_add_and_go( "clockwork_diz_headedyourway" ); common_scripts\utility::flag_wait( "FLAG_baker_bodydrag_complete" ); maps\clockwork_code::radio_dialog_add_and_go( "clockwork_diz_patrolinbound" ); level.allies[1] maps\clockwork_code::char_dialog_add_and_go( "clockwork_kgn_showtime" ); level.allies[2] maps\clockwork_code::char_dialog_add_and_go( "clockwork_cyr_betterwork" ); wait 5; level.allies[2] maps\clockwork_code::char_dialog_add_and_go( "clockwork_mrk_letthebtrpass" ); common_scripts\utility::flag_set( "FLAG_let_btr_pass" ); level waittill( "enable_stab" ); thread get_in_jeep_nag_vo(); wait 1.75; level.allies[2] thread maps\clockwork_code::char_dialog_add_and_go( "clockwork_cyr_gotthedriver" ); common_scripts\utility::flag_set( "ambush_destroy_player_off" ); thread bullet_watcher_ambush(); wait 6; level.allies[2] maps\clockwork_code::char_dialog_add_and_go( "clockwork_cyr_movein" ); wait 3; level.allies[2] maps\clockwork_code::char_dialog_add_and_go( "clockwork_cyr_takeoutdriver" ); } get_in_jeep_nag_vo() { level endon( "player_in_jeep" ); common_scripts\utility::flag_wait( "bakerambush_finished" ); for (;;) { wait 5; level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_wastingtime" ); wait 9; level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_timetogo" ); wait 15; level.allies[0] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_rookgetin" ); wait 15; } } intro_drive() { var_0 = 66; level waittill( "enable_look_jeep_door_trigger" ); var_1 = getent( "trig_get_in_jeep", "targetname" ); var_1 sethintstring( &"CLOCKWORK_HINT_VEHICLE" ); var_2 = spawnstruct(); var_2.origin = ( -38223, 9545, 3545 ); maps\player_scripted_anim_util::waittill_trigger_activate_looking_at( var_1, var_2, undefined, undefined, 1 ); common_scripts\utility::flag_set( "start_intro_drive" ); level.player freezecontrols( 1 ); level.player allowcrouch( 0 ); level.player allowprone( 0 ); level.player disableweapons(); level.player allowads( 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" ); if ( level.player getstance() != "stand" ) { level.player setstance( "stand" ); wait 0.8; } level notify( "player_in_jeep" ); thread maps\clockwork_interior::spin_fans( "introdrive_finished" ); thread maps\_utility::autosave_by_name( "jeep_drive_intro" ); thread maps\clockwork_audio::enter_jeep(); thread maps\clockwork_interior_nvg::handle_tunnel_ambience(); thread spawn_enemy_road_jeep(); thread entrance_drones(); foreach ( var_4 in level.allies ) var_4.alertlevel = "noncombat"; level.gold_jeep_player_door delete(); level.jeep_player_arms = maps\_utility::spawn_anim_model( "player_rig" ); level.jeep_player_arms hide(); var_6[0] = level.player_door; var_6[0].animname = "jeep_left_door"; var_7[0] = level.jeep_player_arms; var_7[1] = maps\_utility::spawn_anim_model( "player_bag" ); var_7[1] hide(); level.jeep_player_arms linkto( level.jeep, "tag_guy0", ( 50, 0, 0 ), ( 0, 0, 0 ) ); level.jeep thread maps\_anim::anim_single_solo( level.jeep_player_arms, "ambush_jeep_enter_player", "tag_guy0" ); common_scripts\utility::waitframe(); level.jeep_player_arms setanim( level.scr_anim[level.jeep_player_arms.animname]["ambush_jeep_enter_player"], 1.0, 0, 0 ); level.player playerlinktoblend( level.jeep_player_arms, "tag_player", 0.6 ); wait 0.6; restore_grenade_weapons(); level.player_door thread maps\_anim::anim_single_solo( level.player_door, "ambush_jeep_enter_player" ); level.jeep thread maps\_anim::anim_single( var_7, "ambush_jeep_enter_player", "tag_guy0" ); level.jeep_player_arms show(); wait 0.5; var_7[1] show(); level.jeep_player_arms waittillmatch( "single anim", "end" ); level.player freezecontrols( 0 ); level.jeep_player_arms hide(); var_7[1] linkto( level.jeep ); level.player allowcrouch( 0 ); level.player allowprone( 0 ); level.player playerlinktodelta( level.jeep_player_arms, "tag_player", 1, 130, 130, 40, 15 ); common_scripts\utility::flag_set( "FLAG_obj_getinjeep_complete" ); common_scripts\utility::flag_wait_all( "bakerambush_finished", "cipherambush_finished", "keeganambush_finished", "FLAG_obj_getinjeep_complete" ); level.vehicle_aianims["script_vehicle_warrior"] = level.save_aianims; wait 1; thread maps\clockwork_audio::vehicle_player_01(); thread maps\clockwork_fx::turn_effects_on( "tubelight_parking", "fx/lights/lights_flourescent" ); thread maps\clockwork_interior_nvg::nvg_area_lights_on_fx(); common_scripts\utility::exploder( 100 ); common_scripts\utility::exploder( 300 ); common_scripts\utility::exploder( 850 ); level.jeep.attachedpath = undefined; level.jeep notify( "newpath" ); level.jeep stopanimscripted(); var_8 = getvehiclenode( "intro_road_path", "targetname" ); level.jeep thread maps\_vehicle::vehicle_paths( var_8 ); level.jeep startpath( var_8 ); level.jeep vehicle_setspeed( 30, 4, 4 ); level.jeep resumespeed( 3 ); level.allies[1].animname = "keegan"; level.allies[2].animname = "cipher"; wait 0.3; level.jeep thread vehicle_play_guy_anim( "clockwork_jeep_bloodwipe", level.allies[0], 1, 1 ); level.jeep thread vehicle_play_guy_anim( "clockwork_jeep_bloodwipe", level.allies[1], 0, 1 ); level.jeep thread vehicle_play_guy_anim( "clockwork_jeep_bloodwipe", level.allies[2], 3, 1 ); wait 2.5; common_scripts\utility::flag_wait( "start_watchsync_vo" ); maps\_utility::stop_exploder( 2000 ); thread allies_jeep_sync_anim(); thread blackout_timer( 70, &"CLOCKWORK_POWERDOWN", 1, 0 ); thread maps\clockwork_interior_nvg::init_tunnel(); wait 4; level.jeep thread vehicle_play_guy_anim( "clockwork_jeep_lookout", level.allies[2], 3, 1 ); wait 1.5; maps\clockwork_code::radio_dialog_add_and_go( "clockwork_els_copyactualblackbirdis" ); thread enter_blackbird_vo(); level.jeep thread vehicle_play_guy_anim( "clockwork_jeep_guncheck", level.allies[2], 3, 1 ); level.jeep vehicle_play_guy_anim( "clockwork_jeep_ack", level.allies[0], 1, 0 ); level.jeep thread vehicle_play_guy_anim( "clockwork_jeep_blackbird", level.allies[0], 1, 1 ); thread exit_jeep_anims(); common_scripts\utility::flag_wait( "introdrive_finished" ); thread maps\_utility::autosave_by_name( "jeep_drive_exit" ); var_7[1] delete(); } enter_blackbird_vo() { common_scripts\utility::flag_wait( "entering_blackbird_vo" ); wait 2; level.jeep_player_arms.angles = ( 0, 0, 0 ); level.player lerpviewangleclamp( 2.0, 0.25, 0.25, 41, 115, 40, 15 ); } 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 ); } spawn_enemy_road_jeep() { common_scripts\utility::flag_wait( "enemy_road_jeep" ); var_0 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive( "intro_enemy_gaz" ); var_0 maps\_vehicle::vehicle_lights_on( "headlights" ); common_scripts\utility::flag_wait( "FLAG_keegan_wave_jeep" ); } allies_jeep_sync_anim() { level.jeep thread vehicle_play_guy_anim( "clockwork_jeep_sync", level.allies[0], 1, 1 ); level.jeep vehicle_play_guy_anim( "clockwork_jeep_sync", level.allies[1], 0, 0 ); level.jeep vehicle_play_guy_anim( "clockwork_jeep_wave", level.allies[1], 0, 1 ); } vehicle_play_jeep_anim( var_0 ) { level.jeep stopanimscripted(); var_1 = getanimlength( level.scr_anim[level.jeep.animname][var_0] ); level.jeep setflaggedanim( "jeep_anim", level.scr_anim[level.jeep.animname][var_0] ); wait( var_1 ); level.jeep clearanim( level.scr_anim[level.jeep.animname][var_0], 0.2 ); } vehicle_play_jeep_scripted_anim( var_0 ) { var_1 = getanimlength( level.scr_anim[level.jeep.animname][var_0] ); level.jeep thread maps\_anim::anim_single_solo( level.jeep, var_0 ); wait( var_1 - 0.1 ); level.jeep maps\_anim::anim_set_rate_single( level.jeep, var_0, 0 ); } ally_push_player_after_unload() { self endon( "death" ); common_scripts\utility::waittill_either( "jumpedout", "vehicle_play_guy_anim_complete" ); common_scripts\utility::waitframe(); self pushplayer( 1 ); } #using_animtree("generic_human"); exit_jeep_anims() { common_scripts\utility::flag_wait( "jeep_intro_ride_done" ); level.jeep maps\_vehicle::vehicle_stop_named( "jeep_intro_ride_done", 1, 1 ); wait 1; if ( isdefined( level.start_point ) && level.start_point == "interior" ) { level.allies[0].get_out_override = %clockwork_garage_arrival_baker; level.allies[1].get_out_override = %clockwork_garage_arrival_keegan; level.allies[2].get_out_override = %clockwork_garage_arrival_cypher; level.jeep maps\_vehicle::vehicle_unload(); } else { foreach ( var_1 in level.allies ) var_1 thread vehicle_play_guy_anim( "clockwork_garage_arrival", var_1, 0, 0, 1 ); } common_scripts\utility::flag_set( "introdrive_finished" ); thread player_exit_jeep(); level.allies[0].animname = "baker"; level.allies[1].animname = "keegan"; level.allies[2].animname = "cipher"; foreach ( var_1 in level.allies ) var_1 maps\_utility::gun_recall(); level.jeep.animname = "garage_arrival_jeep"; thread vehicle_play_jeep_scripted_anim( "clockwork_garage_arrival" ); if ( !isdefined( level.player_door ) ) level.player_door = maps\_utility::spawn_anim_model( "jeep_left_door" ); level.player_door thread maps\_anim::anim_single_solo( level.player_door, "clockwork_garage_arrival" ); foreach ( var_6 in level.allies ) { var_6 maps\_utility::enable_ai_color(); var_6 thread ally_push_player_after_unload(); } level.player.ignoreme = 0; foreach ( var_6 in level.allies ) { var_6.ignoresuppression = 1; var_6.ignorerandombulletdamage = 1; var_6.ignoreexplosionevents = 1; var_6.disablebulletwhizbyreaction = 1; var_6.disablefriendlyfirereaction = 1; var_6.ignoreme = 0; var_6.disableplayeradsloscheck = 1; } maps\clockwork_code::show_dufflebags(); thread maps\clockwork_interior_nvg::handle_lights_out_approach(); thread handle_dog_leaving_jeep(); wait 10; common_scripts\utility::flag_set( "start_nvg_guy_anims" ); common_scripts\utility::flag_set( "start_closing_vault_door" ); } handle_dog_leaving_jeep() { if ( !level.woof ) return; common_scripts\utility::flag_wait( "FLAG_player_getout_jeep" ); wait 2; level.jeep notify( "stop_dog_loop" ); level.dog unlink(); level.dog stopanimscripted(); var_0 = common_scripts\utility::getstruct( "interior_dog", "targetname" ); level.dog forceteleport( var_0.origin, var_0.angles ); maps\_utility::delaythread( 7, maps\clockwork_code::safe_activate_trigger_with_targetname, "no_dog_left_behind" ); thread maps\clockwork_code::dog_walk_until_flag( "nvgs_on" ); } player_exit_jeep() { common_scripts\utility::flag_wait( "FLAG_player_getout_jeep" ); level.player disableweapons(); var_0 = maps\_utility::spawn_anim_model( "player_rig", level.jeep.origin ); level.player_rig = var_0; level.player_rig hide(); var_1 = maps\_utility::spawn_anim_model( "player_bag" ); thread maps\clockwork_audio::exit_jeep(); maps\_utility::stop_exploder( 150 ); maps\_utility::stop_exploder( 100 ); maps\_utility::stop_exploder( 850 ); var_2[0] = var_0; var_2[1] = var_1; var_2[1].animname = "player_bag"; level.player_rig show(); level.player playerlinktoabsolute( level.player_rig, "tag_player", 1 ); level.jeep thread maps\_anim::anim_first_frame( var_2, "intro_jeep_exit_player" ); level.jeep thread maps\_anim::anim_single( var_2, "intro_jeep_exit_player" ); if ( !common_scripts\utility::flag( "interior_start_point" ) ) level.player playerlinktoblend( level.player_rig, "tag_player", 1 ); level.player_rig waittillmatch( "single anim", "end" ); level.player unlink(); level.player_rig delete(); var_1 delete(); thread maps\clockwork_code::hold_fire_unless_ads( "nvgs_on" ); wait 0.8; level.player enableweapons(); level.player enableoffhandweapons(); level.player allowcrouch( 1 ); level.player allowprone( 1 ); level.player allowads( 1 ); level.player allowsprint( 0 ); level.player allowjump( 0 ); thread maps\clockwork_interior_nvg::player_failcase_leave_garage(); } checkpoint_patrol( var_0 ) { self endon( "death" ); self.ignoreall = var_0; self.disablearrivals = var_0; self.disableexits = var_0; self.animname = "generic"; var_1 = level.checkpoint_patrol_anim[1]; maps\_utility::set_run_anim( var_1 ); thread disable_checkpoint_patrol(); } disable_checkpoint_patrol() { self endon( "death" ); common_scripts\utility::flag_wait_any( "start_enemies_provoked_early", "start_enemies_weaponsfree" ); wait 3; self.ignoreall = 0; self.disablearrivals = 0; self.disableexits = 0; maps\_utility::clear_run_anim(); } damage_watcher_intro() { self endon( "death" ); self waittill( "damage" ); common_scripts\utility::flag_set( "destroy_player_intro" ); } damage_watcher_ambush( var_0 ) { self endon( "death" ); if ( isdefined( var_0 ) ) level endon( var_0 ); self waittill( "damage", var_1, var_2 ); if ( var_2 == level.player ) { common_scripts\utility::flag_set( "destroy_player_ambush" ); level notify( "destroy_player_ambush" ); } } bullet_watcher_ambush_failsafe() { level endon( "ambush_destroy_player_off" ); level.player common_scripts\utility::waittill_either( "weapon_fired", "grenade_fire" ); common_scripts\utility::flag_set( "destroy_player_ambush" ); level notify( "destroy_player_ambush" ); } bullet_watcher_ambush() { level endon( "pre_player_knifes_driver" ); level.player common_scripts\utility::waittill_either( "weapon_fired", "grenade_fire" ); common_scripts\utility::flag_set( "ambush_scene_shot" ); level notify( "ambush_player_shot" ); } destroy_player_intro() { self endon( "death" ); common_scripts\utility::flag_wait( "destroy_player_intro" ); wait 1; self.ignoreall = 0; level.player.ignoreme = 0; self vehicle_setspeed( 0, randomintrange( 5, 35 ) ); if ( self.vehicletype == "gaz_tigr_turret_physics" ) { wait 1; maps\_vehicle::vehicle_unload(); } if ( self.vehicletype == "btr80" ) { wait 3; btr_fire_logic(); } if ( self.vehicletype == "humvee" ) { wait 1; maps\_vehicle::vehicle_unload(); } wait 3; mission_failed_intro(); } destroy_player_ambush() { self endon( "death" ); level endon( "ambush_destroy_player_off" ); common_scripts\utility::flag_wait( "destroy_player_ambush" ); level notify( "destroy_player_ambush" ); self.ignoreall = 0; level.player.ignoreme = 0; foreach ( var_1 in level.allies ) var_1.ignoreme = 0; if ( self.vehicletype == "btr80" ) { if ( common_scripts\utility::flag( "btr_reverse_here" ) ) { self vehicle_setspeed( 0, 99999, 99999 ); wait 1.5; self.script_vehicle_selfremove = 1; self.attachedpath = undefined; self notify( "newpath" ); self vehicle_setspeed( 1, 4, 4 ); self resumespeed( 3 ); var_3 = getvehiclenode( "btr_failsafe_path", "targetname" ); thread maps\_vehicle::vehicle_paths( var_3 ); self startpath( var_3 ); self.veh_transmission = "reverse"; maps\_vehicle::vehicle_wheels_backward(); wait 1; thread btr_fire_logic(); wait 3; self vehicle_setspeed( 0, 10, 12 ); } else { self vehicle_setspeed( 0, 10, 12 ); wait 2; thread btr_fire_logic(); } } if ( self.vehicletype == "humvee" ) { self vehicle_setspeed( 0, 10, 12 ); if ( !common_scripts\utility::flag( "start_ambush_scene_enemies" ) ) wait( randomintrange( 1, 3 ) ); var_4 = maps\_vehicle::vehicle_unload( "all" ); foreach ( var_1 in var_4 ) { var_1 maps\_utility::gun_recall(); var_1.health = 100; var_1.delete_on_death = 1; var_1.a.nodeath = 0; var_1.allowdeath = 1; var_1.allowpain = 1; var_1.no_pain_sound = 0; var_1.diequietly = 0; var_1.noragdoll = 0; var_1.nocorpsedelete = 0; var_1.ignoreall = 0; var_1.ignoreme = 0; var_1 thread wait_anim_finished(); } } level.allies[0].ignoreall = 0; level.allies[0].ignoreme = 0; level.allies[0] maps\_utility::anim_stopanimscripted(); level.allies[1] unlink(); level.allies[1].ignoreall = 0; level.allies[1].ignoreme = 0; level.allies[1] maps\_utility::anim_stopanimscripted(); level.allies[2].ignoreall = 0; level.allies[2].ignoreme = 0; level.allies[2] maps\_utility::anim_stopanimscripted(); } fail_mission_ambush() { common_scripts\utility::flag_wait( "destroy_player_ambush" ); wait 5.5; level.allies[1] maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_abortmission" ); mission_failed_intro(); } wait_anim_finished() { self waittillmatch( "anim single", "end" ); self unlink(); maps\_utility::anim_stopanimscripted(); } handle_grenade_thrown_failcase() { level endon( "ambush_destroy_player_off" ); level.player waittill( "grenade_fire" ); wait 4; common_scripts\utility::flag_set( "destroy_player_ambush" ); } destroy_player_ambush_vo() { level endon( "ambush_destroy_player_off" ); common_scripts\utility::flag_wait( "destroy_player_ambush" ); level.allies[1] thread maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_damnitrook" ); } notify_ambush_destroy_player_off() { common_scripts\utility::flag_wait( "ambush_destroy_player_off" ); level notify( "ambush_destroy_player_off" ); } mission_failed_intro() { setdvar( "ui_deadquote", &"CLOCKWORK_QUOTE_COMPROMISE" ); maps\_utility::missionfailedwrapper(); } btr_fire_logic() { maps\_vehicle_code::_mgon(); for (;;) { btr_burst( 3, 0.75, level.player ); wait 2; } } btr_look_logic() { common_scripts\utility::flag_wait( "FLAG_let_btr_pass" ); level endon( "stop_btr_looking" ); for (;;) { btr_turret_follow( 0.75, level.player ); wait 0.05; } } btr_burst( var_0, var_1, var_2 ) { for ( var_3 = 0; var_3 < var_0; var_3++ ) { var_4 = self gettagorigin( "tag_turret2" ); var_5 = var_2.origin[0] + randomintrange( -64, 64 ) * var_1; var_6 = var_2.origin[1] + randomintrange( -64, 64 ) * var_1; var_7 = var_2.origin[2] + randomintrange( -32, 0 ) * var_1; var_8 = ( var_5, var_6, var_7 ); var_9 = vectortoangles( var_8 - var_4 ); var_10 = anglestoforward( var_9 ); var_11 = var_10 * 12; var_12 = var_4 + var_11; self setturrettargetvec( var_8 ); playfx( common_scripts\utility::getfx( "bmp_flash_wv" ), var_4, var_10, ( 0, 0, 1 ) ); magicbullet( "btr80_turret_castle", var_4, var_12 ); self playsound( "btr80_fire" ); wait( randomfloatrange( 0.1, 0.2 ) ); } } btr_turret_follow( var_0, var_1 ) { level endon( "stop_btr_looking" ); thread end_lookat_notify(); for (;;) { if ( !isdefined( self ) ) return; var_2 = self gettagorigin( "tag_turret2" ); var_3 = var_1.origin[0]; var_4 = var_1.origin[1]; var_5 = var_1.origin[2]; var_6 = ( var_3, var_4, var_5 ); var_7 = vectortoangles( var_6 - var_2 ); var_8 = anglestoforward( var_7 ); var_9 = var_8 * 12; var_10 = var_2 + var_9; self setturrettargetvec( var_6 ); common_scripts\utility::waitframe(); } } end_lookat_notify() { wait 5; level notify( "stop_btr_looking" ); } blackout_timer( var_0, var_1, var_2, var_3 ) { level endon( "blackout_early" ); switch ( var_3 ) { case 0: if ( getdvar( "notimer" ) == "1" ) return; if ( !isdefined( var_2 ) ) var_2 = 0; level.hudtimerindex = 20; level.timer = maps\_hud_util::get_countdown_hud( -250 ); level.timer setpulsefx( 30, 900000, 700 ); level.timer.label = var_1; level.timer settenthstimer( var_0 ); level.start_time = gettime(); wait( var_0 - 15 ); break; case 1: if ( getdvar( "notimer" ) == "1" ) return; if ( !isdefined( var_2 ) ) var_2 = 0; level.hudtimerindex = 20; level.timer = maps\_hud_util::get_countdown_hud( -250 ); level.timer setpulsefx( 30, 900000, 700 ); level.timer.label = var_1; level.timer settenthstimer( var_0 ); level.start_time = gettime(); wait 26; break; } thread maps\clockwork_code::radio_dialog_add_and_go( "clockwork_diz_15secs" ); thread maps\clockwork_audio::lights_out_music(); thread maps\clockwork_audio::timer_tick(); wait 14; common_scripts\utility::flag_set( "allies_prep_lightsout" ); common_scripts\utility::flag_set( "nvg_gun_up" ); level.allies[0] thread maps\clockwork_code::char_dialog_add_and_go( "clockwork_bkr_readynvgs" ); wait 1; common_scripts\utility::flag_set( "lights_out" ); common_scripts\utility::flag_set( "lights_off" ); level notify( "ready_nvgs" ); level.timer destroy(); } entrance_drones() { common_scripts\utility::flag_wait( "FLAG_entrance_drones" ); var_0 = maps\_utility::array_spawn_targetname( "exterior_tunnel_guards_patrol" ); var_1 = maps\_utility::array_spawn_targetname( "exterior_tunnel_guards" ); level.exterior_guards = common_scripts\utility::array_combine( var_0, var_1 ); foreach ( var_3 in var_0 ) { var_3.runanim = maps\_utility::getgenericanim( "active_patrolwalk_gundown" ); if ( isdefined( self.animation ) ) var_3.idleanim = maps\_utility::getgenericanim( self.animation ); } } player_failcase_tunnel() { thread player_failcase_tunnel_overrun(); level endon( "player_in_jeep" ); var_0 = []; var_0[0] = "clockwork_bkr_getbackhererook"; var_0[1] = "clockwork_bkr_rookwhereyagoing"; for (;;) { common_scripts\utility::flag_wait( "FLAG_player_failcase_tunnel" ); var_1 = 0; while ( common_scripts\utility::flag( "FLAG_player_failcase_tunnel" ) ) { if ( var_1 > var_0.size - 1 ) { setdvar( "ui_deadquote", &"CLOCKWORK_QUOTE_LEFT_TEAM" ); maps\_utility::missionfailedwrapper(); break; } level.allies[0] maps\clockwork_code::char_dialog_add_and_go( var_0[var_1] ); var_1++; wait( randomfloatrange( 3, 5 ) ); } } } player_failcase_tunnel_overrun() { level endon( "player_in_jeep" ); common_scripts\utility::flag_wait( "FLAG_player_failcase_tunnel_overrun" ); setdvar( "ui_deadquote", &"CLOCKWORK_QUOTE_LEFT_TEAM" ); maps\_utility::missionfailedwrapper(); } handle_dog_intro() { level.dog thread maps\ally_attack_dog::lock_player_control_until_flag( "ally_checkpoint_approach" ); thread maps\clockwork_code::dog_walk_for_time( 12 ); thread handle_dog_checkpoint(); } handle_dog_checkpoint() { thread handle_dog_targeting_checkpoint(); thread handle_dog_ambush(); } handle_dog_targeting_checkpoint() { level endon( "intro_finished" ); level.player waittill( "dog_attack_command" ); wait 3; maps\clockwork_code::dog_run(); level.dog maps\_utility::set_ignoreall( 0 ); level.dog maps\_utility::set_ignoreme( 0 ); common_scripts\utility::flag_set( "start_enemies_provoked_early" ); } handle_dog_ambush() { common_scripts\utility::flag_wait( "ambush_scene_started" ); level.dog maps\_utility::set_ignoreall( 1 ); level.dog maps\_utility::set_ignoreme( 1 ); var_0 = getnode( "dog_jumpup_jeep", "targetname" ); var_1 = level.dog.goalradius; thread dog_scratch_intro(); common_scripts\utility::flag_wait( "start_intro_drive" ); level.dog.goalradius = var_1; wait 3; var_0 notify( "stop_scritchin" ); maps\clockwork_code::link_dog_to_jeep( level.jeep ); level.dog thread maps\ally_attack_dog::lock_player_control_until_flag( "nvgs_on" ); level.dog thread maps\_utility::play_sound_on_entity( "anml_dog_bark" ); } dog_scratch_intro() { level endon( "start_intro_drive" ); if ( common_scripts\utility::flag( "start_intro_drive" ) ) return; var_0 = getnode( "dog_jumpup_jeep", "targetname" ); level.dog.goalradius = 5; for (;;) { level.dog setgoalnode( var_0 ); var_1 = level.dog common_scripts\utility::waittill_notify_or_timeout_return( "goal", 10 ); if ( !isdefined( var_1 ) || var_1 != "timeout" ) break; wait 1; } wait 2; var_0 thread maps\_anim::anim_loop_solo( level.dog, "dog_scratch_door", "stop_scritchin" ); }