init
This commit is contained in:
294
vehicle_scripts/_a10_warthog.gsc
Normal file
294
vehicle_scripts/_a10_warthog.gsc
Normal file
@ -0,0 +1,294 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "a10_warthog", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
|
||||
if ( var_2 == "script_vehicle_a10_warthog_cheap" || var_2 == "script_vehicle_a10_warthog_cheaper" )
|
||||
maps\_vehicle::build_deathmodel( "vehicle_a10_warthog" );
|
||||
else
|
||||
maps\_vehicle::build_deathmodel( "vehicle_a10_warthog_iw6" );
|
||||
|
||||
level._effect["engineeffect"] = loadfx( "fx/fire/a10_warthog_afterburner" );
|
||||
level._effect["afterburner"] = loadfx( "fx/fire/a10_warthog_afterburner_ignite" );
|
||||
|
||||
if ( var_2 == "script_vehicle_a10_warthog_cheaper" )
|
||||
{
|
||||
level._effect["contrail"] = loadfx( "vfx/gameplay/smoke_trails/vfx_jet_contrail" );
|
||||
maps\_vehicle::build_deathfx( "vfx/gameplay/explosions/vehicle/vfx_lrg_air_exp", undefined, "explo_metal_rand", undefined, undefined, undefined, undefined, undefined, undefined, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
level._effect["contrail"] = loadfx( "fx/smoke/a10_warthog_jet_contrail" );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/large_vehicle_explosion", undefined, "explo_metal_rand", undefined, undefined, undefined, undefined, undefined, undefined, 0 );
|
||||
}
|
||||
|
||||
level._effect["sonicboom"] = loadfx( "fx/smoke/a10_warthog_sonic_boom" );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_rumble( "mig_rumble", 0.1, 0.2, 11300, 0.05, 0.05 );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
var_3 = randomfloatrange( 0, 1 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_green", "TAG_LEFT_WINGTIP", "fx/misc/aircraft_light_wingtip_green", "running", var_3 );
|
||||
maps\_vehicle::build_light( var_2, "tail_green", "TAG_LEFT_TAIL", "fx/misc/aircraft_light_wingtip_green", "running", var_3 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_red", "TAG_RIGHT_WINGTIP", "fx/misc/aircraft_light_wingtip_red", "running", var_3 );
|
||||
maps\_vehicle::build_light( var_2, "tail_red", "TAG_RIGHT_TAIL", "fx/misc/aircraft_light_wingtip_red", "running", var_3 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink", "TAG_LIGHT_BELLY", "fx/misc/aircraft_light_white_blink", "running", var_3 );
|
||||
maps\_vehicle::build_light( var_2, "landing_light01", "TAG_LIGHT_LANDING01", "fx/misc/light_mig29_landing", "landing", 0.0 );
|
||||
maps\_vehicle::build_is_airplane();
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
thread playcontrail();
|
||||
thread landing_gear_up();
|
||||
thread play_sonic_boom();
|
||||
maps\_vehicle::vehicle_lights_on( "running" );
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_1 = "rope_test";
|
||||
precachemodel( var_1 );
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
landing_gear_up()
|
||||
{
|
||||
self useanimtree( #animtree );
|
||||
self setanim( %mig_landing_gear_up );
|
||||
}
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 1; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
return var_0;
|
||||
}
|
||||
|
||||
playengineeffects()
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "stop_engineeffects" );
|
||||
maps\_utility::ent_flag_init( "engineeffects" );
|
||||
maps\_utility::ent_flag_set( "engineeffects" );
|
||||
var_0 = common_scripts\utility::getfx( "engineeffect" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
maps\_utility::ent_flag_wait( "engineeffects" );
|
||||
playfxontag( var_0, self, "tag_engine_right" );
|
||||
playfxontag( var_0, self, "tag_engine_left" );
|
||||
maps\_utility::ent_flag_waitopen( "engineeffects" );
|
||||
stopfxontag( var_0, self, "tag_engine_left" );
|
||||
stopfxontag( var_0, self, "tag_engine_right" );
|
||||
}
|
||||
}
|
||||
|
||||
playafterburner()
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "stop_afterburners" );
|
||||
maps\_utility::ent_flag_init( "afterburners" );
|
||||
maps\_utility::ent_flag_set( "afterburners" );
|
||||
var_0 = common_scripts\utility::getfx( "afterburner" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
maps\_utility::ent_flag_wait( "afterburners" );
|
||||
playfxontag( var_0, self, "tag_engine_right" );
|
||||
playfxontag( var_0, self, "tag_engine_left" );
|
||||
maps\_utility::ent_flag_waitopen( "afterburners" );
|
||||
stopfxontag( var_0, self, "tag_engine_left" );
|
||||
stopfxontag( var_0, self, "tag_engine_right" );
|
||||
}
|
||||
}
|
||||
|
||||
play_sonic_boom()
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "stop_afterburners" );
|
||||
maps\_utility::ent_flag_init( "afterburners" );
|
||||
maps\_utility::ent_flag_set( "afterburners" );
|
||||
var_0 = common_scripts\utility::getfx( "sonicboom" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
maps\_utility::ent_flag_wait( "afterburners" );
|
||||
playfxontag( var_0, self, "TAG_GUN" );
|
||||
maps\_utility::ent_flag_waitopen( "afterburners" );
|
||||
stopfxontag( var_0, self, "TAG_GUN" );
|
||||
}
|
||||
}
|
||||
|
||||
playcontrail()
|
||||
{
|
||||
self endon( "death" );
|
||||
var_0 = common_scripts\utility::getfx( "contrail" );
|
||||
maps\_utility::ent_flag_init( "contrails" );
|
||||
maps\_utility::ent_flag_set( "contrails" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
maps\_utility::ent_flag_wait( "contrails" );
|
||||
playfxontag( var_0, self, "TAG_RIGHT_WINGTIP" );
|
||||
playfxontag( var_0, self, "TAG_LEFT_WINGTIP" );
|
||||
maps\_utility::ent_flag_waitopen( "contrails" );
|
||||
stopfxontag( var_0, self, "TAG_RIGHT_WINGTIP" );
|
||||
stopfxontag( var_0, self, "TAG_LEFT_WINGTIP" );
|
||||
}
|
||||
}
|
||||
|
||||
add_contrail( var_0, var_1 )
|
||||
{
|
||||
var_2 = common_scripts\utility::spawn_tag_origin();
|
||||
var_2.origin = self gettagorigin( var_0 );
|
||||
var_2.angles = self gettagangles( var_0 );
|
||||
var_3 = spawnstruct();
|
||||
var_3.entity = var_2;
|
||||
var_3.forward = -156;
|
||||
var_3.up = 0;
|
||||
var_3.right = 1 * var_1;
|
||||
var_3.yaw = 0;
|
||||
var_3.pitch = 0;
|
||||
var_3 maps\_utility::translate_local();
|
||||
var_2 linkto( self, var_0 );
|
||||
return var_2;
|
||||
}
|
||||
|
||||
playerisclose( var_0 )
|
||||
{
|
||||
var_1 = playerisinfront( var_0 );
|
||||
|
||||
if ( var_1 )
|
||||
var_2 = 1;
|
||||
else
|
||||
var_2 = -1;
|
||||
|
||||
var_3 = common_scripts\utility::flat_origin( var_0.origin );
|
||||
var_4 = var_3 + anglestoforward( common_scripts\utility::flat_angle( var_0.angles ) ) * ( var_2 * 100000 );
|
||||
var_5 = pointonsegmentnearesttopoint( var_3, var_4, level.player.origin );
|
||||
var_6 = distance( var_3, var_5 );
|
||||
|
||||
if ( var_6 < 3000 )
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
playerisinfront( var_0 )
|
||||
{
|
||||
var_1 = anglestoforward( common_scripts\utility::flat_angle( var_0.angles ) );
|
||||
var_2 = vectornormalize( common_scripts\utility::flat_origin( level.player.origin ) - var_0.origin );
|
||||
var_3 = vectordot( var_1, var_2 );
|
||||
|
||||
if ( var_3 > 0 )
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
plane_sound_node()
|
||||
{
|
||||
self waittill( "trigger", var_0 );
|
||||
var_0 endon( "death" );
|
||||
thread plane_sound_node();
|
||||
var_0 thread common_scripts\utility::play_sound_in_space( "veh_a10_sonic_boom" );
|
||||
var_0 waittill( "reached_end_node" );
|
||||
var_0 delete();
|
||||
}
|
||||
|
||||
plane_bomb_node()
|
||||
{
|
||||
level._effect["plane_bomb_explosion1"] = loadfx( "fx/explosions/airlift_explosion_large" );
|
||||
level._effect["plane_bomb_explosion2"] = loadfx( "fx/explosions/tanker_explosion" );
|
||||
self waittill( "trigger", var_0 );
|
||||
var_0 endon( "death" );
|
||||
thread plane_bomb_node();
|
||||
var_1 = getentarray( self.script_linkto, "script_linkname" );
|
||||
var_1 = common_scripts\utility::get_array_of_closest( self.origin, var_1, undefined, var_1.size );
|
||||
var_2 = 0;
|
||||
wait( randomfloatrange( 0.3, 0.8 ) );
|
||||
|
||||
for ( var_3 = 0; var_3 < var_1.size; var_3++ )
|
||||
{
|
||||
var_2++;
|
||||
|
||||
if ( var_2 == 3 )
|
||||
var_2 = 1;
|
||||
|
||||
var_1[var_3] thread maps\_utility::play_sound_on_entity( "airstrike_explosion" );
|
||||
playfx( level._effect["plane_bomb_explosion" + var_2], var_1[var_3].origin );
|
||||
wait( randomfloatrange( 0.3, 1.2 ) );
|
||||
}
|
||||
}
|
||||
|
||||
plane_bomb_cluster()
|
||||
{
|
||||
self waittill( "trigger", var_0 );
|
||||
var_0 endon( "death" );
|
||||
var_1 = var_0;
|
||||
var_1 thread plane_bomb_cluster();
|
||||
var_2 = spawn( "script_model", var_1.origin - ( 0, 0, 100 ) );
|
||||
var_2.angles = var_1.angles;
|
||||
var_2 setmodel( "projectile_cbu97_clusterbomb" );
|
||||
var_3 = anglestoforward( var_1.angles ) * 2;
|
||||
var_4 = anglestoup( var_1.angles ) * -0.2;
|
||||
var_5 = [];
|
||||
|
||||
for ( var_6 = 0; var_6 < 3; var_6++ )
|
||||
var_5[var_6] = ( var_3[var_6] + var_4[var_6] ) / 2;
|
||||
|
||||
var_5 = ( var_5[0], var_5[1], var_5[2] );
|
||||
var_5 = var_5 * 7000;
|
||||
var_2 movegravity( var_5, 2.0 );
|
||||
wait 1.2;
|
||||
var_7 = spawn( "script_model", var_2.origin );
|
||||
var_7 setmodel( "tag_origin" );
|
||||
var_7.origin = var_2.origin;
|
||||
var_7.angles = var_2.angles;
|
||||
wait 0.05;
|
||||
var_2 delete();
|
||||
var_2 = var_7;
|
||||
var_8 = var_2.origin;
|
||||
var_9 = var_2.angles;
|
||||
playfxontag( level.airstrikefx, var_2, "tag_origin" );
|
||||
wait 1.6;
|
||||
var_10 = 12;
|
||||
var_11 = 5;
|
||||
var_12 = 55;
|
||||
var_13 = ( var_12 - var_11 ) / var_10;
|
||||
|
||||
for ( var_6 = 0; var_6 < var_10; var_6++ )
|
||||
{
|
||||
var_14 = anglestoforward( var_9 + ( var_12 - var_13 * var_6, randomint( 10 ) - 5, 0 ) );
|
||||
var_15 = var_8 + var_14 * 10000;
|
||||
var_16 = bullettrace( var_8, var_15, 0, undefined );
|
||||
var_17 = var_16["position"];
|
||||
radiusdamage( var_17 + ( 0, 0, 16 ), 512, 400, 30 );
|
||||
|
||||
if ( var_6 % 3 == 0 )
|
||||
{
|
||||
thread common_scripts\utility::play_sound_in_space( "airstrike_explosion", var_17 );
|
||||
playrumbleonposition( "artillery_rumble", var_17 );
|
||||
earthquake( 0.7, 0.75, var_17, 1000 );
|
||||
}
|
||||
|
||||
wait( 0.75 / var_10 );
|
||||
}
|
||||
|
||||
wait 1.0;
|
||||
var_2 delete();
|
||||
}
|
||||
|
||||
stop_sound( var_0 )
|
||||
{
|
||||
self notify( "stop sound" + var_0 );
|
||||
}
|
76
vehicle_scripts/_apache.gsc
Normal file
76
vehicle_scripts/_apache.gsc
Normal file
@ -0,0 +1,76 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "apache", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_apache" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_apache_dark" );
|
||||
var_3 = [];
|
||||
var_3["vehicle_apache"] = "fx/explosions/helicopter_explosion_apache";
|
||||
var_3["vehicle_apache_dark"] = "fx/explosions/helicopter_explosion_apache_dark";
|
||||
var_4 = [];
|
||||
var_4["vehicle_apache"] = "fx/explosions/aerial_explosion_apache_mp";
|
||||
var_4["vehicle_apache_dark"] = "fx/explosions/aerial_explosion_apache_dark_mp";
|
||||
var_4["script_vehicle_apache"] = "fx/explosions/aerial_explosion_apache_mp";
|
||||
var_4["script_vehicle_apache_dark"] = "fx/explosions/aerial_explosion_apache_dark_mp";
|
||||
var_4["script_vehicle_apache_mg"] = "fx/explosions/aerial_explosion_apache_mp";
|
||||
maps\_vehicle::build_drive( %bh_rotors, undefined, 0 );
|
||||
var_5 = var_3[var_0];
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/helicopter_explosion_secondary_small", "tag_engine_left", "apache_helicopter_secondary_exp", undefined, undefined, undefined, 0.0, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "fx/fire/fire_smoke_trail_L", "tag_engine_left", "apache_helicopter_dying_loop", 1, 0.05, 1, 0.5, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/helicopter_explosion_secondary_small", "tag_engine_left", "apache_helicopter_secondary_exp", undefined, undefined, undefined, 2.5, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( var_5, undefined, "apache_helicopter_crash", undefined, undefined, undefined, -1, undefined, "stop_crash_loop_sound" );
|
||||
maps\_vehicle::build_rocket_deathfx( var_4[var_0], "tag_deathfx", "apache_helicopter_crash", undefined, undefined, undefined, undefined, 1, undefined, 0, 5 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_green", "tag_light_L_wing", "fx/misc/aircraft_light_wingtip_green", "running", 0 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_red", "tag_light_R_wing", "fx/misc/aircraft_light_wingtip_red", "running", 0.05 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink", "tag_light_belly", "fx/misc/aircraft_light_white_blink", "running", 0.1 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink_tail", "tag_light_tail", "fx/misc/aircraft_light_red_blink", "running", 0.25 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_treadfx( var_2, "default", "fx/treadfx/heli_dust_default", 0 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
|
||||
if ( isdefined( var_2 ) && issubstr( var_2, "_mg" ) )
|
||||
maps\_vehicle::build_turret( "apache_turret", "tag_turret", "vehicle_apache_mg", undefined, "auto_nonai", 0.0, 20, -14 );
|
||||
|
||||
if ( !issubstr( var_2, "_berlin" ) )
|
||||
{
|
||||
precacheitem( "zippy_rockets_apache" );
|
||||
precacheitem( "zippy_rockets_apache_nodamage" );
|
||||
}
|
||||
|
||||
maps\_vehicle::build_is_helicopter();
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
self.script_badplace = 0;
|
||||
maps\_vehicle::vehicle_lights_on( "running" );
|
||||
|
||||
if ( issubstr( self.classname, "_mg" ) )
|
||||
{
|
||||
self hidepart( "turret_animate_jnt" );
|
||||
self hidepart( "tag_turret" );
|
||||
self hidepart( "tag_barrel" );
|
||||
self hidepart( "barrel_animate_jnt" );
|
||||
}
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
return var_0;
|
||||
}
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 11; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].getout_delete = 1;
|
||||
return var_0;
|
||||
}
|
1536
vehicle_scripts/_apache_player.gsc
Normal file
1536
vehicle_scripts/_apache_player.gsc
Normal file
File diff suppressed because it is too large
Load Diff
145
vehicle_scripts/_apache_player_audio.gsc
Normal file
145
vehicle_scripts/_apache_player_audio.gsc
Normal file
@ -0,0 +1,145 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
_precache()
|
||||
{
|
||||
_audio();
|
||||
}
|
||||
|
||||
_audio()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
_init( var_0, var_1 )
|
||||
{
|
||||
var_2 = spawnstruct();
|
||||
var_2.owner = var_1;
|
||||
var_2.apache = var_0;
|
||||
return var_2;
|
||||
}
|
||||
|
||||
_start()
|
||||
{
|
||||
thread start_player_apache_engine_audio();
|
||||
}
|
||||
|
||||
_end()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_0 notify( "LISTEN_end_audio" );
|
||||
}
|
||||
|
||||
_destroy()
|
||||
{
|
||||
_end();
|
||||
common_scripts\utility::array_call( self.audio_entities, ::delete );
|
||||
}
|
||||
|
||||
start_player_apache_engine_audio()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_1 = self.apache;
|
||||
var_0 endon( "LISTEN_end_audio" );
|
||||
self.lowspeed_start_crossfade = 29.0;
|
||||
self.lowspeed_end_crossfade = 55.0;
|
||||
self.low_speed_mult = 1.0;
|
||||
self.highspeed_start_crossfade = 18.0;
|
||||
self.highspeed_end_crossfade = 65.0;
|
||||
self.high_speed_mult = 1.0;
|
||||
self.overall_pitch_min = 0.9661;
|
||||
self.overall_pitch_max = 1.0299;
|
||||
self.overall_pitch = 1.0;
|
||||
self.overall_pitch_roll_modifier = 1.0;
|
||||
self.overall_pitch_roll_modifier_max = 0.023;
|
||||
self.roll_start_crossfade = 3.0;
|
||||
self.roll_end_crossfade = 30.0;
|
||||
self.roll_max_roll = 35.0;
|
||||
self.roll_mult = 1.0;
|
||||
self.roll_other_mult = 1.0;
|
||||
self.audio_entities = [];
|
||||
self.audio_entities["low_front"] = spawn( "script_origin", var_0.origin );
|
||||
self.audio_entities["low_front"] linkto( var_0 );
|
||||
self.audio_entities["low_front"] playloopsound( "apache_int_slow_fronts" );
|
||||
self.audio_entities["low_rear"] = spawn( "script_origin", var_0.origin );
|
||||
self.audio_entities["low_rear"] linkto( var_0 );
|
||||
self.audio_entities["high_front"] = spawn( "script_origin", var_0.origin );
|
||||
self.audio_entities["high_front"] linkto( var_0 );
|
||||
self.audio_entities["high_front"] playloopsound( "apache_int_fast_fronts" );
|
||||
self.audio_entities["high_rear"] = spawn( "script_origin", var_0.origin );
|
||||
self.audio_entities["high_rear"] linkto( var_0 );
|
||||
self.audio_entities["high_bank_front"] = spawn( "script_origin", var_0.origin );
|
||||
self.audio_entities["high_bank_front"] linkto( var_0 );
|
||||
self.audio_entities["high_bank_front"] playloopsound( "apache_int_bank_fronts" );
|
||||
self.audio_entities["high_bank_rear"] = spawn( "script_origin", var_0.origin );
|
||||
self.audio_entities["high_bank_rear"] linkto( var_0 );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
self.audio_speed = var_1 vehicle_getspeed();
|
||||
self.audio_roll = abs( var_1.angles[2] );
|
||||
adjust_overall_apache_pitches();
|
||||
childthread adjust_helo_sound_roll();
|
||||
childthread adjust_helo_sound_low();
|
||||
childthread adjust_helo_sound_high();
|
||||
wait 0.1;
|
||||
}
|
||||
}
|
||||
|
||||
adjust_overall_apache_pitches()
|
||||
{
|
||||
self.overall_pitch_roll_modifier = 1.0 - abs( self.audio_speed ) / 115.0 * ( abs( self.audio_roll ) / 35.0 ) * self.overall_pitch_roll_modifier_max;
|
||||
|
||||
if ( abs( self.audio_speed ) < self.highspeed_end_crossfade )
|
||||
self.overall_pitch = self.overall_pitch_roll_modifier * ( abs( self.audio_speed ) / self.highspeed_end_crossfade * ( self.overall_pitch_max - self.overall_pitch_min ) + self.overall_pitch_min );
|
||||
else
|
||||
self.overall_pitch = self.overall_pitch_max * self.overall_pitch_roll_modifier;
|
||||
}
|
||||
|
||||
adjust_helo_sound_low()
|
||||
{
|
||||
if ( abs( self.audio_speed ) <= self.lowspeed_start_crossfade )
|
||||
self.low_speed_mult = self.roll_other_mult * 1.0;
|
||||
else if ( abs( self.audio_speed ) < self.lowspeed_end_crossfade )
|
||||
self.low_speed_mult = self.roll_other_mult * ( 1.0 - ( abs( self.audio_speed ) - self.lowspeed_start_crossfade ) / ( self.lowspeed_end_crossfade - self.lowspeed_start_crossfade ) );
|
||||
else
|
||||
self.low_speed_mult = 0.005;
|
||||
|
||||
self.audio_entities["low_front"] scalepitch( self.overall_pitch, 0.1 );
|
||||
self.audio_entities["low_front"] scalevolume( self.low_speed_mult, 0.1 );
|
||||
}
|
||||
|
||||
adjust_helo_sound_high()
|
||||
{
|
||||
if ( abs( self.audio_speed ) >= self.highspeed_end_crossfade )
|
||||
self.high_speed_mult = self.roll_other_mult * 1.0;
|
||||
else if ( abs( self.audio_speed ) > self.highspeed_start_crossfade )
|
||||
self.high_speed_mult = self.roll_other_mult * ( 1.0 - ( self.highspeed_end_crossfade - abs( self.audio_speed ) ) / ( self.highspeed_end_crossfade - self.highspeed_start_crossfade ) );
|
||||
else
|
||||
self.high_speed_mult = 0.005;
|
||||
|
||||
self.audio_entities["high_front"] scalepitch( self.overall_pitch, 0.1 );
|
||||
self.audio_entities["high_front"] scalevolume( self.high_speed_mult, 0.1 );
|
||||
}
|
||||
|
||||
adjust_helo_sound_roll()
|
||||
{
|
||||
if ( abs( self.audio_roll ) >= self.roll_end_crossfade )
|
||||
{
|
||||
self.roll_mult = 1.0;
|
||||
self.roll_other_mult = 0.001;
|
||||
}
|
||||
else if ( abs( self.audio_roll ) >= self.roll_start_crossfade )
|
||||
{
|
||||
self.roll_mult = 1.0 - ( self.roll_end_crossfade - abs( self.audio_roll ) ) / ( self.roll_end_crossfade - self.roll_start_crossfade );
|
||||
self.roll_other_mult = 1.0 * ( ( self.roll_end_crossfade - abs( self.audio_roll ) ) / ( self.roll_end_crossfade - self.roll_start_crossfade ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
self.roll_mult = 0.001;
|
||||
self.roll_other_mult = 1.0;
|
||||
}
|
||||
|
||||
self.audio_entities["high_bank_front"] scalepitch( self.overall_pitch, 0.1 );
|
||||
self.audio_entities["high_bank_front"] scalevolume( self.roll_mult, 0.1 );
|
||||
}
|
40
vehicle_scripts/_apache_player_difficulty.gsc
Normal file
40
vehicle_scripts/_apache_player_difficulty.gsc
Normal file
@ -0,0 +1,40 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
difficulty()
|
||||
{
|
||||
var_0 = spawnstruct();
|
||||
var_0.dmg_bullet_delay_between_msec = 350;
|
||||
var_0.dmg_bullet_pct = 0.08;
|
||||
var_0.dmg_projectile_pct = 0.76;
|
||||
var_0.dmg_player_health_adjust_chance = 0.45;
|
||||
var_0.dmg_player_speed_evade_min_pct = 0.5;
|
||||
var_0.dmg_player_speed_evade_max_pct = 0.2;
|
||||
var_0.dmg_bullet_chance_player_static = 0.55;
|
||||
var_0.dmg_bullet_chance_player_evade = 0.1;
|
||||
var_0.in_range_for_homing_missile_sqrd = squared( 24000 );
|
||||
|
||||
switch ( level.gameskill )
|
||||
{
|
||||
case 0:
|
||||
var_0.dmg_bullet_delay_between_msec = 450;
|
||||
var_0.dmg_bullet_pct = 0.02;
|
||||
var_0.dmg_bullet_chance_player_evade = 0.05;
|
||||
break;
|
||||
case 1:
|
||||
var_0.dmg_bullet_delay_between_msec = 350;
|
||||
var_0.dmg_bullet_pct = 0.04;
|
||||
break;
|
||||
case 2:
|
||||
var_0.dmg_bullet_delay_between_msec = 350;
|
||||
var_0.dmg_bullet_pct = 0.06;
|
||||
break;
|
||||
case 3:
|
||||
break;
|
||||
default:
|
||||
var_0.flares_auto = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
level.apache_player_difficulty = var_0;
|
||||
}
|
1241
vehicle_scripts/_apache_player_missile_hydra_and_lockon.gsc
Normal file
1241
vehicle_scripts/_apache_player_missile_hydra_and_lockon.gsc
Normal file
File diff suppressed because it is too large
Load Diff
912
vehicle_scripts/_apache_player_pilot.gsc
Normal file
912
vehicle_scripts/_apache_player_pilot.gsc
Normal file
@ -0,0 +1,912 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
_precache()
|
||||
{
|
||||
precacheshader( "apache_compass_back" );
|
||||
precacheshader( "apache_hint_back" );
|
||||
precacheshader( "apache_speed_arrow" );
|
||||
precacheshader( "apache_speed_back" );
|
||||
precacheshader( "apache_altitude_arrow" );
|
||||
precacheshader( "apache_altitude_back" );
|
||||
precacheshader( "apache_roll_back" );
|
||||
precacheshader( "apache_roll_marker" );
|
||||
precacheshader( "apache_roll_marker_left1" );
|
||||
precacheshader( "apache_roll_marker_left2" );
|
||||
precacheshader( "apache_roll_marker_right1" );
|
||||
precacheshader( "apache_roll_marker_right2" );
|
||||
precacheshader( "apache_reticle" );
|
||||
precacheshader( "apache_zoom_overlay" );
|
||||
precacheshader( "apache_mg_heat_back" );
|
||||
precacheshader( "apache_mg_heat_warn" );
|
||||
precacheshader( "osp_hud_color_red" );
|
||||
precacheshader( "apache_bottom_mark" );
|
||||
precacheshader( "apache_enemy_thermalbody" );
|
||||
precacheshader( "apache_enemy_thermalbody_no_pulse" );
|
||||
precachemodel( "viewmodel_prototype_apache_visor" );
|
||||
vehicle_scripts\_apache_player_missile_hydra_and_lockon::_precache();
|
||||
_fx();
|
||||
_anim();
|
||||
}
|
||||
|
||||
_fx()
|
||||
{
|
||||
level._effect["FX_apache_pilot_turret_projectile"] = loadfx( "fx/_requests/apache/apache_pilot_turret_projectile" );
|
||||
level._effect["FX_apache_pilot_turret_flash_view"] = loadfx( "fx/_requests/apache/apache_pilot_turret_flash_view" );
|
||||
level._effect["FX_apache_pilot_shot_blood"] = loadfx( "fx/_requests/apache/apache_pilot_shot_blood" );
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
_anim()
|
||||
{
|
||||
level.scr_animtree["generic"] = #animtree;
|
||||
level.scr_anim["generic"]["helicopter_pilot1_idle"] = %helicopter_pilot1_idle;
|
||||
level.scr_anim["generic"]["helicopter_pilot1_twitch_lookback"] = %helicopter_pilot1_twitch_lookback;
|
||||
level.scr_anim["generic"]["helicopter_pilot1_twitch_lookoutside"] = %helicopter_pilot1_twitch_lookoutside;
|
||||
level.scr_anim["generic"]["helicopter_pilot1_twitch_clickpannel"] = %helicopter_pilot1_twitch_clickpannel;
|
||||
level.scr_anim["generic"]["apache_cockpit_copilot_death"] = %apache_cockpit_copilot_death;
|
||||
}
|
||||
|
||||
_init( var_0, var_1 )
|
||||
{
|
||||
var_2 = getent( "apache_pilot", "targetname" );
|
||||
var_2.origin = var_0 gettagorigin( "tag_passenger" );
|
||||
var_2.angles = var_0 gettagangles( "tag_passenger" );
|
||||
var_3 = var_2 spawndrone();
|
||||
var_3 dontcastshadows();
|
||||
var_3.animname = "generic";
|
||||
var_3 maps\_anim::setanimtree();
|
||||
var_3 linkto( var_0, "tag_passenger" );
|
||||
var_3 thread pilot_ai_start( var_1, self, "tag_passenger" );
|
||||
var_4 = spawnstruct();
|
||||
var_4.owner = var_1;
|
||||
var_4.vehicle = var_0;
|
||||
var_4.pilot_ai_spawner = var_2;
|
||||
var_4.pilot_ai = var_3;
|
||||
var_4.type = "pilot";
|
||||
var_4.weapon = [];
|
||||
var_4 hud_init();
|
||||
var_4.weapon["hydra_lockOn_missile"] = vehicle_scripts\_apache_player_missile_hydra_and_lockon::_init( var_1, var_0, var_4.hud );
|
||||
var_4.currentweapon = "hydra_lockOn_missile";
|
||||
var_4.vehicle.mgturret[0] maps\_utility::ent_flag_init( "FLAG_turret_init" );
|
||||
var_4.vehicle.mgturret[0] thread turret_init( var_4.vehicle, var_4.owner );
|
||||
var_1 maps\_utility::ent_flag_init( "FLAG_apache_pilot_has_changed_weapons" );
|
||||
var_1 maps\_utility::ent_flag_init( "FLAG_apache_pilot_changed_weapons" );
|
||||
var_1 maps\_utility::ent_flag_init( "FLAG_apache_pilot_ADS" );
|
||||
return var_4;
|
||||
}
|
||||
|
||||
pilot_ai_start( var_0, var_1, var_2 )
|
||||
{
|
||||
self endon( "death" );
|
||||
childthread pilot_ai_anim( var_1, var_2 );
|
||||
thread pilot_ai_death( var_1, var_2 );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
self waittill( "LISTEN_end_pilot" );
|
||||
self hideonclient( var_0 );
|
||||
self waittill( "LISTEN_start_pilot" );
|
||||
self showonclient( var_0 );
|
||||
}
|
||||
}
|
||||
|
||||
pilot_ai_anim( var_0, var_1 )
|
||||
{
|
||||
var_0 endon( "LISTEN_pilot_death" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
var_0 maps\_anim::anim_generic( self, "helicopter_pilot1_idle", var_1 );
|
||||
var_0 maps\_anim::anim_generic( self, "helicopter_pilot1_twitch_lookback", var_1 );
|
||||
var_0 maps\_anim::anim_generic( self, "helicopter_pilot1_twitch_lookoutside", var_1 );
|
||||
var_0 maps\_anim::anim_generic( self, "helicopter_pilot1_twitch_clickpannel", var_1 );
|
||||
}
|
||||
}
|
||||
|
||||
pilot_ai_death( var_0, var_1 )
|
||||
{
|
||||
var_0 endon( "death" );
|
||||
var_0 waittill( "LISTEN_pilot_death" );
|
||||
thread common_scripts\utility::play_sound_in_space( "apache_player_pilot_death", self gettagorigin( "tag_eye" ) );
|
||||
var_0 thread maps\_anim::anim_generic( self, "apache_cockpit_copilot_death", var_1 );
|
||||
wait 0.1;
|
||||
playfxontag( common_scripts\utility::getfx( "FX_apache_pilot_shot_blood" ), self, "j_head" );
|
||||
}
|
||||
|
||||
hud_init()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_1 = [];
|
||||
var_1["mg_reticle"] = var_0 maps\_hud_util::createclienticon( "apache_reticle", 128, 128 );
|
||||
var_1["mg_reticle"] maps\_hud_util::setpoint( "CENTER", undefined, 0, 0 );
|
||||
var_1["mg_reticle"].alpha = 1.0;
|
||||
var_1["mg_bar"] = var_0 maps\_hud_util::createclientprogressbar( var_0, 36, "osp_hud_color_red", "apache_mg_heat_back", 64, 6, 9, 2 );
|
||||
var_1["mg_bar"] maps\_hud_util::updatebar( 1 );
|
||||
var_1["mg_bar"].alpha = 0.15;
|
||||
var_1["mg_bar_bar"] = var_1["mg_bar"].bar;
|
||||
var_1["mg_bar_bar"].alpha = 0.25;
|
||||
var_1["mg_warn"] = var_0 maps\_hud_util::createclienticon( "apache_mg_heat_warn", 32, 32 );
|
||||
var_1["mg_warn"] maps\_hud_util::setpoint( "TOP", "BOTTOM", 0, -9 );
|
||||
var_1["mg_warn"].alpha = 0;
|
||||
var_1["mg_warn"] maps\_hud_util::setparent( var_1["mg_bar"] );
|
||||
var_1["zoom_overlay"] = var_0 maps\_hud_util::createclienticon( "apache_zoom_overlay", 256, 256 );
|
||||
var_1["zoom_overlay"] maps\_hud_util::setpoint( "CENTER", undefined, 0, 0 );
|
||||
var_1["zoom_overlay"].alpha = 0.0;
|
||||
var_1["missile_roll"] = [];
|
||||
var_1["roll"]["bg"] = var_0 maps\_hud_util::createclienticon( "apache_roll_back", 128, 32 );
|
||||
var_1["roll"]["bg"] maps\_hud_util::setpoint( "TOP", "TOP", 0, 42 );
|
||||
var_1["roll"]["bg"].alpha = 1;
|
||||
var_1["roll"]["marker"] = var_0 maps\_hud_util::createclienticon( "apache_roll_marker", 64, 64 );
|
||||
var_1["roll"]["marker"] maps\_hud_util::setpoint( "TOP", "TOP", 0, 40 );
|
||||
var_1["roll"]["marker"].alpha = 1;
|
||||
var_1["speed"] = [];
|
||||
var_1["speed"]["bg"] = var_0 maps\_hud_util::createclienticon( "apache_speed_back", 128, 512 );
|
||||
var_1["speed"]["bg"] maps\_hud_util::setpoint( "RIGHT", "RIGHT", 0, 0 );
|
||||
var_1["speed"]["bg"].alpha = 1.0;
|
||||
var_1["speed"]["arrow"] = var_0 maps\_hud_util::createclienticon( "apache_speed_arrow", 64, 32 );
|
||||
var_1["speed"]["arrow"] maps\_hud_util::setpoint( "LEFT", "BOTTOM", -24, -118 );
|
||||
var_1["speed"]["arrow"].alpha = 1.0;
|
||||
var_1["speed"]["arrow"] maps\_hud_util::setparent( var_1["speed"]["bg"] );
|
||||
var_1["speed"]["number"] = var_0 maps\_hud_util::createclientfontstring( "objective", 1.0 );
|
||||
var_1["speed"]["number"] maps\_hud_util::setpoint( "LEFT", "RIGHT", -10, 0 );
|
||||
var_1["speed"]["number"].color = ( 1, 1, 1 );
|
||||
var_1["speed"]["number"].alpha = 1.0;
|
||||
var_1["speed"]["number"].sort = -1;
|
||||
var_1["speed"]["number"] maps\_hud_util::setparent( var_1["speed"]["arrow"] );
|
||||
var_1["speed"]["number"] settext( "0" );
|
||||
var_1["altitude"] = [];
|
||||
var_1["altitude"]["line"] = var_0 maps\_hud_util::createclienticon( "apache_altitude_back", 128, 512 );
|
||||
var_1["altitude"]["line"] maps\_hud_util::setpoint( "LEFT", "LEFT", 0, 0 );
|
||||
var_1["altitude"]["line"].alpha = 1.0;
|
||||
var_1["altitude"]["arrow"] = var_0 maps\_hud_util::createclienticon( "apache_altitude_arrow", 64, 32 );
|
||||
var_1["altitude"]["arrow"] maps\_hud_util::setpoint( "RIGHT", "BOTTOM", 33, -119 );
|
||||
var_1["altitude"]["arrow"].alpha = 1.0;
|
||||
var_1["altitude"]["arrow"] maps\_hud_util::setparent( var_1["altitude"]["line"] );
|
||||
var_1["bottom_mark"] = var_0 maps\_hud_util::createclienticon( "apache_bottom_mark", 128, 6 );
|
||||
var_1["bottom_mark"] maps\_hud_util::setpoint( "CENTER", "CENTER", 0, 120 );
|
||||
var_1["bottom_mark"].alpha = 1;
|
||||
self.hud = var_1;
|
||||
thread hud_update();
|
||||
}
|
||||
|
||||
hud_update()
|
||||
{
|
||||
self endon( "LISTEN_destroy_pilot" );
|
||||
var_0 = self.owner;
|
||||
var_1 = self.hud;
|
||||
var_2 = self.vehicle;
|
||||
childthread hud_update_roll();
|
||||
var_1["speed"]["number"].lastspeed = int( floor( var_2 vehicle_getspeed() ) );
|
||||
var_1["speed"]["number"] setvalue( var_1["speed"]["number"].lastspeed );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
hud_update_speed();
|
||||
hud_update_look_meter();
|
||||
hud_update_mg_heat();
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
hud_update_roll()
|
||||
{
|
||||
self endon( "LISTEN_destroy_pilot" );
|
||||
var_0 = self.owner;
|
||||
var_1 = self.hud;
|
||||
var_2 = self.vehicle;
|
||||
var_3 = getdvarfloat( "vehHelicopterMaxRoll" );
|
||||
var_4 = -1 * var_3;
|
||||
var_5 = var_3 - var_4;
|
||||
var_6 = var_5 / 4.0;
|
||||
var_7 = ceil( var_6 * 0.5 );
|
||||
var_8 = [ "apache_roll_marker_right2", "apache_roll_marker_right1", "apache_roll_marker", "apache_roll_marker_left1", "apache_roll_marker_left2" ];
|
||||
var_9 = [];
|
||||
|
||||
for ( var_10 = 0; var_10 < var_8.size; var_10++ )
|
||||
var_9[int( var_4 + var_6 * var_10 )] = var_8[var_10];
|
||||
|
||||
var_8 = undefined;
|
||||
var_11 = "";
|
||||
|
||||
for (;;)
|
||||
{
|
||||
var_12 = clamp( var_2.angles[2], var_4, var_3 );
|
||||
var_13 = int( maps\_utility::linear_interpolate( 1.0 - ( var_12 - var_4 ) / var_5, var_4, var_3 ) );
|
||||
level.audio_roll = var_12;
|
||||
var_14 = undefined;
|
||||
|
||||
foreach ( var_17, var_16 in var_9 )
|
||||
{
|
||||
if ( var_13 >= var_17 - var_7 && var_13 <= var_17 + var_7 )
|
||||
{
|
||||
var_14 = var_16;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( var_14 != var_11 )
|
||||
{
|
||||
var_1["roll"]["marker"] setshader( var_14, 64, 64 );
|
||||
var_11 = var_14;
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
hud_update_mg_heat()
|
||||
{
|
||||
var_0 = self.hud;
|
||||
var_1 = self.vehicle.mgturret[0];
|
||||
|
||||
if ( !isdefined( var_1.heat ) )
|
||||
var_1.heat = 0;
|
||||
|
||||
var_0["mg_bar"] maps\_hud_util::updatebar( var_1.heat );
|
||||
var_0["mg_bar"].alpha = 0.24;
|
||||
var_0["mg_bar_bar"].alpha = 0.25 + var_1.heat * 0.75;
|
||||
|
||||
if ( !isdefined( var_1.heat_warn_toggle ) )
|
||||
{
|
||||
var_1.heat_warn_toggle = 0;
|
||||
var_1.heat_warn_lastoggle = gettime();
|
||||
}
|
||||
|
||||
if ( !isdefined( var_1.overheated ) )
|
||||
var_1.overheated = 0;
|
||||
|
||||
if ( var_1.heat > 0.5 && gettime() - var_1.heat_warn_lastoggle >= 100 )
|
||||
{
|
||||
var_0["mg_warn"].alpha = var_1.heat_warn_toggle;
|
||||
var_1.heat_warn_toggle = !var_1.heat_warn_toggle;
|
||||
var_1.heat_warn_lastoggle = gettime();
|
||||
}
|
||||
else if ( !var_1.overheated )
|
||||
var_0["mg_warn"].alpha = 0;
|
||||
|
||||
if ( var_1.overheated )
|
||||
{
|
||||
var_0["mg_bar"] maps\_hud_util::updatebar( var_1.heat );
|
||||
var_0["mg_warn"].alpha = 1;
|
||||
var_0["mg_bar_bar"].alpha = var_1.heat_warn_toggle;
|
||||
|
||||
if ( gettime() - var_1.heat_warn_lastoggle >= 100 )
|
||||
{
|
||||
var_1.heat_warn_toggle = !var_1.heat_warn_toggle;
|
||||
var_1.heat_warn_lastoggle = gettime();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
hud_update_speed()
|
||||
{
|
||||
var_0 = self.vehicle;
|
||||
var_1 = self.hud;
|
||||
var_2 = var_1["speed"]["number"].lastspeed;
|
||||
var_3 = 160;
|
||||
var_4 = var_0 vehicle_getspeed();
|
||||
var_5 = abs( -400 ) - abs( -118 );
|
||||
var_6 = -118 + -1 * max( 0, var_4 / var_3 * var_5 );
|
||||
var_7 = var_5 * 0.04;
|
||||
var_6 = var_6 / var_7 * var_7;
|
||||
var_6 = int( var_6 );
|
||||
var_6 = clamp( var_6, -400, -118 );
|
||||
var_1["speed"]["arrow"] maps\_hud_util::setpoint( "LEFT", "BOTTOM", -24, var_6, 0 );
|
||||
|
||||
if ( var_2 != var_4 )
|
||||
{
|
||||
var_1["speed"]["number"] setvalue( int( var_4 ) );
|
||||
var_1["speed"]["number"].lastspeed = var_4;
|
||||
}
|
||||
}
|
||||
|
||||
hud_update_look_meter()
|
||||
{
|
||||
var_0 = self.vehicle;
|
||||
var_1 = self.hud;
|
||||
var_2 = self.owner;
|
||||
var_3 = angleclamp180( var_2 getplayerangles()[0] );
|
||||
var_4 = 1 - ( var_3 - 30 ) / -60;
|
||||
var_5 = abs( -395 ) - abs( -119 );
|
||||
var_6 = -119 + -1 * max( 0, var_4 * var_5 );
|
||||
var_6 = int( clamp( var_6, -395, -119 ) );
|
||||
var_7 = var_5 * 0.04;
|
||||
var_6 = int( var_6 / var_7 ) * var_7;
|
||||
var_1["altitude"]["arrow"] maps\_hud_util::setpoint( "RIGHT", "BOTTOM", 33, var_6, 0 );
|
||||
}
|
||||
|
||||
_start( var_0 )
|
||||
{
|
||||
var_1 = self.owner;
|
||||
self.pilot_ai notify( "LISTEN_start_pilot" );
|
||||
self.weapon["hydra_lockOn_missile"] thread vehicle_scripts\_apache_player_missile_hydra_and_lockon::_start();
|
||||
|
||||
if ( !isplatformweakfillrate() )
|
||||
{
|
||||
self.hud_mask_model = spawn( "script_model", var_1 geteye() );
|
||||
self.hud_mask_model setmodel( "viewmodel_prototype_apache_visor" );
|
||||
self.hud_mask_model linktoplayerview( var_1, "tag_origin", ( 7.5, 0, 0.3 ), ( 0, 0, 0 ), 1 );
|
||||
}
|
||||
|
||||
hud_start();
|
||||
thread monitorsaverecentlyloaded();
|
||||
thread monitorturretfire();
|
||||
thread monitorweaponchange();
|
||||
|
||||
if ( var_0 )
|
||||
thread monitorads();
|
||||
|
||||
thread monitorthermalvision();
|
||||
}
|
||||
|
||||
isplatformweakfillrate()
|
||||
{
|
||||
return !maps\_utility::is_gen4();
|
||||
}
|
||||
|
||||
monitorsaverecentlyloaded()
|
||||
{
|
||||
self endon( "LISTEN_end_pilot" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if ( issaverecentlyloaded() )
|
||||
{
|
||||
self.owner notify( "SAVGAME_RELEASES_BUTTONS" );
|
||||
setdvar( "ui_deadquote", "" );
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
hud_start()
|
||||
{
|
||||
maps\_utility::deep_array_thread( self.hud, ::set_key, [ 1, "alpha" ] );
|
||||
}
|
||||
|
||||
turret_init( var_0, var_1 )
|
||||
{
|
||||
self dontcastshadows();
|
||||
self.owner = var_1;
|
||||
maps\_utility::ent_flag_set( "FLAG_turret_init" );
|
||||
}
|
||||
|
||||
monitorturretfire()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_1 = self.vehicle;
|
||||
var_2 = var_1.mgturret[0];
|
||||
var_0 endon( "LISTEN_end_pilot" );
|
||||
var_2 maps\_utility::ent_flag_wait( "FLAG_turret_init" );
|
||||
childthread monitorturretearthquake();
|
||||
childthread monitorturretlookat();
|
||||
var_3 = common_scripts\utility::getfx( "FX_apache_pilot_turret_projectile" );
|
||||
var_4 = common_scripts\utility::getfx( "FX_apache_pilot_turret_flash_view" );
|
||||
var_2.heat = 0;
|
||||
var_2.overheated = 0;
|
||||
var_5 = 0;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if ( var_2.overheated )
|
||||
{
|
||||
wait 3;
|
||||
var_2.heat = 0;
|
||||
var_2.overheated = 0;
|
||||
var_6 = var_2 maps\_utility::create_blend( ::turret_overheat_cool, 1.0, 0 );
|
||||
var_6.time = 1;
|
||||
wait 1;
|
||||
}
|
||||
|
||||
var_1 waittill( "turret_fire" );
|
||||
var_2 shootturret();
|
||||
var_7 = var_2 gettagangles( "tag_flash" );
|
||||
var_8 = anglestoforward( var_7 );
|
||||
var_9 = anglestoright( var_7 );
|
||||
var_10 = anglestoup( var_7 );
|
||||
var_11 = randomfloatrange( -8, 8 );
|
||||
var_12 = randomfloatrange( -8, 8 );
|
||||
playfx( var_3, var_2 gettagorigin( "tag_flash" ) + var_11 * var_9 + var_12 * var_10, var_8 );
|
||||
playfxontag( var_4, var_2, "tag_flash" );
|
||||
var_2 childthread turret_heat_and_cool();
|
||||
}
|
||||
}
|
||||
|
||||
turret_overheat_cool( var_0, var_1, var_2 )
|
||||
{
|
||||
self.heat = 1 - var_0;
|
||||
}
|
||||
|
||||
turret_heat_and_cool()
|
||||
{
|
||||
self.heat = self.heat + 0.01;
|
||||
self notify( "turret_cool" );
|
||||
self endon( "turret_cool" );
|
||||
|
||||
if ( self.heat >= 1 )
|
||||
{
|
||||
self.overheated = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
wait 0.2;
|
||||
|
||||
while ( self.heat >= 0 )
|
||||
{
|
||||
wait 0.05;
|
||||
self.heat = self.heat - 0.02;
|
||||
}
|
||||
|
||||
self.heat = 0;
|
||||
}
|
||||
|
||||
monitorturretlookat( var_0, var_1 )
|
||||
{
|
||||
var_1 = self.owner;
|
||||
var_0 = self.vehicle;
|
||||
var_2 = var_0.mgturret[0];
|
||||
var_3 = var_1 getplayerangles();
|
||||
var_4 = var_1 geteye();
|
||||
var_5 = anglestoforward( var_3 );
|
||||
var_6 = 10000;
|
||||
var_7 = var_4 + var_6 * var_5;
|
||||
var_8 = spawn( "script_model", var_7 );
|
||||
var_8 setmodel( "tag_origin" );
|
||||
var_9 = gettime();
|
||||
var_2.mytarget = var_8;
|
||||
var_2 settargetentity( var_8 );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
var_3 = var_1 getplayerangles();
|
||||
var_5 = anglestoforward( var_3 );
|
||||
var_10 = var_1 geteye();
|
||||
var_11 = var_10 + 512 * var_5;
|
||||
var_12 = var_11 + 10000 * var_5;
|
||||
var_13 = bullettrace( var_11, var_12, 0, var_0 );
|
||||
var_6 = var_13["fraction"] * 10000;
|
||||
var_9 = gettime();
|
||||
var_8.origin = var_10 + ( 512 + var_6 ) * var_5;
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
monitorturretearthquake()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_0 notifyonplayercommand( "LISTEN_startTurretFire", "+attack" );
|
||||
var_0 notifyonplayercommand( "LISTEN_stopTurretFire", "-attack" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
var_0 waittill( "LISTEN_startTurretFire" );
|
||||
childthread doturretearthquake();
|
||||
var_0 childthread player_poll_button_release_and_notify( "attack", "LISTEN_stopTurretFire" );
|
||||
var_0 waittill( "LISTEN_stopTurretFire" );
|
||||
}
|
||||
}
|
||||
|
||||
doturretearthquake()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_0 endon( "LISTEN_stopTurretFire" );
|
||||
wait 0.1;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
earthquake( 0.1, 0.5, var_0.origin, 512 );
|
||||
wait 0.1;
|
||||
}
|
||||
}
|
||||
|
||||
player_poll_button_release_and_notify( var_0, var_1 )
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( var_1 );
|
||||
waittillframeend;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if ( !button_pressed_from_string( var_0 ) )
|
||||
{
|
||||
self notify( var_1 );
|
||||
break;
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
button_pressed_from_string( var_0 )
|
||||
{
|
||||
var_4 = undefined;
|
||||
var_5 = undefined;
|
||||
|
||||
switch ( var_0 )
|
||||
{
|
||||
case "frag":
|
||||
var_4 = ::fragbuttonpressed;
|
||||
break;
|
||||
case "ads":
|
||||
var_4 = ::adsbuttonpressed;
|
||||
var_5 = 1;
|
||||
break;
|
||||
case "attack":
|
||||
var_4 = ::attackbuttonpressed;
|
||||
break;
|
||||
case "melee":
|
||||
var_4 = ::meleebuttonpressed;
|
||||
break;
|
||||
case "use":
|
||||
var_4 = ::usebuttonpressed;
|
||||
break;
|
||||
case "vehicle_attack":
|
||||
var_4 = ::vehicleattackbuttonpressed;
|
||||
break;
|
||||
case "secondary_attack_off_hand":
|
||||
var_4 = ::secondaryoffhandbuttonpressed;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
var_6 = undefined;
|
||||
|
||||
if ( isdefined( var_5 ) )
|
||||
var_6 = self call [[ var_4 ]]( var_5 );
|
||||
else
|
||||
var_6 = self call [[ var_4 ]]();
|
||||
|
||||
return var_6;
|
||||
}
|
||||
|
||||
fov_get_default()
|
||||
{
|
||||
return 65;
|
||||
}
|
||||
|
||||
fov_get_ads()
|
||||
{
|
||||
return 15;
|
||||
}
|
||||
|
||||
monitorads()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
self endon( "LISTEN_end_pilot" );
|
||||
self.adstoggled = 0;
|
||||
self.adszoomed = 0;
|
||||
var_1 = 0;
|
||||
self.hud["zoom_overlay"].alpha = 0.0;
|
||||
thread monitoradshold();
|
||||
thread monitoradstoggle();
|
||||
var_2 = "LISTEN_apache_player_stop_ADS";
|
||||
var_0 endon( "death" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
var_3 = 0;
|
||||
|
||||
if ( self.adszoomed && var_1 && !var_0 adsbuttonpressed() )
|
||||
{
|
||||
var_2 = "LISTEN_apache_player_stop_ADS";
|
||||
var_3 = 1;
|
||||
}
|
||||
|
||||
if ( !var_3 )
|
||||
var_2 = var_0 common_scripts\utility::waittill_any_return( "LISTEN_apache_player_toggle_ADS", "LISTEN_apache_player_start_ADS", "LISTEN_apache_player_stop_ADS", "SAVGAME_RELEASES_BUTTONS" );
|
||||
|
||||
if ( var_2 == "SAVGAME_RELEASES_BUTTONS" )
|
||||
continue;
|
||||
|
||||
var_4 = var_2 == "LISTEN_apache_player_toggle_ADS";
|
||||
var_1 = var_2 == "LISTEN_apache_player_start_ADS";
|
||||
var_5 = var_2 == "LISTEN_apache_player_stop_ADS";
|
||||
|
||||
if ( self.adszoomed )
|
||||
{
|
||||
if ( self.adstoggled )
|
||||
{
|
||||
if ( var_4 || var_5 )
|
||||
{
|
||||
self.adstoggled = 0;
|
||||
self.adszoomed = 0;
|
||||
monitorads_zoom_out();
|
||||
}
|
||||
}
|
||||
else if ( var_5 )
|
||||
{
|
||||
monitorads_zoom_out();
|
||||
self.adszoomed = 0;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
self.adstoggled = 0;
|
||||
|
||||
if ( var_4 )
|
||||
{
|
||||
self.adstoggled = 1;
|
||||
self.adszoomed = 1;
|
||||
monitorads_zoom_in();
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( var_1 )
|
||||
{
|
||||
self.adszoomed = 1;
|
||||
monitorads_zoom_in();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
monitoradstoggle()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_0 notifyonplayercommand( "LISTEN_apache_player_toggle_ADS", "+sprint_zoom" );
|
||||
var_0 notifyonplayercommand( "LISTEN_apache_player_toggle_ADS", "+sprint" );
|
||||
var_0 notifyonplayercommand( "LISTEN_apache_player_toggle_ADS", "+ads_akimbo_accessible" );
|
||||
var_0 notifyonplayercommand( "LISTEN_apache_player_toggle_ADS", "+toggleads_throw" );
|
||||
}
|
||||
|
||||
monitoradshold()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_0 notifyonplayercommand( "LISTEN_apache_player_start_ADS", "+speed" );
|
||||
var_0 notifyonplayercommand( "LISTEN_apache_player_start_ADS", "+speed_throw" );
|
||||
var_0 notifyonplayercommand( "LISTEN_apache_player_stop_ADS", "-speed" );
|
||||
var_0 notifyonplayercommand( "LISTEN_apache_player_stop_ADS", "-speed_throw" );
|
||||
}
|
||||
|
||||
monitorads_blend_dof( var_0 )
|
||||
{
|
||||
var_1 = self.owner;
|
||||
self notify( "monitorADS_blend_dof" );
|
||||
self endon( "monitorADS_blend_dof" );
|
||||
self endon( "LISTEN_end_pilot" );
|
||||
|
||||
if ( var_0 )
|
||||
{
|
||||
maps\_art::dof_enable_script( 0, 207, 5.4, 70000, 130000, 0.0, 0.15 );
|
||||
wait 0.15;
|
||||
var_1 maps\_utility::ent_flag_set( "FLAG_apache_pilot_ADS" );
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\_art::dof_disable_script( 0.2 );
|
||||
var_1 maps\_utility::ent_flag_clear( "FLAG_apache_pilot_ADS" );
|
||||
}
|
||||
}
|
||||
|
||||
monitorads_zoom_elem_offset( var_0, var_1 )
|
||||
{
|
||||
if ( !isdefined( self.xoffset_default ) )
|
||||
self.xoffset_default = self.xoffset;
|
||||
|
||||
if ( !isdefined( self.yoffset_default ) )
|
||||
self.yoffset_default = self.yoffset;
|
||||
|
||||
var_0 = common_scripts\utility::ter_op( isdefined( var_0 ), var_0, self.xoffset_default );
|
||||
var_1 = common_scripts\utility::ter_op( isdefined( var_1 ), var_1, self.yoffset_default );
|
||||
maps\_hud_util::setpoint( self.point, self.relativepoint, var_0, var_1 );
|
||||
}
|
||||
|
||||
monitorads_zoom_elem_reset()
|
||||
{
|
||||
if ( isdefined( self.xoffset_default ) && isdefined( self.yoffset_default ) )
|
||||
{
|
||||
maps\_hud_util::setpoint( self.point, self.relativepoint, self.xoffset_default, self.yoffset_default );
|
||||
self.xoffset_default = undefined;
|
||||
self.yoffset_default = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
monitorads_zoom_hud_delay( var_0, var_1 )
|
||||
{
|
||||
self notify( "monitorADS_zoom_overlay_delay" );
|
||||
self endon( "monitorADS_zoom_overlay_delay" );
|
||||
var_2 = self.vehicle.heli.missiledefense;
|
||||
var_3 = self.weapon[self.weapon_curr];
|
||||
|
||||
if ( var_0 )
|
||||
{
|
||||
if ( isdefined( var_1 ) )
|
||||
wait( var_1 );
|
||||
|
||||
maps\_utility::deep_array_thread( self.hud, ::set_key, [ 0.0, "alpha" ] );
|
||||
self.hud["mg_reticle"].alpha = 1.0;
|
||||
self.hud["zoom_overlay"].alpha = 1.0;
|
||||
|
||||
if ( isdefined( var_3.hud ) && isdefined( var_3.hud["missile_bg"] ) )
|
||||
{
|
||||
var_3.hud["missile_bg"] monitorads_zoom_elem_offset( 230, 101 );
|
||||
var_3.hud["missile_straight_bg"] monitorads_zoom_elem_offset( 230, 61 );
|
||||
}
|
||||
|
||||
if ( isdefined( var_2.hud ) )
|
||||
{
|
||||
if ( isdefined( var_2.hud["flares"] ) && isdefined( var_2.hud["flares"]["back"] ) )
|
||||
var_2.hud["flares"]["back"] monitorads_zoom_elem_offset( -230, 101 );
|
||||
|
||||
if ( isdefined( var_2.hud["warning"] ) && isdefined( var_2.hud["warning"]["bg_lock_left"] ) )
|
||||
var_2.hud["warning"]["bg_lock_left"] monitorads_zoom_elem_offset( -230 );
|
||||
|
||||
if ( isdefined( var_2.hud["warning"] ) && isdefined( var_2.hud["warning"]["bg_lock_right"] ) )
|
||||
var_2.hud["warning"]["bg_lock_right"] monitorads_zoom_elem_offset( 230 );
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
self.hud["mg_reticle"].alpha = 0.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( isdefined( var_1 ) )
|
||||
wait( var_1 );
|
||||
|
||||
maps\_utility::deep_array_thread( self.hud, ::set_key, [ 1.0, "alpha" ] );
|
||||
|
||||
if ( isdefined( var_3.hud ) && isdefined( var_3.hud["missile_bg"] ) )
|
||||
{
|
||||
var_3.hud["missile_bg"] monitorads_zoom_elem_reset();
|
||||
var_3.hud["missile_straight_bg"] monitorads_zoom_elem_reset();
|
||||
}
|
||||
|
||||
if ( isdefined( var_2.hud ) )
|
||||
{
|
||||
if ( isdefined( var_2.hud["flares"] ) && isdefined( var_2.hud["flares"]["back"] ) )
|
||||
var_2.hud["flares"]["back"] monitorads_zoom_elem_reset();
|
||||
|
||||
if ( isdefined( var_2.hud["warning"] ) && isdefined( var_2.hud["warning"]["bg_lock_left"] ) )
|
||||
var_2.hud["warning"]["bg_lock_left"] monitorads_zoom_elem_reset();
|
||||
|
||||
if ( isdefined( var_2.hud["warning"] ) && isdefined( var_2.hud["warning"]["bg_lock_right"] ) )
|
||||
var_2.hud["warning"]["bg_lock_right"] monitorads_zoom_elem_reset();
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
self.hud["zoom_overlay"].alpha = 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
monitorads_zoom_in()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_0 maps\_utility::lerpfov_saved( 15, 0.15 );
|
||||
|
||||
if ( !maps\_utility::is_coop() )
|
||||
monitorads_blend_dof( 1 );
|
||||
|
||||
thread monitorads_zoom_hud_delay( 1 );
|
||||
}
|
||||
|
||||
monitorads_zoom_out()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_0 maps\_utility::lerpfov_saved( 65, 0.2 );
|
||||
|
||||
if ( !maps\_utility::is_coop() )
|
||||
monitorads_blend_dof( 0 );
|
||||
|
||||
thread monitorads_zoom_hud_delay( 0 );
|
||||
}
|
||||
|
||||
monitorthermalvision()
|
||||
{
|
||||
self endon( "LISTEN_end_pilot" );
|
||||
var_0 = self.owner;
|
||||
self.thermal_state = "ON_PULSE";
|
||||
}
|
||||
|
||||
monitorweaponchange()
|
||||
{
|
||||
self endon( "LISTEN_end_pilot" );
|
||||
var_0 = self.owner;
|
||||
var_1 = [];
|
||||
var_2 = 0;
|
||||
|
||||
foreach ( var_5, var_4 in self.weapon )
|
||||
{
|
||||
var_1[var_1.size] = var_5;
|
||||
|
||||
if ( var_5 == self.currentweapon )
|
||||
{
|
||||
var_2 = var_1.size - 1;
|
||||
activateweapon( var_5 );
|
||||
}
|
||||
}
|
||||
|
||||
var_6 = var_1.size;
|
||||
|
||||
if ( var_6 == 1 )
|
||||
return;
|
||||
|
||||
var_0 notifyonplayercommand( "LISTEN_pilot_weaponSwitch", "weapnext" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
var_0 maps\_utility::ent_flag_clear( "FLAG_apache_pilot_changed_weapons" );
|
||||
var_0 waittill( "LISTEN_pilot_weaponSwitch" );
|
||||
var_0 maps\_utility::ent_flag_set( "FLAG_apache_pilot_has_changed_weapons" );
|
||||
var_0 maps\_utility::ent_flag_set( "FLAG_apache_pilot_changed_weapons" );
|
||||
deactivateweapon( self.currentweapon );
|
||||
var_2++;
|
||||
var_2 = var_2 % var_6;
|
||||
self.currentweapon = var_1[var_2];
|
||||
activateweapon( self.currentweapon );
|
||||
wait 0.1;
|
||||
}
|
||||
}
|
||||
|
||||
activateweapon( var_0 )
|
||||
{
|
||||
switch ( var_0 )
|
||||
{
|
||||
case "hydra_lockOn_missile":
|
||||
self.weapon[var_0] vehicle_scripts\_apache_player_missile_hydra_and_lockon::activate();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
self.weapon_curr = var_0;
|
||||
}
|
||||
|
||||
deactivateweapon( var_0 )
|
||||
{
|
||||
switch ( var_0 )
|
||||
{
|
||||
case "hydra_lockOn_missile":
|
||||
self.weapon[var_0] vehicle_scripts\_apache_player_missile_hydra_and_lockon::deactivate();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
_end()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
self notify( "LISTEN_end_pilot" );
|
||||
var_0 notify( "LISTEN_end_pilot" );
|
||||
self.pilot_ai notify( "LISTEN_end_pilot" );
|
||||
maps\_utility::deep_array_thread( self.hud, ::set_key, [ 0, "alpha" ] );
|
||||
var_0 thermalvisionoff();
|
||||
self.weapon["hydra_lockOn_missile"] vehicle_scripts\_apache_player_missile_hydra_and_lockon::_end();
|
||||
maps\_art::dof_disable_script( 0.2 );
|
||||
}
|
||||
|
||||
_destroy()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
_end();
|
||||
var_0 maps\_utility::ent_flag_clear( "FLAG_apache_pilot_has_changed_weapons", 1 );
|
||||
var_0 maps\_utility::ent_flag_clear( "FLAG_apache_pilot_changed_weapons", 1 );
|
||||
var_0 maps\_utility::ent_flag_clear( "FLAG_apache_pilot_ADS", 1 );
|
||||
self.pilot_ai notify( "death" );
|
||||
self notify( "LISTEN_destroy_pilot" );
|
||||
var_0 notify( "LISTEN_destroy_pilot" );
|
||||
maps\_utility::deep_array_call( self.hud, ::destroy );
|
||||
self.pilot_ai delete();
|
||||
self.vehicle.mgturret[0].mytarget delete();
|
||||
self.weapon["hydra_lockOn_missile"] vehicle_scripts\_apache_player_missile_hydra_and_lockon::_destroy();
|
||||
|
||||
if ( !isplatformweakfillrate() )
|
||||
self.hud_mask_model delete();
|
||||
}
|
||||
|
||||
set_key( var_0, var_1 )
|
||||
{
|
||||
if ( !isdefined( self ) || !isdefined( var_1 ) )
|
||||
return;
|
||||
|
||||
switch ( var_1 )
|
||||
{
|
||||
case "alpha":
|
||||
self.alpha = var_0;
|
||||
break;
|
||||
}
|
||||
}
|
850
vehicle_scripts/_apache_player_raining_missile.gsc
Normal file
850
vehicle_scripts/_apache_player_raining_missile.gsc
Normal file
@ -0,0 +1,850 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
_precache()
|
||||
{
|
||||
precacheitem( "apache_lockon_raining_missile_phase_2" );
|
||||
precacheitem( "apache_raining_missile" );
|
||||
precacheshader( "apache_missile_icon" );
|
||||
precacheshader( "apache_missile_icon_lock" );
|
||||
_fx();
|
||||
}
|
||||
|
||||
_fx()
|
||||
{
|
||||
level._effect["FX_apache_raining_missile_spawn"] = loadfx( "fx/_requests/apache/apache_raining_missile_spawn" );
|
||||
}
|
||||
|
||||
_init( var_0, var_1 )
|
||||
{
|
||||
var_2 = spawnstruct();
|
||||
var_2.owner = var_0;
|
||||
var_2.type = "raining_missile";
|
||||
var_2.masterhud = var_1;
|
||||
var_2.target = undefined;
|
||||
var_2.isactive = undefined;
|
||||
var_2 hud_init();
|
||||
return var_2;
|
||||
}
|
||||
|
||||
hud_init()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_1 = self.masterhud;
|
||||
var_2 = [];
|
||||
var_2["missile_name"] = var_0 maps\_hud_util::createclientfontstring( "objective", 1.0 );
|
||||
var_2["missile_name"] maps\_hud_util::setpoint( "CENTER", undefined, 142, 92 );
|
||||
var_2["missile_name"].alpha = 0.0;
|
||||
var_2["missile_name"].color = ( 0, 1, 0 );
|
||||
var_2["missile_name"] settext( "PREACHR:" );
|
||||
var_2["missile_name"] maps\_hud_util::setparent( var_1["mg_reticle"] );
|
||||
var_2["missile"] = var_0 maps\_hud_util::createclienticon( "apache_missile_icon", 16, 16 );
|
||||
var_2["missile"] maps\_hud_util::setpoint( "CENTER", undefined, 176, 92 );
|
||||
var_2["missile"].alpha = 1.0;
|
||||
var_2["missile"].color = ( 0, 1, 0 );
|
||||
var_2["missile"].isavailable = 1;
|
||||
var_2["missile"].islockedontarget = undefined;
|
||||
var_2["missile"] maps\_hud_util::setparent( var_1["mg_reticle"] );
|
||||
self.hud = var_2;
|
||||
}
|
||||
|
||||
_start()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_0 endon( "LISTEN_end_raining_missile" );
|
||||
hud_start();
|
||||
var_0 notifyonplayercommand( "LISTEN_raining_missile_startLockOn", "+frag" );
|
||||
var_0 notifyonplayercommand( "LISTEN_raining_missile_startFire", "-frag" );
|
||||
self.target = undefined;
|
||||
childthread monitorreloading();
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if ( !isdefined( self.isactive ) )
|
||||
{
|
||||
wait 0.05;
|
||||
continue;
|
||||
}
|
||||
|
||||
var_0 waittill( "LISTEN_raining_missile_startLockOn" );
|
||||
|
||||
if ( !isdefined( self.isactive ) )
|
||||
{
|
||||
wait 0.05;
|
||||
continue;
|
||||
}
|
||||
|
||||
childthread lockontarget();
|
||||
var_0 waittill( "LISTEN_raining_missile_startFire" );
|
||||
childthread _fire();
|
||||
}
|
||||
}
|
||||
|
||||
activate()
|
||||
{
|
||||
var_0 = self.hud;
|
||||
self.isactive = 1;
|
||||
|
||||
if ( isdefined( var_0["missile"].isavailable ) )
|
||||
var_0["missile"].alpha = 1.0;
|
||||
else
|
||||
var_0["missile"].alpha = 0;
|
||||
|
||||
var_0["missile_name"].alpha = 1.0;
|
||||
}
|
||||
|
||||
deactivate()
|
||||
{
|
||||
var_0 = self.hud;
|
||||
self.isactive = undefined;
|
||||
|
||||
if ( isdefined( var_0["missile"].isavailable ) )
|
||||
var_0["missile"].alpha = 0.2;
|
||||
else
|
||||
var_0["missile"].alpha = 0;
|
||||
|
||||
var_0["missile_name"].alpha = 0.2;
|
||||
}
|
||||
|
||||
hud_start()
|
||||
{
|
||||
var_0 = self.hud;
|
||||
|
||||
if ( isdefined( var_0["missile"].isavailable ) )
|
||||
var_0["missile"].alpha = common_scripts\utility::ter_op( isdefined( self.isactive ), 1.0, 0.2 );
|
||||
else
|
||||
var_0["missile"].alpha = 0;
|
||||
|
||||
if ( isdefined( var_0["missile"].islockedontarget ) )
|
||||
var_0["missile"] setshader( "apache_missile_icon_lock", 16, 16 );
|
||||
else
|
||||
var_0["missile"] setshader( "apache_missile_icon", 16, 16 );
|
||||
|
||||
var_0["missile_name"].alpha = common_scripts\utility::ter_op( isdefined( self.isactive ), 1.0, 0.2 );
|
||||
}
|
||||
|
||||
monitorreloading()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_1 = self.hud["missile"];
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if ( !isdefined( var_1.isavailable ) )
|
||||
{
|
||||
wait 10;
|
||||
var_1 setshader( "apache_missile_icon", 16, 16 );
|
||||
var_1.alpha = 1;
|
||||
var_1.color = ( 0, 1, 0 );
|
||||
var_1.isavailable = 1;
|
||||
var_1.islockedontarget = undefined;
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
lockontarget()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_0 endon( "LISTEN_raining_missile_startFire" );
|
||||
self.target = undefined;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
var_1 = target_getarray();
|
||||
|
||||
foreach ( var_3 in var_1 )
|
||||
{
|
||||
if ( var_3 target_islockedon( var_0 ) )
|
||||
{
|
||||
if ( !target_isincircle( var_3, var_0, 65, 128 ) )
|
||||
removelockedontarget( var_3 );
|
||||
}
|
||||
}
|
||||
|
||||
if ( hasammofortargets() && !hud_islockedontarget( self.hud["missile"] ) )
|
||||
{
|
||||
var_1 = sortbydistance( var_1, var_0 geteye() );
|
||||
var_3 = gettargetclosesttoreticule( var_1 );
|
||||
addlockedontarget( var_3 );
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
gettargetclosesttoreticule( var_0 )
|
||||
{
|
||||
var_1 = self.owner;
|
||||
var_2 = 0;
|
||||
|
||||
for ( var_3 = 96; !var_2 && var_3 > 16; var_3 = var_3 * 0.75 )
|
||||
{
|
||||
foreach ( var_5 in var_0 )
|
||||
{
|
||||
if ( !var_5 maps\_vehicle::isvehicle() || var_5 target_islockedon( var_1 ) || !target_isincircle( var_5, var_1, 65, var_3 ) )
|
||||
var_0 = common_scripts\utility::array_remove( var_0, var_5 );
|
||||
}
|
||||
|
||||
if ( var_0.size <= 2 )
|
||||
var_2 = 1;
|
||||
}
|
||||
|
||||
return common_scripts\utility::array_randomize( var_0 )[0];
|
||||
}
|
||||
|
||||
hud_flashalpha( var_0, var_1, var_2 )
|
||||
{
|
||||
self endon( "death" );
|
||||
self.alpha = var_0;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
self fadeovertime( var_1 );
|
||||
self.alpha = 0;
|
||||
wait( var_1 );
|
||||
|
||||
if ( isdefined( var_2 ) && var_2 > 0 )
|
||||
wait( var_2 );
|
||||
|
||||
self fadeovertime( var_1 );
|
||||
self.alpha = var_0;
|
||||
wait( var_1 );
|
||||
}
|
||||
}
|
||||
|
||||
target_islockedon( var_0 )
|
||||
{
|
||||
return isdefined( self._target.weapon["lockOn_missile"].islockedon[var_0 getentitynumber()] );
|
||||
}
|
||||
|
||||
islockedontarget( var_0 )
|
||||
{
|
||||
return common_scripts\utility::array_contains( self.targets, var_0 );
|
||||
}
|
||||
|
||||
hasammofortargets()
|
||||
{
|
||||
return isdefined( self.hud["missile"].isavailable );
|
||||
}
|
||||
|
||||
addlockedontarget( var_0 )
|
||||
{
|
||||
var_1 = self.owner;
|
||||
self.target = var_0;
|
||||
|
||||
if ( !isdefined( var_0 ) )
|
||||
return;
|
||||
|
||||
if ( !isdummytarget( var_0 ) )
|
||||
{
|
||||
if ( !var_0 target_islockedonbyanyweaponsystem( var_1 ) )
|
||||
target_setcolor( var_0, ( 1, 0, 0 ) );
|
||||
|
||||
var_0 target_set_islockedon( var_1 );
|
||||
}
|
||||
|
||||
hud_markused_freemissileicon();
|
||||
}
|
||||
|
||||
dummy_getrealtarget()
|
||||
{
|
||||
return self.realtarget;
|
||||
}
|
||||
|
||||
target_set_islockedon( var_0 )
|
||||
{
|
||||
self._target.weapon["raining_missile"].islockedon[var_0 getentitynumber()] = 1;
|
||||
}
|
||||
|
||||
isdummytarget( var_0 )
|
||||
{
|
||||
return isdefined( var_0.isdummytarget );
|
||||
}
|
||||
|
||||
hud_markused_freemissileicon()
|
||||
{
|
||||
var_0 = self.hud["missile"];
|
||||
|
||||
if ( !hud_islockedontarget( var_0 ) )
|
||||
{
|
||||
var_0 setshader( "apache_missile_icon_lock", 16, 16 );
|
||||
var_0.islockedontarget = 1;
|
||||
var_0.color = ( 1, 0, 0 );
|
||||
}
|
||||
}
|
||||
|
||||
hud_islockedontarget( var_0 )
|
||||
{
|
||||
return isdefined( var_0.islockedontarget );
|
||||
}
|
||||
|
||||
removelockedontarget( var_0 )
|
||||
{
|
||||
self.target = undefined;
|
||||
var_1 = self.owner;
|
||||
var_0 target_unset_islockedon( var_1 );
|
||||
|
||||
if ( !var_0 target_islockedonbyanyweaponsystem( var_1 ) )
|
||||
target_setcolor( var_0, ( 0, 1, 0 ) );
|
||||
|
||||
hud_markfree_usedmissileicon();
|
||||
}
|
||||
|
||||
target_islockedonbyanyweaponsystem( var_0, var_1 )
|
||||
{
|
||||
var_2 = undefined;
|
||||
|
||||
if ( isdefined( var_1 ) )
|
||||
var_2 = var_1;
|
||||
else
|
||||
var_2 = var_0 getentitynumber();
|
||||
|
||||
foreach ( var_4 in self._target.weapon )
|
||||
{
|
||||
if ( isdefined( var_4.islockedon[var_2] ) )
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
target_unset_islockedon( var_0, var_1 )
|
||||
{
|
||||
var_2 = undefined;
|
||||
|
||||
if ( isdefined( var_1 ) )
|
||||
var_2 = var_1;
|
||||
else
|
||||
var_2 = var_0 getentitynumber();
|
||||
|
||||
if ( isdefined( self._target ) )
|
||||
self._target.weapon["raining_missile"].islockedon[var_2] = undefined;
|
||||
}
|
||||
|
||||
hud_markfree_usedmissileicon()
|
||||
{
|
||||
var_0 = self.hud["missile"];
|
||||
|
||||
if ( hud_islockedontarget( var_0 ) )
|
||||
{
|
||||
var_0.islockedontarget = undefined;
|
||||
var_0.color = ( 0, 1, 0 );
|
||||
}
|
||||
}
|
||||
|
||||
_fire()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
|
||||
if ( !hasammofortargets() )
|
||||
return;
|
||||
|
||||
var_1 = undefined;
|
||||
|
||||
if ( !isdefined( self.target ) )
|
||||
{
|
||||
var_2 = var_0 getplayerangles();
|
||||
var_3 = anglestoforward( var_2 );
|
||||
var_1 = spawn( "script_model", var_0 geteye() + 6000 * var_3 );
|
||||
var_1 setmodel( "tag_origin" );
|
||||
var_1.isdummytarget = 1;
|
||||
addlockedontarget( var_1 );
|
||||
}
|
||||
|
||||
if ( !isdummytarget( self.target ) )
|
||||
{
|
||||
var_1 = spawn( "script_model", self.target.origin );
|
||||
var_1 setmodel( "tag_origin" );
|
||||
var_1 linkto( self.target );
|
||||
var_1.isdummytarget = 1;
|
||||
}
|
||||
|
||||
hud_makenotavailable_availablemissileicon();
|
||||
var_4 = var_0 geteye() + ( 0, 0, -160 );
|
||||
var_2 = var_0 getplayerangles();
|
||||
var_5 = var_4 + 10 * anglestoforward( var_2 );
|
||||
var_6 = magicbullet( "apache_lockon_raining_missile_phase_2", var_4, var_5, var_0 );
|
||||
var_6.owner = var_0;
|
||||
var_7 = 0.000005 * distance( var_4, self.target.origin );
|
||||
|
||||
if ( var_7 < 0.05 )
|
||||
var_6 common_scripts\utility::missile_settargetandflightmode( var_1, "top" );
|
||||
else
|
||||
var_6 maps\_utility::delaythread( var_7, common_scripts\utility::missile_settargetandflightmode, var_1, "top" );
|
||||
|
||||
thread deployrainingmissiles( var_6, var_1, self.target );
|
||||
var_0 playrumbleonentity( "heavygun_fire" );
|
||||
earthquake( 0.3, 0.6, var_0.origin, 5000 );
|
||||
self.target thread target_monitorfreelockedon( var_0, var_6, var_1 );
|
||||
}
|
||||
|
||||
hud_makenotavailable_availablemissileicon()
|
||||
{
|
||||
var_0 = self.hud["missile"];
|
||||
|
||||
if ( isdefined( var_0.isavailable ) )
|
||||
{
|
||||
var_0.isavailable = undefined;
|
||||
var_0.alpha = 0;
|
||||
}
|
||||
}
|
||||
|
||||
deployrainingmissiles( var_0, var_1, var_2 )
|
||||
{
|
||||
var_3 = 2048;
|
||||
var_0 thread missile_trackrealtarget( var_2 );
|
||||
waittill_ent_moving_dir_world_relative( var_0, ( 0, 0, 1 ), 0.707107 );
|
||||
|
||||
if ( isdefined( var_0 ) )
|
||||
waittill_ent_moving_dir_world_relative( var_0, ( 0, 0, -1 ) );
|
||||
|
||||
if ( isdefined( var_0 ) )
|
||||
waittill_ent1_in_z_range_of_ent2( var_0, var_1, var_3 );
|
||||
|
||||
if ( !isdefined( var_0 ) )
|
||||
return;
|
||||
|
||||
var_4 = var_0.origin;
|
||||
var_5 = var_0.angles;
|
||||
var_6 = var_0.realtargetorigin;
|
||||
var_7 = var_0.owner;
|
||||
var_0 delete();
|
||||
var_8 = anglestoforward( var_5 );
|
||||
playfx( common_scripts\utility::getfx( "FX_apache_raining_missile_spawn" ), var_4, -1 * var_8 );
|
||||
var_7 playrumbleonentity( "heavygun_fire" );
|
||||
earthquake( 0.2, 0.4, var_7.origin, 5000 );
|
||||
var_9 = ( 0, 0, 1 );
|
||||
var_5 = vectortoangles( var_9 );
|
||||
var_10 = anglestoup( var_5 );
|
||||
var_11 = vectorcross( var_9, var_10 );
|
||||
var_12 = 16;
|
||||
var_13 = 360 / var_12;
|
||||
var_14 = [];
|
||||
var_15 = [];
|
||||
var_16 = [];
|
||||
|
||||
for ( var_17 = 0; var_17 < var_12; var_17++ )
|
||||
{
|
||||
var_18 = randomfloatrange( 256, 292 );
|
||||
var_19 = randomfloatrange( -3, 3 );
|
||||
var_14[var_17] = cos( var_13 * var_17 + var_19 );
|
||||
var_15[var_17] = sin( var_13 * var_17 + var_19 );
|
||||
var_16[var_17] = var_4 + var_18 * var_14[var_17] * var_10 + var_18 * var_15[var_17] * var_11;
|
||||
}
|
||||
|
||||
var_20 = [];
|
||||
var_21 = -256;
|
||||
|
||||
for ( var_17 = 0; var_17 < var_12; var_17++ )
|
||||
{
|
||||
var_18 = randomfloatrange( 5120, 6400 );
|
||||
var_20[var_17] = var_4 + ( 0, 0, var_21 ) + var_18 * var_14[var_17] * var_10 + var_18 * var_15[var_17] * var_11;
|
||||
}
|
||||
|
||||
var_22 = [];
|
||||
var_4 = var_6;
|
||||
|
||||
for ( var_17 = 0; var_17 < var_12; var_17++ )
|
||||
{
|
||||
var_18 = randomfloatrange( 0, 640 );
|
||||
var_22[var_17] = var_4 + var_18 * var_14[var_17] * var_10 + var_18 * var_15[var_17] * var_11;
|
||||
}
|
||||
|
||||
var_23 = [];
|
||||
|
||||
for ( var_17 = 0; var_17 < var_12; var_17++ )
|
||||
var_23[var_17] = var_17;
|
||||
|
||||
var_23 = common_scripts\utility::array_randomize( var_23 );
|
||||
|
||||
for ( var_17 = 0; var_17 < var_12; var_17++ )
|
||||
{
|
||||
var_24 = randomfloatrange( 0, 0.5 );
|
||||
var_25 = randomfloatrange( 0.5, 4 );
|
||||
var_26 = var_23[var_17];
|
||||
var_27 = spawn( "script_model", var_22[var_17] );
|
||||
var_27 setmodel( "tag_origin" );
|
||||
thread missile_spawnandlockontotarget( var_24, var_16[var_26], var_20[var_26], var_7, var_25, var_27 );
|
||||
}
|
||||
}
|
||||
|
||||
missile_trackrealtarget( var_0 )
|
||||
{
|
||||
self endon( "death" );
|
||||
|
||||
while ( isdefined( var_0 ) )
|
||||
{
|
||||
self.realtargetorigin = var_0.origin;
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
missile_spawnandlockontotarget( var_0, var_1, var_2, var_3, var_4, var_5 )
|
||||
{
|
||||
if ( var_0 > 0.05 )
|
||||
wait( var_0 );
|
||||
|
||||
var_6 = magicbullet( "apache_raining_missile", var_1, var_2, var_3 );
|
||||
var_6.owner = var_3;
|
||||
var_6 common_scripts\utility::missile_settargetandflightmode( var_5, "direct" );
|
||||
var_6 thread missile_ondeathdeletetarget( var_5 );
|
||||
}
|
||||
|
||||
missile_ondeathdeletetarget( var_0 )
|
||||
{
|
||||
var_1 = self.owner;
|
||||
self waittill( "death" );
|
||||
var_0 delete();
|
||||
var_1 playrumbleonentity( "heavygun_fire" );
|
||||
earthquake( 0.15, 0.3, var_1.origin, 5000 );
|
||||
}
|
||||
|
||||
waittill_ent_moving_dir_world_relative( var_0, var_1, var_2 )
|
||||
{
|
||||
if ( !isdefined( var_2 ) )
|
||||
var_2 = 0;
|
||||
|
||||
var_0 endon( "death" );
|
||||
var_3 = var_0.origin;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
wait 0.05;
|
||||
|
||||
if ( !isdefined( var_0 ) )
|
||||
return;
|
||||
|
||||
var_4 = vectornormalize( var_0.origin - var_3 );
|
||||
|
||||
if ( vectordot( var_1, var_4 ) > 0 )
|
||||
break;
|
||||
|
||||
var_3 = var_0.origin;
|
||||
}
|
||||
}
|
||||
|
||||
target_monitorfreelockedon( var_0, var_1, var_2 )
|
||||
{
|
||||
var_3 = var_0 getentitynumber();
|
||||
var_1 waittill( "death" );
|
||||
|
||||
if ( isdefined( self ) )
|
||||
{
|
||||
if ( !isdummytarget( self ) )
|
||||
{
|
||||
target_unset_islockedon( var_0, var_3 );
|
||||
|
||||
if ( target_istarget( self ) && !target_islockedonbyanyweaponsystem( var_0, var_3 ) )
|
||||
target_setcolor( self, ( 0, 1, 0 ) );
|
||||
}
|
||||
}
|
||||
|
||||
var_2 delete();
|
||||
}
|
||||
|
||||
_end()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_0 notify( "LISTEN_end_raining_missile" );
|
||||
override_array_thread( self.hud, ::set_key, [ 0, "alpha" ] );
|
||||
}
|
||||
|
||||
_destroy()
|
||||
{
|
||||
_end();
|
||||
override_array_call( self.hud, ::destroy );
|
||||
}
|
||||
|
||||
set_key( var_0, var_1 )
|
||||
{
|
||||
if ( !isdefined( self ) || !isdefined( var_1 ) )
|
||||
return;
|
||||
|
||||
switch ( var_1 )
|
||||
{
|
||||
case "alpha":
|
||||
self.alpha = var_0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
override_array_thread( var_0, var_1, var_2 )
|
||||
{
|
||||
if ( !isdefined( var_2 ) )
|
||||
{
|
||||
foreach ( var_4 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_4 ) )
|
||||
{
|
||||
if ( isdefined( var_4 ) && isarray( var_4 ) )
|
||||
{
|
||||
override_array_thread( var_4, var_1 );
|
||||
continue;
|
||||
}
|
||||
|
||||
var_4 thread [[ var_1 ]]();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch ( var_2.size )
|
||||
{
|
||||
case 0:
|
||||
foreach ( var_4 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_4 ) )
|
||||
{
|
||||
if ( isarray( var_4 ) )
|
||||
{
|
||||
override_array_thread( var_4, var_1, var_2 );
|
||||
continue;
|
||||
}
|
||||
|
||||
var_4 thread [[ var_1 ]]();
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 1:
|
||||
foreach ( var_4 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_4 ) )
|
||||
{
|
||||
if ( isarray( var_4 ) )
|
||||
{
|
||||
override_array_thread( var_4, var_1, var_2 );
|
||||
continue;
|
||||
}
|
||||
|
||||
var_4 thread [[ var_1 ]]( var_2[0] );
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 2:
|
||||
foreach ( var_4 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_4 ) )
|
||||
{
|
||||
if ( isarray( var_4 ) )
|
||||
{
|
||||
override_array_thread( var_4, var_1, var_2 );
|
||||
continue;
|
||||
}
|
||||
|
||||
var_4 thread [[ var_1 ]]( var_2[0], var_2[1] );
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 3:
|
||||
foreach ( var_4 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_4 ) )
|
||||
{
|
||||
if ( isarray( var_4 ) )
|
||||
{
|
||||
override_array_thread( var_4, var_1, var_2 );
|
||||
continue;
|
||||
}
|
||||
|
||||
var_4 thread [[ var_1 ]]( var_2[0], var_2[1], var_2[2] );
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 4:
|
||||
foreach ( var_4 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_4 ) )
|
||||
{
|
||||
if ( isarray( var_4 ) )
|
||||
{
|
||||
override_array_thread( var_4, var_1, var_2 );
|
||||
continue;
|
||||
}
|
||||
|
||||
var_4 thread [[ var_1 ]]( var_2[0], var_2[1], var_2[2], var_2[3] );
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 5:
|
||||
foreach ( var_4 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_4 ) )
|
||||
{
|
||||
if ( isarray( var_4 ) )
|
||||
{
|
||||
override_array_thread( var_4, var_1, var_2 );
|
||||
continue;
|
||||
}
|
||||
|
||||
var_4 thread [[ var_1 ]]( var_2[0], var_2[1], var_2[2], var_2[3], var_2[4] );
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override_array_call( var_0, var_1, var_2 )
|
||||
{
|
||||
if ( !isdefined( var_2 ) )
|
||||
{
|
||||
foreach ( var_4 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_4 ) )
|
||||
{
|
||||
if ( isarray( var_4 ) )
|
||||
{
|
||||
override_array_call( var_4, var_1 );
|
||||
continue;
|
||||
}
|
||||
|
||||
var_4 call [[ var_1 ]]();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch ( var_2.size )
|
||||
{
|
||||
case 0:
|
||||
foreach ( var_4 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_4 ) )
|
||||
{
|
||||
if ( isarray( var_4 ) )
|
||||
{
|
||||
override_array_call( var_4, var_1, var_2 );
|
||||
continue;
|
||||
}
|
||||
|
||||
var_4 call [[ var_1 ]]();
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 1:
|
||||
foreach ( var_4 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_4 ) )
|
||||
{
|
||||
if ( isarray( var_4 ) )
|
||||
{
|
||||
override_array_call( var_4, var_1, var_2 );
|
||||
continue;
|
||||
}
|
||||
|
||||
var_4 call [[ var_1 ]]( var_2[0] );
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 2:
|
||||
foreach ( var_4 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_4 ) )
|
||||
{
|
||||
if ( isarray( var_4 ) )
|
||||
{
|
||||
override_array_call( var_4, var_1, var_2 );
|
||||
continue;
|
||||
}
|
||||
|
||||
var_4 call [[ var_1 ]]( var_2[0], var_2[1] );
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 3:
|
||||
foreach ( var_4 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_4 ) )
|
||||
{
|
||||
if ( isarray( var_4 ) )
|
||||
{
|
||||
override_array_call( var_4, var_1, var_2 );
|
||||
continue;
|
||||
}
|
||||
|
||||
var_4 call [[ var_1 ]]( var_2[0], var_2[1], var_2[2] );
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 4:
|
||||
foreach ( var_4 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_4 ) )
|
||||
{
|
||||
if ( isarray( var_4 ) )
|
||||
{
|
||||
override_array_call( var_4, var_1, var_2 );
|
||||
continue;
|
||||
}
|
||||
|
||||
var_4 call [[ var_1 ]]( var_2[0], var_2[1], var_2[2], var_2[3] );
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 5:
|
||||
foreach ( var_4 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_4 ) )
|
||||
{
|
||||
if ( isarray( var_4 ) )
|
||||
{
|
||||
override_array_call( var_4, var_1, var_2 );
|
||||
continue;
|
||||
}
|
||||
|
||||
var_4 call [[ var_1 ]]( var_2[0], var_2[1], var_2[2], var_2[3], var_2[4] );
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gt_op( var_0, var_1, var_2 )
|
||||
{
|
||||
if ( isdefined( var_0 ) && isdefined( var_1 ) )
|
||||
return common_scripts\utility::ter_op( var_0 > var_1, var_0, var_1 );
|
||||
|
||||
if ( isdefined( var_0 ) && !isdefined( var_1 ) )
|
||||
return var_0;
|
||||
|
||||
if ( !isdefined( var_0 ) && isdefined( var_1 ) )
|
||||
return var_1;
|
||||
|
||||
return var_2;
|
||||
}
|
||||
|
||||
waittill_ent1_in_z_range_of_ent2( var_0, var_1, var_2 )
|
||||
{
|
||||
var_2 = gt_op( var_2, 0 );
|
||||
|
||||
while ( dsq_z_ents_gt( var_0, var_1, var_2 ) )
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
dsq_z_ents( var_0, var_1 )
|
||||
{
|
||||
return lengthsquared( ( 0, 0, var_0.origin[2] - var_1.origin[2] ) );
|
||||
}
|
||||
|
||||
dsq_z_ents_gt( var_0, var_1, var_2, var_3 )
|
||||
{
|
||||
if ( isdefined( var_0 ) && isdefined( var_1 ) && isdefined( var_2 ) )
|
||||
return common_scripts\utility::ter_op( dsq_z_ents( var_0, var_1 ) > squared( var_2 ), 1, 0 );
|
||||
|
||||
return common_scripts\utility::ter_op( isdefined( var_3 ), var_3, 0 );
|
||||
}
|
440
vehicle_scripts/_apache_player_targeting.gsc
Normal file
440
vehicle_scripts/_apache_player_targeting.gsc
Normal file
@ -0,0 +1,440 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
_precache()
|
||||
{
|
||||
precacheshader( "apache_friendly_ai_diamond_s_w" );
|
||||
precacheshader( "apache_target_vehicle" );
|
||||
precacheshader( "apache_enemy_ai_target_s_w" );
|
||||
precacheshader( "apache_friendly_vehicle_diamond_s_w" );
|
||||
precacheshader( "apache_enemy_vehicle_target_empty" );
|
||||
precacheshader( "apache_enemy_vehicle_target_offscreen" );
|
||||
precacheshader( "apache_friendly_vehicle_target_offscreen" );
|
||||
}
|
||||
|
||||
_init( var_0 )
|
||||
{
|
||||
var_1 = spawnstruct();
|
||||
var_1.owner = var_0;
|
||||
var_1.type = "targeting";
|
||||
return var_1;
|
||||
}
|
||||
|
||||
_start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
hud_color_ally()
|
||||
{
|
||||
return ( 0.3, 0.3, 0.3 );
|
||||
}
|
||||
|
||||
hud_set_target_locked( var_0 )
|
||||
{
|
||||
if ( var_0 maps\_vehicle::isvehicle() )
|
||||
{
|
||||
target_setdelay( var_0, 0.0, 1, 1, 0.0 );
|
||||
target_setminsize( var_0, 32, 0 );
|
||||
}
|
||||
}
|
||||
|
||||
hud_set_target_default( var_0 )
|
||||
{
|
||||
if ( var_0 maps\_vehicle::isvehicle() )
|
||||
{
|
||||
target_setdelay( var_0, 0.6, 10, 25, randomfloatrange( 1.25, 2.75 ) );
|
||||
target_setminsize( var_0, 16, common_scripts\utility::ter_op( isdefined( var_0.hud_player_target_hide_at_min ), var_0.hud_player_target_hide_at_min, 1 ) );
|
||||
}
|
||||
}
|
||||
|
||||
hud_addtargets( var_0, var_1 )
|
||||
{
|
||||
if ( !isdefined( var_0 ) || !isarray( var_0 ) )
|
||||
return;
|
||||
|
||||
var_1 = common_scripts\utility::ter_op( isdefined( var_1 ), var_1, 0.0 );
|
||||
var_2 = "apache_friendly_ai_diamond_s_w";
|
||||
var_3 = undefined;
|
||||
var_4 = undefined;
|
||||
var_5 = ( 0, 0, 0 );
|
||||
var_6 = "both";
|
||||
var_7 = 0;
|
||||
var_8 = 0;
|
||||
var_9 = 0;
|
||||
var_10 = -1;
|
||||
var_11 = -1;
|
||||
var_12 = 1;
|
||||
var_13 = 1;
|
||||
var_14 = 0;
|
||||
var_15 = undefined;
|
||||
var_16 = -1;
|
||||
var_17 = undefined;
|
||||
|
||||
foreach ( var_19 in var_0 )
|
||||
{
|
||||
if ( target_istarget( var_19 ) )
|
||||
target_remove( var_19 );
|
||||
|
||||
if ( !isdefined( var_19 ) || isdefined( var_19.shader ) || target_getarray().size >= 64 )
|
||||
continue;
|
||||
|
||||
if ( ismissile( var_19 ) )
|
||||
{
|
||||
var_2 = "apache_enemy_vehicle_target_empty";
|
||||
var_7 = 1;
|
||||
var_9 = 1;
|
||||
var_14 = 1;
|
||||
var_16 = 60;
|
||||
}
|
||||
else if ( isai( var_19 ) || isscriptmodel( var_19 ) )
|
||||
{
|
||||
if ( var_19 onteam( "allies" ) )
|
||||
{
|
||||
var_2 = "apache_enemy_vehicle_target_empty";
|
||||
var_7 = 1;
|
||||
var_5 = ( 0, 0, 32 );
|
||||
var_9 = 1;
|
||||
var_14 = 1;
|
||||
var_16 = 45;
|
||||
var_15 = hud_color_ally();
|
||||
}
|
||||
else
|
||||
{
|
||||
var_2 = "apache_enemy_vehicle_target_empty";
|
||||
var_6 = "enhanced";
|
||||
var_5 = ( 0, 0, 32 );
|
||||
var_9 = 1;
|
||||
var_14 = 1;
|
||||
var_11 = 24;
|
||||
}
|
||||
}
|
||||
else if ( var_19 maps\_vehicle::isvehicle() )
|
||||
{
|
||||
var_6 = "enhanced";
|
||||
var_2 = "apache_enemy_vehicle_target_empty";
|
||||
var_14 = 1;
|
||||
var_9 = 1;
|
||||
var_8 = 0;
|
||||
var_15 = undefined;
|
||||
var_5 = ( 0, 0, 64 );
|
||||
var_11 = 64;
|
||||
var_16 = 150;
|
||||
var_17 = 0.6;
|
||||
|
||||
if ( var_19 onteam( "allies" ) )
|
||||
{
|
||||
var_2 = "apache_enemy_vehicle_target_empty";
|
||||
var_3 = "apache_friendly_vehicle_target_offscreen";
|
||||
var_7 = 1;
|
||||
var_9 = 1;
|
||||
var_14 = 1;
|
||||
var_15 = hud_color_ally();
|
||||
|
||||
if ( issubstr( var_19.classname, "apache" ) )
|
||||
{
|
||||
var_5 = ( 0, 0, -72 );
|
||||
var_16 = 100;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_3 = "apache_enemy_vehicle_target_offscreen";
|
||||
|
||||
if ( issubstr( var_19.classname, "hind" ) )
|
||||
{
|
||||
var_5 = ( 0, 0, -72 );
|
||||
var_12 = isdefined( var_19.script_parameters ) && issubstr( var_19.script_parameters, "target_hide_at_min" );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_2 = "apache_friendly_ai_diamond_s_w";
|
||||
var_5 = ( 0, 0, 32 );
|
||||
}
|
||||
|
||||
var_20 = spawnstruct();
|
||||
var_20.active_mode = var_6;
|
||||
var_20.active = var_7;
|
||||
var_20.offscreen_shader = var_3;
|
||||
var_20.offscreen_shader_blink = var_4;
|
||||
|
||||
if ( var_13 )
|
||||
{
|
||||
if ( !target_alloc_limit_fail_passed( var_19, var_5 ) )
|
||||
return;
|
||||
|
||||
target_setshader( var_19, var_2 );
|
||||
target_setscaledrendermode( var_19, 0 );
|
||||
|
||||
if ( var_9 )
|
||||
target_drawsingle( var_19 );
|
||||
|
||||
if ( var_14 )
|
||||
target_drawsquare( var_19, var_16 );
|
||||
|
||||
if ( var_8 )
|
||||
target_drawcornersonly( var_19, 1 );
|
||||
|
||||
if ( isdefined( var_15 ) )
|
||||
target_setcolor( var_19, var_15 );
|
||||
|
||||
if ( isdefined( var_17 ) )
|
||||
target_setdelay( var_19, var_17, 10, 25, randomfloatrange( 1.25, 2.75 ) );
|
||||
|
||||
target_setmaxsize( var_19, var_11 );
|
||||
target_setminsize( var_19, var_10, var_12 );
|
||||
target_flush( var_19 );
|
||||
|
||||
if ( !var_12 )
|
||||
var_19.hud_player_target_hide_at_min = var_12;
|
||||
}
|
||||
else
|
||||
{
|
||||
target_set( var_19, var_5 );
|
||||
target_setshader( var_19, var_2 );
|
||||
}
|
||||
|
||||
if ( isdefined( var_3 ) )
|
||||
target_setoffscreenshader( var_19, var_3 );
|
||||
|
||||
var_20.visibleto = [];
|
||||
|
||||
foreach ( var_22 in level.players )
|
||||
var_20.visibleto[var_22 getentitynumber()] = undefined;
|
||||
|
||||
if ( !isdefined( var_20.weapon ) )
|
||||
var_20.weapon = [];
|
||||
|
||||
var_20.weapon["lockOn_missile"] = spawnstruct();
|
||||
var_20.weapon["lockOn_missile"].islockedon = [];
|
||||
var_19._target = var_20;
|
||||
thread hud_target_ondeath( var_19 );
|
||||
|
||||
if ( var_1 > 0 )
|
||||
wait( var_1 );
|
||||
}
|
||||
}
|
||||
|
||||
ismissile( var_0 )
|
||||
{
|
||||
if ( isdefined( var_0 ) && isdefined( var_0.classname ) && issubstr( var_0.classname, "rocket" ) )
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
isscriptmodel( var_0 )
|
||||
{
|
||||
if ( isdefined( var_0 ) && isdefined( var_0.classname ) && var_0.classname == "script_model" )
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
hud_showtargets( var_0 )
|
||||
{
|
||||
var_1 = self.owner;
|
||||
|
||||
foreach ( var_3 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_3 ) && target_istarget( var_3 ) )
|
||||
{
|
||||
var_4 = var_3._target;
|
||||
var_4.visibleto[var_1 getentitynumber()] = 1;
|
||||
var_3 thread hud_outlineenable();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
hud_outlineenable()
|
||||
{
|
||||
if ( isdefined( self.team ) && self.team == "allies" || isdefined( self.script_team ) && self.script_team == "allies" )
|
||||
{
|
||||
if ( !isai( self ) )
|
||||
thread hud_outline_enable_withinview( "friendly", cos( 20 ) );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
var_0 = "enemy";
|
||||
|
||||
if ( isdefined( level.player.riding_heli ) && self == level.player.riding_heli )
|
||||
return;
|
||||
|
||||
if ( isdefined( self.mgturret ) )
|
||||
{
|
||||
foreach ( var_2 in self.mgturret )
|
||||
var_2 maps\_utility::set_hudoutline( var_0, 1 );
|
||||
}
|
||||
|
||||
maps\_utility::set_hudoutline( var_0, 1 );
|
||||
self waittill( "death" );
|
||||
|
||||
if ( isdefined( self ) )
|
||||
self hudoutlinedisable();
|
||||
}
|
||||
|
||||
hud_outline_enable_withinview( var_0, var_1 )
|
||||
{
|
||||
self notify( "hud_outline_enable_withinView" );
|
||||
self endon( "hud_outline_enable_withinView" );
|
||||
self endon( "death" );
|
||||
var_2 = 0;
|
||||
var_3 = 1;
|
||||
|
||||
while ( var_3 )
|
||||
{
|
||||
wait 0.05;
|
||||
var_4 = ( target_isincircle( self, level.player, 66, 130 ) || distancesquared( level.player geteye(), self.origin ) < 9000000 ) && ( level.player attackbuttonpressed() || level.player fragbuttonpressed() );
|
||||
var_3 = isdefined( level.player.riding_heli );
|
||||
|
||||
if ( var_2 )
|
||||
{
|
||||
if ( !var_4 || !var_3 )
|
||||
{
|
||||
var_2 = 0;
|
||||
self hudoutlinedisable();
|
||||
|
||||
if ( isdefined( self.mgturret ) )
|
||||
{
|
||||
foreach ( var_6 in self.mgturret )
|
||||
var_6 hudoutlinedisable();
|
||||
}
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( var_4 && var_3 )
|
||||
{
|
||||
var_2 = 1;
|
||||
maps\_utility::set_hudoutline( var_0, 1 );
|
||||
|
||||
if ( isdefined( self.mgturret ) )
|
||||
{
|
||||
foreach ( var_6 in self.mgturret )
|
||||
var_6 maps\_utility::set_hudoutline( var_0, 1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
hud_hidetargets( var_0 )
|
||||
{
|
||||
var_1 = self.owner;
|
||||
|
||||
foreach ( var_3 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_3 ) && target_istarget( var_3 ) )
|
||||
{
|
||||
var_4 = var_3._target;
|
||||
var_4.visibleto[var_1 getentitynumber()] = undefined;
|
||||
|
||||
if ( isdefined( var_3.mgturret ) )
|
||||
common_scripts\utility::array_call( var_3.mgturret, ::hudoutlinedisable );
|
||||
|
||||
var_3 hudoutlinedisable();
|
||||
target_hidefromplayer( var_3, var_1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onteam( var_0 )
|
||||
{
|
||||
if ( maps\_vehicle::isvehicle() )
|
||||
return isdefined( self.script_team ) && self.script_team == var_0;
|
||||
else
|
||||
return isdefined( self.team ) && self.team == var_0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
hud_target_ondeath( var_0 )
|
||||
{
|
||||
var_0 waittill( "death" );
|
||||
|
||||
if ( isdefined( var_0 ) && target_istarget( var_0 ) )
|
||||
{
|
||||
if ( !isai( var_0 ) )
|
||||
hud_hidetargets( [ var_0 ] );
|
||||
|
||||
target_remove( var_0 );
|
||||
}
|
||||
}
|
||||
|
||||
target_islockedontome( var_0 )
|
||||
{
|
||||
if ( !isdefined( self._target ) )
|
||||
return 0;
|
||||
|
||||
var_1 = var_0 getentitynumber();
|
||||
var_2 = 0;
|
||||
|
||||
foreach ( var_4 in self._target.weapon )
|
||||
{
|
||||
if ( isdefined( var_4.islockedon[var_1] ) )
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
_end()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_0 notify( "LISTEN_end_targeting" );
|
||||
var_1 = target_getarray();
|
||||
var_2 = var_0 getentitynumber();
|
||||
|
||||
if ( level.players.size > 1 )
|
||||
{
|
||||
foreach ( var_4 in var_1 )
|
||||
{
|
||||
target_remove( var_4 );
|
||||
|
||||
if ( isdefined( var_4._target ) )
|
||||
var_4._target = undefined;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach ( var_4 in var_1 )
|
||||
{
|
||||
target_hidefromplayer( var_4, var_0 );
|
||||
|
||||
if ( isdefined( var_4._target ) )
|
||||
{
|
||||
foreach ( var_8 in var_4._target.weapon )
|
||||
var_8.islockedon[var_2] = undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gt_op( var_0, var_1, var_2 )
|
||||
{
|
||||
if ( isdefined( var_0 ) && isdefined( var_1 ) )
|
||||
return common_scripts\utility::ter_op( var_0 > var_1, var_0, var_1 );
|
||||
|
||||
if ( isdefined( var_0 ) && !isdefined( var_1 ) )
|
||||
return var_0;
|
||||
|
||||
if ( !isdefined( var_0 ) && isdefined( var_1 ) )
|
||||
return var_1;
|
||||
|
||||
return var_2;
|
||||
}
|
||||
|
||||
target_alloc_limit_fail_passed( var_0, var_1 )
|
||||
{
|
||||
if ( target_getarray().size >= 64 )
|
||||
{
|
||||
thread maps\_utility::missionfailedwrapper();
|
||||
return 0;
|
||||
}
|
||||
|
||||
target_alloc( var_0, var_1 );
|
||||
return 1;
|
||||
}
|
1651
vehicle_scripts/_attack_heli.gsc
Normal file
1651
vehicle_scripts/_attack_heli.gsc
Normal file
File diff suppressed because it is too large
Load Diff
70
vehicle_scripts/_b2.gsc
Normal file
70
vehicle_scripts/_b2.gsc
Normal file
@ -0,0 +1,70 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "b2", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_b2_bomber" );
|
||||
maps\_vehicle::build_treadfx();
|
||||
level._effect["engineeffect"] = loadfx( "fx/fire/jet_afterburner" );
|
||||
level._effect["afterburner"] = loadfx( "fx/fire/jet_afterburner_ignite" );
|
||||
level._effect["contrail"] = loadfx( "fx/smoke/jet_contrail" );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/large_vehicle_explosion", undefined, "explo_metal_rand" );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_rumble( "mig_rumble", 0.1, 0.2, 11300, 0.05, 0.05 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
maps\_vehicle::build_is_airplane();
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
thread playengineeffects();
|
||||
thread playcontrail();
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
return var_0;
|
||||
}
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 1; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
return var_0;
|
||||
}
|
||||
|
||||
playengineeffects()
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "stop_engineeffects" );
|
||||
maps\_utility::ent_flag_init( "engineeffects" );
|
||||
maps\_utility::ent_flag_set( "engineeffects" );
|
||||
var_0 = common_scripts\utility::getfx( "engineeffect" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
maps\_utility::ent_flag_wait( "engineeffects" );
|
||||
playfxontag( var_0, self, "tag_engine_right" );
|
||||
playfxontag( var_0, self, "tag_engine_left" );
|
||||
maps\_utility::ent_flag_waitopen( "engineeffects" );
|
||||
stopfxontag( var_0, self, "tag_engine_left" );
|
||||
stopfxontag( var_0, self, "tag_engine_right" );
|
||||
}
|
||||
}
|
||||
|
||||
playafterburner()
|
||||
{
|
||||
playfxontag( level._effect["afterburner"], self, "tag_engine_right" );
|
||||
playfxontag( level._effect["afterburner"], self, "tag_engine_left" );
|
||||
}
|
||||
|
||||
playcontrail()
|
||||
{
|
||||
playfxontag( level._effect["contrail"], self, "tag_right_wingtip" );
|
||||
playfxontag( level._effect["contrail"], self, "tag_left_wingtip" );
|
||||
}
|
121
vehicle_scripts/_btr80.gsc
Normal file
121
vehicle_scripts/_btr80.gsc
Normal file
@ -0,0 +1,121 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "btr80", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_btr80", "vehicle_btr80_d", 0.1 );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_btr80_snow", "vehicle_btr80_snow_d" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_btr80_low", "vehicle_btr80_d" );
|
||||
var_3 = [];
|
||||
var_3["vehicle_btr80"] = "fx/explosions/vehicle_explosion_btr80";
|
||||
var_3["vehicle_btr80_snow"] = "fx/explosions/vehicle_explosion_btr80_snow";
|
||||
var_3["vehicle_btr80_low"] = "fx/explosions/vehicle_explosion_btr80";
|
||||
maps\_vehicle::build_deathfx( "fx/fire/firelp_med_pm", "TAG_CARGOFIRE", "fire_metal_medium", undefined, undefined, 1, 0 );
|
||||
maps\_vehicle::build_deathfx( var_3[var_0], "tag_deathfx", "exp_armor_vehicle" );
|
||||
maps\_vehicle::build_light( var_2, "headlight_L", "TAG_FRONT_LIGHT_LEFT", "fx/misc/car_headlight_btr80", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "taillight_L", "TAG_REAR_LIGHT_LEFT", "fx/misc/car_taillight_btr80", "running", 0.1 );
|
||||
maps\_vehicle::build_light( var_2, "taillight_R", "TAG_REAR_LIGHT_RIGHT", "fx/misc/car_taillight_btr80", "running", 0.1 );
|
||||
maps\_vehicle::build_light( var_2, "brakeight_R", "TAG_REAR_LIGHT_RIGHT", "fx/misc/car_brakelight_btr80", "brake", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_L", "TAG_REAR_LIGHT_LEFT", "fx/misc/car_brakelight_btr80", "brake", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "spotlight", "TAG_FRONT_LIGHT_RIGHT", "fx/misc/spotlight_btr80", "spotlight", 0.2 );
|
||||
maps\_vehicle::build_light( var_2, "spotlight_turret", "TAG_TURRET_LIGHT", "fx/misc/spotlight_btr80", "spotlight_turret", 0.0 );
|
||||
maps\_vehicle::build_drive( %btr80_movement, %btr80_movement_backwards, 10 );
|
||||
|
||||
if ( issubstr( var_0, "_snow" ) )
|
||||
maps\_vehicle::build_turret( "btr80_turret2", "tag_turret2", "vehicle_btr80_machine_gun_snow" );
|
||||
else if ( issubstr( var_2, "_ac130" ) )
|
||||
maps\_vehicle::build_turret( "btr80_ac130_turret", "tag_turret2", "vehicle_btr80_machine_gun" );
|
||||
else
|
||||
maps\_vehicle::build_turret( "btr80_turret2", "tag_turret2", "vehicle_btr80_machine_gun" );
|
||||
|
||||
maps\_vehicle::build_radiusdamage( ( 0, 0, 53 ), 512, 300, 20, 0 );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_frontarmor( 0.33 );
|
||||
maps\_vehicle::build_bulletshield( 1 );
|
||||
maps\_vehicle::build_grenadeshield( 1 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
maps\_utility::ent_flag_init( "no_riders_until_unload" );
|
||||
maps\_vehicle::vehicle_lights_on( "running" );
|
||||
}
|
||||
|
||||
test_brake_lights()
|
||||
{
|
||||
self endon( "death" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
wait 5;
|
||||
maps\_vehicle::vehicle_lights_on( "brake" );
|
||||
wait 3;
|
||||
maps\_vehicle::vehicle_lights_on( "brake" );
|
||||
}
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["driver_and_rider"] = [];
|
||||
var_0["two_riders"] = [];
|
||||
var_0["all"] = [];
|
||||
var_1 = "driver_and_rider";
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_1 = "two_riders";
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_1 = "all";
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0["default"] = var_0["all"];
|
||||
return var_0;
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_0[0].vehicle_getoutanim = %btr80_doorsl_open;
|
||||
var_0[1].vehicle_getoutanim = %btr80_doorsr_open;
|
||||
var_0[2].vehicle_getoutanim = %btr80_doorsl_open;
|
||||
var_0[3].vehicle_getoutanim = %btr80_doorsr_open;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 4; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_detach";
|
||||
var_0[1].sittag = "tag_detach";
|
||||
var_0[2].sittag = "tag_detach";
|
||||
var_0[3].sittag = "tag_detach";
|
||||
var_0[0].idle = %btr80_crew_idle;
|
||||
var_0[1].idle = %btr80_crew_idle;
|
||||
var_0[2].idle = %btr80_crew_idle;
|
||||
var_0[3].idle = %btr80_crew_idle;
|
||||
var_0[0].getout = %btr80_exit_1;
|
||||
var_0[1].getout = %btr80_exit_2;
|
||||
var_0[2].getout = %btr80_exit_3;
|
||||
var_0[3].getout = %btr80_exit_4;
|
||||
var_0[0].getin = %humvee_driver_climb_in;
|
||||
var_0[1].getin = %humvee_passenger_in_l;
|
||||
var_0[2].getin = %humvee_passenger_in_r;
|
||||
var_0[3].getin = %humvee_passenger_in_r;
|
||||
return var_0;
|
||||
}
|
40
vehicle_scripts/_c130.gsc
Normal file
40
vehicle_scripts/_c130.gsc
Normal file
@ -0,0 +1,40 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "c130", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_ac130_low" );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/large_vehicle_explosion", undefined, "explo_metal_rand" );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
maps\_vehicle::build_mainturret();
|
||||
maps\_vehicle::build_light( var_2, "wingtip_green", "tag_light_L_wing", "fx/misc/aircraft_light_wingtip_green", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_red", "tag_light_R_wing", "fx/misc/aircraft_light_wingtip_red", "running", 0.05 );
|
||||
maps\_vehicle::build_light( var_2, "tail_red", "tag_light_tail", "fx/misc/aircraft_light_white_blink", "running", 0.05 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink", "tag_light_belly", "fx/misc/aircraft_light_red_blink", "running", 1.0 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
maps\_vehicle::vehicle_lights_on( "running" );
|
||||
self hidepart( "tag_25mm" );
|
||||
self hidepart( "tag_40mm" );
|
||||
self hidepart( "tag_105mm" );
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
return var_0;
|
||||
}
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 1; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
return var_0;
|
||||
}
|
20
vehicle_scripts/_c17.gsc
Normal file
20
vehicle_scripts/_c17.gsc
Normal file
@ -0,0 +1,20 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "c17", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_boeing_c17" );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/large_vehicle_explosion", undefined, "explo_metal_rand" );
|
||||
maps\_vehicle::build_rumble( "mig_rumble", 0.2, 0.4, 22600, 0.05, 0.05 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
maps\_vehicle::build_is_airplane();
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
141
vehicle_scripts/_chinese_brave_warrior.gsc
Normal file
141
vehicle_scripts/_chinese_brave_warrior.gsc
Normal file
@ -0,0 +1,141 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "humvee", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
|
||||
if ( issubstr( var_2, "turret" ) )
|
||||
maps\_vehicle::build_turret( "minigun_m1a1_fast", "tag_turret", "weapon_chinese_brave_warrior_turret", undefined, "sentry", undefined, 0, 0, ( 0, 0, -16 ) );
|
||||
|
||||
maps\_vehicle::build_deathmodel( "vehicle_chinese_brave_warrior_anim", "vehicle_chinese_brave_warrior_destroyed" );
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
level._effect["gazexplode"] = loadfx( "fx/explosions/vehicle_explosion_hummer_nodoors" );
|
||||
level._effect["gazsmfire"] = loadfx( "fx/fire/firelp_med_pm" );
|
||||
maps\_vehicle::build_deathfx( "fx/fire/firelp_med_pm", "tag_driver", "fire_metal_medium", undefined, undefined, 1, 0 );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/vehicle_explosion_hummer_nodoors", "tag_body", "clkw_scn_ice_chase_expl", undefined, undefined, undefined, undefined );
|
||||
maps\_vehicle::build_drive( %humvee_50cal_driving_idle_forward, %humvee_50cal_driving_idle_backward, 10 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_light( var_2, "headlight_truck_left", "tag_headlight_left", "fx/misc/car_headlight_jeep_l_clk", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "headlight_truck_right", "tag_headlight_right", "fx/misc/car_headlight_jeep_r_clk", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "taillight_truck_right", "tag_brakelight_right", "fx/misc/car_taillight_jeep_r_clk", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "taillight_truck_left", "tag_brakelight_left", "fx/misc/car_taillight_jeep_l_clk", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_truck_right", "tag_brakelight_right", "fx/misc/car_brakelight_truck_R_pb", "brakelights" );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_truck_left", "tag_brakelight_left", "fx/misc/car_brakelight_truck_L_pb", "brakelights" );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
if ( issubstr( self.vehicletype, "physics" ) )
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["idle"] = %humvee_antennas_idle_movement;
|
||||
var_0["rot_l"] = %humvee_antenna_l_rotate_360;
|
||||
var_0["rot_r"] = %humvee_antenna_r_rotate_360;
|
||||
thread maps\_vehicle_code::humvee_antenna_animates( var_0 );
|
||||
}
|
||||
}
|
||||
|
||||
build_humvee_anims()
|
||||
{
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_0[0].vehicle_getoutanim = %bravewarr_dismount_driver_door;
|
||||
var_0[1].vehicle_getoutanim = %bravewarr_dismount_passenger_door;
|
||||
var_0[2].vehicle_getoutanim = %bravewarr_dismount_backl_door;
|
||||
var_0[3].vehicle_getoutanim = %bravewarr_dismount_backr_door;
|
||||
var_0[0].vehicle_getinanim = %bravewarr_mount_driver_door;
|
||||
var_0[1].vehicle_getinanim = %bravewarr_mount_passenger_door;
|
||||
var_0[2].vehicle_getinanim = %bravewarr_mount_backl_door;
|
||||
var_0[3].vehicle_getinanim = %bravewarr_mount_backr_door;
|
||||
var_0[0].vehicle_getoutsound = "gaz_door_open";
|
||||
var_0[1].vehicle_getoutsound = "gaz_door_open";
|
||||
var_0[2].vehicle_getoutsound = "gaz_door_open";
|
||||
var_0[3].vehicle_getoutsound = "gaz_door_open";
|
||||
var_0[0].vehicle_getinsound = "gaz_door_close";
|
||||
var_0[1].vehicle_getinsound = "gaz_door_close";
|
||||
var_0[2].vehicle_getinsound = "gaz_door_close";
|
||||
var_0[3].vehicle_getinsound = "gaz_door_close";
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 4; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_driver";
|
||||
var_0[0].getin = %bravewarr_mount_driver;
|
||||
var_0[0].getout = %bravewarr_dismount_driver;
|
||||
var_0[0].idle[0] = %bravewarr_idle_driver;
|
||||
var_0[0].idle[1] = %bravewarr_idle_driver;
|
||||
var_0[0].idle_alert = %clockwork_exfil_jeepride_intense_keegan;
|
||||
var_0[0].idleoccurrence[0] = 1000;
|
||||
var_0[0].idleoccurrence[1] = 100;
|
||||
var_0[0].death = %bravewarr_fallout_driver;
|
||||
var_0[1].sittag = "tag_passenger";
|
||||
var_0[1].getin = %bravewarr_mount_passenger;
|
||||
var_0[1].getout = %bravewarr_dismount_passenger;
|
||||
var_0[1].idle[0] = %bravewarr_idle_passenger;
|
||||
var_0[1].idle[1] = %bravewarr_idle_passenger;
|
||||
var_0[1].idleoccurrence[0] = 1000;
|
||||
var_0[1].idleoccurrence[1] = 100;
|
||||
var_0[1].death = %bravewarr_fallout_passenger;
|
||||
var_0[2].sittag = "tag_guy0";
|
||||
var_0[2].getin = %bravewarr_mount_backl;
|
||||
var_0[2].getout = %bravewarr_dismount_backl;
|
||||
var_0[2].idle[0] = %bravewarr_idle_backl;
|
||||
var_0[2].idle[1] = %bravewarr_idle_backl;
|
||||
var_0[2].idleoccurrence[0] = 1000;
|
||||
var_0[2].idleoccurrence[1] = 100;
|
||||
var_0[2].death = %bravewarr_fallout_backl;
|
||||
var_0[3].sittag = "tag_guy1";
|
||||
var_0[3].getin = %bravewarr_mount_backr;
|
||||
var_0[3].getout = %bravewarr_dismount_backr;
|
||||
var_0[3].idle[0] = %bravewarr_idle_backr;
|
||||
var_0[3].idle[1] = %bravewarr_idle_backr;
|
||||
var_0[3].idleoccurrence[0] = 1000;
|
||||
var_0[3].idleoccurrence[1] = 100;
|
||||
var_0[3].death = %bravewarr_fallout_backr;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["passengers"] = [];
|
||||
var_0["passenger_and_gunner"] = [];
|
||||
var_0["passenger_and_driver"] = [];
|
||||
var_0["all"] = [];
|
||||
var_1 = "passenger_and_gunner";
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 4;
|
||||
var_1 = "passenger_and_driver";
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_1 = "all";
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0[var_1][var_0[var_1].size] = 4;
|
||||
var_1 = "passengers";
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0["default"] = var_0["all"];
|
||||
return var_0;
|
||||
}
|
90
vehicle_scripts/_chopper_ai_missile_defense.gsc
Normal file
90
vehicle_scripts/_chopper_ai_missile_defense.gsc
Normal file
@ -0,0 +1,90 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
_precache()
|
||||
{
|
||||
precachemodel( "angel_flare_rig" );
|
||||
_fx();
|
||||
flare_rig_anims();
|
||||
}
|
||||
|
||||
_fx()
|
||||
{
|
||||
common_scripts\utility::add_fx( "FX_chopper_flare_ai", "fx/_requests/apache/apache_flare_ai" );
|
||||
common_scripts\utility::add_fx( "FX_chopper_flare_explosion_ai", "fx/_requests/apache/apache_trophy_explosion_ai" );
|
||||
common_scripts\utility::add_fx( "FX_hind_damaged_smoke_heavy", "fx/smoke/smoke_trail_black_heli" );
|
||||
}
|
||||
|
||||
#using_animtree("script_model");
|
||||
|
||||
flare_rig_anims()
|
||||
{
|
||||
level.scr_animtree["ai_flare_rig"] = #animtree;
|
||||
level.scr_model["ai_flare_rig"] = "angel_flare_rig";
|
||||
level.scr_anim["ai_flare_rig"]["flare"][0] = %ac130_angel_flares01;
|
||||
level.scr_anim["ai_flare_rig"]["flare"][1] = %ac130_angel_flares02;
|
||||
level.scr_anim["ai_flare_rig"]["flare"][2] = %ac130_angel_flares03;
|
||||
}
|
||||
|
||||
_init( var_0, var_1 )
|
||||
{
|
||||
var_2 = spawnstruct();
|
||||
var_2.owner = var_0;
|
||||
var_2.vehicle = var_0;
|
||||
var_2.vehicle.missile_defense = var_2;
|
||||
var_2.type = "missile_defense";
|
||||
var_2.lockedontome = [];
|
||||
var_2.firedonme = [];
|
||||
var_2.flareindex = 0;
|
||||
var_2.flares = [];
|
||||
var_2.flarenumpairs = 2;
|
||||
var_2.flarecooldown = common_scripts\utility::ter_op( isdefined( var_1 ), var_1, 6 );
|
||||
var_2.flarereloadtime = 0;
|
||||
var_2.flareactiveradius = 4000;
|
||||
var_2.flarefx = common_scripts\utility::getfx( "FX_chopper_flare_ai" );
|
||||
var_2.flarefxexplode = common_scripts\utility::getfx( "FX_chopper_flare_explosion_ai" );
|
||||
var_2.missiletargetflareradius = 1500;
|
||||
var_2.flaredestroymissileradius = 192;
|
||||
var_2.flarespawnmaxpitchoffset = 20;
|
||||
var_2.flarespawnminpitchoffset = 10;
|
||||
var_2.flarespawnmaxyawoffset = 80;
|
||||
var_2.flarespawnminyawoffset = 55;
|
||||
var_2.flarespawnoffsetright = 104;
|
||||
var_2.flarerig_name = "ai_flare_rig";
|
||||
var_2.flarerig_animrate = 2;
|
||||
var_2.flarerig_link = 0;
|
||||
var_2.flarerig_tagorigin = "tag_flare";
|
||||
var_2.flarerig_tagangles = "tag_origin";
|
||||
var_2.flaresound = "chopper_flare_fire_ai";
|
||||
return var_2;
|
||||
}
|
||||
|
||||
_start()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_0 endon( "LISTEN_end_missile_defense" );
|
||||
childthread vehicle_scripts\_chopper_missile_defense_utility::monitorenemymissilelockon();
|
||||
childthread vehicle_scripts\_chopper_missile_defense_utility::monitorenemymissilefire();
|
||||
childthread vehicle_scripts\_chopper_missile_defense_utility::monitorflarerelease_auto();
|
||||
childthread vehicle_scripts\_chopper_missile_defense_utility::monitorflares();
|
||||
childthread monitordeath();
|
||||
}
|
||||
|
||||
_end()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_0 notify( "LISTEN_end_missile_defense" );
|
||||
}
|
||||
|
||||
monitordeath()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_0 waittill( "death" );
|
||||
_destroy();
|
||||
}
|
||||
|
||||
_destroy()
|
||||
{
|
||||
_end();
|
||||
self.vehicle.missile_defense = undefined;
|
||||
}
|
591
vehicle_scripts/_chopper_missile_defense_utility.gsc
Normal file
591
vehicle_scripts/_chopper_missile_defense_utility.gsc
Normal file
@ -0,0 +1,591 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
array_removeinvalidmissiles( var_0 )
|
||||
{
|
||||
var_1 = [];
|
||||
|
||||
foreach ( var_3 in var_0 )
|
||||
{
|
||||
if ( !isvalidmissile( var_3 ) )
|
||||
continue;
|
||||
|
||||
var_1[var_1.size] = var_3;
|
||||
}
|
||||
|
||||
return var_1;
|
||||
}
|
||||
|
||||
monitorenemymissilefire()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
var_0 waittill( "LISTEN_missile_fire", var_1 );
|
||||
|
||||
if ( !isvalidmissile( var_1 ) )
|
||||
continue;
|
||||
|
||||
self.firedonme = array_removeinvalidmissiles( self.firedonme );
|
||||
self.firedonme = common_scripts\utility::array_add( self.firedonme, var_1 );
|
||||
}
|
||||
}
|
||||
|
||||
missile_monitormisstarget( var_0, var_1, var_2, var_3, var_4 )
|
||||
{
|
||||
var_5 = self;
|
||||
var_5 notify( "missile_monitorMissTarget" );
|
||||
var_5 endon( "missile_monitorMissTarget" );
|
||||
var_5 endon( "death" );
|
||||
|
||||
if ( isdefined( var_4 ) )
|
||||
var_5 endon( var_4 );
|
||||
|
||||
var_0 endon( "death" );
|
||||
var_1 = common_scripts\utility::ter_op( isdefined( var_1 ), var_1, 0 );
|
||||
var_5.missed_target = undefined;
|
||||
|
||||
for ( var_6 = 1.0; var_6 > 0.75; var_6 = vectordot( var_8, var_7 ) )
|
||||
{
|
||||
wait 0.05;
|
||||
|
||||
if ( !isdefined( var_0 ) )
|
||||
break;
|
||||
|
||||
var_7 = anglestoforward( var_5.angles );
|
||||
var_8 = vectornormalize( var_0.origin - var_5.origin );
|
||||
}
|
||||
|
||||
if ( isdefined( var_0 ) )
|
||||
var_5.missed_target = var_0;
|
||||
|
||||
var_5 notify( var_3 );
|
||||
var_5 missile_cleartarget();
|
||||
|
||||
if ( isdefined( var_0 ) && isdefined( var_0.missile_defense ) && isdefined( var_0.missile_defense.firedonme ) && var_0.missile_defense.firedonme.size )
|
||||
var_0.missile_defense.firedonme = common_scripts\utility::array_remove( var_0.missile_defense.firedonme, var_5 );
|
||||
|
||||
if ( !var_1 )
|
||||
return;
|
||||
|
||||
if ( isdefined( var_2 ) )
|
||||
{
|
||||
var_9 = squared( var_2 );
|
||||
|
||||
while ( distancesquared( var_5.origin, var_0.origin ) < var_9 )
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
var_5 delete();
|
||||
}
|
||||
|
||||
do_evade( var_0 )
|
||||
{
|
||||
if ( isdefined( self.evading ) )
|
||||
return;
|
||||
|
||||
var_1 = "";
|
||||
|
||||
if ( self.classname == "script_vehicle_apache_iw6" )
|
||||
var_1 = "apache";
|
||||
else if ( self.classname == "script_vehicle_hind_battle_oilrocks" )
|
||||
var_1 = "battlehind";
|
||||
|
||||
if ( var_1 == "" )
|
||||
return;
|
||||
|
||||
var_2 = maps\_utility::getanim_generic( var_1 + "_evade_left" );
|
||||
var_3 = maps\_utility::getanim_generic( var_1 + "_evade_right" );
|
||||
var_4 = [];
|
||||
var_4 = add_valid_evade( var_2, var_4 );
|
||||
var_4 = add_valid_evade( var_3, var_4 );
|
||||
|
||||
if ( var_4.size == 0 )
|
||||
return;
|
||||
|
||||
self.evading = 1;
|
||||
var_5 = common_scripts\utility::random( var_4 );
|
||||
var_6 = getanimlength( var_5 );
|
||||
var_7 = self localtoworldcoords( getmovedelta( var_5, 0, 1 ) );
|
||||
var_8 = getangledelta3d( var_5 );
|
||||
maps\_vehicle_code::suspend_drive_anims();
|
||||
self endon( "kill_death_anim" );
|
||||
var_9 = self.origin;
|
||||
var_10 = self.angles;
|
||||
self animscripted( "evading", var_9, var_10, var_5 );
|
||||
self.allowdeath = 1;
|
||||
wait( var_6 - 0.05 );
|
||||
thread maps\_vehicle_code::animate_drive_idle();
|
||||
self endon( "chopper_boss_move" );
|
||||
self.request_move = 1;
|
||||
self notify( "request_move_update" );
|
||||
self.evading = undefined;
|
||||
}
|
||||
|
||||
add_valid_evade( var_0, var_1 )
|
||||
{
|
||||
var_2 = self localtoworldcoords( getmovedelta( var_0, 0, 1 ) );
|
||||
|
||||
foreach ( var_4 in getentarray( "no_chopper_evade_area", "targetname" ) )
|
||||
{
|
||||
if ( ispointinvolume( var_2, var_4 ) )
|
||||
return var_1;
|
||||
}
|
||||
|
||||
var_1[var_1.size] = var_0;
|
||||
return var_1;
|
||||
}
|
||||
|
||||
monitorflarerelease_auto( var_0, var_1 )
|
||||
{
|
||||
var_2 = self.owner;
|
||||
var_3 = self.flareactiveradius;
|
||||
var_4 = 0;
|
||||
var_5 = self.flarecooldown;
|
||||
var_6 = self.flarenumpairs;
|
||||
var_7 = self.flarereloadtime;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
foreach ( var_9 in self.firedonme )
|
||||
{
|
||||
if ( dsq_2d_ents_lt( var_2, var_9, var_3 ) )
|
||||
{
|
||||
var_4 = 1;
|
||||
self.owner thread do_evade( var_9 );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var_11 = 1;
|
||||
|
||||
if ( var_4 )
|
||||
{
|
||||
if ( isdefined( var_0 ) )
|
||||
var_11 = self [[ var_0 ]]();
|
||||
|
||||
if ( var_11 )
|
||||
{
|
||||
if ( isdefined( level.apache_chatter_func ) )
|
||||
self.owner [[ level.apache_chatter_func ]]( "flares_out" );
|
||||
|
||||
for ( var_12 = 0; var_12 < var_6; var_12++ )
|
||||
{
|
||||
var_13 = common_scripts\utility::array_randomize( [ "right", "left" ] );
|
||||
maps\_utility::delaythread( var_12 * 0.5 + 0.05, ::shootflares, var_13[0] );
|
||||
maps\_utility::delaythread( var_12 * 0.5 + 0.5, ::shootflares, var_13[1] );
|
||||
}
|
||||
|
||||
wait( var_5 );
|
||||
}
|
||||
|
||||
var_4 = 0;
|
||||
|
||||
if ( var_11 )
|
||||
{
|
||||
if ( isdefined( var_1 ) )
|
||||
self childthread [[ var_1 ]]( var_7 );
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
monitorflarerelease_input( var_0, var_1 )
|
||||
{
|
||||
var_2 = self.owner;
|
||||
var_3 = self.flareactiveradius;
|
||||
var_4 = 0;
|
||||
var_5 = self.flarecooldown;
|
||||
var_6 = self.flarenumpairs;
|
||||
var_7 = self.flarereloadtime;
|
||||
var_2 notifyonplayercommand( "Listen_chopper_player_missile_defense_shoot_flares", "+smoke" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
var_2 waittill( "Listen_chopper_player_missile_defense_shoot_flares" );
|
||||
|
||||
if ( self [[ var_0 ]]() )
|
||||
{
|
||||
for ( var_8 = 0; var_8 < var_6; var_8++ )
|
||||
{
|
||||
var_9 = common_scripts\utility::array_randomize( [ "right", "left" ] );
|
||||
maps\_utility::delaythread( var_8 * 0.5 + 0.05, ::shootflares, var_9[0] );
|
||||
maps\_utility::delaythread( var_8 * 0.5 + 0.5, ::shootflares, var_9[1] );
|
||||
}
|
||||
|
||||
self childthread [[ var_1 ]]( var_7 );
|
||||
wait( var_5 );
|
||||
continue;
|
||||
}
|
||||
|
||||
level.player thread maps\_utility::play_sound_on_entity( "apache_player_empty_click" );
|
||||
}
|
||||
}
|
||||
|
||||
monitorenemymissilelockon( var_0 )
|
||||
{
|
||||
var_1 = self.owner;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
var_1 waittill( "LISTEN_missile_lockOn", var_2 );
|
||||
|
||||
if ( !isdefined( var_2 ) )
|
||||
continue;
|
||||
|
||||
if ( isdefined( var_0 ) )
|
||||
{
|
||||
if ( !isenemylockedontome( var_2 ) )
|
||||
self childthread [[ var_0 ]]( var_2 );
|
||||
}
|
||||
|
||||
self.lockedontome = common_scripts\utility::array_removeundefined( self.lockedontome );
|
||||
self.lockedontome = common_scripts\utility::array_add( self.lockedontome, var_2 );
|
||||
}
|
||||
}
|
||||
|
||||
isenemylockedontome( var_0 )
|
||||
{
|
||||
return maps\_utility::is_in_array( self.lockedontome, var_0 );
|
||||
}
|
||||
|
||||
isanyenemylockedontome()
|
||||
{
|
||||
self.lockedontome = common_scripts\utility::array_removeundefined( self.lockedontome );
|
||||
return self.lockedontome.size;
|
||||
}
|
||||
|
||||
isanymissilefiredonme()
|
||||
{
|
||||
self.firedonme = array_removeinvalidmissiles( self.firedonme );
|
||||
return self.firedonme.size;
|
||||
}
|
||||
|
||||
flare_trackvelocity()
|
||||
{
|
||||
self endon( "LISTEN_end_flare_trackVelocity" );
|
||||
self endon( "death" );
|
||||
self.velocity = 0;
|
||||
var_0 = self.origin;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
self.velocity = self.origin - var_0;
|
||||
var_0 = self.origin;
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
dsq_2d_ents_lt( var_0, var_1, var_2, var_3, var_4 )
|
||||
{
|
||||
if ( isdefined( var_0 ) && isdefined( var_1 ) && isdefined( var_2 ) )
|
||||
{
|
||||
if ( isdefined( var_3 ) )
|
||||
return common_scripts\utility::ter_op( dsq_2d_ents( var_0, var_0 ) < squared( var_2 ) && abs( var_1.origin[2] - var_0.origin[2] ) < var_3, 1, 0 );
|
||||
else
|
||||
return common_scripts\utility::ter_op( dsq_2d_ents( var_0, var_1 ) < squared( var_2 ), 1, 0 );
|
||||
}
|
||||
|
||||
return common_scripts\utility::ter_op( isdefined( var_4 ), var_4, 0 );
|
||||
}
|
||||
|
||||
dsq_2d_ents( var_0, var_1 )
|
||||
{
|
||||
return lengthsquared( ( var_0.origin[0] - var_1.origin[0], var_0.origin[1] - var_1.origin[1], 0 ) );
|
||||
}
|
||||
|
||||
dsq_ents_lt( var_0, var_1, var_2, var_3 )
|
||||
{
|
||||
if ( isdefined( var_0 ) && isdefined( var_1 ) && isdefined( var_2 ) )
|
||||
return common_scripts\utility::ter_op( distancesquared( var_0.origin, var_1.origin ) < squared( var_2 ), 1, 0 );
|
||||
|
||||
return common_scripts\utility::ter_op( isdefined( var_3 ), var_3, 0 );
|
||||
}
|
||||
|
||||
flat_angle_yaw( var_0 )
|
||||
{
|
||||
return ( 0, var_0[1], 0 );
|
||||
}
|
||||
|
||||
gt_op( var_0, var_1, var_2 )
|
||||
{
|
||||
if ( isdefined( var_0 ) && isdefined( var_1 ) )
|
||||
return common_scripts\utility::ter_op( var_0 > var_1, var_0, var_1 );
|
||||
|
||||
if ( isdefined( var_0 ) && !isdefined( var_1 ) )
|
||||
return var_0;
|
||||
|
||||
if ( !isdefined( var_0 ) && isdefined( var_1 ) )
|
||||
return var_1;
|
||||
|
||||
return var_2;
|
||||
}
|
||||
|
||||
override_array_delete( var_0, var_1, var_2 )
|
||||
{
|
||||
if ( !isdefined( var_1 ) )
|
||||
var_1 = [ "death" ];
|
||||
|
||||
var_2 = gt_op( var_2, 0 );
|
||||
|
||||
foreach ( var_4 in var_0 )
|
||||
{
|
||||
if ( isdefined( var_4 ) )
|
||||
{
|
||||
if ( isarray( var_4 ) )
|
||||
{
|
||||
if ( var_2 > 0 )
|
||||
{
|
||||
override_array_delete( var_4, var_1, var_2 );
|
||||
wait 0.05;
|
||||
}
|
||||
else
|
||||
thread override_array_delete( var_4, var_1, 0 );
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach ( var_6 in var_1 )
|
||||
var_4 notify( var_6 );
|
||||
|
||||
if ( var_2 > 0 )
|
||||
{
|
||||
wait 0.05;
|
||||
|
||||
if ( isdefined( var_4 ) )
|
||||
var_4 delete();
|
||||
}
|
||||
else
|
||||
var_4 delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
on_param_death_delete_self( var_0 )
|
||||
{
|
||||
self notify( "on_param_death_delete_self" );
|
||||
self endon( "on_param_death_delete_self" );
|
||||
self endon( "death" );
|
||||
var_0 waittill( "death" );
|
||||
|
||||
if ( isdefined( self ) )
|
||||
self delete();
|
||||
}
|
||||
|
||||
shootflares( var_0 )
|
||||
{
|
||||
if ( !isdefined( self ) || !isdefined( self.owner ) )
|
||||
return;
|
||||
|
||||
var_1 = self.owner;
|
||||
var_2 = var_1.angles;
|
||||
|
||||
if ( isdefined( self.flarerig_tagangles ) )
|
||||
var_2 = flat_angle_yaw( var_1 gettagangles( self.flarerig_tagangles ) );
|
||||
else if ( isplayer( var_1 ) )
|
||||
var_2 = ( var_1 getplayerangles()[0], var_2[1], var_2[2] );
|
||||
|
||||
var_3 = var_1.origin;
|
||||
|
||||
if ( isdefined( self.flarerig_tagorigin ) )
|
||||
{
|
||||
var_4 = self.flarerig_tagorigin;
|
||||
|
||||
if ( maps\_utility::hastag( var_1.model, self.flarerig_tagorigin ) )
|
||||
var_3 = var_1 gettagorigin( self.flarerig_tagorigin );
|
||||
else if ( maps\_utility::hastag( var_1.model, "tag_origin" ) )
|
||||
var_3 = var_1 gettagorigin( "tag_origin" );
|
||||
}
|
||||
|
||||
var_5 = maps\_utility::spawn_anim_model( self.flarerig_name );
|
||||
var_6 = anglestoright( var_2 );
|
||||
var_7 = common_scripts\utility::ter_op( var_0 == "right", 1, -1 );
|
||||
var_8 = self.flarespawnoffsetright;
|
||||
var_5.origin = var_3 + var_7 * var_8 * var_6;
|
||||
var_9 = randomfloatrange( self.flarespawnminyawoffset, self.flarespawnmaxyawoffset );
|
||||
var_10 = randomfloatrange( self.flarespawnminpitchoffset, self.flarespawnmaxpitchoffset );
|
||||
var_2 = ( var_2[0] - var_10, var_2[1] + -1 * var_7 * var_9, var_2[2] + var_7 * 90 );
|
||||
var_5.angles = var_2;
|
||||
|
||||
if ( self.flarerig_link )
|
||||
{
|
||||
var_1 playrumbleonentity( "smg_fire" );
|
||||
|
||||
if ( isdefined( self.vehicle ) )
|
||||
var_5 linkto( self.vehicle, "tag_origin" );
|
||||
}
|
||||
|
||||
self.flares = common_scripts\utility::array_removeundefined( self.flares );
|
||||
var_11 = [];
|
||||
var_12 = [ "flare_left_bot", "flare_right_bot" ];
|
||||
|
||||
foreach ( var_14 in var_12 )
|
||||
{
|
||||
var_15 = var_5 common_scripts\utility::spawn_tag_origin();
|
||||
var_15.origin = var_5 gettagorigin( var_14 );
|
||||
var_15.angles = var_5 gettagangles( var_14 );
|
||||
var_15 linkto( var_5, var_14 );
|
||||
var_15 thread flare_trackvelocity();
|
||||
var_11[var_14] = var_15;
|
||||
}
|
||||
|
||||
self.flares = common_scripts\utility::array_combine( self.flares, var_11 );
|
||||
var_17 = level.scr_anim[self.flarerig_name]["flare"].size;
|
||||
var_18 = level.scr_anim[self.flarerig_name]["flare"][self.flareindex % var_17];
|
||||
self.flareindex++;
|
||||
var_19 = common_scripts\utility::ter_op( isdefined( self.flarerig_animrate ), self.flarerig_animrate, 1 );
|
||||
var_5.allowdeath = 0;
|
||||
var_5 setcandamage( 0 );
|
||||
var_5 setflaggedanim( "flare_anim", var_18, 1, 0, var_19 );
|
||||
wait 0.05;
|
||||
|
||||
foreach ( var_14, var_15 in var_11 )
|
||||
{
|
||||
if ( isdefined( var_15 ) )
|
||||
playfxontag( self.flarefx, var_11[var_14], "tag_origin" );
|
||||
}
|
||||
|
||||
var_5 thread maps\_utility::play_sound_on_tag( self.flaresound, "tag_fx", 1 );
|
||||
var_5 waittillmatch( "flare_anim", "end" );
|
||||
|
||||
foreach ( var_14, var_15 in var_11 )
|
||||
{
|
||||
if ( isdefined( var_15 ) )
|
||||
stopfxontag( self.flarefx, var_11[var_14], "tag_origin" );
|
||||
}
|
||||
|
||||
var_5 delete();
|
||||
var_11 = common_scripts\utility::array_removeundefined( var_11 );
|
||||
common_scripts\utility::array_thread( var_11, ::flare_doburnout );
|
||||
|
||||
if ( isdefined( self.flares ) )
|
||||
self.flares = common_scripts\utility::array_removeundefined( self.flares );
|
||||
}
|
||||
|
||||
flare_doburnout()
|
||||
{
|
||||
self endon( "death" );
|
||||
self notify( "LISTEN_end_flare_trackVelocity" );
|
||||
self movegravity( 14 * self.velocity, 0.2 );
|
||||
wait 0.2;
|
||||
|
||||
if ( !isdefined( self ) || isdefined( self.mytarget ) )
|
||||
return;
|
||||
|
||||
self delete();
|
||||
}
|
||||
|
||||
flare_monitorattractor( var_0 )
|
||||
{
|
||||
self waittill( "death" );
|
||||
missile_deleteattractor( var_0 );
|
||||
}
|
||||
|
||||
flare_monitortakingoutmissile( var_0, var_1, var_2 )
|
||||
{
|
||||
self endon( "death" );
|
||||
var_1 endon( "death" );
|
||||
var_1 notify( "LISTEN_missile_attached_to_flare" );
|
||||
var_3 = squared( var_0 );
|
||||
var_1.mytarget = self;
|
||||
self.mytarget = var_1;
|
||||
var_1 thread on_param_death_delete_self( self );
|
||||
thread on_param_death_delete_self( var_1 );
|
||||
var_1 thread missile_monitormisstarget( var_1.mytarget, 0, undefined, "LISTEN_missile_missed_flare" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
var_4 = common_scripts\utility::waittill_any_timeout( 0.05, "LISTEN_missile_missed_flare" );
|
||||
waittillframeend;
|
||||
|
||||
if ( var_4 == "LISTEN_missile_missed_flare" || isdefined( var_1.missed_target ) && var_1.missed_target == var_1.mytarget || distancesquared( self.origin, var_1.origin ) <= var_3 )
|
||||
{
|
||||
if ( self islinked() )
|
||||
self unlink();
|
||||
|
||||
var_5 = flat_angle_yaw( var_1.angles );
|
||||
var_6 = anglestoforward( var_5 );
|
||||
playfx( var_2.flarefxexplode, var_1.origin, var_6 );
|
||||
stopfxontag( var_2.flarefx, self, "tag_origin" );
|
||||
earthquake( 0.5, 0.6, var_1.origin, 2048 );
|
||||
thread common_scripts\utility::play_sound_in_space( "chopper_trophy_fire", var_1.origin );
|
||||
|
||||
if ( var_2.owner == level.player )
|
||||
thread common_scripts\utility::play_sound_in_space( "chopper_trophy_fire_shards", var_1.origin );
|
||||
|
||||
var_1 delete();
|
||||
self delete();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
monitorflares()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
self.firedonme = array_removeinvalidmissiles( self.firedonme );
|
||||
self.flares = common_scripts\utility::array_removeundefined( self.flares );
|
||||
|
||||
if ( self.firedonme.size && self.flares.size )
|
||||
pairflareswithclosestmissile();
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
pairflareswithclosestmissile()
|
||||
{
|
||||
var_0 = self.missiletargetflareradius;
|
||||
|
||||
foreach ( var_2 in self.firedonme )
|
||||
{
|
||||
if ( !isvalidmissile( var_2 ) || isdefined( var_2.mytarget ) )
|
||||
continue;
|
||||
|
||||
var_3 = undefined;
|
||||
var_4 = 0;
|
||||
|
||||
foreach ( var_6 in self.flares )
|
||||
{
|
||||
if ( isdefined( var_6.mytarget ) )
|
||||
continue;
|
||||
|
||||
if ( !isdefined( var_3 ) )
|
||||
var_3 = var_6;
|
||||
|
||||
var_7 = distancesquared( var_3.origin, var_2.origin );
|
||||
var_8 = distancesquared( var_6.origin, var_2.origin );
|
||||
|
||||
if ( var_7 < var_0 * var_0 )
|
||||
var_4 = 1;
|
||||
|
||||
if ( var_8 < var_7 )
|
||||
var_3 = var_6;
|
||||
}
|
||||
|
||||
if ( isdefined( var_3 ) && var_4 )
|
||||
{
|
||||
var_2.type_missile = common_scripts\utility::ter_op( isdefined( var_2.type_missile ), var_2.type_missile, "guided" );
|
||||
|
||||
switch ( var_2.type_missile )
|
||||
{
|
||||
case "guided":
|
||||
var_2 missile_settargetent( var_3 );
|
||||
var_2 missile_setflightmodedirect();
|
||||
break;
|
||||
case "straight":
|
||||
var_10 = missile_createattractorent( var_3, 100000, var_0 );
|
||||
var_3 thread flare_monitorattractor( var_10 );
|
||||
break;
|
||||
}
|
||||
|
||||
var_3 thread flare_monitortakingoutmissile( self.flaredestroymissileradius, var_2, self );
|
||||
}
|
||||
}
|
||||
}
|
442
vehicle_scripts/_chopper_player_missile_defense.gsc
Normal file
442
vehicle_scripts/_chopper_player_missile_defense.gsc
Normal file
@ -0,0 +1,442 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
_precache()
|
||||
{
|
||||
precachemodel( "angel_flare_rig" );
|
||||
precacheshader( "heli_warning_missile_red" );
|
||||
precacheshader( "apache_flare_back" );
|
||||
precacheshader( "apache_ammo" );
|
||||
precacheshader( "apache_warn_incoming_left" );
|
||||
precacheshader( "apache_warn_incoming_right" );
|
||||
precacheshader( "apache_warn_lock_left" );
|
||||
precacheshader( "apache_warn_lock_right" );
|
||||
precachestring( &"CHOPPERHUD_ENEMY_LOCK" );
|
||||
precachestring( &"CHOPPERHUD_INCOMING" );
|
||||
_fx();
|
||||
flare_rig_anims();
|
||||
evad_anims();
|
||||
}
|
||||
|
||||
_fx()
|
||||
{
|
||||
level._effect["FX_chopper_flare"] = loadfx( "fx/_requests/apache/apache_flare" );
|
||||
level._effect["FX_chopper_flare_explosion"] = loadfx( "fx/_requests/apache/apache_trophy_explosion" );
|
||||
}
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
evad_anims()
|
||||
{
|
||||
maps\_anim::create_anim_scene( #animtree, "apache_evade_right", %apache_break_r, "generic" );
|
||||
maps\_anim::create_anim_scene( #animtree, "apache_evade_left", %apache_break_l, "generic" );
|
||||
maps\_anim::create_anim_scene( #animtree, "battlehind_evade_right", %battlehind_break_r, "generic" );
|
||||
maps\_anim::create_anim_scene( #animtree, "battlehind_evade_left", %battlehind_break_l, "generic" );
|
||||
}
|
||||
|
||||
#using_animtree("script_model");
|
||||
|
||||
flare_rig_anims()
|
||||
{
|
||||
level.scr_animtree["flare_rig"] = #animtree;
|
||||
level.scr_model["flare_rig"] = "angel_flare_rig";
|
||||
level.scr_anim["flare_rig"]["flare"][0] = %ac130_angel_flares01;
|
||||
level.scr_anim["flare_rig"]["flare"][1] = %ac130_angel_flares02;
|
||||
}
|
||||
|
||||
_init( var_0, var_1, var_2 )
|
||||
{
|
||||
var_3 = spawnstruct();
|
||||
var_3.owner = var_1;
|
||||
var_3.vehicle = var_0;
|
||||
var_3.vehicle.missile_defense = var_3;
|
||||
var_3.type = "missile_defense";
|
||||
var_3.lockedontome = [];
|
||||
var_3.firedonme = [];
|
||||
var_3.flareindex = 0;
|
||||
var_3.flares = [];
|
||||
var_3.flarenumpairs = 2;
|
||||
var_3.flarecooldown = common_scripts\utility::ter_op( var_2, 5, 1 );
|
||||
var_3.flarereloadtime = 8.0;
|
||||
var_3.flareactiveradius = 4000;
|
||||
var_3.flarefx = common_scripts\utility::getfx( "FX_chopper_flare" );
|
||||
var_3.flarefxexplode = common_scripts\utility::getfx( "FX_chopper_flare_explosion" );
|
||||
var_3.missiletargetflareradius = 2000;
|
||||
var_3.flaredestroymissileradius = 192;
|
||||
var_3.flarespawnmaxpitchoffset = 20;
|
||||
var_3.flarespawnminpitchoffset = 10;
|
||||
var_3.flarespawnmaxyawoffset = 80;
|
||||
var_3.flarespawnminyawoffset = 55;
|
||||
var_3.flarespawnoffsetright = 104;
|
||||
var_3.flarerig_name = "flare_rig";
|
||||
var_3.flarerig_animrate = 3;
|
||||
var_3.flarerig_link = 1;
|
||||
var_3.flarerig_tagorigin = undefined;
|
||||
var_3.flarerig_tagangles = undefined;
|
||||
var_3.flaresound = "chopper_flare_fire";
|
||||
var_3.targeting = var_0.heli.targeting;
|
||||
var_3.hud_currentstate = "none";
|
||||
var_3.hud_laststate = "none";
|
||||
var_3.flareauto = var_2;
|
||||
var_3 hud_init();
|
||||
return var_3;
|
||||
}
|
||||
|
||||
hud_init()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_1 = self.vehicle.heli.pilot.hud;
|
||||
var_2 = [];
|
||||
var_2["warning"] = [];
|
||||
var_2["warning"]["bg_lock_left"] = var_0 maps\_hud_util::createclienticon( "apache_warn_lock_left", 128, 128 );
|
||||
var_2["warning"]["bg_lock_left"] maps\_hud_util::setpoint( "CENTER", "CENTER", -185, 0 );
|
||||
var_2["warning"]["bg_lock_left"].alpha = 1.0;
|
||||
var_2["warning"]["bg_lock_right"] = var_0 maps\_hud_util::createclienticon( "apache_warn_lock_right", 128, 128 );
|
||||
var_2["warning"]["bg_lock_right"] maps\_hud_util::setpoint( "CENTER", "CENTER", 185, 0 );
|
||||
var_2["warning"]["bg_lock_right"].alpha = 1.0;
|
||||
var_2["warning"]["bg_inc_left"] = var_0 maps\_hud_util::createclienticon( "apache_warn_incoming_left", 128, 128 );
|
||||
var_2["warning"]["bg_inc_left"] maps\_hud_util::setpoint( "CENTER", "CENTER", 0, 0 );
|
||||
var_2["warning"]["bg_inc_left"].alpha = 1.0;
|
||||
var_2["warning"]["bg_inc_left"] maps\_hud_util::setparent( var_2["warning"]["bg_lock_left"] );
|
||||
var_2["warning"]["bg_inc_right"] = var_0 maps\_hud_util::createclienticon( "apache_warn_incoming_right", 128, 128 );
|
||||
var_2["warning"]["bg_inc_right"] maps\_hud_util::setpoint( "CENTER", "CENTER", 0, 0 );
|
||||
var_2["warning"]["bg_inc_right"].alpha = 1.0;
|
||||
var_2["warning"]["bg_inc_right"] maps\_hud_util::setparent( var_2["warning"]["bg_lock_right"] );
|
||||
var_2["warning"]["msg_left"] = var_0 maps\_hud_util::createclientfontstring( "objective", 0.8 );
|
||||
var_2["warning"]["msg_left"] maps\_hud_util::setpoint( "CENTER", "CENTER", 4, 0 );
|
||||
var_2["warning"]["msg_left"] settext( &"CHOPPERHUD_ENEMY_LOCK" );
|
||||
var_2["warning"]["msg_left"].alpha = 0.0;
|
||||
var_2["warning"]["msg_left"] maps\_hud_util::setparent( var_2["warning"]["bg_lock_left"] );
|
||||
var_2["warning"]["msg_right"] = var_0 maps\_hud_util::createclientfontstring( "objective", 0.8 );
|
||||
var_2["warning"]["msg_right"] maps\_hud_util::setpoint( "CENTER", "CENTER", -4, 0 );
|
||||
var_2["warning"]["msg_right"] settext( &"CHOPPERHUD_ENEMY_LOCK" );
|
||||
var_2["warning"]["msg_right"].alpha = 0.0;
|
||||
var_2["warning"]["msg_right"] maps\_hud_util::setparent( var_2["warning"]["bg_lock_right"] );
|
||||
var_3 = common_scripts\utility::ter_op( getdvarint( "widescreen" ) == 1, -180, -90 );
|
||||
var_2["flares"] = [];
|
||||
var_2["flares"]["back"] = var_0 maps\_hud_util::createclienticon( "apache_flare_back", 64, 32 );
|
||||
var_2["flares"]["back"] maps\_hud_util::setpoint( "CENTER", "CENTER", var_3, 76 );
|
||||
var_2["flares"]["back"].alpha = 1.0;
|
||||
var_2["flares"]["ammo"] = [];
|
||||
|
||||
for ( var_4 = 0; var_4 < 2; var_4++ )
|
||||
{
|
||||
var_5 = var_0 maps\_hud_util::createclienticon( "apache_ammo", 16, 16 );
|
||||
var_5 maps\_hud_util::setpoint( "RIGHT", "CENTER", 20, -4 + var_4 * 8 );
|
||||
var_5.alpha = 1.0;
|
||||
var_5.isavailable = 1;
|
||||
var_5 maps\_hud_util::setparent( var_2["flares"]["back"] );
|
||||
var_2["flares"]["ammo"][var_4] = var_5;
|
||||
}
|
||||
|
||||
self.hud = var_2;
|
||||
}
|
||||
|
||||
hud_update()
|
||||
{
|
||||
var_0 = self.vehicle.heli;
|
||||
|
||||
if ( var_0 maps\_utility::ent_flag( "FLAG_pilot_active" ) )
|
||||
{
|
||||
switch ( self.hud_currentstate )
|
||||
{
|
||||
case "none":
|
||||
self.hud["warning"]["msg_left"].alpha = 0.0;
|
||||
self.hud["warning"]["msg_right"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_lock_left"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_lock_right"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_inc_left"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_inc_right"].alpha = 0.0;
|
||||
break;
|
||||
case "warning":
|
||||
case "incoming":
|
||||
self.hud["warning"]["msg_left"].alpha = 1.0;
|
||||
self.hud["warning"]["msg_right"].alpha = 1.0;
|
||||
|
||||
if ( self.hud_currentstate == "warning" )
|
||||
{
|
||||
self.hud["warning"]["bg_lock_left"].alpha = 1.0;
|
||||
self.hud["warning"]["bg_lock_right"].alpha = 1.0;
|
||||
self.hud["warning"]["bg_inc_left"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_inc_right"].alpha = 0.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.hud["warning"]["bg_lock_left"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_lock_right"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_inc_left"].alpha = 1.0;
|
||||
self.hud["warning"]["bg_inc_right"].alpha = 1.0;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_start()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_0 endon( "LISTEN_end_missile_defense" );
|
||||
hud_start();
|
||||
childthread vehicle_scripts\_chopper_missile_defense_utility::monitorenemymissilelockon( ::hud_enemy_missile_lockon );
|
||||
childthread vehicle_scripts\_chopper_missile_defense_utility::monitorenemymissilefire();
|
||||
|
||||
if ( !isdefined( self.flareauto ) || self.flareauto )
|
||||
childthread vehicle_scripts\_chopper_missile_defense_utility::monitorflarerelease_auto( ::hud_makeused_flares, ::hud_makefree_flares );
|
||||
else
|
||||
childthread vehicle_scripts\_chopper_missile_defense_utility::monitorflarerelease_input( ::hud_makeused_flares, ::hud_makefree_flares );
|
||||
|
||||
childthread vehicle_scripts\_chopper_missile_defense_utility::monitorflares();
|
||||
childthread monitorstateshud();
|
||||
}
|
||||
|
||||
hud_start()
|
||||
{
|
||||
var_0 = self.vehicle.heli;
|
||||
|
||||
if ( var_0 maps\_utility::ent_flag( "FLAG_pilot_active" ) )
|
||||
{
|
||||
self.hud["warning"]["msg_left"].alpha = 0.0;
|
||||
self.hud["warning"]["msg_right"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_lock_left"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_lock_right"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_inc_left"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_inc_right"].alpha = 0.0;
|
||||
self.hud["warning"]["msg_right"].alpha = 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
monitorstateshud()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
waittillframeend;
|
||||
|
||||
if ( vehicle_scripts\_chopper_missile_defense_utility::isanymissilefiredonme() )
|
||||
self.hud_currentstate = "incoming";
|
||||
else if ( vehicle_scripts\_chopper_missile_defense_utility::isanyenemylockedontome() && !vehicle_scripts\_chopper_missile_defense_utility::isanymissilefiredonme() )
|
||||
self.hud_currentstate = "warning";
|
||||
else
|
||||
self.hud_currentstate = "none";
|
||||
|
||||
if ( self.hud_currentstate != self.hud_laststate )
|
||||
{
|
||||
if ( self.hud_laststate == "warning" )
|
||||
var_0 common_scripts\utility::stop_loop_sound_on_entity( "missile_locking" );
|
||||
else if ( self.hud_laststate == "incoming" )
|
||||
var_0 common_scripts\utility::stop_loop_sound_on_entity( "missile_incoming" );
|
||||
|
||||
if ( self.hud_currentstate == "none" )
|
||||
{
|
||||
if ( self.hud_laststate == "warning" )
|
||||
var_0 thread maps\_utility::play_sound_on_entity( "missile_locking_failed" );
|
||||
|
||||
hud_turnoffmissilewarning();
|
||||
}
|
||||
|
||||
if ( self.hud_currentstate == "warning" )
|
||||
{
|
||||
var_0 thread common_scripts\utility::play_loop_sound_on_entity( "missile_locking" );
|
||||
hud_missile_warning();
|
||||
}
|
||||
else if ( self.hud_currentstate == "incoming" )
|
||||
{
|
||||
var_0 thread common_scripts\utility::play_loop_sound_on_entity( "missile_incoming" );
|
||||
hud_missile_incoming();
|
||||
}
|
||||
}
|
||||
|
||||
self.hud_laststate = self.hud_currentstate;
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
hud_enemy_missile_lockon( var_0 )
|
||||
{
|
||||
var_1 = self.owner;
|
||||
var_0 common_scripts\utility::waittill_any( "death", "deathspin", "LISTEN_missile_fire_self", "LISTEN_missile_lockOnFailed" );
|
||||
self.lockedontome = common_scripts\utility::array_removeundefined( self.lockedontome );
|
||||
|
||||
if ( isdefined( var_0 ) )
|
||||
self.lockedontome = common_scripts\utility::array_remove( self.lockedontome, var_0 );
|
||||
}
|
||||
|
||||
hud_buttonhelp( var_0, var_1 )
|
||||
{
|
||||
self endon( "death" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
var_0.alpha = 0;
|
||||
var_1.alpha = 1;
|
||||
wait 0.15;
|
||||
var_0.alpha = 1;
|
||||
var_1.alpha = 0;
|
||||
wait 0.15;
|
||||
}
|
||||
}
|
||||
|
||||
hud_flashalpha( var_0, var_1, var_2 )
|
||||
{
|
||||
self endon( "death" );
|
||||
self.alpha = var_0;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
self fadeovertime( var_1 );
|
||||
self.alpha = 0;
|
||||
wait( var_1 );
|
||||
|
||||
if ( isdefined( var_2 ) && var_2 > 0 )
|
||||
wait( var_2 );
|
||||
|
||||
self fadeovertime( var_1 );
|
||||
self.alpha = var_0;
|
||||
wait( var_1 );
|
||||
}
|
||||
}
|
||||
|
||||
hud_missile_warning()
|
||||
{
|
||||
var_0 = self.vehicle.heli;
|
||||
|
||||
if ( var_0 maps\_utility::ent_flag( "FLAG_pilot_active" ) )
|
||||
{
|
||||
self.hud["warning"]["msg_left"] settext( &"CHOPPERHUD_ENEMY_LOCK" );
|
||||
self.hud["warning"]["msg_left"].color = ( 1, 1, 1 );
|
||||
self.hud["warning"]["msg_right"] settext( &"CHOPPERHUD_ENEMY_LOCK" );
|
||||
self.hud["warning"]["msg_right"].color = ( 1, 1, 1 );
|
||||
self.hud["warning"]["msg_left"].alpha = 1.0;
|
||||
self.hud["warning"]["msg_right"].alpha = 1.0;
|
||||
self.hud["warning"]["bg_lock_left"].alpha = 1.0;
|
||||
self.hud["warning"]["bg_lock_right"].alpha = 1.0;
|
||||
self.hud["warning"]["bg_inc_left"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_inc_right"].alpha = 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
hud_missile_incoming()
|
||||
{
|
||||
var_0 = self.vehicle.heli;
|
||||
|
||||
if ( var_0 maps\_utility::ent_flag( "FLAG_pilot_active" ) )
|
||||
{
|
||||
self.hud["warning"]["msg_left"] settext( &"CHOPPERHUD_INCOMING" );
|
||||
self.hud["warning"]["msg_left"].color = ( 1, 1, 1 );
|
||||
self.hud["warning"]["msg_right"] settext( &"CHOPPERHUD_INCOMING" );
|
||||
self.hud["warning"]["msg_right"].color = ( 1, 1, 1 );
|
||||
self.hud["warning"]["msg_left"].alpha = 1.0;
|
||||
self.hud["warning"]["msg_right"].alpha = 1.0;
|
||||
self.hud["warning"]["bg_lock_left"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_lock_right"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_inc_left"].alpha = 1.0;
|
||||
self.hud["warning"]["bg_inc_right"].alpha = 1.0;
|
||||
}
|
||||
}
|
||||
|
||||
hud_turnoffmissilewarning()
|
||||
{
|
||||
var_0 = self.vehicle.heli;
|
||||
|
||||
if ( var_0 maps\_utility::ent_flag( "FLAG_pilot_active" ) )
|
||||
{
|
||||
self.hud["warning"]["msg_left"].alpha = 0.0;
|
||||
self.hud["warning"]["msg_right"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_lock_left"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_lock_right"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_inc_left"].alpha = 0.0;
|
||||
self.hud["warning"]["bg_inc_right"].alpha = 0.0;
|
||||
self.hud["warning"]["msg_right"].alpha = 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
hud_makeused_flares()
|
||||
{
|
||||
var_0 = hud_countfree_flares();
|
||||
var_1 = var_0 > 0;
|
||||
|
||||
if ( var_1 )
|
||||
{
|
||||
var_0--;
|
||||
hud_updateammo_flares( var_0 );
|
||||
}
|
||||
|
||||
return var_1;
|
||||
}
|
||||
|
||||
hud_makefree_flares( var_0 )
|
||||
{
|
||||
if ( isdefined( var_0 ) && var_0 > 0 )
|
||||
wait( var_0 );
|
||||
|
||||
var_1 = hud_countfree_flares();
|
||||
var_2 = var_1 < 2;
|
||||
|
||||
if ( var_2 )
|
||||
{
|
||||
var_1++;
|
||||
hud_updateammo_flares( var_1 );
|
||||
}
|
||||
|
||||
return var_2;
|
||||
}
|
||||
|
||||
hud_updateammo_flares( var_0 )
|
||||
{
|
||||
foreach ( var_3, var_2 in self.hud["flares"]["ammo"] )
|
||||
{
|
||||
if ( var_3 + 1 <= var_0 )
|
||||
{
|
||||
var_2.isavailable = 1;
|
||||
var_2.alpha = 1.0;
|
||||
continue;
|
||||
}
|
||||
|
||||
var_2.isavailable = 0;
|
||||
var_2.alpha = 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
hud_countfree_flares()
|
||||
{
|
||||
var_0 = 0;
|
||||
|
||||
foreach ( var_2 in self.hud["flares"]["ammo"] )
|
||||
{
|
||||
if ( var_2.isavailable )
|
||||
var_0++;
|
||||
}
|
||||
|
||||
return var_0;
|
||||
}
|
||||
|
||||
_end()
|
||||
{
|
||||
var_0 = self.owner;
|
||||
var_0 notify( "LISTEN_end_missile_defense" );
|
||||
common_scripts\utility::array_thread( self.hud, ::set_key, [ 0, "alpha" ] );
|
||||
var_0 common_scripts\utility::stop_loop_sound_on_entity( "missile_locking" );
|
||||
var_0 common_scripts\utility::stop_loop_sound_on_entity( "missile_incoming" );
|
||||
}
|
||||
|
||||
set_key( var_0, var_1 )
|
||||
{
|
||||
if ( !isdefined( self ) || !isdefined( var_1 ) )
|
||||
return;
|
||||
|
||||
switch ( var_1 )
|
||||
{
|
||||
case "alpha":
|
||||
self.alpha = var_0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
_destroy()
|
||||
{
|
||||
_end();
|
||||
self.vehicle.missile_defense = undefined;
|
||||
maps\_utility::deep_array_call( self.hud, ::destroy );
|
||||
}
|
7
vehicle_scripts/_empty.gsc
Normal file
7
vehicle_scripts/_empty.gsc
Normal file
@ -0,0 +1,7 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1 )
|
||||
{
|
||||
|
||||
}
|
291
vehicle_scripts/_f15.gsc
Normal file
291
vehicle_scripts/_f15.gsc
Normal file
@ -0,0 +1,291 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "f15", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_f15" );
|
||||
level._effect["engineeffect"] = loadfx( "fx/fire/jet_afterburner" );
|
||||
level._effect["afterburner"] = loadfx( "fx/fire/jet_afterburner_ignite" );
|
||||
level._effect["contrail"] = loadfx( "fx/smoke/jet_contrail" );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/large_vehicle_explosion", undefined, "explo_metal_rand", undefined, undefined, undefined, undefined, undefined, undefined, 0 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_rumble( "mig_rumble", 0.1, 0.2, 11300, 0.05, 0.05 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
var_3 = randomfloatrange( 0, 1 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_green", "TAG_LEFT_WINGTIP", "fx/misc/aircraft_light_wingtip_green", "running", var_3 );
|
||||
maps\_vehicle::build_light( var_2, "tail_green", "TAG_LEFT_TAIL", "fx/misc/aircraft_light_wingtip_green", "running", var_3 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_red", "TAG_RIGHT_WINGTIP", "fx/misc/aircraft_light_wingtip_red", "running", var_3 );
|
||||
maps\_vehicle::build_light( var_2, "tail_red", "TAG_RIGHT_TAIL", "fx/misc/aircraft_light_wingtip_red", "running", var_3 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink", "TAG_LIGHT_BELLY", "fx/misc/aircraft_light_white_blink", "running", var_3 );
|
||||
maps\_vehicle::build_light( var_2, "landing_light01", "TAG_LIGHT_LANDING01", "fx/misc/light_mig29_landing", "landing", 0.0 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
thread playengineeffects();
|
||||
thread handle_death();
|
||||
thread playcontrail();
|
||||
thread landing_gear_up();
|
||||
maps\_vehicle::vehicle_lights_on( "running" );
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_1 = "rope_test";
|
||||
precachemodel( var_1 );
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
landing_gear_up()
|
||||
{
|
||||
self useanimtree( #animtree );
|
||||
self setanim( %mig_landing_gear_up );
|
||||
}
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 1; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
return var_0;
|
||||
}
|
||||
|
||||
playengineeffects()
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "stop_engineeffects" );
|
||||
maps\_utility::ent_flag_init( "engineeffects" );
|
||||
maps\_utility::ent_flag_set( "engineeffects" );
|
||||
var_0 = common_scripts\utility::getfx( "engineeffect" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
maps\_utility::ent_flag_wait( "engineeffects" );
|
||||
playfxontag( var_0, self, "tag_engine_right" );
|
||||
playfxontag( var_0, self, "tag_engine_left" );
|
||||
maps\_utility::ent_flag_waitopen( "engineeffects" );
|
||||
stopfxontag( var_0, self, "tag_engine_left" );
|
||||
stopfxontag( var_0, self, "tag_engine_right" );
|
||||
}
|
||||
}
|
||||
|
||||
playafterburner()
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "stop_afterburners" );
|
||||
maps\_utility::ent_flag_init( "afterburners" );
|
||||
maps\_utility::ent_flag_set( "afterburners" );
|
||||
var_0 = common_scripts\utility::getfx( "afterburner" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
maps\_utility::ent_flag_wait( "afterburners" );
|
||||
playfxontag( var_0, self, "tag_engine_right" );
|
||||
playfxontag( var_0, self, "tag_engine_left" );
|
||||
maps\_utility::ent_flag_waitopen( "afterburners" );
|
||||
stopfxontag( var_0, self, "tag_engine_left" );
|
||||
stopfxontag( var_0, self, "tag_engine_right" );
|
||||
}
|
||||
}
|
||||
|
||||
handle_death()
|
||||
{
|
||||
self waittill( "death" );
|
||||
|
||||
if ( isdefined( self.tag1 ) )
|
||||
self.tag1 delete();
|
||||
|
||||
if ( isdefined( self.tag2 ) )
|
||||
self.tag2 delete();
|
||||
}
|
||||
|
||||
playcontrail()
|
||||
{
|
||||
self.tag1 = add_contrail( "tag_engine_right", 1 );
|
||||
self.tag2 = add_contrail( "tag_engine_left", -1 );
|
||||
var_0 = common_scripts\utility::getfx( "contrail" );
|
||||
self endon( "death" );
|
||||
maps\_utility::ent_flag_init( "contrails" );
|
||||
maps\_utility::ent_flag_set( "contrails" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
maps\_utility::ent_flag_wait( "contrails" );
|
||||
playfxontag( var_0, self.tag1, "tag_origin" );
|
||||
playfxontag( var_0, self.tag2, "tag_origin" );
|
||||
maps\_utility::ent_flag_waitopen( "contrails" );
|
||||
stopfxontag( var_0, self.tag1, "tag_origin" );
|
||||
stopfxontag( var_0, self.tag2, "tag_origin" );
|
||||
}
|
||||
}
|
||||
|
||||
add_contrail( var_0, var_1 )
|
||||
{
|
||||
var_2 = common_scripts\utility::spawn_tag_origin();
|
||||
var_2.origin = self gettagorigin( var_0 );
|
||||
var_2.angles = self gettagangles( var_0 );
|
||||
var_3 = spawnstruct();
|
||||
var_3.entity = var_2;
|
||||
var_3.forward = -156;
|
||||
var_3.up = 0;
|
||||
var_3.right = 224 * var_1;
|
||||
var_3.yaw = 0;
|
||||
var_3.pitch = 0;
|
||||
var_3 maps\_utility::translate_local();
|
||||
var_2 linkto( self, var_0 );
|
||||
return var_2;
|
||||
}
|
||||
|
||||
playerisclose( var_0 )
|
||||
{
|
||||
var_1 = playerisinfront( var_0 );
|
||||
|
||||
if ( var_1 )
|
||||
var_2 = 1;
|
||||
else
|
||||
var_2 = -1;
|
||||
|
||||
var_3 = common_scripts\utility::flat_origin( var_0.origin );
|
||||
var_4 = var_3 + anglestoforward( common_scripts\utility::flat_angle( var_0.angles ) ) * ( var_2 * 100000 );
|
||||
var_5 = pointonsegmentnearesttopoint( var_3, var_4, level.player.origin );
|
||||
var_6 = distance( var_3, var_5 );
|
||||
|
||||
if ( var_6 < 3000 )
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
playerisinfront( var_0 )
|
||||
{
|
||||
if ( !isdefined( var_0 ) )
|
||||
return 0;
|
||||
|
||||
var_1 = anglestoforward( common_scripts\utility::flat_angle( var_0.angles ) );
|
||||
var_2 = vectornormalize( common_scripts\utility::flat_origin( level.player.origin ) - var_0.origin );
|
||||
var_3 = vectordot( var_1, var_2 );
|
||||
|
||||
if ( var_3 > 0 )
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
plane_sound_node()
|
||||
{
|
||||
self waittill( "trigger", var_0 );
|
||||
var_0 endon( "death" );
|
||||
thread plane_sound_node();
|
||||
var_0 thread common_scripts\utility::play_loop_sound_on_entity( "veh_f15_dist_loop" );
|
||||
|
||||
while ( playerisinfront( var_0 ) )
|
||||
wait 0.05;
|
||||
|
||||
wait 0.5;
|
||||
|
||||
if ( isdefined( var_0 ) )
|
||||
{
|
||||
var_0 thread common_scripts\utility::play_sound_in_space( "veh_f15_sonic_boom" );
|
||||
var_0 waittill( "reached_end_node" );
|
||||
var_0 stop_sound( "veh_f15_dist_loop" );
|
||||
var_0 delete();
|
||||
}
|
||||
}
|
||||
|
||||
plane_bomb_node()
|
||||
{
|
||||
level._effect["plane_bomb_explosion1"] = loadfx( "fx/explosions/bomb_explosion_ac130_small" );
|
||||
level._effect["plane_bomb_explosion2"] = loadfx( "fx/explosions/bomb_explosion_ac130_small" );
|
||||
self waittill( "trigger", var_0 );
|
||||
var_0 endon( "death" );
|
||||
thread plane_bomb_node();
|
||||
var_1 = common_scripts\utility::get_linked_ents();
|
||||
var_1 = common_scripts\utility::get_array_of_closest( self.origin, var_1, undefined, var_1.size );
|
||||
var_2 = 0;
|
||||
wait( randomfloatrange( 0.3, 0.8 ) );
|
||||
|
||||
for ( var_3 = 0; var_3 < var_1.size; var_3++ )
|
||||
{
|
||||
var_2++;
|
||||
|
||||
if ( var_2 == 3 )
|
||||
var_2 = 1;
|
||||
|
||||
var_1[var_3] thread maps\_utility::play_sound_on_entity( "airstrike_explosion_close" );
|
||||
playfx( level._effect["plane_bomb_explosion" + var_2], var_1[var_3].origin );
|
||||
level.player playrumblelooponentity( "damage_heavy" );
|
||||
earthquake( 0.2, 0.5, level.player.origin, 1000 );
|
||||
wait 0.2;
|
||||
level.player stoprumble( "damage_heavy" );
|
||||
wait 0.1;
|
||||
}
|
||||
}
|
||||
|
||||
plane_bomb_cluster()
|
||||
{
|
||||
self waittill( "trigger", var_0 );
|
||||
var_0 endon( "death" );
|
||||
var_1 = var_0;
|
||||
var_1 thread plane_bomb_cluster();
|
||||
var_2 = spawn( "script_model", var_1.origin - ( 0, 0, 100 ) );
|
||||
var_2.angles = var_1.angles;
|
||||
var_2 setmodel( "projectile_cbu97_clusterbomb" );
|
||||
var_3 = anglestoforward( var_1.angles ) * 2;
|
||||
var_4 = anglestoup( var_1.angles ) * -0.2;
|
||||
var_5 = [];
|
||||
|
||||
for ( var_6 = 0; var_6 < 3; var_6++ )
|
||||
var_5[var_6] = ( var_3[var_6] + var_4[var_6] ) / 2;
|
||||
|
||||
var_5 = ( var_5[0], var_5[1], var_5[2] );
|
||||
var_5 = var_5 * 7000;
|
||||
var_2 movegravity( var_5, 2.0 );
|
||||
wait 1.2;
|
||||
var_7 = spawn( "script_model", var_2.origin );
|
||||
var_7 setmodel( "tag_origin" );
|
||||
var_7.origin = var_2.origin;
|
||||
var_7.angles = var_2.angles;
|
||||
wait 0.05;
|
||||
var_2 delete();
|
||||
var_2 = var_7;
|
||||
var_8 = var_2.origin;
|
||||
var_9 = var_2.angles;
|
||||
playfxontag( level.airstrikefx, var_2, "tag_origin" );
|
||||
wait 1.6;
|
||||
var_10 = 12;
|
||||
var_11 = 5;
|
||||
var_12 = 55;
|
||||
var_13 = ( var_12 - var_11 ) / var_10;
|
||||
|
||||
for ( var_6 = 0; var_6 < var_10; var_6++ )
|
||||
{
|
||||
var_14 = anglestoforward( var_9 + ( var_12 - var_13 * var_6, randomint( 10 ) - 5, 0 ) );
|
||||
var_15 = var_8 + var_14 * 10000;
|
||||
var_16 = bullettrace( var_8, var_15, 0, undefined );
|
||||
var_17 = var_16["position"];
|
||||
radiusdamage( var_17 + ( 0, 0, 16 ), 512, 400, 30 );
|
||||
|
||||
if ( var_6 % 3 == 0 )
|
||||
{
|
||||
thread common_scripts\utility::play_sound_in_space( "airstrike_explosion_close", var_17 );
|
||||
playrumbleonposition( "artillery_rumble", var_17 );
|
||||
earthquake( 0.7, 0.75, var_17, 1000 );
|
||||
}
|
||||
|
||||
wait( 0.75 / var_10 );
|
||||
}
|
||||
|
||||
wait 1.0;
|
||||
var_2 delete();
|
||||
}
|
||||
|
||||
stop_sound( var_0 )
|
||||
{
|
||||
self notify( "stop sound" + var_0 );
|
||||
}
|
300
vehicle_scripts/_f18.gsc
Normal file
300
vehicle_scripts/_f18.gsc
Normal file
@ -0,0 +1,300 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "f18", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
var_3 = var_2 == "script_vehicle_f18_lite";
|
||||
|
||||
if ( !var_3 )
|
||||
maps\_vehicle::build_deathmodel( "vehicle_f18_super_hornet" );
|
||||
|
||||
level._effect["engineeffect_f18"] = loadfx( "vfx/gameplay/vehicles/f18/vfx_f18_engine" );
|
||||
level._effect["afterburner_f18"] = loadfx( "vfx/gameplay/vehicles/f18/vfx_f18_engine_afterburner" );
|
||||
level._effect["contrail_f18"] = loadfx( "fx/smoke/jet_contrail" );
|
||||
|
||||
if ( !var_3 )
|
||||
maps\_vehicle::build_deathfx( "vfx/gameplay/vehicles/f18/vfx_f18_death", undefined, "explo_metal_rand", undefined, undefined, undefined, undefined, undefined, undefined, 0 );
|
||||
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_rumble( "mig_rumble", 0.1, 0.2, 11300, 0.05, 0.05 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
var_4 = randomfloatrange( 0, 1 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_green", "TAG_LEFT_WINGTIP", "fx/misc/aircraft_light_wingtip_green", "running", var_4 );
|
||||
maps\_vehicle::build_light( var_2, "tail_green", "TAG_LEFT_TAIL", "fx/misc/aircraft_light_wingtip_green", "running", var_4 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_red", "TAG_RIGHT_WINGTIP", "fx/misc/aircraft_light_wingtip_red", "running", var_4 );
|
||||
maps\_vehicle::build_light( var_2, "tail_red", "TAG_RIGHT_TAIL", "fx/misc/aircraft_light_wingtip_red", "running", var_4 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink", "TAG_LIGHT_BELLY", "fx/misc/aircraft_light_white_blink", "running", var_4 );
|
||||
|
||||
if ( !var_3 )
|
||||
maps\_vehicle::build_light( var_2, "landing_light01", "TAG_LIGHT_LANDING01", "fx/misc/light_mig29_landing", "landing", 0.0 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
thread playengineeffects();
|
||||
thread handle_death();
|
||||
thread playcontrail();
|
||||
thread landing_gear_up();
|
||||
maps\_vehicle::vehicle_lights_on( "running" );
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_1 = "rope_test";
|
||||
precachemodel( var_1 );
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
landing_gear_up()
|
||||
{
|
||||
self useanimtree( #animtree );
|
||||
self setanim( %f18_landing_gears_up );
|
||||
}
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 1; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
return var_0;
|
||||
}
|
||||
|
||||
playengineeffects()
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "stop_engineeffects" );
|
||||
maps\_utility::ent_flag_init( "engineeffects" );
|
||||
maps\_utility::ent_flag_set( "engineeffects" );
|
||||
var_0 = common_scripts\utility::getfx( "engineeffect_f18" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
maps\_utility::ent_flag_wait( "engineeffects" );
|
||||
playfxontag( var_0, self, "tag_engine_right" );
|
||||
playfxontag( var_0, self, "tag_engine_left" );
|
||||
maps\_utility::ent_flag_waitopen( "engineeffects" );
|
||||
stopfxontag( var_0, self, "tag_engine_left" );
|
||||
stopfxontag( var_0, self, "tag_engine_right" );
|
||||
}
|
||||
}
|
||||
|
||||
playafterburner()
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "stop_afterburners" );
|
||||
maps\_utility::ent_flag_init( "afterburners" );
|
||||
maps\_utility::ent_flag_set( "afterburners" );
|
||||
var_0 = common_scripts\utility::getfx( "afterburner_f18" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
maps\_utility::ent_flag_wait( "afterburners" );
|
||||
playfxontag( var_0, self, "tag_engine_right" );
|
||||
playfxontag( var_0, self, "tag_engine_left" );
|
||||
maps\_utility::ent_flag_waitopen( "afterburners" );
|
||||
stopfxontag( var_0, self, "tag_engine_left" );
|
||||
stopfxontag( var_0, self, "tag_engine_right" );
|
||||
}
|
||||
}
|
||||
|
||||
handle_death()
|
||||
{
|
||||
self waittill( "death" );
|
||||
|
||||
if ( isdefined( self.tag1 ) )
|
||||
self.tag1 delete();
|
||||
|
||||
if ( isdefined( self.tag2 ) )
|
||||
self.tag2 delete();
|
||||
}
|
||||
|
||||
playcontrail()
|
||||
{
|
||||
self.tag1 = add_contrail( "tag_engine_right", 1 );
|
||||
self.tag2 = add_contrail( "tag_engine_left", -1 );
|
||||
var_0 = common_scripts\utility::getfx( "contrail_f18" );
|
||||
self endon( "death" );
|
||||
maps\_utility::ent_flag_init( "contrails" );
|
||||
maps\_utility::ent_flag_set( "contrails" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
maps\_utility::ent_flag_wait( "contrails" );
|
||||
playfxontag( var_0, self.tag1, "tag_origin" );
|
||||
playfxontag( var_0, self.tag2, "tag_origin" );
|
||||
maps\_utility::ent_flag_waitopen( "contrails" );
|
||||
stopfxontag( var_0, self.tag1, "tag_origin" );
|
||||
stopfxontag( var_0, self.tag2, "tag_origin" );
|
||||
}
|
||||
}
|
||||
|
||||
add_contrail( var_0, var_1 )
|
||||
{
|
||||
var_2 = common_scripts\utility::spawn_tag_origin();
|
||||
var_2.origin = self gettagorigin( var_0 );
|
||||
var_2.angles = self gettagangles( var_0 );
|
||||
var_3 = spawnstruct();
|
||||
var_3.entity = var_2;
|
||||
var_3.forward = -156;
|
||||
var_3.up = 0;
|
||||
var_3.right = 224 * var_1;
|
||||
var_3.yaw = 0;
|
||||
var_3.pitch = 0;
|
||||
var_3 maps\_utility::translate_local();
|
||||
var_2 linkto( self, var_0 );
|
||||
return var_2;
|
||||
}
|
||||
|
||||
playerisclose( var_0 )
|
||||
{
|
||||
var_1 = playerisinfront( var_0 );
|
||||
|
||||
if ( var_1 )
|
||||
var_2 = 1;
|
||||
else
|
||||
var_2 = -1;
|
||||
|
||||
var_3 = common_scripts\utility::flat_origin( var_0.origin );
|
||||
var_4 = var_3 + anglestoforward( common_scripts\utility::flat_angle( var_0.angles ) ) * ( var_2 * 100000 );
|
||||
var_5 = pointonsegmentnearesttopoint( var_3, var_4, level.player.origin );
|
||||
var_6 = distance( var_3, var_5 );
|
||||
|
||||
if ( var_6 < 3000 )
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
playerisinfront( var_0 )
|
||||
{
|
||||
if ( !isdefined( var_0 ) )
|
||||
return 0;
|
||||
|
||||
var_1 = anglestoforward( common_scripts\utility::flat_angle( var_0.angles ) );
|
||||
var_2 = vectornormalize( common_scripts\utility::flat_origin( level.player.origin ) - var_0.origin );
|
||||
var_3 = vectordot( var_1, var_2 );
|
||||
|
||||
if ( var_3 > 0 )
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
plane_sound_node()
|
||||
{
|
||||
self waittill( "trigger", var_0 );
|
||||
var_0 endon( "death" );
|
||||
thread plane_sound_node();
|
||||
var_0 thread common_scripts\utility::play_loop_sound_on_entity( "veh_f15_dist_loop" );
|
||||
|
||||
while ( playerisinfront( var_0 ) )
|
||||
wait 0.05;
|
||||
|
||||
wait 0.5;
|
||||
|
||||
if ( isdefined( var_0 ) )
|
||||
{
|
||||
var_0 thread common_scripts\utility::play_sound_in_space( "veh_f15_sonic_boom" );
|
||||
var_0 waittill( "reached_end_node" );
|
||||
var_0 stop_sound( "veh_f15_dist_loop" );
|
||||
var_0 delete();
|
||||
}
|
||||
}
|
||||
|
||||
plane_bomb_node()
|
||||
{
|
||||
level._effect["plane_bomb_explosion1"] = loadfx( "fx/explosions/bomb_explosion_ac130_small" );
|
||||
level._effect["plane_bomb_explosion2"] = loadfx( "fx/explosions/bomb_explosion_ac130_small" );
|
||||
self waittill( "trigger", var_0 );
|
||||
var_0 endon( "death" );
|
||||
thread plane_bomb_node();
|
||||
var_1 = common_scripts\utility::get_linked_ents();
|
||||
var_1 = common_scripts\utility::get_array_of_closest( self.origin, var_1, undefined, var_1.size );
|
||||
var_2 = 0;
|
||||
wait( randomfloatrange( 0.3, 0.8 ) );
|
||||
|
||||
for ( var_3 = 0; var_3 < var_1.size; var_3++ )
|
||||
{
|
||||
var_2++;
|
||||
|
||||
if ( var_2 == 3 )
|
||||
var_2 = 1;
|
||||
|
||||
var_1[var_3] thread maps\_utility::play_sound_on_entity( "airstrike_explosion_close" );
|
||||
playfx( level._effect["plane_bomb_explosion" + var_2], var_1[var_3].origin );
|
||||
level.player playrumblelooponentity( "damage_heavy" );
|
||||
earthquake( 0.2, 0.5, level.player.origin, 1000 );
|
||||
wait 0.2;
|
||||
level.player stoprumble( "damage_heavy" );
|
||||
wait 0.1;
|
||||
}
|
||||
}
|
||||
|
||||
plane_bomb_cluster()
|
||||
{
|
||||
self waittill( "trigger", var_0 );
|
||||
var_0 endon( "death" );
|
||||
var_1 = var_0;
|
||||
var_1 thread plane_bomb_cluster();
|
||||
var_2 = spawn( "script_model", var_1.origin - ( 0, 0, 100 ) );
|
||||
var_2.angles = var_1.angles;
|
||||
var_2 setmodel( "projectile_cbu97_clusterbomb" );
|
||||
var_3 = anglestoforward( var_1.angles ) * 2;
|
||||
var_4 = anglestoup( var_1.angles ) * -0.2;
|
||||
var_5 = [];
|
||||
|
||||
for ( var_6 = 0; var_6 < 3; var_6++ )
|
||||
var_5[var_6] = ( var_3[var_6] + var_4[var_6] ) / 2;
|
||||
|
||||
var_5 = ( var_5[0], var_5[1], var_5[2] );
|
||||
var_5 = var_5 * 7000;
|
||||
var_2 movegravity( var_5, 2.0 );
|
||||
wait 1.2;
|
||||
var_7 = spawn( "script_model", var_2.origin );
|
||||
var_7 setmodel( "tag_origin" );
|
||||
var_7.origin = var_2.origin;
|
||||
var_7.angles = var_2.angles;
|
||||
wait 0.05;
|
||||
var_2 delete();
|
||||
var_2 = var_7;
|
||||
var_8 = var_2.origin;
|
||||
var_9 = var_2.angles;
|
||||
playfxontag( level.airstrikefx, var_2, "tag_origin" );
|
||||
wait 1.6;
|
||||
var_10 = 12;
|
||||
var_11 = 5;
|
||||
var_12 = 55;
|
||||
var_13 = ( var_12 - var_11 ) / var_10;
|
||||
|
||||
for ( var_6 = 0; var_6 < var_10; var_6++ )
|
||||
{
|
||||
var_14 = anglestoforward( var_9 + ( var_12 - var_13 * var_6, randomint( 10 ) - 5, 0 ) );
|
||||
var_15 = var_8 + var_14 * 10000;
|
||||
var_16 = bullettrace( var_8, var_15, 0, undefined );
|
||||
var_17 = var_16["position"];
|
||||
radiusdamage( var_17 + ( 0, 0, 16 ), 512, 400, 30 );
|
||||
|
||||
if ( var_6 % 3 == 0 )
|
||||
{
|
||||
thread common_scripts\utility::play_sound_in_space( "airstrike_explosion_close", var_17 );
|
||||
playrumbleonposition( "artillery_rumble", var_17 );
|
||||
earthquake( 0.7, 0.75, var_17, 1000 );
|
||||
}
|
||||
|
||||
wait( 0.75 / var_10 );
|
||||
}
|
||||
|
||||
wait 1.0;
|
||||
var_2 delete();
|
||||
}
|
||||
|
||||
stop_sound( var_0 )
|
||||
{
|
||||
self notify( "stop sound" + var_0 );
|
||||
}
|
17
vehicle_scripts/_foliage_tumbleweed_vehicle.gsc
Normal file
17
vehicle_scripts/_foliage_tumbleweed_vehicle.gsc
Normal file
@ -0,0 +1,17 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "foliage_tumbleweed_vehicle", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_drive( %foliage_tumbleweed_roll_loop1, undefined, 25 );
|
||||
maps\_vehicle::build_life( 1 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
180
vehicle_scripts/_gaz.gsc
Normal file
180
vehicle_scripts/_gaz.gsc
Normal file
@ -0,0 +1,180 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "gaz_tigr_harbor", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
maps\_vehicle::build_drive( %humvee_50cal_driving_idle_forward, %humvee_50cal_driving_idle_backward, 10 );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
|
||||
if ( issubstr( var_2, "turret" ) )
|
||||
{
|
||||
maps\_vehicle::build_aianims( ::setanims_turret, ::set_vehicle_anims );
|
||||
|
||||
if ( issubstr( var_2, "_paris" ) || issubstr( var_2, "_hijack" ) )
|
||||
maps\_vehicle::build_turret( "dshk_gaz_damage_player", "tag_turret", "weapon_dshk_turret", undefined, "auto_ai", 0.2, -20, -14 );
|
||||
|
||||
if ( issubstr( var_2, "_factory" ) )
|
||||
maps\_vehicle::build_turret( "dshk_gaz_factory", "tag_turret", "weapon_dshk_turret", undefined, "auto_ai", 0.2, -20, -14 );
|
||||
else
|
||||
maps\_vehicle::build_turret( "dshk_gaz", "tag_turret", "weapon_dshk_turret", undefined, "auto_ai", 0.2, -20, -14 );
|
||||
}
|
||||
else
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
|
||||
if ( var_2 == "script_vehicle_gaz_tigr_turret_physics_paris" )
|
||||
maps\_vehicle::build_destructible( var_0, "vehicle_gaz_harbor" );
|
||||
else
|
||||
build_gaz_death( var_2, var_0 );
|
||||
|
||||
maps\_vehicle::build_light( var_2, "headlight_L", "TAG_HEADLIGHT_LEFT", "fx/misc/spotlight_btr80_daytime", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_R", "TAG_HEADLIGHT_RIGHT", "fx/misc/spotlight_btr80_daytime", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_L", "TAG_BRAKELIGHT_LEFT", "fx/misc/car_taillight_btr80_eye", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_R", "TAG_BRAKELIGHT_RIGHT", "fx/misc/car_taillight_btr80_eye", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_L", "TAG_HEADLIGHT_LEFT", "fx/misc/car_headlight_gaz_l_night", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_R", "TAG_HEADLIGHT_RIGHT", "fx/misc/car_headlight_gaz_r_night", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_L", "TAG_BRAKELIGHT_LEFT", "fx/misc/car_taillight_btr80_eye", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_R", "TAG_BRAKELIGHT_RIGHT", "fx/misc/car_taillight_btr80_eye", "headlights", 0.0 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_1 = "passengers";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_1 = "all_but_gunner";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_1 = "rear_driver_side";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_1 = "all";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0["default"] = var_0["all"];
|
||||
return var_0;
|
||||
}
|
||||
|
||||
build_gaz_death( var_0, var_1 )
|
||||
{
|
||||
level._effect["gazexplode"] = loadfx( "fx/explosions/vehicle_explosion_gaz" );
|
||||
level._effect["gazcookoff"] = loadfx( "fx/explosions/ammo_cookoff" );
|
||||
level._effect["gazsmfire"] = loadfx( "fx/fire/firelp_small_pm_a" );
|
||||
|
||||
if ( var_1 != "vehicle_gaz_tigr_b_iw6" )
|
||||
{
|
||||
if ( !issubstr( var_0, "_sand" ) )
|
||||
{
|
||||
level._effect["gazfire"] = loadfx( "fx/fire/firelp_med_pm_nolight" );
|
||||
maps\_vehicle::build_deathfx( "fx/fire/firelp_med_pm_nolight", "tag_cab_fx", undefined, undefined, undefined, 1, 0 );
|
||||
maps\_vehicle::build_deathfx( "fx/fire/firelp_small_pm_a", "tag_trunk_fx", undefined, undefined, undefined, 1, 3 );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/vehicle_explosion_gaz", "tag_deathfx" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_gaz_tigr_harbor", "vehicle_gaz_tigr_harbor_destroyed" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_gaz_tigr_base", "vehicle_gaz_tigr_harbor_destroyed" );
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\_vehicle::build_deathfx( "fx/fire/firelp_small_pm_a", "tag_engine_right", undefined, undefined, undefined, 1, 3 );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/vehicle_explosion_gaz", "tag_origin" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_gaz_tigr_base", "vehicle_gaz_tigr_base_destroyed_crushable" );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\_vehicle::build_deathmodel( "vehicle_gaz_tigr_b_iw6", "vehicle_gaz_tigr_base_destroyed" );
|
||||
level._effect["gazfire"] = loadfx( "fx/fire/firelp_med_pm_nolight" );
|
||||
maps\_vehicle::build_deathfx( "fx/fire/firelp_med_pm_nolight", "tag_origin", undefined, undefined, undefined, 1, 0 );
|
||||
maps\_vehicle::build_deathfx( "fx/fire/firelp_small_pm_a", "tag_engine_right", undefined, undefined, undefined, 1, 3 );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/vehicle_explosion_gaz", "tag_origin" );
|
||||
}
|
||||
|
||||
maps\_vehicle::build_deathquake( 1, 1.6, 500 );
|
||||
|
||||
if ( var_0 != "script_vehicle_gaz_tigr_turret_physics_factory" )
|
||||
maps\_vehicle::build_radiusdamage( ( 0, 0, 32 ), 300, 200, 0, 0 );
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_0[0].vehicle_getoutanim = %gaz_dismount_frontl_door;
|
||||
var_0[1].vehicle_getoutanim = %gaz_dismount_frontr_door;
|
||||
var_0[2].vehicle_getoutanim = %gaz_dismount_backl_door;
|
||||
var_0[3].vehicle_getoutanim = %gaz_dismount_backr_door;
|
||||
var_0[0].vehicle_getinanim = %gaz_mount_frontl_door;
|
||||
var_0[1].vehicle_getinanim = %gaz_mount_frontr_door;
|
||||
var_0[2].vehicle_getinanim = %gaz_enter_back_door;
|
||||
var_0[3].vehicle_getinanim = %gaz_enter_back_door;
|
||||
var_0[0].vehicle_getoutsound = "gaz_door_open";
|
||||
var_0[1].vehicle_getoutsound = "gaz_door_open";
|
||||
var_0[2].vehicle_getoutsound = "gaz_door_open";
|
||||
var_0[3].vehicle_getoutsound = "gaz_door_open";
|
||||
var_0[0].vehicle_getinsound = "gaz_door_close";
|
||||
var_0[1].vehicle_getinsound = "gaz_door_close";
|
||||
var_0[2].vehicle_getinsound = "gaz_door_close";
|
||||
var_0[3].vehicle_getinsound = "gaz_door_close";
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 4; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_driver";
|
||||
var_0[1].sittag = "tag_passenger";
|
||||
var_0[2].sittag = "tag_guy0";
|
||||
var_0[3].sittag = "tag_guy1";
|
||||
var_0[0].bhasgunwhileriding = 0;
|
||||
var_0[0].death = %gaz_dismount_frontl;
|
||||
var_0[0].death_delayed_ragdoll = 3;
|
||||
var_0[0].idle = %gaz_idle_frontl;
|
||||
var_0[1].idle = %gaz_idle_frontr;
|
||||
var_0[2].idle = %gaz_idle_backl;
|
||||
var_0[3].idle = %gaz_idle_backr;
|
||||
var_0[0].getout = %gaz_dismount_frontl;
|
||||
var_0[1].getout = %gaz_dismount_frontr;
|
||||
var_0[2].getout = %gaz_dismount_backl;
|
||||
var_0[3].getout = %gaz_dismount_backr;
|
||||
var_0[0].getin = %gaz_mount_frontl;
|
||||
var_0[1].getin = %gaz_mount_frontr;
|
||||
var_0[2].getin = %gaz_enter_backr;
|
||||
var_0[3].getin = %gaz_enter_backl;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
setanims_turret()
|
||||
{
|
||||
var_0 = setanims();
|
||||
var_0[3].mgturret = 0;
|
||||
var_0[3].passenger_2_turret_func = ::gaz_turret_guy_gettin_func;
|
||||
var_0[3].sittag = "tag_guy_turret";
|
||||
return var_0;
|
||||
}
|
||||
|
||||
gaz_turret_guy_gettin_func( var_0, var_1, var_2, var_3 )
|
||||
{
|
||||
|
||||
}
|
238
vehicle_scripts/_gaz_dshk_oilrocks.gsc
Normal file
238
vehicle_scripts/_gaz_dshk_oilrocks.gsc
Normal file
@ -0,0 +1,238 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "gaz_tigr_turret_oilrocks", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
maps\_vehicle::build_drive( %humvee_50cal_driving_idle_forward, %humvee_50cal_driving_idle_backward, 10 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_aianims( ::setanims_turret, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_turret( "dshk_gaz", "tag_turret", "weapon_dshk_turret", undefined, "auto_ai", 0.2, -20, -14 );
|
||||
maps\_vehicle::build_bulletshield( 1 );
|
||||
build_gaz_death( var_2 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
self.animname = "gaz_dshk";
|
||||
self.script_explosive_bullet_shield = 1;
|
||||
self.allowdeath = 0;
|
||||
self.is_anim_based_death = 1;
|
||||
self.has_unmatching_deathmodel_rig = 1;
|
||||
self.death_fx_on_self = 1;
|
||||
self.anim_is_death = 1;
|
||||
self.dont_finish_death = 1;
|
||||
thread feelgoodapachegundeath();
|
||||
}
|
||||
|
||||
feelgoodapachegundeath()
|
||||
{
|
||||
if ( !isdefined( level.apache_difficulty ) )
|
||||
return;
|
||||
|
||||
self endon( "death" );
|
||||
wait 0.5;
|
||||
var_0 = 0;
|
||||
|
||||
while ( var_0 < level.apache_difficulty.zpu_magic_bullets )
|
||||
{
|
||||
self waittill( "damage", var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10 );
|
||||
|
||||
if ( maps\_vehicle::is_godmode() )
|
||||
continue;
|
||||
|
||||
if ( var_5 == "MOD_EXPLOSIVE_BULLET" )
|
||||
var_0++;
|
||||
|
||||
if ( var_2 == level.player )
|
||||
break;
|
||||
}
|
||||
|
||||
maps\_vehicle::force_kill();
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_1 = "passengers";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_1 = "all_but_gunner";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_1 = "rear_driver_side";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_1 = "gunner";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_1 = "all";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0["default"] = var_0["all"];
|
||||
return var_0;
|
||||
}
|
||||
|
||||
build_gaz_death( var_0 )
|
||||
{
|
||||
maps\_vehicle::build_deathmodel( "vehicle_gaz_tigr_base_oilrocks", "vehicle_gaz_tigr_b_iw6_explosion" );
|
||||
set_death_anim_scene();
|
||||
maps\_vehicle::build_radiusdamage( ( 0, 0, 32 ), 300, 200, 0, 0 );
|
||||
}
|
||||
|
||||
set_death_anim_scene()
|
||||
{
|
||||
var_0 = "exp_armor_vehicle";
|
||||
death_a( %gaz_tigr_explode_a, "gaz_explode_singleV1", var_0 );
|
||||
death_b( %gaz_tigr_explode_b, "gaz_explode_singleV2", var_0 );
|
||||
death_c( %gaz_tigr_explode_c, "gaz_explode_singleV3", var_0 );
|
||||
death_d( %gaz_tigr_explode_d, "gaz_explode_singleV4", var_0 );
|
||||
maps\_vehicle::build_deathanim( [ "gaz_explode_singleV1", "gaz_explode_singleV2", "gaz_explode_singleV3", "gaz_explode_singleV4" ] );
|
||||
}
|
||||
|
||||
death_d( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_anim::create_anim_scene( #animtree, var_1, var_0, "gaz_dshk" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_engine", "vfx/gameplay/vehicles/gaz_tigr/gaz_explosion_primary" );
|
||||
maps\_anim::note_track_start_sound( "start", var_2, 1 );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_01", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_01_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_04", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_04_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_05", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_05_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_07", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_07_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_08", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_08_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_11", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_11_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_16", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_16_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_18", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_18_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_19", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_19_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_20", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_20_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_22", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_22_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_24", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_24_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
}
|
||||
|
||||
death_c( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_anim::create_anim_scene( #animtree, var_1, var_0, "gaz_dshk" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_engine", "vfx/gameplay/vehicles/gaz_tigr/gaz_explosion_primary" );
|
||||
maps\_anim::note_track_start_sound( "start", var_2, 1 );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_07", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_07_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_16", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_16_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_18", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_18_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_19", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_19_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_23", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_23_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_24", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_24_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
}
|
||||
|
||||
death_b( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_anim::create_anim_scene( #animtree, var_1, var_0, "gaz_dshk" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_engine", "vfx/gameplay/vehicles/gaz_tigr/gaz_explosion_primary" );
|
||||
maps\_anim::note_track_start_sound( "start", var_2, 1 );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_wheel_02", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_02_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_07", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_07_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_08", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_08_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_16", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_16_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_18", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_18_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_19", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_19_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_22", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_22_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_24", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_24_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
}
|
||||
|
||||
death_a( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_anim::create_anim_scene( #animtree, var_1, var_0, "gaz_dshk" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_engine", "vfx/gameplay/vehicles/gaz_tigr/gaz_explosion_primary" );
|
||||
maps\_anim::note_track_start_sound( "start", var_2, 1 );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_wheel_04", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_04_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_07", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_07_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_08", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_08_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_16", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_16_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_18", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_18_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_19", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_19_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_gaz_tigr_b_iw6_piece_24", "vfx/gameplay/vehicles/gaz_tigr/gaz_piece_24_1s", "vfx/gameplay/vehicles/gaz_tigr/gaz_watersplash_small" );
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_0[0].vehicle_getoutanim = %gaz_dismount_frontl_door;
|
||||
var_0[1].vehicle_getoutanim = %gaz_dismount_frontr_door;
|
||||
var_0[2].vehicle_getoutanim = %gaz_dismount_backl_door;
|
||||
var_0[3].vehicle_getoutanim = %gaz_dismount_backr_door;
|
||||
var_0[0].vehicle_getinanim = %gaz_mount_frontl_door;
|
||||
var_0[1].vehicle_getinanim = %gaz_mount_frontr_door;
|
||||
var_0[2].vehicle_getinanim = %gaz_enter_back_door;
|
||||
var_0[3].vehicle_getinanim = %gaz_enter_back_door;
|
||||
var_0[0].vehicle_getoutsound = "gaz_door_open";
|
||||
var_0[1].vehicle_getoutsound = "gaz_door_open";
|
||||
var_0[2].vehicle_getoutsound = "gaz_door_open";
|
||||
var_0[3].vehicle_getoutsound = "gaz_door_open";
|
||||
var_0[0].vehicle_getinsound = "gaz_door_close";
|
||||
var_0[1].vehicle_getinsound = "gaz_door_close";
|
||||
var_0[2].vehicle_getinsound = "gaz_door_close";
|
||||
var_0[3].vehicle_getinsound = "gaz_door_close";
|
||||
return var_0;
|
||||
}
|
||||
|
||||
set_vehicle_anims_turret( var_0 )
|
||||
{
|
||||
var_0[3].vehicle_getoutanim = %gaz_turret_getout_gaz;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 4; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_driver";
|
||||
var_0[1].sittag = "tag_passenger";
|
||||
var_0[2].sittag = "tag_guy0";
|
||||
var_0[3].sittag = "tag_guy1";
|
||||
var_0[0].bhasgunwhileriding = 0;
|
||||
var_0[0].death = %gaz_dismount_frontl;
|
||||
var_0[0].death_no_ragdoll = 1;
|
||||
var_0[0].idle = %gaz_idle_frontl;
|
||||
var_0[1].idle = %gaz_idle_frontr;
|
||||
var_0[2].idle = %gaz_idle_backl;
|
||||
var_0[3].idle = %gaz_idle_backr;
|
||||
var_0[0].getout = %gaz_dismount_frontl;
|
||||
var_0[1].getout = %gaz_dismount_frontr;
|
||||
var_0[2].getout = %gaz_dismount_backl;
|
||||
var_0[3].getout = %gaz_dismount_backr;
|
||||
var_0[0].getin = %gaz_mount_frontl;
|
||||
var_0[1].getin = %gaz_mount_frontr;
|
||||
var_0[2].getin = %gaz_enter_backr;
|
||||
var_0[3].getin = %gaz_enter_backl;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
setanims_turret()
|
||||
{
|
||||
var_0 = setanims();
|
||||
var_0[3].mgturret = 0;
|
||||
var_0[3].passenger_2_turret_func = ::gaz_turret_guy_gettin_func;
|
||||
var_0[3].sittag = "tag_guy_turret";
|
||||
var_0[3].getout = %gaz_turret_getout_guy1;
|
||||
var_0 = set_vehicle_anims_turret( var_0 );
|
||||
return var_0;
|
||||
}
|
||||
|
||||
gaz_turret_guy_gettin_func( var_0, var_1, var_2, var_3 )
|
||||
{
|
||||
|
||||
}
|
32
vehicle_scripts/_gunboat.gsc
Normal file
32
vehicle_scripts/_gunboat.gsc
Normal file
@ -0,0 +1,32 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
fx();
|
||||
maps\_vehicle::build_template( "gunboat", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathfx( "vfx/gameplay/vehicles/gunboat/vfx_exp_gunboat", "tag_death_fx", undefined, undefined, undefined, undefined, 0, 1, undefined, 0 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_turret( "dshk_gunboat", "tag_turret", "weapon_dshk" );
|
||||
}
|
||||
|
||||
fx()
|
||||
{
|
||||
level._effect["gunboat_wake"] = loadfx( "vfx/gameplay/vehicles/gunboat/vfx_wake_gunboat" );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
thread wake_fx();
|
||||
}
|
||||
|
||||
wake_fx()
|
||||
{
|
||||
playfxontag( common_scripts\utility::getfx( "gunboat_wake" ), self, "j_bodymid" );
|
||||
self waittill( "death" );
|
||||
|
||||
if ( isdefined( self ) )
|
||||
stopfxontag( common_scripts\utility::getfx( "gunboat_wake" ), self, "j_bodymid" );
|
||||
}
|
228
vehicle_scripts/_hind.gsc
Normal file
228
vehicle_scripts/_hind.gsc
Normal file
@ -0,0 +1,228 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2, var_3 )
|
||||
{
|
||||
maps\_vehicle::build_template( "hind", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_mi24p_hind_desert" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_mi24p_hind_woodland" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_mi24p_hind_woodland_opened_door" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_battle_hind" );
|
||||
var_4 = [];
|
||||
var_4["vehicle_mi24p_hind_desert"] = "fx/explosions/helicopter_explosion_hind_desert";
|
||||
var_4["vehicle_mi24p_hind_woodland"] = "fx/explosions/helicopter_explosion_hind_woodland";
|
||||
var_4["vehicle_mi24p_hind_woodland_opened_door"] = "fx/explosions/helicopter_explosion_hind_woodland";
|
||||
var_4["vehicle_mi24p_hind_blackice"] = "fx/explosions/helicopter_explosion_hind_woodland";
|
||||
var_4["vehicle_mi24p_hind_chernobyl"] = "fx/explosions/helicopter_explosion_hind_chernobyl";
|
||||
var_4["vehicle_ny_harbor_hind"] = "fx/explosions/helicopter_explosion_hind_chernobyl";
|
||||
var_4["payback_vehicle_hind"] = "fx/explosions/helicopter_explosion_hind_chernobyl";
|
||||
var_5 = [];
|
||||
var_5["vehicle_mi24p_hind_desert"] = "fx/explosions/aerial_explosion_hind_desert";
|
||||
var_5["vehicle_mi24p_hind_woodland"] = "fx/explosions/aerial_explosion_hind_woodland";
|
||||
var_5["vehicle_mi24p_hind_woodland_opened_door"] = "fx/explosions/aerial_explosion_hind_woodland";
|
||||
var_5["vehicle_mi24p_hind_blackice"] = "fx/explosions/aerial_explosion_hind_woodland";
|
||||
var_5["vehicle_mi24p_hind_chernobyl"] = "fx/explosions/aerial_explosion_hind_chernobyl";
|
||||
var_5["vehicle_ny_harbor_hind"] = "fx/explosions/aerial_explosion_hind_chernobyl";
|
||||
var_5["payback_vehicle_hind"] = "fx/explosions/aerial_explosion_hind_chernobyl";
|
||||
|
||||
if ( isdefined( var_3 ) )
|
||||
maps\_vehicle::build_turret( "ny_harbor_hind_sideturret", "tag_doorgun", "weapon_dshk", undefined, "auto_ai", 0.5, 20, -14 );
|
||||
|
||||
maps\_vehicle::build_drive( %bh_rotors, undefined, 0 );
|
||||
var_6 = var_4[var_0];
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/grenadeexp_default", "tag_engine_left", "hind_helicopter_hit", undefined, undefined, undefined, 0.2, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/grenadeexp_default", "tail_rotor_jnt", "hind_helicopter_secondary_exp", undefined, undefined, undefined, 0.5, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "fx/fire/fire_smoke_trail_L", "tail_rotor_jnt", "hind_helicopter_dying_loop", 1, 0.05, 1, 0.5, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/aerial_explosion", "tag_engine_right", "hind_helicopter_secondary_exp", undefined, undefined, undefined, 2.5, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/aerial_explosion", "tag_deathfx", "hind_helicopter_secondary_exp", undefined, undefined, undefined, 4.0, undefined, undefined );
|
||||
maps\_vehicle::build_deathfx( var_6, undefined, "hind_helicopter_crash", undefined, undefined, undefined, -1, undefined, "stop_crash_loop_sound" );
|
||||
maps\_vehicle::build_rocket_deathfx( var_5[var_0], "tag_deathfx", "hind_helicopter_crash", undefined, undefined, undefined, undefined, 1, undefined, 0 );
|
||||
maps\_vehicle::build_treadfx( var_2, "default", "fx/treadfx/heli_dust_default", 0 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_attach_models( ::set_attached_models );
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
var_7 = randomfloatrange( 0, 1 );
|
||||
maps\_vehicle::build_light( var_2, "cockpit_blue_cargo01", "tag_light_cargo01", "fx/misc/aircraft_light_cockpit_red", "interior", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "cockpit_blue_cockpit01", "tag_light_cockpit01", "fx/misc/aircraft_light_cockpit_blue", "interior", 0.1 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink", "tag_light_belly", "fx/misc/aircraft_light_white_blink", "running", var_7 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink_tail", "tag_light_tail", "fx/misc/aircraft_light_red_blink", "running", var_7 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_green", "tag_light_L_wing", "fx/misc/aircraft_light_wingtip_green", "running", var_7 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_red", "tag_light_R_wing", "fx/misc/aircraft_light_wingtip_red", "running", var_7 );
|
||||
maps\_vehicle::build_light( var_2, "spot", "tag_passenger", "fx/misc/aircraft_light_hindspot", "spot", 0.0 );
|
||||
maps\_vehicle::build_bulletshield( 1 );
|
||||
maps\_vehicle::build_is_helicopter();
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
self.fastropeoffset = 906;
|
||||
self.script_badplace = 0;
|
||||
maps\_vehicle::vehicle_lights_on( "running" );
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
|
||||
var_0[var_1].vehicle_getoutanim = %bh_idle;
|
||||
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("fastrope");
|
||||
|
||||
setplayer_anims( var_0 )
|
||||
{
|
||||
var_0[3].player_idle = %bh_player_idle;
|
||||
var_0[3].player_getout_sound = "fastrope_start_plr";
|
||||
var_0[3].player_getout_sound_loop = "fastrope_loop_plr";
|
||||
var_0[3].player_getout_sound_end = "fastrope_end_plr";
|
||||
var_0[3].player_getout = %bh_player_drop;
|
||||
var_0[3].player_animtree = #animtree;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 9; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].idle[0] = %helicopter_pilot1_idle;
|
||||
var_0[0].idle[1] = %helicopter_pilot1_twitch_clickpannel;
|
||||
var_0[0].idle[2] = %helicopter_pilot1_twitch_lookback;
|
||||
var_0[0].idle[3] = %helicopter_pilot1_twitch_lookoutside;
|
||||
var_0[0].idleoccurrence[0] = 500;
|
||||
var_0[0].idleoccurrence[1] = 100;
|
||||
var_0[0].idleoccurrence[2] = 100;
|
||||
var_0[0].idleoccurrence[3] = 100;
|
||||
var_0[1].idle[0] = %helicopter_pilot2_idle;
|
||||
var_0[1].idle[1] = %helicopter_pilot2_twitch_clickpannel;
|
||||
var_0[1].idle[2] = %helicopter_pilot2_twitch_lookoutside;
|
||||
var_0[1].idle[3] = %helicopter_pilot2_twitch_radio;
|
||||
var_0[1].idleoccurrence[0] = 450;
|
||||
var_0[1].idleoccurrence[1] = 100;
|
||||
var_0[1].idleoccurrence[2] = 100;
|
||||
var_0[1].idleoccurrence[3] = 100;
|
||||
var_0[0].bhasgunwhileriding = 0;
|
||||
var_0[1].bhasgunwhileriding = 0;
|
||||
var_0[2].idle = %bh_1_idle;
|
||||
var_0[3].idle = %bh_2_idle;
|
||||
var_0[4].idle = %bh_4_idle;
|
||||
var_0[5].idle = %bh_5_idle;
|
||||
var_0[6].idle = %bh_8_idle;
|
||||
var_0[7].idle = %bh_6_idle;
|
||||
var_0[8].idle = %bh_7_idle;
|
||||
var_0[0].sittag = "tag_driver";
|
||||
var_0[1].sittag = "tag_passenger";
|
||||
var_0[2].sittag = "tag_detach";
|
||||
var_0[3].sittag = "tag_detach";
|
||||
var_0[4].sittag = "tag_detach";
|
||||
var_0[5].sittag = "tag_detach";
|
||||
var_0[6].sittag = "tag_detach";
|
||||
var_0[7].sittag = "tag_detach";
|
||||
var_0[8].sittag = "tag_detach";
|
||||
var_0[2].getout = %bh_1_drop;
|
||||
var_0[3].getout = %bh_2_drop;
|
||||
var_0[4].getout = %bh_4_drop;
|
||||
var_0[5].getout = %bh_5_drop;
|
||||
var_0[6].getout = %bh_8_drop;
|
||||
var_0[7].getout = %bh_6_drop;
|
||||
var_0[8].getout = %bh_7_drop;
|
||||
var_0[2].getoutstance = "crouch";
|
||||
var_0[3].getoutstance = "crouch";
|
||||
var_0[4].getoutstance = "crouch";
|
||||
var_0[5].getoutstance = "crouch";
|
||||
var_0[6].getoutstance = "crouch";
|
||||
var_0[7].getoutstance = "crouch";
|
||||
var_0[8].getoutstance = "crouch";
|
||||
var_0[2].ragdoll_getout_death = 1;
|
||||
var_0[3].ragdoll_getout_death = 1;
|
||||
var_0[4].ragdoll_getout_death = 1;
|
||||
var_0[5].ragdoll_getout_death = 1;
|
||||
var_0[6].ragdoll_getout_death = 1;
|
||||
var_0[7].ragdoll_getout_death = 1;
|
||||
var_0[8].ragdoll_getout_death = 1;
|
||||
var_0[2].ragdoll_fall_anim = %fastrope_fall;
|
||||
var_0[3].ragdoll_fall_anim = %fastrope_fall;
|
||||
var_0[4].ragdoll_fall_anim = %fastrope_fall;
|
||||
var_0[5].ragdoll_fall_anim = %fastrope_fall;
|
||||
var_0[6].ragdoll_fall_anim = %fastrope_fall;
|
||||
var_0[7].ragdoll_fall_anim = %fastrope_fall;
|
||||
var_0[8].ragdoll_fall_anim = %fastrope_fall;
|
||||
var_0[1].rappel_kill_achievement = 1;
|
||||
var_0[2].rappel_kill_achievement = 1;
|
||||
var_0[3].rappel_kill_achievement = 1;
|
||||
var_0[4].rappel_kill_achievement = 1;
|
||||
var_0[5].rappel_kill_achievement = 1;
|
||||
var_0[6].rappel_kill_achievement = 1;
|
||||
var_0[7].rappel_kill_achievement = 1;
|
||||
var_0[8].rappel_kill_achievement = 1;
|
||||
var_0[2].getoutloopsnd = "fastrope_loop_npc";
|
||||
var_0[3].getoutloopsnd = "fastrope_loop_npc";
|
||||
var_0[4].getoutloopsnd = "fastrope_loop_npc";
|
||||
var_0[5].getoutloopsnd = "fastrope_loop_npc";
|
||||
var_0[6].getoutloopsnd = "fastrope_loop_npc";
|
||||
var_0[7].getoutloopsnd = "fastrope_loop_npc";
|
||||
var_0[8].getoutloopsnd = "fastrope_loop_npc";
|
||||
var_0[2].fastroperig = "TAG_FastRope_RI";
|
||||
var_0[3].fastroperig = "TAG_FastRope_RI";
|
||||
var_0[4].fastroperig = "TAG_FastRope_LE";
|
||||
var_0[5].fastroperig = "TAG_FastRope_LE";
|
||||
var_0[6].fastroperig = "TAG_FastRope_RI";
|
||||
var_0[7].fastroperig = "TAG_FastRope_LE";
|
||||
var_0[8].fastroperig = "TAG_FastRope_RI";
|
||||
return setplayer_anims( var_0 );
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["left"] = [];
|
||||
var_0["right"] = [];
|
||||
var_0["both"] = [];
|
||||
var_0["left"][var_0["left"].size] = 4;
|
||||
var_0["left"][var_0["left"].size] = 5;
|
||||
var_0["left"][var_0["left"].size] = 7;
|
||||
var_0["right"][var_0["right"].size] = 2;
|
||||
var_0["right"][var_0["right"].size] = 3;
|
||||
var_0["right"][var_0["right"].size] = 6;
|
||||
var_0["right"][var_0["right"].size] = 8;
|
||||
var_0["both"][var_0["both"].size] = 2;
|
||||
var_0["both"][var_0["both"].size] = 3;
|
||||
var_0["both"][var_0["both"].size] = 4;
|
||||
var_0["both"][var_0["both"].size] = 5;
|
||||
var_0["both"][var_0["both"].size] = 6;
|
||||
var_0["both"][var_0["both"].size] = 7;
|
||||
var_0["both"][var_0["both"].size] = 8;
|
||||
var_0["default"] = var_0["both"];
|
||||
return var_0;
|
||||
}
|
||||
|
||||
set_attached_models()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["TAG_FastRope_LE"] = spawnstruct();
|
||||
var_0["TAG_FastRope_LE"].model = "rope_test";
|
||||
var_0["TAG_FastRope_LE"].tag = "TAG_FastRope_LE";
|
||||
var_0["TAG_FastRope_LE"].idleanim = %bh_rope_idle_le;
|
||||
var_0["TAG_FastRope_LE"].dropanim = %bh_rope_drop_le;
|
||||
var_0["TAG_FastRope_RI"] = spawnstruct();
|
||||
var_0["TAG_FastRope_RI"].model = "rope_test_ri";
|
||||
var_0["TAG_FastRope_RI"].tag = "TAG_FastRope_RI";
|
||||
var_0["TAG_FastRope_RI"].idleanim = %bh_rope_idle_ri;
|
||||
var_0["TAG_FastRope_RI"].dropanim = %bh_rope_drop_ri;
|
||||
var_1 = getarraykeys( var_0 );
|
||||
|
||||
for ( var_2 = 0; var_2 < var_1.size; var_2++ )
|
||||
precachemodel( var_0[var_1[var_2]].model );
|
||||
|
||||
return var_0;
|
||||
}
|
16
vehicle_scripts/_lcs.gsc
Normal file
16
vehicle_scripts/_lcs.gsc
Normal file
@ -0,0 +1,16 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "lcs", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_lcs", "vehicle_lcs_destroyed_front" );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
35
vehicle_scripts/_m880_launcher.gsc
Normal file
35
vehicle_scripts/_m880_launcher.gsc
Normal file
@ -0,0 +1,35 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "m880_launcher", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( var_0, var_0 );
|
||||
maps\_vehicle::build_drive( %m880_launcher_idle_driving_idle_forward, %m880_launcher_idle_driving_idle_forward, 10 );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/large_vehicle_explosion", undefined, "explo_metal_rand" );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
maps\_utility::ent_flag_init( "no_riders_until_unload" );
|
||||
maps\_vehicle::vehicle_lights_on( "running" );
|
||||
}
|
||||
|
||||
test_brake_lights()
|
||||
{
|
||||
self endon( "death" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
wait 5;
|
||||
maps\_vehicle::vehicle_lights_on( "brake" );
|
||||
wait 3;
|
||||
maps\_vehicle::vehicle_lights_on( "brake" );
|
||||
}
|
||||
}
|
151
vehicle_scripts/_man_7t.gsc
Normal file
151
vehicle_scripts/_man_7t.gsc
Normal file
@ -0,0 +1,151 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "man_7t", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_man_7t_iw6", "vehicle_man_7t_destroy_iw6" );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/large_vehicle_explosion", undefined, "car_explode", undefined, undefined, undefined, 0 );
|
||||
maps\_vehicle::build_deathquake( 1, 1.6, 500 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_bulletshield( 1 );
|
||||
var_3 = ::setanims;
|
||||
var_4 = ::set_vehicle_anims;
|
||||
maps\_vehicle::build_aianims( var_3, var_4 );
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
maps\_vehicle::build_light( var_2, "headlight_truck_left", "tag_headlight_left", "fx/misc/lighthaze", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "headlight_truck_right", "tag_headlight_right", "fx/misc/lighthaze", "headlights" );
|
||||
maps\_vehicle::build_drive( %bm21_driving_idle_forward, %bm21_driving_idle_backward, 10 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_0[0].vehicle_getoutanim = %bm21_driver_climbout_door;
|
||||
var_0[1].vehicle_getoutanim = %bm21_passenger_climbout_door;
|
||||
var_0[2].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[3].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[4].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[5].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[6].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[7].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[8].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[9].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[0].vehicle_getoutsoundtag = "left_door";
|
||||
var_0[1].vehicle_getoutsoundtag = "right_door";
|
||||
var_0[2].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[3].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[4].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[5].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[6].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[7].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[8].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[9].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[0].vehicle_getoutanim_clear = 1;
|
||||
var_0[1].vehicle_getoutanim_clear = 1;
|
||||
var_0[2].vehicle_getoutanim_clear = 0;
|
||||
var_0[3].vehicle_getoutanim_clear = 0;
|
||||
var_0[4].vehicle_getoutanim_clear = 0;
|
||||
var_0[5].vehicle_getoutanim_clear = 0;
|
||||
var_0[6].vehicle_getoutanim_clear = 0;
|
||||
var_0[7].vehicle_getoutanim_clear = 0;
|
||||
var_0[8].vehicle_getoutanim_clear = 0;
|
||||
var_0[9].vehicle_getoutanim_clear = 0;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 11; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_driver";
|
||||
var_0[1].sittag = "tag_passenger";
|
||||
var_0[2].sittag = "tag_detach";
|
||||
var_0[3].sittag = "tag_detach";
|
||||
var_0[4].sittag = "tag_detach";
|
||||
var_0[5].sittag = "tag_detach";
|
||||
var_0[6].sittag = "tag_detach";
|
||||
var_0[7].sittag = "tag_detach";
|
||||
var_0[8].sittag = "tag_detach";
|
||||
var_0[9].sittag = "tag_detach";
|
||||
var_0[0].idle = %bm21_driver_idle;
|
||||
var_0[1].idle = %bm21_passenger_idle;
|
||||
var_0[2].idle = %bm21_guy1_idle;
|
||||
var_0[3].idle = %bm21_guy2_idle;
|
||||
var_0[4].idle = %bm21_guy3_idle;
|
||||
var_0[5].idle = %bm21_guy4_idle;
|
||||
var_0[6].idle = %bm21_guy5_idle;
|
||||
var_0[7].idle = %bm21_guy6_idle;
|
||||
var_0[8].idle = %bm21_guy7_idle;
|
||||
var_0[9].idle = %bm21_guy8_idle;
|
||||
var_0[0].getout = %bm21_driver_climbout;
|
||||
var_0[1].getout = %bm21_passenger_climbout;
|
||||
var_0[2].getout = %bm21_guy1_climbout;
|
||||
var_0[3].getout = %bm21_guy2_climbout;
|
||||
var_0[4].getout = %bm21_guy3_climbout;
|
||||
var_0[5].getout = %bm21_guy4_climbout;
|
||||
var_0[6].getout = %bm21_guy5_climbout;
|
||||
var_0[7].getout = %bm21_guy6_climbout;
|
||||
var_0[8].getout = %bm21_guy7_climbout;
|
||||
var_0[9].getout = %bm21_guy8_climbout;
|
||||
var_0[2].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[3].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[4].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[6].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[7].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[8].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[2].explosion_death = %death_explosion_up10;
|
||||
var_0[3].explosion_death = %death_explosion_up10;
|
||||
var_0[4].explosion_death = %death_explosion_up10;
|
||||
var_0[5].explosion_death = %death_explosion_up10;
|
||||
var_0[6].explosion_death = %death_explosion_up10;
|
||||
var_0[7].explosion_death = %death_explosion_up10;
|
||||
var_0[8].explosion_death = %death_explosion_up10;
|
||||
var_0[9].explosion_death = %death_explosion_up10;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["passengers"] = [];
|
||||
var_0["all"] = [];
|
||||
var_1 = "passengers";
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0[var_1][var_0[var_1].size] = 4;
|
||||
var_0[var_1][var_0[var_1].size] = 5;
|
||||
var_0[var_1][var_0[var_1].size] = 6;
|
||||
var_0[var_1][var_0[var_1].size] = 7;
|
||||
var_0[var_1][var_0[var_1].size] = 8;
|
||||
var_0[var_1][var_0[var_1].size] = 9;
|
||||
var_0[var_1][var_0[var_1].size] = 10;
|
||||
var_1 = "all";
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0[var_1][var_0[var_1].size] = 4;
|
||||
var_0[var_1][var_0[var_1].size] = 5;
|
||||
var_0[var_1][var_0[var_1].size] = 6;
|
||||
var_0[var_1][var_0[var_1].size] = 7;
|
||||
var_0[var_1][var_0[var_1].size] = 8;
|
||||
var_0[var_1][var_0[var_1].size] = 9;
|
||||
var_0["default"] = var_0["all"];
|
||||
return var_0;
|
||||
}
|
251
vehicle_scripts/_mig29.gsc
Normal file
251
vehicle_scripts/_mig29.gsc
Normal file
@ -0,0 +1,251 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "mig29", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_mig29" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_mig29_desert" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_av8b_harrier_jet" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_mig29_low" );
|
||||
maps\_vehicle::build_treadfx();
|
||||
level._effect["engineeffect"] = loadfx( "vfx/gameplay/vehicles/f18/vfx_f18_engine" );
|
||||
level._effect["afterburner"] = loadfx( "vfx/gameplay/vehicles/f18/vfx_f18_engine_afterburner" );
|
||||
|
||||
if ( var_2 == "script_vehicle_mig29_low_cheap" )
|
||||
{
|
||||
level._effect["contrail"] = loadfx( "vfx/gameplay/smoke_trails/vfx_jet_contrail" );
|
||||
maps\_vehicle::build_deathfx( "vfx/gameplay/explosions/vehicle/vfx_lrg_air_exp", undefined, "explo_metal_rand" );
|
||||
}
|
||||
else
|
||||
{
|
||||
level._effect["contrail"] = loadfx( "fx/smoke/jet_contrail" );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/large_vehicle_explosion", undefined, "explo_metal_rand" );
|
||||
}
|
||||
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_rumble( "mig_rumble", 0.1, 0.2, 11300, 0.05, 0.05 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
|
||||
if ( var_0 != "vehicle_av8b_harrier_jet" )
|
||||
{
|
||||
var_3 = randomfloatrange( 0, 1 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_green", "tag_left_wingtip", "fx/misc/aircraft_light_wingtip_green", "running", var_3 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_red", "tag_right_wingtip", "fx/misc/aircraft_light_wingtip_red", "running", var_3 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink", "tag_light_belly", "fx/misc/aircraft_light_white_blink", "running", var_3 );
|
||||
maps\_vehicle::build_light( var_2, "landing_light01", "TAG_LIGHT_landing01", "fx/misc/light_mig29_landing", "landing", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "landing_light02", "TAG_LIGHT_landing02", "fx/misc/light_mig29_landing", "landing", 0.0 );
|
||||
}
|
||||
|
||||
maps\_vehicle::build_is_airplane();
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
thread playengineeffects();
|
||||
thread playcontrail();
|
||||
|
||||
if ( self.model != "vehicle_av8b_harrier_jet" )
|
||||
maps\_vehicle::vehicle_lights_on( "running" );
|
||||
|
||||
thread landing_gear_up();
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_1 = "rope_test";
|
||||
precachemodel( var_1 );
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
landing_gear_up()
|
||||
{
|
||||
self useanimtree( #animtree );
|
||||
self setanim( %mig_landing_gear_up );
|
||||
}
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 1; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
return var_0;
|
||||
}
|
||||
|
||||
playengineeffects()
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "stop_engineeffects" );
|
||||
maps\_utility::ent_flag_init( "engineeffects" );
|
||||
maps\_utility::ent_flag_set( "engineeffects" );
|
||||
var_0 = common_scripts\utility::getfx( "engineeffect" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
maps\_utility::ent_flag_wait( "engineeffects" );
|
||||
playfxontag( var_0, self, "tag_engine_right" );
|
||||
playfxontag( var_0, self, "tag_engine_left" );
|
||||
maps\_utility::ent_flag_waitopen( "engineeffects" );
|
||||
stopfxontag( var_0, self, "tag_engine_left" );
|
||||
stopfxontag( var_0, self, "tag_engine_right" );
|
||||
}
|
||||
}
|
||||
|
||||
playafterburner()
|
||||
{
|
||||
playfxontag( level._effect["afterburner"], self, "tag_engine_right" );
|
||||
playfxontag( level._effect["afterburner"], self, "tag_engine_left" );
|
||||
}
|
||||
|
||||
playcontrail()
|
||||
{
|
||||
playfxontag( level._effect["contrail"], self, "tag_right_wingtip" );
|
||||
playfxontag( level._effect["contrail"], self, "tag_left_wingtip" );
|
||||
}
|
||||
|
||||
playerisclose( var_0 )
|
||||
{
|
||||
var_1 = playerisinfront( var_0 );
|
||||
|
||||
if ( var_1 )
|
||||
var_2 = 1;
|
||||
else
|
||||
var_2 = -1;
|
||||
|
||||
var_3 = common_scripts\utility::flat_origin( var_0.origin );
|
||||
var_4 = var_3 + anglestoforward( common_scripts\utility::flat_angle( var_0.angles ) ) * ( var_2 * 100000 );
|
||||
var_5 = pointonsegmentnearesttopoint( var_3, var_4, level.player.origin );
|
||||
var_6 = distance( var_3, var_5 );
|
||||
|
||||
if ( var_6 < 3000 )
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
playerisinfront( var_0 )
|
||||
{
|
||||
var_1 = anglestoforward( common_scripts\utility::flat_angle( var_0.angles ) );
|
||||
var_2 = vectornormalize( common_scripts\utility::flat_origin( level.player.origin ) - var_0.origin );
|
||||
var_3 = vectordot( var_1, var_2 );
|
||||
|
||||
if ( var_3 > 0 )
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
plane_sound_node( var_0, var_1 )
|
||||
{
|
||||
plane_sound_players( "veh_mig29_dist_loop", "veh_mig29_sonic_boom" );
|
||||
}
|
||||
|
||||
plane_sound_players( var_0, var_1 )
|
||||
{
|
||||
self waittill( "trigger", var_2 );
|
||||
var_2 endon( "death" );
|
||||
thread plane_sound_node();
|
||||
var_2 thread common_scripts\utility::play_loop_sound_on_entity( var_0 );
|
||||
|
||||
while ( playerisinfront( var_2 ) )
|
||||
wait 0.05;
|
||||
|
||||
wait 0.5;
|
||||
var_2 thread common_scripts\utility::play_sound_in_space( var_1 );
|
||||
var_2 waittill( "reached_end_node" );
|
||||
var_2 stop_sound( var_0 );
|
||||
var_2 delete();
|
||||
}
|
||||
|
||||
plane_bomb_node()
|
||||
{
|
||||
level._effect["plane_bomb_explosion1"] = loadfx( "fx/explosions/airlift_explosion_large" );
|
||||
level._effect["plane_bomb_explosion2"] = loadfx( "fx/explosions/tanker_explosion" );
|
||||
self waittill( "trigger", var_0 );
|
||||
var_0 endon( "death" );
|
||||
thread plane_bomb_node();
|
||||
var_1 = getentarray( self.script_linkto, "script_linkname" );
|
||||
var_1 = common_scripts\utility::get_array_of_closest( self.origin, var_1, undefined, var_1.size );
|
||||
var_2 = 0;
|
||||
wait( randomfloatrange( 0.3, 0.8 ) );
|
||||
|
||||
for ( var_3 = 0; var_3 < var_1.size; var_3++ )
|
||||
{
|
||||
var_2++;
|
||||
|
||||
if ( var_2 == 3 )
|
||||
var_2 = 1;
|
||||
|
||||
var_1[var_3] thread maps\_utility::play_sound_on_entity( "airstrike_explosion" );
|
||||
playfx( level._effect["plane_bomb_explosion" + var_2], var_1[var_3].origin );
|
||||
wait( randomfloatrange( 0.3, 1.2 ) );
|
||||
}
|
||||
}
|
||||
|
||||
plane_bomb_cluster()
|
||||
{
|
||||
self waittill( "trigger", var_0 );
|
||||
var_0 endon( "death" );
|
||||
var_1 = var_0;
|
||||
var_1 thread plane_bomb_cluster();
|
||||
var_2 = spawn( "script_model", var_1.origin - ( 0, 0, 100 ) );
|
||||
var_2.angles = var_1.angles;
|
||||
var_2 setmodel( "projectile_cbu97_clusterbomb" );
|
||||
var_3 = anglestoforward( var_1.angles ) * 2;
|
||||
var_4 = anglestoup( var_1.angles ) * -0.2;
|
||||
var_5 = [];
|
||||
|
||||
for ( var_6 = 0; var_6 < 3; var_6++ )
|
||||
var_5[var_6] = ( var_3[var_6] + var_4[var_6] ) / 2;
|
||||
|
||||
var_5 = ( var_5[0], var_5[1], var_5[2] );
|
||||
var_5 = var_5 * 7000;
|
||||
var_2 movegravity( var_5, 2.0 );
|
||||
wait 1.2;
|
||||
var_7 = spawn( "script_model", var_2.origin );
|
||||
var_7 setmodel( "tag_origin" );
|
||||
var_7.origin = var_2.origin;
|
||||
var_7.angles = var_2.angles;
|
||||
wait 0.05;
|
||||
var_2 delete();
|
||||
var_2 = var_7;
|
||||
var_8 = var_2.origin;
|
||||
var_9 = var_2.angles;
|
||||
playfxontag( level.airstrikefx, var_2, "tag_origin" );
|
||||
wait 1.6;
|
||||
var_10 = 12;
|
||||
var_11 = 5;
|
||||
var_12 = 55;
|
||||
var_13 = ( var_12 - var_11 ) / var_10;
|
||||
|
||||
for ( var_6 = 0; var_6 < var_10; var_6++ )
|
||||
{
|
||||
var_14 = anglestoforward( var_9 + ( var_12 - var_13 * var_6, randomint( 10 ) - 5, 0 ) );
|
||||
var_15 = var_8 + var_14 * 10000;
|
||||
var_16 = bullettrace( var_8, var_15, 0, undefined );
|
||||
var_17 = var_16["position"];
|
||||
radiusdamage( var_17 + ( 0, 0, 16 ), 512, 400, 30 );
|
||||
|
||||
if ( var_6 % 3 == 0 )
|
||||
{
|
||||
thread common_scripts\utility::play_sound_in_space( "airstrike_explosion", var_17 );
|
||||
playrumbleonposition( "artillery_rumble", var_17 );
|
||||
earthquake( 0.7, 0.75, var_17, 1000 );
|
||||
}
|
||||
|
||||
wait( 0.75 / var_10 );
|
||||
}
|
||||
|
||||
wait 1.0;
|
||||
var_2 delete();
|
||||
}
|
||||
|
||||
stop_sound( var_0 )
|
||||
{
|
||||
self notify( "stop sound" + var_0 );
|
||||
}
|
19
vehicle_scripts/_missile_boat.gsc
Normal file
19
vehicle_scripts/_missile_boat.gsc
Normal file
@ -0,0 +1,19 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "missile_boat", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_boat_underneath_2" );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_drive( %ship_graveyard_boat_propellers, undefined, 2 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
174
vehicle_scripts/_osprey.gsc
Normal file
174
vehicle_scripts/_osprey.gsc
Normal file
@ -0,0 +1,174 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "osprey", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_v22_osprey" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_v22_osprey_fly" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_v22_osprey_heli" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_v22_osprey_tailgunner" );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/large_vehicle_explosion", undefined, "explo_metal_rand" );
|
||||
maps\_vehicle::build_rocket_deathfx( "fx/explosions/aerial_explosion_apache_mp", "tag_deathfx", "apache_helicopter_crash", undefined, undefined, undefined, undefined, 1, undefined, 0, 5 );
|
||||
|
||||
if ( var_2 == "script_vehicle_osprey_tailgunner" )
|
||||
maps\_vehicle::build_turret( "osprey_tailgunner_turret", "tag_player_turret", "weapon_chinese_brave_warrior_turret", undefined, "manual", undefined, 0, 0, ( 128, 0, 16 ) );
|
||||
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_drive( %v22_osprey_props, undefined, 0 );
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
var_3 = randomfloatrange( 0, 1 );
|
||||
maps\_vehicle::build_light( var_2, "cockpit_red_cargo02", "tag_light_cargo02", "fx/misc/aircraft_light_cockpit_red", "interior", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "cockpit_blue_cockpit01", "tag_light_cockpit01", "fx/misc/aircraft_light_cockpit_blue", "interior", 0.1 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink", "tag_light_belly", "fx/misc/aircraft_light_red_blink", "running", var_3 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink_tail", "tag_light_tail", "fx/misc/aircraft_light_red_blink", "running", var_3 );
|
||||
thread handle_landing();
|
||||
|
||||
if ( var_2 == "script_vehicle_osprey_heli" )
|
||||
maps\_vehicle::build_is_helicopter();
|
||||
else
|
||||
maps\_vehicle::build_is_airplane();
|
||||
}
|
||||
|
||||
handle_landing()
|
||||
{
|
||||
level waittill( "load_finished" );
|
||||
var_0 = getvehiclenodearray( "osprey_landing", "script_noteworthy" );
|
||||
var_1 = getvehiclenodearray( "osprey_take_off", "script_noteworthy" );
|
||||
common_scripts\utility::array_thread( var_0, ::land_structs_think, 1 );
|
||||
common_scripts\utility::array_thread( var_1, ::land_structs_think, 0 );
|
||||
}
|
||||
|
||||
land_structs_think( var_0 )
|
||||
{
|
||||
var_1 = %v22_osprey_wings_down;
|
||||
var_2 = %v22_osprey_wings_up;
|
||||
|
||||
if ( !var_0 )
|
||||
{
|
||||
var_1 = %v22_osprey_wings_up;
|
||||
var_2 = %v22_osprey_wings_down;
|
||||
}
|
||||
|
||||
for (;;)
|
||||
{
|
||||
self waittill( "trigger", var_3 );
|
||||
var_3 endon( "death" );
|
||||
var_3 clearanim( var_1, 1 );
|
||||
wait 1;
|
||||
var_3 setanimrestart( var_2, 1, 0, 0.15 );
|
||||
|
||||
if ( !var_0 )
|
||||
{
|
||||
var_3 notify( "stop_kicking_up_dust" );
|
||||
var_3 clearanim( %v22_osprey_hatch_down, 0.2 );
|
||||
wait 0.2;
|
||||
var_3 setanimrestart( %v22_osprey_hatch_up );
|
||||
continue;
|
||||
}
|
||||
|
||||
var_3 maps\_vehicle::aircraft_wash();
|
||||
}
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
self.dontdisconnectpaths = 1;
|
||||
self.originheightoffset = distance( self gettagorigin( "tag_origin" ), self gettagorigin( "tag_ground" ) );
|
||||
self.script_badplace = 0;
|
||||
self.enablerocketdeath = 1;
|
||||
wait 0.05;
|
||||
self notify( "stop_kicking_up_dust" );
|
||||
maps\_vehicle::vehicle_lights_on( "running" );
|
||||
|
||||
if ( self.classname == "script_vehicle_osprey_heli" )
|
||||
thread wings_up();
|
||||
}
|
||||
|
||||
wings_up()
|
||||
{
|
||||
self useanimtree( #animtree );
|
||||
self setanim( %v22_osprey_wings_up );
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_0[1].vehicle_getoutanim = %v22_osprey_hatch_down;
|
||||
var_0[1].vehicle_getoutanim_clear = 0;
|
||||
var_0[1].vehicle_getinanim = %v22_osprey_hatch_up;
|
||||
var_0[1].vehicle_getinanim_clear = 0;
|
||||
var_0[1].vehicle_getoutsound = "osprey_door_open";
|
||||
var_0[1].vehicle_getinsound = "osprey_door_close";
|
||||
var_0[1].delay = getanimlength( %v22_osprey_hatch_down ) - 1.7;
|
||||
var_0[2].delay = getanimlength( %v22_osprey_hatch_down ) - 1.7;
|
||||
var_0[3].delay = getanimlength( %v22_osprey_hatch_down ) - 1.7;
|
||||
var_0[4].delay = getanimlength( %v22_osprey_hatch_down ) - 1.7;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 6; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].idle[0] = %seaknight_pilot_idle;
|
||||
var_0[0].idle[1] = %seaknight_pilot_switches;
|
||||
var_0[0].idle[2] = %seaknight_pilot_twitch;
|
||||
var_0[0].idleoccurrence[0] = 1000;
|
||||
var_0[0].idleoccurrence[1] = 400;
|
||||
var_0[0].idleoccurrence[2] = 200;
|
||||
var_0[0].bhasgunwhileriding = 0;
|
||||
var_0[5].bhasgunwhileriding = 0;
|
||||
var_0[1].idle = %ch46_unload_1_idle;
|
||||
var_0[2].idle = %ch46_unload_2_idle;
|
||||
var_0[3].idle = %ch46_unload_3_idle;
|
||||
var_0[4].idle = %ch46_unload_4_idle;
|
||||
var_0[5].idle[0] = %seaknight_copilot_idle;
|
||||
var_0[5].idle[1] = %seaknight_copilot_switches;
|
||||
var_0[5].idle[2] = %seaknight_copilot_twitch;
|
||||
var_0[5].idleoccurrence[0] = 1000;
|
||||
var_0[5].idleoccurrence[1] = 400;
|
||||
var_0[5].idleoccurrence[2] = 200;
|
||||
var_0[0].sittag = "tag_detach_pilots";
|
||||
var_0[1].sittag = "tag_detach";
|
||||
var_0[2].sittag = "tag_detach";
|
||||
var_0[3].sittag = "tag_detach";
|
||||
var_0[4].sittag = "tag_detach";
|
||||
var_0[5].sittag = "tag_detach_pilots";
|
||||
var_0[1].getout = %ch46_unload_1;
|
||||
var_0[2].getout = %ch46_unload_2;
|
||||
var_0[3].getout = %ch46_unload_3;
|
||||
var_0[4].getout = %ch46_unload_4;
|
||||
var_0[1].getin = %ch46_load_1;
|
||||
var_0[2].getin = %ch46_load_2;
|
||||
var_0[3].getin = %ch46_load_3;
|
||||
var_0[4].getin = %ch46_load_4;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["passengers"] = [];
|
||||
var_0["passengers"][var_0["passengers"].size] = 1;
|
||||
var_0["passengers"][var_0["passengers"].size] = 2;
|
||||
var_0["passengers"][var_0["passengers"].size] = 3;
|
||||
var_0["passengers"][var_0["passengers"].size] = 4;
|
||||
var_0["default"] = var_0["passengers"];
|
||||
return var_0;
|
||||
}
|
||||
|
||||
set_attached_models()
|
||||
{
|
||||
|
||||
}
|
374
vehicle_scripts/_snowmobile.gsc
Normal file
374
vehicle_scripts/_snowmobile.gsc
Normal file
@ -0,0 +1,374 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "snowmobile", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_snowmobile", "vehicle_snowmobile_static" );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/large_vehicle_explosion", undefined, "explo_metal_rand" );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
|
||||
if ( !isdefined( anim._effect ) )
|
||||
anim._effect = [];
|
||||
|
||||
maps\_vehicle::build_light( var_2, "headlight_truck_left", "tag_headlight_left", "fx/misc/car_headlight_jeep_l_clk", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "headlight_truck_right", "tag_headlight_right", "fx/misc/car_headlight_jeep_r_clk", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "taillight_truck_right", "TAG_TAIL_LIGHT_LEFT", "fx/misc/car_taillight_jeep_r_clk", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "taillight_truck_left", "TAG_TAIL_LIGHT_LEFT", "fx/misc/car_taillight_jeep_l_clk", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_truck_right", "TAG_TAIL_LIGHT_LEFT", "fx/misc/car_brakelight_truck_R_pb", "brakelights" );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_truck_left", "TAG_TAIL_LIGHT_LEFT", "fx/misc/car_brakelight_truck_L_pb", "brakelights" );
|
||||
anim._effect["snowmobile_leftground"] = loadfx( "fx/treadfx/bigair_snow_snowmobile_emitter" );
|
||||
anim._effect["snowmobile_bumpbig"] = loadfx( "fx/treadfx/bigjump_land_snow_snowmobile" );
|
||||
anim._effect["snowmobile_bump"] = loadfx( "fx/treadfx/smalljump_land_snow_snowmobile" );
|
||||
maps\_vehicle::build_single_tread();
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
self.driver_shooting = 0;
|
||||
self.passenger_shooting = 1;
|
||||
self.steering_enable = 1;
|
||||
self.steering_maxroll = 15;
|
||||
self.steering_maxdelta = 0.15;
|
||||
self.steering = 0;
|
||||
self.update_time = -1;
|
||||
self.kill_my_fx = 0;
|
||||
|
||||
if ( !maps\_utility::is_specialop() )
|
||||
thread do_steering();
|
||||
|
||||
self.bigjump_timedelta = 500;
|
||||
self.event_time = -1;
|
||||
self.event = [];
|
||||
self.event["jump"] = [];
|
||||
self.event["jump"]["driver"] = 0;
|
||||
self.event["jump"]["passenger"] = 0;
|
||||
self.event["bump"] = [];
|
||||
self.event["bump"]["driver"] = 0;
|
||||
self.event["bump"]["passenger"] = 0;
|
||||
self.event["bump_big"] = [];
|
||||
self.event["bump_big"]["driver"] = 0;
|
||||
self.event["bump_big"]["passenger"] = 0;
|
||||
self.event["sway_left"] = [];
|
||||
self.event["sway_left"]["driver"] = 0;
|
||||
self.event["sway_left"]["passenger"] = 0;
|
||||
self.event["sway_right"] = [];
|
||||
self.event["sway_right"]["driver"] = 0;
|
||||
self.event["sway_right"]["passenger"] = 0;
|
||||
thread watchvelocity();
|
||||
thread listen_leftground();
|
||||
thread listen_landed();
|
||||
thread listen_jolt();
|
||||
thread listen_collision();
|
||||
thread setridershooting();
|
||||
|
||||
if ( issubstr( self.vehicletype, "player" ) )
|
||||
{
|
||||
var_0 = spawn( "script_model", ( 0, 0, 0 ) );
|
||||
var_0 setmodel( "viewmodel_glock" );
|
||||
var_0 linkto( self, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
||||
var_0 hideallparts();
|
||||
}
|
||||
}
|
||||
|
||||
init_rider()
|
||||
{
|
||||
self.ridingvehicle.steering = 0;
|
||||
self.onsnowmobile = 1;
|
||||
self.custom_animscript["combat"] = animscripts\snowmobile::main;
|
||||
self.custom_animscript["stop"] = animscripts\snowmobile::main;
|
||||
}
|
||||
|
||||
watchvelocity()
|
||||
{
|
||||
self endon( "death" );
|
||||
var_0 = self vehicle_getvelocity();
|
||||
|
||||
for (;;)
|
||||
{
|
||||
self.prevframevelocity = var_0;
|
||||
var_0 = self vehicle_getvelocity();
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
setridershooting()
|
||||
{
|
||||
self endon( "death" );
|
||||
waittillframeend;
|
||||
|
||||
if ( self.riders.size == 1 )
|
||||
{
|
||||
self.driver_shooting = 1;
|
||||
self.passenger_shooting = 0;
|
||||
}
|
||||
}
|
||||
|
||||
snowmobile_fx( var_0 )
|
||||
{
|
||||
if ( isdefined( anim._effect[var_0] ) )
|
||||
playfxontag( anim._effect[var_0], self, "tag_deathfx" );
|
||||
}
|
||||
|
||||
listen_leftground()
|
||||
{
|
||||
self endon( "death" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
self waittill( "veh_leftground" );
|
||||
|
||||
if ( self.kill_my_fx == 0 )
|
||||
{
|
||||
self.event_time = gettime();
|
||||
self.event["jump"]["driver"] = 1;
|
||||
self.event["jump"]["passenger"] = 1;
|
||||
snowmobile_fx( "snowmobile_leftground" );
|
||||
wait 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
listen_landed()
|
||||
{
|
||||
self endon( "death" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
self waittill( "veh_landed" );
|
||||
|
||||
if ( self.kill_my_fx == 0 )
|
||||
{
|
||||
if ( self.event_time + self.bigjump_timedelta < gettime() )
|
||||
{
|
||||
self.event["bump_big"]["driver"] = 1;
|
||||
self.event["bump_big"]["passenger"] = 1;
|
||||
snowmobile_fx( "snowmobile_bumpbig" );
|
||||
continue;
|
||||
}
|
||||
|
||||
self.event["bump"]["driver"] = 1;
|
||||
self.event["bump"]["passenger"] = 1;
|
||||
snowmobile_fx( "snowmobile_bump" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
listen_jolt()
|
||||
{
|
||||
self endon( "death" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
self waittill( "veh_jolt", var_0 );
|
||||
|
||||
if ( self.kill_my_fx == 0 )
|
||||
{
|
||||
if ( var_0[1] >= 0 )
|
||||
{
|
||||
self.event["sway_left"]["driver"] = 1;
|
||||
self.event["sway_left"]["passenger"] = 1;
|
||||
snowmobile_fx( "snowmobile_sway_left" );
|
||||
continue;
|
||||
}
|
||||
|
||||
self.event["sway_right"]["driver"] = 1;
|
||||
self.event["sway_right"]["passenger"] = 1;
|
||||
snowmobile_fx( "snowmobile_sway_right" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
listen_collision()
|
||||
{
|
||||
self endon( "death" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
self waittill( "veh_collision", var_0, var_1 );
|
||||
|
||||
foreach ( var_3 in self.riders )
|
||||
{
|
||||
if ( isalive( var_3 ) && !isdefined( var_3.magic_bullet_shield ) )
|
||||
{
|
||||
var_3.specialdeathfunc = animscripts\snowmobile::snowmobile_collide_death;
|
||||
var_3 kill();
|
||||
}
|
||||
}
|
||||
|
||||
if ( self.kill_my_fx == 0 )
|
||||
snowmobile_fx( "snowmobile_collision" );
|
||||
}
|
||||
}
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
do_steering()
|
||||
{
|
||||
self endon( "death" );
|
||||
wait 0.05;
|
||||
self setanimknoball( %snowmobile, %root, 1, 0 );
|
||||
self setanimlimited( %sm_turn, 1, 0 );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
maps\_vehicle_code::update_steering( self );
|
||||
|
||||
if ( self.steering_enable )
|
||||
{
|
||||
if ( self.steering >= 0 )
|
||||
{
|
||||
self setanimknoblimited( %snowmobile_vehicle_lean_r_delta, 1, 0, 0 );
|
||||
self setanimtime( %snowmobile_vehicle_lean_r_delta, self.steering );
|
||||
}
|
||||
else
|
||||
{
|
||||
self setanimknoblimited( %snowmobile_vehicle_lean_l_delta, 1, 0, 0 );
|
||||
self setanimtime( %snowmobile_vehicle_lean_l_delta, abs( self.steering ) );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
self clearanim( %snowmobile_vehicle_lean_r_delta, 0 );
|
||||
self clearanim( %snowmobile_vehicle_lean_l_delta, 0 );
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
init_snowmobile_mount_anims()
|
||||
{
|
||||
level.snowmobile_mount_anims = [];
|
||||
level.snowmobile_mount_anims["snowmobile_passenger"] = [];
|
||||
level.snowmobile_mount_anims["snowmobile_driver"] = [];
|
||||
|
||||
foreach ( var_2, var_1 in level.scr_anim["generic"] )
|
||||
{
|
||||
if ( issubstr( var_2, "snowmobile_passenger_mount" ) )
|
||||
{
|
||||
level.snowmobile_mount_anims["snowmobile_passenger"][var_2] = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( issubstr( var_2, "snowmobile_driver_mount" ) )
|
||||
level.snowmobile_mount_anims["snowmobile_driver"][var_2] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
level.scr_anim["generic"]["snowmobile_passenger_mount_dir1"] = %snowmobile_passenger_mount_dir3;
|
||||
level.scr_anim["generic"]["snowmobile_passenger_mount_dir3"] = %snowmobile_passenger_mount_dir1;
|
||||
level.scr_anim["generic"]["snowmobile_driver_mount_dir3"] = %snowmobile_driver_mount_dir3;
|
||||
level.scr_anim["generic"]["snowmobile_driver_mount_dir1"] = %snowmobile_driver_mount_dir1;
|
||||
level.scr_anim["generic"]["snowmobile_passenger_mount_dir1_short"] = %snowmobile_passenger_mount_dir3_short;
|
||||
level.scr_anim["generic"]["snowmobile_passenger_mount_dir3_short"] = %snowmobile_passenger_mount_dir1_short;
|
||||
level.scr_anim["generic"]["snowmobile_driver_mount_dir3_short"] = %snowmobile_driver_mount_dir3_short;
|
||||
level.scr_anim["generic"]["snowmobile_driver_mount_dir1_short"] = %snowmobile_driver_mount_dir1_short;
|
||||
level.scr_anim["snowmobile"]["driver"]["idle"] = %snowmobile_driver_aiming_idle;
|
||||
level.scr_anim["snowmobile"]["driver"]["drive"] = %snowmobile_driver_driving_idle;
|
||||
level.scr_anim["snowmobile"]["driver"]["left2right"] = %snowmobile_driver_lean_l2r;
|
||||
level.scr_anim["snowmobile"]["driver"]["right2left"] = %snowmobile_driver_lean_r2l;
|
||||
level.scr_anim["snowmobile"]["driver"]["fire"] = %snowmobile_driver_autofire;
|
||||
level.scr_anim["snowmobile"]["driver"]["single"] = %snowmobile_driver_fire;
|
||||
level.scr_anim["snowmobile"]["driver"]["drive_jump"] = %snowmobile_driver_driving_jump_01;
|
||||
level.scr_anim["snowmobile"]["driver"]["drive_bump"] = %snowmobile_driver_driving_bump_01;
|
||||
level.scr_anim["snowmobile"]["driver"]["drive_bump_big"] = %snowmobile_driver_driving_bump_02;
|
||||
level.scr_anim["snowmobile"]["driver"]["drive_sway_left"] = %snowmobile_driver_driving_swayl_01;
|
||||
level.scr_anim["snowmobile"]["driver"]["drive_sway_right"] = %snowmobile_driver_driving_swayr_01;
|
||||
level.scr_anim["snowmobile"]["driver"]["shoot_jump"] = %snowmobile_driver_aiming_jump_01;
|
||||
level.scr_anim["snowmobile"]["driver"]["shoot_bump"] = %snowmobile_driver_aiming_bump_01;
|
||||
level.scr_anim["snowmobile"]["driver"]["shoot_bump_big"] = %snowmobile_driver_aiming_bump_02;
|
||||
level.scr_anim["snowmobile"]["driver"]["shoot_sway_left"] = %snowmobile_driver_aiming_swayl_01;
|
||||
level.scr_anim["snowmobile"]["driver"]["shoot_sway_right"] = %snowmobile_driver_aiming_swayr_01;
|
||||
level.scr_anim["snowmobile"]["driver"]["add_aim_left"]["left"] = %snowmobile_driver_aim4l_add;
|
||||
level.scr_anim["snowmobile"]["driver"]["add_aim_left"]["center"] = %snowmobile_driver_aim4c_add;
|
||||
level.scr_anim["snowmobile"]["driver"]["add_aim_left"]["right"] = %snowmobile_driver_aim4r_add;
|
||||
level.scr_anim["snowmobile"]["driver"]["straight_level"]["left"] = %snowmobile_driver_aim5l;
|
||||
level.scr_anim["snowmobile"]["driver"]["straight_level"]["center"] = %snowmobile_driver_aim5c;
|
||||
level.scr_anim["snowmobile"]["driver"]["straight_level"]["right"] = %snowmobile_driver_aim5r;
|
||||
level.scr_anim["snowmobile"]["driver"]["add_aim_right"]["left"] = %snowmobile_driver_aim6l_add;
|
||||
level.scr_anim["snowmobile"]["driver"]["add_aim_right"]["center"] = %snowmobile_driver_aim6c_add;
|
||||
level.scr_anim["snowmobile"]["driver"]["add_aim_right"]["right"] = %snowmobile_driver_aim6r_add;
|
||||
level.scr_anim["snowmobile"]["passenger"]["hide"] = %snowmobile_passenger_hide;
|
||||
level.scr_anim["snowmobile"]["passenger"]["drive"] = %snowmobile_passenger_driving_idle;
|
||||
level.scr_anim["snowmobile"]["passenger"]["add_lean"]["left"] = %snowmobile_passenger_lean_l;
|
||||
level.scr_anim["snowmobile"]["passenger"]["add_lean"]["right"] = %snowmobile_passenger_lean_r;
|
||||
level.scr_anim["snowmobile"]["passenger"]["idle"] = %snowmobile_passenger_aiming_idle;
|
||||
level.scr_anim["snowmobile"]["passenger"]["fire"] = %snowmobile_passenger_autofire;
|
||||
level.scr_anim["snowmobile"]["passenger"]["single"] = %snowmobile_passenger_fire;
|
||||
level.scr_anim["snowmobile"]["passenger"]["reload"] = %snowmobile_passenger_reload;
|
||||
level.scr_anim["snowmobile"]["passenger"]["gun_down"] = %snowmobile_passenger_aim2hide;
|
||||
level.scr_anim["snowmobile"]["passenger"]["gun_up"] = %snowmobile_passenger_hide2aim;
|
||||
level.scr_anim["snowmobile"]["passenger"]["hide_jump"] = %snowmobile_passenger_driving_jump_01;
|
||||
level.scr_anim["snowmobile"]["passenger"]["hide_bump"] = %snowmobile_passenger_driving_bump_01;
|
||||
level.scr_anim["snowmobile"]["passenger"]["hide_bump_big"] = %snowmobile_passenger_driving_bump_02;
|
||||
level.scr_anim["snowmobile"]["passenger"]["hide_sway_left"] = %snowmobile_passenger_driving_swayl_01;
|
||||
level.scr_anim["snowmobile"]["passenger"]["hide_sway_right"] = %snowmobile_passenger_driving_swayr_01;
|
||||
level.scr_anim["snowmobile"]["passenger"]["drive_jump"] = %snowmobile_passenger_aiming_jump_01;
|
||||
level.scr_anim["snowmobile"]["passenger"]["drive_bump"] = %snowmobile_passenger_aiming_bump_01;
|
||||
level.scr_anim["snowmobile"]["passenger"]["drive_bump_big"] = %snowmobile_passenger_aiming_bump_02;
|
||||
level.scr_anim["snowmobile"]["passenger"]["drive_sway_left"] = %snowmobile_passenger_aiming_swayl_01;
|
||||
level.scr_anim["snowmobile"]["passenger"]["drive_sway_right"] = %snowmobile_passenger_aiming_swayr_01;
|
||||
level.scr_anim["snowmobile"]["passenger"]["aim_left"]["left"] = %snowmobile_passenger_aim4l;
|
||||
level.scr_anim["snowmobile"]["passenger"]["aim_left"]["center"] = %snowmobile_passenger_aim4c;
|
||||
level.scr_anim["snowmobile"]["passenger"]["aim_left"]["right"] = %snowmobile_passenger_aim4r;
|
||||
level.scr_anim["snowmobile"]["passenger"]["aim_right"]["left"] = %snowmobile_passenger_aim6l;
|
||||
level.scr_anim["snowmobile"]["passenger"]["aim_right"]["center"] = %snowmobile_passenger_aim6c;
|
||||
level.scr_anim["snowmobile"]["passenger"]["aim_right"]["right"] = %snowmobile_passenger_aim6r;
|
||||
level.scr_anim["snowmobile"]["passenger"]["add_aim_backleft"]["left"] = %snowmobile_passenger_aim1l_add;
|
||||
level.scr_anim["snowmobile"]["passenger"]["add_aim_backleft"]["center"] = %snowmobile_passenger_aim1c_add;
|
||||
level.scr_anim["snowmobile"]["passenger"]["add_aim_backleft"]["right"] = %snowmobile_passenger_aim1r_add;
|
||||
level.scr_anim["snowmobile"]["passenger"]["add_aim_backright"]["left"] = %snowmobile_passenger_aim3l_add;
|
||||
level.scr_anim["snowmobile"]["passenger"]["add_aim_backright"]["center"] = %snowmobile_passenger_aim3c_add;
|
||||
level.scr_anim["snowmobile"]["passenger"]["add_aim_backright"]["right"] = %snowmobile_passenger_aim3r_add;
|
||||
level.scr_anim["snowmobile"]["passenger"]["straight_level"]["left"] = %snowmobile_passenger_aim5l;
|
||||
level.scr_anim["snowmobile"]["passenger"]["straight_level"]["center"] = %snowmobile_passenger_aim5c;
|
||||
level.scr_anim["snowmobile"]["passenger"]["straight_level"]["right"] = %snowmobile_passenger_aim5r;
|
||||
level.scr_anim["snowmobile"]["big"]["death"]["back"] = %snowmobile_driver_death_b_01;
|
||||
level.scr_anim["snowmobile"]["big"]["death"]["left"] = %snowmobile_driver_death_l_01;
|
||||
level.scr_anim["snowmobile"]["big"]["death"]["front"] = %snowmobile_driver_death_f_01;
|
||||
level.scr_anim["snowmobile"]["big"]["death"]["right"] = %snowmobile_driver_death_r_01;
|
||||
level.scr_anim["snowmobile"]["small"]["death"]["back"] = %snowmobile_driver_death_b_03;
|
||||
level.scr_anim["snowmobile"]["small"]["death"]["left"] = %snowmobile_driver_death_l_03;
|
||||
level.scr_anim["snowmobile"]["small"]["death"]["right"] = %snowmobile_driver_death_r_03;
|
||||
init_snowmobile_mount_anims();
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 2; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_driver";
|
||||
var_0[0].linktoblend = 1;
|
||||
var_0[0].rider_func = ::init_rider;
|
||||
var_0[1].sittag = "tag_passenger";
|
||||
var_0[1].linktoblend = 1;
|
||||
var_0[1].rider_func = ::init_rider;
|
||||
var_0[0].getout = %snowmobile_driver_dismount;
|
||||
var_0[1].getout = %snowmobile_passenger_dismount;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["all"] = [];
|
||||
var_1 = "all";
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0["default"] = var_0["all"];
|
||||
return var_0;
|
||||
}
|
7
vehicle_scripts/_snowmobile_friendly.gsc
Normal file
7
vehicle_scripts/_snowmobile_friendly.gsc
Normal file
@ -0,0 +1,7 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
vehicle_scripts\_snowmobile::main( var_0, "snowmobile_friendly", var_2 );
|
||||
}
|
176
vehicle_scripts/_soc_r.gsc
Normal file
176
vehicle_scripts/_soc_r.gsc
Normal file
@ -0,0 +1,176 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
precachemodel( "vehicle_seal_boat_turret" );
|
||||
precacheturret( "minigun_hummer" );
|
||||
maps\_vehicle::build_template( "soc_r", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_zodiac" );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
build_turrets();
|
||||
}
|
||||
|
||||
build_turrets()
|
||||
{
|
||||
if ( !isdefined( self.script_parameters ) )
|
||||
return;
|
||||
|
||||
var_0 = strtok( self.script_parameters, " " );
|
||||
var_1 = undefined;
|
||||
var_2 = 1;
|
||||
|
||||
foreach ( var_5, var_4 in var_0 )
|
||||
{
|
||||
switch ( var_4 )
|
||||
{
|
||||
case "back":
|
||||
var_1 = "TAG_TURRET_BACK";
|
||||
break;
|
||||
case "front_left":
|
||||
var_1 = "TAG_TURRET_FRONT_LEFT";
|
||||
break;
|
||||
case "front_right":
|
||||
var_1 = "TAG_TURRET_FRONT_RIGHT";
|
||||
break;
|
||||
case "middle_left":
|
||||
var_1 = "TAG_TURRET_MIDDLE_LEFT";
|
||||
break;
|
||||
case "middle_right":
|
||||
var_1 = "TAG_TURRET_MIDDLE_RIGHT";
|
||||
break;
|
||||
}
|
||||
|
||||
boat_mginit( "minigun_hummer", var_1, "vehicle_seal_boat_turret" );
|
||||
}
|
||||
|
||||
self.mgturret = maps\_utility::array_index_by_script_index( self.mgturret );
|
||||
}
|
||||
|
||||
boat_mginit( var_0, var_1, var_2 )
|
||||
{
|
||||
var_3 = self.classname;
|
||||
var_4 = 0;
|
||||
|
||||
if ( isdefined( self.script_mg_angle ) )
|
||||
var_4 = self.script_mg_angle;
|
||||
|
||||
if ( !isdefined( self.mgturret ) )
|
||||
self.mgturret = [];
|
||||
|
||||
var_5 = spawnturret( "misc_turret", ( 0, 0, 0 ), var_0 );
|
||||
var_5 linkto( self, var_1, ( 0, 0, 0 ), ( 0, -1 * var_4, 0 ) );
|
||||
var_5 setmodel( var_2 );
|
||||
var_5.angles = self.angles;
|
||||
var_5.isvehicleattached = 1;
|
||||
var_5.ownervehicle = self;
|
||||
var_5.script_team = self.script_team;
|
||||
var_5 thread maps\_mgturret::burst_fire_unmanned();
|
||||
var_5 makeunusable();
|
||||
maps\_vehicle_code::set_turret_team( var_5 );
|
||||
|
||||
if ( isdefined( self.script_fireondrones ) )
|
||||
var_5.script_fireondrones = self.script_fireondrones;
|
||||
|
||||
self.mgturret = common_scripts\utility::array_add( self.mgturret, var_5 );
|
||||
var_5.script_index = get_position_from_tag( var_1 );
|
||||
|
||||
if ( !isdefined( self.script_turretmg ) )
|
||||
self.script_turretmg = 1;
|
||||
|
||||
if ( self.script_turretmg == 0 )
|
||||
thread maps\_vehicle_code::_mgoff();
|
||||
else
|
||||
{
|
||||
self.script_turretmg = 1;
|
||||
thread maps\_vehicle_code::_mgon();
|
||||
}
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 6; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "TAG_DRIVER";
|
||||
var_0[1].sittag = "TAG_GUY_FRONT_LEFT";
|
||||
var_0[2].sittag = "TAG_GUY_FRONT_RIGHT";
|
||||
var_0[3].sittag = "TAG_GUY_MIDDLE_LEFT";
|
||||
var_0[4].sittag = "TAG_GUY_MIDDLE_RIGHT";
|
||||
var_0[5].sittag = "TAG_GUY_BACK";
|
||||
var_0[0].bhasgunwhileriding = 0;
|
||||
var_0[1].mgturret = 1;
|
||||
var_0[2].mgturret = 2;
|
||||
var_0[3].mgturret = 3;
|
||||
var_0[4].mgturret = 4;
|
||||
var_0[5].mgturret = 5;
|
||||
var_0[0].idle = %london_police_pistol_idle_up;
|
||||
var_0[1].idle = %oilrig_civ_escape_2_seal_a;
|
||||
var_0[2].idle = %oilrig_civ_escape_3_a;
|
||||
var_0[3].idle = %oilrig_civ_escape_4_a;
|
||||
var_0[4].idle = %oilrig_civ_escape_5_a;
|
||||
var_0[5].idle = %oilrig_civ_escape_6_a;
|
||||
var_0[0].getout = %pickup_driver_climb_out;
|
||||
var_0[1].getout = %pickup_driver_climb_out;
|
||||
var_0[2].getout = %pickup_passenger_climb_out;
|
||||
var_0[3].getout = %pickup_passenger_climb_out;
|
||||
var_0[4].getout = %pickup_passenger_climb_out;
|
||||
var_0[5].getout = %pickup_passenger_climb_out;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
get_position_from_tag( var_0 )
|
||||
{
|
||||
switch ( var_0 )
|
||||
{
|
||||
case "TAG_TURRET_FRONT_LEFT":
|
||||
return 1;
|
||||
case "TAG_TURRET_FRONT_RIGHT":
|
||||
return 2;
|
||||
case "TAG_TURRET_MIDDLE_LEFT":
|
||||
return 3;
|
||||
case "TAG_TURRET_MIDDLE_RIGHT":
|
||||
return 4;
|
||||
case "TAG_TURRET_BACK":
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["passengers"] = [];
|
||||
var_0["all"] = [];
|
||||
var_1 = "passengers";
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0[var_1][var_0[var_1].size] = 4;
|
||||
var_0[var_1][var_0[var_1].size] = 5;
|
||||
var_1 = "all";
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0[var_1][var_0[var_1].size] = 4;
|
||||
var_0[var_1][var_0[var_1].size] = 5;
|
||||
var_0["default"] = var_0["all"];
|
||||
return var_0;
|
||||
}
|
185
vehicle_scripts/_submarine_sdv.gsc
Normal file
185
vehicle_scripts/_submarine_sdv.gsc
Normal file
@ -0,0 +1,185 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2, var_3 )
|
||||
{
|
||||
if ( var_0 == "vehicle_submarine_sdv" || var_0 == "vehicle_mini_sub_iw6" )
|
||||
maps\_vehicle::build_template( "submarine_sdv", var_0, var_1, var_2 );
|
||||
else
|
||||
maps\_vehicle::build_template( "blackshadow_730", var_0, var_1, var_2 );
|
||||
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( var_0 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
|
||||
if ( var_0 == "vehicle_mini_sub_iw6" )
|
||||
{
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
}
|
||||
|
||||
if ( !isdefined( var_3 ) || !var_3 )
|
||||
{
|
||||
if ( var_0 == "vehicle_mini_sub_iw6" )
|
||||
maps\_vehicle::build_rumble( "subtle_tank_rumble", 0.05, 1.5, 900, 1, 1 );
|
||||
}
|
||||
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
level._effect["sdv_prop_wash_1"] = loadfx( "fx/water/sdv_prop_wash_2" );
|
||||
level._effect["mini_sub_prop_wash"] = loadfx( "vfx/moments/ship_graveyard/mini_sub_propeller_bubbles" );
|
||||
level._effect["sdv_headlights"] = loadfx( "fx/misc/spotlight_submarine_sdv" );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
maps\_utility::ent_flag_init( "moving" );
|
||||
maps\_utility::ent_flag_init( "lights" );
|
||||
self.light_tag = common_scripts\utility::spawn_tag_origin();
|
||||
self.light_tag linkto( self, "TAG_BIG_LIGHT1", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
||||
|
||||
if ( self.model == "vehicle_mini_sub_iw6" )
|
||||
self.moving_unload = 1;
|
||||
|
||||
thread cleanup_sdv();
|
||||
thread handle_move();
|
||||
thread handle_lights();
|
||||
}
|
||||
|
||||
handle_move()
|
||||
{
|
||||
self endon( "sdv_done" );
|
||||
self endon( "death" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
maps\_utility::ent_flag_wait( "moving" );
|
||||
thread maps\_utility::play_sound_on_tag( "sdv_start", "TAG_PROPELLER" );
|
||||
maps\_utility::delaythread( 1, maps\_utility::play_loop_sound_on_tag, "sdv_move_loop", "TAG_PROPELLER", 1 );
|
||||
|
||||
if ( self.model == "vehicle_mini_sub_iw6" )
|
||||
thread mini_sub_prop_wash();
|
||||
else
|
||||
playfxontag( common_scripts\utility::getfx( "sdv_prop_wash_1" ), self, "TAG_PROPELLER" );
|
||||
|
||||
maps\_utility::ent_flag_waitopen( "moving" );
|
||||
|
||||
if ( self.model == "vehicle_mini_sub_iw6" )
|
||||
thread mini_sub_prop_wash_stop();
|
||||
else
|
||||
stopfxontag( common_scripts\utility::getfx( "sdv_prop_wash_1" ), self, "TAG_PROPELLER" );
|
||||
|
||||
self notify( "stop soundsdv_move_loop" );
|
||||
thread maps\_utility::play_sound_on_tag( "sdv_stop", "TAG_PROPELLER" );
|
||||
}
|
||||
}
|
||||
|
||||
mini_sub_prop_wash()
|
||||
{
|
||||
playfxontag( common_scripts\utility::getfx( "mini_sub_prop_wash" ), self, "j_propellerbottom" );
|
||||
common_scripts\utility::waitframe();
|
||||
playfxontag( common_scripts\utility::getfx( "mini_sub_prop_wash" ), self, "j_propeller1_le" );
|
||||
playfxontag( common_scripts\utility::getfx( "mini_sub_prop_wash" ), self, "j_propeller1_ri" );
|
||||
common_scripts\utility::waitframe();
|
||||
}
|
||||
|
||||
mini_sub_prop_wash_stop()
|
||||
{
|
||||
stopfxontag( common_scripts\utility::getfx( "mini_sub_prop_wash" ), self, "j_propellerbottom" );
|
||||
common_scripts\utility::waitframe();
|
||||
stopfxontag( common_scripts\utility::getfx( "mini_sub_prop_wash" ), self, "j_propeller1_le" );
|
||||
stopfxontag( common_scripts\utility::getfx( "mini_sub_prop_wash" ), self, "j_propeller1_ri" );
|
||||
common_scripts\utility::waitframe();
|
||||
}
|
||||
|
||||
cleanup_sdv()
|
||||
{
|
||||
common_scripts\utility::waittill_either( "sdv_done", "death" );
|
||||
stopfxontag( common_scripts\utility::getfx( "sdv_headlights" ), self.light_tag, "TAG_ORIGIN" );
|
||||
|
||||
if ( isdefined( self ) && maps\_utility::ent_flag( "moving" ) )
|
||||
{
|
||||
stopfxontag( common_scripts\utility::getfx( "sdv_prop_wash_1" ), self, "TAG_PROPELLER" );
|
||||
self notify( "stop soundsdv_move_loop" );
|
||||
}
|
||||
|
||||
var_0 = self.light_tag;
|
||||
wait 0.2;
|
||||
var_0 delete();
|
||||
}
|
||||
|
||||
handle_lights()
|
||||
{
|
||||
self endon( "sdv_done" );
|
||||
self endon( "death" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
maps\_utility::ent_flag_wait( "lights" );
|
||||
playfxontag( common_scripts\utility::getfx( "sdv_headlights" ), self.light_tag, "TAG_ORIGIN" );
|
||||
maps\_utility::ent_flag_waitopen( "lights" );
|
||||
stopfxontag( common_scripts\utility::getfx( "sdv_headlights" ), self.light_tag, "TAG_ORIGIN" );
|
||||
}
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 6; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].idle = %minisub_enemy_idle_r_01;
|
||||
var_0[1].idle = %minisub_enemy_idle_r_02;
|
||||
var_0[2].idle = %minisub_enemy_idle_r_03;
|
||||
var_0[3].idle = %minisub_enemy_idle_l_01;
|
||||
var_0[4].idle = %minisub_enemy_idle_l_02;
|
||||
var_0[5].idle = %minisub_enemy_idle_l_03;
|
||||
var_0[0].sittag = "tag_guy1";
|
||||
var_0[1].sittag = "tag_guy2";
|
||||
var_0[2].sittag = "tag_guy3";
|
||||
var_0[3].sittag = "tag_guy6";
|
||||
var_0[4].sittag = "tag_guy5";
|
||||
var_0[5].sittag = "tag_guy4";
|
||||
var_0[0].getout = %minisub_enemy_dismount_r_01;
|
||||
var_0[1].getout = %minisub_enemy_dismount_r_02;
|
||||
var_0[2].getout = %minisub_enemy_dismount_r_03;
|
||||
var_0[3].getout = %minisub_enemy_dismount_l_01;
|
||||
var_0[4].getout = %minisub_enemy_dismount_l_02;
|
||||
var_0[5].getout = %minisub_enemy_dismount_l_03;
|
||||
var_0[0].getoutstance = "stand";
|
||||
var_0[1].getoutstance = "stand";
|
||||
var_0[2].getoutstance = "stand";
|
||||
var_0[3].getoutstance = "stand";
|
||||
var_0[4].getoutstance = "stand";
|
||||
var_0[5].getoutstance = "stand";
|
||||
return var_0;
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
return var_0;
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0["left"] = [];
|
||||
var_0["right"] = [];
|
||||
var_0["passengers"] = [];
|
||||
var_0["default"] = [];
|
||||
var_0["right"][var_0["right"].size] = 0;
|
||||
var_0["right"][var_0["right"].size] = 1;
|
||||
var_0["right"][var_0["right"].size] = 2;
|
||||
var_0["left"][var_0["left"].size] = 3;
|
||||
var_0["left"][var_0["left"].size] = 4;
|
||||
var_0["left"][var_0["left"].size] = 5;
|
||||
var_0["passengers"][var_0["passengers"].size] = 0;
|
||||
var_0["passengers"][var_0["passengers"].size] = 1;
|
||||
var_0["passengers"][var_0["passengers"].size] = 2;
|
||||
var_0["passengers"][var_0["passengers"].size] = 3;
|
||||
var_0["passengers"][var_0["passengers"].size] = 4;
|
||||
var_0["passengers"][var_0["passengers"].size] = 5;
|
||||
var_0["default"] = var_0["passengers"];
|
||||
return var_0;
|
||||
}
|
117
vehicle_scripts/_tank_crush.gsc
Normal file
117
vehicle_scripts/_tank_crush.gsc
Normal file
@ -0,0 +1,117 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
init_tank_crush()
|
||||
{
|
||||
setdvarifuninitialized( "debug_tankcrush", "0" );
|
||||
}
|
||||
|
||||
tank_crush( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
|
||||
{
|
||||
if ( !isdefined( var_6 ) )
|
||||
var_6 = 1;
|
||||
|
||||
var_7 = self;
|
||||
self vehicle_setspeed( 7 * var_6, 5, 5 );
|
||||
var_8 = getanimlength( var_2 ) / var_6;
|
||||
var_9 = var_8 / 3;
|
||||
var_10 = var_8 / 3;
|
||||
var_11 = var_0.origin;
|
||||
var_12 = var_0.angles;
|
||||
var_13 = anglestoforward( var_12 );
|
||||
var_14 = anglestoup( var_12 );
|
||||
var_15 = anglestoright( var_12 );
|
||||
var_16 = getstartorigin( var_11, var_12, var_2 );
|
||||
var_17 = getstartangles( var_11, var_12, var_2 );
|
||||
var_18 = anglestoforward( var_17 );
|
||||
var_19 = anglestoup( var_17 );
|
||||
var_20 = anglestoright( var_17 );
|
||||
var_21 = anglestoforward( var_7.angles );
|
||||
var_22 = anglestoup( var_7.angles );
|
||||
var_23 = anglestoright( var_7.angles );
|
||||
var_24 = var_11 - var_16;
|
||||
var_25 = vectordot( var_24, var_18 );
|
||||
var_26 = vectordot( var_24, var_19 );
|
||||
var_27 = vectordot( var_24, var_20 );
|
||||
var_28 = spawn( "script_origin", var_7.origin );
|
||||
var_28.origin = var_28.origin + var_21 * var_25;
|
||||
var_28.origin = var_28.origin + var_22 * var_26;
|
||||
var_28.origin = var_28.origin + var_23 * var_27;
|
||||
var_24 = anglestoforward( var_12 );
|
||||
var_25 = vectordot( var_24, var_18 );
|
||||
var_26 = vectordot( var_24, var_19 );
|
||||
var_27 = vectordot( var_24, var_20 );
|
||||
var_29 = var_21 * var_25;
|
||||
var_29 = var_29 + var_22 * var_26;
|
||||
var_29 = var_29 + var_23 * var_27;
|
||||
var_28.angles = vectortoangles( var_29 );
|
||||
|
||||
if ( isdefined( var_5 ) )
|
||||
level thread common_scripts\utility::play_sound_in_space( var_5, var_11 );
|
||||
|
||||
var_0 useanimtree( var_4 );
|
||||
var_7 useanimtree( var_4 );
|
||||
var_0 thread tank_crush_fx_on_tag( "tag_window_left_glass_fx", level._vehicle_effect["tankcrush"]["window_med"], "veh_glass_break_small", 0.2 );
|
||||
var_0 thread tank_crush_fx_on_tag( "tag_window_right_glass_fx", level._vehicle_effect["tankcrush"]["window_med"], "veh_glass_break_small", 0.4 );
|
||||
var_0 thread tank_crush_fx_on_tag( "tag_windshield_back_glass_fx", level._vehicle_effect["tankcrush"]["window_large"], "veh_glass_break_large", 0.7 );
|
||||
var_0 thread tank_crush_fx_on_tag( "tag_windshield_front_glass_fx", level._vehicle_effect["tankcrush"]["window_large"], "veh_glass_break_large", 1.5 );
|
||||
var_0 animscripted( "tank_crush_anim", var_11, var_12, var_3 );
|
||||
var_7 animscripted( "tank_crush_anim", var_28.origin, var_28.angles, var_2 );
|
||||
|
||||
if ( var_6 != 1 )
|
||||
{
|
||||
var_0 setflaggedanim( "tank_crush_anim", var_3, 1, 0, var_6 );
|
||||
var_7 setflaggedanim( "tank_crush_anim", var_2, 1, 0, var_6 );
|
||||
}
|
||||
|
||||
var_28 moveto( var_11, var_9, var_9 / 2, var_9 / 2 );
|
||||
var_28 rotateto( var_12, var_9, var_9 / 2, var_9 / 2 );
|
||||
wait( var_9 );
|
||||
var_8 = var_8 - var_9;
|
||||
var_8 = var_8 - var_10;
|
||||
wait( var_8 );
|
||||
var_30 = spawn( "script_model", var_16 );
|
||||
var_30.angles = var_17;
|
||||
var_31 = var_30 localtoworldcoords( getmovedelta( var_2, 0, 1 ) );
|
||||
var_32 = var_17 + ( 0, getangledelta( var_2, 0, 1 ), 0 );
|
||||
var_30 delete();
|
||||
var_33 = anglestoforward( var_32 );
|
||||
var_34 = anglestoup( var_32 );
|
||||
var_35 = anglestoright( var_32 );
|
||||
var_36 = self getattachpos( var_1 );
|
||||
var_21 = anglestoforward( var_36[1] );
|
||||
var_22 = anglestoup( var_36[1] );
|
||||
var_23 = anglestoright( var_36[1] );
|
||||
var_24 = var_11 - var_31;
|
||||
var_25 = vectordot( var_24, var_33 );
|
||||
var_26 = vectordot( var_24, var_34 );
|
||||
var_27 = vectordot( var_24, var_35 );
|
||||
var_28.final_origin = var_36[0];
|
||||
var_28.final_origin = var_28.final_origin + var_21 * var_25;
|
||||
var_28.final_origin = var_28.final_origin + var_22 * var_26;
|
||||
var_28.final_origin = var_28.final_origin + var_23 * var_27;
|
||||
var_24 = anglestoforward( var_12 );
|
||||
var_25 = vectordot( var_24, var_33 );
|
||||
var_26 = vectordot( var_24, var_34 );
|
||||
var_27 = vectordot( var_24, var_35 );
|
||||
var_29 = var_21 * var_25;
|
||||
var_29 = var_29 + var_22 * var_26;
|
||||
var_29 = var_29 + var_23 * var_27;
|
||||
var_28.final_angles = vectortoangles( var_29 );
|
||||
var_28 moveto( var_28.final_origin, var_10, var_10 / 2, var_10 / 2 );
|
||||
var_28 rotateto( var_28.final_angles, var_10, var_10 / 2, var_10 / 2 );
|
||||
wait( var_10 );
|
||||
self attachpath( var_1 );
|
||||
common_scripts\utility::waitframe();
|
||||
}
|
||||
|
||||
tank_crush_fx_on_tag( var_0, var_1, var_2, var_3 )
|
||||
{
|
||||
if ( isdefined( var_3 ) )
|
||||
wait( var_3 );
|
||||
|
||||
playfxontag( var_1, self, var_0 );
|
||||
|
||||
if ( isdefined( var_2 ) )
|
||||
thread maps\_utility::play_sound_on_tag( var_2, var_0 );
|
||||
}
|
75
vehicle_scripts/_zodiac.gsc
Normal file
75
vehicle_scripts/_zodiac.gsc
Normal file
@ -0,0 +1,75 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "zodiac", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_zodiac" );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 6; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_body";
|
||||
var_0[1].sittag = "tag_body";
|
||||
var_0[2].sittag = "tag_body";
|
||||
var_0[3].sittag = "tag_body";
|
||||
var_0[4].sittag = "tag_body";
|
||||
var_0[5].sittag = "tag_body";
|
||||
var_0[0].idle = %oilrig_civ_escape_1_seal_a;
|
||||
var_0[1].idle = %oilrig_civ_escape_2_seal_a;
|
||||
var_0[2].idle = %oilrig_civ_escape_3_a;
|
||||
var_0[3].idle = %oilrig_civ_escape_4_a;
|
||||
var_0[4].idle = %oilrig_civ_escape_5_a;
|
||||
var_0[5].idle = %oilrig_civ_escape_6_a;
|
||||
var_0[0].getout = %pickup_driver_climb_out;
|
||||
var_0[1].getout = %pickup_driver_climb_out;
|
||||
var_0[2].getout = %pickup_passenger_climb_out;
|
||||
var_0[3].getout = %pickup_passenger_climb_out;
|
||||
var_0[4].getout = %pickup_passenger_climb_out;
|
||||
var_0[5].getout = %pickup_passenger_climb_out;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["passengers"] = [];
|
||||
var_0["all"] = [];
|
||||
var_1 = "passengers";
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0[var_1][var_0[var_1].size] = 4;
|
||||
var_0[var_1][var_0[var_1].size] = 5;
|
||||
var_1 = "all";
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0[var_1][var_0[var_1].size] = 4;
|
||||
var_0[var_1][var_0[var_1].size] = 5;
|
||||
var_0["default"] = var_0["all"];
|
||||
return var_0;
|
||||
}
|
46
vehicle_scripts/_zpu_antiair.gsc
Normal file
46
vehicle_scripts/_zpu_antiair.gsc
Normal file
@ -0,0 +1,46 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "zpu_antiair", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_zpu4", "vehicle_zpu4_burn" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_zpu4_low", "vehicle_zpu4_burn" );
|
||||
var_3 = [];
|
||||
var_3["vehicle_zpu4"] = "fx/explosions/vehicle_explosion_bmp";
|
||||
var_3["vehicle_zpu4_low"] = "fx/explosions/vehicle_explosion_bmp";
|
||||
maps\_vehicle::build_deathfx( var_3[var_0], undefined, "exp_armor_vehicle", undefined, undefined, undefined, 0 );
|
||||
maps\_vehicle::build_mainturret( "tag_flash", "tag_flash2", "tag_flash1", "tag_flash3" );
|
||||
maps\_vehicle::build_radiusdamage( ( 0, 0, 53 ), 512, 300, 20, 0 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_0[0].vehicle_turret_fire = %zpu_gun_fire_a;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 1; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_driver";
|
||||
var_0[0].idle = %zpu_gunner_fire_a;
|
||||
return var_0;
|
||||
}
|
184
vehicle_scripts/_zpu_antiair_oilrocks.gsc
Normal file
184
vehicle_scripts/_zpu_antiair_oilrocks.gsc
Normal file
@ -0,0 +1,184 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "zpu_antiair", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_localoilrocks );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_zpu4_low", "vehicle_zpu4_burn" );
|
||||
maps\_vehicle::build_deathfx( "vfx/gameplay/explosions/vfx_exp_minigun_dest", undefined, "exp_armor_vehicle", undefined, undefined, undefined, 0 );
|
||||
maps\_vehicle::build_mainturret( "tag_flash", "tag_flash2", "tag_flash1", "tag_flash3" );
|
||||
maps\_vehicle::build_radiusdamage( ( 0, 0, 53 ), 512, 300, 20, 0 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_aianims( vehicle_scripts\_zpu_antiair::setanims, vehicle_scripts\_zpu_antiair::set_vehicle_anims );
|
||||
precacheitem( "zpu_turret_oilrocks" );
|
||||
common_scripts\utility::add_fx( "oilrocks_flak", "vfx/_requests/oilrocks/zpu_tracer" );
|
||||
common_scripts\utility::create_lock( "zpu_targeting" );
|
||||
common_scripts\utility::create_lock( "zpu_can_target_while_fireing" );
|
||||
}
|
||||
|
||||
init_localoilrocks()
|
||||
{
|
||||
self.script_explosive_bullet_shield = 1;
|
||||
thread feelgoodapachegundeath();
|
||||
vehicle_scripts\_zpu_antiair::init_local();
|
||||
self setvehweapon( "zpu_turret_oilrocks" );
|
||||
thread vehicle_zpu_think();
|
||||
}
|
||||
|
||||
feelgoodapachegundeath()
|
||||
{
|
||||
self endon( "death" );
|
||||
var_0 = 0;
|
||||
|
||||
while ( var_0 < level.apache_difficulty.zpu_magic_bullets )
|
||||
{
|
||||
self waittill( "damage", var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10 );
|
||||
|
||||
if ( var_5 == "MOD_EXPLOSIVE_BULLET" )
|
||||
var_0++;
|
||||
|
||||
if ( var_2 == level.player )
|
||||
break;
|
||||
}
|
||||
|
||||
maps\_vehicle::force_kill();
|
||||
}
|
||||
|
||||
vehicle_zpu_think()
|
||||
{
|
||||
self endon( "death" );
|
||||
self.fxid = common_scripts\utility::getfx( "FX_oilrocks_turret_flash_zpu" );
|
||||
self.flakfxid = common_scripts\utility::getfx( "oilrocks_flak" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
common_scripts\utility::lock( "zpu_targeting" );
|
||||
var_0 = vehicle_zpu_get_target();
|
||||
common_scripts\utility::unlock( "zpu_targeting" );
|
||||
|
||||
if ( isdefined( var_0 ) )
|
||||
{
|
||||
thread vehicle_zpu_register_target( var_0 );
|
||||
vehicle_zpu_shoot_target( var_0 );
|
||||
self notify( "LISTEN_zpu_finished_targeting" );
|
||||
wait 0.9;
|
||||
continue;
|
||||
}
|
||||
|
||||
wait( randomfloatrange( 0.4, 0.6 ) );
|
||||
}
|
||||
}
|
||||
|
||||
vehicle_zpu_get_target()
|
||||
{
|
||||
var_0 = maps\oilrocks_apache_code::get_apache_player();
|
||||
|
||||
if ( vehicle_zpu_can_target( var_0, 3 ) )
|
||||
var_1 = var_0;
|
||||
else
|
||||
{
|
||||
var_2 = maps\oilrocks_apache_code::get_apaches_ally_and_player();
|
||||
var_2 = sortbydistance( var_2, self.origin );
|
||||
var_1 = undefined;
|
||||
|
||||
for ( var_3 = 1; var_3 <= 3; var_3++ )
|
||||
{
|
||||
foreach ( var_5 in var_2 )
|
||||
{
|
||||
if ( vehicle_zpu_can_target( var_5, var_3 ) )
|
||||
{
|
||||
var_1 = var_5;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return var_1;
|
||||
}
|
||||
|
||||
vehicle_zpu_can_target( var_0, var_1 )
|
||||
{
|
||||
if ( !isdefined( var_0 ) )
|
||||
return 0;
|
||||
|
||||
if ( isdefined( var_0.zpus_targeting ) && var_0.zpus_targeting >= var_1 )
|
||||
return 0;
|
||||
|
||||
if ( distancesquared( self.origin, var_0.origin ) > level.apache_difficulty.zpu_range_squared )
|
||||
return 0;
|
||||
|
||||
if ( !sighttracepassed( self.origin, var_0.origin, 0, self, var_0 ) )
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
vehicle_zpu_register_target( var_0 )
|
||||
{
|
||||
if ( !isdefined( var_0.zpus_targeting ) )
|
||||
var_0.zpus_targeting = 1;
|
||||
else
|
||||
var_0.zpus_targeting++;
|
||||
|
||||
common_scripts\utility::waittill_either( "death", "LISTEN_zpu_finished_targeting" );
|
||||
|
||||
if ( !isdefined( var_0 ) )
|
||||
return;
|
||||
|
||||
var_0.zpus_targeting--;
|
||||
|
||||
if ( var_0.zpus_targeting <= 0 )
|
||||
var_0.zpus_targeting = undefined;
|
||||
}
|
||||
|
||||
vehicle_zpu_shoot_target( var_0 )
|
||||
{
|
||||
var_0 endon( "death" );
|
||||
self setturrettargetent( var_0, ( 0, 0, -96 ) );
|
||||
var_0.request_move = 1;
|
||||
var_0 notify( "request_move_update" );
|
||||
var_1 = 0;
|
||||
var_2 = 0.05;
|
||||
var_3 = maps\oilrocks_apache_code::get_apache_player();
|
||||
|
||||
if ( isdefined( var_3 ) && var_3 != var_0 )
|
||||
var_1 = 1;
|
||||
|
||||
if ( var_1 )
|
||||
{
|
||||
var_4 = randomintrange( 25, 35 );
|
||||
var_2 = 0.15;
|
||||
}
|
||||
else
|
||||
var_4 = 55;
|
||||
|
||||
for ( var_5 = 0; var_5 < var_4; var_5++ )
|
||||
{
|
||||
var_0.request_move = 1;
|
||||
var_0 notify( "request_move_update" );
|
||||
|
||||
if ( var_5 % 3 == 0 )
|
||||
playfxontag( self.flakfxid, self, "tag_flash" );
|
||||
|
||||
if ( var_1 )
|
||||
playfxontag( self.fxid, self, "tag_flash" );
|
||||
|
||||
self fireweapon();
|
||||
wait( var_2 );
|
||||
|
||||
if ( var_5 % 10 == 0 )
|
||||
{
|
||||
common_scripts\utility::lock( "zpu_can_target_while_fireing" );
|
||||
var_6 = vehicle_zpu_can_target( var_0, 3 );
|
||||
common_scripts\utility::unlock( "zpu_can_target_while_fireing" );
|
||||
}
|
||||
else
|
||||
var_6 = 1;
|
||||
|
||||
if ( !var_6 )
|
||||
break;
|
||||
}
|
||||
}
|
454
vehicle_scripts/aas_72x.gsc
Normal file
454
vehicle_scripts/aas_72x.gsc
Normal file
@ -0,0 +1,454 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "aas_72x", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_aas_72x" );
|
||||
main_common( var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/helicopter_explosion_secondary_small", "tag_engine_right", "aascout72x_helicopter_secondary_exp", undefined, undefined, undefined, 0.0, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/helicopter_explosion_secondary_small", "tag_engine_left", "aascout72x_helicopter_dying_loop", 1, 1.5, 1, 0.5, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/helicopter_explosion_secondary_small", "tag_engine_right", undefined, 1, 2.25, undefined, 5.0, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/helicopter_explosion_little_bird", undefined, "aascout72x_helicopter_crash", undefined, undefined, undefined, -1, undefined, "stop_crash_loop_sound" );
|
||||
maps\_vehicle::build_deathfx( "fx/fire/fire_smoke_trail_L", "tail_rotor_jnt", undefined, 1, 0.05, undefined, 0.5, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/helicopter_explosion_secondary_small", "tail_rotor_jnt", undefined, undefined, undefined, undefined, 0.5, 1, undefined );
|
||||
maps\_vehicle::build_rocket_deathfx( "fx/explosions/helicopter_explosion_little_bird_dcburn", "tag_deathfx", "aascout72x_helicopter_crash", undefined, undefined, undefined, undefined, 1, undefined, 0 );
|
||||
maps\_vehicle::build_rider_death_func( ::handle_rider_death );
|
||||
main_common( var_0, var_1, var_2 );
|
||||
}
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main_common( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_drive( %mi28_rotors, undefined, 0, 3.0 );
|
||||
maps\_vehicle::build_deathquake( 0.8, 1.6, 2048 );
|
||||
maps\_vehicle::build_life( 3000, 2800, 3100 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_mainturret();
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_light( var_2, "red_blink1", "TAG_LIGHT_TAIL1", "fx/misc/aircraft_light_red_blink_occ", "running" );
|
||||
maps\_vehicle::build_light( var_2, "red_blink2", "TAG_LIGHT_TAIL2", "fx/misc/aircraft_light_red_blink_occ", "running" );
|
||||
maps\_vehicle::build_treadfx( var_2, "default", "vfx/gameplay/tread_fx/vfx_heli_dust_sand", 1 );
|
||||
maps\_vehicle::build_treadfx( var_2, "sand", "vfx/gameplay/tread_fx/vfx_heli_dust_sand", 1 );
|
||||
|
||||
if ( isdefined( var_1 ) && var_1 == "aas_72x_nonheli" )
|
||||
maps\_vehicle::build_is_airplane();
|
||||
else
|
||||
maps\_vehicle::build_is_helicopter();
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
self endon( "death" );
|
||||
self.dropoff_height = 270;
|
||||
self.originheightoffset = distance( self gettagorigin( "tag_origin" ), self gettagorigin( "tag_ground" ) );
|
||||
self.script_badplace = 0;
|
||||
self.dontdisconnectpaths = 1;
|
||||
self.vehicle_loaded_notify_size = 6;
|
||||
self.deathanims = get_deathanims();
|
||||
maps\_vehicle::aircraft_wash();
|
||||
thread maps\_vehicle::vehicle_lights_on( "running" );
|
||||
}
|
||||
|
||||
handle_rider_death()
|
||||
{
|
||||
if ( isdefined( self.shooters ) )
|
||||
{
|
||||
foreach ( var_1 in self.shooters )
|
||||
{
|
||||
if ( !isdefined( var_1 ) || !isalive( var_1 ) )
|
||||
continue;
|
||||
|
||||
var_1 thread shooter_death( self );
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( var_4 in self.riders )
|
||||
{
|
||||
if ( !isdefined( var_4 ) )
|
||||
continue;
|
||||
|
||||
if ( var_4.vehicle_position > 1 )
|
||||
continue;
|
||||
|
||||
var_4 notify( "newanim" );
|
||||
thread maps\_vehicle_aianim::guy_idle( var_4, var_4.vehicle_position );
|
||||
}
|
||||
|
||||
self waittill( "crash_done" );
|
||||
common_scripts\utility::array_call( self.riders, ::delete );
|
||||
}
|
||||
|
||||
shooter_death( var_0 )
|
||||
{
|
||||
var_0 endon( "crash_done" );
|
||||
self endon( "death" );
|
||||
var_1 = randomfloatrange( 2, 15 );
|
||||
wait( var_1 );
|
||||
|
||||
if ( isdefined( self ) )
|
||||
self kill();
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 6; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_pilot1";
|
||||
var_0[0].bhasgunwhileriding = 0;
|
||||
var_0[0].idle[0] = %aas_72x_pilot_idle;
|
||||
var_0[0].idleoccurrence[0] = 500;
|
||||
var_0[1].sittag = "tag_pilot2";
|
||||
var_0[1].bhasgunwhileriding = 0;
|
||||
var_0[1].idle[0] = %aas_72x_copilot_idle;
|
||||
var_0[1].idleoccurrence[0] = 450;
|
||||
var_0[2].sittag = "tag_guy1";
|
||||
var_0[2].getout = %aas_72x_jumpout_front_r;
|
||||
var_0[3].sittag = "tag_guy2";
|
||||
var_0[3].getout = %aas_72x_jumpout_rear_r;
|
||||
var_0[4].sittag = "tag_guy3";
|
||||
var_0[4].getout = %aas_72x_jumpout_front_l;
|
||||
var_0[5].sittag = "tag_guy4";
|
||||
var_0[5].getout = %aas_72x_jumpout_rear_l;
|
||||
|
||||
for ( var_1 = 2; var_1 < 6; var_1++ )
|
||||
{
|
||||
var_0[var_1].linktoblend = 1;
|
||||
var_0[var_1].rider_func = ::init_shooter;
|
||||
}
|
||||
|
||||
return var_0;
|
||||
}
|
||||
|
||||
get_deathanims()
|
||||
{
|
||||
var_0 = [ %aas_72x_seated_death_a_1, %aas_72x_seated_death_a_5, %aas_72x_seated_death_a_10, %aas_72x_seated_death_a_11, %aas_72x_seated_death_a_12 ];
|
||||
return common_scripts\utility::array_randomize( var_0 );
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["first_guy_left"] = [];
|
||||
var_0["first_guy_right"] = [];
|
||||
var_0["left"] = [];
|
||||
var_0["right"] = [];
|
||||
var_0["passengers"] = [];
|
||||
var_0["default"] = [];
|
||||
var_0["first_guy_left"][0] = 3;
|
||||
var_0["first_guy_right"][0] = 2;
|
||||
var_0["stage_guy_left"][0] = 3;
|
||||
var_0["stage_guy_right"][0] = 2;
|
||||
var_0["right"][var_0["right"].size] = 2;
|
||||
var_0["right"][var_0["right"].size] = 3;
|
||||
var_0["left"][var_0["left"].size] = 4;
|
||||
var_0["left"][var_0["left"].size] = 5;
|
||||
var_0["passengers"][var_0["passengers"].size] = 2;
|
||||
var_0["passengers"][var_0["passengers"].size] = 3;
|
||||
var_0["passengers"][var_0["passengers"].size] = 4;
|
||||
var_0["passengers"][var_0["passengers"].size] = 5;
|
||||
var_0["default"] = var_0["passengers"];
|
||||
return var_0;
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
return var_0;
|
||||
}
|
||||
|
||||
init_shooter()
|
||||
{
|
||||
if ( isdefined( self.script_drone ) )
|
||||
{
|
||||
init_drone();
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !isdefined( self.ridingvehicle.shooters ) )
|
||||
self.ridingvehicle.shooters = [];
|
||||
|
||||
self.ridingvehicle.shooters[self.ridingvehicle.shooters.size] = self;
|
||||
self.custom_animscript["combat"] = ::shooter_animscript;
|
||||
self.custom_animscript["stop"] = ::shooter_animscript;
|
||||
self.getoffvehiclefunc = ::shooter_unload;
|
||||
}
|
||||
|
||||
init_drone()
|
||||
{
|
||||
var_0 = get_idle_anim( self.vehicle_position );
|
||||
self setanimknob( var_0, 1, 0 );
|
||||
}
|
||||
|
||||
shooter_unload()
|
||||
{
|
||||
self.current_event = undefined;
|
||||
self.custom_animscript = undefined;
|
||||
self.allowpain = 1;
|
||||
self.a.pose = "stand";
|
||||
self.grenadeawareness = 0.2;
|
||||
self.deathanim = undefined;
|
||||
maps\_utility::enable_surprise();
|
||||
|
||||
if ( !isdefined( self.delay ) )
|
||||
self.delay = randomfloat( 0.75 );
|
||||
|
||||
wait( self.delay );
|
||||
self.delay = undefined;
|
||||
var_0 = get_unload_anim();
|
||||
var_1 = getanimlength( var_0 ) * 0.3;
|
||||
thread maps\_utility::notify_delay( "jumpedout", var_1 );
|
||||
common_scripts\utility::delaycall( 0.25, ::unlink );
|
||||
|
||||
if ( isdefined( self.ridingvehicle.quick_getout ) && self.ridingvehicle.quick_getout )
|
||||
{
|
||||
var_1 = get_short_getout_time();
|
||||
common_scripts\utility::delaycall( var_1, ::stopanimscripted );
|
||||
thread maps\_utility::notify_delay( "quick_getout_end", var_1 );
|
||||
}
|
||||
}
|
||||
|
||||
get_short_getout_time()
|
||||
{
|
||||
var_0 = self.vehicle_position;
|
||||
|
||||
if ( var_0 == 2 || var_0 == 3 )
|
||||
return 1.7;
|
||||
|
||||
if ( var_0 == 4 || var_0 == 5 )
|
||||
return 2.1;
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
get_unload_anim()
|
||||
{
|
||||
return level.vehicle_aianims[self.ridingvehicle.classname][self.vehicle_position].getout;
|
||||
}
|
||||
|
||||
shooter_animscript()
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "killanimscript" );
|
||||
self.current_event = "none";
|
||||
self.rightaimlimit = 77;
|
||||
self.leftaimlimit = -57;
|
||||
self.grenadeawareness = 0;
|
||||
self.a.pose = "crouch";
|
||||
maps\_utility::disable_surprise();
|
||||
self.allowpain = 0;
|
||||
init_shooter_anims();
|
||||
animscripts\track::setanimaimweight( 1, 0.2 );
|
||||
thread shooter_tracking();
|
||||
thread shooter_shooting();
|
||||
event_thread();
|
||||
}
|
||||
|
||||
get_idle_anim( var_0 )
|
||||
{
|
||||
var_1 = undefined;
|
||||
|
||||
switch ( self.vehicle_position )
|
||||
{
|
||||
case 2:
|
||||
var_1 = %aas_72x_guy1_idle;
|
||||
break;
|
||||
case 3:
|
||||
var_1 = %aas_72x_guy2_idle;
|
||||
break;
|
||||
case 4:
|
||||
var_1 = %aas_72x_guy3_idle;
|
||||
break;
|
||||
case 5:
|
||||
var_1 = %aas_72x_guy4_idle;
|
||||
break;
|
||||
}
|
||||
|
||||
return var_1;
|
||||
}
|
||||
|
||||
get_straight_level_anim( var_0 )
|
||||
{
|
||||
var_1 = undefined;
|
||||
|
||||
switch ( self.vehicle_position )
|
||||
{
|
||||
case 2:
|
||||
var_1 = %aas_72x_guy1_aim_5;
|
||||
break;
|
||||
case 3:
|
||||
var_1 = %aas_72x_guy1_aim_5_rear;
|
||||
break;
|
||||
case 4:
|
||||
var_1 = %aas_72x_guy1_aim_5;
|
||||
break;
|
||||
case 5:
|
||||
var_1 = %aas_72x_guy1_aim_5_rear;
|
||||
break;
|
||||
}
|
||||
|
||||
return var_1;
|
||||
}
|
||||
|
||||
init_shooter_anims()
|
||||
{
|
||||
self.a.array = [];
|
||||
self.a.array["idle"] = get_idle_anim( self.vehicle_position );
|
||||
self.a.array["add_aim_up"] = %aas_72x_guy1_aim_8;
|
||||
self.a.array["add_aim_down"] = %aas_72x_guy1_aim_2;
|
||||
self.a.array["add_aim_left"] = %aas_72x_guy1_aim_4;
|
||||
self.a.array["add_aim_right"] = %aas_72x_guy1_aim_6;
|
||||
self.a.array["straight_level"] = get_straight_level_anim( self.vehicle_position );
|
||||
self.a.array["burst2"] = %exposed_crouch_shoot_burst3;
|
||||
self.a.array["burst3"] = %exposed_crouch_shoot_burst3;
|
||||
self.a.array["burst4"] = %exposed_crouch_shoot_burst4;
|
||||
self.a.array["burst5"] = %exposed_crouch_shoot_burst5;
|
||||
self.a.array["burst6"] = %exposed_crouch_shoot_burst6;
|
||||
self.a.array["semi2"] = %exposed_crouch_shoot_semi2;
|
||||
self.a.array["semi3"] = %exposed_crouch_shoot_semi3;
|
||||
self.a.array["semi4"] = %exposed_crouch_shoot_semi4;
|
||||
self.a.array["semi5"] = %exposed_crouch_shoot_semi5;
|
||||
self.a.array["fire"] = %exposed_crouch_shoot_auto_v2;
|
||||
self.a.array["single"] = [ %exposed_crouch_shoot_semi1 ];
|
||||
self.a.array["reload"] = [ %exposed_crouch_reload ];
|
||||
self.deathanim = self.ridingvehicle.deathanims[self.vehicle_position - 2];
|
||||
}
|
||||
|
||||
event_thread()
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "killanimscript" );
|
||||
var_0 = self.ridingvehicle;
|
||||
|
||||
for (;;)
|
||||
var_0 waittill( "start_event", var_1 );
|
||||
}
|
||||
|
||||
shooter_shooting()
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "killanimscript" );
|
||||
var_0 = 0.05;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
wait 0.05;
|
||||
|
||||
if ( !isdefined( self.current_event ) )
|
||||
continue;
|
||||
|
||||
if ( self.current_event != "none" )
|
||||
{
|
||||
self waittill( "event_finished" );
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( animscripts\combat_utility::needtoreload( 0 ) )
|
||||
{
|
||||
animscripts\combat_utility::endfireandanimidlethread();
|
||||
var_1 = animscripts\utility::animarraypickrandom( "reload" );
|
||||
animscripts\combat::doreloadanim( var_1, 0 );
|
||||
self notify( "abort_reload" );
|
||||
thread shooter_tracking();
|
||||
continue;
|
||||
}
|
||||
|
||||
shoot_behavior();
|
||||
|
||||
if ( isplayer( self.enemy ) )
|
||||
self updateplayersightaccuracy();
|
||||
}
|
||||
}
|
||||
|
||||
shoot_behavior()
|
||||
{
|
||||
thread animscripts\shoot_behavior::decidewhatandhowtoshoot( "normal" );
|
||||
animscripts\combat_utility::shootuntilshootbehaviorchange();
|
||||
}
|
||||
|
||||
shooter_tracking()
|
||||
{
|
||||
self endon( "death" );
|
||||
self endon( "killanimscript" );
|
||||
self notify( "stop tracking" );
|
||||
self endon( "stop tracking" );
|
||||
var_0 = 0.2;
|
||||
self clearanim( %root, var_0 );
|
||||
self setanimknob( self.a.array["idle"], 1, 0 );
|
||||
self setanimknoblimited( animscripts\utility::animarray( "straight_level" ), 1, var_0 );
|
||||
self setanimknoblimited( animscripts\utility::animarray( "add_aim_up" ), 1, var_0 );
|
||||
self setanimknoblimited( animscripts\utility::animarray( "add_aim_down" ), 1, var_0 );
|
||||
self setanimknoblimited( animscripts\utility::animarray( "add_aim_left" ), 1, var_0 );
|
||||
self setanimknoblimited( animscripts\utility::animarray( "add_aim_right" ), 1, var_0 );
|
||||
var_1 = %aas72x_aim_2;
|
||||
var_2 = %aas72x_aim_4;
|
||||
var_3 = %aas72x_aim_6;
|
||||
var_4 = %aas72x_aim_8;
|
||||
animscripts\track::trackloop( var_1, var_2, var_3, var_4 );
|
||||
}
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
chopper_lean( var_0 )
|
||||
{
|
||||
self endon( "stop_player_lean" );
|
||||
var_1 = 1.0;
|
||||
var_2 = 110;
|
||||
var_3 = 110;
|
||||
var_4 = 30;
|
||||
var_5 = 60;
|
||||
self playerlinktodelta( var_0, "tag_rider", var_1, var_2, var_3, var_4, var_5 );
|
||||
var_6 = %vegas_player_littlebird_lean_out_b;
|
||||
var_7 = %vegas_player_littlebird_lean_in_b;
|
||||
var_8 = 0;
|
||||
var_9 = 0;
|
||||
var_10 = 110;
|
||||
var_11 = 0;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
wait 0.05;
|
||||
var_12 = self.angles[1] - var_0.angles[1] - 90;
|
||||
var_12 = angleclamp180( var_12 );
|
||||
var_13 = abs( var_12 / var_10 );
|
||||
var_13 = min( var_13, 1 );
|
||||
|
||||
if ( abs( var_11 - var_13 ) < 0.001 )
|
||||
{
|
||||
var_0 setanim( var_6, 1, 0.2, 0 );
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( var_13 > var_11 )
|
||||
{
|
||||
var_6 = %vegas_player_littlebird_lean_out_b;
|
||||
var_8 = var_13;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_6 = %vegas_player_littlebird_lean_in_b;
|
||||
var_8 = 1 - var_13;
|
||||
}
|
||||
|
||||
if ( var_6 != var_7 )
|
||||
var_0 clearanim( var_7, 0 );
|
||||
|
||||
var_0 setanim( var_6, 1, 0, 0.5 );
|
||||
var_0 setanimtime( var_6, var_8 );
|
||||
var_7 = var_6;
|
||||
var_11 = var_13;
|
||||
var_9 = var_8;
|
||||
}
|
||||
}
|
||||
|
||||
stop_chopper_lean()
|
||||
{
|
||||
self notify( "stop_player_lean" );
|
||||
}
|
90
vehicle_scripts/aas_72x_destroy.gsc
Normal file
90
vehicle_scripts/aas_72x_destroy.gsc
Normal file
@ -0,0 +1,90 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "aas_72x", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_aas_72x", "vehicle_aas72x_destroyed_anim" );
|
||||
vehicle_scripts\aas_72x::main_common( var_0, var_1, var_2 );
|
||||
set_death_anim_scene();
|
||||
maps\_vehicle::build_rider_death_func( ::handle_rider_death );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
vehicle_scripts\aas_72x::init_local();
|
||||
self.alwaysrocketdeath = 1;
|
||||
self.enablerocketdeath = 1;
|
||||
self.is_anim_based_death = 1;
|
||||
self.animname = "aas_72x";
|
||||
self.missile_targetoffset = ( 0, 0, -128 );
|
||||
self.has_unmatching_deathmodel_rig = 1;
|
||||
self.death_fx_on_self = 1;
|
||||
self.allowdeath = 0;
|
||||
thread specific_death_explosion();
|
||||
}
|
||||
|
||||
handle_rider_death()
|
||||
{
|
||||
foreach ( var_1 in self.riders )
|
||||
var_1 delete();
|
||||
}
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
set_death_anim_scene( var_0 )
|
||||
{
|
||||
similar_deaths( %aas_72x_explode_a, "aas_72x_explode_A" );
|
||||
similar_deaths( %aas_72x_explode_b, "aas_72x_explode_B" );
|
||||
similar_deaths( %aas_72x_explode_c, "aas_72x_explode_C" );
|
||||
maps\_vehicle::build_deathanim( [ "aas_72x_explode_B", "aas_72x_explode_C" ] );
|
||||
}
|
||||
|
||||
similar_deaths( var_0, var_1 )
|
||||
{
|
||||
common_scripts\utility::add_fx( "aas_72x_explode_B", "vfx/gameplay/vehicles/aas72x/aas72x_body_1s" );
|
||||
common_scripts\utility::add_fx( "aas_72x_explode_C", "vfx/gameplay/vehicles/aas72x/aas72x_body_exp_1s" );
|
||||
maps\_anim::create_anim_scene( #animtree, var_1, var_0, "aas_72x" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_expl_missile", "vfx/moments/las_vegas/vfx_heli_exp_vegas_missile" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_engine", "vfx/gameplay/vehicles/aas72x/aas72x_smoke_trail_r" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_wing_left", "vfx/moments/las_vegas/vfx_heli_exp_st_med" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_tailpiece1", "vfx/moments/las_vegas/vfx_heli_exp_st_med" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_tailpiece2", "vfx/moments/las_vegas/vfx_heli_exp_st_med" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_p2", "vfx/moments/las_vegas/vfx_heli_exp_st_med" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_body", "vfx/moments/las_vegas/vfx_heli_exp_st_med" );
|
||||
maps\_anim::note_track_start_sound( "start", "aas72x_helicopter_spin", 1, "tag_aas72x_rotor_main_lod0" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_bodypiece01_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_bodypiece01_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_bodypiece02_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_bodypiece02_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_bodypiece03_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_bodypiece03_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_bodypiece04_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_bodypiece04_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_bodypiece05_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_bodypiece05_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_bodypiece06_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_bodypiece06_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_bodypiece07_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_bodypiece07_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_bodypiece08_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_bodypiece08_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_bodypiece09_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_bodypiece09_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_bodypiece10_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_bodypiece10_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_bodypiece11_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_bodypiece11_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_bodypiece12_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_bodypiece12_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_body_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_body_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_rotor_main_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_rotor_main_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_tail_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_tail_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_tailpiece1_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_tailpiece1_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_tailpiece2_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_tailpiece2_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_tailpiece3_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_tailpiece3_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_tailpiece4_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_tailpiece4_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_wing_left_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_wing_left_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_wing_right_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_wing_right_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_aas72x_wing_right_pc1_lod0", "vfx/gameplay/vehicles/aas72x/aas72x_wing_right_pc1_1s" );
|
||||
}
|
||||
|
||||
specific_death_explosion()
|
||||
{
|
||||
self waittill( "kill_death_anim", var_0 );
|
||||
|
||||
if ( !isdefined( level._effect[var_0] ) )
|
||||
return;
|
||||
|
||||
var_1 = "tag_aas72x_body_lod0";
|
||||
playfxontag( common_scripts\utility::getfx( var_0 ), self, var_1 );
|
||||
}
|
21
vehicle_scripts/agv.gsc
Normal file
21
vehicle_scripts/agv.gsc
Normal file
@ -0,0 +1,21 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "agv", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( var_0, var_0 );
|
||||
maps\_vehicle::build_drive( %iveco_lynx_idle_driving_idle_forward, %iveco_lynx_idle_driving_idle_forward, 10 );
|
||||
maps\_vehicle::build_treadfx( var_2, "default", undefined, 0 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_light( var_2, "top_light", "tag_top_light", "vfx/ambient/lights/glow_blue_light_rect_150_blinker", "running", 0.1 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
maps\_vehicle::vehicle_lights_on( "running" );
|
||||
}
|
97
vehicle_scripts/apache.gsc
Normal file
97
vehicle_scripts/apache.gsc
Normal file
@ -0,0 +1,97 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "apache", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_apache_iw6", "vehicle_apache_iw6_destroyed_anim" );
|
||||
maps\_vehicle::build_drive( %bh_rotors, undefined, 0 );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/helicopter_explosion_secondary_small", "tag_engine_left", "apache_helicopter_secondary_exp", undefined, undefined, undefined, 0.0, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "fx/fire/fire_smoke_trail_L", "tag_engine_left", "apache_helicopter_dying_loop", 1, 0.05, 1, 0.5, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/helicopter_explosion_secondary_small", "tag_engine_left", "apache_helicopter_secondary_exp", undefined, undefined, undefined, 2.5, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/helicopter_explosion_hind_oilrocks_primary", undefined, "apache_helicopter_crash", undefined, undefined, undefined, -1, undefined, "stop_crash_loop_sound" );
|
||||
maps\_vehicle::build_rocket_deathfx( "fx/explosions/helicopter_explosion_hind_oilrocks_primary", "tag_deathfx", "apache_helicopter_crash", undefined, undefined, undefined, undefined, 1, undefined, 0, 5 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_green", "tag_light_L_wing", "fx/misc/aircraft_light_wingtip_green", "running", 0 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_red", "tag_light_R_wing", "fx/misc/aircraft_light_wingtip_red", "running", 0.05 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink", "tag_light_belly", "fx/misc/aircraft_light_white_blink", "running", 0.1 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink_tail", "tag_light_tail", "fx/misc/aircraft_light_red_blink", "running", 0.25 );
|
||||
maps\_vehicle::build_light( var_2, "cockpit", "tag_light_cockpit01", "fx/misc/aircraft_light_wingtip_green", "running", 0.1 );
|
||||
maps\_vehicle::build_light( var_2, "cargo_1", "tag_light_cargo01", "fx/misc/aircraft_light_red_blink", "running", 0.25 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_treadfx( var_2, "default", "fx/treadfx/heli_dust_default", 0 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
var_3 = ( 0, 0, 10 );
|
||||
maps\_vehicle::build_turret( "apache_turret", "turret_animate_jt", "vehicle_apache_iw6_mg", undefined, "auto_nonai", 0.0, 20, -14, var_3 );
|
||||
precacheitem( "zippy_rockets_apache" );
|
||||
precacheitem( "zippy_rockets_apache_nodamage" );
|
||||
maps\_vehicle::build_is_helicopter();
|
||||
set_death_anim_scene();
|
||||
}
|
||||
|
||||
set_death_anim_scene( var_0 )
|
||||
{
|
||||
similar_deaths( %apache_iw6_explode_a, "apache_explode_V1" );
|
||||
similar_deaths( %apache_iw6_explode_b, "apache_explode_V2" );
|
||||
similar_deaths( %apache_iw6_explode_c, "apache_explode_V3" );
|
||||
maps\_vehicle::build_deathanim( [ "apache_explode_V1", "apache_explode_V2", "apache_explode_V3" ] );
|
||||
}
|
||||
|
||||
similar_deaths( var_0, var_1 )
|
||||
{
|
||||
maps\_anim::create_anim_scene( #animtree, var_1, var_0, "apache_iw6" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_engine", "vfx/gameplay/smoke_trails/vfx_st_heli_small" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_wing_left", "vfx/gameplay/smoke_trails/vfx_st_heli_med" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_tailpiece1", "vfx/gameplay/smoke_trails/vfx_st_heli_small" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_p2", "vfx/gameplay/smoke_trails/vfx_st_heli_small" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_body", "vfx/gameplay/smoke_trails/vfx_st_heli_med" );
|
||||
maps\_anim::note_track_start_sound( "start", "apache_helicopter_spin", 1, "tag_apache_rotor_main_lod0" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_expl_missile", "vfx/gameplay/explosions/vehicle/heli/vfx_exp_heli_pr_apa" );
|
||||
|
||||
if ( animhasnotetrack( var_0, "apache_explode_fuel" ) )
|
||||
maps\_anim::note_track_start_fx_on_tag( "apache_explode_fuel", "tag_fx_expl_fuel", "vfx/gameplay/explosions/vehicle/heli/vfx_exp_heli_secondary" );
|
||||
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_body_lod0", "vfx/gameplay/vehicles/apache/apache_body_1s", "vfx/gameplay/vehicles/apache/apache_body_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_bodypiece01_lod0", "vfx/gameplay/vehicles/apache/apache_bodypiece01_1s", "vfx/gameplay/vehicles/apache/apache_bodypiece01_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_bodypiece02_lod0", "vfx/gameplay/vehicles/apache/apache_bodypiece02_1s", "vfx/gameplay/vehicles/apache/apache_bodypiece02_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_bodypiece03_lod0", "vfx/gameplay/vehicles/apache/apache_bodypiece03_1s", "vfx/gameplay/vehicles/apache/apache_bodypiece03_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_bodypiece04_lod0", "vfx/gameplay/vehicles/apache/apache_bodypiece04_1s", "vfx/gameplay/vehicles/apache/apache_bodypiece04_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_bodypiece05_lod0", "vfx/gameplay/vehicles/apache/apache_bodypiece05_1s", "vfx/gameplay/vehicles/apache/apache_bodypiece05_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_bodypiece06_lod0", "vfx/gameplay/vehicles/apache/apache_bodypiece06_1s", "vfx/gameplay/vehicles/apache/apache_bodypiece06_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_bodypiece07_lod0", "vfx/gameplay/vehicles/apache/apache_bodypiece07_1s", "vfx/gameplay/vehicles/apache/apache_bodypiece07_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_bodypiece08_lod0", "vfx/gameplay/vehicles/apache/apache_bodypiece08_1s", "vfx/gameplay/vehicles/apache/apache_bodypiece08_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_bodypiece09_lod0", "vfx/gameplay/vehicles/apache/apache_bodypiece09_1s", "vfx/gameplay/vehicles/apache/apache_bodypiece09_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_bodypiece11_lod0", "vfx/gameplay/vehicles/apache/apache_bodypiece11_1s", "vfx/gameplay/vehicles/apache/apache_bodypiece11_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_bodypiece12_lod0", "vfx/gameplay/vehicles/apache/apache_bodypiece12_1s", "vfx/gameplay/vehicles/apache/apache_bodypiece12_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_rotor_main_lod0", "vfx/gameplay/vehicles/apache/apache_rotor_main_1s", "vfx/gameplay/vehicles/apache/apache_rotor_main_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_rotor_tail_lod0", "vfx/gameplay/vehicles/apache/apache_rotor_tail_1s", "vfx/gameplay/vehicles/apache/apache_rotor_tail_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_tailpiece1_lod0", "vfx/gameplay/vehicles/apache/apache_tailpiece1_1s", "vfx/gameplay/vehicles/apache/apache_tailpiece1_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_tailpiece2_lod0", "vfx/gameplay/vehicles/apache/apache_tailpiece2_1s", "vfx/gameplay/vehicles/apache/apache_tailpiece2_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_tailpiece3_lod0", "vfx/gameplay/vehicles/apache/apache_tailpiece3_1s", "vfx/gameplay/vehicles/apache/apache_tailpiece3_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_tailpiece4_lod0", "vfx/gameplay/vehicles/apache/apache_tailpiece4_1s", "vfx/gameplay/vehicles/apache/apache_tailpiece4_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_tailpiece5_lod0", "vfx/gameplay/vehicles/apache/apache_tailpiece5_1s", "vfx/gameplay/vehicles/apache/apache_tailpiece5_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_wing_left_lod0", "vfx/gameplay/vehicles/apache/apache_wing_left_1s", "vfx/gameplay/vehicles/apache/apache_wing_left_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_wing_left_pc1_lod0", "vfx/gameplay/vehicles/apache/apache_wing_left_pc1_1s", "vfx/gameplay/vehicles/apache/apache_wing_left_pc1_1s" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_apache_wing_right_lod0", "vfx/gameplay/vehicles/apache/apache_wing_right_1s", "vfx/gameplay/vehicles/apache/apache_wing_right_1s" );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
self.alwaysrocketdeath = 1;
|
||||
self.enablerocketdeath = 1;
|
||||
self.is_anim_based_death = 1;
|
||||
self.animname = "apache_iw6";
|
||||
self.missile_targetoffset = ( 0, 0, -128 );
|
||||
self.has_unmatching_deathmodel_rig = 1;
|
||||
self.death_fx_on_self = 1;
|
||||
self.allowdeath = 0;
|
||||
self.script_badplace = 0;
|
||||
maps\_vehicle::vehicle_lights_on( "running" );
|
||||
self.boundryradius = 466;
|
||||
self hidepart( "turret_animate_jt" );
|
||||
self hidepart( "tag_flash" );
|
||||
self hidepart( "tag_barrel" );
|
||||
self hidepart( "barrel_animate_jnt" );
|
||||
}
|
41
vehicle_scripts/artemis.gsc
Normal file
41
vehicle_scripts/artemis.gsc
Normal file
@ -0,0 +1,41 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "artemis", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_artemis_30", "vehicle_artemis_30_dest" );
|
||||
var_3 = [];
|
||||
var_3["vehicle_artemis_30"] = "fx/explosions/vehicle_explosion_bmp";
|
||||
maps\_vehicle::build_deathfx( var_3[var_0], undefined, "exp_armor_vehicle", undefined, undefined, undefined, 0 );
|
||||
maps\_vehicle::build_mainturret( "tag_flash_left", "tag_flash_right" );
|
||||
maps\_vehicle::build_radiusdamage( ( 0, 0, 53 ), 512, 300, 20, 0 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
maps\_vehicle::build_aianims( ::setanims );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 1; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_gunner";
|
||||
var_0[0].idle = %artemis_idle;
|
||||
return var_0;
|
||||
}
|
76
vehicle_scripts/hind.gsc
Normal file
76
vehicle_scripts/hind.gsc
Normal file
@ -0,0 +1,76 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "hind_battle", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_battle_hind" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_battle_hind_alpha_rotors" );
|
||||
var_3 = [];
|
||||
var_3["vehicle_battle_hind"] = "fx/explosions/helicopter_explosion_hind_chernobyl";
|
||||
var_3["vehicle_battle_hind_low"] = "fx/explosions/helicopter_explosion_hind_chernobyl";
|
||||
var_3["vehicle_battle_hind_no_lod"] = "fx/explosions/helicopter_explosion_hind_chernobyl";
|
||||
var_3["vehicle_battle_hind_alpha_rotors"] = "fx/explosions/helicopter_explosion_hind_chernobyl";
|
||||
var_4 = [];
|
||||
var_4["vehicle_battle_hind"] = "fx/explosions/aerial_explosion_hind_chernobyl";
|
||||
var_4["vehicle_battle_hind_low"] = "fx/explosions/aerial_explosion_hind_chernobyl";
|
||||
var_4["vehicle_battle_hind_no_lod"] = "fx/explosions/aerial_explosion_hind_chernobyl";
|
||||
var_4["vehicle_battle_hind_alpha_rotors"] = "fx/explosions/aerial_explosion_hind_chernobyl";
|
||||
maps\_vehicle::build_drive( %battle_hind_spinning_rotor, undefined, 0 );
|
||||
var_5 = var_3[var_0];
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/grenadeexp_default", "tag_engine_left", "hind_helicopter_hit", undefined, undefined, undefined, 0.2, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/grenadeexp_default", "tail_rotor_jnt", "hind_helicopter_secondary_exp", undefined, undefined, undefined, 0.5, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "fx/fire/fire_smoke_trail_L", "tail_rotor_jnt", "hind_helicopter_dying_loop", 1, 0.05, 1, 0.5, 1, undefined );
|
||||
|
||||
if ( issubstr( var_2, "_sand" ) )
|
||||
{
|
||||
maps\_vehicle::build_deathfx( "vfx/gameplay/vehicle_destruction/air/vfx_aerl_expl_bhind_", "tag_deathfx", "hind_helicopter_crash", undefined, undefined, undefined, undefined, 0, "stop_crash_loop_sound" );
|
||||
maps\_vehicle::build_rocket_deathfx( "vfx/gameplay/vehicle_destruction/air/vfx_aerl_expl_bhind_", "tag_deathfx", "hind_helicopter_crash", undefined, undefined, undefined, undefined, 1, undefined, 0 );
|
||||
}
|
||||
else if ( !issubstr( var_2, "_final" ) )
|
||||
{
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/aerial_explosion", "tag_engine_right", "hind_helicopter_secondary_exp", undefined, undefined, undefined, 2.5, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/aerial_explosion", "tag_deathfx", "hind_helicopter_secondary_exp", undefined, undefined, undefined, 4.0, undefined, undefined );
|
||||
maps\_vehicle::build_deathfx( var_5, "tag_deathfx", "hind_helicopter_crash", undefined, undefined, undefined, -1, undefined, "stop_crash_loop_sound" );
|
||||
maps\_vehicle::build_rocket_deathfx( var_4[var_0], "tag_deathfx", "hind_helicopter_crash", undefined, undefined, undefined, undefined, 1, undefined, 0 );
|
||||
}
|
||||
|
||||
maps\_vehicle::build_treadfx( var_2, "default", "fx/treadfx/heli_dust_default", 0 );
|
||||
maps\_vehicle::build_life( 3000, 2800, 3100 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
var_6 = randomfloatrange( 0, 1 );
|
||||
maps\_vehicle::build_light( var_2, "cockpit_blue_cargo01", "tag_light_cargo01", "fx/misc/aircraft_light_cockpit_red", "interior", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "cockpit_blue_cockpit01", "tag_light_cockpit01", "fx/misc/aircraft_light_cockpit_blue", "interior", 0.1 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink", "tag_light_belly", "fx/misc/aircraft_light_white_blink", "running", var_6 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink_tail", "tag_light_tail", "fx/misc/aircraft_light_red_blink", "running", var_6 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_green", "tag_light_L_wing", "fx/misc/aircraft_light_wingtip_green", "running", var_6 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_red", "tag_light_R_wing", "fx/misc/aircraft_light_wingtip_red", "running", var_6 );
|
||||
maps\_vehicle::build_light( var_2, "spot", "tag_passenger", "fx/misc/aircraft_light_hindspot", "spot", 0.0 );
|
||||
maps\_vehicle::build_bulletshield( 1 );
|
||||
maps\_vehicle::build_is_helicopter();
|
||||
}
|
||||
|
||||
setup_lights( var_0 )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
self.script_badplace = 0;
|
||||
maps\_vehicle::vehicle_lights_on( "running" );
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
setanims()
|
||||
{
|
||||
|
||||
}
|
42
vehicle_scripts/hind_battle_carrier.gsc
Normal file
42
vehicle_scripts/hind_battle_carrier.gsc
Normal file
@ -0,0 +1,42 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "hind_battle", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( vehicle_scripts\hind_battle_oilrocks::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_battle_hind", "vehicle_battle_hind_destroyed_anim" );
|
||||
maps\_vehicle::build_drive( %battle_hind_spinning_rotor, undefined, 0 );
|
||||
maps\_vehicle::build_treadfx( var_2, "default", "fx/treadfx/heli_dust_default", 0 );
|
||||
maps\_vehicle::build_life( 3000, 2800, 3100 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_light( var_2, "cockpit_blue_cargo01", "tag_light_cargo01", "fx/misc/aircraft_light_cockpit_red", "interior", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "cockpit_blue_cockpit01", "tag_light_cockpit01", "fx/misc/aircraft_light_cockpit_blue", "interior", 0.1 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink", "tag_light_belly", "fx/misc/aircraft_light_white_blink", "running", 0.3 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink_tail", "tag_light_tail", "fx/misc/aircraft_light_red_blink", "running", 0.3 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_green", "tag_light_L_wing", "fx/misc/aircraft_light_wingtip_green", "running", 0.2 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_red", "tag_light_R_wing", "fx/misc/aircraft_light_wingtip_red", "running", 0.2 );
|
||||
maps\_vehicle::build_light( var_2, "spot", "tag_passenger", "fx/misc/aircraft_light_hindspot", "spot", 0.0 );
|
||||
maps\_vehicle::build_bulletshield( 1 );
|
||||
maps\_vehicle::build_is_helicopter();
|
||||
maps\_vehicle::build_turret( "hind_turret_carrier", "tag_turret", "vehicle_apache_iw6_mg", undefined, "auto_nonai", 0.0, 20, -14 );
|
||||
vehicle_scripts\hind_battle_oilrocks::set_death_anim_scene();
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
setanims()
|
||||
{
|
||||
|
||||
}
|
111
vehicle_scripts/hind_battle_oilrocks.gsc
Normal file
111
vehicle_scripts/hind_battle_oilrocks.gsc
Normal file
@ -0,0 +1,111 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2, var_3 )
|
||||
{
|
||||
if ( var_0 == "vehicle_battle_hind" )
|
||||
var_0 = "vehicle_battle_hind_no_mg";
|
||||
|
||||
foreach ( var_5 in getentarray( "script_vehicle_hind_battle_oilrocks", "classname" ) )
|
||||
var_5 setmodel( "vehicle_battle_hind_no_mg" );
|
||||
|
||||
maps\_vehicle::build_template( "hind_battle", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_battle_hind_no_mg", "vehicle_battle_hind_destroyed_anim" );
|
||||
maps\_vehicle::build_drive( %battle_hind_spinning_rotor, undefined, 0 );
|
||||
maps\_vehicle::build_treadfx( var_2, "default", "fx/treadfx/heli_dust_default", 0 );
|
||||
maps\_vehicle::build_life( 3000, 2800, 3100 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_light( var_2, "cockpit_blue_cargo01", "tag_light_cargo01", "fx/misc/aircraft_light_cockpit_red", "interior", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "cockpit_blue_cockpit01", "tag_light_cockpit01", "fx/misc/aircraft_light_cockpit_blue", "interior", 0.1 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink", "tag_light_belly", "fx/misc/aircraft_light_white_blink", "running", 0.3 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink_tail", "tag_light_tail", "fx/misc/aircraft_light_red_blink", "running", 0.3 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_green", "tag_light_L_wing", "fx/misc/aircraft_light_wingtip_green", "running", 0.2 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_red", "tag_light_R_wing", "fx/misc/aircraft_light_wingtip_red", "running", 0.2 );
|
||||
maps\_vehicle::build_light( var_2, "spot", "tag_passenger", "fx/misc/aircraft_light_hindspot", "spot", 0.0 );
|
||||
maps\_vehicle::build_bulletshield( 1 );
|
||||
maps\_vehicle::build_is_helicopter();
|
||||
var_7 = ( -10, 0, -22 );
|
||||
|
||||
if ( !isdefined( var_3 ) )
|
||||
maps\_vehicle::build_turret( "hind_turret_oilrocks", "TAG_TURRET_ATTACH", "vehicle_battle_hind_mg", undefined, "auto_nonai", 0.0, 20, -14, var_7 );
|
||||
else
|
||||
maps\_vehicle::build_turret( var_3, "TAG_TURRET_ATTACH", "vehicle_battle_hind_mg", undefined, "auto_nonai", 0.0, 20, -14, var_7 );
|
||||
|
||||
set_death_anim_scene();
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
self.alwaysrocketdeath = 1;
|
||||
self.enablerocketdeath = 1;
|
||||
self.is_anim_based_death = 1;
|
||||
self.animname = "battle_hind";
|
||||
self.missile_targetoffset = ( 0, 0, -128 );
|
||||
self.has_unmatching_deathmodel_rig = 1;
|
||||
self.death_fx_on_self = 1;
|
||||
self.allowdeath = 0;
|
||||
vehicle_scripts\hind::init_local();
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
set_death_anim_scene( var_0 )
|
||||
{
|
||||
similar_deaths( %battle_hind_explode_a, "battle_hind_explode_singleV1" );
|
||||
similar_deaths( %battle_hind_explode_b, "battle_hind_explode_singleV2" );
|
||||
similar_deaths( %battle_hind_explode_d, "battle_hind_explode_singleV4" );
|
||||
maps\_vehicle::build_deathanim( [ "battle_hind_explode_singleV1", "battle_hind_explode_singleV2", "battle_hind_explode_singleV4" ] );
|
||||
}
|
||||
|
||||
similar_deaths( var_0, var_1 )
|
||||
{
|
||||
maps\_anim::create_anim_scene( #animtree, var_1, var_0, "battle_hind" );
|
||||
var_2 = animhasnotetrack( var_0, "battle_hind_explode_fuel" );
|
||||
maps\_anim::note_track_start_sound( "start", "hind_helicopter_spin", 1, "tag_ctrl_body" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_engine", "vfx/gameplay/smoke_trails/vfx_st_heli_small" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_wing_left", "vfx/gameplay/smoke_trails/vfx_st_heli_med" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_tailpiece1", "vfx/gameplay/smoke_trails/vfx_st_heli_small" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_p2", "vfx/gameplay/smoke_trails/vfx_st_heli_small" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_debr_body", "vfx/gameplay/smoke_trails/vfx_st_heli_med" );
|
||||
maps\_anim::note_track_start_fx_on_tag( "start", "tag_fx_expl_missile", "vfx/gameplay/explosions/vehicle/heli/vfx_exp_heli_pr_hind" );
|
||||
|
||||
if ( var_2 )
|
||||
maps\_anim::note_track_start_fx_on_tag( "battle_hind_explode_fuel", "tag_fx_expl_fuel", "vfx/gameplay/explosions/vehicle/heli/vfx_exp_heli_secondary" );
|
||||
|
||||
if ( var_2 )
|
||||
maps\_anim::note_track_trace_to_efx( "start", "battle_hind_explode_fuel", "tag_ctrl_body", "vfx/gameplay/explosions/vehicle/heli/vfx_exp_heli_pr_hind", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
else
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_ctrl_body", "vfx/gameplay/vehicles/hind/hind_body_2s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
|
||||
var_3 = common_scripts\utility::ter_op( var_2, "battle_hind_explode_fuel", "start" );
|
||||
maps\_anim::note_track_trace_to_efx( var_3, undefined, "tag_ctrl_body_pc1", "vfx/gameplay/vehicles/hind/hind_bodypiece01_2s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( var_3, undefined, "tag_ctrl_body_pc2", "vfx/gameplay/vehicles/hind/hind_bodypiece02_2s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( var_3, undefined, "tag_ctrl_body_pc3", "vfx/gameplay/vehicles/hind/hind_bodypiece03_2s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( var_3, undefined, "tag_ctrl_body_pc4", "vfx/gameplay/vehicles/hind/hind_bodypiece04_2s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( var_3, undefined, "tag_ctrl_body_pc5", "vfx/gameplay/vehicles/hind/hind_bodypiece05_2s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( var_3, undefined, "tag_ctrl_body_pc6", "vfx/gameplay/vehicles/hind/hind_bodypiece06_2s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( var_3, undefined, "tag_ctrl_body_pc7", "vfx/gameplay/vehicles/hind/hind_bodypiece07_2s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( var_3, undefined, "tag_ctrl_body_pc8", "vfx/gameplay/vehicles/hind/hind_bodypiece08_2s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_ctrl_blade_b", "vfx/gameplay/vehicles/hind/hind_rotor_lower_2s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_ctrl_blade_u", "vfx/gameplay/vehicles/hind/hind_rotor_upper_2s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_ctrl_tail", "vfx/gameplay/vehicles/hind/hind_tail_1s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_ctrl_tailpiece1", "vfx/gameplay/vehicles/hind/hind_tailpiece1_1s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_ctrl_tailpiece2", "vfx/gameplay/vehicles/hind/hind_tailpiece2_1s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_ctrl_tailpiece3", "vfx/gameplay/vehicles/hind/hind_tailpiece3_1s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_ctrl_wing_left", "vfx/gameplay/vehicles/hind/hind_wing_left_1s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_ctrl_wing_left_pc1", "vfx/gameplay/vehicles/hind/hind_wing_leftpiece1_1s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_ctrl_wing_left_pc2", "vfx/gameplay/vehicles/hind/hind_wing_leftpiece2_1s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
maps\_anim::note_track_trace_to_efx( "start", undefined, "tag_ctrl_wing_left_pc3", "vfx/gameplay/vehicles/hind/hind_wing_leftpiece3_1s", "vfx/gameplay/vehicles/heli_global/vfx_heli_s_splash" );
|
||||
}
|
||||
|
||||
setanims()
|
||||
{
|
||||
|
||||
}
|
225
vehicle_scripts/hovercraft.gsc
Normal file
225
vehicle_scripts/hovercraft.gsc
Normal file
@ -0,0 +1,225 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "hovercraft", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_hovercraft_enemy" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_hovercraft" );
|
||||
|
||||
if ( var_2 == "script_vehicle_hovercraft_enemy" )
|
||||
maps\_vehicle::build_drive( %hovercraft_enemy_upper_fans, undefined, 0 );
|
||||
else
|
||||
maps\_vehicle::build_drive( %hovercraft_movement, undefined, 0 );
|
||||
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_rumble( "tank_rumble", 0.15, 4.5, 600, 1, 1 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
level._effect["hovercraft_wake_geotrail"] = loadfx( "fx/treadfx/hovercraft_wake_geo_trail" );
|
||||
level._effect["hovercraft_water_splash_loop_water"] = loadfx( "fx/water/hovercraft_side_wake" );
|
||||
level._effect["hovercraft_water_splash_ring"] = loadfx( "fx/water/hovercraft_side_wake_ring" );
|
||||
level._effect["hovercraft_water_splash_loop_dirt"] = loadfx( "fx/misc/no_effect" );
|
||||
level._effect["hovercraft_water_splash_ring_plume"] = loadfx( "fx/misc/hover_craft_water_plume" );
|
||||
level._effect["hovercraft_dirt_splash_ring_plume"] = loadfx( "fx/misc/hover_craft_dirt_plume" );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
thread hovercraft_treadfx();
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
return var_0;
|
||||
}
|
||||
|
||||
hovercraft_treadfx()
|
||||
{
|
||||
self.water_splash_reset_function = ::water_splash_reset_hovercraft;
|
||||
thread water_splash();
|
||||
}
|
||||
|
||||
hovercraft_treadfx_chaser( var_0 )
|
||||
{
|
||||
self.origin = var_0 common_scripts\utility::tag_project( "tag_origin", -10000 );
|
||||
wait 0.1;
|
||||
playfxontag( common_scripts\utility::getfx( "hovercraft_wake_geotrail" ), self, "tag_origin" );
|
||||
var_1 = 1;
|
||||
self notsolid();
|
||||
self hide();
|
||||
var_2 = ( 0, var_0.angles[1], 0 );
|
||||
|
||||
while ( isalive( var_0 ) )
|
||||
{
|
||||
self.origin = var_0 gettagorigin( "tag_origin" ) + ( 0, 0, 8 );
|
||||
var_2 = common_scripts\utility::flat_angle( self.angles );
|
||||
self.angles = var_2;
|
||||
|
||||
if ( isdefined( var_0.surfacetype ) )
|
||||
{
|
||||
if ( var_1 )
|
||||
{
|
||||
if ( var_0.surfacetype != "water" )
|
||||
{
|
||||
var_1 = 0;
|
||||
stopfxontag( common_scripts\utility::getfx( "hovercraft_wake_geotrail" ), self, "tag_origin" );
|
||||
}
|
||||
}
|
||||
else if ( var_0.surfacetype == "water" )
|
||||
{
|
||||
playfxontag( common_scripts\utility::getfx( "hovercraft_wake_geotrail" ), self, "tag_origin" );
|
||||
var_1 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
self delete();
|
||||
}
|
||||
|
||||
water_splash_reset_hovercraft( var_0 )
|
||||
{
|
||||
var_0.water_tags = [];
|
||||
var_0.water_tag_trace_cache = [];
|
||||
var_0.water_fx = [];
|
||||
var_0.water_fx["water"] = common_scripts\utility::getfx( "hovercraft_water_splash_loop_water" );
|
||||
var_0.water_fx["dirt"] = common_scripts\utility::getfx( "hovercraft_water_splash_loop_dirt" );
|
||||
var_0.water_fx["concrete"] = common_scripts\utility::getfx( "hovercraft_water_splash_loop_dirt" );
|
||||
var_0.water_fx["mud"] = common_scripts\utility::getfx( "hovercraft_water_splash_loop_dirt" );
|
||||
var_0.water_fx["default"] = common_scripts\utility::getfx( "hovercraft_water_splash_loop_dirt" );
|
||||
var_0.water_fx["sand"] = common_scripts\utility::getfx( "hovercraft_water_splash_loop_dirt" );
|
||||
var_0.water_fx_ring = common_scripts\utility::getfx( "hovercraft_water_splash_ring" );
|
||||
var_0.water_fx_plume = [];
|
||||
var_0.water_fx_plume["water"] = common_scripts\utility::getfx( "hovercraft_water_splash_ring_plume" );
|
||||
var_0.water_fx_plume["dirt"] = common_scripts\utility::getfx( "hovercraft_dirt_splash_ring_plume" );
|
||||
var_0.water_fx_plume["concrete"] = common_scripts\utility::getfx( "hovercraft_dirt_splash_ring_plume" );
|
||||
var_0.water_fx_plume["mud"] = common_scripts\utility::getfx( "hovercraft_dirt_splash_ring_plume" );
|
||||
var_0.water_fx_plume["sand"] = common_scripts\utility::getfx( "hovercraft_dirt_splash_ring_plume" );
|
||||
var_0.splash_delay = 0.01;
|
||||
var_0.ring_interval = 5;
|
||||
var_1 = 0;
|
||||
|
||||
for ( var_2 = 0; var_2 < 12; var_2++ )
|
||||
{
|
||||
if ( var_2 == 4 || var_2 == 5 || var_2 == 6 )
|
||||
continue;
|
||||
|
||||
var_0.water_tags[var_1] = "TAG_FX_WATER_SPLASH" + var_2;
|
||||
var_0.water_tag_trace_cache[var_1] = create_trace_cache( var_1 );
|
||||
var_1++;
|
||||
}
|
||||
}
|
||||
|
||||
create_trace_cache( var_0 )
|
||||
{
|
||||
var_1 = spawnstruct();
|
||||
var_1.last_time = gettime() - ( 2000 - var_0 );
|
||||
var_1.trace = [];
|
||||
var_1.trace["position"] = self.origin;
|
||||
return var_1;
|
||||
}
|
||||
|
||||
water_splash()
|
||||
{
|
||||
self endon( "death" );
|
||||
self.touching_water_trigger = 1;
|
||||
var_0 = maps\_vehicle::get_dummy();
|
||||
var_1 = self.touching_trigger_ent;
|
||||
|
||||
if ( !isdefined( self.water_splash_info ) )
|
||||
{
|
||||
var_2 = spawnstruct();
|
||||
self.water_splash_info = var_2;
|
||||
[[ self.water_splash_reset_function ]]( var_2 );
|
||||
}
|
||||
else
|
||||
var_2 = self.water_splash_info;
|
||||
|
||||
var_3 = var_2.ring_interval;
|
||||
var_4 = 1;
|
||||
self.water_plume_inc = 0;
|
||||
self.water_plume_next = randomintrange( 3, 5 );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
wait( var_2.splash_delay );
|
||||
|
||||
if ( self vehicle_getspeed() < 1 )
|
||||
continue;
|
||||
|
||||
if ( distancesquared( self.origin, level.player geteye() ) < 64000000 )
|
||||
wait( var_2.splash_delay );
|
||||
|
||||
for ( var_5 = 0; var_5 < var_2.water_tags.size; var_5++ )
|
||||
water_splash_single( var_5 );
|
||||
|
||||
var_0 = maps\_vehicle::get_dummy();
|
||||
|
||||
if ( var_0 != self )
|
||||
{
|
||||
var_1 = var_0;
|
||||
continue;
|
||||
}
|
||||
|
||||
var_1 = self.touching_trigger_ent;
|
||||
}
|
||||
}
|
||||
|
||||
water_splash_single( var_0, var_1 )
|
||||
{
|
||||
var_2 = self.water_splash_info;
|
||||
var_3 = maps\_vehicle::get_dummy();
|
||||
var_4 = var_2.water_tags[var_0];
|
||||
var_5 = var_3 gettagorigin( var_4 );
|
||||
var_6 = var_5 + ( 0, 0, 150 );
|
||||
var_7 = var_5 - ( 0, 0, 150 );
|
||||
var_8 = var_2.water_tag_trace_cache[var_0];
|
||||
|
||||
if ( gettime() - var_8.last_time >= 2000 )
|
||||
{
|
||||
var_9 = bullettrace( var_6, var_7, 0, self );
|
||||
var_8.last_time = gettime();
|
||||
var_8.trace = var_9;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_8.trace["position"] = maps\_utility::set_z( var_5, var_8.trace["position"][2] );
|
||||
var_9 = var_8.trace;
|
||||
}
|
||||
|
||||
if ( !isdefined( var_2.water_fx[var_9["surfacetype"]] ) )
|
||||
return;
|
||||
|
||||
var_10 = var_9["surfacetype"];
|
||||
self.surfacetype = var_10;
|
||||
|
||||
if ( var_10 != "water" )
|
||||
var_1 = 0;
|
||||
|
||||
var_6 = var_9["position"];
|
||||
|
||||
if ( var_9["fraction"] == 1 )
|
||||
return;
|
||||
|
||||
var_11 = common_scripts\utility::flat_angle( var_3 gettagangles( var_4 ) );
|
||||
var_12 = anglestoforward( var_11 );
|
||||
var_13 = anglestoup( var_11 );
|
||||
|
||||
if ( distancesquared( var_6, level.player geteye() ) < 64000000 )
|
||||
{
|
||||
if ( isdefined( self.use_big_splash ) )
|
||||
{
|
||||
if ( var_4 == "TAG_FX_WATER_SPLASH3" || var_4 == "TAG_FX_WATER_SPLASH7" )
|
||||
{
|
||||
if ( isdefined( var_2.water_fx[var_10 + "_big"] ) )
|
||||
var_10 = var_10 + "_big";
|
||||
}
|
||||
}
|
||||
|
||||
playfx( var_2.water_fx[var_10], var_6, var_13, var_12 );
|
||||
}
|
||||
}
|
134
vehicle_scripts/iveco_lynx.gsc
Normal file
134
vehicle_scripts/iveco_lynx.gsc
Normal file
@ -0,0 +1,134 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "iveco_lynx", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
maps\_vehicle::build_aianims( ::setanims_turret, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_drive( %humvee_50cal_driving_idle_forward, %humvee_50cal_driving_idle_backward, 10 );
|
||||
maps\_vehicle::build_treadfx( "script_vehicle_iveco_lynx", "default", "vfx/gameplay/tread_fx/vfx_lynx_dust" );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
build_lynx_death( var_0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_L", "tag_headlight_left", "fx/misc/spotlight_btr80_daytime", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_R", "tag_headlight_right", "fx/misc/spotlight_btr80_daytime", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_L", "tag_brakelight_left", "fx/misc/car_taillight_btr80_eye", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_R", "tag_brakelight_right", "fx/misc/car_taillight_btr80_eye", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_L", "tag_headlight_left", "vfx/gameplay/vehicles/iveco_headlight_l_night", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_R", "tag_headlight_right", "vfx/gameplay/vehicles/iveco_headlight_r_night", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_L", "tag_brakelight_left", "fx/misc/car_taillight_btr80_eye", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_R", "tag_brakelight_right", "fx/misc/car_taillight_btr80_eye", "headlights", 0.0 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
build_lynx_death( var_0 )
|
||||
{
|
||||
level._effect["lynxfire"] = loadfx( "fx/fire/firelp_med_pm_nolight" );
|
||||
|
||||
if ( isdefined( level.factory ) && level.factory == 1 )
|
||||
level._effect["lynxexplode"] = loadfx( "vfx/moments/factory/factory_chase_jeep_explosion" );
|
||||
else
|
||||
level._effect["lynxexplode"] = loadfx( "fx/explosions/vehicle_explosion_gaz" );
|
||||
|
||||
level._effect["lynxcookoff"] = loadfx( "fx/explosions/ammo_cookoff" );
|
||||
level._effect["lynxsmfire"] = loadfx( "fx/fire/firelp_small_pm_a" );
|
||||
var_1 = "vehicle_iveco_lynx_destroyed_iw6";
|
||||
|
||||
if ( var_0 == "vehicle_iveco_lynx_jeep_op_no_turret" )
|
||||
var_1 = "vehicle_iveco_lynx_jeep_op_no_turret_damaged";
|
||||
|
||||
maps\_vehicle::build_deathmodel( var_0, var_1 );
|
||||
|
||||
if ( isdefined( level.factory ) && level.factory == 1 )
|
||||
maps\_vehicle::build_deathfx( "vfx/moments/factory/factory_chase_jeep_explosion", "tag_origin" );
|
||||
else
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/vehicle_explosion_gaz", "tag_origin" );
|
||||
|
||||
maps\_vehicle::build_deathfx( "fx/fire/firelp_med_pm_nolight", "tag_origin", undefined, undefined, undefined, 1, 0 );
|
||||
maps\_vehicle::build_deathfx( "fx/fire/firelp_small_pm_a", "tag_origin", undefined, undefined, undefined, 1, 3 );
|
||||
maps\_vehicle::build_deathquake( 1, 1.6, 500 );
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_1 = "passengers";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_1 = "all_but_gunner";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_1 = "rear_driver_side";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_1 = "all";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0["default"] = var_0["all"];
|
||||
return var_0;
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_0[0].vehicle_getoutanim = %gaz_dismount_frontl_door;
|
||||
var_0[1].vehicle_getoutanim = %gaz_dismount_frontr_door;
|
||||
var_0[2].vehicle_getoutanim = %gaz_dismount_backl_door;
|
||||
var_0[3].vehicle_getoutanim = %gaz_dismount_backr_door;
|
||||
var_0[0].vehicle_getinanim = %gaz_mount_frontl_door;
|
||||
var_0[1].vehicle_getinanim = %gaz_mount_frontr_door;
|
||||
var_0[2].vehicle_getinanim = %gaz_enter_back_door;
|
||||
var_0[3].vehicle_getinanim = %gaz_enter_back_door;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 4; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_driver";
|
||||
var_0[1].sittag = "tag_passenger";
|
||||
var_0[2].sittag = "tag_guy0";
|
||||
var_0[3].sittag = "tag_guy1";
|
||||
var_0[0].bhasgunwhileriding = 0;
|
||||
var_0[0].death = %gaz_dismount_frontl;
|
||||
var_0[0].death_delayed_ragdoll = 3;
|
||||
var_0[0].idle = %gaz_idle_frontl;
|
||||
var_0[1].idle = %gaz_idle_frontr;
|
||||
var_0[2].idle = %gaz_idle_backl;
|
||||
var_0[3].idle = %gaz_idle_backr;
|
||||
var_0[0].getout = %gaz_dismount_frontl;
|
||||
var_0[1].getout = %gaz_dismount_frontr;
|
||||
var_0[2].getout = %gaz_dismount_backl;
|
||||
var_0[3].getout = %gaz_dismount_backr;
|
||||
var_0[0].getin = %gaz_mount_frontl;
|
||||
var_0[1].getin = %gaz_mount_frontr;
|
||||
var_0[2].getin = %gaz_enter_backr;
|
||||
var_0[3].getin = %gaz_enter_backl;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
setanims_turret()
|
||||
{
|
||||
var_0 = setanims();
|
||||
return var_0;
|
||||
}
|
132
vehicle_scripts/iveco_lynx_turret.gsc
Normal file
132
vehicle_scripts/iveco_lynx_turret.gsc
Normal file
@ -0,0 +1,132 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "iveco_lynx_turret", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
maps\_vehicle::build_aianims( ::setanims_turret, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_drive( %iveco_lynx_idle_driving_idle_forward, %iveco_lynx_idle_driving_idle_forward, 10 );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
build_lynx_death( var_2 );
|
||||
maps\_vehicle::build_turret( "dshk_gaz_factory", "tag_turret", "weapon_dshk_turret", undefined, "auto_ai", 0.2, -20, -14 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_L", "tag_headlight_left", "fx/misc/spotlight_btr80_daytime", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_R", "tag_headlight_right", "fx/misc/spotlight_btr80_daytime", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_L", "tag_brakelight_left", "fx/misc/car_taillight_btr80_eye", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_R", "tag_brakelight_right", "fx/misc/car_taillight_btr80_eye", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_L", "tag_headlight_left", "vfx/gameplay/vehicles/iveco_headlight_l_night", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_R", "tag_headlight_right", "vfx/gameplay/vehicles/iveco_headlight_r_night", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_L", "tag_brakelight_left", "fx/misc/car_taillight_btr80_eye", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_R", "tag_brakelight_right", "fx/misc/car_taillight_btr80_eye", "headlights", 0.0 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
self hidepart( "top_hatch_jnt" );
|
||||
}
|
||||
|
||||
build_lynx_death( var_0 )
|
||||
{
|
||||
level._effect["lynxfire"] = loadfx( "fx/fire/firelp_med_pm_nolight" );
|
||||
|
||||
if ( isdefined( level.factory ) && level.factory == 1 )
|
||||
level._effect["lynxexplode"] = loadfx( "vfx/moments/factory/factory_chase_jeep_explosion" );
|
||||
else
|
||||
level._effect["lynxexplode"] = loadfx( "fx/explosions/vehicle_explosion_gaz" );
|
||||
|
||||
level._effect["lynxcookoff"] = loadfx( "fx/explosions/ammo_cookoff" );
|
||||
level._effect["lynxsmfire"] = loadfx( "fx/fire/firelp_small_pm_a" );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_iveco_lynx_iw6", "vehicle_iveco_lynx_destroyed_iw6" );
|
||||
|
||||
if ( isdefined( level.factory ) && level.factory == 1 )
|
||||
maps\_vehicle::build_deathfx( "vfx/moments/factory/factory_chase_jeep_explosion", "tag_origin" );
|
||||
else
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/vehicle_explosion_gaz", "tag_origin" );
|
||||
|
||||
maps\_vehicle::build_deathfx( "fx/fire/firelp_med_pm_nolight", "tag_origin", undefined, undefined, undefined, 1, 0 );
|
||||
maps\_vehicle::build_deathfx( "fx/fire/firelp_small_pm_a", "tag_origin", undefined, undefined, undefined, 1, 3 );
|
||||
maps\_vehicle::build_deathquake( 1, 1.6, 500 );
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_1 = "passengers";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_1 = "all_but_gunner";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_1 = "rear_driver_side";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_1 = "all";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0["default"] = var_0["all"];
|
||||
return var_0;
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_0[0].vehicle_getoutanim = %gaz_dismount_frontl_door;
|
||||
var_0[1].vehicle_getoutanim = %gaz_dismount_frontr_door;
|
||||
var_0[2].vehicle_getoutanim = %gaz_dismount_backl_door;
|
||||
var_0[3].vehicle_getoutanim = %gaz_dismount_backr_door;
|
||||
var_0[0].vehicle_getinanim = %gaz_mount_frontl_door;
|
||||
var_0[1].vehicle_getinanim = %gaz_mount_frontr_door;
|
||||
var_0[2].vehicle_getinanim = %gaz_enter_back_door;
|
||||
var_0[3].vehicle_getinanim = %gaz_enter_back_door;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 4; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_driver";
|
||||
var_0[1].sittag = "tag_passenger";
|
||||
var_0[2].sittag = "tag_guy0";
|
||||
var_0[3].sittag = "tag_guy1";
|
||||
var_0[0].bhasgunwhileriding = 0;
|
||||
var_0[0].death = %gaz_dismount_frontl;
|
||||
var_0[0].death_delayed_ragdoll = 3;
|
||||
var_0[0].idle = %gaz_idle_frontl;
|
||||
var_0[1].idle = %gaz_idle_frontr;
|
||||
var_0[2].idle = %gaz_idle_backl;
|
||||
var_0[3].idle = %gaz_idle_backr;
|
||||
var_0[0].getout = %gaz_dismount_frontl;
|
||||
var_0[1].getout = %gaz_dismount_frontr;
|
||||
var_0[2].getout = %gaz_dismount_backl;
|
||||
var_0[3].getout = %gaz_dismount_backr;
|
||||
var_0[0].getin = %gaz_mount_frontl;
|
||||
var_0[1].getin = %gaz_mount_frontr;
|
||||
var_0[2].getin = %gaz_enter_backr;
|
||||
var_0[3].getin = %gaz_enter_backl;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
setanims_turret()
|
||||
{
|
||||
var_0 = setanims();
|
||||
var_0[3].mgturret = 0;
|
||||
var_0[3].sittag = "tag_guy_turret";
|
||||
return var_0;
|
||||
}
|
48
vehicle_scripts/m1a2.gsc
Normal file
48
vehicle_scripts/m1a2.gsc
Normal file
@ -0,0 +1,48 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "m1a2", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_m1a2_abrams_iw6", "vehicle_m1a2_abrams_iw6_dmg" );
|
||||
maps\_vehicle::build_drive( %m1a2_abrams_driving_idle_forward, %m1a2_abrams_driving_idle_backward, 10 );
|
||||
maps\_vehicle::build_exhaust( "fx/distortion/abrams_exhaust" );
|
||||
maps\_vehicle::build_deckdust( "fx/dust/abrams_deck_dust" );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_deathfx( "vfx/gameplay/explosions/vfx_exp_m1a2_end", "tag_deathfx", "exp_armor_vehicle", undefined, undefined, undefined, 0, undefined, undefined, undefined, 10 );
|
||||
|
||||
if ( !issubstr( var_2, "_nocoax" ) )
|
||||
maps\_vehicle::build_turret( "dshk_gaz", "tag_coax_mg", "vehicle_m1a2_abrams_remote_gun", undefined, "auto_nonai", 0.0, 0, 0 );
|
||||
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_rumble( "tank_rumble", 0.15, 4.5, 900, 1, 1 );
|
||||
maps\_vehicle::build_shoot_shock( "tankblast" );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
maps\_vehicle::build_mainturret();
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_frontarmor( 0.33 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
return var_0;
|
||||
}
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 11; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].getout_delete = 1;
|
||||
return var_0;
|
||||
}
|
84
vehicle_scripts/m1a2_player.gsc
Normal file
84
vehicle_scripts/m1a2_player.gsc
Normal file
@ -0,0 +1,84 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "m1a2", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_m1a2_abrams_iw6", "vehicle_m1a2_abrams_iw6_dmg", 0.25 );
|
||||
maps\_vehicle::build_deathfx( "vfx/gameplay/explosions/vehicle/vfx_big_tank_explosion", "tag_deathfx", "exp_armor_vehicle", undefined, undefined, undefined, 0, undefined, undefined, undefined, 10 );
|
||||
maps\_vehicle::build_drive( %abrams_movement, %abrams_movement_backwards, 10 );
|
||||
maps\_vehicle::build_exhaust( "fx/distortion/abrams_exhaust" );
|
||||
maps\_vehicle::build_deckdust( "fx/dust/abrams_deck_dust" );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
|
||||
if ( issubstr( var_2, "_minigunonly" ) )
|
||||
maps\_vehicle::build_turret( "minigun_m1a1", "tag_turret_mg_r", "weapon_m1a1_minigun", undefined, "sentry", undefined, 0, 0 );
|
||||
else
|
||||
{
|
||||
if ( issubstr( var_2, "_turret" ) )
|
||||
{
|
||||
maps\_vehicle::build_turret( "m1a1_coaxial_mg", "tag_barrel", "vehicle_m1a1_abrams_PKT_Coaxial_MG", undefined, undefined, undefined, 0, 0, ( 6, -13.5, 8 ) );
|
||||
maps\_vehicle::build_turret( "minigun_m1a1_fast", "tag_turret_mg_r", "weapon_mk47_turret", undefined, "sentry", undefined, 0, 0 );
|
||||
maps\_vehicle::build_mainturret();
|
||||
}
|
||||
|
||||
if ( !issubstr( var_2, "_noturrets" ) )
|
||||
{
|
||||
maps\_vehicle::build_turret( "m1a1_coaxial_mg", "tag_barrel", "vehicle_m1a1_abrams_PKT_Coaxial_MG_inv", undefined, undefined, undefined, 0, 0, ( 6, -13.5, 8 ) );
|
||||
maps\_vehicle::build_mainturret();
|
||||
}
|
||||
}
|
||||
|
||||
if ( !issubstr( var_2, "_viewmodel" ) )
|
||||
maps\_vehicle::build_treadfx( var_2, "default", "fx/treadfx/tread_sand_satfarm" );
|
||||
else
|
||||
maps\_vehicle::build_treadfx();
|
||||
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_frontarmor( 1 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
waittillframeend;
|
||||
|
||||
foreach ( var_1 in self.riders )
|
||||
var_1 thread maps\_utility::magic_bullet_shield( 1 );
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_1 = 0;
|
||||
var_0[var_1].vehicle_turret_fire = %abrams_loader_shell;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
var_1 = 0;
|
||||
var_2 = spawnstruct();
|
||||
var_2.idle = %abrams_loader_load;
|
||||
var_2.turret_fire = %abrams_loader_load;
|
||||
var_2.turret_fire_tag = "tag_guy1";
|
||||
var_2.sittag = "tag_guy1";
|
||||
var_0[var_1] = var_2;
|
||||
var_1 = 1;
|
||||
var_2 = spawnstruct();
|
||||
var_2.idle = %hamburg_tank_driver_afterfall_loop;
|
||||
var_2.sittag = "tag_guy0";
|
||||
var_0[var_1] = var_2;
|
||||
var_1 = 2;
|
||||
var_2 = spawnstruct();
|
||||
var_2.mgturret = 0;
|
||||
var_2.sittag = "tag_turret_mg_r";
|
||||
var_2.sittag_offset = ( 0, 0, -40 );
|
||||
var_0[var_1] = var_2;
|
||||
return var_0;
|
||||
}
|
73
vehicle_scripts/m800.gsc
Normal file
73
vehicle_scripts/m800.gsc
Normal file
@ -0,0 +1,73 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "m800", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_m800_apc", "vehicle_m800_apc_destroyed" );
|
||||
maps\_vehicle::build_deathfx( "vfx/gameplay/explosions/vfx_exp_m800_dest", undefined, "explo_metal_rand" );
|
||||
maps\_vehicle::build_drive( %m880_launcher_idle_driving_idle_forward, %m880_launcher_idle_driving_idle_forward, 10 );
|
||||
maps\_vehicle::build_turret( "m800_turret", "tag_turret", "vehicle_m800_apc_turret", undefined, "auto_nonai", undefined, 0 );
|
||||
maps\_vehicle::build_radiusdamage( ( 0, 0, 53 ), 512, 300, 20, 0 );
|
||||
maps\_vehicle::build_treadfx( var_2 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_frontarmor( 0.33 );
|
||||
maps\_vehicle::build_bulletshield( 1 );
|
||||
maps\_vehicle::build_grenadeshield( 1 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
maps\_utility::ent_flag_init( "no_riders_until_unload" );
|
||||
maps\_vehicle::vehicle_lights_on( "running" );
|
||||
}
|
||||
|
||||
test_brake_lights()
|
||||
{
|
||||
self endon( "death" );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
wait 5;
|
||||
maps\_vehicle::vehicle_lights_on( "brake" );
|
||||
wait 3;
|
||||
maps\_vehicle::vehicle_lights_on( "brake" );
|
||||
}
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["driver_and_rider"] = [];
|
||||
var_0["two_riders"] = [];
|
||||
var_0["all"] = [];
|
||||
var_1 = "driver_and_rider";
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_1 = "two_riders";
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_1 = "all";
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0["default"] = var_0["all"];
|
||||
return var_0;
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
return var_0;
|
||||
}
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
return var_0;
|
||||
}
|
125
vehicle_scripts/matv.gsc
Normal file
125
vehicle_scripts/matv.gsc
Normal file
@ -0,0 +1,125 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "matv", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
var_3 = [];
|
||||
|
||||
if ( var_2 == "script_vehicle_matv_noturret" )
|
||||
{
|
||||
maps\_vehicle::build_deathmodel( "vehicle_matv_no_top", "vehicle_matv_no_top" );
|
||||
var_3["vehicle_matv_no_top"] = "fx/explosions/vehicle_explosion_hummer";
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\_vehicle::build_deathmodel( "vehicle_matv", "vehicle_matv" );
|
||||
var_3["vehicle_matv"] = "fx/explosions/vehicle_explosion_hummer";
|
||||
}
|
||||
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
maps\_vehicle::build_deathfx( "fx/fire/firelp_med_pm", "TAG_PASSENGER", "fire_metal_medium", undefined, undefined, 1, 0 );
|
||||
maps\_vehicle::build_deathfx( var_3[var_0], "tag_death_fx", "car_explode" );
|
||||
maps\_vehicle::build_drive( %humvee_50cal_driving_idle_forward, %humvee_50cal_driving_idle_backward, 10 );
|
||||
maps\_vehicle::build_treadfx( var_2, "default", "fx/treadfx/tread_dust_default" );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
var_4 = ::setanims;
|
||||
maps\_vehicle::build_aianims( var_4, ::set_vehicle_anims );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
if ( issubstr( self.vehicletype, "physics" ) )
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["idle"] = %humvee_antennas_idle_movement;
|
||||
var_0["rot_l"] = %humvee_antenna_l_rotate_360;
|
||||
var_0["rot_r"] = %humvee_antenna_r_rotate_360;
|
||||
thread maps\_vehicle_code::humvee_antenna_animates( var_0 );
|
||||
}
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_1 = "passengers";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_1 = "rear_driver_side";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_1 = "all";
|
||||
var_0[var_1] = [];
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0["default"] = var_0["all"];
|
||||
return var_0;
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_0[0].vehicle_getoutanim = %matv_driver_out_door;
|
||||
var_0[1].vehicle_getoutanim = %matv_passenger_out_door;
|
||||
var_0[2].vehicle_getoutanim = %humvee_dismount_backl_door;
|
||||
var_0[3].vehicle_getoutanim = %humvee_dismount_backr_door;
|
||||
var_0[0].vehicle_getinanim = %matv_driver_in_m_door;
|
||||
var_0[1].vehicle_getinanim = %matv_passenger_in_m_door;
|
||||
var_0[2].vehicle_getinanim = %humvee_mount_backl_door;
|
||||
var_0[3].vehicle_getinanim = %humvee_mount_backr_door;
|
||||
var_0[0].vehicle_getoutsound = "hummer_door_open";
|
||||
var_0[1].vehicle_getoutsound = "hummer_door_open";
|
||||
var_0[2].vehicle_getoutsound = "hummer_door_open";
|
||||
var_0[3].vehicle_getoutsound = "hummer_door_open";
|
||||
var_0[0].vehicle_getinsound = "hummer_door_close";
|
||||
var_0[1].vehicle_getinsound = "hummer_door_close";
|
||||
var_0[2].vehicle_getinsound = "hummer_door_close";
|
||||
var_0[3].vehicle_getinsound = "hummer_door_close";
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 4; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_driver";
|
||||
var_0[1].sittag = "tag_passenger";
|
||||
var_0[2].sittag = "tag_guy0";
|
||||
var_0[3].sittag = "tag_guy1";
|
||||
var_0[0].bhasgunwhileriding = 0;
|
||||
var_0[0].idle[0] = %matv_driver_idle;
|
||||
var_0[0].idle[1] = %matv_driver_twitch_steerl;
|
||||
var_0[0].idle[2] = %matv_driver_twitch_steerr;
|
||||
var_0[0].idleoccurrence[0] = 500;
|
||||
var_0[0].idleoccurrence[1] = 100;
|
||||
var_0[0].idleoccurrence[2] = 100;
|
||||
var_0[1].idle[0] = %matv_passenger_idle;
|
||||
var_0[1].idle[1] = %matv_passenger_twitch_a;
|
||||
var_0[1].idle[2] = %matv_passenger_twitch_b;
|
||||
var_0[1].idleoccurrence[0] = 500;
|
||||
var_0[1].idleoccurrence[1] = 100;
|
||||
var_0[1].idleoccurrence[2] = 100;
|
||||
var_0[2].idle = %humvee_idle_backl;
|
||||
var_0[3].idle = %humvee_idle_backr;
|
||||
var_0[0].getout = %matv_driver_out;
|
||||
var_0[1].getout = %matv_passenger_out;
|
||||
var_0[2].getout = %humvee_passenger_out_l;
|
||||
var_0[3].getout = %humvee_passenger_out_r;
|
||||
var_0[0].getin = %matv_driver_in_m;
|
||||
var_0[1].getin = %matv_passenger_in_m;
|
||||
var_0[2].getin = %humvee_mount_backl;
|
||||
var_0[3].getin = %humvee_mount_backr;
|
||||
return var_0;
|
||||
}
|
155
vehicle_scripts/mk23.gsc
Normal file
155
vehicle_scripts/mk23.gsc
Normal file
@ -0,0 +1,155 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "mk23", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_mk23_truck_iw6", "vehicle_mk23_truck_iw6" );
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
maps\_vehicle::build_drive( %bm21_driving_idle_forward, %bm21_driving_idle_backward, 10 );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_bulletshield( 1 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_light( var_2, "headlight_truck_left", "tag_headlight_left", "fx/misc/lighthaze", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "headlight_truck_right", "tag_headlight_right", "fx/misc/lighthaze", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "headlight_truck_left2", "tag_headlight_left", "fx/misc/car_headlight_bm21", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "headlight_truck_right2", "tag_headlight_right", "fx/misc/car_headlight_bm21", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "taillight_truck_right", "tag_brakelight_right", "fx/misc/car_taillight_bm21", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "taillight_truck_left", "tag_brakelight_left", "fx/misc/car_taillight_bm21", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_troops_right", "tag_brakelight_right", "fx/misc/car_taillight_bm21", "brakelights" );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_troops_left", "tag_brakelight_left", "fx/misc/car_taillight_bm21", "brakelights" );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_0[0].vehicle_getoutanim = %bm21_driver_climbout_door;
|
||||
var_0[1].vehicle_getoutanim = %bm21_passenger_climbout_door;
|
||||
var_0[2].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[3].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[4].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[5].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[6].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[7].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[8].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[9].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[0].vehicle_getoutsoundtag = "left_door";
|
||||
var_0[1].vehicle_getoutsoundtag = "right_door";
|
||||
var_0[2].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[3].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[4].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[5].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[6].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[7].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[8].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[9].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[0].vehicle_getoutanim_clear = 1;
|
||||
var_0[1].vehicle_getoutanim_clear = 1;
|
||||
var_0[2].vehicle_getoutanim_clear = 0;
|
||||
var_0[3].vehicle_getoutanim_clear = 0;
|
||||
var_0[4].vehicle_getoutanim_clear = 0;
|
||||
var_0[5].vehicle_getoutanim_clear = 0;
|
||||
var_0[6].vehicle_getoutanim_clear = 0;
|
||||
var_0[7].vehicle_getoutanim_clear = 0;
|
||||
var_0[8].vehicle_getoutanim_clear = 0;
|
||||
var_0[9].vehicle_getoutanim_clear = 0;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 10; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_driver";
|
||||
var_0[1].sittag = "tag_passenger";
|
||||
var_0[2].sittag = "tag_detach";
|
||||
var_0[3].sittag = "tag_detach";
|
||||
var_0[4].sittag = "tag_detach";
|
||||
var_0[5].sittag = "tag_detach";
|
||||
var_0[6].sittag = "tag_detach";
|
||||
var_0[7].sittag = "tag_detach";
|
||||
var_0[8].sittag = "tag_detach";
|
||||
var_0[9].sittag = "tag_detach";
|
||||
var_0[0].idle = %bm21_driver_idle;
|
||||
var_0[1].idle = %bm21_passenger_idle;
|
||||
var_0[2].idle = %bm21_guy1_idle;
|
||||
var_0[3].idle = %bm21_guy2_idle;
|
||||
var_0[4].idle = %bm21_guy3_idle;
|
||||
var_0[5].idle = %bm21_guy4_idle;
|
||||
var_0[6].idle = %bm21_guy5_idle;
|
||||
var_0[7].idle = %bm21_guy6_idle;
|
||||
var_0[8].idle = %bm21_guy7_idle;
|
||||
var_0[9].idle = %bm21_guy8_idle;
|
||||
var_0[0].getout = %bm21_driver_climbout;
|
||||
var_0[1].getout = %bm21_passenger_climbout;
|
||||
var_0[2].getout = %bm21_guy1_climbout;
|
||||
var_0[3].getout = %bm21_guy2_climbout;
|
||||
var_0[4].getout = %bm21_guy3_climbout;
|
||||
var_0[4].delay = 0.5;
|
||||
var_0[5].getout = %bm21_guy4_climbout;
|
||||
var_0[6].getout = %bm21_guy5_climbout;
|
||||
var_0[6].delay = 0.5;
|
||||
var_0[7].getout = %bm21_guy6_climbout;
|
||||
var_0[7].delay = 0.5;
|
||||
var_0[8].getout = %bm21_guy7_climbout;
|
||||
var_0[9].getout = %bm21_guy8_climbout;
|
||||
var_0[2].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[3].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[4].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[6].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[7].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[8].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[2].explosion_death = %death_explosion_up10;
|
||||
var_0[3].explosion_death = %death_explosion_up10;
|
||||
var_0[4].explosion_death = %death_explosion_up10;
|
||||
var_0[5].explosion_death = %death_explosion_up10;
|
||||
var_0[6].explosion_death = %death_explosion_up10;
|
||||
var_0[7].explosion_death = %death_explosion_up10;
|
||||
var_0[8].explosion_death = %death_explosion_up10;
|
||||
var_0[9].explosion_death = %death_explosion_up10;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["passengers"] = [];
|
||||
var_0["all"] = [];
|
||||
var_1 = "passengers";
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0[var_1][var_0[var_1].size] = 4;
|
||||
var_0[var_1][var_0[var_1].size] = 5;
|
||||
var_0[var_1][var_0[var_1].size] = 6;
|
||||
var_0[var_1][var_0[var_1].size] = 7;
|
||||
var_0[var_1][var_0[var_1].size] = 8;
|
||||
var_0[var_1][var_0[var_1].size] = 9;
|
||||
var_1 = "all";
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0[var_1][var_0[var_1].size] = 4;
|
||||
var_0[var_1][var_0[var_1].size] = 5;
|
||||
var_0[var_1][var_0[var_1].size] = 6;
|
||||
var_0[var_1][var_0[var_1].size] = 7;
|
||||
var_0[var_1][var_0[var_1].size] = 8;
|
||||
var_0[var_1][var_0[var_1].size] = 9;
|
||||
var_0["default"] = var_0["all"];
|
||||
return var_0;
|
||||
}
|
57
vehicle_scripts/mobile_railgun_cab.gsc
Normal file
57
vehicle_scripts/mobile_railgun_cab.gsc
Normal file
@ -0,0 +1,57 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "mobile_railgun_cab", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_drive( %mobile_railgun_cab_movement, %mobile_railgun_cab_movement, 25 );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
maps\_vehicle::build_light( var_2, "headlight_beam_l_01", "tag_headlight_beam_l_01", "vfx/moments/factory/factory_het_cab_headlight_beam", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_beam_l_02", "tag_headlight_beam_l_02", "vfx/moments/factory/factory_het_cab_headlight_beam", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_beam_r_01", "tag_headlight_beam_r_01", "vfx/moments/factory/factory_het_cab_headlight_beam", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_beam_r_02", "tag_headlight_beam_r_02", "vfx/moments/factory/factory_het_cab_headlight_beam", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_lens_l_01", "tag_headlight_lens_l_01", "vfx/moments/factory/factory_het_cab_headlight_lens", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_lens_l_02", "tag_headlight_lens_l_02", "vfx/moments/factory/factory_het_cab_headlight_lens", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_lens_r_01", "tag_headlight_lens_r_01", "vfx/moments/factory/factory_het_cab_headlight_lens", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "headlight_lens_r_02", "tag_headlight_lens_r_02", "vfx/moments/factory/factory_het_cab_headlight_lens", "headlights", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "back_running_light_l", "tag_back_running_light_l", "vfx/ambient/lights/amber_light_running_8_nolight", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "back_running_light_r", "tag_back_running_light_r", "vfx/ambient/lights/amber_light_running_8_nolight", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "bumper_light_l_01", "tag_bumper_light_l_01", "vfx/ambient/lights/amber_light_running_4_nolight", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "bumper_light_l_02", "tag_bumper_light_l_02", "vfx/ambient/lights/amber_light_running_4_nolight", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "bumper_light_r_01", "tag_bumper_light_r_01", "vfx/ambient/lights/amber_light_running_4_nolight", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "bumper_light_r_02", "tag_bumper_light_r_02", "vfx/ambient/lights/amber_light_running_4_nolight", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "top_light", "tag_top_light", "vfx/ambient/lights/amber_light_100_blinker_nolight", "top", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "step_light_l", "tag_step_light_l", "vfx/ambient/lights/amber_light_running_4_nolight", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "step_light_r", "tag_step_light_r", "vfx/ambient/lights/amber_light_running_4_nolight", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "windshield_light_01", "tag_windshield_light_01", "vfx/ambient/lights/amber_light_running_3_nolight", "windshield", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "windshield_light_02", "tag_windshield_light_02", "vfx/ambient/lights/amber_light_running_3_nolight", "windshield", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "windshield_light_03", "tag_windshield_light_03", "vfx/ambient/lights/amber_light_running_3_nolight", "windshield", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "windshield_light_04", "tag_windshield_light_04", "vfx/ambient/lights/amber_light_running_3_nolight", "windshield", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "windshield_light_05", "tag_windshield_light_05", "vfx/ambient/lights/amber_light_running_3_nolight", "windshield", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "windshield_light_06", "tag_windshield_light_06", "vfx/ambient/lights/amber_light_running_3_nolight", "windshield", 0.0 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
set_vehicle_anims()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
setanims()
|
||||
{
|
||||
|
||||
}
|
44
vehicle_scripts/mobile_railgun_trailer.gsc
Normal file
44
vehicle_scripts/mobile_railgun_trailer.gsc
Normal file
@ -0,0 +1,44 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "mobile_railgun_trailer", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_drive( %mobile_railgun_trailer_movement, %mobile_railgun_trailer_movement, 25 );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
maps\_vehicle::build_light( var_2, "running_light_01", "tag_running_light_01", "vfx/ambient/lights/amber_light_running_4_nolight", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "running_light_02", "tag_running_light_02", "vfx/ambient/lights/amber_light_running_4_nolight", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "running_light_03", "tag_running_light_03", "vfx/ambient/lights/amber_light_running_4_nolight", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "running_light_04", "tag_running_light_04", "vfx/ambient/lights/amber_light_running_4_orient", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "running_light_05", "tag_running_light_05", "vfx/ambient/lights/amber_light_running_4_orient", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "running_light_06", "tag_running_light_06", "vfx/ambient/lights/amber_light_running_4_orient", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "running_light_07", "tag_running_light_07", "vfx/ambient/lights/amber_light_running_4_orient", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "running_light_08", "tag_running_light_08", "vfx/ambient/lights/amber_light_running_4_nolight", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "running_light_09", "tag_running_light_09", "vfx/ambient/lights/amber_light_running_4_nolight", "running", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "running_light_10", "tag_running_light_10", "vfx/ambient/lights/amber_light_running_4_nolight", "running", 0.0 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
set_vehicle_anims()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
setanims()
|
||||
{
|
||||
|
||||
}
|
216
vehicle_scripts/nh90.gsc
Normal file
216
vehicle_scripts/nh90.gsc
Normal file
@ -0,0 +1,216 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "nh90", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_drive( %bh_rotors, undefined, 0 );
|
||||
var_3 = [];
|
||||
var_3["vehicle_nh90"] = "vfx/gameplay/explosions/vfx_exp_silenthawk_end";
|
||||
var_3["vehicle_nh90_no_lod"] = "vfx/gameplay/explosions/vfx_exp_silenthawk_end";
|
||||
var_3["vehicle_nh90_cheap"] = "vfx/gameplay/explosions/vfx_exp_silenthawk_end";
|
||||
var_3["vehicle_nh90_interior"] = "vfx/gameplay/explosions/vfx_exp_silenthawk_end";
|
||||
var_3["vehicle_nh90_cheap_full_interior"] = "vfx/gameplay/explosions/vfx_exp_silenthawk_end";
|
||||
var_4 = var_3[var_0];
|
||||
|
||||
if ( var_2 != "script_vehicle_nh90_cheaper" )
|
||||
{
|
||||
maps\_vehicle::build_deathfx( "vfx/gameplay/explosions/vfx_exp_nh90_deathspin", "tag_rotor_fx", "blackhawk_helicopter_secondary_exp", undefined, undefined, undefined, 0.1, undefined, undefined );
|
||||
maps\_vehicle::build_deathfx( "vfx/gameplay/explosions/vfx_exp_silenthawk_init", "tag_rotor_fx", "blackhawk_helicopter_secondary_exp", undefined, undefined, undefined, 0.1, undefined, undefined );
|
||||
maps\_vehicle::build_deathfx( var_4, undefined, "blackhawk_helicopter_crash", undefined, undefined, undefined, -1, undefined, "stop_crash_loop_sound" );
|
||||
maps\_vehicle::build_rocket_deathfx( "vfx/gameplay/explosions/vfx_exp_nh90_deathspin", "tag_deathfx", undefined, undefined, undefined, undefined, undefined, 1, undefined, 0 );
|
||||
maps\_vehicle::build_rocket_deathfx( "vfx/gameplay/explosions/vfx_exp_silenthawk_init", "tag_deathfx", undefined, undefined, undefined, undefined, undefined, 1, undefined, 0 );
|
||||
maps\_vehicle::build_mainturret();
|
||||
}
|
||||
|
||||
maps\_vehicle::build_treadfx( var_2, "default", "vfx/gameplay/tread_fx/vfx_heli_dust", 0 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
|
||||
if ( var_2 != "script_vehicle_nh90_cheaper" )
|
||||
{
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_attach_models( ::set_attached_models );
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
}
|
||||
|
||||
var_5 = "minigun_littlebird_spinnup";
|
||||
var_6 = randomfloatrange( 0, 1 );
|
||||
|
||||
if ( var_2 != "script_vehicle_nh90_cheaper" )
|
||||
{
|
||||
maps\_vehicle::build_light( var_2, "cockpit_blue_cargo01", "tag_light_cargo01", "fx/misc/aircraft_light_cockpit_red", "interior", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "cockpit_blue_cockpit01", "tag_light_cockpit01", "fx/misc/aircraft_light_cockpit_blue", "interior", 0.1 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink", "tag_light_belly", "fx/misc/aircraft_light_white_blink", "running", var_6 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink_tail", "tag_light_tail", "fx/misc/aircraft_light_red_blink", "running", var_6 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_green", "tag_light_L_wing", "fx/misc/aircraft_light_wingtip_green", "running", var_6 );
|
||||
maps\_vehicle::build_light( var_2, "wingtip_red", "tag_light_R_wing", "fx/misc/aircraft_light_wingtip_red", "running", var_6 );
|
||||
maps\_vehicle::build_light( var_2, "spot", "tag_passenger", "fx/misc/aircraft_light_hindspot", "spot", 0.0 );
|
||||
}
|
||||
|
||||
maps\_vehicle::build_is_helicopter();
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
if ( self.classname != "script_vehicle_nh90_cheaper" )
|
||||
self.fastropeoffset = 744 + distance( self gettagorigin( "tag_origin" ), self gettagorigin( "tag_ground" ) );
|
||||
|
||||
self.script_badplace = 0;
|
||||
maps\_vehicle::vehicle_lights_on( "running" );
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
|
||||
var_0[var_1].vehicle_getoutanim = %bh_idle;
|
||||
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("fastrope");
|
||||
|
||||
setplayer_anims( var_0 )
|
||||
{
|
||||
var_0[3].player_idle = %bh_player_idle;
|
||||
var_0[3].player_getout = %bh_player_drop;
|
||||
var_0[3].player_animtree = #animtree;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 9; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].idle[0] = %helicopter_pilot1_idle;
|
||||
var_0[0].idle[1] = %helicopter_pilot1_twitch_clickpannel;
|
||||
var_0[0].idle[2] = %helicopter_pilot1_twitch_lookback;
|
||||
var_0[0].idle[3] = %helicopter_pilot1_twitch_lookoutside;
|
||||
var_0[0].idleoccurrence[0] = 500;
|
||||
var_0[0].idleoccurrence[1] = 100;
|
||||
var_0[0].idleoccurrence[2] = 100;
|
||||
var_0[0].idleoccurrence[3] = 100;
|
||||
var_0[1].idle[0] = %helicopter_pilot2_idle;
|
||||
var_0[1].idle[1] = %helicopter_pilot2_twitch_clickpannel;
|
||||
var_0[1].idle[2] = %helicopter_pilot2_twitch_lookoutside;
|
||||
var_0[1].idle[3] = %helicopter_pilot2_twitch_radio;
|
||||
var_0[1].idleoccurrence[0] = 450;
|
||||
var_0[1].idleoccurrence[1] = 100;
|
||||
var_0[1].idleoccurrence[2] = 100;
|
||||
var_0[1].idleoccurrence[3] = 100;
|
||||
var_0[0].bhasgunwhileriding = 0;
|
||||
var_0[1].bhasgunwhileriding = 0;
|
||||
var_0[2].idle = %bh_1_idle;
|
||||
var_0[3].idle = %bh_2_idle;
|
||||
var_0[4].idle = %bh_4_idle;
|
||||
var_0[5].idle = %bh_5_idle;
|
||||
var_0[6].idle = %bh_8_idle;
|
||||
var_0[7].idle = %bh_6_idle;
|
||||
var_0[8].idle = %bh_7_idle;
|
||||
var_0[0].sittag = "tag_driver";
|
||||
var_0[1].sittag = "tag_passenger";
|
||||
var_0[2].sittag = "tag_detach_r";
|
||||
var_0[3].sittag = "tag_detach_r";
|
||||
var_0[4].sittag = "tag_detach_l";
|
||||
var_0[5].sittag = "tag_detach_l";
|
||||
var_0[6].sittag = "tag_detach_l";
|
||||
var_0[7].sittag = "tag_detach_l";
|
||||
var_0[8].sittag = "tag_detach_r";
|
||||
var_0[2].getout = %bh_1_drop;
|
||||
var_0[3].getout = %bh_2_drop;
|
||||
var_0[4].getout = %bh_4_drop;
|
||||
var_0[5].getout = %bh_5_drop;
|
||||
var_0[6].getout = %bh_8_drop;
|
||||
var_0[7].getout = %bh_6_drop;
|
||||
var_0[8].getout = %bh_7_drop;
|
||||
var_0[2].getoutstance = "stand";
|
||||
var_0[3].getoutstance = "stand";
|
||||
var_0[4].getoutstance = "stand";
|
||||
var_0[5].getoutstance = "stand";
|
||||
var_0[6].getoutstance = "stand";
|
||||
var_0[7].getoutstance = "stand";
|
||||
var_0[8].getoutstance = "stand";
|
||||
var_0[2].ragdoll_getout_death = 1;
|
||||
var_0[3].ragdoll_getout_death = 1;
|
||||
var_0[4].ragdoll_getout_death = 1;
|
||||
var_0[5].ragdoll_getout_death = 1;
|
||||
var_0[6].ragdoll_getout_death = 1;
|
||||
var_0[7].ragdoll_getout_death = 1;
|
||||
var_0[8].ragdoll_getout_death = 1;
|
||||
var_0[2].ragdoll_fall_anim = %fastrope_fall;
|
||||
var_0[3].ragdoll_fall_anim = %fastrope_fall;
|
||||
var_0[4].ragdoll_fall_anim = %fastrope_fall;
|
||||
var_0[5].ragdoll_fall_anim = %fastrope_fall;
|
||||
var_0[6].ragdoll_fall_anim = %fastrope_fall;
|
||||
var_0[7].ragdoll_fall_anim = %fastrope_fall;
|
||||
var_0[8].ragdoll_fall_anim = %fastrope_fall;
|
||||
var_0[1].rappel_kill_achievement = 1;
|
||||
var_0[2].rappel_kill_achievement = 1;
|
||||
var_0[3].rappel_kill_achievement = 1;
|
||||
var_0[4].rappel_kill_achievement = 1;
|
||||
var_0[5].rappel_kill_achievement = 1;
|
||||
var_0[6].rappel_kill_achievement = 1;
|
||||
var_0[7].rappel_kill_achievement = 1;
|
||||
var_0[8].rappel_kill_achievement = 1;
|
||||
var_0[2].fastroperig = "TAG_FastRope_RI";
|
||||
var_0[3].fastroperig = "TAG_FastRope_RI";
|
||||
var_0[4].fastroperig = "TAG_FastRope_LE";
|
||||
var_0[5].fastroperig = "TAG_FastRope_LE";
|
||||
var_0[6].fastroperig = "TAG_FastRope_RI";
|
||||
var_0[7].fastroperig = "TAG_FastRope_LE";
|
||||
var_0[8].fastroperig = "TAG_FastRope_RI";
|
||||
return setplayer_anims( var_0 );
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["left"] = [];
|
||||
var_0["right"] = [];
|
||||
var_0["both"] = [];
|
||||
var_0["left"][var_0["left"].size] = 4;
|
||||
var_0["left"][var_0["left"].size] = 5;
|
||||
var_0["left"][var_0["left"].size] = 7;
|
||||
var_0["right"][var_0["right"].size] = 2;
|
||||
var_0["right"][var_0["right"].size] = 3;
|
||||
var_0["right"][var_0["right"].size] = 6;
|
||||
var_0["right"][var_0["right"].size] = 8;
|
||||
var_0["both"][var_0["both"].size] = 2;
|
||||
var_0["both"][var_0["both"].size] = 3;
|
||||
var_0["both"][var_0["both"].size] = 4;
|
||||
var_0["both"][var_0["both"].size] = 5;
|
||||
var_0["both"][var_0["both"].size] = 6;
|
||||
var_0["both"][var_0["both"].size] = 7;
|
||||
var_0["both"][var_0["both"].size] = 8;
|
||||
var_0["default"] = var_0["both"];
|
||||
return var_0;
|
||||
}
|
||||
|
||||
set_attached_models()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["TAG_FastRope_LE"] = spawnstruct();
|
||||
var_0["TAG_FastRope_LE"].model = "rope_test";
|
||||
var_0["TAG_FastRope_LE"].tag = "TAG_FastRope_LE";
|
||||
var_0["TAG_FastRope_LE"].idleanim = %bh_rope_idle_le;
|
||||
var_0["TAG_FastRope_LE"].dropanim = %bh_rope_drop_le;
|
||||
var_0["TAG_FastRope_RI"] = spawnstruct();
|
||||
var_0["TAG_FastRope_RI"].model = "rope_test_ri";
|
||||
var_0["TAG_FastRope_RI"].tag = "TAG_FastRope_RI";
|
||||
var_0["TAG_FastRope_RI"].idleanim = %bh_rope_idle_ri;
|
||||
var_0["TAG_FastRope_RI"].dropanim = %bh_rope_drop_ri;
|
||||
var_1 = getarraykeys( var_0 );
|
||||
|
||||
for ( var_2 = 0; var_2 < var_1.size; var_2++ )
|
||||
precachemodel( var_0[var_1[var_2]].model );
|
||||
|
||||
return var_0;
|
||||
}
|
61
vehicle_scripts/pickup_truck_civ.gsc
Normal file
61
vehicle_scripts/pickup_truck_civ.gsc
Normal file
@ -0,0 +1,61 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
build_truck( var_0, var_1, var_2 );
|
||||
}
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
build_truck( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "truck", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_drive( %technical_driving_idle_forward, %technical_driving_idle_backward, 10 );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_light( var_2, "headlight_truck_left", "tag_headlight_left", "fx/misc/car_headlight_truck_L", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "headlight_truck_right", "tag_headlight_right", "fx/misc/car_headlight_truck_R", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "taillight_truck_right", "tag_brakelight_right", "fx/misc/car_taillight_truck_R", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "taillight_truck_left", "tag_brakelight_left", "fx/misc/car_taillight_truck_L", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_truck_right", "tag_brakelight_right", "fx/misc/car_brakelight_truck_R", "brakelights" );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_truck_left", "tag_brakelight_left", "fx/misc/car_brakelight_truck_L", "brakelights" );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_0[0].vehicle_getinanim = %door_pickup_driver_climb_in;
|
||||
var_0[1].vehicle_getinanim = %door_pickup_passenger_climb_in;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 2; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_driver";
|
||||
var_0[0].idle = %yb_car_idle_driver_b;
|
||||
var_0[0].death = %yb_car_idle_driver_b;
|
||||
var_0[1].sittag = "tag_passenger";
|
||||
var_0[1].idle = %uaz_passenger_idle_drive;
|
||||
var_0[1].death = %uaz_passenger_idle_drive;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
|
||||
}
|
50
vehicle_scripts/sedan_4door.gsc
Normal file
50
vehicle_scripts/sedan_4door.gsc
Normal file
@ -0,0 +1,50 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
build_car( var_0, var_1, var_2 );
|
||||
}
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
build_car( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "coupe", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_drive( %technical_driving_idle_forward, %technical_driving_idle_backward, 10 );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_0[0].vehicle_getinanim = %door_pickup_driver_climb_in;
|
||||
var_0[1].vehicle_getinanim = %door_pickup_passenger_climb_in;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 2; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_driver";
|
||||
var_0[0].idle = %yb_car_idle_driver_b;
|
||||
var_0[0].death = %yb_car_idle_driver_b;
|
||||
var_0[1].sittag = "tag_passenger";
|
||||
var_0[1].idle = %uaz_passenger_idle_drive;
|
||||
var_0[1].death = %uaz_passenger_idle_drive;
|
||||
return var_0;
|
||||
}
|
212
vehicle_scripts/silenthawk.gsc
Normal file
212
vehicle_scripts/silenthawk.gsc
Normal file
@ -0,0 +1,212 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "silenthawk", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_silenthawk" );
|
||||
var_3 = var_2 == "script_vehicle_silenthawk_flood_player" || var_2 == "script_vehicle_silenthawk_player_turret_left" || var_2 == "script_vehicle_silenthawk_open" || var_2 == "script_vehicle_silenthawk_oilrocks" || var_2 == "script_vehicle_silenthawk_open_lite";
|
||||
var_4 = var_2 == "script_vehicle_silenthawk_open_lite";
|
||||
|
||||
if ( var_3 )
|
||||
maps\_vehicle::build_drive( %silenthawk_doors_open, undefined, 0 );
|
||||
else
|
||||
maps\_vehicle::build_drive( %bh_rotors, undefined, 0 );
|
||||
|
||||
if ( !var_4 )
|
||||
{
|
||||
maps\_vehicle::build_deathfx( "vfx/gameplay/explosions/vfx_exp_silenthawk_end", undefined, "blackhawk_helicopter_crash", undefined, undefined, undefined, -1, undefined, "stop_crash_loop_sound" );
|
||||
maps\_vehicle::build_deathfx( "vfx/gameplay/explosions/vfx_exp_silenthawk_init", "tag_body", "blackhawk_helicopter_secondary_exp", undefined, undefined, undefined, 0.1, 1, undefined );
|
||||
maps\_vehicle::build_deathfx( "vfx/gameplay/explosions/vfx_exp_silenthawk_deathspin", "tag_body", "blackhawk_helicopter_secondary_exp", undefined, undefined, undefined, 0.1, 1, undefined );
|
||||
maps\_vehicle::build_rocket_deathfx( "vfx/gameplay/explosions/vfx_exp_silenthawk_init", "tag_body", "blackhawk_helicopter_crash", undefined, undefined, undefined, undefined, 1, undefined, 0 );
|
||||
maps\_vehicle::build_rocket_deathfx( "vfx/gameplay/explosions/vfx_exp_silenthawk_deathspin", "tag_body", "blackhawk_helicopter_crash", undefined, undefined, undefined, undefined, 1, undefined, 0 );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
}
|
||||
|
||||
maps\_vehicle::build_treadfx( var_2, "default", "vfx/gameplay/tread_fx/vfx_heli_dust_sand", 1 );
|
||||
maps\_vehicle::build_treadfx( var_2, "sand", "vfx/gameplay/tread_fx/vfx_heli_dust_sand", 1 );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_team( "allies" );
|
||||
maps\_vehicle::build_bulletshield( 1 );
|
||||
maps\_vehicle::build_light( var_2, "cockpit_blue_cargo01", "tag_light_cargo01", "fx/misc/aircraft_light_cockpit_red", "interior", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "cockpit_blue_cockpit01", "tag_light_cockpit01", "fx/misc/aircraft_light_cockpit_blue", "interior", 0.0 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink", "tag_light_belly", "fx/misc/aircraft_light_white_blink", "running", 0.1 );
|
||||
maps\_vehicle::build_light( var_2, "white_blink_tail", "tag_light_tail", "fx/misc/aircraft_light_white_blink", "running", 0.1 );
|
||||
|
||||
if ( issubstr( var_2, "turret_left" ) )
|
||||
maps\_vehicle::build_turret( "nym_blackhawk_minigun_close_stand", "tag_player1", "weapon_blackhawk_minigun", undefined, undefined, 0.2, 20, -14, ( 25, 0, 6 ) );
|
||||
|
||||
if ( var_2 == "script_vehicle_silenthawk_oilrocks" )
|
||||
{
|
||||
maps\_vehicle::build_turret( "nym_blackhawk_minigun_close", "tag_turret_npc", "weapon_blackhawk_minigun", undefined, "auto_nonai", 0.2, 20, -14, ( 0, 12, -4 ) );
|
||||
maps\_vehicle::build_turret( "nym_blackhawk_minigun_close", "tag_gun_l", "weapon_blackhawk_minigun", undefined, "auto_nonai", 0.2, 20, -14, ( 0, 0, -4 ) );
|
||||
}
|
||||
|
||||
maps\_vehicle::build_is_helicopter();
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
self.script_badplace = 0;
|
||||
maps\_vehicle::vehicle_lights_on( "running" );
|
||||
maps\_vehicle::vehicle_lights_on( "interior" );
|
||||
maps\_vehicle::vehicle_lights_on( "exhaust" );
|
||||
thread vehicle_scripts\silenthawk_landing::silenthawk_landing();
|
||||
|
||||
if ( self.classname != "script_vehicle_silenthawk_open_lite" )
|
||||
thread vehicle_scripts\silenthawk_landing::listen_for_landing_gear_messages();
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#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;
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 8; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_pilot1";
|
||||
var_0[1].sittag = "tag_pilot2";
|
||||
var_0[2].sittag = "tag_detach_right";
|
||||
var_0[3].sittag = "tag_detach_right";
|
||||
var_0[4].sittag = "tag_detach_right";
|
||||
var_0[5].sittag = "tag_detach_left";
|
||||
var_0[6].sittag = "tag_detach_left";
|
||||
var_0[7].sittag = "tag_detach_left";
|
||||
var_0[0].idle[0] = %helicopter_pilot1_idle;
|
||||
var_0[0].idle[1] = %helicopter_pilot1_twitch_clickpannel;
|
||||
var_0[0].idle[2] = %helicopter_pilot1_twitch_lookback;
|
||||
var_0[0].idle[3] = %helicopter_pilot1_twitch_lookoutside;
|
||||
var_0[0].idleoccurrence[0] = 500;
|
||||
var_0[0].idleoccurrence[1] = 100;
|
||||
var_0[0].idleoccurrence[2] = 100;
|
||||
var_0[0].idleoccurrence[3] = 100;
|
||||
var_0[1].idle[0] = %helicopter_pilot2_idle;
|
||||
var_0[1].idle[1] = %helicopter_pilot2_twitch_clickpannel;
|
||||
var_0[1].idle[2] = %helicopter_pilot2_twitch_lookoutside;
|
||||
var_0[1].idle[3] = %helicopter_pilot2_twitch_radio;
|
||||
var_0[1].idleoccurrence[0] = 450;
|
||||
var_0[1].idleoccurrence[1] = 100;
|
||||
var_0[1].idleoccurrence[2] = 100;
|
||||
var_0[1].idleoccurrence[3] = 100;
|
||||
var_0[2].idle[0] = %little_bird_casual_idle_guy1;
|
||||
var_0[3].idle[0] = %little_bird_casual_idle_guy3;
|
||||
var_0[4].idle[0] = %little_bird_casual_idle_guy2;
|
||||
var_0[5].idle[0] = %little_bird_casual_idle_guy1;
|
||||
var_0[6].idle[0] = %little_bird_casual_idle_guy3;
|
||||
var_0[7].idle[0] = %little_bird_casual_idle_guy2;
|
||||
var_0[2].idleoccurrence[0] = 100;
|
||||
var_0[3].idleoccurrence[0] = 166;
|
||||
var_0[4].idleoccurrence[0] = 122;
|
||||
var_0[5].idleoccurrence[0] = 177;
|
||||
var_0[6].idleoccurrence[0] = 136;
|
||||
var_0[7].idleoccurrence[0] = 188;
|
||||
var_0[2].idle[1] = %little_bird_aim_idle_guy1;
|
||||
var_0[3].idle[1] = %little_bird_aim_idle_guy3;
|
||||
var_0[4].idle[1] = %little_bird_aim_idle_guy2;
|
||||
var_0[5].idle[1] = %little_bird_aim_idle_guy1;
|
||||
var_0[7].idle[1] = %little_bird_aim_idle_guy2;
|
||||
var_0[2].idleoccurrence[1] = 200;
|
||||
var_0[3].idleoccurrence[1] = 266;
|
||||
var_0[4].idleoccurrence[1] = 156;
|
||||
var_0[5].idleoccurrence[1] = 277;
|
||||
var_0[7].idleoccurrence[1] = 288;
|
||||
var_0[2].idle_alert = %little_bird_alert_idle_guy1;
|
||||
var_0[3].idle_alert = %little_bird_alert_idle_guy3;
|
||||
var_0[4].idle_alert = %little_bird_alert_idle_guy2;
|
||||
var_0[5].idle_alert = %little_bird_alert_idle_guy1;
|
||||
var_0[6].idle_alert = %little_bird_alert_idle_guy3;
|
||||
var_0[7].idle_alert = %little_bird_alert_idle_guy2;
|
||||
var_0[2].idle_alert_to_casual = %little_bird_alert_2_aim_guy1;
|
||||
var_0[3].idle_alert_to_casual = %little_bird_alert_2_aim_guy3;
|
||||
var_0[4].idle_alert_to_casual = %little_bird_alert_2_aim_guy2;
|
||||
var_0[5].idle_alert_to_casual = %little_bird_alert_2_aim_guy1;
|
||||
var_0[6].idle_alert_to_casual = %little_bird_alert_2_aim_guy3;
|
||||
var_0[7].idle_alert_to_casual = %little_bird_alert_2_aim_guy2;
|
||||
var_0[2].getout = %little_bird_dismount_guy1;
|
||||
var_0[3].getout = %little_bird_dismount_guy3;
|
||||
var_0[4].getout = %little_bird_dismount_guy2;
|
||||
var_0[5].getout = %little_bird_dismount_guy1;
|
||||
var_0[6].getout = %little_bird_dismount_guy3;
|
||||
var_0[7].getout = %little_bird_dismount_guy2;
|
||||
var_0[2].littlebirde_getout_unlinks = 1;
|
||||
var_0[3].littlebirde_getout_unlinks = 1;
|
||||
var_0[4].littlebirde_getout_unlinks = 1;
|
||||
var_0[5].littlebirde_getout_unlinks = 1;
|
||||
var_0[6].littlebirde_getout_unlinks = 1;
|
||||
var_0[7].littlebirde_getout_unlinks = 1;
|
||||
var_0[2].getin = %little_bird_mount_guy1;
|
||||
var_0[2].getin_enteredvehicletrack = "mount_finish";
|
||||
var_0[3].getin = %little_bird_mount_guy3;
|
||||
var_0[3].getin_enteredvehicletrack = "mount_finish";
|
||||
var_0[4].getin = %little_bird_mount_guy2;
|
||||
var_0[4].getin_enteredvehicletrack = "mount_finish";
|
||||
var_0[5].getin = %little_bird_mount_guy1;
|
||||
var_0[5].getin_enteredvehicletrack = "mount_finish";
|
||||
var_0[6].getin = %little_bird_mount_guy3;
|
||||
var_0[6].getin_enteredvehicletrack = "mount_finish";
|
||||
var_0[7].getin = %little_bird_mount_guy2;
|
||||
var_0[7].getin_enteredvehicletrack = "mount_finish";
|
||||
var_0[2].getin_idle_func = maps\_vehicle_aianim::guy_idle_alert;
|
||||
var_0[3].getin_idle_func = maps\_vehicle_aianim::guy_idle_alert;
|
||||
var_0[4].getin_idle_func = maps\_vehicle_aianim::guy_idle_alert;
|
||||
var_0[5].getin_idle_func = maps\_vehicle_aianim::guy_idle_alert;
|
||||
var_0[6].getin_idle_func = maps\_vehicle_aianim::guy_idle_alert;
|
||||
var_0[7].getin_idle_func = maps\_vehicle_aianim::guy_idle_alert;
|
||||
var_0[2].pre_unload = %little_bird_aim_2_prelanding_guy1;
|
||||
var_0[3].pre_unload = %little_bird_aim_2_prelanding_guy3;
|
||||
var_0[4].pre_unload = %little_bird_aim_2_prelanding_guy2;
|
||||
var_0[5].pre_unload = %little_bird_aim_2_prelanding_guy1;
|
||||
var_0[6].pre_unload = %little_bird_aim_2_prelanding_guy3;
|
||||
var_0[7].pre_unload = %little_bird_aim_2_prelanding_guy2;
|
||||
var_0[2].pre_unload_idle = %little_bird_prelanding_idle_guy1;
|
||||
var_0[3].pre_unload_idle = %little_bird_prelanding_idle_guy3;
|
||||
var_0[4].pre_unload_idle = %little_bird_prelanding_idle_guy2;
|
||||
var_0[5].pre_unload_idle = %little_bird_prelanding_idle_guy1;
|
||||
var_0[6].pre_unload_idle = %little_bird_prelanding_idle_guy3;
|
||||
var_0[7].pre_unload_idle = %little_bird_prelanding_idle_guy2;
|
||||
var_0[0].bhasgunwhileriding = 0;
|
||||
var_0[1].bhasgunwhileriding = 0;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["first_guy_left"] = [];
|
||||
var_0["first_guy_right"] = [];
|
||||
var_0["left"] = [];
|
||||
var_0["right"] = [];
|
||||
var_0["passengers"] = [];
|
||||
var_0["default"] = [];
|
||||
var_0["first_guy_left"][0] = 5;
|
||||
var_0["first_guy_right"][0] = 2;
|
||||
var_0["stage_guy_left"][0] = 7;
|
||||
var_0["stage_guy_right"][0] = 4;
|
||||
var_0["left"][var_0["left"].size] = 5;
|
||||
var_0["left"][var_0["left"].size] = 6;
|
||||
var_0["left"][var_0["left"].size] = 7;
|
||||
var_0["right"][var_0["right"].size] = 2;
|
||||
var_0["right"][var_0["right"].size] = 3;
|
||||
var_0["right"][var_0["right"].size] = 4;
|
||||
var_0["passengers"][var_0["passengers"].size] = 2;
|
||||
var_0["passengers"][var_0["passengers"].size] = 3;
|
||||
var_0["passengers"][var_0["passengers"].size] = 4;
|
||||
var_0["passengers"][var_0["passengers"].size] = 5;
|
||||
var_0["passengers"][var_0["passengers"].size] = 6;
|
||||
var_0["passengers"][var_0["passengers"].size] = 7;
|
||||
var_0["default"] = var_0["passengers"];
|
||||
return var_0;
|
||||
}
|
304
vehicle_scripts/silenthawk_landing.gsc
Normal file
304
vehicle_scripts/silenthawk_landing.gsc
Normal file
@ -0,0 +1,304 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
init_silenthawk_landing()
|
||||
{
|
||||
if ( isdefined( level.little_bird_landing_init ) )
|
||||
return;
|
||||
|
||||
level.little_bird_landing_init = 1;
|
||||
thread init_silenthawk_landing_thread();
|
||||
}
|
||||
|
||||
init_silenthawk_landing_thread()
|
||||
{
|
||||
waittillframeend;
|
||||
common_scripts\utility::array_thread( common_scripts\utility::getstructarray( "gag_stage_silenthawk_unload", "script_noteworthy" ), ::setup_gag_stage_silenthawk_unload );
|
||||
common_scripts\utility::array_thread( common_scripts\utility::getstructarray( "gag_stage_silenthawk_load", "script_noteworthy" ), ::setup_gag_stage_silenthawk_load );
|
||||
}
|
||||
|
||||
silenthawk_landing()
|
||||
{
|
||||
self endon( "death" );
|
||||
maps\_utility::ent_flag_init( "prep_unload" );
|
||||
maps\_utility::ent_flag_wait( "prep_unload" );
|
||||
maps\_vehicle_code::turn_unloading_drones_to_ai();
|
||||
var_0 = get_landing_node();
|
||||
var_0 silenthawk_lands_and_unloads( self );
|
||||
maps\_vehicle::vehicle_paths( var_0 );
|
||||
}
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
listen_for_landing_gear_messages()
|
||||
{
|
||||
self endon( "death" );
|
||||
var_0 = %silenthawk_landinggears_up;
|
||||
var_1 = %silenthawk_landinggears_down;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
var_2 = common_scripts\utility::waittill_any_return( "gear_up", "gear_down" );
|
||||
|
||||
if ( var_2 == "gear_up" )
|
||||
{
|
||||
self clearanim( var_1, 0 );
|
||||
self setanim( var_0 );
|
||||
continue;
|
||||
}
|
||||
|
||||
self clearanim( var_0, 0 );
|
||||
self setanim( var_1 );
|
||||
}
|
||||
}
|
||||
|
||||
stage_guy( var_0, var_1, var_2, var_3 )
|
||||
{
|
||||
var_4 = "stage_silenthawk_" + var_1;
|
||||
var_5 = [];
|
||||
var_5[0] = var_0;
|
||||
var_3 maps\_anim::anim_generic_reach( var_5[0], var_4, "tag_detach_" + var_1 );
|
||||
var_3 maps\_anim::anim_generic( var_5[0], var_4, "tag_detach_" + var_1 );
|
||||
maps\_utility::ent_flag_set( "staged_guy_" + var_1 );
|
||||
var_0 setgoalpos( common_scripts\utility::drop_to_ground( var_0.origin ) );
|
||||
var_0.goalradius = 16;
|
||||
maps\_utility::ent_flag_wait( "guy2_in_" + var_1 );
|
||||
thread maps\_vehicle_aianim::load_ai( [ var_0 ], undefined, var_1 );
|
||||
}
|
||||
|
||||
setup_gag_stage_silenthawk_unload()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
self waittill( "trigger", var_0 );
|
||||
silenthawk_lands_and_unloads( var_0 );
|
||||
}
|
||||
}
|
||||
|
||||
setup_gag_stage_silenthawk_load()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
self waittill( "trigger", var_0 );
|
||||
var_0 setdeceleration( 6 );
|
||||
var_0 setacceleration( 4 );
|
||||
var_0 settargetyaw( self.angles[1] );
|
||||
var_0 vehicle_setspeed( 20, 7, 7 );
|
||||
|
||||
while ( distance( common_scripts\utility::flat_origin( var_0.origin ), common_scripts\utility::flat_origin( self.origin ) ) > 256 )
|
||||
wait 0.05;
|
||||
|
||||
var_0 endon( "death" );
|
||||
var_0 thread vehicle_land_beneath_node( 220, self );
|
||||
var_0 waittill( "near_goal" );
|
||||
var_0 vehicle_setspeed( 20, 22, 7 );
|
||||
var_0 thread vehicle_land_beneath_node( 16, self );
|
||||
var_0 waittill( "near_goal" );
|
||||
var_0 maps\_vehicle_code::waittill_stable();
|
||||
var_0 notify( "touch_down", self );
|
||||
var_0 vehicle_setspeed( 20, 8, 7 );
|
||||
}
|
||||
}
|
||||
|
||||
silenthawk_lands_and_unloads( var_0 )
|
||||
{
|
||||
var_0 setdeceleration( 6 );
|
||||
var_0 setacceleration( 4 );
|
||||
var_0 settargetyaw( self.angles[1] );
|
||||
var_0 vehicle_setspeed( 20, 7, 7 );
|
||||
|
||||
while ( distance( common_scripts\utility::flat_origin( var_0.origin ), common_scripts\utility::flat_origin( self.origin ) ) > 512 )
|
||||
wait 0.05;
|
||||
|
||||
var_0 endon( "death" );
|
||||
var_1 = "landing" + randomint( 99999 );
|
||||
badplace_cylinder( var_1, 30, self.origin, 200, 300, "axis", "allies", "neutral", "team3" );
|
||||
var_0 thread vehicle_land_beneath_node( 424, self );
|
||||
var_0 waittill( "near_goal" );
|
||||
badplace_delete( var_1 );
|
||||
badplace_cylinder( var_1, 30, self.origin, 200, 300, "axis", "allies", "neutral", "team3" );
|
||||
var_0 notify( "groupedanimevent", "pre_unload" );
|
||||
var_0 thread maps\_vehicle_aianim::animate_guys( "pre_unload" );
|
||||
var_0 vehicle_setspeed( 20, 22, 7 );
|
||||
var_0 notify( "nearing_landing" );
|
||||
|
||||
if ( isdefined( var_0.custom_landing ) )
|
||||
{
|
||||
switch ( var_0.custom_landing )
|
||||
{
|
||||
case "hover_then_land":
|
||||
var_0 vehicle_setspeed( 10, 22, 7 );
|
||||
var_0 thread vehicle_land_beneath_node( 32, self, 64 );
|
||||
var_0 waittill( "near_goal" );
|
||||
var_0 notify( "hovering" );
|
||||
wait 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var_0 thread vehicle_land_beneath_node( 16, self );
|
||||
var_0 waittill( "near_goal" );
|
||||
badplace_delete( var_1 );
|
||||
maps\_utility::script_delay();
|
||||
var_0 maps\_vehicle::vehicle_unload();
|
||||
var_0 maps\_vehicle_code::waittill_stable();
|
||||
var_0 vehicle_setspeed( 20, 8, 7 );
|
||||
wait 0.2;
|
||||
var_0 notify( "stable_for_unlink" );
|
||||
wait 0.2;
|
||||
|
||||
if ( isdefined( self.script_flag_set ) )
|
||||
common_scripts\utility::flag_set( self.script_flag_set );
|
||||
|
||||
if ( isdefined( self.script_flag_wait ) )
|
||||
common_scripts\utility::flag_wait( self.script_flag_wait );
|
||||
|
||||
var_0 notify( "silenthawk_liftoff" );
|
||||
}
|
||||
|
||||
set_stage( var_0, var_1, var_2 )
|
||||
{
|
||||
if ( !maps\_utility::ent_flag_exist( "staged_guy_" + var_2 ) )
|
||||
maps\_utility::ent_flag_init( "staged_guy_" + var_2 );
|
||||
else
|
||||
maps\_utility::ent_flag_clear( "staged_guy_" + var_2 );
|
||||
|
||||
if ( !maps\_utility::ent_flag_exist( "guy2_in_" + var_2 ) )
|
||||
maps\_utility::ent_flag_init( "guy2_in_" + var_2 );
|
||||
else
|
||||
maps\_utility::ent_flag_clear( "guy2_in_" + var_2 );
|
||||
|
||||
var_3 = get_stage_nodes( var_0, var_2 );
|
||||
var_4 = common_scripts\utility::getstruct( var_0.target, "targetname" );
|
||||
var_5 = spawn( "script_model", ( 0, 0, 0 ) );
|
||||
var_5 setmodel( self.model );
|
||||
|
||||
if ( isdefined( self.new_stage_heli_spawn ) )
|
||||
var_5.origin = self.origin;
|
||||
else
|
||||
var_5.origin = common_scripts\utility::drop_to_ground( var_4.origin ) + ( 0, 0, self.originheightoffset );
|
||||
|
||||
var_5.angles = var_4.angles;
|
||||
var_5 hide();
|
||||
var_6 = undefined;
|
||||
var_7 = undefined;
|
||||
var_8 = undefined;
|
||||
|
||||
foreach ( var_10 in var_3 )
|
||||
{
|
||||
var_11 = undefined;
|
||||
|
||||
foreach ( var_13 in var_1 )
|
||||
{
|
||||
if ( isdefined( var_13.script_startingposition ) && var_13.script_startingposition == var_10.script_startingposition )
|
||||
{
|
||||
var_11 = var_13;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( !isdefined( var_11 ) )
|
||||
var_11 = common_scripts\utility::getclosest( var_10.origin, var_1 );
|
||||
|
||||
var_11.script_startingposition = var_10.script_startingposition;
|
||||
|
||||
if ( var_11.script_startingposition == 2 || var_11.script_startingposition == 5 )
|
||||
{
|
||||
var_6 = var_11;
|
||||
var_11 maps\_spawner::go_to_node_set_goal_node( var_10 );
|
||||
}
|
||||
else if ( var_11.script_startingposition == 3 || var_11.script_startingposition == 6 )
|
||||
var_8 = var_11;
|
||||
else if ( var_11.script_startingposition == 4 || var_11.script_startingposition == 7 )
|
||||
{
|
||||
var_7 = var_11;
|
||||
var_11 maps\_spawner::go_to_node_set_goal_node( var_10 );
|
||||
}
|
||||
|
||||
var_1 = common_scripts\utility::array_remove( var_1, var_11 );
|
||||
}
|
||||
|
||||
thread stage_guy( var_8, var_2, var_7, var_5 );
|
||||
thread common_scripts\utility::delete_on_death( var_5 );
|
||||
}
|
||||
|
||||
get_stage_nodes( var_0, var_1 )
|
||||
{
|
||||
var_2 = getnodearray( var_0.target, "targetname" );
|
||||
var_3 = [];
|
||||
|
||||
foreach ( var_5 in var_2 )
|
||||
{
|
||||
if ( var_5.script_noteworthy == "stage_" + var_1 )
|
||||
var_3[var_3.size] = var_5;
|
||||
}
|
||||
|
||||
return var_3;
|
||||
}
|
||||
|
||||
get_landing_node()
|
||||
{
|
||||
var_0 = self.currentnode;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
var_1 = maps\_utility::getent_or_struct( var_0.target, "targetname" );
|
||||
|
||||
if ( isdefined( var_1.script_unload ) )
|
||||
return var_1;
|
||||
|
||||
var_0 = var_1;
|
||||
}
|
||||
}
|
||||
|
||||
load_side( var_0, var_1 )
|
||||
{
|
||||
var_2 = undefined;
|
||||
var_3 = undefined;
|
||||
var_4 = undefined;
|
||||
|
||||
foreach ( var_6 in var_1 )
|
||||
{
|
||||
if ( var_6.script_startingposition == 2 || var_6.script_startingposition == 5 )
|
||||
{
|
||||
var_2 = var_6;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( var_6.script_startingposition == 3 || var_6.script_startingposition == 6 )
|
||||
{
|
||||
var_4 = var_6;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( var_6.script_startingposition == 4 || var_6.script_startingposition == 7 )
|
||||
var_3 = var_6;
|
||||
}
|
||||
|
||||
maps\_utility::ent_flag_wait( "staged_guy_" + var_0 );
|
||||
thread maps\_vehicle::vehicle_load_ai_single( var_2, undefined, var_0 );
|
||||
var_2 waittill( "boarding_vehicle" );
|
||||
thread maps\_vehicle::vehicle_load_ai_single( var_3, undefined, var_0 );
|
||||
var_3 waittill( "boarding_vehicle" );
|
||||
maps\_utility::ent_flag_set( "guy2_in_" + var_0 );
|
||||
}
|
||||
|
||||
vehicle_land_beneath_node( var_0, var_1, var_2 )
|
||||
{
|
||||
if ( !isdefined( var_2 ) )
|
||||
var_2 = 0;
|
||||
|
||||
self notify( "newpath" );
|
||||
|
||||
if ( !isdefined( var_0 ) )
|
||||
var_0 = 2;
|
||||
|
||||
self setneargoalnotifydist( var_0 );
|
||||
self sethoverparams( 0, 0, 0 );
|
||||
self cleargoalyaw();
|
||||
self settargetyaw( common_scripts\utility::flat_angle( var_1.angles )[1] );
|
||||
maps\_vehicle_code::_setvehgoalpos_wrap( maps\_utility::groundpos( var_1.origin ) + ( 0, 0, var_2 ), 1 );
|
||||
self waittill( "goal" );
|
||||
}
|
65
vehicle_scripts/t90ms.gsc
Normal file
65
vehicle_scripts/t90ms.gsc
Normal file
@ -0,0 +1,65 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "t90ms", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
|
||||
if ( var_2 == "script_vehicle_t90ms_sand" )
|
||||
{
|
||||
maps\_vehicle::build_deathmodel( "vehicle_t90ms_tank_iw6", "vehicle_t90ms_tank_d_noturret_iw6", 0.25 );
|
||||
maps\_vehicle::build_deathfx( "vfx/gameplay/explosions/vehicle/vfx_big_tank_explosion", "tag_deathfx", "exp_armor_vehicle", undefined, undefined, undefined, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\_vehicle::build_deathmodel( var_0, "vehicle_t90ms_tank_destroyed_iw6" );
|
||||
maps\_vehicle::build_deathfx( "vfx/gameplay/explosions/vfx_exp_t90ms_end", "tag_deathfx", "exp_armor_vehicle", undefined, undefined, undefined, 0 );
|
||||
}
|
||||
|
||||
maps\_vehicle::build_shoot_shock( "tankblast" );
|
||||
maps\_vehicle::build_drive( %t90ms_driving_idle_forward, %t90ms_driving_idle_forward, 10 );
|
||||
|
||||
if ( !issubstr( var_2, "sand" ) )
|
||||
maps\_vehicle::build_turret( "t90_turret2", "tag_turret2", "vehicle_t90_PKT_Coaxial_MG" );
|
||||
|
||||
if ( issubstr( var_2, "_turret_flood" ) )
|
||||
maps\_vehicle::build_turret( "dshk_gaz_flood", "TAG_MACHINE_GUN", "vehicle_t90ms_tank_iw6_remote_gun", 1028, "auto_ai", 0.2, 20, -14 );
|
||||
else if ( issubstr( var_2, "_turret" ) )
|
||||
maps\_vehicle::build_turret( "dshk_gaz", "TAG_MACHINE_GUN", "vehicle_t90ms_tank_iw6_remote_gun", 1028, "auto_ai", 0.2, 20, -14 );
|
||||
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_rumble( "tank_rumble", 0.15, 4.5, 600, 1, 1 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_mainturret();
|
||||
maps\_vehicle::build_frontarmor( 0.33 );
|
||||
maps\_vehicle::build_bulletshield( 1 );
|
||||
maps\_vehicle::build_aianims( ::setanims, ::set_vehicle_anims );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0[0] = spawnstruct();
|
||||
var_0[0].sittag = "tag_turret_hatch";
|
||||
var_0[0].sittag_offset = ( 0, 0, -16 );
|
||||
var_0[0].bhasgunwhileriding = 0;
|
||||
var_0[0].idle = %gaz_turret_idle;
|
||||
var_0[0].mgturret = 1;
|
||||
return var_0;
|
||||
}
|
166
vehicle_scripts/tatra_t815.gsc
Normal file
166
vehicle_scripts/tatra_t815.gsc
Normal file
@ -0,0 +1,166 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "tatra_t815", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_tatra_t815_iw6" );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/large_vehicle_explosion", undefined, "car_explode", undefined, undefined, undefined, 0 );
|
||||
maps\_vehicle::build_deathfx( "fx/fire/firelp_med_pm", "tag_fx_tire_right_r", undefined, undefined, undefined, 1, 0 );
|
||||
maps\_vehicle::build_deathfx( "fx/fire/firelp_med_pm", "tag_fx_cab", "fire_metal_medium", undefined, undefined, 1, 0 );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/small_vehicle_explosion", "tag_fx_tank", "explo_metal_rand", undefined, undefined, undefined, 2 );
|
||||
maps\_vehicle::build_deathquake( 1, 1.6, 500 );
|
||||
maps\_vehicle::build_life( 399 );
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_bulletshield( 1 );
|
||||
var_3 = ::setanims;
|
||||
var_4 = ::set_vehicle_anims;
|
||||
maps\_vehicle::build_aianims( var_3, var_4 );
|
||||
maps\_vehicle::build_unload_groups( ::unload_groups );
|
||||
maps\_vehicle::build_light( var_2, "headlight_truck_left", "tag_headlight_left", "fx/misc/lighthaze", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "headlight_truck_right", "tag_headlight_right", "fx/misc/lighthaze", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "headlight_truck_left2", "tag_headlight_left", "fx/misc/car_headlight_bm21", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "headlight_truck_right2", "tag_headlight_right", "fx/misc/car_headlight_bm21", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "parkinglight_truck_left_f", "tag_parkinglight_left_f", "fx/misc/car_parkinglight_bm21", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "parkinglight_truck_right_f", "tag_parkinglight_right_f", "fx/misc/car_parkinglight_bm21", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "taillight_truck_right", "tag_taillight_right", "fx/misc/car_taillight_bm21", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "taillight_truck_left", "tag_taillight_left", "fx/misc/car_taillight_bm21", "headlights" );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_troops_right", "tag_taillight_right", "fx/misc/car_taillight_bm21", "brakelights" );
|
||||
maps\_vehicle::build_light( var_2, "brakelight_troops_left", "tag_taillight_left", "fx/misc/car_taillight_bm21", "brakelights" );
|
||||
maps\_vehicle::build_drive( %bm21_driving_idle_forward, %bm21_driving_idle_backward, 10 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
set_vehicle_anims( var_0 )
|
||||
{
|
||||
var_0[0].vehicle_getoutanim = %bm21_driver_climbout_door;
|
||||
var_0[1].vehicle_getoutanim = %bm21_passenger_climbout_door;
|
||||
var_0[2].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[3].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[4].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[5].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[6].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[7].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[8].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[9].vehicle_getoutanim = %bm21_guy_climbout_truckdoor;
|
||||
var_0[0].vehicle_getoutsoundtag = "left_door";
|
||||
var_0[1].vehicle_getoutsoundtag = "right_door";
|
||||
var_0[2].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[3].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[4].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[5].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[6].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[7].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[8].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[9].vehicle_getoutsoundtag = "back_board";
|
||||
var_0[0].vehicle_getoutanim_clear = 1;
|
||||
var_0[1].vehicle_getoutanim_clear = 1;
|
||||
var_0[2].vehicle_getoutanim_clear = 0;
|
||||
var_0[3].vehicle_getoutanim_clear = 0;
|
||||
var_0[4].vehicle_getoutanim_clear = 0;
|
||||
var_0[5].vehicle_getoutanim_clear = 0;
|
||||
var_0[6].vehicle_getoutanim_clear = 0;
|
||||
var_0[7].vehicle_getoutanim_clear = 0;
|
||||
var_0[8].vehicle_getoutanim_clear = 0;
|
||||
var_0[9].vehicle_getoutanim_clear = 0;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
#using_animtree("generic_human");
|
||||
|
||||
setanims()
|
||||
{
|
||||
var_0 = [];
|
||||
|
||||
for ( var_1 = 0; var_1 < 10; var_1++ )
|
||||
var_0[var_1] = spawnstruct();
|
||||
|
||||
var_0[0].sittag = "tag_driver";
|
||||
var_0[1].sittag = "tag_passenger";
|
||||
var_0[2].sittag = "tag_detach";
|
||||
var_0[3].sittag = "tag_detach";
|
||||
var_0[4].sittag = "tag_detach";
|
||||
var_0[5].sittag = "tag_detach";
|
||||
var_0[6].sittag = "tag_detach";
|
||||
var_0[7].sittag = "tag_detach";
|
||||
var_0[8].sittag = "tag_detach";
|
||||
var_0[9].sittag = "tag_detach";
|
||||
var_0[0].idle = %bm21_driver_idle;
|
||||
var_0[1].idle = %bm21_passenger_idle;
|
||||
var_0[2].idle = %bm21_guy1_idle;
|
||||
var_0[3].idle = %bm21_guy2_idle;
|
||||
var_0[4].idle = %bm21_guy3_idle;
|
||||
var_0[5].idle = %bm21_guy4_idle;
|
||||
var_0[6].idle = %bm21_guy5_idle;
|
||||
var_0[7].idle = %bm21_guy6_idle;
|
||||
var_0[8].idle = %bm21_guy7_idle;
|
||||
var_0[9].idle = %bm21_guy8_idle;
|
||||
var_0[0].getout = %bm21_driver_climbout;
|
||||
var_0[1].getout = %bm21_passenger_climbout;
|
||||
var_0[2].getout = %bm21_guy1_climbout;
|
||||
var_0[2].delay = 2;
|
||||
var_0[3].getout = %bm21_guy2_climbout;
|
||||
var_0[3].delay = 1.5;
|
||||
var_0[4].getout = %bm21_guy3_climbout;
|
||||
var_0[5].getout = %bm21_guy4_climbout;
|
||||
var_0[6].getout = %bm21_guy5_climbout;
|
||||
var_0[6].delay = 1.5;
|
||||
var_0[7].getout = %bm21_guy6_climbout;
|
||||
var_0[7].delay = 1.5;
|
||||
var_0[8].getout = %bm21_guy7_climbout;
|
||||
var_0[8].delay = 1.5;
|
||||
var_0[9].getout = %bm21_guy8_climbout;
|
||||
var_0[2].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[3].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[4].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[6].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[7].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[8].getout_secondary = %bm21_guy_climbout_landing;
|
||||
var_0[2].explosion_death = %death_explosion_up10;
|
||||
var_0[3].explosion_death = %death_explosion_up10;
|
||||
var_0[4].explosion_death = %death_explosion_up10;
|
||||
var_0[5].explosion_death = %death_explosion_up10;
|
||||
var_0[6].explosion_death = %death_explosion_up10;
|
||||
var_0[7].explosion_death = %death_explosion_up10;
|
||||
var_0[8].explosion_death = %death_explosion_up10;
|
||||
var_0[9].explosion_death = %death_explosion_up10;
|
||||
return var_0;
|
||||
}
|
||||
|
||||
unload_groups()
|
||||
{
|
||||
var_0 = [];
|
||||
var_0["passengers"] = [];
|
||||
var_0["all"] = [];
|
||||
var_1 = "passengers";
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0[var_1][var_0[var_1].size] = 4;
|
||||
var_0[var_1][var_0[var_1].size] = 5;
|
||||
var_0[var_1][var_0[var_1].size] = 6;
|
||||
var_0[var_1][var_0[var_1].size] = 7;
|
||||
var_0[var_1][var_0[var_1].size] = 8;
|
||||
var_0[var_1][var_0[var_1].size] = 9;
|
||||
var_1 = "all";
|
||||
var_0[var_1][var_0[var_1].size] = 0;
|
||||
var_0[var_1][var_0[var_1].size] = 1;
|
||||
var_0[var_1][var_0[var_1].size] = 2;
|
||||
var_0[var_1][var_0[var_1].size] = 3;
|
||||
var_0[var_1][var_0[var_1].size] = 4;
|
||||
var_0[var_1][var_0[var_1].size] = 5;
|
||||
var_0[var_1][var_0[var_1].size] = 6;
|
||||
var_0[var_1][var_0[var_1].size] = 7;
|
||||
var_0[var_1][var_0[var_1].size] = 8;
|
||||
var_0[var_1][var_0[var_1].size] = 9;
|
||||
var_0["default"] = var_0["all"];
|
||||
return var_0;
|
||||
}
|
24
vehicle_scripts/y_8_gunship.gsc
Normal file
24
vehicle_scripts/y_8_gunship.gsc
Normal file
@ -0,0 +1,24 @@
|
||||
// IW6 GSC SOURCE
|
||||
// Generated by https://github.com/xensik/gsc-tool
|
||||
|
||||
#using_animtree("vehicles");
|
||||
|
||||
main( var_0, var_1, var_2 )
|
||||
{
|
||||
maps\_vehicle::build_template( "y_8", var_0, var_1, var_2 );
|
||||
maps\_vehicle::build_localinit( ::init_local );
|
||||
maps\_vehicle::build_deathmodel( "vehicle_y_8" );
|
||||
maps\_vehicle::build_drive( %y8_gunship_props, undefined, 0 );
|
||||
maps\_vehicle::build_deathfx( "fx/explosions/large_vehicle_explosion", undefined, "explo_metal_rand" );
|
||||
maps\_vehicle::build_life( 999, 500, 1500 );
|
||||
maps\_vehicle::build_treadfx();
|
||||
maps\_vehicle::build_team( "axis" );
|
||||
maps\_vehicle::build_is_airplane();
|
||||
maps\_vehicle::build_bulletshield( 1 );
|
||||
maps\_vehicle::build_grenadeshield( 1 );
|
||||
}
|
||||
|
||||
init_local()
|
||||
{
|
||||
|
||||
}
|
Reference in New Issue
Block a user