trinity
trinity copied to clipboard
Impossible case in LANDS-AT-YOUR-FEET (by design?)
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:
- You need the silver coin to get here, and to get that you need the spade from Nagasaki, and to return from Nagasaki you need to give up the paper crane.
- You won't have
BAG("bag of crumbs") orEBAG("paper bag") here, you will haveSOGGY("soggy bag").
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...?
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.)