From b25f5d8aa687bcd23266ab6190c0db5b1981b7b3 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 28 Jun 2014 10:35:20 -0400 Subject: [PATCH] In space, no one can hear you shriek Or chimper for that matter. Also fixes deaf people hearing vox shriek. --- code/modules/mob/hear_say.dm | 5 +++- code/modules/mob/living/carbon/human/say.dm | 23 +++++---------- code/modules/mob/living/say.dm | 31 +++++++++++++++------ 3 files changed, 34 insertions(+), 25 deletions(-) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index 1e5056db492..5811476ad77 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -1,6 +1,6 @@ // At minimum every mob has a hear_say proc. -/mob/proc/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null) +/mob/proc/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) if(!client) return @@ -44,6 +44,9 @@ src << "[speaker_name][alt_name] talks but you cannot hear \him." else src << "[speaker_name][alt_name] [track][verb], \"[message]\"" + if (speech_sound) + var/turf/source = speaker? get_turf(speaker) : get_turf(src) + src.playsound_local(source, speech_sound, sound_vol, 1) /mob/proc/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/mob/speaker = null, var/hard_to_hear = 0, var/vname ="") diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 465bf7adc26..462e4e015c9 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -121,23 +121,14 @@ else if(r_ear && istype(r_ear,/obj/item/device/radio)) r_ear.talk_into(src,message, message_mode, verb, speaking) used_radios += r_ear - - - if(used_radios.len) - italics = 1 - message_range = 1 - - var/datum/gas_mixture/environment = loc.return_air() - if(environment) - var/pressure = environment.return_pressure() - if(pressure < SAY_MINIMUM_PRESSURE) - italics = 1 - message_range =1 - + + var/sound/speech_sound + var/sound_vol if((species.name == "Vox" || species.name == "Vox Armalis") && prob(20)) - playsound(src.loc, 'sound/voice/shriek1.ogg', 50, 1) - - ..(message, speaking, verb, alt_name, italics, message_range, used_radios) + speech_sound = sound('sound/voice/shriek1.ogg') + sound_vol = 50 + + ..(message, speaking, verb, alt_name, italics, message_range, used_radios, speech_sound, sound_vol) //ohgod we should really be passing a datum here. /mob/living/carbon/human/say_understands(var/mob/other,var/datum/language/speaking = null) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 98d64231ec0..627882ab47a 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -81,9 +81,30 @@ var/list/department_radio_keys = list( if(!istype(dongle)) return if(dongle.translate_binary) return 1 -/mob/living/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/italics=0, var/message_range = world.view, var/list/used_radios = list()) +/mob/living/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/italics=0, var/message_range = world.view, var/list/used_radios = list(), var/sound/speech_sound, var/sound_vol) var/turf/T = get_turf(src) + + if(used_radios.len) + italics = 1 + message_range = 1 + + for(var/mob/living/M in hearers(5, src)) + if(M != src) + M.show_message("[src] talks into [used_radios.len ? used_radios[1] : "radio"]") + if (speech_sound) + var/turf/source = speaker? get_turf(speaker) : get_turf(src) + src.playsound_local(source, speech_sound, sound_vol * 0.5, 1) + + var/datum/gas_mixture/environment = T.return_air() + if(environment) + var/pressure = environment.return_pressure() + if(pressure < SAY_MINIMUM_PRESSURE) + italics = 1 + message_range = 1 + + if (speech_sound) + sound_vol *= 0.5 //muffle the sound a bit, so it's like we're actually talking through contact var/list/listening = list() if(T) @@ -120,15 +141,9 @@ var/list/department_radio_keys = list( var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]") spawn(30) del(speech_bubble) - if(used_radios.len) - for(var/mob/living/M in hearers(5, src)) - if(M != src) - M.show_message("[src] talks into [used_radios.len ? used_radios[1] : "radio"]") - - for(var/mob/M in listening) M << speech_bubble - M.hear_say(message,verb,speaking,alt_name, italics, src) + M.hear_say(message, verb, speaking, alt_name, italics, src, speech_sound, sound_vol) log_say("[name]/[key] : [message]")