Describing a container within an object

Hey, I7 newbie here looking for some advice - sorry if this is the wrong subforum!

I’m writing a test story to get my head around how Inform7 works. Here is the source:

[code]“The Red Room”

The Red Room is a room. It is south of The Garden. The description is “[if The Red Room has not been visited]You wake up in a small room. The room has four walls, all of which are painted a distinctive shade of red.[otherwise]The room has four walls, all of which are painted a distinctive shade of red.[end if]”

The steel door is north of The Red Room.
The steel door is a door.
The steel door is lockable and locked.
The silver key unlocks the steel door.

The wooden door is west of The Red Room.
The wooden door is a door.
The wooden door is lockable and locked.
The red key unlocks the wooden door.

The wooden table is here. “The wooden table looks strong, and has a drawer.”
On the wooden table is a silver key.
A drawer is an openable closed container. The drawer is part of the wooden table. The drawer is closed. In the drawer is a red key.

The Garden is north of the steel door. “A flourishing garden, filled with flowers and carpeted with green grass.”[/code]

My question is this: when I run my project the description of the drawer (as part of the desk) is only there as part of entering the room. When I try >look at table, it returns this:

>look at table On the wooden table is a silver key

How do I make it so when the table is looked at, the game also lets the player know the table has a drawer?

I’ve tried the following extensions:

Include Automated Drawers by Emily Short.
Include Assorted Text Generation by Emily Short.
Include Plurality by Emily Short.

But I believe Plurality has some form of bug in it.

Is this function available in vanilla I7? Am I being a complete moron? It seems odd that default description of an object does not include parts of that object.

Regards,

Reasoner

If you put a string in quotation marks after defining an object the string will be interpreted as the “initial appearance” property–that’s what gets printed as part of the room description (unless the object has been picked up or moved)–rather than the “description” property, which is what gets printed in response to examining. So if you want that to be printed in response to examining, you should write:

The wooden table is here. The description of the wooden table is "The wooden table looks strong, and has a drawer."

The Standard Rules will then automatically print the line about the key being on the table. (There are a few different reasons one might not want to have the Standard Rules automatically describe the parts of things; it’s more likely, perhaps, that the author will want to customize the descriptions of parts or have parts not be automatically visible than with what’s on the supporter.)

Plurality has been superseded in the latest version of Inform, I’m pretty sure.

ETA: Also, I don’t think you want the line declaring the Red Room to be south of the Garden; that will let the player go from the Garden south to the Red Room without going through the door.

Thanks, this answered my question! And cheers for the spot on the Garden bug, aha.

Also, one thing you might find useful:

The description of the Red Room is "[first time]You wake up in a small room. [only]The room has four walls, all of which are painted a distinctive shade of red."

The [first time]…[only] construction makes it a lot easier to have text which changes after the first viewing.

Thankyou. That looks a hell of a lot neater than my if statements.