ID:2477694
 
Resolved
Visual contents of objs and mobs did not reset in some cases when they were removed from the map and later re-added, but not deleted in the interim.
BYOND Version:512.1471
Operating System:Windows 7 Home Premium 64-bit
Web Browser:
Applies to:Dream Seeker
Status: Resolved (512.1472)

This issue has been resolved.
Descriptive Problem Summary:
Sometimes removing something from an object's vis_contents will cause it to remain on the client.
Seems to generally involve changing vis_contents just before (or any point after) removing the affected object from a clients screen/view



Numbered Steps to Reproduce Problem:
1. Place object B in vis_contents of object A
2. Remove B from vis_contents of A (but dont del it) and move A into object C
3. Move A out of C, B will still be visible on A despite not being in A.vis_contents, note: relogging will fix this


Code Snippet (if applicable) to Reproduce Problem:
https://www.dropbox.com/s/ybmtnirv5qfnoq0/ vis_contents_issues_mk2.zip?dl=1
Once you compile and launch it hit the "start vis_contents test" verb

Expected Results:
Things removed from an object's vis_contents will no longer show up as if in the object's vis_contents list.

Actual Results:
The thing removed is still visible as if it were in vis_contents to some clients.

Does the problem occur:
Every time? Or how often?
Every time
In other games?
Yes
In other user accounts?
Yes
On other computers?
Yes, tested with one other user in the linked code and 100+ in another project

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.)
This issue was reported and fixed in 512.1463 however checking old versions the bug shows up again in 512.1465

Link to the old bug report: http://www.byond.com/forum/post/2422596

Okay, I've taken a look and figured out that a previous fix broke this.

When a movable is removed from the map on the client, in the past its pixel offsets and vis_contents were reset. However this was found to be a bad thing for some cases, which I believe was screen objects. (In fact, I'm pretty sure it was one of your issues.) Re-adding the object is not causing the visual contents or pixel offsets to reset because this object hasn't actually been deleted, so a new sequence number isn't bring received by the client to tell it it's a new object (which would reset everything). The server doesn't say that the pixel offsets are 0 and visual contents are empty because those are the default conditions, and as far as it knows this is the first time it's showing the object.

So it looks like I'll have to revert my earlier change but find a different way for screen objects to cope.

[Edit]
Yep. The other issue was id:2433447.
Lummox JR resolved issue with message:
Visual contents of objs and mobs did not reset in some cases when they were removed from the map and later re-added, but not deleted in the interim.
Hmm. Retesting the screen issue in both 1464 (which it was broken in) and with this new code to get a baseline showed no problems with the new code. It seems something else I did along the way to improve this stuff fixed the problem. I remembered that the other issue required separate DD and DS instances to show the bug, so I feel confident about that.