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

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;
}
}