ID:1500385
 
(See the best response by Kaiochao.)
I don't usually post on the help forums, but i'm having a few issues with Bump() using the integrated pixel movement.

Is there a way for two dense objects to pass through each other? I have it set up now so when 2 objects Bump() one of them loses it's density so they can pass through. Though this still cancels out the rest of the movement for the obj that initiated the Bump()

I'm sure there must be some simple fix or command that I havn't realized.

While i'm talking about this. I initially tried using Cross() to check if objects were passing through one another, instead of Bump(). But even with all the bounds set correctly; Cross() doesn't seem to have the hit detection Bump() does. And usually the objects would pass right over/run into each other without Cross() ever being called.
Try overriding the Cross() procedure for the dense objects you wish to be able to pass through each other. I'll try it myself, but if I understand the documentation properly, doing this and returning a true value in this case should allow the two dense objects to pass through each other. I'm going to attempt to run a test to verify this myself.

*Edit* Ok, so yeah the documentation says it all. If you override the Cross() you can make special cases to allow to pass through certain dense objects, but not others.

mob/Player
Cross(atom/movable/O)
if(O.type == src.type || !O.density) return 1 //always allow players to cross each other or non-dense atoms
else return 0 //otherwise, do not allow it to cross
Well i've figured that much out. But Cross() only works if both objects are moving. I need it for when they are stationary as well. How would you go about doing the same thing in the Bump() procedure?
In response to Koshigia
I think your snippet would work better using the default return value.
mob/Player
Cross(atom/movable/O)
if(istype(O, /mob/Player))
return TRUE
return ..()

// can be shortened to this (if you want)
mob/Player
Cross(atom/movable/O)
return istype(O, /mob/Player) || ..()
In response to Bakasensei
Best response
It's easy to think that Cross() is defined/used for the moving object, but it's not. Cross() and Enter() are used for the object that is being potentially bumped into, not the object that is moving.

If you want object A to cross over object B, then you have to return TRUE in the Cross() of object B. The Cross() of object A is irrelevant in that case.
Ahh, that's what my problem was. Thanks man, I didn't realize Cross() is being called by the object being crossed.