diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index cbfb88676a..506080fdc9 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -125,29 +125,20 @@ return verb -/mob/living/carbon/human/handle_speech_problems(var/message, var/verb) +/mob/living/carbon/human/handle_speech_problems(var/list/message_data) if(silent || (sdisabilities & MUTE)) - message = "" - speech_problem_flag = 1 + message_data[1] = "" + . = 1 + else if(istype(wear_mask, /obj/item/clothing/mask)) var/obj/item/clothing/mask/M = wear_mask if(M.voicechange) - message = pick(M.say_messages) - verb = pick(M.say_verbs) - speech_problem_flag = 1 + message_data[1] = pick(M.say_messages) + message_data[2] = pick(M.say_verbs) + . = 1 - if(message != "") - var/list/parent = ..() - message = parent[1] - verb = parent[2] - if(parent[3]) - speech_problem_flag = 1 - - var/list/returns[3] - returns[1] = message - returns[2] = verb - returns[3] = speech_problem_flag - return returns + else + . = ..(message_data) /mob/living/carbon/human/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) switch(message_mode) diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index 157310291a..79e3af1cdd 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -60,17 +60,18 @@ message = capitalize(trim(message)) - if(speech_problem_flag) - var/list/handle_r = handle_speech_problems(message) - message = handle_r[1] - verb = handle_r[2] - if(verb == "yells loudly") - verb = "slurs emphatically" - else - var/adverb = pick("quietly", "softly") - verb = "[verb] [adverb]" + //speech problems + if(!(speaking && (speaking.flags & NO_STUTTER))) + var/list/message_data = list(message, verb, 1) + if(handle_speech_problems(message_data)) + message = message_data[1] - speech_problem_flag = handle_r[3] + if(!message_data[3]) //if a speech problem like hulk forces someone to yell then everyone hears it + verb = message_data[2] //assume that if they are going to force not-whispering then they will set an appropriate verb too + message_range = world.view + else + var/adverb = pick("quietly", "softly") + verb = "[message_data[2]] [adverb]" if(!message || message=="") return diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 53f99cf13d..df769d1c88 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -82,27 +82,33 @@ proc/get_radio_key_from_channel(var/channel) /mob/living/proc/get_default_language() return default_language -/mob/living/proc/handle_speech_problems(var/message, var/verb) - var/list/returns[3] - var/speech_problem_flag = 0 +/mob/living/proc/is_muzzled() + return 0 + +//Takes a list of the form list(message, verb, whispering) and modifies it as needed +//Returns 1 if a speech problem was applied, 0 otherwise +/mob/living/proc/handle_speech_problems(var/list/message_data) + var/message = message_data[1] + var/verb = message_data[2] + + . = 0 if((HULK in mutations) && health >= 25 && length(message)) message = "[uppertext(message)]!!!" verb = pick("yells","roars","hollers") - speech_problem_flag = 1 + message_data[3] = 0 + . = 1 if(slurring) message = slur(message) verb = pick("slobbers","slurs") - speech_problem_flag = 1 + . = 1 if(stuttering) message = stutter(message) verb = pick("stammers","stutters") - speech_problem_flag = 1 + . = 1 - returns[1] = message - returns[2] = verb - returns[3] = speech_problem_flag - return returns + message_data[1] = message + message_data[2] = verb /mob/living/proc/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) if(message_mode == "intercom") @@ -172,12 +178,13 @@ proc/get_radio_key_from_channel(var/channel) message = trim_left(message) - if(!(speaking && (speaking.flags & NO_STUTTER))) - message = handle_autohiss(message, speaking) + message = handle_autohiss(message, speaking) - var/list/handle_s = handle_speech_problems(message, verb) - message = handle_s[1] - verb = handle_s[2] + if(!(speaking && (speaking.flags & NO_STUTTER))) + var/list/message_data = list(message, verb, 0) + if(handle_speech_problems(message_data)) + message = message_data[1] + verb = message_data[2] if(!message || message == "") return 0