diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 4fa4063554..6f2515b55d 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -303,6 +303,10 @@ BLIND // can't see anything body_parts_covered = FACE|EYES sprite_sheets = list("Vox" = 'icons/mob/species/vox/masks.dmi') + var/voicechange = 0 + var/list/say_messages + var/list/say_verbs + /obj/item/clothing/mask/update_clothing_icon() if (ismob(src.loc)) var/mob/M = src.loc diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 3d3db7c736..f7b6ecbc6c 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -7,6 +7,12 @@ body_parts_covered = 0 w_class = 2 gas_transfer_coefficient = 0.90 + voicechange = 1 + +/obj/item/clothing/mask/muzzle/New() + ..() + say_messages = list("Mmfph!", "Mmmf mrrfff!", "Mmmf mnnf!") + say_verbs = list("mumbles", "says") // Clumsy folks can't take the mask off themselves. /obj/item/clothing/mask/muzzle/attack_hand(mob/user as mob) @@ -99,9 +105,14 @@ flags_inv = HIDEFACE body_parts_covered = HEAD|FACE|EYES w_class = 2 - var/voicechange = 0 siemens_coefficient = 0.9 +/obj/item/clothing/mask/horsehead/New() + ..() + // The horse mask doesn't cause voice changes by default, the wizard spell changes the flag as necessary + say_messages = list("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!") + say_verbs = list("whinnies", "neighs", "says") + /obj/item/clothing/mask/ai name = "camera MIU" desc = "Allows for direct mental connection to accessible camera networks." diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index bbf1844c45..44b8e6f238 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -6,9 +6,6 @@ message = sanitize(message) ..(message, alt_name = alt_name) -/mob/living/carbon/human/is_muzzled() - return istype(src.wear_mask, /obj/item/clothing/mask/muzzle) - /mob/living/carbon/human/proc/forcesay(list/append) if(stat == CONSCIOUS) if(client) @@ -132,11 +129,11 @@ if(silent || (sdisabilities & MUTE)) message = "" speech_problem_flag = 1 - else if(istype(wear_mask, /obj/item/clothing/mask/horsehead)) - var/obj/item/clothing/mask/horsehead/hoers = wear_mask - if(hoers.voicechange) - message = pick("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!") - verb = pick("whinnies","neighs", "says") + 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 if(message != "") diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 90f82d9304..20e8ba14d6 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -139,10 +139,6 @@ proc/get_radio_key_from_channel(var/channel) return say_dead(message) return - if(is_muzzled()) - src << "You're muzzled and cannot speak!" - return - var/message_mode = parse_message_mode(message, "headset") switch(copytext(message,1,2)) @@ -180,6 +176,10 @@ proc/get_radio_key_from_channel(var/channel) else verb = say_quote(message) + if(is_muzzled()) + src << "You're muzzled and cannot speak!" + return + message = trim_left(message) if(!(speaking && (speaking.flags & NO_STUTTER)))