1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-10 15:17:57 -05:00
Files
BO2-Reimagined/scripts/zm/replaced/zm_buried_distance_tracking.gsc

99 lines
3.1 KiB
Plaintext

#include maps\mp\zm_buried_distance_tracking;
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\zombies\_zm_utility;
#include maps\mp\zombies\_zm_spawner;
#include maps\mp\zombies\_zm_zonemgr;
#include maps\mp\zombies\_zm_ai_basic;
delete_zombie_noone_looking( how_close, how_high )
{
self endon( "death" );
if ( self can_be_deleted_from_buried_special_zones() )
{
self.inview = 0;
self.player_close = 0;
}
else
{
if ( !isdefined( how_close ) )
how_close = 1000;
if ( !isdefined( how_high ) )
how_high = 500;
if ( !( isdefined( self.has_legs ) && self.has_legs ) )
how_close *= 1.5;
distance_squared_check = how_close * how_close;
height_squared_check = how_high * how_high;
too_far_dist = distance_squared_check * 3;
if ( isdefined( level.zombie_tracking_too_far_dist ) )
too_far_dist = level.zombie_tracking_too_far_dist * level.zombie_tracking_too_far_dist;
self.inview = 0;
self.player_close = 0;
players = get_players();
foreach ( player in players )
{
if ( player.sessionstate == "spectator" )
continue;
if ( isdefined( player.laststand ) && player.laststand && ( isdefined( self.favoriteenemy ) && self.favoriteenemy == player ) )
{
if ( !self can_zombie_see_any_player() )
{
self.favoriteenemy = undefined;
self.zombie_path_bad = 1;
self thread escaped_zombies_cleanup();
}
}
if ( isdefined( level.only_track_targeted_players ) )
{
if ( !isdefined( self.favoriteenemy ) || self.favoriteenemy != player )
continue;
}
can_be_seen = self player_can_see_me( player );
distance_squared = distancesquared( self.origin, player.origin );
if ( can_be_seen && distance_squared < too_far_dist )
self.inview++;
if ( distance_squared < distance_squared_check && abs( self.origin[2] - player.origin[2] ) < how_high )
self.player_close++;
}
}
wait 0.1;
if ( self.inview == 0 && self.player_close == 0 )
{
if ( !isdefined( self.animname ) || isdefined( self.animname ) && self.animname != "zombie" )
return;
if ( isdefined( self.electrified ) && self.electrified == 1 )
return;
if ( !( isdefined( self.exclude_distance_cleanup_adding_to_total ) && self.exclude_distance_cleanup_adding_to_total ) && !( isdefined( self.isscreecher ) && self.isscreecher ) )
{
level.zombie_total++;
if ( self.health < level.zombie_health )
level.zombie_respawned_health[level.zombie_respawned_health.size] = self.health;
}
self maps\mp\zombies\_zm_spawner::reset_attack_spot();
self notify( "zombie_delete" );
if ( isdefined( self.anchor ) )
self.anchor delete();
self delete();
recalc_zombie_array();
}
}