diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm
index 21a4dc364da..d403300c456 100644
--- a/code/__HELPERS/_logging.dm
+++ b/code/__HELPERS/_logging.dm
@@ -397,7 +397,7 @@ GLOBAL_LIST_INIT(testing_global_profiler, list("_PROFILE_NAME" = "Global"))
if (config_legacy.log_debug)
WRITE_LOG(GLOB.world_runtime_log, "DEBUG: [text]")
- for(var/client/C in admins)
+ for(var/client/C in GLOB.admins)
if(C.is_preference_enabled(/datum/client_preference/debug/show_debug_logs))
to_chat(C, "DEBUG: [text]")
diff --git a/code/controllers/failsafe.dm b/code/controllers/failsafe.dm
index 0589d5fa7ff..4c00409351b 100644
--- a/code/controllers/failsafe.dm
+++ b/code/controllers/failsafe.dm
@@ -56,23 +56,23 @@ var/datum/controller/failsafe/Failsafe
if(4,5)
--defcon
if(3)
- to_chat(admins, "Notice: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks.")
+ to_chat(GLOB.admins, "Notice: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks.")
--defcon
if(2)
- to_chat(admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks. Automatic restart in [processing_interval] ticks.")
+ to_chat(GLOB.admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks. Automatic restart in [processing_interval] ticks.")
--defcon
if(1)
- to_chat(admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has still not fired within the last [(5-defcon) * processing_interval] ticks. Killing and restarting...")
+ to_chat(GLOB.admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has still not fired within the last [(5-defcon) * processing_interval] ticks. Killing and restarting...")
--defcon
var/rtn = Recreate_MC()
if(rtn > 0)
defcon = 4
master_iteration = 0
- to_chat(admins, "MC restarted successfully")
+ to_chat(GLOB.admins, "MC restarted successfully")
else if(rtn < 0)
log_game("FailSafe: Could not restart MC, runtime encountered. Entering defcon 0")
- to_chat(admins, "ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying.")
+ to_chat(GLOB.admins, "ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying.")
//if the return number was 0, it just means the mc was restarted too recently, and it just needs some time before we try again
//no need to handle that specially when defcon 0 can handle it
if(0) //DEFCON 0! (mc failed to restart)
@@ -80,7 +80,7 @@ var/datum/controller/failsafe/Failsafe
if(rtn > 0)
defcon = 4
master_iteration = 0
- to_chat(admins, "MC restarted successfully")
+ to_chat(GLOB.admins, "MC restarted successfully")
else
defcon = min(defcon + 1,5)
master_iteration = Master.iteration
diff --git a/code/game/statistics.dm b/code/game/statistics.dm
index 558c38171b4..e8f73892bd6 100644
--- a/code/game/statistics.dm
+++ b/code/game/statistics.dm
@@ -1,5 +1,5 @@
/proc/sql_poll_population()
- var/admincount = admins.len
+ var/admincount = GLOB.admins.len
var/playercount = 0
for(var/mob/M in GLOB.player_list)
if(M.client)
diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm
index 97b3d1d2b32..b9ec0ced02a 100644
--- a/code/game/verbs/who.dm
+++ b/code/game/verbs/who.dm
@@ -1,4 +1,3 @@
-
/client/verb/who()
set name = "Who"
set category = "OOC"
@@ -68,119 +67,47 @@
set name = "Staffwho"
var/msg = ""
- var/modmsg = ""
- var/devmsg = ""
- var/eventMmsg = ""
- var/num_mods_online = 0
var/num_admins_online = 0
- var/num_devs_online = 0
- var/num_event_managers_online = 0
if(holder)
- for(var/client/C in admins)
- if(C.holder.rights & (R_ADMIN|R_MOD|R_EVENT)) //Used to determine who shows up in admin rows
+ for(var/client/C in GLOB.admins)
+ if(C.holder.fakekey && !((R_ADMIN|R_MOD) & holder.rights))
+ continue
- if(C.holder.fakekey && !((R_ADMIN|R_MOD) & holder.rights)) //Event Managerss can't see stealthmins
- continue
+ msg += "\t[C] is a [C.holder.rank]"
- msg += "\t[C] is a [C.holder.rank]"
+ if(C.holder.fakekey)
+ msg += " (as [C.holder.fakekey])"
- if(C.holder.fakekey)
- msg += " (as [C.holder.fakekey])"
+ if(isobserver(C.mob))
+ msg += " - Observing"
+ else if(istype(C.mob,/mob/new_player))
+ msg += " - Lobby"
+ else
+ msg += " - Playing"
- if(isobserver(C.mob))
- msg += " - Observing"
- else if(istype(C.mob,/mob/new_player))
- msg += " - Lobby"
- else
- msg += " - Playing"
-
- if(C.is_afk())
- var/seconds = C.last_activity_seconds()
- msg += " (AFK - "
- msg += "[round(seconds / 60)] minutes, "
- msg += "[seconds % 60] seconds)"
- msg += "\n"
-
- num_admins_online++
- else if(R_MOD & C.holder.rights) //Who shows up in mod rows.
- modmsg += "\t[C] is a [C.holder.rank]"
-
- if(isobserver(C.mob))
- modmsg += " - Observing"
- else if(istype(C.mob,/mob/new_player))
- modmsg += " - Lobby"
- else
- modmsg += " - Playing"
-
- if(C.is_afk())
- var/seconds = C.last_activity_seconds()
- modmsg += " (AFK - "
- modmsg += "[round(seconds / 60)] minutes, "
- modmsg += "[seconds % 60] seconds)"
- modmsg += "\n"
- num_mods_online++
-
- else if(R_SERVER & C.holder.rights)
- devmsg += "\t[C] is a [C.holder.rank]"
- if(isobserver(C.mob))
- devmsg += " - Observing"
- else if(istype(C.mob,/mob/new_player))
- devmsg += " - Lobby"
- else
- devmsg += " - Playing"
-
- if(C.is_afk())
- var/seconds = C.last_activity_seconds()
- devmsg += "(AFK - "
- devmsg += "[round(seconds / 60)] minutes, "
- devmsg += "[seconds % 60] seconds)"
- devmsg += "\n"
- num_devs_online++
-
- else if(R_EVENT & C.holder.rights)
- eventMmsg += "\t[C] is a [C.holder.rank]"
- if(isobserver(C.mob))
- eventMmsg += " - Observing"
- else if(istype(C.mob,/mob/new_player))
- eventMmsg += " - Lobby"
- else
- eventMmsg += " - Playing"
-
- if(C.is_afk())
- var/seconds = C.last_activity_seconds()
- eventMmsg += " (AFK - "
- eventMmsg += "[round(seconds / 60)] minutes, "
- eventMmsg += "[seconds % 60] seconds)"
- eventMmsg += "\n"
- num_event_managers_online++
+ if(C.is_afk())
+ var/seconds = C.last_activity_seconds()
+ msg += " (AFK - "
+ msg += "[round(seconds / 60)] minutes, "
+ msg += "[seconds % 60] seconds)"
+ msg += "\n"
+ num_admins_online++
else
- for(var/client/C in admins)
- if(C.holder.rights & (R_ADMIN | R_EVENT | R_MOD))
- if(!C.holder.fakekey)
- msg += "\t[C] is a [C.holder.rank]\n"
- num_admins_online++
- else if (R_MOD & C.holder.rights)
- modmsg += "\t[C] is a [C.holder.rank]\n"
- num_mods_online++
- else if (R_SERVER & C.holder.rights)
- devmsg += "\t[C] is a [C.holder.rank]\n"
- num_devs_online++
- else if (R_EVENT & C.holder.rights)
- eventMmsg += "\t[C] is a [C.holder.rank]\n"
- num_event_managers_online++
+ for(var/client/C in GLOB.admins)
+ if(!C.holder.fakekey)
+ msg += "\t[C] is a [C.holder.rank]"
+ num_admins_online++
+ if(C.is_afk(5 MINUTES))
+ if(C.is_afk(30 MINUTES))
+ msg += " (AFK)"
+ else
+ msg += " (Inactive)"
+ msg += "\n"
+
if(config_legacy.admin_irc)
to_chat(src, "Adminhelps are also sent to IRC. If no admins are available in game try anyway and an admin on IRC may see it and respond.")
msg = "Current Admins ([num_admins_online]):\n" + msg
- if(config_legacy.show_mods)
- msg += "\n Current Moderators ([num_mods_online]):\n" + modmsg
-
- if(config_legacy.show_devs)
- msg += "\n Current Developers ([num_devs_online]):\n" + devmsg
-
- if(config_legacy.show_event_managers)
- msg += "\n Current Event Managers ([num_event_managers_online]):\n" + eventMmsg
-
to_chat(src, msg)
diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm
index 824bfd5bddf..b2a7a8efdb1 100644
--- a/code/modules/admin/DB ban/functions.dm
+++ b/code/modules/admin/DB ban/functions.dm
@@ -60,14 +60,14 @@
who += ", [C]"
var/adminwho
- for(var/client/C in admins)
+ for(var/client/C in GLOB.admins)
if(!adminwho)
adminwho = "[C]"
else
adminwho += ", [C]"
reason = sql_sanitize_text(reason)
-
+
if(isnull(computerid))
computerid = ""
if(isnull(ip))
@@ -409,7 +409,7 @@
var/ipsearch = ""
var/cidsearch = ""
var/bantypesearch = ""
-
+
var/list/search_params = list()
if(!match)
if(adminckey)
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index bfb1efd82b3..9e9be1e1b8b 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -13,7 +13,7 @@ var/global/floorIsLava = 0
/proc/msg_admin_attack(var/text) //Toggleable Attack Messages
var/rendered = "ATTACK: [text]"
- for(var/client/C in admins)
+ for(var/client/C in GLOB.admins)
if((R_ADMIN|R_MOD) & C.holder.rights)
if(C.is_preference_enabled(/datum/client_preference/mod/show_attack_logs))
var/msg = rendered
@@ -1520,12 +1520,12 @@ datum/admins/var/obj/item/paper/admin/faxreply // var to hold fax replies in
to_chat(src.owner, "Message reply to transmitted successfully.")
if(P.sender) // sent as a reply
log_admin("[key_name(src.owner)] replied to a fax message from [key_name(P.sender)]")
- for(var/client/C in admins)
+ for(var/client/C in GLOB.admins)
if((R_ADMIN | R_MOD) & C.holder.rights)
to_chat(C, "FAX LOG:[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(P.sender)] (VIEW)")
else
log_admin("[key_name(src.owner)] has sent a fax message to [destination.department]")
- for(var/client/C in admins)
+ for(var/client/C in GLOB.admins)
if((R_ADMIN | R_MOD) & C.holder.rights)
to_chat(C, "FAX LOG:[key_name_admin(src.owner)] has sent a fax message to [destination.department] (VIEW)")
diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm
index 3d5056acc15..29500fb71be 100644
--- a/code/modules/admin/admin_ranks.dm
+++ b/code/modules/admin/admin_ranks.dm
@@ -64,10 +64,10 @@ var/list/admin_ranks = list() //list of all ranks with associated rights
/proc/load_admins()
//clear the datums references
admin_datums.Cut()
- for(var/client/C in admins)
+ for(var/client/C in GLOB.admins)
C.remove_admin_verbs()
C.holder = null
- admins.Cut()
+ GLOB.admins.Cut()
if(config_legacy.admin_legacy_system)
load_admin_ranks()
diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm
index 8d8134ff123..b994271167a 100644
--- a/code/modules/admin/holder2.dm
+++ b/code/modules/admin/holder2.dm
@@ -37,23 +37,22 @@ GLOBAL_PROTECT(href_token)
owner = C
owner.holder = src
owner.add_admin_verbs() //TODO
- admins |= C
+ GLOB.admins |= C
/datum/admins/proc/disassociate()
if(owner)
- admins -= owner
+ GLOB.admins -= owner
owner.remove_admin_verbs()
owner.deadmin_holder = owner.holder
owner.holder = null
/datum/admins/proc/reassociate()
if(owner)
- admins += owner
+ GLOB.admins |= owner
owner.holder = src
owner.deadmin_holder = null
owner.add_admin_verbs()
-
/*
checks if usr is an admin with at least ONE of the flags in rights_required. (Note, they don't need all the flags)
if rights_required == 0, then it simply checks if they are an admin.
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 6deb14ae8f5..c94e5e36456 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1278,7 +1278,7 @@
var/mob/M = locate(href_list["take_question"])
if(ismob(M))
var/take_msg = "ADMINHELP: [key_name(usr.client)] is attending to [key_name(M)]'s adminhelp, please don't dogpile them."
- for(var/client/X in admins)
+ for(var/client/X in GLOB.admins)
if((R_ADMIN|R_MOD|R_EVENT|R_SERVER) & X.holder.rights)
to_chat(X, take_msg)
to_chat(M, "Your adminhelp is being attended to by [usr.client]. Thanks for your patience!")
diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm
index a884073a593..84088b83f9d 100644
--- a/code/modules/admin/verbs/adminhelp.dm
+++ b/code/modules/admin/verbs/adminhelp.dm
@@ -254,7 +254,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick/ticket_list)
AddInteraction("[LinkedReplyName(ref_src)]: [msg]")
//send this msg to all admins
- for(var/client/X in admins)
+ for(var/client/X in GLOB.admins)
if(X.is_preference_enabled(/datum/client_preference/holder/play_adminhelp_ping))
SEND_SOUND(X, sound('sound/effects/adminhelp.ogg'))
window_flash(X)
@@ -577,7 +577,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick/ahelp)
/proc/get_admin_counts(requiredflags = R_BAN)
. = list("total" = list(), "noflags" = list(), "afk" = list(), "stealth" = list(), "present" = list())
- for(var/client/X in admins)
+ for(var/client/X in GLOB.admins)
.["total"] += X
if(requiredflags != 0 && !check_rights(rights_required = requiredflags, show_msg = FALSE, C = X))
.["noflags"] += X
@@ -612,7 +612,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick/ahelp)
/proc/ircadminwho()
var/list/message = list("Admins: ")
var/list/admin_keys = list()
- for(var/adm in admins)
+ for(var/adm in GLOB.admins)
var/client/C = adm
admin_keys += "[C][C.holder.fakekey ? "(Stealth)" : ""][C.is_afk() ? "(AFK)" : ""]"
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index c7f0d7ea1c0..756134de354 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -203,12 +203,12 @@
if(irc)
log_admin("PM: [key_name(src)]->IRC: [rawmsg]")
- for(var/client/X in admins)
+ for(var/client/X in GLOB.admins)
to_chat(X, "PM: [key_name(src, X, 0)]->IRC: [keywordparsedmsg]")
else
log_admin("PM: [key_name(src)]->[key_name(recipient)]: [rawmsg]")
//we don't use message_admins here because the sender/receiver might get it too
- for(var/client/X in admins)
+ for(var/client/X in GLOB.admins)
if(X.key!=key && X.key!=recipient.key) //check client/X is an admin and isn't the sender or recipient
to_chat(X, "PM: [key_name(src, X, 0)]->[key_name(recipient, X, 0)]: [keywordparsedmsg]" )
diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm
index 945f3cd5526..90d09218fca 100644
--- a/code/modules/admin/verbs/adminsay.dm
+++ b/code/modules/admin/verbs/adminsay.dm
@@ -12,7 +12,7 @@
log_adminsay(msg,src)
if(check_rights(R_ADMIN|R_MOD,0))
- for(var/client/C in admins)
+ for(var/client/C in GLOB.admins)
if((R_ADMIN|R_MOD) & C.holder.rights)
to_chat(C, "" + "ADMIN: " + " [key_name(usr, 1)]([admin_jump_link(mob, src)]): [msg]")
@@ -39,7 +39,7 @@
var/sender_name = key_name(usr, 1)
if(check_rights(R_ADMIN, 0))
sender_name = "[sender_name]"
- for(var/client/C in admins)
+ for(var/client/C in GLOB.admins)
if(check_rights(R_ADMIN|R_MOD|R_SERVER))
to_chat(C, "" + "MOD: "+ " [sender_name]([admin_jump_link(mob, C.holder)]): [msg]")
@@ -62,7 +62,7 @@
var/sender_name = key_name(usr, 1)
if(check_rights(R_ADMIN, 0))
sender_name = "[sender_name]"
- for(var/client/C in admins)
+ for(var/client/C in GLOB.admins)
to_chat(C, "" + "EVENT: " + " [sender_name]([admin_jump_link(mob, C.holder)]): [msg]")
feedback_add_details("admin_verb","GS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm
index 11592426e35..c7b3a35730b 100644
--- a/code/modules/admin/verbs/pray.dm
+++ b/code/modules/admin/verbs/pray.dm
@@ -15,7 +15,7 @@
var/image/cross = image('icons/obj/storage.dmi',"bible")
msg = "[icon2html(thing = cross, target = world)] PRAY: [key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src, src)]) (CA) (SC) (ST) (SMITE): [msg]"
- for(var/client/C in admins)
+ for(var/client/C in GLOB.admins)
if((R_ADMIN|R_MOD) & C.holder.rights)
if(C.is_preference_enabled(/datum/client_preference/admin/show_chat_prayers))
to_chat(C, msg)
@@ -27,14 +27,14 @@
/proc/CentCom_announce(var/msg, var/mob/Sender, var/iamessage)
msg = "[uppertext(GLOB.using_map.boss_short)]M[iamessage ? " IA" : ""]:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, null)]) (CA) (BSA) (RPLY): [msg]"
- for(var/client/C in admins)
+ for(var/client/C in GLOB.admins)
if((R_ADMIN|R_MOD) & C.holder.rights)
to_chat(C, msg)
SEND_SOUND(C, sound('sound/machines/signal.ogg'))
/proc/Syndicate_announce(var/msg, var/mob/Sender)
msg = "ILLEGAL:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, null)]) (CA) (BSA) (RPLY): [msg]"
- for(var/client/C in admins)
+ for(var/client/C in GLOB.admins)
if((R_ADMIN|R_MOD) & C.holder.rights)
to_chat(C, msg)
SEND_SOUND(C, sound('sound/machines/signal.ogg'))
diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index a70fcac2046..9c58fe62cdf 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -183,7 +183,6 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
var/debug_tools_allowed = FALSE //CITADEL EDIT
if(holder)
GLOB.admins |= src
- admins |= src // i hate this.
holder.owner = src
connecting_admin = TRUE
//CITADEL EDIT
@@ -427,7 +426,6 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
SSserver_maint.UpdateHubStatus()
if(holder)
holder.owner = null
- admins -= src
GLOB.admins -= src //delete them on the managed one too
if(using_perspective)
set_perspective(null)
@@ -622,7 +620,8 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
//checks if a client is afk
//3000 frames = 5 minutes
/client/proc/is_afk(duration=3000)
- if(inactivity > duration) return inactivity
+ if(inactivity > duration)
+ return inactivity
return 0
// Byond seemingly calls stat, each tick.
diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm
index 9c339b5b899..c09fd9e5a2d 100644
--- a/code/modules/client/verbs/ooc.dm
+++ b/code/modules/client/verbs/ooc.dm
@@ -208,7 +208,7 @@
receivers |= E.owner.client
// Admins with RLOOC displayed who weren't already in
- for(var/client/admin in admins)
+ for(var/client/admin in GLOB.admins)
if(!(admin in receivers) && admin.is_preference_enabled(/datum/client_preference/holder/show_rlooc))
r_receivers |= admin
@@ -218,7 +218,7 @@
for(var/client/target in receivers)
var/admin_stuff = ""
- if(target in admins)
+ if(target in GLOB.admins)
admin_stuff += "/([key])"
to_chat(target, "" + "LOOC: " + "[display_name][admin_stuff]: [msg]")
diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm
index e8edb3d9b88..be736021215 100644
--- a/code/modules/mob/logout.dm
+++ b/code/modules/mob/logout.dm
@@ -9,7 +9,7 @@
log_access_out(src)
if(admin_datums[src.ckey])
if (SSticker && SSticker.current_state == GAME_STATE_PLAYING) //Only report this stuff if we are currently playing.
- var/admins_number = admins.len
+ var/admins_number = GLOB.admins.len
message_admins("Admin logout: [key_name(src)]")
if(admins_number == 0) //Apparently the admin logging out is no longer an admin at this point, so we have to check this towards 0 and not towards 1. Awell.
diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm
index 7ae370f1d51..fd03198754c 100644
--- a/code/modules/paperwork/faxmachine.dm
+++ b/code/modules/paperwork/faxmachine.dm
@@ -206,7 +206,7 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins
msg += "(REPLY): "
msg += "Receiving '[sent.name]' via secure connection ... view message"
- for(var/client/C in admins)
+ for(var/client/C in GLOB.admins)
if(check_rights((R_ADMIN|R_MOD),0,C))
to_chat(C, msg)
SEND_SOUND(C, sound('sound/machines/printer.ogg'))