diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index a51549cc99f..81a806f8671 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -5,10 +5,10 @@
#define SECURITY_HAS_MAINT_ACCESS 2
#define EVERYONE_HAS_MAINT_ACCESS 4
-/datum/configuration/vv_get_var(var_name)
- var/static/list/banned_views = list("autoadmin", "autoadmin_rank")
- if(var_name in banned_views)
- return debug_variable(var_name, "SECRET", 0, src)
+/datum/configuration/can_vv_get(var_name)
+ var/static/list/banned_gets = list("autoadmin", "autoadmin_rank")
+ if (var_name in banned_gets)
+ return FALSE
return ..()
/datum/configuration/vv_edit_var(var_name, var_value)
diff --git a/code/controllers/globals.dm b/code/controllers/globals.dm
index 3799230ac4d..b25d51bc9be 100644
--- a/code/controllers/globals.dm
+++ b/code/controllers/globals.dm
@@ -41,9 +41,9 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars)
num_globals = vars.len - gvars_datum_in_built_vars.len
stat("Globals:", statclick.update("Count: [num_globals]"))
-/datum/controller/global_vars/vv_get_var(var_name)
+/datum/controller/global_vars/can_vv_get(var_name)
if(var_name in gvars_datum_protected_varlist)
- return debug_variable(var_name, "SECRET", 0, src)
+ return FALSE
return ..()
/datum/controller/global_vars/vv_edit_var(var_name, var_value)
diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index bd2d737f1b9..b22b616e7bd 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -2,6 +2,9 @@
var/var_edited = FALSE //Warrenty void if seal is broken
var/fingerprintslast = null
+/datum/proc/can_vv_get(var_name)
+ return TRUE
+
/datum/proc/vv_edit_var(var_name, var_value) //called whenever a var is edited
switch(var_name)
if ("vars")
@@ -155,7 +158,8 @@
names = sortList(names)
for (var/V in names)
- variable_html += D.vv_get_var(V)
+ if(D.can_vv_get(V))
+ variable_html += D.vv_get_var(V)
var/html = {"
diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm
index a2d24425718..3e3db4172c0 100644
--- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm
+++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm
@@ -419,10 +419,9 @@
/proc/SDQL_var(datum/object, list/expression, start = 1, source)
var/v
- var/static/list/exclude = list("usr", "src", "marked", "global")
var/long = start < expression.len
if(object == world && long && expression[start + 1] == ".")
- to_chat(usr, "Sorry, but global variables are not supported at the moment.")
+ to_chat(usr, "Sorry, but world variables are not supported at the moment.")
return null
else if(expression [start] == "{" && long)
if(lowertext(copytext(expression[start + 1], 1, 3)) != "0x")
@@ -434,7 +433,10 @@
return null
start++
else if((!long || expression[start + 1] == ".") && (expression[start] in object.vars))
- v = object.vars[expression[start]]
+ if(object.can_vv_get(expression[start]))
+ v = object.vars[expression[start]]
+ else
+ v = "SECRET"
else if(long && expression[start + 1] == ":" && hascall(object, expression[start]))
v = expression[start]
else if(!long || expression[start + 1] == ".")
@@ -448,8 +450,10 @@
v = usr.client.holder.marked_datum
else
return null
- if("global")
+ if("world")
v = world
+ if("global")
+ v = GLOB
else
return null
else if(object == world) // Shitty ass hack kill me.
diff --git a/code/modules/admin/verbs/buildmode.dm b/code/modules/admin/verbs/buildmode.dm
index 64ba4349229..968c03cac1c 100644
--- a/code/modules/admin/verbs/buildmode.dm
+++ b/code/modules/admin/verbs/buildmode.dm
@@ -305,14 +305,18 @@
if(VAR_BUILDMODE)
if(left_click) //I cant believe this shit actually compiles.
if(object.vars.Find(varholder))
- log_admin("Build Mode: [key_name(user)] modified [object.name]'s [varholder] to [valueholder]")
- object.vars[varholder] = valueholder
+ if(object.vv_edit_var(varholder, valueholder))
+ log_admin("Build Mode: [key_name(user)] modified [object.name]'s [varholder] to [valueholder]")
+ else
+ to_chat(user, "Varedit rejected")
else
to_chat(user, "[initial(object.name)] does not have a var called '[varholder]'")
if(right_click)
if(object.vars.Find(varholder))
- log_admin("Build Mode: [key_name(user)] modified [object.name]'s [varholder] to [valueholder]")
- object.vars[varholder] = initial(object.vars[varholder])
+ if(object.vv_edit_var(varholder, initial(object.vars[varholder])))
+ log_admin("Build Mode: [key_name(user)] modified [object.name]'s [varholder] to [valueholder]")
+ else
+ to_chat(user, "Varedit rejected")
else
to_chat(user, "[initial(object.name)] does not have a var called '[varholder]'")
diff --git a/code/modules/admin/verbs/massmodvar.dm b/code/modules/admin/verbs/massmodvar.dm
index 6124cef1190..05f662fb163 100644
--- a/code/modules/admin/verbs/massmodvar.dm
+++ b/code/modules/admin/verbs/massmodvar.dm
@@ -32,7 +32,7 @@
else
variable = var_name
- if(!variable)
+ if(!variable || !O.can_vv_get(variable))
return
var/default
var/var_value = O.vars[variable]
diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm
index 2ac8c73d71c..4aba276cbd9 100644
--- a/code/modules/admin/verbs/modifyvariables.dm
+++ b/code/modules/admin/verbs/modifyvariables.dm
@@ -528,6 +528,9 @@ GLOBAL_PROTECT(VVpixelmovement)
variable = input("Which var?","Var") as null|anything in names
if(!variable)
return
+
+ if(!O.can_vv_get(variable))
+ return
var_value = O.vars[variable]