This bug stems from the recent changes to using the NEUTRAL tag to control color. The issue is that we are setting a value based on a script setting, but then that value is getting changed later. The Flag() value of a character is not meant to be permanent, but temporary, changing with the actions of that character. It is for that reason I propose a more in-depth change to the flagging system.
NPC's are now moderately seperated from PC's, thus I believe we should add new values that affect only NPC's which would be pulled and permanently stored from scripts.
We can store an extra UI08 value, called npcFlag, which would be in struct NPCValues_st
Rather than NEUTRAL tag in the scripts, I propose we use something like FLAG= where the values would be
INNOCENT (Blue, dependant on criminal and murder status)
NEUTRAL (Gray, dependant on murder status)
EVIL (Red)
Notably this would be entirely seperate from a creatures AI, and would only effect the flagging of the NPC.
There are some special exceptions, of course, such as the uox.ini setting which would turn animals of any color to blue in town (unless they have an agressive AI). However these situations would be handled when updating the character Flag() propery, not affecting the npcFlag property.