mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 20:48:56 +01:00
[s] Fixes datum var hiding (#26027)
* . * Buildmode * SDQL global. now refers to GLOB @kevinz000 * Another SDQL thing * Fix
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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>")
|
||||
|
||||
|
||||
@@ -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]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user