ID:1425668
 
BYOND Version:501
Operating System:Windows 7 Ultimate 64-bit
Web Browser:Firefox 25.0
Applies to:DM Language
Status: Open

Issue hasn't been assigned a status value.
Descriptive Problem Summary: Uncross() is called incorrectly since the last fix to the behavior.

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.
One good thing about this behavior, at least, is that Uncross() is consistent with Cross() in this way. Tests show they behave the same.

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.
I'll admit a certain amount of grim satisfaction in your silver lining, Lummox.

Any word on the behavior being updated to operate as intended?
Was there a status update on whether a fix to this is possible?