diff --git a/README.md b/README.md index e027231a..0c7aceb0 100644 --- a/README.md +++ b/README.md @@ -335,6 +335,8 @@ ### Who's Who * Gain all other perks the player had before going down when entering Who's Who mode * Revive twice as fast when in Who's Who mode +* Changed revive waypoint icon to Who's Who perk icon +* Revive waypoint shows offscreen * No longer gives the player Claymores when entering Who's Who mode if the player purchased Claymores ### Electric Cherry diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index b2019c10..4e38028a 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -3878,8 +3878,6 @@ whos_who_spawn_changes() { self waittill("fake_revive"); - self.pers_upgrades_awarded["revive"] = 1; - self takeweapon("frag_grenade_zm"); self takeweapon("claymore_zm"); self giveweapon("sticky_grenade_zm"); @@ -3891,8 +3889,6 @@ whos_who_spawn_changes() } self waittill("chugabud_effects_cleanup"); - - self.pers_upgrades_awarded["revive"] = 0; } } diff --git a/scripts/zm/replaced/_zm_chugabud.gsc b/scripts/zm/replaced/_zm_chugabud.gsc index 735aa99b..315e6456 100644 --- a/scripts/zm/replaced/_zm_chugabud.gsc +++ b/scripts/zm/replaced/_zm_chugabud.gsc @@ -3,6 +3,88 @@ #include maps\mp\zombies\_zm_utility; #include maps\mp\zombies\_zm_chugabud; +chugabud_fake_death() +{ + level notify( "fake_death" ); + self notify( "fake_death" ); + self takeallweapons(); + self allowstand( 0 ); + self allowcrouch( 0 ); + self allowprone( 1 ); + self setstance( "prone" ); + self.ignoreme = 1; + self enableinvulnerability(); + + if ( self is_jumping() ) + { + while ( self is_jumping() ) + wait 0.05; + } + + self freezecontrols( 1 ); +} + +chugabud_corpse_revive_icon( player ) +{ + self endon( "death" ); + height_offset = 30; + index = player.clientid; + + self.revive_waypoint_origin = spawn( "script_model", self.origin + (0, 0, height_offset) ); + self.revive_waypoint_origin setmodel( "tag_origin" ); + self.revive_waypoint_origin linkto( self ); + + hud_elem = newhudelem(); + self.revive_hud_elem = hud_elem; + hud_elem.alpha = 1; + hud_elem.archived = 1; + hud_elem.hidewheninmenu = 1; + hud_elem.immunetodemogamehudsettings = 1; + hud_elem setwaypoint( 1, "specialty_chugabud_zombies" ); + hud_elem settargetent( self.revive_waypoint_origin ); +} + +chugabud_corpse_cleanup( corpse, was_revived ) +{ + self notify( "chugabud_effects_cleanup" ); + + if ( was_revived ) + { + playsoundatposition( "evt_ww_appear", corpse.origin ); + playfx( level._effect["chugabud_revive_fx"], corpse.origin ); + } + else + { + playsoundatposition( "evt_ww_disappear", corpse.origin ); + playfx( level._effect["chugabud_bleedout_fx"], corpse.origin ); + self notify( "chugabud_bleedout" ); + } + + if ( isdefined( corpse.revivetrigger ) ) + { + corpse notify( "stop_revive_trigger" ); + corpse.revivetrigger delete(); + corpse.revivetrigger = undefined; + } + + if ( isdefined( corpse.revive_hud_elem ) ) + { + corpse.revive_hud_elem destroy(); + corpse.revive_hud_elem = undefined; + } + + if ( isdefined( corpse.revive_waypoint_origin ) ) + { + corpse.revive_waypoint_origin destroy(); + corpse.revive_waypoint_origin = undefined; + } + + self.loadout = undefined; + wait 0.1; + corpse delete(); + self.e_chugabud_corpse = undefined; +} + chugabud_bleed_timeout( delay, corpse ) { self endon( "player_suicide" ); diff --git a/scripts/zm/replaced/_zm_laststand.gsc b/scripts/zm/replaced/_zm_laststand.gsc index 1e9485f4..18c8bb53 100644 --- a/scripts/zm/replaced/_zm_laststand.gsc +++ b/scripts/zm/replaced/_zm_laststand.gsc @@ -14,6 +14,10 @@ revive_do_revive( playerbeingrevived, revivergun ) { revivetime *= 0.5; } + if ( isdefined( self.e_chugabud_corpse ) ) + { + revivetime *= 0.5; + } timer = 0; revived = 0; playerbeingrevived.revivetrigger.beingrevived = 1; diff --git a/scripts/zm/zm_highrise/zm_highrise_reimagined.gsc b/scripts/zm/zm_highrise/zm_highrise_reimagined.gsc index 8d931075..40a0b666 100644 --- a/scripts/zm/zm_highrise/zm_highrise_reimagined.gsc +++ b/scripts/zm/zm_highrise/zm_highrise_reimagined.gsc @@ -33,6 +33,9 @@ main() replaceFunc(maps\mp\zm_highrise_buildables::init_buildables, scripts\zm\replaced\zm_highrise_buildables::init_buildables); replaceFunc(maps\mp\zm_highrise_buildables::include_buildables, scripts\zm\replaced\zm_highrise_buildables::include_buildables); replaceFunc(maps\mp\zm_highrise_elevators::faller_location_logic, scripts\zm\replaced\zm_highrise_elevators::faller_location_logic); + replaceFunc(maps\mp\zombies\_zm_chugabud::chugabud_fake_death, scripts\zm\replaced\_zm_chugabud::chugabud_fake_death); + replaceFunc(maps\mp\zombies\_zm_chugabud::chugabud_corpse_revive_icon, scripts\zm\replaced\_zm_chugabud::chugabud_corpse_revive_icon); + replaceFunc(maps\mp\zombies\_zm_chugabud::chugabud_corpse_cleanup, scripts\zm\replaced\_zm_chugabud::chugabud_corpse_cleanup); replaceFunc(maps\mp\zombies\_zm_chugabud::chugabud_bleed_timeout, scripts\zm\replaced\_zm_chugabud::chugabud_bleed_timeout); replaceFunc(maps\mp\zombies\_zm_equip_springpad::springpadthink, scripts\zm\replaced\_zm_equip_springpad::springpadthink); replaceFunc(maps\mp\zombies\_zm_weap_slipgun::init, scripts\zm\replaced\_zm_weap_slipgun::init); @@ -46,6 +49,8 @@ main() init() { + precacheshader( "specialty_chugabud_zombies" ); + level.zombie_init_done = ::zombie_init_done; level.special_weapon_magicbox_check = ::highrise_special_weapon_magicbox_check; level.check_for_valid_spawn_near_team_callback = ::highrise_respawn_override;