ID:2941384
 
Resolved
The mutable_appearance type, which is defined under /image as a mere convenience, didn't properly reflect the vars available to it that are available to objs but not images (e.g., vis_flags). The compiler now recognizes mutable_appearance as a more distinct type, and not only handles non-image vars properly but also correctly complains about vars that mutable appearances shouldn't have (e.g. loc, x/y/z, contents) as well as procs like Cross() which are nonsensical to call.
BYOND Version:515
Operating System:Windows 10 Home 64-bit
Web Browser:Chrome 127.0.0.0
Applies to:Dream Maker
Status: Resolved (515.1643)

This issue has been resolved.
Descriptive Problem Summary:

mutable_appearance var vis_flags can't be accessed or modified with the error undefined var unless you access it with .vars["vis_flags"]

Numbered Steps to Reproduce Problem:
1. Try to access the vis_flags of an appearance
2. Fail building

Code Snippet (if applicable) to Reproduce Problem:
var/mutable_appearance/appearance = new()
appearance.vis_flags = VIS_INHERIT_ICON_STATE


Expected Results:
It compiles!

Actual Results:
appearance.vis_flags: undefined var


Does the problem occur:
Every time? Or how often? Every time
In other games? All
In other user accounts? All
On other computers? All

When does the problem NOT occur? Accessing by vars["vis_flags"]

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:
Accessing by vars["vis_flags"]

Discord conversation: https://discord.com/channels/725444629172060262/ 725458744711839873/1274953300889833586
Lummox JR resolved issue with message:
The mutable_appearance type, which is defined under /image as a mere convenience, didn't properly reflect the vars available to it that are available to objs but not images (e.g., vis_flags). The compiler now recognizes mutable_appearance as a more distinct type, and not only handles non-image vars properly but also correctly complains about vars that mutable appearances shouldn't have (e.g. loc, x/y/z, contents) as well as procs like Cross() which are nonsensical to call.