ID:2355004
 
Resolved
If the only change on the map was to an icon's NO_CLIENT_COLOR flag, the map didn't redraw.
BYOND Version:512.1415
Operating System:Windows 7 Ultimate 64-bit
Web Browser:Firefox 59.0
Applies to:Dream Seeker
Status: Resolved (512.1416)

This issue has been resolved.
Descriptive Problem Summary:
Editing the appearance_flags of an object without editing any other aspect of its appearance does not immediately update the client with the change.

Code Snippet (if applicable) to Reproduce Problem:
/client/New()
. = ..()
color = "gray"

/obj
icon = 'whatever.dmi'
icon_state = "whatever"

/obj/Click()
. = ..()
appearance_flags ^= NO_CLIENT_COLOR
if (prob(50))
plane += 1
// -OR-
step(src, SOUTH)
// -OR-
icon_state = "something_else"


Expected Results:
Objects should become brighter immediately when clicked.

Actual Results:
Objects stay dark until one of the other objects changes plane or moves, when all changed objects update at once.

Does the problem occur:
Every time? Or how often?
Every time.
In other games?
Originally observed in Space Station 13.
In other user accounts?
Unknown.
On other computers?
Unknown.

When does the problem NOT occur?
If the object's icon_state, plane, or loc are changed (in a way that reaches the client) alongside the appearance_flags change, the problem does not manifest.

Did the problem NOT occur in any earlier versions? If so, what was the last version that worked?
Doesn't seem to have anything to do with the recent icon change; tested in both 512.1413 and 512.1415, behavior seems the same to me.

Lummox JR changed status to 'Unverified'
I tested this but I was unable to get the same result you did. Do you have a test project that shows it in action?

Under the hood I don't see how this would even be possible, at least not for movables. Toggling NO_CLIENT_COLOR in appearance_flags will generate a new appearance, and that will trigger an update to the obj.
The full compilable/runnable repro is here: https://wombat.platymuus.com/dl/minimal.zip (zip, 2KB).

Click the objects in a row in sequence. I observe them not turning from dark red to light red until one of them passes the prob() check, at which point it moves downwards and all the previously clicked dark-red objects turn bright red.
Found it. It was in a really weird part of the map drawing code, and the problem didn't show up if another change happened on the map. Only the NO_CLIENT_COLOR flag was involved in this.
Lummox JR resolved issue with message:
If the only change on the map was to an icon's NO_CLIENT_COLOR flag, the map didn't redraw.