diff --git a/code/game/sound.dm b/code/game/sound.dm index d76c767593f..3846e2edeaa 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -19,15 +19,19 @@ listeners = listeners & hearers(maxdistance, turf_source) for(var/P in listeners) var/mob/M = P - if(!M || !M.client || M.z != turf_source.z) + if(!M || !M.client) continue + + var/turf/T = get_turf(M) // These checks need to be changed if z-levels are ever further refactored + if(!T) + continue + if(T.z != turf_source.z) + continue + var/distance = get_dist(M, turf_source) if(distance <= maxdistance) - var/turf/T = get_turf(M) - - if(T && T.z == turf_source.z) - M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S) + M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S) /mob/proc/playsound_local(turf/turf_source, soundin, vol as num, vary, frequency, falloff, channel = 0, pressure_affected = TRUE, sound/S) if(!client || !can_hear()) @@ -156,4 +160,4 @@ soundin = pick('sound/effects/bone_break_1.ogg', 'sound/effects/bone_break_2.ogg', 'sound/effects/bone_break_3.ogg', 'sound/effects/bone_break_4.ogg', 'sound/effects/bone_break_5.ogg', 'sound/effects/bone_break_6.ogg') if("honkbot_e") soundin = pick('sound/items/bikehorn.ogg', 'sound/items/AirHorn2.ogg', 'sound/misc/sadtrombone.ogg', 'sound/items/AirHorn.ogg', 'sound/items/WEEOO1.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/bcreep.ogg','sound/magic/Fireball.ogg' ,'sound/effects/pray.ogg', 'sound/voice/hiss1.ogg','sound/machines/buzz-sigh.ogg', 'sound/machines/ping.ogg', 'sound/weapons/flashbang.ogg', 'sound/weapons/bladeslice.ogg') - return soundin + return soundin \ No newline at end of file