diff --git a/code/modules/admin/view_variables/view_variables.dm b/code/modules/admin/view_variables/view_variables.dm
index 09505ac5771..3e971ee8722 100644
--- a/code/modules/admin/view_variables/view_variables.dm
+++ b/code/modules/admin/view_variables/view_variables.dm
@@ -113,18 +113,9 @@
for(var/x in variables)
. += make_view_variables_var_entry(D, x, D.vars[x])
-/proc/make_view_variables_var_entry(datum/D, varname, value, level=0)
- var/ecm = null
- var/vtext = null
- var/extra = null
-
- if(D)
- ecm = {"
- (E)
- (C)
- (M)
- "}
-
+/proc/make_view_variables_value(value, varname = "*")
+ var/vtext = ""
+ var/extra = list()
if(isnull(value))
vtext = "null"
else if(istext(value))
@@ -146,16 +137,29 @@
var/list/L = value
vtext = "/list ([L.len])"
if(!(varname in view_variables_dont_expand) && L.len > 0 && L.len < 100)
- extra = "
"
- var/index = 1
- for (var/entry in L)
- if(istext(entry))
- extra += make_view_variables_var_entry(null, entry, L[entry], level+1)
+ extra += ""
+ for (var/index = 1 to L.len)
+ var/entry = L[index]
+ if(!isnum(entry) && !isnull(entry) && L[entry] != null)
+ extra += "- [index]: [make_view_variables_value(entry)] -> [make_view_variables_value(L[entry])]
"
else
- extra += make_view_variables_var_entry(null, index, L[index], level+1)
- index++
+ extra += "- [index]: [make_view_variables_value(entry)]
"
extra += "
"
else
vtext = "[value]"
- return "- [ecm][varname] = [vtext][extra]
"
+ return "[vtext][list2text(extra)]"
+
+/proc/make_view_variables_var_entry(datum/D, varname, value, level=0)
+ var/ecm = null
+
+ if(D)
+ ecm = {"
+ (E)
+ (C)
+ (M)
+ "}
+
+ var/valuestr = make_view_variables_value(value, varname)
+
+ return "- [ecm][varname] = [valuestr]
"