Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Muddle 54 and Zork #1951

Merged
merged 9 commits into from
Sep 14, 2020
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ DOC = info _info_ sysdoc sysnet syshst kshack _teco_ emacs emacs1 c kcc \
kldcp libdoc lisp _mail_ midas quux scheme manual wp chess ms macdoc \
aplogo _temp_ pdp11 chsncp cbf rug bawden llogo eak clib teach pcnet \
combat pdl minits mits_s chaos hal -pics- imlac maint cent ksc klh \
digest prs decus bsg
digest prs decus bsg madman
BIN = sys sys1 sys2 emacs _teco_ lisp liblsp alan inquir sail comlap \
c decsys graphs draw datdrw fonts fonts1 fonts2 games macsym \
maint _www_ gt40 llogo bawden sysbin -pics- lmman r shrdlu imlac \
Expand Down
331 changes: 331 additions & 0 deletions doc/madman/madadv.help
Original file line number Diff line number Diff line change
@@ -0,0 +1,331 @@
ZORK User Information

I. Getting a ZORK

a. ITS: Say ZORK^K to DDT rather than :ZORK to get a zork.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any clue what the difference between ^K and a colon command would be? When I looked in DDT, I didn't see a difference.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you already have a ZORK job, ZORK^K will get rid of it before starting a new one. I guess they were worried about people accidentally running multiple copies.

b. 10X/20X: Invoke the local dungeon (usually ZORK.EXE)

II. Bugs, comments, suggestions...

Always welcome and encouraged. All mail should be sent to
ZORK@MIT-DMS. ZORK has a BUG command, in addition, which
may be used to report strange happenings. Its use is described
below. Please note that for 10X/20X systems, net mail to ZORK
will be acted on much more quickly than BUG command reports.

If, in making a bug report, you know what symptoms were exhibited
by the program, PLEASE, PLEASE!!!!! include them. It is at best
extremely irritating and at worst useless to receive a bug report
like 'mumble frotz' loses, or 'try saying \"mumble frotz\"'. With
such reports, we have no way of knowing the situation when your
'mumble frotz' lost, and no way of knowing if any bug we manage
to reproduce (if we do) is the same one you saw. In consequence,
everyone's time is wasted.

III. Typing to Zork.

A number of characters in Zork have special effects. These
include a number of line editing commands. The characters are:

<rubout> or <backspace>: delete the last character typed
<ctrl-W>: delete the last word typed
<ctrl-U> or <ctrl-X> or <ctrl-@>: delete the entire buffer
<ctrl-D>: redisplay the buffer
<ctrl-L>: redisplay the buffer. Sometimes this also clears the
screen.

<altmode/cr>: terminate commands
<ctrl-S>: flush long typeouts
<ctrl-G>: like the QUIT command (vide infra)
<semicolon>: Causes the remainder of the command line to be ignored.
This may be useful for annotating hard copies/scripts of games.

IV. Garbage Collection

Zork may occasionally type out a message 'GIN FREE STORAGE-
<long pause> GOUT TIME=10.92'. This indicates that a garbage
collection is occurring. We have attempted to prevent this, since it
may take a significant amount of real time on a loaded system; should
it ever occur, please send mail to ZORK@MIT-DMS describing the
circumstances -- how many moves have been made, whether a RESTORE has
been done, and so on. THIS IS NOT FATAL: after the GOUT message is
printed, you may continue playing.

V. User Commands

The following commands may prove useful for the playing of Zork.
They are not, however, game commands (i.e. they have no side effects
in the current game).

a. Verbosity

Verbose: The default: print long room descriptions on first
visit, 20% of the time thereafter.

Brief: Supresses printing of long room descriptions for rooms
which have been visited. Short object descriptions
are also used in such rooms.

Super(brief): Suppresses printing of all long descriptions, even
on the first visit. Short object descriptions are
always used.

Noobj: Suppresses printing of object descriptions in rooms
already visited. See the 'object' command.

