185 lines
5.0 KiB
Plaintext
185 lines
5.0 KiB
Plaintext
// 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;
|
|
}
|
|
}
|