/mob/living/carbon/proc/handle_tongueless_speech(mob/living/carbon/speaker, list/speech_args) var/message = speech_args[SPEECH_MESSAGE] var/static/regex/tongueless_lower = new("\[gdntke]+", "g") var/static/regex/tongueless_upper = new("\[GDNTKE]+", "g") if(message[1] != "*") message = tongueless_lower.Replace(message, pick("aa","oo","'")) message = tongueless_upper.Replace(message, pick("AA","OO","'")) speech_args[SPEECH_MESSAGE] = message /mob/living/carbon/can_speak_vocal(message) if(silent) return 0 return ..() /mob/living/carbon/could_speak_in_language(datum/language/dt) var/obj/item/organ/tongue/T = getorganslot(ORGAN_SLOT_TONGUE) if(T) . = T.could_speak_in_language(dt) else . = initial(dt.flags) & TONGUELESS_SPEECH /mob/living/carbon/hear_intercept(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode) . = ..() if(!client) return for(var/T in get_traumas()) var/datum/brain_trauma/trauma = T message = trauma.on_hear(message, speaker, message_language, raw_message, radio_freq) if (src.mind.has_antag_datum(/datum/antagonist/traitor)) message = GLOB.syndicate_code_phrase_regex.Replace(message, "$1") message = GLOB.syndicate_code_response_regex.Replace(message, "$1") return message