diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 28422197eea..64f27af39d5 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -985,10 +985,11 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null var/v var/static/list/exclude = list("usr", "src", "marked", "global") var/long = start < expression.len - var/datum/D = is_object_datatype(object) && object - var/var_access = expression[start + 1] == "." - - if (object == world && (!long || var_access) && !(expression[start] in exclude)) //3 == length("SS") + 1 + var/datum/D + if(is_object_datatype(object)) + D = object + + if (object == world && (!long || expression[start + 1] == ".") && !(expression[start] in exclude)) //3 == length("SS") + 1 to_chat(usr, "World variables are not allowed to be accessed. Use global.") return null @@ -1002,14 +1003,14 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null return null start++ long = start < expression.len - else if(D && (!long || var_access) && (expression[start] in D.vars)) + else if(D != null && (!long || expression[start + 1] == ".") && (expression[start] in D.vars)) if(D.can_vv_get(expression[start]) || superuser) v = D.vars[expression[start]] else v = "SECRET" - else if(D && long && expression[start + 1] == ":" && hascall(D, expression[start])) + else if(D != null && long && expression[start + 1] == ":" && hascall(D, expression[start])) v = expression[start] - else if(!long || var_access) + else if(!long || expression[start + 1] == ".") switch(expression[start]) if("usr") v = usr @@ -1030,24 +1031,58 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null v = Failsafe if("CFG") v = config +/* + //Subsystem switches + if("SSgarbage") + v = SSgarbage + if("SSmachines") + v = SSmachines + if("SSobj") + v = SSobj + if("SSresearch") + v = SSresearch + if("SSprojectiles") + v = SSprojectiles + if("SSfastprocess") + v = SSfastprocess + if("SSticker") + v = SSticker + if("SStimer") + v = SStimer + if("SSradiation") + v = SSradiation + if("SSnpcpool") + v = SSnpcpool + if("SSmobs") + v = SSmobs + if("SSquirks") + v = SSquirks + if("SSwet_floors") + v = SSwet_floors + if("SSshuttle") + v = SSshuttle + if("SSmapping") + v = SSmapping + if("SSevents") + v = SSevents + //End +*/ else return null else if(object == GLOB) // Shitty ass hack kill me. v = expression[start] if(long) - switch(expression[start + 1]) - if(".") - return SDQL_var(v, expression[start + 2], null, source, superuser, query) - if(":") - return (query.options & SDQL2_OPTION_BLOCKING_CALLS)? query.SDQL_function_async(object, v, expression[start + 2], source) : query.SDQL_function_blocking(object, v, expression[start + 2], source) - if("\[") - if(islist(v)) - var/list/L = v - var/index = query.SDQL_expression(source, expression[start + 2]) - if(isnum(index) && (!ISINTEGER(index) || L.len < index)) - to_chat(usr, "Invalid list index: [index]") - return null - return L[index] + if(expression[start + 1] == ".") + return SDQL_var(v, expression[start + 2], null, source, superuser, query) + else if(expression[start + 1] == ":") + return (query.options & SDQL2_OPTION_BLOCKING_CALLS)? query.SDQL_function_async(object, v, expression[start + 2], source) : query.SDQL_function_blocking(object, v, expression[start + 2], source) + else if(expression[start + 1] == "\[" && islist(v)) + var/list/L = v + var/index = query.SDQL_expression(source, expression[start + 2]) + if(isnum(index) && (!ISINTEGER(index) || L.len < index)) + to_chat(usr, "Invalid list index: [index]") + return null + return L[index] return v /proc/SDQL2_tokenize(query_text)