Alright, I’m sure this has been asked three million times before and is somewhere very obvious in the Inform documentation, but I’ve spent a few hours not finding it, and then a few more designing crappy workarounds, so please bear with me:
How do I have characters in a room without having Inform “write a paragraph” abouch each and every one?
I have this scene in a bar, where there like five characters in the room. I don’t want them mentioned by Inform (“You can see waiter, a patron, another patron, a very shady guy in a corner, a happy patron, a covert cop, and yet another patron and his dog here.”) in separate paragraphs. Ideally I’d mentioned them in the room description and maybe let them have their own paragraphs later on, once the player has interacted with some of them and so they become more obviously relevant to the player.
So far I’ve been making do with having them be “scenery”, and then hack things like talking to scenery, etc. Problem is a) it feels hacky, b) it has stupid drawbacks, like Inform going “That’s not something animate” with certain actions, etc.
I’ve been trying to get “Rule for writing a paragraph about” do nothing, but I can’t seem to pull that one off. Ideas for making it work/alternative workarounds, pretty please?
First of all, I think someone can be a person and scenery (Bob is a man. Bob is scenery).
But there’s an alternate solution: if you enclose their name in brackets, it will count them as being mentioned:
“In the room, you see [Bob], [Alice], and [Joe]”. You can write rules that change their printed names depending on the circumstances, but if you use the name in brackets, it won’t list them later at all.
You can do this to suppress all automatic mentions of people in room descriptions.
Craig’s method is better though.
Also, Craig is right about scenery; it’s a property, not a kind, and you can give it to any kind of thing. And you can toggle it during play with “now X is scenery”, “now X is not scenery”.
I had no idea you could toggle it, that’s amazing!
Another way is to stick them all together (sort of like the end of INSIDE!) and detach them as necessary. (Parts of things are not specifically described in a description.)
[code]Tavern is a Room. “This is your favorite watering hole. Quiet conversations of patrons murmur over the jukebox.”
Some tavern patrons is scenery in Tavern. The description is “The bar is sparsely populated at this hour. [if a person is part of tavern patrons]You notice [a list of people incorporated by tavern patrons] enjoying the evening.[end if]”.
Understand “bar/pub/customers/regulars/people” as tavern patrons.
Norm is a man. He is part of tavern patrons.
Gertrude is a woman. She is part of tavern patrons.
Donald Trump is a man. He is part of tavern patrons.
Carry out examining a person who is part of tavern patrons:
now the noun is in the location.
Belatedly, thank you very much for the extensive explanations and examples, Mathbrush, jrb and Hanon. I had absolutely no idea a person could be scenery, let alone that you could toggle something being scenery or ceasing to be scenery. I could see that “I am reading ‘Donald is a man’ and ‘Donald is scenery’ as two different things but blah blah blah” error report in Inform even before the mere thought of it crossed my mind.
So many thanks! I’ve been able to implement it and have a much more interesting handling of NPCs: write “Rules for writing a paragraph” about them, be scenery at the beginning, and toggle their sceneryness when adequate to trigger those paragraph rules. All very neat and relatively fuss-free. I like a clean code, thanks a lot!