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

584 lines
19 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
main()
{
level.timestep = 0.05;
maps\_utility::template_level( "black_ice" );
maps\createart\black_ice_art::main();
maps\black_ice_fx::main();
maps\_utility::set_default_start( "swim" );
maps\_utility::default_start( ::start_swim );
maps\_utility::add_start( "swim", ::start_swim, "Swim", ::main_swim, "black_ice_intro_tr" );
maps\_utility::add_start( "camp", ::start_camp, "Camp", ::main_camp, "black_ice_intro_tr" );
maps\_utility::add_start( "ascend", ::start_ascend, "Ascend", ::main_ascend, "black_ice_intro_tr" );
maps\_utility::add_start( "catwalks", ::start_catwalks, "Catwalks", ::main_catwalks, "black_ice_intro_tr" );
maps\_utility::add_start( "catwalks_end", ::start_catwalks_end, "Catwalks End", ::main_catwalks_end, "black_ice_intro_tr" );
maps\_utility::add_start( "barracks", ::start_barracks, "Barracks", ::main_barracks, "black_ice_intro_tr" );
maps\_utility::add_start( "common_room", ::start_common, "Common Room", ::main_common, "black_ice_intro_tr" );
maps\_utility::add_start( "flarestack", ::start_flarestack, "Flarestack", ::main_flarestack, "black_ice_intro_tr" );
maps\_utility::add_start( "refinery", ::start_refinery, "Refinery", ::main_refinery, "black_ice_outro_tr" );
maps\_utility::add_start( "tanks", ::start_tanks, "Tanks", ::main_tanks, "black_ice_outro_tr" );
maps\_utility::add_start( "engine_room", ::start_engine_room, "Engine Room", ::main_engine_room, "black_ice_outro_tr" );
maps\_utility::add_start( "mudpumps", ::start_mudpumps, "Mudpumps", ::main_mudpumps, "black_ice_outro_tr" );
maps\_utility::add_start( "pipe_deck", ::start_pipe_deck, "Pipe Deck", ::main_pipe_deck, "black_ice_outro_tr" );
maps\_utility::add_start( "command_outside", ::start_command_outside, "Command Center Outside", ::main_command, "black_ice_outro_tr" );
maps\_utility::add_start( "command_inside", ::start_command, "Command Center Inside", ::main_command, "black_ice_outro_tr" );
maps\_utility::add_start( "exfil", ::start_exfil, "Exfil", ::main_exfil, "black_ice_outro_tr" );
mission_precache();
maps\_utility::intro_screen_create( &"BLACK_ICE_INTROSCREEN_LINE_1", &"BLACK_ICE_INTROSCREEN_LINE_2", &"BLACK_ICE_INTROSCREEN_LINE_3", &"BLACK_ICE_INTROSCREEN_LINE_4" );
maps\_utility::intro_screen_custom_func( ::introscreen );
maps\_utility::transient_init( "black_ice_intro_tr" );
maps\_utility::transient_init( "black_ice_outro_tr" );
maps\_load::main();
maps\black_ice_fx::setup_footstep_fx();
maps\_utility::setsaveddvar_cg_ng( "r_specularColorScale", 2.5, 9.01 );
if ( maps\_utility::is_gen4() )
set_default_mb_values();
thread common_scripts\_pipes::main();
level.pipesdamage = 0;
a_globals();
maps\black_ice_util_ai::setup_retreat_vols();
mission_flag_inits();
maps\black_ice_audio::main();
maps\black_ice_anim::main();
maps\_hand_signals::inithandsignals();
threat_group_inits();
var_0 = getspawnerarray();
common_scripts\utility::array_thread( var_0, maps\_utility::add_spawn_function, maps\black_ice_vignette::vignette_setup );
common_scripts\utility::array_thread( var_0, maps\_utility::add_spawn_function, maps\black_ice_util::deathfunc_grenade_drop );
maps\black_ice_util::spawn_allies();
maps\black_ice_util::player_setup();
mission_post_inits();
vision_sets();
maps\black_ice_util::array_thread_targetname( "trig_ally_cqb_start", maps\black_ice_util::waittill_trigger_ent, level._allies, maps\_utility::enable_cqbwalk );
maps\black_ice_util::array_thread_targetname( "trig_ally_cqb_end", maps\black_ice_util::waittill_trigger_ent, level._allies, maps\_utility::disable_cqbwalk );
maps\black_ice_util::array_thread_targetname( "trig_vignette_interrupt", maps\black_ice_util::waittill_trigger, "notify_vignette_interrupt" );
maps\black_ice_util::array_thread_targetname( "trig_ally_catchup", maps\black_ice_util::ally_catchup, level._allies );
thread objectives();
thread oil_pumps_animate();
thread flarestack_swap();
thread maps\black_ice_fx::fx_init();
setdvar( "music_enable", 1 );
}
mission_flag_inits()
{
maps\black_ice_swim::section_flag_inits();
maps\black_ice_camp::section_flag_inits();
maps\black_ice_ascend::section_flag_inits();
maps\black_ice_catwalks::section_flag_inits();
maps\black_ice_flarestack::section_flag_inits();
maps\black_ice_refinery::section_flag_inits();
maps\black_ice_tanks_to_mud_pumps::section_flag_inits();
maps\black_ice_pipe_deck::section_flag_inits();
maps\black_ice_command::section_flag_inits();
maps\black_ice_exfil::section_flag_inits();
}
mission_post_inits()
{
maps\black_ice_swim::section_post_inits();
maps\black_ice_camp::section_post_inits();
maps\black_ice_catwalks::section_post_inits();
maps\black_ice_flarestack::section_post_inits();
maps\black_ice_refinery::section_post_inits();
maps\black_ice_tanks_to_mud_pumps::section_post_inits();
maps\black_ice_pipe_deck::section_post_inits();
maps\black_ice_command::section_post_inits();
maps\black_ice_exfil::section_post_inits();
}
mission_precache()
{
precacheitem( "aps_underwater" );
precacheitem( "r5rgp" );
precacheitem( "sc2010" );
precacheitem( "p226" );
precacheitem( "test_detonator_black_ice" );
precacheshellshock( "blackice_nosound" );
precacheshellshock( "default" );
precacheshellshock( "slowview" );
precacherumble( "tank_rumble" );
precacherumble( "helo_ladder_swing" );
precacherumble( "hind_flyover" );
precacherumble( "lever_feedback_light" );
precacherumble( "lever_feedback_heavy" );
precacheitem( "hellfire_missile_af_caves" );
precachemodel( "weapon_p226" );
precachemodel( "viewhands_us_udt" );
precachemodel( "viewhands_player_us_udt" );
objective_string_precache();
maps\black_ice_precache::main();
maps\black_ice_swim::section_precache();
maps\black_ice_camp::section_precache();
maps\black_ice_ascend::section_precache();
maps\black_ice_catwalks::section_precache();
maps\black_ice_flarestack::section_precache();
maps\black_ice_refinery::section_precache();
maps\black_ice_tanks_to_mud_pumps::section_precache();
maps\black_ice_pipe_deck::section_precache();
maps\black_ice_command::section_precache();
maps\black_ice_exfil::section_precache();
}
a_globals()
{
level._enemies = [];
level._allies = [];
level._bravo = [];
level._vehicles = [];
getdvarint( "bi_command_pressure_trial", 0 );
setdvar( "bi_command_pressure_trial", 0 );
}
threat_group_inits()
{
createthreatbiasgroup( "bravo" );
createthreatbiasgroup( "player" );
createthreatbiasgroup( "bc_lmg" );
createthreatbiasgroup( "bc_killme" );
createthreatbiasgroup( "cw_low_balcony" );
createthreatbiasgroup( "ignore_allies" );
setignoremegroup( "allies", "ignore_allies" );
setignoremegroup( "ignore_allies", "allies" );
createthreatbiasgroup( "ignore_bravo" );
setignoremegroup( "bravo", "ignore_bravo" );
}
vision_sets()
{
maps\black_ice_util::vision_watcher( "flag_vision_campinteriors", "black_ice_tent_interior", 1, "black_ice_basecamp", 1 );
maps\black_ice_util::vision_watcher( "flag_vision_refinery_to_tanks", "", 0, "", 0 );
thread maps\black_ice_util::flag_watcher( "flag_vision_engine_room", ::vision_engine_room_start, ::vision_engine_room_end );
thread maps\black_ice_util::flag_watcher( "flag_vision_mudpumps", ::vision_mudpumps_start, ::vision_mudpumps_end );
maps\black_ice_util::vision_watcher( "flag_vision_pipedeck_off", "", 0, "", 0 );
maps\black_ice_util::vision_watcher( "flag_vision_pipedeck_on", "black_ice_pipedeck", 0, "black_ice_pipedeck", 0 );
maps\black_ice_util::vision_watcher( "flag_vision_command", "black_ice_command", 3.0, "black_ice", 3.0 );
maps\black_ice_util::vision_watcher( "flag_vision_exfil_deck", "black_ice_exfil_deck", 1.5, "black_ice_flyout", 2.0 );
}
vision_engine_room_start()
{
level.player thread maps\black_ice_tanks_to_mud_pumps::player_smoke_duck();
}
vision_engine_room_end()
{
level.player thread maps\black_ice_tanks_to_mud_pumps::player_smoke_duck_end();
}
vision_mudpumps_start()
{
common_scripts\utility::exploder( "mud_pumps" );
common_scripts\utility::exploder( "mud_pumps_lights" );
maps\_utility::stop_exploder( "engineroom_01" );
}
vision_mudpumps_end()
{
maps\_utility::stop_exploder( "mud_pumps" );
maps\_utility::stop_exploder( "mud_pumps_lights" );
maps\_utility::stop_exploder( "engineroom_02" );
}
start_swim()
{
maps\black_ice_swim::start();
weapon_alt_check();
}
main_swim()
{
thread flarestack_swap( 1 );
maps\black_ice_swim::main();
}
start_camp()
{
thread flarestack_swap( 1 );
maps\black_ice_camp::start();
weapon_alt_check();
}
main_camp()
{
maps\black_ice_camp::main();
}
start_ascend()
{
maps\black_ice_ascend::start();
weapon_alt_check();
}
main_ascend()
{
maps\black_ice_ascend::main();
}
start_catwalks()
{
maps\black_ice_catwalks::start_catwalks();
weapon_alt_check();
}
main_catwalks()
{
maps\black_ice_catwalks::main_catwalks();
}
start_catwalks_end()
{
maps\black_ice_catwalks::start_catwalks_end();
weapon_alt_check();
}
main_catwalks_end()
{
maps\black_ice_catwalks::catwalks_end();
}
start_barracks()
{
maps\black_ice_catwalks::start_barracks();
weapon_alt_check();
}
main_barracks()
{
maps\black_ice_catwalks::main_barracks();
}
start_common()
{
maps\black_ice_catwalks::start_common();
weapon_alt_check();
}
main_common()
{
maps\black_ice_catwalks::main_common();
}
start_flarestack()
{
maps\black_ice_flarestack::start();
weapon_alt_check();
}
main_flarestack()
{
thread transient_load_outro_and_save();
maps\black_ice_flarestack::main();
}
transient_load_outro_and_save()
{
if ( !istransientqueued( "black_ice_outro_tr" ) )
maps\_utility::transient_unloadall_and_load( "black_ice_outro_tr" );
while ( !istransientloaded( "black_ice_outro_tr" ) )
wait( level.timestep );
maps\_utility::autosave_by_name( "flarestack" );
}
start_refinery()
{
maps\black_ice_refinery::start();
weapon_alt_check();
}
main_refinery()
{
maps\_utility::autosave_by_name( "refinery" );
maps\black_ice_refinery::main();
}
start_tanks()
{
maps\black_ice_tanks_to_mud_pumps::start_tanks();
weapon_alt_check();
maps\black_ice_audio::sfx_fire_tower_spawn();
maps\black_ice_refinery::util_derrick_destroy_quick();
}
main_tanks()
{
maps\_utility::autosave_by_name( "tanks" );
synctransients();
maps\black_ice_tanks_to_mud_pumps::main_tanks();
}
start_engine_room()
{
maps\black_ice_tanks_to_mud_pumps::start_engine_room();
weapon_alt_check();
thread maps\black_ice_audio::sfx_fire_tower_spawn();
maps\black_ice_refinery::util_derrick_destroy_quick();
}
main_engine_room()
{
maps\_utility::autosave_by_name( "engine_room" );
maps\black_ice_tanks_to_mud_pumps::main_engine_room();
}
start_mudpumps()
{
maps\black_ice_tanks_to_mud_pumps::start_mudpumps();
weapon_alt_check();
maps\black_ice_audio::sfx_fire_tower_spawn();
maps\black_ice_refinery::util_derrick_destroy_quick();
}
main_mudpumps()
{
maps\_utility::autosave_by_name( "mudpumps" );
maps\black_ice_tanks_to_mud_pumps::main_mudpumps();
}
start_pipe_deck()
{
maps\black_ice_pipe_deck::start();
weapon_alt_check();
thread maps\black_ice_audio::sfx_fire_tower_spawn();
maps\black_ice_refinery::util_derrick_destroy_quick();
}
main_pipe_deck()
{
maps\_utility::autosave_by_name( "pipe_deck" );
maps\black_ice_pipe_deck::main();
}
start_command_outside()
{
maps\black_ice_command::start_outside();
weapon_alt_check();
thread maps\black_ice_audio::sfx_fire_tower_spawn();
maps\black_ice_refinery::util_derrick_destroy_quick();
}
start_command()
{
maps\black_ice_command::start_inside();
weapon_alt_check();
thread maps\black_ice_audio::sfx_fire_tower_spawn();
maps\black_ice_refinery::util_derrick_destroy_quick();
}
main_command()
{
maps\_utility::autosave_by_name( "command" );
maps\black_ice_command::main();
}
start_exfil()
{
maps\black_ice_exfil::start();
weapon_alt_check();
maps\black_ice_refinery::util_derrick_destroy_quick();
}
main_exfil()
{
maps\_utility::autosave_by_name( "exfil" );
maps\black_ice_exfil::main();
}
weapon_alt_check()
{
if ( level.default_weapon == "m4_hybrid_grunt_optim" )
{
level.default_weapon = "alt_" + level.default_weapon;
level.player switchtoweaponimmediate( level.default_weapon );
}
}
objective_string_precache()
{
precachestring( &"BLACK_ICE_OBJ_SWIM_DETONATE" );
precachestring( &"BLACK_ICE_OBJ_CAMP_CLEAR_CAMP" );
precachestring( &"BLACK_ICE_OBJ_ASCEND_ASCEND" );
precachestring( &"BLACK_ICE_OBJ_FLARESTACK_FIGHT_TO" );
precachestring( &"BLACK_ICE_OBJ_FLARESTACK_SHUT_OFF" );
precachestring( &"BLACK_ICE_OBJ_COMMAND_FIGHT_TO" );
precachestring( &"BLACK_ICE_OBJ_COMMAND_DISABLE_SUPPRESSION" );
precachestring( &"BLACK_ICE_OBJ_EXFIL_GET_TO_HELI" );
}
objectives()
{
switch ( level.start_point )
{
case "swim":
level waittill( "notify_swim_dialog5_1" );
objective_add( maps\_utility::obj( "obj_swim_detonate_charges" ), "current", &"BLACK_ICE_OBJ_SWIM_DETONATE" );
common_scripts\utility::flag_wait( "flag_swim_breach_detonate" );
maps\_utility::objective_complete( maps\_utility::obj( "obj_swim_detonate_charges" ) );
case "camp":
level waittill( "bc_player_ready" );
objective_add( maps\_utility::obj( "obj_camp_clear_camp" ), "current", &"BLACK_ICE_OBJ_CAMP_CLEAR_CAMP" );
common_scripts\utility::flag_wait( "flag_camp_cleared" );
wait 2.5;
maps\_utility::objective_complete( maps\_utility::obj( "obj_camp_clear_camp" ) );
case "ascend":
wait 1;
objective_add( maps\_utility::obj( "obj_ascend_ascend" ), "current", &"BLACK_ICE_OBJ_ASCEND_ASCEND" );
level waittill( "notify_ascend_objective_complete" );
maps\_utility::objective_complete( maps\_utility::obj( "obj_ascend_ascend" ) );
case "common_room":
case "barracks":
case "catwalks":
wait 1;
objective_add( maps\_utility::obj( "obj_flarestack_fight_to" ), "current", &"BLACK_ICE_OBJ_FLARESTACK_FIGHT_TO" );
common_scripts\utility::flag_wait( "flag_flarestack_scene_start" );
maps\_utility::objective_complete( maps\_utility::obj( "obj_flarestack_fight_to" ) );
case "flarestack":
level waittill( "notify_activate_flarestack_console" );
objective_add( maps\_utility::obj( "obj_flarestack_shut_off" ), "current", &"BLACK_ICE_OBJ_FLARESTACK_SHUT_OFF" );
level waittill( "notify_flare_stack_off" );
maps\_utility::objective_complete( maps\_utility::obj( "obj_flarestack_shut_off" ) );
common_scripts\utility::flag_wait( "flag_flarestack_end" );
case "pipe_deck":
case "engine_room":
case "tanks":
case "refinery":
objective_add( maps\_utility::obj( "obj_command_fight_to_command_center" ), "current", &"BLACK_ICE_OBJ_COMMAND_FIGHT_TO" );
level waittill( "notify_pipedeck_final_battle_start" );
maps\_utility::objective_complete( maps\_utility::obj( "obj_command_fight_to_command_center" ) );
level waittill( "dialogue_mgs_done" );
objective_add( maps\_utility::obj( "obj_command_take_out_mgs" ), "current", &"BLACK_ICE_OBJ_PIPEDECK_TURRETS" );
common_scripts\utility::flag_wait( "flag_pipe_deck_mgs_down" );
maps\_utility::objective_complete( maps\_utility::obj( "obj_command_take_out_mgs" ) );
case "command_inside":
case "command_outside":
common_scripts\utility::flag_wait( "flag_objective_fire_supression" );
objective_add( maps\_utility::obj( "obj_command_disable_suppression" ), "current", &"BLACK_ICE_OBJ_COMMAND_DISABLE_SUPPRESSION" );
common_scripts\utility::flag_wait( "flag_command_done" );
maps\_utility::objective_complete( maps\_utility::obj( "obj_command_disable_suppression" ) );
case "exfil":
objective_add( maps\_utility::obj( "obj_exfil_get_to_heli" ), "current", &"BLACK_ICE_OBJ_EXFIL_GET_TO_HELI" );
level waittill( "player_ladder_success" );
maps\_utility::objective_complete( maps\_utility::obj( "obj_exfil_get_to_heli" ) );
}
}
oil_pumps_animate()
{
var_0 = getentarray( "oil_pump", "targetname" );
foreach ( var_2 in var_0 )
{
var_2.animname = "oil_pump";
var_2 maps\_utility::assign_animtree();
var_3 = randomfloatrange( 0.5, 2.0 );
var_2 setanim( level.scr_anim["oil_pump"]["motion"], 1.0, 0.1, var_3 );
}
}
trains_periph_logic( var_0, var_1 )
{
var_2 = 6;
for ( var_3 = 0; var_3 < var_2; var_3++ )
{
var_4 = getentarray( "train_" + var_3, "targetname" );
var_5 = getent( "train_control_node_" + var_3, "targetname" );
var_5.init_origin = var_5.origin;
var_5.trains = [];
foreach ( var_7 in var_4 )
{
var_7 show();
var_7 linkto( var_5 );
var_5.trains[var_5.trains.size] = var_7;
}
thread trains_move( var_0, var_5, var_1 );
}
}
trains_move( var_0, var_1, var_2 )
{
wait( var_0 );
var_3 = 288.0;
var_4 = 100.0;
var_5 = getent( "train_target_node", "targetname" );
var_6 = var_3 * level.timestep;
var_7 = var_5.origin - var_1.origin;
while ( lengthsquared( var_7 ) > var_4 )
{
var_7 = var_5.origin - var_1.origin;
var_8 = vectornormalize( var_7 );
var_1.origin = var_1.origin + var_8 * var_6;
wait( level.timestep );
}
if ( var_2 )
{
foreach ( var_10 in var_1.trains )
var_10 delete();
var_1 delete();
}
else
{
foreach ( var_10 in var_1.trains )
var_10 hide();
var_1.origin = var_1.init_origin;
}
}
flarestack_swap( var_0 )
{
var_1 = getentarray( "flamestack_anim", "targetname" );
var_2 = getentarray( "flarestack_optimized", "targetname" );
if ( isdefined( var_0 ) && var_0 )
{
foreach ( var_4 in var_1 )
var_4 hide();
foreach ( var_4 in var_2 )
var_4 show();
}
else
{
foreach ( var_4 in var_2 )
var_4 hide();
foreach ( var_4 in var_1 )
var_4 show();
}
}
introscreen()
{
level.player freezecontrols( 1 );
level.player common_scripts\utility::delaycall( 2, ::freezecontrols, 0 );
maps\_introscreen::introscreen( 1 );
}
set_default_mb_values()
{
if ( !level.ps4 )
{
setsaveddvar( "r_mbEnable", 2 );
setsaveddvar( "r_mbFastEnable", 1 );
setsaveddvar( "r_mbFastPreset", 2 );
setsaveddvar( "r_mbCameraRotationInfluence", 0.07 );
setsaveddvar( "r_mbCameraTranslationInfluence", 0.15 );
setsaveddvar( "r_mbModelVelocityScalar", 0.5 );
setsaveddvar( "r_mbStaticVelocityScalar", 0.2 );
setsaveddvar( "r_mbViewModelEnable", 1 );
setsaveddvar( "r_mbViewModelVelocityScalar", 0.004 );
}
}