the-infocom-files / moonmist

Moonmist
4 stars 3 forks source link

Jack's night table is incorrectly described as containing Deirdre's necklace #22

Open eriktorbjorn opened 3 years ago

eriktorbjorn commented 3 years ago
>EXAMINE NIGHT TABLE
Inside a drawer of the tallboy is Deirdre's necklace.

>GET NECKLACE
You are now holding Deirdre's necklace.

>EXAMINE NIGHT TABLE
You don't find anything new there.

>DROP NECKLACE
Okay, it is now on the floor.

>EXAMINE NIGHT TABLE
Inside a drawer of the tallboy is Deirdre's necklace.

That's because the necklace isn't actually in the night table, it's in the room, but has NDESCBIT to hide it. (Note: Only in the red variant.) But NIGHTSTAND-LG-F only checks where the necklace is:

<ROUTINE NIGHTSTAND-LG-F ()
 <COND (<AND <EQUAL? ,HERE ,JACK-ROOM>
         <VERB? EXAMINE LOOK-INSIDE OPEN SEARCH SEARCH-FOR>>
    <COND (<IN? ,NECKLACE-OF-D ,JACK-ROOM>
           <DISCOVER ,NECKLACE-OF-D>)
          (T <TELL ,NOTHING-NEW> <RTRUE>)>)

It should presumably check <AND <IN? ,NECKLACE-OF-D ,JACK-ROOM> <FSET? ,NECKLACE-OF-D ,NDESCBIT>> instead, or something like that.

eriktorbjorn commented 3 years ago

Also, you're supposed to be able to put the necklace back. Again, from NIGHSTAND-LG-F:

       (<AND <EQUAL? ,HERE ,JACK-ROOM>
         <VERB? PUT-IN>
         <DOBJ? NECKLACE-OF-D>>
    <MOVE ,NECKLACE-OF-D ,JACK-ROOM>
    <FSET ,NECKLACE-OF-D ,NDESCBIT>
    <OKAY>)

But that doesn't seem to work:

>PUT NECKLACE IN NIGHT TABLE
You search for an opening in the night table but find none.

That's probably because NIGHTSTAND-LG doesn't have CONTBIT, though I haven't checked if adding that makes any difference. It may need OPENBIT as well. (It's presumable PRE-PUT-IN that puts a stop to the action.)

Note that local global containers are usually a bad idea, though, since that makes the contents seem to magically teleport between rooms. (I think there may be other problems as well, since at least in The Witness I seem to recall it not being possible to take objects from a local global container.) So you'd have to make sure that the necklace is the only thing that could be put in it, and only from JACK-ROOM.