Note that the maximally verbose description (that printed on the
first visit to a room in verbose mode) may always be obtained by
saying 'look'. See also the 'room' and 'object' commands.

b. Help

Info: Prints a file which might give some idea of
what the game is about.

Help: Prints a short summary of useful commands.

Doc: Prints this.

c. Progress

Quit: Prints your score, and asks whether you wish to
continue playing.

Score: Deflate your ego.

Time: Describe how much of eternity you have injured.

Versi(on): Describe the current version.

d. Hard copy (directory owners only!)

Scrip(t): Script to a file ZORK.SCRIPT

Unscr(ipt): End scripting

e. Save/restore (directory owners only!)

Save: Save the game for future continuation (to ZORK.SAVE)

Resto(re): Restore a saved game (from ZORK.SAVE)
Only the player who created the save file can restore
it at a later time! You are warned.

f. Bugs, etc.

Bug: Although the best way to report bugs is to send mail
to ZORK@MIT-DMS, there is a 'bug' and command
built in to the game. This generates files which
must, alas, be manually transmitted to the
maintainers. It is, however, better than nothing.

Featu(re): Like Bug, to make a suggestion for a feature.

g. General

Again: Repeat the last input.

Look: Describe the current surroundings. 'L' is equivalent.

Room: Print the verbose description of the room, without
mentioning any objects.

Rname: Print the short description of the room.

Object: Print the verbose description of all the objects in
the room, without describing the room. 'Look' is
equivalent to a 'room' command followed by an
'object' command.

Inven(t): Describe your possessions. 'I' is equivalent.

Diagn(ose): Describe your state of health.

Wait: Causes 'time' to pass.

Oops: Corrects a misspelled word: As an example,
for 'I don't know the word TORHC' -> say 'OOPS TORCH'.

VI. Zork Command Parser

A command is one line of text terminated by a carriage return or
altmode. For reasons of simplicity all words are distinguished by
their first five letters. All others are ignored. For example,
typing 'DISASSEMBLE THE ENCYLOPEDIA', while meaningless, is also
creating excess finger motion. Note also that ambiguities can be
introduced by this: 'unscr' is 'UNSCRipt', not 'UNSCRew'.

You are talking to a moderately stupid parser, which understands
the following types of things.

Actions:

Among the more obvious of these, TAKE, DROP, etc. Fairly general
forms of these may be used: PICK UP, PUT DOWN, etc.

Directions:

NORTH, SOUTH, UP, DOWN, etc. and their various abbreviations.
Other more obscure directions (LAND, CLIMB) are appropriate in
only certain situations. Because words are only five letters,
you must say 'nw' for 'northwest': the latter is truncated to
'north', which isn't quite what you had in mind.

Objects:

Most objects have names, and can be referenced by them. At most,
two objects can be specified in one command.

Adjectives:

Some adjectives are understood and are required when there are
two objects which can be referenced with the same 'name' (e.g.
DOORs, BUTTONs)

Prepositions:

It may be necessary in some cases to include prepositions, but
the parser attempts to handle cases which aren't ambiguous
without. Thus 'Give car to demon' will work, as will 'Give demon
car.' When a preposition is used, it should be appropriate:
'Give car with demon' does not parse.

Sentences:

The parser understands a reasonable number of things. Rather
than listing them, we advise you to do reasonable things. Note
that several sentences may be typed on the same line, separated
by periods or by 'and': 'n.e.s.w.open mailb and read' will [try
to] do just that.

Multiple Objects:

Sentences of the following forms will parse:
Put A and B and C in trophy case
Put A, B, and C in trophy case
Give A and B to the troll
The following will not:
Put A B in case
Take A B C
The point is that an AND or a <period> are required so as not
to hopelessly confuse the parser.
Special objects named 'everything' and 'valuables' exist; one
may, for example, say 'take everything' and 'put valuables in
trophy case'.

Multiple commands:

Several commands may be included on a single line. They must be
separated by 'then' or '.'. Thus:
TAKE BOOK. N. DROP BOOK AND CANDLE
is correct. Note that the use of a comma between commands will
cause the command line to be parsed incorrectly: comma should
only be used between multiple objects.

