ID:88852
 
BYOND Version:461
Operating System:Windows Vista Home Basic
Web Browser:Chrome 3.0.195.38
Status: Deferred

This issue may be low priority or very difficult to fix, and has been put on the back burner for the time being.
Descriptive Problem Summary: BYOND sometimes processes clicks on objects in a problematic fashion. If you click an object rapidly, and it is deleted quickly after, it will often treat it as if the user has clicked a different object, even if it's not one they have access to.

This can also occur with grids. If an object displayed in a grid is deleted, and the grid space it is in does not get updated, clicking on the deleted object in the grid will result in the game being treated as if you clicked another object in the world.

I'm not entirely sure what determines which objects are clicked and which ones are not.

This also doesn't seem to happen immediately with grids. It usually occurs when a grid is not visible and some time has passed, usually after new objects have been created.

Numbered Steps to Reproduce Problem:

1) Create a list of objects.
2) Output them to a grid.
3) Delete them.
4) Hide the grid without updating it.
5) Wait(?)
6) Show the grid (later?) after objects have been created(?) and click one of them.

Code Snippet (if applicable) to Reproduce Problem:
I tried to prepare a small demo to show what I meant and this bug, but it was unable to reproduce the bug, and I did not want to potentially waste time by toying with it when I do not know the exact circumstances of the bug.

Expected Results:
All Clicks fire the Click proc of the object clicked.

Actual Results:
Sometimes, will cause clicks on objects other than the clicked, even if the user has no way to see them/click them, which causes problems.

Does the problem occur:
Every time? Or how often? I'm unsure, but it is a persistent problem I've experienced for a while now.
In other games? This has occured, at some point, in all of my games which use grids. Duel Monsters Expert, Sigrogana Legend, Witches' Chess. I have yet to test it on other games, but it would probably be the same.
In other user accounts? Can't test this, but it occurs and is reported by other people as well as myself, so yes?
On other computers? See above, yes.

When does the problem NOT occur?
Unsure of the exact circumstances, but it doesn't seem to happen immediately after an object on a grid is deleted and the grid is not updated.

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.)

Workarounds:
I haven't been able to find any.

The problem is that the client is stacking up those commands in a queue, but after the command is queued the object can be deleted and a new one created with the same ID. There may be a way to avoid this, but any method we pick will probably be limited at best.

A workaround, or at least a way of dealing with the problem, is to make sure you always check inside a verb to see if the object should really have been clickable by that player. Note that for regular verbs this usually isn't an issue because the server can do some checking of its own, but in Click() it doesn't have that option.