Different movement schemas in different areas of the map?

I have a WIP for a private project (sadly, it won’t be releasable by me, even if it goes past the proof-of-concept stage) that’s basically at the “foo is a room” stage, for a list of rooms.

I know that I can group rooms together into regions; I’m pretty sure I saw the how-to for that in Aaron Reed’s book.

I’m going to end up with several regions. Call them

Outdoors
Admin-Building
Aboard-Ship
Service-Building

(and there may be others, but these are definite).

Now, Outdoors, I want to use only the standard NSEW direction schema.

Aboard-Ship, I want to use only Fore/Forward, Port, Starboard, Aft

In the two buildings, I want to allow the user to use NSEW or, after they’ve read the directory (or otherwise identified the offices in the building), the names of the various offices in the building. If the user uses the latter, it circumvents all of the navigation (NSEWUD) to the location, and places them in the location.

Thus, two questions:

  1. What extensions, if any, do I need to implement these navigation schemas?
  2. How do I compel the use of a particular schema in a particular region?

You don’t need an extension. Check out Example 40, “Fore,” for your nautical vs. compass directions code.

As for the directory stuff, Example 296, “Safari Guide,” deals with an “auto-go” command that allows the player to travel to rooms by name. You’ll just need to set an additional condition about the player having viewed the directory.

Edit: the “Safari Guide” example uses Emily Short’s Locksmith extension to facilitate door-opening, so my “you don’t need an extension” is technically inaccurate. If you don’t use doors, though, you probably wouldn’t need it.