diff --git a/README.md b/README.md index aea8d2e3..52321020 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ * Health bar displayed on bottom left of screen * Current zone displayed on bottom left of screen * Bleedout bar displayed when downed +* Changed revive bar color to blue ## Players * Unlimited sprint diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index f58145a7..4d538adf 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -6,6 +6,7 @@ #include scripts/zm/replaced/_zm; #include scripts/zm/replaced/_zm_playerhealth; #include scripts/zm/replaced/_zm_utility; +#include scripts/zm/replaced/_zm_laststand; #include scripts/zm/replaced/_zm_weapons; #include scripts/zm/replaced/_zm_magicbox; #include scripts/zm/replaced/_zm_perks; @@ -21,6 +22,7 @@ main() replaceFunc(maps/mp/zombies/_zm_playerhealth::playerhealthregen, scripts/zm/replaced/_zm_playerhealth::playerhealthregen); replaceFunc(maps/mp/zombies/_zm_utility::track_players_intersection_tracker, scripts/zm/replaced/_zm_utility::track_players_intersection_tracker); replaceFunc(maps/mp/zombies/_zm_utility::is_headshot, scripts/zm/replaced/_zm_utility::is_headshot); + replaceFunc(maps/mp/zombies/_zm_laststand::revive_do_revive, scripts/zm/replaced/_zm_laststand::revive_do_revive); replaceFunc(maps/mp/zombies/_zm_weapons::get_upgraded_ammo_cost, scripts/zm/replaced/_zm_weapons::get_upgraded_ammo_cost); replaceFunc(maps/mp/zombies/_zm_weapons::makegrenadedudanddestroy, scripts/zm/replaced/_zm_weapons::makegrenadedudanddestroy); replaceFunc(maps/mp/zombies/_zm_magicbox::treasure_chest_move, scripts/zm/replaced/_zm_magicbox::treasure_chest_move); diff --git a/scripts/zm/replaced/_zm_laststand.gsc b/scripts/zm/replaced/_zm_laststand.gsc new file mode 100644 index 00000000..44643a04 --- /dev/null +++ b/scripts/zm/replaced/_zm_laststand.gsc @@ -0,0 +1,111 @@ +#include maps\mp\_utility; +#include common_scripts\utility; +#include maps\mp\zombies\_zm_utility; +#include maps\mp\gametypes_zm\_hud_util; + +revive_do_revive( playerbeingrevived, revivergun ) +{ + revivetime = 3; + if ( self hasperk( "specialty_quickrevive" ) ) + { + revivetime /= 2; + } + if ( self maps/mp/zombies/_zm_pers_upgrades_functions::pers_revive_active() ) + { + revivetime *= 0.5; + } + timer = 0; + revived = 0; + playerbeingrevived.revivetrigger.beingrevived = 1; + playerbeingrevived.revive_hud settext( &"ZOMBIE_PLAYER_IS_REVIVING_YOU", self ); + playerbeingrevived maps/mp/zombies/_zm_laststand::revive_hud_show_n_fade( 3 ); + playerbeingrevived.revivetrigger sethintstring( "" ); + if ( isplayer( playerbeingrevived ) ) + { + playerbeingrevived startrevive( self ); + } + if ( !isDefined( self.reviveprogressbar ) ) + { + self.reviveprogressbar = self createprimaryprogressbar(); + self.reviveprogressbar.bar.color = (0.5, 0.5, 1); + } + if ( !isDefined( self.revivetexthud ) ) + { + self.revivetexthud = newclienthudelem( self ); + } + self thread maps/mp/zombies/_zm_laststand::laststand_clean_up_on_disconnect( playerbeingrevived, revivergun ); + if ( !isDefined( self.is_reviving_any ) ) + { + self.is_reviving_any = 0; + } + self.is_reviving_any++; + self thread maps/mp/zombies/_zm_laststand::laststand_clean_up_reviving_any( playerbeingrevived ); + self.reviveprogressbar updatebar( 0.01, 1 / revivetime ); + self.revivetexthud.alignx = "center"; + self.revivetexthud.aligny = "middle"; + self.revivetexthud.horzalign = "center"; + self.revivetexthud.vertalign = "bottom"; + self.revivetexthud.y = -113; + if ( self issplitscreen() ) + { + self.revivetexthud.y = -347; + } + self.revivetexthud.foreground = 1; + self.revivetexthud.font = "default"; + self.revivetexthud.fontscale = 1.8; + self.revivetexthud.alpha = 1; + self.revivetexthud.color = ( 1, 1, 1 ); + self.revivetexthud.hidewheninmenu = 1; + if ( self maps/mp/zombies/_zm_pers_upgrades_functions::pers_revive_active() ) + { + self.revivetexthud.color = ( 0.5, 0.5, 1 ); + } + self.revivetexthud settext( &"ZOMBIE_REVIVING" ); + self thread maps/mp/zombies/_zm_laststand::check_for_failed_revive( playerbeingrevived ); + while ( self maps/mp/zombies/_zm_laststand::is_reviving( playerbeingrevived ) ) + { + wait 0.05; + timer += 0.05; + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + break; + } + else if ( isDefined( playerbeingrevived.revivetrigger.auto_revive ) && playerbeingrevived.revivetrigger.auto_revive == 1 ) + { + break; + } + if ( timer >= revivetime ) + { + revived = 1; + break; + } + } + if ( isDefined( self.reviveprogressbar ) ) + { + self.reviveprogressbar destroyelem(); + } + if ( isDefined( self.revivetexthud ) ) + { + self.revivetexthud destroy(); + } + if ( isDefined( playerbeingrevived.revivetrigger.auto_revive ) && playerbeingrevived.revivetrigger.auto_revive == 1 ) + { + } + else if ( !revived ) + { + if ( isplayer( playerbeingrevived ) ) + { + playerbeingrevived stoprevive( self ); + } + } + playerbeingrevived.revivetrigger sethintstring( &"ZOMBIE_BUTTON_TO_REVIVE_PLAYER" ); + playerbeingrevived.revivetrigger.beingrevived = 0; + self notify( "do_revive_ended_normally" ); + self.is_reviving_any--; + + if ( !revived ) + { + playerbeingrevived thread maps/mp/zombies/_zm_laststand::checkforbleedout( self ); + } + return revived; +} \ No newline at end of file