[s] Fixes datum var hiding (#26027)

* .

* Buildmode

* SDQL global. now refers to GLOB

@kevinz000

* Another SDQL thing

* Fix
This commit is contained in:
Cyberboss
2017-04-12 11:20:46 +12:00
committed by oranges
parent a4e8051a05
commit a8cc3cd6c2
7 changed files with 31 additions and 16 deletions
+4 -4
View File
@@ -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)
+2 -2
View File
@@ -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)
+5 -1
View File
@@ -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 = {"
<html>
+8 -4
View File
@@ -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.
+8 -4
View File
@@ -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, "<span class='warning'>Varedit rejected</span>")
else
to_chat(user, "<span class='warning'>[initial(object.name)] does not have a var called '[varholder]'</span>")
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, "<span class='warning'>Varedit rejected</span>")
else
to_chat(user, "<span class='warning'>[initial(object.name)] does not have a var called '[varholder]'</span>")
+1 -1
View File
@@ -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]
@@ -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]