I like the annotations, but is there an easier way to find them than to scroll through all of the source code?
I did notice two things about the Zork I annotations. The comment about the troll (1actions.zil, line 707) says that “we have no version of (MIT) Zork that early in development”. Is that still true? mdlzork/zork_285 at master · heasm66/mdlzork · GitHub suggests that it may have been at least partially recovered.
The comment for ROB-MAZE talks about how the thief will taunt you when he picks up things while you’re both in the maze. I remember reading about that in what may have been the first article I ever read about Zork, back in the eighties in a Swedish computer magazine.
So you can imagine I was slightly disappointed when I finally played Zork I, and I never saw it. Ever. And it turns out there was a reason for that. The thief only robs rooms that haven’t been visited. It would be very unfair otherwise. This is what I-THIEF says:
<COND (<FSET? .RM ,TOUCHBIT> ;"Hack the adventurer's belongings"
<ROB .RM ,THIEF 75>
<SET FLG
<COND (<AND <FSET? .RM ,MAZEBIT>
<FSET? ,HERE ,MAZEBIT>>
<ROB-MAZE .RM>)
(T <STEAL-JUNK .RM>)>>)>)>
But DESCRIBE-ROOM marks all maze rooms as non-visited, probably so that brief mode won’t do you any good to figure out where you’ve already been:
%<COND (<==? ,ZORK-NUMBER 1>
'<COND (<FSET? ,HERE ,MAZEBIT>
<FCLEAR ,HERE ,TOUCHBIT>)>)
(T
'<NULL-F>)>
I was looking at that the other day, thinking “why didn’t they just set V? to true instead. And it turns out that’s exactly what the Solid Gold version does.
Another oddity in Zork I is that if you enter the Dome Room as a ghost, it manually moves you to TORCH-ROOM and sets HERE. I’m guessing that when it was written they didn’t use GOTO because that would have printed the room description twice, or sometehing, but that no longer happens. In fact, you don’t get any room description when you enter:
>EAST
As you enter the dome you feel a strong pull as if from a wind drawing you over
the railing and down.
>
(I’ll probably have Zork II notes later.
)