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