This works as I would expect. The player is moved to z:3 and the output is 3.
var/obj/o = locate("[src.ckey]_Surface_Teleporter")
loc = locate(o.x, o.y, o.z)
world.log << "[z]"
This does not work and I'm not sure what to expect. The player is moved to z:3 but the output is 0.
loc = locate("[src.ckey]_Surface_Teleporter")
world.log << "[z]"
Why does the player move in this case but the players z var remains 0?
According to the source, a movable atom's x/y/z vars all read as 0 when it's not directly on a turf.