the-infocom-files / infidel

Infidel
3 stars 3 forks source link

Putting objects in the recesses in the Burial Chamber is supposed to give them NDESCBIT #48

Open eriktorbjorn opened 5 years ago

eriktorbjorn commented 5 years ago

When you put an object in the large or small recess in the Burial Chamber, it's supposed to get NDESCBIT. This works for the book and the scarab:

>LOOK
Burial Chamber
You have entered the Chamber of Departure Towards the Funeral Destinies, the
Burial Chamber. There is a doorway leading into a small room off to the east. In
the middle of the chamber, stretching almost from wall to wall, is a huge,
ancient sarcophagus. Its cover is composed of pure quartz and through the
shining light you can see the golden, gleaming mummiform coffin. There is a
small recess and a large recess on the top of the cover which you can make out
as thin, outlined areas. Four statues surround the sarcophagus, one in each
corner: Isis, Nephthys, Neith and Selkis. Their outstretched arms clamp down
tightly on the quartz cover.
Wedged under the top of the doorway, perpendicular to the floor, is the wooden
beam.

>PUT BOOK IN LARGE RECESS
The book now rests in the larger area on the cover of the sarcophagus.

>PUT SCARAB IN SMALL RECESS
Done.
You hear a clicking sound come from beneath all of the statues as you place the
scarab within the smaller outlined area on the cover.

>LOOK
Burial Chamber
You have entered the Chamber of Departure Towards the Funeral Destinies, the
Burial Chamber. There is a doorway leading into a small room off to the east. In
the middle of the chamber, stretching almost from wall to wall, is a huge,
ancient sarcophagus. Its cover is composed of pure quartz and through the
shining light you can see the golden, gleaming mummiform coffin. There is a
small recess and a large recess on the top of the cover which you can make out
as thin, outlined areas. Resting in the smaller recess is a scarab. Sitting in
the larger recess is the ancient book. Four statues surround the sarcophagus,
one in each corner: Isis, Nephthys, Neith and Selkis. Their outstretched arms
clamp down tightly on the quartz cover.
Wedged under the top of the doorway, perpendicular to the floor, is the wooden
beam.

But it doesn't work for arbitrary objects:

>PUT CANTEEN IN LARGE RECESS
Done.

>LOOK
Burial Chamber
You have entered the Chamber of Departure Towards the Funeral Destinies, the
Burial Chamber. There is a doorway leading into a small room off to the east. In
the middle of the chamber, stretching almost from wall to wall, is a huge,
ancient sarcophagus. Its cover is composed of pure quartz and through the
shining light you can see the golden, gleaming mummiform coffin. There is a
small recess and a large recess on the top of the cover which you can make out
as thin, outlined areas. Sitting in the larger recess is the canteen. Four
statues surround the sarcophagus, one in each corner: Isis, Nephthys, Neith and
Selkis. Their outstretched arms clamp down tightly on the quartz cover.
Wedged under the top of the doorway, perpendicular to the floor, is the wooden
beam.
Sitting on the larger recess is:
  A canteen

So now the canteen is mentioned both in the middle of the room's description, and at the end. That's not pretty.

This is how it's apparently intended to work:

SETBIT-FCN is the action routine for both recesses. If you manage to put anything inside, it sets NDESCBIT but returns false so that the action continues.

           (<AND <VERB? PUT PUT-ON>
             <PRSI? ,L-AREA ,S-AREA>>
        <FSET ,PRSO ,NDESCBIT>
        <RFALSE>)

RECESS-CONTFCN is CONTFCN for both recesses. When you take something out of them, the bit is cleared:

<ROUTINE RECESS-CONTFCN ()
     <COND (<AND <VERB? TAKE>
             <EQUAL? <LOC ,PRSO> ,S-AREA ,L-AREA>>
        <FCLEAR ,PRSO ,NDESCBIT>
        <RFALSE>)>>

So why doesn't it work? Well, it's probably because of this bit in V-PUT:

           (T
        <MOVE ,PRSO ,PRSI>
        <FSET ,PRSO ,TOUCHBIT>
        <COND (<AND <NOT <EQUAL? ,PRSI ,PUNCH-PANEL>>
                <FSET? ,PRSO ,NDESCBIT>>
               <FCLEAR ,PRSO ,NDESCBIT>)>
        <TELL "Done." CR>)>

So putting an object in another object will automatically clear its NDESCBIT unless the container is the PUNCH-PANEL.

Should there be a special case for the recesses as well? Can implicit taking mess things up here?

eriktorbjorn commented 5 years ago

The same thing also happens with the holes in the slab in the Annex. See DIAMOND-HOLE-FCN and D-HOLE-FCN.