the-infocom-files/hitchhiker

You can hitchhike even when the thumb is in a closed satchel

Opened this issue · 2 comments

>WHO AM I
You are Ford Prefect.

>INVENTORY
You have:
  a satchel

>HITCHHIKE
The Thumb winks and flashes for a second. Nothing further happens.

>EXAMINE THUMB
You can't see any thumb here!

The problem is in the assumption that V-HITCHHIKE does:

<ROUTINE V-HITCHHIKE ()
	 <PERFORM ,V?PUSH ,GREEN-BUTTON>
	 <RTRUE>>
<ROUTINE GREEN-BUTTON-F ()
	 <COND (<VERB? PUSH>
		<COND (<NOT <HELD? ,THUMB>>
		       <TELL ,NOT-HOLDING " the " D ,THUMB "." CR>
		       <SETG P-IT-OBJECT ,THUMB>)

The HELD? routine checks if the object is in the player, or in a container held by the player. It doesn't check if the container is open. Which usually isn't a problem, because you wouldn't be able to refer to the object if it wasn't visible.

So it should presumably be like this, though I haven't tested it:

<ROUTINE V-HITCHHIKE ()
	 <COND (<NOT <VISIBLE? ,THUMB>>
		<CANT-SEE ,THUMB>)
	       (T
		<PERFORM ,V?PUSH ,GREEN-BUTTON>
		<RTRUE>)>>

V-GET-DRESSED has the same problem, because it only checks if the gown is HELD?. Not if it's also ACCESSIBLE?.

>PUT GOWN IN TOOL BOX
Done.

>CLOSE TOOL BOX
Okay, the tool box is now closed.

>EXAMINE GOWN
You can't see any gown here!

>GET DRESSED
You are now wearing your gown.

V-BRUSH also has the same problem, for the same reason:

>PUT TOOTHBRUSH IN TOOL BOX
Done.

>CLOSE TOOL BOX
Okay, the tool box is now closed.

>EXAMINE TOOTHBRUSH
You can't see any toothbrush here!

>BRUSH TEETH
(with the toothbrush)
Congratulations on your fine dental hygiene.