Something went wrong - Inform 7

My project is coming along nicely but suddenly something went wrong and I have no idea why this happened.

I was testing it and it ran fine, everything was working.

Then when I run it again, all I get on the story screen is:

An Interactive Fiction by Willie J Botes
Release 1 / Serial number 220810 / Inform 7 build 6M62 (I6/v6.33 lib 6/12N) SD

>

nothing else.
What went wrong or what did I do wrong?

It’s weird there’s not even a room name appearing, though that could be a clue. I see the prompt; so I’m assuming you could type stuff there? As in, the input hasn’t actually frozen? Also, have you checked the basics – quit and restart Inform, recompile, etc.

When something like this happens, you need to backtrack over the changes made since you last compiled. Have you added any extensions?

Because there’s no room displayed, my guess would be some line you’ve added that might try to move the player or place them off-stage or something. If one of those lines is doing that when the game boots, the player could start in a void instead of in the first room you created, and the result could be like what you see.

Make sure the line defining where the player starts the game is intact. Or if you don’t have one, add one. e.g.

The player is in (name of first room).

You can also experiment with putting this line first in the source or last – or if not last, at least after the room you name has been created in your source.

-Wade

Try adding this:

To trace rules: (- RulesAllSub(); -).
when play begins: trace rules.

and with any luck we can at least find out what rules are and aren’t running.

Thanks everyone.

I found the problem.

It is these two lines that is wrong but I do not know how to fix them, any ideas?

Instead of looking: now the description of the bus ticket is "You see the number 8659 written on the back of the bus ticket.".

Oh, yeah, that’s pe-empting the entire looking action (which is the action used to print the description and contents of a location) so that would do it!

What’s that rule meant to do? It seems like it’s meant to change the description of the ticket under some circumstances (though note it doesn’t actually output that changed description) but I’m not sure what the trigger for the description change is meant to be.

I knew something was wrong but just didn’t know what.

What I tried to do was to avoid this when looking at the bus ticket:

>look at bus ticket
You see nothing special about the bus ticket.

Is there a way to use the looking rule to change this?

Ah, okay - so that action is actually examining, not looking (looking applies to nothing, examining applies to one thing - typically the player will type EXAMINE TICKET or X TICKET). Inform provides a bunch of convenient synonyms as part of the standard rules, which is nice for the player but means you can’t assume that what the player types will be the internal name Inform uses for an action. If you ever need to check, you can type ACTIONS and then it will show you how it’s parsing your command after everything you type.

Anyway what the examining action does is just say the description property of an item. So you don’t actually need a new rule here, you just need to set that property:

The description of the ticket is “You see the number 8659 written on the back of the ticket.”
1 Like

Thanks, so what happens when I type look at bus ticket?

You get the output below.

>look at bus ticket
You see nothing special about the bus ticket.

will examine counter this look command, if not how can you block the user from using “look at” and avoid that default answer?

LOOK reprints the room description. And Inform does that automatically every time you move; that’s how the player sees where they are. Your changing how LOOK works broke that mechanism, resulting in you seeing no room or anything. So like Mike said, work with EXAMINE. You should remove any non-essential modifications to LOOK you’ve created, like the looking rule you wrote for the bus ticket.

Edit: Typing LOOK (something) or LOOK AT (something) is converted to EXAMINE behind the scenes. To see this in action, type ACTIONS (a debugging command), then enter some kind of look command. LOOK BUS TICKET. Inform will tell you what action it processed.

-Wade

3 Likes

Thanks

Remember, I7’s syntax is meant to be easy to read moreso than easy to write. The player gets the luxury of having a dozen different synonyms for every action, but the author doesn’t.

So while the player can type “get” or “take” or “pick up” etc, the author has to say “taking”, not any of the others. Likewise here; the action is always “examining”, even if the player can also invoke it via “look at”.

2 Likes

When you’re developing the game type ACTIONS ON as you play/test. That will show you which action is triggered when you type a command. This is really useful if you want to eg add an INSTEAD rule or similar.

2 Likes