diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm
index 8612e530..1c23f9b9 100644
--- a/code/game/verbs/ooc.dm
+++ b/code/game/verbs/ooc.dm
@@ -115,6 +115,9 @@ var/global/normal_ooc_colour = "#002eb8"
/* if(!ooc_allowed)
src << "\red OOC is globally muted"
return */
+ if(!looc_allowed)
+ src << "\red LOOC is muted."
+ return
if(!dooc_allowed && (mob.stat == DEAD))
usr << "\red OOC for dead mobs has been turned off."
return
diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm
index 09dc02eb..cad74466 100644
--- a/code/game/verbs/who.dm
+++ b/code/game/verbs/who.dm
@@ -48,11 +48,14 @@
var/msg = ""
var/modmsg = ""
+ var/custommsg = ""
var/num_mods_online = 0
var/num_admins_online = 0
+ var/num_custom_online = 0
+
if(holder)
for(var/client/C in admins)
- if(R_ADMIN & C.holder.rights || !(R_MOD & C.holder.rights))
+ if(R_ADMIN & C.holder.rights)
msg += "\t[C] is a [C.holder.rank]"
if(C.holder.fakekey)
@@ -70,7 +73,7 @@
msg += "\n"
num_admins_online++
- else
+ else if(R_MOD & C.holder.rights)
modmsg += "\t[C] is a [C.holder.rank]"
if(isobserver(C.mob))
@@ -85,15 +88,33 @@
modmsg += "\n"
num_mods_online++
+ else
+ custommsg += "\t[C] is a [C.holder.rank]"
+
+ if(isobserver(C.mob))
+ custommsg += " - Observing"
+ else if(istype(C.mob,/mob/new_player))
+ custommsg += " - Lobby"
+ else
+ custommsg += " - Playing"
+
+ if(C.is_afk())
+ custommsg += " (AFK)"
+ custommsg += "\n"
+ num_custom_online++
+
else
for(var/client/C in admins)
- if(R_ADMIN & C.holder.rights || !(R_MOD & C.holder.rights))
+ if(R_ADMIN & C.holder.rights)
if(!C.holder.fakekey)
msg += "\t[C] is a [C.holder.rank]\n"
num_admins_online++
- else
+ else if(R_MOD & C.holder.rights)
modmsg += "\t[C] is a [C.holder.rank]\n"
num_mods_online++
+ else
+ custommsg += "\t[C] is a [C.holder.rank]\n"
+ num_custom_online++
- msg = "Current Admins ([num_admins_online]):\n" + msg + "\n Current Moderators([num_mods_online]):\n" + modmsg
+ msg = "Current Admins ([num_admins_online]):\n" + msg + "\n Current Moderators([num_mods_online]):\n" + modmsg + "\n Current Custom Ranks([num_custom_online]):\n" + custommsg
src << msg
\ No newline at end of file
diff --git a/code/global.dm b/code/global.dm
index 1defaa5d..e94cec0a 100644
--- a/code/global.dm
+++ b/code/global.dm
@@ -90,6 +90,7 @@ var/datum/engine_eject/engine_eject_control = null
var/host = null
var/aliens_allowed = 0
var/ooc_allowed = 1
+var/looc_allowed = 1
var/dsay_allowed = 1
var/dooc_allowed = 1
var/traitor_scaling = 1
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 86fa0f52..8dbaf20b 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -726,6 +726,21 @@ var/global/floorIsLava = 0
message_admins("[key_name_admin(usr)] toggled OOC.", 1)
feedback_add_details("admin_verb","TOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+/datum/admins/proc/togglelooc()
+ set category = "Server"
+ set desc="Globally Toggles LOOC"
+ set name="Toggle LOOC"
+ looc_allowed = !( looc_allowed )
+ if (looc_allowed)
+ world << "The LOOC channel has been globally enabled!"
+ else
+ world << "The LOOC channel has been globally disabled!"
+ log_admin("[key_name(usr)] toggled LOOC.")
+ message_admins("[key_name_admin(usr)] toggled LOOC.", 1)
+ feedback_add_details("admin_verb","TLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+
+
+
/datum/admins/proc/toggledsay()
set category = "Server"
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 83f3b2af..7e370acd 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -56,6 +56,7 @@ var/list/admin_verbs_admin = list(
/client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/
/client/proc/secrets,
/datum/admins/proc/toggleooc, /*toggles ooc on/off for everyone*/
+ /datum/admins/proc/togglelooc,
/datum/admins/proc/toggleoocdead, /*toggles ooc on/off for everyone who is dead*/
/datum/admins/proc/toggledsay, /*toggles dsay on/off for everyone*/
/client/proc/game_panel, /*game panel, allows to change game-mode etc*/
@@ -104,6 +105,7 @@ var/list/admin_verbs_fun = list(
/client/proc/editappear
)
var/list/admin_verbs_dev = list(
+ /client/proc/togglebuildmodeself,
/datum/admins/proc/restart,
/datum/admins/proc/delay,
/client/proc/giveruntimelog,
@@ -259,6 +261,8 @@ var/list/admin_verbs_hideable = list(
/proc/release
)
var/list/admin_verbs_mod = list(
+ /client/proc/cmd_admin_wind,
+ /client/proc/cmd_admin_unwind,
/client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/
/client/proc/cmd_admin_pm_panel, /*admin-pm list*/
/client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game.*/