diff --git a/README.md b/README.md index 00239f28..45dea38a 100644 --- a/README.md +++ b/README.md @@ -568,6 +568,7 @@ * Plane reappears immediately after coming back from the Golden Gate Bridge * Electric chairs appear immediately after crashing at the Golden Gate Bridge * Key no longer shows on HUD +* Brutus no longer spawns if no doors have been opened * Acid Trap: kills on any round (normally stops killing after round 158 on PC) * Acid Trap: kills zombies instantly * Acid Trap: decreased player damage from 75% of max health to 50% of max health diff --git a/scripts/zm/replaced/_zm_ai_brutus.gsc b/scripts/zm/replaced/_zm_ai_brutus.gsc index 88c93855..f4fcfdd3 100644 --- a/scripts/zm/replaced/_zm_ai_brutus.gsc +++ b/scripts/zm/replaced/_zm_ai_brutus.gsc @@ -179,6 +179,43 @@ setup_interaction_matrix() } } +brutus_round_tracker() +{ + level.next_brutus_round = level.round_number + randomintrange( level.brutus_min_round_fq, level.brutus_max_round_fq ); + old_spawn_func = level.round_spawn_func; + old_wait_func = level.round_wait_func; + + flag_wait_any( "activate_cellblock_east", "activate_cellblock_west" ); + + while ( true ) + { + level waittill( "between_round_over" ); + + players = get_players(); + + if ( level.round_number < 9 && ( isdefined( level.is_forever_solo_game ) && level.is_forever_solo_game ) ) + continue; + else if ( level.next_brutus_round <= level.round_number ) + { + if ( maps\mp\zm_alcatraz_utility::is_team_on_golden_gate_bridge() ) + { + level.next_brutus_round = level.round_number + 1; + continue; + } + + wait( randomfloatrange( level.brutus_min_spawn_delay, level.brutus_max_spawn_delay ) ); + + if ( attempt_brutus_spawn( level.brutus_zombie_per_round ) ) + { + level.music_round_override = 1; + level thread maps\mp\zombies\_zm_audio::change_zombie_music( "brutus_round_start" ); + level thread sndforcewait(); + level.next_brutus_round = level.round_number + randomintrange( level.brutus_min_round_fq, level.brutus_max_round_fq ); + } + } + } +} + craftable_table_lock() { self endon( "death" ); diff --git a/scripts/zm/zm_prison/zm_prison_reimagined.gsc b/scripts/zm/zm_prison/zm_prison_reimagined.gsc index 961176ea..209072f6 100644 --- a/scripts/zm/zm_prison/zm_prison_reimagined.gsc +++ b/scripts/zm/zm_prison/zm_prison_reimagined.gsc @@ -47,6 +47,7 @@ main() replaceFunc(maps\mp\zombies\_zm_afterlife::afterlife_laststand, scripts\zm\replaced\_zm_afterlife::afterlife_laststand); replaceFunc(maps\mp\zombies\_zm_afterlife::afterlife_revive_do_revive, scripts\zm\replaced\_zm_afterlife::afterlife_revive_do_revive); replaceFunc(maps\mp\zombies\_zm_ai_brutus::init, scripts\zm\replaced\_zm_ai_brutus::init); + replaceFunc(maps\mp\zombies\_zm_ai_brutus::brutus_round_tracker, scripts\zm\replaced\_zm_ai_brutus::brutus_round_tracker); replaceFunc(maps\mp\zombies\_zm_ai_brutus::get_brutus_spawn_pos_val, scripts\zm\replaced\_zm_ai_brutus::get_brutus_spawn_pos_val); replaceFunc(maps\mp\zombies\_zm_ai_brutus::brutus_spawn, scripts\zm\replaced\_zm_ai_brutus::brutus_spawn); replaceFunc(maps\mp\zombies\_zm_ai_brutus::brutus_health_increases, scripts\zm\replaced\_zm_ai_brutus::brutus_health_increases);