Would anyone mind telling me what I’ve done wrong here? Code is short and self-explanatory. Result is below it.
The Clearing is a room.
A color is a kind of value.
The colors are red, orange, yellow, green, blue, purple, black, white, gray.
A feather is a kind of thing.
A feather has a color.
Understand the color property as describing a feather.
Rule for printing the name of a feather:
say "[color of the noun] feather".
There is a blue feather in the clearing.
Result:
Clearing
You can see a <illegal color> feather here.
You need to use [color of the item described] instead. It’s not the noun unless the player is referring to it in a command, which isn’t the case there.
‘noun’ is a variable set to an object associated with an action in progress, so is not a valid value while printing the name of something as part of a room description, as here. When printing descriptions of objects, the variable ‘the item described’ is always set to the object in question:
Rule for printing the name of a feather:
say "[color of the item described] feather".
Although if you’re printing the value of a property, you can just give the name of the property and Inform assumes it applies to ‘the item described’ if it has such a property. So this works too:
Rule for printing the name of a feather:
say "[color] feather".