From 2b0d586281fcb9da58e0a70096688e397e6cff47 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Fri, 20 Jun 2014 09:50:48 -0400 Subject: [PATCH] Made it so if a bug report or question comes in and there's noone with the right flag on, it gets sent to anyone with r_admin instead. --- code/modules/admin/verbs/adminhelp.dm | 49 ++++++++++++++++++++------- code/modules/admin/verbs/adminpm.dm | 16 +++++++++ 2 files changed, 52 insertions(+), 13 deletions(-) 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