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

531 lines
17 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
enemyhq_vip_pre_load()
{
common_scripts\utility::flag_init( "start_sniper_vip_breach" );
common_scripts\utility::flag_init( "vip_breach_hot" );
common_scripts\utility::flag_init( "done_sniping_early" );
common_scripts\utility::flag_init( "sniping_done" );
common_scripts\utility::flag_init( "interrogation_done" );
common_scripts\utility::flag_init( "clear_left" );
common_scripts\utility::flag_init( "clear_right" );
common_scripts\utility::flag_init( "interrogatee_killed" );
common_scripts\utility::flag_init( "vip_done" );
}
setup_vip()
{
level.start_point = "vip";
maps\enemyhq::setup_common();
thread maps\enemyhq_audio::aud_check( "vip" );
maps\enemyhq_code::safe_activate_trigger_with_targetname( "vip_allies_set_up" );
}
begin_vip()
{
level.sniper_vision_override = "enemyhq_sniper_view_b";
thread maps\_utility::battlechatter_off( "allies" );
thread maps\_utility::battlechatter_off( "axis" );
maps\_utility::delaythread( 0.05, maps\_utility::set_team_bcvoice, "allies", "taskforce" );
level.dog maps\enemyhq_code::set_dog_scripted_mode( level.player );
maps\_utility::autosave_by_name( "vip_room" );
level.remote_sniper_return_struct = common_scripts\utility::getstruct( "vip_return_struct", "targetname" );
level.dog maps\enemyhq_code::lock_player_control();
thread ally_vo();
common_scripts\utility::flag_wait( "setup_vip_enemies" );
thread maps\enemyhq_code::handle_leave_team_fail( "leaving_VIP", "left_VIP" );
thread animate_vip_enemies();
thread animate_ally_breach();
thread maps\enemyhq_code::toggle_ally_outlines( 0 );
thread vip_handle_ps4_ssao();
common_scripts\utility::array_thread( level.allies, maps\_utility::disable_surprise );
common_scripts\utility::array_thread( level.allies, maps\_utility::disable_pain );
level.player waittill( "player_switching_to_tablet" );
common_scripts\utility::flag_set( "start_sniper_vip_breach" );
thread maps\enemyhq_audio::aud_start_sniper( "enhq_atrium_covered" );
common_scripts\utility::exploder( 8 );
common_scripts\utility::exploder( 1111 );
common_scripts\utility::exploder( 890 );
maps\_utility::stop_exploder( 9090 );
maps\_utility::stop_exploder( 9080 );
maps\_utility::stop_exploder( 5700 );
maps\_utility::stop_exploder( 5600 );
maps\_utility::stop_exploder( 8010 );
maps\_utility::stop_exploder( 9094 );
level waittill( "vip_breach_hot" );
level.player waittill( "remote_sniper_pad_down" );
level.player disableweaponswitch();
level.player disableweapons();
setsaveddvar( "ammoCounterHide", 1 );
common_scripts\utility::flag_set( "sniping_done" );
maps\_utility::stop_exploder( 8011 );
common_scripts\utility::exploder( 89 );
level.player disableweaponpickup();
var_0 = common_scripts\utility::getstruct( "new_vip_breach_e5", "targetname" );
thread delete_corpses_around_origin( var_0.origin, 120 );
var_1 = getaiarray( "axis" );
common_scripts\utility::array_thread( var_1, maps\enemyhq_code::die_quietly );
thread player_back_from_sniping();
common_scripts\utility::flag_wait_any( "interrogatee_killed", "start_rpg_ambush" );
level.player enableweapons();
level.player enableweaponswitch();
level.player takeweapon( "freerunner" );
level.player switchtoweaponimmediate( level.pre_pre_sniping_weapon );
setsaveddvar( "ammoCounterHide", 0 );
level.player enableweaponpickup();
if ( !common_scripts\utility::flag( "start_rpg_ambush" ) )
maps\enemyhq_code::safe_activate_trigger_with_targetname( "traversal_allies1" );
common_scripts\utility::flag_wait_any( "interrogation_done", "start_rpg_ambush" );
if ( !common_scripts\utility::flag( "interrogation_done" ) )
{
common_scripts\utility::flag_set( "interrogation_done" );
common_scripts\utility::array_thread( level.allies, maps\_utility::anim_stopanimscripted );
common_scripts\utility::array_thread( level.allies, maps\_utility::enable_ai_color );
if ( isalive( level.interogatee ) )
{
level.interogatee maps\_utility::stop_magic_bullet_shield();
level.interogatee maps\_utility::anim_stopanimscripted();
level.interogatee maps\_utility::die();
}
level.dog maps\_utility::anim_stopanimscripted();
level.dog maps\_utility::enable_ai_color();
level.dog maps\_utility_dogs::disable_dog_sniff();
}
if ( isdefined( level.knife ) )
hide_knife( level.allies[1] );
common_scripts\utility::array_thread( level.allies, maps\_utility::enable_surprise );
common_scripts\utility::array_thread( level.allies, maps\_utility::enable_pain );
}
vip_handle_ps4_ssao()
{
if ( !level.ps4 )
return;
level.player waittill( "remote_sniper_pad_down" );
setsaveddvar( "r_ssaoScriptScale", 0 );
common_scripts\utility::flag_wait( "start_pre_rpg_ambush" );
maps\_art::enable_ssao_over_time( 2 );
}
auto_breach()
{
common_scripts\utility::flag_wait( "start_sniper_vip_breach" );
wait 8.0;
level notify( "vip_breach_hot" );
}
animate_vip_enemies()
{
var_0 = getent( "vip_enemy_volume", "targetname" );
var_1 = getentarray( "new_vip_enemy", "targetname" );
var_2 = [];
foreach ( var_4 in var_1 )
{
var_5 = var_4.script_noteworthy;
var_6 = common_scripts\utility::getstruct( var_4.target, "targetname" );
var_7 = var_4 maps\_utility::spawn_ai( 1 );
var_7 thread vip_notify_on_death();
var_7.animname = var_5;
var_7.struct = var_6;
var_7.allowdeath = 1;
if ( isdefined( level.scr_anim[var_5]["new_vip_enemy_intro"] ) )
var_6 thread vip_enemy_animate_intro( var_7 );
else
var_6 thread maps\_anim::anim_loop_solo( var_7, "new_vip_enemy", "stop_loop" );
var_7 thread vip_enemy_interrupt( var_0 );
var_2 = common_scripts\utility::array_add( var_2, var_7 );
}
thread maps\enemyhq_code::ai_array_killcount_flag_set( var_2, var_2.size, "done_sniping_early" );
level waittill( "vip_breach_hot" );
wait 0.25;
foreach ( var_7 in var_2 )
{
if ( isalive( var_7 ) )
var_7 notify( "go_time" );
}
}
vip_notify_on_death()
{
var_0 = undefined;
switch ( self.script_noteworthy )
{
case "new_vip_e2":
var_0 = "clear_left";
break;
case "new_vip_e4":
var_0 = "clear_right";
break;
}
if ( isdefined( var_0 ) )
{
self waittill( "death" );
common_scripts\utility::flag_set( var_0 );
}
}
vip_enemy_animate_intro( var_0 )
{
var_0 endon( "death" );
var_0 endon( "go_time" );
var_1 = self;
var_1 thread maps\_anim::anim_first_frame_solo( var_0, "new_vip_enemy_intro" );
common_scripts\utility::flag_wait( "start_sniper_vip_breach" );
wait 2;
var_1 maps\_anim::anim_single_solo( var_0, "new_vip_enemy_intro" );
var_1 thread maps\_anim::anim_loop_solo( var_0, "new_vip_enemy", "stop_loop" );
}
vip_enemy_interrupt( var_0 )
{
self endon( "death" );
common_scripts\utility::waittill_any( "death", "damage", "go_time" );
self notify( "go_time" );
if ( isdefined( self.struct ) )
self.struct notify( "stop_loop" );
maps\_utility::anim_stopanimscripted();
self.allowdeath = 1;
self.ignoreme = 0;
maps\_utility::enable_ai_color();
thread maps\_anim::anim_single_solo( self, "vip_breach_react" );
if ( isdefined( level.breach_react_starttime[self.animname]["vip_breach_react"] ) )
{
var_1 = level.scr_anim[self.animname]["vip_breach_react"];
var_2 = getanimlength( var_1 );
var_3 = level.breach_react_starttime[self.animname]["vip_breach_react"] / var_2;
self setanimtime( var_1, var_3 );
}
self waittillmatch( "single anim", "end" );
wait( randomfloatrange( 0.1, 0.25 ) );
self.ignoreall = 0;
}
vip_dog_attack()
{
var_0 = maps\_utility::make_array( "new_vip_e6", "new_vip_e5", "new_vip_e2", "new_vip_e2", "new_vip_e1" );
var_1 = [];
foreach ( var_3 in var_0 )
{
var_4 = getentarray( var_3, "script_noteworthy" );
var_3 = pickai( var_4 );
if ( isdefined( var_3 ) )
{
var_3.name = var_3.script_noteworthy;
var_3.script_friendname = var_3.script_noteworthy;
var_1[var_1.size] = var_3;
}
}
level.dog maps\enemyhq_code::dog_attack_targets_by_priority( var_1, "sniping_done", 1 );
}
pickai( var_0 )
{
foreach ( var_2 in var_0 )
{
if ( isdefined( var_2 ) && isai( var_2 ) && isalive( var_2 ) )
return var_2;
}
return undefined;
}
animate_ally_breach()
{
var_0 = common_scripts\utility::getstruct( "vip_breach1b", "targetname" );
level waittill( "vip_breach_hot" );
wait 0.5;
thread open_vip_doors();
var_1 = 1;
foreach ( var_3 in level.allies )
{
var_3.animname = "ally" + maps\_utility::string( var_1 );
if ( var_1 > 1 )
var_0 = common_scripts\utility::getstruct( "vip_breach1", "targetname" );
var_0 thread maps\_anim::anim_single_solo( var_3, "vip_breach" );
var_1++;
}
thread maps\enemyhq_code::toggle_ally_outlines( 1 );
maps\enemyhq_code::safe_activate_trigger_with_targetname( "vip_allies_enter" );
thread vip_dog_attack();
}
open_vip_doors()
{
var_0 = getent( "vip_doorhandle_l", "targetname" );
var_1 = getent( "vip_doorhandle_r", "targetname" );
var_2 = getent( "vip_door_l", "targetname" );
var_3 = getent( "vip_door_r", "targetname" );
var_1 linkto( var_3 );
var_0 linkto( var_2 );
var_1 notsolid();
var_0 notsolid();
var_2 rotateyaw( 93, 0.2, 0.1, 0.1 );
var_2 disconnectpaths();
var_2 connectpaths();
var_3 rotateyaw( -92, 0.2, 0.1, 0.1 );
var_3 disconnectpaths();
var_3 connectpaths();
}
player_back_from_sniping()
{
thread handle_vip_drones();
level.knife = spawn( "script_model", ( 0, 0, 0 ) );
level.knife setmodel( "weapon_knife_iw6" );
level.knife hide();
level.dog maps\_utility_dogs::enable_dog_sniff();
var_0 = getnode( "vip_hesh_loc", "targetname" );
level.allies[2] maps\_utility::teleport_ai( var_0 );
maps\enemyhq_code::safe_activate_trigger_with_targetname( "vip_allies_search" );
var_1 = getent( "vip_interrogatee", "targetname" );
var_2 = var_1 maps\_utility::spawn_ai( 1 );
level.interogatee = var_2;
var_3 = common_scripts\utility::getstruct( "vip_interrogate", "targetname" );
var_4 = maps\_utility::make_array( level.allies[1], level.allies[2], var_2, level.dog );
level.allies[1].animname = "goodguy";
level.allies[2].animname = "hesh";
level.dog.animname = "dog";
var_2.animname = "badguy";
var_2 maps\_utility::magic_bullet_shield();
level.dog maps\_utility::anim_stopanimscripted();
level.dog unlink();
common_scripts\utility::waitframe();
var_3 maps\_anim::anim_first_frame( var_4, "vip_interrogate" );
common_scripts\utility::flag_wait_or_timeout( "start_interrogation_anims", 15 );
common_scripts\utility::flag_set( "start_interrogation_anims" );
var_3 thread maps\_anim::anim_single_run( var_4, "vip_interrogate" );
thread let_player_through();
wait 11;
common_scripts\utility::array_thread( level.allies, maps\_utility::enable_ai_color );
maps\enemyhq_code::safe_activate_trigger_with_targetname( "vip_allies_pre_leave" );
level.dog maps\_utility::enable_ai_color();
level.dog waittillmatch( "single anim", "end" );
wait 2;
level.dog maps\_utility_dogs::disable_dog_sniff();
level.allies[1] waittillmatch( "single anim", "end" );
common_scripts\utility::flag_set( "interrogation_done" );
}
keegan_vip_line1( var_0 )
{
if ( !common_scripts\utility::flag( "start_pre_rpg_ambush" ) )
level.allies[1] maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_kgn_whereishe" );
}
keegan_vip_line2( var_0 )
{
if ( !common_scripts\utility::flag( "start_pre_rpg_ambush" ) )
level.allies[1] maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_kgn_whereishe_4" );
}
badguyline1( var_0 )
{
var_0 maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_saf1_getthatdogaway" );
}
badguyline2( var_0 )
{
var_0 maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_fs5_idontknowwhere" );
}
badguyline3( var_0 )
{
var_0 maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_saf1_iidontdeath" );
}
let_player_through()
{
wait 15;
var_0 = getent( "vip_player_clip", "targetname" );
var_0 notsolid();
common_scripts\utility::flag_set( "vip_done" );
}
show_knife( var_0 )
{
level.knife linkto( var_0, "tag_inhand", ( 0, 0, 0 ), ( 0, 0, 0 ) );
level.knife show();
}
hide_knife( var_0 )
{
level.knife unlink();
level.knife hide();
level.knife delete();
}
set_search_walk( var_0 )
{
if ( !isdefined( var_0 ) )
var_0 = 1;
self.disablearrivals = var_0;
self.disableexits = var_0;
if ( var_0 )
{
self.animname = "generic";
maps\_utility::set_run_anim( "search_walk", 1 );
}
else
maps\_utility::clear_run_anim();
}
handle_vip_drones()
{
level endon( "death" );
thread handle_drone_nags();
var_0 = getentarray( "vip_drone", "targetname" );
var_0 = common_scripts\utility::array_randomize( var_0 );
foreach ( var_2 in var_0 )
{
var_2 spawn_vip_drone();
wait( randomfloatrange( 0.2, 0.75 ) );
}
}
spawn_vip_drone()
{
var_0 = maps\_utility::dronespawn( self );
var_0.spawner = self;
var_0 thread handle_vip_drone();
}
handle_vip_drone()
{
self endon( "death" );
thread nag_if_shot();
common_scripts\utility::waittill_any( "goal", "death" );
if ( !common_scripts\utility::flag( "traverse_done" ) )
self.spawner spawn_vip_drone();
self delete();
}
nag_if_shot()
{
self endon( "death" );
level endon( "traverse_done" );
for (;;)
{
common_scripts\utility::waittill_any( "damage", "bulletwhizby" );
level notify( "shot_drone" );
}
}
handle_drone_nags()
{
level endon( "traverse_done" );
var_0 = [];
var_0[0] = "enemyhq_mrk_logangetoverit";
var_0[1] = "enemyhq_mrk_knockitoff";
var_0[2] = "enemyhq_mrk_lastthingweneed";
var_1 = 0;
while ( !common_scripts\utility::flag( "traverse_done" ) )
{
level waittill( "shot_drone" );
level.player maps\enemyhq_code::radio_dialog_add_and_go( var_0[var_1] );
wait 2;
var_1++;
if ( var_1 >= var_0.size )
var_1 = 0;
}
}
ally_vo()
{
thread maps\enemyhq_audio::aud_enemy_muffled_vo( "vip_breach_hot", "vip_conv_loc", "start_vip_conv" );
common_scripts\utility::flag_wait( "setup_vip_enemies" );
thread maps\_utility::autosave_tactical();
level.allies[0] maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_mrk_thisshouldbewhere" );
thread maps\enemyhq_code::nag_player_until_flag( level.allies[0], "start_sniper_vip_breach", "enemyhq_mrk_adamscopeitout", "enemyhq_mrk_usetheremotesniper", "enemyhq_mrk_getonthatremote" );
wait 1;
level.pre_pre_sniping_weapon = level.player getcurrentweapon();
common_scripts\utility::flag_set( "activate_vip_sniper" );
thread maps\enemyhq_code::sniper_hint( "start_sniper_vip_breach", 4 );
common_scripts\utility::flag_wait( "start_sniper_vip_breach" );
wait 2;
maps\_utility::delaythread( 0.5, maps\enemyhq_code::nag_player_until_flag, level.player, "vip_breach_hot", "enemyhq_mrk_wellbreachonyour", "enemyhq_mrk_onyou", "enemyhq_mrk_takeashot" );
level waittill( "vip_breach_hot" );
common_scripts\utility::flag_set( "vip_breach_hot" );
thread maps\enemyhq_audio::aud_vip_breach();
maps\_utility::radio_dialogue_stop();
wait 0.25;
thread maps\enemyhq_code::radio_dialog_add_and_go( "enemyhq_mrk_gogogo" );
wait 1;
thread ally_breach_vo();
common_scripts\utility::flag_wait( "sniping_done" );
maps\_utility::radio_dialogue_stop();
thread maps\enemyhq_audio::aud_interrogation();
level.allies[0] maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_mrk_roomsecure" );
level.allies[0] maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_mrk_hesnothere" );
wait 0.5;
level endon( "start_pre_rpg_ambush" );
level.allies[1] maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_kgn_whereishe_2" );
wait 0.5;
level.allies[1] maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_kgn_whereishe_3" );
wait 0.5;
level.allies[1] maps\enemyhq_code::char_dialog_add_and_go( "enemyhq_kgn_wheredidyoutake" );
common_scripts\utility::flag_wait( "start_interrogation_anims" );
}
delete_corpses_around_origin( var_0, var_1 )
{
var_2 = getcorpsearray();
foreach ( var_4 in var_2 )
{
if ( distance( var_4.origin, var_0 ) < var_1 )
var_4 delete();
}
}
ally_breach_vo()
{
level endon( "sniping_done" );
level.player maps\enemyhq_code::radio_dialog_add_and_go( "enemyhq_mrk_12oclock12oclock" );
level.player maps\enemyhq_code::radio_dialog_add_and_go( "enemyhq_hsh_runnerontheleft" );
common_scripts\utility::flag_wait( "clear_right" );
level.player maps\enemyhq_code::radio_dialog_add_and_go( "enemyhq_mrk_clearright" );
common_scripts\utility::flag_wait( "clear_left" );
level.player maps\enemyhq_code::radio_dialog_add_and_go( "enemyhq_kgn_clearleft" );
}
kill_dude( var_0 )
{
common_scripts\utility::flag_set( "interrogatee_killed" );
maps\enemyhq_code::get_killed( var_0 );
}