the-infocom-files / trinity

Trinity
23 stars 5 forks source link

Impossible case in LANDS-AT-YOUR-FEET (by design?) #65

Open eriktorbjorn opened 4 years ago

eriktorbjorn commented 4 years ago

Of course, while testing a game like this you're likely to come across all sorts of impossible cases, but this one is a bit more elaborate than most, I think. The LANDS-AT-YOUR-FEET routine is called to handle when you drop objects (accidentally or not) to see what happens to them. There is a special case for IN-CIST ("Reservoir"):

           (<HERE? IN-CIST>
        <COND (<OR <EQUAL? .OBJ ,CRANE ,OCRANE ,BAD-CRANE>
               <EQUAL? .OBJ ,BAG>
               <AND <EQUAL? .OBJ ,EBAG>
                <NOT <FIRST? ,EBAG>>>>
               <MOVE .OBJ ,HERE>
               <TELL "floats quietly on the water." CR>
               <RTRUE>)

None of these special cases can actually happen:

I think it would be reasonable for SOGGY to float, though if you fall from the mill or put the bag in the reservoir, the soggy bag will end up at the bottom. So maybe it isn't a bug after all...?

eriktorbjorn commented 4 years ago

Similarly, it checks for BAG and EBAG when under water, but not SOGGY:

           (<HERE? UNDER-WATER>
        <MOVE .OBJ ,HERE>
        <COND (<OR <EQUAL? .OBJ ,CRANE ,OCRANE ,BAD-CRANE>
               <EQUAL? .OBJ ,CREDIT-CARD ,BAG ,EBAG>>
               <TELL "slowly ">)>
        <TELL "sink">
        <COND (<NOT <IS? .OBJ ,PLURAL>>
               <TELL "s">)>
        <TELL " to the bottom." CR>
        <RTRUE>)

Here I think it would be perfectly reasonable to add SOGGY. (Again, there is no way to bring the crane here.)