diff --git a/engine/client/s_main.c b/engine/client/s_main.c index 4a9b3d48..9f569d28 100644 --- a/engine/client/s_main.c +++ b/engine/client/s_main.c @@ -70,6 +70,12 @@ float S_GetMasterVolume( void ) return 0.0f; } + if( s_listener.inmenu && !ui_renderworld.value && !Host_IsLocalGame( )) + { + // mute sounds in menu when it's not transparent and we're in multiplayer + return 0.0f; + } + if( !s_listener.inmenu && soundfade.percent != 0 ) { scale = bound( 0.0f, soundfade.percent / 100.0f, 1.0f ); diff --git a/engine/client/s_mix.c b/engine/client/s_mix.c index c6bd6f9c..8ab4ba39 100644 --- a/engine/client/s_mix.c +++ b/engine/client/s_mix.c @@ -523,6 +523,7 @@ static void MIX_MixChannelsToPaintbuffer( int endtime, int rate, int outputRate wavdata_t *pSource; int i, sampleCount; qboolean bZeroVolume; + qboolean local = Host_IsLocalGame(); // mix each channel into paintbuffer ch = channels; @@ -549,7 +550,7 @@ static void MIX_MixChannelsToPaintbuffer( int endtime, int rate, int outputRate { // play, playvol } - else if(( s_listener.inmenu || s_listener.paused ) && !ch->localsound ) + else if(( s_listener.inmenu || s_listener.paused ) && !ch->localsound && local ) { // play only local sounds, keep pause for other continue;