diff --git a/code/defines/mob/mob.dm b/code/defines/mob/mob.dm index d1bf9e743d44..24ab032f220a 100644 --- a/code/defines/mob/mob.dm +++ b/code/defines/mob/mob.dm @@ -118,7 +118,8 @@ var/miming = null //checks if the guy is a mime//Human var/silent = null //Can't talk. Value goes down every life proc.//Human - var/muted = null //Can't talk in any way shape or form (Even OOC or emote). An admin punishment + var/muted = null //Can't talk in OOC, say, whisper, emote... anything except for adminhelp and admin-pm. An admin punishment + var/muted_complete = null //Can't talk in any way shape or form (muted + can't adminhelp or respond to admin pm-s). An admin punishment var/obj/hud/hud_used = null diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 16863a72c717..eb9b378ccd13 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -25,7 +25,8 @@ else if (!dooc_allowed && !src.client.holder && (src.client.deadchat != 0)) usr << "OOC for dead mobs has been turned off." return - else if (src.muted) + else if (src.muted || src.muted_complete) + src << "You are muted." return else if (findtext(msg, "byond://") && !src.client.holder) src << "Advertising other servers is not allowed." diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 09afd799e4b6..8ff43d7547a5 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -380,7 +380,18 @@ M.muted = !M.muted log_admin("[key_name(usr)] has [(M.muted ? "muted" : "voiced")] [key_name(M)].") message_admins("\blue [key_name_admin(usr)] has [(M.muted ? "muted" : "voiced")] [key_name_admin(M)].", 1) - M << "You have been [(M.muted ? "muted" : "voiced")]." + M << "You have been [(M.muted ? "muted" : "voiced")]. Please resolve this in adminhelp." + if (href_list["mute_complete"]) + if ((src.rank in list( "Moderator", "Temporary Admin", "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master" ))) + var/mob/M = locate(href_list["mute_complete"]) + if (ismob(M)) + if ((M.client && M.client.holder && (M.client.holder.level >= src.level))) + alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null) + return + M.muted_complete = !M.muted_complete + log_admin("[key_name(usr)] has [(M.muted_complete ? "completely muted" : "voiced (complete)")] [key_name(M)].") + message_admins("\blue [key_name_admin(usr)] has [(M.muted_complete ? "completely muted" : "voiced (complete)")] [key_name_admin(M)].", 1) + M << "You have been [(M.muted_complete ? "completely muted" : "voiced (complete)")]. You are unable to speak or even adminhelp" if (href_list["c_mode"]) if ((src.rank in list( "Temporary Admin", "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master" ))) @@ -1679,6 +1690,7 @@ foo += text("Hasn't Entered Game | ") foo += text("Forcesay | ") foo += text("Mute: [(M.muted ? "Muted" : "Voiced")] | ") + foo += text("Complete mute: [(M.muted ? "Completely Muted" : "Voiced")] | ") foo += text("Boot") foo += text("
") foo += text("Jump to | ") diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 43e4d1ca0949..60e10d4b593d 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -10,7 +10,7 @@ if (!msg) return - if (usr.muted) + if (usr.muted_complete) return for (var/mob/M in world) diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index ca2ccc90062a..4423c156b2d3 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -9,7 +9,7 @@ src << "Only administrators may use this command." return - if (!src.mob || src.mob.muted) + if (!src.mob || src.mob.muted || src.mob.muted_complete) return msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) diff --git a/code/modules/admin/verbs/deadsay.dm b/code/modules/admin/verbs/deadsay.dm index 30eb164e9592..448ae4e81770 100644 --- a/code/modules/admin/verbs/deadsay.dm +++ b/code/modules/admin/verbs/deadsay.dm @@ -8,7 +8,7 @@ return if(!src.mob) return - if(src.mob.muted) + if(src.mob.muted || src.mob.muted_complete) return msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 30b2b96d7d28..5c48329519e3 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -10,7 +10,7 @@ if (!msg) return - if (usr.muted) + if (usr.muted || src.muted_complete) return var/icon/cross = icon('storage.dmi',"bible") diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 4ce4e1406305..f84a3adf7e3e 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -91,7 +91,7 @@ src << "Only administrators may use this command." return if(M) - if(mob.muted) + if(src.mob.muted_complete) src << "You are muted have a nice day" return if (!( ismob(M) )) diff --git a/code/modules/mob/dead/observer/say.dm b/code/modules/mob/dead/observer/say.dm index a5c6a7a46bc6..1e88d0f2cf0d 100644 --- a/code/modules/mob/dead/observer/say.dm +++ b/code/modules/mob/dead/observer/say.dm @@ -9,7 +9,8 @@ log_say("Ghost/[src.key] : [message]") - if (src.muted) + if (src.muted || src.muted_complete) + src << "You are muted." return . = src.say_dead(message) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 44b21d751473..f7c436ab7804 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -62,7 +62,8 @@ message = "[src] [input]" if ("me") - if (muted || silent) + if (muted || silent || muted_complete) + src << "You are muted." return if (stat) return diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index 6f84cd580484..58a9fbee69d5 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -7,7 +7,8 @@ log_whisper("[src.name]/[src.key] : [message]") - if (src.muted) + if (src.muted || src.muted_complete) + src << "You are muted." return if (src.stat == 2) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index ce2395b9855c..65b5b770e0db 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -30,7 +30,8 @@ if (stat == 2) return say_dead(message) - if (muted || silent) + if (muted || silent || src.muted_complete) + src << "You are muted." return // wtf? diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index dac3fc0413dd..abe5af04ab02 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -2,7 +2,8 @@ if (!message) return - if (muted) + if (muted || src.muted_complete) + src << "You are muted." return if (stat == 2) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 3dce0a8a6dda..2f383fffe67c 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -578,7 +578,7 @@ if(href_list["priv_msg"]) var/mob/M = locate(href_list["priv_msg"]) if(M) - if(muted) + if(muted_complete) src << "You are muted have a nice day" return if (!ismob(M))