ID:2717579
 
Resolved
Changing an appearance's internal bits (e.g. changing density, gender, etc.) could accidentally remove newer high-order flags like TILE_MOVER.
BYOND Version:514
Operating System:Windows 10 Home 64-bit
Web Browser:Chrome 93.0.4577.63
Applies to:Dream Daemon
Status: Resolved (514.1567)

This issue has been resolved.
Descriptive Problem Summary:
Assigning a valid value to an atom's gender var will remove its TILE_MOVER flag, if it has one.

Numbered Steps to Reproduce Problem:
1. Give an atom TILE_MOVER
2. Set its gender, even to what it already was
3. Watch as TILE_MOVER vanishes

Code Snippet (if applicable) to Reproduce Problem:
var/obj/O = new()
O.appearance_flags = TILE_MOVER
world.log << O.appearance_flags
O.gender = NEUTER
world.log << O.appearance_flags


Expected Results:
Setting gender has no effect on appearance_flags

Actual Results:
Magic

When does the problem NOT occur?
As far as I can tell, it always occurs.

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.)
Pretty sure it has been the case for all of 514. I noticed something weird was going on long ago, but never got around to debugging it properly until just now.

Workarounds:
Don't use TILE_MOVER, I guess?
Lummox JR resolved issue with message:
Changing an appearance's internal bits (e.g. changing density, gender, etc.) could accidentally remove newer high-order flags like TILE_MOVER.