the-infocom-files / zork1

Zork I: The Great Underground Empire
11 stars 3 forks source link

The passage between WHITE-CLIFFS-NORTH and DAMP-CAVE is only narrow in one direction #31

Open eriktorbjorn opened 5 years ago

eriktorbjorn commented 5 years ago

This may be deliberate, and either way it's just a tiny detail, but consider this part of the map:

DAMP-CAVE --- WHITE-CLIFFS-NORTH
                       |
                       |
                       |
              WHITE-CLIFFS-SOUTH

The path from WHITE-CLIFFS-SOUTH is too narrow for the inflated boat:

      (NORTH TO WHITE-CLIFFS-NORTH
       IF DEFLATE ELSE "The path is too narrow.")

The paths from WHITE-CLIFFS-NORTH are too narrow for the inflated boat:

      (SOUTH TO WHITE-CLIFFS-SOUTH IF DEFLATE ELSE "The path is too narrow.")
      (WEST TO DAMP-CAVE IF DEFLATE ELSE "The path is too narrow.")

The path from DAMP-CAVE is not too narrow for the inflated boat:

      (EAST TO WHITE-CLIFFS-NORTH)

So from the Damp Cave, you can:

>INFLATE BOAT
(with the hand-held air pump)
The boat inflates and appears seaworthy.
A tan label is lying inside the boat.

>GET BOAT
Taken.

>EAST
White Cliffs Beach
You are on a narrow strip of beach which runs along the base of the White
Cliffs. There is a narrow path heading south along the Cliffs and a tight
passage leading west into the cliffs themselves.

>WEST
The path is too narrow.

In the mainframe version of Zork, it appears that the White Cliffs Beach was cut off from the rest of the game, presumably only reachable by boat. If I read it correctly:

<ROOM "WCLF1"
"You are on a narrow strip of beach which runs along the base of the
White Cliffs. The only path here is a narrow one, heading south
along the Cliffs."
       "White Cliffs Beach"
       <EXIT "SOUTH" <CEXIT "DEFLATE" "WCLF2" ,NARROW> "LAUNC" "RIVR3">
       (<GET-OBJ "WCLIF">) CLIFF-FUNCTION <+ ,RLANDBIT ,RSACREDBIT ,RNWALLBIT>
       (RGLOBAL ,RGWATER)>

<ROOM "WCLF2"
"You are on a rocky, narrow strip of beach beside the Cliffs.  A
narrow path leads north along the shore."
       "White Cliffs Beach"
       <EXIT "NORTH" <CEXIT "DEFLATE" "WCLF1" ,NARROW> "LAUNC" "RIVR4">
       (<GET-OBJ "WCLIF">) CLIFF-FUNCTION <+ ,RNWALLBIT ,RLANDBIT ,RSACREDBIT>
       (RGLOBAL ,RGWATER)>
eriktorbjorn commented 5 years ago

The DEFLATE flag is set by WHITE-CLIFFS-FUNCTION:

<ROUTINE WHITE-CLIFFS-FUNCTION (RARG)
         <COND (<EQUAL? .RARG ,M-END>
                <COND (<IN? ,INFLATED-BOAT ,WINNER>
                       <SETG DEFLATE <>>)
                      (T
                       <SETG DEFLATE T>)>)>>

Which is the action routine for both of the White Cliffs rooms.

It's also set when inflating/deflating the boat, which I'm not sure if it's really necessary. (I wasn't able to trigger any bug by inflating the boat - on the ground - and then immediately try to walk a narrow passage, so I guess it does no harm either.)

I guess you could change DAMP-CAVE to:

<ROOM DAMP-CAVE
      (IN ROOMS)
      (LDESC
"This cave has exits to the west and east, and narrows to a crack toward
the south. The earth is particularly damp here.")
      (DESC "Damp Cave")
      (WEST TO LOUD-ROOM)
      (EAST TO WHITE-CLIFFS-NORTH IF DEFLATE ELSE "The path is too narrow.")
      (SOUTH "It is too narrow for most insects.")
      (FLAGS RLANDBIT)
      (ACTION WHITE-CLIFFS-FUNCTION)
      (GLOBAL CRACK)>

Since it didn't already have an action routine of its own. The "The path is too narrow." message is stupidly vague, if you ask me, but I guess it should remain unchanged.