diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index ba8e3d6850a..d6ed808461b 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -67,7 +67,7 @@ if(..()) return if(a_intent != "harm" || !ismob(A)) return - if(istype(wear_mask, /obj/item/clothing/mask/muzzle)) + if(is_muzzled()) return var/mob/living/carbon/ML = A var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") diff --git a/code/datums/spell.dm b/code/datums/spell.dm index 06bedadbd4d..7da40ce6f7c 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -76,7 +76,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin var/mob/living/carbon/human/H = user - if((invocation_type == "whisper" || invocation_type == "shout") && istype(H.wear_mask, /obj/item/clothing/mask/muzzle)) + if((invocation_type == "whisper" || invocation_type == "shout") && !H.is_muzzled()) user << "You can't get the words out!" return 0 diff --git a/code/datums/spells/mime.dm b/code/datums/spells/mime.dm index 1f2c79b646a..12c4a8e837b 100644 --- a/code/datums/spells/mime.dm +++ b/code/datums/spells/mime.dm @@ -14,7 +14,10 @@ /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall/Click() - if(usr) + if(usr && usr.mind) + if(!usr.mind.miming) + usr << "You must dedicate yourself to silence first." + return invocation = "[usr.real_name] looks as if a wall is in front of them." else invocation_type ="none" diff --git a/code/game/gamemodes/changeling/powers/lesserform.dm b/code/game/gamemodes/changeling/powers/lesserform.dm index 1b46d1aca9d..10f61e1b6e0 100644 --- a/code/game/gamemodes/changeling/powers/lesserform.dm +++ b/code/game/gamemodes/changeling/powers/lesserform.dm @@ -10,9 +10,9 @@ /obj/effect/proc_holder/changeling/lesserform/sting_action(var/mob/living/carbon/human/user) user << "Our genes cry out!" - var/mob/living/carbon/monkey/O = user.monkeyize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPDAMAGE | TR_KEEPSE | TR_KEEPSRC) + user.monkeyize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPDAMAGE | TR_KEEPSE | TR_KEEPSRC) - O.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null) + // Human-form power now handled in monkeyize() feedback_add_details("changeling_powers","LF") .=1 qdel(user) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 1a3e6e188cd..90865e016b3 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -183,11 +183,9 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", if(!iscultist(user)) user << "You can't mouth the arcane scratchings without fumbling over them." return - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(istype(H.wear_mask, /obj/item/clothing/mask/muzzle)) - H << "You are unable to speak the words of the rune." - return + if(user.is_muzzled()) + user << "You are unable to speak the words of the rune." + return if(!word1 || !word2 || !word3 || prob(user.getBrainLoss())) return fizzle() if(word1 == wordtravel && word2 == wordself) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 53b7210d99f..b88f5b482ad 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -796,6 +796,7 @@ icon_state = "angel" dried_type = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel New(var/loc, var/potency = 35) + ..() if(reagents) reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) reagents.add_reagent("amatoxin", 13+round(potency / 3, 1)) diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index c0a4eda32d0..5d7290fedf7 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -475,7 +475,7 @@ /obj/item/seeds/angelmycelium name = "pack of destroying angel mycelium" - desc = "This mycelium grows into something devestating." + desc = "This mycelium grows into something devastating." icon_state = "mycelium-angel" species = "angel" plantname = "Destroying Angels" diff --git a/code/modules/mob/living/carbon/alien/humanoid/emote.dm b/code/modules/mob/living/carbon/alien/humanoid/emote.dm index d0b4fb7be1e..4351ced974f 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/emote.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/emote.dm @@ -8,7 +8,7 @@ if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' act = copytext(act,1,length(act)) - var/muzzled = istype(src.wear_mask, /obj/item/clothing/mask/muzzle) + var/muzzled = is_muzzled() var/m_type = 1 var/message diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index ebe2a488d4f..abda0ce43fa 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -116,7 +116,7 @@ if ("help") help_shake_act(M) else - if (istype(wear_mask, /obj/item/clothing/mask/muzzle)) + if (is_muzzled()) return if (health > 0) playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1) diff --git a/code/modules/mob/living/carbon/alien/larva/emote.dm b/code/modules/mob/living/carbon/alien/larva/emote.dm index 6a9120a111f..8a662b5dc47 100644 --- a/code/modules/mob/living/carbon/alien/larva/emote.dm +++ b/code/modules/mob/living/carbon/alien/larva/emote.dm @@ -8,7 +8,7 @@ if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' act = copytext(act,1,length(act)) - var/muzzled = istype(src.wear_mask, /obj/item/clothing/mask/muzzle) + var/muzzled = is_muzzled() var/m_type = 1 var/message diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 12b3713d6df..7503b0d0b35 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -142,7 +142,7 @@ if ("help") help_shake_act(M) else - if (istype(wear_mask, /obj/item/clothing/mask/muzzle)) + if (is_muzzled()) return if (health > 0) playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 5745bcea0e5..8cc66e2897b 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -452,12 +452,6 @@ ..() -/mob/living/carbon/say(var/message, var/bubble_type) - if(istype(wear_mask, /obj/item/clothing/mask/muzzle)) - return - - ..(message, bubble_type) - /mob/living/carbon/proc/is_mutantrace(var/mrace) if(mrace) if(src.dna && src.dna.mutantrace == mrace) @@ -483,3 +477,6 @@ var/const/GALOSHES_DONT_HELP = 8 /mob/living/carbon/fall(var/forced) loc.handle_fall(src, forced)//it's loc so it doesn't call the mob's handle_fall which does nothing + +/mob/living/carbon/is_muzzled() + return(istype(src.wear_mask, /obj/item/clothing/mask/muzzle)) diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm index af48fdc58b7..90c9809c580 100644 --- a/code/modules/mob/living/carbon/emote.dm +++ b/code/modules/mob/living/carbon/emote.dm @@ -13,7 +13,7 @@ if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' act = copytext(act,1,length(act)) - var/muzzled = (src.wear_mask && istype(src.wear_mask, /obj/item/clothing/mask/muzzle)) + var/muzzled = is_muzzled() //var/m_type = 1 switch(act)//Even carbon organisms want it alphabetically ordered.. diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 766b452bfa4..a765805d011 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -9,7 +9,7 @@ if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' act = copytext(act,1,length(act)) - var/muzzled = istype(src.wear_mask, /obj/item/clothing/mask/muzzle) + var/muzzled = is_muzzled() //var/m_type = 1 for (var/obj/item/weapon/implant/I in src) diff --git a/code/modules/mob/living/carbon/human/human_attackpaw.dm b/code/modules/mob/living/carbon/human/human_attackpaw.dm index 95e00df5d4d..9109084194f 100644 --- a/code/modules/mob/living/carbon/human/human_attackpaw.dm +++ b/code/modules/mob/living/carbon/human/human_attackpaw.dm @@ -3,7 +3,7 @@ if (M.a_intent == "help") help_shake_act(M) else - if (istype(wear_mask, /obj/item/clothing/mask/muzzle)) + if (is_muzzled()) return visible_message("[M.name] bites [src]!", \ diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index 7fe52e16a8b..0fd4a491c57 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -33,7 +33,7 @@ if (src.sdisabilities & MUTE) return - if (istype(src.wear_mask, /obj/item/clothing/mask/muzzle)) + if (is_muzzled()) return var/whispers = "whispers" diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 3d1c6f8c70c..ef4a1102c17 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -298,7 +298,7 @@ if ("help") help_shake_act(M) else - if (istype(wear_mask, /obj/item/clothing/mask/muzzle)) + if (is_muzzled()) return if (health > 0) attacked += 10 diff --git a/code/modules/mob/living/carbon/monkey/emote.dm b/code/modules/mob/living/carbon/monkey/emote.dm index 573c9c42f23..2b51ed70355 100644 --- a/code/modules/mob/living/carbon/monkey/emote.dm +++ b/code/modules/mob/living/carbon/monkey/emote.dm @@ -9,7 +9,7 @@ if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' act = copytext(act,1,length(act)) - var/muzzled = istype(src.wear_mask, /obj/item/clothing/mask/muzzle) + var/muzzled = is_muzzled() var/m_type = 1 var/message diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index d1f94f76d29..233e9501ea3 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -74,7 +74,7 @@ if (M.a_intent == "help") help_shake_act(M) else - if ((M.a_intent == "harm" && !( istype(wear_mask, /obj/item/clothing/mask/muzzle) ))) + if (M.a_intent == "harm" && !is_muzzled()) if ((prob(75) && health > 0)) playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1) for(var/mob/O in viewers(src, null)) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 4f722d5d8a5..53977a44810 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -132,7 +132,7 @@ var/list/department_radio_keys = list( //world << "channel_prefix=[channel_prefix]; message_mode=[message_mode]" if (message_mode) message = trim(copytext(message, 3)) - if (!(ishuman(src) || istype(src, /mob/living/simple_animal/parrot) || isrobot(src) && (message_mode=="department" || (message_mode in radiochannels)))) + if (!(ishuman(src) || istype(src, /mob/living/simple_animal/parrot) || isrobot(src)) && (message_mode=="department" || (message_mode in radiochannels))) // If they're not a human, parrot, or robot, and they're trying to use a radio channel message_mode = null //only humans can use headsets // Check changed so that parrots can use headsets. Other simple animals do not have ears and will cause runtimes. // And borgs -Sieve @@ -156,6 +156,24 @@ var/list/department_radio_keys = list( for(var/i=0,i[mind.changeling.changelingID]: [message]" + return + + if (message_mode == "alientalk") + if(alien_talk_understand || hivecheck()) + //message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) //seems redundant + alien_talk(message) + return + + if(is_muzzled()) // Intentionally after changeling hivemind check + return + var/list/obj/item/used_radios = new switch (message_mode) @@ -211,12 +229,6 @@ var/list/department_radio_keys = list( robot_talk(message) return - if ("alientalk") - if(alien_talk_understand || hivecheck()) - //message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) //seems redundant - alien_talk(message) - return - if ("department") if (src:ears) src:ears.talk_into(src, message, message_mode) @@ -231,13 +243,6 @@ var/list/department_radio_keys = list( message_range = 1 italics = 1 - if("changeling") - if(mind && mind.changeling) - log_say("[mind.changeling.changelingID]/[src.key] : [message]") - for(var/mob/Changeling in mob_list) - if((Changeling.mind && Changeling.mind.changeling) || istype(Changeling, /mob/dead/observer)) - Changeling << "[mind.changeling.changelingID]: [message]" - return ////SPECIAL HEADSETS START else //world << "SPECIAL HEADSETS" diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index b3f3e3137ce..719514fd6c8 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -558,6 +558,9 @@ var/list/slot_equipment_priority = list( \ /mob/proc/is_active() return (0 >= usr.stat) +/mob/proc/is_muzzled() + return 0 + /mob/proc/see(message) if(!is_active()) return 0 diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 03fb40fb3a9..7b69731d0cd 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -72,6 +72,8 @@ //transfer mind and delete old mob if(mind) mind.transfer_to(O) + if(O.mind.changeling) + O.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null) if (tr_flags & TR_DEFAULTMSG) O << "You are now a monkey." updateappearance(O)