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

550 lines
14 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
outline_init()
{
level.outline_watch_list = [];
level.outline_pillage_watch_list = [];
level.outline_weapon_watch_list = [];
level.outline_drill_watch_list = [];
level.outline_hive_watch_list = [];
level.outline_drill_preplant_watch_list = [];
}
outline_monitor()
{
self endon( "disconnect" );
level endon( "game_ended" );
self waittill( "spawned" );
childthread outline_monitor_think();
}
outline_monitor_think()
{
for (;;)
{
player_outline();
common_scripts\utility::waitframe();
item_outline();
common_scripts\utility::waitframe();
item_outline_pillage();
common_scripts\utility::waitframe();
intel_outline();
common_scripts\utility::waitframe();
item_outline_weapon_monitor();
common_scripts\utility::waitframe();
item_outline_drill_monitor();
common_scripts\utility::waitframe();
hive_outline_monitor();
common_scripts\utility::waitframe();
drill_preplant_outline_monitor();
common_scripts\utility::waitframe();
}
}
update_drill_outline()
{
level common_scripts\utility::waittill_any_timeout( 1, "drill_spawned" );
foreach ( var_1 in level.players )
{
var_2 = var_1 get_item_outline_color( level.drill );
if ( var_2 == 3 || var_2 == 4 )
{
enable_outline_for_player( level.drill, var_1, var_2, 0, "high" );
continue;
}
disable_outline_for_player( level.drill, var_1 );
}
}
player_outline()
{
self endon( "refresh_outline" );
foreach ( var_1 in level.players )
{
if ( self == var_1 )
continue;
if ( should_put_player_outline_on( var_1 ) )
{
enable_outline_for_player( var_1, self, get_color_index_player( var_1 ), 0, "high" );
continue;
}
disable_outline_for_player( var_1, self );
}
}
set_alien_outline()
{
self endon( "unset_adrenaline" );
self endon( "switchblade_over" );
self endon( "disconnect" );
self endon( "death" );
level endon( "game_ended" );
for (;;)
{
foreach ( var_1 in maps\mp\alien\_spawnlogic::get_alive_enemies() )
{
if ( isdefined( level.kraken ) && var_1 == level.kraken )
continue;
if ( isdefined( var_1.agent_type ) && var_1.agent_type == "kraken_tentacle" )
continue;
if ( isdefined( var_1.damaged_by_players ) )
continue;
if ( isdefined( var_1.marked_for_challenge ) )
continue;
if ( isdefined( var_1.pet ) )
continue;
else if ( !isdefined( var_1.no_outline_on_alien ) )
{
if ( isdefined( var_1.feral_occludes ) )
{
enable_outline_for_player( var_1, self, 4, 1, "high" );
continue;
}
enable_outline_for_player( var_1, self, 4, 0, "high" );
}
}
wait 0.5;
}
}
unset_alien_outline()
{
foreach ( var_1 in maps\mp\alien\_spawnlogic::get_alive_enemies() )
{
if ( isdefined( var_1.damaged_by_players ) )
continue;
if ( isdefined( var_1.marked_for_challenge ) )
continue;
if ( !isdefined( var_1.pet ) )
disable_outline_for_player( var_1, self );
}
}
hive_outline_monitor()
{
self endon( "refresh_outline" );
foreach ( var_2, var_1 in level.outline_hive_watch_list )
{
enable_outline_for_player( var_1, self, 4, 1, "medium" );
if ( var_2 % 10 == 0 )
common_scripts\utility::waitframe();
}
}
drill_preplant_outline_monitor()
{
self endon( "refresh_outline" );
foreach ( var_2, var_1 in level.outline_drill_preplant_watch_list )
{
if ( !isdefined( var_1 ) )
continue;
if ( should_put_drill_outline_on( var_1 ) )
enable_outline_for_player( var_1, self, 3, 0, "high" );
else
disable_outline_for_player( var_1, self );
if ( var_2 % 6 == 0 )
common_scripts\utility::waitframe();
}
}
item_outline()
{
self endon( "refresh_outline" );
foreach ( var_3, var_1 in level.outline_watch_list )
{
if ( !isdefined( var_1 ) )
continue;
var_2 = get_item_outline_color( var_1 );
if ( var_2 == 3 )
enable_outline_for_player( var_1, self, get_color_index_item( var_1 ), 1, "low" );
else if ( var_2 == 4 )
enable_outline_for_player( var_1, self, 4, 1, "low" );
else
disable_outline_for_player( var_1, self );
if ( var_3 % 6 == 0 )
common_scripts\utility::waitframe();
}
}
item_outline_pillage()
{
self endon( "refresh_outline" );
foreach ( var_3, var_1 in level.outline_pillage_watch_list )
{
if ( !isdefined( var_1 ) )
continue;
var_2 = get_pillage_item_outline_color( var_1 );
if ( var_2 == 3 )
enable_outline_for_player( var_1, self, 3, 0, "low" );
else if ( var_2 == 4 )
enable_outline_for_player( var_1, self, 4, 0, "low" );
else
disable_outline_for_player( var_1, self );
if ( var_3 % 10 == 0 )
common_scripts\utility::waitframe();
}
}
intel_outline()
{
if ( isdefined( level.intel_outline_func ) )
[[ level.intel_outline_func ]]();
}
item_outline_weapon_monitor()
{
self endon( "refresh_outline" );
foreach ( var_4, var_1 in level.outline_weapon_watch_list )
{
if ( !isdefined( var_1 ) )
continue;
var_2 = 1;
var_3 = get_weapon_outline_color( var_1 );
if ( var_3 == 3 )
enable_outline_for_player( var_1, self, get_color_index_item( var_1, var_2 ), 1, "low" );
else if ( var_3 == 4 )
enable_outline_for_player( var_1, self, 4, 1, "low" );
else
disable_outline_for_player( var_1, self );
if ( var_4 % 6 == 0 )
common_scripts\utility::waitframe();
}
}
item_outline_drill_monitor()
{
if ( isdefined( level.item_outline_drill_monitor_override ) )
{
[[ level.item_outline_drill_monitor_override ]]();
return;
}
self endon( "refresh_outline" );
var_0 = undefined;
foreach ( var_2 in level.outline_drill_watch_list )
{
var_3 = ( level.drill.health - 20000 ) / ( level.drill.maxhealth - 20000 );
if ( var_3 < 0.75 )
{
if ( should_put_drill_outline_on( var_2 ) )
enable_outline_for_player( var_2, self, get_drill_widget_color( var_2 ), 0, "high" );
else
disable_outline_for_player( var_2, self );
}
else
disable_outline_for_player( var_2, self );
if ( isdefined( level.drill ) && var_2 == level.drill )
{
var_4 = get_drill_widget_color( var_2 );
if ( isdefined( var_0 ) && var_0 == var_4 )
continue;
var_0 = var_4;
}
}
}
get_drill_widget_color( var_0 )
{
var_1 = ( level.drill.health - 20000 ) / ( level.drill.maxhealth - 20000 );
if ( var_1 <= 0.3 )
return 4;
else if ( var_1 <= 0.75 )
return 5;
else if ( var_1 <= 1 )
return 3;
else
return 0;
}
get_color_index_item( var_0, var_1 )
{
if ( maps\mp\alien\_utility::has_pistols_only_relic_and_no_deployables() && maps\mp\alien\_utility::is_true( var_1 ) )
var_2 = level.pistol_ammo_cost;
else
var_2 = var_0.cost;
if ( maps\mp\alien\_persistence::player_has_enough_currency( var_2 ) || maps\mp\alien\_utility::is_true( var_0.enabled ) )
return 3;
else
return 4;
}
get_color_index_player( var_0 )
{
var_1 = var_0.health / 100;
if ( var_1 <= 0.33 || var_0.inlaststand )
return 4;
else if ( var_1 <= 0.66 )
return 5;
else if ( var_1 <= 1.0 )
return 3;
else
return 0;
}
get_item_outline_color( var_0 )
{
if ( isdefined( var_0.classname ) && var_0.classname == "misc_turret" && isdefined( var_0.owner ) )
return 0;
var_1 = distancesquared( self.origin, var_0.origin ) < 122500;
if ( !var_1 )
return 0;
if ( maps\mp\alien\_utility::has_special_weapon() )
{
if ( isdefined( var_0.targetname ) && ( var_0.targetname == "fire_trap_barrel" || var_0.targetname == "puddle_generator" || var_0.targetname == "fence_generator" ) )
return 3;
else if ( isdefined( var_0.classname ) && var_0.classname == "misc_turret" )
return 3;
else
return 4;
}
else if ( maps\mp\alien\_utility::is_holding_deployable() )
return 4;
return 3;
}
get_pillage_item_outline_color( var_0 )
{
if ( !isdefined( var_0 ) )
return 0;
var_1 = distancesquared( self.origin, var_0.origin ) < 27225;
if ( !var_1 )
return 0;
if ( isdefined( var_0.is_locker ) && var_0.is_locker && !isdefined( self.locker_key ) )
return 0;
if ( maps\mp\alien\_utility::is_holding_deployable() || maps\mp\alien\_utility::has_special_weapon() )
return 4;
return 3;
}
get_weapon_outline_color( var_0 )
{
var_1 = distancesquared( self.origin, var_0.origin ) < 1000000;
if ( !var_1 )
return 0;
if ( maps\mp\alien\_utility::is_chaos_mode() && maps\mp\alien\_chaos::is_weapon_recently_picked_up( self, var_0.weapon_ref ) )
return 4;
if ( maps\mp\alien\_utility::is_holding_deployable() )
return 4;
if ( !maps\mp\alien\_utility::is_true( var_0.is_recipe_table ) && maps\mp\alien\_prestige::prestige_getpistolsonly() == 1 && !maps\mp\alien\_prestige::prestige_getnodeployables() == 1 )
return 4;
if ( isdefined( level.get_custom_weapon_outline_func ) && [[ level.get_custom_weapon_outline_func ]]( var_0 ) )
return 4;
if ( maps\mp\alien\_utility::has_special_weapon() && !maps\mp\alien\_utility::is_true( var_0.is_recipe_table ) )
{
if ( isdefined( level.drill ) && var_0 == level.drill )
return 3;
else
return 4;
}
return 3;
}
should_put_drill_outline_on( var_0 )
{
var_1 = distancesquared( self.origin, var_0.origin ) < 1000000;
if ( !var_1 )
return 0;
return 1;
}
should_put_player_outline_on( var_0 )
{
if ( !isalive( var_0 ) || !isdefined( var_0.maxhealth ) || !var_0.maxhealth )
return 0;
var_1 = distancesquared( self.origin, var_0.origin ) > 2250000;
if ( var_1 )
return 1;
var_2 = !bullettracepassed( self geteye(), var_0 geteye(), 0, self );
return var_2;
}
add_to_outline_watch_list( var_0, var_1 )
{
var_0.cost = var_1;
level.outline_watch_list[level.outline_watch_list.size] = var_0;
}
remove_from_outline_watch_list( var_0 )
{
level.outline_watch_list = common_scripts\utility::array_remove( level.outline_watch_list, var_0 );
thread remove_outline( var_0 );
}
add_to_drill_preplant_watch_list( var_0 )
{
level.outline_drill_preplant_watch_list[level.outline_drill_preplant_watch_list.size] = var_0;
}
remove_from_drill_preplant_watch_list( var_0 )
{
level.outline_drill_preplant_watch_list = common_scripts\utility::array_remove( level.outline_drill_preplant_watch_list, var_0 );
thread remove_outline( var_0 );
}
add_to_outline_hive_watch_list( var_0 )
{
level.outline_hive_watch_list[level.outline_hive_watch_list.size] = var_0;
}
remove_from_outline_hive_watch_list( var_0 )
{
level.outline_hive_watch_list = common_scripts\utility::array_remove( level.outline_hive_watch_list, var_0 );
thread remove_outline( var_0 );
}
add_to_outline_pillage_watch_list( var_0, var_1 )
{
if ( !common_scripts\utility::array_contains( level.outline_pillage_watch_list, var_0 ) )
{
var_0.cost = var_1;
level.outline_pillage_watch_list[level.outline_pillage_watch_list.size] = var_0;
}
}
remove_from_outline_pillage_watch_list( var_0 )
{
level.outline_pillage_watch_list = common_scripts\utility::array_remove( level.outline_pillage_watch_list, var_0 );
thread remove_outline( var_0 );
}
add_to_outline_weapon_watch_list( var_0, var_1 )
{
var_0.cost = var_1;
level.outline_weapon_watch_list[level.outline_weapon_watch_list.size] = var_0;
}
remove_from_outline_weapon_watch_list( var_0 )
{
level.outline_weapon_watch_list = common_scripts\utility::array_remove( level.outline_weapon_watch_list, var_0 );
thread remove_outline( var_0 );
}
add_to_outline_drill_watch_list( var_0, var_1 )
{
var_0.cost = var_1;
level.outline_drill_watch_list[level.outline_drill_watch_list.size] = var_0;
}
remove_from_outline_drill_watch_list( var_0 )
{
level.outline_drill_watch_list = common_scripts\utility::array_remove( level.outline_drill_watch_list, var_0 );
thread remove_outline( var_0 );
}
remove_outline( var_0 )
{
if ( !isdefined( var_0 ) )
return;
foreach ( var_2 in level.players )
{
if ( isdefined( var_2 ) )
{
var_2 notify( "refresh_outline" );
disable_outline_for_player( var_0, var_2 );
}
}
}
enable_outline_for_players( var_0, var_1, var_2, var_3, var_4 )
{
var_0 hudoutlineenableforclients( var_1, var_2, var_3 );
}
enable_outline_for_player( var_0, var_1, var_2, var_3, var_4 )
{
var_0 hudoutlineenableforclient( var_1, var_2, var_3 );
}
disable_outline_for_players( var_0, var_1 )
{
var_0 hudoutlinedisableforclients( var_1 );
}
disable_outline_for_player( var_0, var_1 )
{
var_0 hudoutlinedisableforclient( var_1 );
}
enable_outline( var_0, var_1, var_2 )
{
var_0 hudoutlineenable( var_1, var_2 );
}
disable_outline( var_0 )
{
var_0 hudoutlinedisable();
}
outline_proto_enabled()
{
return getdvarint( "enable_outline_proto" ) == 1;
}
is_host( var_0 )
{
return var_0 ishost();
}