Ambiguity:

The parser tries to be clever about what to do in the case of
actions which require objects in the case that the object is not
specified. If there is only one possible object, the parser will
assume that it should be used. Otherwise, the parser will ask.
Most questions asked by the parser can be answered (e.g. With
what?).

Errors:

There are a number of errors which the parser may find in an input
sentence. Some of the more common ones are listed here:

1. 'I don't know the word ZROK'. Probably the most common parser
error. To correct the spelling of a work, use the OOPS command.
In this case, 'OOPS ZORK' would be the correct thing.

2. 'I can't make sense out of that.'. This error means that there
is no known syntax that matches the input. For example, saying
'PUT X WITH Y' does not match any known form for the verb 'PUT'.
This error never implies that the idea of the command was not
good, but rather that the parser doesn't know that form of the
verb. It's usually best to try another way of saying the same
thing.

3. 'Huh?'. A command usually without a noun or a verb. Sometimes
this is confusing, because a word thought to be a noun was really
an adjective. This is the case with, for example, 'GOLD'.
Other commands which cause this are: 'WITH' and 'THE'.

4. 'I can't see any <thing> here.'. An object represented by
'thing' was not found within the room or on your person.

5. 'It's too dark in here to see.'. A reference was made to
an object within an unlighted room.

6. 'I can't reach the <thing> from within the <vehicle>'. This
means that the <thing> referenced was within the room proper,
while you are in a vehicle within that room. Some vehicles
will not allow access to objects outside of themselves.

7. 'That doesn't make any sense.' Usually this will mean that
something like 'TAKE THE COIL OF KEYS' instead of the 'SET'
of keys. In the general case, 'THE <x> of <y>' is legal only
if <x> and <y> are names for the same thing.

8. 'Two verbs in command?' The parser believes that two verbs
were in the command. If you check carefully, you will find
that one of the words is really a verb, and not a noun as
supposed.

9. 'Double preposition?' Try 'TAKE WITH IN MAILBOX'.

10. 'Multiple inputs cannot be used with <verb>'. It is only
legal to use multiple inputs with certain verbs. The ones
which come to mind are TAKE, DROP, and PUT.

11. 'Too many objects specified?' A legal command may contain
at most two object references.

12. 'Beg pardon?'. A null input was parsed.

VII. Theories

The following 'theories' are fundamental to the game and should
be noted:

Containment:

Some objects can contain other objects. Many such containers
can be opened and closed; the rest are always open. They may or
may not be transparent. For you to access (take, for example)
an object which is in a container, the container must be open;
for you to see such an object, the container must either be open
or transparent. Containers have a capacity, and objects have
sizes; the number of objects which will fit therefore depends on
their sizes. You may "put" any object you have access to (it
need not be in your hands) into any other object; at some point,
the program will attempt to pick it up if you don't already have
it, which process may fail if you're carrying too much.
Although containers can contain other containers, the program
doesn't access more than one level down.

Fighting:

Occupants of the dungeon will, as a rule, fight back when
attacked; they may in some cases attack you unprovoked. Useful
verbs here are 'attack <villain> with <weapon>', 'kill', etc.
Knife-throwing may or may not be useful. The adventurer has a
fighting strength, which varies with time: in particular, being
in a fight, getting killed, and getting injured, all lower it.
One's carrying capacity may also be reduced after a fight.
Strength is regained with time. (Thus, it is not a good idea to
fight someone immediately after being killed.) Other details
may become apparent in the course of a few melees. The
'diagnose' command describes your state of health.

Vehicles:

There are some objects in the labyrinth which are rumoured to have
the ability to transport the fearless adventurer to mysterious
regions which are inaccessible on foot. Needless to say, the
adventurer faces great personal peril as he encounters these
regions. The 'vehicles' can usually be entered with the 'board'
command, and can be exited with the 'disembark' command.
Binary file added doc/madman/madadv.info
Binary file not shown.