Some notes on the matter:
1) It appears that objects are in the list and are dense.
2) The player is dense.
3) My top and bottom etc. vars are what they are supposed to be.
Is_colliding(atom/A,atom/B,left1,right1,bottom1,top1)
if(!B.density) return
if (bottom1 < B.top) return
if (top1 > B.bottom) return
if (right1 < B.left) return
if (left1 > B.right) return
return B
movable
animate_movement = 0
proc
iscolliding(xp,yp)
if(!density) return
var
top1 = top+yp
bottom1 = bottom+yp
left1 = left+xp
right1 = right+xp
var/list/L = orange(1,src)
QuickSort(L,/proc/Sort_By_Dist,src)
for(var/atom/A as anything in L)
. = control.Is_colliding(src,A,left1,right1,bottom1,top1)
if(.) break