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

191 lines
6.6 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
catchup_function()
{
var_0 = [ "landing_zpus" ];
foreach ( var_2 in var_0 )
maps\_utility::array_delete( getentarray( var_2, "targetname" ) );
maps\oilrocks_apache_code::spawn_apache_allies( "apache_landing_ally_0" );
maps\oilrocks_apache_code::spawn_blackhawk_ally( "apache_landing_blackhawk_ally", undefined, undefined, 0 );
common_scripts\utility::flag_set( "FLAG_apache_factory_finished" );
}
start()
{
level.player setclienttriggeraudiozone( "oilrocks_heli_gunner", 0.1 );
maps\oilrocks_apache_code::spawn_apache_allies( "apache_landing_ally_0" );
var_0 = maps\oilrocks_code::spawn_apache_player( "apache_landing" );
maps\oilrocks_apache_code::spawn_blackhawk_ally( "apache_landing_blackhawk_ally", undefined, undefined, 1 );
var_0 maps\_chopperboss_utility::chopper_boss_locs_monitor_disable_turn_off();
}
main()
{
maps\oilrocks_apache_code::send_apaches_to_hangout( "hangout_volume_landingzone" );
thread maps\_utility::smart_radio_dialogue( "oilrocks_hp5_youllneedtoengage" );
thread blackhawk_idle_next_to_factory();
var_0 = objective_player_clears_landing();
thread maps\_utility::autosave_by_name();
thread maps\oilrocks_apache_code::objective_protect_start();
var_1 = getent( "apache_landing_gate", "targetname" );
var_2 = var_1.origin;
blackhawk_landing( var_0, var_1, var_2 );
var_1 moveto( var_2, 2, 0.25, 0.25 );
maps\oilrocks_apache_code::objective_protect_complete();
}
blackhawk_idle_next_to_factory()
{
var_0 = maps\oilrocks_apache_code::get_blackhawk_ally();
if ( var_0 maps\_utility::ent_flag_exist( "blackhawk_reached_end" ) && var_0 maps\_utility::ent_flag( "blackhawk_reached_end" ) )
{
var_1 = common_scripts\utility::getstruct( "apache_landing_blackhawk_ally", "targetname" );
var_0 thread maps\_vehicle::vehicle_paths( var_1 );
}
}
_precache()
{
precachemodel( "vehicle_gaz_tigr_base_destroyed_oilrocks" );
common_scripts\utility::flag_init( "landing_finished" );
}
objective_player_clears_landing()
{
var_0 = maps\_utility::obj( "apache_landing_killingeverythings" );
objective_add( var_0, "active", &"OILROCKS_OBJ_CLEAR_THE_LANDING" );
objective_current( var_0 );
objective_position( var_0, common_scripts\utility::getstruct( "objective_pos_kill_everything", "targetname" ).origin );
var_1 = maps\_utility::array_spawn_targetname( "landing_spawn_wave1", undefined, 1, 1 );
maps\oilrocks_apache_code::spawn_vehicles_from_targetname_prunespawning( "landing_zpus" );
var_2 = get_landing_zpus();
if ( var_2.size )
maps\_utility::waittill_dead( var_2 );
var_1 = maps\_utility::array_removedead_or_dying( var_1 );
if ( var_1.size )
maps\_utility::waittill_dead( var_1, 6 );
return var_0;
}
get_landing_zpus()
{
var_0 = [];
var_1 = common_scripts\utility::getstruct( "infantry_player_start", "targetname" );
var_2 = squared( 1700 );
var_3 = vehicle_getarray();
foreach ( var_5 in var_3 )
{
if ( distancesquared( var_5.origin, var_1.origin ) < var_2 )
{
if ( isalive( var_5 ) && var_5.classname == "script_vehicle_zpu4_oilrocks" )
var_0[var_0.size] = var_5;
}
}
return var_0;
}
blackhawk_landing( var_0, var_1, var_2 )
{
var_3 = maps\oilrocks_apache_code::get_blackhawk_ally();
var_3 notify( "stop_kicking_up_dust" );
var_3 thread maps\_vehicle_code::aircraft_wash_thread();
var_4 = getent( "trigger_landing_zone", "targetname" );
var_3 settargetyaw( var_4.angles[1] );
var_5 = maps\_utility::groundpos( maps\_utility::add_z( var_4.origin, 200 ) );
var_5 = maps\_utility::add_z( var_5, 300 );
var_6 = spawnstruct();
var_6.origin = var_5;
var_7 = distance( var_3 gettagorigin( "tag_origin" ), var_3 gettagorigin( "tag_ground" ) );
var_6.origin = maps\_utility::add_z( var_6.origin, var_7 );
var_6.angles = var_4.angles;
if ( var_3 maps\_utility::ent_flag_exist( "blackhawk_reached_end" ) )
var_3 maps\_utility::ent_flag_wait( "blackhawk_reached_end" );
var_8 = ( var_6.origin + var_3.origin ) * 0.5;
var_3 setvehgoalpos( var_8, 1 );
var_3 vehicle_setspeed( 70, 33, 33 );
wait 2;
var_1 moveto( maps\_utility::add_z( var_2, 160 ), 2, 0.25, 0.25 );
spawn_gaz( var_0 );
var_3 setvehgoalpos( var_5, 1 );
var_3 vehicle_setspeed( 70, 33, 33 );
var_3 sethoverparams( 0, 0, 55 );
var_3 waittill( "goal" );
var_3 thread blackhawk_unloads_and_takes_off( var_6 );
kill_enemies_touching_trigger( getent( "landing_kill_enemies", "targetname" ) );
thread maps\_utility::autosave_by_name();
maps\_utility::smart_radio_dialogue_interrupt( "oilrocks_hp2_thanksforthehelp" );
wait 0.5;
maps\oilrocks_code::camlanding_from_apache( "camlanding" );
level.player clearclienttriggeraudiozone( 0.8 );
level.heroguy delete();
level.heroguy = undefined;
level.infantry_guys = maps\oilrocks_code::array_remove_undefined_dead_or_dying( level.infantry_guys );
}
spawn_gaz( var_0 )
{
var_1 = maps\_vehicle::spawn_vehicles_from_targetname_and_drive( "apache_landing_gaz" );
common_scripts\utility::array_thread( var_1, ::landing_gaz_stuff );
var_2 = [];
foreach ( var_4 in var_1 )
{
if ( var_4.riders.size )
var_2 = common_scripts\utility::array_combine( var_2, var_4.riders );
}
maps\_utility::waittill_dead( var_2 );
maps\_utility::objective_complete( var_0 );
}
landing_gaz_stuff()
{
maps\_vehicle::godon();
self.custom_death_script = ::gaz_custom_death;
self waittill( "reached_end_node" );
maps\_vehicle::godoff();
}
gaz_custom_death()
{
self.skipanimbaseddeath = 1;
self.skipmodelswapdeath = 1;
playfxontag( loadfx( "fx/explosions/helicopter_explosion_hind_oilrocks_primary" ), self, "tag_body" );
wait 0.4;
self setmodel( "vehicle_gaz_tigr_base_destroyed_oilrocks" );
self disconnectpaths();
}
blackhawk_unloads_and_takes_off( var_0 )
{
self.originheightoffset = distance( self gettagorigin( "tag_origin" ), self gettagorigin( "tag_ground" ) );
var_0 vehicle_scripts\silenthawk_landing::silenthawk_lands_and_unloads( self );
var_1 = common_scripts\utility::getstruct( "blackhawk_exist_landing", "targetname" );
self waittill( "unloaded" );
maps\oilrocks_code::assign_friendly_heros();
maps\_vehicle::vehicle_paths( var_1 );
}
kill_enemies_touching_trigger( var_0 )
{
var_1 = getaiarray( "axis" );
foreach ( var_3 in var_1 )
{
if ( var_3 istouching( var_0 ) )
var_3 kill();
}
}