How to connect rooms using non-corresponding directions?

I want to connect some tunnel-like rooms. Basically what I mean is this:

The Player is in Room A.
The Player goes goes east.
The Player ends up in Room B.
To get back to Room A, he does not travel west. Instead, he is supposed to go north.

How can I connect two rooms in such a way in Inform 7?

Sincerely,

~Qqwy

See Writing with Inform 3.3; you can do this just by writing:

 East of Room A is south of Room B.

Ah! I seem to completely have skipped over that section.
Thank you very much for your reply! :slight_smile:

~Qqwy

I am trying to recreate an older text game that uses a strange convention quite often. From the start point you can only enter some nearby bushes by typing “enter bushes”. Once you are in the bushes you can only exit by going east. The bushes are essentially west of the start point but they have the specific way you have to enter.

The same happens later when you go north to a room but have to return by coming down. Up doesn’t work to enter and South doesn’t work to exit.

Is there a way to make the player use different commands/directions to go back and forth between two rooms?

In another situation you have to jump a gate. Jumping the gate in Room A moves you to Room B and vice versa. I am not sure how to handle this as well. I am really trying to be accurate to the original so I want to be as accurate in movement as possible.

I am very new to Inform7 so any help is greatly appreciated.

Thanks

Here’s a quick scenario with some pointers to relevant sections of Writing With Inform (the built-in documentation).

"Other Ways to Get Around"

Place is a room. "Not much here except some bushes."

Some bushes are in Place. The bushes are fixed in place.

Instead of entering the bushes: [see WWI 7.2 Instead rules]
    move the player to In the Bushes. [see WWI 8.9 Moving the player]

There is a room called In the Bushes. [must use "There is a... called..." construction to declare the room because "in" will confuse the compiler otherwise.] "You are in the middle of some bushes."

Place is east of In the Bushes. Nowhere is west of Place. [see WWI 3.3 One-way connections]

Test me with "w / enter bushes / e". [see WWI 2.8 The TEST command]

For jumping over the bushes, you’ll need to create your own jumping over action, since jumping as provided by the Standard Rules is not a transitive verb. See WWI 12.7 New actions for an overview, and a similar pair of Instead rules (e.g. “Instead of jumping over the fence while in Alley…”) can be used to move the player from one room to the other.

Thanks. This gives me some good directions to explore.

If you’ve got a really tricky map, you may want to look up Trizbort for PC or web version trizbort.io.

Trizbort does many different things, but one is it allows you to create a map visually and then export Inform 7 code to set up the connections.

1 Like

I think I should be good. This example worked well and really helped me out. The original game uses this style setup of rooms a half dozen times. I didn’t encounter anything that more complicated. Thanks!

Okay I ran into a bit of a snag with another situation. The bushes work great and I can enter then and go East to exit them. The problem is the starting room has a Billboard in it. I can look at the billboard and get a description. When I go into the bushes they are also below the billboard but that object doesn’t exist in the bushes. I tried making it a scenery object allowing it to be seen in each room with a unique description and that works fine in the starting room but not the bushes. It says I can’t use the billboard description as a property of the bushes. I am stuck here. Any ideas?

If you can narrow your code down to the minimum length that still demonstrates the issue and post the code (inside a code tag, the button that looks like </> in the editing menu bar) someone can probably tell you what’s wrong.

But I’ve got to ask how much more complicated is the starting room/bushes situation? Depending on what you need, it might make sense to switch to the bushes as an enterable container in the Starting Place instead of its own room (or it might not… like I said, depends on the rest of what you’re after.)

Sure. Here is how I am setting up the backdrop:

A room has some text called a billboard description.

The billboard is a backdrop. The description of the billboard is usually "[billboard description of the location]". It is everywhere.

Grassy Field is a room. "You are standing in a grassy field. There is a billboard here and it is 
The billboard description of the Grassy Field is "A rusty old billboard stands before you."

Some Bushes are in Grassy Field. The bushes are fixed in place. The Bushes are undescribed.
The description of bushes is "The bushes look large enough to enter,  if you were to crouch."
The billboard description of the Bushes is "Looking up at the billboard you can see a sign that says this is the spot.".
Instead of entering the bushes:
	move the player to In the Bushes;
	say "You are in the bushes."
Grassy Field is east of In the Bushes. Nowhere is west of Grassy Field.

I can look at the billboard from the grassy field but if I add the line

The billboard description of the Bushes is "Looking up at the billboard you can see a sign that says this is the spot.".

It errors saying " the property billboard description for the bushes is not allowed to exist, because you haven’t said it is. What properties something can have depends on what kind of thing it is: see the Index for details."

I think what’s going on here is that you’ve said that rooms have a text property called “billboard description,” but then you’re trying to give that property to The/Some Bushes, which are an object, not a room. I think you want to attach it to In the Bushes, which is a room.

1 Like

I’m new too, so take this with a pinch of salt, but how about having two separate objects (billboard1 and billboard2 maybe) in each room, with the same printed name “billboard” but different descriptions?

If you’re sticking with the backdrop, you could state that it’s in the two rooms rather than “everywhere”. And maybe an “instead of examining” to get the two separate descriptions based on location.

Also there’s a note a note about “undescribed” in Writing with Inform 3.24.

DeusIrae is correct. The problem message indicates that billboard description (a property for rooms) can’t be applied to the bushes (the Bushes object in Grassy Field).

It may be desirable to set up a default billboard description for rooms, via:

The billboard description of a room is usually "<default text>".

That will prevent the possibility of >EXAMINE BILLBOARD resulting in no text being printed while the player is in a room for which no specific billboard description was defined. See WWI 4.8 New value properties for more.

1 Like

Sorry, I should have added that Mike was right. I just wondered about other means to achieve the same end :+1:

It’s actually a fairly common trick with scenery-type objects to model them as more or fewer objects than they appear to be to the player when it’s convenient to do so.

Just referencing In The Bushes worked perfectly! I didn’t realize that was the room name. I thought it was just Bushes. Thanks! I am still learning a lot every day!

1 Like

Yeah, I think this is one of those things where Inform’s natural-language approach can lull you into a false sense of security – it can be very finicky about how you identify things. It’s pretty common for it to be confused and accidentally create something new when you thought you were referring back to something you’d already created, too. One helpful tool for this is the Index section of the IDE – that shows you exactly what’s in your game, including the actual names of all the rooms, characters, and objects, which can be a helpful place to double-check that nothing weird is happening.

3 Likes

That helps a lot. I am used to scripting languages and programming. The natural-language is really neat but can be quite confusing for me.

Is there a quick way to describe a stairway that connects two rooms differently from each room?

For example in the first room if you look at the stairs it says “The stairs wind down into the darkness.”
In the bottom room if you look at the stairs it says “The stairs lead up into the light.”