From e64627725c46c63b174679f62b4c091737bf9a30 Mon Sep 17 00:00:00 2001 From: Jbleezy Date: Mon, 1 May 2023 00:02:07 -0700 Subject: [PATCH] Zombies: fix not being able to drop powerups after doing certain traversals --- scripts/zm/_zm_reimagined.gsc | 2 ++ scripts/zm/replaced/zm_shared.gsc | 50 +++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 scripts/zm/replaced/zm_shared.gsc diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index 520854a3..197cedb6 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -6,6 +6,7 @@ #include scripts\zm\replaced\utility; #include scripts\zm\replaced\zm_melee; #include scripts\zm\replaced\zm_utility; +#include scripts\zm\replaced\zm_shared; #include scripts\zm\replaced\_zm_gametype; #include scripts\zm\replaced\_zm; #include scripts\zm\replaced\_zm_audio; @@ -39,6 +40,7 @@ main() replaceFunc(common_scripts\utility::struct_class_init, scripts\zm\replaced\utility::struct_class_init); replaceFunc(maps\mp\animscripts\zm_melee::meleecombat, scripts\zm\replaced\zm_melee::meleecombat); replaceFunc(maps\mp\animscripts\zm_utility::wait_network_frame, scripts\zm\replaced\_zm_utility::wait_network_frame); + replaceFunc(maps\mp\animscripts\traverse\zm_shared::dotraverse, scripts\zm\replaced\zm_shared::dotraverse); replaceFunc(maps\mp\gametypes_zm\_zm_gametype::hide_gump_loading_for_hotjoiners, scripts\zm\replaced\_zm_gametype::hide_gump_loading_for_hotjoiners); replaceFunc(maps\mp\zombies\_zm::round_start, scripts\zm\replaced\_zm::round_start); replaceFunc(maps\mp\zombies\_zm::ai_calculate_health, scripts\zm\replaced\_zm::ai_calculate_health); diff --git a/scripts/zm/replaced/zm_shared.gsc b/scripts/zm/replaced/zm_shared.gsc new file mode 100644 index 00000000..cfe7e2d8 --- /dev/null +++ b/scripts/zm/replaced/zm_shared.gsc @@ -0,0 +1,50 @@ +#include maps\mp\animscripts\utility; +#include maps\mp\_utility; +#include common_scripts\utility; +#include maps\mp\animscripts\zm_shared; +#include maps\mp\animscripts\zm_run; + +dotraverse( traversestate, traversealias, no_powerups ) +{ + self endon( "killanimscript" ); + self traversemode( "nogravity" ); + self traversemode( "noclip" ); + old_powerups = 0; + + if ( isdefined( no_powerups ) && no_powerups ) + { + old_powerups = self.no_powerups; + self.no_powerups = 1; + } + + self.is_traversing = 1; + self notify( "zombie_start_traverse" ); + self.traversestartnode = self getnegotiationstartnode(); + assert( isdefined( self.traversestartnode ) ); + self orientmode( "face angle", self.traversestartnode.angles[1] ); + self.traversestartz = self.origin[2]; + + if ( isdefined( self.pre_traverse ) ) + self [[ self.pre_traverse ]](); + + self setanimstatefromasd( traversestate, traversealias ); + self maps\mp\animscripts\zm_shared::donotetracks( "traverse_anim" ); + self traversemode( "gravity" ); + self.a.nodeath = 0; + + if ( isdefined( self.post_traverse ) ) + self [[ self.post_traverse ]](); + + self maps\mp\animscripts\zm_run::needsupdate(); + + if ( !self.isdog ) + self maps\mp\animscripts\zm_run::moverun(); + + self.is_traversing = 0; + self notify( "zombie_end_traverse" ); + + if ( isdefined( no_powerups ) && no_powerups && is_true( self.no_powerups ) ) + { + self.no_powerups = old_powerups; + } +} \ No newline at end of file