1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-10 07:08:06 -05:00

Check round spawn failsafe every frame

This commit is contained in:
Jbleezy
2023-04-21 02:35:51 -07:00
parent 4ef3a659c7
commit 5b9e8634a3
4 changed files with 93 additions and 0 deletions

View File

@ -380,6 +380,7 @@ post_all_players_spawned()
level.overrideplayerdamage = scripts\zm\replaced\_zm::player_damage_override;
level.playerlaststand_func = scripts\zm\replaced\_zm::player_laststand;
level.callbackplayerlaststand = scripts\zm\replaced\_zm::callback_playerlaststand;
level._zombies_round_spawn_failsafe = scripts\zm\replaced\_zm::round_spawn_failsafe;
level.etrap_damage = maps\mp\zombies\_zm::ai_zombie_health( 255 );
level.slipgun_damage = maps\mp\zombies\_zm::ai_zombie_health( 255 );
level.tombstone_spawn_func = ::tombstone_spawn;

View File

@ -205,6 +205,95 @@ round_spawning()
}
}
round_spawn_failsafe()
{
self endon( "death" );
prevorigin = self.origin;
prevorigin_time = gettime();
while ( true )
{
if ( isdefined( self.ignore_round_spawn_failsafe ) && self.ignore_round_spawn_failsafe )
return;
wait 0.05;
if ( isdefined( self.is_inert ) && self.is_inert )
{
prevorigin = self.origin;
prevorigin_time = gettime();
continue;
}
if ( isdefined( self.in_the_ground ) && self.in_the_ground )
{
prevorigin = self.origin;
prevorigin_time = gettime();
continue;
}
if ( isdefined( self.in_the_ceiling ) && self.in_the_ceiling )
{
prevorigin = self.origin;
prevorigin_time = gettime();
continue;
}
if ( isdefined( self.lastchunk_destroy_time ) )
{
if ( gettime() - self.lastchunk_destroy_time < 4000 )
{
prevorigin = self.origin;
prevorigin_time = gettime();
continue;
}
}
if ( self.origin[2] < level.zombie_vars["below_world_check"] )
{
if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) && !( isdefined( self.isscreecher ) && self.isscreecher ) )
{
level.zombie_total++;
level.zombie_total_subtract++;
}
self dodamage( self.health + 100, ( 0, 0, 0 ) );
break;
}
if ( distancesquared( self.origin, prevorigin ) < 576 )
{
if ( gettime() - prevorigin_time < 15000 )
continue;
if ( isdefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) )
{
if ( !self.ignoreall && !( isdefined( self.nuked ) && self.nuked ) && !( isdefined( self.marked_for_death ) && self.marked_for_death ) && !( isdefined( self.isscreecher ) && self.isscreecher ) && ( isdefined( self.has_legs ) && self.has_legs ) && !( isdefined( self.is_brutus ) && self.is_brutus ) )
{
level.zombie_total++;
level.zombie_total_subtract++;
}
}
level.zombies_timeout_playspace++;
if ( isdefined( self.is_brutus ) && self.is_brutus )
{
self.suppress_brutus_powerup_drop = 1;
self.brutus_round_spawn_failsafe = 1;
}
self dodamage( self.health + 100, ( 0, 0, 0 ) );
break;
}
else
{
prevorigin = self.origin;
prevorigin_time = gettime();
}
}
}
round_think( restart = 0 )
{
level endon( "end_round_think" );

View File

@ -84,6 +84,7 @@ init()
level.special_weapon_magicbox_check = ::check_for_special_weapon_limit_exist;
level.brutus_failed_paths_to_teleport = 10;
level.zombie_vars["below_world_check"] = -15000;
level.zombie_powerups["meat_stink"].model_name = "t6_wpn_zmb_severedhead_world";
maps\mp\zombies\_zm::spawn_life_brush( (94, 6063, 240), 256, 256 );

View File

@ -90,6 +90,8 @@ init()
level.special_weapon_magicbox_check = ::tomb_special_weapon_magicbox_check;
level.custom_magic_box_timer_til_despawn = ::custom_magic_box_timer_til_despawn;
level.zombie_vars["below_world_check"] = -3000;
change_stargate_teleport_return_player_angles();
level thread zombie_blood_dig_changes();