Suppress automatically printed room descriptions

Hi,

I’d like to be able to stop TADS from automatically outputting the room description. Especially at the beginning of the game, I have introductory text that establishes where the player is, so I really don’t want it to be followed up with the auto-output starting room description. I still want the room to have a description when the player types LOOK though.

I’ve tried setting the room name and description to nothing, which kind of works, but I’m not sure how to update them to have a value after the initial auto-output.

I’d also be interested in a way to globally disable auto-outputting room descriptions for each room you enter, since I’m thinking of using travel messages to introduce rooms, as in “You step into the library. The walls are lined with shelves…”

Thanks for your help!

You can redefine newGame() method on your gameMain object, which is by default:

[code] /*
* Begin a new game. This default implementation shows the
* introductory message, calls the main command loop, and finally
* shows the goodbye message.
*…
* You can override this routine if you want to customize the startup
* protocol. For example, if you want to create a pre-game options
* menu, you could override this routine to show the list of options
* and process the user’s input. If you need only to customize the
* introduction and goodbye messages, you can simply override
* showIntro() and showGoodbye() instead…
/
newGame()
{
/
.
* Show the statusline before we display our introductory. This
* will help minimize redrawing - if we waited until after
* displaying some text, we might have to redraw some of the
* screen to rearrange things for the new screen area taken up by
* the status line, which could be visible to the user. By
* setting up the status line first, we’ll probably have less to
* redraw because we won’t have anything on the screen yet when
* figuring the layout…
*/
statusLine.showStatusLine();

    /* show the introduction */
    showIntro();

    /* run the game, showing the initial location's full description */
    runGame(true);

    /* show the end-of-game message */
    showGoodbye();
}

[/code]

Your main change would be to call runGame(nil) instead of runGame(true).

If you want to suppress look around globally, you should probably look on and modify method describeArrival(origin, backConnector) of the Traveler class. Just look up these methods in reference guide and you will see how this works.

What happens if you set the game to start by default in Terse mode? Does that get the effect that you want?

One warning about that Terse mode, however. I just discovered that not only does “Terse” suppress the room descriptions, it also bypasses any code that you might have embedded in the desc. So, for example, before I discovered the very useful travelerArriving, I had some roomdescs that kicked off a special description for a room the first time you entered it after some important thing had happened. In Terse mode, not only does the roomdesc not appear, but the code that tracks whether the player has seen that description doesn’t fire off either.

tomasb, thanks so much for your help! Both of your suggestions work great. I’ll probably avoid terse mode for now, but that’s a good option to know about too.