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