diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm
index 7e0f0bdc698..0022bd4dd9a 100644
--- a/code/_onclick/observer.dm
+++ b/code/_onclick/observer.dm
@@ -71,7 +71,7 @@
/obj/machinery/gateway/centerstation/attack_ghost(mob/user as mob)
if(awaygate)
- if(user.client.holder)
+ if(check_rights_for(user.client, R_HOLDER))
user.loc = awaygate.loc
else if(active)
user.loc = awaygate.loc
@@ -95,7 +95,7 @@
// commented out, of course.
/*
/atom/proc/attack_admin(mob/user as mob)
- if(!user || !user.client || !user.client.holder)
+ if(!user || !user.client || !check_rights_for(user.client, R_HOLDER))
return
attack_hand(user)
diff --git a/code/controllers/admin.dm b/code/controllers/admin.dm
index ff386cd1966..69ec6de5cbd 100644
--- a/code/controllers/admin.dm
+++ b/code/controllers/admin.dm
@@ -27,7 +27,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick)
var/class
/obj/effect/statclick/debug/Click()
- if(!usr.client.holder || !target)
+ if(!check_rights_for(usr.client, R_HOLDER) || !target)
return
if(!class)
if(istype(target, /datum/controller/subsystem))
diff --git a/code/controllers/subsystems/persistence.dm b/code/controllers/subsystems/persistence.dm
index 4d4bdc4f01d..2b1cef0e770 100644
--- a/code/controllers/subsystems/persistence.dm
+++ b/code/controllers/subsystems/persistence.dm
@@ -49,7 +49,7 @@ SUBSYSTEM_DEF(persistence)
/datum/controller/subsystem/persistence/proc/show_info(var/mob/user)
- if(!user.client.holder)
+ if(!check_rights_for(user.client, R_HOLDER))
return
var/list/dat = list("
")
diff --git a/code/controllers/subsystems/plants.dm b/code/controllers/subsystems/plants.dm
index dbcc40e8f9b..922a2c42e58 100644
--- a/code/controllers/subsystems/plants.dm
+++ b/code/controllers/subsystems/plants.dm
@@ -152,7 +152,7 @@ SUBSYSTEM_DEF(plants)
set name = "Show Plant Genes"
set desc = "Prints the round's plant gene masks."
- if(!holder) return
+ if(!check_rights_for(src, R_HOLDER)) return
if(!SSplants || !SSplants.gene_tag_masks)
to_chat(usr, "Gene masks not set.")
diff --git a/code/controllers/subsystems/webhooks.dm b/code/controllers/subsystems/webhooks.dm
index a47e8933d93..3a8031b4ea0 100644
--- a/code/controllers/subsystems/webhooks.dm
+++ b/code/controllers/subsystems/webhooks.dm
@@ -60,7 +60,7 @@ SUBSYSTEM_DEF(webhooks)
set name = "Reload Webhooks"
set category = "Debug"
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
if(!SSwebhooks.subsystem_initialized)
@@ -75,7 +75,7 @@ SUBSYSTEM_DEF(webhooks)
set name = "Ping Webhook"
set category = "Debug"
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
if(!length(SSwebhooks.webhook_decls))
diff --git a/code/datums/components/species/shadekin/powers/phase_shift.dm b/code/datums/components/species/shadekin/powers/phase_shift.dm
index 9a79b362d48..4580277558b 100644
--- a/code/datums/components/species/shadekin/powers/phase_shift.dm
+++ b/code/datums/components/species/shadekin/powers/phase_shift.dm
@@ -31,7 +31,7 @@
to_chat(src, span_warning("Can't use that ability in your state!"))
return FALSE
var/area/A = get_area(src)
- if(!client?.holder && A.flag_check(AREA_BLOCK_PHASE_SHIFT))
+ if(!check_rights_for(client, R_HOLDER) && A.flag_check(AREA_BLOCK_PHASE_SHIFT))
to_chat(src, span_warning("You can't do that here!"))
return
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index 36b699ee3c6..74cd4a6a01c 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -568,7 +568,7 @@ GLOBAL_DATUM(spoiler_obfuscation_image, /image)
return
if(!isliving(ourmob))
return
- if(ourmob.client?.holder)
+ if(check_rights_for(ourmob.client, R_HOLDER))
return
var/datum/component/shadekin/SK = ourmob.get_shadekin_component()
if(SK && SK.in_phase)
diff --git a/code/game/base_turf.dm b/code/game/base_turf.dm
index c327c8e54f8..62318b67d8f 100644
--- a/code/game/base_turf.dm
+++ b/code/game/base_turf.dm
@@ -17,7 +17,7 @@
set name = "Set Base Turf"
set desc = "Set the base turf for a z-level."
- if(!holder) return
+ if(!check_rights_for(src, R_HOLDER)) return
var/choice = tgui_input_number(usr, "Which Z-level do you wish to set the base turf for?")
if(!choice)
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 7932387cc79..91443cfc4a4 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -521,7 +521,7 @@ GLOBAL_LIST_EMPTY(additional_antag_types)
msg = span_notice(msg)// close the span from right at the top
for(var/mob/M in mob_list)
- if(M.client && M.client.holder)
+ if(M.client && check_rights_for(M.client, R_HOLDER))
to_chat(M,msg)
/proc/get_nt_opposed()
diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm
index 468f389f63d..801a1f9e197 100644
--- a/code/game/gamemodes/sandbox/h_sandbox.dm
+++ b/code/game/gamemodes/sandbox/h_sandbox.dm
@@ -22,7 +22,7 @@ mob
if(GLOB.master_mode == "sandbox")
sandbox = new/datum/hSB
sandbox.owner = src.ckey
- if(src.client.holder)
+ if(check_rights_for(src.client, R_HOLDER))
sandbox.admin = 1
add_verb(src, /mob/proc/sandbox_panel)
sandbox_panel()
diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm
index dd7b5215738..5887bdd4d83 100644
--- a/code/game/machinery/telecomms/broadcaster.dm
+++ b/code/game/machinery/telecomms/broadcaster.dm
@@ -406,7 +406,7 @@ GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages
/* --- Loop through the receivers and categorize them --- */
// Allows admins to disable radio
- if(R?.client?.holder)
+ if(check_rights_for(R?.client, R_HOLDER))
if(!R.client?.prefs?.read_preference(/datum/preference/toggle/holder/hear_radio))
continue
@@ -623,7 +623,7 @@ GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages
/* --- Loop through the receivers and categorize them --- */
// Allow admins to disable radios completely
- if(R?.client?.holder)
+ if(check_rights_for(R?.client, R_HOLDER))
if(!R.client?.prefs?.read_preference(/datum/preference/toggle/holder/hear_radio))
continue
diff --git a/code/game/objects/micro_event.dm b/code/game/objects/micro_event.dm
index 13f2214191c..2b800f24e88 100644
--- a/code/game/objects/micro_event.dm
+++ b/code/game/objects/micro_event.dm
@@ -7,7 +7,7 @@
var/size_limit = 0.5
/obj/structure/portal_event/resize/attack_ghost(var/mob/observer/dead/user)
- if(!target && user?.client?.holder)
+ if(!target && check_rights_for(user?.client, R_HOLDER))
if(tgui_alert(user, "Would you like to adjust the portal's size settings?", "Change portal size settings", list("No","Yes")) == "Yes")
var/our_message
if(tgui_alert(user, "Should this portal shrink people who are over the limit, or grow people who are under the limit?", "Change portal size settings", list("Shrink","Grow")) == "Shrink")
diff --git a/code/game/objects/structures/artstuff.dm b/code/game/objects/structures/artstuff.dm
index 443cb18cbfa..a72e0f4817c 100644
--- a/code/game/objects/structures/artstuff.dm
+++ b/code/game/objects/structures/artstuff.dm
@@ -540,7 +540,7 @@
* For now, we do it this way because calling this on a canvas itself might cause issues due to the whole dimension thing.
*/
/obj/structure/sign/painting/proc/admin_lateload_painting(var/spawn_specific = 0, var/which_painting = 0)
- if(!usr.client.holder)
+ if(!check_rights_for(usr.client, R_HOLDER))
return 0
if(spawn_specific && isnum(which_painting))
var/list/painting = SSpersistence.all_paintings[which_painting]
diff --git a/code/game/objects/structures/props/machines.dm b/code/game/objects/structures/props/machines.dm
index 2ece08ea99c..b58a05dd02a 100644
--- a/code/game/objects/structures/props/machines.dm
+++ b/code/game/objects/structures/props/machines.dm
@@ -640,7 +640,7 @@
return
if(!ismovable(AM))
return
- if(!user.client?.holder)
+ if(!check_rights_for(user.client, R_HOLDER))
return
if(changing_state)
return
diff --git a/code/game/response_team.dm b/code/game/response_team.dm
index d00cbb559e1..cfdcd54e1b9 100644
--- a/code/game/response_team.dm
+++ b/code/game/response_team.dm
@@ -12,7 +12,7 @@ GLOBAL_VAR_INIT(silent_ert, 0)
set category = "Fun.Event Kit"
set desc = "Send an emergency response team to the station"
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
to_chat(usr, span_danger("Only administrators may use this command."))
return
if(!ticker)
diff --git a/code/modules/admin/ToRban.dm b/code/modules/admin/ToRban.dm
index 2152fa97596..8cdae648769 100644
--- a/code/modules/admin/ToRban.dm
+++ b/code/modules/admin/ToRban.dm
@@ -46,7 +46,7 @@
/client/proc/ToRban(task in list("update","toggle","show","remove","remove all","find"))
set name = "ToRban"
set category = "Server.Config"
- if(!holder) return
+ if(!check_rights_for(src, R_HOLDER)) return
switch(task)
if("update")
ToRban_update()
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 25085f71762..9a45d673389 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -630,7 +630,7 @@ ADMIN_VERB_ONLY_CONTEXT_MENU(show_player_panel, R_HOLDER, "Show Player Panel", m
set category = "Server.Game"
set name = "Restart"
set desc="Restarts the world"
- if (!usr.client.holder)
+ if (!check_rights_for(usr.client, R_HOLDER))
return
var/confirm = alert(usr, "Restart the game world?", "Restart", "Yes", "Cancel") // Not tgui_alert for safety
if(!confirm || confirm == "Cancel")
@@ -1021,7 +1021,7 @@ var/datum/announcement/minor/admin_min_announcer = new
set category = "Server.Game"
set desc="Reboots the server post haste"
set name="Immediate Reboot"
- if(!usr.client.holder) return
+ if(!check_rights_for(usr.client, R_HOLDER)) return
if(alert(usr, "Reboot server?","Reboot!","Yes","No") != "Yes") // Not tgui_alert for safety
return
to_world(span_filter_system("[span_red(span_bold("Rebooting world!"))] [span_blue("Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key]!")]"))
@@ -1299,7 +1299,7 @@ var/datum/announcement/minor/admin_min_announcer = new
set name = "Update Mob Sprite"
set desc = "Should fix any mob sprite update errors."
- if (!holder)
+ if (!check_rights_for(src, R_HOLDER))
to_chat(src, "Only administrators may use this command.")
return
diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm
index a1dd87e65dc..8005c3535ea 100644
--- a/code/modules/admin/admin_investigate.dm
+++ b/code/modules/admin/admin_investigate.dm
@@ -29,7 +29,7 @@
/client/proc/investigate_show( subject in list("hrefs","notes","singulo","telesci") )
set name = "Investigate"
set category = "Admin.Investigate"
- if(!holder) return
+ if(!check_rights_for(src, R_HOLDER)) return
switch(subject)
if("singulo", "telesci") //general one-round-only stuff
var/F = investigate_subject2file(subject)
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index d035327fb05..b1185097d18 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -67,7 +67,7 @@
/client/proc/admin_ghost()
set category = "Admin.Game"
set name = "Aghost"
- if(!holder) return
+ if(!check_rights_for(src, R_HOLDER)) return
var/build_mode
if(src.buildmode)
diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm
index 8cc4d9ae3b3..8b090f86c47 100644
--- a/code/modules/admin/holder2.dm
+++ b/code/modules/admin/holder2.dm
@@ -245,7 +245,7 @@ you will have to do something like if(client.rights & R_ADMIN) yourself.
//probably a bit iffy - will hopefully figure out a better solution
/proc/check_if_greater_rights_than(client/other)
if(usr?.client)
- if(usr.client.holder)
+ if(check_rights_for(usr.client, R_HOLDER))
if(!other || !other.holder)
return TRUE
return usr.client.holder.check_if_greater_rights_than_holder(other.holder)
diff --git a/code/modules/admin/player_effects.dm b/code/modules/admin/player_effects.dm
index b557600ae6c..ea882bb755f 100644
--- a/code/modules/admin/player_effects.dm
+++ b/code/modules/admin/player_effects.dm
@@ -623,7 +623,7 @@
var/mob/living/carbon/human/Tar = target
if(!istype(Tar))
return
- if(!user.client.holder)
+ if(!check_rights_for(user.client, R_HOLDER))
return
var/obj/item/X = user.client.holder.marked_datum
if(!istype(X))
@@ -634,7 +634,7 @@
var/mob/living/carbon/human/Tar = target
if(!istype(Tar))
return
- if(!user.client.holder)
+ if(!check_rights_for(user.client, R_HOLDER))
return
var/obj/item/X = user.client.holder.marked_datum
if(!istype(X))
diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm
index 9c844fac916..6fd7cc9716f 100644
--- a/code/modules/admin/player_panel.dm
+++ b/code/modules/admin/player_panel.dm
@@ -1,6 +1,6 @@
/datum/admins/proc/player_panel_new()//The new one
- if (!usr.client.holder)
+ if (!check_rights_for(usr.client, R_HOLDER))
return
var/ui_scale = owner.prefs.read_preference(/datum/preference/toggle/ui_scale)
var/dat = "Admin Player Panel"
@@ -324,7 +324,7 @@
//The old one
/datum/admins/proc/player_panel_old()
- if (!usr.client.holder)
+ if (!check_rights_for(usr.client, R_HOLDER))
return
var/dat = "Player Menu"
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index bf09ada3bfa..b284b3771ee 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -835,7 +835,7 @@
var/mob/M = locate(href_list["newban"])
if(!ismob(M)) return
- if(M.client && M.client.holder) return //admins cannot be banned. Even if they could, the ban doesn't affect them anyway
+ if(M.client && check_rights_for(M.client, R_HOLDER)) return //admins cannot be banned. Even if they could, the ban doesn't affect them anyway
switch(tgui_alert(usr, "Temporary Ban?","Temporary Ban",list("Yes","No","Cancel")))
if(null)
diff --git a/code/modules/admin/verbs/antag-ooc.dm b/code/modules/admin/verbs/antag-ooc.dm
index 8309e190918..792bbb650b3 100644
--- a/code/modules/admin/verbs/antag-ooc.dm
+++ b/code/modules/admin/verbs/antag-ooc.dm
@@ -31,7 +31,7 @@
for(var/mob/M in mob_list)
if(check_rights_for(M.client, R_ADMIN|R_MOD|R_EVENT)) // Staff can see AOOC unconditionally, and with more details.
- to_chat(M, span_ooc(span_aooc("[create_text_tag("aooc", "Antag-OOC:", M.client)] [get_options_bar(src, 0, 1, 1)]([admin_jump_link(usr, M.client.holder)]): " + span_message("[msg]"))))
+ to_chat(M, span_ooc(span_aooc("[create_text_tag("aooc", "Antag-OOC:", M.client)] [get_options_bar(src, 0, 1, 1)]([admin_jump_link(usr, check_rights_for(M.client, R_HOLDER))]): " + span_message("[msg]"))))
else if(M.client) // Players can only see AOOC if observing, or if they are an antag type allowed to use AOOC.
var/datum/antagonist/A = null
if(M.mind) // Observers don't have minds, but they should still see AOOC.
diff --git a/code/modules/admin/verbs/atmosdebug.dm b/code/modules/admin/verbs/atmosdebug.dm
index e73e6abef9b..3cf0dab8124 100644
--- a/code/modules/admin/verbs/atmosdebug.dm
+++ b/code/modules/admin/verbs/atmosdebug.dm
@@ -2,7 +2,7 @@
set category = "Mapping"
set name = "Check Piping"
set background = 1
- if(!src.holder)
+ if(!check_rights_for(src, R_HOLDER))
return
feedback_add_details("admin_verb","CP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -43,7 +43,7 @@
/client/proc/powerdebug()
set category = "Mapping"
set name = "Check Power"
- if(!src.holder)
+ if(!check_rights_for(src, R_HOLDER))
return
feedback_add_details("admin_verb","CPOW") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/code/modules/admin/verbs/custom_event.dm b/code/modules/admin/verbs/custom_event.dm
index fe341f79327..18ad5adc9ef 100644
--- a/code/modules/admin/verbs/custom_event.dm
+++ b/code/modules/admin/verbs/custom_event.dm
@@ -3,7 +3,7 @@
set category = "Fun.Event Kit"
set name = "Change Custom Event"
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
to_chat(src, "Only administrators may use this command.")
return
diff --git a/code/modules/admin/verbs/deadsay.dm b/code/modules/admin/verbs/deadsay.dm
index af6e9d738a8..9f55761ec78 100644
--- a/code/modules/admin/verbs/deadsay.dm
+++ b/code/modules/admin/verbs/deadsay.dm
@@ -2,7 +2,7 @@
set category = "Admin.Chat"
set name = "Dsay" //Gave this shit a shorter name so you only have to time out "dsay" rather than "dead say" to use it --NeoFite
set hidden = 1
- if(!src.holder)
+ if(!check_rights_for(src, R_HOLDER))
to_chat(src, "Only administrators may use this command.")
return
if(!src.mob)
diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm
index 4fb01a3b313..36b940d255a 100644
--- a/code/modules/admin/verbs/playsound.dm
+++ b/code/modules/admin/verbs/playsound.dm
@@ -245,7 +245,7 @@ var/list/sounds_cache = list()
/client/proc/stop_sounds()
set category = "Debug.Dangerous"
set name = "Stop All Playing Sounds"
- if(!src.holder)
+ if(!check_rights_for(src, R_HOLDER))
return
log_admin("[key_name(src)] stopped all currently playing sounds.")
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index ee2d72edcc6..56efb499b60 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -20,7 +20,7 @@ ADMIN_VERB(drop_everything, R_ADMIN, "Drop Everything", ADMIN_VERB_NO_DESCRIPTIO
/client/proc/cmd_admin_prison(mob/M as mob in mob_list)
set category = "Admin.Game"
set name = "Prison"
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
if (ismob(M))
@@ -48,7 +48,7 @@ ADMIN_VERB(drop_everything, R_ADMIN, "Drop Everything", ADMIN_VERB_NO_DESCRIPTIO
/client/proc/cmd_check_new_players()
set category = "Admin.Investigate"
set name = "Check new Players"
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
var/age = tgui_alert(src, "Age check", "Show accounts yonger then _____ days", list("7","30","All"))
@@ -86,7 +86,7 @@ ADMIN_VERB(drop_everything, R_ADMIN, "Drop Everything", ADMIN_VERB_NO_DESCRIPTIO
set name = "Subtle Message"
if(!ismob(M)) return
- if (!holder)
+ if (!check_rights_for(src, R_HOLDER))
return
var/msg = tgui_input_text(usr, "Message:", text("Subtle PM to [M.key]"))
@@ -99,7 +99,7 @@ ADMIN_VERB(drop_everything, R_ADMIN, "Drop Everything", ADMIN_VERB_NO_DESCRIPTIO
if(usr)
if (usr.client)
- if(usr.client.holder)
+ if(check_rights_for(usr.client, R_HOLDER))
to_chat(M, span_bold("You hear a voice in your head...") + " " + span_italics("[msg]"))
log_admin("SubtlePM: [key_name(usr)] -> [key_name(M)] : [msg]")
@@ -112,7 +112,7 @@ ADMIN_VERB(drop_everything, R_ADMIN, "Drop Everything", ADMIN_VERB_NO_DESCRIPTIO
set category = "Fun.Narrate"
set name = "Global Narrate"
- if (!holder)
+ if (!check_rights_for(src, R_HOLDER))
return
var/msg = tgui_input_text(usr, "Message:", text("Enter the text you wish to appear to everyone:"))
@@ -133,7 +133,7 @@ ADMIN_VERB(drop_everything, R_ADMIN, "Drop Everything", ADMIN_VERB_NO_DESCRIPTIO
set category = "Fun.Narrate"
set name = "Direct Narrate"
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
if(!M)
@@ -160,7 +160,7 @@ ADMIN_VERB(drop_everything, R_ADMIN, "Drop Everything", ADMIN_VERB_NO_DESCRIPTIO
set category = "Admin.Game"
set name = "Godmode"
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
M.status_flags ^= GODMODE
@@ -180,16 +180,16 @@ ADMIN_VERB(drop_everything, R_ADMIN, "Drop Everything", ADMIN_VERB_NO_DESCRIPTIO
else
if(!usr || !usr.client)
return
- if(!usr.client.holder)
+ if(!check_rights_for(usr.client, R_HOLDER))
to_chat(usr, span_red("Error: cmd_admin_mute: You don't have permission to do this."))
return
if(!M.client)
to_chat(usr, span_red("Error: cmd_admin_mute: This mob doesn't have a client tied to it."))
- if(M.client.holder)
+ if(check_rights_for(M.client, R_HOLDER))
to_chat(usr, span_red("Error: cmd_admin_mute: You cannot mute an admin/mod."))
if(!M.client)
return
- if(M.client.holder)
+ if(check_rights_for(M.client, R_HOLDER))
return
var/muteunmute
@@ -230,7 +230,7 @@ ADMIN_VERB(drop_everything, R_ADMIN, "Drop Everything", ADMIN_VERB_NO_DESCRIPTIO
set category = "Fun.Silicon"
set name = "Add Random AI Law"
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
var/confirm = tgui_alert(src, "You sure?", "Confirm", list("Yes", "No"))
@@ -282,7 +282,7 @@ Ccomp's first proc.
set name = "Allow player to respawn"
set desc = "Let a player bypass the wait to respawn or allow them to re-enter their corpse."
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
var/target = tgui_input_list(usr, "Select a ckey to allow to rejoin", "Allow Respawn Selector", GLOB.respawn_timers)
@@ -319,13 +319,13 @@ Ccomp's first proc.
set name = "Toggle antagHUD usage"
set desc = "Toggles antagHUD usage for observers"
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
var/action=""
if(CONFIG_GET(flag/antag_hud_allowed))
for(var/mob/observer/dead/g in get_ghosts())
- if(!g.client.holder) //Remove the verb from non-admin ghosts
+ if(!check_rights_for(g.client, R_HOLDER)) //Remove the verb from non-admin ghosts
remove_verb(g, /mob/observer/dead/verb/toggle_antagHUD)
if(g.antagHUD)
g.antagHUD = 0 // Disable it on those that have it enabled
@@ -336,7 +336,7 @@ Ccomp's first proc.
action = "disabled"
else
for(var/mob/observer/dead/g in get_ghosts())
- if(!g.client.holder) // Add the verb back for all non-admin ghosts
+ if(!check_rights_for(g.client, R_HOLDER)) // Add the verb back for all non-admin ghosts
add_verb(g, /mob/observer/dead/verb/toggle_antagHUD)
to_chat(g, span_boldnotice("The Administrator has enabled AntagHUD")) // Notify all observers they can now use AntagHUD
CONFIG_SET(flag/antag_hud_allowed, TRUE)
@@ -354,7 +354,7 @@ Ccomp's first proc.
set name = "Toggle antagHUD Restrictions"
set desc = "Restricts players that have used antagHUD from being able to join this round."
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
var/action=""
@@ -613,7 +613,7 @@ ADMIN_VERB(respawn_character, (R_ADMIN|R_REJUVINATE), "Spawn Character", "(Re)Sp
set category = "Fun.Silicon"
set name = "Add Custom AI law"
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
var/input = sanitize(tgui_input_text(usr, "Please enter anything you want the AI to do. Anything. Serious.", "What?", ""))
@@ -642,7 +642,7 @@ ADMIN_VERB(respawn_character, (R_ADMIN|R_REJUVINATE), "Spawn Character", "(Re)Sp
set category = "Admin.Game"
set name = "Rejuvenate"
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
if(!mob)
@@ -665,7 +665,7 @@ ADMIN_VERB(respawn_character, (R_ADMIN|R_REJUVINATE), "Spawn Character", "(Re)Sp
set category = "Fun.Event Kit"
set name = "Create Command Report"
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
var/input = sanitize(tgui_input_text(usr, "Please enter anything you want. Anything. Serious.", "What?", "", multiline = TRUE, prevent_enter = TRUE), extra = 0)
@@ -695,7 +695,7 @@ ADMIN_VERB(respawn_character, (R_ADMIN|R_REJUVINATE), "Spawn Character", "(Re)Sp
set category = "Admin.Game"
set name = "Delete"
- if (!holder)
+ if (!check_rights_for(src, R_HOLDER))
return
admin_delete(O)
@@ -704,7 +704,7 @@ ADMIN_VERB(respawn_character, (R_ADMIN|R_REJUVINATE), "Spawn Character", "(Re)Sp
set category = "Admin.Investigate"
set name = "List free slots"
- if (!holder)
+ if (!check_rights_for(src, R_HOLDER))
return
if(job_master)
@@ -716,7 +716,7 @@ ADMIN_VERB(respawn_character, (R_ADMIN|R_REJUVINATE), "Spawn Character", "(Re)Sp
/client/proc/cmd_manual_ban()
set name = "Manual Ban"
set category = "Admin.Moderation"
- if(!authenticated || !holder)
+ if(!authenticated || !check_rights_for(src, R_HOLDER))
to_chat(src, "Only administrators may use this command.")
return
var/mob/M = null
@@ -729,7 +729,7 @@ ADMIN_VERB(respawn_character, (R_ADMIN|R_REJUVINATE), "Spawn Character", "(Re)Sp
if(!selection)
return
M = selection:mob
- if ((M.client && M.client.holder && (M.client.holder.level >= holder.level)))
+ if ((M.client && check_rights_for(M.client, R_HOLDER) && (M.client.holder.level >= holder.level)))
tgui_alert_async(usr, "You cannot perform this action. You must be of a higher administrative rank!")
return
@@ -779,7 +779,7 @@ ADMIN_VERB(respawn_character, (R_ADMIN|R_REJUVINATE), "Spawn Character", "(Re)Sp
set name = "Check Contents"
set popup_menu = FALSE
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
var/list/L = M.get_contents()
@@ -791,7 +791,7 @@ ADMIN_VERB(respawn_character, (R_ADMIN|R_REJUVINATE), "Spawn Character", "(Re)Sp
/client/proc/cmd_admin_remove_phoron()
set category = "Debug.Game"
set name = "Stabilize Atmos."
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
to_chat(src, "Only administrators may use this command.")
return
feedback_add_details("admin_verb","STATM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -823,7 +823,7 @@ ADMIN_VERB(respawn_character, (R_ADMIN|R_REJUVINATE), "Spawn Character", "(Re)Sp
set name = "Change View Range"
set desc = "switches between 1x and custom views"
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
var/view = src.view
diff --git a/code/modules/admin/verbs/smite.dm b/code/modules/admin/verbs/smite.dm
index 832466a6ade..798d42d8d23 100644
--- a/code/modules/admin/verbs/smite.dm
+++ b/code/modules/admin/verbs/smite.dm
@@ -285,7 +285,7 @@ var/redspace_abduction_z
target.forceMove(locate(target.x,target.y,redspace_abduction_z))
to_chat(target,span_danger("The tug relaxes, but everything around you looks... slightly off."))
- to_chat(user,span_notice("The mob has been moved. ([admin_jump_link(target,usr.client.holder)])"))
+ to_chat(user, span_notice("The mob has been moved. ([admin_jump_link(target, check_rights_for(usr.client, R_HOLDER))])"))
target.transforming = FALSE
diff --git a/code/modules/admin/verbs/special_verbs.dm b/code/modules/admin/verbs/special_verbs.dm
index 4dd67e052d8..db33a147955 100644
--- a/code/modules/admin/verbs/special_verbs.dm
+++ b/code/modules/admin/verbs/special_verbs.dm
@@ -17,7 +17,7 @@
A.associate(src)
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return //This can happen if an admin attempts to vv themself into somebody elses's deadmin datum by getting ref via brute force
to_chat(src, span_interface("You are now an admin."), confidential = TRUE)
diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm
index a3eea5b9b64..5056447292c 100644
--- a/code/modules/admin/verbs/striketeam.dm
+++ b/code/modules/admin/verbs/striketeam.dm
@@ -6,7 +6,7 @@ var/const/commandos_possible = 6 //if more Commandos are needed in the future
set name = "Spawn Strike Team"
set desc = "Spawns a strike team if you want to run an admin event."
- if(!src.holder)
+ if(!check_rights_for(src, R_HOLDER))
to_chat(src, "Only administrators may use this command.")
return
diff --git a/code/modules/admin/view_variables/tag_datum.dm b/code/modules/admin/view_variables/tag_datum.dm
index b4ca42860c3..ff8afb955fc 100644
--- a/code/modules/admin/view_variables/tag_datum.dm
+++ b/code/modules/admin/view_variables/tag_datum.dm
@@ -12,5 +12,5 @@
else
holder.add_tagged_datum(target_datum)
-ADMIN_VERB_ONLY_CONTEXT_MENU(tag_datum, R_NONE, "Tag Datum", datum/target_datum as mob|obj|turf|area in view())
+ADMIN_VERB_ONLY_CONTEXT_MENU(tag_datum, R_HOLDER, "Tag Datum", datum/target_datum as mob|obj|turf|area in view())
user.tag_datum(target_datum)
diff --git a/code/modules/admin/view_variables/view_variables.dm b/code/modules/admin/view_variables/view_variables.dm
index e477ad7bc34..2ed195dd029 100644
--- a/code/modules/admin/view_variables/view_variables.dm
+++ b/code/modules/admin/view_variables/view_variables.dm
@@ -11,7 +11,7 @@ ADMIN_VERB_AND_CONTEXT_MENU(debug_variables, (R_DEBUG|R_SERVER|R_ADMIN|R_SPAWN|R
//set src in world
var/static/cookieoffset = rand(1, 9999) //to force cookies to reset after the round.
- if(!usr.client || !usr.client.holder) //This is usr because admins can call the proc on other clients, even if they're not admins, to show them VVs.
+ if(!usr.client || !check_rights_for(usr.client, R_HOLDER)) //This is usr because admins can call the proc on other clients, even if they're not admins, to show them VVs.
to_chat(usr, span_danger("You need to be an administrator to access this."), confidential = TRUE)
return
diff --git a/code/modules/awaymissions/redgate.dm b/code/modules/awaymissions/redgate.dm
index af3a8c0122b..5e2282322b3 100644
--- a/code/modules/awaymissions/redgate.dm
+++ b/code/modules/awaymissions/redgate.dm
@@ -135,7 +135,7 @@
/obj/structure/redgate/attack_ghost(var/mob/observer/dead/user)
if(target)
- if(!(secret || target.secret) || user?.client?.holder)
+ if(!(secret || target.secret) || check_rights_for(user?.client, R_HOLDER))
user.forceMove(get_turf(target))
else
return ..()
diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm
index d25e3a00ed5..cf4c4f21bab 100644
--- a/code/modules/client/client procs.dm
+++ b/code/modules/client/client procs.dm
@@ -55,7 +55,7 @@
// Rate limiting
var/mtl = CONFIG_GET(number/minute_topic_limit)
- if (!holder && mtl)
+ if (!check_rights_for(src, R_HOLDER) && mtl)
var/minute = round(world.time, 600)
if (!topiclimiter)
topiclimiter = new(LIMITER_SIZE)
@@ -73,7 +73,7 @@
return
var/stl = CONFIG_GET(number/second_topic_limit)
- if (!holder && stl && href_list["window_id"] != "statbrowser")
+ if (!check_rights_for(src, R_HOLDER) && stl && href_list["window_id"] != "statbrowser")
var/second = round(world.time, 10)
if (!topiclimiter)
topiclimiter = new(LIMITER_SIZE)
@@ -113,7 +113,7 @@
return
if(href_list["irc_msg"])
- if(!holder && received_irc_pm < world.time - 6000) //Worse they can do is spam IRC for 10 minutes
+ if(!check_rights_for(src, R_HOLDER) && received_irc_pm < world.time - 6000) //Worse they can do is spam IRC for 10 minutes
to_chat(src, span_warning("You are no longer able to use this, it's been more than 10 minutes since an admin on IRC has responded to you"))
return
if(mute_irc)
@@ -777,7 +777,7 @@
// Mouse stuff
/client/Click(atom/object, atom/location, control, params)
var/mcl = CONFIG_GET(number/minute_click_limit)
- if (!holder && mcl)
+ if (!check_rights_for(src, R_HOLDER) && mcl)
var/minute = round(world.time, 600)
if (!clicklimiter)
@@ -800,7 +800,7 @@
return
var/scl = CONFIG_GET(number/second_click_limit)
- if (!holder && scl)
+ if (!check_rights_for(src, R_HOLDER) && scl)
var/second = round(world.time, 10)
if (!clicklimiter)
clicklimiter = new(LIMITER_SIZE)
@@ -822,13 +822,13 @@
window_scaling = text2num(winget(src, null, "dpi"))
/client/proc/open_filter_editor(atom/in_atom)
- if(holder)
+ if(check_rights_for(src, R_HOLDER))
holder.filteriffic = new /datum/filter_editor(in_atom)
holder.filteriffic.tgui_interact(mob)
///opens the particle editor UI for the in_atom object for this client
/client/proc/open_particle_editor(atom/movable/in_atom)
- if(holder)
+ if(check_rights_for(src, R_HOLDER))
holder.particle_test = new /datum/particle_editor(in_atom)
holder.particle_test.tgui_interact(mob)
diff --git a/code/modules/client/preferences/types/game/admin.dm b/code/modules/client/preferences/types/game/admin.dm
index 89ee5b6bd46..9b72658b89d 100644
--- a/code/modules/client/preferences/types/game/admin.dm
+++ b/code/modules/client/preferences/types/game/admin.dm
@@ -46,7 +46,7 @@
if(!.)
return
- return preferences.client.holder
+ return check_rights_for(preferences.client, R_HOLDER)
/datum/preference/toggle/holder/play_adminhelp_ping
category = PREFERENCE_CATEGORY_GAME_PREFERENCES
diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm
index 33545d6cdd5..8e55fda9872 100644
--- a/code/modules/client/verbs/ooc.dm
+++ b/code/modules/client/verbs/ooc.dm
@@ -16,7 +16,7 @@
to_chat(src, span_warning("You have OOC muted."))
return
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
if(!CONFIG_GET(flag/ooc_allowed))
to_chat(src, span_danger("OOC is globally muted."))
return
diff --git a/code/modules/eventkit/generic_objects/generic_item.dm b/code/modules/eventkit/generic_objects/generic_item.dm
index 573eacccf9b..cd83e46c0ea 100644
--- a/code/modules/eventkit/generic_objects/generic_item.dm
+++ b/code/modules/eventkit/generic_objects/generic_item.dm
@@ -173,7 +173,7 @@
var/check_togglable
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
var/s_name = tgui_input_text(src, "Item Name:", "Name")
diff --git a/code/modules/eventkit/generic_objects/generic_structure.dm b/code/modules/eventkit/generic_objects/generic_structure.dm
index 8a79e114195..02d3fa75bec 100644
--- a/code/modules/eventkit/generic_objects/generic_structure.dm
+++ b/code/modules/eventkit/generic_objects/generic_structure.dm
@@ -226,7 +226,7 @@
var/check_togglable
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
var/s_name = tgui_input_text(src, "Structure Name:", "Name")
diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm
index 96e69623dca..e321978043d 100644
--- a/code/modules/events/event_manager.dm
+++ b/code/modules/events/event_manager.dm
@@ -226,7 +226,7 @@
set name = "Trigger Event (Debug Only)"
set category = "Debug.Dangerous"
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
if(ispath(type))
diff --git a/code/modules/food/recipe_dump.dm b/code/modules/food/recipe_dump.dm
index 3908e1750d1..a64f5d64852 100644
--- a/code/modules/food/recipe_dump.dm
+++ b/code/modules/food/recipe_dump.dm
@@ -3,7 +3,7 @@
set category = "Server.Admin"
set desc = "Dumps food and drink recipe info and images for wiki or other use."
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
return
//////////////////////// DRINK
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 9594c1457d7..d79e412bd67 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -214,7 +214,7 @@ Works together with spawning an observer, noted above.
//RS Port #658 Start
/mob/observer/dead/proc/check_area()
- if(client?.holder)
+ if(check_rights_for(client, R_HOLDER))
return
if(!isturf(loc))
return
@@ -251,7 +251,7 @@ Works together with spawning an observer, noted above.
B.update()
if(ghost.client)
ghost.client.time_died_as_mouse = ghost.timeofdeath
- if(ghost.client && !ghost.client.holder && !CONFIG_GET(flag/antag_hud_allowed)) // For new ghosts we remove the verb from even showing up if it's not allowed.
+ if(ghost.client && !check_rights_for(ghost.client, R_HOLDER) && !CONFIG_GET(flag/antag_hud_allowed)) // For new ghosts we remove the verb from even showing up if it's not allowed.
remove_verb(ghost, /mob/observer/dead/verb/toggle_antagHUD) // Poor guys, don't know what they are missing!
return ghost
@@ -366,18 +366,18 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
set name = "Toggle AntagHUD"
set desc = "Toggles AntagHUD allowing you to see who is the antagonist"
- if(!CONFIG_GET(flag/antag_hud_allowed) && !client.holder)
+ if(!CONFIG_GET(flag/antag_hud_allowed) && !check_rights_for(client, R_HOLDER))
to_chat(src, span_filter_notice(span_red("Admins have disabled this for this round.")))
return
if(jobban_isbanned(src, JOB_ANTAGHUD))
to_chat(src, span_filter_notice(span_red(span_bold("You have been banned from using this feature"))))
return
- if(CONFIG_GET(flag/antag_hud_restricted) && !has_enabled_antagHUD && !client.holder)
+ if(CONFIG_GET(flag/antag_hud_restricted) && !has_enabled_antagHUD && !check_rights_for(client, R_HOLDER))
var/response = tgui_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?",list("Yes","No"))
if(response != "Yes") return
can_reenter_corpse = FALSE
set_respawn_timer(-1) // Foreeeever
- if(!has_enabled_antagHUD && !client.holder)
+ if(!has_enabled_antagHUD && !check_rights_for(client, R_HOLDER))
has_enabled_antagHUD = TRUE
antagHUD = !antagHUD
@@ -386,7 +386,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
/mob/observer/dead/proc/jumpable_areas()
var/list/areas = return_sorted_areas()
- if(client?.holder)
+ if(check_rights_for(client, R_HOLDER))
return areas
for(var/key in areas)
@@ -400,7 +400,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
/mob/observer/dead/proc/jumpable_mobs()
var/list/mobs = getmobs()
- if(client?.holder)
+ if(check_rights_for(client, R_HOLDER))
return mobs
for(var/key in mobs)
@@ -464,7 +464,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
ManualFollow(M || jumpable_mobs()[mobname])
/mob/observer/dead/forceMove(atom/destination, direction, movetime, just_spawned = FALSE) // pass movetime through
- if(client?.holder)
+ if(check_rights_for(client, R_HOLDER))
return ..()
if(get_z(destination) in using_map?.secret_levels)
@@ -484,7 +484,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
return ..()
/mob/observer/dead/Move(atom/newloc, direct = 0, movetime)
- if(client?.holder)
+ if(check_rights_for(client, R_HOLDER))
return ..()
if(get_z(newloc) in using_map?.secret_levels)
@@ -762,7 +762,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
//This is called when a ghost is drag clicked to something.
/mob/observer/dead/MouseDrop(atom/over)
if(!usr || !over) return
- if (isobserver(usr) && usr.client && usr.client.holder && isliving(over))
+ if (isobserver(usr) && usr.client && check_rights_for(usr.client, R_HOLDER) && isliving(over))
if (usr.client.holder.cmd_ghost_drag(src,over))
return
diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm
index 89e9c6c59c8..75aa32a1b7a 100644
--- a/code/modules/mob/emote.dm
+++ b/code/modules/mob/emote.dm
@@ -15,7 +15,7 @@
to_chat(src, span_danger("You have deadchat muted."))
return
- if(!src.client.holder && !check_rights(R_HOLDER, FALSE))
+ if(!check_rights(R_HOLDER, FALSE))
if(!CONFIG_GET(flag/dsay_allowed))
to_chat(src, span_danger("Deadchat is globally muted."))
return
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index f0f7314cb04..3a3d53f6ef5 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -378,7 +378,7 @@ var/list/channel_to_radio_key = list()
if(M && src) //If we still exist, when the spawn processes
//VOREStation Add - Ghosts don't hear whispers
if(whispering && isobserver(M) && (!M.client?.prefs?.read_preference(/datum/preference/toggle/ghost_see_whisubtle) || \
- (!(client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) || (isbelly(M.loc) && src == M.loc:owner)) && !M.client?.holder)))
+ (!(client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) || (isbelly(M.loc) && src == M.loc:owner)) && !check_rights_for(M.client, R_HOLDER))))
M.show_message(span_game(span_say(span_name(src.name) + " [w_not_heard].")), 2)
return
//VOREStation Add End
diff --git a/code/modules/mob/living/silicon/pai/pai_vr.dm b/code/modules/mob/living/silicon/pai/pai_vr.dm
index a9a5543439a..231d16d3305 100644
--- a/code/modules/mob/living/silicon/pai/pai_vr.dm
+++ b/code/modules/mob/living/silicon/pai/pai_vr.dm
@@ -537,7 +537,7 @@
if (isnewplayer(G))
continue
else if(isobserver(G) && G.client?.prefs?.read_preference(/datum/preference/toggle/ghost_ears))
- if((client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) || G.client.holder) && \
+ if((client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) || check_rights_for(G.client, R_HOLDER)) && \
G.client?.prefs?.read_preference(/datum/preference/toggle/ghost_see_whisubtle))
to_chat(G, span_filter_say(span_cult("[src.name]'s screen prints, \"[message]\"")))
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/stardog.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/stardog.dm
index 21712f0bd0d..33a288fd510 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/stardog.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/stardog.dm
@@ -501,7 +501,7 @@
if(isnewplayer(M))
continue
if(isobserver(M) && (!M.client?.prefs?.read_preference(/datum/preference/toggle/ghost_see_whisubtle) || \
- !L.client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) && !M.client?.holder))
+ !L.client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) && !check_rights_for(M.client, R_HOLDER)))
spawn(0)
M.show_message(undisplayed_message, 2)
else
@@ -1166,7 +1166,7 @@
if(isnewplayer(M))
continue
if(isobserver(M) && (!M.client?.prefs?.read_preference(/datum/preference/toggle/ghost_see_whisubtle) || \
- !L.client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) && !M.client?.holder))
+ !L.client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) && !check_rights_for(M.client, R_HOLDER)))
spawn(0)
M.show_message(undisplayed_message, 2)
else
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_procs.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_procs.dm
index ad65d291300..d795415634d 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_procs.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_procs.dm
@@ -5,7 +5,7 @@
if(!T.CanPass(src,T) || loc != T)
to_chat(src,span_warning("You can't use that here!"))
return FALSE
- if(!client?.holder && A.flag_check(AREA_BLOCK_PHASE_SHIFT))
+ if(!check_rights_for(client, R_HOLDER) && A.flag_check(AREA_BLOCK_PHASE_SHIFT))
to_chat(src,span_warning("You can't use that here!"))
return FALSE
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index e1a2fb0d2d1..24be3d22c5e 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -471,14 +471,14 @@ var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HURT)
else
name = realname
- if(subject && subject.forbid_seeing_deadchat && !subject.client.holder)
+ if(subject && subject.forbid_seeing_deadchat && !check_rights_for(subject.client, R_HOLDER))
return // Can't talk in deadchat if you can't see it.
for(var/mob/M in player_list)
- if(M.client && ((!isnewplayer(M) && M.stat == DEAD) || (M.client.holder && check_rights_for(M.client, R_HOLDER) && M.client?.prefs?.read_preference(/datum/preference/toggle/holder/show_staff_dsay))) && M.client?.prefs?.read_preference(/datum/preference/toggle/show_dsay))
+ if(M.client && ((!isnewplayer(M) && M.stat == DEAD) || (check_rights_for(M.client, R_HOLDER) && M.client?.prefs?.read_preference(/datum/preference/toggle/holder/show_staff_dsay))) && M.client?.prefs?.read_preference(/datum/preference/toggle/show_dsay))
var/follow
var/lname
- if(M.forbid_seeing_deadchat && !M.client.holder)
+ if(M.forbid_seeing_deadchat && !check_rights_for(M.client, R_HOLDER))
continue
if(subject)
@@ -486,12 +486,12 @@ var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HURT)
continue
if(subject != M)
follow = "([ghost_follow_link(subject, M)]) "
- if(M.stat != DEAD && M.client.holder)
- follow = "([admin_jump_link(subject, M.client.holder)]) "
+ if(M.stat != DEAD && check_rights_for(M.client, R_HOLDER))
+ follow = "([admin_jump_link(subject, check_rights_for(M.client, R_HOLDER))]) "
var/mob/observer/dead/DM
if(isobserver(subject))
DM = subject
- if(M.client.holder) // What admins see
+ if(check_rights_for(M.client, R_HOLDER)) // 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
@@ -505,10 +505,10 @@ var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HURT)
/proc/say_dead_object(var/message, var/obj/subject = null)
for(var/mob/M in player_list)
- if(M.client && ((!isnewplayer(M) && M.stat == DEAD) || (M.client.holder && check_rights_for(M.client, R_HOLDER) && M.client?.prefs?.read_preference(/datum/preference/toggle/holder/show_staff_dsay))) && M.client?.prefs?.read_preference(/datum/preference/toggle/show_dsay))
+ if(M.client && ((!isnewplayer(M) && M.stat == DEAD) || (check_rights_for(M.client, R_HOLDER) && M.client?.prefs?.read_preference(/datum/preference/toggle/holder/show_staff_dsay))) && M.client?.prefs?.read_preference(/datum/preference/toggle/show_dsay))
var/follow
var/lname = "Game Master"
- if(M.forbid_seeing_deadchat && !M.client.holder)
+ if(M.forbid_seeing_deadchat && !check_rights_for(M.client, R_HOLDER))
continue
if(subject)
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index a8357842286..bf4f372c97f 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -414,7 +414,7 @@
else if(!istype(mob, /mob/observer/dead) && T.blocks_nonghost_incorporeal)
return
//RS Port #658 Start
- if(!holder)
+ if(!check_rights_for(src, R_HOLDER))
if(isliving(mob) && A.flag_check(AREA_BLOCK_PHASE_SHIFT))
to_chat(mob, span_warning("Something blocks you from entering this location while phased out."))
return
diff --git a/code/modules/mob/new_player/lobby_browser.dm b/code/modules/mob/new_player/lobby_browser.dm
index 05fbd309a19..40aeb4d61b1 100644
--- a/code/modules/mob/new_player/lobby_browser.dm
+++ b/code/modules/mob/new_player/lobby_browser.dm
@@ -129,7 +129,7 @@
client.prefs.real_name = random_name(client.prefs.identifying_gender)
observer.real_name = client.prefs.real_name
observer.name = observer.real_name
- if(!client.holder && !CONFIG_GET(flag/antag_hud_allowed)) // For new ghosts we remove the verb from even showing up if it's not allowed.
+ if(!check_rights_for(client, R_HOLDER) && !CONFIG_GET(flag/antag_hud_allowed)) // For new ghosts we remove the verb from even showing up if it's not allowed.
remove_verb(observer, /mob/observer/dead/verb/toggle_antagHUD) // Poor guys, don't know what they are missing!
observer.key = key
diff --git a/code/modules/mob/new_player/poll.dm b/code/modules/mob/new_player/poll.dm
index 8cbf29c5327..b50369a358d 100644
--- a/code/modules/mob/new_player/poll.dm
+++ b/code/modules/mob/new_player/poll.dm
@@ -50,7 +50,7 @@
establish_db_connection()
if(SSdbcore.IsConnected())
var/isadmin = 0
- if(src.client && src.client.holder)
+ if(src.client && check_rights_for(src.client, R_HOLDER))
isadmin = 1
var/datum/db_query/select_query = SSdbcore.NewQuery("SELECT id, question FROM erro_poll_question WHERE [(isadmin ? "" : "adminonly = false AND")] Now() BETWEEN starttime AND endtime")
diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm
index a40d9ccc5ba..ed3cc1c6082 100644
--- a/code/modules/mob/say.dm
+++ b/code/modules/mob/say.dm
@@ -50,7 +50,7 @@
if(!client)
return // Clientless mobs shouldn't be trying to talk in deadchat.
- if(!client.holder)
+ if(!check_rights_for(client, R_HOLDER))
if(!CONFIG_GET(flag/dsay_allowed))
to_chat(src, span_danger("Deadchat is globally muted."))
return
diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm
index 37bdbb21c66..c56a3a8bc08 100644
--- a/code/modules/mob/say_vr.dm
+++ b/code/modules/mob/say_vr.dm
@@ -196,7 +196,7 @@
if(src.client && M && !(get_z(src) == get_z(M)))
message = span_multizsay("[message]")
if(isobserver(M) && (!M.read_preference(/datum/preference/toggle/ghost_see_whisubtle) || \
- (!(read_preference(/datum/preference/toggle/whisubtle_vis) || (isbelly(M.loc) && src == M.loc:owner)) && !M.client?.holder)))
+ (!(read_preference(/datum/preference/toggle/whisubtle_vis) || (isbelly(M.loc) && src == M.loc:owner)) && !check_rights_for(M.client, R_HOLDER))))
spawn(0)
M.show_message(undisplayed_message, 2)
else
@@ -342,7 +342,7 @@
continue
else if(isobserver(G) && G.client?.prefs?.read_preference(/datum/preference/toggle/ghost_ears) && \
G.client?.prefs?.read_preference(/datum/preference/toggle/ghost_see_whisubtle))
- if(client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) || G.client.holder)
+ if(client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) || check_rights_for(G.client, R_HOLDER))
to_chat(G, span_psay("\The [M] thinks, \"[message]\""))
log_say(message,M)
else //There wasn't anyone to send the message to, pred or prey, so let's just say it instead and correct our psay just in case.
@@ -439,7 +439,7 @@
continue
else if(isobserver(G) && G.client?.prefs?.read_preference(/datum/preference/toggle/ghost_ears) && \
G.client?.prefs?.read_preference(/datum/preference/toggle/ghost_see_whisubtle))
- if(client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) || G.client.holder)
+ if(client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) || check_rights_for(G.client, R_HOLDER))
to_chat(G, span_pemote("\The [M] [message]"))
log_say(message,M)
else //There wasn't anyone to send the message to, pred or prey, so let's just emote it instead and correct our psay just in case.
diff --git a/code/modules/multiz/portals_vr.dm b/code/modules/multiz/portals_vr.dm
index 0422b50d706..4d7e7cc2bb3 100644
--- a/code/modules/multiz/portals_vr.dm
+++ b/code/modules/multiz/portals_vr.dm
@@ -39,12 +39,12 @@
to_chat(user, span_notice("Your hand scatters \the [src]..."))
qdel(src) //Delete portals which aren't set that people mess with.
else return //do not send ghosts, zshadows, ai eyes, etc
- else if(isliving(user) || isobserver(user) && user?.client?.holder) //unless they're staff
+ else if(isliving(user) || isobserver(user) && check_rights_for(user?.client, R_HOLDER)) //unless they're staff
spawn(0)
src.teleport(user)
/obj/structure/portal_event/attack_ghost(var/mob/observer/dead/user)
- if(!target && user?.client?.holder)
+ if(!target && check_rights_for(user?.client, R_HOLDER))
to_chat(user, span_notice("Selecting 'Portal Here' will create and link a portal at your location, while 'Target Here' will create an object that is only visible to ghosts which will act as the target, again at your location. Each option will give you the ability to change portal types, but for all options except 'Select Type' you only get one shot at it, so be sure to experiment with 'Select Type' first if you're not familiar with them."))
var/response = tgui_alert(user, "You appear to be staff. This portal has no exit point. If you want to make one, move to where you want it to go, and click the appropriate option, see chat for more info, otherwise click 'Cancel'", "Unbound Portal", list("Cancel","Portal Here","Target Here", "Select Type"))
if(response == "Portal Here")
@@ -69,7 +69,7 @@
return
if(target)
message_admins("The [src]([x],[y],[z]) was given [target]([target.x],[target.y],[target.z]) as a target, and should be ready to use.")
- else if(user?.client?.holder)
+ else if(check_rights_for(user?.client, R_HOLDER))
src.teleport(user)
else return
diff --git a/code/modules/overmap/bluespace_rift_vr.dm b/code/modules/overmap/bluespace_rift_vr.dm
index 51189e1e13a..1a2d0784709 100644
--- a/code/modules/overmap/bluespace_rift_vr.dm
+++ b/code/modules/overmap/bluespace_rift_vr.dm
@@ -31,7 +31,7 @@
return ..()
/obj/effect/overmap/bluespace_rift/attack_ghost(var/mob/observer/dead/user)
- if(!partner && user?.client?.holder)
+ if(!partner && check_rights_for(user?.client, R_HOLDER))
var/response = tgui_alert(user, "You appear to be staff. This rift has no exit point. If you want to make one, move to where you want it to go, and click 'Make Here', otherwise click 'Cancel'", "Bluespace Rift", list("Cancel","Make Here"))
if(response == "Make Here")
new type(get_turf(user), src)
diff --git a/code/modules/random_map/random_map_verbs.dm b/code/modules/random_map/random_map_verbs.dm
index 8bef0f3231e..bcaac9ab439 100644
--- a/code/modules/random_map/random_map_verbs.dm
+++ b/code/modules/random_map/random_map_verbs.dm
@@ -3,7 +3,7 @@
set name = "Display Random Map"
set desc = "Show the contents of a random map."
- if(!holder) return
+ if(!check_rights_for(src, R_HOLDER)) return
var/choice = tgui_input_list(usr, "Choose a map to display.", "Map Choice", random_maps)
if(!choice)
@@ -17,7 +17,7 @@
set name = "Delete Random Map"
set desc = "Delete a random map."
- if(!holder) return
+ if(!check_rights_for(src, R_HOLDER)) return
var/choice = tgui_input_list(usr, "Choose a map to delete.", "Map Choice", random_maps)
if(!choice)
@@ -34,7 +34,7 @@
set name = "Create Random Map"
set desc = "Create a random map."
- if(!holder) return
+ if(!check_rights_for(src, R_HOLDER)) return
var/map_datum = tgui_input_list(usr, "Choose a map to create.", "Map Choice", subtypesof(/datum/random_map))
if(!map_datum)
@@ -58,7 +58,7 @@
set name = "Apply Random Map"
set desc = "Apply a map to the game world."
- if(!holder) return
+ if(!check_rights_for(src, R_HOLDER)) return
var/choice = tgui_input_list(usr, "Choose a map to apply.", "Map Choice", random_maps)
if(!choice)
@@ -83,7 +83,7 @@
set name = "Overlay Random Map"
set desc = "Apply a map to another map."
- if(!holder) return
+ if(!check_rights_for(src, R_HOLDER)) return
var/choice = tgui_input_list(usr, "Choose a map as base.", "Map Choice", random_maps)
if(!choice)
diff --git a/code/modules/rogueminer_vr/debug.dm b/code/modules/rogueminer_vr/debug.dm
index 198f7281fc6..2bba2f003f4 100644
--- a/code/modules/rogueminer_vr/debug.dm
+++ b/code/modules/rogueminer_vr/debug.dm
@@ -3,6 +3,6 @@
set name = "Debug RogueMiner"
set desc = "Debug the RogueMiner controller."
- if(!holder) return
+ if(!check_rights_for(src, R_HOLDER)) return
debug_variables(rm_controller)
feedback_add_details("admin_verb","DRM")
diff --git a/code/modules/tickets/tickets.dm b/code/modules/tickets/tickets.dm
index a48b2a173df..b018c87cdbb 100644
--- a/code/modules/tickets/tickets.dm
+++ b/code/modules/tickets/tickets.dm
@@ -351,7 +351,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick/ticket_list)
/datum/ticket/proc/AddInteraction(formatted_message)
var/curinteraction = "[gameTimestamp()]: [formatted_message]"
if(CONFIG_GET(flag/discord_ahelps_all))
- ahelp_discord_message("ADMINHELP: TICKETID:[id] [strip_html_properly(curinteraction)]")
+ ahelp_discord_message("ADMINHELP: TICKETID: [id] [strip_html_properly(curinteraction)]")
_interactions += curinteraction
/datum/ticket/proc/TicketPanel()
diff --git a/interface/interface.dm b/interface/interface.dm
index cfd0f8851c9..fe4c3062c28 100644
--- a/interface/interface.dm
+++ b/interface/interface.dm
@@ -221,7 +221,7 @@ Any-Mode: (hotkey doesn't need to be on)
else
to_chat(src,hotkey_mode)
to_chat(src,other)
- if(holder)
+ if(check_rights_for(src, R_HOLDER))
to_chat(src,admin)
// Set the DreamSeeker input macro to the type appropriate for its mob