534 lines
14 KiB
Plaintext
534 lines
14 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
array_keep_values( var_0, var_1, var_2, var_3 )
|
|
{
|
|
if ( !isdefined( var_1 ) || !isdefined( var_2 ) )
|
|
return var_0;
|
|
|
|
var_3 = tolower( common_scripts\utility::ter_op( isdefined( var_3 ), var_3, "and" ) );
|
|
|
|
switch ( var_3 )
|
|
{
|
|
case "or":
|
|
case "and":
|
|
break;
|
|
default:
|
|
var_3 = "and";
|
|
}
|
|
|
|
var_4 = [];
|
|
var_5 = 1;
|
|
|
|
foreach ( var_7 in var_0 )
|
|
{
|
|
switch ( var_3 )
|
|
{
|
|
case "and":
|
|
var_5 = 1;
|
|
|
|
foreach ( var_11, var_9 in var_1 )
|
|
{
|
|
var_10 = var_7 get_key( var_9 );
|
|
|
|
if ( !compare( var_10, var_2[var_11] ) )
|
|
{
|
|
var_5 = var_5 * 0;
|
|
break;
|
|
}
|
|
}
|
|
|
|
break;
|
|
case "or":
|
|
var_5 = 0;
|
|
|
|
foreach ( var_11, var_9 in var_1 )
|
|
{
|
|
var_10 = var_7 get_key( var_9 );
|
|
|
|
if ( compare( var_10, var_2[var_11] ) )
|
|
{
|
|
var_5 = 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
if ( var_5 )
|
|
var_4[var_4.size] = var_7;
|
|
}
|
|
|
|
return var_4;
|
|
}
|
|
|
|
array_keep_key_values( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = [];
|
|
|
|
foreach ( var_5 in var_0 )
|
|
{
|
|
var_6 = 0;
|
|
|
|
foreach ( var_8 in var_2 )
|
|
{
|
|
if ( var_5 compare_value( var_1, var_8 ) )
|
|
{
|
|
var_6 = 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( var_6 )
|
|
var_3[var_3.size] = var_5;
|
|
}
|
|
|
|
return var_3;
|
|
}
|
|
|
|
compare_value( var_0, var_1 )
|
|
{
|
|
if ( !isdefined( self ) || !isdefined( var_1 ) )
|
|
return 0;
|
|
|
|
return compare( get_key( var_0 ), var_1 );
|
|
}
|
|
|
|
compare( var_0, var_1 )
|
|
{
|
|
if ( isdefined( var_0 ) && isdefined( var_1 ) )
|
|
return common_scripts\utility::ter_op( var_0 == var_1, 1, 0 );
|
|
|
|
if ( isdefined( var_0 ) && !isdefined( var_1 ) )
|
|
return 0;
|
|
|
|
if ( !isdefined( var_0 ) && isdefined( var_1 ) )
|
|
return 0;
|
|
|
|
if ( !isdefined( var_0 ) && !isdefined( var_1 ) )
|
|
return 0;
|
|
}
|
|
|
|
get_key( var_0, var_1 )
|
|
{
|
|
var_2 = undefined;
|
|
|
|
if ( !isdefined( self ) || !isdefined( var_0 ) )
|
|
return common_scripts\utility::ter_op( isdefined( var_1 ) && !isdefined( var_2 ), var_1, var_2 );
|
|
|
|
switch ( var_0 )
|
|
{
|
|
case "alpha":
|
|
var_2 = self.alpha;
|
|
break;
|
|
case "angles":
|
|
var_2 = common_scripts\utility::ter_op( isdefined( self.angles ), self.angles, ( 0, 0, 0 ) );
|
|
break;
|
|
case "classname":
|
|
var_2 = self.classname;
|
|
break;
|
|
case "health":
|
|
var_2 = self.health;
|
|
break;
|
|
case "magic_bullet_shield":
|
|
var_2 = self.magic_bullet_shield;
|
|
break;
|
|
case "maxhealth":
|
|
var_2 = self.maxhealth;
|
|
break;
|
|
case "origin":
|
|
var_2 = self.origin;
|
|
break;
|
|
case "script_drone":
|
|
var_2 = self.script_drone;
|
|
break;
|
|
case "script_friendname":
|
|
var_2 = self.script_friendname;
|
|
break;
|
|
case "script_group":
|
|
var_2 = self.script_group;
|
|
break;
|
|
case "script_index":
|
|
var_2 = self.script_index;
|
|
break;
|
|
case "script_linkName":
|
|
var_2 = self.script_linkname;
|
|
break;
|
|
case "script_linkTo":
|
|
var_2 = self.script_linkto;
|
|
break;
|
|
case "script_noteworthy":
|
|
var_2 = self.script_noteworthy;
|
|
break;
|
|
case "script_parameters":
|
|
var_2 = self.script_parameters;
|
|
break;
|
|
case "script_specialops":
|
|
var_2 = self.script_specialops;
|
|
break;
|
|
case "script_team":
|
|
var_2 = self.script_team;
|
|
break;
|
|
case "script_vehicleride":
|
|
var_2 = self.script_vehicleride;
|
|
break;
|
|
case "spawnflags":
|
|
var_2 = self.spawnflags;
|
|
break;
|
|
case "speed":
|
|
var_2 = self.speed;
|
|
break;
|
|
case "target":
|
|
var_2 = self.target;
|
|
break;
|
|
case "targetname":
|
|
var_2 = self.targetname;
|
|
break;
|
|
case "team":
|
|
var_2 = self.team;
|
|
break;
|
|
}
|
|
|
|
return common_scripts\utility::ter_op( isdefined( var_1 ) && !isdefined( var_2 ), var_1, var_2 );
|
|
}
|
|
|
|
getteam()
|
|
{
|
|
if ( isturret( self ) && isdefined( self.script_team ) )
|
|
return self.script_team;
|
|
|
|
if ( maps\_vehicle::isvehicle() && isdefined( self.script_team ) )
|
|
return self.script_team;
|
|
|
|
if ( isdefined( self.team ) )
|
|
return self.team;
|
|
|
|
return "none";
|
|
}
|
|
|
|
isturret( var_0 )
|
|
{
|
|
return isdefined( var_0 ) && isdefined( var_0.classname ) && issubstr( var_0.classname, "turret" );
|
|
}
|
|
|
|
array_remove_undefined_dead_or_dying( var_0 )
|
|
{
|
|
var_1 = [];
|
|
|
|
foreach ( var_3 in var_0 )
|
|
{
|
|
if ( !isdefined( var_3 ) )
|
|
continue;
|
|
|
|
if ( !isalive( var_3 ) )
|
|
continue;
|
|
|
|
if ( isai( var_3 ) && var_3 maps\_utility::doinglongdeath() )
|
|
continue;
|
|
|
|
var_1[var_1.size] = var_3;
|
|
}
|
|
|
|
return var_1;
|
|
}
|
|
|
|
giveunlimitedrpgammo()
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
self.a.rockets = 5;
|
|
wait 1.0;
|
|
}
|
|
}
|
|
|
|
addasapachehudtarget( var_0, var_1 )
|
|
{
|
|
self endon( "death" );
|
|
|
|
if ( isdefined( var_1 ) && var_1 > 0 )
|
|
wait( var_1 );
|
|
|
|
var_0 vehicle_scripts\_apache_player::hud_addandshowtargets( [ self ] );
|
|
}
|
|
|
|
apache_sun_settings()
|
|
{
|
|
level.apache_sun_settings = [];
|
|
var_0 = [ [ "sm_sunenable", 1.0 ], [ "sm_sunsamplesizenear", 2.8 ], [ "sm_sunShadowScale", 1 ] ];
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
level.apache_sun_settings[var_2[0]] = getdvarfloat( var_2[0] );
|
|
setsaveddvar( var_2[0], var_2[1] );
|
|
}
|
|
}
|
|
|
|
apache_sun_settings_restore()
|
|
{
|
|
foreach ( var_2, var_1 in level.apache_sun_settings )
|
|
setsaveddvar( var_2, var_1 );
|
|
}
|
|
|
|
spawn_apache_player( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = get_apache_spawn_struct( var_0 );
|
|
return spawn_apache_player_at_struct( var_3, var_1, var_2 );
|
|
}
|
|
|
|
spawn_apache_player_at_struct( var_0, var_1, var_2 )
|
|
{
|
|
apache_sun_settings();
|
|
var_3 = undefined;
|
|
var_4 = getent( "vehicle_apache_player", "targetname" );
|
|
var_4.origin = var_0.origin + ( 0, 0, 128 );
|
|
var_4.angles = var_0.angles;
|
|
var_3 = maps\_vehicle::vehicle_spawn( var_4 );
|
|
var_3.targetname = "apache_player";
|
|
var_3 makeentitysentient( "allies" );
|
|
var_5 = isdefined( var_1 ) && isdefined( var_2 );
|
|
var_6 = 1;
|
|
|
|
if ( isdefined( level.apache_difficulty ) && isdefined( level.apache_difficulty.flares_auto ) )
|
|
var_6 = level.apache_difficulty.flares_auto;
|
|
|
|
var_3 vehicle_scripts\_apache_player::_start( level.player, var_5, var_6 );
|
|
var_3 thread apache_mission_impact_water_think();
|
|
var_3 thread maps\oilrocks_apache_code::destructible_quakes_on();
|
|
var_3 maps\oilrocks_apache_code::update_targets();
|
|
|
|
if ( var_5 )
|
|
{
|
|
if ( isdefined( var_1 ) )
|
|
setsaveddvar( "vehHelicopterMaxAltitude", var_1 );
|
|
|
|
if ( isdefined( var_2 ) )
|
|
setsaveddvar( "vehHelicopterMinAltitude", var_2 );
|
|
}
|
|
|
|
var_3 childthread maps\oilrocks_apache_code::manage_active_hind_forced_targets();
|
|
|
|
if ( isdefined( level.apache_savecheck ) )
|
|
level.autosave_check_override = level.apache_savecheck;
|
|
|
|
return var_3;
|
|
}
|
|
|
|
apache_mission_impact_water_think()
|
|
{
|
|
level.apache_missile_water_z = -320;
|
|
level.apache_missile_water_z_actual = -352;
|
|
thread apache_mission_impact_water_missiles();
|
|
self waittill( "LISTEN_heli_end" );
|
|
level.apache_missile_water_z = undefined;
|
|
level.apache_missile_water_z_actual = undefined;
|
|
}
|
|
|
|
apache_mission_impact_water_missiles()
|
|
{
|
|
self endon( "LISTEN_heli_end" );
|
|
|
|
for (;;)
|
|
level waittill( "LISTEN_apache_player_missile_fire", var_0 );
|
|
}
|
|
|
|
apache_mission_impact_water_missile_think()
|
|
{
|
|
self endon( "death" );
|
|
|
|
while ( isvalidmissile( self ) && self.origin[2] >= level.apache_missile_water_z )
|
|
wait 0.05;
|
|
|
|
if ( isvalidmissile( self ) && isdefined( self.origin ) )
|
|
{
|
|
if ( self.origin[2] < level.apache_missile_water_z )
|
|
playfx( common_scripts\utility::getfx( "FX_vfx_apache_missile_water_impact" ), ( self.origin[0], self.origin[1], level.apache_missile_water_z_actual + 5 ), ( 0, 0, 1 ), anglestoforward( ( 0, randomint( 360 ), 0 ) ) );
|
|
|
|
self delete();
|
|
}
|
|
}
|
|
|
|
get_apache_spawn_struct( var_0 )
|
|
{
|
|
var_1 = common_scripts\utility::getstructarray( "apache", "targetname" );
|
|
var_2 = [ "script_noteworthy", "script_parameters" ];
|
|
var_3 = [ "player", var_0 ];
|
|
var_4 = array_keep_values( var_1, var_2, var_3 )[0];
|
|
return var_4;
|
|
}
|
|
|
|
friendly_setup()
|
|
{
|
|
if ( isai( self ) )
|
|
maps\_utility::deletable_magic_bullet_shield();
|
|
}
|
|
|
|
get_obj_ent_hvt()
|
|
{
|
|
if ( !isdefined( level.obj_ent_hvt ) )
|
|
level.obj_ent_hvt = common_scripts\utility::spawn_tag_origin();
|
|
|
|
level.obj_ent_hvt unlink();
|
|
return level.obj_ent_hvt;
|
|
}
|
|
|
|
camlanding_from_apache( var_0, var_1, var_2, var_3 )
|
|
{
|
|
player_in_out_apache();
|
|
maps\oilrocks_slamzoom::vehicle_spline_cam( var_0, var_1, var_2, var_3 );
|
|
}
|
|
|
|
player_in_out_apache()
|
|
{
|
|
if ( isdefined( level.player.riding_heli ) )
|
|
{
|
|
var_0 = level.player.riding_heli.origin;
|
|
var_1 = level.player.riding_heli.angles;
|
|
|
|
foreach ( var_3 in level.apache_target_manager )
|
|
level.player.riding_heli thread vehicle_scripts\_apache_player::hud_hidetargets( [ var_3 ] );
|
|
|
|
level notify( "new_missile_nag_thread" );
|
|
level.player.riding_heli vehicle_scripts\_apache_player::_end();
|
|
apache_sun_settings_restore();
|
|
level.player.riding_heli = undefined;
|
|
level.player_apache_standin = maps\oilrocks_apache_code::spawn_apache_ally_targetname( "apache_player_standin", "apache_player_standin", var_0, var_1 );
|
|
level.player_apache_standin thread maps\oilrocks_apache_code::self_make_chopper_boss( undefined, 1 );
|
|
}
|
|
else if ( isdefined( level.player_apache_standin ) )
|
|
{
|
|
level.player_apache_standin delete();
|
|
level.player_apache_standin = undefined;
|
|
}
|
|
}
|
|
|
|
chopper_boss_path_override( var_0, var_1 )
|
|
{
|
|
self endon( "death" );
|
|
maps\_chopperboss::chopper_boss_pause_path_finding();
|
|
self clearlookatent();
|
|
self cleartargetyaw();
|
|
maps\_vehicle::vehicle_paths( var_0, 0, var_1 );
|
|
maps\_chopperboss::chopper_boss_resume_path_finding();
|
|
}
|
|
|
|
chopper_boss_goto_hangout()
|
|
{
|
|
maps\_chopperboss_utility::chopper_boss_wait_populate();
|
|
var_0 = maps\_chopperboss_utility::chopper_boss_get_closest_available_path_struct_2d( self.origin );
|
|
thread chopper_boss_path_override( var_0, 1500 );
|
|
}
|
|
|
|
spawn_infantry_friends( var_0 )
|
|
{
|
|
var_1 = [];
|
|
var_2 = getentarray( "team_a", "targetname" );
|
|
var_2 = array_keep_key_values( var_2, "script_noteworthy", [ "blackhawk_riders" ] );
|
|
|
|
foreach ( var_6, var_4 in var_2 )
|
|
{
|
|
if ( var_0 )
|
|
var_4.script_drone = 1;
|
|
|
|
var_4.count = 1;
|
|
var_5 = var_4 maps\_utility::spawn_ai( 1 );
|
|
|
|
if ( !isdefined( var_4.script_friendname ) )
|
|
var_4.script_friendname = var_5.name;
|
|
|
|
var_5 thermaldrawdisable();
|
|
var_5.script_startingposition = 5;
|
|
|
|
if ( isdefined( var_5.script_friendname ) )
|
|
{
|
|
switch ( var_5.script_friendname )
|
|
{
|
|
case "Merrick":
|
|
level.merrick = var_5;
|
|
level.merrick.animname = "merrick";
|
|
var_5.script_startingposition = 3;
|
|
break;
|
|
case "Hesh":
|
|
level.hesh = var_5;
|
|
level.hesh.animname = "hesh";
|
|
var_5.script_startingposition = 6;
|
|
break;
|
|
case "Keegan":
|
|
level.keegan = var_5;
|
|
level.keegan.animname = "keegan";
|
|
var_5.script_startingposition = 2;
|
|
break;
|
|
default:
|
|
if ( !var_0 )
|
|
{
|
|
var_5 delete();
|
|
continue;
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
var_5.spawner = var_4;
|
|
var_1[var_1.size] = var_5;
|
|
}
|
|
|
|
return var_1;
|
|
}
|
|
|
|
assign_friendly_heros()
|
|
{
|
|
foreach ( var_1 in getaiarray( "allies" ) )
|
|
{
|
|
if ( !isdefined( var_1.script_friendname ) )
|
|
continue;
|
|
|
|
if ( !isdefined( var_1.magic_bullet_shield ) )
|
|
var_1 friendly_setup();
|
|
|
|
switch ( var_1.script_friendname )
|
|
{
|
|
case "Merrick":
|
|
level.merrick = var_1;
|
|
level.merrick.animname = "merrick";
|
|
var_1.script_startingposition = 3;
|
|
break;
|
|
case "Hesh":
|
|
level.hesh = var_1;
|
|
level.hesh.animname = "hesh";
|
|
var_1.script_startingposition = 6;
|
|
break;
|
|
case "Keegan":
|
|
level.keegan = var_1;
|
|
level.keegan.animname = "keegan";
|
|
var_1.script_startingposition = 2;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
maps\_utility::delaythread( 0.05, maps\_utility::set_team_bcvoice, "allies", "delta" );
|
|
}
|
|
|
|
draw_my_position()
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( isdefined( self.animname ) )
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|