Getting rid of unwanted containment messages

I’m currently creating a small game in which the player is a magician, but I’ve run into a small problem early into producing it. Here’s some of the source text:

[code]The Stage is a room. “The stagelights are bright in your eyes, and you hear your thousands of adoring fans cheering for you, Alfonso the Amazing.”.

Your fans are in The Stage. Your fans are scenery. The description of your fans is “Thousands of adoring fans cheer you on to perform your magic act.”. Your fans are fixed in place.

The table is in The Stage. The initial appearance of the table is “A table stands in the middle of the stage.”. The table is fixed in place.

A magic hat is on the table. The initial appearance of the hat is “A wide-brimmed, black top hat is on the table.”. The hat is fixed in place. The hat is an open not openable container.

A magic wand is carried by the player. The description is “A slender and sleek black instrument that exemplifies the stereotypical look of a magician’s wand”.[/code]

This produces:

I want to get rid of the message with the magic hat being empty, and instead insert my own initial appearance message for it, the one mentioned in the Source text. What can I do?

Chapter 17.15 of the documentation should have you covered.

That’s part of the solution, but it looks like there’s another complication in the fact that the hat is on a supporter. By default, Inform does not print initial appearances of things that are on supporters.

There is a solution for changing the behavior of containers and supporters, but it’s wordy, and as far as I know there’s no extension that quite does it (although you might look into Room Description Control.)

However, in your case, since the hat is fixed in place, it seems like the simple solution would be this:

[code]The table is in The Stage. “A table stands in the middle of the stage.[paragraph break]A wide-brimmed, black top hat is on the table.”. The table is fixed in place.

A magic hat is scenery on the table. The hat is an open not openable container.[/code]

Inform will not print what is on supporters, if it knows that those things have already been mentioned.

Try this:

The table is in The Stage. The initial appearance of the table is "A table stands in the middle of the stage. A wide-brimmed, black top [hat] is on the table.". The table is fixed in place.

That will print “black top magic hat” rather than just “hat”, because “magic hat” is the full name of the hat. You can fix that by renaming the magic hat (calling it “hat” merely) or by giving it the printed name “hat”.

Thank you all for your input! I ended up using Capmikee’s method:

I’m dealing with a similar situation. I successfully suppressed the “(empty)” message with this statement:

For printing room description details of a foo-container: stop.

But I can’t seem to suppress the “(in which is…)” message when it contains something. Is that a different activity, or is there a high-precedence rule that I’m not catching soon enough?

This is covered in some detail in this thread:

–Erik

That’s super confusing!

I’m going to have to take some time to read this in detail - I haven’t been able to come up with a working solution just by skimming that thread.

Yes, that’s the upshot of the thread–the way contents listing is handled is not really intuitive, and definitely not as simple as it seems at first glance!