diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index e553e47b9b5..10d7273aa73 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -133,6 +133,7 @@ var/list/admin_verbs_server = list( /client/proc/one_click_antag, /client/proc/cmd_admin_change_custom_event, /client/proc/cmd_admin_create_centcom_report, + /client/proc/cmd_admin_dress, /client/proc/response_team // Response Teams admin verb ) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index e901bd8c85b..8e8870c891b 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -25,7 +25,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," src.verbs += /client/verb/adminhelp // 2 minute cool-down for adminhelps//Go to hell **/ var/msg - var/list/type = list("Player Complaint","Question","Bug Report") + var/list/type = list("Player Complaint","Question","Bug Report","Event") var/selected_type = input("Pick a category.", "Admin Help", null, null) as null|anything in type if(selected_type) msg = input("Please enter your message.", "Admin Help", null, null) as text @@ -103,8 +103,10 @@ 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/banholders = list() var/list/debugholders = list() + var/list/adminholders = list() + var/list/eventholders = list() for(var/client/X in admins) if(R_MOD & X.holder.rights) if(X.is_afk()) @@ -114,10 +116,12 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," if(X.is_afk()) admin_number_afk++ adminholders += X + if(R_BAN & X.holder.rights) + banholders += X if(R_DEBUG & X.holder.rights) - if(X.is_afk()) - admin_number_afk++ debugholders += X + if(R_EVENT & X.holder.rights) + eventholders += X switch(selected_type) if("Question") @@ -127,16 +131,11 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," 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 - 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 + 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) @@ -144,7 +143,26 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," X << 'sound/effects/adminhelp.ogg' X << msg else - for(var/client/X in adminholders) + if(adminholders.len) + for(var/client/X in adminholders) + if(X.prefs.sound & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' + X << msg + else if("Event") + if(eventholders.len) + for(var/client/X in eventholders) + if(X.prefs.sound & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' + X << msg + else + if(banholders.len) + for(var/client/X in banholders) + if(X.prefs.sound & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' + X << msg + else if("Player Complaint") + if(banholders.len) + for(var/client/X in banholders) 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 1ac8a686d54..39f983fe3eb 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -180,8 +180,10 @@ var/list/modholders = list() - var/list/adminholders = list() + var/list/banholders = list() var/list/debugholders = list() + var/list/adminholders = list() + var/list/eventholders = list() for(var/client/X in admins) if(R_MOD & X.holder.rights) modholders += X @@ -189,6 +191,10 @@ adminholders += X if(R_DEBUG & X.holder.rights) debugholders += X + if(R_BAN & X.holder.rights) + banholders += X + if(R_EVENT & X.holder.rights) + eventholders += X //we don't use message_admins here because the sender/receiver might get it too for(var/client/X in admins) @@ -201,18 +207,23 @@ if(X.holder.rights & R_MOD) 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 + X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //Any admins in backup of mod question 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]" //Any admins in backup of bug reports + if("Event") + if(X.holder.rights & R_EVENT) X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //inform X + else if(!eventholders.len && X.holder.rights & R_BAN) + X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //Quality in backup of Event + if("Player Complaint") + if(X.holder.rights & R_BAN) + X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //There should always be at least 1 person with +BAN on else if((X.holder.rights & R_ADMIN) || (X.holder.rights & R_MOD) ) - X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //inform X + X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //If there's no type, send to all admins. /client/proc/cmd_admin_irc_pm() if(prefs.muted & MUTE_ADMINHELP) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 1e14689d676..497c94b50c4 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -1,4 +1,4 @@ -/mob/verb/pray(msg as text) +/mob/living/verb/pray(msg as text) set category = "IC" set name = "Pray" @@ -19,9 +19,24 @@ var/image/cross = image('icons/obj/storage.dmi',"bible") msg = "\blue \icon[cross] PRAY: [key_name(src, 1)] (?) (PP) (VV) (SM) (JMP) (CA) (SC): [msg]" - for(var/client/C in admins) - if(C.prefs.toggles & CHAT_PRAYER) - C << msg + var/list/eventholders = list() + var/list/banholders = list() + + for(var/client/X in admins) + if(R_EVENT & X.holder.rights) + eventholders += X + if(R_BAN & X.holder.rights) + banholders += X + + if(eventholders.len) + for(var/client/C in eventholders) + if(C.prefs.toggles & CHAT_PRAYER) + C << msg + else if (banholders.len) + for(var/client/C in banholders) + if(C.prefs.toggles & CHAT_PRAYER) + C << msg + usr << "Your prayers have been received by the gods." feedback_add_details("admin_verb","PR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -30,14 +45,65 @@ /proc/Centcomm_announce(var/text , var/mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "\blue CENTCOMM:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" - admins << msg + + var/list/eventholders = list() + var/list/banholders = list() + + for(var/client/X in admins) + if(R_EVENT & X.holder.rights) + eventholders += X + if(R_BAN & X.holder.rights) + banholders += X + + if(eventholders.len) + for(var/client/C in eventholders) + C << msg + return + else if (banholders.len) + for(var/client/C in banholders) + C << msg + return /proc/Syndicate_announce(var/text , var/mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "\blue SYNDICATE:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" - admins << msg + + var/list/eventholders = list() + var/list/banholders = list() + + for(var/client/X in admins) + if(R_EVENT & X.holder.rights) + eventholders += X + if(R_BAN & X.holder.rights) + banholders += X + + if(eventholders.len) + for(var/client/C in eventholders) + C << msg + return + else if (banholders.len) + for(var/client/C in banholders) + C << msg + return /proc/HONK_announce(var/text , var/mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "\blue HONK:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" - admins << msg \ No newline at end of file + + var/list/eventholders = list() + var/list/banholders = list() + + for(var/client/X in admins) + if(R_EVENT & X.holder.rights) + eventholders += X + if(R_BAN & X.holder.rights) + banholders += X + + if(eventholders.len) + for(var/client/C in eventholders) + C << msg + return + else if (banholders.len) + for(var/client/C in banholders) + C << msg + return \ No newline at end of file