ID:1411666
 
(See the best response by Zaoshi.)
Code:
        Place()
if(!isnull(src.Lifting) && (src.dir == EAST || src.dir == WEST)) // Only need to run this if you are lifting
// The && (src.dir == EAST || src.dir == WEST) should be unnecessary but it's a redundancy
var/turf/T = get_step(src, src.dir) // Should be a turf in EAST or WEST
src << "[T] is in [src.dir]" // Always shows 4 or 8 (EAST or WEST)
var/obj/Blocking = locate(/obj/Box) in T.contents
if(isnull(Blocking)) // If there's nothing blocking
src.Lifting.Move(T) // Place the Box in the neighboring turf
src.Lifting = null ; src.IsLifting = 0 // Set variables to 0


Problem description:
For some reason the box keeps getting placed to the North and I can't figure out why. I thought that it may be a glitch with direction (Only client.East() or client.West() return a non-null value) so I added the && conditional. But it kept being placed to the North somehow, so I added the output statement. Still says that the turf should be to the East or West, so I don't know the issue.

EDIT: By taking away pixel movement, it seems to work perfectly now? But I don't know why pixel movement broke it to begin with.
Best response
Are you sure Cross()/etc doesn't push it?
The box is dense and the sky turf that I will be placing it onto is not dense. It might be a case of me trying to place and move at the same time, moving myself onto the desired turf. Which I suppose is an easy fix.