When there are multiple atoms in the same loc that are all dense, it will ignore Cross even if it is returning 1.
Numbered Steps to Reproduce Problem:
Have a dense /turf or /obj and then place a dense /mob on top of it. Make sure the turf or obj has Cross defined to always pass. Then attempt to bump into the turf/obj and mob.
Code Snippet (if applicable) to Reproduce Problem:
obj
icon = 'stick.dmi'
layer = 1
density = 1
var/CanPassDespiteDense = 1
New()
..()
new /mob(loc)
Cross(atom/movable/A)
if(CanPassDespiteDense)
return 1
mob
icon = 'player.dmi'
layer = 1
alpha = 120
density = 1
Bump(atom/movable/A)
world << "Bumped into [A.type]."
Expected Results:
It should bump into the mob instead of the obj as they are both on the same tile and the Cross makes the obj passable.
Actual Results:
It bumps into the obj.
To change this behavior, use world/movement_mode = PIXEL_MOVEMENT_MODE.