From 4bc27d68f7790262de453a5dcf333fafd7ffca51 Mon Sep 17 00:00:00 2001 From: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Date: Thu, 9 Apr 2026 15:51:03 -0700 Subject: [PATCH] Adds a protection that blocks marking rank datums (#95654) --- code/modules/admin/admin_ranks.dm | 8 ++++++++ code/modules/admin/tag.dm | 3 +++ code/modules/admin/view_variables/mark_datum.dm | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index 79c9dbf199b..d8843e503b1 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -51,6 +51,14 @@ GLOBAL_PROTECT(protected_ranks) /datum/admin_rank/vv_edit_var(var_name, var_value) return FALSE +/datum/admin_rank/allow_mark_datum() + alert_to_permissions_elevation_attempt(usr) + return FALSE + +/datum/admin_rank/can_vv_mark() + alert_to_permissions_elevation_attempt(usr) + return FALSE + // Adds/removes rights to this admin_rank /datum/admin_rank/proc/process_keyword(group, group_count, datum/admin_rank/previous_rank) if(IsAdminAdvancedProcCall()) diff --git a/code/modules/admin/tag.dm b/code/modules/admin/tag.dm index f974973fdff..d5d149371a4 100644 --- a/code/modules/admin/tag.dm +++ b/code/modules/admin/tag.dm @@ -9,6 +9,9 @@ to_chat(owner, span_warning("[target_datum] is already tagged!")) return + if(!target_datum.allow_mark_datum()) + return + LAZYADD(tagged_datums, target_datum) RegisterSignal(target_datum, COMSIG_QDELETING, PROC_REF(handle_tagged_del), override = TRUE) to_chat(owner, span_notice("[target_datum] has been tagged.")) diff --git a/code/modules/admin/view_variables/mark_datum.dm b/code/modules/admin/view_variables/mark_datum.dm index 1d9dd3a1a37..f8f9977e635 100644 --- a/code/modules/admin/view_variables/mark_datum.dm +++ b/code/modules/admin/view_variables/mark_datum.dm @@ -1,6 +1,8 @@ /client/proc/mark_datum(datum/D) if(!holder) return + if(!D.allow_mark_datum()) + return if(holder.marked_datum) holder.UnregisterSignal(holder.marked_datum, COMSIG_QDELETING) vv_update_display(holder.marked_datum, "marked", "") @@ -15,3 +17,7 @@ ADMIN_VERB_ONLY_CONTEXT_MENU(mark_datum, R_NONE, "Mark Object", datum/target as SIGNAL_HANDLER UnregisterSignal(marked_datum, COMSIG_QDELETING) marked_datum = null + +/// Will this datum allow itself to be marked by vv? +/datum/proc/allow_mark_datum() + return TRUE