Ok, after a bit of thinking about that cell type system, i realised my current sorting was only half the equation
i was doing this:
For each Layers ordered by Layers.Y + Layers.Value('ZHeightBottom')
Which, in a cell based setup, does the first half of the equation, finding where the object is on the row. BUT if you only have this, it treats everything as though there's only ONE row. So i expanded on it and did this:
For each Layers ordered by (Layers.Y + Layers.Value('ZHeightBottom')) + Layers.Value('ZHeightBottom')
EDIT: Although come to think of it, that's essentially the same as the solution that David gave me earlier
This now tells the game where on the 'row' it is, but then also which row it is on!
Now it's working a lot better!! But i still have a few bugs, i'll upload a cap.
Try standing at the base of the tower and jumping, also try standing behind a big box and jumping