diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm
index 2d163186f41..0acc65fbc57 100644
--- a/code/controllers/voting.dm
+++ b/code/controllers/voting.dm
@@ -200,7 +200,7 @@ datum/controller/vote
return 0
choices.Add(config.votable_modes)
if("crew_transfer")
- if (check_rights(R_ADMIN) || check_rights(R_MOD))
+ if (check_rights(R_ADMIN|R_MOD))
if(ticker.current_state <= 2)
return 0
question = "End the shift?"
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index d39bc8e2ec3..96acbacb0e8 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -2,6 +2,7 @@
var/global/list/all_objectives = list()
var/list/potential_theft_objectives=subtypesof(/datum/theft_objective) \
+ - /datum/theft_objective/steal \
- /datum/theft_objective/special \
- /datum/theft_objective/number \
- /datum/theft_objective/number/special \
diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm
index 24be28454b3..6b9a64c1eb3 100644
--- a/code/game/verbs/ooc.dm
+++ b/code/game/verbs/ooc.dm
@@ -22,7 +22,7 @@ var/global/admin_ooc_colour = "#b82e00"
src << "You have OOC muted."
return
- if(!check_rights(R_MOD,0))
+ if(!check_rights(R_ADMIN|R_MOD,0))
if(!config.ooc_allowed)
src << "OOC is globally muted."
return
@@ -45,7 +45,7 @@ var/global/admin_ooc_colour = "#b82e00"
var/display_colour = normal_ooc_colour
if(holder && !holder.fakekey)
display_colour = mentor_ooc_colour
- if(check_rights(R_MOD,0) && !check_rights(R_ADMIN,0))
+ if(check_rights(R_ADMIN|R_MOD,0) && !check_rights(R_ADMIN,0))
display_colour = moderator_ooc_colour
else if(check_rights(R_ADMIN,0))
if(config.allow_admin_ooccolor)
@@ -157,7 +157,7 @@ var/global/admin_ooc_colour = "#b82e00"
src << "You have LOOC muted."
return
- if(!check_rights(R_MOD,0))
+ if(!check_rights(R_ADMIN|R_MOD,0))
if(!config.looc_allowed)
src << "LOOC is globally muted."
return
@@ -193,10 +193,10 @@ var/global/admin_ooc_colour = "#b82e00"
var/send = 0
if(target in admins)
- if(check_rights(R_MOD,0,target.mob))
+ if(check_rights(R_ADMIN|R_MOD,0,target.mob))
admin_stuff += "/([key])"
if(target != src)
- admin_stuff += "([admin_jump_link(mob, target.holder)])"
+ admin_stuff += " ([admin_jump_link(mob, target.holder)])"
if(target.mob in heard)
send = 1
@@ -210,7 +210,7 @@ var/global/admin_ooc_colour = "#b82e00"
prefix = " (Eye)"
if(!send && (target in admins))
- if(check_rights(R_MOD,0,target.mob))
+ if(check_rights(R_ADMIN|R_MOD,0,target.mob))
send = 1
prefix = "(R)"
diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm
index 87cc2765709..c6acf4af28a 100644
--- a/code/game/verbs/who.dm
+++ b/code/game/verbs/who.dm
@@ -8,7 +8,7 @@
var/list/Lines = list()
- if(holder && R_ADMIN & holder.rights)
+ if(check_rights(R_ADMIN,0))
for(var/client/C in clients)
var/entry = "\t[C.key]"
if(C.holder && C.holder.fakekey)
@@ -67,12 +67,11 @@
var/num_admins_online = 0
if(holder)
for(var/client/C in admins)
- if(R_ADMIN & C.holder.rights || !R_MOD & C.holder.rights)
+ if(check_rights(R_ADMIN, 0, C.mob))
- if(C.holder.fakekey && !(R_ADMIN & holder.rights)) //Mentors/Mods can't see stealthmins
+ if(C.holder.fakekey && !check_rights(R_ADMIN, 0)) //Mentors/Mods can't see stealthmins
continue
-
msg += "\t[C] is a [C.holder.rank]"
if(C.holder.fakekey)
@@ -91,7 +90,7 @@
num_admins_online++
- else if((R_MOD | R_MENTOR) & C.holder.rights)
+ else if(check_rights(R_MENTOR|R_MOD, 0, C.mob))
modmsg += "\t[C] is a [C.holder.rank]"
if(isobserver(C.mob))
@@ -108,11 +107,11 @@
else
for(var/client/C in admins)
- if(R_ADMIN & C.holder.rights || !R_MOD & C.holder.rights)
+ if(check_rights(R_ADMIN, 0, C.mob))
if(!C.holder.fakekey)
msg += "\t[C] is a [C.holder.rank]\n"
num_admins_online++
- else if ((R_MOD | R_MENTOR) & C.holder.rights)
+ else if (check_rights(R_MOD|R_MENTOR, 0, C.mob) && !check_rights(R_ADMIN, 0, C.mob))
modmsg += "\t[C] is a [C.holder.rank]\n"
num_mods_online++
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index d55e7751b17..8c63e18fb27 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -213,7 +213,7 @@ var/global/nologevent = 0
set category = "Admin"
set name = "Player Notes"
- if(!check_rights(R_MOD|R_ADMIN))
+ if(!check_rights(R_ADMIN|R_MOD))
return
show_note()
@@ -222,7 +222,7 @@ var/global/nologevent = 0
set category = "Admin"
set name = "Show Player Notes"
- if(!check_rights(R_MOD|R_ADMIN))
+ if(!check_rights(R_ADMIN|R_MOD))
return
show_note(key)
diff --git a/code/modules/admin/sql_notes.dm b/code/modules/admin/sql_notes.dm
index ef063c7c425..c9b472e9f92 100644
--- a/code/modules/admin/sql_notes.dm
+++ b/code/modules/admin/sql_notes.dm
@@ -1,5 +1,5 @@
/proc/add_note(target_ckey, notetext, timestamp, adminckey, logged = 1, server, checkrights = 1)
- if(checkrights && !check_rights(R_MOD))
+ if(checkrights && !check_rights(R_ADMIN|R_MOD))
return
if(!dbcon.IsConnected())
usr << "Failed to establish database connection."
@@ -47,7 +47,7 @@
show_note(target_ckey)
/proc/remove_note(note_id)
- if(!check_rights(R_MOD))
+ if(!check_rights(R_ADMIN|R_MOD))
return
var/ckey
var/notetext
@@ -77,7 +77,7 @@
show_note(ckey)
/proc/edit_note(note_id)
- if(!check_rights(R_MOD))
+ if(!check_rights(R_ADMIN|R_MOD))
return
if(!dbcon.IsConnected())
usr << "Failed to establish database connection."
@@ -112,7 +112,7 @@
show_note(target_ckey)
/proc/show_note(target_ckey, index, linkless = 0)
- if(!check_rights(R_MOD))
+ if(!check_rights(R_ADMIN|R_MOD))
return
var/output
var/navbar
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index cec4950a942..2b277a70ee8 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -11,7 +11,7 @@
return
if(href_list["rejectadminhelp"])
- if(!check_rights(R_MOD))
+ if(!check_rights(R_ADMIN|R_MOD))
return
var/client/C = locate(href_list["rejectadminhelp"])
if(!C)
@@ -1122,7 +1122,7 @@
usr << browse(edit_log,"window=watchedits")
else if(href_list["mute"])
- if(!check_rights(R_MOD))
+ if(!check_rights(R_ADMIN|R_MOD))
return
var/mob/M = locate(href_list["mute"])
@@ -1533,7 +1533,8 @@
show_player_panel(M)
else if(href_list["adminplayerobservejump"])
- if(!check_rights(R_MOD,0) && !check_rights(R_ADMIN)) return
+ if(!check_rights(R_ADMIN|R_MOD))
+ return
var/mob/M = locate(href_list["adminplayerobservejump"])
@@ -1543,7 +1544,8 @@
C.jumptomob(M)
else if(href_list["adminplayerobservefollow"])
- if(!check_rights(R_MOD,0) && !check_rights(R_ADMIN)) return
+ if(!check_rights(R_ADMIN|R_MOD))
+ return
var/mob/M = locate(href_list["adminplayerobservefollow"])
diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm
index 211906b9711..69999e89940 100644
--- a/code/modules/admin/verbs/adminhelp.dm
+++ b/code/modules/admin/verbs/adminhelp.dm
@@ -95,15 +95,15 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
var/list/banholders = list()
var/list/adminholders = list()
for(var/client/X in admins)
- if((R_MOD | R_MENTOR) & X.holder.rights)
+ if(check_rights(R_MOD|R_MENTOR, 0, X.mob))
if(X.is_afk())
admin_number_afk++
modholders += X
- if(R_ADMIN & X.holder.rights)
+ if(check_rights(R_ADMIN, 0, X.mob))
if(X.is_afk())
admin_number_afk++
adminholders += X
- if(R_BAN & X.holder.rights)
+ if(check_rights(R_BAN, 0, X.mob))
banholders += X
switch(selected_type)
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index 06e9a389ba9..8277b49081d 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -117,7 +117,7 @@
//mod PMs are maroon
//PMs sent from admins and mods display their rank
if(holder)
- if( holder.rights & (R_MOD | R_MENTOR) && !holder.rights & R_ADMIN )
+ if(check_rights(R_MOD|R_MENTOR,0) && !check_rights(R_ADMIN,0))
recieve_color = "maroon"
else
recieve_color = "red"
@@ -220,11 +220,11 @@
var/list/banholders = list()
var/list/adminholders = list()
for(var/client/X in admins)
- if((R_MOD | R_MENTOR) & X.holder.rights)
+ if(check_rights(R_MOD|R_MENTOR, 0, X.mob))
modholders += X
- if(R_ADMIN & X.holder.rights)
+ if(check_rights(R_ADMIN, 0, X.mob))
adminholders += X
- if(R_BAN & X.holder.rights)
+ if(check_rights(R_BAN, 0, X.mob))
banholders += X
//we don't use message_admins here because the sender/receiver might get it too
@@ -235,15 +235,15 @@
if(X.key!=key && X.key!=C.key)
switch(type)
if("Question")
- if(X.holder.rights & (R_MOD | R_MENTOR))
+ if(check_rights(R_MOD|R_MENTOR, 0, X.mob))
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)
+ else if(!modholders.len && check_rights(R_ADMIN, 0, X.mob))
X << "[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: \blue [msg]" //Any admins in backup of mod question
if("Player Complaint")
- if(X.holder.rights & R_BAN)
+ if(check_rights(R_BAN, 0, X.mob))
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) )
+ if(check_rights(R_ADMIN|R_MOD, 0, X.mob))
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()
@@ -271,6 +271,5 @@
for(var/client/X in admins)
if(X == src)
continue
- if((X.holder.rights & R_ADMIN) || (X.holder.rights & (R_MOD | R_MENTOR)))
+ if(check_rights(R_ADMIN|R_MOD|R_MENTOR, 0, X.mob))
X << "PM: [key_name(src, X, 0)]->IRC-Admins: \blue [msg]"
-
diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm
index cf0ec78a9b5..63ae34e248d 100644
--- a/code/modules/admin/verbs/adminsay.dm
+++ b/code/modules/admin/verbs/adminsay.dm
@@ -21,7 +21,8 @@
set name = "Msay"
set hidden = 1
- if(!check_rights(R_ADMIN|R_MOD)) return
+ if(!check_rights(R_ADMIN|R_MOD))
+ return
msg = sanitize(copytext(msg, 1, MAX_MESSAGE_LEN))
log_admin("MOD: [key_name(src)] : [msg]")
@@ -33,7 +34,7 @@
if(check_rights(R_ADMIN, 0))
spanclass = "mod_channel_admin"
for(var/client/C in admins)
- if(R_MOD & C.holder.rights)
+ if(check_rights(R_ADMIN|R_MOD, 0, C.mob))
C << "MOD: [key_name(usr, 1)] ([admin_jump_link(mob, C.holder)]): [msg]"
feedback_add_details("admin_verb","MS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
\ No newline at end of file
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 6c281461e89..37110c3c237 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -152,7 +152,7 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
else
if(!usr || !usr.client)
return
- if(!(usr.client.holder && usr.client.holder.rights && (usr.client.holder.rights & R_MOD)))
+ if(!check_rights(R_ADMIN|R_MOD))
usr << "Error: cmd_admin_mute: You don't have permission to do this."
return
if(!M.client)
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 9272692fe1a..7d68a50340f 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -295,13 +295,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(jobban_isbanned(M, "AntagHUD"))
src << "\red You have been banned from using this feature"
return
- if(config.antag_hud_restricted && !M.has_enabled_antagHUD && !check_rights(R_MOD,0))
+ if(config.antag_hud_restricted && !M.has_enabled_antagHUD && !check_rights(R_ADMIN|R_MOD,0))
var/response = alert(src, "If you turn this on, you will not be able to take any part in the round.","Are you sure you want to turn this feature on?","Yes","No")
if(response == "No") return
M.can_reenter_corpse = 0
if(M in respawnable_list)
respawnable_list -= M
- if(!M.has_enabled_antagHUD && !check_rights(R_MOD,0))
+ if(!M.has_enabled_antagHUD && !check_rights(R_ADMIN|R_MOD,0))
M.has_enabled_antagHUD = 1
if(M.antagHUD)
M.antagHUD = 0
diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm
index 8f1f8c38ad1..bc2e0274ea9 100644
--- a/code/modules/mob/emote.dm
+++ b/code/modules/mob/emote.dm
@@ -117,7 +117,7 @@
if(istype(M, /mob/new_player))
continue
- if(M.client && M.client.holder && (M.client.holder.rights & (R_ADMIN|R_MOD)) && (M.client.prefs.toggles & CHAT_DEAD)) // Show the emote to admins/mods
+ if(check_rights(R_ADMIN|R_MOD, 0, M) && (M.client.prefs.toggles & CHAT_DEAD)) // Show the emote to admins/mods
M << message
else if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_DEAD)) // Show the emote to regular ghosts with deadchat toggled on
diff --git a/code/modules/mob/living/silicon/ai/examine.dm b/code/modules/mob/living/silicon/ai/examine.dm
index db67235ac5d..8fc31c53828 100644
--- a/code/modules/mob/living/silicon/ai/examine.dm
+++ b/code/modules/mob/living/silicon/ai/examine.dm
@@ -31,5 +31,5 @@
return
/mob/dead/observer/showLaws(var/mob/living/silicon/S)
- if(antagHUD || check_rights(R_MOD, 0, src))
+ if(antagHUD || check_rights(R_ADMIN, 0, src))
S.laws.show_laws(src)
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index b383ca0edae..7e0fbb1389f 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -516,7 +516,7 @@ var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HARM)
var/mob/dead/observer/DM
if(istype(subject, /mob/dead/observer))
DM = subject
- if(check_rights(R_MOD,0,M)) // What admins see
+ if(check_rights(R_ADMIN|R_MOD,0,M)) // What admins see
lname = "[keyname][(DM && DM.anonsay) ? "*" : (DM ? "" : "^")] ([name])"
else
if(DM && DM.anonsay) // If the person is actually observer they have the option to be anonymous