550 lines
14 KiB
Plaintext
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();
|
|
}
|