Started my First Adventure

I have several room with doors and descriptions. Objects and supports, people etc. I have one room that will have a series of statues (lifelike) in each an outstretched hand with a scroll that contains various bits of text. I am having a heck of time creating the statues so that when someone is looking in the room they see the statues and also see and can read the scrolls that each of the statues are holding. Ultimately I was trying for something like this

Room of Law

Description blah blah blah

20 statues lines the perimeter of the room each one holding an unfurled scroll as if they are intently studying it.


ok when the player examine each statue lets say statue 1, it come s to life and turn the scroll toward the player and reads its contents

I have it working as a mere description upon examining but i was wondering if there is a cooler way and also if there is a way not to say in the room is statue 1, statue 2 every time so it looks cleaner

I tried something like this so that the statue was holding a book instead - I was thinking they could examine the book and get the description and then read the book and get the contents - i am obviously missing something as it wont compile:

Part - The Constitution Room

The Constitution Room is south of the court room entrance. The description is “The room is filled with statues in various poses around the room. Each statue is holding an ornate leather book.”

Article 1 Statue is in the constitution room. The description is “A Statue holding a great book. As you stare, it seems to come to life and turns the Book towards you - It booms - ARTICLE 1 OF THE US CONSTITUTION!”

The Article 1 Tome is a thing on the Article 1 Statue. The description of the Article 1 Tome is “A leather book.” The printing of The Article 1 Tome is “Senate and Congress.”

ugh figured it out i put this up front

A thing has some text called printing. The printing of a thing is usually “blank”.
Understand the command “read” as something new. Understand “read [something]” as reading. Reading is an action applying to one thing, requiring light. Check reading: if the printing of the noun is “blank”, say “Nothing is written on [the noun].” instead. Carry out reading: say “You read: [printing of the noun][line break]”. Report reading: do nothing.

You can also use the empty text ("") rather than “blank” for nothing. Also, the report rule is unnecessary.

[code]A thing has some text called the printing.

Understand the command “read” as something new.

Reading is an action applying to one thing and requiring light. Understand “read [something]” as reading.

Check reading: if the printing of the noun is empty, say “Nothing is written on [the noun].” instead.

Carry out reading: say “You read: [printing of the noun][line break]”.[/code]

Hope this helps.

I am by no means an expert at authoring interactive fiction, or about anything for that matter, but…

Unless it is the key to what may be a particularly tedious puzzle, I am not entirely sure I’d go about exactly that way. No offense intended at all, just that when I end up somewhere with a whole pile of the same thing in a room, my mind screams “Aaa, a guess the object or disambiguation nightmare!” I think your idea is neat, and the idea of a part of a game that makes people more savvy on the nature and meaning of the constitution and bill of rights excites me a bit.

Maybe something like (untested code that may not even compile):

[Assuming the description of "20 statues" is in the room description... ]
The statues are in the room.  They are scenery.  They have description "Each statue is holding a scroll with a number affixed to it, from one to twenty, except with a more carefully written description than this."  Understand "statue" as the statues.
The scrolls are in the room.  They are scenery.  Understand "scroll" as the scrolls. [ I don't /think/ this will break the disambiguation rules for "scroll one" etc... ]
Instead of examining the scrolls, say "I am sorry, but it is not clear to me which scroll you want to examine.  Please refer to the scrolls as 'scroll one' through 'scroll twenty'."
Understand "read [something]" as examining.

Scroll One is in the room.  It is scenery.  It has description "This is what the first scroll says!"  Understand "scroll 1", "article one", "article 1" as scroll one. [assuming that final sentence will compile with the numeric parts; I've never tried that]
[etc etc]

Something like this may avoid some guess-the-verb/noun and disambiguation hell. ie, I would expect “examine scroll one”, “read scroll one”, “read article one”, etc all to tell me what the scroll says.

Even if having 20 nearly identical statues is the key to a particularly tedious puzzle (like maybe you have to push them into the correct order or something), I think I’d still implement all the “statues” as one “thing”, with some kind of ordering list property on it. I feel like that would probably make for a much more concise and cleaner implementation. Might require some parser hooking magic that I don’t know how to do off the top of my head, though.

My angle here is, I think you have to consider how the player “thinks about” objects, rather than an actual, literal model of the world. When confronted by a group of identical objects, I think a player thinks about them as a singular concept.

Edit: Oh my! I seem to have necro-posted. :stuck_out_tongue:

Upon proofreading my post, it occurs to me that this might make for some odd responses when I try to “read the fishing pole”, etc. Perhaps your idea of implementing a separate “read” action is better, and something like

Instead of reading something (called the foo) in the room during the scene, try examining the foo.

might be better. Then you can still have a default response when trying to “read the fishing pole”, unless they happen to try it in that very room during that very scene, which is probably unlikely. Just trying to figure out how to not duplicate a bunch of the same code, to avoid an unfun copy-paste nightmare fixing bugs.

I am loathe to implement more actions unless I have to, though. The combinatorial explosion happens with actions, too, not just the huge pile of stuff you amass in the middle-game. I remember once implementing a “fasten” action in Inform, a version of “tie” for attaching an object to itself (for things like seat belts and the like). It was only useful in one small part of the game, but the combinatorial explosion rippled through the whole game. Players started trying to “fasten the portfolio” to close it, “fasten the rope to the post” to tie it (which was easier to fix), etc, and I was sad and unhappy, like in that Beck song. :stuck_out_tongue:

Funnily enough, that exact line already appears in the Standard rules.

That’s because, in most cases, this isn’t a problem worth worrying about, or even a problem at all, per se. Rare is a person who discovers an overly accommodating parsing, and rarer still is the person who would complain about it. Generally, making the parser more forgiving is not going to bother anyone.

You could just use the description here instead of creating a new rule, like so.

The description of the scrolls is "I am sorry, but it is not clear to me which scroll you want to examine.  Please refer to the scrolls as 'scroll one' through 'scroll twenty'.".

Hope this helps.