trinity icon indicating copy to clipboard operation
trinity copied to clipboard

You can get rid of your hands

Open eriktorbjorn opened this issue 5 years ago • 5 comments

Some objects contain code like this:

                <COND (<INTBL? ,PRSA ,PUTVERBS ,NUMPUTS>
                       <PRSO-SLIDES-OFF-PRSI>
                       <RTRUE>)>

Where PRSO-SLIDES-OFF-PRSI prints a message about how the object slides off the other object, and falls to the ground. (There is a surprising amount of details in the implementation of this, so I'm not going to paste the whole thing here.)

These are the PUTVERBS:

<GLOBAL PUTVERBS:TABLE
	<PTABLE V?PUT V?PUT-ON V?PUT-UNDER V?PUT-BEHIND V?THROW
		V?THROW-OVER V?EMPTY-INTO>>

Of these, PUT-UNDER and PUT-BEHIND do not have pre-actions to prevent them from being used on objects you can't drop. So...

>PUT HANDS UNDER WATCH
The your hand slides off the wristwatch and lands at your feet.

I think we can ignore the grammatical errors and focus on the main thing, i.e. that you no longer have any hands...

There are several objects you can use to trigger this bug. A quick search suggests:

  • WRISTWATCH
  • BPRAM (the broken pram)
  • HEAP (the glowing log after you've broken it)
  • PAGES (the pages of the book in the cottage)

I don't know if pre-actions is the way to go, or if it should be fixed in PRSO-SLIDES-OFF-PRSI.

eriktorbjorn avatar Jul 07 '20 18:07 eriktorbjorn

Another way of getting rid of your hands can be seen in https://github.com/the-infocom-files/trinity/issues/11

>EMPTY HANDS INTO POND
The your hand disappears in the dark water.

eriktorbjorn avatar Jul 09 '20 08:07 eriktorbjorn

It's not just where it checks PUTVERBS. I just noticed that JEEP-F explicitly handles the EMPTY-INTO action:

>EMPTY HANDS INTO JEEP
You drop your hand into the jeep.
		<COND (<VERB? PUT PUT-ON EMPTY-INTO>
		       <COND (<ZERO? .IN>
			      <MOVE ,PRSO ,IN-JEEP>
			      <SETG P-IT-OBJECT ,NOT-HERE-OBJECT>
			      <TELL "You drop " THEO
				    " into the jeep." CR>
			      <RTRUE>)>
		       <PERFORM ,V?DROP ,PRSO>
		       <RTRUE>)>

eriktorbjorn avatar Jul 10 '20 14:07 eriktorbjorn

Here is a list of all objects I've been able to find so far. I've verified that all of these commands cause bad things to happen. Where possibly I've used your hands as the test case, but that's not the only bad case.

Object Example
ANKLE-F WRAP HANDS AROUND ANKLE
BPRAM-F PUT HANDS UNDER BROKEN PRAM
CHARON-F SHOW POCKET TO CHARON
CHASM-F PUT HANDS UNDER CHASM
CRATER-F PUT HANDS UNDER CRATER
GRASS-F PUT HANDS UNDER GRASS
HANDLE-MOUNTAIN-WATER? PUT HANDS UNDER WATERFALL
HANDLE-SOAPY-WATER? PUT ME UNDER WATER
HANDLE-WATER? PUT HANDS UNDER POND
HEAP-F PUT HANDS UNDER HEAP
HEDGE-F PUT HANDS BEHIND HEDGE
JEEP-F EMPTY HANDS INTO JEEP
LAGOON-F PUT HANDS UNDER LAGOON
MEEP-F ROADRUNNER, PUT HANDS UNDER ME
PAGES-F PUT HANDS UNDER PAGES
PIPES-F EMPTY ME INTO PIPES
SLOPE-F PUT HANDS UNDER SLOPE
STYX-F PUT HANDS UNDER RIVER
SWALL-F PUT HANDS BEHIND STONE WALL
TREE-F PUT HANDS UNDER TREE
TSEA-F PUT HANDS UNDER OCEAN
WIGHT-F HIT WIGHT WITH ME
WRISTWATCH-F PUT HANDS UNDER WRISTWATCH

HANDLE-SOAPY-WATER? and WIGHT-F make exceptions for HANDS and FEET. PIPES-Fchecks the object's size. They still allow you to get rid of objects you shouldn't be able to.

eriktorbjorn avatar Jul 12 '20 08:07 eriktorbjorn

All of these cases have to be checked against objects you shouldn't be able to get rid of. Your hands, your feet, your pocket, yourself, ...

eriktorbjorn avatar Sep 14 '20 07:09 eriktorbjorn

At least some of these cases won't check if the object is singular or plural, but I don't think there are any plural objects that you should be able to get rid of like this.

eriktorbjorn avatar Sep 19 '20 07:09 eriktorbjorn