diff --git a/README.md b/README.md index 1456520c..2fba5c3f 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,7 @@ * 4 round and 5 round special rounds happen more equally ### Avogadro +* Drops a random powerup when killed * Decreased minimum distance away from players to be able to attack ### Denizens diff --git a/scripts/zm/replaced/_zm_ai_avogadro.gsc b/scripts/zm/replaced/_zm_ai_avogadro.gsc index 3c5bcb1e..810538ce 100644 --- a/scripts/zm/replaced/_zm_ai_avogadro.gsc +++ b/scripts/zm/replaced/_zm_ai_avogadro.gsc @@ -43,4 +43,82 @@ check_range_attack() } return false; +} + +avogadro_exit( from ) +{ + self.state = "exiting"; + self notify( "stop_find_flesh" ); + self notify( "zombie_acquire_enemy" ); + self setfreecameralockonallowed( 0 ); + self.audio_loop_ent stoploopsound( 0.5 ); + self notify( "stop_health" ); + powerup_origin = self.origin; + + if ( isdefined( self.health_fx ) ) + { + self.health_fx unlink(); + self.health_fx delete(); + } + + if ( isdefined( from ) ) + { + if ( from == "bus" ) + { + self playsound( "zmb_avogadro_death_short" ); + playfx( level._effect["avogadro_ascend_aerial"], self.origin ); + self animscripted( self.origin, self.angles, "zm_bus_win" ); + maps\mp\animscripts\zm_shared::donotetracks( "bus_win_anim" ); + } + else if ( from == "chamber" ) + { + self playsound( "zmb_avogadro_death_short" ); + playfx( level._effect["avogadro_ascend"], self.origin ); + self animscripted( self.origin, self.angles, "zm_chamber_out" ); + wait 0.4; + self ghost(); + stop_exploder( 500 ); + } + else + { + self playsound( "zmb_avogadro_death" ); + playfx( level._effect["avogadro_ascend"], self.origin ); + self animscripted( self.origin, self.angles, "zm_exit" ); + maps\mp\animscripts\zm_shared::donotetracks( "exit_anim" ); + } + } + else + { + self playsound( "zmb_avogadro_death" ); + playfx( level._effect["avogadro_ascend"], self.origin ); + self animscripted( self.origin, self.angles, "zm_exit" ); + maps\mp\animscripts\zm_shared::donotetracks( "exit_anim" ); + } + + if ( !isdefined( from ) || from != "chamber" ) + level thread do_avogadro_flee_vo( self ); + + self ghost(); + self.hit_by_melee = 0; + self.anchor.origin = self.origin; + self.anchor.angles = self.angles; + self linkto( self.anchor ); + + if ( isdefined( from ) && from == "exit_idle" ) + self.return_round = level.round_number + 1; + else + self.return_round = level.round_number + randomintrange( 2, 5 ); + + level.next_avogadro_round = self.return_round; + self.state = "cloud"; + self thread cloud_update_fx(); + + if ( !isdefined( from ) ) + { + if ( level.powerup_drop_count >= level.zombie_vars["zombie_powerup_drop_max_per_round"] ) + level.powerup_drop_count = level.zombie_vars["zombie_powerup_drop_max_per_round"] - 1; + + level.zombie_vars["zombie_drop_item"] = 1; + level thread maps\mp\zombies\_zm_powerups::powerup_drop( powerup_origin ); + } } \ No newline at end of file diff --git a/scripts/zm/zm_transit/zm_transit_reimagined.gsc b/scripts/zm/zm_transit/zm_transit_reimagined.gsc index 2c6dd98a..6cf7e5e7 100644 --- a/scripts/zm/zm_transit/zm_transit_reimagined.gsc +++ b/scripts/zm/zm_transit/zm_transit_reimagined.gsc @@ -37,6 +37,7 @@ main() replaceFunc(maps\mp\zm_transit_bus::bussetup, scripts\zm\replaced\zm_transit_bus::bussetup); replaceFunc(maps\mp\zm_transit_bus::busscheduleadd, scripts\zm\replaced\zm_transit_bus::busscheduleadd); replaceFunc(maps\mp\zombies\_zm_ai_avogadro::check_range_attack, scripts\zm\replaced\_zm_ai_avogadro::check_range_attack); + replaceFunc(maps\mp\zombies\_zm_ai_avogadro::avogadro_exit, scripts\zm\replaced\_zm_ai_avogadro::avogadro_exit); replaceFunc(maps\mp\zombies\_zm_ai_screecher::screecher_spawning_logic, scripts\zm\replaced\_zm_ai_screecher::screecher_spawning_logic); replaceFunc(maps\mp\zombies\_zm_ai_screecher::screecher_melee_damage, scripts\zm\replaced\_zm_ai_screecher::screecher_melee_damage); replaceFunc(maps\mp\zombies\_zm_ai_screecher::screecher_detach, scripts\zm\replaced\_zm_ai_screecher::screecher_detach);