diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm
index 0e8e869f08a..e901bd8c85b 100644
--- a/code/modules/admin/verbs/adminhelp.dm
+++ b/code/modules/admin/verbs/adminhelp.dm
@@ -102,26 +102,49 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
//send this msg to all admins
var/admin_number_afk = 0
+ var/list/modholders = list()
+ var/list/adminholders = list()
+ var/list/debugholders = list()
for(var/client/X in admins)
- switch(selected_type)
- if("Question")
- if(R_MOD & X.holder.rights)
- if(X.is_afk())
- admin_number_afk++
+ if(R_MOD & X.holder.rights)
+ if(X.is_afk())
+ admin_number_afk++
+ modholders += X
+ if(R_ADMIN & X.holder.rights)
+ if(X.is_afk())
+ admin_number_afk++
+ adminholders += X
+ if(R_DEBUG & X.holder.rights)
+ if(X.is_afk())
+ admin_number_afk++
+ debugholders += X
+
+ switch(selected_type)
+ if("Question")
+ if(modholders.len)
+ for(var/client/X in modholders)
if(X.prefs.sound & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
X << msg
- else if("Player Complaint")
- if(R_ADMIN & X.holder.rights)
- if(X.is_afk())
- admin_number_afk++
+ else
+ for(var/client/X in adminholders)
if(X.prefs.sound & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
X << msg
- else if("Bug Report")
- if(R_DEBUG & X.holder.rights)
- if(X.is_afk())
- admin_number_afk++
+ else if("Player Complaint")
+ if(adminholders.len)
+ for(var/client/X in adminholders)
+ if(X.prefs.sound & SOUND_ADMINHELP)
+ X << 'sound/effects/adminhelp.ogg'
+ X << msg
+ else if("Bug Report")
+ if(debugholders.len)
+ for(var/client/X in debugholders)
+ if(X.prefs.sound & SOUND_ADMINHELP)
+ X << 'sound/effects/adminhelp.ogg'
+ X << msg
+ else
+ for(var/client/X in adminholders)
if(X.prefs.sound & SOUND_ADMINHELP)
X << 'sound/effects/adminhelp.ogg'
X << msg
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index e90801b3abc..318bd1f5879 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -178,6 +178,18 @@
log_admin("PM: [key_name(src)]->[key_name(C)]: [msg]")
+
+ var/list/modholders = list()
+ var/list/adminholders = list()
+ var/list/debugholders = list()
+ for(var/client/X in admins)
+ if(R_MOD & X.holder.rights)
+ modholders += X
+ if(R_ADMIN & X.holder.rights)
+ adminholders += X
+ if(R_DEBUG & X.holder.rights)
+ debugholders += X
+
//we don't use message_admins here because the sender/receiver might get it too
for(var/client/X in admins)
//check client/X is an admin and isn't the sender or recipient
@@ -188,12 +200,16 @@
if("Question")
if(X.holder.rights & (R_MOD|R_MENTOR))
X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //inform X
+ else if(!modholders.len && X.holder.rights & R_ADMIN)
+ X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //inform X
if("Player Complaint")
if(X.holder.rights & R_ADMIN)
X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //inform X
if("Bug Report")
if(X.holder.rights & R_DEBUG)
X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //inform X
+ else if(!debugholders.len && X.holder.rights & R_ADMIN)
+ X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //inform X
else
if((X.holder.rights & R_ADMIN) || (X.holder.rights & (R_MOD|R_MENTOR)) )
X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //inform X