321 lines
12 KiB
Plaintext
321 lines
12 KiB
Plaintext
|
#include maps\_vehicle;
|
||
|
#include maps\_vehicle_aianim;
|
||
|
#using_animtree( "vehicles" );
|
||
|
|
||
|
/*QUAKED script_vehicle_littlebird_armed (1 0 0) (-16 -16 -24) (16 16 32) USABLE SPAWNER
|
||
|
|
||
|
valid ai groups are:
|
||
|
"first_guys" - left and right side guys that need to be on first
|
||
|
"left" - all left guys
|
||
|
"right" - all right guys
|
||
|
"passengers" - everybody that can unload
|
||
|
"default"
|
||
|
|
||
|
put this in your GSC:
|
||
|
maps\_littlebird::main( "vehicle_little_bird_armed" );
|
||
|
|
||
|
and these lines in your CSV:
|
||
|
include,vehicle_littlebird_armed
|
||
|
sound,vehicle_littlebird,vehicle_standard,all_sp
|
||
|
include,_attack_heli
|
||
|
|
||
|
|
||
|
defaultmdl="vehicle_little_bird_armed"
|
||
|
default:"vehicletype" "littlebird"
|
||
|
default:"script_team" "axis"
|
||
|
*/
|
||
|
|
||
|
/*QUAKED script_vehicle_littlebird_bench (1 0 0) (-16 -16 -24) (16 16 32) USABLE SPAWNER
|
||
|
|
||
|
valid ai groups are:
|
||
|
"first_guys" - left and right side guys that need to be on first
|
||
|
"left" - all left guys
|
||
|
"right" - all right guys
|
||
|
"passengers" - everybody that can unload
|
||
|
"default"
|
||
|
|
||
|
put this in your GSC:
|
||
|
maps\_littlebird::main( "vehicle_little_bird_bench" );
|
||
|
|
||
|
and these lines in your CSV:
|
||
|
include,vehicle_littlebird_bench
|
||
|
sound,vehicle_littlebird,vehicle_standard,all_sp
|
||
|
|
||
|
defaultmdl="vehicle_little_bird_bench"
|
||
|
default:"vehicletype" "littlebird"
|
||
|
default:"script_team" "axis"
|
||
|
*/
|
||
|
|
||
|
|
||
|
armed( model )
|
||
|
{
|
||
|
return model == "vehicle_little_bird_armed";
|
||
|
}
|
||
|
|
||
|
main( model, type )
|
||
|
{
|
||
|
if ( armed( model ) )
|
||
|
{
|
||
|
maps\_attack_heli::preLoad();
|
||
|
}
|
||
|
|
||
|
build_template( "littlebird", model, type );
|
||
|
build_localinit( ::init_local );
|
||
|
build_deathmodel( "vehicle_little_bird_armed" );
|
||
|
build_deathmodel( "vehicle_little_bird_bench" );
|
||
|
build_drive( %mi28_rotors, undefined, 0, 3.0 );
|
||
|
|
||
|
//Bullet damage Crash and Burn, spins out of control and explodes when it reaches destination
|
||
|
build_deathfx( "explosions/helicopter_explosion_secondary_small", "tag_engine", "littlebird_helicopter_secondary_exp", undefined, undefined, undefined, 0.0, true );
|
||
|
build_deathfx( "fire/fire_smoke_trail_L", "tag_engine", "littlebird_helicopter_dying_loop", true, 0.05, true, 0.5, true );
|
||
|
build_deathfx( "explosions/helicopter_explosion_secondary_small", "tag_engine", "littlebird_helicopter_secondary_exp", undefined, undefined, undefined, 2.5, true );
|
||
|
build_deathfx( "explosions/helicopter_explosion_little_bird", undefined, "littlebird_helicopter_crash", undefined, undefined, undefined, - 1, undefined, "stop_crash_loop_sound" );
|
||
|
|
||
|
//Death by Rocket effects, explodes immediatly
|
||
|
build_rocket_deathfx( "explosions/aerial_explosion_littlebird", "tag_deathfx", "littlebird_helicopter_crash",undefined, undefined, undefined, undefined, true, undefined, 0 );
|
||
|
|
||
|
build_deathquake( 0.8, 1.6, 2048 );
|
||
|
build_treadfx();
|
||
|
build_life( 799 );
|
||
|
build_team( "axis" );
|
||
|
build_mainturret();
|
||
|
build_unload_groups( ::unload_groups );
|
||
|
build_aianims( ::setanims, ::set_vehicle_anims ); //hi this is text
|
||
|
|
||
|
randomStartDelay = randomfloatrange( 0, 1 );
|
||
|
build_light( model, "white_blink", "TAG_LIGHT_BELLY", "misc/aircraft_light_white_blink", "running", randomStartDelay );
|
||
|
build_light( model, "red_blink1", "TAG_LIGHT_TAIL1", "misc/aircraft_light_red_blink", "running", randomStartDelay );
|
||
|
build_light( model, "red_blink2", "TAG_LIGHT_TAIL2", "misc/aircraft_light_red_blink", "running", randomStartDelay );
|
||
|
|
||
|
mapname = getdvar( "mapname" );
|
||
|
if ( !isdefined( level.script ) )
|
||
|
level.script = tolower( mapname );
|
||
|
|
||
|
turret = "minigun_littlebird_spinnup";
|
||
|
if ( use_old_turret() )
|
||
|
turret = "minigun_littlebird";
|
||
|
|
||
|
build_turret( turret, "TAG_MINIGUN_ATTACH_LEFT", "vehicle_little_bird_minigun_left" );
|
||
|
build_turret( turret, "TAG_MINIGUN_ATTACH_RIGHT", "vehicle_little_bird_minigun_right" );
|
||
|
}
|
||
|
|
||
|
use_old_turret()
|
||
|
{
|
||
|
return ( issubstr( level.script, "oilrig" ) );
|
||
|
}
|
||
|
|
||
|
init_local()
|
||
|
{
|
||
|
self endon( "death" );
|
||
|
self.originheightoffset = distance( self gettagorigin( "tag_origin" ), self gettagorigin( "tag_ground" ) );// TODO - FIXME: this is ugly. Derive from distance between tag_origin and tag_base or whatever that tag was.
|
||
|
//self.delete_on_death = true;
|
||
|
self.script_badplace = false;// All helicopters dont need to create bad places
|
||
|
self.dontDisconnectPaths = true; //so it can land. pathing through heli's generally not a problem
|
||
|
|
||
|
// set ent flag prep_unload before the unload node.
|
||
|
self thread littlebird_landing();
|
||
|
thread maps\_vehicle::lights_on( "running" );
|
||
|
|
||
|
waittillframeend; // wait for turrets to get setup
|
||
|
|
||
|
if ( !use_old_turret() )
|
||
|
{
|
||
|
foreach ( turret in self.mgturret )
|
||
|
{
|
||
|
turret Setautorotationdelay( 4 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( armed( self.model ) )
|
||
|
return;
|
||
|
|
||
|
|
||
|
self mgOff();
|
||
|
foreach ( turret in self.mgturret )
|
||
|
{
|
||
|
turret hide();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
set_vehicle_anims( positions )
|
||
|
{
|
||
|
return positions;
|
||
|
}
|
||
|
|
||
|
#using_animtree( "generic_human" );
|
||
|
setanims()
|
||
|
{
|
||
|
level.scr_anim[ "generic" ][ "stage_littlebird_right" ] = %little_bird_premount_guy3;
|
||
|
level.scr_anim[ "generic" ][ "stage_littlebird_left" ] = %little_bird_premount_guy3;
|
||
|
|
||
|
positions = [];
|
||
|
for ( i = 0;i < 8;i++ )
|
||
|
positions[ i ] = spawnstruct();
|
||
|
|
||
|
positions[ 0 ].sittag = "tag_pilot1";
|
||
|
positions[ 1 ].sittag = "tag_pilot2";
|
||
|
positions[ 2 ].sittag = "tag_detach_right";
|
||
|
positions[ 3 ].sittag = "tag_detach_right";
|
||
|
positions[ 4 ].sittag = "tag_detach_right";
|
||
|
positions[ 5 ].sittag = "tag_detach_left";
|
||
|
positions[ 6 ].sittag = "tag_detach_left";
|
||
|
positions[ 7 ].sittag = "tag_detach_left";
|
||
|
|
||
|
positions[ 0 ].idle[ 0 ] = %helicopter_pilot1_idle;
|
||
|
positions[ 0 ].idle[ 1 ] = %helicopter_pilot1_twitch_clickpannel;
|
||
|
positions[ 0 ].idle[ 2 ] = %helicopter_pilot1_twitch_lookback;
|
||
|
positions[ 0 ].idle[ 3 ] = %helicopter_pilot1_twitch_lookoutside;
|
||
|
positions[ 0 ].idleoccurrence[ 0 ] = 500;
|
||
|
positions[ 0 ].idleoccurrence[ 1 ] = 100;
|
||
|
positions[ 0 ].idleoccurrence[ 2 ] = 100;
|
||
|
positions[ 0 ].idleoccurrence[ 3 ] = 100;
|
||
|
|
||
|
positions[ 1 ].idle[ 0 ] = %helicopter_pilot2_idle;
|
||
|
positions[ 1 ].idle[ 1 ] = %helicopter_pilot2_twitch_clickpannel;
|
||
|
positions[ 1 ].idle[ 2 ] = %helicopter_pilot2_twitch_lookoutside;
|
||
|
positions[ 1 ].idle[ 3 ] = %helicopter_pilot2_twitch_radio;
|
||
|
positions[ 1 ].idleoccurrence[ 0 ] = 450;
|
||
|
positions[ 1 ].idleoccurrence[ 1 ] = 100;
|
||
|
positions[ 1 ].idleoccurrence[ 2 ] = 100;
|
||
|
positions[ 1 ].idleoccurrence[ 3 ] = 100;
|
||
|
|
||
|
positions[ 2 ].idle[ 0 ] = %little_bird_casual_idle_guy1;
|
||
|
positions[ 3 ].idle[ 0 ] = %little_bird_casual_idle_guy3;
|
||
|
positions[ 4 ].idle[ 0 ] = %little_bird_casual_idle_guy2;
|
||
|
positions[ 5 ].idle[ 0 ] = %little_bird_casual_idle_guy1;
|
||
|
positions[ 6 ].idle[ 0 ] = %little_bird_casual_idle_guy3;
|
||
|
positions[ 7 ].idle[ 0 ] = %little_bird_casual_idle_guy2;
|
||
|
positions[ 2 ].idleoccurrence[ 0 ] = 100;
|
||
|
positions[ 3 ].idleoccurrence[ 0 ] = 166;
|
||
|
positions[ 4 ].idleoccurrence[ 0 ] = 122;
|
||
|
positions[ 5 ].idleoccurrence[ 0 ] = 177;
|
||
|
positions[ 6 ].idleoccurrence[ 0 ] = 136;
|
||
|
positions[ 7 ].idleoccurrence[ 0 ] = 188;
|
||
|
|
||
|
positions[ 2 ].idle[ 1 ] = %little_bird_aim_idle_guy1;
|
||
|
positions[ 3 ].idle[ 1 ] = %little_bird_aim_idle_guy3;
|
||
|
positions[ 4 ].idle[ 1 ] = %little_bird_aim_idle_guy2;
|
||
|
positions[ 5 ].idle[ 1 ] = %little_bird_aim_idle_guy1;
|
||
|
// positions[ 6 ].idle[ 1 ] = %little_bird_aim_idle_guy3;
|
||
|
positions[ 7 ].idle[ 1 ] = %little_bird_aim_idle_guy2;
|
||
|
positions[ 2 ].idleoccurrence[ 1 ] = 200;
|
||
|
positions[ 3 ].idleoccurrence[ 1 ] = 266;
|
||
|
positions[ 4 ].idleoccurrence[ 1 ] = 156;
|
||
|
positions[ 5 ].idleoccurrence[ 1 ] = 277;
|
||
|
// positions[ 6 ].idleoccurrence[ 1 ] = 246;
|
||
|
positions[ 7 ].idleoccurrence[ 1 ] = 288;
|
||
|
|
||
|
positions[ 2 ].idle_alert = %little_bird_alert_idle_guy1;
|
||
|
positions[ 3 ].idle_alert = %little_bird_alert_idle_guy3;
|
||
|
positions[ 4 ].idle_alert = %little_bird_alert_idle_guy2;
|
||
|
|
||
|
positions[ 5 ].idle_alert = %little_bird_alert_idle_guy1;
|
||
|
positions[ 6 ].idle_alert = %little_bird_alert_idle_guy3;
|
||
|
positions[ 7 ].idle_alert = %little_bird_alert_idle_guy2;
|
||
|
|
||
|
positions[ 2 ].idle_alert_to_casual = %little_bird_alert_2_aim_guy1;
|
||
|
positions[ 3 ].idle_alert_to_casual = %little_bird_alert_2_aim_guy3;
|
||
|
positions[ 4 ].idle_alert_to_casual = %little_bird_alert_2_aim_guy2;
|
||
|
|
||
|
positions[ 5 ].idle_alert_to_casual = %little_bird_alert_2_aim_guy1;
|
||
|
positions[ 6 ].idle_alert_to_casual = %little_bird_alert_2_aim_guy3;
|
||
|
positions[ 7 ].idle_alert_to_casual = %little_bird_alert_2_aim_guy2;
|
||
|
|
||
|
positions[ 2 ].getout = %little_bird_dismount_guy1;
|
||
|
positions[ 3 ].getout = %little_bird_dismount_guy3;
|
||
|
positions[ 4 ].getout = %little_bird_dismount_guy2;
|
||
|
positions[ 5 ].getout = %little_bird_dismount_guy1;
|
||
|
positions[ 6 ].getout = %little_bird_dismount_guy3;
|
||
|
positions[ 7 ].getout = %little_bird_dismount_guy2;
|
||
|
|
||
|
positions[ 2 ].littlebirde_getout_unlinks = true;
|
||
|
positions[ 3 ].littlebirde_getout_unlinks = true;
|
||
|
positions[ 4 ].littlebirde_getout_unlinks = true;
|
||
|
|
||
|
positions[ 5 ].littlebirde_getout_unlinks = true;
|
||
|
positions[ 6 ].littlebirde_getout_unlinks = true;
|
||
|
positions[ 7 ].littlebirde_getout_unlinks = true;
|
||
|
|
||
|
positions[ 2 ].getin = %little_bird_mount_guy1;
|
||
|
positions[ 2 ].getin_enteredvehicletrack = "mount_finish";
|
||
|
positions[ 3 ].getin = %little_bird_mount_guy3;
|
||
|
positions[ 3 ].getin_enteredvehicletrack = "mount_finish";
|
||
|
positions[ 4 ].getin = %little_bird_mount_guy2;
|
||
|
positions[ 4 ].getin_enteredvehicletrack = "mount_finish";
|
||
|
positions[ 5 ].getin = %little_bird_mount_guy1;
|
||
|
positions[ 5 ].getin_enteredvehicletrack = "mount_finish";
|
||
|
positions[ 6 ].getin = %little_bird_mount_guy3;
|
||
|
positions[ 6 ].getin_enteredvehicletrack = "mount_finish";
|
||
|
positions[ 7 ].getin = %little_bird_mount_guy2;
|
||
|
positions[ 7 ].getin_enteredvehicletrack = "mount_finish";
|
||
|
|
||
|
positions[ 2 ].getin_idle_func = ::guy_idle_alert;
|
||
|
positions[ 3 ].getin_idle_func = ::guy_idle_alert;
|
||
|
positions[ 4 ].getin_idle_func = ::guy_idle_alert;
|
||
|
positions[ 5 ].getin_idle_func = ::guy_idle_alert;
|
||
|
positions[ 6 ].getin_idle_func = ::guy_idle_alert;
|
||
|
positions[ 7 ].getin_idle_func = ::guy_idle_alert;
|
||
|
|
||
|
positions[ 2 ].pre_unload = %little_bird_aim_2_prelanding_guy1;
|
||
|
positions[ 3 ].pre_unload = %little_bird_aim_2_prelanding_guy3;
|
||
|
positions[ 4 ].pre_unload = %little_bird_aim_2_prelanding_guy2;
|
||
|
|
||
|
positions[ 5 ].pre_unload = %little_bird_aim_2_prelanding_guy1;
|
||
|
positions[ 6 ].pre_unload = %little_bird_aim_2_prelanding_guy3;
|
||
|
positions[ 7 ].pre_unload = %little_bird_aim_2_prelanding_guy2;
|
||
|
|
||
|
positions[ 2 ].pre_unload_idle = %little_bird_prelanding_idle_guy1;
|
||
|
positions[ 3 ].pre_unload_idle = %little_bird_prelanding_idle_guy3;
|
||
|
positions[ 4 ].pre_unload_idle = %little_bird_prelanding_idle_guy2;
|
||
|
|
||
|
positions[ 5 ].pre_unload_idle = %little_bird_prelanding_idle_guy1;
|
||
|
positions[ 6 ].pre_unload_idle = %little_bird_prelanding_idle_guy3;
|
||
|
positions[ 7 ].pre_unload_idle = %little_bird_prelanding_idle_guy2;
|
||
|
|
||
|
positions[ 0 ].bHasGunWhileRiding = false;
|
||
|
positions[ 1 ].bHasGunWhileRiding = false;
|
||
|
|
||
|
return positions;
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
unload_groups()
|
||
|
{
|
||
|
unload_groups = [];
|
||
|
unload_groups[ "first_guy_left" ] = [];
|
||
|
unload_groups[ "first_guy_right" ] = [];
|
||
|
|
||
|
unload_groups[ "left" ] = [];
|
||
|
unload_groups[ "right" ] = [];
|
||
|
unload_groups[ "passengers" ] = [];
|
||
|
unload_groups[ "default" ] = [];
|
||
|
|
||
|
unload_groups[ "first_guy_left" ][ 0 ] = 5;
|
||
|
unload_groups[ "first_guy_right" ][ 0 ] = 2;
|
||
|
|
||
|
unload_groups[ "stage_guy_left" ][ 0 ] = 7;
|
||
|
unload_groups[ "stage_guy_right" ][ 0 ] = 4;
|
||
|
|
||
|
unload_groups[ "left" ][ unload_groups[ "left" ].size ] = 5;
|
||
|
unload_groups[ "left" ][ unload_groups[ "left" ].size ] = 6;
|
||
|
unload_groups[ "left" ][ unload_groups[ "left" ].size ] = 7;
|
||
|
|
||
|
unload_groups[ "right" ][ unload_groups[ "right" ].size ] = 2;
|
||
|
unload_groups[ "right" ][ unload_groups[ "right" ].size ] = 3;
|
||
|
unload_groups[ "right" ][ unload_groups[ "right" ].size ] = 4;
|
||
|
|
||
|
unload_groups[ "passengers" ][ unload_groups[ "passengers" ].size ] = 2;
|
||
|
unload_groups[ "passengers" ][ unload_groups[ "passengers" ].size ] = 3;
|
||
|
unload_groups[ "passengers" ][ unload_groups[ "passengers" ].size ] = 4;
|
||
|
unload_groups[ "passengers" ][ unload_groups[ "passengers" ].size ] = 5;
|
||
|
unload_groups[ "passengers" ][ unload_groups[ "passengers" ].size ] = 6;
|
||
|
unload_groups[ "passengers" ][ unload_groups[ "passengers" ].size ] = 7;
|
||
|
|
||
|
unload_groups[ "default" ] = unload_groups[ "passengers" ];
|
||
|
|
||
|
return unload_groups;
|
||
|
}
|
||
|
|