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'))