diff --git a/README.md b/README.md index 54a77813..4641dc6c 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ * Decreased friendly player name fade out time from 1.5 seconds to 0.25 seconds * Removed enemy player name fade in time * Added icons on scoreboard when player is downed, bled out, in Who's Who mode, or in afterlife -* Scoreboard no longer counts self revives as revives +* Added option to disable character dialog (`disable_character_dialog 1`) ## Zombies * Health capped at 100,000 diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index b29b2871..db9ad4fe 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -8,6 +8,7 @@ #include scripts\zm\replaced\zm_utility; #include scripts\zm\replaced\_zm_gametype; #include scripts\zm\replaced\_zm; +#include scripts\zm\replaced\_zm_audio; #include scripts\zm\replaced\_zm_audio_announcer; #include scripts\zm\replaced\_zm_stats; #include scripts\zm\replaced\_zm_playerhealth; @@ -52,6 +53,7 @@ main() replaceFunc(maps\mp\zombies\_zm::player_out_of_playable_area_monitor, scripts\zm\replaced\_zm::player_out_of_playable_area_monitor); replaceFunc(maps\mp\zombies\_zm::end_game, scripts\zm\replaced\_zm::end_game); replaceFunc(maps\mp\zombies\_zm::check_quickrevive_for_hotjoin, scripts\zm\replaced\_zm::check_quickrevive_for_hotjoin); + replaceFunc(maps\mp\zombies\_zm_audio::create_and_play_dialog, scripts\zm\replaced\_zm_audio::create_and_play_dialog); replaceFunc(maps\mp\zombies\_zm_audio_announcer::playleaderdialogonplayer, scripts\zm\replaced\_zm_audio_announcer::playleaderdialogonplayer); replaceFunc(maps\mp\zombies\_zm_stats::set_global_stat, scripts\zm\replaced\_zm_stats::set_global_stat); replaceFunc(maps\mp\zombies\_zm_playerhealth::playerhealthregen, scripts\zm\replaced\_zm_playerhealth::playerhealthregen); @@ -436,6 +438,11 @@ set_dvars() setDvar( "sv_voiceQuality", 9 ); setDvar( "sv_cheats", 0 ); + + if ( getDvar("disable_character_dialog") == "" ) + { + setDvar( "disable_character_dialog", 0 ); + } } set_client_dvars() diff --git a/scripts/zm/replaced/_zm_audio.gsc b/scripts/zm/replaced/_zm_audio.gsc new file mode 100644 index 00000000..e29d62a8 --- /dev/null +++ b/scripts/zm/replaced/_zm_audio.gsc @@ -0,0 +1,70 @@ +#include common_scripts\utility; +#include maps\mp\_utility; +#include maps\mp\zombies\_zm_utility; +#include maps\mp\zombies\_zm_weapons; +#include maps\mp\zombies\_zm_audio_announcer; +#include maps\mp\zombies\_zm_audio; +#include maps\mp\zombies\_zm_laststand; +#include maps\mp\_music; +#include maps\mp\zombies\_zm_spawner; + +create_and_play_dialog( category, type, response, force_variant, override ) +{ + waittime = 0.25; + + if ( !isdefined( self.zmbvoxid ) ) + { + return; + } + + if ( isdefined( self.dontspeak ) && self.dontspeak ) + { + return; + } + + if ( getDvarInt("disable_character_dialog") ) + { + return; + } + + isresponse = 0; + alias_suffix = undefined; + index = undefined; + prefix = undefined; + + if ( !isdefined( level.vox.speaker[self.zmbvoxid].alias[category][type] ) ) + return; + + prefix = level.vox.speaker[self.zmbvoxid].prefix; + alias_suffix = level.vox.speaker[self.zmbvoxid].alias[category][type]; + + if ( self is_player() ) + { + if ( self.sessionstate != "playing" ) + return; + + if ( self maps\mp\zombies\_zm_laststand::player_is_in_laststand() && ( type != "revive_down" || type != "revive_up" ) ) + return; + + index = maps\mp\zombies\_zm_weapons::get_player_index( self ); + prefix = prefix + index + "_"; + } + + if ( isdefined( response ) ) + { + if ( isdefined( level.vox.speaker[self.zmbvoxid].response[category][type] ) ) + alias_suffix = response + level.vox.speaker[self.zmbvoxid].response[category][type]; + + isresponse = 1; + } + + sound_to_play = self zmbvoxgetlinevariant( prefix, alias_suffix, force_variant, override ); + + if ( isdefined( sound_to_play ) ) + { + if ( isdefined( level._audio_custom_player_playvox ) ) + self thread [[ level._audio_custom_player_playvox ]]( prefix, index, sound_to_play, waittime, category, type, override ); + else + self thread do_player_or_npc_playvox( prefix, index, sound_to_play, waittime, category, type, override, isresponse ); + } +} \ No newline at end of file