ID:1974766
 
Resolved
The appearance flag NO_CLIENT_COLOR didn't work in some cases, particularly when client.color was a solid color.
BYOND Version:509.1312
Operating System:Windows 7 Home Premium 64-bit
Web Browser:Firefox 41.0
Applies to:Dream Seeker
Status: Resolved (509.1313)

This issue has been resolved.
Descriptive Problem Summary:
NO_CLIENT_COLOR being present in appearance_flags does not appear to actually prevent client.color from affecting it.

Numbered Steps to Reproduce Problem:
1. Set something's appearance_flags variable to NO_CLIENT_COLOR, either on New() or elsewhere, or in a static define on it's path.
2. Set client.color to something.
3. Observe something's color change.

Code Snippet (if applicable) to Reproduce Problem:
/world
fps=25
icon_size = 32
view=6

/atom
icon = 'icon.dmi'
appearance_flags = NO_CLIENT_COLOR
/mob/icon_state = "mob" //bright red square
/turf/icon_state = "turf" //bright blue square
/obj/icon_state = "obj" //bright green square

/client/New()
. = ..()
color = "#0000FF"


Screenshots for the above snippet:
Map editor, https://puu.sh/l3LkG/621ac07a8c.png
Running, https://puu.sh/l3LlB/7cf22ff4be.png

Expected Results:
All atoms would ignore client.color.
Actual Results:
Atoms change color to client.color regardless of NO_CLIENT_COLOR flag.
Does the problem occur:
Every time? Or how often? Every time, regardless of setting it as a default variable or setting it dynamically in New().
In other games? Yes.
In other user accounts? Yes.
On other computers? Not able to test, but presumably.

When does the problem NOT occur? Not known.

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.) Tried 1311 and 1310, neither worked with the above snippet.

Workarounds: None known.


Is it only when defined in /atom or does the same happen when it's set elsewhere?
Same happens when it's defined elsewhere, I've tried the following:
/obj
appearance_flags = NO_CLIENT_COLOR

/client/New()
var/obj/O = new(mob)
O.appearance_flags = NO_CLIENT_COLOR

Neither worked.
Also a relevant question: Does switching to software rendering and back to hardware do anything?
No, it doesn't- Software mode doesn't actually render client.color at all, and switching back to hardware mode immediately causes this again; https://puu.sh/l3LlB/7cf22ff4be.png
Since it looks like this is a simple project, do you have the demo available for me to download? That'd be the perfect way to make sure I'm on exactly the same page as you.
Yeah, sure, it's just a quick demo of the bug thrown together with colored squares to demonstrate the point- https://dl.dropboxusercontent.com/s/jt0yic3uzf21rpp/ clientColor.zip?dl=0

It's a bit messy, kinda just threw it together.
Lummox JR resolved issue with message:
The appearance flag NO_CLIENT_COLOR didn't work in some cases, particularly when client.color was a solid color.