Code Snippet (if applicable) to Reproduce Problem:
mob
step_size = 32
obj
uncrosstest
bound_width = 96
bound_height = 96
Uncross()
world << "uncross"
return 1
Uncrossed()
world << "uncrossed"
return 1
Crossed()
world << "crossed"
return 1
Cross()
world << "cross"
return 1
Expected Results:
One would expect that Uncross() would only be called before Uncrossed().
Actual Results:
It seems that when moving between tiles that a large object covers, Uncross() is called regardless of whether the new position of the moving object overlaps the bounding box of the overlapped object.
When Uncrossed() is called, however, you will notice that Uncross() is called TWICE.
Did the problem NOT occur in any earlier versions? If so, what was the last version that worked? (Visit http://www.byond.com/download/build to download old versions for testing.)
Did not occur prior to THIS FIX:
http://www.byond.com/ forum/?post=1372784&hl=uncross#comment6521232
Workarounds:
None that are pleasant.
This may be simple fallout from the need for Enter() and Exit() to preserve legacy behavior with tile-coverers, but I'll look into it some more.