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

225 lines
7.4 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
catchup_function()
{
common_scripts\utility::flag_set( "FLAG_apache_tut_fly_dialogue_finished" );
thread maps\oilrocks_proximity_spawned_vehicles::main();
thread maps\oilrocks_proximity_spawned_ai::main();
thread maps\_utility::music_play( "mus_oilrocks_intro" );
}
start()
{
level.player setclienttriggeraudiozone( "oilrocks_heli_gunner", 0.1 );
level.player.participation = 1000;
var_0 = maps\oilrocks_code::spawn_apache_player( "apache_tutorial_fly" );
maps\oilrocks_apache_code::spawn_blackhawk_ally( "struct_blackhawk_ally_fly_in" );
maps\oilrocks_apache_code::spawn_apache_allies( "struct_apache_ally_fly_in_0" );
setsaveddvar( "vehHelicopterMaxPitch", 6.0 );
setsaveddvar( "vehHelicopterPitchOffset", var_0.heli.pitch_offset_air );
}
main()
{
thread maps\_utility::music_play( "mus_oilrocks_intro" );
thread maps\oilrocks_apache_vo::apache_mission_vo_think( maps\oilrocks_apache_vo::apache_mission_vo_tutorial );
thread maps\oilrocks_apache_hints::apache_hints_tutorial();
common_scripts\utility::flag_wait( "introscreen_complete" );
level notify( "start_opening_birds" );
thread apache_tutorial_fly_reactive_foliage();
thread apache_tutorial_fly_allies();
thread apache_tutorial_fly_move_until_input();
thread apache_tutorial_fly_player_pitch_think();
thread maps\oilrocks_proximity_spawned_vehicles::main();
thread maps\oilrocks_proximity_spawned_ai::main();
objectives();
}
objectives()
{
var_0 = maps\_utility::obj( "tutorial" );
objective_add( var_0, "active", &"OILROCKS_OBJ_TUTORIAL" );
objective_current( var_0 );
common_scripts\utility::flag_wait( "FLAG_apache_tut_fly_finished" );
maps\_utility::objective_complete( var_0 );
}
apache_tutorial_fly_reactive_foliage()
{
setsaveddvar( "r_reactiveMotionHelicopterLimit", 4 );
setsaveddvar( "r_reactiveMotionHelicopterRadius", 1200 );
setsaveddvar( "r_reactiveMotionHelicopterStrength", 30 );
common_scripts\utility::flag_wait( "FLAG_apache_tut_fly_finished" );
wait 10;
setsaveddvar( "r_reactiveMotionHelicopterLimit", 1 );
}
apache_tutorial_fly_player_pitch_think()
{
var_0 = maps\oilrocks_apache_code::get_apache_player();
var_1 = var_0.heli.owner;
var_1 endon( "death" );
common_scripts\utility::flag_wait( "FLAG_apache_tut_fly_half" );
thread maps\_utility::lerp_saveddvar( "vehHelicopterMaxPitch", var_0.heli.pitch_max, 6.0 );
}
apache_tutorial_fly_allies()
{
var_0 = common_scripts\utility::array_combine( maps\oilrocks_apache_code::get_apache_allies(), [ maps\oilrocks_apache_code::get_blackhawk_ally() ] );
foreach ( var_2 in var_0 )
{
var_3 = undefined;
if ( issubstr( var_2.targetname, "apache" ) )
var_3 = common_scripts\utility::getstruct( "apache_ally_fly_in_path_0" + var_2 maps\oilrocks_apache_code::get_apache_ally_id(), "targetname" );
else
var_3 = common_scripts\utility::getstruct( "blackhaw_fly_in_path", "targetname" );
var_2 thread maps\oilrocks_code::chopper_boss_path_override( var_3 );
}
common_scripts\utility::array_call( var_0, ::vehicle_setspeedimmediate, 90, 90 );
wait 0.1;
common_scripts\utility::array_call( var_0, ::vehicle_setspeed, 90, 35, 35 );
common_scripts\utility::flag_wait( "FLAG_apache_tut_fly_stop_auto_pilot" );
common_scripts\utility::array_call( var_0, ::vehicle_setspeed, 90, 35, 35 );
thread apache_tutorial_fly_allies_govern_speed( var_0 );
}
apache_tutorial_fly_allies_govern_speed( var_0 )
{
level endon( "FLAG_apache_tut_fly_finished" );
thread apache_tutorial_fly_allies_govern_speed_stop( var_0, "FLAG_apache_tut_fly_finished" );
var_1 = maps\oilrocks_apache_code::get_apache_player();
var_2 = squared( 8400 );
var_3 = squared( 4800 );
var_4 = squared( 1800 );
var_5 = var_3 - var_4;
var_6 = 0.25;
var_7 = undefined;
for (;;)
{
var_8 = undefined;
foreach ( var_10 in var_0 )
{
if ( !isdefined( var_8 ) )
{
var_8 = distance2dsquared( var_1.origin, var_10.origin );
continue;
}
var_11 = distance2dsquared( var_1.origin, var_10.origin );
if ( var_11 < var_8 )
var_8 = var_11;
}
var_13 = undefined;
if ( var_8 >= var_2 )
var_13 = 0;
else
{
var_14 = clamp( var_8, var_4, var_3 );
var_15 = 1 - ( var_14 - var_4 ) / var_5;
var_13 = 40 + 80 * var_15;
}
if ( !isdefined( var_7 ) || abs( var_13 - var_7 ) / max( var_7, 0.001 ) > 0.1 )
{
common_scripts\utility::array_call( var_0, ::vehicle_setspeed, var_13, 35, 35 );
var_7 = var_13;
}
wait( var_6 );
}
}
apache_tutorial_fly_allies_govern_speed_stop( var_0, var_1 )
{
common_scripts\utility::flag_wait( var_1 );
common_scripts\utility::array_call( var_0, ::resumespeed, 35 );
}
apache_tutorial_fly_move_until_input( var_0 )
{
var_0 = maps\oilrocks_apache_code::get_apache_player();
var_1 = var_0.heli.owner;
var_1 endon( "death" );
var_1 notifyonplayercommand( "LISTEN_heli_movement_input", "+toggleads_throw" );
var_1 notifyonplayercommand( "LISTEN_heli_movement_input", "+speed_throw" );
var_1 notifyonplayercommand( "LISTEN_heli_movement_input", "+speed" );
var_1 notifyonplayercommand( "LISTEN_heli_movement_input", "+ads_akimbo_accessible" );
var_1 notifyonplayercommand( "LISTEN_heli_movement_input", "-toggleads_throw" );
var_1 notifyonplayercommand( "LISTEN_heli_movement_input", "-speed_throw" );
var_1 notifyonplayercommand( "LISTEN_heli_movement_input", "-speed" );
var_1 notifyonplayercommand( "LISTEN_heli_movement_input", "-ads_akimbo_accessible" );
var_1 notifyonplayercommand( "LISTEN_heli_movement_input", "+smoke" );
var_1 notifyonplayercommand( "LISTEN_heli_movement_input", "-smoke" );
thread apache_owner_notify_on_input_camera( var_0, "LISTEN_heli_movement_input" );
thread apache_owner_notify_on_input_move( var_0, "LISTEN_heli_movement_input" );
thread apache_move_until_notify( var_0, 90, "LISTEN_heli_movement_input", "FLAG_apache_tut_fly_stop_auto_pilot" );
var_1 waittill( "LISTEN_heli_movement_input" );
common_scripts\utility::flag_set( "FLAG_apache_tut_fly_stop_control_hint" );
common_scripts\utility::flag_set( "FLAG_apache_tut_fly_stop_auto_pilot" );
}
apache_move_until_notify( var_0, var_1, var_2, var_3 )
{
if ( isdefined( var_3 ) )
level endon( var_3 );
var_4 = var_0.heli.owner;
if ( isdefined( var_2 ) )
var_4 endon( var_2 );
var_4 endon( "death" );
for (;;)
{
var_0 vehicle_setspeedimmediate( var_1, var_1, var_1 * 0.05 );
wait 0.05;
}
}
apache_owner_notify_on_input_camera( var_0, var_1 )
{
var_2 = var_0.heli.owner;
var_2 endon( var_1 );
for (;;)
{
var_3 = var_2 getnormalizedcameramovement();
if ( max( abs( var_3[0] ), abs( var_3[1] ) ) > 0.2 )
break;
wait 0.05;
}
var_2 notify( var_1 );
}
apache_owner_notify_on_input_move( var_0, var_1 )
{
var_2 = var_0.heli.owner;
var_2 endon( var_1 );
for (;;)
{
var_3 = var_2 getnormalizedmovement();
if ( max( abs( var_3[0] ), abs( var_3[1] ) ) > 0.2 )
break;
wait 0.05;
}
var_2 notify( var_1 );
}