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

3038 lines
110 KiB
Plaintext

// 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" );
}