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.