diff --git a/code/datums/components/orbiter.dm b/code/datums/components/orbiter.dm
index 474d5049c5d..435fabdf7f8 100644
--- a/code/datums/components/orbiter.dm
+++ b/code/datums/components/orbiter.dm
@@ -59,7 +59,9 @@
orbiter.orbiting = src
RegisterSignal(orbiter, COMSIG_MOVABLE_MOVED, .proc/orbiter_move_react)
SEND_SIGNAL(parent, COMSIG_ATOM_ORBIT_BEGIN, orbiter)
+
var/matrix/initial_transform = matrix(orbiter.transform)
+ orbiters[orbiter] = initial_transform
// Head first!
if(pre_rotation)
@@ -76,8 +78,6 @@
orbiter.SpinAnimation(rotation_speed, -1, clockwise, rotation_segments, parallel = FALSE)
- //we stack the orbits up client side, so we can assign this back to normal server side without it breaking the orbit
- orbiter.transform = initial_transform
orbiter.forceMove(get_turf(parent))
to_chat(orbiter, "Now orbiting [parent].")
@@ -87,6 +87,8 @@
UnregisterSignal(orbiter, COMSIG_MOVABLE_MOVED)
SEND_SIGNAL(parent, COMSIG_ATOM_ORBIT_STOP, orbiter)
orbiter.SpinAnimation(0, 0)
+ if(istype(orbiters[orbiter],/matrix)) //This is ugly.
+ orbiter.transform = orbiters[orbiter]
orbiters -= orbiter
orbiter.stop_orbit(src)
orbiter.orbiting = null
diff --git a/code/modules/admin/view_variables/debug_variables.dm b/code/modules/admin/view_variables/debug_variables.dm
index 23f85cba156..6a75ba30193 100644
--- a/code/modules/admin/view_variables/debug_variables.dm
+++ b/code/modules/admin/view_variables/debug_variables.dm
@@ -1,4 +1,5 @@
#define VV_HTML_ENCODE(thing) ( sanitize ? html_encode(thing) : thing )
+/// Get displayed variable in VV variable list
/proc/debug_variable(name, value, level, datum/D, sanitize = TRUE) //if D is a list, name will be index, and value will be assoc value.
var/header
if(D)
@@ -35,6 +36,17 @@
else if (isfile(value))
item = "[VV_HTML_ENCODE(name)] = '[value]'"
+ else if(istype(value,/matrix)) // Needs to be before datum
+ var/matrix/M = value
+ item = {"[VV_HTML_ENCODE(name)] =
+
+
+
+
[M.a]
[M.d]
0
+
[M.b]
[M.e]
0
+
[M.c]
[M.f]
1
+
+
"} //TODO link to modify_transform wrapper for all matrices
else if (istype(value, /datum))
var/datum/DV = value
if ("[DV]" != "[DV.type]") //if the thing as a name var, lets use it.
diff --git a/code/modules/admin/view_variables/view_variables.dm b/code/modules/admin/view_variables/view_variables.dm
index 99b832cbe0a..472ee5271d4 100644
--- a/code/modules/admin/view_variables/view_variables.dm
+++ b/code/modules/admin/view_variables/view_variables.dm
@@ -94,16 +94,7 @@