diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index d32f03e74b9..8eeb58a1b9d 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -2154,7 +2154,7 @@
var/turf/above = GetAbove(src)
if(TURF_IS_MIMICING(above))
z_eye = new /atom/movable/z_observer/z_up(src, src)
- to_chat(src, "You look up.")
+ visible_message(SPAN_NOTICE("[src] looks up."), SPAN_NOTICE("You look up."))
reset_view(z_eye)
return
to_chat(src, "You can see \the [above ? above : "ceiling"].")
@@ -2174,14 +2174,14 @@
var/turf/T = get_turf(src)
if(TURF_IS_MIMICING(T) && HasBelow(T.z))
z_eye = new /atom/movable/z_observer/z_down(src, src)
- to_chat(src, "You look down.")
+ visible_message(SPAN_NOTICE("[src] looks below."), SPAN_NOTICE("You look below."))
reset_view(z_eye)
return
else
T = get_step(T, dir)
if(TURF_IS_MIMICING(T) && HasBelow(T.z))
z_eye = new /atom/movable/z_observer/z_down(src, src, TRUE)
- to_chat(src, "You lean over to look down in front of you.")
+ visible_message(SPAN_NOTICE("[src] leans over to look below."), SPAN_NOTICE("You lean over to look below."))
reset_view(z_eye)
return
to_chat(src, "You can see \the [T ? T : "floor"].")
diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm
index d57098d9541..b1ce02cc106 100644
--- a/code/modules/multiz/movement.dm
+++ b/code/modules/multiz/movement.dm
@@ -780,12 +780,15 @@
anchored = TRUE
mouse_opacity = FALSE
var/mob/living/owner
+ var/tile_shifted = FALSE
/atom/movable/z_observer/Initialize(mapload, var/mob/living/user, var/tile_shift = FALSE)
. = ..()
owner = user
if(tile_shift)
- step(get_step(owner, owner.dir))
+ var/turf/T = get_step(owner, owner.dir)
+ forceMove(T)
+ tile_shifted = TRUE
follow()
moved_event.register(owner, src, /atom/movable/z_observer/proc/follow)
@@ -802,8 +805,8 @@
qdel(src)
/atom/movable/z_observer/z_down/follow()
- forceMove(get_step(owner, DOWN))
- var/turf/T = get_turf(owner)
+ forceMove(get_step(tile_shifted ? src : owner, DOWN))
+ var/turf/T = get_turf(tile_shifted ? get_step(owner, owner.dir) : owner)
if(T && (T.flags & MIMIC_BELOW))
return
owner.reset_view(null)