Home » Archimedes archive » Acorn User » AU 1994-09.adf » !Adventure_Adventure » Manual

Manual

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1994-09.adf » !Adventure_Adventure
Filename: Manual
Read OK:
File size: 3CDF4 bytes
Load address: 0000
Exec address: 0000
File contents
  +---------------------------------------------------------------------+
  |            Inform: A Compiler of Infocom-Format Games               |
  |                                                                     |
  |                        by Graham Nelson                             |
  |                                                                     |
  |                                                                     |
  |                           Fifth Edition                             |
  +---------------------------------------------------------------------+


            "I will build myself a copper tower
             With four ways out and no way in
             But mine the glory, mine the power..."

                 (Louis MacNeice, "Flight of the Heart")


  Hello, Informer!

  This is an abbreviated form of the Inform manual.  Firstly, it documents
Inform, a program to manufacture Infocom format "story files" (or Adventure
games), which can then be played on any of the interpreters now widely
available: this is probably the most portable form in which games can ever
be written, as no alteration whatever is required to move a game file from
one model of computer to another, and almost every model can run it.  The
Inform language is an Adventurous, object-oriented one, reminiscent of C.

  Secondly, it documents a suite of standard "library" of game routines.
These run the "game universe".  The library manages rooms, objects,
containers, things on top of other things, light, scoring, switching things
on and off, opening, closing and locking things, entering things, travelling
about in them and so forth: it implements about 80 verbs.  The parser it
uses (which can be entirely invisible to the designer, or can be altered if
necessary) is about as good as any 1980s parser.

  Next, it contains some short articles on the art and craft of devising
adventure games.  This is a book about writing games, not just coding them.

  A short final appendix describes examples of Inform code.


  The best way to begin reading this manual is to look first at the second
chapter, the designer's manual.  The first chapter is a reference guide
rather than an introduction, and is quite technical in places.



---------------------------------------------------------------------------
                             Contents
---------------------------------------------------------------------------


      Installing Inform on an Archimedes

      Reference Manual: The Inform Language and Compiler

           1.   Command lines, errors and memory allocation
           2.   Source file format
           3.   Compiler directives
           4.   Variables
           5.   Constants
           6.   Routines
           7.   Expressions and assignments
           8.   Commands
                (a)  Printing commands
                (b)  Object manipulation
                (c)  Control commands
                (d)  Causing actions
                (e)  Miscellaneous and rarely-used commands
           9.   Conditions
           10.  Built-in functions and random numbers
           11.  Objects, attributes and properties
           12.  Routines embedded in objects
           13.  Classes and inheritance
           14.  Verbs and grammar
           15.  Exactly what Inform does with words
           16.  Indirect function calls
           17.  Text spacing
           18.  Drastic alteration of objects
           19.  Abbreviations
           20.  Bells, whistles and gimmicks

      Designer's Manual: Using the Library

           D1.  Getting started
           D2.  Places, scenery and the map
           D3.  Causing actions and making new ones
           D4.  Containers, doors, switches and vehicles
           D5.  Living creatures
           D6.  Classes of objects
           D7.  Daemons and the passing of time
           D8.  Calls to and from the library
           D9.  Table of properties and attributes
           D10. Customising the parser

      The Craft of the Adventure

           B1.  A Bill of Player's Rights
           B2.  A narrative...
           B3.  ...at war with a crossword
           B4.  Varnish and veneer

      Example Inform programs

           C1.  Hello Cruel World
           C2.  "Toyshop": a small toy game
           C3.  "Adventure": a port of Colossal Cave
           C4.  A shell game to build on

      Footnote: Availability on the Internet, and Legal Declaration


---------------------------------------------------------------------------
                 Installing Inform on an Archimedes
---------------------------------------------------------------------------


Inform should work on any Archimedes with at least 1M of RAM.

First make a new directory, or take a new disc, to put Inform in.
Inside this directory, arrange files as follows:

     zcode    (directory of Inform source code)

         zcode.toyshop     (example games go in this directory)
         zcode.hellow
         zcode.shell
         zcode.advent

         zcode.h           (directory of Inform header files)

             zcode.h.verblib    (the three standard header files:
             zcode.h.parser      later, you may wish to add others)
             zcode.h.grammar

     zgames   (directory of games produced, initially empty)

The Inform program itself should either be put in this directory or
disc (i.e., together with zcode and zgames) or put in the library
directory of the hard disc, if you have one.

(Adventure game code in this format is traditionally called Z-code,
hence the directory name.)


Each time you want to use Inform, set the current working directory
to this directory (or put this disc in).


As a first test, go to the command line (e.g., press f12 to escape the
desktop to a * prompt) and type simply

     inform

which should print out reams of the formal syntax for the Inform command.


To do any work, Inform needs somewhere to put temporary files created
during compilation (and deleted afterwards).  Its usual practice is to
put these on the RAM disc.  So you need to create a RAM disc, using the
Task window, before you can use Inform.  96K is enough for most purposes;
I've never needed more than 256K.

Once this is done, the first test is to try

     inform hellow

hellow being the Hello-World program, a very small "game" indeed.  This
should create a file called "hellow" in the zgames directory.  To play
it (actually, "play" is an exaggeration in this case) you need to have
booted up (i.e., to have opened a directory containing) the !Zip
application supplied with last month's Acorn User disc.  If you have done
so, the icon for zgames.hellow will be a box with the word "If" in, and
a little subscript 3.  (Never mind why for now.)  Double-click and it
should play.

Now try

     inform -x toyshop

which should take rather longer, and produce a stream of # characters.
(This is the -x option - it is reassuring in that it shows the computer
is still working and hasn't crashed.)  This should make a more interesting
(though still small) toy game.

Now turn to part (D1), the beginning of the Designer's Manual.



If memory is short...
---------------------
There are two ways to reduce memory consumption.  The first is to use
a smaller version of Inform, by

     inform $small (...whatever options you were going to use...)

(This will have trouble compiling some very large games indeed, but will
work well enough on normal-sized ones.)

The second way is to move the temporary files to the floppy or hard disc,
instead of storing them on the RAM disc.  This can be done by, for instance,

     inform $temp_files=$. (...whatever options you were going to use...)

which will of course be a little slower, but not need a RAM disc at all.


If you have the DDE
-------------------
Then Inform can be used with !Make, and using the -T (throwback) option
it will throw back errors into !SrcEdit just as (for instance) the Norcroft
C compiler does.



---------------------------------------------------------------------------
            Reference Manual: The Inform Language and Compiler
---------------------------------------------------------------------------


---------------------------------------------------------------------------
1. Command lines, errors and memory allocation
---------------------------------------------------------------------------


       "I was promised a horse, but what I got instead
        was a tail, with a horse hung from it almost dead."

       (epigram by Palladas of Alexandria, translated by Tony Harrison)


Inform compiles the source code for an Adventure game to one of two kinds of
"story file": Standard (version 3, the default) or Advanced (version 5). 
Unless specialised version-5-only features are asked for, an Inform game can
be compiled to either format.  Because the Advanced format extends many of
the restrictions on the Standard one, it may be needed when a game becomes
sufficiently large.

If Inform is run without any parameters given, it prints out something like
the following information:

   Archimedes Inform 5 (v1259/at)
   Release 5 (June 11th 1994)
   (allocating memory for arrays) (temporary files) 
   
   This program is a compiler to Infocom format story files.
   It is copyright (C) Graham Nelson, 1993/4.
   
   Its syntax is "inform [-list] [$memcom ...] <file1> [<file2>]"
   
   <file1> is the name of the Inform source file; Inform translates this into
      "Zcode.<file1>"
   (unless <file1> contains a '.' or '/', in which case it is left alone).
   <file2> may optionally be given as the name of the story file to make.
   If it isn't given, Inform writes to
      "Zgames.<file1>"
   (for both version-3 and version-5 files)
   but if it is, then Inform takes <file2> as the full filename.
   
   -list is an optional list of switch letters following the initial hyphen:
     a   list assembly-level instructions compiled
     b   give statistics and/or line/object list in both passes
     c   more concise error messages
     d   contract double spaces after full stops in text
     e   economy mode (slower): make use of declared abbreviations
     f   frequencies mode: show how useful abbreviations are
     g   with debugging code: traces all function calls
     h   print this information
     i   ignore default switches set within the file
     j   list objects as constructed
     l   list all assembly lines
     m   say how much memory has been allocated
     n   print numbers of properties and attributes
     o   print offset addresses
     p   give percentage breakdown of story file
     r   record all the text to "Game_Text"
     s   give statistics
     t   trace Z-code assembly
     u   work out most useful abbreviations
     v3  force production of version-3 (Standard) story file
     v4  force production of version-4 (Plus) story file
     v5  force production of version-5 (Advanced) story file
     v6  force production of version-6 (graphical) story file
     w   disable warning messages
     x   print # for every 100 lines compiled (in both passes)
     z   print memory map of the Z-machine
   
   $memcom can be one or more memory allocation commands:
     $list             list current memory allocation settings
     $large            make the standard "large game" settings
     $small            make the standard "small game" settings (default)
     $?SETTING         explain briefly what SETTING is for
     $SETTING=number   change SETTING to given number

   For example: "inform -dex $large curses ram:curses".
   

(The file naming conventions and version numbers may differ slightly on your
copy.)

Roughly speaking, the switches are self-explanatory to the well-informed
and of little use to others.

Samples of -s and -p output can be found in Appendix C, and of -z in
Appendix A.  For -d, see section (17).  For -e and -f, see (19).  -x is
useful if running Inform on a slow machine, since it offers some signs of
life; as does -j.  -a, -n, -p and -l are largely useful to assembly-language
programmers and the unfortunate wretch who maintains Inform.

In -g mode, every function call at run time is traced (this is surprisingly
useful when debugging).

-i overrides any "SWITCHES" directive in the body of the code, so that the
only switches applying are those in the command line.

-m reveals how many bytes were malloc'ed.  The program can be compiled in
several different versions, with varying memory needs, and porters might
need to use this.

The filenames Inform uses for input and output will obviously depend on what
machine it runs on.  The Archimedes conventions are those above, but, for
example, the Unix version compiles files like "dejavu.inf" with headers like
"parser.h" to "dejavu.z3".

-v3 sets the Standard format (overriding any "Version" directive in the
file), and -v5 sets Advanced.  Standard is the default.  -v4 and -v6 are
now available but are not useful.

-r and -u both require much greater free memory (perhaps as much as
0.5-1 megabyte) to run than the rest of Inform.  -r makes a transcript file
of all of the text (excluding abbreviations and dictionary entries), which
can be useful for proof-reading - for instance, it could be run through a
spell-checker.  -u runs the abbreviations-optimiser, a computationally
expensive job not to be undertaken lightly: see (19).


As Inform runs, it may come up with warnings, errors or fatal errors.
Here is a typical sample:

  Archimedes Inform 5 (v1259/at)
  line 10: Error: Symbol name expected
  >   global
  line 12: Error: The "Main" routine is not allowed to have local variables
  >   [ Main i
  line 12: Warning: Local variable unused: "i"
  line 23: Warning: Local variable unused: "j"
  Compiled with 2 errors and 2 warnings (no output)

(Infocom interpreters can crash horribly when given incorrect files, so
Inform never writes a file which caused an error, though it will allow
files causing warnings only.)

-c (concise) mode doesn't quote from the source files; -w turns warnings
off.

The exchange rate is 100 errors to the fatal error: i.e., after 100 errors,
Inform gives up altogether.  An unlimited number of warnings may occur.


The memory management commands are provided for emergencies.  Previously,
to raise one of the compiler limits (say, MAX_OBJECTS) one had to recompile
Inform itself.  This was obviously at best a nuisance, at worst impossible.
In order to get round this, Inform always made enormously generous
estimates for what the player might want: but this meant that it allocated
more memory than strictly needed, which was a problem on small computers.

There are two main choices: $small and $large.  (Which one is the default
depends on the computer you use.)  Even $small is large enough to compile
all the example games, including "Advent".  $large is large enough to
compile almost anything (including the largest version of "Curses" which
ever existed, which was at one stage very close to 256K long).

A typical game, compiled with $large, will cause Inform to allocate about
336K of memory: and the same game about 100K less under $small.  (These
values will be rather lower if the computer Inform runs on has 16-bit
integers.)  In addition, Inform physically occupies about 170K (on my
computer).  Thus, the total memory consumption of the compiler at work
will be between 4 to 500K.

Running

    inform $list

will list the various settings which can be changed, and their current
values.  Thus one can compare small and large with:

    inform $small $list
    inform $large $list

If Inform runs out of allocation for something, it will generally print an
error message like:

   "Game", line 1320: Fatal error: The memory setting MAX_OBJECTS (which
   is 200 at present) has been exceeded.  Try running Inform again with
   $MAX_OBJECTS=<some-larger-number> on the command line.

and indeed

    inform $MAX_OBJECTS=250 game

(say) will tell Inform to try again, reserving more memory for objects this
time.  Note that settings are made from left to right, so that for instance

    inform $small $MAX_ACTIONS=200 ...

will work, but

    inform $MAX_ACTIONS=200 $small ...

will not because the $small changes MAX_ACTIONS again.

The setting names are in some cases rather peculiar, and changing some
settings has hardly any effect on memory usage, whereas others are expensive
to increase.  To find out about, say, MAX_VERBS, run

    inform $?MAX_VERBS

(note the question mark) which will print some very brief comments.


---------------------------------------------------------------------------
2. Source file format
---------------------------------------------------------------------------


       "The average reader knows hardly anything about textual
        criticism... and often shares the writer's prejudices.
        Stand on a barrel in the streets of Bagdad, and say in a
        loud voice, "Twice two is four, and ginger is hot in the
        mouth, therefore Mohammed is the prophet of God," and
        your logic will probably escape criticism; or, if anyone
        by chance should criticise it, you could easily silence
        him by calling him a Christian dog."

                (A. E. Housman, "The Application of Thought to
                 Textual Criticism")


Lines in an Inform file are terminated by semicolons.  An exclamation mark
! thus...
denotes that the rest of its physical line is a comment.  Backslashes "fold"
strings up, so that for example

initial "A hinged trapdoor in the floor stands open, and light streams in \
         from below."
         
is treated as if the "f" in "from below." follows directly from where the
backslash \ is; i.e., the carriage return and leading spaces are removed.

Tab characters are treated as spaces outside inverted commas, but should not
be used inside them.

Inform command names are not case sensitive, and nor are variable names.
However, reserved words after the initial command (such as the "to" in a
"for" construction) must be in lower case.

There are seven kinds of line:

                               Examples

  routines starting            [ NewRoutine i j;
  and stopping                 ];

  assignments                  fred = parent(lamp);
  and function calls           Verify();

  compiled commands            for (i=1:i<=100:i++) print i;

  directives                   #Release 4;

  assembly language            @prop_len_addr lamp lv;
  labels                       .Label;


In practice, you don't need to know the assembly language at all, but it's
there.


---------------------------------------------------------------------------
3. Compiler directives
---------------------------------------------------------------------------


        "...and yet the [European Community] directive on importation
         of caramel is over 20,000 words long."

               (An anti-European speaker at the 1993 Conservative
                Party Conference: sadly, though, the directive in
                question is apocryphal)


Directives are instructions to Inform which do not themselves make code,
though they change the way code is subsequently made.  They can be prefaced
by a # character, as in C, but need not be.

ABBREVIATE <string>                  Declare abbreviation (see (19))
ATTRIBUTE <name>                     Make new attribute flag

CLASS ...                            Declare an object class (see below)

CONSTANT <name> <value>              Declare a constant

END                                  End compilation here (this is optional)

ENDIF                                End of conditional compilation

GLOBAL <name> [ = <a> ]              Make a new global variable;
                                       [give it the initial value a]
              [ string <a> ]           [make it point to an (a+1)-byte array,
                                         which has <a> as first byte, and is
                                         otherwise zeros]
              [ data <a> ]             [make it point to an a-byte array,
                                         which is all zeros]
              [ initial <i1> ... ]     [make it point to an array, the bytes
                                         of which are as given]
              [ initstr "text" ]       [make it point to an array, the bytes
                                         of which are the ASCII values of the
                                         characters in the string]

IFDEF <name>                         Compile if constant name defined
IFNDEF <name>                        Compile if constant name undefined
IFNOT                                "Else" for conditional compilation
IFV3                                 Compile if version is set to 3
IFV5                                 Compile if version is set to 5

INCLUDE <filename>                   Include a file in the source

NEARBY ...                           Make an object near the last (see below)
OBJECT ...                           Make an object (see below)
PROPERTY ...                         Make a new property (see below)

REPLACE <routine-name>               Declare that this system file routine
                                     will be replaced in the game source

RELEASE <a>                          Set the release number to <a>

SERIAL <string>                      Set the serial number to <string>
                                        (it must be a six-digit number, and
                                         defaults to the date in the form
                                         YYMMDD if Inform has access to
                                         today's date, or to 940000 if it
                                         hasn't)

STATUSLINE score                     Make the status line show score/turns
           time                      ...show hours/minutes

SWITCHES <switches>                  Declare default switch settings
                                     (eg:  SWITCHES dexs
                                     causes "inform filename" to be read as
                                     "inform -dexs filename")

VERB ...                             Enter grammar for a new verb (see below)
EXTEND ...                           Extend the grammar for a verb

VERSION n                            Sets Inform to version 3 or 5

The following are mainly for debugging the compiler (should anyone ever
get around to doing this) but might sometimes be amusing or helpful:

LISTSYMBOLS                          List the symbol table
LISTDICT                             List the dictionary
LISTOBJECTS                          List the object tree
LISTVERBS                            List the verb table

(the names of which have changed since releases 1 and 2),

TRACE                                Trace assembler
LTRACE                               List the lines of input
ETRACE [full]                        Trace expression evaluator
                                     (rather lavishly if "full" is set)
BTRACE                               Trace assembler on both passes
NOTRACE, NOLTRACE, etc               Turn off appropriate tracing

And there are six more rather technical directives:

DEFAULT <cname> <value>              If the constant has not yet been
                                     defined, define it with this value
LOW_STRING <name> <string>           Puts a string in the "low strings" area,
                                     and creates a constant to hold its word
                                     address (see (18)).
STUB <rname> <n>                     If the routine has not yet been
                                     defined, define one which has n local
                                     variables and always returns false
DICTIONARY <name> <text>             Enter <text> in dictionary, and make
                                     a new constant for its address
                                     (this usage is obselete, since, e.g.
                                     #n$theword is much better)
FAKE_ACTION <name>                   Create a fake action: one which can be
                                     treated as an action but corresponds to
                                     no actual routine
SYSTEM_FILE                          Declares the present file to be a
                                     system file (from which routines can be
                                     REPLACEd)

Conditional compilation allows code for routines which need only exist in
some "versions" of your games.  For instance,

  print "Welcome to the ";
  #IFV3;
    print "Standard";
  #IFNOT;
    print "Advanced";
  #ENDIF;
  print " version of Zork LVI.";

Note the trailing semicolon: Inform is not C!  Such clauses may be nested up
to 32 deep, and may contain whole routines.  They may not, however,
conditionally give _part_ of a statement.  Thus, for instance,

  print 
  #IFV3;
    "Standard";
  #IFNOT;
    "Advanced";
  #ENDIF;

is _not_ legal.


---------------------------------------------------------------------------
4. Variables
---------------------------------------------------------------------------


       "I found it necessary to introduce the restriction that
       quantifiers may only be applied to formulae which actually
       involve the quantified variable...  I can well imagine that
       professional logicians will find this hard to swallow... but
       I would ask them to reflect, before they condemn me, on
       whether anyone _other_ than a logician would find this
       restriction at all odd."

              (P. T. Johnstone, "Notes on logic and set theory")

       "Variables don't; constants aren't."

              (old computing saying)


There are two kinds of variable, global and local (plus one special one).

Variables are all two-byte integers, which are treated as signed when it
makes sense to do so (eg. in asking whether one is positive or not) but
not when it isn't (eg. when it is used as an address).

There can be up to 240 global variables; as indicated in (3), these can be
initialised to point to dynamic workspace, so as to achieve the effect of
strings and arrays.  They have to be declared before use.  For instance:

  Global turns = 1;
  Global buffer string 120;   ! Buffer holding 120 characters
  Global task_scores initial 4 5 9 1 2 3 0;

In an array, the n-th byte is called

  array->n

and the n-th word (the n-th double-byte value, i.e.
256*array->(2*n)+ array->(2*n+1)) is called

  array-->n

In a string array, the bytes correspond to ASCII characters.  They are not
encrypted in the way that standard game text is.


In any routine, there can be up to 15 local variables.  These are declared
when the routine begins.  (There is one exception: the special Main routine
may not have local variables.)


WARNING: There is also a stack, but it should be tampered with only with
   *     care.  Never call a variable "sp", as this is the stack pointer,
  /!\    and be careful not to leave values on the stack: or the game may
 *---*   crash 1000 turns later, highly mysteriously.


[Inform in fact reserves the top three global variables to itself, for
temporary calculations.  The observant reader will have noticed that
240+15+1 = 256.  This is of course no coincidence.]


---------------------------------------------------------------------------
5. Constants
---------------------------------------------------------------------------


        "I cannot call this constant "Caratheodory" because it already
        has another name, namely 1/16."

               (E. Landau: Caratheodory's constant had only recently
                been evaluated)


Constants may be prefixed with a # character if desired.  This can be useful
if they are alphabetical and might otherwise be confused with something else.

A constant in "double quotes" assembles the given text at a suitable (even)
  address, and gives half this address as the integer value.  Inside this
  text the character ^ is replaced by a newline character, and the character
  ~ by a double-quote mark.  In practice you seldom need to worry where the
  text is stored, or how.

  Inside a string, @dd (an @ sign followed by two decimal digits) is
  compiled to the synonym of that number.  When the Z-machine finds this, it
  prints the string pointed to by that entry in the synonym table.  (This is
  useful in altering object short names - see section (18).)

A character in single quotes, such as 'e', means the ASCII value of that
  character.  (This is true even on machines not using ASCII, of course.)

A word (of longer than one character) in single quotes, such as 'herring',
  means the address of that word in the Dictionary (it is created if not
  already present).

A dollar $ indicates that a hexadecimal constant follows; $$ indicates that
  binary follows.  A minus sign indicates a negative number.  (Internally
  these are stored in the usual two-byte fashion, e.g. -1 = $ffff, -2 =
  $fffe and so on.)

A double # indicates an action (action numbers are sometimes explicitly
  needed as numbers).  So, for instance, ##Take.  (Fake actions also have
  numbers and can be referred to thus.)


Any constant declared in a directive can be quoted, and so can the various
special constants (set up by Inform) which are of purely technical utility:

  adjectives_table   (byte address)
  preactions_table   (byte address)
  actions_table      (byte address)
  code_offset        (packed address of code)
  strings_offset     (packed address of strings)
  version_number     (3 or 5 as appropriate)
  largest_object     (the number of the largest created object + 256)
  dict_par1          (see the description of the Dictionary)
  dict_par2
  dict_par3      

Old Inform syntax which is still allowed:

  A constant beginning a$, followed by the name of a routine which is an
  action routine, will have as value the number of the action.
  (For instance, #a$TakeSub.)

  A constant beginning w$, followed by a word of text, has as value the
  address of the given word in the dictionary (Inform will give an error at
  compile time if no such word is there).

  A constant beginning n$, followed by a word of text, has as value the
  address of the given word in the dictionary (Inform adds it to the
  dictionary as a new word if it is not already there).

  A constant beginning r$, followed by a routine name, gives the (packed)
  address of the given routine.  (This is needed for changing
  property values which are routine addresses.)

Thus, for instance, the following are legal constants:

  31415
  -1
  $ff
  $$1001001
  #adjectives_table
  'lantern'
  ##Look
  'X'
  "an emerald the size of a plover's egg"
  "~Hello,~ said Peter.^~Hello, Peter,~ said Jane.^"
  #r$FireRodRoutine
  


---------------------------------------------------------------------------
6. Routines
---------------------------------------------------------------------------


       "Habit!  That skillful but slow-moving arranger who begins
       by letting our minds suffer for weeks on end in temporary
       quarters, but... without it, reduced to their own devices,
       [our minds] would be powerless to make any room seem
       habitable."

             (Proust, Overture to "A La Recherche du Temps Perdu")


There are two kinds of routine: global ones, and ones embedded in the
definition of some object.  This section is about global routines.

The syntax to begin a routine is

  [ RoutineName <l1> ... <ln>;

and to end it, is

  ];

l1 to ln are the names of local variables, which are also the call
parameters.  For example, if you have a routine

  [ Look i j k;
    ...some code...
  ];

and it is called by

  Look(attic);

then i will initially have the value "attic" when this is executed.
Any local variables not specified (in this case, j and k) are initially
zero.  It should be emphasized that it is legal to call Look with 0, 1,
2 or 3 arguments.  (Three is the maximum number of arguments any routine
can have.)

Every routine returns a value to the caller; if no such value is
explicitly given, this value is the integer 1 ("true").  (Except in the
case of routines embedded in object definitions, when it is 0, or "false".)
In a line like

  Banner();

the return value is thrown away.

Inside a routine, labels may be declared with a line of their own:

  .labelname;

but note that whereas local variables have names which only mean anything
locally, labels have names which are global.  In other words, you can't
have a label called "loop" more than once in the file.  (It is legal to
jump from one routine to a label inside another one, but rather dangerous.)

There is one special routine, which you must define, called Main.  This is
where execution of the game will begin, and it _must_ be the first one
defined.  Also, uniquely and for peculiar reasons, Main is _not_ permitted
to have any local variables of its own.  This means it is usually only used
as an outer shell.

(Inform issues a warning if the earliest defined routine is not called
"Main".)


WARNING: Returning from Main will cause the interpreter to crash: you
   *     should explicitly use the "QUIT" instruction instead.
  /!\    
 *---*   



---------------------------------------------------------------------------
7. Expressions and assignments
---------------------------------------------------------------------------


        "His expression may often be called bald - but it is bald
        as the bare mountain tops are bald, with a baldness full of
        grandeur."

              (Matthew Arnold, of Wordsworth)


The usual arithmetic expressions are allowed, including the operators:

    + -           plus, minus
    * / % & |     times, divide, remainder, bitwise and, bitwise or
    -> -->        byte, word array entry
                  (eg: buffer->4 gives contents of the byte with address
                  buffer+4, while table-->3 gives the word at table+6)
    . .& .#       property, property address, property length (see (11))
    -             unary minus
    ++ --         as in C: frog++ gives the value of frog and then
                  increments it, whereas ++frog increments it and then
                  gives the value; -- decrements similarly
                  (these may only be applied to variables)

The order of precedence is as shown: i.e. those on each line are equally
potent, more potent than those above but less than those beneath.
                  
In addition one may call a function, either a built-in function or a
routine within the source code.

Expressions may not contain conditions, and assignments may not be made
within an expression, so, for instance,

  2+(i=3/j)

is not allowed.  In other words, = is not quite an operator.

There are four forms of assignment statement allowed:

  variable = value;

  byte_array->entry = value;
  word_array-->entry = value;

  object.property = value;


For example:

  4*(x+3/y)
  Fish(x)+Fowl(y)
  lamp.time
  buffer->5

  i=-15-j;
  i=j-->1;
  turns++;
  albatross.weight = albatross.weight + 1;
  (paintpot.&roomlist)-->i = location;

Although

  paintpot.#roomlist = 5;
  paintpot.&roomlist = array;

look logical, they are not allowed: one cannot change the size and location
of a property once the game is in play (see (11)).


WARNING: Interpreters can crash very mysteriously if a division by zero
   *     (or an attempt to find remainder-after-division by zero) takes
  /!\    place.
 *---*   


---------------------------------------------------------------------------
8. Commands
---------------------------------------------------------------------------


         "My name is OZYMANDIAS, king of kings:
         Look on my works, ye Mighty, and despair!"
         Nothing beside remains.  Round the decay
         of that colossal wreck, boundless and bare
         The lone and level sands stretch far away.

                  (Shelley)


(a) Printing commands
---------------------

         To begin the "high level" commands in Inform, we list the printing
         commands.  (The wrapping of lines is of course automatic.)


<a string on its own>

         A string on its own, such as

         "The world explodes in a puff of garlic.";

         is printed as if by PRINT_RET: i.e., it is printed, a carriage
         return is printed and the current routine is returned from with
         return vale "true", i.e., 1.


NEW_LINE                       Print a carriage return

PRINT ...list of things...
PRINT_RET ...list...

         PRINT and PRINT_RET are general printing commands, to be given
         a list of items separated by commas.  PRINT_RET differs from PRINT
         in that when it finishes, it prints a carriage return and returns
         from the current routine with return value true (or 1): this is
         a convenient shorthand.

         Items in the list must be

         <quoted text>         A string to print out
         <expression>          A number to print
         char <expression>     An ASCII code to print
         object <expression>   An object to print the short name of

         Within a text string, an up-arrow character ^ becomes a carriage
         return and ~ a double-quote.  (For fuller details of printing, see
         (5), (17) and (19).)

         So, for example,

             print_ret "Your score is ", score, " out^of ", max_score, ".";

         might produce the output

             Your score is 146 out
             of 10000.

SPACES <n>                     Print <n> spaces (if n<=0, print nothing)

PRINT_NUM <a>                  Print <a> as a (signed) decimal number
PRINT_CHAR <a>                 Print the character whose ASCII value is <a>
PRINT_OBJ <a>                  Print the short name of object <a>

         There are a few more technical printing commands also:

INVERSION                      Prints (in the game, not at compile time)
                               the version number of Inform used to
                               compile the story file
PRINT_ADDR <a>                 Print the string whose address is a
PRINT_PADDR <a>                Print the string whose address is
                                  2*a (in version-3)
                               or 4*a (in version-5)
STRING <n> <text>              Set the nth indirect string to text (see (18))
FONT on                        Turn proportional fonts on/off (see (20))
     off

STYLE roman                    (Version 5 games only)  Set the text style
      reverse                  (see (20))
      bold
      underline

BOX <text1> ... <text2>        (Version 5 only)  Highlight a text window
                               (see (20))


(b) Object manipulation (see (11))
----------------------------------


REMOVE <a>                     Remove object a from the tree of objects
                               (it may certainly be later put back)
MOVE <a> TO <b>                Add object a to the things possessed by b

WRITE <object> <p1> <v1> [<p2> <v2>...]        Change properties
GIVE <object> <a1> [<a2>...]                   Change attributes
         
         These set several properties or attributes of the given object
         at once.  (Attributes may be preceded by a tilde ~, in which case
         they are removed rather than added.)  For example,

             give lamp light ~open container scored;
             write lamp timeleft 50 brightness "flickering";


(c) Control commands
--------------------


         We begin the control commands, perversely perhaps, with the
         remaining ways to return from the present routine (apart from
         PRINT_RET and an <<action>>):

RETURN                         Return (actually, return true, i.e. 1)
RETURN <a>                     Return the value a
RTRUE                          Return true, i.e. the value 1
RFALSE                         Return false, i.e. the value 0
                               (These used to, and still can, be called
                               "ret#true" and "ret#false".)

         The next few constructions involve conditions and blocks of code.
         See (9) for proper definition of conditions.  A block of code may be
         a single instruction or a series of several, in which case it must be
         enclosed in braces '{' and '}'.  Thus, for instance, in

             if (i==1) print "The water rises!";
             if (i==2) { print "The water rises further...";
                         water++;
                       }

         the if statements contain a block of code each.  Blocks can be nested
         inside each other up to 32 deep.  An if statement (for example) is a
         single statement even when it contains a great deal of code in its
         block: so, for example,

             if (i>1)
                 if (water<10)
                      print "The water is beginning to worry you.";

         is perfectly legal.  (One small exception: an if followed by an else
         counts as two expressions, so in

             if (i>1)
                 if (water<10) print "Glug...";
                               else print "Arrghh...");

         the else belongs to the _outer_ if.  So it's wise to brace
         if...else... expressions as one block.)

         [In previous editions of Inform, much less sophisticated
         constructions were allowed: conditions were much simpler, and were
         not bracketed, as in:

             if i==1 { print "The water rises!"; }

         This syntax is still permitted.  But unless the condition is
         bracketed, the braces are compulsory in accordance with old-style
         syntax.]

         As the reader has probably surmised, we have "if" and other
         standard loops:

IF <condition>                 Execute if the condition holds
  { ... code ... }
[ ELSE
  { ... other ... } ]          [or execute this if not]

WHILE <condition>              Execute while the condition holds
  { ... code ... }

DO                             Execute until the condition fails
  { ... code ... }
UNTIL <condition>

         and also a "for" loop which is quite powerful.  Inform used to
         implement only a BASIC-style FOR loop, but is now able to code a
         C-style one.  The old, simpler style looks like:

FOR <var> <init> TO <final>    Execute the code iteratively, starting with
  { ... code ... }             <var> set to <init> and incrementing it each
                               time until it is bigger than <final>: if the
                               final value is actually less than the initial
                               one, then don't execute the code at all

         (again, braces are compulsory for such a usage) but the new style is

FOR ( <initial assignment> : <condition> : <end assignment> )
  { ... code ... }  

         which carries out the initial assignment, then executes the code
         for as long as the condition holds, executing the end assignment
         after each pass through the code.  For instance,

             for i 1 to 10 { print i, " "; }

             for (i=1:i<=10:i++) print i, " ";

         are old- and new-style ways to write the same loop.  But the new
         style is capable of much more.  For one thing, several different
         assignments are legal at once, if separated by commas.  So, for
         example,

             for (i=0,j=10:i<10:i++,j--) print i, " + ", j, " = ", i+j, "^";

         All three clauses are optional: if the assignments are missed out,
         nothing is done at the appropriate moment; if the condition is
         missed out, it is always true.  So, for instance,

             for (::) print "Ha!^";

         laughs maniacally forever.


         A useful loop construction in Adventure games is:

OBJECTLOOP ( <var> from <obj> )  { ... code ... }
                   near <obj>
                   in   <obj>

         which loops the variable through the object tree: either

           from the given object through all its siblings, or
           through all objects with the same parent as the given object, or
           through all children of the given object.

         So for instance

             objectloop (x in lamp) { print_obj x; new_line; }

         is equivalent to

             for (x=child(lamp): x~=0: x=sibling(x))
             { print_obj x; new_line; }

         but the shorthand is convenient.

WARNING: When looping through the object tree, be careful if you are altering
   *     it at the same time.  For instance,
  /!\      objectloop (x in rucksack) remove x;
 *---*   is likely to go horribly wrong - it's safer not to cut down a tree
         while actually climbing it.

         It is legal to jump in and out of loops in the obvious way, but this
         makes for somewhat unattractive code.  (And that would never do.)
         A compromise measure is:

BREAK                          Break out of the current loop (not block)

         However, no language would be complete without:

JUMP <label>                   Jump to the label (warning: it is unsafe to
                               jump out of one routine into another)

         As a demonstration of the loop constructs, here is an inefficient
         routine to try: Primes(100) should print out prime factorisations of
         the numbers from 2 to 100.

             [ Primes i j k l;
               for (j=2:j<=i:j++)
               {   print j, " : ";
                   l=j;
                   while (l > 1)
                       for (k=2:k<=l:k++)
                           if (l%k == 0)
                           {   l=l/k;
                               print k, " ";
                               break;
                           }
                   new_line;
               }
             ];

         (A program of historical value only - slightly more clumsily
         expressed, this was the first non-trivial program Inform compiled.)


(d) Causing Actions
-------------------

         A special form of command causes an action to happen as if the
         player had typed it at the keyboard, according to the normal game
         rules.  This takes either the form

< Action [first-object [second-object]] >

         or

<< Action [first-object [second-object]] >>

         The latter returns "true" from the current routine after carrying
         out the action.  The former does not return.

         (Inform does very little to achieve this: it simply generates a
         function call, which the library is expected to provide.)



(e) Miscellaneous and rarely needed commands
--------------------------------------------


INC <var>                      Increment variable
DEC <var>                      Decrement 

PUT <addr> BYTE <index> <v>    Write byte value v into index byte after addr
PUT <addr> WORD <index> <v>    ...and similarly for words

         (these are now superceded by the new assignment forms
             addr->index=v;
             addr-->index=v;
         but the commands are retained for compatibility)

SHOW_SCORE                     (Version 3 only)  Redisplay the score bar
                               immediately, without waiting for the next
                               keyboard input: avoid use of this if possible


         The remaining commands need not be used if the library is being
         included:

QUIT                           Quit the game (at once, with no confirmatory
                               question to the user): all games must end this
                               way, since it is illegal to return from Main()
RESTART                        Restart the game from its initial state
SAVE <label>                   Try to save the game (asking the user for a file
                               to put it in): if successful, jump to the label,
                               otherwise carry on
RESTORE <label>                Ditto, but restore the game
VERIFY <label>                 Ditto, but verify that the game is intact

READ <a> <b> [<routine>]

         Read keyboard into buffer a and decompose it to the buffer b:

         on entry a[0] = size of text buffer, b[0] size of parse buffer

         on exit  a[0] and b[0] are preserved

                  a[1] = no characters typed
                  a[2] to a[a[1]+1] are the characters (unterminated)

                  b[1] = number of words typed (note that the special
                         separating characters such as ',' are words in their
                         own right)
                  and then from byte 2, b contains 4-byte chunks, one for

                  each word of input:

                  0,1  address of dictionary entry if recognised,
                         0000 otherwise
                  2    number of letters in word
                  3    first char of word in a

         If compiling in version 3, this command automatically redisplays
         the status (score) line.  Any routine given is ignored.
         In version 5, if no routine name is given, Inform compiles code
         emulating what a version 3 game would have done; if a routine name
         is given, the routine is called to print a status line instead.


If a command matches none of these, or if it began with an @ character, the
line is sent to the assembler instead.  Some of the assembler opcodes are
fairly usable (see Appendix A), but the essential features of the Z-machine
can be got at with just the high-level commands and functions.


---------------------------------------------------------------------------
9. Conditions
---------------------------------------------------------------------------


        "So I told him:  "Money.  As much money as you could give
        us.  And with as few conditions as you could possibly make."
        And that's where we stand."

                (C. P. Snow, "The Masters")


A simple condition is

  <a>  <relation>  <b>

where the relation is one of

  ==            a equals b
  ~=            a does not equal b
  <  >  >=  <=  comparisons
  has           object a has attribute b at the moment
  hasnt         ...has not...
  in            object a is currently held by object b
  notin         ...is not...
  near          objects a and b have the same parent
  far           ...have not...


With == (and ~=) only, one may also write the useful construction

  <something> == <v1> [or <v2> [or <v3>]]

which is true if the first something is any of the values given.


Conditions can be combined by the && and || operators:

  <condition1> && <condition2>

which is true if both are true, and 

  <condition1> || <condition2>

true if either is true.  These can be bracketed together.


Compound expressions are always tested left to right until the outcome
is known.  So, for instance,

  i==1 || Explode(2)==2

does not call Explode if i is 2.


For example:

  i==1 or 2 or 3
  door has open || (door has locked && parent(key)==player)


Conditions do not have to bracketed (as they would have to be in C).
However, they can be, and for control constructs like

    if (i==1) { ... }
    while (j==2) { ... }
    do { ... } until (k==3);

this is advisable though not insisted upon by Inform (for the sake of
compatibility with earlier releases).  Even so, individual simple
expressions don't need bracketing, so

    if (i==1 && j==2) { ... }

is perfectly legal.


---------------------------------------------------------------------------
10. Built-in functions and random numbers
---------------------------------------------------------------------------


       "ROS: [throwing a coin]  Heads.

        ROS: [again]  Heads.

        ROS: [again]  Heads.

        ROS: [again]  Heads.

        ROS: [again]  Heads.

        GUIL:  [flipping a coin]  There is an art to the building
               up of suspense."

        (Opening lines of "Rosencrantz and Guildenstern are Dead",
         Tom Stoppard)


The built in functions are

  PARENT(obj)      parent object

  SIBLING(obj)     sibling object
  CHILD(obj)       child object

  CHILDREN(obj)    number of children

  ELDEST(obj)      eldest (added longest ago) child object
  YOUNGEST(obj)    youngest (most recently added) child object
  ELDER(obj)       next oldest child object
  YOUNGER(obj)     next youngest child object

for reading the object tree (see (11) below), together with

  RANDOM(x)        give a uniformly random number between 1 and x

  INDIRECT(addr)   call the routine whose address is in addr
                   and take its return value (see (19))

and

  PROP_LEN(addr)   property length
  PROP_ADDR(o,p)   property address
  PROP(o,p)        property value

which are now obselescent: see (11) below.


Warning: some interpreters set up their random number generator with poor
choices of seed value, which means that the first few random numbers may be
rather peculiarly distributed.  ("ROS: Heads.")   After a time, it settles
down.  ("ROS: Heads.")  To get around this, "Curses" (for example) takes
and throws away 100 random numbers when it begins.  ("ROS: Seventy-six love.")

In Version 5 and on benign interpreters only, RANDOM(-x) makes the generator
produce predictable values for a while: see the dictionary of opcodes
under "random".


WARNING: Trying to execute RANDOM(0) at run time can crash the interpreter
   *     because of trying to find a remainder after division by zero.
  /!\    
 *---*   


---------------------------------------------------------------------------
11. Objects, attributes and properties
---------------------------------------------------------------------------


     "...making philosophical sense of change runs up against what
     seem to be impossible philosophical difficulties.  Aristotle...
     focuses on the central case of an object coming to have a
     property that it formerly lacked."

          (Julia Annas, "Classical Greek Philosophy")


The object hierarchy is a tree of "objects", which you might use for many
different game elements: rooms, compass points, scenery, things which can be
picked up, and so on.


They are numbered upward from 1, and the number 0 by convention means
"nothing".


WARNING: Attempting to print_obj object 0 will produce a string full of
   *     peculiar letters or (if you are very unlucky indeed) even random
  /!\    ASCII values followed by an interpreter crash.
 *---*   It is also unwise to apply SIBLING, PARENT or CHILD to 0.


In the tree, each object has a parent, a sibling, and a child.  Thus, for
instance, a portion may resemble

            Meadow
               |
            Mailbox -> Player
               |          |
             Note      Sceptre -> Cucumber -> Torch -> Magic Rod
                                                |
                                              Battery

in which -> shows siblings, and | parents and children.  In this case, the
Meadow has nothing as its parent.  Anything with no possessions, such as the
note, has nothing as its child, and so on.

When an object is moved, its possessions move with it.

The PARENT, SIBLING and CHILD functions read this tree in the obvious way.
It is sometimes convenient to know how many direct possessions an object
has and CHILDREN(object) returns the number.  Thus, for instance,

        PARENT ( Mailbox ) = Meadow
        CHILDREN ( Player ) = 4
        CHILD ( Sceptre ) = 0
        SIBLING ( Torch ) = Magic Rod

CHILDREN(0)=0, but it is undefined what CHILD, SIBLING and PARENT do to the
"nothing" object: so don't apply them to it.

When an object is added to the possessions held by another, it appears at
the end of the list.  Thus, the eldest child is first in the list and the
youngest is last.  Inform also provides functions

        YOUNGEST     end of list of possessions
        ELDEST       same as CHILD
        YOUNGER      same as SIBLING
        ELDER        reverse of SIBLING


In practice an object needs rather more data than just a position in a tree. 
It also has a collection of variables attached to it.

Firstly, there are flags, called "attributes", which can be either set or
clear.  These might be such conditions as "giving light", "currently worn"
or "is one of the featureless white cubes".  All these are free for the
programmer to use (though the Library routines, if in use, consume many of
them).  They must be declared before use, by directives like

  ATTRIBUTE locked;

which will allocate a new attribute and make a constant "locked" to have the
value of its number.  You never then need to know about these numbers,
because you can use commands like

  IF (obj has locked) "But it's locked!";

  GIVE obj locked;

The limit on the number of attributes can quite easily be hit.  The author
has found it useful to declare one as "general", to be used for different
things for different objects.  (And this is done for you in the library.)

It sometimes happens that an attribute is only meaningful for a particular
kind of object: for instance, "spell has been read" might only be meaningful
for a "scroll".  With care, therefore, one may re-use the same attribute to
have different meanings for different kinds of object.  The syntax to
declare that an attribute is being reused is

  ATTRIBUTE <new> alias <old>;

Thereafter Inform will treat the new and old attribute names as referring
to the same attribute: it's up to the programmer to make sure this does not
lead to inconsistencies.


Secondly, there are "properties".  These are far more elaborate.  For one
thing, not every object has every property.  The following all declare new
properties:

  PROPERTY door_to;
  PROPERTY article "a";
  PROPERTY blorpleroutine $ffff;

The value given, in the case of article and blorpleroutine, is the default
value: that is, the value of the property which an object will have if it
doesn't explicitly have some other value.  If you don't define a default
value, it will by default be 0.

So, for instance,

  frog.door_to

will be 0 if "frog" has no door_to entry.

The data for a given property can be a single number, or an array of
values.  In Standard (version 3) files this consists of up to four numbers
in a row, or up to eight bytes of data; in Advanced (version 5) files it
can amount to 32 numbers or 64 bytes.

But the vast majority of properties are single numbers.  The simplest way to
get at the current value is something like

  i = location.door_to;

which will get the first number in the property door_to of object location.
Similarly, it can be written to with

  location.door_to = hall_of_mists;

or (if preferred)

  WRITE location door_to hall_of_mists;


WARNING: The Z-machine crashes if you attempt to write to a property field
   *     which an object hasn't got.  So although you can read an undeclared
  /!\    property (you just get the default value), you can't write to one.
 *---*   (Also, you can't extend a property beyond its length.)


A subtle point is that numbers smaller than 256 are stored differently from
larger ones.  In order to decide whether the property is one byte's worth or
two, the Z-machine looks at the number of bytes which the property has in
all, and sees whether it is odd or even; if even, it presumes the number is
a 2-byte word; if odd, it presumes it is just one byte.

This is seldom something you need to know about, but occasionally you will
want a property which will, later in the game, need to hold a value of, say,
1000, but which initially will be zero.  This is particularly the case with
timing mechanisms, for instance.  The command

  PROPERTY LONG timeleft;

declares the property "timeleft" and requires Inform to make sure that all
"timeleft" fields are 2 bytes wide, even if they have small initial values.

(In Version 5 only, all properties are defaulted to LONG because property
values are very often object numbers, which are usually but not always less
than 256; this makes code more portable and wastes few bytes.)

Properties can also be aliased, by

  PROPERTY <new> alias <old>;

but "PROPERTY LONG <new> alias <old>" is meaningless: the property has
whatever length it was originally set up as having.


More elaborate manipulation has to be done by hand.

  k = o.&weird;

sets k to the address of the "weird" data of object o.  To find out how many
bytes there are, try:

  l = o.#weird;
    
Once you have the address you can read and write to it directly.  Be careful
not to overrun the length, which may not be changed.


The functions

  PROP(object,property)
  PROP_ADDR(object,property);
  PROP_LEN(PROP_ADDR(object,property));

duplicate the effect of

  object.property
  object.&property
  object.#property

but are now superceded by them.


An object is declared by something like:


Object trapdoor "hinged trapdoor" attic
  with name "hinged" "trap" "door" "trapdoor",
       when_open "A hinged trapdoor in the floor stands open, and light \
                  streams in from below.",
       when_closed "There is a closed trapdoor in the middle of the floor.",
       door_to house,
       door_dir d_to
  has  door static open light openable;

trapdoor is a constant which is set to its object number; "hinged trapdoor"
is its attached short name; attic is the object which initially possesses
it.  If it was to be initially unowned, this could be "nothing" instead of
"attic".  Or one can simply omit it altogether:

Object trapdoor "hinged trapdoor"
  with ...

would initially be outside the game (and could be brought in later).


Objects can also be declared, in an identical way, by the NEARBY command.
The only difference is that no object can be given to initially possess it;
it initially belongs to the last declared OBJECT.  E.g., in

Object hillside "Panoramic Hillside"
  with ...

Nearby scenery "scenery"
  with ...

the hillside is to be a room, and the scenery will belong to it.


The full syntax of the header is:

     Object <obj-name-1> <obj-name-2> ... <obj-name-n>
            "short name" [<parent-obj>]

or   Nearby <obj-name-1> <obj-name-2> ... <obj-name-n> "short name"

or   Class  <class-name>

and of an object is

     <Header> [,]
     "class" <class-1> <class-2> ... <class-n>�[,]
     "with"  <property-name-1> <value-1> ... <value-n>,
             <property-name-2> <value-1> ... <value-n>,
             ...
             <property-name-n> <value-1> ... <value-n> [,]
     "has"   <att-1> <att-2> ... <att-n>�[,]

Although it's conventional to write "class", "with" and "has" in this order,
actually they can be in any order and any or all can be omitted altogether:
and the commas in square brackets [,] are optional in between these fields.

[Notice that you may give an object more than one internal name, thus:

  OBJECT frog tree brick "frog" attic
    with ...;

after which the same object can be called frog, tree or brick within the
source code: in other words, several constants are created with the same
value.  Why on earth should you want this?  - See section (18).]


"With"
------

Warning: an excellent source of mysterious errors is missing off the commas
between the properties, since property names are themselves legal constants.
Inform warns you if a property name is used as a constant after the first
entry of a property, which although legal is probably this mistake.

There is one special property, called "name".  Its data must be (up to four
at most in version-3, or up to thirty-two in version-5) words, as above, and
these are entered into the dictionary as nouns (if they aren't already):
the property data actually stored is the dictionary addresses.

Note that the dictionary itself does _not_ know that "door" refers to this
object: there might be any number of objects which could be called "door".


If you give a property more than eight bytes of data in a version-3 game,
Inform warns you and takes only the first eight, but does not cause an
error: this is so that, say,

  OBJECT ...
    with name "radio" "wireless" "transistor" "portable" "stereo" "tranny",
         ...

will compile on either version-3 or version-5 (but the last two synonyms
for "radio" will not enter the dictionary if it's being compiled as
version-3 since a name takes two bytes).


"Has"
-----

After "has" is a list of attributes which the object initially has.
These attributes may also be taken away.  For example:

  ...
  has  light ~scored;

declares that the object definitely doesn't have the "scored" attribute.
This is needed for over-riding inheritances.


In Version 3 games (the default) there are up to 255 objects, each with 32
"attribute" flags and up to 30 "properties" (collections of data).  In
Version 5 there is no limit as such on the number of objects, and the other
limits are increased to 48 and 62 respectively.


---------------------------------------------------------------------------
12. Routines embedded in objects
---------------------------------------------------------------------------


Some properties of objects should be routines.  For instance, in the
standard Inform library, an object can have a "describe" property which is a
routine to print out a description of it.

These can either be declared as any other property would be, by giving
the name of the routine as the property value, or can be actually included
in the definition.  For instance, in the classic Adventure object


Nearby tasty_food "tasty food"
      with description "Sure looks yummy!",
               initial "There is tasty food here.",
           name "food" "ration" "rations" "tripe"
                "yummy" "tasty" "delicious" "scrumptious",
           after
           [; Eat: "Delicious!"; ],
           article "some"
      has  edible;


the "after" property does not name a routine but instead defines it.  No
name is needed for the routine.  However, the semicolon after the [ is
needed: a list of local variables follows the [ (but in this example there
are none).

The routine must end with either "]," or "];".  If "]," the object definition
can resume where it left off, with further properties.  (If it ends with
"];", then the object definition ends where the routine finishes.)


The rules for embedded routines are slightly different.  By default,
they return "false", or 0 (instead of "true", which other routines return
by default).  They also allow a handy shorthand:

    Action [, Action2 ...] : ...some code...

executes the code only if the action being considered is the one named.

(Inform actually does this by seeing if the "switch variable" sw__var,
which it expects to have been suitably set up by the library, has the
given action values.)


---------------------------------------------------------------------------
13. Classes and inheritance
---------------------------------------------------------------------------


As well as objects one can define classes in almost exactly the same way.
The only differences are that a class has no short name or initial location 
(since it does not correspond to a real item).  For example,

    Class Treasure
     with depositpoints 10,
          after
          [; Take: if (location==Inside_Building)
                        score=score-self.depositedpoints;
                   score=score+5;
                   "Taken!";
             Drop: score=score-5;
                   if (location==Inside_Building)
                   {   score=score+self.depositedpoints;
                       "Safely deposited.";
                   }               
          ],
     has  valuable;

defines a class.  An object of this class inherits the properties
and attributes it defines: in this case, an object of class Treasure
picks up the given score and rules automatically.

To declare an object as being of a given class, one writes, say

    Nearby bars_of_silver "bars of silver"
     class Treasure
      with description "They're probably worth a fortune!",
           initial "There are bars of silver here!",
           name "silver" "bars";

The "class" field of an object can contain a list of classes,

     class C1 ... Cn

in which case the object inherits first from C1, then from C2
and so on.  These classes may well disagree with each other,
so the order matters.  If C1 says "depositedpoints" is 5,
C3 says it is 10 but the object definition itself says 15 then
the answer is 15.

Some properties, however, do not have a single value but a list
of values.  These can be declared as "additive", e.g. by

     Property additive before $ffff;

If so, each class adds values to the list in order.

Classes can themselves inherit from other classes.  Thus a class for
"like Treasure but with only 8 depositedpoints" is easily written.


---------------------------------------------------------------------------
14. Verbs and grammar
---------------------------------------------------------------------------


     "The book ends with a chapter on grammar...  The foolish and the
     wicked who lack respect for the language will not take the
     slightest notice of it."

          (Kingsley Amis reviewing the Oxford Guide to English Usage)


Whereas objects should be declared at the start of the file, the grammar
to be allowed by the game should be declared at the end.  This is done with
the VERB command.  VERB does something quite complicated, but probably not
what you think.  A typical VERB command would be:

VERB "take" "get" "pick" "lift"  * "out"                    -> Exit
                                 * multi                    -> Take
                                 * multiinside "from" noun  -> Remove
                                 * "in" noun                -> Enter
                                 * "off" held               -> Disrobe;

This declares a verb, for which "take", "get" etc are synonyms, and which
can take five different courses.  In the first, it must be followed by the
word "out".  In the last, it must be followed by "off" and then an item
which is currently held by the player.  In the second, it can be followed by
one object, or a list, perhaps specified as "everything", for instance.
There can be no grammar at all, for example

VERB "invent" "i"                *                          -> Inv;

After the "->" is the name of a routine which is to be called when this is
matched.

If a verb is declared as a meta-verb, e.g. via

   VERB meta "score"
                *                                -> Score;

then the parser will treat it as outside the game - taking no time up, and
possible at any moment.



For traditional reasons unclear to the author, previous Infocom hackers have
called words such as "out" and "off" adjectives.  They are of course
(mainly) prepositions.  We shall wearily follow convention.

Remember that the Z-machine does _not_ contain the bulk of a game parser,
only the computationally expensive and low-level part which works out what
the words are.  So this command only sets up a table with some numbers in. 
If you want a parser, you have to write code to deal with the table again.
If you're using the library routines, the parser is all done for you and
the possible tokens are:

   Token               What the library parser uses it for
   =====               ===================================
   noun                any visible object
   held                object held
   multi               one or more visible objects
   multiheld           one or more held objects
   multiexcept         one or more objects, except the other object 
   multiinside         one or more objects, inside the other object
   creature            an animate creature
   special             any single word or number
   number              a number only

   <attribute>         any visible object with the given attribute
   <Routine>           the routine is called: if it returns -1,
                         no match is made: otherwise a match is made,
                         with the value returned
   noun = <Routine>    any visible object which passes the following test:
                         the variable noun is set to the object in
                         question, and Routine is called.  If it returns
                         true, the object is accepted; otherwise not.

Look through the library's grammar table for examples.


One can also extend a previous verb definition by

   EXTEND "verb" [optional-keyword]
       ...one or more lines of grammar as above...;

This is useful for adding to the standard library's grammar table.
The optional keyword can be:

   replace      completely replace the old grammar with this one
   first        insert the new grammar at the top of the old one
   last         insert the new grammar at the bottom of the old one

The default is "last".


---------------------------------------------------------------------------
15. Exactly what Inform does with words
---------------------------------------------------------------------------


     Bulldust, coolamon, dashiki, fizgig, grungy, jirble, pachinko,
     poodle-faker, sharny, taghairm

          (some of the more readily catachrestic words from the
           265000 in Chambers English Dictionary)


This is a very technical section about exactly how Inform deals with the
grammar table and the dictionary.  It can safely be ignored by anyone
using the library routines supplied, and in fact since the remaining
sections of the manual proper are quite specialised, the next part to
read is probably Appendix C.



By convention, adjectives are numbered downwards from $ff.  Thus, if
the above were the opening lines of grammar, "from" would be $fe, and so on. 
As they are created, they are entered into the dictionary, and also into the
adjective table, which has four-byte entries

  <dictionary address of word>  00  <adjective number>
  ----2 bytes-----------------  ----2 bytes----------- 

In order to make life more interesting, these entries are stored in reverse
order (i.e., lowest adjective number first).  The address of this table is
rather difficult to deduce from the file header information, so the constant
#adjectives_table is set up by Inform to refer to it.  In any event, the
table isn't very useful and is created only for the sake of conforming to
Infocom internal conventions.

The important tables are the grammar and action tables.

The grammar table address is stored in word 7 (ie bytes 14 and 15) of the
header.  The table consists of a list of two-byte addresses to the entries
for each word.  This list is immediately followed by these entries, one
after another.

An entry consists of one byte giving the number of lines (eg, 5 for the
"take" definition above) and then that many 8-byte lines.  These lines
have the form

  <objects>  <sequence of words>  <action number>
  --1 byte-  ----6 bytes--------  --1 byte-------

<objects> is the number of objects which need to be supplied: eg, 0 for
"inventory", 1 for "take frog", 2 for "tie rope to dog".  The sequence
of words gives up to 6 blocks of syntax to follow the verb, which must
be matched in order.  Large numbers such as $ff mean that the appropriate
adjective must appear; small numbers are inserted by special words such as 
"held" or "noun" in the VERB command.  Tokens are set according to:

   Word            Byte
   ====            ====
   noun             0  
   held             1  
   multi            2  
   multiheld        3  
   multiexcept      4  
   multiinside      5  
   creature         6  
   special          7  
   number           8

   (noun=Routine)   16+parsing-routine-number
   (Routine)        64+parsing-routine-number
   (attribute)      128+attribute number

   (adjective)      255-adjective number

Parsing routines have addresses which are too large to store in a single
byte.  Instead they are numbered from 0, and their (packed) addresses are
stored in the preactions table of the story file (which is called
"preactions" because of what it was used for by the original Infocom parser).

The sequence is padded out to 6 bytes with zeros.

The action numbers begin at 0.  The first routine mentioned as an action (in
the above example, Exit) is assigned action number 0; the next (Take)
is given 1, and so on.  The appropriate number is stored in the last byte of
the line.

Thus, a little later on in the grammar, the line

VERB "exit" "leave"              *                          -> Exit;

might well appear, and Exit will mean "action 0" as before.

So this table does not store the address of the action routine, as one might
expect.  Instead the addresses corresponding to the action numbers are
stored in the actions table.  Once again, Inform puts this table in its
conventional place, but this address being difficult to work out, the
constant #actions_table is set up to hold it.  The actions table is simply
a list of 2-byte entries giving the routine addresses (divided by 2).

There is also a preactions table, with another constant #preactions_table,
created only to conform to Infocom conventions; it is set up containing 0000
for each action.  ("Curses", for instance, makes no use of this.)

In the mean time, what has happened to the actual words, "take", "get",
"pick" and "lift"?  Note that these do not appear in the grammar table at
all.  Instead they are entered into the dictionary, along with the verb
number.  As a final baroque twist, these numbers also count down from $ff.
Any number of words can be given, all referring to the same verb number;
"Curses" has 11 synonyms for "attack", for instance.

Of course, Inform does not know or care what is done with any of these
tables.   For instance, the "take" verb has the entry

005
000 255 000 000 000 000 000 000
001 002 000 000 000 000 000 001
002 005 254 000 000 000 000 002
001 253 000 000 000 000 000 003
001 252 001 000 000 000 000 004

but it is up to the code you write to deal with this.  (The LISTVERBS command
will print out the full verb table in a similar format.)



Now for what Inform does with the dictionary.  Again, if you use the parser
supplied, you needn't know this.

The fourth word of the file header (bytes 8 and 9) contain the dictionary
table's address.

The table begins with a 7-byte header:

  03 '.' ',' '"'

meaning there are three characters used to separate words in typed input,
full stops, commas and quotation marks.  (The Z-machine will allow any list
to be given here but Inform decides on this for you.)

  n   <number_of_entries>
      ----2 bytes--------

meaning there are that many entries in the dictionary, all n bytes long. 

It is usual (not compulsory in the Z-machine format, though Inform always
makes it so) for n to be the number of bytes consumed by the word itself,
plus 3.  In version 3 this makes it 7, which means that words are cut down
to their first six letters only.  In Version 5 it is 9, making the
dictionary accurate to nine letters, which is much more satisfactory. 
Provided dictionary words are always given in full in source code, Inform
will truncate them itself to whichever is appropriate.

The entries are in alphabetical order, and look like:

  <the text of the word>  <flags>  <verb number>  <adjective number>
  ----4 or 6 bytes------  --1 b--  ----1 byte---  ----1 byte--------

The text is stored in the usual text format, thus allowing up to 6 or 9
characters.

When using entries like this, it's convenient to write code which works
equally well under versions 3 or 5.  To do so one needs to access the three
data bytes without knowing whether they are 4 or 6 bytes from the start of
the dictionary entry address.  Inform provides three constants for this:

                 In Version 3     In Version 5
  #dict_par1          4                6
  #dict_par2          5                7
  #dict_par3          6                8

Thus, for example, address->#dict_par1 gives the flags byte.

The flags (chosen once again to conform loosely to Infocom conventions, not
for any sensible reason) have the eight bits

  7      6  5  4  3     2      1      0
  <noun> .. .. .. <adj> <spec> <meta> <verb>

<verb>, <noun> and <adj> mean the word can be a verb, noun or adjective; the
<spec> bit means the word was inserted by a DICTIONARY command in the
program, except that <verb> words also have the <spec> bit set (ours not to
wonder why).

Verbs declared as "meta" have the <meta> bit set.  (These are such
out-of-world experiences as SAVE and SCORE.)

Note that a word can be any combination of these at once.  It can even be
simultaneously a verb, adjective and noun.

A standard game typically needs at least 600 dictionary entries - about ten
times the number of portable objects.  Even so it only consumes about 4K, or
1/64th of the available memory.  It's never worth economising on dictionary
entries; nothing else a designer can do with 4K will be as good�to the user.
(By means of containing a heroic number of synonyms, some of the larger
Infocom games have as many as 2000 words in their dictionaries.)


---------------------------------------------------------------------------
16. Indirect function calls
---------------------------------------------------------------------------


         "By indirections find directions out"

                  (Shakespeare, "Hamlet")


Occasionally one needs to call a function whose address is in a variable:
for example, if the routine address has been looked up from a table, or an
object's property list.

For this, the function "indirect" is provided:

  a=indirect(b);

sets a to the return value of calling the function whose address is in b.


WARNING: To pass arguments as well, you must use the assembler-level
   *     @icall, but do so with care.
  /!\    Be careful not to leave values on the stack: or the game may
 *---*   crash 1000 turns later, highly mysteriously.


---------------------------------------------------------------------------
17.  Text spacing
---------------------------------------------------------------------------


        "The thundering text, the snivelling commentary!"

                (Robert Graves)


Typewritten English, like this file, normally puts a double space after a
full stop.  This is much easier to read.  Unfortunately Infocom-standard
interpreters do not usually understand that.  When they fold text across
lines, they can easily turn

  ...and a pomegranate.  After all, you always hated fruit.

into something like

   |You decline the offer of a banana, an apple and a pomegranate.   |
   | After all, you always hated fruit.                              |
   |                                                                 |
   |>                                                                |

which looks awful.  It would be easy to fix the interpreter not to do this;
but nobody does.  In case (like the author's) your typing is habitually
double-spaced, Inform provides a command line option -d to change it back
again.  It does this only by replacing the string ".  " by ". " in text
conversion.


---------------------------------------------------------------------------
18.  Drastic object alteration
---------------------------------------------------------------------------


       "Everything changes.  We plant
        trees for those born later
        but what's happened has happened
        and poisons poured into the sea
        cannot be drained out again."

               (Cicely Herbert, after Brecht)


In earlier versions of Inform, there were some aspects of an object
difficult to change, once set.  Firstly, the "short name".  If you
declared an object as, say,

  OBJECT frog "little green frog" attic
    WITH ...

then the game would always refer to it as "little green frog": this would
be impossible to alter if, for instance, it should in some magical way
become an enormous green frog.

A sneaky way around this is to use string indirection.  Declare it as

  OBJECT frog "@00" attic
    WITH ...

so that, when the Z-machine does a print_obj on it, it prints out the
string entered 0th in the synonyms table.  In your initialisation code,
write your own string here, by:

  LOW_STRING L_Frog "little green frog";
  LOW_STRING E_Frog "enormous, slavering green frog";

  STRING 0 #L_Frog;

(compiling simply to

  (0-->12)-->0=#L_Frog;

which looks up the synonyms table address; setting word n changes the
string printed in place of @n).


WARNING:  Note that any string you intend to use in this way must be
   *      declared by LOW_STRING as above.  (LOW_STRING is like CONSTANT,
  /!\     but makes strings in a slightly different way.)
 *---*    The more friendly-looking usage

             STRING 0 "illegal frog";

          will work in a Version 3 game but may unpredictably fail in a
          Version 5 one which exceeds 128K in length.  (This is a
          consequence of the design of the Z-machine; see Appendix A.)


Then at any time you can amend the name by

  STRING 0 #E_Frog;

@00 to @31 are available.  (Counting in decimal, not hex.)

(This system also provides an elegant way of dealing with bottles and
containers of water in general, say: "full beer bottle" can become
"half-empty beer bottle" and then "empty beer bottle".  (But if so,
remember also to change its indefinite article from "a" to "an".))


Secondly, properties which pointed to game routines were tricky to
set for a complicated reason to do with how constants are translated.
Suffice to say that one can now do this by, e.g.

  frog.preroutine = #r$EnormousFrogPre;

or

  frog.preroutine = #r$LittleFrogPre;


Thirdly, it was difficult to change the dictionary entries recognised
as referring to an object.  Well, it still is, but here's how it's done:

Create your object with the name field containing dummy entries, e.g.

  OBJECT frog "@00" attic
    WITH name "zzzzzz" "zzzzzz" "zzzzzz",
         ...;  

and then initially set these by

  x = frog.&name;

  x-->0 = #n$little;
  x-->1 = #n$green;
  x-->2 = #n$frog;

then alter them by

  x = frog.&name;

  x-->0 = #n$enormous;

(Warning: if there are only three entries in the name property list, as
here, then the Z-machine will crash if you try to write to the fourth: so
make sure there are enough dummy entries when you create the object.)


It is thus possible to change absolutely every aspect of an object.  One
virtue of this is that, as Richard Tucker pointed out to the author, the
version-3 limit of 256 objects ceases to be a limitation if you can recycle
them. It takes careful coding, but these methods allow that recycling to
take place.

This is why multiple internal names are now allowed for an object:

  OBJECT frog brick herring "@00" attic
    WITH name "zzzzzz" "zzzzzz" "zzzzzz",
         ...;

will allow the same object number to be called frog, brick or herring by
different routines which deal with different incarnations of the same
object.

In a version-5 game it seems best not to use this device.


---------------------------------------------------------------------------
19.  Abbreviations
---------------------------------------------------------------------------


     "Obviously, to get maximum gain one must make sensible choices.
     A reasonable selection is..."

          (unintended irony from the third edition of this manual)


When the game becomes full, 8 to 10% of its length can be saved by making
use of text abbreviations: a method under which up to 64 commonly occurring
phrases can be abbreviated whenever they occur.

This makes no difference to the text as seen by the player.

Because checking for these causes a speed overhead (again, of about 10%),
and isn't worthwhile until the game is about 90% full, Inform does not do
so except in economy mode (compiling with the switch -e on).

An abbreviation must be declared explicitly, before any other text appears,
by a directive such as:

  ABBREVIATE "the ";

Only 64 may be declared (note for experts: the remaining 32 slots in the
synonyms table are allocated for variable strings, see (18)).

(This causes "the " to be stored internally as only 2 text chunks, rather
than 4, whenever it occurs: which is very often.)

To see how good your current choice of abbreviations is, try compiling with
the -f (frequencies) option set, which will count the number of times each
abbreviation is used, and work out how many bytes it saved.  For instance,
" the " occurs some 2445 times in the latest version of "Curses".
Experimenting with words soon reveals that parts of speech and words like
"there" make big savings, but that almost any proper noun makes hardly any
difference.

Infocom's own compiler does not seem to have chosen abbreviations very
rigorously, since Infocom story files contain just such a naive list.  (This
may have been wise from the point of view of printing speed in the days of
much slower computers.)

In any case, the -u option of Inform (if your computer is large enough and
fast enough to make this feasible) will try to work out a nearly-optimal set
of abbreviations.

The algorithm for doing so is too complex to give here: see the source code.
Briefly, it runs in two phases: building a table of cross-references, and
then running a number of passes looking for good substrings and choosing
good antichains from the partially ordered set resulting.  The result is not
guaranteed to be optimal but seems pretty good.  The output it finally
produces is a list of legal Inform "Abbreviate" commands which can be pasted
into source code.

Since there are something like

     300000
    2

possible choices for a game the size of "Curses", this is bound to be a
tricky and computationally expensive job.  The 128K version of "Curses" takes
about 45 seconds to compile on my machine, and slightly under two hours to
optimise.  There are three passes, of which the first is by far the longest.

Reasonable guesswork and experiment (resulting in the words suggested in
earlier editions of this manual) actually doesn't perform too badly, but
"Curses" was 1200 bytes shorter than that when optimised: sample -f output
(again, for the 128K version of "Curses") follows:

    How frequently abbreviations were used, and roughly how many
    bytes they saved:  ('_' denotes spaces)
       you   668/  444         with   144/  190        which    92/  182   
       urs    58/   38         tion   142/  188          ter   274/  182   
       t_w   134/   88          t_s   117/   77          t_o   164/  108   
       t_i   167/  110          ing   960/  639         ight   187/  248   
       her   283/  188          e_w   146/   96          e_s   160/  106   
       e_o   227/  150          e_i   245/  162          e_a   254/  168   
       der    87/   57          d_s    61/   40          d_o   122/   80   
       d_i    82/   54          d_a   122/   80          and   560/  372   
       all   289/  192          You   297/  394         This    47/   92   
       The   384/  510      Meldrew    28/  108        It_is    40/  104   
 Aunt_Jemima  15/  102           ._   680/  452           ,_  1444/  962   
      's_~    42/  109        's_no    41/  106          _un   105/   69   
       _to   708/  471        _the_  1328/ 2654          _th   578/  384   
       _ro   110/   72          _pr    95/   62          _po    78/   51   
       _no   246/  163          _ma   165/  109          _lo   119/   78   
       _ho    87/   57          _hi    99/   65          _ha   309/  205   
       _gr    67/   44          _ga    60/   39        _from    94/  186   
      _for   185/  245          _fi   130/   86          _fa    97/   64   
       _ex    89/   58          _ea    61/   40        _door    46/   90   
       _di   110/   72         _con    88/  116         _com    72/   94   
       _cl    81/   53         _can   164/  217          _ba   120/   79   
       _a_   587/  390   

(On the most recent (256K) version of "Curses", using abbreviations saved
about 23000 bytes and added 9 seconds to a 91-second compilation time.)

Most of these abbreviations, it seems fair to say, would not be guessed at,
and it's interesting how few words in common the naive and optimised lists
have.  Only two proper nouns survived, and they provide the only longish
words.  "is " as such turned out not to be worthwhile.  " the " was perhaps
obvious in retrospect, but I didn't think of it.  The best strategy for
abbreviating seems, surprisingly, to be to choose three-character strings
which make a fractional saving each (only one Z-character each time, for the
most part) but which occur very often indeed.  (This may be undesirable from
the point of view of printing speed, of course.)

Note also that another 32 abbreviations (which could be accommodated, if the
string-changing mechanism were dropped) would not make all that much
difference.  The least worthwhile of these already saves only 38 bytes or
so.


---------------------------------------------------------------------------
20.  Bells, whistles and gimmicks
---------------------------------------------------------------------------


    "He has written poems resembling the kind of pictures typists
    make with their machines in the coffee break..."

         (Philip Larkin on the modern artist, from the
          introduction to "All What Jazz")


a.  Version 3
-------------


Version 3 story files are pleasingly austere.  Almost their only special
effects are the status line, and occasional character graphic maps or
drawings.

The status line is perhaps the most distinctive feature of Infocom games in
play.  This is the (usually highlighted) bar across the top of the screen. 
The game automatically prints the current game location, and either the time
or the score and number of turns taken.

The status line is redisplayed at least (a) on a SHOW_SCORE command and
(b) each time the game asks the player to type something.  It may be
displayed even more often, at the whim of the interpreter.

The place name is the short name of the object whose number is held in
global 0 - the earliest global declared in the file.  If ever this global
holds the value 0, the name displayed will become corrupted and the game
may crash.

The next two globals are also used.

By default, these show the score and number of turns taken so far, usually
in the form "4/87".  (Interpreters vary in how they print these.)

However, if the file contains the directive

  Statusline time;

then they are treated as the time in hours and minutes.  For instance,
1 and 32 would come out as "1:32 am".

It is up to the program to adjust these variables as time passes, score
is gathered, location changes, etc.  (Though as usual, the library will
take care of some of this work.)


About character graphic drawings: on some machines, text will by default be
displayed in a proportional font (i.e. one in which the width of a letter
depends on what it is, so for example an i will be narrower than an m).  If
you want to display a diagram made up of letters, you will have to turn this
off, for which the "font" command is provided:

   font off;
   print "   +---+^   | A |^   +---+^";
   font on;

for example.  Remember to turn the font back on afterwards.

On a machine not using proportional fonts, these have no effect.  But
the commands need to be inserted for the sake of machines which do.

WARNING: Some interpreters only display a line once it has scrolled.
   *     Consequently it is wisest only to change the font after a
  /!\    new-line has been printed.
 *---*   


b.  Version 5
-------------


Various gimmicks and special effects are provided for Version 5 story files. 
These should be used as sparingly as possible, in the interests of public
decency as much as of portability.

Assembly language to code such effects is detailed in (A4).

The main difference is that the status line is not automatically displayed
and that SHOW_SCORE is no longer legal.  However, the READ command is able
to emulate the old status line by, for instance,

  read buffer parse;

if you only want a standard one.  If you want something more exotic, you
will need something like:

  read buffer parse Pretty;

where the Pretty() routine is, say:

  [ Pretty i j;
    i = 0->33; if (i==0) i=80;          !  Find width of screen

    split_window 2;                     !  Create 2-line top window
    buffer_mode 0;                      !  Switch off line-splitting
    set_window 1;                       !  Move to it
    style reverse;                      !  Reverse-video mode on

    set_cursor 1 1;                     !  Blank out line 1...
    spaces i;
    set_cursor 2 1;                     !  and line 2... with spaces
    spaces i;

    set_cursor 1 2;                     !  Print the top line
    print_obj location;
    set_cursor 1 53;
    print "Amulets: "; print_num score;
    set_cursor 1 66;
    print "Days: "; print_num turns;

    set_cursor 2 2;                     !  And the second line
    PrintRank();

    style roman;                        !  Back to standard text
    buffer_mode 1;                      !  Switch on line-splitting
    set_window 0;                       !  in the standard window
  ];

By stretching the status bar to many lines wide, you can make it show a
character-graphics map, a Scott Adams-style list of viable directions, an
election slogan for your favourite politician - the possibilities are, alas,
endless.

You can also BEEP the user and read the keyboard "live", with a clock
running; see appendix (A4) for fuller details.


Something several later Infocom games did was to display messages
- quotations, writings on signs, etc. - in reverse video in a centred text
window at the top of the screen.  This is easy but tedious to code
correctly, so Inform provides a command to do it, viz. "BOX".  For
instance,

     BOX "Beware of the Dog";

or

     BOX "I might repeat to myself, slowly and soothingly,"
         "a list of quotations beautiful from minds profound;"
         "if I can remember any of the damn things."
         ""
         "-- Dorothy Parker";

Note that a string of lines is given (without intervening commas) and
that a blank line is given by a null string.  Remember that the text
cannot be too wide or it will look awful on a small screen.

The author takes the view that this device is amusing for irrelevant
quotations but irritating when it conveys vital information (such as,
"Beware of the Dog", for instance).


Version-5 also allows an "undo" feature to be programmed.  See (A4)
for details.  It does not properly work on all interpreters, but is
worthwhile enough to be coded anyway.


---------------------------------------------------------------------------
Designer's Manual: Using the Library
---------------------------------------------------------------------------


     "And what was one to make of the arrangement of covered walk,
     library and communal refectory which seemed to form an almost
     independent entity within the plan of the mausoleum?  The
     expectant visitor would have been disappointed on entering this
     part of the monument..."

          (Luciano Canfora, "The Vanished Library")


---------------------------------------------------------------------------
D1.  Getting started
---------------------------------------------------------------------------


The first thing to try is to compile the "Hello Cruel World" game, a very
short test file given in Appendix C.  If that compiles and runs properly
(producing a short page of text, then finishing), try the following:


    Constant Story "SHELL";
    Constant Headline "^An Interactive Skeleton^\
                 Copyright (c) 1994 by (your name here).^";

    #include "Parser";
    #include "VerbLib";

    Object Blank_Room "Blank Room"
      with description "An empty room."
      has  light;

    [ Initialise;
      location=room;
      "^^^^^Welcome to the shell...^^";
    ];
    
    #include "Grammar";
    end;


If this compiles, Inform is almost certainly set up and working properly.
It takes a short while to compile, because it "includes" three large standard
files, containing a large amount of code.  These are:

    Parser        The core of the game, and a proper game parser
    VerbLib       A library of routines for game verbs like "take"
    Grammar       A grammar table to decode the player's input from
  
Together, they make up the "library".  They can certainly be modified by
programmers, but have been designed in such a way as to minimise the need for
this.  (The "#include"s are written that way to imitate C, but they could
just be written "Include".)

Apart from that, the code contains:

  strings giving the name of the game, and a copyright message, to be
printed out at the appropriate moments;

  a routine, called "Initialise", which is run when the game begins, and
simply sets where the player starts (in the obvious place!) and prints a
welcoming message;

  an object, to be the only room of the game.

The "shell" game is very boring: there is nothing for the player to do but
wait and quit.


In Inform, everything is an object: rooms, compass directions, things to be
picked up, scenery and even intangible things like mist.  Let us add
something, underneath the room's definition:

     Nearby cone "green cone"
       with name "green" "cone";

("Nearby" just means it's an object inside the last thing declared as an
"Object", in this case the Blank Room.)

A green cone now appears in the Blank Room.  The player can call it either
"green cone", "cone" or even "green".  It can be taken, dropped, looked at,
looked under and so on.

This is still rather plain.  Examining the cone sees "nothing special about
the green cone", for instance.  So we might extend the definition by:

     Nearby cone "green cone"
       with name "green" "cone" "emerald",
            initial "Nearby is an emerald green cone, one foot high.";

The "initial" message now appears when we arrive in the Empty Room.  Taking
things a little further...

     Nearby cone "green cone"
       with name "green" "cone" "emerald" "marzipan",
            initial "Nearby is an emerald green cone, one foot high.",
            description "The cone seems to be made of emerald-coloured \
                         marzipan."
       has  edible;

(Note that the description is split across two lines: the \ makes the message
come out as one sentence without a huge space.)  Now if we examine the
cone, we get its surprising "description".  Also, the cone not only has
"properties" (the values of "name", "description" and "initial") but now
also an "attribute" (which can only be held or not held).  And the player
can now eat the cone.

There still isn't any actual code connected with the cone.  We could go
further without doing any honest programming, but instead:

     Nearby cone "green cone"
       with name "green" "cone" "emerald" "marzipan",
            initial "Nearby is an emerald green cone, one foot high.",
            description "The cone seems to be made of emerald-coloured \
                         marzipan.",
            after
            [; Take: "Taken.  (Your hands are smeared with marzipan.)";
               Drop: "The cone drops to the floor and sags a little.";
            ],
       has  edible;

The property "after" doesn't just have a string for a value: it has a
routine of its own.  (This is much like the "Initialise" routine, except
that it doesn't have a name: it doesn't need one.)  Now what happens is
that when an action happens to the cone, the "after" routine is called
to apply any special rules about the cone.  In this case, Take and Drop
are the only actions tampered with: and the only effect is that the
usual messages ("Taken." "Dropped.") are replaced.

Still, the cone doesn't actually do anything!  So here it is with a
(completely unfair) puzzle added:

     Nearby cone "green cone"
       with name "green" "cone" "emerald" "marzipan",
            initial "Nearby is an emerald green cone, one foot high.",
            description "The cone seems to be made of emerald-coloured \
                         marzipan.",
            before
            [; Eat: if (random(100) <= 30)
                    {   deadflag = 1;
                        "Unfortunately, you seem to be allergic to almonds.";
                    }
                    "You nibble at a corner of the cone.";
            ],
            after
            [; Take: "Taken.  (Your hands are smeared with marzipan.)";
               Drop: "The cone drops to the floor and sags a little.";
            ],
       has  edible;

The "before" routine is called before the player's intended action takes
place.  So when the player tries typing, say, "eat the cone", what happens
is: in 30% of cases, she dies of almond poisoning; and in the other 70%,
she simply nibbles a corner of the cone (without actually consuming it
completely).

"deadflag" is a global variable, whose value does not belong to any particular
object (or routine).  It is defined somewhere in the depths of the library:
it's usually 0; setting it to 1 causes the game to be lost.

In either case, the usual rule for the Eat action is never applied.  This is
because, although it isn't obvious from the code, the routine actually
returns a value, true or false.  And the command

    "Unfortunately, you seem to be allergic to almonds.";

not only prints the message (together with a carriage return), but also
returns true from the "before" routine.  Since the routine normally returns
false, the library knows that something has happened to interrupt the usual
rules of the game.


One more extension:

     Nearby cone "green cone"
       with name "green" "cone" "emerald" "marzipan",
            describe
            [; if (cone has moved)
                   "A misshapen cone of green marzipan sits here.";
               "Nearby is an emerald green cone, one foot high.";
            ],
            description "The cone seems to be made of emerald-coloured \
                         marzipan.",
            before
            [; Eat: if (random(100) <= 30)
                    {   deadflag = 1;
                        "Unfortunately, you seem to be allergic to almonds.";
                    }
                    "You nibble at a corner of the cone.";
            ],
            after
            [; Take: "Taken.  (Your hands are smeared with marzipan.)";
               Drop: cone.description = "The cone is a vague green mess.";
                     "The cone drops to the floor and sags a little.";
            ],
       has  edible;

Now the old "initial" message has gone.  Instead, we have provided a
"describe" routine.  Whenever the game has to describe the cone in the
description of a place, it will call this routine.  The "moved" attribute
is held only by an object which has at some time in the past been taken.  So
the cone is now perfect and untouched until taken and dropped, whereupon
it becomes misshapen.  Also, the act of dropping the cone now changes the
description which appears when a player examines it.


---------------------------------------------------------------------------
D2.  Places, scenery and the map
---------------------------------------------------------------------------


Now for a room: throw away the old "blank room" and replace it by...

     Object Square_Room "Square Room"
       with description
                "A broad, square room, ten yards on a side, floored \
                 with black and white chequered tiles."
       has  light;

(We also have to change the Initialise routine to make this the place
where the player begins, since the Blank Room no longer exists.)

Like the blank room, this one has "light".  (If it didn't, the player
would never see it, since it would be dark, and the player hasn't yet
been given a lamp or torch of some kind.)  So where is the light coming
from?

     Nearby chandelier "crystal chandelier"
       with name "crystal" "chandelier",
            initial "A crystal chandelier hangs from far above, casting \
                     light in little rainbows across the floor.",
            description "The crystal is beautiful cut-glass."
        has static;

This is a piece of scenery, hence the "static" attribute (which means it
can't be taken or moved).  But what about the rainbows?

     Nearby rainbows "rainbows"
       with name "rainbow" "rainbows",
            description "Caused by diffraction, or something like that - \
                you were never very good at physics."
        has scenery;

Being "scenery" makes the object not only static but also not described
by the game unless actually examined by the player.  A true perfectionist
might alter it to:

     Nearby rainbows "rainbows"
       with name "rainbow" "rainbows",
            description "Caused by diffraction, or something like that - \
                you were never very good at physics.",
            before
            [; Take, Push, Pull, Turn: "But the rainbows are made of light.";
            ],
        has scenery;


Let us now add a second room:

     Object Corridor "Sloping Corridor"
       with description
                "This corridor slopes upward and out of the square room.",
            d_to Square_Room, s_to Square_Room,
            u_to "The slope becomes impossibly steep, and you retreat.",
            cant_go "The corridor runs up and down."
       has  light;

and extend the Square Room to:

     Object Square_Room "Square Room"
       with description
                "A broad, square room, ten yards on a side, floored \
                 with black and white chequered tiles.  A doorway in the \
                 centre of the north side opens onto a rising corridor.",
            u_to Corridor,
            n_to Corridor
       has  light;

The player can now go from one to the other.  The properties "u_to", "d_to",
"n_to" (and so on) declare what lies in the directions "up", "down", "north"
(and so on).  If they aren't declared, one cannot go that way.  Notice that
they can be either a room or a message which is printed if the player tries
to go in the given direction.

In the Square Room, if the player tries to go, say, east, she gets a message
along the lines of "You can't go that way.", which is not very helpful.  In
the Corridor, the "cant_go" message is printed instead.

Notice that the map connections are all one-way: they just happen to be
defined in such a way that they appear two-way.


Rooms also have rules of their own.  We might write:

     Object Corridor "Sloping Corridor"
       with description
                "This corridor slopes upward and out of the square room:  \
                 the floor underfoot is a little sticky.",
            d_to Square_Room, s_to Square_Room,
            u_to "The slope becomes impossibly steep, and you retreat.",
            cant_go "The corridor runs up and down.",
            before
            [; Take: if (noun == cone)
                         "The cone seems to be stuck to the floor here.";
            ],
       has  light;

and now the cone (if dropped there) cannot be taken from the floor of
the Sloping Corridor.  The variables "noun" and "second" hold the first
and second nouns supplied with an action.  Rooms have before and after
routines just as objects do.

Remember, when writing rules for rooms, that the room may be a different
one after the action has taken place.  The Go action, for instance, is
offered to the "before" routine of the room which is being left, and the
"after" routine of the room being arrived in.  For example:

            after
            [; Go: if (noun==in_obj)
                   print "How grateful you are to get out of the rain...^";
            ]

will print the message when the room is entered via the "in" direction.
(Note that the message is printed with the "print" command.  This means
that it does not automatically return true: in fact, it returns false,
so the game knows that the usual rules still apply.  Also, no new-line
is printed automatically: the ^ symbol means "print a new-line".)

Directions (such as "north") are objects called n_obj, s_obj and so on:
in this case, in_obj.  (They are not to be confused with the property names
"n_to" and so on.)


---------------------------------------------------------------------------
D3.  Causing actions and making new ones
---------------------------------------------------------------------------


Quite often you want to simulate the effect of a player typing something.
For instance, in the Pepper Room the air is full of pepper and every turn
you sneeze and drop something at random.  If the code to do this simply
removes an object and puts it on the floor, then it might accidentally
provide a solution to a problem like "the toffee apple sticks to your hands
so you can't drop it".

This can at least be coded like this:

  You sneeze convulsively, and lose your grip on the toffee apple...
  The toffee apple sticks to your hand!

which (although not ideal) is much better.  As an example, here is another
piece of scenery to clutter up the tiny map so far:


     Object low_mist "low mist"
       with name "low" "swirling" "mist", article "the",
            initial "A low mist swirls about your feet.",
            description "It carries the unmistakable odour of cinnamon.",
            found_in  Square_Room  Corridor,
            before
            [; Smell: <<Examine self>>;
            ],
       has  static;

This mist is found in both the Square Room and the Corridor: note that the
"found_in" property has a list of places as its value.

(Note also the "article".  Usually the indefinite article for an object
is "a".  Changing it gives a little variety:

  a platinum bar
  an orange balloon
  your Aunt Jemima
  some bundles of reeds
  far too many marbles

for example.)

 
The player will find that smelling the mist produces the same message as
looking at it.  The command

     <<Examine self>>;

causes the game to behave exactly as if the player had typed "examine the
mist" at the keyboard: that is, the Examine action happens, applied to
the low_mist object.  ("self" always means the object whose routine this
is.  In this case, it's really a bit pointless since

     <<Examine low_mist>>;

does just the same thing.)  After going through the business of examining
the mist, the routine then returns "true" (in this case, so that the normal
rules for smelling something are stopped in their tracks).

If instead

     <Examine self>;

had been used, the same would have happened, but the routine would not have
returned "true".  So the mist would be examined; and then the library would
have carried on and said something like "You smell nothing unusual.".

Other actions can of course also be written this way:

     <Look>;  <<ThrowAt cone chandelier>>;

will, for instance, look around, then behave as if the player had asked
to throw the cone at the chandelier, then return true.


Requests like "Look", "ThrowAt", "Take" and so on are called actions. 
Internally, they are stored as numbers, and the number associated with an
action can be got at by

     x = ##Take;

for instance.  The variable "action" holds the current action number.
Sometimes it's convenient to use this directly.  For instance, imagine
a mirror hung very far above the player.  Given:

            before
            [; if (action==##Examine) rfalse;
               "The mirror is too high up, out of reach.";
            ]

the player will only be able to examine the mirror, and nothing else.
This prevents the library from ever saying something like "You push the
mirror but nothing happens.", which would be misleading.


An action corresponds to a routine somewhere which actually carries out
the looking, throwing at, taking and so forth.  (Well, in fact there are
also some special actions called "fake actions" which don't correspond to
such routines, as we shall come to later.)  These have the same name as the
action with "Sub" (short for "subroutine") on the end: so, "TakeSub" for
instance.


The actions implemented by the library are in three groups:

 1. Quit, Restart, Restore, Verify, Save, ScriptOn, ScriptOff,
    Brief, Normal, Verbose;
  
 2. Inv, Take, Drop, Remove, PutOn, Insert, Transfer, Empty,
    Enter, Exit, Go, Look, Examine, Give,
    Unlock, Lock, SwitchOn, SwitchOff, Open, Close, Disrobe, Wear, Eat;

 3. Yes, No, Burn, Pray, Wake, WakeOther [person],
    Kiss, Think, Smell, Listen, Taste, Touch, TouchThing, Dig,
    Cut, Jump [jump on the spot], JumpOver, Tie, Drink,
    Fill, Sorry, Strong [swear word], Mild [swear word], Attack, Swim,
    Swing [something], Blow, Rub, Set, WaveHands [ie, just "wave"],
    Wave [something], Pull, Push, PushDir [push something in a direction],
    Turn, Squeeze, LookUnder [look underneath something], Search,
    ThrowAt, Answer, Buy, Ask, Sing, Climb, Wait, Sleep

Note that the player can type all manner of things to get these.  For
instance, "take off shirt" and "remove the shirt" both cause the Disrobe
action.  Your code can ignore this complication.

Group 1 actions are called "meta" - they are outside the game proper, and
your code is unable to interfere with them.  (If you want a room where the
game can't be saved, as for instance "Spellbreaker" cunningly does, you'll
have to tamper with SaveSub directly, say with a Replacement routine: see
later.)

Group 2 actions, by default, actually do something; group 3 actions,
by default, do nothing but reply with a generally negative message.


Although all actions call the "before" routines, not all of them bother to
check "after" routines.  For instance, since the built-in SmellSub routine
just says "You smell nothing out of the ordinary", there would be no point
calling "after" routines - nothing, after all, has been done.  (These are
the group 3 actions above.)

The ones which actually do something, and call "after", are:

  Inv, Take, Drop, Remove, PutOn, Insert, Exit, Go, Look, Examine, Unlock,
  Lock, SwitchOn, SwitchOff, Open, Close, Disrobe, Wear, Eat, Search.

(Some other group 2 actions use these "after" routines indirectly - if the
player empties a sack out onto the floor, this is deemed to be dropping the
objects within, for instance, and if a sack is emptied into a packing case
this is considered a multiple insertion.)


The library's actions are easily added to.  For instance, add the routine:

     [ BlorpleSub;
         "You speak the magic word ~Blorple~.  Nothing happens.";
     ];

(somewhere after the Initialise routine, say, to be tidy).  There is now
an action "Blorple" (though it doesn't do anything very interesting).  One
can use the command <Blorple>; to make it happen, and could change the
"before" routine of, say, the Corridor, to make Blorple do something
exciting in that one place.  In other words, Blorple is now an action just
like any other.

But the player can't yet type "blorple" and get this response, because
although the action exists, it hasn't been written into the grammar of
the game.  The grammar is a large table (mostly written out in the "Grammar"
library file).  It can easily be added to, and in this case we simply add
the lines

     Verb "blorple"
                *                                -> Blorple;

immediately after the inclusion of the "Grammar" file.  This is about as
simple as grammar lines come, and means that only the word "blorple" can
be used as a verb, and it can't apply to any noun or nouns.

Grammar is more fully described in (14), but looking at the grammar table
in the "Grammar" file will give a fair idea of what it can do.


It is time to be more precise about the exact sequence of events.  Suppose
the player is in the Bedquilt Room, and types "drop oyster".  Once it has
checked that this is a reasonable command, the parser does the following:

   1.  Call GamePreRoutine (if there is one).
       If this returns true, stop here.

   2.  Call the "before" of Bedquilt Room.
       If this returns true, stop here.

   3.  Then the "before" of the oyster.
       If this returns true, stop here.

   4.  Actually drop the object.

   5.  Call the "after" of Bedquilt.
       If this returns true, stop here.

   6.  Then the "after" of the oyster.
       If this returns true, stop here.

   7.  Call GamePostRoutine (if there is one).
       If this returns true, stop here.

   8.  Print "Dropped."

(GamePreRoutine and GamePostRoutine are routines you can optionally
provide to make global rule changes: their use is to be avoided if
possible, as it usually is, for reasons of speed and tidiness.)


---------------------------------------------------------------------------
D4.  Containers, doors, switches and vehicles
---------------------------------------------------------------------------


Objects can be inside or on top of one another.  An object which has
"container" can contain things, like a box: one which has "supporter"
can hold them up, like a table.  (An object can't have both at once.)
It can hold up to 100 items, by default: this is set by the "capacity"
property.

However, one can only put things inside something which has "open".
If it has "openable", the player can open and close it at will.  (Unless
it also has "locked".)

To complicate matters, some containers are "transparent" (so that the
player can see inside them even when they are closed) and some are not.


Containers (and supporters) are able to react to things being put inside
them, or removed from them: for example,

     Object bag "toothed bag" room
       with name "toothed" "bag",
            description "A capacious bag with a toothed mouth.",
            before
            [; LetGo: "The bag defiantly bites itself \
                       shut on your hand until you desist.";
               Close: "The bag resists all attempts to close it.";
            ],
            after
            [; Receive:
                   print "The bag wriggles hideously as it swallows ";
                   DefArt(inp1); ".";
            ],
       has  container open;

makes a rather acquisitive bag:

    >put fish in bag
    The bag wriggles hideously as it swallows the fish.

    >get fish
    The bag defiantly bites itself shut on your hand until you desist.

(LetGo and Receive are actually two of the "fake" actions: they are
the actions Insert and Remove looked at from the other container's point
of view.  It's quite straightforward to define fake actions.  See the
way these are defined in "Verblib" to get the idea.)


Objects which have "locked" cannot be opened, be they doors or containers
(or both).  But objects which have "lockable" can be locked or unlocked
with the appropriate key, which is declared in the "with_key" property.
(If it is undeclared, then no key will fit.)

As a final example of a container, this is a fairly typical locked
cupboard:

       Nearby cupboard "bolted cupboard"
         with name "bolted" "cupboard",
              describe
              [; if (self hasnt open)
                     "^A shut cupboard is bolted to one wall.";
                 "^Bolted up on one wall is an open cupboard.";
              ],
              with_key key
         has  locked container openable lockable static;



A useful kind of object is a "door".  This need not literally be a door:
it might be a rope-bridge or a ladder, for instance.  To set up a door:

    (a)  give the object the "door" attribute;

    (b)  set the "door_to" property to the destination;

    (c)  set the "door_dir" property to the direction which that would be,
         such as "n_to";

    (d)  make the room's map connection in that direction point to the
         door itself.

For example, here is a closed and locked door:

     Object In_Immense_N_S_Passage "Immense N/S Passage"
       with description "One end of an immense north/south passage.",
            s_to In_Giant_Room,
            n_to RustyDoor;

     Nearby RustyDoor "rusty door"
       with description "It's just a big iron door.",
            name "door" "hinge" "hinges" "massive" "rusty" "iron",
            when_closed
                "The way north is barred by a massive, rusty, iron door.",
            when_open
                "The way north leads through a massive, rusty, iron door.",
            door_to In_Cavern_With_Waterfall,
            door_dir n_to,
            with_key set_of_keys
       has  static door openable lockable locked;

(Note that the door is "static" - otherwise the player could pick it up and
walk away with it!)  The properties "when_closed" and "when_open" give
descriptions appropriate for the door in these two states.

Doors are rather one-way: they are only really present on one side.  If
a door needs to be accessible (openable and lockable from either side),
a neat trick is to make it present in both locations and to fix the
door_to and door_dir to the right way round for whichever side the player
is on.  Here, then, is a two-way door:

     Object Grate "steel grate"
       with name "grate" "lock" "gate" "grille" "metal"
                 "strong" "steel" "grating",
            description "It just looks like an ordinary grate \
                mounted in concrete.",
            with_key set_of_keys,
            door_dir
            [; if (location==Below_The_Grate) return u_to; return d_to;
            ],
            door_to
            [; if (location==Below_The_Grate) return Outside_Grate;
               return Below_The_Grate;
            ],
            describe
            [; if (self has open) "^The grate stands open.";
               if (self hasnt locked) "^The grate is unlocked but shut.";
               rtrue;
            ],
            found_in  Below_The_Grate  Outside_Grate
       has  static door openable lockable locked;

where Below_The_Grate has u_to set to Grate, and Outside_Grate has d_to
set to Grate.  The grate can now be opened, closed, entered and locked
from above or below.


At first sight, it isn't obvious why doors have the "door_dir" property.
Why does a door need to know which way it faces?  The idea is that if
there's an open door in the south wall, a player can go through it either
by typing "south" or "enter door".  So what the Enter action does (if
the door is actually open) is to cause the Go action with the given
direction.

This has one practical consequence: if you put "before" and "after" routines
on the Enter action for the Grate, they only apply to a player typing
"enter grate" and not to one just typing "down".  The way to trap both at
once is to write a routine for the d_to property of Outside_Grate.



Objects can also be "switchable".  This means they can be turned off or
on, as if they had some kind of switch on them.  The object has the
attribute "on" if it's on.  For example:

     Object searchlight "Gotham City searchlight" skyscraper
       with name "search" "light" "template", article "the",
            description "It has some kind of template on it.",
            when_on "The old city searchlight shines out a bat against \
                     the feather-clouds of the darkening sky.",
            when_off "The old city searchlight, neglected but still \
                      functional, sits here."
       has  switchable static;

Here is a lamp whose batteries will some day run down:

     Nearby brass_lantern "brass lantern"
       with name "lamp" "lantern" "shiny" "brass",
            when_off  "There is a shiny brass lamp nearby.",
            when_on   "Your lamp is here, gleaming brightly.",
            time_left 330,
            before
            [; Examine: print "It is a shiny brass lamp";
                     if (brass_lantern hasnt on)
                         ".  It is not currently lit.";
                     if (brass_lantern.time_left < 30)
                         ", glowing dimly.";
                     ", glowing brightly.";
               Burn: <<SwitchOn brass_lantern>>;
               Rub:  "Rubbing the electric lamp is not particularly \
                      rewarding.  Anyway, nothing exciting happens.";
               SwitchOn: if (brass_lantern.time_left <= 0)
                     "Unfortunately, the batteries seem to be dead.";
            ],
            after
            [; SwitchOn: give brass_lantern light;
               SwitchOff: give brass_lantern ~light;
            ],
       has  switchable;


An object which has "enterable" can be got inside.  (The idea of "inside"
here is that the player is only half-in, as with a car or a psychiatrist's
couch.  If it's more like a prison cell, then it should be a separate
place.)

     Object car "little red car" cave
       with name "little" "red" "car",
            longdesc "Large enough to sit inside.  Among the controls is a \
                      prominent on/off switch.  The numberplate is KAR 1.",
            initpos "The red car sits here, its engine still running.",
            closedpos "A little red car is parked here.",
            before
            [; Go: if (car has on) "Brmm!  Brmm!";
                   print "(The ignition is off at the moment.)^";
            ],
       has  switchable enterable static container open;

This demonstrates a special rule.  If a player is inside an enterable object
and tries to move, say "north", the before routine for the object is called
with the action Go, and n_obj as the noun.  If it returns false, the game
disallows the attempt to move (as usual).  If it returns true, then the
vehicle and player move together via the game's usual map.


---------------------------------------------------------------------------
D5.  Living creatures
---------------------------------------------------------------------------


Animate objects (such as sea monsters, mad aunts or nasty little dwarves)
have a property called "life", containing their rules.  This behaves just
like a "before" or "after" routine, but only the following actions apply:

   Order         The player has asked the creature to do something,
                 e.g., by "troll, go south".  action, noun and second are
                 set up as usual: e.g. action=##Go and noun=s_obj.

   Attack        Player tried to attack creature

   Kiss          Tried to kiss

   Answer        The player tried either "answer <word> to troll", or else
                 "troll, <something not understood>".  In either case
                 special_word is set to the dictionary entry of the first
                 word, or 0 if it isn't in the dictionary, and
                 special_number is set to an attempt to read it as a
                 number.  (For instance, "computer, 143" will cause
                 special_number to be set to 143.)

   Ask           "ask troll about ..." - similarly special_word and
                 special_number are set up

   Give          noun holds the object number of what the player has tried
                 to give (or feed) the creature.  (Unless code is written
                 the creature will "seem uninterested" and nothing will
                 happen.)

   ThrowAt       noun holds whatever the player tried to throw.

If the routine doesn't exist, or returns false, events will take their
usual course.  Here is a full example:

     Object snake "sullen snake" mists
       with name "sullen" "snake",
            description "Perhaps a boa constrictor.  Perhaps not.",
            life
            [; Order: if (action==##Go)
                        "The snake wasn't born yesterday.";
               Attack:  "Lazily, the snake dodges your attack.";
               Kiss:    "What a repulsive idea.";
               ThrowAt: print "Effortlessly, the snake dodges ";
                        DefArt(inp1); ".";
               Answer:  "The snake disdains to comment.";
               Ask:     if (noun == 'mists')
                            "~Healthy and good for the skin, mists.~";
                        "~I'm only the obligatory monster.~";
               Give:    if (noun has edible)
                        {   remove noun;
                            "~Mmm!  Thanks!  I still hate you, though.~";
                        }
                        "~Bleurghh!  Are you trying to poison me?~";
            ],
       has  animate;

Of course an "animate" still has "before" and "after" routines like any
other.  (The library understands that, for example, an animate creature
cannot be taken.)


A footnote about Order: Order is another "fake action".  The "before"
and "after" routines of a room can't detect the player having given a
request to another character.  Also, if you want the snake to obey when
the player tells it to take something, you have to write the code to do
the actual taking yourself.  This isn't any problem in practice.  (Try
looking at the code for "Christopher" in the "Toyshop" example game.)


---------------------------------------------------------------------------
D6.  Classes of objects
---------------------------------------------------------------------------


An example of a class is:

      Class Treasure
       with depositpoints 10,
            after
            [; Take: if (location==Inside_Building)
                          score=score-self.depositpoints;
                     score=score+5;
                     "Taken!";
               Drop: score=score-5;
                     if (location==Inside_Building)
                     {   score=score+self.depositpoints;
                         "Safely deposited.";
                     }               
            ],
       has  valuable;

Any object declared as being of this class, such as:

     Nearby bars_of_silver "bars of silver"
      class Treasure
       with description "They're probably worth a fortune!",
            initial "There are bars of silver here!",
            article "some",
            name "silver" "bars";

inherits the "depositpoints" value of 10 and the rules about taking
and dropping.  If the silver bars had themselves set "depositpoints"
to 15, say, then the value would be 15: i.e., the class would be
over-ridden.

We could also, for instance, have:

     Nearby cake "valuable cake"
      class Treasure
       with description "Exquisite!",
            initial "There's a valuable cake here!",
            after
            [; Eat: "Your most expensive meal in ages, but worth it.";
            ],
            name "valuable" "cake"
       has  edible;

Now the cake has two "after" rules.  Both apply, but the rule in the cake
itself takes precedence, i.e., happens first.


An object can inherit from several classes at once (in sequence, left to
right).  A class can itself inherit from other classes.  The full rules
are in (13).


---------------------------------------------------------------------------
D7.  Daemons and the passing of time
---------------------------------------------------------------------------


By tradition, a "daemon" is an event which happens each turn while it is
active.  The classic example is of a dwarf which appears in the cave: it
has a daemon routine attached to move it about, make it throw knives at
the player and other pleasantries.

Each object can have its own daemon.  It is set going by calling the
routine

     StartDaemon(the-object);

and can be turned off again with

     StopDaemon(the-object);

Once it's active, its "daemon" property is called as a routine each turn.
(Be warned: this continues to happen even if the daemon is associated with
a room or item which has been left behind by the player.)


A "timer" (these are traditionally called "fuses" but the author can stand
only so much tradition) can alternatively be attached to an object.
(An object can't have both a timer and a daemon active at the same time.)
A timer is started with

     StartTimer(the-object, time);

in which case it will "go off" (alarm clock-style) in the given number of
turns.  This means that its "time_out" routine will be called, once and
once only, at this time.

It can be deactivated (so that it will never go off) by calling

     StopTimer(the-object);


Timers and daemons are _required_ to provide a "time_left" property.  In
the case of a daemon, this is set to -1 when the daemon is active.  In the
case of a timer, it's the number of turns left before the timer goes off.
This can be manipulated and looked at by the program.  Warning: if you
forget to provide "time_left", the game may crash!


If you're writing a game with time instead of score/turns on the status
line, you can set the time by

   SetTime( hours*60+minutes, rate);

where rate=0 means the time is left alone, and if rate>0 that many
minutes pass every action, whereas if rate<0 that many actions pass
for every minute.

The current time is held in a variable, "the_time".  It's a 24-hour
clock.

Calling SetTime also tells the library that the game is a "time" rather than
"score" game.  Remember to call it in Initialise().


Exactly what happens at the end of each turn is:

  1.  The turns counter is incremented.

  2.  The time moves on.

  3.  Daemons and timers are run (in no particular order).

  4.  The "each_turn" routine of the current room is run.

  5.  The game's global TimePasses() routine is called.

  6.  Light is re-considered (it may have gone dark as a result
        of what has happened).

This sequence is abandoned if at any stage the player dies.


---------------------------------------------------------------------------
D8.  Calls to and from the library
---------------------------------------------------------------------------


A game using the library _must_ provide one routine:

  Initialise() is called before the banner is printed up, and one thing it
  _must_ do is to set "location" to the initial game location.

It must also define two string constants, Story and Headline, e.g.:

     Constant Story "ZORK II";
     Constant Headline "^An Interactive Plagiarism^\
                 Copyright (c) 1993 by Ivan O. Ideas.^";


In addition, it may (but need not) provide the following routines:

  TimePasses() is called after every turn (but not, for instance, after a
    command like "score" or "save").  It's much more elegant to use timers
    and daemons, or "each_turn" routines for individual rooms - using this
    is a last resort.

  PrintRank() completes the printing of the score.  (You might want to change
    this, so as to make the ranks something like "junior astronaut" or
    "master catburglar" or whatever suits your game.)

  DarkToDark() is called when a player goes from one dark room into another
    one.  If you want, you can take the opportunity to kill the player off
    for doing this.

  DeathMessage() is to print up "You have died" style messages.  To kill a
    player, set "deadflag" to 1.  To make a player win, set "deadflag" to 2.
    If you set "deadflag" to any other value (3, 4, ...) this routine is
    called to say what happened, e.g. "You have changed".

  LookRoutine() is called at the end of every location description.

  NewRoom() is called when the room changes, before any description of it
    is printed.  (This happens no matter how the change of room occurred.)

  PrintTaskName() prints the name of a game task (such as "driving the
    car").

  Amusing() is called to print some amusing afterword when the game is won
    (for instance, it might advertise some features which a successful
    player might never have noticed).  (But only if you have defined the
    constant AMUSING_PROVIDED in your own code.)

  GamePreRoutine() and GamePostRoutine() - see below.

  ParseNumber - allows numbers in unusual formats to be parsed.  Sometimes
    it's useful for the parser to be able to understand numbers in
    strange formats: Roman numerals, letter codes, long telephone numbers,
    etc.  Accordingly you can provide

     [ ParseNumber buffer length;
       ...returning 0 if no match is made, or the number otherwise...
     ];

    to examine the "number" held in ASCII characters at the given byte
    address, of given length.  If this is present, then when special_number
    is set, it will be set using this routine if possible first (and then
    lapse into its usual parsing if it makes no match).

  AfterLife - called when death takes place, but before any
    *** You have died *** message appears.  If it resets deadflag back to 0,
    the player effectively gets resurrected.


Apart from these, the only routines of yours which are ever called are those
attached to your objects.


The library contains several useful routines which can be called from time
to time.  Among these are:

  DefArt(obj): a useful little routine which prints the name of the
      object, with its definite article attached.  This causes, for example,

          the platinum bar
          Aunt Jemima
          Elbereth

      (an object with "proper" - meaning, the name is a proper noun - does
      not have "the" printed in front).

  CDefArt(obj): the same but with a capital letter at the front.

  IndefArt(obj): similar, but with the indefinite article:

          a platinum bar
          an orange balloon
          your Aunt Jemima
          some bundles of reeds
          far too many marbles

      (the indefinite article is "a" unless set by the "article" property).

  DescribeObj(obj): produces a more complete description:

          an electric torch (providing light)
          a rucksack (which is open and contains a scarlet fish)

  Achieved(task): declares a certain task as completed (see below)

  PlayerTo(place): moves the player to a new place (see below)

  SetTime(now, step): sets the 24-hour clock (see above)

  YesOrNo(): asks the player a yes-no question, returning true if the
      reply was yes.  (It doesn't print the question.)


Occasionally you need to rewrite one of the library routines.  But
the danger of doing so is that it is then necessary to keep a copy
of the library for every game, which is clearly unsatisfactory.  So:
the directive

    REPLACE BurnSub;

(if placed before the library files are included) tells Inform to
ignore the definition of "BurnSub" in the library files.  (You then
have to define a routine called BurnSub yourself.)



The library won't allow the player to carry an indefinite number of
objects: the limit allowed is the constant MAX_CARRIED, which you
may define if you wish.  (If you don't define it, it's 100, which
roughly removes the rule.)

If you define SACK_OBJECT to be some container, then the player will
automatically put old, least-used objects away in it as the game
progresses.  (If not, nothing happens.)


Another constant is AMUSING_PROVIDED.  If you define this, the library
knows to put an "amusing" option on the menu after the game is won.
It will then call Amusing() from your code when needed.


In debugging, it's sometimes tricky to work out exactly what is
happening and in what order.  If a game is compiled with the constant
DEBUG defined, then it will print out details of every object routine
ever called, which makes it much easier to follow what's going on.


The other constants you are allowed to define help the score routines
along.  These are:

   MAX_SCORE     The maximum game score (default 0)
   NUMBER_TASKS  Number of individual "tasks" to perform (1)
   OBJECT_SCORE  Bonus for first picking up a "scored" object (4)
   ROOM_SCORE    Bonus for first entering a "scored" room (5)

and then the individual tasks have scores, as follows:

   Global task_scores initial t1 t2 ... tn;

Within your code, when a player achieves something, call Achieved(task)
to mark that the task has been completed.  It will only award points if
this task has not been completed before.

There do not have to be any "tasks": there's no need to use the scoring
system provided.  Tasks (and the verb "full" for full score) will only
work at all if you define the constant TASKS_PROVIDED.


The library maintains light by itself.  It will cope, for instance, with
what happens if a dwarf picks up the light source and walks away, or if
the light source is shut up in an opaque box.  The program can give
or take away the light attribute to anything, or move anything anywhere,
without having to think about whether or not this makes the room dark.


To move the player about (for teleportation of some kind), two things
must be done: to move the player object, by

   move player to newroom;

and also to change the "location" variable, which says which room to
display on the status line:

   location = newroom;

In general location can be different from parent(player) in two ways: it
can be "Darkness", or it can be the actual room while parent(player) is
something the player sits inside, like (say) a jeep.

The cleanest way to move the player is call PlayerTo(place); which also
sorts out things like only printing the new room's description if there's
enough light there to see by.  (Calling PlayerTo(place, 1); will move the
player without printing anything, and in particular without printing any
room description.)


Finally, you might want the parser to know about plural nouns.  Many
games involve collecting a number of similar items, say a set of nine
crowns in different colours.  Then you'd want the parser to recognise
things like

   > drop all of the crowns except green

for instance.  It can do this, provided it's told that "crowns" is the
plural of crown, and provided it's told how to recognise a crown when
it sees one.

You need not declare any, but are allowed up to three such plurals, declared
in your Initialise() routine by lines like:

    plural_word1 = 'crowns'; plural_filter1 = is_crown;

(and so on, for 2 and 3 as needed).  You must already have declared is_crown
as an Attribute, and flagged all the crowns with this attribute.  ('crowns'
is a construction which puts the word "crowns" into the dictionary.)


---------------------------------------------------------------------------
D9.  Table of properties and attributes
---------------------------------------------------------------------------


The following are the attributes defined by the library, as they apply
to objects:


      light            gives off light
      concealed        invisible, but touchable
      worn             currently worn clothing
      clothing         can be clothing
      animate          is a living creature of some kind
      female           gender female (otherwise male) - used for eg "her"
      proper           short name is proper noun
      moved            has been picked up at some time
      door             is a doorway of some kind
      container        can contain things (eg, a bottle)
      supporter        can support things (eg, a table)
      transparent      interior of container can be seen when closed
      open             container or doorway which is open
      openable         container or doorway open/closeable to player
      workflag         (flag used by parser)
      enterable        can be entered (eg, car or fireplace)
      scenery          not described by Look, nor moveable (eg, rock face)
      static           immovably fixed in place (eg, Y2 rock)
      direction        (is one of the compass directions)
      lockable         can be locked or unlocked (with suitable key)
      locked           is presently locked
      switchable       can be switched on and off
      on               is presently switched on
      edible           can be eaten
      autosearch       examining this object causes it also to be searched
                         (in particular, looked inside if it's a container)
      scored           award points for first taking
      talkable         is not an animate creature, but can nevertheless
                         be talked to (eg, a microphone)
      absent           a removed object normally found in several places
      general          general-purpose flag

"general" is free for the user (as are the remaining spare attributes) and
conventionally means "the puzzle associated with this object has been
solved".

An object cannot be both a container and a supporter.

Most of the above attributes make no sense for locations.  The attributes
applying to them are:

      light            there's ambient light
      visited          place has been visited at some time
      scored           award points for first visit

(If you simply never want to have darkness, a sneaky way of doing it is to
put the line

    give player light;

in Initialise().  The game works as if the player herself was glowing
enough to provide light to see by.  In every situation, then, it's light.)


Here are the properties defined and used by the library:

                  Default value    Use
                    if not 0
      name (*)                     for an object:
                                       dictionary words referring to it
                                   for a room:
                                       dictionary words which refer to
                                       "irrelevant" things in a room

      description                  for an object:
                                       examine description of an object,
                                       or routine to print one
                                   for a room:
                                       long description of a room,
                                       or routine to print one

      article       "a"            indefinite article (objects only)

      initial                      for an object:
                                       initial description of an object
                                       not yet picked up
                                   for a room:
                                       routine called when the room is
                                       entered, before its description is
                                       printed

      describe                     for an object:
                                       routine to describe it during Look
                                       (this over-rides its "initial")
                                   for a room:
                                       routine to print a long description
                                       (this over-rides its "description"
                                       and is provided for consistency)
                                   (note: "describe" can only be a routine)

      before        $ffff          routine for altering rules before actions
      after         $ffff          and after actions
      life          $ffff          and rules for "animate" creatures


      n_to   s_to  (**)            for a room:
      e_to   w_to                      map connections to other rooms,
      ne_to  se_to                     or strings to print if can't go,
      nw_to  sw_to                     or routines to call to determine this 
      u_to   d_to
      in_to  out_to

      cant_go        "You can't go that way."
                                   for a room:
                                       printed when player tries to go an
                                       impossible way from a location

      door_to                      place that a "door" connects to
                                       or routine returning this
      door_dir                     direction which goes through it
                                       or routine returning this

      when_closed                  description of a door which is closed
      when_open                    description of a door which is open

      when_on                      description of a switchable which is on
      when_off                     description of a switchable which is off

      with_key                     key to unlock a lockable object

      capacity      100            maximum number of things a container
                                   or supporter can contain or support

      found_in                     for an object:
                                       list of rooms in which it is found

      time_left (***)              turns left until timer goes off
      time_out                     routine to run when it does

      daemon                       daemon routine (called each turn while
                                   active)

      each_turn                    for a room:
                                       called each turn the player is in
                                       the room

      number                       this is provided as a general-purpose
                                   integer variable (to save on globals):
                                   the library never does anything to or
                                   with it

(*) "name" is a property actually defined in the syntax of Inform itself.
But this is the use to which it is put by the library routines.

(**) warning: do not confuse these with the direction objects n_obj,
s_obj... which are what noun, second etc would be set to in a command
mentioning a direction (such as "push the car north").
 
(***) warning: this _must_ be declared for any object which is going to
be used as a timer or a daemon, or the Z-machine may crash at run-time.


---------------------------------------------------------------------------
D10.  Customising the parser
---------------------------------------------------------------------------


Inform 5 has a variety of new features to make customising the parser
possible: for instance, numbers can be specified directly in grammar
tables, like so:

     Verb "type"
                     * number                         -> TypeNum
                     * special                        -> TypeWord;

so that the TypeNum action will happen if the player types

     > type 504

but TypeWord will happen if the player types any other text.  The routine
which parses numbers can itself be rewritten to allow, say, Roman numerals.


We can also sort out objects according to attributes that they have:

     Verb "use" "employ" "utilise"
                     * edible                         -> Eat
                     * clothing                       -> Wear
     ...and so on...
                     * enterable                      -> Enter;

In fact, you can supply a routine to make almost any parsing decision.
For instance:

     [ French w n; w=NextWord();
         if (w=='un' or 'une') n=1;
         if (w=='deux')        n=2;
         if (w=='trois')       n=3;
         if (w=='quatre')      n=4;
         if (w=='cinq')        n=5;
         if (n==0) return -1;
         parsed_number = n; return 1;
     ];

will detect French numbers, and can be used by something like:

     Verb "type"
                     * French                         -> TypeFrenchNum
                     * number                         -> TypeNum;

The specification for a routine like this is as follows: it is to use
NextWord (possibly several times) to look at the appropriate words which
the user has typed.  The variable wn (current word number) may also be
helpful.  The routine must return:

     -1      if the user's input isn't understood,
      1      if there is a numerical value resulting
                 (and the value should be put in the variable parsed_number)
      n      if object n is understood.

On an unsuccessful match (returning -1) it doesn't matter what the final
value of wn is.  On a successful one it should be left pointing to the next
thing after what the routine understood.


Another possibility is as follows.  Suppose we want a verb, "free", but only
to release animals from a cage:

     [ CagedCreature;
         if (noun in wicker_cage) rtrue;
         rfalse;
     ];

     Verb "free" "release"
                     * noun=CagedCreature             -> FreeAnimal;

So that only nouns which pass the CagedCreature test are allowed.


The above examples are slightly contrived because they create wholly
new and unlikely verbs.  More often, one would want, say, a big array of
labelled buttons, any of which could be pushed.  So the verb for "push"
ought to be extended by:

     Extend "push"
                     * Button                         -> PushButton;   

and a routine called Button could be written to accept things like

    "button j16", "d11", "a5 button".

The point of Extend is that it is against the spirit of the library to
alter the standard library files - including the grammar table - unless
absolutely necessary.

Normally, extra lines of grammar are added at the bottom of those already
there.  This may not be what you want.  For instance, "take" has a grammar
line

                     * multi                          -> Take

quite early on.  So if you want to add a grammar line which diverts
"take something-edible" to a different action, like so:

                     * edible                         -> Eat

then it's no good adding this at the bottom of the Take grammar, because
the earlier line will always be matched first.  Thus, you really want
to insert your line at the top, not the bottom, in this case.  The right
command is

     Extend "take" first
                     * edible                         -> Eat;
  

You might want to actually replace the old grammar completely, not just
add a line or two.  For this, use

     Extend "push" replace
                     * Button                         -> PushButton;

and now "push" can be used only in this way.


As an example (suggested by a frustrated Inform 4 user), suppose we have
a spaceship which has a control panel with five sliding controls, each of
which can be set to a numerical value.  Now we could implement these with
five separate objects, essentially duplicates of each other.  (And by
using a class definition, this wouldn't look too bad.)  But if there were
500 slides this would be less reasonable.  So:


     [ ASlide w n;
        if (location~=Machine_Room)            !  Slides only make sense in
            return -1;                         !  the Machine Room
        w=NextWord();
        if (w=='slide') w=NextWord();
        n=0;
        if (w=='first' or 'one')   n=1;
        if (w=='second' or 'two')  n=2;
        if (w=='third' or 'three') n=3;
        if (w=='fourth' or 'four') n=4;
        if (w=='fifth' or 'five')  n=5;
        if (n==0) return -1;                   !  Failure!
        w=NextWord();
        if (w~='slide') wn--;                  !  Move word counter back to
                                               !  first misunderstood word
        parsed_number=n;
        return 1;                              !  Success!
     ];
     
     Global slide_settings data 10;            !  Ten bytes of data to hold
                                               !  five words for the settings
                                               !  (all initially zero)
     
     !  An interesting point here is that "noun" and "second" contain the
     !  appropriate numbers, and not objects: this all happens automatically

     [ SetSlideSub;
        slide_settings-->(noun-1) = second;
        print_ret "You set slide number ", noun,
                  " to the value ", second, ".";
     ];
     
     [ XSlideSub;
        print_ret "Slide number ", noun, " currently stands at ",
            slide_settings-->(noun-1), ".";
     ];
     
     Extend "set" first
                * ASlide "to" number                  -> SetSlide;
     Extend "push" first
                * ASlide "to" number                  -> SetSlide;
     Extend "examine" first
                * ASlide                              -> XSlide;

This results in something like:

     >look

     Machine Room
     There is a control panel here, with five slides, each of which can be
     set to a numerical value.

     >push slide one to 5
     You set slide number 1 to the value 5.

     >examine the first slide
     Slide number 1 currently stands at 5.

     >set four to 6
     You set slide number 4 to the value 6.


---------------------------------------------------------------------------
Appendix B:  The Craft of the Adventure
---------------------------------------------------------------------------


     "Skill without imagination is craftsmanship and gives us
     many useful objects such as wickerwork picnic baskets.
     Imagination without skill gives us modern art."

          (Tom Stoppard, "Artist Descending A Staircase")


Design is both an art and a craft.  Whereas art cannot be taught, only
commented upon, craft at least can be handed down: but the tricks of the
trade do not make an elegant narrative, only a catalogue.  This appendix
contains just such a string of grits of wisdom and half-baked critical
opinions, which may well leave the reader feeling unsatisfied.  One can only
say to such a reader that any book claiming to reveal the secret of how to
paint, or to write novels, or to have ideas, should be recycled at once into
something more genuinely artistic, say a papier-mache sculpture.

If there is any theme here, it is simply that standards count for something.


The author of a text adventure has to be schizophrenic in a way that the
author of a novel does not.  The novel-reader does not suffer as the player
of a game does: she needs only to keep turning the pages, and can be trusted
to do this by herself.  The novelist may worry that the reader is getting
bored and discouraged, but not that she will suddenly find pages 63 to the
end have been glued together just as the plot is getting interesting.

Thus, the game author has continually to worry about how the player is
getting along, whether she is lost, confused, fed up, finding it too tedious
to keep an accurate map: or, on the other hand, whether she is yawning
through a sequence of easy puzzles without much exploration.  Too difficult,
too easy?  Too much choice, too little?

On the other hand, there is also a novel to be written: the player may get
the chapters all out of order, the plot may go awry, but somehow the author
has to rescue the situation and bind up the strings neatly.  Our player
should walk away thinking it was a well-thought out story: in fact, a novel,
and not a child's puzzle-book.

Thus, although this article is about design, it begins with the player's
eye view.


Then, too, an adventure game is a crossword at war with a narrative.  Design
sharply divides into the global - plot, structure, genre - and the local -
puzzles and rooms, orders in which things must be done.  And this article
divides accordingly.


---------------------------------------------------------------------------
B1. A Bill of Player's Rights
---------------------------------------------------------------------------


     "In an early version of Zork, it was possible to be killed by
     the collapse of an unstable room. Due to carelessness with
     scheduling such a collapse, 50,000 pounds of rock might fall on
     your head during a stroll down a forest path. Meteors, no doubt."

          (P. David Lebling, "Zork and the Future of Computerized
          Fantasy Simulations")


  W. H. Auden once observed that poetry makes nothing happen.  Adventure
games are even more futile: it must never be forgotten that they
intentionally annoy the player most of the time.  There's a fine line
between a challenge and a nuisance: and so the designer should think, first
and foremost, like a player, not a programmer or even an author.

  With that in mind, I hold the following rights to be self-evident:


    1.  Not to be killed without warning

  At its most basic level, this means that a room with three exits, two of
which lead to instant death and the third to treasure, is unreasonable
without some hint.  On the subject of which:

    2.  Not to be given horribly unclear hints
 
  Many years ago, I played a game in which going north from a cave led to a
lethal pit.  The hint was: there was a pride of lions carved above the
doorway.  Good hints can be skilfully hidden, or very brief (I think, for
example, the hint in the moving-rocks plain problem in "Spellbreaker" is a
masterpiece) but should not need explaining even after the event.

  Survival is not enough.  Ideally, we would like...

    3.  To be able to win without experience of past lives

  This rule is very hard to abide by.  Here are three examples:

      (i)  There is a nuclear bomb buried under some anonymous
           floor somewhere, which must be disarmed.  The player knows
           where to dig because, last time around, it blew up there.

      (ii) There is a rocket-launcher with a panel of buttons, which looks
           as if it needs to be correctly programmed.  But the player
           can misfire the rocket easily by tampering with the controls
           before finding the manual.

      (iii) (This from "The Lurking Horror".)  Something needs to be cooked
           for the right length of time.  The only way to find the right
           time is by trial and error, but each game allows only one trial.
           On the other hand, common sense suggests a reasonable answer.

  Of these (i) is clearly unfair, most players would agree (ii) is fair
enough and (iii), as tends to happen with real cases, is border-line.

  In principle, then, a good player should be able to play the entire game
out without doing anything illogical, and, in similar vein:

    4.  To be able to win without knowledge of future events

  For example, the game opens near a shop.  You have one coin and can buy a
lamp, a magic carpet or a periscope.  Five minutes later you are transported
away without warning to a submarine, whereupon you need a periscope.  If you
bought the carpet, bad luck.

    5.  Not to have the game closed off without warning

  Closed off meaning that it would become impossible to proceed at some
later date.  If there is a papier-mache wall which you can walk through at
the very beginning of the game, it is extremely annoying to find that a
puzzle at the very end requires it to still be intact, because every one of
your saved games will be useless.  Similarly it is quite common to have a
room which can only be visited once per game.  If there are two different
things to be accomplished there, this should be hinted at.

  In other words, an irrevocable act is only fair if the player is given
due warning that it would be irrevocable.

    6.  Not to need to do unlikely things

  For example, a game which depends on asking a policeman about something he
could not reasonably know about.  (Less extremely, the problem of the
hacker's keys in "The Lurking Horror".)  Another unlikely thing is waiting
in dull places.  If you have a junction at which after five turns an elf
turns up bearing a magic ring, a player may well never spend five
consecutive turns there and will miss what you intended to be easy.  ("Zork
III" is very much a case in point.)  If you want the player to stay
somewhere for a while, put something intriguing there.

    7.  Not to need to do boring things for the sake of it

  In the bad old days many games would make life difficult by putting
objects needed to solve a problem miles away from where the problem was,
despite all logic - say, putting a boat in the middle of a desert.  Or, for
example, a four-discs tower of Hanoi puzzle might entertain.  But not an
eight-discs one.  And the two most hackneyed puzzles - only being able to
carry four items, and fumbling with a rucksack, or having to keep finding
new light sources - can wear a player's patience down very quickly.

    8.  Not to have to type exactly the right verb

  For instance, "looking inside" a box finds nothing, but "searching" it
does.  Or consider the following dialogue (amazingly, from "Sorcerer"):

    >unlock journal
    (with the small key)
    No spell would help with that!

    >open journal
    (with the small key)
    The journal springs open.

This is so misleading as to constitute a bug.  But it's an easy design fault
to fall into.  (Similarly, the wording needed to use the brick in "Zork II"
strikes me as quite unfair.  Or perhaps I missed something obvious.)  Consider
how many ways a player can, for instance, ask to take a coat off:

    remove coat / take coat off / take off coat / disrobe coat
    doff coat/�shed coat

(Believe it or not, play-testers have asked me to implement "don" and
"doff".)  Nouns also need...

    9.  To be allowed reasonable synonyms

  In the same room in "Sorcerer" is a "woven wall hanging" which can instead
be called "tapestry" (though not "curtain").  This is not a luxury, it's an
essential.  For instance, in "Trinity" there is a charming statue of a
carefree little boy playing a set of pan pipes.  This can be called the
"charming" or "peter" "statue" "sculpture" "pan" "boy" "pipe" or "pipes".
And objects often have more than 10 nouns attached.

    10.  To have a decent parser

  If only this went without saying.  At the very least it should provide for
taking and dropping multiple objects.  Some suggestions for a decent
specification are given in Appendix B5.


  Since only God stops with ten commandments, here are seven more.  These
are rather more matters of opinion:

    11.  To have reasonable freedom of action

  Being locked up in a long sequence of prisons, with only brief escapes
between them, is not all that entertaining.  After a while the player begins
to feel that the designer has tied him to a chair in order to shout the plot
at him.  This is particularly dangerous for adventure game adaptations of
books (and most players would agree that the Melbourne House adventures
based on "The Lord of the Rings" suffered from this).

    12.  Not to depend much on luck

  Small chance variations add to the fun, but only small ones.  The thief in
"Zork I" seems to me to be just about right in this respect, and similarly
the spinning room in "Zork II".  But a ten-ton weight which fell down and
killed you at a certain point in half of all games is just annoying.

  There is much to be said for varying messages which occur very often (such
as, "You consult your spell book.") in a fairly random way, for variety's
own sake.

    13.  To be able to understand a problem once it is solved

  This may sound odd, but many problems are solved by accident or trial and
error.  A guard-post which can be passed if and only if you are carrying a
spear, for instance, ought to indicate somehow that this is why you're
allowed past.  (The most extreme example must be the notorious Bank of
Zork, of which I've never even understood other people's explanations.)

    14.  Not to be given too many red herrings

  A few red herrings make a game more interesting.  A very nice feature of
"Zork I", "II" and "III" is that they each contain red herrings explained in
the others (in one case, explained in "Sorcerer").  But difficult puzzles
tend to be solved last, and the main technique players use is to look at
their maps and see what's left that they don't understand.  This is
frustrating when there are many insoluble puzzles and useless objects.  So
you can expect players to lose interest if you aren't careful.  My personal
view is that red herrings ought to be clued: for instance, if there is a
useless coconut near the beginning, then perhaps much later an absent-minded
botanist could be found who wandered about dropping them.  The coconut
should at least have some rationale.

  An object is not a red herring merely because it has no game function: a
useless newspaper could quite fairly be found in a library.  But not a
kaleidoscope.

  The very worst game I've played for red herrings is "Sorcerer", which by
my reckoning has 10.

    15.  To have a good reason why something is impossible

  Unless it's also funny, a very contrived reason why something is
impossible just irritates.  (The reason one can't walk on the grass in
"Trinity" is only just funny enough, I think.)

  Moral objections, though, are fair.  For instance, if you are staying in
your best friend's house, where there is a diamond in a display case,
smashing the case and taking the diamond would be physically easy but quite
out of character.  Mr Spock can certainly be disallowed from shooting
Captain Kirk in the back.

    16.  Not to need to be American    (*)

  The diamond maze in "Zork II" being a case in point.  Similarly, it's
polite to allow the player to type English or American spellings or idiom. 
For instance "Trinity" endears itself to English players in that the soccer
ball can be called "football" - soccer is a word almost never used in
England.

    17.  To know how the game is getting on

  In other words, when the end is approaching, or how the plot is
developing.  Once upon a time, score was the only measure of this, but
hopefully not any more.


(*) Several people have politely pointed out to me that my own game
    "Curses" is, shall we say, slightly English.  But then, like any
    good dictator, I prefer drafting constitutions to abiding by them.


---------------------------------------------------------------------------
B2.  A narrative...
---------------------------------------------------------------------------


     "The initial version of the game was designed and
     implemented in about two weeks."

          (P. David Lebling, Marc S. Blank, Timothy A. Anderson,
           "Zork: A Computerized Fantasy Simulation Game")

     "It was started in May of '85 and finished in June '86."

          (Brian Moriarty on "Trinity": which came from earlier
           ideas yet)


1.  Genre and Getting Started
-----------------------------

The days of games which consisted of wandering around doing unrelated things
to get treasures, are long passed, if they ever were.  Even the two originals,
Crowther and Wood's "Adventure" (sometimes called "Colossal Cave") and the
MIT group's "Zork", went to some effort to avoid this.

Their many imitators, in the early years of small computers, often took no
such trouble.  The effect was almost surreal.  One would walk across the
drawbridge of a medieval castle and find a pot plant, a vat of acid, a copy
of Playboy magazine and an electric drill.  There were puzzles without
rhyme or reason.  The player was a characterless magpie always on the
lookout for something cute to do.  The crossword had won without a fight.

"Adventure", one of the most copied and borrowed-from games ever devised,
was in fact very clean in this respect: at its best it had an austere,
Tolkienesque feel, in which magic was scarce, and its atmosphere and
geography was well-judged, especially around the edges of the map:
the outside forests and gullies, the early rubble-strewn caves, the Orange
River Rock room and the rim of the volcano.  Knife-throwing dwarves
would appear from time to time.  But joky town council officers with
clipboards never would.  "Zork" was condensed, less spacious and never
quite so consistent in style: machines with buttons lay side by side with
trolls and vampire bats.  It was a superb implementation, in almost every
respect nicer than "Adventure": yet "Adventure" remains the better game.

By the 1980s better games had settled the point.  Any player dumped in the
middle of one of "The Lurking Horror" (H. P. Lovecraft horror), "Leather
Goddesses of Phobos" (30s racy space opera) or "Ballyhoo" (mournfully
cynical circus mystery) would immediately be able to say which it was.

If there is a moral here, it is that the essential flavour that makes your
game distinctive and yours is genre.  And so the first decision to be made,
when beginning a design, is the style of the game.  Major or minor key,
basically cheerful or nightmarish, or somewhere in between?  Exploration,
romance, mystery, historical reconstruction, adaptation of a book, film
noir, horror?  In the style of Terry Pratchett, Edgar Allen Poe, Thomas
Hardy, Philip K. Dick?  Icelandic, Greek, Chaucerian, Hopi Indian, Aztec,
Australian myth?

A word of warning about adapting books: remember copyright, which has
broader implications than many non-authors realise.  (For instance, fans of
Anne McCaffrey's "dragon" series of novels are allowed to play network games
set on imaginary planets which do not appear in McCaffrey's works, and to
adopt characters of their own invention, but not to use or refer to hers. 
This is a relatively tolerant position on the part of her publishers.)  And
even if no money changes hands, copyright law is enforceable.  The
quotations from games in this article are legal only because brief excerpts
are permitted for critical or review purposes.  Also, be aware that a direct
linear plot is very hard to successfully implement in an adventure game.  It
will be too long (just as a novel is often too large for a film, which is
nearer to a longish short story in scope) and it will involve the central
character making crucial and perhaps unlikely decisions at the right moment.

If the chosen genre isn't fresh and relatively new, then the game had better
be very good.  It's a fateful decision: the only irreversible one.


2.  Research
------------

Design usually begins with, and is periodically interrupted by, research. 
This can be the most entertaining part of the project and is certainly the
most rewarding, not so much because absolute factual accuracy is important
but because it continually sparks off ideas.

Even the original Adventure began as a simulation of a real cave system
(the Mammoth and Flint Ridge caves): one reason for the plausibility of its
underground geography.

A decent town library, for instance, contains thousands of maps of one kind
or another if one knows where to look: deck plans of Napoleonic warships,
small-scale contour maps of mountain passes, city plans of New York and
ancient Thebes, the layout of the U.S. Congress.  There will be photographs
of every conceivable kind of terrain, of most species of animals and plants;
there will be cutaway drawings of a 747 airliner and a domestic fridge;
shelves full of the collected paintings of every great artist from the
Renaissance onwards.  Data is available on the melting point of tungsten,
the distances and spectral types of the nearest two dozen stars, journey
times by rail and road across France.

History crowds with fugitive tales.  A book on the history of trade with
China may, for instance, say:

  A British mission had been briefly imprisoned in the walled city
  during March 1903: when supplies ran low, a Marine officer led a
  diversionary break-out while the others escaped to the Royal Navy
  frigate at anchor, after hiding for two days in an abandoned temple.
  The subsequent diplomatic incident...

Stories have been spun out of less.

Then, too, useful raw materials come to hand.  A book about Tibet may
mention, in passing, the way to make tea with a charcoal-burning samovar. 
So, why not a tea-making puzzle somewhere?  It doesn't matter that there
is as yet no plot to fit it into: if it's in keeping with the genre, it
will fit somewhere.

Research also usefully fills in gaps.  Suppose a fire station is to be
created: what are the rooms?  A garage, a lounge, a room full of uniforms,
yes: but what else?  Here is Stu Galley, on writing the Chandleresque murder
mystery "Witness":

  "Soon my office bookshelf had an old Sears catalogue and a pictorial
  history of advertising (to help me furnish the house and clothe the
  characters), the "Dictionary of American Slang" (to add colour to the
  text) and a 1937 desk encyclopaedia (to weed out anachronisms)."


The peril of research, on the other hand, is that it piles up fact without
end.  It is essential to condense.  Here Brian Moriarty, on research for
"Trinity", which included geological surveys:

  "The first thing I did was sit down and make a map of the Trinity site. It
  was changed about 50 times trying to simplify it and get it down from over
  100 rooms to the 40 or so rooms that now comprise it. It was a lot more
  accurate and very detailed, but a lot of that detail was totally useless."

There is no need to implement ten side-chapels when coding, say, Chartres
cathedral, merely because the real one has ten.


3.  How Plots Start
-------------------

At this point the designer has a few photocopied sheets, some scribbled
ideas and perhaps even a little code - the implementation of a samovar, for
instance - but nothing else.  (There's no harm in sketching details before
having the whole design worked out: painters often do.  Besides, it can be
very disspiriting looking at a huge paper plan of which nothing whatever is
yet programmed.)

It is time for a plot.

Plot begins with the opening message, rather the way an episode of Star Trek
begins before the credits come up.  Write it now.  It ought to be striking
and concise (not an effort to sit through, like the title page of "Beyond
Zork").  By and large Infocom were good at this, and a fine example is Brian
Moriarty's overture to "Trinity":

  Sharp words between the superpowers. Tanks in East Berlin. And now,
  reports the BBC, rumors of a satellite blackout. It's enough to spoil your
  continental breakfast.

  But the world will have to wait. This is the last day of your $599 London
  Getaway Package, and you're determined to soak up as much of that
  authentic English ambience as you can. So you've left the tour bus behind,
  ditched the camera and escaped to Hyde Park for a contemplative stroll
  through the Kensington Gardens.

Already you know: who you are (an unadventurous American tourist, of no
significance in the world); exactly where you are (Kensington Gardens, Hyde
Park, London, England); and what is going on (World War III is about to
break out).  Notice the careful details: mention of the BBC, of continental
breakfasts, of the camera and the tour bus.  More subtly, "Trinity" is a
game which starts as a kind of escapism from a disastrous world out of
control: notice the way the first paragraph is in tense, blunt,
headline-like sentences, whereas the second is much more relaxed.  So a lot
has been achieved by these two opening paragraphs.

The point about telling the player who to be is more subtle than first
appears.  Gender is especially an awkward point.  In some games the player's
character is exactly prescribed: in "Plundered Hearts" you are a particular
girl whisked away by pirates, and have to act in character.  Other games
take the attitude that anyone who turns up can play.  The game assumes
nothing about the player's gender or attitudes.


Anyway, the player knows who he is.  What is he to do?  Even if you don't
want him to know everything yet, he has to have some initial task.

Games vary in how much they reveal at once.  "Trinity", above, is foreboding
but really only tells the player to go for a walk.  "Curses" gives the
player an initial task which is quite easy - look through some attics for a
tourist map of Paris - but the significance of which is only gradually
revealed, in stages, as the game proceeds.  On the other hand, even the best
of "magic realm" type games (such as "Enchanter") tends to begin...

  You, a novice Enchanter with but a few simple spells in your Book,
  must seek out Krill, explore the Castle he has overthrown, and learn
  his secrets.  Only then may his vast evil...


The most common plots boil down to saving the world, by exploring until
eventually you vanquish something ("Lurking Horror" again, for instance) or
collecting some number of objects hidden in awkward places ("Leather
Goddesses" again, say).  The latter can get very hackneyed (find the nine
magic spoons of Zenda to reunite the Kingdom...), so much so that it becomes
a bit of a joke ("Hollywood Hijinx") but still it isn't a bad idea, because
it enables many different problems to be open at once.

A game which involves really fleshed-out characters other than the player
will obviously offer a much larger range of possible plots.

The ultimate aim in working out a plot is to be able to write a one-page
synopsis of what will happen in the full game: and this ought to have a
clear structure.


4.  Size and Density
--------------------

Once upon a time, the sole measure of quality in advertisements for
adventure games was the number of rooms.  Even quite small programs would
have 200 rooms, which meant only minimal room descriptions and simple
puzzles which were scattered thinly over the map.  (The Level 9 game
"Snowball" - perhaps their best, and now perhaps almost lost - cheekily
advertised itself as having 2,000,000 rooms... though of course 1,999,800 of
them were quite similar to each other.)

Nowadays a healthier principle has been adopted: that (barring a few
junctions and corridors) there should be something out of the ordinary about
every room.

One reason for the quality of the Infocom games is that their version 3
format (the smaller one, but used for the majority of their products) has an
absolute ceiling of 255 objects, which needs to cover rooms, objects and
many other things (e.g., compass directions, or the spells in "Enchanter" et
al).  Many "objects" are not portable anyway: walls, tapestries, thrones,
control panels, coal-grinding machines and so on.

As a rule of thumb, four objects to one room is about right: this means
there will be, say, 60 rooms.  Of the remaining 200 objects, one can expect
15-20 to be used up by the game's administration (eg, a "darkness" room, 10
compass directions, a player and so on).  Another 50-75 or so objects may be
portable but the largest number, at least 100, will be furniture.

So an object limit can be a blessing as well as a curse: it forces the
designer to make the game dense.  Rooms are too precious to be wasted.

Similarly, in the version-3 format, there was room for 150K of text at the
most.  This is the equivalent of about a quarter of a modern novel, or
perhaps the analogy is that there are enough bytes to store a very
substantial book of poetry. Roughly, then, one can afford to spend 2K of
text (say, 350 words) in each room - about ten times the level of detail of
the original mainframe Adventure.

So it is wise to begin working out resources early.  If there are only 60
rooms to allocate, how will they be divided up among the stages of the
game?  Is the plan too ambitious, or too meek?


5.  Structure: The Prologue
---------------------------

Just as most Hollywood films are three-act plays (following a convention
abandoned decades ago by the theatre), there is a conventional game
structure.

Most games have a prologue, a middle game and an end game, usually quite
closed off from each other.  Once one of these phases has been left, it
generally cannot be returned to (though there is sometimes a reprise at the
end, or a premonition at the beginning).


The prologue has two vital duties.  Firstly, it has to establish an
atmosphere, and give out a little background information.

The original mainframe Adventure had the above-ground landscape; the fact
that it was there gave a much greater sense of claustrophobia and depth to
the underground bulk of the game.  Similarly, most games begin with
something relatively mundane (the guild-house in "Sorcerer", Kensington
Gardens in "Trinity") or else they include the exotic with dream-sequences
(for instance, "The Lurking Horror").  Seldom is a player dropped in at
the deep end (as "Plundered Hearts", which begins in the middle of a sea
battle).

And the other duty is to attract a player enough to make her carry on
playing.  It's worth imagining that the player is only toying with the game
at this stage, and isn't drawing a map or being at all careful.  If the
prologue is big, the player will quickly get lost and give up.  If it is too
hard, then many players simply won't reach the middle game.

Perhaps eight to ten rooms is the largest a prologue ought to be, and even
then it should have a simple (easily remembered) map layout.  The player can
pick up a few useful items - the traditional bottle, lamp and key, whatever
they may be in this game - and set out on the journey by one means or
another.


6.  The Middle Game
-------------------

The middle game is both the largest and the one which least needs detailed
planning in advance, oddly enough, because it is the one which comes nearest
to being a collection of puzzles.

There may be 50 or so locations in the middle game.  How are they to be
divided up?  Will there be one huge landscape, or will it divide into zones? 
Here, designers often try to impose some coherency by making symmetrical
patterns: areas corresponding to the four winds, or the twelve signs of the
Zodiac, for instance.  Gaining access to these areas, one by one, provides
a sequence of problems and rewards for the player.

Perhaps the fundamental question is: wide or narrow?  How much will be
visible at once?

Some games, such as the original Adventure, are very wide: there are thirty or
so puzzles, all easily available, none leading to each other.  Others, such as
"Spellbreaker", are very narrow: a long sequence of puzzles, each of which
leads only to a chance to solve the next.

A compromise is probably best.  Wide games are not very interesting (and
annoyingly unrewarding since one knows that a problem solved cannot lead to
a whole new landscape), while narrow ones can in a way be easy: if only one
puzzle is available at a time, the player will just concentrate on it, and
will not be held up by trying to use objects which are provided for
different puzzles.

Just as the number of locations can be divided into rough classes at this 
stage, so can the number of (portable) objects.  In most games, there are
a few families of objects: the cubes and scrolls in "Spellbreaker", the
rods and Tarot cards in "Curses" and so on.  These are to be scattered
about the map, of course, and found one by one by a player who will come to
value them highly.  The really important rules of the game to work out at
this stage are those to do with these families of objects.  What are they
for?  Is there a special way to use them?  And these are the first puzzles
to implement.

Most games in the "fantasy" style have some kind of "magic" system, some
way of allowing the player to transform her surroundings in a wholly
unexpected and dramatic way which would not be possible in real life.  There
are two dangers here: firstly, many systems have already been tried - and
naturally a designer wants to find a new one, somehow linked to the objects
of the game and gradually revealed during it.

Secondly, magic is surreal almost by definition and surrealism is dangerous
(unless it is deliberate, something only really attempted once, in "Nord 'n'
Burt Couldn't Make Head Nor Tail Of It").  The marvellous T-Removing Machine
of "Leather Goddesses of Phobos" (which can, for instance, transform a
rabbit to a rabbi) is a stroke of genius but a risky one.  The adventure
game is centred on words and descriptions, but the world it incarnates is
supposed to be solid and real, surely, and not dependent on how it is
described?  To prevent magic from derailing the illusion, it must have a
coherent rationale.  This is perhaps the definition of mystic religion, and
there are plenty around to steal from.


So a first-draft design of the middle game may just consist of a rough
sketch of a map divided into zones, with an idea for some event or meeting
to take place in each, together with some general ideas for objects. 
Slotting actual puzzles in can come later.


7.  The End Game
----------------

Some end games are small ("The Lurking Horror" or "Sorcerer" for instance),
others large (the master game in some implementations of the mainframe
Adventure).  Nonetheless, almost all games have one.

End games serve two purposes.  Firstly they give the player a sense of being
near to success, and can be used to culminate the plot, to reveal the game's
secrets.  This is obvious enough.  But secondly they also serve to stop the
final stage of the game from being too hard.

As a designer, you don't usually want the last step to be too difficult; you
want to give the player the satisfaction of finishing, as a reward for
having got through the game.  (But of course you want to make him work for
it.)  An end game helps, because it narrows the game, so that only a few
rooms and objects are accessible.

In a novelist's last chapter, ends are always tied up (suspiciously neatly
compared with real life).  The characters are all sent off with their fates
worked out and issues which cropped up from time to time are settled.  So
should the end game be.  Looking back, as if you were a winning player,
do you understand why everything that happened did?  Of course, some
questions will forever remain dark.  Who did kill the chauffeur in "The Big
Sleep"?

Most stories have a decisive end.  The old Gothic manor house burns down,
the alien invaders are poisoned, the evil warlord is deposed.  If the end
game lacks such an event, perhaps it is insufficiently final.

Above all, what happens to the player's character, when the adventure ends?

The final message is also an important one to write carefully, and, like the
overture, the coda should be brief.  To quote examples here would only spoil
their games.  But a good rule of thumb, as any film screenplay writer will
testify, seems to be to make the two scenes which open and close the story
"book-ends" for each other: symmetrical and matching.


---------------------------------------------------------------------------
B3.  ...at war with a crossword
---------------------------------------------------------------------------

     Forest sways,
     rocks press heavily,
     roots grip,
     tree-trunk close to tree-trunk.
     Wave upon wave breaks, foaming,
     deepest cavern provides shelter.

          (Goethe, "Faust")


And so from the large to the small.  The layout is sketched out; a rough
synopsis is written down; but none of the action of the game is clear quite
yet.  In short, there are no puzzles.  What are they to be?  How will they
link together?


1.  Puzzles
-----------

Puzzles ought not to be simply a matter of typing one well-chosen line.  The
hallmark of a good game is not to get any points for picking up an easily
available key and unlocking a door with it.  This sort of low-level
achievement - like wearing an overcoat found lying around, for instance -
should not be enough.  A memorable puzzle will need several different ideas 
to solve (the Babel fish dispenser in "The Hitch-hiker's Guide to the
Galaxy", for instance).

My personal rule with puzzles is never to allow one which I can code up in
less than five minutes.

Still, a good game mixes the easy with the hard, especially near the
beginning.  The player should be able to score a few points (not many) on
the very first half-hearted attempt.

There are three big pitfalls in making puzzles:

-- The "Get-X-Use-X" syndrome.  Here, the whole game involves wandering
about picking up bicycle pumps and then looking for a bicycle: picking up
pins and looking for balloons to burst, and so on.  So every puzzle needs
one object.  As soon as it has been used it can be dropped, for it surely
will not be required again.

-- The "What's-The-Verb" syndrome.  So you have your bicycle pump and
bicycle: "use pump" doesn't work, "pump bike" doesn't work... only "inflate
tyre" does.  There are games where this linguistic challenge is most of the
work for the player.  An especially tricky form of this problem is that in
most games "examine", "search" and "look inside" are different actions: it
is easy to code a hidden treasure, say, so that only one of these produces
the treasure.

-- The "In-Joke" syndrome.  In which the player has to play a parody of your
company office, high school class, etc., or finds an entirely inexplicable
object (say, a coat with a mysterious slogan on) which is only there because
your sister has a very funny one like it, or meets endless bizarre
characters modelled on your best friends and enemies.

Then again, a few puzzles will always be in the get-x-use-x style, and that
does no harm: while pursuing tolerance of verbs to extremes leads to
everything being "moved", not "pushed", "pulled", "rotated" and so on: and
what artist has not immortalised his madder friends at one time or another?

Variety in style is very important, but logic is paramount.  Often the
designer begins knowing only as much as that in a given place, the player is
to put out a fire.  How is this to be done?  Will the means be found nearby?
Will the fire have other consequences?  Will there be partial solutions to
the problem, which put the fire out but leave vital equipment damaged?  If
the player takes a long time not solving the problem, will the place burn
down so that the game becomes unwinnable?


2.  Machinery
-------------

In some ways the easiest puzzles to write sensibly are machines, which need
to be manipulated: levers to pull, switches to press, cogs to turn, ropes to
pull.  They do not have to respond to conversation.  They often need tools,
which brings in objects.  They can transform things in a semi-magical way
(coal to diamonds being the cliche) and can plausibly do almost anything if
sufficiently mysterious and strange: time travel, for instance.

They can also connect together different locations with machinery: chains,
swinging arms, chutes may run across the map, and help to glue it together.

A special kind of machine is the kind to be travelled in.  Many Infocom
games have such a vehicle (since the code was already written for it in Zork
I) and cars, tractors, fork-lift trucks, boats, hot-air balloons have all
made appearances.  They need a little care (for instance, not being able to
drive upstairs, or through a narrow crevice) but suggest a whole range of
new puzzles: petrol, ignition keys, a car radio perhaps.  And travelling
in new ways adds to the realism of the landscape, which is no longer a set
of rules about walking.


3.  Keys and Doors
------------------

Almost invariably games close off sections of the map (temporarily) by
putting them behind locked doors, which the player can see and gnash her
teeth over, but cannot yet open.  And almost every variation on this theme
has been tried: coded messages on the door, illusory defences, gate-keepers,
the key being in the lock on the wrong side, and so on.  Still, the usual
thing is simply to find a key in some fairly remote place, bring it to the
door and open it.

If there are people just inside, do they react when the player knocks on the
door, or tries to break it down or ram it?  If not, why not?

In some situations doors should be lockable (and open- and closeable) on
both sides.  This is irritating to implement but adds considerably to the
effect.

In a large game there may be several, perhaps five or six, keys of one kind
or another: it's essential not to make these too similar in appearance. 
Some games have "master keys" which open several different locks in a
building, for instance, or "skeleton keys", or a magic spell to get around
this.


4.  Air, Earth, Fire and Water
------------------------------

The elements all tangle up code but add to the illusion.  Fire has many
useful properties - it makes light, it destroys things, it can cause
explosions and chemical reactions, it cooks food, it softens materials, it
can be passed from one object to another - but in the end it spreads,
whereas code doesn't.  If the player is allowed to carry a naked flame
around (a burning torch, for instance), then suddenly the game needs to know
whether or not each item in the game (a curtain, a pot plant, a book) is
flammable.  Even the classic matchbook of matches can make for grisly
implementation.

As in Robert Redford's film, so in the best game landscaping: a river runs
through it.  But in any room where water is available, players will try
drinking, swimming, washing, diving.  They will try to walk away with the
water.  (This also applies to acid pools, natural oil pits and the like.)

Liquids make poor objects, because they need to be carried in some container
yet can be poured from one to another, and because they are endlessly
divisible.  "Some water" can easily be made into "some water" and "some
water".  If there's more than one liquid in the game, can they be mixed? 
Pouring liquid over something is likely to make a mess of it: yet why should
it be impossible?  And so on.

The compromise solution is usually to have a bottle with a "capacity" of,
say, 5 units of water, which can be refilled in any room where there is
water (there is a flag for this, say), and then 1 unit at a time is drunk,
poured out, etc.  The player who tries to pour water over things is simply
admonished and told not to.

Implementing swimming, or being underwater, is a different order of
difficulty again.  What happens to the objects being held?  Can a player
swim while wearing heavy clothes, or carrying many things?

Moreover, does the player run out of air?  In many games there is some such
puzzle: a room where the air is poor, or open space, or underwater: and a
scuba mask or a space helmet is called for.  One should not kill the player
at once when he enters such a hostile environment unprotected, since he will
probably not have had fair warning.  Some games even implement gases:
helium, explosive hydrogen, laughing gas.

And so to earth.  One of the oldest puzzles around is digging for buried
treasure.  The shovel can be found in just about every traditional-style
game.  Of course in real life one can dig very nearly anywhere outdoors:
there's just little cause to.  Games really can't afford to allow this. It's
quite difficult to think of a persuasive way of breaking the news to the
player, though.

Still, digging in some form makes a good puzzle: it artificially creates a
new location, or a new map connection, or a new container (the hole left
behind).


5.  Animals and Plants
----------------------

Vegetation fits into almost any landscape, and in most games plays some part
in it.  This is good for variety, since by and large one deals with plants
differently from machines and people.  Pulling the undergrowth away from
ruins, for instance, or picking flowers.

A plant which can be watered to make it grow into a beanstalk is now,
perhaps, rather a cliche.  So, of course, naturally no self-respecting
author would write one.

Trees and creeping plants (wistaria or ivy, for instance) ought to be
climbable, even if this does no good.

Animals are even more useful, for several reasons: they move, they behave in
curious and obsessive ways: they have amusingly human characteristics, but
do not generally react to conversation and need not be particularly
surprised by the player doing something very shocking nearby, so they are
relatively easy to code: and they add a splash of colour.  What would the
Garden of Eden have been without turtles, elephants, rabbits, leopards and
guinea pigs?

The classic, rather predictable puzzle with animals is solved by feeding
them some apposite food to make them obedient, then getting them to do
something.  Good games find something better.  (Curiously, the animal
puzzles in "Adventure" - the bear, the bird and the snake - are more
original than most of those in later games.)


6.  People
----------

And so dawns the sixth day of creation: we have the mountains, rivers,
plants and animals, but as yet no people.

The trap with "people" puzzles should perhaps be called the Get-X-Give-X
syndrome.  People are a little more complicated than that.  The nightmare
of coding real characters is illustrated well by one of Dave Lebling's
example bugs from "Suspect":

   > SHOW CORPSE TO MICHAEL
   Michael doesn't appear interested.

   Of course, Michael is only Veronica's husband; why would he be
   interested?

People are the hardest elements of any game to code up.  They can take five
times the amount of code attached to even a complicated room.  They have to:

-- react to events (as above!);

-- make conversation of some kind or another;

-- understand and sometimes obey instructions ("robot, go south");

-- wander around the map in a way consistent with the way the player does;

-- have some attitude to the player, and some personality.

They often have possessions of their own and can expect to be attacked,
have things given to or thrown at them, or even kissed by a desperate
player.  All this requires code.  Good player characters also do surprising
things from time to time, in a random way.  In some games they have a vast
stock of knowledge and replies.  The woman selling bread-crumbs at the very
beginning of "Trinity" (who does not play a huge role in the game) can say
over 50 different things.

Most conversation is added to the code in play-testing.  If the play-testers
complain that "ask waiter about apples" does nothing, then add some reply,
even if not a terribly useful one.

Good player-characters may come and go, turning up at different times during
the game: they are part of the larger plot.  But there is also room for the
humble door-keeper who has nothing to do but check passes.


7.  Mazes...
------------

Almost every game contains a maze.  Nothing nowadays will ever equal the
immortal

  You are in a maze of twisty little passages, all alike.

But now we are all jaded.  A maze should offer some twist which hasn't been
done before (the ones in "Enchanter" and "Sorcerer" being fine examples).

The point is not to make it hard and boring.  The standard maze solution is
to litter the rooms with objects in order to make the rooms distinguishable.
It's easy enough to obstruct this, the thief in "Zork I" being about the
wittiest way of doing so.  But that only makes a maze tediously difficult.

Instead there should be an elegant quick solution: for instance a guide who
needs to be bribed, or fluorescent arrows painted on the floor which can
only be seen in darkness (plus a hint about darkness, of course).

Above all, don't design a maze which appears to be a standard impossibly
hard one: even if it isn't, a player may lose heart and give up rather than
go to the trouble of mapping it.


8.  ...and Other Cliches
------------------------

There are a few games which do not have "light source" puzzles, but it's
hard to think of many.  The two standards reduce to:

-- the player's lamp slowly runs down and will need new oil at least once;

-- a dark room, full of treasure, can apparently only be reached through a
very narrow passage, one which cannot be passed by a player carrying
anything (including the lamp).

Most games contain both, and perhaps most always will, but variations are
welcome.  (There is a superbly clever one in "Zork III", for instance.)


Similarly, unless there are very few portable objects, it becomes ridiculous
that a player can carry hundreds of bulky and fiddly things around all the
time: so most games impose a limit on how much can be carried, by convention
four (because that's what Adventure did).  It is bad form to set puzzles
making life difficult because the limit is four and not five (after all, in
case of emergency, a player could always carry something else).  Of course
the norm is to provide a bag for carrying things.

Sophisticated games also quietly work out the total weight being carried. 
(One of the Infocom games contains a marvellously heavy red herring which
can be carried anywhere, but is terribly exhausting to move.)

Mention of exhaustion raises the question of the player's state of health. 
Some games take a quite role-playing-style view of this, with (perhaps
hidden) attributes of "strength" and "constitution".  The player grows weary
and needs food, tired and needs sleep, wounded and needs recuperation.
A puzzle which really exploits this would be difficult to make fair.


9.  Rewards and Penalties
-------------------------

There are two kinds of reward which need to be given to a player in return
for solving a puzzle.  One is obvious: the game advances a little.  But the
player at the keyboard needs a reward as well, that the game should offer
something new to look at.  In the old days, when a puzzle was solved, the
player simply got a bar of gold and had one less puzzle to solve.

Much better is to offer the player some new rooms and objects to play
with, as this is a real incentive.  If no new rooms are on offer, at least
the "treasure" objects can be made interesting, like the spells in the
"Enchanter" trilogy or the cubes in "Spellbreaker".

In olden days, games killed the player in some way for almost every wrong
guess (or altered the state of the game so that it had become unwinnable).
This was annoying and meant that virtually all players were so paranoid
as to save the game before, say, picking up any new object.  Nowadays
it is thought polite not to kill the player without due warning, and to
make smaller mistakes recoverable-from.  A good alternative to the death
sentence is exile (i.e., in some way moving the player somewhere
inconvenient but returnable-from).


10.  Writing Room Descriptions
------------------------------

First, a warning: it is tempting, when beginning to code, to give rooms
"temporary" descriptions ("Slab room." "Cloister."), and leave the writing
for later.  There is no more depressing point than when facing a pile of 50
room descriptions to write, all at once, and feeling that one's enthusiasm
has altogether gone.  (The same warning applies to making an over-detailed
design before doing any coding.)  Besides, when testing the rooms concerned,
one has no feeling of what the game will look like except tatty, and this
is also depressing.  Also, writing room descriptions forces the author to
think about what the room is ultimately for, which is no bad thing.  So
write a few at a time, as coding goes on, but write them properly: and edit
later if necessary (it will be).

Size doesn't matter.  It is all too easy to write a huge room description,
rambling with irrelevant details: there are usually one to three essentials
to get across, and the rest should be cut.

But even the most tedious junctions deserve description, and description is
more than a list of exits.  Here is "Adventure" at its most graceful:

   You're in a large room carved out of sedimentary rock.  The floor and
   walls are littered with bits of shells embedded in the stone.  A shallow
   passage proceeds downward, and a somewhat steeper one leads up.  A low
   hands and knees passage enters from the south.

   You are walking along a gently sloping north/south passage lined with
   oddly shaped limestone formations.

Note the geology, the slight unevenness of the ground and the variation in
the size of the tunnels.  Even if nothing happens here, these are real
places.

Flippant, joky room descriptions are best avoided if they will be often
revisited.  About once in a game an author can get away with:

   Observation Room
   Calvin Coolidge once described windows as "rectangles of glass."  If so,
   he may have been thinking about the window which fills the western wall
   of this room.  A tiny closet lies to the north.  A sign is posted next to
   the stairs which lead both upwards and downwards.

a characteristic piece of Steve Meretzky from "Leather Goddesses of Phobos",
which demonstrates the lengths one has to go to when faced with a
relentlessly ordinary junction-with-window.  The sentence which the whole
description has been written to avoid is "You can go up, down or north."


Room descriptions are obliged to mention the obvious exits - and it is
certainly poor form to fail to mention one in particular unless there is
good reason - but there are ways to avoid what can be a tiresomely
repetitive business.  For instance,

   Dark Cave
   Little light seeps into this muddy, bone-scattered cave and already
   you long for fresh air.  Strange bubbles, pulsing and shifting as if
   alive, hang upon the rock at crazy, irregular angles.

   Black crabs scuttle about your feet.

   > SOUTH
   The only exit is back out north to the sea-shore.

In other words, the "You can't go that way" message is tailored to each
individual room.

Avoiding repetition is well-nigh impossible, and experienced players will
know all the various formulae by heart: "You're in", "You are in", "This
is", "You have come to" and so forth.  I usually prefer impersonal room
descriptions (not mentioning "you" unless to say something other than the
obvious fact of being present).

As in all writing, vocabulary counts.  If there is a tree, what kind is it,
oak, juniper, hawthorn, ash?  Then, too, don't make all room descriptions
static, and try to invoke more than just sight at times: smell, touch and
sound are powerfully evocative.  Purity and corruption, movement and
stillness, light and dark have obsessed writers through the ages.

Above all, avoid the plainness of:

   You are in the Great Hall.  You can go north to the Minstrel's Gallery,
   east to the fireplace and down to the kitchens.

   There is a sword here.

So much for bad room descriptions.  The following example (which I have not
invented) is something much more dangerous, the mediocre room description:

   Whirlpool Room
   You are in a magnificent cavern with a rushing stream, which cascades
   over a sparkling waterfall into a roaring whirlpool which disappears
   through a hole in the floor.  Passages exit to the south and west.

...seems a decent enough try.  But no novelist would write such sentences. 
Each important noun - "cavern", "stream", "waterfall", "whirlpool" - has its
own adjective - "magnificent", "rushing", "sparkling", "roaring".  The two
"which" clauses in a row are a little unhappy.  "Cascades" is good, but does
a stream cascade "over" a waterfall?  Does a whirlpool itself disappear? 
The "hole in the floor" seems incongruous.  Surely it must be underwater,
indeed deep underwater?

Come to that, the geography could be better used, which would also help to
place the whirlpool within the cave (in the middle? on one edge?).  And why
"Whirlpool Room", which sounds like part of a health club?  As a second
draft, then, following the original:

   Whirlpool Ledge
   The path runs a quarter-circle from south to west around a broken ledge
   of this funnel cavern.  A waterfall drops out of the darkness, catching
   the lamplight as it cascades into the basin.  Sinister, rapid currents
   whip into a roaring whirlpool below.

Even so: there is nothing man-made, nothing alive, no colour and besides
it seems to miss the essential feature of all the mountain water-caves I've
ever been to, so let us add a second paragraph (with a line break, which
is much easier on the eye):

   Blue-green algae hangs in clusters from the old guard-railing, which has
   almost rusted clean through in the frigid, soaking air.

The algae and the guard-rail offer distinct possibilities of a puzzle or
two...  Perhaps there are frogs who could eat the algae; perhaps the player
might find a use for iron oxide, and could scrape rust from the railing. 
(Herbalists probably used to use rust for something, and an encyclopaedia or
a chemistry text book might know.)  Certainly the railing should break if a
rope is tied to it.  Is it safe to dive in?  Does the water have a hypnotic
effect on someone who stares into it?  Is there anything dry which would
become damp if the player brought it through here?  Might there be a second
ledge higher up where the stream falls into the cave?  - And so a location
is made.


11.  The Map
------------

Puzzles and objects are inextricably linked to the map, which means that the
final state of the map only gradually emerges and the author should expect
to have to keep changing it to get it right - rather than to devise an
enormous empty landscape at first and then fill it with material.

Back to atmosphere, then, because throughout it's vital that the map should
be continuous.  The mark of a poor game is a map like:

                            Glacier
                               |
             Dungeon  --  Oriental Room  --  Fire Station
              (fish)       (megaphone)         (tulips)
                               |
                           Cheese Room

in which nothing relates to anything else, so that the game has no overall
geography at all.  Much more believable is something like:

                   Snowy Mountainside
                            \  
                         Carved Tunnel
                               |
                         Oriental Room  -- Jade Passage -- Fire Dragon
                            (buddha)       (bonsai tree)      Room
                               |
                         Blossom Room

The map should reflect some large-scale geography too: the mountainside
should extend across the map in both directions.  If there is a stream
passing through a given location, what happens to it?  And so on.  Maps
of real mountain ranges and real cave systems can be quite helpful when
trying to work out an interesting geography.


A vexed question is just how much land occupies a single location.  Usually
a location represents a "room", perhaps ten yards across at the most. 
Really large underground chambers - the legendary "Hall of Mists" in
Adventure, the barge chamber in "Infidel" - are usually implemented with
several locations, something like:

                 Ballroom NW     ---     Ballroom NE
                     |      \           /    |
                     |       Dance Floor     |
                     |      /           \    |
                 Ballroom SW     ---     Ballroom SE

This does give some impression of space but it can also waste locations in a
quite dull way, unless there are genuinely different things to do at some
of the corners.

On the other hand, sometimes an entire meadow, or valley, might be one
single location, but then its description will have to be written carefully
to make this clear.


In designing a map, it adds to the interest to make a few connections in the
rarer compass directions (NE, NW, SE, SW) to prevent the player from a
feeling that the game has a square grid.  There should also be a few
(possibly long) loops which can be walked around, to prevent endless
retracing of steps and to avoid the appearance of a bus service map,
half a dozen lines with only one exchange.

If the map is very large, or if a good deal of to-and-froing is called for,
there should be some rapid means of moving across it, such as the magic
words in Adventure, or the cubes in "Spellbreaker".  This can be a puzzle
in itself - one that players do not have to solve, but will reward them
if they do.


12.  Looking Back at the Shape
------------------------------

A useful exercise, towards the end of the design stage, is to draw out a
tree (or more accurately a lattice) of all the puzzles in a game.  At the
top is a node representing the start of the game, and then lower nodes
represent solved puzzles.  An arrow is drawn between two puzzles if one has
to be solved before the other can be.  For instance, a simple portion might
look like:

                               Start
                              /     \
                             /       \
                      Find key     Find car
                             \        |
                              \       |
                               Start car
                                   |
                                   |
                             Reach motorway

This is useful because it checks that the game is soluble (for example, if
the ignition key had been kept in a phone box on the motorway, it wouldn't
have been) but also because it shows the overall structure of the game.
Ask:

  Do large parts of the game depend on one difficult puzzle?
  How many steps does a typical problem need?
  How wide is the game at any given time?

Bottlenecks should be avoided unless they are reasonably guessable:
otherwise many players will simply get no further.  Unless, of course,
they are intended for exactly that, to divide an area of the game into
earlier and later.

Just as some puzzles should have more than one solution, some objects should
have more than one purpose.  In bad old games, players automatically threw
away everything as soon as they'd used them.  In better designed games,
obviously useful things (like the crowbar and the gloves in "Lurking
Horror") should be hung on to by the player throughout.

A final word on shape: one of the most annoying things for players is to 
find, at the extreme end of the game (in the master game, perhaps) that
a few otherwise useless objects ought to have been brought along, but that
it is now too late.  The player should not be thinking that the reason for
being stuck on the master game is that something very obscure should have
been done 500 turns before.


---------------------------------------------------------------------------
B4.  Varnish and veneer
---------------------------------------------------------------------------


So you have a game: the wood is rough and splintered, but it's recognisably
a game.  There's still a good month's work to do, though it is easier work
than before and feels more rewarding.

1.  Scoring
-----------

The traditional way to score an adventure game is to give a points score out
of some large and pleasing number (say, 400) and a rank.  There are usually
ten to fifteen ranks.  A genuine example (which shall remain nameless):

  Beginner (0), Amateur Adventurer (40), Novice Adventurer (80), Junior
  Adventurer (160), Adventurer (240), Master (320), Wizard (360),
  Master Adventurer (400)

in which, although ranks correspond to round numbers, still they have
perhaps been rigged to fit the game.  Another amusing touch is that ranks
tend to be named for the player's profession in the game - so, a musician
might begin as "Novice" and rise through "Second Violinist" to "Conductor".
One of the wittiest is in the detective game "Sherlock", where the lowest
rank - the zero-achievement rank - is "Chief Superintendent of Scotland
Yard".

Among the questions to ask are: will every winner of the game necessarily
score exactly 400 out of 400?  (This is very difficult to arrange if even
small acts are scored.)  Will everyone entering the end game already have a
score of 360, and so have earned the title "Wizard"?  Will the rank
"Amateur" correspond exactly to having got out of the prologue and into the
middle game?

So what deserves points?  Clearly solving the major puzzles does.  But do 
the minor, only halfway-there-yet puzzles?  Here, as ever, games vary
greatly.  In "Zork III", the scoring is out of 7 and corresponds to seven
vital puzzles (though a score of 7 does not mean the game is over).  In "The
Lurking Horror", 20 major puzzles are awarded 5 points each, making a
maximum of 100.

Alternatively, there is the complicated approach, typified by the original
Adventure.  Points are awarded in twos and threes for small acts, and then
in larger doses for treasures - silver bars 5, gold amulets 10, platinum
pendants 20.  Treasures are scored twice, once when found, once when removed
to safety - to the trophy case in "Zork I", or inside the packing case of
Level 9's game "Dungeon".  Furthermore, 1 point is awarded for each room
visited for the first time, and 1 for never having saved the game - a
particularly evil trick.

In some games (such as the earliest British game of real quality, "Acheton",
written at Cambridge University in 1979-80 and later implemented on Acorn
microcomputers) score actually falls back when the player is wasting time
and nothing is being achieved: the player's mana gradually fades.  This
annoys some players intensely (no bad thing).

Games used to have a "Last Lousy Point" by custom - a single point which
could only be won by doing something hugely unlikely, such as going to a
particular area of the Pirate's Maze and dropping a key.  This custom,
happily, has fallen into disuse.


2.  Wrong Guesses
-----------------

For some puzzles, a perfectly good alternative solution will occur to
players.  It's good style to code two or more solutions to the same puzzle,
if that doesn't upset the rest of the game.  But even if it does, at least
a game should say something when a good guess is made.  (Trying to cross the
volcano on the magic carpet in "Spellbreaker" is a case in point.)

For example, in "Curses" there are (at time of writing) four different ways
to open the child-proof medicine bottle.  They are all quite hard to guess,
they are all logically reasonable and most players get one of them.


One reason why "Zork" held the player's attention so firmly (and why it took
about ten times the code size, despite being rather smaller than the
original mainframe Adventure) was that it had a huge stock of usually funny
responses to reasonable things which might be tried.

My favourite funny response, which I can't resist reprinting here, is:

   You are falling towards the ground, wind whipping around you.
   >east
   Down seems more likely.                                  ["Spellbreaker"]

(Though I also recommend trying to take the sea serpent in "Zork II".)  This
is a good example because it's exactly the sort of boring rule (can't move
from the midair position) which most designers usually want to code as fast
as possible, and don't write with any imagination.


Another form of wrong guess is in vocabulary.  Unless exceptionally large, a
good game ought to have about a 1000-word vocabulary: too much less than
that and it is probably missing reasonable synonyms; too much more and it is
wasting space and time.  Remember too that players do not know at first what
the relevant and irrelevant objects in a room are.  For instance:

   Old Winery
   This small cavity at the north end of the attic once housed all manner of
   home-made wine paraphernalia, now lost and unlamented.  Steps, provided
   with a good strong banister-rail, lead down and to the west, and the
   banister rail continues along a passage east.

   (and some more follows)

This clearly mentions a banister, which (as it happens) plays no part in the
game, but merely reinforces the idea of an east-west passage including a
staircase which (as it happens) is partly for the use of a frail relative. 
But the player may well try tieing thing to the rail, pulling at it and so
on.  So the game knows "banister", "rail" and (not entirely logically, but
players are not entirely logical) "paraphernalia" as names of irrelevant
things. An attempt to toy with them results in the reply

    That's not something you need to refer to in the course of this game.

which most players appreciate as fair, and is better than the parser either
being ignorant or, worse, pretending not to be.

A feature which some games go to a great deal of trouble to provide, but is
of arguable merit (so think I), is to name every room, so that "search
winery" would be understood (though of course it would do nothing almost
everywhere... and a player would have to try something similar everywhere on
the off chance).  Some games would even provide "go to winery" from nearby
places.  These are impressive features but need to be coded carefully not to
give the player information she may not yet have earned.


3.  Hints and Prizes
--------------------

A good game (unless written for a competition) will often contain a hints
service, as the Infocom games did in latter days.  Most players will only
really badly be stuck about once in the course of a game (and they vary
widely in which puzzle to be really badly stuck on) and it is only fair
to rescue them.  (If nothing else, this cuts down on the volume of email
cries for help which may arrive.)  There are two ways to provide hints:

-- in the game itself, by having some sage old worthy to ask;

-- properly separated from the game, with a "hint" command which offers
one or more menus full of possible questions.

Of course, a hint should not be an explicit answer.


At the end of the game, when it has been won, is there anything else to be 
said?  In some games, there is.  In its final incarnations (alas, not the
one included in the "Lost Treasures of Infocom" package), "Zork I" offered
winners access to the hints system at the RESTART, RESTORE or QUIT prompt. 
"Curses" goes so far as to have a trivia quiz, really to tell the player
about some of the stranger things which can be done in the game.  (If
nothing else, this is a good chance for the game's author to boast.)


4.  User Interface, and all that jazz
-------------------------------------

No, not windows and pull-down menus, but the few meta-commands which go to
the game program and do not represent actions of the player's character in
the game.  Of course,

  SAVE, RESTORE, RESTART, QUIT

are essential.  Games should also provide commands to allow the player to
choose whether room descriptions are abbreviated on second visits or not. 
Other such options might be commands to control whether the game prints out
messages like

  [Your score has just gone up by 10 points.]

and commands to transcribe to the printer or to a file - these are extremely
useful when receiving comments from play-testers.

UNDO is difficult to code but worth it.  In "Curses", UNDO can even restore
the player posthumously (though this is not advertised in the game: death,
where is thy sting?).

Abbreviations (especially "g" for again, "z" for wait, "x" for examine) must
now be considered essential.

Some games produce quotations or jokes from time to time in little windows
away from the main text of the game.  Care is needed to avoid these
overlying vital text.  It ought to possible to turn this feature off.

The author's only innovations in this line are to provide a "full score"
feature, which accounts exactly for where the player's score has come from
and lists achievements so far, and to provide "objects" and "places"
commands:

   >places
   You have visited: Attic and Old Furniture.

   >objects
   Objects you have handled:

   the crumpled piece of paper   (held)
   the electric torch   (held)
   the chocolate biscuit   (held)
   the bird whistle   (in Old Furniture)
   the gift-wrapped parcel   (lost)

These features may or may not catch on.


5.  Debugging and Testing
-------------------------

Every author will need a few "secret" debugging commands (still present in
several of the Infocom games, for instance) to transport the player across
the map, or get any object by remote control.  Since debugging never ends,
it's never wise to remove these commands: instead, protect them with a
password in released editions.

An unobvious but useful feature is a command to make the game non-random.
That is, if there is a doorway which randomly leads to one of three places,
then this command will make it predictable.  This is essential when testing
the game against a transcript.

During design, it's helpful to keep such a script of commands which wins the
game from the start position.  Ideally, your game ought to be able to accept
input from a file of commands as well as from the keyboard, so that this
script can be run automatically through.

This means that when it comes to adding a new feature towards the end, it is
easy to check whether or not it upsets features earlier on.

Bugs are usually easy to fix: they are mostly small oversights.  Very few
take more than five minutes to fix.  Especially common are:

-- slips of punctuation, spelling or grammar (for instance, "a orange");

-- rooms being dark when they ought to be light (this tends not to show if
the player habitually carries a lamp anyway), or not changing their state
of light/darkness when they should, as for instance when a skylight opens or
closes;

-- other object flags having been forgotten, such as a fish not being
flagged as edible;

-- map connections being very slightly out, e.g. west in one direction and
northeast in the other, by accident;

-- something which logically can only happen once, such as a window being
broken, actually being possible more than once, with strange consequences;

-- general messages being unfortunate in particular cases, such as "The ball
bounces on the ground and returns to your hand." in mid-air or while
wading through a ford;

-- small illogicalities: being able to swim with a suit of armour on, or
wave the coat you're wearing, or eat while wearing a gas mask;

-- parser accidents and misnamings.

Do not go into play-testing until the scoring system is worked out and
the game passes the entire transcript of the "winning" solution without
crashing or giving absurd replies.


6.  Playtesting
---------------

The days of play-testing are fun but harrowing.  The first thing to do is to
get a few "friends" and make them play for a while. Look over their
shoulders, scribble furiously on a piece of paper, moan with despair and
frustration, but do not speak.  Force yourself not to explain or defend,
whatever the provocation.  Expect to have abuse heaped on you, and bear up
nobly under the strain.  To quote Dave Lebling (on testing "Suspect", from
the "New Zork Times"):

   > BARTENDER, GIVE ME A DRINK
   "Sorry, I've been hired to mix drinks and that's all."

   > DANCE WITH ALICIA
   Which Alicia do you mean, Alicia or the overcoat?

   Veronica's body is slumped behind the desk, strangled with a lariat.
   > TALK TO VERONICA
   Veronica's body is listening.

   Little bugs, you know?  Things no one would notice.  At this point the
   tester's job is fairly easy.  The story is like a house of cards -- it
   looks pretty solid but the slightest touch collapses it...

After a cleaning-up exercise (and there's still time to rethink and
redraft), give the game to a few brave beta-testers.  Insist on reports in
writing or email, or some concrete form, and if you can persuade the testers
then try to get a series of reports, one at a time, rather than waiting a
month for an epic list of bugs.  Keep in touch to make sure the testers are
not utterly stuck because a puzzle is impossible due to a bug, or due to it
just being far too hard.  Don't give hints unless they are asked for.

Play-testing will produce a good 100 or so bugs, mostly awesomely trivial
and easily fixed.  Still, expect a few catastrophes.

Good play-testers are worth their weight in gold.  They try things in a
systematically perverse way.  To quote Michael Kinyon, whose effect may be
felt almost everywhere in "Curses",

   A tester with a new verb is like a kid with a hammer; every problem
   seems like a nail.

And how else would you know whether "scrape parrot" produced a sensible
reply or not?

Unless there is reason not to (because you know more than they do about how
the plot will work out), listen to what the play-testers say about style and
consistency too.  Be sure also to credit them somewhere in the game.


7.  It's Never Finished
-----------------------

Games are never finished.  There's always one more bug, or one more message
which could be improved, or one more little cute reply to put in.  Debugging
is a creative process and adds to the life of the game.  The first
incarnation of my game "Curses" was finished after about 80K of coding, but
after play-testing rose to 128K long.  In other words, over a third of
a game is devoted to "irrelevant" features, blind alleys, flippant replies
and the like.

Roughly 200 bugs in "Curses" have been spotted since it was released
publically one year ago (I have received well over a thousand email messages
on the subject), and that was after play-testing had been "finished".  About
once a week I make this week's corrections, and about once every three
months I re-issue the mended version.  Thus, many people who suggested
little extensions and repairs have greatly contributed to the game, and
that's why there are so many names in the credits.


8.  Afterword
-------------

An adventure game, curiously, is one of the most satisfying works to have
written: perhaps because one can always polish it a little further, perhaps
because it has so many hidden and secret possibilities, perhaps because
something is made as well as written.  For myself, though, perhaps also
because each day somebody new may wander into its world, as I did when
occasionally taken to a Digital mainframe in the 1970s, through a dark
warren of passages untidier even than my bedroom: so that the glow of the
words has not quite faded from my eyes.


---------------------------------------------------------------------------
C1. A Hello Cruel World program
---------------------------------------------------------------------------


>   !
>   ! A great step backward in interactive fiction...
>   !
>
>   Object hillside "Bare hillside" nothing;
>
>   global place = hillside;
>   global score = 0;
>   global turns = 1;
>   
>   [ Main;
>   
>     print "^^^^^^^^^^^You wake up, shivering to see that Morgoth \
>            the Flatulent Devil is towering over you...^^";
>     Message();
>     print "^^...and he squashes you effortlessly.\
>            ^^   *** You have died ***^^^^^";
>   
>     quit;
>   ];
>   
>   [ Message i;
>
>     print "HELLO CRUEL WORLD^\
>            A Non-Interactive Demonstration^\
>            Copyright (c) 1994 by Graham Nelson. All rights reserved.^\
>            Release ", (0-->1) & $03ff, " / Serial number ";
>   
>     for (i=18 : i<24 : i++) print char 0->i;  new_line;
>   ];
>   

Note that the familiar banner has to be produced by your code.  By
convention, the first word (at bytes 2 and 3) of the file is the release
number, and this is what is set by the RELEASE command.  In this file there
isn't a RELEASE command, so it comes out as 1.  Bytes 18 to 23 contain the
serial number, or in fact the serial string of ASCII characters.  By custom
and tradition, these are the date of compilation arranged YYMMDD, and Inform
sets these automatically.

Note also that Message had to be a separate routine since we needed a local
variable, and Main is not permitted to have local variables of its own.

(The above source has changed a little since the first release: if the
object is not included, then some interpreters (not the InfoTaskForce one)
which voluntarily display the status line (when not asked to do so), get in
a quandary printing a location, time and score.  So for their benefit, here
are all three.)

On my machine (an Acorn Archimedes A5000), compiling with statistics
produces something like:

  *inform -s hellow
  Archimedes Inform 5 (v1259/at)
  Input 31 lines (40 statements, 690 chars)
  Version 3 (Standard) story file
     1 objects (maximum 255)        0 dictionary entries (maximum 750)
     0 attributes (maximum 32)      0 properties (maximum 30)
     0 adjectives (maximum 240)     0 verbs (maximum 110)
     0 actions (maximum 125)        0 abbreviations (maximum 64)
     3 globals (maximum 240)      480 variable space (maximum 1500)
   189 symbols (maximum 4000)       2 routines (maximum 400)
   314 characters of text (compressed to 276 bytes, rate 0.878)
  Output story file is   1.5K long (maximum 128K)
  Essential size 1150 bytes: 129922 remaining
  Completed in 1 seconds.

or, in version-5 mode:

  *inform -sv5 hellow
  Archimedes Inform 5 (v1259/at)
  Input 31 lines (40 statements, 690 chars)
  Version 5 (Advanced) story file
     1 objects (maximum 511)        0 dictionary entries (maximum 750)
     0 attributes (maximum 48)      0 properties (maximum 62)
     0 adjectives (maximum 240)     0 verbs (maximum 110)
     0 actions (maximum 125)        0 abbreviations (maximum 64)
     3 globals (maximum 240)      480 variable space (maximum 1500)
   189 symbols (maximum 4000)       2 routines (maximum 400)
   314 characters of text (compressed to 276 bytes, rate 0.878)
  Output story file is   1.5K long (maximum 256K)
  Essential size 1216 bytes: 260928 remaining
  Completed in 1 seconds.

(The second being mostly consumed in printing out the statistics.  In
practice the compilation time is roughly proportional to the output length,
and typically takes 0.5 seconds per K of story file on my machine.)

The "essential size" is the number of bytes actually used: the story file
is rounded up in size to an exact number of 512-byte blocks. The number
remaining is the actual number of bytes free in the Z-machine.

Note: if you try compiling the example games, and get different
statistics outputs, do not worry; it probably means you're using a later
version of Inform than the one that printed the above.  Similarly,
do not worry if your compiled story file shows differences with the
object code in the archive.  It will certainly have a different serial
number (i.e., date of compilation) and possibly also a different Inform
version number embedded in it.

If the "Toyshop" example (see below) compiles without Inform errors and
plays properly, then Inform is probably working OK.

As an extreme example, statistics for "Curses" look something like:

  Archimedes Inform 5 (v1259/at)
  Input 15708 lines (32501 statements, 644502 chars) from 2 files
  Version 5 (Advanced) story file
   465 objects (maximum 511)     1225 dictionary entries (maximum 1300)
    37 attributes (maximum 48)     30 properties (maximum 62)
    31 adjectives (maximum 240)   121 verbs (maximum 140)
   145 actions (maximum 150)       64 abbreviations (maximum 64)
   132 globals (maximum 240)     1558 variable space (maximum 1600)
  5483 symbols (maximum 6400)     458 routines (maximum 500)
     0 classes (maximum 32)         0 fake actions (maximum 150)
  247654 characters of text (compressed to 156272 bytes, rate 0.631)
  Output story file is 223.5K long (maximum 256K)
  Essential size 228392 bytes: 33752 remaining
  Completed in 98 seconds.


---------------------------------------------------------------------------
C2. "Toyshop": a small toy game
---------------------------------------------------------------------------


The "Hello Cruel World" program is enticingly short and easy, but only
because it doesn't contain a parser.  A fully functioning parser is hard
work to write, and occupies a good deal of "Inform" code.  Besides this,
the everyday mechanics of an adventure game involve more coding than most
designers want to go into, at least at the outset.

"Toyshop" is a five finger exercise with the Library.  It contains a
heap of example objects demonstrating various unusual features, but is
not really a game.  Note, for instance, that:

  In the dark room, shutting the fluorescent ball up in the steel box
makes the room go dark, but in the glass box does not;

  The building blocks (implemented by a class) can be piled three high,
but collapse if four high: higher blocks fall down when lower ones are
taken.  Note the way piles are specially described, and that Chris
can pile them four high, if given the blocks and the right instructions;

  The red car (demonstrating two somewhat exceptional rules about how
"trying to drive a vehicle" and "trying to push something to a different
location" are sorted out) can be driven around, or pushed;

  The padded floor can be looked at in all three main locations;

  The helium balloon drifts about with the wind which blows in from the
high window.

The toys in the shop are rather exotic objects: more ordinary ones are
demonstrated by the "Adventure" example.  (And some of the objects may
give old Inform users a certain feeling of deja-vu.)

Compiling "Toyshop" with statistics should produce something like

  Archimedes Inform 5 (v1259/at)
  Input 4277 lines (8880 statements, 138000 chars) from 4 files
  Version 3 (Standard) story file
    41 objects (maximum 255)      305 dictionary entries (maximum 1300)
    30 attributes (maximum 32)     25 properties (maximum 30)
    19 adjectives (maximum 240)    77 verbs (maximum 140)
    87 actions (maximum 150)        0 abbreviations (maximum 64)
    91 globals (maximum 240)     1249 variable space (maximum 1600)
  1807 symbols (maximum 6400)     184 routines (maximum 500)
     1 classes (maximum 32)         3 fake actions (maximum 150)
  12019 characters of text (compressed to 9168 bytes, rate 0.762)
  Output story file is  26.5K long (maximum 128K)
  Essential size 26886 bytes: 104186 remaining
  Completed in 22 seconds.

("Toyshop" is only a little over 500 lines long: the rest is the
library.)
  
Again, don't worry if the details are slightly different.
  

---------------------------------------------------------------------------
C3.  "Adventure": a port of Colossal Cave
---------------------------------------------------------------------------


       "You are in a maze of twisty little passages, all alike."


As a more substantial example, try compiling "Adventure", a port of
the original Crowther and Woods adventure, taken from David M. Baggett's
excellent TADS version (the most faithful reconstruction of the original
available on the Internet, as far as the author can find).

The source code demonstrates a noticeably different feature of Inform 5
over Inform 4 - there are hardly any routines: almost all the source code
is definitions of objects.

The magic words are nice examples of user-defined actions; the dwarves
and the cave-closing mechanism are quite elegantly defined as daemons.
Otherwise most of the code is fairly plain and straight-forward.

Statistics should look something like:


  Archimedes Inform 5 (v1259/at)
  Input 7438 lines (13004 statements, 254985 chars) from 4 files
  Version 5 (Advanced) story file
   259 objects (maximum 511)      663 dictionary entries (maximum 1300)
    32 attributes (maximum 48)     26 properties (maximum 62)
    18 adjectives (maximum 240)    97 verbs (maximum 140)
   107 actions (maximum 150)        0 abbreviations (maximum 64)
   100 globals (maximum 240)     1249 variable space (maximum 1600)
  2556 symbols (maximum 6400)     299 routines (maximum 500)
     5 classes (maximum 32)         3 fake actions (maximum 150)
  56529 characters of text (compressed to 41216 bytes, rate 0.729)
  Output story file is  74K long (maximum 256K)
  Essential size 75324 bytes: 186820 remaining
  Completed in 44 seconds.


---------------------------------------------------------------------------
C4.  A shell game to build on
---------------------------------------------------------------------------


       "Give the public not what they want but what they ought
        to want and dont."

                (George Bernard Shaw on government)


The shell below is the minimum you need to write to use the library
routines.  Note that the order in which things occur is quite important.
Nothing should appear above the #include "Parser" line except possibly
more defined constants and any abbreviations.  The grammar table should
be last.

>   !
>   ! Shell of a game
>   !
>   
>   Constant Story "SHELL";
>   Constant Headline "^An Interactive Skeleton^\
>                Copyright (c) 1993 by (your name here).^";
>   
>   #include "Parser";
>   #include "VerbLib";
>   
>   Object room "Blank Room" nothing
>     with longdesc "An empty room."
>     has  light;
>   
>   [ Initialise;
>     location=room;
>     print "^^^^^Welcome to the shell...^^";
>   ];
>   
>   #include "Grammar";
>   end;


---------------------------------------------------------------------------
Footnote: Availability on the Internet, and Legal Declaration
---------------------------------------------------------------------------


  Material on Inform may be found on the Internet.  It originates from the
if-archive at the German anonymous ftp site ftp.gmd.de, which is maintained
currently by Volker Blasius, in the directory

  if-archive/infocom/compilers/inform.

Versions found at other sites (except those which mirror ftp.gmd.de) may
well be out of date.  (In particular, there are some rather old and decrepit
versions of Inform on some Archimedes archives.)  So far, updated versions
have been posted about once a quarter.

  A !SparkFS archive of a RISCOS testing program for running test scripts
through adventure games produced by Inform can also be found at this ftp
site, in programming/utilities.

  The Inform code is in portable ANSI C, and has been ported to many
different machines.  Its source code is publically available at the above
site.  The full version of this manual (including a technical specification
of the Infocom Z-machine format) is also there.

  Inform is not public domain in the proper legal sense of the term.  The
copyright is retained by the author, Graham Nelson.  I am perfectly happy
for Inform to be used by anybody for any recreational purpose.  It may be
freely distributed provided no profit is involved, and provided the
copyright message is retained.

  Story files produced by Inform belong to whoever wrote the source for
them; I think, however, it is fair to ask that game-writers put some message
into their credits saying that Inform was used, and giving the version
number used to compile it.


---------------------------------------------------------------------------
---------------------------------------------------------------------------
This manual (C) Copyright Graham Nelson 1993, 1994
                Acorn User edition
---------------------------------------------------------------------------
00000000  0a 20 20 2b 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.  +------------|
00000010  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000040  2d 2d 2d 2d 2d 2d 2d 2d  2d 2b 0a 20 20 7c 20 20  |---------+.  |  |
00000050  20 20 20 20 20 20 20 20  20 20 49 6e 66 6f 72 6d  |          Inform|
00000060  3a 20 41 20 43 6f 6d 70  69 6c 65 72 20 6f 66 20  |: A Compiler of |
00000070  49 6e 66 6f 63 6f 6d 2d  46 6f 72 6d 61 74 20 47  |Infocom-Format G|
00000080  61 6d 65 73 20 20 20 20  20 20 20 20 20 20 20 20  |ames            |
00000090  20 20 20 7c 0a 20 20 7c  20 20 20 20 20 20 20 20  |   |.  |        |
000000a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000000d0  20 20 20 20 20 20 20 20  20 20 20 20 20 7c 0a 20  |             |. |
000000e0  20 7c 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | |              |
000000f0  20 20 20 20 20 20 20 20  20 20 62 79 20 47 72 61  |          by Gra|
00000100  68 61 6d 20 4e 65 6c 73  6f 6e 20 20 20 20 20 20  |ham Nelson      |
00000110  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000120  20 20 20 20 20 20 20 7c  0a 20 20 7c 20 20 20 20  |       |.  |    |
00000130  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000170  20 7c 0a 20 20 7c 20 20  20 20 20 20 20 20 20 20  | |.  |          |
00000180  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000001b0  20 20 20 20 20 20 20 20  20 20 20 7c 0a 20 20 7c  |           |.  ||
000001c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000001d0  20 20 20 20 20 20 20 20  20 20 20 46 69 66 74 68  |           Fifth|
000001e0  20 45 64 69 74 69 6f 6e  20 20 20 20 20 20 20 20  | Edition        |
000001f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000200  20 20 20 20 20 7c 0a 20  20 2b 2d 2d 2d 2d 2d 2d  |     |.  +------|
00000210  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000240  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2b  |---------------+|
00000250  0a 0a 0a 20 20 20 20 20  20 20 20 20 20 20 20 22  |...            "|
00000260  49 20 77 69 6c 6c 20 62  75 69 6c 64 20 6d 79 73  |I will build mys|
00000270  65 6c 66 20 61 20 63 6f  70 70 65 72 20 74 6f 77  |elf a copper tow|
00000280  65 72 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |er.             |
00000290  57 69 74 68 20 66 6f 75  72 20 77 61 79 73 20 6f  |With four ways o|
000002a0  75 74 20 61 6e 64 20 6e  6f 20 77 61 79 20 69 6e  |ut and no way in|
000002b0  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 42 75  |.             Bu|
000002c0  74 20 6d 69 6e 65 20 74  68 65 20 67 6c 6f 72 79  |t mine the glory|
000002d0  2c 20 6d 69 6e 65 20 74  68 65 20 70 6f 77 65 72  |, mine the power|
000002e0  2e 2e 2e 22 0a 0a 20 20  20 20 20 20 20 20 20 20  |..."..          |
000002f0  20 20 20 20 20 20 20 28  4c 6f 75 69 73 20 4d 61  |       (Louis Ma|
00000300  63 4e 65 69 63 65 2c 20  22 46 6c 69 67 68 74 20  |cNeice, "Flight |
00000310  6f 66 20 74 68 65 20 48  65 61 72 74 22 29 0a 0a  |of the Heart")..|
00000320  0a 20 20 48 65 6c 6c 6f  2c 20 49 6e 66 6f 72 6d  |.  Hello, Inform|
00000330  65 72 21 0a 0a 20 20 54  68 69 73 20 69 73 20 61  |er!..  This is a|
00000340  6e 20 61 62 62 72 65 76  69 61 74 65 64 20 66 6f  |n abbreviated fo|
00000350  72 6d 20 6f 66 20 74 68  65 20 49 6e 66 6f 72 6d  |rm of the Inform|
00000360  20 6d 61 6e 75 61 6c 2e  20 20 46 69 72 73 74 6c  | manual.  Firstl|
00000370  79 2c 20 69 74 20 64 6f  63 75 6d 65 6e 74 73 0a  |y, it documents.|
00000380  49 6e 66 6f 72 6d 2c 20  61 20 70 72 6f 67 72 61  |Inform, a progra|
00000390  6d 20 74 6f 20 6d 61 6e  75 66 61 63 74 75 72 65  |m to manufacture|
000003a0  20 49 6e 66 6f 63 6f 6d  20 66 6f 72 6d 61 74 20  | Infocom format |
000003b0  22 73 74 6f 72 79 20 66  69 6c 65 73 22 20 28 6f  |"story files" (o|
000003c0  72 20 41 64 76 65 6e 74  75 72 65 0a 67 61 6d 65  |r Adventure.game|
000003d0  73 29 2c 20 77 68 69 63  68 20 63 61 6e 20 74 68  |s), which can th|
000003e0  65 6e 20 62 65 20 70 6c  61 79 65 64 20 6f 6e 20  |en be played on |
000003f0  61 6e 79 20 6f 66 20 74  68 65 20 69 6e 74 65 72  |any of the inter|
00000400  70 72 65 74 65 72 73 20  6e 6f 77 20 77 69 64 65  |preters now wide|
00000410  6c 79 0a 61 76 61 69 6c  61 62 6c 65 3a 20 74 68  |ly.available: th|
00000420  69 73 20 69 73 20 70 72  6f 62 61 62 6c 79 20 74  |is is probably t|
00000430  68 65 20 6d 6f 73 74 20  70 6f 72 74 61 62 6c 65  |he most portable|
00000440  20 66 6f 72 6d 20 69 6e  20 77 68 69 63 68 20 67  | form in which g|
00000450  61 6d 65 73 20 63 61 6e  20 65 76 65 72 0a 62 65  |ames can ever.be|
00000460  20 77 72 69 74 74 65 6e  2c 20 61 73 20 6e 6f 20  | written, as no |
00000470  61 6c 74 65 72 61 74 69  6f 6e 20 77 68 61 74 65  |alteration whate|
00000480  76 65 72 20 69 73 20 72  65 71 75 69 72 65 64 20  |ver is required |
00000490  74 6f 20 6d 6f 76 65 20  61 20 67 61 6d 65 20 66  |to move a game f|
000004a0  69 6c 65 20 66 72 6f 6d  0a 6f 6e 65 20 6d 6f 64  |ile from.one mod|
000004b0  65 6c 20 6f 66 20 63 6f  6d 70 75 74 65 72 20 74  |el of computer t|
000004c0  6f 20 61 6e 6f 74 68 65  72 2c 20 61 6e 64 20 61  |o another, and a|
000004d0  6c 6d 6f 73 74 20 65 76  65 72 79 20 6d 6f 64 65  |lmost every mode|
000004e0  6c 20 63 61 6e 20 72 75  6e 20 69 74 2e 20 20 54  |l can run it.  T|
000004f0  68 65 0a 49 6e 66 6f 72  6d 20 6c 61 6e 67 75 61  |he.Inform langua|
00000500  67 65 20 69 73 20 61 6e  20 41 64 76 65 6e 74 75  |ge is an Adventu|
00000510  72 6f 75 73 2c 20 6f 62  6a 65 63 74 2d 6f 72 69  |rous, object-ori|
00000520  65 6e 74 65 64 20 6f 6e  65 2c 20 72 65 6d 69 6e  |ented one, remin|
00000530  69 73 63 65 6e 74 20 6f  66 20 43 2e 0a 0a 20 20  |iscent of C...  |
00000540  53 65 63 6f 6e 64 6c 79  2c 20 69 74 20 64 6f 63  |Secondly, it doc|
00000550  75 6d 65 6e 74 73 20 61  20 73 75 69 74 65 20 6f  |uments a suite o|
00000560  66 20 73 74 61 6e 64 61  72 64 20 22 6c 69 62 72  |f standard "libr|
00000570  61 72 79 22 20 6f 66 20  67 61 6d 65 20 72 6f 75  |ary" of game rou|
00000580  74 69 6e 65 73 2e 0a 54  68 65 73 65 20 72 75 6e  |tines..These run|
00000590  20 74 68 65 20 22 67 61  6d 65 20 75 6e 69 76 65  | the "game unive|
000005a0  72 73 65 22 2e 20 20 54  68 65 20 6c 69 62 72 61  |rse".  The libra|
000005b0  72 79 20 6d 61 6e 61 67  65 73 20 72 6f 6f 6d 73  |ry manages rooms|
000005c0  2c 20 6f 62 6a 65 63 74  73 2c 0a 63 6f 6e 74 61  |, objects,.conta|
000005d0  69 6e 65 72 73 2c 20 74  68 69 6e 67 73 20 6f 6e  |iners, things on|
000005e0  20 74 6f 70 20 6f 66 20  6f 74 68 65 72 20 74 68  | top of other th|
000005f0  69 6e 67 73 2c 20 6c 69  67 68 74 2c 20 73 63 6f  |ings, light, sco|
00000600  72 69 6e 67 2c 20 73 77  69 74 63 68 69 6e 67 20  |ring, switching |
00000610  74 68 69 6e 67 73 0a 6f  6e 20 61 6e 64 20 6f 66  |things.on and of|
00000620  66 2c 20 6f 70 65 6e 69  6e 67 2c 20 63 6c 6f 73  |f, opening, clos|
00000630  69 6e 67 20 61 6e 64 20  6c 6f 63 6b 69 6e 67 20  |ing and locking |
00000640  74 68 69 6e 67 73 2c 20  65 6e 74 65 72 69 6e 67  |things, entering|
00000650  20 74 68 69 6e 67 73 2c  20 74 72 61 76 65 6c 6c  | things, travell|
00000660  69 6e 67 0a 61 62 6f 75  74 20 69 6e 20 74 68 65  |ing.about in the|
00000670  6d 20 61 6e 64 20 73 6f  20 66 6f 72 74 68 3a 20  |m and so forth: |
00000680  69 74 20 69 6d 70 6c 65  6d 65 6e 74 73 20 61 62  |it implements ab|
00000690  6f 75 74 20 38 30 20 76  65 72 62 73 2e 20 20 54  |out 80 verbs.  T|
000006a0  68 65 20 70 61 72 73 65  72 20 69 74 0a 75 73 65  |he parser it.use|
000006b0  73 20 28 77 68 69 63 68  20 63 61 6e 20 62 65 20  |s (which can be |
000006c0  65 6e 74 69 72 65 6c 79  20 69 6e 76 69 73 69 62  |entirely invisib|
000006d0  6c 65 20 74 6f 20 74 68  65 20 64 65 73 69 67 6e  |le to the design|
000006e0  65 72 2c 20 6f 72 20 63  61 6e 20 62 65 20 61 6c  |er, or can be al|
000006f0  74 65 72 65 64 20 69 66  0a 6e 65 63 65 73 73 61  |tered if.necessa|
00000700  72 79 29 20 69 73 20 61  62 6f 75 74 20 61 73 20  |ry) is about as |
00000710  67 6f 6f 64 20 61 73 20  61 6e 79 20 31 39 38 30  |good as any 1980|
00000720  73 20 70 61 72 73 65 72  2e 0a 0a 20 20 4e 65 78  |s parser...  Nex|
00000730  74 2c 20 69 74 20 63 6f  6e 74 61 69 6e 73 20 73  |t, it contains s|
00000740  6f 6d 65 20 73 68 6f 72  74 20 61 72 74 69 63 6c  |ome short articl|
00000750  65 73 20 6f 6e 20 74 68  65 20 61 72 74 20 61 6e  |es on the art an|
00000760  64 20 63 72 61 66 74 20  6f 66 20 64 65 76 69 73  |d craft of devis|
00000770  69 6e 67 0a 61 64 76 65  6e 74 75 72 65 20 67 61  |ing.adventure ga|
00000780  6d 65 73 2e 20 20 54 68  69 73 20 69 73 20 61 20  |mes.  This is a |
00000790  62 6f 6f 6b 20 61 62 6f  75 74 20 77 72 69 74 69  |book about writi|
000007a0  6e 67 20 67 61 6d 65 73  2c 20 6e 6f 74 20 6a 75  |ng games, not ju|
000007b0  73 74 20 63 6f 64 69 6e  67 20 74 68 65 6d 2e 0a  |st coding them..|
000007c0  0a 20 20 41 20 73 68 6f  72 74 20 66 69 6e 61 6c  |.  A short final|
000007d0  20 61 70 70 65 6e 64 69  78 20 64 65 73 63 72 69  | appendix descri|
000007e0  62 65 73 20 65 78 61 6d  70 6c 65 73 20 6f 66 20  |bes examples of |
000007f0  49 6e 66 6f 72 6d 20 63  6f 64 65 2e 0a 0a 0a 20  |Inform code.... |
00000800  20 54 68 65 20 62 65 73  74 20 77 61 79 20 74 6f  | The best way to|
00000810  20 62 65 67 69 6e 20 72  65 61 64 69 6e 67 20 74  | begin reading t|
00000820  68 69 73 20 6d 61 6e 75  61 6c 20 69 73 20 74 6f  |his manual is to|
00000830  20 6c 6f 6f 6b 20 66 69  72 73 74 20 61 74 20 74  | look first at t|
00000840  68 65 20 73 65 63 6f 6e  64 0a 63 68 61 70 74 65  |he second.chapte|
00000850  72 2c 20 74 68 65 20 64  65 73 69 67 6e 65 72 27  |r, the designer'|
00000860  73 20 6d 61 6e 75 61 6c  2e 20 20 54 68 65 20 66  |s manual.  The f|
00000870  69 72 73 74 20 63 68 61  70 74 65 72 20 69 73 20  |irst chapter is |
00000880  61 20 72 65 66 65 72 65  6e 63 65 20 67 75 69 64  |a reference guid|
00000890  65 0a 72 61 74 68 65 72  20 74 68 61 6e 20 61 6e  |e.rather than an|
000008a0  20 69 6e 74 72 6f 64 75  63 74 69 6f 6e 2c 20 61  | introduction, a|
000008b0  6e 64 20 69 73 20 71 75  69 74 65 20 74 65 63 68  |nd is quite tech|
000008c0  6e 69 63 61 6c 20 69 6e  20 70 6c 61 63 65 73 2e  |nical in places.|
000008d0  0a 0a 0a 0a 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |....------------|
000008e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000910  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0a  |---------------.|
00000920  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000930  20 20 20 20 20 20 20 20  20 20 20 20 20 43 6f 6e  |             Con|
00000940  74 65 6e 74 73 0a 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |tents.----------|
00000950  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000990  2d 0a 0a 0a 20 20 20 20  20 20 49 6e 73 74 61 6c  |-...      Instal|
000009a0  6c 69 6e 67 20 49 6e 66  6f 72 6d 20 6f 6e 20 61  |ling Inform on a|
000009b0  6e 20 41 72 63 68 69 6d  65 64 65 73 0a 0a 20 20  |n Archimedes..  |
000009c0  20 20 20 20 52 65 66 65  72 65 6e 63 65 20 4d 61  |    Reference Ma|
000009d0  6e 75 61 6c 3a 20 54 68  65 20 49 6e 66 6f 72 6d  |nual: The Inform|
000009e0  20 4c 61 6e 67 75 61 67  65 20 61 6e 64 20 43 6f  | Language and Co|
000009f0  6d 70 69 6c 65 72 0a 0a  20 20 20 20 20 20 20 20  |mpiler..        |
00000a00  20 20 20 31 2e 20 20 20  43 6f 6d 6d 61 6e 64 20  |   1.   Command |
00000a10  6c 69 6e 65 73 2c 20 65  72 72 6f 72 73 20 61 6e  |lines, errors an|
00000a20  64 20 6d 65 6d 6f 72 79  20 61 6c 6c 6f 63 61 74  |d memory allocat|
00000a30  69 6f 6e 0a 20 20 20 20  20 20 20 20 20 20 20 32  |ion.           2|
00000a40  2e 20 20 20 53 6f 75 72  63 65 20 66 69 6c 65 20  |.   Source file |
00000a50  66 6f 72 6d 61 74 0a 20  20 20 20 20 20 20 20 20  |format.         |
00000a60  20 20 33 2e 20 20 20 43  6f 6d 70 69 6c 65 72 20  |  3.   Compiler |
00000a70  64 69 72 65 63 74 69 76  65 73 0a 20 20 20 20 20  |directives.     |
00000a80  20 20 20 20 20 20 34 2e  20 20 20 56 61 72 69 61  |      4.   Varia|
00000a90  62 6c 65 73 0a 20 20 20  20 20 20 20 20 20 20 20  |bles.           |
00000aa0  35 2e 20 20 20 43 6f 6e  73 74 61 6e 74 73 0a 20  |5.   Constants. |
00000ab0  20 20 20 20 20 20 20 20  20 20 36 2e 20 20 20 52  |          6.   R|
00000ac0  6f 75 74 69 6e 65 73 0a  20 20 20 20 20 20 20 20  |outines.        |
00000ad0  20 20 20 37 2e 20 20 20  45 78 70 72 65 73 73 69  |   7.   Expressi|
00000ae0  6f 6e 73 20 61 6e 64 20  61 73 73 69 67 6e 6d 65  |ons and assignme|
00000af0  6e 74 73 0a 20 20 20 20  20 20 20 20 20 20 20 38  |nts.           8|
00000b00  2e 20 20 20 43 6f 6d 6d  61 6e 64 73 0a 20 20 20  |.   Commands.   |
00000b10  20 20 20 20 20 20 20 20  20 20 20 20 20 28 61 29  |             (a)|
00000b20  20 20 50 72 69 6e 74 69  6e 67 20 63 6f 6d 6d 61  |  Printing comma|
00000b30  6e 64 73 0a 20 20 20 20  20 20 20 20 20 20 20 20  |nds.            |
00000b40  20 20 20 20 28 62 29 20  20 4f 62 6a 65 63 74 20  |    (b)  Object |
00000b50  6d 61 6e 69 70 75 6c 61  74 69 6f 6e 0a 20 20 20  |manipulation.   |
00000b60  20 20 20 20 20 20 20 20  20 20 20 20 20 28 63 29  |             (c)|
00000b70  20 20 43 6f 6e 74 72 6f  6c 20 63 6f 6d 6d 61 6e  |  Control comman|
00000b80  64 73 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |ds.             |
00000b90  20 20 20 28 64 29 20 20  43 61 75 73 69 6e 67 20  |   (d)  Causing |
00000ba0  61 63 74 69 6f 6e 73 0a  20 20 20 20 20 20 20 20  |actions.        |
00000bb0  20 20 20 20 20 20 20 20  28 65 29 20 20 4d 69 73  |        (e)  Mis|
00000bc0  63 65 6c 6c 61 6e 65 6f  75 73 20 61 6e 64 20 72  |cellaneous and r|
00000bd0  61 72 65 6c 79 2d 75 73  65 64 20 63 6f 6d 6d 61  |arely-used comma|
00000be0  6e 64 73 0a 20 20 20 20  20 20 20 20 20 20 20 39  |nds.           9|
00000bf0  2e 20 20 20 43 6f 6e 64  69 74 69 6f 6e 73 0a 20  |.   Conditions. |
00000c00  20 20 20 20 20 20 20 20  20 20 31 30 2e 20 20 42  |          10.  B|
00000c10  75 69 6c 74 2d 69 6e 20  66 75 6e 63 74 69 6f 6e  |uilt-in function|
00000c20  73 20 61 6e 64 20 72 61  6e 64 6f 6d 20 6e 75 6d  |s and random num|
00000c30  62 65 72 73 0a 20 20 20  20 20 20 20 20 20 20 20  |bers.           |
00000c40  31 31 2e 20 20 4f 62 6a  65 63 74 73 2c 20 61 74  |11.  Objects, at|
00000c50  74 72 69 62 75 74 65 73  20 61 6e 64 20 70 72 6f  |tributes and pro|
00000c60  70 65 72 74 69 65 73 0a  20 20 20 20 20 20 20 20  |perties.        |
00000c70  20 20 20 31 32 2e 20 20  52 6f 75 74 69 6e 65 73  |   12.  Routines|
00000c80  20 65 6d 62 65 64 64 65  64 20 69 6e 20 6f 62 6a  | embedded in obj|
00000c90  65 63 74 73 0a 20 20 20  20 20 20 20 20 20 20 20  |ects.           |
00000ca0  31 33 2e 20 20 43 6c 61  73 73 65 73 20 61 6e 64  |13.  Classes and|
00000cb0  20 69 6e 68 65 72 69 74  61 6e 63 65 0a 20 20 20  | inheritance.   |
00000cc0  20 20 20 20 20 20 20 20  31 34 2e 20 20 56 65 72  |        14.  Ver|
00000cd0  62 73 20 61 6e 64 20 67  72 61 6d 6d 61 72 0a 20  |bs and grammar. |
00000ce0  20 20 20 20 20 20 20 20  20 20 31 35 2e 20 20 45  |          15.  E|
00000cf0  78 61 63 74 6c 79 20 77  68 61 74 20 49 6e 66 6f  |xactly what Info|
00000d00  72 6d 20 64 6f 65 73 20  77 69 74 68 20 77 6f 72  |rm does with wor|
00000d10  64 73 0a 20 20 20 20 20  20 20 20 20 20 20 31 36  |ds.           16|
00000d20  2e 20 20 49 6e 64 69 72  65 63 74 20 66 75 6e 63  |.  Indirect func|
00000d30  74 69 6f 6e 20 63 61 6c  6c 73 0a 20 20 20 20 20  |tion calls.     |
00000d40  20 20 20 20 20 20 31 37  2e 20 20 54 65 78 74 20  |      17.  Text |
00000d50  73 70 61 63 69 6e 67 0a  20 20 20 20 20 20 20 20  |spacing.        |
00000d60  20 20 20 31 38 2e 20 20  44 72 61 73 74 69 63 20  |   18.  Drastic |
00000d70  61 6c 74 65 72 61 74 69  6f 6e 20 6f 66 20 6f 62  |alteration of ob|
00000d80  6a 65 63 74 73 0a 20 20  20 20 20 20 20 20 20 20  |jects.          |
00000d90  20 31 39 2e 20 20 41 62  62 72 65 76 69 61 74 69  | 19.  Abbreviati|
00000da0  6f 6e 73 0a 20 20 20 20  20 20 20 20 20 20 20 32  |ons.           2|
00000db0  30 2e 20 20 42 65 6c 6c  73 2c 20 77 68 69 73 74  |0.  Bells, whist|
00000dc0  6c 65 73 20 61 6e 64 20  67 69 6d 6d 69 63 6b 73  |les and gimmicks|
00000dd0  0a 0a 20 20 20 20 20 20  44 65 73 69 67 6e 65 72  |..      Designer|
00000de0  27 73 20 4d 61 6e 75 61  6c 3a 20 55 73 69 6e 67  |'s Manual: Using|
00000df0  20 74 68 65 20 4c 69 62  72 61 72 79 0a 0a 20 20  | the Library..  |
00000e00  20 20 20 20 20 20 20 20  20 44 31 2e 20 20 47 65  |         D1.  Ge|
00000e10  74 74 69 6e 67 20 73 74  61 72 74 65 64 0a 20 20  |tting started.  |
00000e20  20 20 20 20 20 20 20 20  20 44 32 2e 20 20 50 6c  |         D2.  Pl|
00000e30  61 63 65 73 2c 20 73 63  65 6e 65 72 79 20 61 6e  |aces, scenery an|
00000e40  64 20 74 68 65 20 6d 61  70 0a 20 20 20 20 20 20  |d the map.      |
00000e50  20 20 20 20 20 44 33 2e  20 20 43 61 75 73 69 6e  |     D3.  Causin|
00000e60  67 20 61 63 74 69 6f 6e  73 20 61 6e 64 20 6d 61  |g actions and ma|
00000e70  6b 69 6e 67 20 6e 65 77  20 6f 6e 65 73 0a 20 20  |king new ones.  |
00000e80  20 20 20 20 20 20 20 20  20 44 34 2e 20 20 43 6f  |         D4.  Co|
00000e90  6e 74 61 69 6e 65 72 73  2c 20 64 6f 6f 72 73 2c  |ntainers, doors,|
00000ea0  20 73 77 69 74 63 68 65  73 20 61 6e 64 20 76 65  | switches and ve|
00000eb0  68 69 63 6c 65 73 0a 20  20 20 20 20 20 20 20 20  |hicles.         |
00000ec0  20 20 44 35 2e 20 20 4c  69 76 69 6e 67 20 63 72  |  D5.  Living cr|
00000ed0  65 61 74 75 72 65 73 0a  20 20 20 20 20 20 20 20  |eatures.        |
00000ee0  20 20 20 44 36 2e 20 20  43 6c 61 73 73 65 73 20  |   D6.  Classes |
00000ef0  6f 66 20 6f 62 6a 65 63  74 73 0a 20 20 20 20 20  |of objects.     |
00000f00  20 20 20 20 20 20 44 37  2e 20 20 44 61 65 6d 6f  |      D7.  Daemo|
00000f10  6e 73 20 61 6e 64 20 74  68 65 20 70 61 73 73 69  |ns and the passi|
00000f20  6e 67 20 6f 66 20 74 69  6d 65 0a 20 20 20 20 20  |ng of time.     |
00000f30  20 20 20 20 20 20 44 38  2e 20 20 43 61 6c 6c 73  |      D8.  Calls|
00000f40  20 74 6f 20 61 6e 64 20  66 72 6f 6d 20 74 68 65  | to and from the|
00000f50  20 6c 69 62 72 61 72 79  0a 20 20 20 20 20 20 20  | library.       |
00000f60  20 20 20 20 44 39 2e 20  20 54 61 62 6c 65 20 6f  |    D9.  Table o|
00000f70  66 20 70 72 6f 70 65 72  74 69 65 73 20 61 6e 64  |f properties and|
00000f80  20 61 74 74 72 69 62 75  74 65 73 0a 20 20 20 20  | attributes.    |
00000f90  20 20 20 20 20 20 20 44  31 30 2e 20 43 75 73 74  |       D10. Cust|
00000fa0  6f 6d 69 73 69 6e 67 20  74 68 65 20 70 61 72 73  |omising the pars|
00000fb0  65 72 0a 0a 20 20 20 20  20 20 54 68 65 20 43 72  |er..      The Cr|
00000fc0  61 66 74 20 6f 66 20 74  68 65 20 41 64 76 65 6e  |aft of the Adven|
00000fd0  74 75 72 65 0a 0a 20 20  20 20 20 20 20 20 20 20  |ture..          |
00000fe0  20 42 31 2e 20 20 41 20  42 69 6c 6c 20 6f 66 20  | B1.  A Bill of |
00000ff0  50 6c 61 79 65 72 27 73  20 52 69 67 68 74 73 0a  |Player's Rights.|
00001000  20 20 20 20 20 20 20 20  20 20 20 42 32 2e 20 20  |           B2.  |
00001010  41 20 6e 61 72 72 61 74  69 76 65 2e 2e 2e 0a 20  |A narrative.... |
00001020  20 20 20 20 20 20 20 20  20 20 42 33 2e 20 20 2e  |          B3.  .|
00001030  2e 2e 61 74 20 77 61 72  20 77 69 74 68 20 61 20  |..at war with a |
00001040  63 72 6f 73 73 77 6f 72  64 0a 20 20 20 20 20 20  |crossword.      |
00001050  20 20 20 20 20 42 34 2e  20 20 56 61 72 6e 69 73  |     B4.  Varnis|
00001060  68 20 61 6e 64 20 76 65  6e 65 65 72 0a 0a 20 20  |h and veneer..  |
00001070  20 20 20 20 45 78 61 6d  70 6c 65 20 49 6e 66 6f  |    Example Info|
00001080  72 6d 20 70 72 6f 67 72  61 6d 73 0a 0a 20 20 20  |rm programs..   |
00001090  20 20 20 20 20 20 20 20  43 31 2e 20 20 48 65 6c  |        C1.  Hel|
000010a0  6c 6f 20 43 72 75 65 6c  20 57 6f 72 6c 64 0a 20  |lo Cruel World. |
000010b0  20 20 20 20 20 20 20 20  20 20 43 32 2e 20 20 22  |          C2.  "|
000010c0  54 6f 79 73 68 6f 70 22  3a 20 61 20 73 6d 61 6c  |Toyshop": a smal|
000010d0  6c 20 74 6f 79 20 67 61  6d 65 0a 20 20 20 20 20  |l toy game.     |
000010e0  20 20 20 20 20 20 43 33  2e 20 20 22 41 64 76 65  |      C3.  "Adve|
000010f0  6e 74 75 72 65 22 3a 20  61 20 70 6f 72 74 20 6f  |nture": a port o|
00001100  66 20 43 6f 6c 6f 73 73  61 6c 20 43 61 76 65 0a  |f Colossal Cave.|
00001110  20 20 20 20 20 20 20 20  20 20 20 43 34 2e 20 20  |           C4.  |
00001120  41 20 73 68 65 6c 6c 20  67 61 6d 65 20 74 6f 20  |A shell game to |
00001130  62 75 69 6c 64 20 6f 6e  0a 0a 20 20 20 20 20 20  |build on..      |
00001140  46 6f 6f 74 6e 6f 74 65  3a 20 41 76 61 69 6c 61  |Footnote: Availa|
00001150  62 69 6c 69 74 79 20 6f  6e 20 74 68 65 20 49 6e  |bility on the In|
00001160  74 65 72 6e 65 74 2c 20  61 6e 64 20 4c 65 67 61  |ternet, and Lega|
00001170  6c 20 44 65 63 6c 61 72  61 74 69 6f 6e 0a 0a 0a  |l Declaration...|
00001180  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000011c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 20 20 20 20  |-----------.    |
000011d0  20 20 20 20 20 20 20 20  20 20 20 20 20 49 6e 73  |             Ins|
000011e0  74 61 6c 6c 69 6e 67 20  49 6e 66 6f 72 6d 20 6f  |talling Inform o|
000011f0  6e 20 61 6e 20 41 72 63  68 69 6d 65 64 65 73 0a  |n an Archimedes.|
00001200  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001240  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 0a 0a 49 6e  |-----------...In|
00001250  66 6f 72 6d 20 73 68 6f  75 6c 64 20 77 6f 72 6b  |form should work|
00001260  20 6f 6e 20 61 6e 79 20  41 72 63 68 69 6d 65 64  | on any Archimed|
00001270  65 73 20 77 69 74 68 20  61 74 20 6c 65 61 73 74  |es with at least|
00001280  20 31 4d 20 6f 66 20 52  41 4d 2e 0a 0a 46 69 72  | 1M of RAM...Fir|
00001290  73 74 20 6d 61 6b 65 20  61 20 6e 65 77 20 64 69  |st make a new di|
000012a0  72 65 63 74 6f 72 79 2c  20 6f 72 20 74 61 6b 65  |rectory, or take|
000012b0  20 61 20 6e 65 77 20 64  69 73 63 2c 20 74 6f 20  | a new disc, to |
000012c0  70 75 74 20 49 6e 66 6f  72 6d 20 69 6e 2e 0a 49  |put Inform in..I|
000012d0  6e 73 69 64 65 20 74 68  69 73 20 64 69 72 65 63  |nside this direc|
000012e0  74 6f 72 79 2c 20 61 72  72 61 6e 67 65 20 66 69  |tory, arrange fi|
000012f0  6c 65 73 20 61 73 20 66  6f 6c 6c 6f 77 73 3a 0a  |les as follows:.|
00001300  0a 20 20 20 20 20 7a 63  6f 64 65 20 20 20 20 28  |.     zcode    (|
00001310  64 69 72 65 63 74 6f 72  79 20 6f 66 20 49 6e 66  |directory of Inf|
00001320  6f 72 6d 20 73 6f 75 72  63 65 20 63 6f 64 65 29  |orm source code)|
00001330  0a 0a 20 20 20 20 20 20  20 20 20 7a 63 6f 64 65  |..         zcode|
00001340  2e 74 6f 79 73 68 6f 70  20 20 20 20 20 28 65 78  |.toyshop     (ex|
00001350  61 6d 70 6c 65 20 67 61  6d 65 73 20 67 6f 20 69  |ample games go i|
00001360  6e 20 74 68 69 73 20 64  69 72 65 63 74 6f 72 79  |n this directory|
00001370  29 0a 20 20 20 20 20 20  20 20 20 7a 63 6f 64 65  |).         zcode|
00001380  2e 68 65 6c 6c 6f 77 0a  20 20 20 20 20 20 20 20  |.hellow.        |
00001390  20 7a 63 6f 64 65 2e 73  68 65 6c 6c 0a 20 20 20  | zcode.shell.   |
000013a0  20 20 20 20 20 20 7a 63  6f 64 65 2e 61 64 76 65  |      zcode.adve|
000013b0  6e 74 0a 0a 20 20 20 20  20 20 20 20 20 7a 63 6f  |nt..         zco|
000013c0  64 65 2e 68 20 20 20 20  20 20 20 20 20 20 20 28  |de.h           (|
000013d0  64 69 72 65 63 74 6f 72  79 20 6f 66 20 49 6e 66  |directory of Inf|
000013e0  6f 72 6d 20 68 65 61 64  65 72 20 66 69 6c 65 73  |orm header files|
000013f0  29 0a 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |)..             |
00001400  7a 63 6f 64 65 2e 68 2e  76 65 72 62 6c 69 62 20  |zcode.h.verblib |
00001410  20 20 20 28 74 68 65 20  74 68 72 65 65 20 73 74  |   (the three st|
00001420  61 6e 64 61 72 64 20 68  65 61 64 65 72 20 66 69  |andard header fi|
00001430  6c 65 73 3a 0a 20 20 20  20 20 20 20 20 20 20 20  |les:.           |
00001440  20 20 7a 63 6f 64 65 2e  68 2e 70 61 72 73 65 72  |  zcode.h.parser|
00001450  20 20 20 20 20 20 6c 61  74 65 72 2c 20 79 6f 75  |      later, you|
00001460  20 6d 61 79 20 77 69 73  68 20 74 6f 20 61 64 64  | may wish to add|
00001470  20 6f 74 68 65 72 73 29  0a 20 20 20 20 20 20 20  | others).       |
00001480  20 20 20 20 20 20 7a 63  6f 64 65 2e 68 2e 67 72  |      zcode.h.gr|
00001490  61 6d 6d 61 72 0a 0a 20  20 20 20 20 7a 67 61 6d  |ammar..     zgam|
000014a0  65 73 20 20 20 28 64 69  72 65 63 74 6f 72 79 20  |es   (directory |
000014b0  6f 66 20 67 61 6d 65 73  20 70 72 6f 64 75 63 65  |of games produce|
000014c0  64 2c 20 69 6e 69 74 69  61 6c 6c 79 20 65 6d 70  |d, initially emp|
000014d0  74 79 29 0a 0a 54 68 65  20 49 6e 66 6f 72 6d 20  |ty)..The Inform |
000014e0  70 72 6f 67 72 61 6d 20  69 74 73 65 6c 66 20 73  |program itself s|
000014f0  68 6f 75 6c 64 20 65 69  74 68 65 72 20 62 65 20  |hould either be |
00001500  70 75 74 20 69 6e 20 74  68 69 73 20 64 69 72 65  |put in this dire|
00001510  63 74 6f 72 79 20 6f 72  0a 64 69 73 63 20 28 69  |ctory or.disc (i|
00001520  2e 65 2e 2c 20 74 6f 67  65 74 68 65 72 20 77 69  |.e., together wi|
00001530  74 68 20 7a 63 6f 64 65  20 61 6e 64 20 7a 67 61  |th zcode and zga|
00001540  6d 65 73 29 20 6f 72 20  70 75 74 20 69 6e 20 74  |mes) or put in t|
00001550  68 65 20 6c 69 62 72 61  72 79 0a 64 69 72 65 63  |he library.direc|
00001560  74 6f 72 79 20 6f 66 20  74 68 65 20 68 61 72 64  |tory of the hard|
00001570  20 64 69 73 63 2c 20 69  66 20 79 6f 75 20 68 61  | disc, if you ha|
00001580  76 65 20 6f 6e 65 2e 0a  0a 28 41 64 76 65 6e 74  |ve one...(Advent|
00001590  75 72 65 20 67 61 6d 65  20 63 6f 64 65 20 69 6e  |ure game code in|
000015a0  20 74 68 69 73 20 66 6f  72 6d 61 74 20 69 73 20  | this format is |
000015b0  74 72 61 64 69 74 69 6f  6e 61 6c 6c 79 20 63 61  |traditionally ca|
000015c0  6c 6c 65 64 20 5a 2d 63  6f 64 65 2c 0a 68 65 6e  |lled Z-code,.hen|
000015d0  63 65 20 74 68 65 20 64  69 72 65 63 74 6f 72 79  |ce the directory|
000015e0  20 6e 61 6d 65 2e 29 0a  0a 0a 45 61 63 68 20 74  | name.)...Each t|
000015f0  69 6d 65 20 79 6f 75 20  77 61 6e 74 20 74 6f 20  |ime you want to |
00001600  75 73 65 20 49 6e 66 6f  72 6d 2c 20 73 65 74 20  |use Inform, set |
00001610  74 68 65 20 63 75 72 72  65 6e 74 20 77 6f 72 6b  |the current work|
00001620  69 6e 67 20 64 69 72 65  63 74 6f 72 79 0a 74 6f  |ing directory.to|
00001630  20 74 68 69 73 20 64 69  72 65 63 74 6f 72 79 20  | this directory |
00001640  28 6f 72 20 70 75 74 20  74 68 69 73 20 64 69 73  |(or put this dis|
00001650  63 20 69 6e 29 2e 0a 0a  0a 41 73 20 61 20 66 69  |c in)....As a fi|
00001660  72 73 74 20 74 65 73 74  2c 20 67 6f 20 74 6f 20  |rst test, go to |
00001670  74 68 65 20 63 6f 6d 6d  61 6e 64 20 6c 69 6e 65  |the command line|
00001680  20 28 65 2e 67 2e 2c 20  70 72 65 73 73 20 66 31  | (e.g., press f1|
00001690  32 20 74 6f 20 65 73 63  61 70 65 20 74 68 65 0a  |2 to escape the.|
000016a0  64 65 73 6b 74 6f 70 20  74 6f 20 61 20 2a 20 70  |desktop to a * p|
000016b0  72 6f 6d 70 74 29 20 61  6e 64 20 74 79 70 65 20  |rompt) and type |
000016c0  73 69 6d 70 6c 79 0a 0a  20 20 20 20 20 69 6e 66  |simply..     inf|
000016d0  6f 72 6d 0a 0a 77 68 69  63 68 20 73 68 6f 75 6c  |orm..which shoul|
000016e0  64 20 70 72 69 6e 74 20  6f 75 74 20 72 65 61 6d  |d print out ream|
000016f0  73 20 6f 66 20 74 68 65  20 66 6f 72 6d 61 6c 20  |s of the formal |
00001700  73 79 6e 74 61 78 20 66  6f 72 20 74 68 65 20 49  |syntax for the I|
00001710  6e 66 6f 72 6d 20 63 6f  6d 6d 61 6e 64 2e 0a 0a  |nform command...|
00001720  0a 54 6f 20 64 6f 20 61  6e 79 20 77 6f 72 6b 2c  |.To do any work,|
00001730  20 49 6e 66 6f 72 6d 20  6e 65 65 64 73 20 73 6f  | Inform needs so|
00001740  6d 65 77 68 65 72 65 20  74 6f 20 70 75 74 20 74  |mewhere to put t|
00001750  65 6d 70 6f 72 61 72 79  20 66 69 6c 65 73 20 63  |emporary files c|
00001760  72 65 61 74 65 64 0a 64  75 72 69 6e 67 20 63 6f  |reated.during co|
00001770  6d 70 69 6c 61 74 69 6f  6e 20 28 61 6e 64 20 64  |mpilation (and d|
00001780  65 6c 65 74 65 64 20 61  66 74 65 72 77 61 72 64  |eleted afterward|
00001790  73 29 2e 20 20 49 74 73  20 75 73 75 61 6c 20 70  |s).  Its usual p|
000017a0  72 61 63 74 69 63 65 20  69 73 20 74 6f 0a 70 75  |ractice is to.pu|
000017b0  74 20 74 68 65 73 65 20  6f 6e 20 74 68 65 20 52  |t these on the R|
000017c0  41 4d 20 64 69 73 63 2e  20 20 53 6f 20 79 6f 75  |AM disc.  So you|
000017d0  20 6e 65 65 64 20 74 6f  20 63 72 65 61 74 65 20  | need to create |
000017e0  61 20 52 41 4d 20 64 69  73 63 2c 20 75 73 69 6e  |a RAM disc, usin|
000017f0  67 20 74 68 65 0a 54 61  73 6b 20 77 69 6e 64 6f  |g the.Task windo|
00001800  77 2c 20 62 65 66 6f 72  65 20 79 6f 75 20 63 61  |w, before you ca|
00001810  6e 20 75 73 65 20 49 6e  66 6f 72 6d 2e 20 20 39  |n use Inform.  9|
00001820  36 4b 20 69 73 20 65 6e  6f 75 67 68 20 66 6f 72  |6K is enough for|
00001830  20 6d 6f 73 74 20 70 75  72 70 6f 73 65 73 3b 0a  | most purposes;.|
00001840  49 27 76 65 20 6e 65 76  65 72 20 6e 65 65 64 65  |I've never neede|
00001850  64 20 6d 6f 72 65 20 74  68 61 6e 20 32 35 36 4b  |d more than 256K|
00001860  2e 0a 0a 4f 6e 63 65 20  74 68 69 73 20 69 73 20  |...Once this is |
00001870  64 6f 6e 65 2c 20 74 68  65 20 66 69 72 73 74 20  |done, the first |
00001880  74 65 73 74 20 69 73 20  74 6f 20 74 72 79 0a 0a  |test is to try..|
00001890  20 20 20 20 20 69 6e 66  6f 72 6d 20 68 65 6c 6c  |     inform hell|
000018a0  6f 77 0a 0a 68 65 6c 6c  6f 77 20 62 65 69 6e 67  |ow..hellow being|
000018b0  20 74 68 65 20 48 65 6c  6c 6f 2d 57 6f 72 6c 64  | the Hello-World|
000018c0  20 70 72 6f 67 72 61 6d  2c 20 61 20 76 65 72 79  | program, a very|
000018d0  20 73 6d 61 6c 6c 20 22  67 61 6d 65 22 20 69 6e  | small "game" in|
000018e0  64 65 65 64 2e 20 20 54  68 69 73 0a 73 68 6f 75  |deed.  This.shou|
000018f0  6c 64 20 63 72 65 61 74  65 20 61 20 66 69 6c 65  |ld create a file|
00001900  20 63 61 6c 6c 65 64 20  22 68 65 6c 6c 6f 77 22  | called "hellow"|
00001910  20 69 6e 20 74 68 65 20  7a 67 61 6d 65 73 20 64  | in the zgames d|
00001920  69 72 65 63 74 6f 72 79  2e 20 20 54 6f 20 70 6c  |irectory.  To pl|
00001930  61 79 0a 69 74 20 28 61  63 74 75 61 6c 6c 79 2c  |ay.it (actually,|
00001940  20 22 70 6c 61 79 22 20  69 73 20 61 6e 20 65 78  | "play" is an ex|
00001950  61 67 67 65 72 61 74 69  6f 6e 20 69 6e 20 74 68  |aggeration in th|
00001960  69 73 20 63 61 73 65 29  20 79 6f 75 20 6e 65 65  |is case) you nee|
00001970  64 20 74 6f 20 68 61 76  65 0a 62 6f 6f 74 65 64  |d to have.booted|
00001980  20 75 70 20 28 69 2e 65  2e 2c 20 74 6f 20 68 61  | up (i.e., to ha|
00001990  76 65 20 6f 70 65 6e 65  64 20 61 20 64 69 72 65  |ve opened a dire|
000019a0  63 74 6f 72 79 20 63 6f  6e 74 61 69 6e 69 6e 67  |ctory containing|
000019b0  29 20 74 68 65 20 21 5a  69 70 0a 61 70 70 6c 69  |) the !Zip.appli|
000019c0  63 61 74 69 6f 6e 20 73  75 70 70 6c 69 65 64 20  |cation supplied |
000019d0  77 69 74 68 20 6c 61 73  74 20 6d 6f 6e 74 68 27  |with last month'|
000019e0  73 20 41 63 6f 72 6e 20  55 73 65 72 20 64 69 73  |s Acorn User dis|
000019f0  63 2e 20 20 49 66 20 79  6f 75 20 68 61 76 65 20  |c.  If you have |
00001a00  64 6f 6e 65 0a 73 6f 2c  20 74 68 65 20 69 63 6f  |done.so, the ico|
00001a10  6e 20 66 6f 72 20 7a 67  61 6d 65 73 2e 68 65 6c  |n for zgames.hel|
00001a20  6c 6f 77 20 77 69 6c 6c  20 62 65 20 61 20 62 6f  |low will be a bo|
00001a30  78 20 77 69 74 68 20 74  68 65 20 77 6f 72 64 20  |x with the word |
00001a40  22 49 66 22 20 69 6e 2c  20 61 6e 64 0a 61 20 6c  |"If" in, and.a l|
00001a50  69 74 74 6c 65 20 73 75  62 73 63 72 69 70 74 20  |ittle subscript |
00001a60  33 2e 20 20 28 4e 65 76  65 72 20 6d 69 6e 64 20  |3.  (Never mind |
00001a70  77 68 79 20 66 6f 72 20  6e 6f 77 2e 29 20 20 44  |why for now.)  D|
00001a80  6f 75 62 6c 65 2d 63 6c  69 63 6b 20 61 6e 64 20  |ouble-click and |
00001a90  69 74 0a 73 68 6f 75 6c  64 20 70 6c 61 79 2e 0a  |it.should play..|
00001aa0  0a 4e 6f 77 20 74 72 79  0a 0a 20 20 20 20 20 69  |.Now try..     i|
00001ab0  6e 66 6f 72 6d 20 2d 78  20 74 6f 79 73 68 6f 70  |nform -x toyshop|
00001ac0  0a 0a 77 68 69 63 68 20  73 68 6f 75 6c 64 20 74  |..which should t|
00001ad0  61 6b 65 20 72 61 74 68  65 72 20 6c 6f 6e 67 65  |ake rather longe|
00001ae0  72 2c 20 61 6e 64 20 70  72 6f 64 75 63 65 20 61  |r, and produce a|
00001af0  20 73 74 72 65 61 6d 20  6f 66 20 23 20 63 68 61  | stream of # cha|
00001b00  72 61 63 74 65 72 73 2e  0a 28 54 68 69 73 20 69  |racters..(This i|
00001b10  73 20 74 68 65 20 2d 78  20 6f 70 74 69 6f 6e 20  |s the -x option |
00001b20  2d 20 69 74 20 69 73 20  72 65 61 73 73 75 72 69  |- it is reassuri|
00001b30  6e 67 20 69 6e 20 74 68  61 74 20 69 74 20 73 68  |ng in that it sh|
00001b40  6f 77 73 20 74 68 65 20  63 6f 6d 70 75 74 65 72  |ows the computer|
00001b50  0a 69 73 20 73 74 69 6c  6c 20 77 6f 72 6b 69 6e  |.is still workin|
00001b60  67 20 61 6e 64 20 68 61  73 6e 27 74 20 63 72 61  |g and hasn't cra|
00001b70  73 68 65 64 2e 29 20 20  54 68 69 73 20 73 68 6f  |shed.)  This sho|
00001b80  75 6c 64 20 6d 61 6b 65  20 61 20 6d 6f 72 65 20  |uld make a more |
00001b90  69 6e 74 65 72 65 73 74  69 6e 67 0a 28 74 68 6f  |interesting.(tho|
00001ba0  75 67 68 20 73 74 69 6c  6c 20 73 6d 61 6c 6c 29  |ugh still small)|
00001bb0  20 74 6f 79 20 67 61 6d  65 2e 0a 0a 4e 6f 77 20  | toy game...Now |
00001bc0  74 75 72 6e 20 74 6f 20  70 61 72 74 20 28 44 31  |turn to part (D1|
00001bd0  29 2c 20 74 68 65 20 62  65 67 69 6e 6e 69 6e 67  |), the beginning|
00001be0  20 6f 66 20 74 68 65 20  44 65 73 69 67 6e 65 72  | of the Designer|
00001bf0  27 73 20 4d 61 6e 75 61  6c 2e 0a 0a 0a 0a 49 66  |'s Manual.....If|
00001c00  20 6d 65 6d 6f 72 79 20  69 73 20 73 68 6f 72 74  | memory is short|
00001c10  2e 2e 2e 0a 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |....------------|
00001c20  2d 2d 2d 2d 2d 2d 2d 2d  2d 0a 54 68 65 72 65 20  |---------.There |
00001c30  61 72 65 20 74 77 6f 20  77 61 79 73 20 74 6f 20  |are two ways to |
00001c40  72 65 64 75 63 65 20 6d  65 6d 6f 72 79 20 63 6f  |reduce memory co|
00001c50  6e 73 75 6d 70 74 69 6f  6e 2e 20 20 54 68 65 20  |nsumption.  The |
00001c60  66 69 72 73 74 20 69 73  20 74 6f 20 75 73 65 0a  |first is to use.|
00001c70  61 20 73 6d 61 6c 6c 65  72 20 76 65 72 73 69 6f  |a smaller versio|
00001c80  6e 20 6f 66 20 49 6e 66  6f 72 6d 2c 20 62 79 0a  |n of Inform, by.|
00001c90  0a 20 20 20 20 20 69 6e  66 6f 72 6d 20 24 73 6d  |.     inform $sm|
00001ca0  61 6c 6c 20 28 2e 2e 2e  77 68 61 74 65 76 65 72  |all (...whatever|
00001cb0  20 6f 70 74 69 6f 6e 73  20 79 6f 75 20 77 65 72  | options you wer|
00001cc0  65 20 67 6f 69 6e 67 20  74 6f 20 75 73 65 2e 2e  |e going to use..|
00001cd0  2e 29 0a 0a 28 54 68 69  73 20 77 69 6c 6c 20 68  |.)..(This will h|
00001ce0  61 76 65 20 74 72 6f 75  62 6c 65 20 63 6f 6d 70  |ave trouble comp|
00001cf0  69 6c 69 6e 67 20 73 6f  6d 65 20 76 65 72 79 20  |iling some very |
00001d00  6c 61 72 67 65 20 67 61  6d 65 73 20 69 6e 64 65  |large games inde|
00001d10  65 64 2c 20 62 75 74 20  77 69 6c 6c 0a 77 6f 72  |ed, but will.wor|
00001d20  6b 20 77 65 6c 6c 20 65  6e 6f 75 67 68 20 6f 6e  |k well enough on|
00001d30  20 6e 6f 72 6d 61 6c 2d  73 69 7a 65 64 20 6f 6e  | normal-sized on|
00001d40  65 73 2e 29 0a 0a 54 68  65 20 73 65 63 6f 6e 64  |es.)..The second|
00001d50  20 77 61 79 20 69 73 20  74 6f 20 6d 6f 76 65 20  | way is to move |
00001d60  74 68 65 20 74 65 6d 70  6f 72 61 72 79 20 66 69  |the temporary fi|
00001d70  6c 65 73 20 74 6f 20 74  68 65 20 66 6c 6f 70 70  |les to the flopp|
00001d80  79 20 6f 72 20 68 61 72  64 20 64 69 73 63 2c 0a  |y or hard disc,.|
00001d90  69 6e 73 74 65 61 64 20  6f 66 20 73 74 6f 72 69  |instead of stori|
00001da0  6e 67 20 74 68 65 6d 20  6f 6e 20 74 68 65 20 52  |ng them on the R|
00001db0  41 4d 20 64 69 73 63 2e  20 20 54 68 69 73 20 63  |AM disc.  This c|
00001dc0  61 6e 20 62 65 20 64 6f  6e 65 20 62 79 2c 20 66  |an be done by, f|
00001dd0  6f 72 20 69 6e 73 74 61  6e 63 65 2c 0a 0a 20 20  |or instance,..  |
00001de0  20 20 20 69 6e 66 6f 72  6d 20 24 74 65 6d 70 5f  |   inform $temp_|
00001df0  66 69 6c 65 73 3d 24 2e  20 28 2e 2e 2e 77 68 61  |files=$. (...wha|
00001e00  74 65 76 65 72 20 6f 70  74 69 6f 6e 73 20 79 6f  |tever options yo|
00001e10  75 20 77 65 72 65 20 67  6f 69 6e 67 20 74 6f 20  |u were going to |
00001e20  75 73 65 2e 2e 2e 29 0a  0a 77 68 69 63 68 20 77  |use...)..which w|
00001e30  69 6c 6c 20 6f 66 20 63  6f 75 72 73 65 20 62 65  |ill of course be|
00001e40  20 61 20 6c 69 74 74 6c  65 20 73 6c 6f 77 65 72  | a little slower|
00001e50  2c 20 62 75 74 20 6e 6f  74 20 6e 65 65 64 20 61  |, but not need a|
00001e60  20 52 41 4d 20 64 69 73  63 20 61 74 20 61 6c 6c  | RAM disc at all|
00001e70  2e 0a 0a 0a 49 66 20 79  6f 75 20 68 61 76 65 20  |....If you have |
00001e80  74 68 65 20 44 44 45 0a  2d 2d 2d 2d 2d 2d 2d 2d  |the DDE.--------|
00001e90  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 54 68 65 6e  |-----------.Then|
00001ea0  20 49 6e 66 6f 72 6d 20  63 61 6e 20 62 65 20 75  | Inform can be u|
00001eb0  73 65 64 20 77 69 74 68  20 21 4d 61 6b 65 2c 20  |sed with !Make, |
00001ec0  61 6e 64 20 75 73 69 6e  67 20 74 68 65 20 2d 54  |and using the -T|
00001ed0  20 28 74 68 72 6f 77 62  61 63 6b 29 20 6f 70 74  | (throwback) opt|
00001ee0  69 6f 6e 0a 69 74 20 77  69 6c 6c 20 74 68 72 6f  |ion.it will thro|
00001ef0  77 20 62 61 63 6b 20 65  72 72 6f 72 73 20 69 6e  |w back errors in|
00001f00  74 6f 20 21 53 72 63 45  64 69 74 20 6a 75 73 74  |to !SrcEdit just|
00001f10  20 61 73 20 28 66 6f 72  20 69 6e 73 74 61 6e 63  | as (for instanc|
00001f20  65 29 20 74 68 65 20 4e  6f 72 63 72 6f 66 74 0a  |e) the Norcroft.|
00001f30  43 20 63 6f 6d 70 69 6c  65 72 20 64 6f 65 73 2e  |C compiler does.|
00001f40  0a 0a 0a 0a 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |....------------|
00001f50  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00001f80  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0a  |---------------.|
00001f90  20 20 20 20 20 20 20 20  20 20 20 20 52 65 66 65  |            Refe|
00001fa0  72 65 6e 63 65 20 4d 61  6e 75 61 6c 3a 20 54 68  |rence Manual: Th|
00001fb0  65 20 49 6e 66 6f 72 6d  20 4c 61 6e 67 75 61 67  |e Inform Languag|
00001fc0  65 20 61 6e 64 20 43 6f  6d 70 69 6c 65 72 0a 2d  |e and Compiler.-|
00001fd0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002010  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0a 0a 0a 2d 2d 2d  |----------...---|
00002020  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00002060  2d 2d 2d 2d 2d 2d 2d 2d  0a 31 2e 20 43 6f 6d 6d  |--------.1. Comm|
00002070  61 6e 64 20 6c 69 6e 65  73 2c 20 65 72 72 6f 72  |and lines, error|
00002080  73 20 61 6e 64 20 6d 65  6d 6f 72 79 20 61 6c 6c  |s and memory all|
00002090  6f 63 61 74 69 6f 6e 0a  2d 2d 2d 2d 2d 2d 2d 2d  |ocation.--------|
000020a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000020e0  2d 2d 2d 0a 0a 0a 20 20  20 20 20 20 20 22 49 20  |---...       "I |
000020f0  77 61 73 20 70 72 6f 6d  69 73 65 64 20 61 20 68  |was promised a h|
00002100  6f 72 73 65 2c 20 62 75  74 20 77 68 61 74 20 49  |orse, but what I|
00002110  20 67 6f 74 20 69 6e 73  74 65 61 64 0a 20 20 20  | got instead.   |
00002120  20 20 20 20 20 77 61 73  20 61 20 74 61 69 6c 2c  |     was a tail,|
00002130  20 77 69 74 68 20 61 20  68 6f 72 73 65 20 68 75  | with a horse hu|
00002140  6e 67 20 66 72 6f 6d 20  69 74 20 61 6c 6d 6f 73  |ng from it almos|
00002150  74 20 64 65 61 64 2e 22  0a 0a 20 20 20 20 20 20  |t dead."..      |
00002160  20 28 65 70 69 67 72 61  6d 20 62 79 20 50 61 6c  | (epigram by Pal|
00002170  6c 61 64 61 73 20 6f 66  20 41 6c 65 78 61 6e 64  |ladas of Alexand|
00002180  72 69 61 2c 20 74 72 61  6e 73 6c 61 74 65 64 20  |ria, translated |
00002190  62 79 20 54 6f 6e 79 20  48 61 72 72 69 73 6f 6e  |by Tony Harrison|
000021a0  29 0a 0a 0a 49 6e 66 6f  72 6d 20 63 6f 6d 70 69  |)...Inform compi|
000021b0  6c 65 73 20 74 68 65 20  73 6f 75 72 63 65 20 63  |les the source c|
000021c0  6f 64 65 20 66 6f 72 20  61 6e 20 41 64 76 65 6e  |ode for an Adven|
000021d0  74 75 72 65 20 67 61 6d  65 20 74 6f 20 6f 6e 65  |ture game to one|
000021e0  20 6f 66 20 74 77 6f 20  6b 69 6e 64 73 20 6f 66  | of two kinds of|
000021f0  0a 22 73 74 6f 72 79 20  66 69 6c 65 22 3a 20 53  |."story file": S|
00002200  74 61 6e 64 61 72 64 20  28 76 65 72 73 69 6f 6e  |tandard (version|
00002210  20 33 2c 20 74 68 65 20  64 65 66 61 75 6c 74 29  | 3, the default)|
00002220  20 6f 72 20 41 64 76 61  6e 63 65 64 20 28 76 65  | or Advanced (ve|
00002230  72 73 69 6f 6e 20 35 29  2e 20 0a 55 6e 6c 65 73  |rsion 5). .Unles|
00002240  73 20 73 70 65 63 69 61  6c 69 73 65 64 20 76 65  |s specialised ve|
00002250  72 73 69 6f 6e 2d 35 2d  6f 6e 6c 79 20 66 65 61  |rsion-5-only fea|
00002260  74 75 72 65 73 20 61 72  65 20 61 73 6b 65 64 20  |tures are asked |
00002270  66 6f 72 2c 20 61 6e 20  49 6e 66 6f 72 6d 20 67  |for, an Inform g|
00002280  61 6d 65 20 63 61 6e 0a  62 65 20 63 6f 6d 70 69  |ame can.be compi|
00002290  6c 65 64 20 74 6f 20 65  69 74 68 65 72 20 66 6f  |led to either fo|
000022a0  72 6d 61 74 2e 20 20 42  65 63 61 75 73 65 20 74  |rmat.  Because t|
000022b0  68 65 20 41 64 76 61 6e  63 65 64 20 66 6f 72 6d  |he Advanced form|
000022c0  61 74 20 65 78 74 65 6e  64 73 20 6d 61 6e 79 20  |at extends many |
000022d0  6f 66 0a 74 68 65 20 72  65 73 74 72 69 63 74 69  |of.the restricti|
000022e0  6f 6e 73 20 6f 6e 20 74  68 65 20 53 74 61 6e 64  |ons on the Stand|
000022f0  61 72 64 20 6f 6e 65 2c  20 69 74 20 6d 61 79 20  |ard one, it may |
00002300  62 65 20 6e 65 65 64 65  64 20 77 68 65 6e 20 61  |be needed when a|
00002310  20 67 61 6d 65 20 62 65  63 6f 6d 65 73 0a 73 75  | game becomes.su|
00002320  66 66 69 63 69 65 6e 74  6c 79 20 6c 61 72 67 65  |fficiently large|
00002330  2e 0a 0a 49 66 20 49 6e  66 6f 72 6d 20 69 73 20  |...If Inform is |
00002340  72 75 6e 20 77 69 74 68  6f 75 74 20 61 6e 79 20  |run without any |
00002350  70 61 72 61 6d 65 74 65  72 73 20 67 69 76 65 6e  |parameters given|
00002360  2c 20 69 74 20 70 72 69  6e 74 73 20 6f 75 74 20  |, it prints out |
00002370  73 6f 6d 65 74 68 69 6e  67 20 6c 69 6b 65 0a 74  |something like.t|
00002380  68 65 20 66 6f 6c 6c 6f  77 69 6e 67 20 69 6e 66  |he following inf|
00002390  6f 72 6d 61 74 69 6f 6e  3a 0a 0a 20 20 20 41 72  |ormation:..   Ar|
000023a0  63 68 69 6d 65 64 65 73  20 49 6e 66 6f 72 6d 20  |chimedes Inform |
000023b0  35 20 28 76 31 32 35 39  2f 61 74 29 0a 20 20 20  |5 (v1259/at).   |
000023c0  52 65 6c 65 61 73 65 20  35 20 28 4a 75 6e 65 20  |Release 5 (June |
000023d0  31 31 74 68 20 31 39 39  34 29 0a 20 20 20 28 61  |11th 1994).   (a|
000023e0  6c 6c 6f 63 61 74 69 6e  67 20 6d 65 6d 6f 72 79  |llocating memory|
000023f0  20 66 6f 72 20 61 72 72  61 79 73 29 20 28 74 65  | for arrays) (te|
00002400  6d 70 6f 72 61 72 79 20  66 69 6c 65 73 29 20 0a  |mporary files) .|
00002410  20 20 20 0a 20 20 20 54  68 69 73 20 70 72 6f 67  |   .   This prog|
00002420  72 61 6d 20 69 73 20 61  20 63 6f 6d 70 69 6c 65  |ram is a compile|
00002430  72 20 74 6f 20 49 6e 66  6f 63 6f 6d 20 66 6f 72  |r to Infocom for|
00002440  6d 61 74 20 73 74 6f 72  79 20 66 69 6c 65 73 2e  |mat story files.|
00002450  0a 20 20 20 49 74 20 69  73 20 63 6f 70 79 72 69  |.   It is copyri|
00002460  67 68 74 20 28 43 29 20  47 72 61 68 61 6d 20 4e  |ght (C) Graham N|
00002470  65 6c 73 6f 6e 2c 20 31  39 39 33 2f 34 2e 0a 20  |elson, 1993/4.. |
00002480  20 20 0a 20 20 20 49 74  73 20 73 79 6e 74 61 78  |  .   Its syntax|
00002490  20 69 73 20 22 69 6e 66  6f 72 6d 20 5b 2d 6c 69  | is "inform [-li|
000024a0  73 74 5d 20 5b 24 6d 65  6d 63 6f 6d 20 2e 2e 2e  |st] [$memcom ...|
000024b0  5d 20 3c 66 69 6c 65 31  3e 20 5b 3c 66 69 6c 65  |] <file1> [<file|
000024c0  32 3e 5d 22 0a 20 20 20  0a 20 20 20 3c 66 69 6c  |2>]".   .   <fil|
000024d0  65 31 3e 20 69 73 20 74  68 65 20 6e 61 6d 65 20  |e1> is the name |
000024e0  6f 66 20 74 68 65 20 49  6e 66 6f 72 6d 20 73 6f  |of the Inform so|
000024f0  75 72 63 65 20 66 69 6c  65 3b 20 49 6e 66 6f 72  |urce file; Infor|
00002500  6d 20 74 72 61 6e 73 6c  61 74 65 73 20 74 68 69  |m translates thi|
00002510  73 20 69 6e 74 6f 0a 20  20 20 20 20 20 22 5a 63  |s into.      "Zc|
00002520  6f 64 65 2e 3c 66 69 6c  65 31 3e 22 0a 20 20 20  |ode.<file1>".   |
00002530  28 75 6e 6c 65 73 73 20  3c 66 69 6c 65 31 3e 20  |(unless <file1> |
00002540  63 6f 6e 74 61 69 6e 73  20 61 20 27 2e 27 20 6f  |contains a '.' o|
00002550  72 20 27 2f 27 2c 20 69  6e 20 77 68 69 63 68 20  |r '/', in which |
00002560  63 61 73 65 20 69 74 20  69 73 20 6c 65 66 74 20  |case it is left |
00002570  61 6c 6f 6e 65 29 2e 0a  20 20 20 3c 66 69 6c 65  |alone)..   <file|
00002580  32 3e 20 6d 61 79 20 6f  70 74 69 6f 6e 61 6c 6c  |2> may optionall|
00002590  79 20 62 65 20 67 69 76  65 6e 20 61 73 20 74 68  |y be given as th|
000025a0  65 20 6e 61 6d 65 20 6f  66 20 74 68 65 20 73 74  |e name of the st|
000025b0  6f 72 79 20 66 69 6c 65  20 74 6f 20 6d 61 6b 65  |ory file to make|
000025c0  2e 0a 20 20 20 49 66 20  69 74 20 69 73 6e 27 74  |..   If it isn't|
000025d0  20 67 69 76 65 6e 2c 20  49 6e 66 6f 72 6d 20 77  | given, Inform w|
000025e0  72 69 74 65 73 20 74 6f  0a 20 20 20 20 20 20 22  |rites to.      "|
000025f0  5a 67 61 6d 65 73 2e 3c  66 69 6c 65 31 3e 22 0a  |Zgames.<file1>".|
00002600  20 20 20 28 66 6f 72 20  62 6f 74 68 20 76 65 72  |   (for both ver|
00002610  73 69 6f 6e 2d 33 20 61  6e 64 20 76 65 72 73 69  |sion-3 and versi|
00002620  6f 6e 2d 35 20 66 69 6c  65 73 29 0a 20 20 20 62  |on-5 files).   b|
00002630  75 74 20 69 66 20 69 74  20 69 73 2c 20 74 68 65  |ut if it is, the|
00002640  6e 20 49 6e 66 6f 72 6d  20 74 61 6b 65 73 20 3c  |n Inform takes <|
00002650  66 69 6c 65 32 3e 20 61  73 20 74 68 65 20 66 75  |file2> as the fu|
00002660  6c 6c 20 66 69 6c 65 6e  61 6d 65 2e 0a 20 20 20  |ll filename..   |
00002670  0a 20 20 20 2d 6c 69 73  74 20 69 73 20 61 6e 20  |.   -list is an |
00002680  6f 70 74 69 6f 6e 61 6c  20 6c 69 73 74 20 6f 66  |optional list of|
00002690  20 73 77 69 74 63 68 20  6c 65 74 74 65 72 73 20  | switch letters |
000026a0  66 6f 6c 6c 6f 77 69 6e  67 20 74 68 65 20 69 6e  |following the in|
000026b0  69 74 69 61 6c 20 68 79  70 68 65 6e 3a 0a 20 20  |itial hyphen:.  |
000026c0  20 20 20 61 20 20 20 6c  69 73 74 20 61 73 73 65  |   a   list asse|
000026d0  6d 62 6c 79 2d 6c 65 76  65 6c 20 69 6e 73 74 72  |mbly-level instr|
000026e0  75 63 74 69 6f 6e 73 20  63 6f 6d 70 69 6c 65 64  |uctions compiled|
000026f0  0a 20 20 20 20 20 62 20  20 20 67 69 76 65 20 73  |.     b   give s|
00002700  74 61 74 69 73 74 69 63  73 20 61 6e 64 2f 6f 72  |tatistics and/or|
00002710  20 6c 69 6e 65 2f 6f 62  6a 65 63 74 20 6c 69 73  | line/object lis|
00002720  74 20 69 6e 20 62 6f 74  68 20 70 61 73 73 65 73  |t in both passes|
00002730  0a 20 20 20 20 20 63 20  20 20 6d 6f 72 65 20 63  |.     c   more c|
00002740  6f 6e 63 69 73 65 20 65  72 72 6f 72 20 6d 65 73  |oncise error mes|
00002750  73 61 67 65 73 0a 20 20  20 20 20 64 20 20 20 63  |sages.     d   c|
00002760  6f 6e 74 72 61 63 74 20  64 6f 75 62 6c 65 20 73  |ontract double s|
00002770  70 61 63 65 73 20 61 66  74 65 72 20 66 75 6c 6c  |paces after full|
00002780  20 73 74 6f 70 73 20 69  6e 20 74 65 78 74 0a 20  | stops in text. |
00002790  20 20 20 20 65 20 20 20  65 63 6f 6e 6f 6d 79 20  |    e   economy |
000027a0  6d 6f 64 65 20 28 73 6c  6f 77 65 72 29 3a 20 6d  |mode (slower): m|
000027b0  61 6b 65 20 75 73 65 20  6f 66 20 64 65 63 6c 61  |ake use of decla|
000027c0  72 65 64 20 61 62 62 72  65 76 69 61 74 69 6f 6e  |red abbreviation|
000027d0  73 0a 20 20 20 20 20 66  20 20 20 66 72 65 71 75  |s.     f   frequ|
000027e0  65 6e 63 69 65 73 20 6d  6f 64 65 3a 20 73 68 6f  |encies mode: sho|
000027f0  77 20 68 6f 77 20 75 73  65 66 75 6c 20 61 62 62  |w how useful abb|
00002800  72 65 76 69 61 74 69 6f  6e 73 20 61 72 65 0a 20  |reviations are. |
00002810  20 20 20 20 67 20 20 20  77 69 74 68 20 64 65 62  |    g   with deb|
00002820  75 67 67 69 6e 67 20 63  6f 64 65 3a 20 74 72 61  |ugging code: tra|
00002830  63 65 73 20 61 6c 6c 20  66 75 6e 63 74 69 6f 6e  |ces all function|
00002840  20 63 61 6c 6c 73 0a 20  20 20 20 20 68 20 20 20  | calls.     h   |
00002850  70 72 69 6e 74 20 74 68  69 73 20 69 6e 66 6f 72  |print this infor|
00002860  6d 61 74 69 6f 6e 0a 20  20 20 20 20 69 20 20 20  |mation.     i   |
00002870  69 67 6e 6f 72 65 20 64  65 66 61 75 6c 74 20 73  |ignore default s|
00002880  77 69 74 63 68 65 73 20  73 65 74 20 77 69 74 68  |witches set with|
00002890  69 6e 20 74 68 65 20 66  69 6c 65 0a 20 20 20 20  |in the file.    |
000028a0  20 6a 20 20 20 6c 69 73  74 20 6f 62 6a 65 63 74  | j   list object|
000028b0  73 20 61 73 20 63 6f 6e  73 74 72 75 63 74 65 64  |s as constructed|
000028c0  0a 20 20 20 20 20 6c 20  20 20 6c 69 73 74 20 61  |.     l   list a|
000028d0  6c 6c 20 61 73 73 65 6d  62 6c 79 20 6c 69 6e 65  |ll assembly line|
000028e0  73 0a 20 20 20 20 20 6d  20 20 20 73 61 79 20 68  |s.     m   say h|
000028f0  6f 77 20 6d 75 63 68 20  6d 65 6d 6f 72 79 20 68  |ow much memory h|
00002900  61 73 20 62 65 65 6e 20  61 6c 6c 6f 63 61 74 65  |as been allocate|
00002910  64 0a 20 20 20 20 20 6e  20 20 20 70 72 69 6e 74  |d.     n   print|
00002920  20 6e 75 6d 62 65 72 73  20 6f 66 20 70 72 6f 70  | numbers of prop|
00002930  65 72 74 69 65 73 20 61  6e 64 20 61 74 74 72 69  |erties and attri|
00002940  62 75 74 65 73 0a 20 20  20 20 20 6f 20 20 20 70  |butes.     o   p|
00002950  72 69 6e 74 20 6f 66 66  73 65 74 20 61 64 64 72  |rint offset addr|
00002960  65 73 73 65 73 0a 20 20  20 20 20 70 20 20 20 67  |esses.     p   g|
00002970  69 76 65 20 70 65 72 63  65 6e 74 61 67 65 20 62  |ive percentage b|
00002980  72 65 61 6b 64 6f 77 6e  20 6f 66 20 73 74 6f 72  |reakdown of stor|
00002990  79 20 66 69 6c 65 0a 20  20 20 20 20 72 20 20 20  |y file.     r   |
000029a0  72 65 63 6f 72 64 20 61  6c 6c 20 74 68 65 20 74  |record all the t|
000029b0  65 78 74 20 74 6f 20 22  47 61 6d 65 5f 54 65 78  |ext to "Game_Tex|
000029c0  74 22 0a 20 20 20 20 20  73 20 20 20 67 69 76 65  |t".     s   give|
000029d0  20 73 74 61 74 69 73 74  69 63 73 0a 20 20 20 20  | statistics.    |
000029e0  20 74 20 20 20 74 72 61  63 65 20 5a 2d 63 6f 64  | t   trace Z-cod|
000029f0  65 20 61 73 73 65 6d 62  6c 79 0a 20 20 20 20 20  |e assembly.     |
00002a00  75 20 20 20 77 6f 72 6b  20 6f 75 74 20 6d 6f 73  |u   work out mos|
00002a10  74 20 75 73 65 66 75 6c  20 61 62 62 72 65 76 69  |t useful abbrevi|
00002a20  61 74 69 6f 6e 73 0a 20  20 20 20 20 76 33 20 20  |ations.     v3  |
00002a30  66 6f 72 63 65 20 70 72  6f 64 75 63 74 69 6f 6e  |force production|
00002a40  20 6f 66 20 76 65 72 73  69 6f 6e 2d 33 20 28 53  | of version-3 (S|
00002a50  74 61 6e 64 61 72 64 29  20 73 74 6f 72 79 20 66  |tandard) story f|
00002a60  69 6c 65 0a 20 20 20 20  20 76 34 20 20 66 6f 72  |ile.     v4  for|
00002a70  63 65 20 70 72 6f 64 75  63 74 69 6f 6e 20 6f 66  |ce production of|
00002a80  20 76 65 72 73 69 6f 6e  2d 34 20 28 50 6c 75 73  | version-4 (Plus|
00002a90  29 20 73 74 6f 72 79 20  66 69 6c 65 0a 20 20 20  |) story file.   |
00002aa0  20 20 76 35 20 20 66 6f  72 63 65 20 70 72 6f 64  |  v5  force prod|
00002ab0  75 63 74 69 6f 6e 20 6f  66 20 76 65 72 73 69 6f  |uction of versio|
00002ac0  6e 2d 35 20 28 41 64 76  61 6e 63 65 64 29 20 73  |n-5 (Advanced) s|
00002ad0  74 6f 72 79 20 66 69 6c  65 0a 20 20 20 20 20 76  |tory file.     v|
00002ae0  36 20 20 66 6f 72 63 65  20 70 72 6f 64 75 63 74  |6  force product|
00002af0  69 6f 6e 20 6f 66 20 76  65 72 73 69 6f 6e 2d 36  |ion of version-6|
00002b00  20 28 67 72 61 70 68 69  63 61 6c 29 20 73 74 6f  | (graphical) sto|
00002b10  72 79 20 66 69 6c 65 0a  20 20 20 20 20 77 20 20  |ry file.     w  |
00002b20  20 64 69 73 61 62 6c 65  20 77 61 72 6e 69 6e 67  | disable warning|
00002b30  20 6d 65 73 73 61 67 65  73 0a 20 20 20 20 20 78  | messages.     x|
00002b40  20 20 20 70 72 69 6e 74  20 23 20 66 6f 72 20 65  |   print # for e|
00002b50  76 65 72 79 20 31 30 30  20 6c 69 6e 65 73 20 63  |very 100 lines c|
00002b60  6f 6d 70 69 6c 65 64 20  28 69 6e 20 62 6f 74 68  |ompiled (in both|
00002b70  20 70 61 73 73 65 73 29  0a 20 20 20 20 20 7a 20  | passes).     z |
00002b80  20 20 70 72 69 6e 74 20  6d 65 6d 6f 72 79 20 6d  |  print memory m|
00002b90  61 70 20 6f 66 20 74 68  65 20 5a 2d 6d 61 63 68  |ap of the Z-mach|
00002ba0  69 6e 65 0a 20 20 20 0a  20 20 20 24 6d 65 6d 63  |ine.   .   $memc|
00002bb0  6f 6d 20 63 61 6e 20 62  65 20 6f 6e 65 20 6f 72  |om can be one or|
00002bc0  20 6d 6f 72 65 20 6d 65  6d 6f 72 79 20 61 6c 6c  | more memory all|
00002bd0  6f 63 61 74 69 6f 6e 20  63 6f 6d 6d 61 6e 64 73  |ocation commands|
00002be0  3a 0a 20 20 20 20 20 24  6c 69 73 74 20 20 20 20  |:.     $list    |
00002bf0  20 20 20 20 20 20 20 20  20 6c 69 73 74 20 63 75  |         list cu|
00002c00  72 72 65 6e 74 20 6d 65  6d 6f 72 79 20 61 6c 6c  |rrent memory all|
00002c10  6f 63 61 74 69 6f 6e 20  73 65 74 74 69 6e 67 73  |ocation settings|
00002c20  0a 20 20 20 20 20 24 6c  61 72 67 65 20 20 20 20  |.     $large    |
00002c30  20 20 20 20 20 20 20 20  6d 61 6b 65 20 74 68 65  |        make the|
00002c40  20 73 74 61 6e 64 61 72  64 20 22 6c 61 72 67 65  | standard "large|
00002c50  20 67 61 6d 65 22 20 73  65 74 74 69 6e 67 73 0a  | game" settings.|
00002c60  20 20 20 20 20 24 73 6d  61 6c 6c 20 20 20 20 20  |     $small     |
00002c70  20 20 20 20 20 20 20 6d  61 6b 65 20 74 68 65 20  |       make the |
00002c80  73 74 61 6e 64 61 72 64  20 22 73 6d 61 6c 6c 20  |standard "small |
00002c90  67 61 6d 65 22 20 73 65  74 74 69 6e 67 73 20 28  |game" settings (|
00002ca0  64 65 66 61 75 6c 74 29  0a 20 20 20 20 20 24 3f  |default).     $?|
00002cb0  53 45 54 54 49 4e 47 20  20 20 20 20 20 20 20 20  |SETTING         |
00002cc0  65 78 70 6c 61 69 6e 20  62 72 69 65 66 6c 79 20  |explain briefly |
00002cd0  77 68 61 74 20 53 45 54  54 49 4e 47 20 69 73 20  |what SETTING is |
00002ce0  66 6f 72 0a 20 20 20 20  20 24 53 45 54 54 49 4e  |for.     $SETTIN|
00002cf0  47 3d 6e 75 6d 62 65 72  20 20 20 63 68 61 6e 67  |G=number   chang|
00002d00  65 20 53 45 54 54 49 4e  47 20 74 6f 20 67 69 76  |e SETTING to giv|
00002d10  65 6e 20 6e 75 6d 62 65  72 0a 0a 20 20 20 46 6f  |en number..   Fo|
00002d20  72 20 65 78 61 6d 70 6c  65 3a 20 22 69 6e 66 6f  |r example: "info|
00002d30  72 6d 20 2d 64 65 78 20  24 6c 61 72 67 65 20 63  |rm -dex $large c|
00002d40  75 72 73 65 73 20 72 61  6d 3a 63 75 72 73 65 73  |urses ram:curses|
00002d50  22 2e 0a 20 20 20 0a 0a  28 54 68 65 20 66 69 6c  |"..   ..(The fil|
00002d60  65 20 6e 61 6d 69 6e 67  20 63 6f 6e 76 65 6e 74  |e naming convent|
00002d70  69 6f 6e 73 20 61 6e 64  20 76 65 72 73 69 6f 6e  |ions and version|
00002d80  20 6e 75 6d 62 65 72 73  20 6d 61 79 20 64 69 66  | numbers may dif|
00002d90  66 65 72 20 73 6c 69 67  68 74 6c 79 20 6f 6e 20  |fer slightly on |
00002da0  79 6f 75 72 0a 63 6f 70  79 2e 29 0a 0a 52 6f 75  |your.copy.)..Rou|
00002db0  67 68 6c 79 20 73 70 65  61 6b 69 6e 67 2c 20 74  |ghly speaking, t|
00002dc0  68 65 20 73 77 69 74 63  68 65 73 20 61 72 65 20  |he switches are |
00002dd0  73 65 6c 66 2d 65 78 70  6c 61 6e 61 74 6f 72 79  |self-explanatory|
00002de0  20 74 6f 20 74 68 65 20  77 65 6c 6c 2d 69 6e 66  | to the well-inf|
00002df0  6f 72 6d 65 64 0a 61 6e  64 20 6f 66 20 6c 69 74  |ormed.and of lit|
00002e00  74 6c 65 20 75 73 65 20  74 6f 20 6f 74 68 65 72  |tle use to other|
00002e10  73 2e 0a 0a 53 61 6d 70  6c 65 73 20 6f 66 20 2d  |s...Samples of -|
00002e20  73 20 61 6e 64 20 2d 70  20 6f 75 74 70 75 74 20  |s and -p output |
00002e30  63 61 6e 20 62 65 20 66  6f 75 6e 64 20 69 6e 20  |can be found in |
00002e40  41 70 70 65 6e 64 69 78  20 43 2c 20 61 6e 64 20  |Appendix C, and |
00002e50  6f 66 20 2d 7a 20 69 6e  0a 41 70 70 65 6e 64 69  |of -z in.Appendi|
00002e60  78 20 41 2e 20 20 46 6f  72 20 2d 64 2c 20 73 65  |x A.  For -d, se|
00002e70  65 20 73 65 63 74 69 6f  6e 20 28 31 37 29 2e 20  |e section (17). |
00002e80  20 46 6f 72 20 2d 65 20  61 6e 64 20 2d 66 2c 20  | For -e and -f, |
00002e90  73 65 65 20 28 31 39 29  2e 20 20 2d 78 20 69 73  |see (19).  -x is|
00002ea0  0a 75 73 65 66 75 6c 20  69 66 20 72 75 6e 6e 69  |.useful if runni|
00002eb0  6e 67 20 49 6e 66 6f 72  6d 20 6f 6e 20 61 20 73  |ng Inform on a s|
00002ec0  6c 6f 77 20 6d 61 63 68  69 6e 65 2c 20 73 69 6e  |low machine, sin|
00002ed0  63 65 20 69 74 20 6f 66  66 65 72 73 20 73 6f 6d  |ce it offers som|
00002ee0  65 20 73 69 67 6e 73 20  6f 66 0a 6c 69 66 65 3b  |e signs of.life;|
00002ef0  20 61 73 20 64 6f 65 73  20 2d 6a 2e 20 20 2d 61  | as does -j.  -a|
00002f00  2c 20 2d 6e 2c 20 2d 70  20 61 6e 64 20 2d 6c 20  |, -n, -p and -l |
00002f10  61 72 65 20 6c 61 72 67  65 6c 79 20 75 73 65 66  |are largely usef|
00002f20  75 6c 20 74 6f 20 61 73  73 65 6d 62 6c 79 2d 6c  |ul to assembly-l|
00002f30  61 6e 67 75 61 67 65 0a  70 72 6f 67 72 61 6d 6d  |anguage.programm|
00002f40  65 72 73 20 61 6e 64 20  74 68 65 20 75 6e 66 6f  |ers and the unfo|
00002f50  72 74 75 6e 61 74 65 20  77 72 65 74 63 68 20 77  |rtunate wretch w|
00002f60  68 6f 20 6d 61 69 6e 74  61 69 6e 73 20 49 6e 66  |ho maintains Inf|
00002f70  6f 72 6d 2e 0a 0a 49 6e  20 2d 67 20 6d 6f 64 65  |orm...In -g mode|
00002f80  2c 20 65 76 65 72 79 20  66 75 6e 63 74 69 6f 6e  |, every function|
00002f90  20 63 61 6c 6c 20 61 74  20 72 75 6e 20 74 69 6d  | call at run tim|
00002fa0  65 20 69 73 20 74 72 61  63 65 64 20 28 74 68 69  |e is traced (thi|
00002fb0  73 20 69 73 20 73 75 72  70 72 69 73 69 6e 67 6c  |s is surprisingl|
00002fc0  79 0a 75 73 65 66 75 6c  20 77 68 65 6e 20 64 65  |y.useful when de|
00002fd0  62 75 67 67 69 6e 67 29  2e 0a 0a 2d 69 20 6f 76  |bugging)...-i ov|
00002fe0  65 72 72 69 64 65 73 20  61 6e 79 20 22 53 57 49  |errides any "SWI|
00002ff0  54 43 48 45 53 22 20 64  69 72 65 63 74 69 76 65  |TCHES" directive|
00003000  20 69 6e 20 74 68 65 20  62 6f 64 79 20 6f 66 20  | in the body of |
00003010  74 68 65 20 63 6f 64 65  2c 20 73 6f 20 74 68 61  |the code, so tha|
00003020  74 20 74 68 65 0a 6f 6e  6c 79 20 73 77 69 74 63  |t the.only switc|
00003030  68 65 73 20 61 70 70 6c  79 69 6e 67 20 61 72 65  |hes applying are|
00003040  20 74 68 6f 73 65 20 69  6e 20 74 68 65 20 63 6f  | those in the co|
00003050  6d 6d 61 6e 64 20 6c 69  6e 65 2e 0a 0a 2d 6d 20  |mmand line...-m |
00003060  72 65 76 65 61 6c 73 20  68 6f 77 20 6d 61 6e 79  |reveals how many|
00003070  20 62 79 74 65 73 20 77  65 72 65 20 6d 61 6c 6c  | bytes were mall|
00003080  6f 63 27 65 64 2e 20 20  54 68 65 20 70 72 6f 67  |oc'ed.  The prog|
00003090  72 61 6d 20 63 61 6e 20  62 65 20 63 6f 6d 70 69  |ram can be compi|
000030a0  6c 65 64 20 69 6e 0a 73  65 76 65 72 61 6c 20 64  |led in.several d|
000030b0  69 66 66 65 72 65 6e 74  20 76 65 72 73 69 6f 6e  |ifferent version|
000030c0  73 2c 20 77 69 74 68 20  76 61 72 79 69 6e 67 20  |s, with varying |
000030d0  6d 65 6d 6f 72 79 20 6e  65 65 64 73 2c 20 61 6e  |memory needs, an|
000030e0  64 20 70 6f 72 74 65 72  73 20 6d 69 67 68 74 0a  |d porters might.|
000030f0  6e 65 65 64 20 74 6f 20  75 73 65 20 74 68 69 73  |need to use this|
00003100  2e 0a 0a 54 68 65 20 66  69 6c 65 6e 61 6d 65 73  |...The filenames|
00003110  20 49 6e 66 6f 72 6d 20  75 73 65 73 20 66 6f 72  | Inform uses for|
00003120  20 69 6e 70 75 74 20 61  6e 64 20 6f 75 74 70 75  | input and outpu|
00003130  74 20 77 69 6c 6c 20 6f  62 76 69 6f 75 73 6c 79  |t will obviously|
00003140  20 64 65 70 65 6e 64 20  6f 6e 20 77 68 61 74 0a  | depend on what.|
00003150  6d 61 63 68 69 6e 65 20  69 74 20 72 75 6e 73 20  |machine it runs |
00003160  6f 6e 2e 20 20 54 68 65  20 41 72 63 68 69 6d 65  |on.  The Archime|
00003170  64 65 73 20 63 6f 6e 76  65 6e 74 69 6f 6e 73 20  |des conventions |
00003180  61 72 65 20 74 68 6f 73  65 20 61 62 6f 76 65 2c  |are those above,|
00003190  20 62 75 74 2c 20 66 6f  72 0a 65 78 61 6d 70 6c  | but, for.exampl|
000031a0  65 2c 20 74 68 65 20 55  6e 69 78 20 76 65 72 73  |e, the Unix vers|
000031b0  69 6f 6e 20 63 6f 6d 70  69 6c 65 73 20 66 69 6c  |ion compiles fil|
000031c0  65 73 20 6c 69 6b 65 20  22 64 65 6a 61 76 75 2e  |es like "dejavu.|
000031d0  69 6e 66 22 20 77 69 74  68 20 68 65 61 64 65 72  |inf" with header|
000031e0  73 20 6c 69 6b 65 0a 22  70 61 72 73 65 72 2e 68  |s like."parser.h|
000031f0  22 20 74 6f 20 22 64 65  6a 61 76 75 2e 7a 33 22  |" to "dejavu.z3"|
00003200  2e 0a 0a 2d 76 33 20 73  65 74 73 20 74 68 65 20  |...-v3 sets the |
00003210  53 74 61 6e 64 61 72 64  20 66 6f 72 6d 61 74 20  |Standard format |
00003220  28 6f 76 65 72 72 69 64  69 6e 67 20 61 6e 79 20  |(overriding any |
00003230  22 56 65 72 73 69 6f 6e  22 20 64 69 72 65 63 74  |"Version" direct|
00003240  69 76 65 20 69 6e 20 74  68 65 0a 66 69 6c 65 29  |ive in the.file)|
00003250  2c 20 61 6e 64 20 2d 76  35 20 73 65 74 73 20 41  |, and -v5 sets A|
00003260  64 76 61 6e 63 65 64 2e  20 20 53 74 61 6e 64 61  |dvanced.  Standa|
00003270  72 64 20 69 73 20 74 68  65 20 64 65 66 61 75 6c  |rd is the defaul|
00003280  74 2e 20 20 2d 76 34 20  61 6e 64 20 2d 76 36 20  |t.  -v4 and -v6 |
00003290  61 72 65 0a 6e 6f 77 20  61 76 61 69 6c 61 62 6c  |are.now availabl|
000032a0  65 20 62 75 74 20 61 72  65 20 6e 6f 74 20 75 73  |e but are not us|
000032b0  65 66 75 6c 2e 0a 0a 2d  72 20 61 6e 64 20 2d 75  |eful...-r and -u|
000032c0  20 62 6f 74 68 20 72 65  71 75 69 72 65 20 6d 75  | both require mu|
000032d0  63 68 20 67 72 65 61 74  65 72 20 66 72 65 65 20  |ch greater free |
000032e0  6d 65 6d 6f 72 79 20 28  70 65 72 68 61 70 73 20  |memory (perhaps |
000032f0  61 73 20 6d 75 63 68 20  61 73 0a 30 2e 35 2d 31  |as much as.0.5-1|
00003300  20 6d 65 67 61 62 79 74  65 29 20 74 6f 20 72 75  | megabyte) to ru|
00003310  6e 20 74 68 61 6e 20 74  68 65 20 72 65 73 74 20  |n than the rest |
00003320  6f 66 20 49 6e 66 6f 72  6d 2e 20 20 2d 72 20 6d  |of Inform.  -r m|
00003330  61 6b 65 73 20 61 20 74  72 61 6e 73 63 72 69 70  |akes a transcrip|
00003340  74 20 66 69 6c 65 0a 6f  66 20 61 6c 6c 20 6f 66  |t file.of all of|
00003350  20 74 68 65 20 74 65 78  74 20 28 65 78 63 6c 75  | the text (exclu|
00003360  64 69 6e 67 20 61 62 62  72 65 76 69 61 74 69 6f  |ding abbreviatio|
00003370  6e 73 20 61 6e 64 20 64  69 63 74 69 6f 6e 61 72  |ns and dictionar|
00003380  79 20 65 6e 74 72 69 65  73 29 2c 20 77 68 69 63  |y entries), whic|
00003390  68 0a 63 61 6e 20 62 65  20 75 73 65 66 75 6c 20  |h.can be useful |
000033a0  66 6f 72 20 70 72 6f 6f  66 2d 72 65 61 64 69 6e  |for proof-readin|
000033b0  67 20 2d 20 66 6f 72 20  69 6e 73 74 61 6e 63 65  |g - for instance|
000033c0  2c 20 69 74 20 63 6f 75  6c 64 20 62 65 20 72 75  |, it could be ru|
000033d0  6e 20 74 68 72 6f 75 67  68 20 61 0a 73 70 65 6c  |n through a.spel|
000033e0  6c 2d 63 68 65 63 6b 65  72 2e 20 20 2d 75 20 72  |l-checker.  -u r|
000033f0  75 6e 73 20 74 68 65 20  61 62 62 72 65 76 69 61  |uns the abbrevia|
00003400  74 69 6f 6e 73 2d 6f 70  74 69 6d 69 73 65 72 2c  |tions-optimiser,|
00003410  20 61 20 63 6f 6d 70 75  74 61 74 69 6f 6e 61 6c  | a computational|
00003420  6c 79 0a 65 78 70 65 6e  73 69 76 65 20 6a 6f 62  |ly.expensive job|
00003430  20 6e 6f 74 20 74 6f 20  62 65 20 75 6e 64 65 72  | not to be under|
00003440  74 61 6b 65 6e 20 6c 69  67 68 74 6c 79 3a 20 73  |taken lightly: s|
00003450  65 65 20 28 31 39 29 2e  0a 0a 0a 41 73 20 49 6e  |ee (19)....As In|
00003460  66 6f 72 6d 20 72 75 6e  73 2c 20 69 74 20 6d 61  |form runs, it ma|
00003470  79 20 63 6f 6d 65 20 75  70 20 77 69 74 68 20 77  |y come up with w|
00003480  61 72 6e 69 6e 67 73 2c  20 65 72 72 6f 72 73 20  |arnings, errors |
00003490  6f 72 20 66 61 74 61 6c  20 65 72 72 6f 72 73 2e  |or fatal errors.|
000034a0  0a 48 65 72 65 20 69 73  20 61 20 74 79 70 69 63  |.Here is a typic|
000034b0  61 6c 20 73 61 6d 70 6c  65 3a 0a 0a 20 20 41 72  |al sample:..  Ar|
000034c0  63 68 69 6d 65 64 65 73  20 49 6e 66 6f 72 6d 20  |chimedes Inform |
000034d0  35 20 28 76 31 32 35 39  2f 61 74 29 0a 20 20 6c  |5 (v1259/at).  l|
000034e0  69 6e 65 20 31 30 3a 20  45 72 72 6f 72 3a 20 53  |ine 10: Error: S|
000034f0  79 6d 62 6f 6c 20 6e 61  6d 65 20 65 78 70 65 63  |ymbol name expec|
00003500  74 65 64 0a 20 20 3e 20  20 20 67 6c 6f 62 61 6c  |ted.  >   global|
00003510  0a 20 20 6c 69 6e 65 20  31 32 3a 20 45 72 72 6f  |.  line 12: Erro|
00003520  72 3a 20 54 68 65 20 22  4d 61 69 6e 22 20 72 6f  |r: The "Main" ro|
00003530  75 74 69 6e 65 20 69 73  20 6e 6f 74 20 61 6c 6c  |utine is not all|
00003540  6f 77 65 64 20 74 6f 20  68 61 76 65 20 6c 6f 63  |owed to have loc|
00003550  61 6c 20 76 61 72 69 61  62 6c 65 73 0a 20 20 3e  |al variables.  >|
00003560  20 20 20 5b 20 4d 61 69  6e 20 69 0a 20 20 6c 69  |   [ Main i.  li|
00003570  6e 65 20 31 32 3a 20 57  61 72 6e 69 6e 67 3a 20  |ne 12: Warning: |
00003580  4c 6f 63 61 6c 20 76 61  72 69 61 62 6c 65 20 75  |Local variable u|
00003590  6e 75 73 65 64 3a 20 22  69 22 0a 20 20 6c 69 6e  |nused: "i".  lin|
000035a0  65 20 32 33 3a 20 57 61  72 6e 69 6e 67 3a 20 4c  |e 23: Warning: L|
000035b0  6f 63 61 6c 20 76 61 72  69 61 62 6c 65 20 75 6e  |ocal variable un|
000035c0  75 73 65 64 3a 20 22 6a  22 0a 20 20 43 6f 6d 70  |used: "j".  Comp|
000035d0  69 6c 65 64 20 77 69 74  68 20 32 20 65 72 72 6f  |iled with 2 erro|
000035e0  72 73 20 61 6e 64 20 32  20 77 61 72 6e 69 6e 67  |rs and 2 warning|
000035f0  73 20 28 6e 6f 20 6f 75  74 70 75 74 29 0a 0a 28  |s (no output)..(|
00003600  49 6e 66 6f 63 6f 6d 20  69 6e 74 65 72 70 72 65  |Infocom interpre|
00003610  74 65 72 73 20 63 61 6e  20 63 72 61 73 68 20 68  |ters can crash h|
00003620  6f 72 72 69 62 6c 79 20  77 68 65 6e 20 67 69 76  |orribly when giv|
00003630  65 6e 20 69 6e 63 6f 72  72 65 63 74 20 66 69 6c  |en incorrect fil|
00003640  65 73 2c 20 73 6f 0a 49  6e 66 6f 72 6d 20 6e 65  |es, so.Inform ne|
00003650  76 65 72 20 77 72 69 74  65 73 20 61 20 66 69 6c  |ver writes a fil|
00003660  65 20 77 68 69 63 68 20  63 61 75 73 65 64 20 61  |e which caused a|
00003670  6e 20 65 72 72 6f 72 2c  20 74 68 6f 75 67 68 20  |n error, though |
00003680  69 74 20 77 69 6c 6c 20  61 6c 6c 6f 77 0a 66 69  |it will allow.fi|
00003690  6c 65 73 20 63 61 75 73  69 6e 67 20 77 61 72 6e  |les causing warn|
000036a0  69 6e 67 73 20 6f 6e 6c  79 2e 29 0a 0a 2d 63 20  |ings only.)..-c |
000036b0  28 63 6f 6e 63 69 73 65  29 20 6d 6f 64 65 20 64  |(concise) mode d|
000036c0  6f 65 73 6e 27 74 20 71  75 6f 74 65 20 66 72 6f  |oesn't quote fro|
000036d0  6d 20 74 68 65 20 73 6f  75 72 63 65 20 66 69 6c  |m the source fil|
000036e0  65 73 3b 20 2d 77 20 74  75 72 6e 73 20 77 61 72  |es; -w turns war|
000036f0  6e 69 6e 67 73 0a 6f 66  66 2e 0a 0a 54 68 65 20  |nings.off...The |
00003700  65 78 63 68 61 6e 67 65  20 72 61 74 65 20 69 73  |exchange rate is|
00003710  20 31 30 30 20 65 72 72  6f 72 73 20 74 6f 20 74  | 100 errors to t|
00003720  68 65 20 66 61 74 61 6c  20 65 72 72 6f 72 3a 20  |he fatal error: |
00003730  69 2e 65 2e 2c 20 61 66  74 65 72 20 31 30 30 20  |i.e., after 100 |
00003740  65 72 72 6f 72 73 2c 0a  49 6e 66 6f 72 6d 20 67  |errors,.Inform g|
00003750  69 76 65 73 20 75 70 20  61 6c 74 6f 67 65 74 68  |ives up altogeth|
00003760  65 72 2e 20 20 41 6e 20  75 6e 6c 69 6d 69 74 65  |er.  An unlimite|
00003770  64 20 6e 75 6d 62 65 72  20 6f 66 20 77 61 72 6e  |d number of warn|
00003780  69 6e 67 73 20 6d 61 79  20 6f 63 63 75 72 2e 0a  |ings may occur..|
00003790  0a 0a 54 68 65 20 6d 65  6d 6f 72 79 20 6d 61 6e  |..The memory man|
000037a0  61 67 65 6d 65 6e 74 20  63 6f 6d 6d 61 6e 64 73  |agement commands|
000037b0  20 61 72 65 20 70 72 6f  76 69 64 65 64 20 66 6f  | are provided fo|
000037c0  72 20 65 6d 65 72 67 65  6e 63 69 65 73 2e 20 20  |r emergencies.  |
000037d0  50 72 65 76 69 6f 75 73  6c 79 2c 0a 74 6f 20 72  |Previously,.to r|
000037e0  61 69 73 65 20 6f 6e 65  20 6f 66 20 74 68 65 20  |aise one of the |
000037f0  63 6f 6d 70 69 6c 65 72  20 6c 69 6d 69 74 73 20  |compiler limits |
00003800  28 73 61 79 2c 20 4d 41  58 5f 4f 42 4a 45 43 54  |(say, MAX_OBJECT|
00003810  53 29 20 6f 6e 65 20 68  61 64 20 74 6f 20 72 65  |S) one had to re|
00003820  63 6f 6d 70 69 6c 65 0a  49 6e 66 6f 72 6d 20 69  |compile.Inform i|
00003830  74 73 65 6c 66 2e 20 20  54 68 69 73 20 77 61 73  |tself.  This was|
00003840  20 6f 62 76 69 6f 75 73  6c 79 20 61 74 20 62 65  | obviously at be|
00003850  73 74 20 61 20 6e 75 69  73 61 6e 63 65 2c 20 61  |st a nuisance, a|
00003860  74 20 77 6f 72 73 74 20  69 6d 70 6f 73 73 69 62  |t worst impossib|
00003870  6c 65 2e 0a 49 6e 20 6f  72 64 65 72 20 74 6f 20  |le..In order to |
00003880  67 65 74 20 72 6f 75 6e  64 20 74 68 69 73 2c 20  |get round this, |
00003890  49 6e 66 6f 72 6d 20 61  6c 77 61 79 73 20 6d 61  |Inform always ma|
000038a0  64 65 20 65 6e 6f 72 6d  6f 75 73 6c 79 20 67 65  |de enormously ge|
000038b0  6e 65 72 6f 75 73 0a 65  73 74 69 6d 61 74 65 73  |nerous.estimates|
000038c0  20 66 6f 72 20 77 68 61  74 20 74 68 65 20 70 6c  | for what the pl|
000038d0  61 79 65 72 20 6d 69 67  68 74 20 77 61 6e 74 3a  |ayer might want:|
000038e0  20 62 75 74 20 74 68 69  73 20 6d 65 61 6e 74 20  | but this meant |
000038f0  74 68 61 74 20 69 74 20  61 6c 6c 6f 63 61 74 65  |that it allocate|
00003900  64 0a 6d 6f 72 65 20 6d  65 6d 6f 72 79 20 74 68  |d.more memory th|
00003910  61 6e 20 73 74 72 69 63  74 6c 79 20 6e 65 65 64  |an strictly need|
00003920  65 64 2c 20 77 68 69 63  68 20 77 61 73 20 61 20  |ed, which was a |
00003930  70 72 6f 62 6c 65 6d 20  6f 6e 20 73 6d 61 6c 6c  |problem on small|
00003940  20 63 6f 6d 70 75 74 65  72 73 2e 0a 0a 54 68 65  | computers...The|
00003950  72 65 20 61 72 65 20 74  77 6f 20 6d 61 69 6e 20  |re are two main |
00003960  63 68 6f 69 63 65 73 3a  20 24 73 6d 61 6c 6c 20  |choices: $small |
00003970  61 6e 64 20 24 6c 61 72  67 65 2e 20 20 28 57 68  |and $large.  (Wh|
00003980  69 63 68 20 6f 6e 65 20  69 73 20 74 68 65 20 64  |ich one is the d|
00003990  65 66 61 75 6c 74 0a 64  65 70 65 6e 64 73 20 6f  |efault.depends o|
000039a0  6e 20 74 68 65 20 63 6f  6d 70 75 74 65 72 20 79  |n the computer y|
000039b0  6f 75 20 75 73 65 2e 29  20 20 45 76 65 6e 20 24  |ou use.)  Even $|
000039c0  73 6d 61 6c 6c 20 69 73  20 6c 61 72 67 65 20 65  |small is large e|
000039d0  6e 6f 75 67 68 20 74 6f  20 63 6f 6d 70 69 6c 65  |nough to compile|
000039e0  0a 61 6c 6c 20 74 68 65  20 65 78 61 6d 70 6c 65  |.all the example|
000039f0  20 67 61 6d 65 73 2c 20  69 6e 63 6c 75 64 69 6e  | games, includin|
00003a00  67 20 22 41 64 76 65 6e  74 22 2e 20 20 24 6c 61  |g "Advent".  $la|
00003a10  72 67 65 20 69 73 20 6c  61 72 67 65 20 65 6e 6f  |rge is large eno|
00003a20  75 67 68 20 74 6f 0a 63  6f 6d 70 69 6c 65 20 61  |ugh to.compile a|
00003a30  6c 6d 6f 73 74 20 61 6e  79 74 68 69 6e 67 20 28  |lmost anything (|
00003a40  69 6e 63 6c 75 64 69 6e  67 20 74 68 65 20 6c 61  |including the la|
00003a50  72 67 65 73 74 20 76 65  72 73 69 6f 6e 20 6f 66  |rgest version of|
00003a60  20 22 43 75 72 73 65 73  22 20 77 68 69 63 68 0a  | "Curses" which.|
00003a70  65 76 65 72 20 65 78 69  73 74 65 64 2c 20 77 68  |ever existed, wh|
00003a80  69 63 68 20 77 61 73 20  61 74 20 6f 6e 65 20 73  |ich was at one s|
00003a90  74 61 67 65 20 76 65 72  79 20 63 6c 6f 73 65 20  |tage very close |
00003aa0  74 6f 20 32 35 36 4b 20  6c 6f 6e 67 29 2e 0a 0a  |to 256K long)...|
00003ab0  41 20 74 79 70 69 63 61  6c 20 67 61 6d 65 2c 20  |A typical game, |
00003ac0  63 6f 6d 70 69 6c 65 64  20 77 69 74 68 20 24 6c  |compiled with $l|
00003ad0  61 72 67 65 2c 20 77 69  6c 6c 20 63 61 75 73 65  |arge, will cause|
00003ae0  20 49 6e 66 6f 72 6d 20  74 6f 20 61 6c 6c 6f 63  | Inform to alloc|
00003af0  61 74 65 20 61 62 6f 75  74 0a 33 33 36 4b 20 6f  |ate about.336K o|
00003b00  66 20 6d 65 6d 6f 72 79  3a 20 61 6e 64 20 74 68  |f memory: and th|
00003b10  65 20 73 61 6d 65 20 67  61 6d 65 20 61 62 6f 75  |e same game abou|
00003b20  74 20 31 30 30 4b 20 6c  65 73 73 20 75 6e 64 65  |t 100K less unde|
00003b30  72 20 24 73 6d 61 6c 6c  2e 20 20 28 54 68 65 73  |r $small.  (Thes|
00003b40  65 0a 76 61 6c 75 65 73  20 77 69 6c 6c 20 62 65  |e.values will be|
00003b50  20 72 61 74 68 65 72 20  6c 6f 77 65 72 20 69 66  | rather lower if|
00003b60  20 74 68 65 20 63 6f 6d  70 75 74 65 72 20 49 6e  | the computer In|
00003b70  66 6f 72 6d 20 72 75 6e  73 20 6f 6e 20 68 61 73  |form runs on has|
00003b80  20 31 36 2d 62 69 74 0a  69 6e 74 65 67 65 72 73  | 16-bit.integers|
00003b90  2e 29 20 20 49 6e 20 61  64 64 69 74 69 6f 6e 2c  |.)  In addition,|
00003ba0  20 49 6e 66 6f 72 6d 20  70 68 79 73 69 63 61 6c  | Inform physical|
00003bb0  6c 79 20 6f 63 63 75 70  69 65 73 20 61 62 6f 75  |ly occupies abou|
00003bc0  74 20 31 37 30 4b 20 28  6f 6e 20 6d 79 0a 63 6f  |t 170K (on my.co|
00003bd0  6d 70 75 74 65 72 29 2e  20 20 54 68 75 73 2c 20  |mputer).  Thus, |
00003be0  74 68 65 20 74 6f 74 61  6c 20 6d 65 6d 6f 72 79  |the total memory|
00003bf0  20 63 6f 6e 73 75 6d 70  74 69 6f 6e 20 6f 66 20  | consumption of |
00003c00  74 68 65 20 63 6f 6d 70  69 6c 65 72 20 61 74 20  |the compiler at |
00003c10  77 6f 72 6b 0a 77 69 6c  6c 20 62 65 20 62 65 74  |work.will be bet|
00003c20  77 65 65 6e 20 34 20 74  6f 20 35 30 30 4b 2e 0a  |ween 4 to 500K..|
00003c30  0a 52 75 6e 6e 69 6e 67  0a 0a 20 20 20 20 69 6e  |.Running..    in|
00003c40  66 6f 72 6d 20 24 6c 69  73 74 0a 0a 77 69 6c 6c  |form $list..will|
00003c50  20 6c 69 73 74 20 74 68  65 20 76 61 72 69 6f 75  | list the variou|
00003c60  73 20 73 65 74 74 69 6e  67 73 20 77 68 69 63 68  |s settings which|
00003c70  20 63 61 6e 20 62 65 20  63 68 61 6e 67 65 64 2c  | can be changed,|
00003c80  20 61 6e 64 20 74 68 65  69 72 20 63 75 72 72 65  | and their curre|
00003c90  6e 74 0a 76 61 6c 75 65  73 2e 20 20 54 68 75 73  |nt.values.  Thus|
00003ca0  20 6f 6e 65 20 63 61 6e  20 63 6f 6d 70 61 72 65  | one can compare|
00003cb0  20 73 6d 61 6c 6c 20 61  6e 64 20 6c 61 72 67 65  | small and large|
00003cc0  20 77 69 74 68 3a 0a 0a  20 20 20 20 69 6e 66 6f  | with:..    info|
00003cd0  72 6d 20 24 73 6d 61 6c  6c 20 24 6c 69 73 74 0a  |rm $small $list.|
00003ce0  20 20 20 20 69 6e 66 6f  72 6d 20 24 6c 61 72 67  |    inform $larg|
00003cf0  65 20 24 6c 69 73 74 0a  0a 49 66 20 49 6e 66 6f  |e $list..If Info|
00003d00  72 6d 20 72 75 6e 73 20  6f 75 74 20 6f 66 20 61  |rm runs out of a|
00003d10  6c 6c 6f 63 61 74 69 6f  6e 20 66 6f 72 20 73 6f  |llocation for so|
00003d20  6d 65 74 68 69 6e 67 2c  20 69 74 20 77 69 6c 6c  |mething, it will|
00003d30  20 67 65 6e 65 72 61 6c  6c 79 20 70 72 69 6e 74  | generally print|
00003d40  20 61 6e 0a 65 72 72 6f  72 20 6d 65 73 73 61 67  | an.error messag|
00003d50  65 20 6c 69 6b 65 3a 0a  0a 20 20 20 22 47 61 6d  |e like:..   "Gam|
00003d60  65 22 2c 20 6c 69 6e 65  20 31 33 32 30 3a 20 46  |e", line 1320: F|
00003d70  61 74 61 6c 20 65 72 72  6f 72 3a 20 54 68 65 20  |atal error: The |
00003d80  6d 65 6d 6f 72 79 20 73  65 74 74 69 6e 67 20 4d  |memory setting M|
00003d90  41 58 5f 4f 42 4a 45 43  54 53 20 28 77 68 69 63  |AX_OBJECTS (whic|
00003da0  68 0a 20 20 20 69 73 20  32 30 30 20 61 74 20 70  |h.   is 200 at p|
00003db0  72 65 73 65 6e 74 29 20  68 61 73 20 62 65 65 6e  |resent) has been|
00003dc0  20 65 78 63 65 65 64 65  64 2e 20 20 54 72 79 20  | exceeded.  Try |
00003dd0  72 75 6e 6e 69 6e 67 20  49 6e 66 6f 72 6d 20 61  |running Inform a|
00003de0  67 61 69 6e 20 77 69 74  68 0a 20 20 20 24 4d 41  |gain with.   $MA|
00003df0  58 5f 4f 42 4a 45 43 54  53 3d 3c 73 6f 6d 65 2d  |X_OBJECTS=<some-|
00003e00  6c 61 72 67 65 72 2d 6e  75 6d 62 65 72 3e 20 6f  |larger-number> o|
00003e10  6e 20 74 68 65 20 63 6f  6d 6d 61 6e 64 20 6c 69  |n the command li|
00003e20  6e 65 2e 0a 0a 61 6e 64  20 69 6e 64 65 65 64 0a  |ne...and indeed.|
00003e30  0a 20 20 20 20 69 6e 66  6f 72 6d 20 24 4d 41 58  |.    inform $MAX|
00003e40  5f 4f 42 4a 45 43 54 53  3d 32 35 30 20 67 61 6d  |_OBJECTS=250 gam|
00003e50  65 0a 0a 28 73 61 79 29  20 77 69 6c 6c 20 74 65  |e..(say) will te|
00003e60  6c 6c 20 49 6e 66 6f 72  6d 20 74 6f 20 74 72 79  |ll Inform to try|
00003e70  20 61 67 61 69 6e 2c 20  72 65 73 65 72 76 69 6e  | again, reservin|
00003e80  67 20 6d 6f 72 65 20 6d  65 6d 6f 72 79 20 66 6f  |g more memory fo|
00003e90  72 20 6f 62 6a 65 63 74  73 20 74 68 69 73 0a 74  |r objects this.t|
00003ea0  69 6d 65 2e 20 20 4e 6f  74 65 20 74 68 61 74 20  |ime.  Note that |
00003eb0  73 65 74 74 69 6e 67 73  20 61 72 65 20 6d 61 64  |settings are mad|
00003ec0  65 20 66 72 6f 6d 20 6c  65 66 74 20 74 6f 20 72  |e from left to r|
00003ed0  69 67 68 74 2c 20 73 6f  20 74 68 61 74 20 66 6f  |ight, so that fo|
00003ee0  72 20 69 6e 73 74 61 6e  63 65 0a 0a 20 20 20 20  |r instance..    |
00003ef0  69 6e 66 6f 72 6d 20 24  73 6d 61 6c 6c 20 24 4d  |inform $small $M|
00003f00  41 58 5f 41 43 54 49 4f  4e 53 3d 32 30 30 20 2e  |AX_ACTIONS=200 .|
00003f10  2e 2e 0a 0a 77 69 6c 6c  20 77 6f 72 6b 2c 20 62  |....will work, b|
00003f20  75 74 0a 0a 20 20 20 20  69 6e 66 6f 72 6d 20 24  |ut..    inform $|
00003f30  4d 41 58 5f 41 43 54 49  4f 4e 53 3d 32 30 30 20  |MAX_ACTIONS=200 |
00003f40  24 73 6d 61 6c 6c 20 2e  2e 2e 0a 0a 77 69 6c 6c  |$small .....will|
00003f50  20 6e 6f 74 20 62 65 63  61 75 73 65 20 74 68 65  | not because the|
00003f60  20 24 73 6d 61 6c 6c 20  63 68 61 6e 67 65 73 20  | $small changes |
00003f70  4d 41 58 5f 41 43 54 49  4f 4e 53 20 61 67 61 69  |MAX_ACTIONS agai|
00003f80  6e 2e 0a 0a 54 68 65 20  73 65 74 74 69 6e 67 20  |n...The setting |
00003f90  6e 61 6d 65 73 20 61 72  65 20 69 6e 20 73 6f 6d  |names are in som|
00003fa0  65 20 63 61 73 65 73 20  72 61 74 68 65 72 20 70  |e cases rather p|
00003fb0  65 63 75 6c 69 61 72 2c  20 61 6e 64 20 63 68 61  |eculiar, and cha|
00003fc0  6e 67 69 6e 67 20 73 6f  6d 65 0a 73 65 74 74 69  |nging some.setti|
00003fd0  6e 67 73 20 68 61 73 20  68 61 72 64 6c 79 20 61  |ngs has hardly a|
00003fe0  6e 79 20 65 66 66 65 63  74 20 6f 6e 20 6d 65 6d  |ny effect on mem|
00003ff0  6f 72 79 20 75 73 61 67  65 2c 20 77 68 65 72 65  |ory usage, where|
00004000  61 73 20 6f 74 68 65 72  73 20 61 72 65 20 65 78  |as others are ex|
00004010  70 65 6e 73 69 76 65 0a  74 6f 20 69 6e 63 72 65  |pensive.to incre|
00004020  61 73 65 2e 20 20 54 6f  20 66 69 6e 64 20 6f 75  |ase.  To find ou|
00004030  74 20 61 62 6f 75 74 2c  20 73 61 79 2c 20 4d 41  |t about, say, MA|
00004040  58 5f 56 45 52 42 53 2c  20 72 75 6e 0a 0a 20 20  |X_VERBS, run..  |
00004050  20 20 69 6e 66 6f 72 6d  20 24 3f 4d 41 58 5f 56  |  inform $?MAX_V|
00004060  45 52 42 53 0a 0a 28 6e  6f 74 65 20 74 68 65 20  |ERBS..(note the |
00004070  71 75 65 73 74 69 6f 6e  20 6d 61 72 6b 29 20 77  |question mark) w|
00004080  68 69 63 68 20 77 69 6c  6c 20 70 72 69 6e 74 20  |hich will print |
00004090  73 6f 6d 65 20 76 65 72  79 20 62 72 69 65 66 20  |some very brief |
000040a0  63 6f 6d 6d 65 6e 74 73  2e 0a 0a 0a 2d 2d 2d 2d  |comments....----|
000040b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000040f0  2d 2d 2d 2d 2d 2d 2d 0a  32 2e 20 53 6f 75 72 63  |-------.2. Sourc|
00004100  65 20 66 69 6c 65 20 66  6f 72 6d 61 74 0a 2d 2d  |e file format.--|
00004110  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00004150  2d 2d 2d 2d 2d 2d 2d 2d  2d 0a 0a 0a 20 20 20 20  |---------...    |
00004160  20 20 20 22 54 68 65 20  61 76 65 72 61 67 65 20  |   "The average |
00004170  72 65 61 64 65 72 20 6b  6e 6f 77 73 20 68 61 72  |reader knows har|
00004180  64 6c 79 20 61 6e 79 74  68 69 6e 67 20 61 62 6f  |dly anything abo|
00004190  75 74 20 74 65 78 74 75  61 6c 0a 20 20 20 20 20  |ut textual.     |
000041a0  20 20 20 63 72 69 74 69  63 69 73 6d 2e 2e 2e 20  |   criticism... |
000041b0  61 6e 64 20 6f 66 74 65  6e 20 73 68 61 72 65 73  |and often shares|
000041c0  20 74 68 65 20 77 72 69  74 65 72 27 73 20 70 72  | the writer's pr|
000041d0  65 6a 75 64 69 63 65 73  2e 0a 20 20 20 20 20 20  |ejudices..      |
000041e0  20 20 53 74 61 6e 64 20  6f 6e 20 61 20 62 61 72  |  Stand on a bar|
000041f0  72 65 6c 20 69 6e 20 74  68 65 20 73 74 72 65 65  |rel in the stree|
00004200  74 73 20 6f 66 20 42 61  67 64 61 64 2c 20 61 6e  |ts of Bagdad, an|
00004210  64 20 73 61 79 20 69 6e  20 61 0a 20 20 20 20 20  |d say in a.     |
00004220  20 20 20 6c 6f 75 64 20  76 6f 69 63 65 2c 20 22  |   loud voice, "|
00004230  54 77 69 63 65 20 74 77  6f 20 69 73 20 66 6f 75  |Twice two is fou|
00004240  72 2c 20 61 6e 64 20 67  69 6e 67 65 72 20 69 73  |r, and ginger is|
00004250  20 68 6f 74 20 69 6e 20  74 68 65 0a 20 20 20 20  | hot in the.    |
00004260  20 20 20 20 6d 6f 75 74  68 2c 20 74 68 65 72 65  |    mouth, there|
00004270  66 6f 72 65 20 4d 6f 68  61 6d 6d 65 64 20 69 73  |fore Mohammed is|
00004280  20 74 68 65 20 70 72 6f  70 68 65 74 20 6f 66 20  | the prophet of |
00004290  47 6f 64 2c 22 20 61 6e  64 0a 20 20 20 20 20 20  |God," and.      |
000042a0  20 20 79 6f 75 72 20 6c  6f 67 69 63 20 77 69 6c  |  your logic wil|
000042b0  6c 20 70 72 6f 62 61 62  6c 79 20 65 73 63 61 70  |l probably escap|
000042c0  65 20 63 72 69 74 69 63  69 73 6d 3b 20 6f 72 2c  |e criticism; or,|
000042d0  20 69 66 20 61 6e 79 6f  6e 65 0a 20 20 20 20 20  | if anyone.     |
000042e0  20 20 20 62 79 20 63 68  61 6e 63 65 20 73 68 6f  |   by chance sho|
000042f0  75 6c 64 20 63 72 69 74  69 63 69 73 65 20 69 74  |uld criticise it|
00004300  2c 20 79 6f 75 20 63 6f  75 6c 64 20 65 61 73 69  |, you could easi|
00004310  6c 79 20 73 69 6c 65 6e  63 65 0a 20 20 20 20 20  |ly silence.     |
00004320  20 20 20 68 69 6d 20 62  79 20 63 61 6c 6c 69 6e  |   him by callin|
00004330  67 20 68 69 6d 20 61 20  43 68 72 69 73 74 69 61  |g him a Christia|
00004340  6e 20 64 6f 67 2e 22 0a  0a 20 20 20 20 20 20 20  |n dog."..       |
00004350  20 20 20 20 20 20 20 20  20 28 41 2e 20 45 2e 20  |         (A. E. |
00004360  48 6f 75 73 6d 61 6e 2c  20 22 54 68 65 20 41 70  |Housman, "The Ap|
00004370  70 6c 69 63 61 74 69 6f  6e 20 6f 66 20 54 68 6f  |plication of Tho|
00004380  75 67 68 74 20 74 6f 0a  20 20 20 20 20 20 20 20  |ught to.        |
00004390  20 20 20 20 20 20 20 20  20 54 65 78 74 75 61 6c  |         Textual|
000043a0  20 43 72 69 74 69 63 69  73 6d 22 29 0a 0a 0a 4c  | Criticism")...L|
000043b0  69 6e 65 73 20 69 6e 20  61 6e 20 49 6e 66 6f 72  |ines in an Infor|
000043c0  6d 20 66 69 6c 65 20 61  72 65 20 74 65 72 6d 69  |m file are termi|
000043d0  6e 61 74 65 64 20 62 79  20 73 65 6d 69 63 6f 6c  |nated by semicol|
000043e0  6f 6e 73 2e 20 20 41 6e  20 65 78 63 6c 61 6d 61  |ons.  An exclama|
000043f0  74 69 6f 6e 20 6d 61 72  6b 0a 21 20 74 68 75 73  |tion mark.! thus|
00004400  2e 2e 2e 0a 64 65 6e 6f  74 65 73 20 74 68 61 74  |....denotes that|
00004410  20 74 68 65 20 72 65 73  74 20 6f 66 20 69 74 73  | the rest of its|
00004420  20 70 68 79 73 69 63 61  6c 20 6c 69 6e 65 20 69  | physical line i|
00004430  73 20 61 20 63 6f 6d 6d  65 6e 74 2e 20 20 42 61  |s a comment.  Ba|
00004440  63 6b 73 6c 61 73 68 65  73 20 22 66 6f 6c 64 22  |ckslashes "fold"|
00004450  0a 73 74 72 69 6e 67 73  20 75 70 2c 20 73 6f 20  |.strings up, so |
00004460  74 68 61 74 20 66 6f 72  20 65 78 61 6d 70 6c 65  |that for example|
00004470  0a 0a 69 6e 69 74 69 61  6c 20 22 41 20 68 69 6e  |..initial "A hin|
00004480  67 65 64 20 74 72 61 70  64 6f 6f 72 20 69 6e 20  |ged trapdoor in |
00004490  74 68 65 20 66 6c 6f 6f  72 20 73 74 61 6e 64 73  |the floor stands|
000044a0  20 6f 70 65 6e 2c 20 61  6e 64 20 6c 69 67 68 74  | open, and light|
000044b0  20 73 74 72 65 61 6d 73  20 69 6e 20 5c 0a 20 20  | streams in \.  |
000044c0  20 20 20 20 20 20 20 66  72 6f 6d 20 62 65 6c 6f  |       from belo|
000044d0  77 2e 22 0a 20 20 20 20  20 20 20 20 20 0a 69 73  |w.".         .is|
000044e0  20 74 72 65 61 74 65 64  20 61 73 20 69 66 20 74  | treated as if t|
000044f0  68 65 20 22 66 22 20 69  6e 20 22 66 72 6f 6d 20  |he "f" in "from |
00004500  62 65 6c 6f 77 2e 22 20  66 6f 6c 6c 6f 77 73 20  |below." follows |
00004510  64 69 72 65 63 74 6c 79  20 66 72 6f 6d 20 77 68  |directly from wh|
00004520  65 72 65 20 74 68 65 0a  62 61 63 6b 73 6c 61 73  |ere the.backslas|
00004530  68 20 5c 20 69 73 3b 20  69 2e 65 2e 2c 20 74 68  |h \ is; i.e., th|
00004540  65 20 63 61 72 72 69 61  67 65 20 72 65 74 75 72  |e carriage retur|
00004550  6e 20 61 6e 64 20 6c 65  61 64 69 6e 67 20 73 70  |n and leading sp|
00004560  61 63 65 73 20 61 72 65  20 72 65 6d 6f 76 65 64  |aces are removed|
00004570  2e 0a 0a 54 61 62 20 63  68 61 72 61 63 74 65 72  |...Tab character|
00004580  73 20 61 72 65 20 74 72  65 61 74 65 64 20 61 73  |s are treated as|
00004590  20 73 70 61 63 65 73 20  6f 75 74 73 69 64 65 20  | spaces outside |
000045a0  69 6e 76 65 72 74 65 64  20 63 6f 6d 6d 61 73 2c  |inverted commas,|
000045b0  20 62 75 74 20 73 68 6f  75 6c 64 20 6e 6f 74 0a  | but should not.|
000045c0  62 65 20 75 73 65 64 20  69 6e 73 69 64 65 20 74  |be used inside t|
000045d0  68 65 6d 2e 0a 0a 49 6e  66 6f 72 6d 20 63 6f 6d  |hem...Inform com|
000045e0  6d 61 6e 64 20 6e 61 6d  65 73 20 61 72 65 20 6e  |mand names are n|
000045f0  6f 74 20 63 61 73 65 20  73 65 6e 73 69 74 69 76  |ot case sensitiv|
00004600  65 2c 20 61 6e 64 20 6e  6f 72 20 61 72 65 20 76  |e, and nor are v|
00004610  61 72 69 61 62 6c 65 20  6e 61 6d 65 73 2e 0a 48  |ariable names..H|
00004620  6f 77 65 76 65 72 2c 20  72 65 73 65 72 76 65 64  |owever, reserved|
00004630  20 77 6f 72 64 73 20 61  66 74 65 72 20 74 68 65  | words after the|
00004640  20 69 6e 69 74 69 61 6c  20 63 6f 6d 6d 61 6e 64  | initial command|
00004650  20 28 73 75 63 68 20 61  73 20 74 68 65 20 22 74  | (such as the "t|
00004660  6f 22 20 69 6e 20 61 0a  22 66 6f 72 22 20 63 6f  |o" in a."for" co|
00004670  6e 73 74 72 75 63 74 69  6f 6e 29 20 6d 75 73 74  |nstruction) must|
00004680  20 62 65 20 69 6e 20 6c  6f 77 65 72 20 63 61 73  | be in lower cas|
00004690  65 2e 0a 0a 54 68 65 72  65 20 61 72 65 20 73 65  |e...There are se|
000046a0  76 65 6e 20 6b 69 6e 64  73 20 6f 66 20 6c 69 6e  |ven kinds of lin|
000046b0  65 3a 0a 0a 20 20 20 20  20 20 20 20 20 20 20 20  |e:..            |
000046c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000046d0  20 20 20 45 78 61 6d 70  6c 65 73 0a 0a 20 20 72  |   Examples..  r|
000046e0  6f 75 74 69 6e 65 73 20  73 74 61 72 74 69 6e 67  |outines starting|
000046f0  20 20 20 20 20 20 20 20  20 20 20 20 5b 20 4e 65  |            [ Ne|
00004700  77 52 6f 75 74 69 6e 65  20 69 20 6a 3b 0a 20 20  |wRoutine i j;.  |
00004710  61 6e 64 20 73 74 6f 70  70 69 6e 67 20 20 20 20  |and stopping    |
00004720  20 20 20 20 20 20 20 20  20 20 20 20 20 5d 3b 0a  |             ];.|
00004730  0a 20 20 61 73 73 69 67  6e 6d 65 6e 74 73 20 20  |.  assignments  |
00004740  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004750  66 72 65 64 20 3d 20 70  61 72 65 6e 74 28 6c 61  |fred = parent(la|
00004760  6d 70 29 3b 0a 20 20 61  6e 64 20 66 75 6e 63 74  |mp);.  and funct|
00004770  69 6f 6e 20 63 61 6c 6c  73 20 20 20 20 20 20 20  |ion calls       |
00004780  20 20 20 20 56 65 72 69  66 79 28 29 3b 0a 0a 20  |    Verify();.. |
00004790  20 63 6f 6d 70 69 6c 65  64 20 63 6f 6d 6d 61 6e  | compiled comman|
000047a0  64 73 20 20 20 20 20 20  20 20 20 20 20 20 66 6f  |ds            fo|
000047b0  72 20 28 69 3d 31 3a 69  3c 3d 31 30 30 3a 69 2b  |r (i=1:i<=100:i+|
000047c0  2b 29 20 70 72 69 6e 74  20 69 3b 0a 0a 20 20 64  |+) print i;..  d|
000047d0  69 72 65 63 74 69 76 65  73 20 20 20 20 20 20 20  |irectives       |
000047e0  20 20 20 20 20 20 20 20  20 20 20 20 23 52 65 6c  |            #Rel|
000047f0  65 61 73 65 20 34 3b 0a  0a 20 20 61 73 73 65 6d  |ease 4;..  assem|
00004800  62 6c 79 20 6c 61 6e 67  75 61 67 65 20 20 20 20  |bly language    |
00004810  20 20 20 20 20 20 20 20  40 70 72 6f 70 5f 6c 65  |        @prop_le|
00004820  6e 5f 61 64 64 72 20 6c  61 6d 70 20 6c 76 3b 0a  |n_addr lamp lv;.|
00004830  20 20 6c 61 62 65 6c 73  20 20 20 20 20 20 20 20  |  labels        |
00004840  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 2e  |               .|
00004850  4c 61 62 65 6c 3b 0a 0a  0a 49 6e 20 70 72 61 63  |Label;...In prac|
00004860  74 69 63 65 2c 20 79 6f  75 20 64 6f 6e 27 74 20  |tice, you don't |
00004870  6e 65 65 64 20 74 6f 20  6b 6e 6f 77 20 74 68 65  |need to know the|
00004880  20 61 73 73 65 6d 62 6c  79 20 6c 61 6e 67 75 61  | assembly langua|
00004890  67 65 20 61 74 20 61 6c  6c 2c 20 62 75 74 20 69  |ge at all, but i|
000048a0  74 27 73 0a 74 68 65 72  65 2e 0a 0a 0a 2d 2d 2d  |t's.there....---|
000048b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000048f0  2d 2d 2d 2d 2d 2d 2d 2d  0a 33 2e 20 43 6f 6d 70  |--------.3. Comp|
00004900  69 6c 65 72 20 64 69 72  65 63 74 69 76 65 73 0a  |iler directives.|
00004910  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00004950  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 0a 0a 20 20  |-----------...  |
00004960  20 20 20 20 20 20 22 2e  2e 2e 61 6e 64 20 79 65  |      "...and ye|
00004970  74 20 74 68 65 20 5b 45  75 72 6f 70 65 61 6e 20  |t the [European |
00004980  43 6f 6d 6d 75 6e 69 74  79 5d 20 64 69 72 65 63  |Community] direc|
00004990  74 69 76 65 20 6f 6e 20  69 6d 70 6f 72 74 61 74  |tive on importat|
000049a0  69 6f 6e 0a 20 20 20 20  20 20 20 20 20 6f 66 20  |ion.         of |
000049b0  63 61 72 61 6d 65 6c 20  69 73 20 6f 76 65 72 20  |caramel is over |
000049c0  32 30 2c 30 30 30 20 77  6f 72 64 73 20 6c 6f 6e  |20,000 words lon|
000049d0  67 2e 22 0a 0a 20 20 20  20 20 20 20 20 20 20 20  |g."..           |
000049e0  20 20 20 20 28 41 6e 20  61 6e 74 69 2d 45 75 72  |    (An anti-Eur|
000049f0  6f 70 65 61 6e 20 73 70  65 61 6b 65 72 20 61 74  |opean speaker at|
00004a00  20 74 68 65 20 31 39 39  33 20 43 6f 6e 73 65 72  | the 1993 Conser|
00004a10  76 61 74 69 76 65 0a 20  20 20 20 20 20 20 20 20  |vative.         |
00004a20  20 20 20 20 20 20 20 50  61 72 74 79 20 43 6f 6e  |       Party Con|
00004a30  66 65 72 65 6e 63 65 3a  20 73 61 64 6c 79 2c 20  |ference: sadly, |
00004a40  74 68 6f 75 67 68 2c 20  74 68 65 20 64 69 72 65  |though, the dire|
00004a50  63 74 69 76 65 20 69 6e  0a 20 20 20 20 20 20 20  |ctive in.       |
00004a60  20 20 20 20 20 20 20 20  20 71 75 65 73 74 69 6f  |         questio|
00004a70  6e 20 69 73 20 61 70 6f  63 72 79 70 68 61 6c 29  |n is apocryphal)|
00004a80  0a 0a 0a 44 69 72 65 63  74 69 76 65 73 20 61 72  |...Directives ar|
00004a90  65 20 69 6e 73 74 72 75  63 74 69 6f 6e 73 20 74  |e instructions t|
00004aa0  6f 20 49 6e 66 6f 72 6d  20 77 68 69 63 68 20 64  |o Inform which d|
00004ab0  6f 20 6e 6f 74 20 74 68  65 6d 73 65 6c 76 65 73  |o not themselves|
00004ac0  20 6d 61 6b 65 20 63 6f  64 65 2c 0a 74 68 6f 75  | make code,.thou|
00004ad0  67 68 20 74 68 65 79 20  63 68 61 6e 67 65 20 74  |gh they change t|
00004ae0  68 65 20 77 61 79 20 63  6f 64 65 20 69 73 20 73  |he way code is s|
00004af0  75 62 73 65 71 75 65 6e  74 6c 79 20 6d 61 64 65  |ubsequently made|
00004b00  2e 20 20 54 68 65 79 20  63 61 6e 20 62 65 20 70  |.  They can be p|
00004b10  72 65 66 61 63 65 64 0a  62 79 20 61 20 23 20 63  |refaced.by a # c|
00004b20  68 61 72 61 63 74 65 72  2c 20 61 73 20 69 6e 20  |haracter, as in |
00004b30  43 2c 20 62 75 74 20 6e  65 65 64 20 6e 6f 74 20  |C, but need not |
00004b40  62 65 2e 0a 0a 41 42 42  52 45 56 49 41 54 45 20  |be...ABBREVIATE |
00004b50  3c 73 74 72 69 6e 67 3e  20 20 20 20 20 20 20 20  |<string>        |
00004b60  20 20 20 20 20 20 20 20  20 20 44 65 63 6c 61 72  |          Declar|
00004b70  65 20 61 62 62 72 65 76  69 61 74 69 6f 6e 20 28  |e abbreviation (|
00004b80  73 65 65 20 28 31 39 29  29 0a 41 54 54 52 49 42  |see (19)).ATTRIB|
00004b90  55 54 45 20 3c 6e 61 6d  65 3e 20 20 20 20 20 20  |UTE <name>      |
00004ba0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 4d  |               M|
00004bb0  61 6b 65 20 6e 65 77 20  61 74 74 72 69 62 75 74  |ake new attribut|
00004bc0  65 20 66 6c 61 67 0a 0a  43 4c 41 53 53 20 2e 2e  |e flag..CLASS ..|
00004bd0  2e 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00004be0  20 20 20 20 20 20 20 20  20 20 20 20 20 44 65 63  |             Dec|
00004bf0  6c 61 72 65 20 61 6e 20  6f 62 6a 65 63 74 20 63  |lare an object c|
00004c00  6c 61 73 73 20 28 73 65  65 20 62 65 6c 6f 77 29  |lass (see below)|
00004c10  0a 0a 43 4f 4e 53 54 41  4e 54 20 3c 6e 61 6d 65  |..CONSTANT <name|
00004c20  3e 20 3c 76 61 6c 75 65  3e 20 20 20 20 20 20 20  |> <value>       |
00004c30  20 20 20 20 20 20 20 44  65 63 6c 61 72 65 20 61  |       Declare a|
00004c40  20 63 6f 6e 73 74 61 6e  74 0a 0a 45 4e 44 20 20  | constant..END  |
00004c50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00004c70  45 6e 64 20 63 6f 6d 70  69 6c 61 74 69 6f 6e 20  |End compilation |
00004c80  68 65 72 65 20 28 74 68  69 73 20 69 73 20 6f 70  |here (this is op|
00004c90  74 69 6f 6e 61 6c 29 0a  0a 45 4e 44 49 46 20 20  |tional)..ENDIF  |
00004ca0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004cb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 45 6e  |              En|
00004cc0  64 20 6f 66 20 63 6f 6e  64 69 74 69 6f 6e 61 6c  |d of conditional|
00004cd0  20 63 6f 6d 70 69 6c 61  74 69 6f 6e 0a 0a 47 4c  | compilation..GL|
00004ce0  4f 42 41 4c 20 3c 6e 61  6d 65 3e 20 5b 20 3d 20  |OBAL <name> [ = |
00004cf0  3c 61 3e 20 5d 20 20 20  20 20 20 20 20 20 20 20  |<a> ]           |
00004d00  20 20 20 4d 61 6b 65 20  61 20 6e 65 77 20 67 6c  |   Make a new gl|
00004d10  6f 62 61 6c 20 76 61 72  69 61 62 6c 65 3b 0a 20  |obal variable;. |
00004d20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00004d40  20 20 20 20 20 20 5b 67  69 76 65 20 69 74 20 74  |      [give it t|
00004d50  68 65 20 69 6e 69 74 69  61 6c 20 76 61 6c 75 65  |he initial value|
00004d60  20 61 5d 0a 20 20 20 20  20 20 20 20 20 20 20 20  | a].            |
00004d70  20 20 5b 20 73 74 72 69  6e 67 20 3c 61 3e 20 5d  |  [ string <a> ]|
00004d80  20 20 20 20 20 20 20 20  20 20 20 5b 6d 61 6b 65  |           [make|
00004d90  20 69 74 20 70 6f 69 6e  74 20 74 6f 20 61 6e 20  | it point to an |
00004da0  28 61 2b 31 29 2d 62 79  74 65 20 61 72 72 61 79  |(a+1)-byte array|
00004db0  2c 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |,.              |
00004dc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004dd0  20 20 20 20 20 20 20 20  20 20 20 77 68 69 63 68  |           which|
00004de0  20 68 61 73 20 3c 61 3e  20 61 73 20 66 69 72 73  | has <a> as firs|
00004df0  74 20 62 79 74 65 2c 20  61 6e 64 20 69 73 0a 20  |t byte, and is. |
00004e00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00004e20  20 20 20 20 20 20 20 20  6f 74 68 65 72 77 69 73  |        otherwis|
00004e30  65 20 7a 65 72 6f 73 5d  0a 20 20 20 20 20 20 20  |e zeros].       |
00004e40  20 20 20 20 20 20 20 5b  20 64 61 74 61 20 3c 61  |       [ data <a|
00004e50  3e 20 5d 20 20 20 20 20  20 20 20 20 20 20 20 20  |> ]             |
00004e60  5b 6d 61 6b 65 20 69 74  20 70 6f 69 6e 74 20 74  |[make it point t|
00004e70  6f 20 61 6e 20 61 2d 62  79 74 65 20 61 72 72 61  |o an a-byte arra|
00004e80  79 2c 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |y,.             |
00004e90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004ea0  20 20 20 20 20 20 20 20  20 20 20 20 77 68 69 63  |            whic|
00004eb0  68 20 69 73 20 61 6c 6c  20 7a 65 72 6f 73 5d 0a  |h is all zeros].|
00004ec0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 5b 20  |              [ |
00004ed0  69 6e 69 74 69 61 6c 20  3c 69 31 3e 20 2e 2e 2e  |initial <i1> ...|
00004ee0  20 5d 20 20 20 20 20 5b  6d 61 6b 65 20 69 74 20  | ]     [make it |
00004ef0  70 6f 69 6e 74 20 74 6f  20 61 6e 20 61 72 72 61  |point to an arra|
00004f00  79 2c 20 74 68 65 20 62  79 74 65 73 0a 20 20 20  |y, the bytes.   |
00004f10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00004f30  20 20 20 20 20 20 6f 66  20 77 68 69 63 68 20 61  |      of which a|
00004f40  72 65 20 61 73 20 67 69  76 65 6e 5d 0a 20 20 20  |re as given].   |
00004f50  20 20 20 20 20 20 20 20  20 20 20 5b 20 69 6e 69  |           [ ini|
00004f60  74 73 74 72 20 22 74 65  78 74 22 20 5d 20 20 20  |tstr "text" ]   |
00004f70  20 20 20 20 5b 6d 61 6b  65 20 69 74 20 70 6f 69  |    [make it poi|
00004f80  6e 74 20 74 6f 20 61 6e  20 61 72 72 61 79 2c 20  |nt to an array, |
00004f90  74 68 65 20 62 79 74 65  73 0a 20 20 20 20 20 20  |the bytes.      |
00004fa0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00004fc0  20 20 20 6f 66 20 77 68  69 63 68 20 61 72 65 20  |   of which are |
00004fd0  74 68 65 20 41 53 43 49  49 20 76 61 6c 75 65 73  |the ASCII values|
00004fe0  20 6f 66 20 74 68 65 0a  20 20 20 20 20 20 20 20  | of the.        |
00004ff0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005010  20 63 68 61 72 61 63 74  65 72 73 20 69 6e 20 74  | characters in t|
00005020  68 65 20 73 74 72 69 6e  67 5d 0a 0a 49 46 44 45  |he string]..IFDE|
00005030  46 20 3c 6e 61 6d 65 3e  20 20 20 20 20 20 20 20  |F <name>        |
00005040  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005050  20 43 6f 6d 70 69 6c 65  20 69 66 20 63 6f 6e 73  | Compile if cons|
00005060  74 61 6e 74 20 6e 61 6d  65 20 64 65 66 69 6e 65  |tant name define|
00005070  64 0a 49 46 4e 44 45 46  20 3c 6e 61 6d 65 3e 20  |d.IFNDEF <name> |
00005080  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005090  20 20 20 20 20 20 20 43  6f 6d 70 69 6c 65 20 69  |       Compile i|
000050a0  66 20 63 6f 6e 73 74 61  6e 74 20 6e 61 6d 65 20  |f constant name |
000050b0  75 6e 64 65 66 69 6e 65  64 0a 49 46 4e 4f 54 20  |undefined.IFNOT |
000050c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000050d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 22  |               "|
000050e0  45 6c 73 65 22 20 66 6f  72 20 63 6f 6e 64 69 74  |Else" for condit|
000050f0  69 6f 6e 61 6c 20 63 6f  6d 70 69 6c 61 74 69 6f  |ional compilatio|
00005100  6e 0a 49 46 56 33 20 20  20 20 20 20 20 20 20 20  |n.IFV3          |
00005110  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005120  20 20 20 20 20 20 20 43  6f 6d 70 69 6c 65 20 69  |       Compile i|
00005130  66 20 76 65 72 73 69 6f  6e 20 69 73 20 73 65 74  |f version is set|
00005140  20 74 6f 20 33 0a 49 46  56 35 20 20 20 20 20 20  | to 3.IFV5      |
00005150  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005160  20 20 20 20 20 20 20 20  20 20 20 43 6f 6d 70 69  |           Compi|
00005170  6c 65 20 69 66 20 76 65  72 73 69 6f 6e 20 69 73  |le if version is|
00005180  20 73 65 74 20 74 6f 20  35 0a 0a 49 4e 43 4c 55  | set to 5..INCLU|
00005190  44 45 20 3c 66 69 6c 65  6e 61 6d 65 3e 20 20 20  |DE <filename>   |
000051a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000051b0  49 6e 63 6c 75 64 65 20  61 20 66 69 6c 65 20 69  |Include a file i|
000051c0  6e 20 74 68 65 20 73 6f  75 72 63 65 0a 0a 4e 45  |n the source..NE|
000051d0  41 52 42 59 20 2e 2e 2e  20 20 20 20 20 20 20 20  |ARBY ...        |
000051e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000051f0  20 20 20 4d 61 6b 65 20  61 6e 20 6f 62 6a 65 63  |   Make an objec|
00005200  74 20 6e 65 61 72 20 74  68 65 20 6c 61 73 74 20  |t near the last |
00005210  28 73 65 65 20 62 65 6c  6f 77 29 0a 4f 42 4a 45  |(see below).OBJE|
00005220  43 54 20 2e 2e 2e 20 20  20 20 20 20 20 20 20 20  |CT ...          |
00005230  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005240  20 4d 61 6b 65 20 61 6e  20 6f 62 6a 65 63 74 20  | Make an object |
00005250  28 73 65 65 20 62 65 6c  6f 77 29 0a 50 52 4f 50  |(see below).PROP|
00005260  45 52 54 59 20 2e 2e 2e  20 20 20 20 20 20 20 20  |ERTY ...        |
00005270  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005280  20 4d 61 6b 65 20 61 20  6e 65 77 20 70 72 6f 70  | Make a new prop|
00005290  65 72 74 79 20 28 73 65  65 20 62 65 6c 6f 77 29  |erty (see below)|
000052a0  0a 0a 52 45 50 4c 41 43  45 20 3c 72 6f 75 74 69  |..REPLACE <routi|
000052b0  6e 65 2d 6e 61 6d 65 3e  20 20 20 20 20 20 20 20  |ne-name>        |
000052c0  20 20 20 20 20 20 20 44  65 63 6c 61 72 65 20 74  |       Declare t|
000052d0  68 61 74 20 74 68 69 73  20 73 79 73 74 65 6d 20  |hat this system |
000052e0  66 69 6c 65 20 72 6f 75  74 69 6e 65 0a 20 20 20  |file routine.   |
000052f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005310  20 20 77 69 6c 6c 20 62  65 20 72 65 70 6c 61 63  |  will be replac|
00005320  65 64 20 69 6e 20 74 68  65 20 67 61 6d 65 20 73  |ed in the game s|
00005330  6f 75 72 63 65 0a 0a 52  45 4c 45 41 53 45 20 3c  |ource..RELEASE <|
00005340  61 3e 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |a>              |
00005350  20 20 20 20 20 20 20 20  20 20 20 20 53 65 74 20  |            Set |
00005360  74 68 65 20 72 65 6c 65  61 73 65 20 6e 75 6d 62  |the release numb|
00005370  65 72 20 74 6f 20 3c 61  3e 0a 0a 53 45 52 49 41  |er to <a>..SERIA|
00005380  4c 20 3c 73 74 72 69 6e  67 3e 20 20 20 20 20 20  |L <string>      |
00005390  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000053a0  53 65 74 20 74 68 65 20  73 65 72 69 61 6c 20 6e  |Set the serial n|
000053b0  75 6d 62 65 72 20 74 6f  20 3c 73 74 72 69 6e 67  |umber to <string|
000053c0  3e 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |>.              |
000053d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000053e0  20 20 20 20 20 20 20 20  20 20 28 69 74 20 6d 75  |          (it mu|
000053f0  73 74 20 62 65 20 61 20  73 69 78 2d 64 69 67 69  |st be a six-digi|
00005400  74 20 6e 75 6d 62 65 72  2c 20 61 6e 64 0a 20 20  |t number, and.  |
00005410  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005430  20 20 20 20 20 20 20 64  65 66 61 75 6c 74 73 20  |       defaults |
00005440  74 6f 20 74 68 65 20 64  61 74 65 20 69 6e 20 74  |to the date in t|
00005450  68 65 20 66 6f 72 6d 0a  20 20 20 20 20 20 20 20  |he form.        |
00005460  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005480  20 59 59 4d 4d 44 44 20  69 66 20 49 6e 66 6f 72  | YYMMDD if Infor|
00005490  6d 20 68 61 73 20 61 63  63 65 73 73 20 74 6f 0a  |m has access to.|
000054a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000054c0  20 20 20 20 20 20 20 20  20 74 6f 64 61 79 27 73  |         today's|
000054d0  20 64 61 74 65 2c 20 6f  72 20 74 6f 20 39 34 30  | date, or to 940|
000054e0  30 30 30 20 69 66 20 69  74 0a 20 20 20 20 20 20  |000 if it.      |
000054f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005510  20 20 20 68 61 73 6e 27  74 29 0a 0a 53 54 41 54  |   hasn't)..STAT|
00005520  55 53 4c 49 4e 45 20 73  63 6f 72 65 20 20 20 20  |USLINE score    |
00005530  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005540  20 4d 61 6b 65 20 74 68  65 20 73 74 61 74 75 73  | Make the status|
00005550  20 6c 69 6e 65 20 73 68  6f 77 20 73 63 6f 72 65  | line show score|
00005560  2f 74 75 72 6e 73 0a 20  20 20 20 20 20 20 20 20  |/turns.         |
00005570  20 20 74 69 6d 65 20 20  20 20 20 20 20 20 20 20  |  time          |
00005580  20 20 20 20 20 20 20 20  20 20 20 20 2e 2e 2e 73  |            ...s|
00005590  68 6f 77 20 68 6f 75 72  73 2f 6d 69 6e 75 74 65  |how hours/minute|
000055a0  73 0a 0a 53 57 49 54 43  48 45 53 20 3c 73 77 69  |s..SWITCHES <swi|
000055b0  74 63 68 65 73 3e 20 20  20 20 20 20 20 20 20 20  |tches>          |
000055c0  20 20 20 20 20 20 20 20  44 65 63 6c 61 72 65 20  |        Declare |
000055d0  64 65 66 61 75 6c 74 20  73 77 69 74 63 68 20 73  |default switch s|
000055e0  65 74 74 69 6e 67 73 0a  20 20 20 20 20 20 20 20  |ettings.        |
000055f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005600  20 20 20 20 20 20 20 20  20 20 20 20 20 28 65 67  |             (eg|
00005610  3a 20 20 53 57 49 54 43  48 45 53 20 64 65 78 73  |:  SWITCHES dexs|
00005620  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00005630  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005640  20 20 20 20 20 20 63 61  75 73 65 73 20 22 69 6e  |      causes "in|
00005650  66 6f 72 6d 20 66 69 6c  65 6e 61 6d 65 22 20 74  |form filename" t|
00005660  6f 20 62 65 20 72 65 61  64 20 61 73 0a 20 20 20  |o be read as.   |
00005670  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005690  20 20 22 69 6e 66 6f 72  6d 20 2d 64 65 78 73 20  |  "inform -dexs |
000056a0  66 69 6c 65 6e 61 6d 65  22 29 0a 0a 56 45 52 42  |filename")..VERB|
000056b0  20 2e 2e 2e 20 20 20 20  20 20 20 20 20 20 20 20  | ...            |
000056c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000056d0  20 45 6e 74 65 72 20 67  72 61 6d 6d 61 72 20 66  | Enter grammar f|
000056e0  6f 72 20 61 20 6e 65 77  20 76 65 72 62 20 28 73  |or a new verb (s|
000056f0  65 65 20 62 65 6c 6f 77  29 0a 45 58 54 45 4e 44  |ee below).EXTEND|
00005700  20 2e 2e 2e 20 20 20 20  20 20 20 20 20 20 20 20  | ...            |
00005710  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 45  |               E|
00005720  78 74 65 6e 64 20 74 68  65 20 67 72 61 6d 6d 61  |xtend the gramma|
00005730  72 20 66 6f 72 20 61 20  76 65 72 62 0a 0a 56 45  |r for a verb..VE|
00005740  52 53 49 4f 4e 20 6e 20  20 20 20 20 20 20 20 20  |RSION n         |
00005750  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005760  20 20 20 53 65 74 73 20  49 6e 66 6f 72 6d 20 74  |   Sets Inform t|
00005770  6f 20 76 65 72 73 69 6f  6e 20 33 20 6f 72 20 35  |o version 3 or 5|
00005780  0a 0a 54 68 65 20 66 6f  6c 6c 6f 77 69 6e 67 20  |..The following |
00005790  61 72 65 20 6d 61 69 6e  6c 79 20 66 6f 72 20 64  |are mainly for d|
000057a0  65 62 75 67 67 69 6e 67  20 74 68 65 20 63 6f 6d  |ebugging the com|
000057b0  70 69 6c 65 72 20 28 73  68 6f 75 6c 64 20 61 6e  |piler (should an|
000057c0  79 6f 6e 65 20 65 76 65  72 0a 67 65 74 20 61 72  |yone ever.get ar|
000057d0  6f 75 6e 64 20 74 6f 20  64 6f 69 6e 67 20 74 68  |ound to doing th|
000057e0  69 73 29 20 62 75 74 20  6d 69 67 68 74 20 73 6f  |is) but might so|
000057f0  6d 65 74 69 6d 65 73 20  62 65 20 61 6d 75 73 69  |metimes be amusi|
00005800  6e 67 20 6f 72 20 68 65  6c 70 66 75 6c 3a 0a 0a  |ng or helpful:..|
00005810  4c 49 53 54 53 59 4d 42  4f 4c 53 20 20 20 20 20  |LISTSYMBOLS     |
00005820  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005830  20 20 20 20 20 4c 69 73  74 20 74 68 65 20 73 79  |     List the sy|
00005840  6d 62 6f 6c 20 74 61 62  6c 65 0a 4c 49 53 54 44  |mbol table.LISTD|
00005850  49 43 54 20 20 20 20 20  20 20 20 20 20 20 20 20  |ICT             |
00005860  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005870  4c 69 73 74 20 74 68 65  20 64 69 63 74 69 6f 6e  |List the diction|
00005880  61 72 79 0a 4c 49 53 54  4f 42 4a 45 43 54 53 20  |ary.LISTOBJECTS |
00005890  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000058a0  20 20 20 20 20 20 20 20  20 4c 69 73 74 20 74 68  |         List th|
000058b0  65 20 6f 62 6a 65 63 74  20 74 72 65 65 0a 4c 49  |e object tree.LI|
000058c0  53 54 56 45 52 42 53 20  20 20 20 20 20 20 20 20  |STVERBS         |
000058d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000058e0  20 20 20 4c 69 73 74 20  74 68 65 20 76 65 72 62  |   List the verb|
000058f0  20 74 61 62 6c 65 0a 0a  28 74 68 65 20 6e 61 6d  | table..(the nam|
00005900  65 73 20 6f 66 20 77 68  69 63 68 20 68 61 76 65  |es of which have|
00005910  20 63 68 61 6e 67 65 64  20 73 69 6e 63 65 20 72  | changed since r|
00005920  65 6c 65 61 73 65 73 20  31 20 61 6e 64 20 32 29  |eleases 1 and 2)|
00005930  2c 0a 0a 54 52 41 43 45  20 20 20 20 20 20 20 20  |,..TRACE        |
00005940  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005950  20 20 20 20 20 20 20 20  54 72 61 63 65 20 61 73  |        Trace as|
00005960  73 65 6d 62 6c 65 72 0a  4c 54 52 41 43 45 20 20  |sembler.LTRACE  |
00005970  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005980  20 20 20 20 20 20 20 20  20 20 20 20 20 4c 69 73  |             Lis|
00005990  74 20 74 68 65 20 6c 69  6e 65 73 20 6f 66 20 69  |t the lines of i|
000059a0  6e 70 75 74 0a 45 54 52  41 43 45 20 5b 66 75 6c  |nput.ETRACE [ful|
000059b0  6c 5d 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |l]              |
000059c0  20 20 20 20 20 20 20 20  20 20 54 72 61 63 65 20  |          Trace |
000059d0  65 78 70 72 65 73 73 69  6f 6e 20 65 76 61 6c 75  |expression evalu|
000059e0  61 74 6f 72 0a 20 20 20  20 20 20 20 20 20 20 20  |ator.           |
000059f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005a00  20 20 20 20 20 20 20 20  20 20 28 72 61 74 68 65  |          (rathe|
00005a10  72 20 6c 61 76 69 73 68  6c 79 20 69 66 20 22 66  |r lavishly if "f|
00005a20  75 6c 6c 22 20 69 73 20  73 65 74 29 0a 42 54 52  |ull" is set).BTR|
00005a30  41 43 45 20 20 20 20 20  20 20 20 20 20 20 20 20  |ACE             |
00005a40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005a50  20 20 54 72 61 63 65 20  61 73 73 65 6d 62 6c 65  |  Trace assemble|
00005a60  72 20 6f 6e 20 62 6f 74  68 20 70 61 73 73 65 73  |r on both passes|
00005a70  0a 4e 4f 54 52 41 43 45  2c 20 4e 4f 4c 54 52 41  |.NOTRACE, NOLTRA|
00005a80  43 45 2c 20 65 74 63 20  20 20 20 20 20 20 20 20  |CE, etc         |
00005a90  20 20 20 20 20 20 54 75  72 6e 20 6f 66 66 20 61  |      Turn off a|
00005aa0  70 70 72 6f 70 72 69 61  74 65 20 74 72 61 63 69  |ppropriate traci|
00005ab0  6e 67 0a 0a 41 6e 64 20  74 68 65 72 65 20 61 72  |ng..And there ar|
00005ac0  65 20 73 69 78 20 6d 6f  72 65 20 72 61 74 68 65  |e six more rathe|
00005ad0  72 20 74 65 63 68 6e 69  63 61 6c 20 64 69 72 65  |r technical dire|
00005ae0  63 74 69 76 65 73 3a 0a  0a 44 45 46 41 55 4c 54  |ctives:..DEFAULT|
00005af0  20 3c 63 6e 61 6d 65 3e  20 3c 76 61 6c 75 65 3e  | <cname> <value>|
00005b00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 49 66  |              If|
00005b10  20 74 68 65 20 63 6f 6e  73 74 61 6e 74 20 68 61  | the constant ha|
00005b20  73 20 6e 6f 74 20 79 65  74 20 62 65 65 6e 0a 20  |s not yet been. |
00005b30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005b50  20 20 20 20 64 65 66 69  6e 65 64 2c 20 64 65 66  |    defined, def|
00005b60  69 6e 65 20 69 74 20 77  69 74 68 20 74 68 69 73  |ine it with this|
00005b70  20 76 61 6c 75 65 0a 4c  4f 57 5f 53 54 52 49 4e  | value.LOW_STRIN|
00005b80  47 20 3c 6e 61 6d 65 3e  20 3c 73 74 72 69 6e 67  |G <name> <string|
00005b90  3e 20 20 20 20 20 20 20  20 20 20 20 50 75 74 73  |>           Puts|
00005ba0  20 61 20 73 74 72 69 6e  67 20 69 6e 20 74 68 65  | a string in the|
00005bb0  20 22 6c 6f 77 20 73 74  72 69 6e 67 73 22 20 61  | "low strings" a|
00005bc0  72 65 61 2c 0a 20 20 20  20 20 20 20 20 20 20 20  |rea,.           |
00005bd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005be0  20 20 20 20 20 20 20 20  20 20 61 6e 64 20 63 72  |          and cr|
00005bf0  65 61 74 65 73 20 61 20  63 6f 6e 73 74 61 6e 74  |eates a constant|
00005c00  20 74 6f 20 68 6f 6c 64  20 69 74 73 20 77 6f 72  | to hold its wor|
00005c10  64 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |d.              |
00005c20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005c30  20 20 20 20 20 20 20 61  64 64 72 65 73 73 20 28  |       address (|
00005c40  73 65 65 20 28 31 38 29  29 2e 0a 53 54 55 42 20  |see (18))..STUB |
00005c50  3c 72 6e 61 6d 65 3e 20  3c 6e 3e 20 20 20 20 20  |<rname> <n>     |
00005c60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005c70  49 66 20 74 68 65 20 72  6f 75 74 69 6e 65 20 68  |If the routine h|
00005c80  61 73 20 6e 6f 74 20 79  65 74 20 62 65 65 6e 0a  |as not yet been.|
00005c90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005cb0  20 20 20 20 20 64 65 66  69 6e 65 64 2c 20 64 65  |     defined, de|
00005cc0  66 69 6e 65 20 6f 6e 65  20 77 68 69 63 68 20 68  |fine one which h|
00005cd0  61 73 20 6e 20 6c 6f 63  61 6c 0a 20 20 20 20 20  |as n local.     |
00005ce0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005d00  76 61 72 69 61 62 6c 65  73 20 61 6e 64 20 61 6c  |variables and al|
00005d10  77 61 79 73 20 72 65 74  75 72 6e 73 20 66 61 6c  |ways returns fal|
00005d20  73 65 0a 44 49 43 54 49  4f 4e 41 52 59 20 3c 6e  |se.DICTIONARY <n|
00005d30  61 6d 65 3e 20 3c 74 65  78 74 3e 20 20 20 20 20  |ame> <text>     |
00005d40  20 20 20 20 20 20 20 20  45 6e 74 65 72 20 3c 74  |        Enter <t|
00005d50  65 78 74 3e 20 69 6e 20  64 69 63 74 69 6f 6e 61  |ext> in dictiona|
00005d60  72 79 2c 20 61 6e 64 20  6d 61 6b 65 0a 20 20 20  |ry, and make.   |
00005d70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005d90  20 20 61 20 6e 65 77 20  63 6f 6e 73 74 61 6e 74  |  a new constant|
00005da0  20 66 6f 72 20 69 74 73  20 61 64 64 72 65 73 73  | for its address|
00005db0  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00005dc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005dd0  20 20 20 20 20 20 28 74  68 69 73 20 75 73 61 67  |      (this usag|
00005de0  65 20 69 73 20 6f 62 73  65 6c 65 74 65 2c 20 73  |e is obselete, s|
00005df0  69 6e 63 65 2c 20 65 2e  67 2e 0a 20 20 20 20 20  |ince, e.g..     |
00005e00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005e20  23 6e 24 74 68 65 77 6f  72 64 20 69 73 20 6d 75  |#n$theword is mu|
00005e30  63 68 20 62 65 74 74 65  72 29 0a 46 41 4b 45 5f  |ch better).FAKE_|
00005e40  41 43 54 49 4f 4e 20 3c  6e 61 6d 65 3e 20 20 20  |ACTION <name>   |
00005e50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005e60  43 72 65 61 74 65 20 61  20 66 61 6b 65 20 61 63  |Create a fake ac|
00005e70  74 69 6f 6e 3a 20 6f 6e  65 20 77 68 69 63 68 20  |tion: one which |
00005e80  63 61 6e 20 62 65 0a 20  20 20 20 20 20 20 20 20  |can be.         |
00005e90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005ea0  20 20 20 20 20 20 20 20  20 20 20 20 74 72 65 61  |            trea|
00005eb0  74 65 64 20 61 73 20 61  6e 20 61 63 74 69 6f 6e  |ted as an action|
00005ec0  20 62 75 74 20 63 6f 72  72 65 73 70 6f 6e 64 73  | but corresponds|
00005ed0  20 74 6f 0a 20 20 20 20  20 20 20 20 20 20 20 20  | to.            |
00005ee0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005ef0  20 20 20 20 20 20 20 20  20 6e 6f 20 61 63 74 75  |         no actu|
00005f00  61 6c 20 72 6f 75 74 69  6e 65 0a 53 59 53 54 45  |al routine.SYSTE|
00005f10  4d 5f 46 49 4c 45 20 20  20 20 20 20 20 20 20 20  |M_FILE          |
00005f20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005f30  44 65 63 6c 61 72 65 73  20 74 68 65 20 70 72 65  |Declares the pre|
00005f40  73 65 6e 74 20 66 69 6c  65 20 74 6f 20 62 65 20  |sent file to be |
00005f50  61 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |a.              |
00005f60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005f70  20 20 20 20 20 20 20 73  79 73 74 65 6d 20 66 69  |       system fi|
00005f80  6c 65 20 28 66 72 6f 6d  20 77 68 69 63 68 20 72  |le (from which r|
00005f90  6f 75 74 69 6e 65 73 20  63 61 6e 20 62 65 0a 20  |outines can be. |
00005fa0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005fc0  20 20 20 20 52 45 50 4c  41 43 45 64 29 0a 0a 43  |    REPLACEd)..C|
00005fd0  6f 6e 64 69 74 69 6f 6e  61 6c 20 63 6f 6d 70 69  |onditional compi|
00005fe0  6c 61 74 69 6f 6e 20 61  6c 6c 6f 77 73 20 63 6f  |lation allows co|
00005ff0  64 65 20 66 6f 72 20 72  6f 75 74 69 6e 65 73 20  |de for routines |
00006000  77 68 69 63 68 20 6e 65  65 64 20 6f 6e 6c 79 20  |which need only |
00006010  65 78 69 73 74 20 69 6e  0a 73 6f 6d 65 20 22 76  |exist in.some "v|
00006020  65 72 73 69 6f 6e 73 22  20 6f 66 20 79 6f 75 72  |ersions" of your|
00006030  20 67 61 6d 65 73 2e 20  20 46 6f 72 20 69 6e 73  | games.  For ins|
00006040  74 61 6e 63 65 2c 0a 0a  20 20 70 72 69 6e 74 20  |tance,..  print |
00006050  22 57 65 6c 63 6f 6d 65  20 74 6f 20 74 68 65 20  |"Welcome to the |
00006060  22 3b 0a 20 20 23 49 46  56 33 3b 0a 20 20 20 20  |";.  #IFV3;.    |
00006070  70 72 69 6e 74 20 22 53  74 61 6e 64 61 72 64 22  |print "Standard"|
00006080  3b 0a 20 20 23 49 46 4e  4f 54 3b 0a 20 20 20 20  |;.  #IFNOT;.    |
00006090  70 72 69 6e 74 20 22 41  64 76 61 6e 63 65 64 22  |print "Advanced"|
000060a0  3b 0a 20 20 23 45 4e 44  49 46 3b 0a 20 20 70 72  |;.  #ENDIF;.  pr|
000060b0  69 6e 74 20 22 20 76 65  72 73 69 6f 6e 20 6f 66  |int " version of|
000060c0  20 5a 6f 72 6b 20 4c 56  49 2e 22 3b 0a 0a 4e 6f  | Zork LVI.";..No|
000060d0  74 65 20 74 68 65 20 74  72 61 69 6c 69 6e 67 20  |te the trailing |
000060e0  73 65 6d 69 63 6f 6c 6f  6e 3a 20 49 6e 66 6f 72  |semicolon: Infor|
000060f0  6d 20 69 73 20 6e 6f 74  20 43 21 20 20 53 75 63  |m is not C!  Suc|
00006100  68 20 63 6c 61 75 73 65  73 20 6d 61 79 20 62 65  |h clauses may be|
00006110  20 6e 65 73 74 65 64 20  75 70 0a 74 6f 20 33 32  | nested up.to 32|
00006120  20 64 65 65 70 2c 20 61  6e 64 20 6d 61 79 20 63  | deep, and may c|
00006130  6f 6e 74 61 69 6e 20 77  68 6f 6c 65 20 72 6f 75  |ontain whole rou|
00006140  74 69 6e 65 73 2e 20 20  54 68 65 79 20 6d 61 79  |tines.  They may|
00006150  20 6e 6f 74 2c 20 68 6f  77 65 76 65 72 2c 0a 63  | not, however,.c|
00006160  6f 6e 64 69 74 69 6f 6e  61 6c 6c 79 20 67 69 76  |onditionally giv|
00006170  65 20 5f 70 61 72 74 5f  20 6f 66 20 61 20 73 74  |e _part_ of a st|
00006180  61 74 65 6d 65 6e 74 2e  20 20 54 68 75 73 2c 20  |atement.  Thus, |
00006190  66 6f 72 20 69 6e 73 74  61 6e 63 65 2c 0a 0a 20  |for instance,.. |
000061a0  20 70 72 69 6e 74 20 0a  20 20 23 49 46 56 33 3b  | print .  #IFV3;|
000061b0  0a 20 20 20 20 22 53 74  61 6e 64 61 72 64 22 3b  |.    "Standard";|
000061c0  0a 20 20 23 49 46 4e 4f  54 3b 0a 20 20 20 20 22  |.  #IFNOT;.    "|
000061d0  41 64 76 61 6e 63 65 64  22 3b 0a 20 20 23 45 4e  |Advanced";.  #EN|
000061e0  44 49 46 3b 0a 0a 69 73  20 5f 6e 6f 74 5f 20 6c  |DIF;..is _not_ l|
000061f0  65 67 61 6c 2e 0a 0a 0a  2d 2d 2d 2d 2d 2d 2d 2d  |egal....--------|
00006200  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00006240  2d 2d 2d 0a 34 2e 20 56  61 72 69 61 62 6c 65 73  |---.4. Variables|
00006250  0a 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.---------------|
00006260  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00006290  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0a 0a 0a 20  |------------... |
000062a0  20 20 20 20 20 20 22 49  20 66 6f 75 6e 64 20 69  |      "I found i|
000062b0  74 20 6e 65 63 65 73 73  61 72 79 20 74 6f 20 69  |t necessary to i|
000062c0  6e 74 72 6f 64 75 63 65  20 74 68 65 20 72 65 73  |ntroduce the res|
000062d0  74 72 69 63 74 69 6f 6e  20 74 68 61 74 0a 20 20  |triction that.  |
000062e0  20 20 20 20 20 71 75 61  6e 74 69 66 69 65 72 73  |     quantifiers|
000062f0  20 6d 61 79 20 6f 6e 6c  79 20 62 65 20 61 70 70  | may only be app|
00006300  6c 69 65 64 20 74 6f 20  66 6f 72 6d 75 6c 61 65  |lied to formulae|
00006310  20 77 68 69 63 68 20 61  63 74 75 61 6c 6c 79 0a  | which actually.|
00006320  20 20 20 20 20 20 20 69  6e 76 6f 6c 76 65 20 74  |       involve t|
00006330  68 65 20 71 75 61 6e 74  69 66 69 65 64 20 76 61  |he quantified va|
00006340  72 69 61 62 6c 65 2e 2e  2e 20 20 49 20 63 61 6e  |riable...  I can|
00006350  20 77 65 6c 6c 20 69 6d  61 67 69 6e 65 20 74 68  | well imagine th|
00006360  61 74 0a 20 20 20 20 20  20 20 70 72 6f 66 65 73  |at.       profes|
00006370  73 69 6f 6e 61 6c 20 6c  6f 67 69 63 69 61 6e 73  |sional logicians|
00006380  20 77 69 6c 6c 20 66 69  6e 64 20 74 68 69 73 20  | will find this |
00006390  68 61 72 64 20 74 6f 20  73 77 61 6c 6c 6f 77 2e  |hard to swallow.|
000063a0  2e 2e 20 62 75 74 0a 20  20 20 20 20 20 20 49 20  |.. but.       I |
000063b0  77 6f 75 6c 64 20 61 73  6b 20 74 68 65 6d 20 74  |would ask them t|
000063c0  6f 20 72 65 66 6c 65 63  74 2c 20 62 65 66 6f 72  |o reflect, befor|
000063d0  65 20 74 68 65 79 20 63  6f 6e 64 65 6d 6e 20 6d  |e they condemn m|
000063e0  65 2c 20 6f 6e 0a 20 20  20 20 20 20 20 77 68 65  |e, on.       whe|
000063f0  74 68 65 72 20 61 6e 79  6f 6e 65 20 5f 6f 74 68  |ther anyone _oth|
00006400  65 72 5f 20 74 68 61 6e  20 61 20 6c 6f 67 69 63  |er_ than a logic|
00006410  69 61 6e 20 77 6f 75 6c  64 20 66 69 6e 64 20 74  |ian would find t|
00006420  68 69 73 0a 20 20 20 20  20 20 20 72 65 73 74 72  |his.       restr|
00006430  69 63 74 69 6f 6e 20 61  74 20 61 6c 6c 20 6f 64  |iction at all od|
00006440  64 2e 22 0a 0a 20 20 20  20 20 20 20 20 20 20 20  |d."..           |
00006450  20 20 20 28 50 2e 20 54  2e 20 4a 6f 68 6e 73 74  |   (P. T. Johnst|
00006460  6f 6e 65 2c 20 22 4e 6f  74 65 73 20 6f 6e 20 6c  |one, "Notes on l|
00006470  6f 67 69 63 20 61 6e 64  20 73 65 74 20 74 68 65  |ogic and set the|
00006480  6f 72 79 22 29 0a 0a 20  20 20 20 20 20 20 22 56  |ory")..       "V|
00006490  61 72 69 61 62 6c 65 73  20 64 6f 6e 27 74 3b 20  |ariables don't; |
000064a0  63 6f 6e 73 74 61 6e 74  73 20 61 72 65 6e 27 74  |constants aren't|
000064b0  2e 22 0a 0a 20 20 20 20  20 20 20 20 20 20 20 20  |."..            |
000064c0  20 20 28 6f 6c 64 20 63  6f 6d 70 75 74 69 6e 67  |  (old computing|
000064d0  20 73 61 79 69 6e 67 29  0a 0a 0a 54 68 65 72 65  | saying)...There|
000064e0  20 61 72 65 20 74 77 6f  20 6b 69 6e 64 73 20 6f  | are two kinds o|
000064f0  66 20 76 61 72 69 61 62  6c 65 2c 20 67 6c 6f 62  |f variable, glob|
00006500  61 6c 20 61 6e 64 20 6c  6f 63 61 6c 20 28 70 6c  |al and local (pl|
00006510  75 73 20 6f 6e 65 20 73  70 65 63 69 61 6c 20 6f  |us one special o|
00006520  6e 65 29 2e 0a 0a 56 61  72 69 61 62 6c 65 73 20  |ne)...Variables |
00006530  61 72 65 20 61 6c 6c 20  74 77 6f 2d 62 79 74 65  |are all two-byte|
00006540  20 69 6e 74 65 67 65 72  73 2c 20 77 68 69 63 68  | integers, which|
00006550  20 61 72 65 20 74 72 65  61 74 65 64 20 61 73 20  | are treated as |
00006560  73 69 67 6e 65 64 20 77  68 65 6e 20 69 74 0a 6d  |signed when it.m|
00006570  61 6b 65 73 20 73 65 6e  73 65 20 74 6f 20 64 6f  |akes sense to do|
00006580  20 73 6f 20 28 65 67 2e  20 69 6e 20 61 73 6b 69  | so (eg. in aski|
00006590  6e 67 20 77 68 65 74 68  65 72 20 6f 6e 65 20 69  |ng whether one i|
000065a0  73 20 70 6f 73 69 74 69  76 65 20 6f 72 20 6e 6f  |s positive or no|
000065b0  74 29 20 62 75 74 0a 6e  6f 74 20 77 68 65 6e 20  |t) but.not when |
000065c0  69 74 20 69 73 6e 27 74  20 28 65 67 2e 20 77 68  |it isn't (eg. wh|
000065d0  65 6e 20 69 74 20 69 73  20 75 73 65 64 20 61 73  |en it is used as|
000065e0  20 61 6e 20 61 64 64 72  65 73 73 29 2e 0a 0a 54  | an address)...T|
000065f0  68 65 72 65 20 63 61 6e  20 62 65 20 75 70 20 74  |here can be up t|
00006600  6f 20 32 34 30 20 67 6c  6f 62 61 6c 20 76 61 72  |o 240 global var|
00006610  69 61 62 6c 65 73 3b 20  61 73 20 69 6e 64 69 63  |iables; as indic|
00006620  61 74 65 64 20 69 6e 20  28 33 29 2c 20 74 68 65  |ated in (3), the|
00006630  73 65 20 63 61 6e 20 62  65 0a 69 6e 69 74 69 61  |se can be.initia|
00006640  6c 69 73 65 64 20 74 6f  20 70 6f 69 6e 74 20 74  |lised to point t|
00006650  6f 20 64 79 6e 61 6d 69  63 20 77 6f 72 6b 73 70  |o dynamic worksp|
00006660  61 63 65 2c 20 73 6f 20  61 73 20 74 6f 20 61 63  |ace, so as to ac|
00006670  68 69 65 76 65 20 74 68  65 20 65 66 66 65 63 74  |hieve the effect|
00006680  20 6f 66 0a 73 74 72 69  6e 67 73 20 61 6e 64 20  | of.strings and |
00006690  61 72 72 61 79 73 2e 20  20 54 68 65 79 20 68 61  |arrays.  They ha|
000066a0  76 65 20 74 6f 20 62 65  20 64 65 63 6c 61 72 65  |ve to be declare|
000066b0  64 20 62 65 66 6f 72 65  20 75 73 65 2e 20 20 46  |d before use.  F|
000066c0  6f 72 20 69 6e 73 74 61  6e 63 65 3a 0a 0a 20 20  |or instance:..  |
000066d0  47 6c 6f 62 61 6c 20 74  75 72 6e 73 20 3d 20 31  |Global turns = 1|
000066e0  3b 0a 20 20 47 6c 6f 62  61 6c 20 62 75 66 66 65  |;.  Global buffe|
000066f0  72 20 73 74 72 69 6e 67  20 31 32 30 3b 20 20 20  |r string 120;   |
00006700  21 20 42 75 66 66 65 72  20 68 6f 6c 64 69 6e 67  |! Buffer holding|
00006710  20 31 32 30 20 63 68 61  72 61 63 74 65 72 73 0a  | 120 characters.|
00006720  20 20 47 6c 6f 62 61 6c  20 74 61 73 6b 5f 73 63  |  Global task_sc|
00006730  6f 72 65 73 20 69 6e 69  74 69 61 6c 20 34 20 35  |ores initial 4 5|
00006740  20 39 20 31 20 32 20 33  20 30 3b 0a 0a 49 6e 20  | 9 1 2 3 0;..In |
00006750  61 6e 20 61 72 72 61 79  2c 20 74 68 65 20 6e 2d  |an array, the n-|
00006760  74 68 20 62 79 74 65 20  69 73 20 63 61 6c 6c 65  |th byte is calle|
00006770  64 0a 0a 20 20 61 72 72  61 79 2d 3e 6e 0a 0a 61  |d..  array->n..a|
00006780  6e 64 20 74 68 65 20 6e  2d 74 68 20 77 6f 72 64  |nd the n-th word|
00006790  20 28 74 68 65 20 6e 2d  74 68 20 64 6f 75 62 6c  | (the n-th doubl|
000067a0  65 2d 62 79 74 65 20 76  61 6c 75 65 2c 20 69 2e  |e-byte value, i.|
000067b0  65 2e 0a 32 35 36 2a 61  72 72 61 79 2d 3e 28 32  |e..256*array->(2|
000067c0  2a 6e 29 2b 20 61 72 72  61 79 2d 3e 28 32 2a 6e  |*n)+ array->(2*n|
000067d0  2b 31 29 29 20 69 73 20  63 61 6c 6c 65 64 0a 0a  |+1)) is called..|
000067e0  20 20 61 72 72 61 79 2d  2d 3e 6e 0a 0a 49 6e 20  |  array-->n..In |
000067f0  61 20 73 74 72 69 6e 67  20 61 72 72 61 79 2c 20  |a string array, |
00006800  74 68 65 20 62 79 74 65  73 20 63 6f 72 72 65 73  |the bytes corres|
00006810  70 6f 6e 64 20 74 6f 20  41 53 43 49 49 20 63 68  |pond to ASCII ch|
00006820  61 72 61 63 74 65 72 73  2e 20 20 54 68 65 79 20  |aracters.  They |
00006830  61 72 65 20 6e 6f 74 0a  65 6e 63 72 79 70 74 65  |are not.encrypte|
00006840  64 20 69 6e 20 74 68 65  20 77 61 79 20 74 68 61  |d in the way tha|
00006850  74 20 73 74 61 6e 64 61  72 64 20 67 61 6d 65 20  |t standard game |
00006860  74 65 78 74 20 69 73 2e  0a 0a 0a 49 6e 20 61 6e  |text is....In an|
00006870  79 20 72 6f 75 74 69 6e  65 2c 20 74 68 65 72 65  |y routine, there|
00006880  20 63 61 6e 20 62 65 20  75 70 20 74 6f 20 31 35  | can be up to 15|
00006890  20 6c 6f 63 61 6c 20 76  61 72 69 61 62 6c 65 73  | local variables|
000068a0  2e 20 20 54 68 65 73 65  20 61 72 65 20 64 65 63  |.  These are dec|
000068b0  6c 61 72 65 64 0a 77 68  65 6e 20 74 68 65 20 72  |lared.when the r|
000068c0  6f 75 74 69 6e 65 20 62  65 67 69 6e 73 2e 20 20  |outine begins.  |
000068d0  28 54 68 65 72 65 20 69  73 20 6f 6e 65 20 65 78  |(There is one ex|
000068e0  63 65 70 74 69 6f 6e 3a  20 74 68 65 20 73 70 65  |ception: the spe|
000068f0  63 69 61 6c 20 4d 61 69  6e 20 72 6f 75 74 69 6e  |cial Main routin|
00006900  65 0a 6d 61 79 20 6e 6f  74 20 68 61 76 65 20 6c  |e.may not have l|
00006910  6f 63 61 6c 20 76 61 72  69 61 62 6c 65 73 2e 29  |ocal variables.)|
00006920  0a 0a 0a 57 41 52 4e 49  4e 47 3a 20 54 68 65 72  |...WARNING: Ther|
00006930  65 20 69 73 20 61 6c 73  6f 20 61 20 73 74 61 63  |e is also a stac|
00006940  6b 2c 20 62 75 74 20 69  74 20 73 68 6f 75 6c 64  |k, but it should|
00006950  20 62 65 20 74 61 6d 70  65 72 65 64 20 77 69 74  | be tampered wit|
00006960  68 20 6f 6e 6c 79 20 77  69 74 68 0a 20 20 20 2a  |h only with.   *|
00006970  20 20 20 20 20 63 61 72  65 2e 20 20 4e 65 76 65  |     care.  Neve|
00006980  72 20 63 61 6c 6c 20 61  20 76 61 72 69 61 62 6c  |r call a variabl|
00006990  65 20 22 73 70 22 2c 20  61 73 20 74 68 69 73 20  |e "sp", as this |
000069a0  69 73 20 74 68 65 20 73  74 61 63 6b 20 70 6f 69  |is the stack poi|
000069b0  6e 74 65 72 2c 0a 20 20  2f 21 5c 20 20 20 20 61  |nter,.  /!\    a|
000069c0  6e 64 20 62 65 20 63 61  72 65 66 75 6c 20 6e 6f  |nd be careful no|
000069d0  74 20 74 6f 20 6c 65 61  76 65 20 76 61 6c 75 65  |t to leave value|
000069e0  73 20 6f 6e 20 74 68 65  20 73 74 61 63 6b 3a 20  |s on the stack: |
000069f0  6f 72 20 74 68 65 20 67  61 6d 65 20 6d 61 79 0a  |or the game may.|
00006a00  20 2a 2d 2d 2d 2a 20 20  20 63 72 61 73 68 20 31  | *---*   crash 1|
00006a10  30 30 30 20 74 75 72 6e  73 20 6c 61 74 65 72 2c  |000 turns later,|
00006a20  20 68 69 67 68 6c 79 20  6d 79 73 74 65 72 69 6f  | highly mysterio|
00006a30  75 73 6c 79 2e 0a 0a 0a  5b 49 6e 66 6f 72 6d 20  |usly....[Inform |
00006a40  69 6e 20 66 61 63 74 20  72 65 73 65 72 76 65 73  |in fact reserves|
00006a50  20 74 68 65 20 74 6f 70  20 74 68 72 65 65 20 67  | the top three g|
00006a60  6c 6f 62 61 6c 20 76 61  72 69 61 62 6c 65 73 20  |lobal variables |
00006a70  74 6f 20 69 74 73 65 6c  66 2c 20 66 6f 72 0a 74  |to itself, for.t|
00006a80  65 6d 70 6f 72 61 72 79  20 63 61 6c 63 75 6c 61  |emporary calcula|
00006a90  74 69 6f 6e 73 2e 20 20  54 68 65 20 6f 62 73 65  |tions.  The obse|
00006aa0  72 76 61 6e 74 20 72 65  61 64 65 72 20 77 69 6c  |rvant reader wil|
00006ab0  6c 20 68 61 76 65 20 6e  6f 74 69 63 65 64 20 74  |l have noticed t|
00006ac0  68 61 74 0a 32 34 30 2b  31 35 2b 31 20 3d 20 32  |hat.240+15+1 = 2|
00006ad0  35 36 2e 20 20 54 68 69  73 20 69 73 20 6f 66 20  |56.  This is of |
00006ae0  63 6f 75 72 73 65 20 6e  6f 20 63 6f 69 6e 63 69  |course no coinci|
00006af0  64 65 6e 63 65 2e 5d 0a  0a 0a 2d 2d 2d 2d 2d 2d  |dence.]...------|
00006b00  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00006b40  2d 2d 2d 2d 2d 0a 35 2e  20 43 6f 6e 73 74 61 6e  |-----.5. Constan|
00006b50  74 73 0a 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ts.-------------|
00006b60  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00006b90  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0a 0a  |--------------..|
00006ba0  0a 20 20 20 20 20 20 20  20 22 49 20 63 61 6e 6e  |.        "I cann|
00006bb0  6f 74 20 63 61 6c 6c 20  74 68 69 73 20 63 6f 6e  |ot call this con|
00006bc0  73 74 61 6e 74 20 22 43  61 72 61 74 68 65 6f 64  |stant "Caratheod|
00006bd0  6f 72 79 22 20 62 65 63  61 75 73 65 20 69 74 20  |ory" because it |
00006be0  61 6c 72 65 61 64 79 0a  20 20 20 20 20 20 20 20  |already.        |
00006bf0  68 61 73 20 61 6e 6f 74  68 65 72 20 6e 61 6d 65  |has another name|
00006c00  2c 20 6e 61 6d 65 6c 79  20 31 2f 31 36 2e 22 0a  |, namely 1/16.".|
00006c10  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00006c20  28 45 2e 20 4c 61 6e 64  61 75 3a 20 43 61 72 61  |(E. Landau: Cara|
00006c30  74 68 65 6f 64 6f 72 79  27 73 20 63 6f 6e 73 74  |theodory's const|
00006c40  61 6e 74 20 68 61 64 20  6f 6e 6c 79 20 72 65 63  |ant had only rec|
00006c50  65 6e 74 6c 79 0a 20 20  20 20 20 20 20 20 20 20  |ently.          |
00006c60  20 20 20 20 20 20 62 65  65 6e 20 65 76 61 6c 75  |      been evalu|
00006c70  61 74 65 64 29 0a 0a 0a  43 6f 6e 73 74 61 6e 74  |ated)...Constant|
00006c80  73 20 6d 61 79 20 62 65  20 70 72 65 66 69 78 65  |s may be prefixe|
00006c90  64 20 77 69 74 68 20 61  20 23 20 63 68 61 72 61  |d with a # chara|
00006ca0  63 74 65 72 20 69 66 20  64 65 73 69 72 65 64 2e  |cter if desired.|
00006cb0  20 20 54 68 69 73 20 63  61 6e 20 62 65 20 75 73  |  This can be us|
00006cc0  65 66 75 6c 0a 69 66 20  74 68 65 79 20 61 72 65  |eful.if they are|
00006cd0  20 61 6c 70 68 61 62 65  74 69 63 61 6c 20 61 6e  | alphabetical an|
00006ce0  64 20 6d 69 67 68 74 20  6f 74 68 65 72 77 69 73  |d might otherwis|
00006cf0  65 20 62 65 20 63 6f 6e  66 75 73 65 64 20 77 69  |e be confused wi|
00006d00  74 68 20 73 6f 6d 65 74  68 69 6e 67 20 65 6c 73  |th something els|
00006d10  65 2e 0a 0a 41 20 63 6f  6e 73 74 61 6e 74 20 69  |e...A constant i|
00006d20  6e 20 22 64 6f 75 62 6c  65 20 71 75 6f 74 65 73  |n "double quotes|
00006d30  22 20 61 73 73 65 6d 62  6c 65 73 20 74 68 65 20  |" assembles the |
00006d40  67 69 76 65 6e 20 74 65  78 74 20 61 74 20 61 20  |given text at a |
00006d50  73 75 69 74 61 62 6c 65  20 28 65 76 65 6e 29 0a  |suitable (even).|
00006d60  20 20 61 64 64 72 65 73  73 2c 20 61 6e 64 20 67  |  address, and g|
00006d70  69 76 65 73 20 68 61 6c  66 20 74 68 69 73 20 61  |ives half this a|
00006d80  64 64 72 65 73 73 20 61  73 20 74 68 65 20 69 6e  |ddress as the in|
00006d90  74 65 67 65 72 20 76 61  6c 75 65 2e 20 20 49 6e  |teger value.  In|
00006da0  73 69 64 65 20 74 68 69  73 0a 20 20 74 65 78 74  |side this.  text|
00006db0  20 74 68 65 20 63 68 61  72 61 63 74 65 72 20 5e  | the character ^|
00006dc0  20 69 73 20 72 65 70 6c  61 63 65 64 20 62 79 20  | is replaced by |
00006dd0  61 20 6e 65 77 6c 69 6e  65 20 63 68 61 72 61 63  |a newline charac|
00006de0  74 65 72 2c 20 61 6e 64  20 74 68 65 20 63 68 61  |ter, and the cha|
00006df0  72 61 63 74 65 72 0a 20  20 7e 20 62 79 20 61 20  |racter.  ~ by a |
00006e00  64 6f 75 62 6c 65 2d 71  75 6f 74 65 20 6d 61 72  |double-quote mar|
00006e10  6b 2e 20 20 49 6e 20 70  72 61 63 74 69 63 65 20  |k.  In practice |
00006e20  79 6f 75 20 73 65 6c 64  6f 6d 20 6e 65 65 64 20  |you seldom need |
00006e30  74 6f 20 77 6f 72 72 79  20 77 68 65 72 65 20 74  |to worry where t|
00006e40  68 65 0a 20 20 74 65 78  74 20 69 73 20 73 74 6f  |he.  text is sto|
00006e50  72 65 64 2c 20 6f 72 20  68 6f 77 2e 0a 0a 20 20  |red, or how...  |
00006e60  49 6e 73 69 64 65 20 61  20 73 74 72 69 6e 67 2c  |Inside a string,|
00006e70  20 40 64 64 20 28 61 6e  20 40 20 73 69 67 6e 20  | @dd (an @ sign |
00006e80  66 6f 6c 6c 6f 77 65 64  20 62 79 20 74 77 6f 20  |followed by two |
00006e90  64 65 63 69 6d 61 6c 20  64 69 67 69 74 73 29 20  |decimal digits) |
00006ea0  69 73 0a 20 20 63 6f 6d  70 69 6c 65 64 20 74 6f  |is.  compiled to|
00006eb0  20 74 68 65 20 73 79 6e  6f 6e 79 6d 20 6f 66 20  | the synonym of |
00006ec0  74 68 61 74 20 6e 75 6d  62 65 72 2e 20 20 57 68  |that number.  Wh|
00006ed0  65 6e 20 74 68 65 20 5a  2d 6d 61 63 68 69 6e 65  |en the Z-machine|
00006ee0  20 66 69 6e 64 73 20 74  68 69 73 2c 20 69 74 0a  | finds this, it.|
00006ef0  20 20 70 72 69 6e 74 73  20 74 68 65 20 73 74 72  |  prints the str|
00006f00  69 6e 67 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |ing pointed to b|
00006f10  79 20 74 68 61 74 20 65  6e 74 72 79 20 69 6e 20  |y that entry in |
00006f20  74 68 65 20 73 79 6e 6f  6e 79 6d 20 74 61 62 6c  |the synonym tabl|
00006f30  65 2e 20 20 28 54 68 69  73 20 69 73 0a 20 20 75  |e.  (This is.  u|
00006f40  73 65 66 75 6c 20 69 6e  20 61 6c 74 65 72 69 6e  |seful in alterin|
00006f50  67 20 6f 62 6a 65 63 74  20 73 68 6f 72 74 20 6e  |g object short n|
00006f60  61 6d 65 73 20 2d 20 73  65 65 20 73 65 63 74 69  |ames - see secti|
00006f70  6f 6e 20 28 31 38 29 2e  29 0a 0a 41 20 63 68 61  |on (18).)..A cha|
00006f80  72 61 63 74 65 72 20 69  6e 20 73 69 6e 67 6c 65  |racter in single|
00006f90  20 71 75 6f 74 65 73 2c  20 73 75 63 68 20 61 73  | quotes, such as|
00006fa0  20 27 65 27 2c 20 6d 65  61 6e 73 20 74 68 65 20  | 'e', means the |
00006fb0  41 53 43 49 49 20 76 61  6c 75 65 20 6f 66 20 74  |ASCII value of t|
00006fc0  68 61 74 0a 20 20 63 68  61 72 61 63 74 65 72 2e  |hat.  character.|
00006fd0  20 20 28 54 68 69 73 20  69 73 20 74 72 75 65 20  |  (This is true |
00006fe0  65 76 65 6e 20 6f 6e 20  6d 61 63 68 69 6e 65 73  |even on machines|
00006ff0  20 6e 6f 74 20 75 73 69  6e 67 20 41 53 43 49 49  | not using ASCII|
00007000  2c 20 6f 66 20 63 6f 75  72 73 65 2e 29 0a 0a 41  |, of course.)..A|
00007010  20 77 6f 72 64 20 28 6f  66 20 6c 6f 6e 67 65 72  | word (of longer|
00007020  20 74 68 61 6e 20 6f 6e  65 20 63 68 61 72 61 63  | than one charac|
00007030  74 65 72 29 20 69 6e 20  73 69 6e 67 6c 65 20 71  |ter) in single q|
00007040  75 6f 74 65 73 2c 20 73  75 63 68 20 61 73 20 27  |uotes, such as '|
00007050  68 65 72 72 69 6e 67 27  2c 0a 20 20 6d 65 61 6e  |herring',.  mean|
00007060  73 20 74 68 65 20 61 64  64 72 65 73 73 20 6f 66  |s the address of|
00007070  20 74 68 61 74 20 77 6f  72 64 20 69 6e 20 74 68  | that word in th|
00007080  65 20 44 69 63 74 69 6f  6e 61 72 79 20 28 69 74  |e Dictionary (it|
00007090  20 69 73 20 63 72 65 61  74 65 64 20 69 66 20 6e  | is created if n|
000070a0  6f 74 0a 20 20 61 6c 72  65 61 64 79 20 70 72 65  |ot.  already pre|
000070b0  73 65 6e 74 29 2e 0a 0a  41 20 64 6f 6c 6c 61 72  |sent)...A dollar|
000070c0  20 24 20 69 6e 64 69 63  61 74 65 73 20 74 68 61  | $ indicates tha|
000070d0  74 20 61 20 68 65 78 61  64 65 63 69 6d 61 6c 20  |t a hexadecimal |
000070e0  63 6f 6e 73 74 61 6e 74  20 66 6f 6c 6c 6f 77 73  |constant follows|
000070f0  3b 20 24 24 20 69 6e 64  69 63 61 74 65 73 20 74  |; $$ indicates t|
00007100  68 61 74 0a 20 20 62 69  6e 61 72 79 20 66 6f 6c  |hat.  binary fol|
00007110  6c 6f 77 73 2e 20 20 41  20 6d 69 6e 75 73 20 73  |lows.  A minus s|
00007120  69 67 6e 20 69 6e 64 69  63 61 74 65 73 20 61 20  |ign indicates a |
00007130  6e 65 67 61 74 69 76 65  20 6e 75 6d 62 65 72 2e  |negative number.|
00007140  20 20 28 49 6e 74 65 72  6e 61 6c 6c 79 0a 20 20  |  (Internally.  |
00007150  74 68 65 73 65 20 61 72  65 20 73 74 6f 72 65 64  |these are stored|
00007160  20 69 6e 20 74 68 65 20  75 73 75 61 6c 20 74 77  | in the usual tw|
00007170  6f 2d 62 79 74 65 20 66  61 73 68 69 6f 6e 2c 20  |o-byte fashion, |
00007180  65 2e 67 2e 20 2d 31 20  3d 20 24 66 66 66 66 2c  |e.g. -1 = $ffff,|
00007190  20 2d 32 20 3d 0a 20 20  24 66 66 66 65 20 61 6e  | -2 =.  $fffe an|
000071a0  64 20 73 6f 20 6f 6e 2e  29 0a 0a 41 20 64 6f 75  |d so on.)..A dou|
000071b0  62 6c 65 20 23 20 69 6e  64 69 63 61 74 65 73 20  |ble # indicates |
000071c0  61 6e 20 61 63 74 69 6f  6e 20 28 61 63 74 69 6f  |an action (actio|
000071d0  6e 20 6e 75 6d 62 65 72  73 20 61 72 65 20 73 6f  |n numbers are so|
000071e0  6d 65 74 69 6d 65 73 20  65 78 70 6c 69 63 69 74  |metimes explicit|
000071f0  6c 79 0a 20 20 6e 65 65  64 65 64 20 61 73 20 6e  |ly.  needed as n|
00007200  75 6d 62 65 72 73 29 2e  20 20 53 6f 2c 20 66 6f  |umbers).  So, fo|
00007210  72 20 69 6e 73 74 61 6e  63 65 2c 20 23 23 54 61  |r instance, ##Ta|
00007220  6b 65 2e 20 20 28 46 61  6b 65 20 61 63 74 69 6f  |ke.  (Fake actio|
00007230  6e 73 20 61 6c 73 6f 20  68 61 76 65 0a 20 20 6e  |ns also have.  n|
00007240  75 6d 62 65 72 73 20 61  6e 64 20 63 61 6e 20 62  |umbers and can b|
00007250  65 20 72 65 66 65 72 72  65 64 20 74 6f 20 74 68  |e referred to th|
00007260  75 73 2e 29 0a 0a 0a 41  6e 79 20 63 6f 6e 73 74  |us.)...Any const|
00007270  61 6e 74 20 64 65 63 6c  61 72 65 64 20 69 6e 20  |ant declared in |
00007280  61 20 64 69 72 65 63 74  69 76 65 20 63 61 6e 20  |a directive can |
00007290  62 65 20 71 75 6f 74 65  64 2c 20 61 6e 64 20 73  |be quoted, and s|
000072a0  6f 20 63 61 6e 20 74 68  65 20 76 61 72 69 6f 75  |o can the variou|
000072b0  73 0a 73 70 65 63 69 61  6c 20 63 6f 6e 73 74 61  |s.special consta|
000072c0  6e 74 73 20 28 73 65 74  20 75 70 20 62 79 20 49  |nts (set up by I|
000072d0  6e 66 6f 72 6d 29 20 77  68 69 63 68 20 61 72 65  |nform) which are|
000072e0  20 6f 66 20 70 75 72 65  6c 79 20 74 65 63 68 6e  | of purely techn|
000072f0  69 63 61 6c 20 75 74 69  6c 69 74 79 3a 0a 0a 20  |ical utility:.. |
00007300  20 61 64 6a 65 63 74 69  76 65 73 5f 74 61 62 6c  | adjectives_tabl|
00007310  65 20 20 20 28 62 79 74  65 20 61 64 64 72 65 73  |e   (byte addres|
00007320  73 29 0a 20 20 70 72 65  61 63 74 69 6f 6e 73 5f  |s).  preactions_|
00007330  74 61 62 6c 65 20 20 20  28 62 79 74 65 20 61 64  |table   (byte ad|
00007340  64 72 65 73 73 29 0a 20  20 61 63 74 69 6f 6e 73  |dress).  actions|
00007350  5f 74 61 62 6c 65 20 20  20 20 20 20 28 62 79 74  |_table      (byt|
00007360  65 20 61 64 64 72 65 73  73 29 0a 20 20 63 6f 64  |e address).  cod|
00007370  65 5f 6f 66 66 73 65 74  20 20 20 20 20 20 20 20  |e_offset        |
00007380  28 70 61 63 6b 65 64 20  61 64 64 72 65 73 73 20  |(packed address |
00007390  6f 66 20 63 6f 64 65 29  0a 20 20 73 74 72 69 6e  |of code).  strin|
000073a0  67 73 5f 6f 66 66 73 65  74 20 20 20 20 20 28 70  |gs_offset     (p|
000073b0  61 63 6b 65 64 20 61 64  64 72 65 73 73 20 6f 66  |acked address of|
000073c0  20 73 74 72 69 6e 67 73  29 0a 20 20 76 65 72 73  | strings).  vers|
000073d0  69 6f 6e 5f 6e 75 6d 62  65 72 20 20 20 20 20 28  |ion_number     (|
000073e0  33 20 6f 72 20 35 20 61  73 20 61 70 70 72 6f 70  |3 or 5 as approp|
000073f0  72 69 61 74 65 29 0a 20  20 6c 61 72 67 65 73 74  |riate).  largest|
00007400  5f 6f 62 6a 65 63 74 20  20 20 20 20 28 74 68 65  |_object     (the|
00007410  20 6e 75 6d 62 65 72 20  6f 66 20 74 68 65 20 6c  | number of the l|
00007420  61 72 67 65 73 74 20 63  72 65 61 74 65 64 20 6f  |argest created o|
00007430  62 6a 65 63 74 20 2b 20  32 35 36 29 0a 20 20 64  |bject + 256).  d|
00007440  69 63 74 5f 70 61 72 31  20 20 20 20 20 20 20 20  |ict_par1        |
00007450  20 20 28 73 65 65 20 74  68 65 20 64 65 73 63 72  |  (see the descr|
00007460  69 70 74 69 6f 6e 20 6f  66 20 74 68 65 20 44 69  |iption of the Di|
00007470  63 74 69 6f 6e 61 72 79  29 0a 20 20 64 69 63 74  |ctionary).  dict|
00007480  5f 70 61 72 32 0a 20 20  64 69 63 74 5f 70 61 72  |_par2.  dict_par|
00007490  33 20 20 20 20 20 20 0a  0a 4f 6c 64 20 49 6e 66  |3      ..Old Inf|
000074a0  6f 72 6d 20 73 79 6e 74  61 78 20 77 68 69 63 68  |orm syntax which|
000074b0  20 69 73 20 73 74 69 6c  6c 20 61 6c 6c 6f 77 65  | is still allowe|
000074c0  64 3a 0a 0a 20 20 41 20  63 6f 6e 73 74 61 6e 74  |d:..  A constant|
000074d0  20 62 65 67 69 6e 6e 69  6e 67 20 61 24 2c 20 66  | beginning a$, f|
000074e0  6f 6c 6c 6f 77 65 64 20  62 79 20 74 68 65 20 6e  |ollowed by the n|
000074f0  61 6d 65 20 6f 66 20 61  20 72 6f 75 74 69 6e 65  |ame of a routine|
00007500  20 77 68 69 63 68 20 69  73 20 61 6e 0a 20 20 61  | which is an.  a|
00007510  63 74 69 6f 6e 20 72 6f  75 74 69 6e 65 2c 20 77  |ction routine, w|
00007520  69 6c 6c 20 68 61 76 65  20 61 73 20 76 61 6c 75  |ill have as valu|
00007530  65 20 74 68 65 20 6e 75  6d 62 65 72 20 6f 66 20  |e the number of |
00007540  74 68 65 20 61 63 74 69  6f 6e 2e 0a 20 20 28 46  |the action..  (F|
00007550  6f 72 20 69 6e 73 74 61  6e 63 65 2c 20 23 61 24  |or instance, #a$|
00007560  54 61 6b 65 53 75 62 2e  29 0a 0a 20 20 41 20 63  |TakeSub.)..  A c|
00007570  6f 6e 73 74 61 6e 74 20  62 65 67 69 6e 6e 69 6e  |onstant beginnin|
00007580  67 20 77 24 2c 20 66 6f  6c 6c 6f 77 65 64 20 62  |g w$, followed b|
00007590  79 20 61 20 77 6f 72 64  20 6f 66 20 74 65 78 74  |y a word of text|
000075a0  2c 20 68 61 73 20 61 73  20 76 61 6c 75 65 20 74  |, has as value t|
000075b0  68 65 0a 20 20 61 64 64  72 65 73 73 20 6f 66 20  |he.  address of |
000075c0  74 68 65 20 67 69 76 65  6e 20 77 6f 72 64 20 69  |the given word i|
000075d0  6e 20 74 68 65 20 64 69  63 74 69 6f 6e 61 72 79  |n the dictionary|
000075e0  20 28 49 6e 66 6f 72 6d  20 77 69 6c 6c 20 67 69  | (Inform will gi|
000075f0  76 65 20 61 6e 20 65 72  72 6f 72 20 61 74 0a 20  |ve an error at. |
00007600  20 63 6f 6d 70 69 6c 65  20 74 69 6d 65 20 69 66  | compile time if|
00007610  20 6e 6f 20 73 75 63 68  20 77 6f 72 64 20 69 73  | no such word is|
00007620  20 74 68 65 72 65 29 2e  0a 0a 20 20 41 20 63 6f  | there)...  A co|
00007630  6e 73 74 61 6e 74 20 62  65 67 69 6e 6e 69 6e 67  |nstant beginning|
00007640  20 6e 24 2c 20 66 6f 6c  6c 6f 77 65 64 20 62 79  | n$, followed by|
00007650  20 61 20 77 6f 72 64 20  6f 66 20 74 65 78 74 2c  | a word of text,|
00007660  20 68 61 73 20 61 73 20  76 61 6c 75 65 20 74 68  | has as value th|
00007670  65 0a 20 20 61 64 64 72  65 73 73 20 6f 66 20 74  |e.  address of t|
00007680  68 65 20 67 69 76 65 6e  20 77 6f 72 64 20 69 6e  |he given word in|
00007690  20 74 68 65 20 64 69 63  74 69 6f 6e 61 72 79 20  | the dictionary |
000076a0  28 49 6e 66 6f 72 6d 20  61 64 64 73 20 69 74 20  |(Inform adds it |
000076b0  74 6f 20 74 68 65 0a 20  20 64 69 63 74 69 6f 6e  |to the.  diction|
000076c0  61 72 79 20 61 73 20 61  20 6e 65 77 20 77 6f 72  |ary as a new wor|
000076d0  64 20 69 66 20 69 74 20  69 73 20 6e 6f 74 20 61  |d if it is not a|
000076e0  6c 72 65 61 64 79 20 74  68 65 72 65 29 2e 0a 0a  |lready there)...|
000076f0  20 20 41 20 63 6f 6e 73  74 61 6e 74 20 62 65 67  |  A constant beg|
00007700  69 6e 6e 69 6e 67 20 72  24 2c 20 66 6f 6c 6c 6f  |inning r$, follo|
00007710  77 65 64 20 62 79 20 61  20 72 6f 75 74 69 6e 65  |wed by a routine|
00007720  20 6e 61 6d 65 2c 20 67  69 76 65 73 20 74 68 65  | name, gives the|
00007730  20 28 70 61 63 6b 65 64  29 0a 20 20 61 64 64 72  | (packed).  addr|
00007740  65 73 73 20 6f 66 20 74  68 65 20 67 69 76 65 6e  |ess of the given|
00007750  20 72 6f 75 74 69 6e 65  2e 20 20 28 54 68 69 73  | routine.  (This|
00007760  20 69 73 20 6e 65 65 64  65 64 20 66 6f 72 20 63  | is needed for c|
00007770  68 61 6e 67 69 6e 67 0a  20 20 70 72 6f 70 65 72  |hanging.  proper|
00007780  74 79 20 76 61 6c 75 65  73 20 77 68 69 63 68 20  |ty values which |
00007790  61 72 65 20 72 6f 75 74  69 6e 65 20 61 64 64 72  |are routine addr|
000077a0  65 73 73 65 73 2e 29 0a  0a 54 68 75 73 2c 20 66  |esses.)..Thus, f|
000077b0  6f 72 20 69 6e 73 74 61  6e 63 65 2c 20 74 68 65  |or instance, the|
000077c0  20 66 6f 6c 6c 6f 77 69  6e 67 20 61 72 65 20 6c  | following are l|
000077d0  65 67 61 6c 20 63 6f 6e  73 74 61 6e 74 73 3a 0a  |egal constants:.|
000077e0  0a 20 20 33 31 34 31 35  0a 20 20 2d 31 0a 20 20  |.  31415.  -1.  |
000077f0  24 66 66 0a 20 20 24 24  31 30 30 31 30 30 31 0a  |$ff.  $$1001001.|
00007800  20 20 23 61 64 6a 65 63  74 69 76 65 73 5f 74 61  |  #adjectives_ta|
00007810  62 6c 65 0a 20 20 27 6c  61 6e 74 65 72 6e 27 0a  |ble.  'lantern'.|
00007820  20 20 23 23 4c 6f 6f 6b  0a 20 20 27 58 27 0a 20  |  ##Look.  'X'. |
00007830  20 22 61 6e 20 65 6d 65  72 61 6c 64 20 74 68 65  | "an emerald the|
00007840  20 73 69 7a 65 20 6f 66  20 61 20 70 6c 6f 76 65  | size of a plove|
00007850  72 27 73 20 65 67 67 22  0a 20 20 22 7e 48 65 6c  |r's egg".  "~Hel|
00007860  6c 6f 2c 7e 20 73 61 69  64 20 50 65 74 65 72 2e  |lo,~ said Peter.|
00007870  5e 7e 48 65 6c 6c 6f 2c  20 50 65 74 65 72 2c 7e  |^~Hello, Peter,~|
00007880  20 73 61 69 64 20 4a 61  6e 65 2e 5e 22 0a 20 20  | said Jane.^".  |
00007890  23 72 24 46 69 72 65 52  6f 64 52 6f 75 74 69 6e  |#r$FireRodRoutin|
000078a0  65 0a 20 20 0a 0a 0a 2d  2d 2d 2d 2d 2d 2d 2d 2d  |e.  ...---------|
000078b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000078f0  2d 2d 0a 36 2e 20 52 6f  75 74 69 6e 65 73 0a 2d  |--.6. Routines.-|
00007900  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00007940  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0a 0a 0a 20 20 20  |----------...   |
00007950  20 20 20 20 22 48 61 62  69 74 21 20 20 54 68 61  |    "Habit!  Tha|
00007960  74 20 73 6b 69 6c 6c 66  75 6c 20 62 75 74 20 73  |t skillful but s|
00007970  6c 6f 77 2d 6d 6f 76 69  6e 67 20 61 72 72 61 6e  |low-moving arran|
00007980  67 65 72 20 77 68 6f 20  62 65 67 69 6e 73 0a 20  |ger who begins. |
00007990  20 20 20 20 20 20 62 79  20 6c 65 74 74 69 6e 67  |      by letting|
000079a0  20 6f 75 72 20 6d 69 6e  64 73 20 73 75 66 66 65  | our minds suffe|
000079b0  72 20 66 6f 72 20 77 65  65 6b 73 20 6f 6e 20 65  |r for weeks on e|
000079c0  6e 64 20 69 6e 20 74 65  6d 70 6f 72 61 72 79 0a  |nd in temporary.|
000079d0  20 20 20 20 20 20 20 71  75 61 72 74 65 72 73 2c  |       quarters,|
000079e0  20 62 75 74 2e 2e 2e 20  77 69 74 68 6f 75 74 20  | but... without |
000079f0  69 74 2c 20 72 65 64 75  63 65 64 20 74 6f 20 74  |it, reduced to t|
00007a00  68 65 69 72 20 6f 77 6e  20 64 65 76 69 63 65 73  |heir own devices|
00007a10  2c 0a 20 20 20 20 20 20  20 5b 6f 75 72 20 6d 69  |,.       [our mi|
00007a20  6e 64 73 5d 20 77 6f 75  6c 64 20 62 65 20 70 6f  |nds] would be po|
00007a30  77 65 72 6c 65 73 73 20  74 6f 20 6d 61 6b 65 20  |werless to make |
00007a40  61 6e 79 20 72 6f 6f 6d  20 73 65 65 6d 0a 20 20  |any room seem.  |
00007a50  20 20 20 20 20 68 61 62  69 74 61 62 6c 65 2e 22  |     habitable."|
00007a60  0a 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 28  |..             (|
00007a70  50 72 6f 75 73 74 2c 20  4f 76 65 72 74 75 72 65  |Proust, Overture|
00007a80  20 74 6f 20 22 41 20 4c  61 20 52 65 63 68 65 72  | to "A La Recher|
00007a90  63 68 65 20 64 75 20 54  65 6d 70 73 20 50 65 72  |che du Temps Per|
00007aa0  64 75 22 29 0a 0a 0a 54  68 65 72 65 20 61 72 65  |du")...There are|
00007ab0  20 74 77 6f 20 6b 69 6e  64 73 20 6f 66 20 72 6f  | two kinds of ro|
00007ac0  75 74 69 6e 65 3a 20 67  6c 6f 62 61 6c 20 6f 6e  |utine: global on|
00007ad0  65 73 2c 20 61 6e 64 20  6f 6e 65 73 20 65 6d 62  |es, and ones emb|
00007ae0  65 64 64 65 64 20 69 6e  20 74 68 65 0a 64 65 66  |edded in the.def|
00007af0  69 6e 69 74 69 6f 6e 20  6f 66 20 73 6f 6d 65 20  |inition of some |
00007b00  6f 62 6a 65 63 74 2e 20  20 54 68 69 73 20 73 65  |object.  This se|
00007b10  63 74 69 6f 6e 20 69 73  20 61 62 6f 75 74 20 67  |ction is about g|
00007b20  6c 6f 62 61 6c 20 72 6f  75 74 69 6e 65 73 2e 0a  |lobal routines..|
00007b30  0a 54 68 65 20 73 79 6e  74 61 78 20 74 6f 20 62  |.The syntax to b|
00007b40  65 67 69 6e 20 61 20 72  6f 75 74 69 6e 65 20 69  |egin a routine i|
00007b50  73 0a 0a 20 20 5b 20 52  6f 75 74 69 6e 65 4e 61  |s..  [ RoutineNa|
00007b60  6d 65 20 3c 6c 31 3e 20  2e 2e 2e 20 3c 6c 6e 3e  |me <l1> ... <ln>|
00007b70  3b 0a 0a 61 6e 64 20 74  6f 20 65 6e 64 20 69 74  |;..and to end it|
00007b80  2c 20 69 73 0a 0a 20 20  5d 3b 0a 0a 6c 31 20 74  |, is..  ];..l1 t|
00007b90  6f 20 6c 6e 20 61 72 65  20 74 68 65 20 6e 61 6d  |o ln are the nam|
00007ba0  65 73 20 6f 66 20 6c 6f  63 61 6c 20 76 61 72 69  |es of local vari|
00007bb0  61 62 6c 65 73 2c 20 77  68 69 63 68 20 61 72 65  |ables, which are|
00007bc0  20 61 6c 73 6f 20 74 68  65 20 63 61 6c 6c 0a 70  | also the call.p|
00007bd0  61 72 61 6d 65 74 65 72  73 2e 20 20 46 6f 72 20  |arameters.  For |
00007be0  65 78 61 6d 70 6c 65 2c  20 69 66 20 79 6f 75 20  |example, if you |
00007bf0  68 61 76 65 20 61 20 72  6f 75 74 69 6e 65 0a 0a  |have a routine..|
00007c00  20 20 5b 20 4c 6f 6f 6b  20 69 20 6a 20 6b 3b 0a  |  [ Look i j k;.|
00007c10  20 20 20 20 2e 2e 2e 73  6f 6d 65 20 63 6f 64 65  |    ...some code|
00007c20  2e 2e 2e 0a 20 20 5d 3b  0a 0a 61 6e 64 20 69 74  |....  ];..and it|
00007c30  20 69 73 20 63 61 6c 6c  65 64 20 62 79 0a 0a 20  | is called by.. |
00007c40  20 4c 6f 6f 6b 28 61 74  74 69 63 29 3b 0a 0a 74  | Look(attic);..t|
00007c50  68 65 6e 20 69 20 77 69  6c 6c 20 69 6e 69 74 69  |hen i will initi|
00007c60  61 6c 6c 79 20 68 61 76  65 20 74 68 65 20 76 61  |ally have the va|
00007c70  6c 75 65 20 22 61 74 74  69 63 22 20 77 68 65 6e  |lue "attic" when|
00007c80  20 74 68 69 73 20 69 73  20 65 78 65 63 75 74 65  | this is execute|
00007c90  64 2e 0a 41 6e 79 20 6c  6f 63 61 6c 20 76 61 72  |d..Any local var|
00007ca0  69 61 62 6c 65 73 20 6e  6f 74 20 73 70 65 63 69  |iables not speci|
00007cb0  66 69 65 64 20 28 69 6e  20 74 68 69 73 20 63 61  |fied (in this ca|
00007cc0  73 65 2c 20 6a 20 61 6e  64 20 6b 29 20 61 72 65  |se, j and k) are|
00007cd0  20 69 6e 69 74 69 61 6c  6c 79 0a 7a 65 72 6f 2e  | initially.zero.|
00007ce0  20 20 49 74 20 73 68 6f  75 6c 64 20 62 65 20 65  |  It should be e|
00007cf0  6d 70 68 61 73 69 7a 65  64 20 74 68 61 74 20 69  |mphasized that i|
00007d00  74 20 69 73 20 6c 65 67  61 6c 20 74 6f 20 63 61  |t is legal to ca|
00007d10  6c 6c 20 4c 6f 6f 6b 20  77 69 74 68 20 30 2c 20  |ll Look with 0, |
00007d20  31 2c 0a 32 20 6f 72 20  33 20 61 72 67 75 6d 65  |1,.2 or 3 argume|
00007d30  6e 74 73 2e 20 20 28 54  68 72 65 65 20 69 73 20  |nts.  (Three is |
00007d40  74 68 65 20 6d 61 78 69  6d 75 6d 20 6e 75 6d 62  |the maximum numb|
00007d50  65 72 20 6f 66 20 61 72  67 75 6d 65 6e 74 73 20  |er of arguments |
00007d60  61 6e 79 20 72 6f 75 74  69 6e 65 0a 63 61 6e 20  |any routine.can |
00007d70  68 61 76 65 2e 29 0a 0a  45 76 65 72 79 20 72 6f  |have.)..Every ro|
00007d80  75 74 69 6e 65 20 72 65  74 75 72 6e 73 20 61 20  |utine returns a |
00007d90  76 61 6c 75 65 20 74 6f  20 74 68 65 20 63 61 6c  |value to the cal|
00007da0  6c 65 72 3b 20 69 66 20  6e 6f 20 73 75 63 68 20  |ler; if no such |
00007db0  76 61 6c 75 65 20 69 73  0a 65 78 70 6c 69 63 69  |value is.explici|
00007dc0  74 6c 79 20 67 69 76 65  6e 2c 20 74 68 69 73 20  |tly given, this |
00007dd0  76 61 6c 75 65 20 69 73  20 74 68 65 20 69 6e 74  |value is the int|
00007de0  65 67 65 72 20 31 20 28  22 74 72 75 65 22 29 2e  |eger 1 ("true").|
00007df0  20 20 28 45 78 63 65 70  74 20 69 6e 20 74 68 65  |  (Except in the|
00007e00  0a 63 61 73 65 20 6f 66  20 72 6f 75 74 69 6e 65  |.case of routine|
00007e10  73 20 65 6d 62 65 64 64  65 64 20 69 6e 20 6f 62  |s embedded in ob|
00007e20  6a 65 63 74 20 64 65 66  69 6e 69 74 69 6f 6e 73  |ject definitions|
00007e30  2c 20 77 68 65 6e 20 69  74 20 69 73 20 30 2c 20  |, when it is 0, |
00007e40  6f 72 20 22 66 61 6c 73  65 22 2e 29 0a 49 6e 20  |or "false".).In |
00007e50  61 20 6c 69 6e 65 20 6c  69 6b 65 0a 0a 20 20 42  |a line like..  B|
00007e60  61 6e 6e 65 72 28 29 3b  0a 0a 74 68 65 20 72 65  |anner();..the re|
00007e70  74 75 72 6e 20 76 61 6c  75 65 20 69 73 20 74 68  |turn value is th|
00007e80  72 6f 77 6e 20 61 77 61  79 2e 0a 0a 49 6e 73 69  |rown away...Insi|
00007e90  64 65 20 61 20 72 6f 75  74 69 6e 65 2c 20 6c 61  |de a routine, la|
00007ea0  62 65 6c 73 20 6d 61 79  20 62 65 20 64 65 63 6c  |bels may be decl|
00007eb0  61 72 65 64 20 77 69 74  68 20 61 20 6c 69 6e 65  |ared with a line|
00007ec0  20 6f 66 20 74 68 65 69  72 20 6f 77 6e 3a 0a 0a  | of their own:..|
00007ed0  20 20 2e 6c 61 62 65 6c  6e 61 6d 65 3b 0a 0a 62  |  .labelname;..b|
00007ee0  75 74 20 6e 6f 74 65 20  74 68 61 74 20 77 68 65  |ut note that whe|
00007ef0  72 65 61 73 20 6c 6f 63  61 6c 20 76 61 72 69 61  |reas local varia|
00007f00  62 6c 65 73 20 68 61 76  65 20 6e 61 6d 65 73 20  |bles have names |
00007f10  77 68 69 63 68 20 6f 6e  6c 79 20 6d 65 61 6e 20  |which only mean |
00007f20  61 6e 79 74 68 69 6e 67  0a 6c 6f 63 61 6c 6c 79  |anything.locally|
00007f30  2c 20 6c 61 62 65 6c 73  20 68 61 76 65 20 6e 61  |, labels have na|
00007f40  6d 65 73 20 77 68 69 63  68 20 61 72 65 20 67 6c  |mes which are gl|
00007f50  6f 62 61 6c 2e 20 20 49  6e 20 6f 74 68 65 72 20  |obal.  In other |
00007f60  77 6f 72 64 73 2c 20 79  6f 75 20 63 61 6e 27 74  |words, you can't|
00007f70  0a 68 61 76 65 20 61 20  6c 61 62 65 6c 20 63 61  |.have a label ca|
00007f80  6c 6c 65 64 20 22 6c 6f  6f 70 22 20 6d 6f 72 65  |lled "loop" more|
00007f90  20 74 68 61 6e 20 6f 6e  63 65 20 69 6e 20 74 68  | than once in th|
00007fa0  65 20 66 69 6c 65 2e 20  20 28 49 74 20 69 73 20  |e file.  (It is |
00007fb0  6c 65 67 61 6c 20 74 6f  0a 6a 75 6d 70 20 66 72  |legal to.jump fr|
00007fc0  6f 6d 20 6f 6e 65 20 72  6f 75 74 69 6e 65 20 74  |om one routine t|
00007fd0  6f 20 61 20 6c 61 62 65  6c 20 69 6e 73 69 64 65  |o a label inside|
00007fe0  20 61 6e 6f 74 68 65 72  20 6f 6e 65 2c 20 62 75  | another one, bu|
00007ff0  74 20 72 61 74 68 65 72  20 64 61 6e 67 65 72 6f  |t rather dangero|
00008000  75 73 2e 29 0a 0a 54 68  65 72 65 20 69 73 20 6f  |us.)..There is o|
00008010  6e 65 20 73 70 65 63 69  61 6c 20 72 6f 75 74 69  |ne special routi|
00008020  6e 65 2c 20 77 68 69 63  68 20 79 6f 75 20 6d 75  |ne, which you mu|
00008030  73 74 20 64 65 66 69 6e  65 2c 20 63 61 6c 6c 65  |st define, calle|
00008040  64 20 4d 61 69 6e 2e 20  20 54 68 69 73 20 69 73  |d Main.  This is|
00008050  0a 77 68 65 72 65 20 65  78 65 63 75 74 69 6f 6e  |.where execution|
00008060  20 6f 66 20 74 68 65 20  67 61 6d 65 20 77 69 6c  | of the game wil|
00008070  6c 20 62 65 67 69 6e 2c  20 61 6e 64 20 69 74 20  |l begin, and it |
00008080  5f 6d 75 73 74 5f 20 62  65 20 74 68 65 20 66 69  |_must_ be the fi|
00008090  72 73 74 20 6f 6e 65 0a  64 65 66 69 6e 65 64 2e  |rst one.defined.|
000080a0  20 20 41 6c 73 6f 2c 20  75 6e 69 71 75 65 6c 79  |  Also, uniquely|
000080b0  20 61 6e 64 20 66 6f 72  20 70 65 63 75 6c 69 61  | and for peculia|
000080c0  72 20 72 65 61 73 6f 6e  73 2c 20 4d 61 69 6e 20  |r reasons, Main |
000080d0  69 73 20 5f 6e 6f 74 5f  20 70 65 72 6d 69 74 74  |is _not_ permitt|
000080e0  65 64 0a 74 6f 20 68 61  76 65 20 61 6e 79 20 6c  |ed.to have any l|
000080f0  6f 63 61 6c 20 76 61 72  69 61 62 6c 65 73 20 6f  |ocal variables o|
00008100  66 20 69 74 73 20 6f 77  6e 2e 20 20 54 68 69 73  |f its own.  This|
00008110  20 6d 65 61 6e 73 20 69  74 20 69 73 20 75 73 75  | means it is usu|
00008120  61 6c 6c 79 20 6f 6e 6c  79 20 75 73 65 64 0a 61  |ally only used.a|
00008130  73 20 61 6e 20 6f 75 74  65 72 20 73 68 65 6c 6c  |s an outer shell|
00008140  2e 0a 0a 28 49 6e 66 6f  72 6d 20 69 73 73 75 65  |...(Inform issue|
00008150  73 20 61 20 77 61 72 6e  69 6e 67 20 69 66 20 74  |s a warning if t|
00008160  68 65 20 65 61 72 6c 69  65 73 74 20 64 65 66 69  |he earliest defi|
00008170  6e 65 64 20 72 6f 75 74  69 6e 65 20 69 73 20 6e  |ned routine is n|
00008180  6f 74 20 63 61 6c 6c 65  64 0a 22 4d 61 69 6e 22  |ot called."Main"|
00008190  2e 29 0a 0a 0a 57 41 52  4e 49 4e 47 3a 20 52 65  |.)...WARNING: Re|
000081a0  74 75 72 6e 69 6e 67 20  66 72 6f 6d 20 4d 61 69  |turning from Mai|
000081b0  6e 20 77 69 6c 6c 20 63  61 75 73 65 20 74 68 65  |n will cause the|
000081c0  20 69 6e 74 65 72 70 72  65 74 65 72 20 74 6f 20  | interpreter to |
000081d0  63 72 61 73 68 3a 20 79  6f 75 0a 20 20 20 2a 20  |crash: you.   * |
000081e0  20 20 20 20 73 68 6f 75  6c 64 20 65 78 70 6c 69  |    should expli|
000081f0  63 69 74 6c 79 20 75 73  65 20 74 68 65 20 22 51  |citly use the "Q|
00008200  55 49 54 22 20 69 6e 73  74 72 75 63 74 69 6f 6e  |UIT" instruction|
00008210  20 69 6e 73 74 65 61 64  2e 0a 20 20 2f 21 5c 20  | instead..  /!\ |
00008220  20 20 20 0a 20 2a 2d 2d  2d 2a 20 20 20 0a 0a 0a  |   . *---*   ...|
00008230  0a 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.---------------|
00008240  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00008270  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0a 37 2e 20  |------------.7. |
00008280  45 78 70 72 65 73 73 69  6f 6e 73 20 61 6e 64 20  |Expressions and |
00008290  61 73 73 69 67 6e 6d 65  6e 74 73 0a 2d 2d 2d 2d  |assignments.----|
000082a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000082e0  2d 2d 2d 2d 2d 2d 2d 0a  0a 0a 20 20 20 20 20 20  |-------...      |
000082f0  20 20 22 48 69 73 20 65  78 70 72 65 73 73 69 6f  |  "His expressio|
00008300  6e 20 6d 61 79 20 6f 66  74 65 6e 20 62 65 20 63  |n may often be c|
00008310  61 6c 6c 65 64 20 62 61  6c 64 20 2d 20 62 75 74  |alled bald - but|
00008320  20 69 74 20 69 73 20 62  61 6c 64 0a 20 20 20 20  | it is bald.    |
00008330  20 20 20 20 61 73 20 74  68 65 20 62 61 72 65 20  |    as the bare |
00008340  6d 6f 75 6e 74 61 69 6e  20 74 6f 70 73 20 61 72  |mountain tops ar|
00008350  65 20 62 61 6c 64 2c 20  77 69 74 68 20 61 20 62  |e bald, with a b|
00008360  61 6c 64 6e 65 73 73 20  66 75 6c 6c 20 6f 66 0a  |aldness full of.|
00008370  20 20 20 20 20 20 20 20  67 72 61 6e 64 65 75 72  |        grandeur|
00008380  2e 22 0a 0a 20 20 20 20  20 20 20 20 20 20 20 20  |."..            |
00008390  20 20 28 4d 61 74 74 68  65 77 20 41 72 6e 6f 6c  |  (Matthew Arnol|
000083a0  64 2c 20 6f 66 20 57 6f  72 64 73 77 6f 72 74 68  |d, of Wordsworth|
000083b0  29 0a 0a 0a 54 68 65 20  75 73 75 61 6c 20 61 72  |)...The usual ar|
000083c0  69 74 68 6d 65 74 69 63  20 65 78 70 72 65 73 73  |ithmetic express|
000083d0  69 6f 6e 73 20 61 72 65  20 61 6c 6c 6f 77 65 64  |ions are allowed|
000083e0  2c 20 69 6e 63 6c 75 64  69 6e 67 20 74 68 65 20  |, including the |
000083f0  6f 70 65 72 61 74 6f 72  73 3a 0a 0a 20 20 20 20  |operators:..    |
00008400  2b 20 2d 20 20 20 20 20  20 20 20 20 20 20 70 6c  |+ -           pl|
00008410  75 73 2c 20 6d 69 6e 75  73 0a 20 20 20 20 2a 20  |us, minus.    * |
00008420  2f 20 25 20 26 20 7c 20  20 20 20 20 74 69 6d 65  |/ % & |     time|
00008430  73 2c 20 64 69 76 69 64  65 2c 20 72 65 6d 61 69  |s, divide, remai|
00008440  6e 64 65 72 2c 20 62 69  74 77 69 73 65 20 61 6e  |nder, bitwise an|
00008450  64 2c 20 62 69 74 77 69  73 65 20 6f 72 0a 20 20  |d, bitwise or.  |
00008460  20 20 2d 3e 20 2d 2d 3e  20 20 20 20 20 20 20 20  |  -> -->        |
00008470  62 79 74 65 2c 20 77 6f  72 64 20 61 72 72 61 79  |byte, word array|
00008480  20 65 6e 74 72 79 0a 20  20 20 20 20 20 20 20 20  | entry.         |
00008490  20 20 20 20 20 20 20 20  20 28 65 67 3a 20 62 75  |         (eg: bu|
000084a0  66 66 65 72 2d 3e 34 20  67 69 76 65 73 20 63 6f  |ffer->4 gives co|
000084b0  6e 74 65 6e 74 73 20 6f  66 20 74 68 65 20 62 79  |ntents of the by|
000084c0  74 65 20 77 69 74 68 20  61 64 64 72 65 73 73 0a  |te with address.|
000084d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000084e0  20 20 62 75 66 66 65 72  2b 34 2c 20 77 68 69 6c  |  buffer+4, whil|
000084f0  65 20 74 61 62 6c 65 2d  2d 3e 33 20 67 69 76 65  |e table-->3 give|
00008500  73 20 74 68 65 20 77 6f  72 64 20 61 74 20 74 61  |s the word at ta|
00008510  62 6c 65 2b 36 29 0a 20  20 20 20 2e 20 2e 26 20  |ble+6).    . .& |
00008520  2e 23 20 20 20 20 20 20  20 70 72 6f 70 65 72 74  |.#       propert|
00008530  79 2c 20 70 72 6f 70 65  72 74 79 20 61 64 64 72  |y, property addr|
00008540  65 73 73 2c 20 70 72 6f  70 65 72 74 79 20 6c 65  |ess, property le|
00008550  6e 67 74 68 20 28 73 65  65 20 28 31 31 29 29 0a  |ngth (see (11)).|
00008560  20 20 20 20 2d 20 20 20  20 20 20 20 20 20 20 20  |    -           |
00008570  20 20 75 6e 61 72 79 20  6d 69 6e 75 73 0a 20 20  |  unary minus.  |
00008580  20 20 2b 2b 20 2d 2d 20  20 20 20 20 20 20 20 20  |  ++ --         |
00008590  61 73 20 69 6e 20 43 3a  20 66 72 6f 67 2b 2b 20  |as in C: frog++ |
000085a0  67 69 76 65 73 20 74 68  65 20 76 61 6c 75 65 20  |gives the value |
000085b0  6f 66 20 66 72 6f 67 20  61 6e 64 20 74 68 65 6e  |of frog and then|
000085c0  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
000085d0  20 20 20 69 6e 63 72 65  6d 65 6e 74 73 20 69 74  |   increments it|
000085e0  2c 20 77 68 65 72 65 61  73 20 2b 2b 66 72 6f 67  |, whereas ++frog|
000085f0  20 69 6e 63 72 65 6d 65  6e 74 73 20 69 74 20 61  | increments it a|
00008600  6e 64 20 74 68 65 6e 0a  20 20 20 20 20 20 20 20  |nd then.        |
00008610  20 20 20 20 20 20 20 20  20 20 67 69 76 65 73 20  |          gives |
00008620  74 68 65 20 76 61 6c 75  65 3b 20 2d 2d 20 64 65  |the value; -- de|
00008630  63 72 65 6d 65 6e 74 73  20 73 69 6d 69 6c 61 72  |crements similar|
00008640  6c 79 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |ly.             |
00008650  20 20 20 20 20 28 74 68  65 73 65 20 6d 61 79 20  |     (these may |
00008660  6f 6e 6c 79 20 62 65 20  61 70 70 6c 69 65 64 20  |only be applied |
00008670  74 6f 20 76 61 72 69 61  62 6c 65 73 29 0a 0a 54  |to variables)..T|
00008680  68 65 20 6f 72 64 65 72  20 6f 66 20 70 72 65 63  |he order of prec|
00008690  65 64 65 6e 63 65 20 69  73 20 61 73 20 73 68 6f  |edence is as sho|
000086a0  77 6e 3a 20 69 2e 65 2e  20 74 68 6f 73 65 20 6f  |wn: i.e. those o|
000086b0  6e 20 65 61 63 68 20 6c  69 6e 65 20 61 72 65 20  |n each line are |
000086c0  65 71 75 61 6c 6c 79 0a  70 6f 74 65 6e 74 2c 20  |equally.potent, |
000086d0  6d 6f 72 65 20 70 6f 74  65 6e 74 20 74 68 61 6e  |more potent than|
000086e0  20 74 68 6f 73 65 20 61  62 6f 76 65 20 62 75 74  | those above but|
000086f0  20 6c 65 73 73 20 74 68  61 6e 20 74 68 6f 73 65  | less than those|
00008700  20 62 65 6e 65 61 74 68  2e 0a 20 20 20 20 20 20  | beneath..      |
00008710  20 20 20 20 20 20 20 20  20 20 20 20 0a 49 6e 20  |            .In |
00008720  61 64 64 69 74 69 6f 6e  20 6f 6e 65 20 6d 61 79  |addition one may|
00008730  20 63 61 6c 6c 20 61 20  66 75 6e 63 74 69 6f 6e  | call a function|
00008740  2c 20 65 69 74 68 65 72  20 61 20 62 75 69 6c 74  |, either a built|
00008750  2d 69 6e 20 66 75 6e 63  74 69 6f 6e 20 6f 72 20  |-in function or |
00008760  61 0a 72 6f 75 74 69 6e  65 20 77 69 74 68 69 6e  |a.routine within|
00008770  20 74 68 65 20 73 6f 75  72 63 65 20 63 6f 64 65  | the source code|
00008780  2e 0a 0a 45 78 70 72 65  73 73 69 6f 6e 73 20 6d  |...Expressions m|
00008790  61 79 20 6e 6f 74 20 63  6f 6e 74 61 69 6e 20 63  |ay not contain c|
000087a0  6f 6e 64 69 74 69 6f 6e  73 2c 20 61 6e 64 20 61  |onditions, and a|
000087b0  73 73 69 67 6e 6d 65 6e  74 73 20 6d 61 79 20 6e  |ssignments may n|
000087c0  6f 74 20 62 65 20 6d 61  64 65 0a 77 69 74 68 69  |ot be made.withi|
000087d0  6e 20 61 6e 20 65 78 70  72 65 73 73 69 6f 6e 2c  |n an expression,|
000087e0  20 73 6f 2c 20 66 6f 72  20 69 6e 73 74 61 6e 63  | so, for instanc|
000087f0  65 2c 0a 0a 20 20 32 2b  28 69 3d 33 2f 6a 29 0a  |e,..  2+(i=3/j).|
00008800  0a 69 73 20 6e 6f 74 20  61 6c 6c 6f 77 65 64 2e  |.is not allowed.|
00008810  20 20 49 6e 20 6f 74 68  65 72 20 77 6f 72 64 73  |  In other words|
00008820  2c 20 3d 20 69 73 20 6e  6f 74 20 71 75 69 74 65  |, = is not quite|
00008830  20 61 6e 20 6f 70 65 72  61 74 6f 72 2e 0a 0a 54  | an operator...T|
00008840  68 65 72 65 20 61 72 65  20 66 6f 75 72 20 66 6f  |here are four fo|
00008850  72 6d 73 20 6f 66 20 61  73 73 69 67 6e 6d 65 6e  |rms of assignmen|
00008860  74 20 73 74 61 74 65 6d  65 6e 74 20 61 6c 6c 6f  |t statement allo|
00008870  77 65 64 3a 0a 0a 20 20  76 61 72 69 61 62 6c 65  |wed:..  variable|
00008880  20 3d 20 76 61 6c 75 65  3b 0a 0a 20 20 62 79 74  | = value;..  byt|
00008890  65 5f 61 72 72 61 79 2d  3e 65 6e 74 72 79 20 3d  |e_array->entry =|
000088a0  20 76 61 6c 75 65 3b 0a  20 20 77 6f 72 64 5f 61  | value;.  word_a|
000088b0  72 72 61 79 2d 2d 3e 65  6e 74 72 79 20 3d 20 76  |rray-->entry = v|
000088c0  61 6c 75 65 3b 0a 0a 20  20 6f 62 6a 65 63 74 2e  |alue;..  object.|
000088d0  70 72 6f 70 65 72 74 79  20 3d 20 76 61 6c 75 65  |property = value|
000088e0  3b 0a 0a 0a 46 6f 72 20  65 78 61 6d 70 6c 65 3a  |;...For example:|
000088f0  0a 0a 20 20 34 2a 28 78  2b 33 2f 79 29 0a 20 20  |..  4*(x+3/y).  |
00008900  46 69 73 68 28 78 29 2b  46 6f 77 6c 28 79 29 0a  |Fish(x)+Fowl(y).|
00008910  20 20 6c 61 6d 70 2e 74  69 6d 65 0a 20 20 62 75  |  lamp.time.  bu|
00008920  66 66 65 72 2d 3e 35 0a  0a 20 20 69 3d 2d 31 35  |ffer->5..  i=-15|
00008930  2d 6a 3b 0a 20 20 69 3d  6a 2d 2d 3e 31 3b 0a 20  |-j;.  i=j-->1;. |
00008940  20 74 75 72 6e 73 2b 2b  3b 0a 20 20 61 6c 62 61  | turns++;.  alba|
00008950  74 72 6f 73 73 2e 77 65  69 67 68 74 20 3d 20 61  |tross.weight = a|
00008960  6c 62 61 74 72 6f 73 73  2e 77 65 69 67 68 74 20  |lbatross.weight |
00008970  2b 20 31 3b 0a 20 20 28  70 61 69 6e 74 70 6f 74  |+ 1;.  (paintpot|
00008980  2e 26 72 6f 6f 6d 6c 69  73 74 29 2d 2d 3e 69 20  |.&roomlist)-->i |
00008990  3d 20 6c 6f 63 61 74 69  6f 6e 3b 0a 0a 41 6c 74  |= location;..Alt|
000089a0  68 6f 75 67 68 0a 0a 20  20 70 61 69 6e 74 70 6f  |hough..  paintpo|
000089b0  74 2e 23 72 6f 6f 6d 6c  69 73 74 20 3d 20 35 3b  |t.#roomlist = 5;|
000089c0  0a 20 20 70 61 69 6e 74  70 6f 74 2e 26 72 6f 6f  |.  paintpot.&roo|
000089d0  6d 6c 69 73 74 20 3d 20  61 72 72 61 79 3b 0a 0a  |mlist = array;..|
000089e0  6c 6f 6f 6b 20 6c 6f 67  69 63 61 6c 2c 20 74 68  |look logical, th|
000089f0  65 79 20 61 72 65 20 6e  6f 74 20 61 6c 6c 6f 77  |ey are not allow|
00008a00  65 64 3a 20 6f 6e 65 20  63 61 6e 6e 6f 74 20 63  |ed: one cannot c|
00008a10  68 61 6e 67 65 20 74 68  65 20 73 69 7a 65 20 61  |hange the size a|
00008a20  6e 64 20 6c 6f 63 61 74  69 6f 6e 0a 6f 66 20 61  |nd location.of a|
00008a30  20 70 72 6f 70 65 72 74  79 20 6f 6e 63 65 20 74  | property once t|
00008a40  68 65 20 67 61 6d 65 20  69 73 20 69 6e 20 70 6c  |he game is in pl|
00008a50  61 79 20 28 73 65 65 20  28 31 31 29 29 2e 0a 0a  |ay (see (11))...|
00008a60  0a 57 41 52 4e 49 4e 47  3a 20 49 6e 74 65 72 70  |.WARNING: Interp|
00008a70  72 65 74 65 72 73 20 63  61 6e 20 63 72 61 73 68  |reters can crash|
00008a80  20 76 65 72 79 20 6d 79  73 74 65 72 69 6f 75 73  | very mysterious|
00008a90  6c 79 20 69 66 20 61 20  64 69 76 69 73 69 6f 6e  |ly if a division|
00008aa0  20 62 79 20 7a 65 72 6f  0a 20 20 20 2a 20 20 20  | by zero.   *   |
00008ab0  20 20 28 6f 72 20 61 6e  20 61 74 74 65 6d 70 74  |  (or an attempt|
00008ac0  20 74 6f 20 66 69 6e 64  20 72 65 6d 61 69 6e 64  | to find remaind|
00008ad0  65 72 2d 61 66 74 65 72  2d 64 69 76 69 73 69 6f  |er-after-divisio|
00008ae0  6e 20 62 79 20 7a 65 72  6f 29 20 74 61 6b 65 73  |n by zero) takes|
00008af0  0a 20 20 2f 21 5c 20 20  20 20 70 6c 61 63 65 2e  |.  /!\    place.|
00008b00  0a 20 2a 2d 2d 2d 2a 20  20 20 0a 0a 0a 2d 2d 2d  |. *---*   ...---|
00008b10  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00008b50  2d 2d 2d 2d 2d 2d 2d 2d  0a 38 2e 20 43 6f 6d 6d  |--------.8. Comm|
00008b60  61 6e 64 73 0a 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ands.-----------|
00008b70  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00008bb0  0a 0a 0a 20 20 20 20 20  20 20 20 20 22 4d 79 20  |...         "My |
00008bc0  6e 61 6d 65 20 69 73 20  4f 5a 59 4d 41 4e 44 49  |name is OZYMANDI|
00008bd0  41 53 2c 20 6b 69 6e 67  20 6f 66 20 6b 69 6e 67  |AS, king of king|
00008be0  73 3a 0a 20 20 20 20 20  20 20 20 20 4c 6f 6f 6b  |s:.         Look|
00008bf0  20 6f 6e 20 6d 79 20 77  6f 72 6b 73 2c 20 79 65  | on my works, ye|
00008c00  20 4d 69 67 68 74 79 2c  20 61 6e 64 20 64 65 73  | Mighty, and des|
00008c10  70 61 69 72 21 22 0a 20  20 20 20 20 20 20 20 20  |pair!".         |
00008c20  4e 6f 74 68 69 6e 67 20  62 65 73 69 64 65 20 72  |Nothing beside r|
00008c30  65 6d 61 69 6e 73 2e 20  20 52 6f 75 6e 64 20 74  |emains.  Round t|
00008c40  68 65 20 64 65 63 61 79  0a 20 20 20 20 20 20 20  |he decay.       |
00008c50  20 20 6f 66 20 74 68 61  74 20 63 6f 6c 6f 73 73  |  of that coloss|
00008c60  61 6c 20 77 72 65 63 6b  2c 20 62 6f 75 6e 64 6c  |al wreck, boundl|
00008c70  65 73 73 20 61 6e 64 20  62 61 72 65 0a 20 20 20  |ess and bare.   |
00008c80  20 20 20 20 20 20 54 68  65 20 6c 6f 6e 65 20 61  |      The lone a|
00008c90  6e 64 20 6c 65 76 65 6c  20 73 61 6e 64 73 20 73  |nd level sands s|
00008ca0  74 72 65 74 63 68 20 66  61 72 20 61 77 61 79 2e  |tretch far away.|
00008cb0  0a 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |..              |
00008cc0  20 20 20 20 28 53 68 65  6c 6c 65 79 29 0a 0a 0a  |    (Shelley)...|
00008cd0  28 61 29 20 50 72 69 6e  74 69 6e 67 20 63 6f 6d  |(a) Printing com|
00008ce0  6d 61 6e 64 73 0a 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |mands.----------|
00008cf0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 0a 20 20 20  |-----------..   |
00008d00  20 20 20 20 20 20 54 6f  20 62 65 67 69 6e 20 74  |      To begin t|
00008d10  68 65 20 22 68 69 67 68  20 6c 65 76 65 6c 22 20  |he "high level" |
00008d20  63 6f 6d 6d 61 6e 64 73  20 69 6e 20 49 6e 66 6f  |commands in Info|
00008d30  72 6d 2c 20 77 65 20 6c  69 73 74 20 74 68 65 20  |rm, we list the |
00008d40  70 72 69 6e 74 69 6e 67  0a 20 20 20 20 20 20 20  |printing.       |
00008d50  20 20 63 6f 6d 6d 61 6e  64 73 2e 20 20 28 54 68  |  commands.  (Th|
00008d60  65 20 77 72 61 70 70 69  6e 67 20 6f 66 20 6c 69  |e wrapping of li|
00008d70  6e 65 73 20 69 73 20 6f  66 20 63 6f 75 72 73 65  |nes is of course|
00008d80  20 61 75 74 6f 6d 61 74  69 63 2e 29 0a 0a 0a 3c  | automatic.)...<|
00008d90  61 20 73 74 72 69 6e 67  20 6f 6e 20 69 74 73 20  |a string on its |
00008da0  6f 77 6e 3e 0a 0a 20 20  20 20 20 20 20 20 20 41  |own>..         A|
00008db0  20 73 74 72 69 6e 67 20  6f 6e 20 69 74 73 20 6f  | string on its o|
00008dc0  77 6e 2c 20 73 75 63 68  20 61 73 0a 0a 20 20 20  |wn, such as..   |
00008dd0  20 20 20 20 20 20 22 54  68 65 20 77 6f 72 6c 64  |      "The world|
00008de0  20 65 78 70 6c 6f 64 65  73 20 69 6e 20 61 20 70  | explodes in a p|
00008df0  75 66 66 20 6f 66 20 67  61 72 6c 69 63 2e 22 3b  |uff of garlic.";|
00008e00  0a 0a 20 20 20 20 20 20  20 20 20 69 73 20 70 72  |..         is pr|
00008e10  69 6e 74 65 64 20 61 73  20 69 66 20 62 79 20 50  |inted as if by P|
00008e20  52 49 4e 54 5f 52 45 54  3a 20 69 2e 65 2e 2c 20  |RINT_RET: i.e., |
00008e30  69 74 20 69 73 20 70 72  69 6e 74 65 64 2c 20 61  |it is printed, a|
00008e40  20 63 61 72 72 69 61 67  65 0a 20 20 20 20 20 20  | carriage.      |
00008e50  20 20 20 72 65 74 75 72  6e 20 69 73 20 70 72 69  |   return is pri|
00008e60  6e 74 65 64 20 61 6e 64  20 74 68 65 20 63 75 72  |nted and the cur|
00008e70  72 65 6e 74 20 72 6f 75  74 69 6e 65 20 69 73 20  |rent routine is |
00008e80  72 65 74 75 72 6e 65 64  20 66 72 6f 6d 20 77 69  |returned from wi|
00008e90  74 68 0a 20 20 20 20 20  20 20 20 20 72 65 74 75  |th.         retu|
00008ea0  72 6e 20 76 61 6c 65 20  22 74 72 75 65 22 2c 20  |rn vale "true", |
00008eb0  69 2e 65 2e 2c 20 31 2e  0a 0a 0a 4e 45 57 5f 4c  |i.e., 1....NEW_L|
00008ec0  49 4e 45 20 20 20 20 20  20 20 20 20 20 20 20 20  |INE             |
00008ed0  20 20 20 20 20 20 20 20  20 20 50 72 69 6e 74 20  |          Print |
00008ee0  61 20 63 61 72 72 69 61  67 65 20 72 65 74 75 72  |a carriage retur|
00008ef0  6e 0a 0a 50 52 49 4e 54  20 2e 2e 2e 6c 69 73 74  |n..PRINT ...list|
00008f00  20 6f 66 20 74 68 69 6e  67 73 2e 2e 2e 0a 50 52  | of things....PR|
00008f10  49 4e 54 5f 52 45 54 20  2e 2e 2e 6c 69 73 74 2e  |INT_RET ...list.|
00008f20  2e 2e 0a 0a 20 20 20 20  20 20 20 20 20 50 52 49  |....         PRI|
00008f30  4e 54 20 61 6e 64 20 50  52 49 4e 54 5f 52 45 54  |NT and PRINT_RET|
00008f40  20 61 72 65 20 67 65 6e  65 72 61 6c 20 70 72 69  | are general pri|
00008f50  6e 74 69 6e 67 20 63 6f  6d 6d 61 6e 64 73 2c 20  |nting commands, |
00008f60  74 6f 20 62 65 20 67 69  76 65 6e 0a 20 20 20 20  |to be given.    |
00008f70  20 20 20 20 20 61 20 6c  69 73 74 20 6f 66 20 69  |     a list of i|
00008f80  74 65 6d 73 20 73 65 70  61 72 61 74 65 64 20 62  |tems separated b|
00008f90  79 20 63 6f 6d 6d 61 73  2e 20 20 50 52 49 4e 54  |y commas.  PRINT|
00008fa0  5f 52 45 54 20 64 69 66  66 65 72 73 20 66 72 6f  |_RET differs fro|
00008fb0  6d 20 50 52 49 4e 54 0a  20 20 20 20 20 20 20 20  |m PRINT.        |
00008fc0  20 69 6e 20 74 68 61 74  20 77 68 65 6e 20 69 74  | in that when it|
00008fd0  20 66 69 6e 69 73 68 65  73 2c 20 69 74 20 70 72  | finishes, it pr|
00008fe0  69 6e 74 73 20 61 20 63  61 72 72 69 61 67 65 20  |ints a carriage |
00008ff0  72 65 74 75 72 6e 20 61  6e 64 20 72 65 74 75 72  |return and retur|
00009000  6e 73 0a 20 20 20 20 20  20 20 20 20 66 72 6f 6d  |ns.         from|
00009010  20 74 68 65 20 63 75 72  72 65 6e 74 20 72 6f 75  | the current rou|
00009020  74 69 6e 65 20 77 69 74  68 20 72 65 74 75 72 6e  |tine with return|
00009030  20 76 61 6c 75 65 20 74  72 75 65 20 28 6f 72 20  | value true (or |
00009040  31 29 3a 20 74 68 69 73  20 69 73 0a 20 20 20 20  |1): this is.    |
00009050  20 20 20 20 20 61 20 63  6f 6e 76 65 6e 69 65 6e  |     a convenien|
00009060  74 20 73 68 6f 72 74 68  61 6e 64 2e 0a 0a 20 20  |t shorthand...  |
00009070  20 20 20 20 20 20 20 49  74 65 6d 73 20 69 6e 20  |       Items in |
00009080  74 68 65 20 6c 69 73 74  20 6d 75 73 74 20 62 65  |the list must be|
00009090  0a 0a 20 20 20 20 20 20  20 20 20 3c 71 75 6f 74  |..         <quot|
000090a0  65 64 20 74 65 78 74 3e  20 20 20 20 20 20 20 20  |ed text>        |
000090b0  20 41 20 73 74 72 69 6e  67 20 74 6f 20 70 72 69  | A string to pri|
000090c0  6e 74 20 6f 75 74 0a 20  20 20 20 20 20 20 20 20  |nt out.         |
000090d0  3c 65 78 70 72 65 73 73  69 6f 6e 3e 20 20 20 20  |<expression>    |
000090e0  20 20 20 20 20 20 41 20  6e 75 6d 62 65 72 20 74  |      A number t|
000090f0  6f 20 70 72 69 6e 74 0a  20 20 20 20 20 20 20 20  |o print.        |
00009100  20 63 68 61 72 20 3c 65  78 70 72 65 73 73 69 6f  | char <expressio|
00009110  6e 3e 20 20 20 20 20 41  6e 20 41 53 43 49 49 20  |n>     An ASCII |
00009120  63 6f 64 65 20 74 6f 20  70 72 69 6e 74 0a 20 20  |code to print.  |
00009130  20 20 20 20 20 20 20 6f  62 6a 65 63 74 20 3c 65  |       object <e|
00009140  78 70 72 65 73 73 69 6f  6e 3e 20 20 20 41 6e 20  |xpression>   An |
00009150  6f 62 6a 65 63 74 20 74  6f 20 70 72 69 6e 74 20  |object to print |
00009160  74 68 65 20 73 68 6f 72  74 20 6e 61 6d 65 20 6f  |the short name o|
00009170  66 0a 0a 20 20 20 20 20  20 20 20 20 57 69 74 68  |f..         With|
00009180  69 6e 20 61 20 74 65 78  74 20 73 74 72 69 6e 67  |in a text string|
00009190  2c 20 61 6e 20 75 70 2d  61 72 72 6f 77 20 63 68  |, an up-arrow ch|
000091a0  61 72 61 63 74 65 72 20  5e 20 62 65 63 6f 6d 65  |aracter ^ become|
000091b0  73 20 61 20 63 61 72 72  69 61 67 65 0a 20 20 20  |s a carriage.   |
000091c0  20 20 20 20 20 20 72 65  74 75 72 6e 20 61 6e 64  |      return and|
000091d0  20 7e 20 61 20 64 6f 75  62 6c 65 2d 71 75 6f 74  | ~ a double-quot|
000091e0  65 2e 20 20 28 46 6f 72  20 66 75 6c 6c 65 72 20  |e.  (For fuller |
000091f0  64 65 74 61 69 6c 73 20  6f 66 20 70 72 69 6e 74  |details of print|
00009200  69 6e 67 2c 20 73 65 65  0a 20 20 20 20 20 20 20  |ing, see.       |
00009210  20 20 28 35 29 2c 20 28  31 37 29 20 61 6e 64 20  |  (5), (17) and |
00009220  28 31 39 29 2e 29 0a 0a  20 20 20 20 20 20 20 20  |(19).)..        |
00009230  20 53 6f 2c 20 66 6f 72  20 65 78 61 6d 70 6c 65  | So, for example|
00009240  2c 0a 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |,..             |
00009250  70 72 69 6e 74 5f 72 65  74 20 22 59 6f 75 72 20  |print_ret "Your |
00009260  73 63 6f 72 65 20 69 73  20 22 2c 20 73 63 6f 72  |score is ", scor|
00009270  65 2c 20 22 20 6f 75 74  5e 6f 66 20 22 2c 20 6d  |e, " out^of ", m|
00009280  61 78 5f 73 63 6f 72 65  2c 20 22 2e 22 3b 0a 0a  |ax_score, ".";..|
00009290  20 20 20 20 20 20 20 20  20 6d 69 67 68 74 20 70  |         might p|
000092a0  72 6f 64 75 63 65 20 74  68 65 20 6f 75 74 70 75  |roduce the outpu|
000092b0  74 0a 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |t..             |
000092c0  59 6f 75 72 20 73 63 6f  72 65 20 69 73 20 31 34  |Your score is 14|
000092d0  36 20 6f 75 74 0a 20 20  20 20 20 20 20 20 20 20  |6 out.          |
000092e0  20 20 20 6f 66 20 31 30  30 30 30 2e 0a 0a 53 50  |   of 10000...SP|
000092f0  41 43 45 53 20 3c 6e 3e  20 20 20 20 20 20 20 20  |ACES <n>        |
00009300  20 20 20 20 20 20 20 20  20 20 20 20 20 50 72 69  |             Pri|
00009310  6e 74 20 3c 6e 3e 20 73  70 61 63 65 73 20 28 69  |nt <n> spaces (i|
00009320  66 20 6e 3c 3d 30 2c 20  70 72 69 6e 74 20 6e 6f  |f n<=0, print no|
00009330  74 68 69 6e 67 29 0a 0a  50 52 49 4e 54 5f 4e 55  |thing)..PRINT_NU|
00009340  4d 20 3c 61 3e 20 20 20  20 20 20 20 20 20 20 20  |M <a>           |
00009350  20 20 20 20 20 20 20 50  72 69 6e 74 20 3c 61 3e  |       Print <a>|
00009360  20 61 73 20 61 20 28 73  69 67 6e 65 64 29 20 64  | as a (signed) d|
00009370  65 63 69 6d 61 6c 20 6e  75 6d 62 65 72 0a 50 52  |ecimal number.PR|
00009380  49 4e 54 5f 43 48 41 52  20 3c 61 3e 20 20 20 20  |INT_CHAR <a>    |
00009390  20 20 20 20 20 20 20 20  20 20 20 20 20 50 72 69  |             Pri|
000093a0  6e 74 20 74 68 65 20 63  68 61 72 61 63 74 65 72  |nt the character|
000093b0  20 77 68 6f 73 65 20 41  53 43 49 49 20 76 61 6c  | whose ASCII val|
000093c0  75 65 20 69 73 20 3c 61  3e 0a 50 52 49 4e 54 5f  |ue is <a>.PRINT_|
000093d0  4f 42 4a 20 3c 61 3e 20  20 20 20 20 20 20 20 20  |OBJ <a>         |
000093e0  20 20 20 20 20 20 20 20  20 50 72 69 6e 74 20 74  |         Print t|
000093f0  68 65 20 73 68 6f 72 74  20 6e 61 6d 65 20 6f 66  |he short name of|
00009400  20 6f 62 6a 65 63 74 20  3c 61 3e 0a 0a 20 20 20  | object <a>..   |
00009410  20 20 20 20 20 20 54 68  65 72 65 20 61 72 65 20  |      There are |
00009420  61 20 66 65 77 20 6d 6f  72 65 20 74 65 63 68 6e  |a few more techn|
00009430  69 63 61 6c 20 70 72 69  6e 74 69 6e 67 20 63 6f  |ical printing co|
00009440  6d 6d 61 6e 64 73 20 61  6c 73 6f 3a 0a 0a 49 4e  |mmands also:..IN|
00009450  56 45 52 53 49 4f 4e 20  20 20 20 20 20 20 20 20  |VERSION         |
00009460  20 20 20 20 20 20 20 20  20 20 20 20 20 50 72 69  |             Pri|
00009470  6e 74 73 20 28 69 6e 20  74 68 65 20 67 61 6d 65  |nts (in the game|
00009480  2c 20 6e 6f 74 20 61 74  20 63 6f 6d 70 69 6c 65  |, not at compile|
00009490  20 74 69 6d 65 29 0a 20  20 20 20 20 20 20 20 20  | time).         |
000094a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000094b0  20 20 20 20 20 20 74 68  65 20 76 65 72 73 69 6f  |      the versio|
000094c0  6e 20 6e 75 6d 62 65 72  20 6f 66 20 49 6e 66 6f  |n number of Info|
000094d0  72 6d 20 75 73 65 64 20  74 6f 0a 20 20 20 20 20  |rm used to.     |
000094e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000094f0  20 20 20 20 20 20 20 20  20 20 63 6f 6d 70 69 6c  |          compil|
00009500  65 20 74 68 65 20 73 74  6f 72 79 20 66 69 6c 65  |e the story file|
00009510  0a 50 52 49 4e 54 5f 41  44 44 52 20 3c 61 3e 20  |.PRINT_ADDR <a> |
00009520  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009530  50 72 69 6e 74 20 74 68  65 20 73 74 72 69 6e 67  |Print the string|
00009540  20 77 68 6f 73 65 20 61  64 64 72 65 73 73 20 69  | whose address i|
00009550  73 20 61 0a 50 52 49 4e  54 5f 50 41 44 44 52 20  |s a.PRINT_PADDR |
00009560  3c 61 3e 20 20 20 20 20  20 20 20 20 20 20 20 20  |<a>             |
00009570  20 20 20 50 72 69 6e 74  20 74 68 65 20 73 74 72  |   Print the str|
00009580  69 6e 67 20 77 68 6f 73  65 20 61 64 64 72 65 73  |ing whose addres|
00009590  73 20 69 73 0a 20 20 20  20 20 20 20 20 20 20 20  |s is.           |
000095a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000095b0  20 20 20 20 20 20 20 32  2a 61 20 28 69 6e 20 76  |       2*a (in v|
000095c0  65 72 73 69 6f 6e 2d 33  29 0a 20 20 20 20 20 20  |ersion-3).      |
000095d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000095e0  20 20 20 20 20 20 20 20  20 6f 72 20 34 2a 61 20  |         or 4*a |
000095f0  28 69 6e 20 76 65 72 73  69 6f 6e 2d 35 29 0a 53  |(in version-5).S|
00009600  54 52 49 4e 47 20 3c 6e  3e 20 3c 74 65 78 74 3e  |TRING <n> <text>|
00009610  20 20 20 20 20 20 20 20  20 20 20 20 20 20 53 65  |              Se|
00009620  74 20 74 68 65 20 6e 74  68 20 69 6e 64 69 72 65  |t the nth indire|
00009630  63 74 20 73 74 72 69 6e  67 20 74 6f 20 74 65 78  |ct string to tex|
00009640  74 20 28 73 65 65 20 28  31 38 29 29 0a 46 4f 4e  |t (see (18)).FON|
00009650  54 20 6f 6e 20 20 20 20  20 20 20 20 20 20 20 20  |T on            |
00009660  20 20 20 20 20 20 20 20  20 20 20 20 54 75 72 6e  |            Turn|
00009670  20 70 72 6f 70 6f 72 74  69 6f 6e 61 6c 20 66 6f  | proportional fo|
00009680  6e 74 73 20 6f 6e 2f 6f  66 66 20 28 73 65 65 20  |nts on/off (see |
00009690  28 32 30 29 29 0a 20 20  20 20 20 6f 66 66 0a 0a  |(20)).     off..|
000096a0  53 54 59 4c 45 20 72 6f  6d 61 6e 20 20 20 20 20  |STYLE roman     |
000096b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 28  |               (|
000096c0  56 65 72 73 69 6f 6e 20  35 20 67 61 6d 65 73 20  |Version 5 games |
000096d0  6f 6e 6c 79 29 20 20 53  65 74 20 74 68 65 20 74  |only)  Set the t|
000096e0  65 78 74 20 73 74 79 6c  65 0a 20 20 20 20 20 20  |ext style.      |
000096f0  72 65 76 65 72 73 65 20  20 20 20 20 20 20 20 20  |reverse         |
00009700  20 20 20 20 20 20 20 20  20 28 73 65 65 20 28 32  |         (see (2|
00009710  30 29 29 0a 20 20 20 20  20 20 62 6f 6c 64 0a 20  |0)).      bold. |
00009720  20 20 20 20 20 75 6e 64  65 72 6c 69 6e 65 0a 0a  |     underline..|
00009730  42 4f 58 20 3c 74 65 78  74 31 3e 20 2e 2e 2e 20  |BOX <text1> ... |
00009740  3c 74 65 78 74 32 3e 20  20 20 20 20 20 20 20 28  |<text2>        (|
00009750  56 65 72 73 69 6f 6e 20  35 20 6f 6e 6c 79 29 20  |Version 5 only) |
00009760  20 48 69 67 68 6c 69 67  68 74 20 61 20 74 65 78  | Highlight a tex|
00009770  74 20 77 69 6e 64 6f 77  0a 20 20 20 20 20 20 20  |t window.       |
00009780  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009790  20 20 20 20 20 20 20 20  28 73 65 65 20 28 32 30  |        (see (20|
000097a0  29 29 0a 0a 0a 28 62 29  20 4f 62 6a 65 63 74 20  |))...(b) Object |
000097b0  6d 61 6e 69 70 75 6c 61  74 69 6f 6e 20 28 73 65  |manipulation (se|
000097c0  65 20 28 31 31 29 29 0a  2d 2d 2d 2d 2d 2d 2d 2d  |e (11)).--------|
000097d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000097e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0a 0a 0a 52 45 4d  |----------...REM|
000097f0  4f 56 45 20 3c 61 3e 20  20 20 20 20 20 20 20 20  |OVE <a>         |
00009800  20 20 20 20 20 20 20 20  20 20 20 20 52 65 6d 6f  |            Remo|
00009810  76 65 20 6f 62 6a 65 63  74 20 61 20 66 72 6f 6d  |ve object a from|
00009820  20 74 68 65 20 74 72 65  65 20 6f 66 20 6f 62 6a  | the tree of obj|
00009830  65 63 74 73 0a 20 20 20  20 20 20 20 20 20 20 20  |ects.           |
00009840  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009850  20 20 20 20 28 69 74 20  6d 61 79 20 63 65 72 74  |    (it may cert|
00009860  61 69 6e 6c 79 20 62 65  20 6c 61 74 65 72 20 70  |ainly be later p|
00009870  75 74 20 62 61 63 6b 29  0a 4d 4f 56 45 20 3c 61  |ut back).MOVE <a|
00009880  3e 20 54 4f 20 3c 62 3e  20 20 20 20 20 20 20 20  |> TO <b>        |
00009890  20 20 20 20 20 20 20 20  41 64 64 20 6f 62 6a 65  |        Add obje|
000098a0  63 74 20 61 20 74 6f 20  74 68 65 20 74 68 69 6e  |ct a to the thin|
000098b0  67 73 20 70 6f 73 73 65  73 73 65 64 20 62 79 20  |gs possessed by |
000098c0  62 0a 0a 57 52 49 54 45  20 3c 6f 62 6a 65 63 74  |b..WRITE <object|
000098d0  3e 20 3c 70 31 3e 20 3c  76 31 3e 20 5b 3c 70 32  |> <p1> <v1> [<p2|
000098e0  3e 20 3c 76 32 3e 2e 2e  2e 5d 20 20 20 20 20 20  |> <v2>...]      |
000098f0  20 20 43 68 61 6e 67 65  20 70 72 6f 70 65 72 74  |  Change propert|
00009900  69 65 73 0a 47 49 56 45  20 3c 6f 62 6a 65 63 74  |ies.GIVE <object|
00009910  3e 20 3c 61 31 3e 20 5b  3c 61 32 3e 2e 2e 2e 5d  |> <a1> [<a2>...]|
00009920  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009930  20 20 20 43 68 61 6e 67  65 20 61 74 74 72 69 62  |   Change attrib|
00009940  75 74 65 73 0a 20 20 20  20 20 20 20 20 20 0a 20  |utes.         . |
00009950  20 20 20 20 20 20 20 20  54 68 65 73 65 20 73 65  |        These se|
00009960  74 20 73 65 76 65 72 61  6c 20 70 72 6f 70 65 72  |t several proper|
00009970  74 69 65 73 20 6f 72 20  61 74 74 72 69 62 75 74  |ties or attribut|
00009980  65 73 20 6f 66 20 74 68  65 20 67 69 76 65 6e 20  |es of the given |
00009990  6f 62 6a 65 63 74 0a 20  20 20 20 20 20 20 20 20  |object.         |
000099a0  61 74 20 6f 6e 63 65 2e  20 20 28 41 74 74 72 69  |at once.  (Attri|
000099b0  62 75 74 65 73 20 6d 61  79 20 62 65 20 70 72 65  |butes may be pre|
000099c0  63 65 64 65 64 20 62 79  20 61 20 74 69 6c 64 65  |ceded by a tilde|
000099d0  20 7e 2c 20 69 6e 20 77  68 69 63 68 20 63 61 73  | ~, in which cas|
000099e0  65 0a 20 20 20 20 20 20  20 20 20 74 68 65 79 20  |e.         they |
000099f0  61 72 65 20 72 65 6d 6f  76 65 64 20 72 61 74 68  |are removed rath|
00009a00  65 72 20 74 68 61 6e 20  61 64 64 65 64 2e 29 20  |er than added.) |
00009a10  20 46 6f 72 20 65 78 61  6d 70 6c 65 2c 0a 0a 20  | For example,.. |
00009a20  20 20 20 20 20 20 20 20  20 20 20 20 67 69 76 65  |            give|
00009a30  20 6c 61 6d 70 20 6c 69  67 68 74 20 7e 6f 70 65  | lamp light ~ope|
00009a40  6e 20 63 6f 6e 74 61 69  6e 65 72 20 73 63 6f 72  |n container scor|
00009a50  65 64 3b 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ed;.            |
00009a60  20 77 72 69 74 65 20 6c  61 6d 70 20 74 69 6d 65  | write lamp time|
00009a70  6c 65 66 74 20 35 30 20  62 72 69 67 68 74 6e 65  |left 50 brightne|
00009a80  73 73 20 22 66 6c 69 63  6b 65 72 69 6e 67 22 3b  |ss "flickering";|
00009a90  0a 0a 0a 28 63 29 20 43  6f 6e 74 72 6f 6c 20 63  |...(c) Control c|
00009aa0  6f 6d 6d 61 6e 64 73 0a  2d 2d 2d 2d 2d 2d 2d 2d  |ommands.--------|
00009ab0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0a 0a 0a 20  |------------... |
00009ac0  20 20 20 20 20 20 20 20  57 65 20 62 65 67 69 6e  |        We begin|
00009ad0  20 74 68 65 20 63 6f 6e  74 72 6f 6c 20 63 6f 6d  | the control com|
00009ae0  6d 61 6e 64 73 2c 20 70  65 72 76 65 72 73 65 6c  |mands, perversel|
00009af0  79 20 70 65 72 68 61 70  73 2c 20 77 69 74 68 20  |y perhaps, with |
00009b00  74 68 65 0a 20 20 20 20  20 20 20 20 20 72 65 6d  |the.         rem|
00009b10  61 69 6e 69 6e 67 20 77  61 79 73 20 74 6f 20 72  |aining ways to r|
00009b20  65 74 75 72 6e 20 66 72  6f 6d 20 74 68 65 20 70  |eturn from the p|
00009b30  72 65 73 65 6e 74 20 72  6f 75 74 69 6e 65 20 28  |resent routine (|
00009b40  61 70 61 72 74 20 66 72  6f 6d 0a 20 20 20 20 20  |apart from.     |
00009b50  20 20 20 20 50 52 49 4e  54 5f 52 45 54 20 61 6e  |    PRINT_RET an|
00009b60  64 20 61 6e 20 3c 3c 61  63 74 69 6f 6e 3e 3e 29  |d an <<action>>)|
00009b70  3a 0a 0a 52 45 54 55 52  4e 20 20 20 20 20 20 20  |:..RETURN       |
00009b80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009b90  20 20 52 65 74 75 72 6e  20 28 61 63 74 75 61 6c  |  Return (actual|
00009ba0  6c 79 2c 20 72 65 74 75  72 6e 20 74 72 75 65 2c  |ly, return true,|
00009bb0  20 69 2e 65 2e 20 31 29  0a 52 45 54 55 52 4e 20  | i.e. 1).RETURN |
00009bc0  3c 61 3e 20 20 20 20 20  20 20 20 20 20 20 20 20  |<a>             |
00009bd0  20 20 20 20 20 20 20 20  52 65 74 75 72 6e 20 74  |        Return t|
00009be0  68 65 20 76 61 6c 75 65  20 61 0a 52 54 52 55 45  |he value a.RTRUE|
00009bf0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009c00  20 20 20 20 20 20 20 20  20 20 52 65 74 75 72 6e  |          Return|
00009c10  20 74 72 75 65 2c 20 69  2e 65 2e 20 74 68 65 20  | true, i.e. the |
00009c20  76 61 6c 75 65 20 31 0a  52 46 41 4c 53 45 20 20  |value 1.RFALSE  |
00009c30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009c40  20 20 20 20 20 20 20 52  65 74 75 72 6e 20 66 61  |       Return fa|
00009c50  6c 73 65 2c 20 69 2e 65  2e 20 74 68 65 20 76 61  |lse, i.e. the va|
00009c60  6c 75 65 20 30 0a 20 20  20 20 20 20 20 20 20 20  |lue 0.          |
00009c70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009c80  20 20 20 20 20 28 54 68  65 73 65 20 75 73 65 64  |     (These used|
00009c90  20 74 6f 2c 20 61 6e 64  20 73 74 69 6c 6c 20 63  | to, and still c|
00009ca0  61 6e 2c 20 62 65 20 63  61 6c 6c 65 64 0a 20 20  |an, be called.  |
00009cb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009cc0  20 20 20 20 20 20 20 20  20 20 20 20 20 22 72 65  |             "re|
00009cd0  74 23 74 72 75 65 22 20  61 6e 64 20 22 72 65 74  |t#true" and "ret|
00009ce0  23 66 61 6c 73 65 22 2e  29 0a 0a 20 20 20 20 20  |#false".)..     |
00009cf0  20 20 20 20 54 68 65 20  6e 65 78 74 20 66 65 77  |    The next few|
00009d00  20 63 6f 6e 73 74 72 75  63 74 69 6f 6e 73 20 69  | constructions i|
00009d10  6e 76 6f 6c 76 65 20 63  6f 6e 64 69 74 69 6f 6e  |nvolve condition|
00009d20  73 20 61 6e 64 20 62 6c  6f 63 6b 73 20 6f 66 20  |s and blocks of |
00009d30  63 6f 64 65 2e 0a 20 20  20 20 20 20 20 20 20 53  |code..         S|
00009d40  65 65 20 28 39 29 20 66  6f 72 20 70 72 6f 70 65  |ee (9) for prope|
00009d50  72 20 64 65 66 69 6e 69  74 69 6f 6e 20 6f 66 20  |r definition of |
00009d60  63 6f 6e 64 69 74 69 6f  6e 73 2e 20 20 41 20 62  |conditions.  A b|
00009d70  6c 6f 63 6b 20 6f 66 20  63 6f 64 65 20 6d 61 79  |lock of code may|
00009d80  20 62 65 0a 20 20 20 20  20 20 20 20 20 61 20 73  | be.         a s|
00009d90  69 6e 67 6c 65 20 69 6e  73 74 72 75 63 74 69 6f  |ingle instructio|
00009da0  6e 20 6f 72 20 61 20 73  65 72 69 65 73 20 6f 66  |n or a series of|
00009db0  20 73 65 76 65 72 61 6c  2c 20 69 6e 20 77 68 69  | several, in whi|
00009dc0  63 68 20 63 61 73 65 20  69 74 20 6d 75 73 74 20  |ch case it must |
00009dd0  62 65 0a 20 20 20 20 20  20 20 20 20 65 6e 63 6c  |be.         encl|
00009de0  6f 73 65 64 20 69 6e 20  62 72 61 63 65 73 20 27  |osed in braces '|
00009df0  7b 27 20 61 6e 64 20 27  7d 27 2e 20 20 54 68 75  |{' and '}'.  Thu|
00009e00  73 2c 20 66 6f 72 20 69  6e 73 74 61 6e 63 65 2c  |s, for instance,|
00009e10  20 69 6e 0a 0a 20 20 20  20 20 20 20 20 20 20 20  | in..           |
00009e20  20 20 69 66 20 28 69 3d  3d 31 29 20 70 72 69 6e  |  if (i==1) prin|
00009e30  74 20 22 54 68 65 20 77  61 74 65 72 20 72 69 73  |t "The water ris|
00009e40  65 73 21 22 3b 0a 20 20  20 20 20 20 20 20 20 20  |es!";.          |
00009e50  20 20 20 69 66 20 28 69  3d 3d 32 29 20 7b 20 70  |   if (i==2) { p|
00009e60  72 69 6e 74 20 22 54 68  65 20 77 61 74 65 72 20  |rint "The water |
00009e70  72 69 73 65 73 20 66 75  72 74 68 65 72 2e 2e 2e  |rises further...|
00009e80  22 3b 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |";.             |
00009e90  20 20 20 20 20 20 20 20  20 20 20 20 77 61 74 65  |            wate|
00009ea0  72 2b 2b 3b 0a 20 20 20  20 20 20 20 20 20 20 20  |r++;.           |
00009eb0  20 20 20 20 20 20 20 20  20 20 20 20 7d 0a 0a 20  |            }.. |
00009ec0  20 20 20 20 20 20 20 20  74 68 65 20 69 66 20 73  |        the if s|
00009ed0  74 61 74 65 6d 65 6e 74  73 20 63 6f 6e 74 61 69  |tatements contai|
00009ee0  6e 20 61 20 62 6c 6f 63  6b 20 6f 66 20 63 6f 64  |n a block of cod|
00009ef0  65 20 65 61 63 68 2e 20  20 42 6c 6f 63 6b 73 20  |e each.  Blocks |
00009f00  63 61 6e 20 62 65 20 6e  65 73 74 65 64 0a 20 20  |can be nested.  |
00009f10  20 20 20 20 20 20 20 69  6e 73 69 64 65 20 65 61  |       inside ea|
00009f20  63 68 20 6f 74 68 65 72  20 75 70 20 74 6f 20 33  |ch other up to 3|
00009f30  32 20 64 65 65 70 2e 20  20 41 6e 20 69 66 20 73  |2 deep.  An if s|
00009f40  74 61 74 65 6d 65 6e 74  20 28 66 6f 72 20 65 78  |tatement (for ex|
00009f50  61 6d 70 6c 65 29 20 69  73 20 61 0a 20 20 20 20  |ample) is a.    |
00009f60  20 20 20 20 20 73 69 6e  67 6c 65 20 73 74 61 74  |     single stat|
00009f70  65 6d 65 6e 74 20 65 76  65 6e 20 77 68 65 6e 20  |ement even when |
00009f80  69 74 20 63 6f 6e 74 61  69 6e 73 20 61 20 67 72  |it contains a gr|
00009f90  65 61 74 20 64 65 61 6c  20 6f 66 20 63 6f 64 65  |eat deal of code|
00009fa0  20 69 6e 20 69 74 73 0a  20 20 20 20 20 20 20 20  | in its.        |
00009fb0  20 62 6c 6f 63 6b 3a 20  73 6f 2c 20 66 6f 72 20  | block: so, for |
00009fc0  65 78 61 6d 70 6c 65 2c  0a 0a 20 20 20 20 20 20  |example,..      |
00009fd0  20 20 20 20 20 20 20 69  66 20 28 69 3e 31 29 0a  |       if (i>1).|
00009fe0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00009ff0  20 69 66 20 28 77 61 74  65 72 3c 31 30 29 0a 20  | if (water<10). |
0000a000  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000a010  20 20 20 20 20 70 72 69  6e 74 20 22 54 68 65 20  |     print "The |
0000a020  77 61 74 65 72 20 69 73  20 62 65 67 69 6e 6e 69  |water is beginni|
0000a030  6e 67 20 74 6f 20 77 6f  72 72 79 20 79 6f 75 2e  |ng to worry you.|
0000a040  22 3b 0a 0a 20 20 20 20  20 20 20 20 20 69 73 20  |";..         is |
0000a050  70 65 72 66 65 63 74 6c  79 20 6c 65 67 61 6c 2e  |perfectly legal.|
0000a060  20 20 28 4f 6e 65 20 73  6d 61 6c 6c 20 65 78 63  |  (One small exc|
0000a070  65 70 74 69 6f 6e 3a 20  61 6e 20 69 66 20 66 6f  |eption: an if fo|
0000a080  6c 6c 6f 77 65 64 20 62  79 20 61 6e 20 65 6c 73  |llowed by an els|
0000a090  65 0a 20 20 20 20 20 20  20 20 20 63 6f 75 6e 74  |e.         count|
0000a0a0  73 20 61 73 20 74 77 6f  20 65 78 70 72 65 73 73  |s as two express|
0000a0b0  69 6f 6e 73 2c 20 73 6f  20 69 6e 0a 0a 20 20 20  |ions, so in..   |
0000a0c0  20 20 20 20 20 20 20 20  20 20 69 66 20 28 69 3e  |          if (i>|
0000a0d0  31 29 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |1).             |
0000a0e0  20 20 20 20 69 66 20 28  77 61 74 65 72 3c 31 30  |    if (water<10|
0000a0f0  29 20 70 72 69 6e 74 20  22 47 6c 75 67 2e 2e 2e  |) print "Glug...|
0000a100  22 3b 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |";.             |
0000a110  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000a120  20 20 65 6c 73 65 20 70  72 69 6e 74 20 22 41 72  |  else print "Ar|
0000a130  72 67 68 68 2e 2e 2e 22  29 3b 0a 0a 20 20 20 20  |rghh...");..    |
0000a140  20 20 20 20 20 74 68 65  20 65 6c 73 65 20 62 65  |     the else be|
0000a150  6c 6f 6e 67 73 20 74 6f  20 74 68 65 20 5f 6f 75  |longs to the _ou|
0000a160  74 65 72 5f 20 69 66 2e  20 20 53 6f 20 69 74 27  |ter_ if.  So it'|
0000a170  73 20 77 69 73 65 20 74  6f 20 62 72 61 63 65 0a  |s wise to brace.|
0000a180  20 20 20 20 20 20 20 20  20 69 66 2e 2e 2e 65 6c  |         if...el|
0000a190  73 65 2e 2e 2e 20 65 78  70 72 65 73 73 69 6f 6e  |se... expression|
0000a1a0  73 20 61 73 20 6f 6e 65  20 62 6c 6f 63 6b 2e 29  |s as one block.)|
0000a1b0  0a 0a 20 20 20 20 20 20  20 20 20 5b 49 6e 20 70  |..         [In p|
0000a1c0  72 65 76 69 6f 75 73 20  65 64 69 74 69 6f 6e 73  |revious editions|
0000a1d0  20 6f 66 20 49 6e 66 6f  72 6d 2c 20 6d 75 63 68  | of Inform, much|
0000a1e0  20 6c 65 73 73 20 73 6f  70 68 69 73 74 69 63 61  | less sophistica|
0000a1f0  74 65 64 0a 20 20 20 20  20 20 20 20 20 63 6f 6e  |ted.         con|
0000a200  73 74 72 75 63 74 69 6f  6e 73 20 77 65 72 65 20  |structions were |
0000a210  61 6c 6c 6f 77 65 64 3a  20 63 6f 6e 64 69 74 69  |allowed: conditi|
0000a220  6f 6e 73 20 77 65 72 65  20 6d 75 63 68 20 73 69  |ons were much si|
0000a230  6d 70 6c 65 72 2c 20 61  6e 64 20 77 65 72 65 0a  |mpler, and were.|
0000a240  20 20 20 20 20 20 20 20  20 6e 6f 74 20 62 72 61  |         not bra|
0000a250  63 6b 65 74 65 64 2c 20  61 73 20 69 6e 3a 0a 0a  |cketed, as in:..|
0000a260  20 20 20 20 20 20 20 20  20 20 20 20 20 69 66 20  |             if |
0000a270  69 3d 3d 31 20 7b 20 70  72 69 6e 74 20 22 54 68  |i==1 { print "Th|
0000a280  65 20 77 61 74 65 72 20  72 69 73 65 73 21 22 3b  |e water rises!";|
0000a290  20 7d 0a 0a 20 20 20 20  20 20 20 20 20 54 68 69  | }..         Thi|
0000a2a0  73 20 73 79 6e 74 61 78  20 69 73 20 73 74 69 6c  |s syntax is stil|
0000a2b0  6c 20 70 65 72 6d 69 74  74 65 64 2e 20 20 42 75  |l permitted.  Bu|
0000a2c0  74 20 75 6e 6c 65 73 73  20 74 68 65 20 63 6f 6e  |t unless the con|
0000a2d0  64 69 74 69 6f 6e 20 69  73 0a 20 20 20 20 20 20  |dition is.      |
0000a2e0  20 20 20 62 72 61 63 6b  65 74 65 64 2c 20 74 68  |   bracketed, th|
0000a2f0  65 20 62 72 61 63 65 73  20 61 72 65 20 63 6f 6d  |e braces are com|
0000a300  70 75 6c 73 6f 72 79 20  69 6e 20 61 63 63 6f 72  |pulsory in accor|
0000a310  64 61 6e 63 65 20 77 69  74 68 20 6f 6c 64 2d 73  |dance with old-s|
0000a320  74 79 6c 65 0a 20 20 20  20 20 20 20 20 20 73 79  |tyle.         sy|
0000a330  6e 74 61 78 2e 5d 0a 0a  20 20 20 20 20 20 20 20  |ntax.]..        |
0000a340  20 41 73 20 74 68 65 20  72 65 61 64 65 72 20 68  | As the reader h|
0000a350  61 73 20 70 72 6f 62 61  62 6c 79 20 73 75 72 6d  |as probably surm|
0000a360  69 73 65 64 2c 20 77 65  20 68 61 76 65 20 22 69  |ised, we have "i|
0000a370  66 22 20 61 6e 64 20 6f  74 68 65 72 0a 20 20 20  |f" and other.   |
0000a380  20 20 20 20 20 20 73 74  61 6e 64 61 72 64 20 6c  |      standard l|
0000a390  6f 6f 70 73 3a 0a 0a 49  46 20 3c 63 6f 6e 64 69  |oops:..IF <condi|
0000a3a0  74 69 6f 6e 3e 20 20 20  20 20 20 20 20 20 20 20  |tion>           |
0000a3b0  20 20 20 20 20 20 45 78  65 63 75 74 65 20 69 66  |      Execute if|
0000a3c0  20 74 68 65 20 63 6f 6e  64 69 74 69 6f 6e 20 68  | the condition h|
0000a3d0  6f 6c 64 73 0a 20 20 7b  20 2e 2e 2e 20 63 6f 64  |olds.  { ... cod|
0000a3e0  65 20 2e 2e 2e 20 7d 0a  5b 20 45 4c 53 45 0a 20  |e ... }.[ ELSE. |
0000a3f0  20 7b 20 2e 2e 2e 20 6f  74 68 65 72 20 2e 2e 2e  | { ... other ...|
0000a400  20 7d 20 5d 20 20 20 20  20 20 20 20 20 20 5b 6f  | } ]          [o|
0000a410  72 20 65 78 65 63 75 74  65 20 74 68 69 73 20 69  |r execute this i|
0000a420  66 20 6e 6f 74 5d 0a 0a  57 48 49 4c 45 20 3c 63  |f not]..WHILE <c|
0000a430  6f 6e 64 69 74 69 6f 6e  3e 20 20 20 20 20 20 20  |ondition>       |
0000a440  20 20 20 20 20 20 20 45  78 65 63 75 74 65 20 77  |       Execute w|
0000a450  68 69 6c 65 20 74 68 65  20 63 6f 6e 64 69 74 69  |hile the conditi|
0000a460  6f 6e 20 68 6f 6c 64 73  0a 20 20 7b 20 2e 2e 2e  |on holds.  { ...|
0000a470  20 63 6f 64 65 20 2e 2e  2e 20 7d 0a 0a 44 4f 20  | code ... }..DO |
0000a480  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000a490  20 20 20 20 20 20 20 20  20 20 20 20 45 78 65 63  |            Exec|
0000a4a0  75 74 65 20 75 6e 74 69  6c 20 74 68 65 20 63 6f  |ute until the co|
0000a4b0  6e 64 69 74 69 6f 6e 20  66 61 69 6c 73 0a 20 20  |ndition fails.  |
0000a4c0  7b 20 2e 2e 2e 20 63 6f  64 65 20 2e 2e 2e 20 7d  |{ ... code ... }|
0000a4d0  0a 55 4e 54 49 4c 20 3c  63 6f 6e 64 69 74 69 6f  |.UNTIL <conditio|
0000a4e0  6e 3e 0a 0a 20 20 20 20  20 20 20 20 20 61 6e 64  |n>..         and|
0000a4f0  20 61 6c 73 6f 20 61 20  22 66 6f 72 22 20 6c 6f  | also a "for" lo|
0000a500  6f 70 20 77 68 69 63 68  20 69 73 20 71 75 69 74  |op which is quit|
0000a510  65 20 70 6f 77 65 72 66  75 6c 2e 20 20 49 6e 66  |e powerful.  Inf|
0000a520  6f 72 6d 20 75 73 65 64  20 74 6f 0a 20 20 20 20  |orm used to.    |
0000a530  20 20 20 20 20 69 6d 70  6c 65 6d 65 6e 74 20 6f  |     implement o|
0000a540  6e 6c 79 20 61 20 42 41  53 49 43 2d 73 74 79 6c  |nly a BASIC-styl|
0000a550  65 20 46 4f 52 20 6c 6f  6f 70 2c 20 62 75 74 20  |e FOR loop, but |
0000a560  69 73 20 6e 6f 77 20 61  62 6c 65 20 74 6f 20 63  |is now able to c|
0000a570  6f 64 65 20 61 0a 20 20  20 20 20 20 20 20 20 43  |ode a.         C|
0000a580  2d 73 74 79 6c 65 20 6f  6e 65 2e 20 20 54 68 65  |-style one.  The|
0000a590  20 6f 6c 64 2c 20 73 69  6d 70 6c 65 72 20 73 74  | old, simpler st|
0000a5a0  79 6c 65 20 6c 6f 6f 6b  73 20 6c 69 6b 65 3a 0a  |yle looks like:.|
0000a5b0  0a 46 4f 52 20 3c 76 61  72 3e 20 3c 69 6e 69 74  |.FOR <var> <init|
0000a5c0  3e 20 54 4f 20 3c 66 69  6e 61 6c 3e 20 20 20 20  |> TO <final>    |
0000a5d0  45 78 65 63 75 74 65 20  74 68 65 20 63 6f 64 65  |Execute the code|
0000a5e0  20 69 74 65 72 61 74 69  76 65 6c 79 2c 20 73 74  | iteratively, st|
0000a5f0  61 72 74 69 6e 67 20 77  69 74 68 0a 20 20 7b 20  |arting with.  { |
0000a600  2e 2e 2e 20 63 6f 64 65  20 2e 2e 2e 20 7d 20 20  |... code ... }  |
0000a610  20 20 20 20 20 20 20 20  20 20 20 3c 76 61 72 3e  |           <var>|
0000a620  20 73 65 74 20 74 6f 20  3c 69 6e 69 74 3e 20 61  | set to <init> a|
0000a630  6e 64 20 69 6e 63 72 65  6d 65 6e 74 69 6e 67 20  |nd incrementing |
0000a640  69 74 20 65 61 63 68 0a  20 20 20 20 20 20 20 20  |it each.        |
0000a650  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000a660  20 20 20 20 20 20 20 74  69 6d 65 20 75 6e 74 69  |       time unti|
0000a670  6c 20 69 74 20 69 73 20  62 69 67 67 65 72 20 74  |l it is bigger t|
0000a680  68 61 6e 20 3c 66 69 6e  61 6c 3e 3a 20 69 66 20  |han <final>: if |
0000a690  74 68 65 0a 20 20 20 20  20 20 20 20 20 20 20 20  |the.            |
0000a6a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000a6b0  20 20 20 66 69 6e 61 6c  20 76 61 6c 75 65 20 69  |   final value i|
0000a6c0  73 20 61 63 74 75 61 6c  6c 79 20 6c 65 73 73 20  |s actually less |
0000a6d0  74 68 61 6e 20 74 68 65  20 69 6e 69 74 69 61 6c  |than the initial|
0000a6e0  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
0000a6f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000a700  6f 6e 65 2c 20 74 68 65  6e 20 64 6f 6e 27 74 20  |one, then don't |
0000a710  65 78 65 63 75 74 65 20  74 68 65 20 63 6f 64 65  |execute the code|
0000a720  20 61 74 20 61 6c 6c 0a  0a 20 20 20 20 20 20 20  | at all..       |
0000a730  20 20 28 61 67 61 69 6e  2c 20 62 72 61 63 65 73  |  (again, braces|
0000a740  20 61 72 65 20 63 6f 6d  70 75 6c 73 6f 72 79 20  | are compulsory |
0000a750  66 6f 72 20 73 75 63 68  20 61 20 75 73 61 67 65  |for such a usage|
0000a760  29 20 62 75 74 20 74 68  65 20 6e 65 77 20 73 74  |) but the new st|
0000a770  79 6c 65 20 69 73 0a 0a  46 4f 52 20 28 20 3c 69  |yle is..FOR ( <i|
0000a780  6e 69 74 69 61 6c 20 61  73 73 69 67 6e 6d 65 6e  |nitial assignmen|
0000a790  74 3e 20 3a 20 3c 63 6f  6e 64 69 74 69 6f 6e 3e  |t> : <condition>|
0000a7a0  20 3a 20 3c 65 6e 64 20  61 73 73 69 67 6e 6d 65  | : <end assignme|
0000a7b0  6e 74 3e 20 29 0a 20 20  7b 20 2e 2e 2e 20 63 6f  |nt> ).  { ... co|
0000a7c0  64 65 20 2e 2e 2e 20 7d  20 20 0a 0a 20 20 20 20  |de ... }  ..    |
0000a7d0  20 20 20 20 20 77 68 69  63 68 20 63 61 72 72 69  |     which carri|
0000a7e0  65 73 20 6f 75 74 20 74  68 65 20 69 6e 69 74 69  |es out the initi|
0000a7f0  61 6c 20 61 73 73 69 67  6e 6d 65 6e 74 2c 20 74  |al assignment, t|
0000a800  68 65 6e 20 65 78 65 63  75 74 65 73 20 74 68 65  |hen executes the|
0000a810  20 63 6f 64 65 0a 20 20  20 20 20 20 20 20 20 66  | code.         f|
0000a820  6f 72 20 61 73 20 6c 6f  6e 67 20 61 73 20 74 68  |or as long as th|
0000a830  65 20 63 6f 6e 64 69 74  69 6f 6e 20 68 6f 6c 64  |e condition hold|
0000a840  73 2c 20 65 78 65 63 75  74 69 6e 67 20 74 68 65  |s, executing the|
0000a850  20 65 6e 64 20 61 73 73  69 67 6e 6d 65 6e 74 0a  | end assignment.|
0000a860  20 20 20 20 20 20 20 20  20 61 66 74 65 72 20 65  |         after e|
0000a870  61 63 68 20 70 61 73 73  20 74 68 72 6f 75 67 68  |ach pass through|
0000a880  20 74 68 65 20 63 6f 64  65 2e 20 20 46 6f 72 20  | the code.  For |
0000a890  69 6e 73 74 61 6e 63 65  2c 0a 0a 20 20 20 20 20  |instance,..     |
0000a8a0  20 20 20 20 20 20 20 20  66 6f 72 20 69 20 31 20  |        for i 1 |
0000a8b0  74 6f 20 31 30 20 7b 20  70 72 69 6e 74 20 69 2c  |to 10 { print i,|
0000a8c0  20 22 20 22 3b 20 7d 0a  0a 20 20 20 20 20 20 20  | " "; }..       |
0000a8d0  20 20 20 20 20 20 66 6f  72 20 28 69 3d 31 3a 69  |      for (i=1:i|
0000a8e0  3c 3d 31 30 3a 69 2b 2b  29 20 70 72 69 6e 74 20  |<=10:i++) print |
0000a8f0  69 2c 20 22 20 22 3b 0a  0a 20 20 20 20 20 20 20  |i, " ";..       |
0000a900  20 20 61 72 65 20 6f 6c  64 2d 20 61 6e 64 20 6e  |  are old- and n|
0000a910  65 77 2d 73 74 79 6c 65  20 77 61 79 73 20 74 6f  |ew-style ways to|
0000a920  20 77 72 69 74 65 20 74  68 65 20 73 61 6d 65 20  | write the same |
0000a930  6c 6f 6f 70 2e 20 20 42  75 74 20 74 68 65 20 6e  |loop.  But the n|
0000a940  65 77 0a 20 20 20 20 20  20 20 20 20 73 74 79 6c  |ew.         styl|
0000a950  65 20 69 73 20 63 61 70  61 62 6c 65 20 6f 66 20  |e is capable of |
0000a960  6d 75 63 68 20 6d 6f 72  65 2e 20 20 46 6f 72 20  |much more.  For |
0000a970  6f 6e 65 20 74 68 69 6e  67 2c 20 73 65 76 65 72  |one thing, sever|
0000a980  61 6c 20 64 69 66 66 65  72 65 6e 74 0a 20 20 20  |al different.   |
0000a990  20 20 20 20 20 20 61 73  73 69 67 6e 6d 65 6e 74  |      assignment|
0000a9a0  73 20 61 72 65 20 6c 65  67 61 6c 20 61 74 20 6f  |s are legal at o|
0000a9b0  6e 63 65 2c 20 69 66 20  73 65 70 61 72 61 74 65  |nce, if separate|
0000a9c0  64 20 62 79 20 63 6f 6d  6d 61 73 2e 20 20 53 6f  |d by commas.  So|
0000a9d0  2c 20 66 6f 72 0a 20 20  20 20 20 20 20 20 20 65  |, for.         e|
0000a9e0  78 61 6d 70 6c 65 2c 0a  0a 20 20 20 20 20 20 20  |xample,..       |
0000a9f0  20 20 20 20 20 20 66 6f  72 20 28 69 3d 30 2c 6a  |      for (i=0,j|
0000aa00  3d 31 30 3a 69 3c 31 30  3a 69 2b 2b 2c 6a 2d 2d  |=10:i<10:i++,j--|
0000aa10  29 20 70 72 69 6e 74 20  69 2c 20 22 20 2b 20 22  |) print i, " + "|
0000aa20  2c 20 6a 2c 20 22 20 3d  20 22 2c 20 69 2b 6a 2c  |, j, " = ", i+j,|
0000aa30  20 22 5e 22 3b 0a 0a 20  20 20 20 20 20 20 20 20  | "^";..         |
0000aa40  41 6c 6c 20 74 68 72 65  65 20 63 6c 61 75 73 65  |All three clause|
0000aa50  73 20 61 72 65 20 6f 70  74 69 6f 6e 61 6c 3a 20  |s are optional: |
0000aa60  69 66 20 74 68 65 20 61  73 73 69 67 6e 6d 65 6e  |if the assignmen|
0000aa70  74 73 20 61 72 65 20 6d  69 73 73 65 64 20 6f 75  |ts are missed ou|
0000aa80  74 2c 0a 20 20 20 20 20  20 20 20 20 6e 6f 74 68  |t,.         noth|
0000aa90  69 6e 67 20 69 73 20 64  6f 6e 65 20 61 74 20 74  |ing is done at t|
0000aaa0  68 65 20 61 70 70 72 6f  70 72 69 61 74 65 20 6d  |he appropriate m|
0000aab0  6f 6d 65 6e 74 3b 20 69  66 20 74 68 65 20 63 6f  |oment; if the co|
0000aac0  6e 64 69 74 69 6f 6e 20  69 73 0a 20 20 20 20 20  |ndition is.     |
0000aad0  20 20 20 20 6d 69 73 73  65 64 20 6f 75 74 2c 20  |    missed out, |
0000aae0  69 74 20 69 73 20 61 6c  77 61 79 73 20 74 72 75  |it is always tru|
0000aaf0  65 2e 20 20 53 6f 2c 20  66 6f 72 20 69 6e 73 74  |e.  So, for inst|
0000ab00  61 6e 63 65 2c 0a 0a 20  20 20 20 20 20 20 20 20  |ance,..         |
0000ab10  20 20 20 20 66 6f 72 20  28 3a 3a 29 20 70 72 69  |    for (::) pri|
0000ab20  6e 74 20 22 48 61 21 5e  22 3b 0a 0a 20 20 20 20  |nt "Ha!^";..    |
0000ab30  20 20 20 20 20 6c 61 75  67 68 73 20 6d 61 6e 69  |     laughs mani|
0000ab40  61 63 61 6c 6c 79 20 66  6f 72 65 76 65 72 2e 0a  |acally forever..|
0000ab50  0a 0a 20 20 20 20 20 20  20 20 20 41 20 75 73 65  |..         A use|
0000ab60  66 75 6c 20 6c 6f 6f 70  20 63 6f 6e 73 74 72 75  |ful loop constru|
0000ab70  63 74 69 6f 6e 20 69 6e  20 41 64 76 65 6e 74 75  |ction in Adventu|
0000ab80  72 65 20 67 61 6d 65 73  20 69 73 3a 0a 0a 4f 42  |re games is:..OB|
0000ab90  4a 45 43 54 4c 4f 4f 50  20 28 20 3c 76 61 72 3e  |JECTLOOP ( <var>|
0000aba0  20 66 72 6f 6d 20 3c 6f  62 6a 3e 20 29 20 20 7b  | from <obj> )  {|
0000abb0  20 2e 2e 2e 20 63 6f 64  65 20 2e 2e 2e 20 7d 0a  | ... code ... }.|
0000abc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000abd0  20 20 20 6e 65 61 72 20  3c 6f 62 6a 3e 0a 20 20  |   near <obj>.  |
0000abe0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000abf0  20 69 6e 20 20 20 3c 6f  62 6a 3e 0a 0a 20 20 20  | in   <obj>..   |
0000ac00  20 20 20 20 20 20 77 68  69 63 68 20 6c 6f 6f 70  |      which loop|
0000ac10  73 20 74 68 65 20 76 61  72 69 61 62 6c 65 20 74  |s the variable t|
0000ac20  68 72 6f 75 67 68 20 74  68 65 20 6f 62 6a 65 63  |hrough the objec|
0000ac30  74 20 74 72 65 65 3a 20  65 69 74 68 65 72 0a 0a  |t tree: either..|
0000ac40  20 20 20 20 20 20 20 20  20 20 20 66 72 6f 6d 20  |           from |
0000ac50  74 68 65 20 67 69 76 65  6e 20 6f 62 6a 65 63 74  |the given object|
0000ac60  20 74 68 72 6f 75 67 68  20 61 6c 6c 20 69 74 73  | through all its|
0000ac70  20 73 69 62 6c 69 6e 67  73 2c 20 6f 72 0a 20 20  | siblings, or.  |
0000ac80  20 20 20 20 20 20 20 20  20 74 68 72 6f 75 67 68  |         through|
0000ac90  20 61 6c 6c 20 6f 62 6a  65 63 74 73 20 77 69 74  | all objects wit|
0000aca0  68 20 74 68 65 20 73 61  6d 65 20 70 61 72 65 6e  |h the same paren|
0000acb0  74 20 61 73 20 74 68 65  20 67 69 76 65 6e 20 6f  |t as the given o|
0000acc0  62 6a 65 63 74 2c 20 6f  72 0a 20 20 20 20 20 20  |bject, or.      |
0000acd0  20 20 20 20 20 74 68 72  6f 75 67 68 20 61 6c 6c  |     through all|
0000ace0  20 63 68 69 6c 64 72 65  6e 20 6f 66 20 74 68 65  | children of the|
0000acf0  20 67 69 76 65 6e 20 6f  62 6a 65 63 74 2e 0a 0a  | given object...|
0000ad00  20 20 20 20 20 20 20 20  20 53 6f 20 66 6f 72 20  |         So for |
0000ad10  69 6e 73 74 61 6e 63 65  0a 0a 20 20 20 20 20 20  |instance..      |
0000ad20  20 20 20 20 20 20 20 6f  62 6a 65 63 74 6c 6f 6f  |       objectloo|
0000ad30  70 20 28 78 20 69 6e 20  6c 61 6d 70 29 20 7b 20  |p (x in lamp) { |
0000ad40  70 72 69 6e 74 5f 6f 62  6a 20 78 3b 20 6e 65 77  |print_obj x; new|
0000ad50  5f 6c 69 6e 65 3b 20 7d  0a 0a 20 20 20 20 20 20  |_line; }..      |
0000ad60  20 20 20 69 73 20 65 71  75 69 76 61 6c 65 6e 74  |   is equivalent|
0000ad70  20 74 6f 0a 0a 20 20 20  20 20 20 20 20 20 20 20  | to..           |
0000ad80  20 20 66 6f 72 20 28 78  3d 63 68 69 6c 64 28 6c  |  for (x=child(l|
0000ad90  61 6d 70 29 3a 20 78 7e  3d 30 3a 20 78 3d 73 69  |amp): x~=0: x=si|
0000ada0  62 6c 69 6e 67 28 78 29  29 0a 20 20 20 20 20 20  |bling(x)).      |
0000adb0  20 20 20 20 20 20 20 7b  20 70 72 69 6e 74 5f 6f  |       { print_o|
0000adc0  62 6a 20 78 3b 20 6e 65  77 5f 6c 69 6e 65 3b 20  |bj x; new_line; |
0000add0  7d 0a 0a 20 20 20 20 20  20 20 20 20 62 75 74 20  |}..         but |
0000ade0  74 68 65 20 73 68 6f 72  74 68 61 6e 64 20 69 73  |the shorthand is|
0000adf0  20 63 6f 6e 76 65 6e 69  65 6e 74 2e 0a 0a 57 41  | convenient...WA|
0000ae00  52 4e 49 4e 47 3a 20 57  68 65 6e 20 6c 6f 6f 70  |RNING: When loop|
0000ae10  69 6e 67 20 74 68 72 6f  75 67 68 20 74 68 65 20  |ing through the |
0000ae20  6f 62 6a 65 63 74 20 74  72 65 65 2c 20 62 65 20  |object tree, be |
0000ae30  63 61 72 65 66 75 6c 20  69 66 20 79 6f 75 20 61  |careful if you a|
0000ae40  72 65 20 61 6c 74 65 72  69 6e 67 0a 20 20 20 2a  |re altering.   *|
0000ae50  20 20 20 20 20 69 74 20  61 74 20 74 68 65 20 73  |     it at the s|
0000ae60  61 6d 65 20 74 69 6d 65  2e 20 20 46 6f 72 20 69  |ame time.  For i|
0000ae70  6e 73 74 61 6e 63 65 2c  0a 20 20 2f 21 5c 20 20  |nstance,.  /!\  |
0000ae80  20 20 20 20 6f 62 6a 65  63 74 6c 6f 6f 70 20 28  |    objectloop (|
0000ae90  78 20 69 6e 20 72 75 63  6b 73 61 63 6b 29 20 72  |x in rucksack) r|
0000aea0  65 6d 6f 76 65 20 78 3b  0a 20 2a 2d 2d 2d 2a 20  |emove x;. *---* |
0000aeb0  20 20 69 73 20 6c 69 6b  65 6c 79 20 74 6f 20 67  |  is likely to g|
0000aec0  6f 20 68 6f 72 72 69 62  6c 79 20 77 72 6f 6e 67  |o horribly wrong|
0000aed0  20 2d 20 69 74 27 73 20  73 61 66 65 72 20 6e 6f  | - it's safer no|
0000aee0  74 20 74 6f 20 63 75 74  20 64 6f 77 6e 20 61 20  |t to cut down a |
0000aef0  74 72 65 65 0a 20 20 20  20 20 20 20 20 20 77 68  |tree.         wh|
0000af00  69 6c 65 20 61 63 74 75  61 6c 6c 79 20 63 6c 69  |ile actually cli|
0000af10  6d 62 69 6e 67 20 69 74  2e 0a 0a 20 20 20 20 20  |mbing it...     |
0000af20  20 20 20 20 49 74 20 69  73 20 6c 65 67 61 6c 20  |    It is legal |
0000af30  74 6f 20 6a 75 6d 70 20  69 6e 20 61 6e 64 20 6f  |to jump in and o|
0000af40  75 74 20 6f 66 20 6c 6f  6f 70 73 20 69 6e 20 74  |ut of loops in t|
0000af50  68 65 20 6f 62 76 69 6f  75 73 20 77 61 79 2c 20  |he obvious way, |
0000af60  62 75 74 20 74 68 69 73  0a 20 20 20 20 20 20 20  |but this.       |
0000af70  20 20 6d 61 6b 65 73 20  66 6f 72 20 73 6f 6d 65  |  makes for some|
0000af80  77 68 61 74 20 75 6e 61  74 74 72 61 63 74 69 76  |what unattractiv|
0000af90  65 20 63 6f 64 65 2e 20  20 28 41 6e 64 20 74 68  |e code.  (And th|
0000afa0  61 74 20 77 6f 75 6c 64  20 6e 65 76 65 72 20 64  |at would never d|
0000afb0  6f 2e 29 0a 20 20 20 20  20 20 20 20 20 41 20 63  |o.).         A c|
0000afc0  6f 6d 70 72 6f 6d 69 73  65 20 6d 65 61 73 75 72  |ompromise measur|
0000afd0  65 20 69 73 3a 0a 0a 42  52 45 41 4b 20 20 20 20  |e is:..BREAK    |
0000afe0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000aff0  20 20 20 20 20 20 42 72  65 61 6b 20 6f 75 74 20  |      Break out |
0000b000  6f 66 20 74 68 65 20 63  75 72 72 65 6e 74 20 6c  |of the current l|
0000b010  6f 6f 70 20 28 6e 6f 74  20 62 6c 6f 63 6b 29 0a  |oop (not block).|
0000b020  0a 20 20 20 20 20 20 20  20 20 48 6f 77 65 76 65  |.         Howeve|
0000b030  72 2c 20 6e 6f 20 6c 61  6e 67 75 61 67 65 20 77  |r, no language w|
0000b040  6f 75 6c 64 20 62 65 20  63 6f 6d 70 6c 65 74 65  |ould be complete|
0000b050  20 77 69 74 68 6f 75 74  3a 0a 0a 4a 55 4d 50 20  | without:..JUMP |
0000b060  3c 6c 61 62 65 6c 3e 20  20 20 20 20 20 20 20 20  |<label>         |
0000b070  20 20 20 20 20 20 20 20  20 20 4a 75 6d 70 20 74  |          Jump t|
0000b080  6f 20 74 68 65 20 6c 61  62 65 6c 20 28 77 61 72  |o the label (war|
0000b090  6e 69 6e 67 3a 20 69 74  20 69 73 20 75 6e 73 61  |ning: it is unsa|
0000b0a0  66 65 20 74 6f 0a 20 20  20 20 20 20 20 20 20 20  |fe to.          |
0000b0b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b0c0  20 20 20 20 20 6a 75 6d  70 20 6f 75 74 20 6f 66  |     jump out of|
0000b0d0  20 6f 6e 65 20 72 6f 75  74 69 6e 65 20 69 6e 74  | one routine int|
0000b0e0  6f 20 61 6e 6f 74 68 65  72 29 0a 0a 20 20 20 20  |o another)..    |
0000b0f0  20 20 20 20 20 41 73 20  61 20 64 65 6d 6f 6e 73  |     As a demons|
0000b100  74 72 61 74 69 6f 6e 20  6f 66 20 74 68 65 20 6c  |tration of the l|
0000b110  6f 6f 70 20 63 6f 6e 73  74 72 75 63 74 73 2c 20  |oop constructs, |
0000b120  68 65 72 65 20 69 73 20  61 6e 20 69 6e 65 66 66  |here is an ineff|
0000b130  69 63 69 65 6e 74 0a 20  20 20 20 20 20 20 20 20  |icient.         |
0000b140  72 6f 75 74 69 6e 65 20  74 6f 20 74 72 79 3a 20  |routine to try: |
0000b150  50 72 69 6d 65 73 28 31  30 30 29 20 73 68 6f 75  |Primes(100) shou|
0000b160  6c 64 20 70 72 69 6e 74  20 6f 75 74 20 70 72 69  |ld print out pri|
0000b170  6d 65 20 66 61 63 74 6f  72 69 73 61 74 69 6f 6e  |me factorisation|
0000b180  73 20 6f 66 0a 20 20 20  20 20 20 20 20 20 74 68  |s of.         th|
0000b190  65 20 6e 75 6d 62 65 72  73 20 66 72 6f 6d 20 32  |e numbers from 2|
0000b1a0  20 74 6f 20 31 30 30 2e  0a 0a 20 20 20 20 20 20  | to 100...      |
0000b1b0  20 20 20 20 20 20 20 5b  20 50 72 69 6d 65 73 20  |       [ Primes |
0000b1c0  69 20 6a 20 6b 20 6c 3b  0a 20 20 20 20 20 20 20  |i j k l;.       |
0000b1d0  20 20 20 20 20 20 20 20  66 6f 72 20 28 6a 3d 32  |        for (j=2|
0000b1e0  3a 6a 3c 3d 69 3a 6a 2b  2b 29 0a 20 20 20 20 20  |:j<=i:j++).     |
0000b1f0  20 20 20 20 20 20 20 20  20 20 7b 20 20 20 70 72  |          {   pr|
0000b200  69 6e 74 20 6a 2c 20 22  20 3a 20 22 3b 0a 20 20  |int j, " : ";.  |
0000b210  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b220  20 6c 3d 6a 3b 0a 20 20  20 20 20 20 20 20 20 20  | l=j;.          |
0000b230  20 20 20 20 20 20 20 20  20 77 68 69 6c 65 20 28  |         while (|
0000b240  6c 20 3e 20 31 29 0a 20  20 20 20 20 20 20 20 20  |l > 1).         |
0000b250  20 20 20 20 20 20 20 20  20 20 20 20 20 20 66 6f  |              fo|
0000b260  72 20 28 6b 3d 32 3a 6b  3c 3d 6c 3a 6b 2b 2b 29  |r (k=2:k<=l:k++)|
0000b270  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
0000b280  20 20 20 20 20 20 20 20  20 20 20 20 69 66 20 28  |            if (|
0000b290  6c 25 6b 20 3d 3d 20 30  29 0a 20 20 20 20 20 20  |l%k == 0).      |
0000b2a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b2b0  20 20 20 20 20 7b 20 20  20 6c 3d 6c 2f 6b 3b 0a  |     {   l=l/k;.|
0000b2c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b2d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 70  |               p|
0000b2e0  72 69 6e 74 20 6b 2c 20  22 20 22 3b 0a 20 20 20  |rint k, " ";.   |
0000b2f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b300  20 20 20 20 20 20 20 20  20 20 20 20 62 72 65 61  |            brea|
0000b310  6b 3b 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |k;.             |
0000b320  20 20 20 20 20 20 20 20  20 20 20 20 20 20 7d 0a  |              }.|
0000b330  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b340  20 20 20 6e 65 77 5f 6c  69 6e 65 3b 0a 20 20 20  |   new_line;.   |
0000b350  20 20 20 20 20 20 20 20  20 20 20 20 7d 0a 20 20  |            }.  |
0000b360  20 20 20 20 20 20 20 20  20 20 20 5d 3b 0a 0a 20  |           ];.. |
0000b370  20 20 20 20 20 20 20 20  28 41 20 70 72 6f 67 72  |        (A progr|
0000b380  61 6d 20 6f 66 20 68 69  73 74 6f 72 69 63 61 6c  |am of historical|
0000b390  20 76 61 6c 75 65 20 6f  6e 6c 79 20 2d 20 73 6c  | value only - sl|
0000b3a0  69 67 68 74 6c 79 20 6d  6f 72 65 20 63 6c 75 6d  |ightly more clum|
0000b3b0  73 69 6c 79 0a 20 20 20  20 20 20 20 20 20 65 78  |sily.         ex|
0000b3c0  70 72 65 73 73 65 64 2c  20 74 68 69 73 20 77 61  |pressed, this wa|
0000b3d0  73 20 74 68 65 20 66 69  72 73 74 20 6e 6f 6e 2d  |s the first non-|
0000b3e0  74 72 69 76 69 61 6c 20  70 72 6f 67 72 61 6d 20  |trivial program |
0000b3f0  49 6e 66 6f 72 6d 20 63  6f 6d 70 69 6c 65 64 2e  |Inform compiled.|
0000b400  29 0a 0a 0a 28 64 29 20  43 61 75 73 69 6e 67 20  |)...(d) Causing |
0000b410  41 63 74 69 6f 6e 73 0a  2d 2d 2d 2d 2d 2d 2d 2d  |Actions.--------|
0000b420  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 0a 20 20 20  |-----------..   |
0000b430  20 20 20 20 20 20 41 20  73 70 65 63 69 61 6c 20  |      A special |
0000b440  66 6f 72 6d 20 6f 66 20  63 6f 6d 6d 61 6e 64 20  |form of command |
0000b450  63 61 75 73 65 73 20 61  6e 20 61 63 74 69 6f 6e  |causes an action|
0000b460  20 74 6f 20 68 61 70 70  65 6e 20 61 73 20 69 66  | to happen as if|
0000b470  20 74 68 65 0a 20 20 20  20 20 20 20 20 20 70 6c  | the.         pl|
0000b480  61 79 65 72 20 68 61 64  20 74 79 70 65 64 20 69  |ayer had typed i|
0000b490  74 20 61 74 20 74 68 65  20 6b 65 79 62 6f 61 72  |t at the keyboar|
0000b4a0  64 2c 20 61 63 63 6f 72  64 69 6e 67 20 74 6f 20  |d, according to |
0000b4b0  74 68 65 20 6e 6f 72 6d  61 6c 20 67 61 6d 65 0a  |the normal game.|
0000b4c0  20 20 20 20 20 20 20 20  20 72 75 6c 65 73 2e 20  |         rules. |
0000b4d0  20 54 68 69 73 20 74 61  6b 65 73 20 65 69 74 68  | This takes eith|
0000b4e0  65 72 20 74 68 65 20 66  6f 72 6d 0a 0a 3c 20 41  |er the form..< A|
0000b4f0  63 74 69 6f 6e 20 5b 66  69 72 73 74 2d 6f 62 6a  |ction [first-obj|
0000b500  65 63 74 20 5b 73 65 63  6f 6e 64 2d 6f 62 6a 65  |ect [second-obje|
0000b510  63 74 5d 5d 20 3e 0a 0a  20 20 20 20 20 20 20 20  |ct]] >..        |
0000b520  20 6f 72 0a 0a 3c 3c 20  41 63 74 69 6f 6e 20 5b  | or..<< Action [|
0000b530  66 69 72 73 74 2d 6f 62  6a 65 63 74 20 5b 73 65  |first-object [se|
0000b540  63 6f 6e 64 2d 6f 62 6a  65 63 74 5d 5d 20 3e 3e  |cond-object]] >>|
0000b550  0a 0a 20 20 20 20 20 20  20 20 20 54 68 65 20 6c  |..         The l|
0000b560  61 74 74 65 72 20 72 65  74 75 72 6e 73 20 22 74  |atter returns "t|
0000b570  72 75 65 22 20 66 72 6f  6d 20 74 68 65 20 63 75  |rue" from the cu|
0000b580  72 72 65 6e 74 20 72 6f  75 74 69 6e 65 20 61 66  |rrent routine af|
0000b590  74 65 72 20 63 61 72 72  79 69 6e 67 0a 20 20 20  |ter carrying.   |
0000b5a0  20 20 20 20 20 20 6f 75  74 20 74 68 65 20 61 63  |      out the ac|
0000b5b0  74 69 6f 6e 2e 20 20 54  68 65 20 66 6f 72 6d 65  |tion.  The forme|
0000b5c0  72 20 64 6f 65 73 20 6e  6f 74 20 72 65 74 75 72  |r does not retur|
0000b5d0  6e 2e 0a 0a 20 20 20 20  20 20 20 20 20 28 49 6e  |n...         (In|
0000b5e0  66 6f 72 6d 20 64 6f 65  73 20 76 65 72 79 20 6c  |form does very l|
0000b5f0  69 74 74 6c 65 20 74 6f  20 61 63 68 69 65 76 65  |ittle to achieve|
0000b600  20 74 68 69 73 3a 20 69  74 20 73 69 6d 70 6c 79  | this: it simply|
0000b610  20 67 65 6e 65 72 61 74  65 73 20 61 0a 20 20 20  | generates a.   |
0000b620  20 20 20 20 20 20 66 75  6e 63 74 69 6f 6e 20 63  |      function c|
0000b630  61 6c 6c 2c 20 77 68 69  63 68 20 74 68 65 20 6c  |all, which the l|
0000b640  69 62 72 61 72 79 20 69  73 20 65 78 70 65 63 74  |ibrary is expect|
0000b650  65 64 20 74 6f 20 70 72  6f 76 69 64 65 2e 29 0a  |ed to provide.).|
0000b660  0a 0a 0a 28 65 29 20 4d  69 73 63 65 6c 6c 61 6e  |...(e) Miscellan|
0000b670  65 6f 75 73 20 61 6e 64  20 72 61 72 65 6c 79 20  |eous and rarely |
0000b680  6e 65 65 64 65 64 20 63  6f 6d 6d 61 6e 64 73 0a  |needed commands.|
0000b690  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0000b6b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0a 0a 0a 49  |------------...I|
0000b6c0  4e 43 20 3c 76 61 72 3e  20 20 20 20 20 20 20 20  |NC <var>        |
0000b6d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 49 6e  |              In|
0000b6e0  63 72 65 6d 65 6e 74 20  76 61 72 69 61 62 6c 65  |crement variable|
0000b6f0  0a 44 45 43 20 3c 76 61  72 3e 20 20 20 20 20 20  |.DEC <var>      |
0000b700  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b710  44 65 63 72 65 6d 65 6e  74 20 0a 0a 50 55 54 20  |Decrement ..PUT |
0000b720  3c 61 64 64 72 3e 20 42  59 54 45 20 3c 69 6e 64  |<addr> BYTE <ind|
0000b730  65 78 3e 20 3c 76 3e 20  20 20 20 57 72 69 74 65  |ex> <v>    Write|
0000b740  20 62 79 74 65 20 76 61  6c 75 65 20 76 20 69 6e  | byte value v in|
0000b750  74 6f 20 69 6e 64 65 78  20 62 79 74 65 20 61 66  |to index byte af|
0000b760  74 65 72 20 61 64 64 72  0a 50 55 54 20 3c 61 64  |ter addr.PUT <ad|
0000b770  64 72 3e 20 57 4f 52 44  20 3c 69 6e 64 65 78 3e  |dr> WORD <index>|
0000b780  20 3c 76 3e 20 20 20 20  2e 2e 2e 61 6e 64 20 73  | <v>    ...and s|
0000b790  69 6d 69 6c 61 72 6c 79  20 66 6f 72 20 77 6f 72  |imilarly for wor|
0000b7a0  64 73 0a 0a 20 20 20 20  20 20 20 20 20 28 74 68  |ds..         (th|
0000b7b0  65 73 65 20 61 72 65 20  6e 6f 77 20 73 75 70 65  |ese are now supe|
0000b7c0  72 63 65 64 65 64 20 62  79 20 74 68 65 20 6e 65  |rceded by the ne|
0000b7d0  77 20 61 73 73 69 67 6e  6d 65 6e 74 20 66 6f 72  |w assignment for|
0000b7e0  6d 73 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |ms.             |
0000b7f0  61 64 64 72 2d 3e 69 6e  64 65 78 3d 76 3b 0a 20  |addr->index=v;. |
0000b800  20 20 20 20 20 20 20 20  20 20 20 20 61 64 64 72  |            addr|
0000b810  2d 2d 3e 69 6e 64 65 78  3d 76 3b 0a 20 20 20 20  |-->index=v;.    |
0000b820  20 20 20 20 20 62 75 74  20 74 68 65 20 63 6f 6d  |     but the com|
0000b830  6d 61 6e 64 73 20 61 72  65 20 72 65 74 61 69 6e  |mands are retain|
0000b840  65 64 20 66 6f 72 20 63  6f 6d 70 61 74 69 62 69  |ed for compatibi|
0000b850  6c 69 74 79 29 0a 0a 53  48 4f 57 5f 53 43 4f 52  |lity)..SHOW_SCOR|
0000b860  45 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |E               |
0000b870  20 20 20 20 20 20 28 56  65 72 73 69 6f 6e 20 33  |      (Version 3|
0000b880  20 6f 6e 6c 79 29 20 20  52 65 64 69 73 70 6c 61  | only)  Redispla|
0000b890  79 20 74 68 65 20 73 63  6f 72 65 20 62 61 72 0a  |y the score bar.|
0000b8a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b8b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 69  |               i|
0000b8c0  6d 6d 65 64 69 61 74 65  6c 79 2c 20 77 69 74 68  |mmediately, with|
0000b8d0  6f 75 74 20 77 61 69 74  69 6e 67 20 66 6f 72 20  |out waiting for |
0000b8e0  74 68 65 20 6e 65 78 74  0a 20 20 20 20 20 20 20  |the next.       |
0000b8f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b900  20 20 20 20 20 20 20 20  6b 65 79 62 6f 61 72 64  |        keyboard|
0000b910  20 69 6e 70 75 74 3a 20  61 76 6f 69 64 20 75 73  | input: avoid us|
0000b920  65 20 6f 66 20 74 68 69  73 20 69 66 20 70 6f 73  |e of this if pos|
0000b930  73 69 62 6c 65 0a 0a 0a  20 20 20 20 20 20 20 20  |sible...        |
0000b940  20 54 68 65 20 72 65 6d  61 69 6e 69 6e 67 20 63  | The remaining c|
0000b950  6f 6d 6d 61 6e 64 73 20  6e 65 65 64 20 6e 6f 74  |ommands need not|
0000b960  20 62 65 20 75 73 65 64  20 69 66 20 74 68 65 20  | be used if the |
0000b970  6c 69 62 72 61 72 79 20  69 73 20 62 65 69 6e 67  |library is being|
0000b980  0a 20 20 20 20 20 20 20  20 20 69 6e 63 6c 75 64  |.         includ|
0000b990  65 64 3a 0a 0a 51 55 49  54 20 20 20 20 20 20 20  |ed:..QUIT       |
0000b9a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000b9b0  20 20 20 20 51 75 69 74  20 74 68 65 20 67 61 6d  |    Quit the gam|
0000b9c0  65 20 28 61 74 20 6f 6e  63 65 2c 20 77 69 74 68  |e (at once, with|
0000b9d0  20 6e 6f 20 63 6f 6e 66  69 72 6d 61 74 6f 72 79  | no confirmatory|
0000b9e0  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
0000b9f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000ba00  71 75 65 73 74 69 6f 6e  20 74 6f 20 74 68 65 20  |question to the |
0000ba10  75 73 65 72 29 3a 20 61  6c 6c 20 67 61 6d 65 73  |user): all games|
0000ba20  20 6d 75 73 74 20 65 6e  64 20 74 68 69 73 0a 20  | must end this. |
0000ba30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000ba40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 77 61  |              wa|
0000ba50  79 2c 20 73 69 6e 63 65  20 69 74 20 69 73 20 69  |y, since it is i|
0000ba60  6c 6c 65 67 61 6c 20 74  6f 20 72 65 74 75 72 6e  |llegal to return|
0000ba70  20 66 72 6f 6d 20 4d 61  69 6e 28 29 0a 52 45 53  | from Main().RES|
0000ba80  54 41 52 54 20 20 20 20  20 20 20 20 20 20 20 20  |TART            |
0000ba90  20 20 20 20 20 20 20 20  20 20 20 20 52 65 73 74  |            Rest|
0000baa0  61 72 74 20 74 68 65 20  67 61 6d 65 20 66 72 6f  |art the game fro|
0000bab0  6d 20 69 74 73 20 69 6e  69 74 69 61 6c 20 73 74  |m its initial st|
0000bac0  61 74 65 0a 53 41 56 45  20 3c 6c 61 62 65 6c 3e  |ate.SAVE <label>|
0000bad0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000bae0  20 20 20 54 72 79 20 74  6f 20 73 61 76 65 20 74  |   Try to save t|
0000baf0  68 65 20 67 61 6d 65 20  28 61 73 6b 69 6e 67 20  |he game (asking |
0000bb00  74 68 65 20 75 73 65 72  20 66 6f 72 20 61 20 66  |the user for a f|
0000bb10  69 6c 65 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ile.            |
0000bb20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000bb30  20 20 20 74 6f 20 70 75  74 20 69 74 20 69 6e 29  |   to put it in)|
0000bb40  3a 20 69 66 20 73 75 63  63 65 73 73 66 75 6c 2c  |: if successful,|
0000bb50  20 6a 75 6d 70 20 74 6f  20 74 68 65 20 6c 61 62  | jump to the lab|
0000bb60  65 6c 2c 0a 20 20 20 20  20 20 20 20 20 20 20 20  |el,.            |
0000bb70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000bb80  20 20 20 6f 74 68 65 72  77 69 73 65 20 63 61 72  |   otherwise car|
0000bb90  72 79 20 6f 6e 0a 52 45  53 54 4f 52 45 20 3c 6c  |ry on.RESTORE <l|
0000bba0  61 62 65 6c 3e 20 20 20  20 20 20 20 20 20 20 20  |abel>           |
0000bbb0  20 20 20 20 20 44 69 74  74 6f 2c 20 62 75 74 20  |     Ditto, but |
0000bbc0  72 65 73 74 6f 72 65 20  74 68 65 20 67 61 6d 65  |restore the game|
0000bbd0  0a 56 45 52 49 46 59 20  3c 6c 61 62 65 6c 3e 20  |.VERIFY <label> |
0000bbe0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000bbf0  44 69 74 74 6f 2c 20 62  75 74 20 76 65 72 69 66  |Ditto, but verif|
0000bc00  79 20 74 68 61 74 20 74  68 65 20 67 61 6d 65 20  |y that the game |
0000bc10  69 73 20 69 6e 74 61 63  74 0a 0a 52 45 41 44 20  |is intact..READ |
0000bc20  3c 61 3e 20 3c 62 3e 20  5b 3c 72 6f 75 74 69 6e  |<a> <b> [<routin|
0000bc30  65 3e 5d 0a 0a 20 20 20  20 20 20 20 20 20 52 65  |e>]..         Re|
0000bc40  61 64 20 6b 65 79 62 6f  61 72 64 20 69 6e 74 6f  |ad keyboard into|
0000bc50  20 62 75 66 66 65 72 20  61 20 61 6e 64 20 64 65  | buffer a and de|
0000bc60  63 6f 6d 70 6f 73 65 20  69 74 20 74 6f 20 74 68  |compose it to th|
0000bc70  65 20 62 75 66 66 65 72  20 62 3a 0a 0a 20 20 20  |e buffer b:..   |
0000bc80  20 20 20 20 20 20 6f 6e  20 65 6e 74 72 79 20 61  |      on entry a|
0000bc90  5b 30 5d 20 3d 20 73 69  7a 65 20 6f 66 20 74 65  |[0] = size of te|
0000bca0  78 74 20 62 75 66 66 65  72 2c 20 62 5b 30 5d 20  |xt buffer, b[0] |
0000bcb0  73 69 7a 65 20 6f 66 20  70 61 72 73 65 20 62 75  |size of parse bu|
0000bcc0  66 66 65 72 0a 0a 20 20  20 20 20 20 20 20 20 6f  |ffer..         o|
0000bcd0  6e 20 65 78 69 74 20 20  61 5b 30 5d 20 61 6e 64  |n exit  a[0] and|
0000bce0  20 62 5b 30 5d 20 61 72  65 20 70 72 65 73 65 72  | b[0] are preser|
0000bcf0  76 65 64 0a 0a 20 20 20  20 20 20 20 20 20 20 20  |ved..           |
0000bd00  20 20 20 20 20 20 20 61  5b 31 5d 20 3d 20 6e 6f  |       a[1] = no|
0000bd10  20 63 68 61 72 61 63 74  65 72 73 20 74 79 70 65  | characters type|
0000bd20  64 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |d.              |
0000bd30  20 20 20 20 61 5b 32 5d  20 74 6f 20 61 5b 61 5b  |    a[2] to a[a[|
0000bd40  31 5d 2b 31 5d 20 61 72  65 20 74 68 65 20 63 68  |1]+1] are the ch|
0000bd50  61 72 61 63 74 65 72 73  20 28 75 6e 74 65 72 6d  |aracters (unterm|
0000bd60  69 6e 61 74 65 64 29 0a  0a 20 20 20 20 20 20 20  |inated)..       |
0000bd70  20 20 20 20 20 20 20 20  20 20 20 62 5b 31 5d 20  |           b[1] |
0000bd80  3d 20 6e 75 6d 62 65 72  20 6f 66 20 77 6f 72 64  |= number of word|
0000bd90  73 20 74 79 70 65 64 20  28 6e 6f 74 65 20 74 68  |s typed (note th|
0000bda0  61 74 20 74 68 65 20 73  70 65 63 69 61 6c 0a 20  |at the special. |
0000bdb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000bdc0  20 20 20 20 20 20 20 20  73 65 70 61 72 61 74 69  |        separati|
0000bdd0  6e 67 20 63 68 61 72 61  63 74 65 72 73 20 73 75  |ng characters su|
0000bde0  63 68 20 61 73 20 27 2c  27 20 61 72 65 20 77 6f  |ch as ',' are wo|
0000bdf0  72 64 73 20 69 6e 20 74  68 65 69 72 0a 20 20 20  |rds in their.   |
0000be00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000be10  20 20 20 20 20 20 6f 77  6e 20 72 69 67 68 74 29  |      own right)|
0000be20  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
0000be30  20 20 20 61 6e 64 20 74  68 65 6e 20 66 72 6f 6d  |   and then from|
0000be40  20 62 79 74 65 20 32 2c  20 62 20 63 6f 6e 74 61  | byte 2, b conta|
0000be50  69 6e 73 20 34 2d 62 79  74 65 20 63 68 75 6e 6b  |ins 4-byte chunk|
0000be60  73 2c 20 6f 6e 65 20 66  6f 72 0a 0a 20 20 20 20  |s, one for..    |
0000be70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 65 61  |              ea|
0000be80  63 68 20 77 6f 72 64 20  6f 66 20 69 6e 70 75 74  |ch word of input|
0000be90  3a 0a 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |:..             |
0000bea0  20 20 20 20 20 30 2c 31  20 20 61 64 64 72 65 73  |     0,1  addres|
0000beb0  73 20 6f 66 20 64 69 63  74 69 6f 6e 61 72 79 20  |s of dictionary |
0000bec0  65 6e 74 72 79 20 69 66  20 72 65 63 6f 67 6e 69  |entry if recogni|
0000bed0  73 65 64 2c 0a 20 20 20  20 20 20 20 20 20 20 20  |sed,.           |
0000bee0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 30 30  |              00|
0000bef0  30 30 20 6f 74 68 65 72  77 69 73 65 0a 20 20 20  |00 otherwise.   |
0000bf00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 32  |               2|
0000bf10  20 20 20 20 6e 75 6d 62  65 72 20 6f 66 20 6c 65  |    number of le|
0000bf20  74 74 65 72 73 20 69 6e  20 77 6f 72 64 0a 20 20  |tters in word.  |
0000bf30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000bf40  33 20 20 20 20 66 69 72  73 74 20 63 68 61 72 20  |3    first char |
0000bf50  6f 66 20 77 6f 72 64 20  69 6e 20 61 0a 0a 20 20  |of word in a..  |
0000bf60  20 20 20 20 20 20 20 49  66 20 63 6f 6d 70 69 6c  |       If compil|
0000bf70  69 6e 67 20 69 6e 20 76  65 72 73 69 6f 6e 20 33  |ing in version 3|
0000bf80  2c 20 74 68 69 73 20 63  6f 6d 6d 61 6e 64 20 61  |, this command a|
0000bf90  75 74 6f 6d 61 74 69 63  61 6c 6c 79 20 72 65 64  |utomatically red|
0000bfa0  69 73 70 6c 61 79 73 0a  20 20 20 20 20 20 20 20  |isplays.        |
0000bfb0  20 74 68 65 20 73 74 61  74 75 73 20 28 73 63 6f  | the status (sco|
0000bfc0  72 65 29 20 6c 69 6e 65  2e 20 20 41 6e 79 20 72  |re) line.  Any r|
0000bfd0  6f 75 74 69 6e 65 20 67  69 76 65 6e 20 69 73 20  |outine given is |
0000bfe0  69 67 6e 6f 72 65 64 2e  0a 20 20 20 20 20 20 20  |ignored..       |
0000bff0  20 20 49 6e 20 76 65 72  73 69 6f 6e 20 35 2c 20  |  In version 5, |
0000c000  69 66 20 6e 6f 20 72 6f  75 74 69 6e 65 20 6e 61  |if no routine na|
0000c010  6d 65 20 69 73 20 67 69  76 65 6e 2c 20 49 6e 66  |me is given, Inf|
0000c020  6f 72 6d 20 63 6f 6d 70  69 6c 65 73 20 63 6f 64  |orm compiles cod|
0000c030  65 0a 20 20 20 20 20 20  20 20 20 65 6d 75 6c 61  |e.         emula|
0000c040  74 69 6e 67 20 77 68 61  74 20 61 20 76 65 72 73  |ting what a vers|
0000c050  69 6f 6e 20 33 20 67 61  6d 65 20 77 6f 75 6c 64  |ion 3 game would|
0000c060  20 68 61 76 65 20 64 6f  6e 65 3b 20 69 66 20 61  | have done; if a|
0000c070  20 72 6f 75 74 69 6e 65  20 6e 61 6d 65 0a 20 20  | routine name.  |
0000c080  20 20 20 20 20 20 20 69  73 20 67 69 76 65 6e 2c  |       is given,|
0000c090  20 74 68 65 20 72 6f 75  74 69 6e 65 20 69 73 20  | the routine is |
0000c0a0  63 61 6c 6c 65 64 20 74  6f 20 70 72 69 6e 74 20  |called to print |
0000c0b0  61 20 73 74 61 74 75 73  20 6c 69 6e 65 20 69 6e  |a status line in|
0000c0c0  73 74 65 61 64 2e 0a 0a  0a 49 66 20 61 20 63 6f  |stead....If a co|
0000c0d0  6d 6d 61 6e 64 20 6d 61  74 63 68 65 73 20 6e 6f  |mmand matches no|
0000c0e0  6e 65 20 6f 66 20 74 68  65 73 65 2c 20 6f 72 20  |ne of these, or |
0000c0f0  69 66 20 69 74 20 62 65  67 61 6e 20 77 69 74 68  |if it began with|
0000c100  20 61 6e 20 40 20 63 68  61 72 61 63 74 65 72 2c  | an @ character,|
0000c110  20 74 68 65 0a 6c 69 6e  65 20 69 73 20 73 65 6e  | the.line is sen|
0000c120  74 20 74 6f 20 74 68 65  20 61 73 73 65 6d 62 6c  |t to the assembl|
0000c130  65 72 20 69 6e 73 74 65  61 64 2e 20 20 53 6f 6d  |er instead.  Som|
0000c140  65 20 6f 66 20 74 68 65  20 61 73 73 65 6d 62 6c  |e of the assembl|
0000c150  65 72 20 6f 70 63 6f 64  65 73 20 61 72 65 0a 66  |er opcodes are.f|
0000c160  61 69 72 6c 79 20 75 73  61 62 6c 65 20 28 73 65  |airly usable (se|
0000c170  65 20 41 70 70 65 6e 64  69 78 20 41 29 2c 20 62  |e Appendix A), b|
0000c180  75 74 20 74 68 65 20 65  73 73 65 6e 74 69 61 6c  |ut the essential|
0000c190  20 66 65 61 74 75 72 65  73 20 6f 66 20 74 68 65  | features of the|
0000c1a0  20 5a 2d 6d 61 63 68 69  6e 65 0a 63 61 6e 20 62  | Z-machine.can b|
0000c1b0  65 20 67 6f 74 20 61 74  20 77 69 74 68 20 6a 75  |e got at with ju|
0000c1c0  73 74 20 74 68 65 20 68  69 67 68 2d 6c 65 76 65  |st the high-leve|
0000c1d0  6c 20 63 6f 6d 6d 61 6e  64 73 20 61 6e 64 20 66  |l commands and f|
0000c1e0  75 6e 63 74 69 6f 6e 73  2e 0a 0a 0a 2d 2d 2d 2d  |unctions....----|
0000c1f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0000c230  2d 2d 2d 2d 2d 2d 2d 0a  39 2e 20 43 6f 6e 64 69  |-------.9. Condi|
0000c240  74 69 6f 6e 73 0a 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |tions.----------|
0000c250  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0000c290  2d 0a 0a 0a 20 20 20 20  20 20 20 20 22 53 6f 20  |-...        "So |
0000c2a0  49 20 74 6f 6c 64 20 68  69 6d 3a 20 20 22 4d 6f  |I told him:  "Mo|
0000c2b0  6e 65 79 2e 20 20 41 73  20 6d 75 63 68 20 6d 6f  |ney.  As much mo|
0000c2c0  6e 65 79 20 61 73 20 79  6f 75 20 63 6f 75 6c 64  |ney as you could|
0000c2d0  20 67 69 76 65 0a 20 20  20 20 20 20 20 20 75 73  | give.        us|
0000c2e0  2e 20 20 41 6e 64 20 77  69 74 68 20 61 73 20 66  |.  And with as f|
0000c2f0  65 77 20 63 6f 6e 64 69  74 69 6f 6e 73 20 61 73  |ew conditions as|
0000c300  20 79 6f 75 20 63 6f 75  6c 64 20 70 6f 73 73 69  | you could possi|
0000c310  62 6c 79 20 6d 61 6b 65  2e 22 0a 20 20 20 20 20  |bly make.".     |
0000c320  20 20 20 41 6e 64 20 74  68 61 74 27 73 20 77 68  |   And that's wh|
0000c330  65 72 65 20 77 65 20 73  74 61 6e 64 2e 22 0a 0a  |ere we stand."..|
0000c340  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000c350  28 43 2e 20 50 2e 20 53  6e 6f 77 2c 20 22 54 68  |(C. P. Snow, "Th|
0000c360  65 20 4d 61 73 74 65 72  73 22 29 0a 0a 0a 41 20  |e Masters")...A |
0000c370  73 69 6d 70 6c 65 20 63  6f 6e 64 69 74 69 6f 6e  |simple condition|
0000c380  20 69 73 0a 0a 20 20 3c  61 3e 20 20 3c 72 65 6c  | is..  <a>  <rel|
0000c390  61 74 69 6f 6e 3e 20 20  3c 62 3e 0a 0a 77 68 65  |ation>  <b>..whe|
0000c3a0  72 65 20 74 68 65 20 72  65 6c 61 74 69 6f 6e 20  |re the relation |
0000c3b0  69 73 20 6f 6e 65 20 6f  66 0a 0a 20 20 3d 3d 20  |is one of..  == |
0000c3c0  20 20 20 20 20 20 20 20  20 20 20 61 20 65 71 75  |           a equ|
0000c3d0  61 6c 73 20 62 0a 20 20  7e 3d 20 20 20 20 20 20  |als b.  ~=      |
0000c3e0  20 20 20 20 20 20 61 20  64 6f 65 73 20 6e 6f 74  |      a does not|
0000c3f0  20 65 71 75 61 6c 20 62  0a 20 20 3c 20 20 3e 20  | equal b.  <  > |
0000c400  20 3e 3d 20 20 3c 3d 20  20 63 6f 6d 70 61 72 69  | >=  <=  compari|
0000c410  73 6f 6e 73 0a 20 20 68  61 73 20 20 20 20 20 20  |sons.  has      |
0000c420  20 20 20 20 20 6f 62 6a  65 63 74 20 61 20 68 61  |     object a ha|
0000c430  73 20 61 74 74 72 69 62  75 74 65 20 62 20 61 74  |s attribute b at|
0000c440  20 74 68 65 20 6d 6f 6d  65 6e 74 0a 20 20 68 61  | the moment.  ha|
0000c450  73 6e 74 20 20 20 20 20  20 20 20 20 2e 2e 2e 68  |snt         ...h|
0000c460  61 73 20 6e 6f 74 2e 2e  2e 0a 20 20 69 6e 20 20  |as not....  in  |
0000c470  20 20 20 20 20 20 20 20  20 20 6f 62 6a 65 63 74  |          object|
0000c480  20 61 20 69 73 20 63 75  72 72 65 6e 74 6c 79 20  | a is currently |
0000c490  68 65 6c 64 20 62 79 20  6f 62 6a 65 63 74 20 62  |held by object b|
0000c4a0  0a 20 20 6e 6f 74 69 6e  20 20 20 20 20 20 20 20  |.  notin        |
0000c4b0  20 2e 2e 2e 69 73 20 6e  6f 74 2e 2e 2e 0a 20 20  | ...is not....  |
0000c4c0  6e 65 61 72 20 20 20 20  20 20 20 20 20 20 6f 62  |near          ob|
0000c4d0  6a 65 63 74 73 20 61 20  61 6e 64 20 62 20 68 61  |jects a and b ha|
0000c4e0  76 65 20 74 68 65 20 73  61 6d 65 20 70 61 72 65  |ve the same pare|
0000c4f0  6e 74 0a 20 20 66 61 72  20 20 20 20 20 20 20 20  |nt.  far        |
0000c500  20 20 20 2e 2e 2e 68 61  76 65 20 6e 6f 74 2e 2e  |   ...have not..|
0000c510  2e 0a 0a 0a 57 69 74 68  20 3d 3d 20 28 61 6e 64  |....With == (and|
0000c520  20 7e 3d 29 20 6f 6e 6c  79 2c 20 6f 6e 65 20 6d  | ~=) only, one m|
0000c530  61 79 20 61 6c 73 6f 20  77 72 69 74 65 20 74 68  |ay also write th|
0000c540  65 20 75 73 65 66 75 6c  20 63 6f 6e 73 74 72 75  |e useful constru|
0000c550  63 74 69 6f 6e 0a 0a 20  20 3c 73 6f 6d 65 74 68  |ction..  <someth|
0000c560  69 6e 67 3e 20 3d 3d 20  3c 76 31 3e 20 5b 6f 72  |ing> == <v1> [or|
0000c570  20 3c 76 32 3e 20 5b 6f  72 20 3c 76 33 3e 5d 5d  | <v2> [or <v3>]]|
0000c580  0a 0a 77 68 69 63 68 20  69 73 20 74 72 75 65 20  |..which is true |
0000c590  69 66 20 74 68 65 20 66  69 72 73 74 20 73 6f 6d  |if the first som|
0000c5a0  65 74 68 69 6e 67 20 69  73 20 61 6e 79 20 6f 66  |ething is any of|
0000c5b0  20 74 68 65 20 76 61 6c  75 65 73 20 67 69 76 65  | the values give|
0000c5c0  6e 2e 0a 0a 0a 43 6f 6e  64 69 74 69 6f 6e 73 20  |n....Conditions |
0000c5d0  63 61 6e 20 62 65 20 63  6f 6d 62 69 6e 65 64 20  |can be combined |
0000c5e0  62 79 20 74 68 65 20 26  26 20 61 6e 64 20 7c 7c  |by the && and |||
0000c5f0  20 6f 70 65 72 61 74 6f  72 73 3a 0a 0a 20 20 3c  | operators:..  <|
0000c600  63 6f 6e 64 69 74 69 6f  6e 31 3e 20 26 26 20 3c  |condition1> && <|
0000c610  63 6f 6e 64 69 74 69 6f  6e 32 3e 0a 0a 77 68 69  |condition2>..whi|
0000c620  63 68 20 69 73 20 74 72  75 65 20 69 66 20 62 6f  |ch is true if bo|
0000c630  74 68 20 61 72 65 20 74  72 75 65 2c 20 61 6e 64  |th are true, and|
0000c640  20 0a 0a 20 20 3c 63 6f  6e 64 69 74 69 6f 6e 31  | ..  <condition1|
0000c650  3e 20 7c 7c 20 3c 63 6f  6e 64 69 74 69 6f 6e 32  |> || <condition2|
0000c660  3e 0a 0a 74 72 75 65 20  69 66 20 65 69 74 68 65  |>..true if eithe|
0000c670  72 20 69 73 20 74 72 75  65 2e 20 20 54 68 65 73  |r is true.  Thes|
0000c680  65 20 63 61 6e 20 62 65  20 62 72 61 63 6b 65 74  |e can be bracket|
0000c690  65 64 20 74 6f 67 65 74  68 65 72 2e 0a 0a 0a 43  |ed together....C|
0000c6a0  6f 6d 70 6f 75 6e 64 20  65 78 70 72 65 73 73 69  |ompound expressi|
0000c6b0  6f 6e 73 20 61 72 65 20  61 6c 77 61 79 73 20 74  |ons are always t|
0000c6c0  65 73 74 65 64 20 6c 65  66 74 20 74 6f 20 72 69  |ested left to ri|
0000c6d0  67 68 74 20 75 6e 74 69  6c 20 74 68 65 20 6f 75  |ght until the ou|
0000c6e0  74 63 6f 6d 65 0a 69 73  20 6b 6e 6f 77 6e 2e 20  |tcome.is known. |
0000c6f0  20 53 6f 2c 20 66 6f 72  20 69 6e 73 74 61 6e 63  | So, for instanc|
0000c700  65 2c 0a 0a 20 20 69 3d  3d 31 20 7c 7c 20 45 78  |e,..  i==1 || Ex|
0000c710  70 6c 6f 64 65 28 32 29  3d 3d 32 0a 0a 64 6f 65  |plode(2)==2..doe|
0000c720  73 20 6e 6f 74 20 63 61  6c 6c 20 45 78 70 6c 6f  |s not call Explo|
0000c730  64 65 20 69 66 20 69 20  69 73 20 32 2e 0a 0a 0a  |de if i is 2....|
0000c740  46 6f 72 20 65 78 61 6d  70 6c 65 3a 0a 0a 20 20  |For example:..  |
0000c750  69 3d 3d 31 20 6f 72 20  32 20 6f 72 20 33 0a 20  |i==1 or 2 or 3. |
0000c760  20 64 6f 6f 72 20 68 61  73 20 6f 70 65 6e 20 7c  | door has open ||
0000c770  7c 20 28 64 6f 6f 72 20  68 61 73 20 6c 6f 63 6b  || (door has lock|
0000c780  65 64 20 26 26 20 70 61  72 65 6e 74 28 6b 65 79  |ed && parent(key|
0000c790  29 3d 3d 70 6c 61 79 65  72 29 0a 0a 0a 43 6f 6e  |)==player)...Con|
0000c7a0  64 69 74 69 6f 6e 73 20  64 6f 20 6e 6f 74 20 68  |ditions do not h|
0000c7b0  61 76 65 20 74 6f 20 62  72 61 63 6b 65 74 65 64  |ave to bracketed|
0000c7c0  20 28 61 73 20 74 68 65  79 20 77 6f 75 6c 64 20  | (as they would |
0000c7d0  68 61 76 65 20 74 6f 20  62 65 20 69 6e 20 43 29  |have to be in C)|
0000c7e0  2e 0a 48 6f 77 65 76 65  72 2c 20 74 68 65 79 20  |..However, they |
0000c7f0  63 61 6e 20 62 65 2c 20  61 6e 64 20 66 6f 72 20  |can be, and for |
0000c800  63 6f 6e 74 72 6f 6c 20  63 6f 6e 73 74 72 75 63  |control construc|
0000c810  74 73 20 6c 69 6b 65 0a  0a 20 20 20 20 69 66 20  |ts like..    if |
0000c820  28 69 3d 3d 31 29 20 7b  20 2e 2e 2e 20 7d 0a 20  |(i==1) { ... }. |
0000c830  20 20 20 77 68 69 6c 65  20 28 6a 3d 3d 32 29 20  |   while (j==2) |
0000c840  7b 20 2e 2e 2e 20 7d 0a  20 20 20 20 64 6f 20 7b  |{ ... }.    do {|
0000c850  20 2e 2e 2e 20 7d 20 75  6e 74 69 6c 20 28 6b 3d  | ... } until (k=|
0000c860  3d 33 29 3b 0a 0a 74 68  69 73 20 69 73 20 61 64  |=3);..this is ad|
0000c870  76 69 73 61 62 6c 65 20  74 68 6f 75 67 68 20 6e  |visable though n|
0000c880  6f 74 20 69 6e 73 69 73  74 65 64 20 75 70 6f 6e  |ot insisted upon|
0000c890  20 62 79 20 49 6e 66 6f  72 6d 20 28 66 6f 72 20  | by Inform (for |
0000c8a0  74 68 65 20 73 61 6b 65  20 6f 66 0a 63 6f 6d 70  |the sake of.comp|
0000c8b0  61 74 69 62 69 6c 69 74  79 20 77 69 74 68 20 65  |atibility with e|
0000c8c0  61 72 6c 69 65 72 20 72  65 6c 65 61 73 65 73 29  |arlier releases)|
0000c8d0  2e 20 20 45 76 65 6e 20  73 6f 2c 20 69 6e 64 69  |.  Even so, indi|
0000c8e0  76 69 64 75 61 6c 20 73  69 6d 70 6c 65 0a 65 78  |vidual simple.ex|
0000c8f0  70 72 65 73 73 69 6f 6e  73 20 64 6f 6e 27 74 20  |pressions don't |
0000c900  6e 65 65 64 20 62 72 61  63 6b 65 74 69 6e 67 2c  |need bracketing,|
0000c910  20 73 6f 0a 0a 20 20 20  20 69 66 20 28 69 3d 3d  | so..    if (i==|
0000c920  31 20 26 26 20 6a 3d 3d  32 29 20 7b 20 2e 2e 2e  |1 && j==2) { ...|
0000c930  20 7d 0a 0a 69 73 20 70  65 72 66 65 63 74 6c 79  | }..is perfectly|
0000c940  20 6c 65 67 61 6c 2e 0a  0a 0a 2d 2d 2d 2d 2d 2d  | legal....------|
0000c950  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0000c990  2d 2d 2d 2d 2d 0a 31 30  2e 20 42 75 69 6c 74 2d  |-----.10. Built-|
0000c9a0  69 6e 20 66 75 6e 63 74  69 6f 6e 73 20 61 6e 64  |in functions and|
0000c9b0  20 72 61 6e 64 6f 6d 20  6e 75 6d 62 65 72 73 0a  | random numbers.|
0000c9c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0000ca00  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 0a 0a 20 20  |-----------...  |
0000ca10  20 20 20 20 20 22 52 4f  53 3a 20 5b 74 68 72 6f  |     "ROS: [thro|
0000ca20  77 69 6e 67 20 61 20 63  6f 69 6e 5d 20 20 48 65  |wing a coin]  He|
0000ca30  61 64 73 2e 0a 0a 20 20  20 20 20 20 20 20 52 4f  |ads...        RO|
0000ca40  53 3a 20 5b 61 67 61 69  6e 5d 20 20 48 65 61 64  |S: [again]  Head|
0000ca50  73 2e 0a 0a 20 20 20 20  20 20 20 20 52 4f 53 3a  |s...        ROS:|
0000ca60  20 5b 61 67 61 69 6e 5d  20 20 48 65 61 64 73 2e  | [again]  Heads.|
0000ca70  0a 0a 20 20 20 20 20 20  20 20 52 4f 53 3a 20 5b  |..        ROS: [|
0000ca80  61 67 61 69 6e 5d 20 20  48 65 61 64 73 2e 0a 0a  |again]  Heads...|
0000ca90  20 20 20 20 20 20 20 20  52 4f 53 3a 20 5b 61 67  |        ROS: [ag|
0000caa0  61 69 6e 5d 20 20 48 65  61 64 73 2e 0a 0a 20 20  |ain]  Heads...  |
0000cab0  20 20 20 20 20 20 47 55  49 4c 3a 20 20 5b 66 6c  |      GUIL:  [fl|
0000cac0  69 70 70 69 6e 67 20 61  20 63 6f 69 6e 5d 20 20  |ipping a coin]  |
0000cad0  54 68 65 72 65 20 69 73  20 61 6e 20 61 72 74 20  |There is an art |
0000cae0  74 6f 20 74 68 65 20 62  75 69 6c 64 69 6e 67 0a  |to the building.|
0000caf0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 75  |               u|
0000cb00  70 20 6f 66 20 73 75 73  70 65 6e 73 65 2e 22 0a  |p of suspense.".|
0000cb10  0a 20 20 20 20 20 20 20  20 28 4f 70 65 6e 69 6e  |.        (Openin|
0000cb20  67 20 6c 69 6e 65 73 20  6f 66 20 22 52 6f 73 65  |g lines of "Rose|
0000cb30  6e 63 72 61 6e 74 7a 20  61 6e 64 20 47 75 69 6c  |ncrantz and Guil|
0000cb40  64 65 6e 73 74 65 72 6e  20 61 72 65 20 44 65 61  |denstern are Dea|
0000cb50  64 22 2c 0a 20 20 20 20  20 20 20 20 20 54 6f 6d  |d",.         Tom|
0000cb60  20 53 74 6f 70 70 61 72  64 29 0a 0a 0a 54 68 65  | Stoppard)...The|
0000cb70  20 62 75 69 6c 74 20 69  6e 20 66 75 6e 63 74 69  | built in functi|
0000cb80  6f 6e 73 20 61 72 65 0a  0a 20 20 50 41 52 45 4e  |ons are..  PAREN|
0000cb90  54 28 6f 62 6a 29 20 20  20 20 20 20 70 61 72 65  |T(obj)      pare|
0000cba0  6e 74 20 6f 62 6a 65 63  74 0a 0a 20 20 53 49 42  |nt object..  SIB|
0000cbb0  4c 49 4e 47 28 6f 62 6a  29 20 20 20 20 20 73 69  |LING(obj)     si|
0000cbc0  62 6c 69 6e 67 20 6f 62  6a 65 63 74 0a 20 20 43  |bling object.  C|
0000cbd0  48 49 4c 44 28 6f 62 6a  29 20 20 20 20 20 20 20  |HILD(obj)       |
0000cbe0  63 68 69 6c 64 20 6f 62  6a 65 63 74 0a 0a 20 20  |child object..  |
0000cbf0  43 48 49 4c 44 52 45 4e  28 6f 62 6a 29 20 20 20  |CHILDREN(obj)   |
0000cc00  20 6e 75 6d 62 65 72 20  6f 66 20 63 68 69 6c 64  | number of child|
0000cc10  72 65 6e 0a 0a 20 20 45  4c 44 45 53 54 28 6f 62  |ren..  ELDEST(ob|
0000cc20  6a 29 20 20 20 20 20 20  65 6c 64 65 73 74 20 28  |j)      eldest (|
0000cc30  61 64 64 65 64 20 6c 6f  6e 67 65 73 74 20 61 67  |added longest ag|
0000cc40  6f 29 20 63 68 69 6c 64  20 6f 62 6a 65 63 74 0a  |o) child object.|
0000cc50  20 20 59 4f 55 4e 47 45  53 54 28 6f 62 6a 29 20  |  YOUNGEST(obj) |
0000cc60  20 20 20 79 6f 75 6e 67  65 73 74 20 28 6d 6f 73  |   youngest (mos|
0000cc70  74 20 72 65 63 65 6e 74  6c 79 20 61 64 64 65 64  |t recently added|
0000cc80  29 20 63 68 69 6c 64 20  6f 62 6a 65 63 74 0a 20  |) child object. |
0000cc90  20 45 4c 44 45 52 28 6f  62 6a 29 20 20 20 20 20  | ELDER(obj)     |
0000cca0  20 20 6e 65 78 74 20 6f  6c 64 65 73 74 20 63 68  |  next oldest ch|
0000ccb0  69 6c 64 20 6f 62 6a 65  63 74 0a 20 20 59 4f 55  |ild object.  YOU|
0000ccc0  4e 47 45 52 28 6f 62 6a  29 20 20 20 20 20 6e 65  |NGER(obj)     ne|
0000ccd0  78 74 20 79 6f 75 6e 67  65 73 74 20 63 68 69 6c  |xt youngest chil|
0000cce0  64 20 6f 62 6a 65 63 74  0a 0a 66 6f 72 20 72 65  |d object..for re|
0000ccf0  61 64 69 6e 67 20 74 68  65 20 6f 62 6a 65 63 74  |ading the object|
0000cd00  20 74 72 65 65 20 28 73  65 65 20 28 31 31 29 20  | tree (see (11) |
0000cd10  62 65 6c 6f 77 29 2c 20  74 6f 67 65 74 68 65 72  |below), together|
0000cd20  20 77 69 74 68 0a 0a 20  20 52 41 4e 44 4f 4d 28  | with..  RANDOM(|
0000cd30  78 29 20 20 20 20 20 20  20 20 67 69 76 65 20 61  |x)        give a|
0000cd40  20 75 6e 69 66 6f 72 6d  6c 79 20 72 61 6e 64 6f  | uniformly rando|
0000cd50  6d 20 6e 75 6d 62 65 72  20 62 65 74 77 65 65 6e  |m number between|
0000cd60  20 31 20 61 6e 64 20 78  0a 0a 20 20 49 4e 44 49  | 1 and x..  INDI|
0000cd70  52 45 43 54 28 61 64 64  72 29 20 20 20 63 61 6c  |RECT(addr)   cal|
0000cd80  6c 20 74 68 65 20 72 6f  75 74 69 6e 65 20 77 68  |l the routine wh|
0000cd90  6f 73 65 20 61 64 64 72  65 73 73 20 69 73 20 69  |ose address is i|
0000cda0  6e 20 61 64 64 72 0a 20  20 20 20 20 20 20 20 20  |n addr.         |
0000cdb0  20 20 20 20 20 20 20 20  20 20 61 6e 64 20 74 61  |          and ta|
0000cdc0  6b 65 20 69 74 73 20 72  65 74 75 72 6e 20 76 61  |ke its return va|
0000cdd0  6c 75 65 20 28 73 65 65  20 28 31 39 29 29 0a 0a  |lue (see (19))..|
0000cde0  61 6e 64 0a 0a 20 20 50  52 4f 50 5f 4c 45 4e 28  |and..  PROP_LEN(|
0000cdf0  61 64 64 72 29 20 20 20  70 72 6f 70 65 72 74 79  |addr)   property|
0000ce00  20 6c 65 6e 67 74 68 0a  20 20 50 52 4f 50 5f 41  | length.  PROP_A|
0000ce10  44 44 52 28 6f 2c 70 29  20 20 20 70 72 6f 70 65  |DDR(o,p)   prope|
0000ce20  72 74 79 20 61 64 64 72  65 73 73 0a 20 20 50 52  |rty address.  PR|
0000ce30  4f 50 28 6f 2c 70 29 20  20 20 20 20 20 20 20 70  |OP(o,p)        p|
0000ce40  72 6f 70 65 72 74 79 20  76 61 6c 75 65 0a 0a 77  |roperty value..w|
0000ce50  68 69 63 68 20 61 72 65  20 6e 6f 77 20 6f 62 73  |hich are now obs|
0000ce60  65 6c 65 73 63 65 6e 74  3a 20 73 65 65 20 28 31  |elescent: see (1|
0000ce70  31 29 20 62 65 6c 6f 77  2e 0a 0a 0a 57 61 72 6e  |1) below....Warn|
0000ce80  69 6e 67 3a 20 73 6f 6d  65 20 69 6e 74 65 72 70  |ing: some interp|
0000ce90  72 65 74 65 72 73 20 73  65 74 20 75 70 20 74 68  |reters set up th|
0000cea0  65 69 72 20 72 61 6e 64  6f 6d 20 6e 75 6d 62 65  |eir random numbe|
0000ceb0  72 20 67 65 6e 65 72 61  74 6f 72 20 77 69 74 68  |r generator with|
0000cec0  20 70 6f 6f 72 0a 63 68  6f 69 63 65 73 20 6f 66  | poor.choices of|
0000ced0  20 73 65 65 64 20 76 61  6c 75 65 2c 20 77 68 69  | seed value, whi|
0000cee0  63 68 20 6d 65 61 6e 73  20 74 68 61 74 20 74 68  |ch means that th|
0000cef0  65 20 66 69 72 73 74 20  66 65 77 20 72 61 6e 64  |e first few rand|
0000cf00  6f 6d 20 6e 75 6d 62 65  72 73 20 6d 61 79 20 62  |om numbers may b|
0000cf10  65 0a 72 61 74 68 65 72  20 70 65 63 75 6c 69 61  |e.rather peculia|
0000cf20  72 6c 79 20 64 69 73 74  72 69 62 75 74 65 64 2e  |rly distributed.|
0000cf30  20 20 28 22 52 4f 53 3a  20 48 65 61 64 73 2e 22  |  ("ROS: Heads."|
0000cf40  29 20 20 20 41 66 74 65  72 20 61 20 74 69 6d 65  |)   After a time|
0000cf50  2c 20 69 74 20 73 65 74  74 6c 65 73 0a 64 6f 77  |, it settles.dow|
0000cf60  6e 2e 20 20 28 22 52 4f  53 3a 20 48 65 61 64 73  |n.  ("ROS: Heads|
0000cf70  2e 22 29 20 20 54 6f 20  67 65 74 20 61 72 6f 75  |.")  To get arou|
0000cf80  6e 64 20 74 68 69 73 2c  20 22 43 75 72 73 65 73  |nd this, "Curses|
0000cf90  22 20 28 66 6f 72 20 65  78 61 6d 70 6c 65 29 20  |" (for example) |
0000cfa0  74 61 6b 65 73 0a 61 6e  64 20 74 68 72 6f 77 73  |takes.and throws|
0000cfb0  20 61 77 61 79 20 31 30  30 20 72 61 6e 64 6f 6d  | away 100 random|
0000cfc0  20 6e 75 6d 62 65 72 73  20 77 68 65 6e 20 69 74  | numbers when it|
0000cfd0  20 62 65 67 69 6e 73 2e  20 20 28 22 52 4f 53 3a  | begins.  ("ROS:|
0000cfe0  20 53 65 76 65 6e 74 79  2d 73 69 78 20 6c 6f 76  | Seventy-six lov|
0000cff0  65 2e 22 29 0a 0a 49 6e  20 56 65 72 73 69 6f 6e  |e.")..In Version|
0000d000  20 35 20 61 6e 64 20 6f  6e 20 62 65 6e 69 67 6e  | 5 and on benign|
0000d010  20 69 6e 74 65 72 70 72  65 74 65 72 73 20 6f 6e  | interpreters on|
0000d020  6c 79 2c 20 52 41 4e 44  4f 4d 28 2d 78 29 20 6d  |ly, RANDOM(-x) m|
0000d030  61 6b 65 73 20 74 68 65  20 67 65 6e 65 72 61 74  |akes the generat|
0000d040  6f 72 0a 70 72 6f 64 75  63 65 20 70 72 65 64 69  |or.produce predi|
0000d050  63 74 61 62 6c 65 20 76  61 6c 75 65 73 20 66 6f  |ctable values fo|
0000d060  72 20 61 20 77 68 69 6c  65 3a 20 73 65 65 20 74  |r a while: see t|
0000d070  68 65 20 64 69 63 74 69  6f 6e 61 72 79 20 6f 66  |he dictionary of|
0000d080  20 6f 70 63 6f 64 65 73  0a 75 6e 64 65 72 20 22  | opcodes.under "|
0000d090  72 61 6e 64 6f 6d 22 2e  0a 0a 0a 57 41 52 4e 49  |random"....WARNI|
0000d0a0  4e 47 3a 20 54 72 79 69  6e 67 20 74 6f 20 65 78  |NG: Trying to ex|
0000d0b0  65 63 75 74 65 20 52 41  4e 44 4f 4d 28 30 29 20  |ecute RANDOM(0) |
0000d0c0  61 74 20 72 75 6e 20 74  69 6d 65 20 63 61 6e 20  |at run time can |
0000d0d0  63 72 61 73 68 20 74 68  65 20 69 6e 74 65 72 70  |crash the interp|
0000d0e0  72 65 74 65 72 0a 20 20  20 2a 20 20 20 20 20 62  |reter.   *     b|
0000d0f0  65 63 61 75 73 65 20 6f  66 20 74 72 79 69 6e 67  |ecause of trying|
0000d100  20 74 6f 20 66 69 6e 64  20 61 20 72 65 6d 61 69  | to find a remai|
0000d110  6e 64 65 72 20 61 66 74  65 72 20 64 69 76 69 73  |nder after divis|
0000d120  69 6f 6e 20 62 79 20 7a  65 72 6f 2e 0a 20 20 2f  |ion by zero..  /|
0000d130  21 5c 20 20 20 20 0a 20  2a 2d 2d 2d 2a 20 20 20  |!\    . *---*   |
0000d140  0a 0a 0a 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |...-------------|
0000d150  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0000d180  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0a 31  |--------------.1|
0000d190  31 2e 20 4f 62 6a 65 63  74 73 2c 20 61 74 74 72  |1. Objects, attr|
0000d1a0  69 62 75 74 65 73 20 61  6e 64 20 70 72 6f 70 65  |ibutes and prope|
0000d1b0  72 74 69 65 73 0a 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |rties.----------|
0000d1c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0000d200  2d 0a 0a 0a 20 20 20 20  20 22 2e 2e 2e 6d 61 6b  |-...     "...mak|
0000d210  69 6e 67 20 70 68 69 6c  6f 73 6f 70 68 69 63 61  |ing philosophica|
0000d220  6c 20 73 65 6e 73 65 20  6f 66 20 63 68 61 6e 67  |l sense of chang|
0000d230  65 20 72 75 6e 73 20 75  70 20 61 67 61 69 6e 73  |e runs up agains|
0000d240  74 20 77 68 61 74 0a 20  20 20 20 20 73 65 65 6d  |t what.     seem|
0000d250  20 74 6f 20 62 65 20 69  6d 70 6f 73 73 69 62 6c  | to be impossibl|
0000d260  65 20 70 68 69 6c 6f 73  6f 70 68 69 63 61 6c 20  |e philosophical |
0000d270  64 69 66 66 69 63 75 6c  74 69 65 73 2e 20 20 41  |difficulties.  A|
0000d280  72 69 73 74 6f 74 6c 65  2e 2e 2e 0a 20 20 20 20  |ristotle....    |
0000d290  20 66 6f 63 75 73 65 73  20 6f 6e 20 74 68 65 20  | focuses on the |
0000d2a0  63 65 6e 74 72 61 6c 20  63 61 73 65 20 6f 66 20  |central case of |
0000d2b0  61 6e 20 6f 62 6a 65 63  74 20 63 6f 6d 69 6e 67  |an object coming|
0000d2c0  20 74 6f 20 68 61 76 65  20 61 0a 20 20 20 20 20  | to have a.     |
0000d2d0  70 72 6f 70 65 72 74 79  20 74 68 61 74 20 69 74  |property that it|
0000d2e0  20 66 6f 72 6d 65 72 6c  79 20 6c 61 63 6b 65 64  | formerly lacked|
0000d2f0  2e 22 0a 0a 20 20 20 20  20 20 20 20 20 20 28 4a  |."..          (J|
0000d300  75 6c 69 61 20 41 6e 6e  61 73 2c 20 22 43 6c 61  |ulia Annas, "Cla|
0000d310  73 73 69 63 61 6c 20 47  72 65 65 6b 20 50 68 69  |ssical Greek Phi|
0000d320  6c 6f 73 6f 70 68 79 22  29 0a 0a 0a 54 68 65 20  |losophy")...The |
0000d330  6f 62 6a 65 63 74 20 68  69 65 72 61 72 63 68 79  |object hierarchy|
0000d340  20 69 73 20 61 20 74 72  65 65 20 6f 66 20 22 6f  | is a tree of "o|
0000d350  62 6a 65 63 74 73 22 2c  20 77 68 69 63 68 20 79  |bjects", which y|
0000d360  6f 75 20 6d 69 67 68 74  20 75 73 65 20 66 6f 72  |ou might use for|
0000d370  20 6d 61 6e 79 0a 64 69  66 66 65 72 65 6e 74 20  | many.different |
0000d380  67 61 6d 65 20 65 6c 65  6d 65 6e 74 73 3a 20 72  |game elements: r|
0000d390  6f 6f 6d 73 2c 20 63 6f  6d 70 61 73 73 20 70 6f  |ooms, compass po|
0000d3a0  69 6e 74 73 2c 20 73 63  65 6e 65 72 79 2c 20 74  |ints, scenery, t|
0000d3b0  68 69 6e 67 73 20 77 68  69 63 68 20 63 61 6e 20  |hings which can |
0000d3c0  62 65 0a 70 69 63 6b 65  64 20 75 70 2c 20 61 6e  |be.picked up, an|
0000d3d0  64 20 73 6f 20 6f 6e 2e  0a 0a 0a 54 68 65 79 20  |d so on....They |
0000d3e0  61 72 65 20 6e 75 6d 62  65 72 65 64 20 75 70 77  |are numbered upw|
0000d3f0  61 72 64 20 66 72 6f 6d  20 31 2c 20 61 6e 64 20  |ard from 1, and |
0000d400  74 68 65 20 6e 75 6d 62  65 72 20 30 20 62 79 20  |the number 0 by |
0000d410  63 6f 6e 76 65 6e 74 69  6f 6e 20 6d 65 61 6e 73  |convention means|
0000d420  0a 22 6e 6f 74 68 69 6e  67 22 2e 0a 0a 0a 57 41  |."nothing"....WA|
0000d430  52 4e 49 4e 47 3a 20 41  74 74 65 6d 70 74 69 6e  |RNING: Attemptin|
0000d440  67 20 74 6f 20 70 72 69  6e 74 5f 6f 62 6a 20 6f  |g to print_obj o|
0000d450  62 6a 65 63 74 20 30 20  77 69 6c 6c 20 70 72 6f  |bject 0 will pro|
0000d460  64 75 63 65 20 61 20 73  74 72 69 6e 67 20 66 75  |duce a string fu|
0000d470  6c 6c 20 6f 66 0a 20 20  20 2a 20 20 20 20 20 70  |ll of.   *     p|
0000d480  65 63 75 6c 69 61 72 20  6c 65 74 74 65 72 73 20  |eculiar letters |
0000d490  6f 72 20 28 69 66 20 79  6f 75 20 61 72 65 20 76  |or (if you are v|
0000d4a0  65 72 79 20 75 6e 6c 75  63 6b 79 20 69 6e 64 65  |ery unlucky inde|
0000d4b0  65 64 29 20 65 76 65 6e  20 72 61 6e 64 6f 6d 0a  |ed) even random.|
0000d4c0  20 20 2f 21 5c 20 20 20  20 41 53 43 49 49 20 76  |  /!\    ASCII v|
0000d4d0  61 6c 75 65 73 20 66 6f  6c 6c 6f 77 65 64 20 62  |alues followed b|
0000d4e0  79 20 61 6e 20 69 6e 74  65 72 70 72 65 74 65 72  |y an interpreter|
0000d4f0  20 63 72 61 73 68 2e 0a  20 2a 2d 2d 2d 2a 20 20  | crash.. *---*  |
0000d500  20 49 74 20 69 73 20 61  6c 73 6f 20 75 6e 77 69  | It is also unwi|
0000d510  73 65 20 74 6f 20 61 70  70 6c 79 20 53 49 42 4c  |se to apply SIBL|
0000d520  49 4e 47 2c 20 50 41 52  45 4e 54 20 6f 72 20 43  |ING, PARENT or C|
0000d530  48 49 4c 44 20 74 6f 20  30 2e 0a 0a 0a 49 6e 20  |HILD to 0....In |
0000d540  74 68 65 20 74 72 65 65  2c 20 65 61 63 68 20 6f  |the tree, each o|
0000d550  62 6a 65 63 74 20 68 61  73 20 61 20 70 61 72 65  |bject has a pare|
0000d560  6e 74 2c 20 61 20 73 69  62 6c 69 6e 67 2c 20 61  |nt, a sibling, a|
0000d570  6e 64 20 61 20 63 68 69  6c 64 2e 20 20 54 68 75  |nd a child.  Thu|
0000d580  73 2c 20 66 6f 72 0a 69  6e 73 74 61 6e 63 65 2c  |s, for.instance,|
0000d590  20 61 20 70 6f 72 74 69  6f 6e 20 6d 61 79 20 72  | a portion may r|
0000d5a0  65 73 65 6d 62 6c 65 0a  0a 20 20 20 20 20 20 20  |esemble..       |
0000d5b0  20 20 20 20 20 4d 65 61  64 6f 77 0a 20 20 20 20  |     Meadow.    |
0000d5c0  20 20 20 20 20 20 20 20  20 20 20 7c 0a 20 20 20  |           |.   |
0000d5d0  20 20 20 20 20 20 20 20  20 4d 61 69 6c 62 6f 78  |         Mailbox|
0000d5e0  20 2d 3e 20 50 6c 61 79  65 72 0a 20 20 20 20 20  | -> Player.     |
0000d5f0  20 20 20 20 20 20 20 20  20 20 7c 20 20 20 20 20  |          |     |
0000d600  20 20 20 20 20 7c 0a 20  20 20 20 20 20 20 20 20  |     |.         |
0000d610  20 20 20 20 4e 6f 74 65  20 20 20 20 20 20 53 63  |    Note      Sc|
0000d620  65 70 74 72 65 20 2d 3e  20 43 75 63 75 6d 62 65  |eptre -> Cucumbe|
0000d630  72 20 2d 3e 20 54 6f 72  63 68 20 2d 3e 20 4d 61  |r -> Torch -> Ma|
0000d640  67 69 63 20 52 6f 64 0a  20 20 20 20 20 20 20 20  |gic Rod.        |
0000d650  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0000d670  20 20 20 20 20 20 20 20  7c 0a 20 20 20 20 20 20  |        |.      |
0000d680  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0000d6a0  20 20 20 20 20 20 20 20  42 61 74 74 65 72 79 0a  |        Battery.|
0000d6b0  0a 69 6e 20 77 68 69 63  68 20 2d 3e 20 73 68 6f  |.in which -> sho|
0000d6c0  77 73 20 73 69 62 6c 69  6e 67 73 2c 20 61 6e 64  |ws siblings, and|
0000d6d0  20 7c 20 70 61 72 65 6e  74 73 20 61 6e 64 20 63  | | parents and c|
0000d6e0  68 69 6c 64 72 65 6e 2e  20 20 49 6e 20 74 68 69  |hildren.  In thi|
0000d6f0  73 20 63 61 73 65 2c 20  74 68 65 0a 4d 65 61 64  |s case, the.Mead|
0000d700  6f 77 20 68 61 73 20 6e  6f 74 68 69 6e 67 20 61  |ow has nothing a|
0000d710  73 20 69 74 73 20 70 61  72 65 6e 74 2e 20 20 41  |s its parent.  A|
0000d720  6e 79 74 68 69 6e 67 20  77 69 74 68 20 6e 6f 20  |nything with no |
0000d730  70 6f 73 73 65 73 73 69  6f 6e 73 2c 20 73 75 63  |possessions, suc|
0000d740  68 20 61 73 20 74 68 65  0a 6e 6f 74 65 2c 20 68  |h as the.note, h|
0000d750  61 73 20 6e 6f 74 68 69  6e 67 20 61 73 20 69 74  |as nothing as it|
0000d760  73 20 63 68 69 6c 64 2c  20 61 6e 64 20 73 6f 20  |s child, and so |
0000d770  6f 6e 2e 0a 0a 57 68 65  6e 20 61 6e 20 6f 62 6a  |on...When an obj|
0000d780  65 63 74 20 69 73 20 6d  6f 76 65 64 2c 20 69 74  |ect is moved, it|
0000d790  73 20 70 6f 73 73 65 73  73 69 6f 6e 73 20 6d 6f  |s possessions mo|
0000d7a0  76 65 20 77 69 74 68 20  69 74 2e 0a 0a 54 68 65  |ve with it...The|
0000d7b0  20 50 41 52 45 4e 54 2c  20 53 49 42 4c 49 4e 47  | PARENT, SIBLING|
0000d7c0  20 61 6e 64 20 43 48 49  4c 44 20 66 75 6e 63 74  | and CHILD funct|
0000d7d0  69 6f 6e 73 20 72 65 61  64 20 74 68 69 73 20 74  |ions read this t|
0000d7e0  72 65 65 20 69 6e 20 74  68 65 20 6f 62 76 69 6f  |ree in the obvio|
0000d7f0  75 73 20 77 61 79 2e 0a  49 74 20 69 73 20 73 6f  |us way..It is so|
0000d800  6d 65 74 69 6d 65 73 20  63 6f 6e 76 65 6e 69 65  |metimes convenie|
0000d810  6e 74 20 74 6f 20 6b 6e  6f 77 20 68 6f 77 20 6d  |nt to know how m|
0000d820  61 6e 79 20 64 69 72 65  63 74 20 70 6f 73 73 65  |any direct posse|
0000d830  73 73 69 6f 6e 73 20 61  6e 20 6f 62 6a 65 63 74  |ssions an object|
0000d840  0a 68 61 73 20 61 6e 64  20 43 48 49 4c 44 52 45  |.has and CHILDRE|
0000d850  4e 28 6f 62 6a 65 63 74  29 20 72 65 74 75 72 6e  |N(object) return|
0000d860  73 20 74 68 65 20 6e 75  6d 62 65 72 2e 20 20 54  |s the number.  T|
0000d870  68 75 73 2c 20 66 6f 72  20 69 6e 73 74 61 6e 63  |hus, for instanc|
0000d880  65 2c 0a 0a 20 20 20 20  20 20 20 20 50 41 52 45  |e,..        PARE|
0000d890  4e 54 20 28 20 4d 61 69  6c 62 6f 78 20 29 20 3d  |NT ( Mailbox ) =|
0000d8a0  20 4d 65 61 64 6f 77 0a  20 20 20 20 20 20 20 20  | Meadow.        |
0000d8b0  43 48 49 4c 44 52 45 4e  20 28 20 50 6c 61 79 65  |CHILDREN ( Playe|
0000d8c0  72 20 29 20 3d 20 34 0a  20 20 20 20 20 20 20 20  |r ) = 4.        |
0000d8d0  43 48 49 4c 44 20 28 20  53 63 65 70 74 72 65 20  |CHILD ( Sceptre |
0000d8e0  29 20 3d 20 30 0a 20 20  20 20 20 20 20 20 53 49  |) = 0.        SI|
0000d8f0  42 4c 49 4e 47 20 28 20  54 6f 72 63 68 20 29 20  |BLING ( Torch ) |
0000d900  3d 20 4d 61 67 69 63 20  52 6f 64 0a 0a 43 48 49  |= Magic Rod..CHI|
0000d910  4c 44 52 45 4e 28 30 29  3d 30 2c 20 62 75 74 20  |LDREN(0)=0, but |
0000d920  69 74 20 69 73 20 75 6e  64 65 66 69 6e 65 64 20  |it is undefined |
0000d930  77 68 61 74 20 43 48 49  4c 44 2c 20 53 49 42 4c  |what CHILD, SIBL|
0000d940  49 4e 47 20 61 6e 64 20  50 41 52 45 4e 54 20 64  |ING and PARENT d|
0000d950  6f 20 74 6f 20 74 68 65  0a 22 6e 6f 74 68 69 6e  |o to the."nothin|
0000d960  67 22 20 6f 62 6a 65 63  74 3a 20 73 6f 20 64 6f  |g" object: so do|
0000d970  6e 27 74 20 61 70 70 6c  79 20 74 68 65 6d 20 74  |n't apply them t|
0000d980  6f 20 69 74 2e 0a 0a 57  68 65 6e 20 61 6e 20 6f  |o it...When an o|
0000d990  62 6a 65 63 74 20 69 73  20 61 64 64 65 64 20 74  |bject is added t|
0000d9a0  6f 20 74 68 65 20 70 6f  73 73 65 73 73 69 6f 6e  |o the possession|
0000d9b0  73 20 68 65 6c 64 20 62  79 20 61 6e 6f 74 68 65  |s held by anothe|
0000d9c0  72 2c 20 69 74 20 61 70  70 65 61 72 73 20 61 74  |r, it appears at|
0000d9d0  0a 74 68 65 20 65 6e 64  20 6f 66 20 74 68 65 20  |.the end of the |
0000d9e0  6c 69 73 74 2e 20 20 54  68 75 73 2c 20 74 68 65  |list.  Thus, the|
0000d9f0  20 65 6c 64 65 73 74 20  63 68 69 6c 64 20 69 73  | eldest child is|
0000da00  20 66 69 72 73 74 20 69  6e 20 74 68 65 20 6c 69  | first in the li|
0000da10  73 74 20 61 6e 64 20 74  68 65 0a 79 6f 75 6e 67  |st and the.young|
0000da20  65 73 74 20 69 73 20 6c  61 73 74 2e 20 20 49 6e  |est is last.  In|
0000da30  66 6f 72 6d 20 61 6c 73  6f 20 70 72 6f 76 69 64  |form also provid|
0000da40  65 73 20 66 75 6e 63 74  69 6f 6e 73 0a 0a 20 20  |es functions..  |
0000da50  20 20 20 20 20 20 59 4f  55 4e 47 45 53 54 20 20  |      YOUNGEST  |
0000da60  20 20 20 65 6e 64 20 6f  66 20 6c 69 73 74 20 6f  |   end of list o|
0000da70  66 20 70 6f 73 73 65 73  73 69 6f 6e 73 0a 20 20  |f possessions.  |
0000da80  20 20 20 20 20 20 45 4c  44 45 53 54 20 20 20 20  |      ELDEST    |
0000da90  20 20 20 73 61 6d 65 20  61 73 20 43 48 49 4c 44  |   same as CHILD|
0000daa0  0a 20 20 20 20 20 20 20  20 59 4f 55 4e 47 45 52  |.        YOUNGER|
0000dab0  20 20 20 20 20 20 73 61  6d 65 20 61 73 20 53 49  |      same as SI|
0000dac0  42 4c 49 4e 47 0a 20 20  20 20 20 20 20 20 45 4c  |BLING.        EL|
0000dad0  44 45 52 20 20 20 20 20  20 20 20 72 65 76 65 72  |DER        rever|
0000dae0  73 65 20 6f 66 20 53 49  42 4c 49 4e 47 0a 0a 0a  |se of SIBLING...|
0000daf0  49 6e 20 70 72 61 63 74  69 63 65 20 61 6e 20 6f  |In practice an o|
0000db00  62 6a 65 63 74 20 6e 65  65 64 73 20 72 61 74 68  |bject needs rath|
0000db10  65 72 20 6d 6f 72 65 20  64 61 74 61 20 74 68 61  |er more data tha|
0000db20  6e 20 6a 75 73 74 20 61  20 70 6f 73 69 74 69 6f  |n just a positio|
0000db30  6e 20 69 6e 20 61 20 74  72 65 65 2e 20 0a 49 74  |n in a tree. .It|
0000db40  20 61 6c 73 6f 20 68 61  73 20 61 20 63 6f 6c 6c  | also has a coll|
0000db50  65 63 74 69 6f 6e 20 6f  66 20 76 61 72 69 61 62  |ection of variab|
0000db60  6c 65 73 20 61 74 74 61  63 68 65 64 20 74 6f 20  |les attached to |
0000db70  69 74 2e 0a 0a 46 69 72  73 74 6c 79 2c 20 74 68  |it...Firstly, th|
0000db80  65 72 65 20 61 72 65 20  66 6c 61 67 73 2c 20 63  |ere are flags, c|
0000db90  61 6c 6c 65 64 20 22 61  74 74 72 69 62 75 74 65  |alled "attribute|
0000dba0  73 22 2c 20 77 68 69 63  68 20 63 61 6e 20 62 65  |s", which can be|
0000dbb0  20 65 69 74 68 65 72 20  73 65 74 20 6f 72 0a 63  | either set or.c|
0000dbc0  6c 65 61 72 2e 20 20 54  68 65 73 65 20 6d 69 67  |lear.  These mig|
0000dbd0  68 74 20 62 65 20 73 75  63 68 20 63 6f 6e 64 69  |ht be such condi|
0000dbe0  74 69 6f 6e 73 20 61 73  20 22 67 69 76 69 6e 67  |tions as "giving|
0000dbf0  20 6c 69 67 68 74 22 2c  20 22 63 75 72 72 65 6e  | light", "curren|
0000dc00  74 6c 79 20 77 6f 72 6e  22 0a 6f 72 20 22 69 73  |tly worn".or "is|
0000dc10  20 6f 6e 65 20 6f 66 20  74 68 65 20 66 65 61 74  | one of the feat|
0000dc20  75 72 65 6c 65 73 73 20  77 68 69 74 65 20 63 75  |ureless white cu|
0000dc30  62 65 73 22 2e 20 20 41  6c 6c 20 74 68 65 73 65  |bes".  All these|
0000dc40  20 61 72 65 20 66 72 65  65 20 66 6f 72 20 74 68  | are free for th|
0000dc50  65 0a 70 72 6f 67 72 61  6d 6d 65 72 20 74 6f 20  |e.programmer to |
0000dc60  75 73 65 20 28 74 68 6f  75 67 68 20 74 68 65 20  |use (though the |
0000dc70  4c 69 62 72 61 72 79 20  72 6f 75 74 69 6e 65 73  |Library routines|
0000dc80  2c 20 69 66 20 69 6e 20  75 73 65 2c 20 63 6f 6e  |, if in use, con|
0000dc90  73 75 6d 65 20 6d 61 6e  79 20 6f 66 0a 74 68 65  |sume many of.the|
0000dca0  6d 29 2e 20 20 54 68 65  79 20 6d 75 73 74 20 62  |m).  They must b|
0000dcb0  65 20 64 65 63 6c 61 72  65 64 20 62 65 66 6f 72  |e declared befor|
0000dcc0  65 20 75 73 65 2c 20 62  79 20 64 69 72 65 63 74  |e use, by direct|
0000dcd0  69 76 65 73 20 6c 69 6b  65 0a 0a 20 20 41 54 54  |ives like..  ATT|
0000dce0  52 49 42 55 54 45 20 6c  6f 63 6b 65 64 3b 0a 0a  |RIBUTE locked;..|
0000dcf0  77 68 69 63 68 20 77 69  6c 6c 20 61 6c 6c 6f 63  |which will alloc|
0000dd00  61 74 65 20 61 20 6e 65  77 20 61 74 74 72 69 62  |ate a new attrib|
0000dd10  75 74 65 20 61 6e 64 20  6d 61 6b 65 20 61 20 63  |ute and make a c|
0000dd20  6f 6e 73 74 61 6e 74 20  22 6c 6f 63 6b 65 64 22  |onstant "locked"|
0000dd30  20 74 6f 20 68 61 76 65  20 74 68 65 0a 76 61 6c  | to have the.val|
0000dd40  75 65 20 6f 66 20 69 74  73 20 6e 75 6d 62 65 72  |ue of its number|
0000dd50  2e 20 20 59 6f 75 20 6e  65 76 65 72 20 74 68 65  |.  You never the|
0000dd60  6e 20 6e 65 65 64 20 74  6f 20 6b 6e 6f 77 20 61  |n need to know a|
0000dd70  62 6f 75 74 20 74 68 65  73 65 20 6e 75 6d 62 65  |bout these numbe|
0000dd80  72 73 2c 0a 62 65 63 61  75 73 65 20 79 6f 75 20  |rs,.because you |
0000dd90  63 61 6e 20 75 73 65 20  63 6f 6d 6d 61 6e 64 73  |can use commands|
0000dda0  20 6c 69 6b 65 0a 0a 20  20 49 46 20 28 6f 62 6a  | like..  IF (obj|
0000ddb0  20 68 61 73 20 6c 6f 63  6b 65 64 29 20 22 42 75  | has locked) "Bu|
0000ddc0  74 20 69 74 27 73 20 6c  6f 63 6b 65 64 21 22 3b  |t it's locked!";|
0000ddd0  0a 0a 20 20 47 49 56 45  20 6f 62 6a 20 6c 6f 63  |..  GIVE obj loc|
0000dde0  6b 65 64 3b 0a 0a 54 68  65 20 6c 69 6d 69 74 20  |ked;..The limit |
0000ddf0  6f 6e 20 74 68 65 20 6e  75 6d 62 65 72 20 6f 66  |on the number of|
0000de00  20 61 74 74 72 69 62 75  74 65 73 20 63 61 6e 20  | attributes can |
0000de10  71 75 69 74 65 20 65 61  73 69 6c 79 20 62 65 20  |quite easily be |
0000de20  68 69 74 2e 20 20 54 68  65 20 61 75 74 68 6f 72  |hit.  The author|
0000de30  0a 68 61 73 20 66 6f 75  6e 64 20 69 74 20 75 73  |.has found it us|
0000de40  65 66 75 6c 20 74 6f 20  64 65 63 6c 61 72 65 20  |eful to declare |
0000de50  6f 6e 65 20 61 73 20 22  67 65 6e 65 72 61 6c 22  |one as "general"|
0000de60  2c 20 74 6f 20 62 65 20  75 73 65 64 20 66 6f 72  |, to be used for|
0000de70  20 64 69 66 66 65 72 65  6e 74 0a 74 68 69 6e 67  | different.thing|
0000de80  73 20 66 6f 72 20 64 69  66 66 65 72 65 6e 74 20  |s for different |
0000de90  6f 62 6a 65 63 74 73 2e  20 20 28 41 6e 64 20 74  |objects.  (And t|
0000dea0  68 69 73 20 69 73 20 64  6f 6e 65 20 66 6f 72 20  |his is done for |
0000deb0  79 6f 75 20 69 6e 20 74  68 65 20 6c 69 62 72 61  |you in the libra|
0000dec0  72 79 2e 29 0a 0a 49 74  20 73 6f 6d 65 74 69 6d  |ry.)..It sometim|
0000ded0  65 73 20 68 61 70 70 65  6e 73 20 74 68 61 74 20  |es happens that |
0000dee0  61 6e 20 61 74 74 72 69  62 75 74 65 20 69 73 20  |an attribute is |
0000def0  6f 6e 6c 79 20 6d 65 61  6e 69 6e 67 66 75 6c 20  |only meaningful |
0000df00  66 6f 72 20 61 20 70 61  72 74 69 63 75 6c 61 72  |for a particular|
0000df10  0a 6b 69 6e 64 20 6f 66  20 6f 62 6a 65 63 74 3a  |.kind of object:|
0000df20  20 66 6f 72 20 69 6e 73  74 61 6e 63 65 2c 20 22  | for instance, "|
0000df30  73 70 65 6c 6c 20 68 61  73 20 62 65 65 6e 20 72  |spell has been r|
0000df40  65 61 64 22 20 6d 69 67  68 74 20 6f 6e 6c 79 20  |ead" might only |
0000df50  62 65 20 6d 65 61 6e 69  6e 67 66 75 6c 0a 66 6f  |be meaningful.fo|
0000df60  72 20 61 20 22 73 63 72  6f 6c 6c 22 2e 20 20 57  |r a "scroll".  W|
0000df70  69 74 68 20 63 61 72 65  2c 20 74 68 65 72 65 66  |ith care, theref|
0000df80  6f 72 65 2c 20 6f 6e 65  20 6d 61 79 20 72 65 2d  |ore, one may re-|
0000df90  75 73 65 20 74 68 65 20  73 61 6d 65 20 61 74 74  |use the same att|
0000dfa0  72 69 62 75 74 65 20 74  6f 0a 68 61 76 65 20 64  |ribute to.have d|
0000dfb0  69 66 66 65 72 65 6e 74  20 6d 65 61 6e 69 6e 67  |ifferent meaning|
0000dfc0  73 20 66 6f 72 20 64 69  66 66 65 72 65 6e 74 20  |s for different |
0000dfd0  6b 69 6e 64 73 20 6f 66  20 6f 62 6a 65 63 74 2e  |kinds of object.|
0000dfe0  20 20 54 68 65 20 73 79  6e 74 61 78 20 74 6f 0a  |  The syntax to.|
0000dff0  64 65 63 6c 61 72 65 20  74 68 61 74 20 61 6e 20  |declare that an |
0000e000  61 74 74 72 69 62 75 74  65 20 69 73 20 62 65 69  |attribute is bei|
0000e010  6e 67 20 72 65 75 73 65  64 20 69 73 0a 0a 20 20  |ng reused is..  |
0000e020  41 54 54 52 49 42 55 54  45 20 3c 6e 65 77 3e 20  |ATTRIBUTE <new> |
0000e030  61 6c 69 61 73 20 3c 6f  6c 64 3e 3b 0a 0a 54 68  |alias <old>;..Th|
0000e040  65 72 65 61 66 74 65 72  20 49 6e 66 6f 72 6d 20  |ereafter Inform |
0000e050  77 69 6c 6c 20 74 72 65  61 74 20 74 68 65 20 6e  |will treat the n|
0000e060  65 77 20 61 6e 64 20 6f  6c 64 20 61 74 74 72 69  |ew and old attri|
0000e070  62 75 74 65 20 6e 61 6d  65 73 20 61 73 20 72 65  |bute names as re|
0000e080  66 65 72 72 69 6e 67 0a  74 6f 20 74 68 65 20 73  |ferring.to the s|
0000e090  61 6d 65 20 61 74 74 72  69 62 75 74 65 3a 20 69  |ame attribute: i|
0000e0a0  74 27 73 20 75 70 20 74  6f 20 74 68 65 20 70 72  |t's up to the pr|
0000e0b0  6f 67 72 61 6d 6d 65 72  20 74 6f 20 6d 61 6b 65  |ogrammer to make|
0000e0c0  20 73 75 72 65 20 74 68  69 73 20 64 6f 65 73 20  | sure this does |
0000e0d0  6e 6f 74 0a 6c 65 61 64  20 74 6f 20 69 6e 63 6f  |not.lead to inco|
0000e0e0  6e 73 69 73 74 65 6e 63  69 65 73 2e 0a 0a 0a 53  |nsistencies....S|
0000e0f0  65 63 6f 6e 64 6c 79 2c  20 74 68 65 72 65 20 61  |econdly, there a|
0000e100  72 65 20 22 70 72 6f 70  65 72 74 69 65 73 22 2e  |re "properties".|
0000e110  20 20 54 68 65 73 65 20  61 72 65 20 66 61 72 20  |  These are far |
0000e120  6d 6f 72 65 20 65 6c 61  62 6f 72 61 74 65 2e 20  |more elaborate. |
0000e130  20 46 6f 72 20 6f 6e 65  0a 74 68 69 6e 67 2c 20  | For one.thing, |
0000e140  6e 6f 74 20 65 76 65 72  79 20 6f 62 6a 65 63 74  |not every object|
0000e150  20 68 61 73 20 65 76 65  72 79 20 70 72 6f 70 65  | has every prope|
0000e160  72 74 79 2e 20 20 54 68  65 20 66 6f 6c 6c 6f 77  |rty.  The follow|
0000e170  69 6e 67 20 61 6c 6c 20  64 65 63 6c 61 72 65 20  |ing all declare |
0000e180  6e 65 77 0a 70 72 6f 70  65 72 74 69 65 73 3a 0a  |new.properties:.|
0000e190  0a 20 20 50 52 4f 50 45  52 54 59 20 64 6f 6f 72  |.  PROPERTY door|
0000e1a0  5f 74 6f 3b 0a 20 20 50  52 4f 50 45 52 54 59 20  |_to;.  PROPERTY |
0000e1b0  61 72 74 69 63 6c 65 20  22 61 22 3b 0a 20 20 50  |article "a";.  P|
0000e1c0  52 4f 50 45 52 54 59 20  62 6c 6f 72 70 6c 65 72  |ROPERTY blorpler|
0000e1d0  6f 75 74 69 6e 65 20 24  66 66 66 66 3b 0a 0a 54  |outine $ffff;..T|
0000e1e0  68 65 20 76 61 6c 75 65  20 67 69 76 65 6e 2c 20  |he value given, |
0000e1f0  69 6e 20 74 68 65 20 63  61 73 65 20 6f 66 20 61  |in the case of a|
0000e200  72 74 69 63 6c 65 20 61  6e 64 20 62 6c 6f 72 70  |rticle and blorp|
0000e210  6c 65 72 6f 75 74 69 6e  65 2c 20 69 73 20 74 68  |leroutine, is th|
0000e220  65 20 64 65 66 61 75 6c  74 0a 76 61 6c 75 65 3a  |e default.value:|
0000e230  20 74 68 61 74 20 69 73  2c 20 74 68 65 20 76 61  | that is, the va|
0000e240  6c 75 65 20 6f 66 20 74  68 65 20 70 72 6f 70 65  |lue of the prope|
0000e250  72 74 79 20 77 68 69 63  68 20 61 6e 20 6f 62 6a  |rty which an obj|
0000e260  65 63 74 20 77 69 6c 6c  20 68 61 76 65 20 69 66  |ect will have if|
0000e270  20 69 74 0a 64 6f 65 73  6e 27 74 20 65 78 70 6c  | it.doesn't expl|
0000e280  69 63 69 74 6c 79 20 68  61 76 65 20 73 6f 6d 65  |icitly have some|
0000e290  20 6f 74 68 65 72 20 76  61 6c 75 65 2e 20 20 49  | other value.  I|
0000e2a0  66 20 79 6f 75 20 64 6f  6e 27 74 20 64 65 66 69  |f you don't defi|
0000e2b0  6e 65 20 61 20 64 65 66  61 75 6c 74 0a 76 61 6c  |ne a default.val|
0000e2c0  75 65 2c 20 69 74 20 77  69 6c 6c 20 62 79 20 64  |ue, it will by d|
0000e2d0  65 66 61 75 6c 74 20 62  65 20 30 2e 0a 0a 53 6f  |efault be 0...So|
0000e2e0  2c 20 66 6f 72 20 69 6e  73 74 61 6e 63 65 2c 0a  |, for instance,.|
0000e2f0  0a 20 20 66 72 6f 67 2e  64 6f 6f 72 5f 74 6f 0a  |.  frog.door_to.|
0000e300  0a 77 69 6c 6c 20 62 65  20 30 20 69 66 20 22 66  |.will be 0 if "f|
0000e310  72 6f 67 22 20 68 61 73  20 6e 6f 20 64 6f 6f 72  |rog" has no door|
0000e320  5f 74 6f 20 65 6e 74 72  79 2e 0a 0a 54 68 65 20  |_to entry...The |
0000e330  64 61 74 61 20 66 6f 72  20 61 20 67 69 76 65 6e  |data for a given|
0000e340  20 70 72 6f 70 65 72 74  79 20 63 61 6e 20 62 65  | property can be|
0000e350  20 61 20 73 69 6e 67 6c  65 20 6e 75 6d 62 65 72  | a single number|
0000e360  2c 20 6f 72 20 61 6e 20  61 72 72 61 79 20 6f 66  |, or an array of|
0000e370  0a 76 61 6c 75 65 73 2e  20 20 49 6e 20 53 74 61  |.values.  In Sta|
0000e380  6e 64 61 72 64 20 28 76  65 72 73 69 6f 6e 20 33  |ndard (version 3|
0000e390  29 20 66 69 6c 65 73 20  74 68 69 73 20 63 6f 6e  |) files this con|
0000e3a0  73 69 73 74 73 20 6f 66  20 75 70 20 74 6f 20 66  |sists of up to f|
0000e3b0  6f 75 72 20 6e 75 6d 62  65 72 73 0a 69 6e 20 61  |our numbers.in a|
0000e3c0  20 72 6f 77 2c 20 6f 72  20 75 70 20 74 6f 20 65  | row, or up to e|
0000e3d0  69 67 68 74 20 62 79 74  65 73 20 6f 66 20 64 61  |ight bytes of da|
0000e3e0  74 61 3b 20 69 6e 20 41  64 76 61 6e 63 65 64 20  |ta; in Advanced |
0000e3f0  28 76 65 72 73 69 6f 6e  20 35 29 20 66 69 6c 65  |(version 5) file|
0000e400  73 20 69 74 0a 63 61 6e  20 61 6d 6f 75 6e 74 20  |s it.can amount |
0000e410  74 6f 20 33 32 20 6e 75  6d 62 65 72 73 20 6f 72  |to 32 numbers or|
0000e420  20 36 34 20 62 79 74 65  73 2e 0a 0a 42 75 74 20  | 64 bytes...But |
0000e430  74 68 65 20 76 61 73 74  20 6d 61 6a 6f 72 69 74  |the vast majorit|
0000e440  79 20 6f 66 20 70 72 6f  70 65 72 74 69 65 73 20  |y of properties |
0000e450  61 72 65 20 73 69 6e 67  6c 65 20 6e 75 6d 62 65  |are single numbe|
0000e460  72 73 2e 20 20 54 68 65  20 73 69 6d 70 6c 65 73  |rs.  The simples|
0000e470  74 20 77 61 79 20 74 6f  0a 67 65 74 20 61 74 20  |t way to.get at |
0000e480  74 68 65 20 63 75 72 72  65 6e 74 20 76 61 6c 75  |the current valu|
0000e490  65 20 69 73 20 73 6f 6d  65 74 68 69 6e 67 20 6c  |e is something l|
0000e4a0  69 6b 65 0a 0a 20 20 69  20 3d 20 6c 6f 63 61 74  |ike..  i = locat|
0000e4b0  69 6f 6e 2e 64 6f 6f 72  5f 74 6f 3b 0a 0a 77 68  |ion.door_to;..wh|
0000e4c0  69 63 68 20 77 69 6c 6c  20 67 65 74 20 74 68 65  |ich will get the|
0000e4d0  20 66 69 72 73 74 20 6e  75 6d 62 65 72 20 69 6e  | first number in|
0000e4e0  20 74 68 65 20 70 72 6f  70 65 72 74 79 20 64 6f  | the property do|
0000e4f0  6f 72 5f 74 6f 20 6f 66  20 6f 62 6a 65 63 74 20  |or_to of object |
0000e500  6c 6f 63 61 74 69 6f 6e  2e 0a 53 69 6d 69 6c 61  |location..Simila|
0000e510  72 6c 79 2c 20 69 74 20  63 61 6e 20 62 65 20 77  |rly, it can be w|
0000e520  72 69 74 74 65 6e 20 74  6f 20 77 69 74 68 0a 0a  |ritten to with..|
0000e530  20 20 6c 6f 63 61 74 69  6f 6e 2e 64 6f 6f 72 5f  |  location.door_|
0000e540  74 6f 20 3d 20 68 61 6c  6c 5f 6f 66 5f 6d 69 73  |to = hall_of_mis|
0000e550  74 73 3b 0a 0a 6f 72 20  28 69 66 20 70 72 65 66  |ts;..or (if pref|
0000e560  65 72 72 65 64 29 0a 0a  20 20 57 52 49 54 45 20  |erred)..  WRITE |
0000e570  6c 6f 63 61 74 69 6f 6e  20 64 6f 6f 72 5f 74 6f  |location door_to|
0000e580  20 68 61 6c 6c 5f 6f 66  5f 6d 69 73 74 73 3b 0a  | hall_of_mists;.|
0000e590  0a 0a 57 41 52 4e 49 4e  47 3a 20 54 68 65 20 5a  |..WARNING: The Z|
0000e5a0  2d 6d 61 63 68 69 6e 65  20 63 72 61 73 68 65 73  |-machine crashes|
0000e5b0  20 69 66 20 79 6f 75 20  61 74 74 65 6d 70 74 20  | if you attempt |
0000e5c0  74 6f 20 77 72 69 74 65  20 74 6f 20 61 20 70 72  |to write to a pr|
0000e5d0  6f 70 65 72 74 79 20 66  69 65 6c 64 0a 20 20 20  |operty field.   |
0000e5e0  2a 20 20 20 20 20 77 68  69 63 68 20 61 6e 20 6f  |*     which an o|
0000e5f0  62 6a 65 63 74 20 68 61  73 6e 27 74 20 67 6f 74  |bject hasn't got|
0000e600  2e 20 20 53 6f 20 61 6c  74 68 6f 75 67 68 20 79  |.  So although y|
0000e610  6f 75 20 63 61 6e 20 72  65 61 64 20 61 6e 20 75  |ou can read an u|
0000e620  6e 64 65 63 6c 61 72 65  64 0a 20 20 2f 21 5c 20  |ndeclared.  /!\ |
0000e630  20 20 20 70 72 6f 70 65  72 74 79 20 28 79 6f 75  |   property (you|
0000e640  20 6a 75 73 74 20 67 65  74 20 74 68 65 20 64 65  | just get the de|
0000e650  66 61 75 6c 74 20 76 61  6c 75 65 29 2c 20 79 6f  |fault value), yo|
0000e660  75 20 63 61 6e 27 74 20  77 72 69 74 65 20 74 6f  |u can't write to|
0000e670  20 6f 6e 65 2e 0a 20 2a  2d 2d 2d 2a 20 20 20 28  | one.. *---*   (|
0000e680  41 6c 73 6f 2c 20 79 6f  75 20 63 61 6e 27 74 20  |Also, you can't |
0000e690  65 78 74 65 6e 64 20 61  20 70 72 6f 70 65 72 74  |extend a propert|
0000e6a0  79 20 62 65 79 6f 6e 64  20 69 74 73 20 6c 65 6e  |y beyond its len|
0000e6b0  67 74 68 2e 29 0a 0a 0a  41 20 73 75 62 74 6c 65  |gth.)...A subtle|
0000e6c0  20 70 6f 69 6e 74 20 69  73 20 74 68 61 74 20 6e  | point is that n|
0000e6d0  75 6d 62 65 72 73 20 73  6d 61 6c 6c 65 72 20 74  |umbers smaller t|
0000e6e0  68 61 6e 20 32 35 36 20  61 72 65 20 73 74 6f 72  |han 256 are stor|
0000e6f0  65 64 20 64 69 66 66 65  72 65 6e 74 6c 79 20 66  |ed differently f|
0000e700  72 6f 6d 0a 6c 61 72 67  65 72 20 6f 6e 65 73 2e  |rom.larger ones.|
0000e710  20 20 49 6e 20 6f 72 64  65 72 20 74 6f 20 64 65  |  In order to de|
0000e720  63 69 64 65 20 77 68 65  74 68 65 72 20 74 68 65  |cide whether the|
0000e730  20 70 72 6f 70 65 72 74  79 20 69 73 20 6f 6e 65  | property is one|
0000e740  20 62 79 74 65 27 73 20  77 6f 72 74 68 20 6f 72  | byte's worth or|
0000e750  0a 74 77 6f 2c 20 74 68  65 20 5a 2d 6d 61 63 68  |.two, the Z-mach|
0000e760  69 6e 65 20 6c 6f 6f 6b  73 20 61 74 20 74 68 65  |ine looks at the|
0000e770  20 6e 75 6d 62 65 72 20  6f 66 20 62 79 74 65 73  | number of bytes|
0000e780  20 77 68 69 63 68 20 74  68 65 20 70 72 6f 70 65  | which the prope|
0000e790  72 74 79 20 68 61 73 20  69 6e 0a 61 6c 6c 2c 20  |rty has in.all, |
0000e7a0  61 6e 64 20 73 65 65 73  20 77 68 65 74 68 65 72  |and sees whether|
0000e7b0  20 69 74 20 69 73 20 6f  64 64 20 6f 72 20 65 76  | it is odd or ev|
0000e7c0  65 6e 3b 20 69 66 20 65  76 65 6e 2c 20 69 74 20  |en; if even, it |
0000e7d0  70 72 65 73 75 6d 65 73  20 74 68 65 20 6e 75 6d  |presumes the num|
0000e7e0  62 65 72 20 69 73 0a 61  20 32 2d 62 79 74 65 20  |ber is.a 2-byte |
0000e7f0  77 6f 72 64 3b 20 69 66  20 6f 64 64 2c 20 69 74  |word; if odd, it|
0000e800  20 70 72 65 73 75 6d 65  73 20 69 74 20 69 73 20  | presumes it is |
0000e810  6a 75 73 74 20 6f 6e 65  20 62 79 74 65 2e 0a 0a  |just one byte...|
0000e820  54 68 69 73 20 69 73 20  73 65 6c 64 6f 6d 20 73  |This is seldom s|
0000e830  6f 6d 65 74 68 69 6e 67  20 79 6f 75 20 6e 65 65  |omething you nee|
0000e840  64 20 74 6f 20 6b 6e 6f  77 20 61 62 6f 75 74 2c  |d to know about,|
0000e850  20 62 75 74 20 6f 63 63  61 73 69 6f 6e 61 6c 6c  | but occasionall|
0000e860  79 20 79 6f 75 20 77 69  6c 6c 0a 77 61 6e 74 20  |y you will.want |
0000e870  61 20 70 72 6f 70 65 72  74 79 20 77 68 69 63 68  |a property which|
0000e880  20 77 69 6c 6c 2c 20 6c  61 74 65 72 20 69 6e 20  | will, later in |
0000e890  74 68 65 20 67 61 6d 65  2c 20 6e 65 65 64 20 74  |the game, need t|
0000e8a0  6f 20 68 6f 6c 64 20 61  20 76 61 6c 75 65 20 6f  |o hold a value o|
0000e8b0  66 2c 20 73 61 79 2c 0a  31 30 30 30 2c 20 62 75  |f, say,.1000, bu|
0000e8c0  74 20 77 68 69 63 68 20  69 6e 69 74 69 61 6c 6c  |t which initiall|
0000e8d0  79 20 77 69 6c 6c 20 62  65 20 7a 65 72 6f 2e 20  |y will be zero. |
0000e8e0  20 54 68 69 73 20 69 73  20 70 61 72 74 69 63 75  | This is particu|
0000e8f0  6c 61 72 6c 79 20 74 68  65 20 63 61 73 65 20 77  |larly the case w|
0000e900  69 74 68 0a 74 69 6d 69  6e 67 20 6d 65 63 68 61  |ith.timing mecha|
0000e910  6e 69 73 6d 73 2c 20 66  6f 72 20 69 6e 73 74 61  |nisms, for insta|
0000e920  6e 63 65 2e 20 20 54 68  65 20 63 6f 6d 6d 61 6e  |nce.  The comman|
0000e930  64 0a 0a 20 20 50 52 4f  50 45 52 54 59 20 4c 4f  |d..  PROPERTY LO|
0000e940  4e 47 20 74 69 6d 65 6c  65 66 74 3b 0a 0a 64 65  |NG timeleft;..de|
0000e950  63 6c 61 72 65 73 20 74  68 65 20 70 72 6f 70 65  |clares the prope|
0000e960  72 74 79 20 22 74 69 6d  65 6c 65 66 74 22 20 61  |rty "timeleft" a|
0000e970  6e 64 20 72 65 71 75 69  72 65 73 20 49 6e 66 6f  |nd requires Info|
0000e980  72 6d 20 74 6f 20 6d 61  6b 65 20 73 75 72 65 20  |rm to make sure |
0000e990  74 68 61 74 20 61 6c 6c  0a 22 74 69 6d 65 6c 65  |that all."timele|
0000e9a0  66 74 22 20 66 69 65 6c  64 73 20 61 72 65 20 32  |ft" fields are 2|
0000e9b0  20 62 79 74 65 73 20 77  69 64 65 2c 20 65 76 65  | bytes wide, eve|
0000e9c0  6e 20 69 66 20 74 68 65  79 20 68 61 76 65 20 73  |n if they have s|
0000e9d0  6d 61 6c 6c 20 69 6e 69  74 69 61 6c 20 76 61 6c  |mall initial val|
0000e9e0  75 65 73 2e 0a 0a 28 49  6e 20 56 65 72 73 69 6f  |ues...(In Versio|
0000e9f0  6e 20 35 20 6f 6e 6c 79  2c 20 61 6c 6c 20 70 72  |n 5 only, all pr|
0000ea00  6f 70 65 72 74 69 65 73  20 61 72 65 20 64 65 66  |operties are def|
0000ea10  61 75 6c 74 65 64 20 74  6f 20 4c 4f 4e 47 20 62  |aulted to LONG b|
0000ea20  65 63 61 75 73 65 20 70  72 6f 70 65 72 74 79 0a  |ecause property.|
0000ea30  76 61 6c 75 65 73 20 61  72 65 20 76 65 72 79 20  |values are very |
0000ea40  6f 66 74 65 6e 20 6f 62  6a 65 63 74 20 6e 75 6d  |often object num|
0000ea50  62 65 72 73 2c 20 77 68  69 63 68 20 61 72 65 20  |bers, which are |
0000ea60  75 73 75 61 6c 6c 79 20  62 75 74 20 6e 6f 74 20  |usually but not |
0000ea70  61 6c 77 61 79 73 20 6c  65 73 73 0a 74 68 61 6e  |always less.than|
0000ea80  20 32 35 36 3b 20 74 68  69 73 20 6d 61 6b 65 73  | 256; this makes|
0000ea90  20 63 6f 64 65 20 6d 6f  72 65 20 70 6f 72 74 61  | code more porta|
0000eaa0  62 6c 65 20 61 6e 64 20  77 61 73 74 65 73 20 66  |ble and wastes f|
0000eab0  65 77 20 62 79 74 65 73  2e 29 0a 0a 50 72 6f 70  |ew bytes.)..Prop|
0000eac0  65 72 74 69 65 73 20 63  61 6e 20 61 6c 73 6f 20  |erties can also |
0000ead0  62 65 20 61 6c 69 61 73  65 64 2c 20 62 79 0a 0a  |be aliased, by..|
0000eae0  20 20 50 52 4f 50 45 52  54 59 20 3c 6e 65 77 3e  |  PROPERTY <new>|
0000eaf0  20 61 6c 69 61 73 20 3c  6f 6c 64 3e 3b 0a 0a 62  | alias <old>;..b|
0000eb00  75 74 20 22 50 52 4f 50  45 52 54 59 20 4c 4f 4e  |ut "PROPERTY LON|
0000eb10  47 20 3c 6e 65 77 3e 20  61 6c 69 61 73 20 3c 6f  |G <new> alias <o|
0000eb20  6c 64 3e 22 20 69 73 20  6d 65 61 6e 69 6e 67 6c  |ld>" is meaningl|
0000eb30  65 73 73 3a 20 74 68 65  20 70 72 6f 70 65 72 74  |ess: the propert|
0000eb40  79 20 68 61 73 0a 77 68  61 74 65 76 65 72 20 6c  |y has.whatever l|
0000eb50  65 6e 67 74 68 20 69 74  20 77 61 73 20 6f 72 69  |ength it was ori|
0000eb60  67 69 6e 61 6c 6c 79 20  73 65 74 20 75 70 20 61  |ginally set up a|
0000eb70  73 20 68 61 76 69 6e 67  2e 0a 0a 0a 4d 6f 72 65  |s having....More|
0000eb80  20 65 6c 61 62 6f 72 61  74 65 20 6d 61 6e 69 70  | elaborate manip|
0000eb90  75 6c 61 74 69 6f 6e 20  68 61 73 20 74 6f 20 62  |ulation has to b|
0000eba0  65 20 64 6f 6e 65 20 62  79 20 68 61 6e 64 2e 0a  |e done by hand..|
0000ebb0  0a 20 20 6b 20 3d 20 6f  2e 26 77 65 69 72 64 3b  |.  k = o.&weird;|
0000ebc0  0a 0a 73 65 74 73 20 6b  20 74 6f 20 74 68 65 20  |..sets k to the |
0000ebd0  61 64 64 72 65 73 73 20  6f 66 20 74 68 65 20 22  |address of the "|
0000ebe0  77 65 69 72 64 22 20 64  61 74 61 20 6f 66 20 6f  |weird" data of o|
0000ebf0  62 6a 65 63 74 20 6f 2e  20 20 54 6f 20 66 69 6e  |bject o.  To fin|
0000ec00  64 20 6f 75 74 20 68 6f  77 20 6d 61 6e 79 0a 62  |d out how many.b|
0000ec10  79 74 65 73 20 74 68 65  72 65 20 61 72 65 2c 20  |ytes there are, |
0000ec20  74 72 79 3a 0a 0a 20 20  6c 20 3d 20 6f 2e 23 77  |try:..  l = o.#w|
0000ec30  65 69 72 64 3b 0a 20 20  20 20 0a 4f 6e 63 65 20  |eird;.    .Once |
0000ec40  79 6f 75 20 68 61 76 65  20 74 68 65 20 61 64 64  |you have the add|
0000ec50  72 65 73 73 20 79 6f 75  20 63 61 6e 20 72 65 61  |ress you can rea|
0000ec60  64 20 61 6e 64 20 77 72  69 74 65 20 74 6f 20 69  |d and write to i|
0000ec70  74 20 64 69 72 65 63 74  6c 79 2e 20 20 42 65 20  |t directly.  Be |
0000ec80  63 61 72 65 66 75 6c 0a  6e 6f 74 20 74 6f 20 6f  |careful.not to o|
0000ec90  76 65 72 72 75 6e 20 74  68 65 20 6c 65 6e 67 74  |verrun the lengt|
0000eca0  68 2c 20 77 68 69 63 68  20 6d 61 79 20 6e 6f 74  |h, which may not|
0000ecb0  20 62 65 20 63 68 61 6e  67 65 64 2e 0a 0a 0a 54  | be changed....T|
0000ecc0  68 65 20 66 75 6e 63 74  69 6f 6e 73 0a 0a 20 20  |he functions..  |
0000ecd0  50 52 4f 50 28 6f 62 6a  65 63 74 2c 70 72 6f 70  |PROP(object,prop|
0000ece0  65 72 74 79 29 0a 20 20  50 52 4f 50 5f 41 44 44  |erty).  PROP_ADD|
0000ecf0  52 28 6f 62 6a 65 63 74  2c 70 72 6f 70 65 72 74  |R(object,propert|
0000ed00  79 29 3b 0a 20 20 50 52  4f 50 5f 4c 45 4e 28 50  |y);.  PROP_LEN(P|
0000ed10  52 4f 50 5f 41 44 44 52  28 6f 62 6a 65 63 74 2c  |ROP_ADDR(object,|
0000ed20  70 72 6f 70 65 72 74 79  29 29 3b 0a 0a 64 75 70  |property));..dup|
0000ed30  6c 69 63 61 74 65 20 74  68 65 20 65 66 66 65 63  |licate the effec|
0000ed40  74 20 6f 66 0a 0a 20 20  6f 62 6a 65 63 74 2e 70  |t of..  object.p|
0000ed50  72 6f 70 65 72 74 79 0a  20 20 6f 62 6a 65 63 74  |roperty.  object|
0000ed60  2e 26 70 72 6f 70 65 72  74 79 0a 20 20 6f 62 6a  |.&property.  obj|
0000ed70  65 63 74 2e 23 70 72 6f  70 65 72 74 79 0a 0a 62  |ect.#property..b|
0000ed80  75 74 20 61 72 65 20 6e  6f 77 20 73 75 70 65 72  |ut are now super|
0000ed90  63 65 64 65 64 20 62 79  20 74 68 65 6d 2e 0a 0a  |ceded by them...|
0000eda0  0a 41 6e 20 6f 62 6a 65  63 74 20 69 73 20 64 65  |.An object is de|
0000edb0  63 6c 61 72 65 64 20 62  79 20 73 6f 6d 65 74 68  |clared by someth|
0000edc0  69 6e 67 20 6c 69 6b 65  3a 0a 0a 0a 4f 62 6a 65  |ing like:...Obje|
0000edd0  63 74 20 74 72 61 70 64  6f 6f 72 20 22 68 69 6e  |ct trapdoor "hin|
0000ede0  67 65 64 20 74 72 61 70  64 6f 6f 72 22 20 61 74  |ged trapdoor" at|
0000edf0  74 69 63 0a 20 20 77 69  74 68 20 6e 61 6d 65 20  |tic.  with name |
0000ee00  22 68 69 6e 67 65 64 22  20 22 74 72 61 70 22 20  |"hinged" "trap" |
0000ee10  22 64 6f 6f 72 22 20 22  74 72 61 70 64 6f 6f 72  |"door" "trapdoor|
0000ee20  22 2c 0a 20 20 20 20 20  20 20 77 68 65 6e 5f 6f  |",.       when_o|
0000ee30  70 65 6e 20 22 41 20 68  69 6e 67 65 64 20 74 72  |pen "A hinged tr|
0000ee40  61 70 64 6f 6f 72 20 69  6e 20 74 68 65 20 66 6c  |apdoor in the fl|
0000ee50  6f 6f 72 20 73 74 61 6e  64 73 20 6f 70 65 6e 2c  |oor stands open,|
0000ee60  20 61 6e 64 20 6c 69 67  68 74 20 5c 0a 20 20 20  | and light \.   |
0000ee70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 73  |               s|
0000ee80  74 72 65 61 6d 73 20 69  6e 20 66 72 6f 6d 20 62  |treams in from b|
0000ee90  65 6c 6f 77 2e 22 2c 0a  20 20 20 20 20 20 20 77  |elow.",.       w|
0000eea0  68 65 6e 5f 63 6c 6f 73  65 64 20 22 54 68 65 72  |hen_closed "Ther|
0000eeb0  65 20 69 73 20 61 20 63  6c 6f 73 65 64 20 74 72  |e is a closed tr|
0000eec0  61 70 64 6f 6f 72 20 69  6e 20 74 68 65 20 6d 69  |apdoor in the mi|
0000eed0  64 64 6c 65 20 6f 66 20  74 68 65 20 66 6c 6f 6f  |ddle of the floo|
0000eee0  72 2e 22 2c 0a 20 20 20  20 20 20 20 64 6f 6f 72  |r.",.       door|
0000eef0  5f 74 6f 20 68 6f 75 73  65 2c 0a 20 20 20 20 20  |_to house,.     |
0000ef00  20 20 64 6f 6f 72 5f 64  69 72 20 64 5f 74 6f 0a  |  door_dir d_to.|
0000ef10  20 20 68 61 73 20 20 64  6f 6f 72 20 73 74 61 74  |  has  door stat|
0000ef20  69 63 20 6f 70 65 6e 20  6c 69 67 68 74 20 6f 70  |ic open light op|
0000ef30  65 6e 61 62 6c 65 3b 0a  0a 74 72 61 70 64 6f 6f  |enable;..trapdoo|
0000ef40  72 20 69 73 20 61 20 63  6f 6e 73 74 61 6e 74 20  |r is a constant |
0000ef50  77 68 69 63 68 20 69 73  20 73 65 74 20 74 6f 20  |which is set to |
0000ef60  69 74 73 20 6f 62 6a 65  63 74 20 6e 75 6d 62 65  |its object numbe|
0000ef70  72 3b 20 22 68 69 6e 67  65 64 20 74 72 61 70 64  |r; "hinged trapd|
0000ef80  6f 6f 72 22 0a 69 73 20  69 74 73 20 61 74 74 61  |oor".is its atta|
0000ef90  63 68 65 64 20 73 68 6f  72 74 20 6e 61 6d 65 3b  |ched short name;|
0000efa0  20 61 74 74 69 63 20 69  73 20 74 68 65 20 6f 62  | attic is the ob|
0000efb0  6a 65 63 74 20 77 68 69  63 68 20 69 6e 69 74 69  |ject which initi|
0000efc0  61 6c 6c 79 20 70 6f 73  73 65 73 73 65 73 0a 69  |ally possesses.i|
0000efd0  74 2e 20 20 49 66 20 69  74 20 77 61 73 20 74 6f  |t.  If it was to|
0000efe0  20 62 65 20 69 6e 69 74  69 61 6c 6c 79 20 75 6e  | be initially un|
0000eff0  6f 77 6e 65 64 2c 20 74  68 69 73 20 63 6f 75 6c  |owned, this coul|
0000f000  64 20 62 65 20 22 6e 6f  74 68 69 6e 67 22 20 69  |d be "nothing" i|
0000f010  6e 73 74 65 61 64 20 6f  66 0a 22 61 74 74 69 63  |nstead of."attic|
0000f020  22 2e 20 20 4f 72 20 6f  6e 65 20 63 61 6e 20 73  |".  Or one can s|
0000f030  69 6d 70 6c 79 20 6f 6d  69 74 20 69 74 20 61 6c  |imply omit it al|
0000f040  74 6f 67 65 74 68 65 72  3a 0a 0a 4f 62 6a 65 63  |together:..Objec|
0000f050  74 20 74 72 61 70 64 6f  6f 72 20 22 68 69 6e 67  |t trapdoor "hing|
0000f060  65 64 20 74 72 61 70 64  6f 6f 72 22 0a 20 20 77  |ed trapdoor".  w|
0000f070  69 74 68 20 2e 2e 2e 0a  0a 77 6f 75 6c 64 20 69  |ith .....would i|
0000f080  6e 69 74 69 61 6c 6c 79  20 62 65 20 6f 75 74 73  |nitially be outs|
0000f090  69 64 65 20 74 68 65 20  67 61 6d 65 20 28 61 6e  |ide the game (an|
0000f0a0  64 20 63 6f 75 6c 64 20  62 65 20 62 72 6f 75 67  |d could be broug|
0000f0b0  68 74 20 69 6e 20 6c 61  74 65 72 29 2e 0a 0a 0a  |ht in later)....|
0000f0c0  4f 62 6a 65 63 74 73 20  63 61 6e 20 61 6c 73 6f  |Objects can also|
0000f0d0  20 62 65 20 64 65 63 6c  61 72 65 64 2c 20 69 6e  | be declared, in|
0000f0e0  20 61 6e 20 69 64 65 6e  74 69 63 61 6c 20 77 61  | an identical wa|
0000f0f0  79 2c 20 62 79 20 74 68  65 20 4e 45 41 52 42 59  |y, by the NEARBY|
0000f100  20 63 6f 6d 6d 61 6e 64  2e 0a 54 68 65 20 6f 6e  | command..The on|
0000f110  6c 79 20 64 69 66 66 65  72 65 6e 63 65 20 69 73  |ly difference is|
0000f120  20 74 68 61 74 20 6e 6f  20 6f 62 6a 65 63 74 20  | that no object |
0000f130  63 61 6e 20 62 65 20 67  69 76 65 6e 20 74 6f 20  |can be given to |
0000f140  69 6e 69 74 69 61 6c 6c  79 20 70 6f 73 73 65 73  |initially posses|
0000f150  73 20 69 74 3b 0a 69 74  20 69 6e 69 74 69 61 6c  |s it;.it initial|
0000f160  6c 79 20 62 65 6c 6f 6e  67 73 20 74 6f 20 74 68  |ly belongs to th|
0000f170  65 20 6c 61 73 74 20 64  65 63 6c 61 72 65 64 20  |e last declared |
0000f180  4f 42 4a 45 43 54 2e 20  20 45 2e 67 2e 2c 20 69  |OBJECT.  E.g., i|
0000f190  6e 0a 0a 4f 62 6a 65 63  74 20 68 69 6c 6c 73 69  |n..Object hillsi|
0000f1a0  64 65 20 22 50 61 6e 6f  72 61 6d 69 63 20 48 69  |de "Panoramic Hi|
0000f1b0  6c 6c 73 69 64 65 22 0a  20 20 77 69 74 68 20 2e  |llside".  with .|
0000f1c0  2e 2e 0a 0a 4e 65 61 72  62 79 20 73 63 65 6e 65  |....Nearby scene|
0000f1d0  72 79 20 22 73 63 65 6e  65 72 79 22 0a 20 20 77  |ry "scenery".  w|
0000f1e0  69 74 68 20 2e 2e 2e 0a  0a 74 68 65 20 68 69 6c  |ith .....the hil|
0000f1f0  6c 73 69 64 65 20 69 73  20 74 6f 20 62 65 20 61  |lside is to be a|
0000f200  20 72 6f 6f 6d 2c 20 61  6e 64 20 74 68 65 20 73  | room, and the s|
0000f210  63 65 6e 65 72 79 20 77  69 6c 6c 20 62 65 6c 6f  |cenery will belo|
0000f220  6e 67 20 74 6f 20 69 74  2e 0a 0a 0a 54 68 65 20  |ng to it....The |
0000f230  66 75 6c 6c 20 73 79 6e  74 61 78 20 6f 66 20 74  |full syntax of t|
0000f240  68 65 20 68 65 61 64 65  72 20 69 73 3a 0a 0a 20  |he header is:.. |
0000f250  20 20 20 20 4f 62 6a 65  63 74 20 3c 6f 62 6a 2d  |    Object <obj-|
0000f260  6e 61 6d 65 2d 31 3e 20  3c 6f 62 6a 2d 6e 61 6d  |name-1> <obj-nam|
0000f270  65 2d 32 3e 20 2e 2e 2e  20 3c 6f 62 6a 2d 6e 61  |e-2> ... <obj-na|
0000f280  6d 65 2d 6e 3e 0a 20 20  20 20 20 20 20 20 20 20  |me-n>.          |
0000f290  20 20 22 73 68 6f 72 74  20 6e 61 6d 65 22 20 5b  |  "short name" [|
0000f2a0  3c 70 61 72 65 6e 74 2d  6f 62 6a 3e 5d 0a 0a 6f  |<parent-obj>]..o|
0000f2b0  72 20 20 20 4e 65 61 72  62 79 20 3c 6f 62 6a 2d  |r   Nearby <obj-|
0000f2c0  6e 61 6d 65 2d 31 3e 20  3c 6f 62 6a 2d 6e 61 6d  |name-1> <obj-nam|
0000f2d0  65 2d 32 3e 20 2e 2e 2e  20 3c 6f 62 6a 2d 6e 61  |e-2> ... <obj-na|
0000f2e0  6d 65 2d 6e 3e 20 22 73  68 6f 72 74 20 6e 61 6d  |me-n> "short nam|
0000f2f0  65 22 0a 0a 6f 72 20 20  20 43 6c 61 73 73 20 20  |e"..or   Class  |
0000f300  3c 63 6c 61 73 73 2d 6e  61 6d 65 3e 0a 0a 61 6e  |<class-name>..an|
0000f310  64 20 6f 66 20 61 6e 20  6f 62 6a 65 63 74 20 69  |d of an object i|
0000f320  73 0a 0a 20 20 20 20 20  3c 48 65 61 64 65 72 3e  |s..     <Header>|
0000f330  20 5b 2c 5d 0a 20 20 20  20 20 22 63 6c 61 73 73  | [,].     "class|
0000f340  22 20 3c 63 6c 61 73 73  2d 31 3e 20 3c 63 6c 61  |" <class-1> <cla|
0000f350  73 73 2d 32 3e 20 2e 2e  2e 20 3c 63 6c 61 73 73  |ss-2> ... <class|
0000f360  2d 6e 3e a0 5b 2c 5d 0a  20 20 20 20 20 22 77 69  |-n>.[,].     "wi|
0000f370  74 68 22 20 20 3c 70 72  6f 70 65 72 74 79 2d 6e  |th"  <property-n|
0000f380  61 6d 65 2d 31 3e 20 3c  76 61 6c 75 65 2d 31 3e  |ame-1> <value-1>|
0000f390  20 2e 2e 2e 20 3c 76 61  6c 75 65 2d 6e 3e 2c 0a  | ... <value-n>,.|
0000f3a0  20 20 20 20 20 20 20 20  20 20 20 20 20 3c 70 72  |             <pr|
0000f3b0  6f 70 65 72 74 79 2d 6e  61 6d 65 2d 32 3e 20 3c  |operty-name-2> <|
0000f3c0  76 61 6c 75 65 2d 31 3e  20 2e 2e 2e 20 3c 76 61  |value-1> ... <va|
0000f3d0  6c 75 65 2d 6e 3e 2c 0a  20 20 20 20 20 20 20 20  |lue-n>,.        |
0000f3e0  20 20 20 20 20 2e 2e 2e  0a 20 20 20 20 20 20 20  |     ....       |
0000f3f0  20 20 20 20 20 20 3c 70  72 6f 70 65 72 74 79 2d  |      <property-|
0000f400  6e 61 6d 65 2d 6e 3e 20  3c 76 61 6c 75 65 2d 31  |name-n> <value-1|
0000f410  3e 20 2e 2e 2e 20 3c 76  61 6c 75 65 2d 6e 3e 20  |> ... <value-n> |
0000f420  5b 2c 5d 0a 20 20 20 20  20 22 68 61 73 22 20 20  |[,].     "has"  |
0000f430  20 3c 61 74 74 2d 31 3e  20 3c 61 74 74 2d 32 3e  | <att-1> <att-2>|
0000f440  20 2e 2e 2e 20 3c 61 74  74 2d 6e 3e a0 5b 2c 5d  | ... <att-n>.[,]|
0000f450  0a 0a 41 6c 74 68 6f 75  67 68 20 69 74 27 73 20  |..Although it's |
0000f460  63 6f 6e 76 65 6e 74 69  6f 6e 61 6c 20 74 6f 20  |conventional to |
0000f470  77 72 69 74 65 20 22 63  6c 61 73 73 22 2c 20 22  |write "class", "|
0000f480  77 69 74 68 22 20 61 6e  64 20 22 68 61 73 22 20  |with" and "has" |
0000f490  69 6e 20 74 68 69 73 20  6f 72 64 65 72 2c 0a 61  |in this order,.a|
0000f4a0  63 74 75 61 6c 6c 79 20  74 68 65 79 20 63 61 6e  |ctually they can|
0000f4b0  20 62 65 20 69 6e 20 61  6e 79 20 6f 72 64 65 72  | be in any order|
0000f4c0  20 61 6e 64 20 61 6e 79  20 6f 72 20 61 6c 6c 20  | and any or all |
0000f4d0  63 61 6e 20 62 65 20 6f  6d 69 74 74 65 64 20 61  |can be omitted a|
0000f4e0  6c 74 6f 67 65 74 68 65  72 3a 0a 61 6e 64 20 74  |ltogether:.and t|
0000f4f0  68 65 20 63 6f 6d 6d 61  73 20 69 6e 20 73 71 75  |he commas in squ|
0000f500  61 72 65 20 62 72 61 63  6b 65 74 73 20 5b 2c 5d  |are brackets [,]|
0000f510  20 61 72 65 20 6f 70 74  69 6f 6e 61 6c 20 69 6e  | are optional in|
0000f520  20 62 65 74 77 65 65 6e  20 74 68 65 73 65 20 66  | between these f|
0000f530  69 65 6c 64 73 2e 0a 0a  5b 4e 6f 74 69 63 65 20  |ields...[Notice |
0000f540  74 68 61 74 20 79 6f 75  20 6d 61 79 20 67 69 76  |that you may giv|
0000f550  65 20 61 6e 20 6f 62 6a  65 63 74 20 6d 6f 72 65  |e an object more|
0000f560  20 74 68 61 6e 20 6f 6e  65 20 69 6e 74 65 72 6e  | than one intern|
0000f570  61 6c 20 6e 61 6d 65 2c  20 74 68 75 73 3a 0a 0a  |al name, thus:..|
0000f580  20 20 4f 42 4a 45 43 54  20 66 72 6f 67 20 74 72  |  OBJECT frog tr|
0000f590  65 65 20 62 72 69 63 6b  20 22 66 72 6f 67 22 20  |ee brick "frog" |
0000f5a0  61 74 74 69 63 0a 20 20  20 20 77 69 74 68 20 2e  |attic.    with .|
0000f5b0  2e 2e 3b 0a 0a 61 66 74  65 72 20 77 68 69 63 68  |..;..after which|
0000f5c0  20 74 68 65 20 73 61 6d  65 20 6f 62 6a 65 63 74  | the same object|
0000f5d0  20 63 61 6e 20 62 65 20  63 61 6c 6c 65 64 20 66  | can be called f|
0000f5e0  72 6f 67 2c 20 74 72 65  65 20 6f 72 20 62 72 69  |rog, tree or bri|
0000f5f0  63 6b 20 77 69 74 68 69  6e 20 74 68 65 0a 73 6f  |ck within the.so|
0000f600  75 72 63 65 20 63 6f 64  65 3a 20 69 6e 20 6f 74  |urce code: in ot|
0000f610  68 65 72 20 77 6f 72 64  73 2c 20 73 65 76 65 72  |her words, sever|
0000f620  61 6c 20 63 6f 6e 73 74  61 6e 74 73 20 61 72 65  |al constants are|
0000f630  20 63 72 65 61 74 65 64  20 77 69 74 68 20 74 68  | created with th|
0000f640  65 20 73 61 6d 65 0a 76  61 6c 75 65 2e 20 20 57  |e same.value.  W|
0000f650  68 79 20 6f 6e 20 65 61  72 74 68 20 73 68 6f 75  |hy on earth shou|
0000f660  6c 64 20 79 6f 75 20 77  61 6e 74 20 74 68 69 73  |ld you want this|
0000f670  3f 20 20 2d 20 53 65 65  20 73 65 63 74 69 6f 6e  |?  - See section|
0000f680  20 28 31 38 29 2e 5d 0a  0a 0a 22 57 69 74 68 22  | (18).]..."With"|
0000f690  0a 2d 2d 2d 2d 2d 2d 0a  0a 57 61 72 6e 69 6e 67  |.------..Warning|
0000f6a0  3a 20 61 6e 20 65 78 63  65 6c 6c 65 6e 74 20 73  |: an excellent s|
0000f6b0  6f 75 72 63 65 20 6f 66  20 6d 79 73 74 65 72 69  |ource of mysteri|
0000f6c0  6f 75 73 20 65 72 72 6f  72 73 20 69 73 20 6d 69  |ous errors is mi|
0000f6d0  73 73 69 6e 67 20 6f 66  66 20 74 68 65 20 63 6f  |ssing off the co|
0000f6e0  6d 6d 61 73 0a 62 65 74  77 65 65 6e 20 74 68 65  |mmas.between the|
0000f6f0  20 70 72 6f 70 65 72 74  69 65 73 2c 20 73 69 6e  | properties, sin|
0000f700  63 65 20 70 72 6f 70 65  72 74 79 20 6e 61 6d 65  |ce property name|
0000f710  73 20 61 72 65 20 74 68  65 6d 73 65 6c 76 65 73  |s are themselves|
0000f720  20 6c 65 67 61 6c 20 63  6f 6e 73 74 61 6e 74 73  | legal constants|
0000f730  2e 0a 49 6e 66 6f 72 6d  20 77 61 72 6e 73 20 79  |..Inform warns y|
0000f740  6f 75 20 69 66 20 61 20  70 72 6f 70 65 72 74 79  |ou if a property|
0000f750  20 6e 61 6d 65 20 69 73  20 75 73 65 64 20 61 73  | name is used as|
0000f760  20 61 20 63 6f 6e 73 74  61 6e 74 20 61 66 74 65  | a constant afte|
0000f770  72 20 74 68 65 20 66 69  72 73 74 0a 65 6e 74 72  |r the first.entr|
0000f780  79 20 6f 66 20 61 20 70  72 6f 70 65 72 74 79 2c  |y of a property,|
0000f790  20 77 68 69 63 68 20 61  6c 74 68 6f 75 67 68 20  | which although |
0000f7a0  6c 65 67 61 6c 20 69 73  20 70 72 6f 62 61 62 6c  |legal is probabl|
0000f7b0  79 20 74 68 69 73 20 6d  69 73 74 61 6b 65 2e 0a  |y this mistake..|
0000f7c0  0a 54 68 65 72 65 20 69  73 20 6f 6e 65 20 73 70  |.There is one sp|
0000f7d0  65 63 69 61 6c 20 70 72  6f 70 65 72 74 79 2c 20  |ecial property, |
0000f7e0  63 61 6c 6c 65 64 20 22  6e 61 6d 65 22 2e 20 20  |called "name".  |
0000f7f0  49 74 73 20 64 61 74 61  20 6d 75 73 74 20 62 65  |Its data must be|
0000f800  20 28 75 70 20 74 6f 20  66 6f 75 72 0a 61 74 20  | (up to four.at |
0000f810  6d 6f 73 74 20 69 6e 20  76 65 72 73 69 6f 6e 2d  |most in version-|
0000f820  33 2c 20 6f 72 20 75 70  20 74 6f 20 74 68 69 72  |3, or up to thir|
0000f830  74 79 2d 74 77 6f 20 69  6e 20 76 65 72 73 69 6f  |ty-two in versio|
0000f840  6e 2d 35 29 20 77 6f 72  64 73 2c 20 61 73 20 61  |n-5) words, as a|
0000f850  62 6f 76 65 2c 20 61 6e  64 0a 74 68 65 73 65 20  |bove, and.these |
0000f860  61 72 65 20 65 6e 74 65  72 65 64 20 69 6e 74 6f  |are entered into|
0000f870  20 74 68 65 20 64 69 63  74 69 6f 6e 61 72 79 20  | the dictionary |
0000f880  61 73 20 6e 6f 75 6e 73  20 28 69 66 20 74 68 65  |as nouns (if the|
0000f890  79 20 61 72 65 6e 27 74  20 61 6c 72 65 61 64 79  |y aren't already|
0000f8a0  29 3a 0a 74 68 65 20 70  72 6f 70 65 72 74 79 20  |):.the property |
0000f8b0  64 61 74 61 20 61 63 74  75 61 6c 6c 79 20 73 74  |data actually st|
0000f8c0  6f 72 65 64 20 69 73 20  74 68 65 20 64 69 63 74  |ored is the dict|
0000f8d0  69 6f 6e 61 72 79 20 61  64 64 72 65 73 73 65 73  |ionary addresses|
0000f8e0  2e 0a 0a 4e 6f 74 65 20  74 68 61 74 20 74 68 65  |...Note that the|
0000f8f0  20 64 69 63 74 69 6f 6e  61 72 79 20 69 74 73 65  | dictionary itse|
0000f900  6c 66 20 64 6f 65 73 20  5f 6e 6f 74 5f 20 6b 6e  |lf does _not_ kn|
0000f910  6f 77 20 74 68 61 74 20  22 64 6f 6f 72 22 20 72  |ow that "door" r|
0000f920  65 66 65 72 73 20 74 6f  20 74 68 69 73 0a 6f 62  |efers to this.ob|
0000f930  6a 65 63 74 3a 20 74 68  65 72 65 20 6d 69 67 68  |ject: there migh|
0000f940  74 20 62 65 20 61 6e 79  20 6e 75 6d 62 65 72 20  |t be any number |
0000f950  6f 66 20 6f 62 6a 65 63  74 73 20 77 68 69 63 68  |of objects which|
0000f960  20 63 6f 75 6c 64 20 62  65 20 63 61 6c 6c 65 64  | could be called|
0000f970  20 22 64 6f 6f 72 22 2e  0a 0a 0a 49 66 20 79 6f  | "door"....If yo|
0000f980  75 20 67 69 76 65 20 61  20 70 72 6f 70 65 72 74  |u give a propert|
0000f990  79 20 6d 6f 72 65 20 74  68 61 6e 20 65 69 67 68  |y more than eigh|
0000f9a0  74 20 62 79 74 65 73 20  6f 66 20 64 61 74 61 20  |t bytes of data |
0000f9b0  69 6e 20 61 20 76 65 72  73 69 6f 6e 2d 33 20 67  |in a version-3 g|
0000f9c0  61 6d 65 2c 0a 49 6e 66  6f 72 6d 20 77 61 72 6e  |ame,.Inform warn|
0000f9d0  73 20 79 6f 75 20 61 6e  64 20 74 61 6b 65 73 20  |s you and takes |
0000f9e0  6f 6e 6c 79 20 74 68 65  20 66 69 72 73 74 20 65  |only the first e|
0000f9f0  69 67 68 74 2c 20 62 75  74 20 64 6f 65 73 20 6e  |ight, but does n|
0000fa00  6f 74 20 63 61 75 73 65  20 61 6e 0a 65 72 72 6f  |ot cause an.erro|
0000fa10  72 3a 20 74 68 69 73 20  69 73 20 73 6f 20 74 68  |r: this is so th|
0000fa20  61 74 2c 20 73 61 79 2c  0a 0a 20 20 4f 42 4a 45  |at, say,..  OBJE|
0000fa30  43 54 20 2e 2e 2e 0a 20  20 20 20 77 69 74 68 20  |CT ....    with |
0000fa40  6e 61 6d 65 20 22 72 61  64 69 6f 22 20 22 77 69  |name "radio" "wi|
0000fa50  72 65 6c 65 73 73 22 20  22 74 72 61 6e 73 69 73  |reless" "transis|
0000fa60  74 6f 72 22 20 22 70 6f  72 74 61 62 6c 65 22 20  |tor" "portable" |
0000fa70  22 73 74 65 72 65 6f 22  20 22 74 72 61 6e 6e 79  |"stereo" "tranny|
0000fa80  22 2c 0a 20 20 20 20 20  20 20 20 20 2e 2e 2e 0a  |",.         ....|
0000fa90  0a 77 69 6c 6c 20 63 6f  6d 70 69 6c 65 20 6f 6e  |.will compile on|
0000faa0  20 65 69 74 68 65 72 20  76 65 72 73 69 6f 6e 2d  | either version-|
0000fab0  33 20 6f 72 20 76 65 72  73 69 6f 6e 2d 35 20 28  |3 or version-5 (|
0000fac0  62 75 74 20 74 68 65 20  6c 61 73 74 20 74 77 6f  |but the last two|
0000fad0  20 73 79 6e 6f 6e 79 6d  73 0a 66 6f 72 20 22 72  | synonyms.for "r|
0000fae0  61 64 69 6f 22 20 77 69  6c 6c 20 6e 6f 74 20 65  |adio" will not e|
0000faf0  6e 74 65 72 20 74 68 65  20 64 69 63 74 69 6f 6e  |nter the diction|
0000fb00  61 72 79 20 69 66 20 69  74 27 73 20 62 65 69 6e  |ary if it's bein|
0000fb10  67 20 63 6f 6d 70 69 6c  65 64 20 61 73 0a 76 65  |g compiled as.ve|
0000fb20  72 73 69 6f 6e 2d 33 20  73 69 6e 63 65 20 61 20  |rsion-3 since a |
0000fb30  6e 61 6d 65 20 74 61 6b  65 73 20 74 77 6f 20 62  |name takes two b|
0000fb40  79 74 65 73 29 2e 0a 0a  0a 22 48 61 73 22 0a 2d  |ytes)...."Has".-|
0000fb50  2d 2d 2d 2d 0a 0a 41 66  74 65 72 20 22 68 61 73  |----..After "has|
0000fb60  22 20 69 73 20 61 20 6c  69 73 74 20 6f 66 20 61  |" is a list of a|
0000fb70  74 74 72 69 62 75 74 65  73 20 77 68 69 63 68 20  |ttributes which |
0000fb80  74 68 65 20 6f 62 6a 65  63 74 20 69 6e 69 74 69  |the object initi|
0000fb90  61 6c 6c 79 20 68 61 73  2e 0a 54 68 65 73 65 20  |ally has..These |
0000fba0  61 74 74 72 69 62 75 74  65 73 20 6d 61 79 20 61  |attributes may a|
0000fbb0  6c 73 6f 20 62 65 20 74  61 6b 65 6e 20 61 77 61  |lso be taken awa|
0000fbc0  79 2e 20 20 46 6f 72 20  65 78 61 6d 70 6c 65 3a  |y.  For example:|
0000fbd0  0a 0a 20 20 2e 2e 2e 0a  20 20 68 61 73 20 20 6c  |..  ....  has  l|
0000fbe0  69 67 68 74 20 7e 73 63  6f 72 65 64 3b 0a 0a 64  |ight ~scored;..d|
0000fbf0  65 63 6c 61 72 65 73 20  74 68 61 74 20 74 68 65  |eclares that the|
0000fc00  20 6f 62 6a 65 63 74 20  64 65 66 69 6e 69 74 65  | object definite|
0000fc10  6c 79 20 64 6f 65 73 6e  27 74 20 68 61 76 65 20  |ly doesn't have |
0000fc20  74 68 65 20 22 73 63 6f  72 65 64 22 20 61 74 74  |the "scored" att|
0000fc30  72 69 62 75 74 65 2e 0a  54 68 69 73 20 69 73 20  |ribute..This is |
0000fc40  6e 65 65 64 65 64 20 66  6f 72 20 6f 76 65 72 2d  |needed for over-|
0000fc50  72 69 64 69 6e 67 20 69  6e 68 65 72 69 74 61 6e  |riding inheritan|
0000fc60  63 65 73 2e 0a 0a 0a 49  6e 20 56 65 72 73 69 6f  |ces....In Versio|
0000fc70  6e 20 33 20 67 61 6d 65  73 20 28 74 68 65 20 64  |n 3 games (the d|
0000fc80  65 66 61 75 6c 74 29 20  74 68 65 72 65 20 61 72  |efault) there ar|
0000fc90  65 20 75 70 20 74 6f 20  32 35 35 20 6f 62 6a 65  |e up to 255 obje|
0000fca0  63 74 73 2c 20 65 61 63  68 20 77 69 74 68 20 33  |cts, each with 3|
0000fcb0  32 0a 22 61 74 74 72 69  62 75 74 65 22 20 66 6c  |2."attribute" fl|
0000fcc0  61 67 73 20 61 6e 64 20  75 70 20 74 6f 20 33 30  |ags and up to 30|
0000fcd0  20 22 70 72 6f 70 65 72  74 69 65 73 22 20 28 63  | "properties" (c|
0000fce0  6f 6c 6c 65 63 74 69 6f  6e 73 20 6f 66 20 64 61  |ollections of da|
0000fcf0  74 61 29 2e 20 20 49 6e  0a 56 65 72 73 69 6f 6e  |ta).  In.Version|
0000fd00  20 35 20 74 68 65 72 65  20 69 73 20 6e 6f 20 6c  | 5 there is no l|
0000fd10  69 6d 69 74 20 61 73 20  73 75 63 68 20 6f 6e 20  |imit as such on |
0000fd20  74 68 65 20 6e 75 6d 62  65 72 20 6f 66 20 6f 62  |the number of ob|
0000fd30  6a 65 63 74 73 2c 20 61  6e 64 20 74 68 65 20 6f  |jects, and the o|
0000fd40  74 68 65 72 0a 6c 69 6d  69 74 73 20 61 72 65 20  |ther.limits are |
0000fd50  69 6e 63 72 65 61 73 65  64 20 74 6f 20 34 38 20  |increased to 48 |
0000fd60  61 6e 64 20 36 32 20 72  65 73 70 65 63 74 69 76  |and 62 respectiv|
0000fd70  65 6c 79 2e 0a 0a 0a 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ely....---------|
0000fd80  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0000fdc0  2d 2d 0a 31 32 2e 20 52  6f 75 74 69 6e 65 73 20  |--.12. Routines |
0000fdd0  65 6d 62 65 64 64 65 64  20 69 6e 20 6f 62 6a 65  |embedded in obje|
0000fde0  63 74 73 0a 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |cts.------------|
0000fdf0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0000fe20  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0a  |---------------.|
0000fe30  0a 0a 53 6f 6d 65 20 70  72 6f 70 65 72 74 69 65  |..Some propertie|
0000fe40  73 20 6f 66 20 6f 62 6a  65 63 74 73 20 73 68 6f  |s of objects sho|
0000fe50  75 6c 64 20 62 65 20 72  6f 75 74 69 6e 65 73 2e  |uld be routines.|
0000fe60  20 20 46 6f 72 20 69 6e  73 74 61 6e 63 65 2c 20  |  For instance, |
0000fe70  69 6e 20 74 68 65 0a 73  74 61 6e 64 61 72 64 20  |in the.standard |
0000fe80  49 6e 66 6f 72 6d 20 6c  69 62 72 61 72 79 2c 20  |Inform library, |
0000fe90  61 6e 20 6f 62 6a 65 63  74 20 63 61 6e 20 68 61  |an object can ha|
0000fea0  76 65 20 61 20 22 64 65  73 63 72 69 62 65 22 20  |ve a "describe" |
0000feb0  70 72 6f 70 65 72 74 79  20 77 68 69 63 68 20 69  |property which i|
0000fec0  73 20 61 0a 72 6f 75 74  69 6e 65 20 74 6f 20 70  |s a.routine to p|
0000fed0  72 69 6e 74 20 6f 75 74  20 61 20 64 65 73 63 72  |rint out a descr|
0000fee0  69 70 74 69 6f 6e 20 6f  66 20 69 74 2e 0a 0a 54  |iption of it...T|
0000fef0  68 65 73 65 20 63 61 6e  20 65 69 74 68 65 72 20  |hese can either |
0000ff00  62 65 20 64 65 63 6c 61  72 65 64 20 61 73 20 61  |be declared as a|
0000ff10  6e 79 20 6f 74 68 65 72  20 70 72 6f 70 65 72 74  |ny other propert|
0000ff20  79 20 77 6f 75 6c 64 20  62 65 2c 20 62 79 20 67  |y would be, by g|
0000ff30  69 76 69 6e 67 0a 74 68  65 20 6e 61 6d 65 20 6f  |iving.the name o|
0000ff40  66 20 74 68 65 20 72 6f  75 74 69 6e 65 20 61 73  |f the routine as|
0000ff50  20 74 68 65 20 70 72 6f  70 65 72 74 79 20 76 61  | the property va|
0000ff60  6c 75 65 2c 20 6f 72 20  63 61 6e 20 62 65 20 61  |lue, or can be a|
0000ff70  63 74 75 61 6c 6c 79 20  69 6e 63 6c 75 64 65 64  |ctually included|
0000ff80  0a 69 6e 20 74 68 65 20  64 65 66 69 6e 69 74 69  |.in the definiti|
0000ff90  6f 6e 2e 20 20 46 6f 72  20 69 6e 73 74 61 6e 63  |on.  For instanc|
0000ffa0  65 2c 20 69 6e 20 74 68  65 20 63 6c 61 73 73 69  |e, in the classi|
0000ffb0  63 20 41 64 76 65 6e 74  75 72 65 20 6f 62 6a 65  |c Adventure obje|
0000ffc0  63 74 0a 0a 0a 4e 65 61  72 62 79 20 74 61 73 74  |ct...Nearby tast|
0000ffd0  79 5f 66 6f 6f 64 20 22  74 61 73 74 79 20 66 6f  |y_food "tasty fo|
0000ffe0  6f 64 22 0a 20 20 20 20  20 20 77 69 74 68 20 64  |od".      with d|
0000fff0  65 73 63 72 69 70 74 69  6f 6e 20 22 53 75 72 65  |escription "Sure|
00010000  20 6c 6f 6f 6b 73 20 79  75 6d 6d 79 21 22 2c 0a  | looks yummy!",.|
00010010  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 69  |               i|
00010020  6e 69 74 69 61 6c 20 22  54 68 65 72 65 20 69 73  |nitial "There is|
00010030  20 74 61 73 74 79 20 66  6f 6f 64 20 68 65 72 65  | tasty food here|
00010040  2e 22 2c 0a 20 20 20 20  20 20 20 20 20 20 20 6e  |.",.           n|
00010050  61 6d 65 20 22 66 6f 6f  64 22 20 22 72 61 74 69  |ame "food" "rati|
00010060  6f 6e 22 20 22 72 61 74  69 6f 6e 73 22 20 22 74  |on" "rations" "t|
00010070  72 69 70 65 22 0a 20 20  20 20 20 20 20 20 20 20  |ripe".          |
00010080  20 20 20 20 20 20 22 79  75 6d 6d 79 22 20 22 74  |      "yummy" "t|
00010090  61 73 74 79 22 20 22 64  65 6c 69 63 69 6f 75 73  |asty" "delicious|
000100a0  22 20 22 73 63 72 75 6d  70 74 69 6f 75 73 22 2c  |" "scrumptious",|
000100b0  0a 20 20 20 20 20 20 20  20 20 20 20 61 66 74 65  |.           afte|
000100c0  72 0a 20 20 20 20 20 20  20 20 20 20 20 5b 3b 20  |r.           [; |
000100d0  45 61 74 3a 20 22 44 65  6c 69 63 69 6f 75 73 21  |Eat: "Delicious!|
000100e0  22 3b 20 5d 2c 0a 20 20  20 20 20 20 20 20 20 20  |"; ],.          |
000100f0  20 61 72 74 69 63 6c 65  20 22 73 6f 6d 65 22 0a  | article "some".|
00010100  20 20 20 20 20 20 68 61  73 20 20 65 64 69 62 6c  |      has  edibl|
00010110  65 3b 0a 0a 0a 74 68 65  20 22 61 66 74 65 72 22  |e;...the "after"|
00010120  20 70 72 6f 70 65 72 74  79 20 64 6f 65 73 20 6e  | property does n|
00010130  6f 74 20 6e 61 6d 65 20  61 20 72 6f 75 74 69 6e  |ot name a routin|
00010140  65 20 62 75 74 20 69 6e  73 74 65 61 64 20 64 65  |e but instead de|
00010150  66 69 6e 65 73 20 69 74  2e 20 20 4e 6f 0a 6e 61  |fines it.  No.na|
00010160  6d 65 20 69 73 20 6e 65  65 64 65 64 20 66 6f 72  |me is needed for|
00010170  20 74 68 65 20 72 6f 75  74 69 6e 65 2e 20 20 48  | the routine.  H|
00010180  6f 77 65 76 65 72 2c 20  74 68 65 20 73 65 6d 69  |owever, the semi|
00010190  63 6f 6c 6f 6e 20 61 66  74 65 72 20 74 68 65 20  |colon after the |
000101a0  5b 20 69 73 0a 6e 65 65  64 65 64 3a 20 61 20 6c  |[ is.needed: a l|
000101b0  69 73 74 20 6f 66 20 6c  6f 63 61 6c 20 76 61 72  |ist of local var|
000101c0  69 61 62 6c 65 73 20 66  6f 6c 6c 6f 77 73 20 74  |iables follows t|
000101d0  68 65 20 5b 20 28 62 75  74 20 69 6e 20 74 68 69  |he [ (but in thi|
000101e0  73 20 65 78 61 6d 70 6c  65 20 74 68 65 72 65 0a  |s example there.|
000101f0  61 72 65 20 6e 6f 6e 65  29 2e 0a 0a 54 68 65 20  |are none)...The |
00010200  72 6f 75 74 69 6e 65 20  6d 75 73 74 20 65 6e 64  |routine must end|
00010210  20 77 69 74 68 20 65 69  74 68 65 72 20 22 5d 2c  | with either "],|
00010220  22 20 6f 72 20 22 5d 3b  22 2e 20 20 49 66 20 22  |" or "];".  If "|
00010230  5d 2c 22 20 74 68 65 20  6f 62 6a 65 63 74 20 64  |]," the object d|
00010240  65 66 69 6e 69 74 69 6f  6e 0a 63 61 6e 20 72 65  |efinition.can re|
00010250  73 75 6d 65 20 77 68 65  72 65 20 69 74 20 6c 65  |sume where it le|
00010260  66 74 20 6f 66 66 2c 20  77 69 74 68 20 66 75 72  |ft off, with fur|
00010270  74 68 65 72 20 70 72 6f  70 65 72 74 69 65 73 2e  |ther properties.|
00010280  20 20 28 49 66 20 69 74  20 65 6e 64 73 20 77 69  |  (If it ends wi|
00010290  74 68 0a 22 5d 3b 22 2c  20 74 68 65 6e 20 74 68  |th."];", then th|
000102a0  65 20 6f 62 6a 65 63 74  20 64 65 66 69 6e 69 74  |e object definit|
000102b0  69 6f 6e 20 65 6e 64 73  20 77 68 65 72 65 20 74  |ion ends where t|
000102c0  68 65 20 72 6f 75 74 69  6e 65 20 66 69 6e 69 73  |he routine finis|
000102d0  68 65 73 2e 29 0a 0a 0a  54 68 65 20 72 75 6c 65  |hes.)...The rule|
000102e0  73 20 66 6f 72 20 65 6d  62 65 64 64 65 64 20 72  |s for embedded r|
000102f0  6f 75 74 69 6e 65 73 20  61 72 65 20 73 6c 69 67  |outines are slig|
00010300  68 74 6c 79 20 64 69 66  66 65 72 65 6e 74 2e 20  |htly different. |
00010310  20 42 79 20 64 65 66 61  75 6c 74 2c 0a 74 68 65  | By default,.the|
00010320  79 20 72 65 74 75 72 6e  20 22 66 61 6c 73 65 22  |y return "false"|
00010330  2c 20 6f 72 20 30 20 28  69 6e 73 74 65 61 64 20  |, or 0 (instead |
00010340  6f 66 20 22 74 72 75 65  22 2c 20 77 68 69 63 68  |of "true", which|
00010350  20 6f 74 68 65 72 20 72  6f 75 74 69 6e 65 73 20  | other routines |
00010360  72 65 74 75 72 6e 0a 62  79 20 64 65 66 61 75 6c  |return.by defaul|
00010370  74 29 2e 20 20 54 68 65  79 20 61 6c 73 6f 20 61  |t).  They also a|
00010380  6c 6c 6f 77 20 61 20 68  61 6e 64 79 20 73 68 6f  |llow a handy sho|
00010390  72 74 68 61 6e 64 3a 0a  0a 20 20 20 20 41 63 74  |rthand:..    Act|
000103a0  69 6f 6e 20 5b 2c 20 41  63 74 69 6f 6e 32 20 2e  |ion [, Action2 .|
000103b0  2e 2e 5d 20 3a 20 2e 2e  2e 73 6f 6d 65 20 63 6f  |..] : ...some co|
000103c0  64 65 2e 2e 2e 0a 0a 65  78 65 63 75 74 65 73 20  |de.....executes |
000103d0  74 68 65 20 63 6f 64 65  20 6f 6e 6c 79 20 69 66  |the code only if|
000103e0  20 74 68 65 20 61 63 74  69 6f 6e 20 62 65 69 6e  | the action bein|
000103f0  67 20 63 6f 6e 73 69 64  65 72 65 64 20 69 73 20  |g considered is |
00010400  74 68 65 20 6f 6e 65 20  6e 61 6d 65 64 2e 0a 0a  |the one named...|
00010410  28 49 6e 66 6f 72 6d 20  61 63 74 75 61 6c 6c 79  |(Inform actually|
00010420  20 64 6f 65 73 20 74 68  69 73 20 62 79 20 73 65  | does this by se|
00010430  65 69 6e 67 20 69 66 20  74 68 65 20 22 73 77 69  |eing if the "swi|
00010440  74 63 68 20 76 61 72 69  61 62 6c 65 22 20 73 77  |tch variable" sw|
00010450  5f 5f 76 61 72 2c 0a 77  68 69 63 68 20 69 74 20  |__var,.which it |
00010460  65 78 70 65 63 74 73 20  74 6f 20 68 61 76 65 20  |expects to have |
00010470  62 65 65 6e 20 73 75 69  74 61 62 6c 79 20 73 65  |been suitably se|
00010480  74 20 75 70 20 62 79 20  74 68 65 20 6c 69 62 72  |t up by the libr|
00010490  61 72 79 2c 20 68 61 73  20 74 68 65 0a 67 69 76  |ary, has the.giv|
000104a0  65 6e 20 61 63 74 69 6f  6e 20 76 61 6c 75 65 73  |en action values|
000104b0  2e 29 0a 0a 0a 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.)...-----------|
000104c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00010500  0a 31 33 2e 20 43 6c 61  73 73 65 73 20 61 6e 64  |.13. Classes and|
00010510  20 69 6e 68 65 72 69 74  61 6e 63 65 0a 2d 2d 2d  | inheritance.---|
00010520  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00010560  2d 2d 2d 2d 2d 2d 2d 2d  0a 0a 0a 41 73 20 77 65  |--------...As we|
00010570  6c 6c 20 61 73 20 6f 62  6a 65 63 74 73 20 6f 6e  |ll as objects on|
00010580  65 20 63 61 6e 20 64 65  66 69 6e 65 20 63 6c 61  |e can define cla|
00010590  73 73 65 73 20 69 6e 20  61 6c 6d 6f 73 74 20 65  |sses in almost e|
000105a0  78 61 63 74 6c 79 20 74  68 65 20 73 61 6d 65 20  |xactly the same |
000105b0  77 61 79 2e 0a 54 68 65  20 6f 6e 6c 79 20 64 69  |way..The only di|
000105c0  66 66 65 72 65 6e 63 65  73 20 61 72 65 20 74 68  |fferences are th|
000105d0  61 74 20 61 20 63 6c 61  73 73 20 68 61 73 20 6e  |at a class has n|
000105e0  6f 20 73 68 6f 72 74 20  6e 61 6d 65 20 6f 72 20  |o short name or |
000105f0  69 6e 69 74 69 61 6c 20  6c 6f 63 61 74 69 6f 6e  |initial location|
00010600  20 0a 28 73 69 6e 63 65  20 69 74 20 64 6f 65 73  | .(since it does|
00010610  20 6e 6f 74 20 63 6f 72  72 65 73 70 6f 6e 64 20  | not correspond |
00010620  74 6f 20 61 20 72 65 61  6c 20 69 74 65 6d 29 2e  |to a real item).|
00010630  20 20 46 6f 72 20 65 78  61 6d 70 6c 65 2c 0a 0a  |  For example,..|
00010640  20 20 20 20 43 6c 61 73  73 20 54 72 65 61 73 75  |    Class Treasu|
00010650  72 65 0a 20 20 20 20 20  77 69 74 68 20 64 65 70  |re.     with dep|
00010660  6f 73 69 74 70 6f 69 6e  74 73 20 31 30 2c 0a 20  |ositpoints 10,. |
00010670  20 20 20 20 20 20 20 20  20 61 66 74 65 72 0a 20  |         after. |
00010680  20 20 20 20 20 20 20 20  20 5b 3b 20 54 61 6b 65  |         [; Take|
00010690  3a 20 69 66 20 28 6c 6f  63 61 74 69 6f 6e 3d 3d  |: if (location==|
000106a0  49 6e 73 69 64 65 5f 42  75 69 6c 64 69 6e 67 29  |Inside_Building)|
000106b0  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
000106c0  20 20 20 20 20 20 20 20  20 73 63 6f 72 65 3d 73  |         score=s|
000106d0  63 6f 72 65 2d 73 65 6c  66 2e 64 65 70 6f 73 69  |core-self.deposi|
000106e0  74 65 64 70 6f 69 6e 74  73 3b 0a 20 20 20 20 20  |tedpoints;.     |
000106f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 73 63  |              sc|
00010700  6f 72 65 3d 73 63 6f 72  65 2b 35 3b 0a 20 20 20  |ore=score+5;.   |
00010710  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00010720  22 54 61 6b 65 6e 21 22  3b 0a 20 20 20 20 20 20  |"Taken!";.      |
00010730  20 20 20 20 20 20 20 44  72 6f 70 3a 20 73 63 6f  |       Drop: sco|
00010740  72 65 3d 73 63 6f 72 65  2d 35 3b 0a 20 20 20 20  |re=score-5;.    |
00010750  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 69  |               i|
00010760  66 20 28 6c 6f 63 61 74  69 6f 6e 3d 3d 49 6e 73  |f (location==Ins|
00010770  69 64 65 5f 42 75 69 6c  64 69 6e 67 29 0a 20 20  |ide_Building).  |
00010780  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00010790  20 7b 20 20 20 73 63 6f  72 65 3d 73 63 6f 72 65  | {   score=score|
000107a0  2b 73 65 6c 66 2e 64 65  70 6f 73 69 74 65 64 70  |+self.depositedp|
000107b0  6f 69 6e 74 73 3b 0a 20  20 20 20 20 20 20 20 20  |oints;.         |
000107c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 22 53  |              "S|
000107d0  61 66 65 6c 79 20 64 65  70 6f 73 69 74 65 64 2e  |afely deposited.|
000107e0  22 3b 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |";.             |
000107f0  20 20 20 20 20 20 7d 20  20 20 20 20 20 20 20 20  |      }         |
00010800  20 20 20 20 20 20 0a 20  20 20 20 20 20 20 20 20  |      .         |
00010810  20 5d 2c 0a 20 20 20 20  20 68 61 73 20 20 76 61  | ],.     has  va|
00010820  6c 75 61 62 6c 65 3b 0a  0a 64 65 66 69 6e 65 73  |luable;..defines|
00010830  20 61 20 63 6c 61 73 73  2e 20 20 41 6e 20 6f 62  | a class.  An ob|
00010840  6a 65 63 74 20 6f 66 20  74 68 69 73 20 63 6c 61  |ject of this cla|
00010850  73 73 20 69 6e 68 65 72  69 74 73 20 74 68 65 20  |ss inherits the |
00010860  70 72 6f 70 65 72 74 69  65 73 0a 61 6e 64 20 61  |properties.and a|
00010870  74 74 72 69 62 75 74 65  73 20 69 74 20 64 65 66  |ttributes it def|
00010880  69 6e 65 73 3a 20 69 6e  20 74 68 69 73 20 63 61  |ines: in this ca|
00010890  73 65 2c 20 61 6e 20 6f  62 6a 65 63 74 20 6f 66  |se, an object of|
000108a0  20 63 6c 61 73 73 20 54  72 65 61 73 75 72 65 0a  | class Treasure.|
000108b0  70 69 63 6b 73 20 75 70  20 74 68 65 20 67 69 76  |picks up the giv|
000108c0  65 6e 20 73 63 6f 72 65  20 61 6e 64 20 72 75 6c  |en score and rul|
000108d0  65 73 20 61 75 74 6f 6d  61 74 69 63 61 6c 6c 79  |es automatically|
000108e0  2e 0a 0a 54 6f 20 64 65  63 6c 61 72 65 20 61 6e  |...To declare an|
000108f0  20 6f 62 6a 65 63 74 20  61 73 20 62 65 69 6e 67  | object as being|
00010900  20 6f 66 20 61 20 67 69  76 65 6e 20 63 6c 61 73  | of a given clas|
00010910  73 2c 20 6f 6e 65 20 77  72 69 74 65 73 2c 20 73  |s, one writes, s|
00010920  61 79 0a 0a 20 20 20 20  4e 65 61 72 62 79 20 62  |ay..    Nearby b|
00010930  61 72 73 5f 6f 66 5f 73  69 6c 76 65 72 20 22 62  |ars_of_silver "b|
00010940  61 72 73 20 6f 66 20 73  69 6c 76 65 72 22 0a 20  |ars of silver". |
00010950  20 20 20 20 63 6c 61 73  73 20 54 72 65 61 73 75  |    class Treasu|
00010960  72 65 0a 20 20 20 20 20  20 77 69 74 68 20 64 65  |re.      with de|
00010970  73 63 72 69 70 74 69 6f  6e 20 22 54 68 65 79 27  |scription "They'|
00010980  72 65 20 70 72 6f 62 61  62 6c 79 20 77 6f 72 74  |re probably wort|
00010990  68 20 61 20 66 6f 72 74  75 6e 65 21 22 2c 0a 20  |h a fortune!",. |
000109a0  20 20 20 20 20 20 20 20  20 20 69 6e 69 74 69 61  |          initia|
000109b0  6c 20 22 54 68 65 72 65  20 61 72 65 20 62 61 72  |l "There are bar|
000109c0  73 20 6f 66 20 73 69 6c  76 65 72 20 68 65 72 65  |s of silver here|
000109d0  21 22 2c 0a 20 20 20 20  20 20 20 20 20 20 20 6e  |!",.           n|
000109e0  61 6d 65 20 22 73 69 6c  76 65 72 22 20 22 62 61  |ame "silver" "ba|
000109f0  72 73 22 3b 0a 0a 54 68  65 20 22 63 6c 61 73 73  |rs";..The "class|
00010a00  22 20 66 69 65 6c 64 20  6f 66 20 61 6e 20 6f 62  |" field of an ob|
00010a10  6a 65 63 74 20 63 61 6e  20 63 6f 6e 74 61 69 6e  |ject can contain|
00010a20  20 61 20 6c 69 73 74 20  6f 66 20 63 6c 61 73 73  | a list of class|
00010a30  65 73 2c 0a 0a 20 20 20  20 20 63 6c 61 73 73 20  |es,..     class |
00010a40  43 31 20 2e 2e 2e 20 43  6e 0a 0a 69 6e 20 77 68  |C1 ... Cn..in wh|
00010a50  69 63 68 20 63 61 73 65  20 74 68 65 20 6f 62 6a  |ich case the obj|
00010a60  65 63 74 20 69 6e 68 65  72 69 74 73 20 66 69 72  |ect inherits fir|
00010a70  73 74 20 66 72 6f 6d 20  43 31 2c 20 74 68 65 6e  |st from C1, then|
00010a80  20 66 72 6f 6d 20 43 32  0a 61 6e 64 20 73 6f 20  | from C2.and so |
00010a90  6f 6e 2e 20 20 54 68 65  73 65 20 63 6c 61 73 73  |on.  These class|
00010aa0  65 73 20 6d 61 79 20 77  65 6c 6c 20 64 69 73 61  |es may well disa|
00010ab0  67 72 65 65 20 77 69 74  68 20 65 61 63 68 20 6f  |gree with each o|
00010ac0  74 68 65 72 2c 0a 73 6f  20 74 68 65 20 6f 72 64  |ther,.so the ord|
00010ad0  65 72 20 6d 61 74 74 65  72 73 2e 20 20 49 66 20  |er matters.  If |
00010ae0  43 31 20 73 61 79 73 20  22 64 65 70 6f 73 69 74  |C1 says "deposit|
00010af0  65 64 70 6f 69 6e 74 73  22 20 69 73 20 35 2c 0a  |edpoints" is 5,.|
00010b00  43 33 20 73 61 79 73 20  69 74 20 69 73 20 31 30  |C3 says it is 10|
00010b10  20 62 75 74 20 74 68 65  20 6f 62 6a 65 63 74 20  | but the object |
00010b20  64 65 66 69 6e 69 74 69  6f 6e 20 69 74 73 65 6c  |definition itsel|
00010b30  66 20 73 61 79 73 20 31  35 20 74 68 65 6e 0a 74  |f says 15 then.t|
00010b40  68 65 20 61 6e 73 77 65  72 20 69 73 20 31 35 2e  |he answer is 15.|
00010b50  0a 0a 53 6f 6d 65 20 70  72 6f 70 65 72 74 69 65  |..Some propertie|
00010b60  73 2c 20 68 6f 77 65 76  65 72 2c 20 64 6f 20 6e  |s, however, do n|
00010b70  6f 74 20 68 61 76 65 20  61 20 73 69 6e 67 6c 65  |ot have a single|
00010b80  20 76 61 6c 75 65 20 62  75 74 20 61 20 6c 69 73  | value but a lis|
00010b90  74 0a 6f 66 20 76 61 6c  75 65 73 2e 20 20 54 68  |t.of values.  Th|
00010ba0  65 73 65 20 63 61 6e 20  62 65 20 64 65 63 6c 61  |ese can be decla|
00010bb0  72 65 64 20 61 73 20 22  61 64 64 69 74 69 76 65  |red as "additive|
00010bc0  22 2c 20 65 2e 67 2e 20  62 79 0a 0a 20 20 20 20  |", e.g. by..    |
00010bd0  20 50 72 6f 70 65 72 74  79 20 61 64 64 69 74 69  | Property additi|
00010be0  76 65 20 62 65 66 6f 72  65 20 24 66 66 66 66 3b  |ve before $ffff;|
00010bf0  0a 0a 49 66 20 73 6f 2c  20 65 61 63 68 20 63 6c  |..If so, each cl|
00010c00  61 73 73 20 61 64 64 73  20 76 61 6c 75 65 73 20  |ass adds values |
00010c10  74 6f 20 74 68 65 20 6c  69 73 74 20 69 6e 20 6f  |to the list in o|
00010c20  72 64 65 72 2e 0a 0a 43  6c 61 73 73 65 73 20 63  |rder...Classes c|
00010c30  61 6e 20 74 68 65 6d 73  65 6c 76 65 73 20 69 6e  |an themselves in|
00010c40  68 65 72 69 74 20 66 72  6f 6d 20 6f 74 68 65 72  |herit from other|
00010c50  20 63 6c 61 73 73 65 73  2e 20 20 54 68 75 73 20  | classes.  Thus |
00010c60  61 20 63 6c 61 73 73 20  66 6f 72 0a 22 6c 69 6b  |a class for."lik|
00010c70  65 20 54 72 65 61 73 75  72 65 20 62 75 74 20 77  |e Treasure but w|
00010c80  69 74 68 20 6f 6e 6c 79  20 38 20 64 65 70 6f 73  |ith only 8 depos|
00010c90  69 74 65 64 70 6f 69 6e  74 73 22 20 69 73 20 65  |itedpoints" is e|
00010ca0  61 73 69 6c 79 20 77 72  69 74 74 65 6e 2e 0a 0a  |asily written...|
00010cb0  0a 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.---------------|
00010cc0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00010cf0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0a 31 34 2e  |------------.14.|
00010d00  20 56 65 72 62 73 20 61  6e 64 20 67 72 61 6d 6d  | Verbs and gramm|
00010d10  61 72 0a 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ar.-------------|
00010d20  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00010d50  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0a 0a  |--------------..|
00010d60  0a 20 20 20 20 20 22 54  68 65 20 62 6f 6f 6b 20  |.     "The book |
00010d70  65 6e 64 73 20 77 69 74  68 20 61 20 63 68 61 70  |ends with a chap|
00010d80  74 65 72 20 6f 6e 20 67  72 61 6d 6d 61 72 2e 2e  |ter on grammar..|
00010d90  2e 20 20 54 68 65 20 66  6f 6f 6c 69 73 68 20 61  |.  The foolish a|
00010da0  6e 64 20 74 68 65 0a 20  20 20 20 20 77 69 63 6b  |nd the.     wick|
00010db0  65 64 20 77 68 6f 20 6c  61 63 6b 20 72 65 73 70  |ed who lack resp|
00010dc0  65 63 74 20 66 6f 72 20  74 68 65 20 6c 61 6e 67  |ect for the lang|
00010dd0  75 61 67 65 20 77 69 6c  6c 20 6e 6f 74 20 74 61  |uage will not ta|
00010de0  6b 65 20 74 68 65 0a 20  20 20 20 20 73 6c 69 67  |ke the.     slig|
00010df0  68 74 65 73 74 20 6e 6f  74 69 63 65 20 6f 66 20  |htest notice of |
00010e00  69 74 2e 22 0a 0a 20 20  20 20 20 20 20 20 20 20  |it."..          |
00010e10  28 4b 69 6e 67 73 6c 65  79 20 41 6d 69 73 20 72  |(Kingsley Amis r|
00010e20  65 76 69 65 77 69 6e 67  20 74 68 65 20 4f 78 66  |eviewing the Oxf|
00010e30  6f 72 64 20 47 75 69 64  65 20 74 6f 20 45 6e 67  |ord Guide to Eng|
00010e40  6c 69 73 68 20 55 73 61  67 65 29 0a 0a 0a 57 68  |lish Usage)...Wh|
00010e50  65 72 65 61 73 20 6f 62  6a 65 63 74 73 20 73 68  |ereas objects sh|
00010e60  6f 75 6c 64 20 62 65 20  64 65 63 6c 61 72 65 64  |ould be declared|
00010e70  20 61 74 20 74 68 65 20  73 74 61 72 74 20 6f 66  | at the start of|
00010e80  20 74 68 65 20 66 69 6c  65 2c 20 74 68 65 20 67  | the file, the g|
00010e90  72 61 6d 6d 61 72 0a 74  6f 20 62 65 20 61 6c 6c  |rammar.to be all|
00010ea0  6f 77 65 64 20 62 79 20  74 68 65 20 67 61 6d 65  |owed by the game|
00010eb0  20 73 68 6f 75 6c 64 20  62 65 20 64 65 63 6c 61  | should be decla|
00010ec0  72 65 64 20 61 74 20 74  68 65 20 65 6e 64 2e 20  |red at the end. |
00010ed0  20 54 68 69 73 20 69 73  20 64 6f 6e 65 20 77 69  | This is done wi|
00010ee0  74 68 0a 74 68 65 20 56  45 52 42 20 63 6f 6d 6d  |th.the VERB comm|
00010ef0  61 6e 64 2e 20 20 56 45  52 42 20 64 6f 65 73 20  |and.  VERB does |
00010f00  73 6f 6d 65 74 68 69 6e  67 20 71 75 69 74 65 20  |something quite |
00010f10  63 6f 6d 70 6c 69 63 61  74 65 64 2c 20 62 75 74  |complicated, but|
00010f20  20 70 72 6f 62 61 62 6c  79 20 6e 6f 74 0a 77 68  | probably not.wh|
00010f30  61 74 20 79 6f 75 20 74  68 69 6e 6b 2e 20 20 41  |at you think.  A|
00010f40  20 74 79 70 69 63 61 6c  20 56 45 52 42 20 63 6f  | typical VERB co|
00010f50  6d 6d 61 6e 64 20 77 6f  75 6c 64 20 62 65 3a 0a  |mmand would be:.|
00010f60  0a 56 45 52 42 20 22 74  61 6b 65 22 20 22 67 65  |.VERB "take" "ge|
00010f70  74 22 20 22 70 69 63 6b  22 20 22 6c 69 66 74 22  |t" "pick" "lift"|
00010f80  20 20 2a 20 22 6f 75 74  22 20 20 20 20 20 20 20  |  * "out"       |
00010f90  20 20 20 20 20 20 20 20  20 20 20 20 20 2d 3e 20  |             -> |
00010fa0  45 78 69 74 0a 20 20 20  20 20 20 20 20 20 20 20  |Exit.           |
00010fb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00010fc0  20 20 20 20 20 20 2a 20  6d 75 6c 74 69 20 20 20  |      * multi   |
00010fd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00010fe0  20 2d 3e 20 54 61 6b 65  0a 20 20 20 20 20 20 20  | -> Take.       |
00010ff0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00011000  20 20 20 20 20 20 20 20  20 20 2a 20 6d 75 6c 74  |          * mult|
00011010  69 69 6e 73 69 64 65 20  22 66 72 6f 6d 22 20 6e  |iinside "from" n|
00011020  6f 75 6e 20 20 2d 3e 20  52 65 6d 6f 76 65 0a 20  |oun  -> Remove. |
00011030  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00011050  2a 20 22 69 6e 22 20 6e  6f 75 6e 20 20 20 20 20  |* "in" noun     |
00011060  20 20 20 20 20 20 20 20  20 20 20 2d 3e 20 45 6e  |           -> En|
00011070  74 65 72 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ter.            |
00011080  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00011090  20 20 20 20 20 2a 20 22  6f 66 66 22 20 68 65 6c  |     * "off" hel|
000110a0  64 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |d               |
000110b0  2d 3e 20 44 69 73 72 6f  62 65 3b 0a 0a 54 68 69  |-> Disrobe;..Thi|
000110c0  73 20 64 65 63 6c 61 72  65 73 20 61 20 76 65 72  |s declares a ver|
000110d0  62 2c 20 66 6f 72 20 77  68 69 63 68 20 22 74 61  |b, for which "ta|
000110e0  6b 65 22 2c 20 22 67 65  74 22 20 65 74 63 20 61  |ke", "get" etc a|
000110f0  72 65 20 73 79 6e 6f 6e  79 6d 73 2c 20 61 6e 64  |re synonyms, and|
00011100  20 77 68 69 63 68 0a 63  61 6e 20 74 61 6b 65 20  | which.can take |
00011110  66 69 76 65 20 64 69 66  66 65 72 65 6e 74 20 63  |five different c|
00011120  6f 75 72 73 65 73 2e 20  20 49 6e 20 74 68 65 20  |ourses.  In the |
00011130  66 69 72 73 74 2c 20 69  74 20 6d 75 73 74 20 62  |first, it must b|
00011140  65 20 66 6f 6c 6c 6f 77  65 64 20 62 79 20 74 68  |e followed by th|
00011150  65 0a 77 6f 72 64 20 22  6f 75 74 22 2e 20 20 49  |e.word "out".  I|
00011160  6e 20 74 68 65 20 6c 61  73 74 2c 20 69 74 20 6d  |n the last, it m|
00011170  75 73 74 20 62 65 20 66  6f 6c 6c 6f 77 65 64 20  |ust be followed |
00011180  62 79 20 22 6f 66 66 22  20 61 6e 64 20 74 68 65  |by "off" and the|
00011190  6e 20 61 6e 20 69 74 65  6d 0a 77 68 69 63 68 20  |n an item.which |
000111a0  69 73 20 63 75 72 72 65  6e 74 6c 79 20 68 65 6c  |is currently hel|
000111b0  64 20 62 79 20 74 68 65  20 70 6c 61 79 65 72 2e  |d by the player.|
000111c0  20 20 49 6e 20 74 68 65  20 73 65 63 6f 6e 64 2c  |  In the second,|
000111d0  20 69 74 20 63 61 6e 20  62 65 20 66 6f 6c 6c 6f  | it can be follo|
000111e0  77 65 64 20 62 79 0a 6f  6e 65 20 6f 62 6a 65 63  |wed by.one objec|
000111f0  74 2c 20 6f 72 20 61 20  6c 69 73 74 2c 20 70 65  |t, or a list, pe|
00011200  72 68 61 70 73 20 73 70  65 63 69 66 69 65 64 20  |rhaps specified |
00011210  61 73 20 22 65 76 65 72  79 74 68 69 6e 67 22 2c  |as "everything",|
00011220  20 66 6f 72 20 69 6e 73  74 61 6e 63 65 2e 0a 54  | for instance..T|
00011230  68 65 72 65 20 63 61 6e  20 62 65 20 6e 6f 20 67  |here can be no g|
00011240  72 61 6d 6d 61 72 20 61  74 20 61 6c 6c 2c 20 66  |rammar at all, f|
00011250  6f 72 20 65 78 61 6d 70  6c 65 0a 0a 56 45 52 42  |or example..VERB|
00011260  20 22 69 6e 76 65 6e 74  22 20 22 69 22 20 20 20  | "invent" "i"   |
00011270  20 20 20 20 20 20 20 20  20 20 20 20 20 2a 20 20  |             *  |
00011280  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00011290  20 20 20 20 20 20 20 20  2d 3e 20 49 6e 76 3b 0a  |        -> Inv;.|
000112a0  0a 41 66 74 65 72 20 74  68 65 20 22 2d 3e 22 20  |.After the "->" |
000112b0  69 73 20 74 68 65 20 6e  61 6d 65 20 6f 66 20 61  |is the name of a|
000112c0  20 72 6f 75 74 69 6e 65  20 77 68 69 63 68 20 69  | routine which i|
000112d0  73 20 74 6f 20 62 65 20  63 61 6c 6c 65 64 20 77  |s to be called w|
000112e0  68 65 6e 20 74 68 69 73  20 69 73 0a 6d 61 74 63  |hen this is.matc|
000112f0  68 65 64 2e 0a 0a 49 66  20 61 20 76 65 72 62 20  |hed...If a verb |
00011300  69 73 20 64 65 63 6c 61  72 65 64 20 61 73 20 61  |is declared as a|
00011310  20 6d 65 74 61 2d 76 65  72 62 2c 20 65 2e 67 2e  | meta-verb, e.g.|
00011320  20 76 69 61 0a 0a 20 20  20 56 45 52 42 20 6d 65  | via..   VERB me|
00011330  74 61 20 22 73 63 6f 72  65 22 0a 20 20 20 20 20  |ta "score".     |
00011340  20 20 20 20 20 20 20 20  20 20 20 2a 20 20 20 20  |           *    |
00011350  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00011360  20 20 20 20 20 20 20 20  20 20 20 20 2d 3e 20 53  |            -> S|
00011370  63 6f 72 65 3b 0a 0a 74  68 65 6e 20 74 68 65 20  |core;..then the |
00011380  70 61 72 73 65 72 20 77  69 6c 6c 20 74 72 65 61  |parser will trea|
00011390  74 20 69 74 20 61 73 20  6f 75 74 73 69 64 65 20  |t it as outside |
000113a0  74 68 65 20 67 61 6d 65  20 2d 20 74 61 6b 69 6e  |the game - takin|
000113b0  67 20 6e 6f 20 74 69 6d  65 20 75 70 2c 20 61 6e  |g no time up, an|
000113c0  64 0a 70 6f 73 73 69 62  6c 65 20 61 74 20 61 6e  |d.possible at an|
000113d0  79 20 6d 6f 6d 65 6e 74  2e 0a 0a 0a 0a 46 6f 72  |y moment.....For|
000113e0  20 74 72 61 64 69 74 69  6f 6e 61 6c 20 72 65 61  | traditional rea|
000113f0  73 6f 6e 73 20 75 6e 63  6c 65 61 72 20 74 6f 20  |sons unclear to |
00011400  74 68 65 20 61 75 74 68  6f 72 2c 20 70 72 65 76  |the author, prev|
00011410  69 6f 75 73 20 49 6e 66  6f 63 6f 6d 20 68 61 63  |ious Infocom hac|
00011420  6b 65 72 73 20 68 61 76  65 0a 63 61 6c 6c 65 64  |kers have.called|
00011430  20 77 6f 72 64 73 20 73  75 63 68 20 61 73 20 22  | words such as "|
00011440  6f 75 74 22 20 61 6e 64  20 22 6f 66 66 22 20 61  |out" and "off" a|
00011450  64 6a 65 63 74 69 76 65  73 2e 20 20 54 68 65 79  |djectives.  They|
00011460  20 61 72 65 20 6f 66 20  63 6f 75 72 73 65 0a 28  | are of course.(|
00011470  6d 61 69 6e 6c 79 29 20  70 72 65 70 6f 73 69 74  |mainly) preposit|
00011480  69 6f 6e 73 2e 20 20 57  65 20 73 68 61 6c 6c 20  |ions.  We shall |
00011490  77 65 61 72 69 6c 79 20  66 6f 6c 6c 6f 77 20 63  |wearily follow c|
000114a0  6f 6e 76 65 6e 74 69 6f  6e 2e 0a 0a 52 65 6d 65  |onvention...Reme|
000114b0  6d 62 65 72 20 74 68 61  74 20 74 68 65 20 5a 2d  |mber that the Z-|
000114c0  6d 61 63 68 69 6e 65 20  64 6f 65 73 20 5f 6e 6f  |machine does _no|
000114d0  74 5f 20 63 6f 6e 74 61  69 6e 20 74 68 65 20 62  |t_ contain the b|
000114e0  75 6c 6b 20 6f 66 20 61  20 67 61 6d 65 20 70 61  |ulk of a game pa|
000114f0  72 73 65 72 2c 0a 6f 6e  6c 79 20 74 68 65 20 63  |rser,.only the c|
00011500  6f 6d 70 75 74 61 74 69  6f 6e 61 6c 6c 79 20 65  |omputationally e|
00011510  78 70 65 6e 73 69 76 65  20 61 6e 64 20 6c 6f 77  |xpensive and low|
00011520  2d 6c 65 76 65 6c 20 70  61 72 74 20 77 68 69 63  |-level part whic|
00011530  68 20 77 6f 72 6b 73 20  6f 75 74 20 77 68 61 74  |h works out what|
00011540  0a 74 68 65 20 77 6f 72  64 73 20 61 72 65 2e 20  |.the words are. |
00011550  20 53 6f 20 74 68 69 73  20 63 6f 6d 6d 61 6e 64  | So this command|
00011560  20 6f 6e 6c 79 20 73 65  74 73 20 75 70 20 61 20  | only sets up a |
00011570  74 61 62 6c 65 20 77 69  74 68 20 73 6f 6d 65 20  |table with some |
00011580  6e 75 6d 62 65 72 73 20  69 6e 2e 20 0a 49 66 20  |numbers in. .If |
00011590  79 6f 75 20 77 61 6e 74  20 61 20 70 61 72 73 65  |you want a parse|
000115a0  72 2c 20 79 6f 75 20 68  61 76 65 20 74 6f 20 77  |r, you have to w|
000115b0  72 69 74 65 20 63 6f 64  65 20 74 6f 20 64 65 61  |rite code to dea|
000115c0  6c 20 77 69 74 68 20 74  68 65 20 74 61 62 6c 65  |l with the table|
000115d0  20 61 67 61 69 6e 2e 0a  49 66 20 79 6f 75 27 72  | again..If you'r|
000115e0  65 20 75 73 69 6e 67 20  74 68 65 20 6c 69 62 72  |e using the libr|
000115f0  61 72 79 20 72 6f 75 74  69 6e 65 73 2c 20 74 68  |ary routines, th|
00011600  65 20 70 61 72 73 65 72  20 69 73 20 61 6c 6c 20  |e parser is all |
00011610  64 6f 6e 65 20 66 6f 72  20 79 6f 75 20 61 6e 64  |done for you and|
00011620  0a 74 68 65 20 70 6f 73  73 69 62 6c 65 20 74 6f  |.the possible to|
00011630  6b 65 6e 73 20 61 72 65  3a 0a 0a 20 20 20 54 6f  |kens are:..   To|
00011640  6b 65 6e 20 20 20 20 20  20 20 20 20 20 20 20 20  |ken             |
00011650  20 20 57 68 61 74 20 74  68 65 20 6c 69 62 72 61  |  What the libra|
00011660  72 79 20 70 61 72 73 65  72 20 75 73 65 73 20 69  |ry parser uses i|
00011670  74 20 66 6f 72 0a 20 20  20 3d 3d 3d 3d 3d 20 20  |t for.   =====  |
00011680  20 20 20 20 20 20 20 20  20 20 20 20 20 3d 3d 3d  |             ===|
00011690  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
*
000116b0  0a 20 20 20 6e 6f 75 6e  20 20 20 20 20 20 20 20  |.   noun        |
000116c0  20 20 20 20 20 20 20 20  61 6e 79 20 76 69 73 69  |        any visi|
000116d0  62 6c 65 20 6f 62 6a 65  63 74 0a 20 20 20 68 65  |ble object.   he|
000116e0  6c 64 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ld              |
000116f0  20 20 6f 62 6a 65 63 74  20 68 65 6c 64 0a 20 20  |  object held.  |
00011700  20 6d 75 6c 74 69 20 20  20 20 20 20 20 20 20 20  | multi          |
00011710  20 20 20 20 20 6f 6e 65  20 6f 72 20 6d 6f 72 65  |     one or more|
00011720  20 76 69 73 69 62 6c 65  20 6f 62 6a 65 63 74 73  | visible objects|
00011730  0a 20 20 20 6d 75 6c 74  69 68 65 6c 64 20 20 20  |.   multiheld   |
00011740  20 20 20 20 20 20 20 20  6f 6e 65 20 6f 72 20 6d  |        one or m|
00011750  6f 72 65 20 68 65 6c 64  20 6f 62 6a 65 63 74 73  |ore held objects|
00011760  0a 20 20 20 6d 75 6c 74  69 65 78 63 65 70 74 20  |.   multiexcept |
00011770  20 20 20 20 20 20 20 20  6f 6e 65 20 6f 72 20 6d  |        one or m|
00011780  6f 72 65 20 6f 62 6a 65  63 74 73 2c 20 65 78 63  |ore objects, exc|
00011790  65 70 74 20 74 68 65 20  6f 74 68 65 72 20 6f 62  |ept the other ob|
000117a0  6a 65 63 74 20 0a 20 20  20 6d 75 6c 74 69 69 6e  |ject .   multiin|
000117b0  73 69 64 65 20 20 20 20  20 20 20 20 20 6f 6e 65  |side         one|
000117c0  20 6f 72 20 6d 6f 72 65  20 6f 62 6a 65 63 74 73  | or more objects|
000117d0  2c 20 69 6e 73 69 64 65  20 74 68 65 20 6f 74 68  |, inside the oth|
000117e0  65 72 20 6f 62 6a 65 63  74 0a 20 20 20 63 72 65  |er object.   cre|
000117f0  61 74 75 72 65 20 20 20  20 20 20 20 20 20 20 20  |ature           |
00011800  20 61 6e 20 61 6e 69 6d  61 74 65 20 63 72 65 61  | an animate crea|
00011810  74 75 72 65 0a 20 20 20  73 70 65 63 69 61 6c 20  |ture.   special |
00011820  20 20 20 20 20 20 20 20  20 20 20 20 61 6e 79 20  |            any |
00011830  73 69 6e 67 6c 65 20 77  6f 72 64 20 6f 72 20 6e  |single word or n|
00011840  75 6d 62 65 72 0a 20 20  20 6e 75 6d 62 65 72 20  |umber.   number |
00011850  20 20 20 20 20 20 20 20  20 20 20 20 20 61 20 6e  |             a n|
00011860  75 6d 62 65 72 20 6f 6e  6c 79 0a 0a 20 20 20 3c  |umber only..   <|
00011870  61 74 74 72 69 62 75 74  65 3e 20 20 20 20 20 20  |attribute>      |
00011880  20 20 20 61 6e 79 20 76  69 73 69 62 6c 65 20 6f  |   any visible o|
00011890  62 6a 65 63 74 20 77 69  74 68 20 74 68 65 20 67  |bject with the g|
000118a0  69 76 65 6e 20 61 74 74  72 69 62 75 74 65 0a 20  |iven attribute. |
000118b0  20 20 3c 52 6f 75 74 69  6e 65 3e 20 20 20 20 20  |  <Routine>     |
000118c0  20 20 20 20 20 20 74 68  65 20 72 6f 75 74 69 6e  |      the routin|
000118d0  65 20 69 73 20 63 61 6c  6c 65 64 3a 20 69 66 20  |e is called: if |
000118e0  69 74 20 72 65 74 75 72  6e 73 20 2d 31 2c 0a 20  |it returns -1,. |
000118f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00011900  20 20 20 20 20 20 20 20  6e 6f 20 6d 61 74 63 68  |        no match|
00011910  20 69 73 20 6d 61 64 65  3a 20 6f 74 68 65 72 77  | is made: otherw|
00011920  69 73 65 20 61 20 6d 61  74 63 68 20 69 73 20 6d  |ise a match is m|
00011930  61 64 65 2c 0a 20 20 20  20 20 20 20 20 20 20 20  |ade,.           |
00011940  20 20 20 20 20 20 20 20  20 20 20 20 20 20 77 69  |              wi|
00011950  74 68 20 74 68 65 20 76  61 6c 75 65 20 72 65 74  |th the value ret|
00011960  75 72 6e 65 64 0a 20 20  20 6e 6f 75 6e 20 3d 20  |urned.   noun = |
00011970  3c 52 6f 75 74 69 6e 65  3e 20 20 20 20 61 6e 79  |<Routine>    any|
00011980  20 76 69 73 69 62 6c 65  20 6f 62 6a 65 63 74 20  | visible object |
00011990  77 68 69 63 68 20 70 61  73 73 65 73 20 74 68 65  |which passes the|
000119a0  20 66 6f 6c 6c 6f 77 69  6e 67 20 74 65 73 74 3a  | following test:|
000119b0  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
000119c0  20 20 20 20 20 20 20 20  20 20 74 68 65 20 76 61  |          the va|
000119d0  72 69 61 62 6c 65 20 6e  6f 75 6e 20 69 73 20 73  |riable noun is s|
000119e0  65 74 20 74 6f 20 74 68  65 20 6f 62 6a 65 63 74  |et to the object|
000119f0  20 69 6e 0a 20 20 20 20  20 20 20 20 20 20 20 20  | in.            |
00011a00  20 20 20 20 20 20 20 20  20 20 20 20 20 71 75 65  |             que|
00011a10  73 74 69 6f 6e 2c 20 61  6e 64 20 52 6f 75 74 69  |stion, and Routi|
00011a20  6e 65 20 69 73 20 63 61  6c 6c 65 64 2e 20 20 49  |ne is called.  I|
00011a30  66 20 69 74 20 72 65 74  75 72 6e 73 0a 20 20 20  |f it returns.   |
00011a40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00011a50  20 20 20 20 20 20 74 72  75 65 2c 20 74 68 65 20  |      true, the |
00011a60  6f 62 6a 65 63 74 20 69  73 20 61 63 63 65 70 74  |object is accept|
00011a70  65 64 3b 20 6f 74 68 65  72 77 69 73 65 20 6e 6f  |ed; otherwise no|
00011a80  74 2e 0a 0a 4c 6f 6f 6b  20 74 68 72 6f 75 67 68  |t...Look through|
00011a90  20 74 68 65 20 6c 69 62  72 61 72 79 27 73 20 67  | the library's g|
00011aa0  72 61 6d 6d 61 72 20 74  61 62 6c 65 20 66 6f 72  |rammar table for|
00011ab0  20 65 78 61 6d 70 6c 65  73 2e 0a 0a 0a 4f 6e 65  | examples....One|
00011ac0  20 63 61 6e 20 61 6c 73  6f 20 65 78 74 65 6e 64  | can also extend|
00011ad0  20 61 20 70 72 65 76 69  6f 75 73 20 76 65 72 62  | a previous verb|
00011ae0  20 64 65 66 69 6e 69 74  69 6f 6e 20 62 79 0a 0a  | definition by..|
00011af0  20 20 20 45 58 54 45 4e  44 20 22 76 65 72 62 22  |   EXTEND "verb"|
00011b00  20 5b 6f 70 74 69 6f 6e  61 6c 2d 6b 65 79 77 6f  | [optional-keywo|
00011b10  72 64 5d 0a 20 20 20 20  20 20 20 2e 2e 2e 6f 6e  |rd].       ...on|
00011b20  65 20 6f 72 20 6d 6f 72  65 20 6c 69 6e 65 73 20  |e or more lines |
00011b30  6f 66 20 67 72 61 6d 6d  61 72 20 61 73 20 61 62  |of grammar as ab|
00011b40  6f 76 65 2e 2e 2e 3b 0a  0a 54 68 69 73 20 69 73  |ove...;..This is|
00011b50  20 75 73 65 66 75 6c 20  66 6f 72 20 61 64 64 69  | useful for addi|
00011b60  6e 67 20 74 6f 20 74 68  65 20 73 74 61 6e 64 61  |ng to the standa|
00011b70  72 64 20 6c 69 62 72 61  72 79 27 73 20 67 72 61  |rd library's gra|
00011b80  6d 6d 61 72 20 74 61 62  6c 65 2e 0a 54 68 65 20  |mmar table..The |
00011b90  6f 70 74 69 6f 6e 61 6c  20 6b 65 79 77 6f 72 64  |optional keyword|
00011ba0  20 63 61 6e 20 62 65 3a  0a 0a 20 20 20 72 65 70  | can be:..   rep|
00011bb0  6c 61 63 65 20 20 20 20  20 20 63 6f 6d 70 6c 65  |lace      comple|
00011bc0  74 65 6c 79 20 72 65 70  6c 61 63 65 20 74 68 65  |tely replace the|
00011bd0  20 6f 6c 64 20 67 72 61  6d 6d 61 72 20 77 69 74  | old grammar wit|
00011be0  68 20 74 68 69 73 20 6f  6e 65 0a 20 20 20 66 69  |h this one.   fi|
00011bf0  72 73 74 20 20 20 20 20  20 20 20 69 6e 73 65 72  |rst        inser|
00011c00  74 20 74 68 65 20 6e 65  77 20 67 72 61 6d 6d 61  |t the new gramma|
00011c10  72 20 61 74 20 74 68 65  20 74 6f 70 20 6f 66 20  |r at the top of |
00011c20  74 68 65 20 6f 6c 64 20  6f 6e 65 0a 20 20 20 6c  |the old one.   l|
00011c30  61 73 74 20 20 20 20 20  20 20 20 20 69 6e 73 65  |ast         inse|
00011c40  72 74 20 74 68 65 20 6e  65 77 20 67 72 61 6d 6d  |rt the new gramm|
00011c50  61 72 20 61 74 20 74 68  65 20 62 6f 74 74 6f 6d  |ar at the bottom|
00011c60  20 6f 66 20 74 68 65 20  6f 6c 64 20 6f 6e 65 0a  | of the old one.|
00011c70  0a 54 68 65 20 64 65 66  61 75 6c 74 20 69 73 20  |.The default is |
00011c80  22 6c 61 73 74 22 2e 0a  0a 0a 2d 2d 2d 2d 2d 2d  |"last"....------|
00011c90  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00011cd0  2d 2d 2d 2d 2d 0a 31 35  2e 20 45 78 61 63 74 6c  |-----.15. Exactl|
00011ce0  79 20 77 68 61 74 20 49  6e 66 6f 72 6d 20 64 6f  |y what Inform do|
00011cf0  65 73 20 77 69 74 68 20  77 6f 72 64 73 0a 2d 2d  |es with words.--|
00011d00  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00011d40  2d 2d 2d 2d 2d 2d 2d 2d  2d 0a 0a 0a 20 20 20 20  |---------...    |
00011d50  20 42 75 6c 6c 64 75 73  74 2c 20 63 6f 6f 6c 61  | Bulldust, coola|
00011d60  6d 6f 6e 2c 20 64 61 73  68 69 6b 69 2c 20 66 69  |mon, dashiki, fi|
00011d70  7a 67 69 67 2c 20 67 72  75 6e 67 79 2c 20 6a 69  |zgig, grungy, ji|
00011d80  72 62 6c 65 2c 20 70 61  63 68 69 6e 6b 6f 2c 0a  |rble, pachinko,.|
00011d90  20 20 20 20 20 70 6f 6f  64 6c 65 2d 66 61 6b 65  |     poodle-fake|
00011da0  72 2c 20 73 68 61 72 6e  79 2c 20 74 61 67 68 61  |r, sharny, tagha|
00011db0  69 72 6d 0a 0a 20 20 20  20 20 20 20 20 20 20 28  |irm..          (|
00011dc0  73 6f 6d 65 20 6f 66 20  74 68 65 20 6d 6f 72 65  |some of the more|
00011dd0  20 72 65 61 64 69 6c 79  20 63 61 74 61 63 68 72  | readily catachr|
00011de0  65 73 74 69 63 20 77 6f  72 64 73 20 66 72 6f 6d  |estic words from|
00011df0  20 74 68 65 0a 20 20 20  20 20 20 20 20 20 20 20  | the.           |
00011e00  32 36 35 30 30 30 20 69  6e 20 43 68 61 6d 62 65  |265000 in Chambe|
00011e10  72 73 20 45 6e 67 6c 69  73 68 20 44 69 63 74 69  |rs English Dicti|
00011e20  6f 6e 61 72 79 29 0a 0a  0a 54 68 69 73 20 69 73  |onary)...This is|
00011e30  20 61 20 76 65 72 79 20  74 65 63 68 6e 69 63 61  | a very technica|
00011e40  6c 20 73 65 63 74 69 6f  6e 20 61 62 6f 75 74 20  |l section about |
00011e50  65 78 61 63 74 6c 79 20  68 6f 77 20 49 6e 66 6f  |exactly how Info|
00011e60  72 6d 20 64 65 61 6c 73  20 77 69 74 68 20 74 68  |rm deals with th|
00011e70  65 0a 67 72 61 6d 6d 61  72 20 74 61 62 6c 65 20  |e.grammar table |
00011e80  61 6e 64 20 74 68 65 20  64 69 63 74 69 6f 6e 61  |and the dictiona|
00011e90  72 79 2e 20 20 49 74 20  63 61 6e 20 73 61 66 65  |ry.  It can safe|
00011ea0  6c 79 20 62 65 20 69 67  6e 6f 72 65 64 20 62 79  |ly be ignored by|
00011eb0  20 61 6e 79 6f 6e 65 0a  75 73 69 6e 67 20 74 68  | anyone.using th|
00011ec0  65 20 6c 69 62 72 61 72  79 20 72 6f 75 74 69 6e  |e library routin|
00011ed0  65 73 20 73 75 70 70 6c  69 65 64 2c 20 61 6e 64  |es supplied, and|
00011ee0  20 69 6e 20 66 61 63 74  20 73 69 6e 63 65 20 74  | in fact since t|
00011ef0  68 65 20 72 65 6d 61 69  6e 69 6e 67 0a 73 65 63  |he remaining.sec|
00011f00  74 69 6f 6e 73 20 6f 66  20 74 68 65 20 6d 61 6e  |tions of the man|
00011f10  75 61 6c 20 70 72 6f 70  65 72 20 61 72 65 20 71  |ual proper are q|
00011f20  75 69 74 65 20 73 70 65  63 69 61 6c 69 73 65 64  |uite specialised|
00011f30  2c 20 74 68 65 20 6e 65  78 74 20 70 61 72 74 20  |, the next part |
00011f40  74 6f 0a 72 65 61 64 20  69 73 20 70 72 6f 62 61  |to.read is proba|
00011f50  62 6c 79 20 41 70 70 65  6e 64 69 78 20 43 2e 0a  |bly Appendix C..|
00011f60  0a 0a 0a 42 79 20 63 6f  6e 76 65 6e 74 69 6f 6e  |...By convention|
00011f70  2c 20 61 64 6a 65 63 74  69 76 65 73 20 61 72 65  |, adjectives are|
00011f80  20 6e 75 6d 62 65 72 65  64 20 64 6f 77 6e 77 61  | numbered downwa|
00011f90  72 64 73 20 66 72 6f 6d  20 24 66 66 2e 20 20 54  |rds from $ff.  T|
00011fa0  68 75 73 2c 20 69 66 0a  74 68 65 20 61 62 6f 76  |hus, if.the abov|
00011fb0  65 20 77 65 72 65 20 74  68 65 20 6f 70 65 6e 69  |e were the openi|
00011fc0  6e 67 20 6c 69 6e 65 73  20 6f 66 20 67 72 61 6d  |ng lines of gram|
00011fd0  6d 61 72 2c 20 22 66 72  6f 6d 22 20 77 6f 75 6c  |mar, "from" woul|
00011fe0  64 20 62 65 20 24 66 65  2c 20 61 6e 64 20 73 6f  |d be $fe, and so|
00011ff0  20 6f 6e 2e 20 0a 41 73  20 74 68 65 79 20 61 72  | on. .As they ar|
00012000  65 20 63 72 65 61 74 65  64 2c 20 74 68 65 79 20  |e created, they |
00012010  61 72 65 20 65 6e 74 65  72 65 64 20 69 6e 74 6f  |are entered into|
00012020  20 74 68 65 20 64 69 63  74 69 6f 6e 61 72 79 2c  | the dictionary,|
00012030  20 61 6e 64 20 61 6c 73  6f 20 69 6e 74 6f 20 74  | and also into t|
00012040  68 65 0a 61 64 6a 65 63  74 69 76 65 20 74 61 62  |he.adjective tab|
00012050  6c 65 2c 20 77 68 69 63  68 20 68 61 73 20 66 6f  |le, which has fo|
00012060  75 72 2d 62 79 74 65 20  65 6e 74 72 69 65 73 0a  |ur-byte entries.|
00012070  0a 20 20 3c 64 69 63 74  69 6f 6e 61 72 79 20 61  |.  <dictionary a|
00012080  64 64 72 65 73 73 20 6f  66 20 77 6f 72 64 3e 20  |ddress of word> |
00012090  20 30 30 20 20 3c 61 64  6a 65 63 74 69 76 65 20  | 00  <adjective |
000120a0  6e 75 6d 62 65 72 3e 0a  20 20 2d 2d 2d 2d 32 20  |number>.  ----2 |
000120b0  62 79 74 65 73 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |bytes-----------|
000120c0  2d 2d 2d 2d 2d 2d 20 20  2d 2d 2d 2d 32 20 62 79  |------  ----2 by|
000120d0  74 65 73 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 20 0a  |tes----------- .|
000120e0  0a 49 6e 20 6f 72 64 65  72 20 74 6f 20 6d 61 6b  |.In order to mak|
000120f0  65 20 6c 69 66 65 20 6d  6f 72 65 20 69 6e 74 65  |e life more inte|
00012100  72 65 73 74 69 6e 67 2c  20 74 68 65 73 65 20 65  |resting, these e|
00012110  6e 74 72 69 65 73 20 61  72 65 20 73 74 6f 72 65  |ntries are store|
00012120  64 20 69 6e 20 72 65 76  65 72 73 65 0a 6f 72 64  |d in reverse.ord|
00012130  65 72 20 28 69 2e 65 2e  2c 20 6c 6f 77 65 73 74  |er (i.e., lowest|
00012140  20 61 64 6a 65 63 74 69  76 65 20 6e 75 6d 62 65  | adjective numbe|
00012150  72 20 66 69 72 73 74 29  2e 20 20 54 68 65 20 61  |r first).  The a|
00012160  64 64 72 65 73 73 20 6f  66 20 74 68 69 73 20 74  |ddress of this t|
00012170  61 62 6c 65 20 69 73 0a  72 61 74 68 65 72 20 64  |able is.rather d|
00012180  69 66 66 69 63 75 6c 74  20 74 6f 20 64 65 64 75  |ifficult to dedu|
00012190  63 65 20 66 72 6f 6d 20  74 68 65 20 66 69 6c 65  |ce from the file|
000121a0  20 68 65 61 64 65 72 20  69 6e 66 6f 72 6d 61 74  | header informat|
000121b0  69 6f 6e 2c 20 73 6f 20  74 68 65 20 63 6f 6e 73  |ion, so the cons|
000121c0  74 61 6e 74 0a 23 61 64  6a 65 63 74 69 76 65 73  |tant.#adjectives|
000121d0  5f 74 61 62 6c 65 20 69  73 20 73 65 74 20 75 70  |_table is set up|
000121e0  20 62 79 20 49 6e 66 6f  72 6d 20 74 6f 20 72 65  | by Inform to re|
000121f0  66 65 72 20 74 6f 20 69  74 2e 20 20 49 6e 20 61  |fer to it.  In a|
00012200  6e 79 20 65 76 65 6e 74  2c 20 74 68 65 0a 74 61  |ny event, the.ta|
00012210  62 6c 65 20 69 73 6e 27  74 20 76 65 72 79 20 75  |ble isn't very u|
00012220  73 65 66 75 6c 20 61 6e  64 20 69 73 20 63 72 65  |seful and is cre|
00012230  61 74 65 64 20 6f 6e 6c  79 20 66 6f 72 20 74 68  |ated only for th|
00012240  65 20 73 61 6b 65 20 6f  66 20 63 6f 6e 66 6f 72  |e sake of confor|
00012250  6d 69 6e 67 20 74 6f 0a  49 6e 66 6f 63 6f 6d 20  |ming to.Infocom |
00012260  69 6e 74 65 72 6e 61 6c  20 63 6f 6e 76 65 6e 74  |internal convent|
00012270  69 6f 6e 73 2e 0a 0a 54  68 65 20 69 6d 70 6f 72  |ions...The impor|
00012280  74 61 6e 74 20 74 61 62  6c 65 73 20 61 72 65 20  |tant tables are |
00012290  74 68 65 20 67 72 61 6d  6d 61 72 20 61 6e 64 20  |the grammar and |
000122a0  61 63 74 69 6f 6e 20 74  61 62 6c 65 73 2e 0a 0a  |action tables...|
000122b0  54 68 65 20 67 72 61 6d  6d 61 72 20 74 61 62 6c  |The grammar tabl|
000122c0  65 20 61 64 64 72 65 73  73 20 69 73 20 73 74 6f  |e address is sto|
000122d0  72 65 64 20 69 6e 20 77  6f 72 64 20 37 20 28 69  |red in word 7 (i|
000122e0  65 20 62 79 74 65 73 20  31 34 20 61 6e 64 20 31  |e bytes 14 and 1|
000122f0  35 29 20 6f 66 20 74 68  65 0a 68 65 61 64 65 72  |5) of the.header|
00012300  2e 20 20 54 68 65 20 74  61 62 6c 65 20 63 6f 6e  |.  The table con|
00012310  73 69 73 74 73 20 6f 66  20 61 20 6c 69 73 74 20  |sists of a list |
00012320  6f 66 20 74 77 6f 2d 62  79 74 65 20 61 64 64 72  |of two-byte addr|
00012330  65 73 73 65 73 20 74 6f  20 74 68 65 20 65 6e 74  |esses to the ent|
00012340  72 69 65 73 0a 66 6f 72  20 65 61 63 68 20 77 6f  |ries.for each wo|
00012350  72 64 2e 20 20 54 68 69  73 20 6c 69 73 74 20 69  |rd.  This list i|
00012360  73 20 69 6d 6d 65 64 69  61 74 65 6c 79 20 66 6f  |s immediately fo|
00012370  6c 6c 6f 77 65 64 20 62  79 20 74 68 65 73 65 20  |llowed by these |
00012380  65 6e 74 72 69 65 73 2c  20 6f 6e 65 0a 61 66 74  |entries, one.aft|
00012390  65 72 20 61 6e 6f 74 68  65 72 2e 0a 0a 41 6e 20  |er another...An |
000123a0  65 6e 74 72 79 20 63 6f  6e 73 69 73 74 73 20 6f  |entry consists o|
000123b0  66 20 6f 6e 65 20 62 79  74 65 20 67 69 76 69 6e  |f one byte givin|
000123c0  67 20 74 68 65 20 6e 75  6d 62 65 72 20 6f 66 20  |g the number of |
000123d0  6c 69 6e 65 73 20 28 65  67 2c 20 35 20 66 6f 72  |lines (eg, 5 for|
000123e0  20 74 68 65 0a 22 74 61  6b 65 22 20 64 65 66 69  | the."take" defi|
000123f0  6e 69 74 69 6f 6e 20 61  62 6f 76 65 29 20 61 6e  |nition above) an|
00012400  64 20 74 68 65 6e 20 74  68 61 74 20 6d 61 6e 79  |d then that many|
00012410  20 38 2d 62 79 74 65 20  6c 69 6e 65 73 2e 20 20  | 8-byte lines.  |
00012420  54 68 65 73 65 20 6c 69  6e 65 73 0a 68 61 76 65  |These lines.have|
00012430  20 74 68 65 20 66 6f 72  6d 0a 0a 20 20 3c 6f 62  | the form..  <ob|
00012440  6a 65 63 74 73 3e 20 20  3c 73 65 71 75 65 6e 63  |jects>  <sequenc|
00012450  65 20 6f 66 20 77 6f 72  64 73 3e 20 20 3c 61 63  |e of words>  <ac|
00012460  74 69 6f 6e 20 6e 75 6d  62 65 72 3e 0a 20 20 2d  |tion number>.  -|
00012470  2d 31 20 62 79 74 65 2d  20 20 2d 2d 2d 2d 36 20  |-1 byte-  ----6 |
00012480  62 79 74 65 73 2d 2d 2d  2d 2d 2d 2d 2d 20 20 2d  |bytes--------  -|
00012490  2d 31 20 62 79 74 65 2d  2d 2d 2d 2d 2d 2d 0a 0a  |-1 byte-------..|
000124a0  3c 6f 62 6a 65 63 74 73  3e 20 69 73 20 74 68 65  |<objects> is the|
000124b0  20 6e 75 6d 62 65 72 20  6f 66 20 6f 62 6a 65 63  | number of objec|
000124c0  74 73 20 77 68 69 63 68  20 6e 65 65 64 20 74 6f  |ts which need to|
000124d0  20 62 65 20 73 75 70 70  6c 69 65 64 3a 20 65 67  | be supplied: eg|
000124e0  2c 20 30 20 66 6f 72 0a  22 69 6e 76 65 6e 74 6f  |, 0 for."invento|
000124f0  72 79 22 2c 20 31 20 66  6f 72 20 22 74 61 6b 65  |ry", 1 for "take|
00012500  20 66 72 6f 67 22 2c 20  32 20 66 6f 72 20 22 74  | frog", 2 for "t|
00012510  69 65 20 72 6f 70 65 20  74 6f 20 64 6f 67 22 2e  |ie rope to dog".|
00012520  20 20 54 68 65 20 73 65  71 75 65 6e 63 65 0a 6f  |  The sequence.o|
00012530  66 20 77 6f 72 64 73 20  67 69 76 65 73 20 75 70  |f words gives up|
00012540  20 74 6f 20 36 20 62 6c  6f 63 6b 73 20 6f 66 20  | to 6 blocks of |
00012550  73 79 6e 74 61 78 20 74  6f 20 66 6f 6c 6c 6f 77  |syntax to follow|
00012560  20 74 68 65 20 76 65 72  62 2c 20 77 68 69 63 68  | the verb, which|
00012570  20 6d 75 73 74 0a 62 65  20 6d 61 74 63 68 65 64  | must.be matched|
00012580  20 69 6e 20 6f 72 64 65  72 2e 20 20 4c 61 72 67  | in order.  Larg|
00012590  65 20 6e 75 6d 62 65 72  73 20 73 75 63 68 20 61  |e numbers such a|
000125a0  73 20 24 66 66 20 6d 65  61 6e 20 74 68 61 74 20  |s $ff mean that |
000125b0  74 68 65 20 61 70 70 72  6f 70 72 69 61 74 65 0a  |the appropriate.|
000125c0  61 64 6a 65 63 74 69 76  65 20 6d 75 73 74 20 61  |adjective must a|
000125d0  70 70 65 61 72 3b 20 73  6d 61 6c 6c 20 6e 75 6d  |ppear; small num|
000125e0  62 65 72 73 20 61 72 65  20 69 6e 73 65 72 74 65  |bers are inserte|
000125f0  64 20 62 79 20 73 70 65  63 69 61 6c 20 77 6f 72  |d by special wor|
00012600  64 73 20 73 75 63 68 20  61 73 20 0a 22 68 65 6c  |ds such as ."hel|
00012610  64 22 20 6f 72 20 22 6e  6f 75 6e 22 20 69 6e 20  |d" or "noun" in |
00012620  74 68 65 20 56 45 52 42  20 63 6f 6d 6d 61 6e 64  |the VERB command|
00012630  2e 20 20 54 6f 6b 65 6e  73 20 61 72 65 20 73 65  |.  Tokens are se|
00012640  74 20 61 63 63 6f 72 64  69 6e 67 20 74 6f 3a 0a  |t according to:.|
00012650  0a 20 20 20 57 6f 72 64  20 20 20 20 20 20 20 20  |.   Word        |
00012660  20 20 20 20 42 79 74 65  0a 20 20 20 3d 3d 3d 3d  |    Byte.   ====|
00012670  20 20 20 20 20 20 20 20  20 20 20 20 3d 3d 3d 3d  |            ====|
00012680  0a 20 20 20 6e 6f 75 6e  20 20 20 20 20 20 20 20  |.   noun        |
00012690  20 20 20 20 20 30 20 20  0a 20 20 20 68 65 6c 64  |     0  .   held|
000126a0  20 20 20 20 20 20 20 20  20 20 20 20 20 31 20 20  |             1  |
000126b0  0a 20 20 20 6d 75 6c 74  69 20 20 20 20 20 20 20  |.   multi       |
000126c0  20 20 20 20 20 32 20 20  0a 20 20 20 6d 75 6c 74  |     2  .   mult|
000126d0  69 68 65 6c 64 20 20 20  20 20 20 20 20 33 20 20  |iheld        3  |
000126e0  0a 20 20 20 6d 75 6c 74  69 65 78 63 65 70 74 20  |.   multiexcept |
000126f0  20 20 20 20 20 34 20 20  0a 20 20 20 6d 75 6c 74  |     4  .   mult|
00012700  69 69 6e 73 69 64 65 20  20 20 20 20 20 35 20 20  |iinside      5  |
00012710  0a 20 20 20 63 72 65 61  74 75 72 65 20 20 20 20  |.   creature    |
00012720  20 20 20 20 20 36 20 20  0a 20 20 20 73 70 65 63  |     6  .   spec|
00012730  69 61 6c 20 20 20 20 20  20 20 20 20 20 37 20 20  |ial          7  |
00012740  0a 20 20 20 6e 75 6d 62  65 72 20 20 20 20 20 20  |.   number      |
00012750  20 20 20 20 20 38 0a 0a  20 20 20 28 6e 6f 75 6e  |     8..   (noun|
00012760  3d 52 6f 75 74 69 6e 65  29 20 20 20 31 36 2b 70  |=Routine)   16+p|
00012770  61 72 73 69 6e 67 2d 72  6f 75 74 69 6e 65 2d 6e  |arsing-routine-n|
00012780  75 6d 62 65 72 0a 20 20  20 28 52 6f 75 74 69 6e  |umber.   (Routin|
00012790  65 29 20 20 20 20 20 20  20 20 36 34 2b 70 61 72  |e)        64+par|
000127a0  73 69 6e 67 2d 72 6f 75  74 69 6e 65 2d 6e 75 6d  |sing-routine-num|
000127b0  62 65 72 0a 20 20 20 28  61 74 74 72 69 62 75 74  |ber.   (attribut|
000127c0  65 29 20 20 20 20 20 20  31 32 38 2b 61 74 74 72  |e)      128+attr|
000127d0  69 62 75 74 65 20 6e 75  6d 62 65 72 0a 0a 20 20  |ibute number..  |
000127e0  20 28 61 64 6a 65 63 74  69 76 65 29 20 20 20 20  | (adjective)    |
000127f0  20 20 32 35 35 2d 61 64  6a 65 63 74 69 76 65 20  |  255-adjective |
00012800  6e 75 6d 62 65 72 0a 0a  50 61 72 73 69 6e 67 20  |number..Parsing |
00012810  72 6f 75 74 69 6e 65 73  20 68 61 76 65 20 61 64  |routines have ad|
00012820  64 72 65 73 73 65 73 20  77 68 69 63 68 20 61 72  |dresses which ar|
00012830  65 20 74 6f 6f 20 6c 61  72 67 65 20 74 6f 20 73  |e too large to s|
00012840  74 6f 72 65 20 69 6e 20  61 20 73 69 6e 67 6c 65  |tore in a single|
00012850  0a 62 79 74 65 2e 20 20  49 6e 73 74 65 61 64 20  |.byte.  Instead |
00012860  74 68 65 79 20 61 72 65  20 6e 75 6d 62 65 72 65  |they are numbere|
00012870  64 20 66 72 6f 6d 20 30  2c 20 61 6e 64 20 74 68  |d from 0, and th|
00012880  65 69 72 20 28 70 61 63  6b 65 64 29 20 61 64 64  |eir (packed) add|
00012890  72 65 73 73 65 73 20 61  72 65 0a 73 74 6f 72 65  |resses are.store|
000128a0  64 20 69 6e 20 74 68 65  20 70 72 65 61 63 74 69  |d in the preacti|
000128b0  6f 6e 73 20 74 61 62 6c  65 20 6f 66 20 74 68 65  |ons table of the|
000128c0  20 73 74 6f 72 79 20 66  69 6c 65 20 28 77 68 69  | story file (whi|
000128d0  63 68 20 69 73 20 63 61  6c 6c 65 64 0a 22 70 72  |ch is called."pr|
000128e0  65 61 63 74 69 6f 6e 73  22 20 62 65 63 61 75 73  |eactions" becaus|
000128f0  65 20 6f 66 20 77 68 61  74 20 69 74 20 77 61 73  |e of what it was|
00012900  20 75 73 65 64 20 66 6f  72 20 62 79 20 74 68 65  | used for by the|
00012910  20 6f 72 69 67 69 6e 61  6c 20 49 6e 66 6f 63 6f  | original Infoco|
00012920  6d 20 70 61 72 73 65 72  29 2e 0a 0a 54 68 65 20  |m parser)...The |
00012930  73 65 71 75 65 6e 63 65  20 69 73 20 70 61 64 64  |sequence is padd|
00012940  65 64 20 6f 75 74 20 74  6f 20 36 20 62 79 74 65  |ed out to 6 byte|
00012950  73 20 77 69 74 68 20 7a  65 72 6f 73 2e 0a 0a 54  |s with zeros...T|
00012960  68 65 20 61 63 74 69 6f  6e 20 6e 75 6d 62 65 72  |he action number|
00012970  73 20 62 65 67 69 6e 20  61 74 20 30 2e 20 20 54  |s begin at 0.  T|
00012980  68 65 20 66 69 72 73 74  20 72 6f 75 74 69 6e 65  |he first routine|
00012990  20 6d 65 6e 74 69 6f 6e  65 64 20 61 73 20 61 6e  | mentioned as an|
000129a0  20 61 63 74 69 6f 6e 20  28 69 6e 0a 74 68 65 20  | action (in.the |
000129b0  61 62 6f 76 65 20 65 78  61 6d 70 6c 65 2c 20 45  |above example, E|
000129c0  78 69 74 29 20 69 73 20  61 73 73 69 67 6e 65 64  |xit) is assigned|
000129d0  20 61 63 74 69 6f 6e 20  6e 75 6d 62 65 72 20 30  | action number 0|
000129e0  3b 20 74 68 65 20 6e 65  78 74 20 28 54 61 6b 65  |; the next (Take|
000129f0  29 0a 69 73 20 67 69 76  65 6e 20 31 2c 20 61 6e  |).is given 1, an|
00012a00  64 20 73 6f 20 6f 6e 2e  20 20 54 68 65 20 61 70  |d so on.  The ap|
00012a10  70 72 6f 70 72 69 61 74  65 20 6e 75 6d 62 65 72  |propriate number|
00012a20  20 69 73 20 73 74 6f 72  65 64 20 69 6e 20 74 68  | is stored in th|
00012a30  65 20 6c 61 73 74 20 62  79 74 65 20 6f 66 0a 74  |e last byte of.t|
00012a40  68 65 20 6c 69 6e 65 2e  0a 0a 54 68 75 73 2c 20  |he line...Thus, |
00012a50  61 20 6c 69 74 74 6c 65  20 6c 61 74 65 72 20 6f  |a little later o|
00012a60  6e 20 69 6e 20 74 68 65  20 67 72 61 6d 6d 61 72  |n in the grammar|
00012a70  2c 20 74 68 65 20 6c 69  6e 65 0a 0a 56 45 52 42  |, the line..VERB|
00012a80  20 22 65 78 69 74 22 20  22 6c 65 61 76 65 22 20  | "exit" "leave" |
00012a90  20 20 20 20 20 20 20 20  20 20 20 20 20 2a 20 20  |             *  |
00012aa0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00012ab0  20 20 20 20 20 20 20 20  2d 3e 20 45 78 69 74 3b  |        -> Exit;|
00012ac0  0a 0a 6d 69 67 68 74 20  77 65 6c 6c 20 61 70 70  |..might well app|
00012ad0  65 61 72 2c 20 61 6e 64  20 45 78 69 74 20 77 69  |ear, and Exit wi|
00012ae0  6c 6c 20 6d 65 61 6e 20  22 61 63 74 69 6f 6e 20  |ll mean "action |
00012af0  30 22 20 61 73 20 62 65  66 6f 72 65 2e 0a 0a 53  |0" as before...S|
00012b00  6f 20 74 68 69 73 20 74  61 62 6c 65 20 64 6f 65  |o this table doe|
00012b10  73 20 6e 6f 74 20 73 74  6f 72 65 20 74 68 65 20  |s not store the |
00012b20  61 64 64 72 65 73 73 20  6f 66 20 74 68 65 20 61  |address of the a|
00012b30  63 74 69 6f 6e 20 72 6f  75 74 69 6e 65 2c 20 61  |ction routine, a|
00012b40  73 20 6f 6e 65 20 6d 69  67 68 74 0a 65 78 70 65  |s one might.expe|
00012b50  63 74 2e 20 20 49 6e 73  74 65 61 64 20 74 68 65  |ct.  Instead the|
00012b60  20 61 64 64 72 65 73 73  65 73 20 63 6f 72 72 65  | addresses corre|
00012b70  73 70 6f 6e 64 69 6e 67  20 74 6f 20 74 68 65 20  |sponding to the |
00012b80  61 63 74 69 6f 6e 20 6e  75 6d 62 65 72 73 20 61  |action numbers a|
00012b90  72 65 0a 73 74 6f 72 65  64 20 69 6e 20 74 68 65  |re.stored in the|
00012ba0  20 61 63 74 69 6f 6e 73  20 74 61 62 6c 65 2e 20  | actions table. |
00012bb0  20 4f 6e 63 65 20 61 67  61 69 6e 2c 20 49 6e 66  | Once again, Inf|
00012bc0  6f 72 6d 20 70 75 74 73  20 74 68 69 73 20 74 61  |orm puts this ta|
00012bd0  62 6c 65 20 69 6e 20 69  74 73 0a 63 6f 6e 76 65  |ble in its.conve|
00012be0  6e 74 69 6f 6e 61 6c 20  70 6c 61 63 65 2c 20 62  |ntional place, b|
00012bf0  75 74 20 74 68 69 73 20  61 64 64 72 65 73 73 20  |ut this address |
00012c00  62 65 69 6e 67 20 64 69  66 66 69 63 75 6c 74 20  |being difficult |
00012c10  74 6f 20 77 6f 72 6b 20  6f 75 74 2c 20 74 68 65  |to work out, the|
00012c20  0a 63 6f 6e 73 74 61 6e  74 20 23 61 63 74 69 6f  |.constant #actio|
00012c30  6e 73 5f 74 61 62 6c 65  20 69 73 20 73 65 74 20  |ns_table is set |
00012c40  75 70 20 74 6f 20 68 6f  6c 64 20 69 74 2e 20 20  |up to hold it.  |
00012c50  54 68 65 20 61 63 74 69  6f 6e 73 20 74 61 62 6c  |The actions tabl|
00012c60  65 20 69 73 20 73 69 6d  70 6c 79 0a 61 20 6c 69  |e is simply.a li|
00012c70  73 74 20 6f 66 20 32 2d  62 79 74 65 20 65 6e 74  |st of 2-byte ent|
00012c80  72 69 65 73 20 67 69 76  69 6e 67 20 74 68 65 20  |ries giving the |
00012c90  72 6f 75 74 69 6e 65 20  61 64 64 72 65 73 73 65  |routine addresse|
00012ca0  73 20 28 64 69 76 69 64  65 64 20 62 79 20 32 29  |s (divided by 2)|
00012cb0  2e 0a 0a 54 68 65 72 65  20 69 73 20 61 6c 73 6f  |...There is also|
00012cc0  20 61 20 70 72 65 61 63  74 69 6f 6e 73 20 74 61  | a preactions ta|
00012cd0  62 6c 65 2c 20 77 69 74  68 20 61 6e 6f 74 68 65  |ble, with anothe|
00012ce0  72 20 63 6f 6e 73 74 61  6e 74 20 23 70 72 65 61  |r constant #prea|
00012cf0  63 74 69 6f 6e 73 5f 74  61 62 6c 65 2c 0a 63 72  |ctions_table,.cr|
00012d00  65 61 74 65 64 20 6f 6e  6c 79 20 74 6f 20 63 6f  |eated only to co|
00012d10  6e 66 6f 72 6d 20 74 6f  20 49 6e 66 6f 63 6f 6d  |nform to Infocom|
00012d20  20 63 6f 6e 76 65 6e 74  69 6f 6e 73 3b 20 69 74  | conventions; it|
00012d30  20 69 73 20 73 65 74 20  75 70 20 63 6f 6e 74 61  | is set up conta|
00012d40  69 6e 69 6e 67 20 30 30  30 30 0a 66 6f 72 20 65  |ining 0000.for e|
00012d50  61 63 68 20 61 63 74 69  6f 6e 2e 20 20 28 22 43  |ach action.  ("C|
00012d60  75 72 73 65 73 22 2c 20  66 6f 72 20 69 6e 73 74  |urses", for inst|
00012d70  61 6e 63 65 2c 20 6d 61  6b 65 73 20 6e 6f 20 75  |ance, makes no u|
00012d80  73 65 20 6f 66 20 74 68  69 73 2e 29 0a 0a 49 6e  |se of this.)..In|
00012d90  20 74 68 65 20 6d 65 61  6e 20 74 69 6d 65 2c 20  | the mean time, |
00012da0  77 68 61 74 20 68 61 73  20 68 61 70 70 65 6e 65  |what has happene|
00012db0  64 20 74 6f 20 74 68 65  20 61 63 74 75 61 6c 20  |d to the actual |
00012dc0  77 6f 72 64 73 2c 20 22  74 61 6b 65 22 2c 20 22  |words, "take", "|
00012dd0  67 65 74 22 2c 0a 22 70  69 63 6b 22 20 61 6e 64  |get",."pick" and|
00012de0  20 22 6c 69 66 74 22 3f  20 20 4e 6f 74 65 20 74  | "lift"?  Note t|
00012df0  68 61 74 20 74 68 65 73  65 20 64 6f 20 6e 6f 74  |hat these do not|
00012e00  20 61 70 70 65 61 72 20  69 6e 20 74 68 65 20 67  | appear in the g|
00012e10  72 61 6d 6d 61 72 20 74  61 62 6c 65 20 61 74 0a  |rammar table at.|
00012e20  61 6c 6c 2e 20 20 49 6e  73 74 65 61 64 20 74 68  |all.  Instead th|
00012e30  65 79 20 61 72 65 20 65  6e 74 65 72 65 64 20 69  |ey are entered i|
00012e40  6e 74 6f 20 74 68 65 20  64 69 63 74 69 6f 6e 61  |nto the dictiona|
00012e50  72 79 2c 20 61 6c 6f 6e  67 20 77 69 74 68 20 74  |ry, along with t|
00012e60  68 65 20 76 65 72 62 0a  6e 75 6d 62 65 72 2e 20  |he verb.number. |
00012e70  20 41 73 20 61 20 66 69  6e 61 6c 20 62 61 72 6f  | As a final baro|
00012e80  71 75 65 20 74 77 69 73  74 2c 20 74 68 65 73 65  |que twist, these|
00012e90  20 6e 75 6d 62 65 72 73  20 61 6c 73 6f 20 63 6f  | numbers also co|
00012ea0  75 6e 74 20 64 6f 77 6e  20 66 72 6f 6d 20 24 66  |unt down from $f|
00012eb0  66 2e 0a 41 6e 79 20 6e  75 6d 62 65 72 20 6f 66  |f..Any number of|
00012ec0  20 77 6f 72 64 73 20 63  61 6e 20 62 65 20 67 69  | words can be gi|
00012ed0  76 65 6e 2c 20 61 6c 6c  20 72 65 66 65 72 72 69  |ven, all referri|
00012ee0  6e 67 20 74 6f 20 74 68  65 20 73 61 6d 65 20 76  |ng to the same v|
00012ef0  65 72 62 20 6e 75 6d 62  65 72 3b 0a 22 43 75 72  |erb number;."Cur|
00012f00  73 65 73 22 20 68 61 73  20 31 31 20 73 79 6e 6f  |ses" has 11 syno|
00012f10  6e 79 6d 73 20 66 6f 72  20 22 61 74 74 61 63 6b  |nyms for "attack|
00012f20  22 2c 20 66 6f 72 20 69  6e 73 74 61 6e 63 65 2e  |", for instance.|
00012f30  0a 0a 4f 66 20 63 6f 75  72 73 65 2c 20 49 6e 66  |..Of course, Inf|
00012f40  6f 72 6d 20 64 6f 65 73  20 6e 6f 74 20 6b 6e 6f  |orm does not kno|
00012f50  77 20 6f 72 20 63 61 72  65 20 77 68 61 74 20 69  |w or care what i|
00012f60  73 20 64 6f 6e 65 20 77  69 74 68 20 61 6e 79 20  |s done with any |
00012f70  6f 66 20 74 68 65 73 65  0a 74 61 62 6c 65 73 2e  |of these.tables.|
00012f80  20 20 20 46 6f 72 20 69  6e 73 74 61 6e 63 65 2c  |   For instance,|
00012f90  20 74 68 65 20 22 74 61  6b 65 22 20 76 65 72 62  | the "take" verb|
00012fa0  20 68 61 73 20 74 68 65  20 65 6e 74 72 79 0a 0a  | has the entry..|
00012fb0  30 30 35 0a 30 30 30 20  32 35 35 20 30 30 30 20  |005.000 255 000 |
00012fc0  30 30 30 20 30 30 30 20  30 30 30 20 30 30 30 20  |000 000 000 000 |
00012fd0  30 30 30 0a 30 30 31 20  30 30 32 20 30 30 30 20  |000.001 002 000 |
00012fe0  30 30 30 20 30 30 30 20  30 30 30 20 30 30 30 20  |000 000 000 000 |
00012ff0  30 30 31 0a 30 30 32 20  30 30 35 20 32 35 34 20  |001.002 005 254 |
00013000  30 30 30 20 30 30 30 20  30 30 30 20 30 30 30 20  |000 000 000 000 |
00013010  30 30 32 0a 30 30 31 20  32 35 33 20 30 30 30 20  |002.001 253 000 |
00013020  30 30 30 20 30 30 30 20  30 30 30 20 30 30 30 20  |000 000 000 000 |
00013030  30 30 33 0a 30 30 31 20  32 35 32 20 30 30 31 20  |003.001 252 001 |
00013040  30 30 30 20 30 30 30 20  30 30 30 20 30 30 30 20  |000 000 000 000 |
00013050  30 30 34 0a 0a 62 75 74  20 69 74 20 69 73 20 75  |004..but it is u|
00013060  70 20 74 6f 20 74 68 65  20 63 6f 64 65 20 79 6f  |p to the code yo|
00013070  75 20 77 72 69 74 65 20  74 6f 20 64 65 61 6c 20  |u write to deal |
00013080  77 69 74 68 20 74 68 69  73 2e 20 20 28 54 68 65  |with this.  (The|
00013090  20 4c 49 53 54 56 45 52  42 53 20 63 6f 6d 6d 61  | LISTVERBS comma|
000130a0  6e 64 0a 77 69 6c 6c 20  70 72 69 6e 74 20 6f 75  |nd.will print ou|
000130b0  74 20 74 68 65 20 66 75  6c 6c 20 76 65 72 62 20  |t the full verb |
000130c0  74 61 62 6c 65 20 69 6e  20 61 20 73 69 6d 69 6c  |table in a simil|
000130d0  61 72 20 66 6f 72 6d 61  74 2e 29 0a 0a 0a 0a 4e  |ar format.)....N|
000130e0  6f 77 20 66 6f 72 20 77  68 61 74 20 49 6e 66 6f  |ow for what Info|
000130f0  72 6d 20 64 6f 65 73 20  77 69 74 68 20 74 68 65  |rm does with the|
00013100  20 64 69 63 74 69 6f 6e  61 72 79 2e 20 20 41 67  | dictionary.  Ag|
00013110  61 69 6e 2c 20 69 66 20  79 6f 75 20 75 73 65 20  |ain, if you use |
00013120  74 68 65 20 70 61 72 73  65 72 0a 73 75 70 70 6c  |the parser.suppl|
00013130  69 65 64 2c 20 79 6f 75  20 6e 65 65 64 6e 27 74  |ied, you needn't|
00013140  20 6b 6e 6f 77 20 74 68  69 73 2e 0a 0a 54 68 65  | know this...The|
00013150  20 66 6f 75 72 74 68 20  77 6f 72 64 20 6f 66 20  | fourth word of |
00013160  74 68 65 20 66 69 6c 65  20 68 65 61 64 65 72 20  |the file header |
00013170  28 62 79 74 65 73 20 38  20 61 6e 64 20 39 29 20  |(bytes 8 and 9) |
00013180  63 6f 6e 74 61 69 6e 20  74 68 65 20 64 69 63 74  |contain the dict|
00013190  69 6f 6e 61 72 79 0a 74  61 62 6c 65 27 73 20 61  |ionary.table's a|
000131a0  64 64 72 65 73 73 2e 0a  0a 54 68 65 20 74 61 62  |ddress...The tab|
000131b0  6c 65 20 62 65 67 69 6e  73 20 77 69 74 68 20 61  |le begins with a|
000131c0  20 37 2d 62 79 74 65 20  68 65 61 64 65 72 3a 0a  | 7-byte header:.|
000131d0  0a 20 20 30 33 20 27 2e  27 20 27 2c 27 20 27 22  |.  03 '.' ',' '"|
000131e0  27 0a 0a 6d 65 61 6e 69  6e 67 20 74 68 65 72 65  |'..meaning there|
000131f0  20 61 72 65 20 74 68 72  65 65 20 63 68 61 72 61  | are three chara|
00013200  63 74 65 72 73 20 75 73  65 64 20 74 6f 20 73 65  |cters used to se|
00013210  70 61 72 61 74 65 20 77  6f 72 64 73 20 69 6e 20  |parate words in |
00013220  74 79 70 65 64 20 69 6e  70 75 74 2c 0a 66 75 6c  |typed input,.ful|
00013230  6c 20 73 74 6f 70 73 2c  20 63 6f 6d 6d 61 73 20  |l stops, commas |
00013240  61 6e 64 20 71 75 6f 74  61 74 69 6f 6e 20 6d 61  |and quotation ma|
00013250  72 6b 73 2e 20 20 28 54  68 65 20 5a 2d 6d 61 63  |rks.  (The Z-mac|
00013260  68 69 6e 65 20 77 69 6c  6c 20 61 6c 6c 6f 77 20  |hine will allow |
00013270  61 6e 79 20 6c 69 73 74  0a 74 6f 20 62 65 20 67  |any list.to be g|
00013280  69 76 65 6e 20 68 65 72  65 20 62 75 74 20 49 6e  |iven here but In|
00013290  66 6f 72 6d 20 64 65 63  69 64 65 73 20 6f 6e 20  |form decides on |
000132a0  74 68 69 73 20 66 6f 72  20 79 6f 75 2e 29 0a 0a  |this for you.)..|
000132b0  20 20 6e 20 20 20 3c 6e  75 6d 62 65 72 5f 6f 66  |  n   <number_of|
000132c0  5f 65 6e 74 72 69 65 73  3e 0a 20 20 20 20 20 20  |_entries>.      |
000132d0  2d 2d 2d 2d 32 20 62 79  74 65 73 2d 2d 2d 2d 2d  |----2 bytes-----|
000132e0  2d 2d 2d 0a 0a 6d 65 61  6e 69 6e 67 20 74 68 65  |---..meaning the|
000132f0  72 65 20 61 72 65 20 74  68 61 74 20 6d 61 6e 79  |re are that many|
00013300  20 65 6e 74 72 69 65 73  20 69 6e 20 74 68 65 20  | entries in the |
00013310  64 69 63 74 69 6f 6e 61  72 79 2c 20 61 6c 6c 20  |dictionary, all |
00013320  6e 20 62 79 74 65 73 20  6c 6f 6e 67 2e 20 0a 0a  |n bytes long. ..|
00013330  49 74 20 69 73 20 75 73  75 61 6c 20 28 6e 6f 74  |It is usual (not|
00013340  20 63 6f 6d 70 75 6c 73  6f 72 79 20 69 6e 20 74  | compulsory in t|
00013350  68 65 20 5a 2d 6d 61 63  68 69 6e 65 20 66 6f 72  |he Z-machine for|
00013360  6d 61 74 2c 20 74 68 6f  75 67 68 20 49 6e 66 6f  |mat, though Info|
00013370  72 6d 20 61 6c 77 61 79  73 0a 6d 61 6b 65 73 20  |rm always.makes |
00013380  69 74 20 73 6f 29 20 66  6f 72 20 6e 20 74 6f 20  |it so) for n to |
00013390  62 65 20 74 68 65 20 6e  75 6d 62 65 72 20 6f 66  |be the number of|
000133a0  20 62 79 74 65 73 20 63  6f 6e 73 75 6d 65 64 20  | bytes consumed |
000133b0  62 79 20 74 68 65 20 77  6f 72 64 20 69 74 73 65  |by the word itse|
000133c0  6c 66 2c 0a 70 6c 75 73  20 33 2e 20 20 49 6e 20  |lf,.plus 3.  In |
000133d0  76 65 72 73 69 6f 6e 20  33 20 74 68 69 73 20 6d  |version 3 this m|
000133e0  61 6b 65 73 20 69 74 20  37 2c 20 77 68 69 63 68  |akes it 7, which|
000133f0  20 6d 65 61 6e 73 20 74  68 61 74 20 77 6f 72 64  | means that word|
00013400  73 20 61 72 65 20 63 75  74 20 64 6f 77 6e 0a 74  |s are cut down.t|
00013410  6f 20 74 68 65 69 72 20  66 69 72 73 74 20 73 69  |o their first si|
00013420  78 20 6c 65 74 74 65 72  73 20 6f 6e 6c 79 2e 20  |x letters only. |
00013430  20 49 6e 20 56 65 72 73  69 6f 6e 20 35 20 69 74  | In Version 5 it|
00013440  20 69 73 20 39 2c 20 6d  61 6b 69 6e 67 20 74 68  | is 9, making th|
00013450  65 0a 64 69 63 74 69 6f  6e 61 72 79 20 61 63 63  |e.dictionary acc|
00013460  75 72 61 74 65 20 74 6f  20 6e 69 6e 65 20 6c 65  |urate to nine le|
00013470  74 74 65 72 73 2c 20 77  68 69 63 68 20 69 73 20  |tters, which is |
00013480  6d 75 63 68 20 6d 6f 72  65 20 73 61 74 69 73 66  |much more satisf|
00013490  61 63 74 6f 72 79 2e 20  0a 50 72 6f 76 69 64 65  |actory. .Provide|
000134a0  64 20 64 69 63 74 69 6f  6e 61 72 79 20 77 6f 72  |d dictionary wor|
000134b0  64 73 20 61 72 65 20 61  6c 77 61 79 73 20 67 69  |ds are always gi|
000134c0  76 65 6e 20 69 6e 20 66  75 6c 6c 20 69 6e 20 73  |ven in full in s|
000134d0  6f 75 72 63 65 20 63 6f  64 65 2c 20 49 6e 66 6f  |ource code, Info|
000134e0  72 6d 0a 77 69 6c 6c 20  74 72 75 6e 63 61 74 65  |rm.will truncate|
000134f0  20 74 68 65 6d 20 69 74  73 65 6c 66 20 74 6f 20  | them itself to |
00013500  77 68 69 63 68 65 76 65  72 20 69 73 20 61 70 70  |whichever is app|
00013510  72 6f 70 72 69 61 74 65  2e 0a 0a 54 68 65 20 65  |ropriate...The e|
00013520  6e 74 72 69 65 73 20 61  72 65 20 69 6e 20 61 6c  |ntries are in al|
00013530  70 68 61 62 65 74 69 63  61 6c 20 6f 72 64 65 72  |phabetical order|
00013540  2c 20 61 6e 64 20 6c 6f  6f 6b 20 6c 69 6b 65 3a  |, and look like:|
00013550  0a 0a 20 20 3c 74 68 65  20 74 65 78 74 20 6f 66  |..  <the text of|
00013560  20 74 68 65 20 77 6f 72  64 3e 20 20 3c 66 6c 61  | the word>  <fla|
00013570  67 73 3e 20 20 3c 76 65  72 62 20 6e 75 6d 62 65  |gs>  <verb numbe|
00013580  72 3e 20 20 3c 61 64 6a  65 63 74 69 76 65 20 6e  |r>  <adjective n|
00013590  75 6d 62 65 72 3e 0a 20  20 2d 2d 2d 2d 34 20 6f  |umber>.  ----4 o|
000135a0  72 20 36 20 62 79 74 65  73 2d 2d 2d 2d 2d 2d 20  |r 6 bytes------ |
000135b0  20 2d 2d 31 20 62 2d 2d  20 20 2d 2d 2d 2d 31 20  | --1 b--  ----1 |
000135c0  62 79 74 65 2d 2d 2d 20  20 2d 2d 2d 2d 31 20 62  |byte---  ----1 b|
000135d0  79 74 65 2d 2d 2d 2d 2d  2d 2d 2d 0a 0a 54 68 65  |yte--------..The|
000135e0  20 74 65 78 74 20 69 73  20 73 74 6f 72 65 64 20  | text is stored |
000135f0  69 6e 20 74 68 65 20 75  73 75 61 6c 20 74 65 78  |in the usual tex|
00013600  74 20 66 6f 72 6d 61 74  2c 20 74 68 75 73 20 61  |t format, thus a|
00013610  6c 6c 6f 77 69 6e 67 20  75 70 20 74 6f 20 36 20  |llowing up to 6 |
00013620  6f 72 20 39 0a 63 68 61  72 61 63 74 65 72 73 2e  |or 9.characters.|
00013630  0a 0a 57 68 65 6e 20 75  73 69 6e 67 20 65 6e 74  |..When using ent|
00013640  72 69 65 73 20 6c 69 6b  65 20 74 68 69 73 2c 20  |ries like this, |
00013650  69 74 27 73 20 63 6f 6e  76 65 6e 69 65 6e 74 20  |it's convenient |
00013660  74 6f 20 77 72 69 74 65  20 63 6f 64 65 20 77 68  |to write code wh|
00013670  69 63 68 20 77 6f 72 6b  73 0a 65 71 75 61 6c 6c  |ich works.equall|
00013680  79 20 77 65 6c 6c 20 75  6e 64 65 72 20 76 65 72  |y well under ver|
00013690  73 69 6f 6e 73 20 33 20  6f 72 20 35 2e 20 20 54  |sions 3 or 5.  T|
000136a0  6f 20 64 6f 20 73 6f 20  6f 6e 65 20 6e 65 65 64  |o do so one need|
000136b0  73 20 74 6f 20 61 63 63  65 73 73 20 74 68 65 20  |s to access the |
000136c0  74 68 72 65 65 0a 64 61  74 61 20 62 79 74 65 73  |three.data bytes|
000136d0  20 77 69 74 68 6f 75 74  20 6b 6e 6f 77 69 6e 67  | without knowing|
000136e0  20 77 68 65 74 68 65 72  20 74 68 65 79 20 61 72  | whether they ar|
000136f0  65 20 34 20 6f 72 20 36  20 62 79 74 65 73 20 66  |e 4 or 6 bytes f|
00013700  72 6f 6d 20 74 68 65 20  73 74 61 72 74 20 6f 66  |rom the start of|
00013710  0a 74 68 65 20 64 69 63  74 69 6f 6e 61 72 79 20  |.the dictionary |
00013720  65 6e 74 72 79 20 61 64  64 72 65 73 73 2e 20 20  |entry address.  |
00013730  49 6e 66 6f 72 6d 20 70  72 6f 76 69 64 65 73 20  |Inform provides |
00013740  74 68 72 65 65 20 63 6f  6e 73 74 61 6e 74 73 20  |three constants |
00013750  66 6f 72 20 74 68 69 73  3a 0a 0a 20 20 20 20 20  |for this:..     |
00013760  20 20 20 20 20 20 20 20  20 20 20 20 49 6e 20 56  |            In V|
00013770  65 72 73 69 6f 6e 20 33  20 20 20 20 20 49 6e 20  |ersion 3     In |
00013780  56 65 72 73 69 6f 6e 20  35 0a 20 20 23 64 69 63  |Version 5.  #dic|
00013790  74 5f 70 61 72 31 20 20  20 20 20 20 20 20 20 20  |t_par1          |
000137a0  34 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |4               |
000137b0  20 36 0a 20 20 23 64 69  63 74 5f 70 61 72 32 20  | 6.  #dict_par2 |
000137c0  20 20 20 20 20 20 20 20  20 35 20 20 20 20 20 20  |         5      |
000137d0  20 20 20 20 20 20 20 20  20 20 37 0a 20 20 23 64  |          7.  #d|
000137e0  69 63 74 5f 70 61 72 33  20 20 20 20 20 20 20 20  |ict_par3        |
000137f0  20 20 36 20 20 20 20 20  20 20 20 20 20 20 20 20  |  6             |
00013800  20 20 20 38 0a 0a 54 68  75 73 2c 20 66 6f 72 20  |   8..Thus, for |
00013810  65 78 61 6d 70 6c 65 2c  20 61 64 64 72 65 73 73  |example, address|
00013820  2d 3e 23 64 69 63 74 5f  70 61 72 31 20 67 69 76  |->#dict_par1 giv|
00013830  65 73 20 74 68 65 20 66  6c 61 67 73 20 62 79 74  |es the flags byt|
00013840  65 2e 0a 0a 54 68 65 20  66 6c 61 67 73 20 28 63  |e...The flags (c|
00013850  68 6f 73 65 6e 20 6f 6e  63 65 20 61 67 61 69 6e  |hosen once again|
00013860  20 74 6f 20 63 6f 6e 66  6f 72 6d 20 6c 6f 6f 73  | to conform loos|
00013870  65 6c 79 20 74 6f 20 49  6e 66 6f 63 6f 6d 20 63  |ely to Infocom c|
00013880  6f 6e 76 65 6e 74 69 6f  6e 73 2c 20 6e 6f 74 0a  |onventions, not.|
00013890  66 6f 72 20 61 6e 79 20  73 65 6e 73 69 62 6c 65  |for any sensible|
000138a0  20 72 65 61 73 6f 6e 29  20 68 61 76 65 20 74 68  | reason) have th|
000138b0  65 20 65 69 67 68 74 20  62 69 74 73 0a 0a 20 20  |e eight bits..  |
000138c0  37 20 20 20 20 20 20 36  20 20 35 20 20 34 20 20  |7      6  5  4  |
000138d0  33 20 20 20 20 20 32 20  20 20 20 20 20 31 20 20  |3     2      1  |
000138e0  20 20 20 20 30 0a 20 20  3c 6e 6f 75 6e 3e 20 2e  |    0.  <noun> .|
000138f0  2e 20 2e 2e 20 2e 2e 20  3c 61 64 6a 3e 20 3c 73  |. .. .. <adj> <s|
00013900  70 65 63 3e 20 3c 6d 65  74 61 3e 20 3c 76 65 72  |pec> <meta> <ver|
00013910  62 3e 0a 0a 3c 76 65 72  62 3e 2c 20 3c 6e 6f 75  |b>..<verb>, <nou|
00013920  6e 3e 20 61 6e 64 20 3c  61 64 6a 3e 20 6d 65 61  |n> and <adj> mea|
00013930  6e 20 74 68 65 20 77 6f  72 64 20 63 61 6e 20 62  |n the word can b|
00013940  65 20 61 20 76 65 72 62  2c 20 6e 6f 75 6e 20 6f  |e a verb, noun o|
00013950  72 20 61 64 6a 65 63 74  69 76 65 3b 20 74 68 65  |r adjective; the|
00013960  0a 3c 73 70 65 63 3e 20  62 69 74 20 6d 65 61 6e  |.<spec> bit mean|
00013970  73 20 74 68 65 20 77 6f  72 64 20 77 61 73 20 69  |s the word was i|
00013980  6e 73 65 72 74 65 64 20  62 79 20 61 20 44 49 43  |nserted by a DIC|
00013990  54 49 4f 4e 41 52 59 20  63 6f 6d 6d 61 6e 64 20  |TIONARY command |
000139a0  69 6e 20 74 68 65 0a 70  72 6f 67 72 61 6d 2c 20  |in the.program, |
000139b0  65 78 63 65 70 74 20 74  68 61 74 20 3c 76 65 72  |except that <ver|
000139c0  62 3e 20 77 6f 72 64 73  20 61 6c 73 6f 20 68 61  |b> words also ha|
000139d0  76 65 20 74 68 65 20 3c  73 70 65 63 3e 20 62 69  |ve the <spec> bi|
000139e0  74 20 73 65 74 20 28 6f  75 72 73 20 6e 6f 74 20  |t set (ours not |
000139f0  74 6f 0a 77 6f 6e 64 65  72 20 77 68 79 29 2e 0a  |to.wonder why)..|
00013a00  0a 56 65 72 62 73 20 64  65 63 6c 61 72 65 64 20  |.Verbs declared |
00013a10  61 73 20 22 6d 65 74 61  22 20 68 61 76 65 20 74  |as "meta" have t|
00013a20  68 65 20 3c 6d 65 74 61  3e 20 62 69 74 20 73 65  |he <meta> bit se|
00013a30  74 2e 20 20 28 54 68 65  73 65 20 61 72 65 20 73  |t.  (These are s|
00013a40  75 63 68 0a 6f 75 74 2d  6f 66 2d 77 6f 72 6c 64  |uch.out-of-world|
00013a50  20 65 78 70 65 72 69 65  6e 63 65 73 20 61 73 20  | experiences as |
00013a60  53 41 56 45 20 61 6e 64  20 53 43 4f 52 45 2e 29  |SAVE and SCORE.)|
00013a70  0a 0a 4e 6f 74 65 20 74  68 61 74 20 61 20 77 6f  |..Note that a wo|
00013a80  72 64 20 63 61 6e 20 62  65 20 61 6e 79 20 63 6f  |rd can be any co|
00013a90  6d 62 69 6e 61 74 69 6f  6e 20 6f 66 20 74 68 65  |mbination of the|
00013aa0  73 65 20 61 74 20 6f 6e  63 65 2e 20 20 49 74 20  |se at once.  It |
00013ab0  63 61 6e 20 65 76 65 6e  20 62 65 0a 73 69 6d 75  |can even be.simu|
00013ac0  6c 74 61 6e 65 6f 75 73  6c 79 20 61 20 76 65 72  |ltaneously a ver|
00013ad0  62 2c 20 61 64 6a 65 63  74 69 76 65 20 61 6e 64  |b, adjective and|
00013ae0  20 6e 6f 75 6e 2e 0a 0a  41 20 73 74 61 6e 64 61  | noun...A standa|
00013af0  72 64 20 67 61 6d 65 20  74 79 70 69 63 61 6c 6c  |rd game typicall|
00013b00  79 20 6e 65 65 64 73 20  61 74 20 6c 65 61 73 74  |y needs at least|
00013b10  20 36 30 30 20 64 69 63  74 69 6f 6e 61 72 79 20  | 600 dictionary |
00013b20  65 6e 74 72 69 65 73 20  2d 20 61 62 6f 75 74 20  |entries - about |
00013b30  74 65 6e 0a 74 69 6d 65  73 20 74 68 65 20 6e 75  |ten.times the nu|
00013b40  6d 62 65 72 20 6f 66 20  70 6f 72 74 61 62 6c 65  |mber of portable|
00013b50  20 6f 62 6a 65 63 74 73  2e 20 20 45 76 65 6e 20  | objects.  Even |
00013b60  73 6f 20 69 74 20 6f 6e  6c 79 20 63 6f 6e 73 75  |so it only consu|
00013b70  6d 65 73 20 61 62 6f 75  74 20 34 4b 2c 20 6f 72  |mes about 4K, or|
00013b80  0a 31 2f 36 34 74 68 20  6f 66 20 74 68 65 20 61  |.1/64th of the a|
00013b90  76 61 69 6c 61 62 6c 65  20 6d 65 6d 6f 72 79 2e  |vailable memory.|
00013ba0  20 20 49 74 27 73 20 6e  65 76 65 72 20 77 6f 72  |  It's never wor|
00013bb0  74 68 20 65 63 6f 6e 6f  6d 69 73 69 6e 67 20 6f  |th economising o|
00013bc0  6e 20 64 69 63 74 69 6f  6e 61 72 79 0a 65 6e 74  |n dictionary.ent|
00013bd0  72 69 65 73 3b 20 6e 6f  74 68 69 6e 67 20 65 6c  |ries; nothing el|
00013be0  73 65 20 61 20 64 65 73  69 67 6e 65 72 20 63 61  |se a designer ca|
00013bf0  6e 20 64 6f 20 77 69 74  68 20 34 4b 20 77 69 6c  |n do with 4K wil|
00013c00  6c 20 62 65 20 61 73 20  67 6f 6f 64 a0 74 6f 20  |l be as good.to |
00013c10  74 68 65 20 75 73 65 72  2e 0a 28 42 79 20 6d 65  |the user..(By me|
00013c20  61 6e 73 20 6f 66 20 63  6f 6e 74 61 69 6e 69 6e  |ans of containin|
00013c30  67 20 61 20 68 65 72 6f  69 63 20 6e 75 6d 62 65  |g a heroic numbe|
00013c40  72 20 6f 66 20 73 79 6e  6f 6e 79 6d 73 2c 20 73  |r of synonyms, s|
00013c50  6f 6d 65 20 6f 66 20 74  68 65 20 6c 61 72 67 65  |ome of the large|
00013c60  72 0a 49 6e 66 6f 63 6f  6d 20 67 61 6d 65 73 20  |r.Infocom games |
00013c70  68 61 76 65 20 61 73 20  6d 61 6e 79 20 61 73 20  |have as many as |
00013c80  32 30 30 30 20 77 6f 72  64 73 20 69 6e 20 74 68  |2000 words in th|
00013c90  65 69 72 20 64 69 63 74  69 6f 6e 61 72 69 65 73  |eir dictionaries|
00013ca0  2e 29 0a 0a 0a 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.)...-----------|
00013cb0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00013cf0  0a 31 36 2e 20 49 6e 64  69 72 65 63 74 20 66 75  |.16. Indirect fu|
00013d00  6e 63 74 69 6f 6e 20 63  61 6c 6c 73 0a 2d 2d 2d  |nction calls.---|
00013d10  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00013d50  2d 2d 2d 2d 2d 2d 2d 2d  0a 0a 0a 20 20 20 20 20  |--------...     |
00013d60  20 20 20 20 22 42 79 20  69 6e 64 69 72 65 63 74  |    "By indirect|
00013d70  69 6f 6e 73 20 66 69 6e  64 20 64 69 72 65 63 74  |ions find direct|
00013d80  69 6f 6e 73 20 6f 75 74  22 0a 0a 20 20 20 20 20  |ions out"..     |
00013d90  20 20 20 20 20 20 20 20  20 20 20 20 20 28 53 68  |             (Sh|
00013da0  61 6b 65 73 70 65 61 72  65 2c 20 22 48 61 6d 6c  |akespeare, "Haml|
00013db0  65 74 22 29 0a 0a 0a 4f  63 63 61 73 69 6f 6e 61  |et")...Occasiona|
00013dc0  6c 6c 79 20 6f 6e 65 20  6e 65 65 64 73 20 74 6f  |lly one needs to|
00013dd0  20 63 61 6c 6c 20 61 20  66 75 6e 63 74 69 6f 6e  | call a function|
00013de0  20 77 68 6f 73 65 20 61  64 64 72 65 73 73 20 69  | whose address i|
00013df0  73 20 69 6e 20 61 20 76  61 72 69 61 62 6c 65 3a  |s in a variable:|
00013e00  0a 66 6f 72 20 65 78 61  6d 70 6c 65 2c 20 69 66  |.for example, if|
00013e10  20 74 68 65 20 72 6f 75  74 69 6e 65 20 61 64 64  | the routine add|
00013e20  72 65 73 73 20 68 61 73  20 62 65 65 6e 20 6c 6f  |ress has been lo|
00013e30  6f 6b 65 64 20 75 70 20  66 72 6f 6d 20 61 20 74  |oked up from a t|
00013e40  61 62 6c 65 2c 20 6f 72  20 61 6e 0a 6f 62 6a 65  |able, or an.obje|
00013e50  63 74 27 73 20 70 72 6f  70 65 72 74 79 20 6c 69  |ct's property li|
00013e60  73 74 2e 0a 0a 46 6f 72  20 74 68 69 73 2c 20 74  |st...For this, t|
00013e70  68 65 20 66 75 6e 63 74  69 6f 6e 20 22 69 6e 64  |he function "ind|
00013e80  69 72 65 63 74 22 20 69  73 20 70 72 6f 76 69 64  |irect" is provid|
00013e90  65 64 3a 0a 0a 20 20 61  3d 69 6e 64 69 72 65 63  |ed:..  a=indirec|
00013ea0  74 28 62 29 3b 0a 0a 73  65 74 73 20 61 20 74 6f  |t(b);..sets a to|
00013eb0  20 74 68 65 20 72 65 74  75 72 6e 20 76 61 6c 75  | the return valu|
00013ec0  65 20 6f 66 20 63 61 6c  6c 69 6e 67 20 74 68 65  |e of calling the|
00013ed0  20 66 75 6e 63 74 69 6f  6e 20 77 68 6f 73 65 20  | function whose |
00013ee0  61 64 64 72 65 73 73 20  69 73 20 69 6e 20 62 2e  |address is in b.|
00013ef0  0a 0a 0a 57 41 52 4e 49  4e 47 3a 20 54 6f 20 70  |...WARNING: To p|
00013f00  61 73 73 20 61 72 67 75  6d 65 6e 74 73 20 61 73  |ass arguments as|
00013f10  20 77 65 6c 6c 2c 20 79  6f 75 20 6d 75 73 74 20  | well, you must |
00013f20  75 73 65 20 74 68 65 20  61 73 73 65 6d 62 6c 65  |use the assemble|
00013f30  72 2d 6c 65 76 65 6c 0a  20 20 20 2a 20 20 20 20  |r-level.   *    |
00013f40  20 40 69 63 61 6c 6c 2c  20 62 75 74 20 64 6f 20  | @icall, but do |
00013f50  73 6f 20 77 69 74 68 20  63 61 72 65 2e 0a 20 20  |so with care..  |
00013f60  2f 21 5c 20 20 20 20 42  65 20 63 61 72 65 66 75  |/!\    Be carefu|
00013f70  6c 20 6e 6f 74 20 74 6f  20 6c 65 61 76 65 20 76  |l not to leave v|
00013f80  61 6c 75 65 73 20 6f 6e  20 74 68 65 20 73 74 61  |alues on the sta|
00013f90  63 6b 3a 20 6f 72 20 74  68 65 20 67 61 6d 65 20  |ck: or the game |
00013fa0  6d 61 79 0a 20 2a 2d 2d  2d 2a 20 20 20 63 72 61  |may. *---*   cra|
00013fb0  73 68 20 31 30 30 30 20  74 75 72 6e 73 20 6c 61  |sh 1000 turns la|
00013fc0  74 65 72 2c 20 68 69 67  68 6c 79 20 6d 79 73 74  |ter, highly myst|
00013fd0  65 72 69 6f 75 73 6c 79  2e 0a 0a 0a 2d 2d 2d 2d  |eriously....----|
00013fe0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00014020  2d 2d 2d 2d 2d 2d 2d 0a  31 37 2e 20 20 54 65 78  |-------.17.  Tex|
00014030  74 20 73 70 61 63 69 6e  67 0a 2d 2d 2d 2d 2d 2d  |t spacing.------|
00014040  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00014080  2d 2d 2d 2d 2d 0a 0a 0a  20 20 20 20 20 20 20 20  |-----...        |
00014090  22 54 68 65 20 74 68 75  6e 64 65 72 69 6e 67 20  |"The thundering |
000140a0  74 65 78 74 2c 20 74 68  65 20 73 6e 69 76 65 6c  |text, the snivel|
000140b0  6c 69 6e 67 20 63 6f 6d  6d 65 6e 74 61 72 79 21  |ling commentary!|
000140c0  22 0a 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |"..             |
000140d0  20 20 20 28 52 6f 62 65  72 74 20 47 72 61 76 65  |   (Robert Grave|
000140e0  73 29 0a 0a 0a 54 79 70  65 77 72 69 74 74 65 6e  |s)...Typewritten|
000140f0  20 45 6e 67 6c 69 73 68  2c 20 6c 69 6b 65 20 74  | English, like t|
00014100  68 69 73 20 66 69 6c 65  2c 20 6e 6f 72 6d 61 6c  |his file, normal|
00014110  6c 79 20 70 75 74 73 20  61 20 64 6f 75 62 6c 65  |ly puts a double|
00014120  20 73 70 61 63 65 20 61  66 74 65 72 20 61 0a 66  | space after a.f|
00014130  75 6c 6c 20 73 74 6f 70  2e 20 20 54 68 69 73 20  |ull stop.  This |
00014140  69 73 20 6d 75 63 68 20  65 61 73 69 65 72 20 74  |is much easier t|
00014150  6f 20 72 65 61 64 2e 20  20 55 6e 66 6f 72 74 75  |o read.  Unfortu|
00014160  6e 61 74 65 6c 79 20 49  6e 66 6f 63 6f 6d 2d 73  |nately Infocom-s|
00014170  74 61 6e 64 61 72 64 0a  69 6e 74 65 72 70 72 65  |tandard.interpre|
00014180  74 65 72 73 20 64 6f 20  6e 6f 74 20 75 73 75 61  |ters do not usua|
00014190  6c 6c 79 20 75 6e 64 65  72 73 74 61 6e 64 20 74  |lly understand t|
000141a0  68 61 74 2e 20 20 57 68  65 6e 20 74 68 65 79 20  |hat.  When they |
000141b0  66 6f 6c 64 20 74 65 78  74 20 61 63 72 6f 73 73  |fold text across|
000141c0  0a 6c 69 6e 65 73 2c 20  74 68 65 79 20 63 61 6e  |.lines, they can|
000141d0  20 65 61 73 69 6c 79 20  74 75 72 6e 0a 0a 20 20  | easily turn..  |
000141e0  2e 2e 2e 61 6e 64 20 61  20 70 6f 6d 65 67 72 61  |...and a pomegra|
000141f0  6e 61 74 65 2e 20 20 41  66 74 65 72 20 61 6c 6c  |nate.  After all|
00014200  2c 20 79 6f 75 20 61 6c  77 61 79 73 20 68 61 74  |, you always hat|
00014210  65 64 20 66 72 75 69 74  2e 0a 0a 69 6e 74 6f 20  |ed fruit...into |
00014220  73 6f 6d 65 74 68 69 6e  67 20 6c 69 6b 65 0a 0a  |something like..|
00014230  20 20 20 7c 59 6f 75 20  64 65 63 6c 69 6e 65 20  |   |You decline |
00014240  74 68 65 20 6f 66 66 65  72 20 6f 66 20 61 20 62  |the offer of a b|
00014250  61 6e 61 6e 61 2c 20 61  6e 20 61 70 70 6c 65 20  |anana, an apple |
00014260  61 6e 64 20 61 20 70 6f  6d 65 67 72 61 6e 61 74  |and a pomegranat|
00014270  65 2e 20 20 20 7c 0a 20  20 20 7c 20 41 66 74 65  |e.   |.   | Afte|
00014280  72 20 61 6c 6c 2c 20 79  6f 75 20 61 6c 77 61 79  |r all, you alway|
00014290  73 20 68 61 74 65 64 20  66 72 75 69 74 2e 20 20  |s hated fruit.  |
000142a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000142b0  20 20 20 20 20 20 20 20  20 20 20 20 7c 0a 20 20  |            |.  |
000142c0  20 7c 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | |              |
000142d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00014300  20 20 20 7c 0a 20 20 20  7c 3e 20 20 20 20 20 20  |   |.   |>      |
00014310  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00014340  20 20 20 20 20 20 20 20  20 20 7c 0a 0a 77 68 69  |          |..whi|
00014350  63 68 20 6c 6f 6f 6b 73  20 61 77 66 75 6c 2e 20  |ch looks awful. |
00014360  20 49 74 20 77 6f 75 6c  64 20 62 65 20 65 61 73  | It would be eas|
00014370  79 20 74 6f 20 66 69 78  20 74 68 65 20 69 6e 74  |y to fix the int|
00014380  65 72 70 72 65 74 65 72  20 6e 6f 74 20 74 6f 20  |erpreter not to |
00014390  64 6f 20 74 68 69 73 3b  0a 62 75 74 20 6e 6f 62  |do this;.but nob|
000143a0  6f 64 79 20 64 6f 65 73  2e 20 20 49 6e 20 63 61  |ody does.  In ca|
000143b0  73 65 20 28 6c 69 6b 65  20 74 68 65 20 61 75 74  |se (like the aut|
000143c0  68 6f 72 27 73 29 20 79  6f 75 72 20 74 79 70 69  |hor's) your typi|
000143d0  6e 67 20 69 73 20 68 61  62 69 74 75 61 6c 6c 79  |ng is habitually|
000143e0  0a 64 6f 75 62 6c 65 2d  73 70 61 63 65 64 2c 20  |.double-spaced, |
000143f0  49 6e 66 6f 72 6d 20 70  72 6f 76 69 64 65 73 20  |Inform provides |
00014400  61 20 63 6f 6d 6d 61 6e  64 20 6c 69 6e 65 20 6f  |a command line o|
00014410  70 74 69 6f 6e 20 2d 64  20 74 6f 20 63 68 61 6e  |ption -d to chan|
00014420  67 65 20 69 74 20 62 61  63 6b 0a 61 67 61 69 6e  |ge it back.again|
00014430  2e 20 20 49 74 20 64 6f  65 73 20 74 68 69 73 20  |.  It does this |
00014440  6f 6e 6c 79 20 62 79 20  72 65 70 6c 61 63 69 6e  |only by replacin|
00014450  67 20 74 68 65 20 73 74  72 69 6e 67 20 22 2e 20  |g the string ". |
00014460  20 22 20 62 79 20 22 2e  20 22 20 69 6e 20 74 65  | " by ". " in te|
00014470  78 74 0a 63 6f 6e 76 65  72 73 69 6f 6e 2e 0a 0a  |xt.conversion...|
00014480  0a 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.---------------|
00014490  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000144c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0a 31 38 2e  |------------.18.|
000144d0  20 20 44 72 61 73 74 69  63 20 6f 62 6a 65 63 74  |  Drastic object|
000144e0  20 61 6c 74 65 72 61 74  69 6f 6e 0a 2d 2d 2d 2d  | alteration.----|
000144f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00014530  2d 2d 2d 2d 2d 2d 2d 0a  0a 0a 20 20 20 20 20 20  |-------...      |
00014540  20 22 45 76 65 72 79 74  68 69 6e 67 20 63 68 61  | "Everything cha|
00014550  6e 67 65 73 2e 20 20 57  65 20 70 6c 61 6e 74 0a  |nges.  We plant.|
00014560  20 20 20 20 20 20 20 20  74 72 65 65 73 20 66 6f  |        trees fo|
00014570  72 20 74 68 6f 73 65 20  62 6f 72 6e 20 6c 61 74  |r those born lat|
00014580  65 72 0a 20 20 20 20 20  20 20 20 62 75 74 20 77  |er.        but w|
00014590  68 61 74 27 73 20 68 61  70 70 65 6e 65 64 20 68  |hat's happened h|
000145a0  61 73 20 68 61 70 70 65  6e 65 64 0a 20 20 20 20  |as happened.    |
000145b0  20 20 20 20 61 6e 64 20  70 6f 69 73 6f 6e 73 20  |    and poisons |
000145c0  70 6f 75 72 65 64 20 69  6e 74 6f 20 74 68 65 20  |poured into the |
000145d0  73 65 61 0a 20 20 20 20  20 20 20 20 63 61 6e 6e  |sea.        cann|
000145e0  6f 74 20 62 65 20 64 72  61 69 6e 65 64 20 6f 75  |ot be drained ou|
000145f0  74 20 61 67 61 69 6e 2e  22 0a 0a 20 20 20 20 20  |t again."..     |
00014600  20 20 20 20 20 20 20 20  20 20 28 43 69 63 65 6c  |          (Cicel|
00014610  79 20 48 65 72 62 65 72  74 2c 20 61 66 74 65 72  |y Herbert, after|
00014620  20 42 72 65 63 68 74 29  0a 0a 0a 49 6e 20 65 61  | Brecht)...In ea|
00014630  72 6c 69 65 72 20 76 65  72 73 69 6f 6e 73 20 6f  |rlier versions o|
00014640  66 20 49 6e 66 6f 72 6d  2c 20 74 68 65 72 65 20  |f Inform, there |
00014650  77 65 72 65 20 73 6f 6d  65 20 61 73 70 65 63 74  |were some aspect|
00014660  73 20 6f 66 20 61 6e 20  6f 62 6a 65 63 74 0a 64  |s of an object.d|
00014670  69 66 66 69 63 75 6c 74  20 74 6f 20 63 68 61 6e  |ifficult to chan|
00014680  67 65 2c 20 6f 6e 63 65  20 73 65 74 2e 20 20 46  |ge, once set.  F|
00014690  69 72 73 74 6c 79 2c 20  74 68 65 20 22 73 68 6f  |irstly, the "sho|
000146a0  72 74 20 6e 61 6d 65 22  2e 20 20 49 66 20 79 6f  |rt name".  If yo|
000146b0  75 0a 64 65 63 6c 61 72  65 64 20 61 6e 20 6f 62  |u.declared an ob|
000146c0  6a 65 63 74 20 61 73 2c  20 73 61 79 2c 0a 0a 20  |ject as, say,.. |
000146d0  20 4f 42 4a 45 43 54 20  66 72 6f 67 20 22 6c 69  | OBJECT frog "li|
000146e0  74 74 6c 65 20 67 72 65  65 6e 20 66 72 6f 67 22  |ttle green frog"|
000146f0  20 61 74 74 69 63 0a 20  20 20 20 57 49 54 48 20  | attic.    WITH |
00014700  2e 2e 2e 0a 0a 74 68 65  6e 20 74 68 65 20 67 61  |.....then the ga|
00014710  6d 65 20 77 6f 75 6c 64  20 61 6c 77 61 79 73 20  |me would always |
00014720  72 65 66 65 72 20 74 6f  20 69 74 20 61 73 20 22  |refer to it as "|
00014730  6c 69 74 74 6c 65 20 67  72 65 65 6e 20 66 72 6f  |little green fro|
00014740  67 22 3a 20 74 68 69 73  20 77 6f 75 6c 64 0a 62  |g": this would.b|
00014750  65 20 69 6d 70 6f 73 73  69 62 6c 65 20 74 6f 20  |e impossible to |
00014760  61 6c 74 65 72 20 69 66  2c 20 66 6f 72 20 69 6e  |alter if, for in|
00014770  73 74 61 6e 63 65 2c 20  69 74 20 73 68 6f 75 6c  |stance, it shoul|
00014780  64 20 69 6e 20 73 6f 6d  65 20 6d 61 67 69 63 61  |d in some magica|
00014790  6c 20 77 61 79 0a 62 65  63 6f 6d 65 20 61 6e 20  |l way.become an |
000147a0  65 6e 6f 72 6d 6f 75 73  20 67 72 65 65 6e 20 66  |enormous green f|
000147b0  72 6f 67 2e 0a 0a 41 20  73 6e 65 61 6b 79 20 77  |rog...A sneaky w|
000147c0  61 79 20 61 72 6f 75 6e  64 20 74 68 69 73 20 69  |ay around this i|
000147d0  73 20 74 6f 20 75 73 65  20 73 74 72 69 6e 67 20  |s to use string |
000147e0  69 6e 64 69 72 65 63 74  69 6f 6e 2e 20 20 44 65  |indirection.  De|
000147f0  63 6c 61 72 65 20 69 74  20 61 73 0a 0a 20 20 4f  |clare it as..  O|
00014800  42 4a 45 43 54 20 66 72  6f 67 20 22 40 30 30 22  |BJECT frog "@00"|
00014810  20 61 74 74 69 63 0a 20  20 20 20 57 49 54 48 20  | attic.    WITH |
00014820  2e 2e 2e 0a 0a 73 6f 20  74 68 61 74 2c 20 77 68  |.....so that, wh|
00014830  65 6e 20 74 68 65 20 5a  2d 6d 61 63 68 69 6e 65  |en the Z-machine|
00014840  20 64 6f 65 73 20 61 20  70 72 69 6e 74 5f 6f 62  | does a print_ob|
00014850  6a 20 6f 6e 20 69 74 2c  20 69 74 20 70 72 69 6e  |j on it, it prin|
00014860  74 73 20 6f 75 74 20 74  68 65 0a 73 74 72 69 6e  |ts out the.strin|
00014870  67 20 65 6e 74 65 72 65  64 20 30 74 68 20 69 6e  |g entered 0th in|
00014880  20 74 68 65 20 73 79 6e  6f 6e 79 6d 73 20 74 61  | the synonyms ta|
00014890  62 6c 65 2e 20 20 49 6e  20 79 6f 75 72 20 69 6e  |ble.  In your in|
000148a0  69 74 69 61 6c 69 73 61  74 69 6f 6e 20 63 6f 64  |itialisation cod|
000148b0  65 2c 0a 77 72 69 74 65  20 79 6f 75 72 20 6f 77  |e,.write your ow|
000148c0  6e 20 73 74 72 69 6e 67  20 68 65 72 65 2c 20 62  |n string here, b|
000148d0  79 3a 0a 0a 20 20 4c 4f  57 5f 53 54 52 49 4e 47  |y:..  LOW_STRING|
000148e0  20 4c 5f 46 72 6f 67 20  22 6c 69 74 74 6c 65 20  | L_Frog "little |
000148f0  67 72 65 65 6e 20 66 72  6f 67 22 3b 0a 20 20 4c  |green frog";.  L|
00014900  4f 57 5f 53 54 52 49 4e  47 20 45 5f 46 72 6f 67  |OW_STRING E_Frog|
00014910  20 22 65 6e 6f 72 6d 6f  75 73 2c 20 73 6c 61 76  | "enormous, slav|
00014920  65 72 69 6e 67 20 67 72  65 65 6e 20 66 72 6f 67  |ering green frog|
00014930  22 3b 0a 0a 20 20 53 54  52 49 4e 47 20 30 20 23  |";..  STRING 0 #|
00014940  4c 5f 46 72 6f 67 3b 0a  0a 28 63 6f 6d 70 69 6c  |L_Frog;..(compil|
00014950  69 6e 67 20 73 69 6d 70  6c 79 20 74 6f 0a 0a 20  |ing simply to.. |
00014960  20 28 30 2d 2d 3e 31 32  29 2d 2d 3e 30 3d 23 4c  | (0-->12)-->0=#L|
00014970  5f 46 72 6f 67 3b 0a 0a  77 68 69 63 68 20 6c 6f  |_Frog;..which lo|
00014980  6f 6b 73 20 75 70 20 74  68 65 20 73 79 6e 6f 6e  |oks up the synon|
00014990  79 6d 73 20 74 61 62 6c  65 20 61 64 64 72 65 73  |yms table addres|
000149a0  73 3b 20 73 65 74 74 69  6e 67 20 77 6f 72 64 20  |s; setting word |
000149b0  6e 20 63 68 61 6e 67 65  73 20 74 68 65 0a 73 74  |n changes the.st|
000149c0  72 69 6e 67 20 70 72 69  6e 74 65 64 20 69 6e 20  |ring printed in |
000149d0  70 6c 61 63 65 20 6f 66  20 40 6e 29 2e 0a 0a 0a  |place of @n)....|
000149e0  57 41 52 4e 49 4e 47 3a  20 20 4e 6f 74 65 20 74  |WARNING:  Note t|
000149f0  68 61 74 20 61 6e 79 20  73 74 72 69 6e 67 20 79  |hat any string y|
00014a00  6f 75 20 69 6e 74 65 6e  64 20 74 6f 20 75 73 65  |ou intend to use|
00014a10  20 69 6e 20 74 68 69 73  20 77 61 79 20 6d 75 73  | in this way mus|
00014a20  74 20 62 65 0a 20 20 20  2a 20 20 20 20 20 20 64  |t be.   *      d|
00014a30  65 63 6c 61 72 65 64 20  62 79 20 4c 4f 57 5f 53  |eclared by LOW_S|
00014a40  54 52 49 4e 47 20 61 73  20 61 62 6f 76 65 2e 20  |TRING as above. |
00014a50  20 28 4c 4f 57 5f 53 54  52 49 4e 47 20 69 73 20  | (LOW_STRING is |
00014a60  6c 69 6b 65 20 43 4f 4e  53 54 41 4e 54 2c 0a 20  |like CONSTANT,. |
00014a70  20 2f 21 5c 20 20 20 20  20 62 75 74 20 6d 61 6b  | /!\     but mak|
00014a80  65 73 20 73 74 72 69 6e  67 73 20 69 6e 20 61 20  |es strings in a |
00014a90  73 6c 69 67 68 74 6c 79  20 64 69 66 66 65 72 65  |slightly differe|
00014aa0  6e 74 20 77 61 79 2e 29  0a 20 2a 2d 2d 2d 2a 20  |nt way.). *---* |
00014ab0  20 20 20 54 68 65 20 6d  6f 72 65 20 66 72 69 65  |   The more frie|
00014ac0  6e 64 6c 79 2d 6c 6f 6f  6b 69 6e 67 20 75 73 61  |ndly-looking usa|
00014ad0  67 65 0a 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ge..            |
00014ae0  20 53 54 52 49 4e 47 20  30 20 22 69 6c 6c 65 67  | STRING 0 "illeg|
00014af0  61 6c 20 66 72 6f 67 22  3b 0a 0a 20 20 20 20 20  |al frog";..     |
00014b00  20 20 20 20 20 77 69 6c  6c 20 77 6f 72 6b 20 69  |     will work i|
00014b10  6e 20 61 20 56 65 72 73  69 6f 6e 20 33 20 67 61  |n a Version 3 ga|
00014b20  6d 65 20 62 75 74 20 6d  61 79 20 75 6e 70 72 65  |me but may unpre|
00014b30  64 69 63 74 61 62 6c 79  20 66 61 69 6c 20 69 6e  |dictably fail in|
00014b40  20 61 0a 20 20 20 20 20  20 20 20 20 20 56 65 72  | a.          Ver|
00014b50  73 69 6f 6e 20 35 20 6f  6e 65 20 77 68 69 63 68  |sion 5 one which|
00014b60  20 65 78 63 65 65 64 73  20 31 32 38 4b 20 69 6e  | exceeds 128K in|
00014b70  20 6c 65 6e 67 74 68 2e  20 20 28 54 68 69 73 20  | length.  (This |
00014b80  69 73 20 61 0a 20 20 20  20 20 20 20 20 20 20 63  |is a.          c|
00014b90  6f 6e 73 65 71 75 65 6e  63 65 20 6f 66 20 74 68  |onsequence of th|
00014ba0  65 20 64 65 73 69 67 6e  20 6f 66 20 74 68 65 20  |e design of the |
00014bb0  5a 2d 6d 61 63 68 69 6e  65 3b 20 73 65 65 20 41  |Z-machine; see A|
00014bc0  70 70 65 6e 64 69 78 20  41 2e 29 0a 0a 0a 54 68  |ppendix A.)...Th|
00014bd0  65 6e 20 61 74 20 61 6e  79 20 74 69 6d 65 20 79  |en at any time y|
00014be0  6f 75 20 63 61 6e 20 61  6d 65 6e 64 20 74 68 65  |ou can amend the|
00014bf0  20 6e 61 6d 65 20 62 79  0a 0a 20 20 53 54 52 49  | name by..  STRI|
00014c00  4e 47 20 30 20 23 45 5f  46 72 6f 67 3b 0a 0a 40  |NG 0 #E_Frog;..@|
00014c10  30 30 20 74 6f 20 40 33  31 20 61 72 65 20 61 76  |00 to @31 are av|
00014c20  61 69 6c 61 62 6c 65 2e  20 20 28 43 6f 75 6e 74  |ailable.  (Count|
00014c30  69 6e 67 20 69 6e 20 64  65 63 69 6d 61 6c 2c 20  |ing in decimal, |
00014c40  6e 6f 74 20 68 65 78 2e  29 0a 0a 28 54 68 69 73  |not hex.)..(This|
00014c50  20 73 79 73 74 65 6d 20  61 6c 73 6f 20 70 72 6f  | system also pro|
00014c60  76 69 64 65 73 20 61 6e  20 65 6c 65 67 61 6e 74  |vides an elegant|
00014c70  20 77 61 79 20 6f 66 20  64 65 61 6c 69 6e 67 20  | way of dealing |
00014c80  77 69 74 68 20 62 6f 74  74 6c 65 73 20 61 6e 64  |with bottles and|
00014c90  0a 63 6f 6e 74 61 69 6e  65 72 73 20 6f 66 20 77  |.containers of w|
00014ca0  61 74 65 72 20 69 6e 20  67 65 6e 65 72 61 6c 2c  |ater in general,|
00014cb0  20 73 61 79 3a 20 22 66  75 6c 6c 20 62 65 65 72  | say: "full beer|
00014cc0  20 62 6f 74 74 6c 65 22  20 63 61 6e 20 62 65 63  | bottle" can bec|
00014cd0  6f 6d 65 0a 22 68 61 6c  66 2d 65 6d 70 74 79 20  |ome."half-empty |
00014ce0  62 65 65 72 20 62 6f 74  74 6c 65 22 20 61 6e 64  |beer bottle" and|
00014cf0  20 74 68 65 6e 20 22 65  6d 70 74 79 20 62 65 65  | then "empty bee|
00014d00  72 20 62 6f 74 74 6c 65  22 2e 20 20 28 42 75 74  |r bottle".  (But|
00014d10  20 69 66 20 73 6f 2c 0a  72 65 6d 65 6d 62 65 72  | if so,.remember|
00014d20  20 61 6c 73 6f 20 74 6f  20 63 68 61 6e 67 65 20  | also to change |
00014d30  69 74 73 20 69 6e 64 65  66 69 6e 69 74 65 20 61  |its indefinite a|
00014d40  72 74 69 63 6c 65 20 66  72 6f 6d 20 22 61 22 20  |rticle from "a" |
00014d50  74 6f 20 22 61 6e 22 2e  29 29 0a 0a 0a 53 65 63  |to "an".))...Sec|
00014d60  6f 6e 64 6c 79 2c 20 70  72 6f 70 65 72 74 69 65  |ondly, propertie|
00014d70  73 20 77 68 69 63 68 20  70 6f 69 6e 74 65 64 20  |s which pointed |
00014d80  74 6f 20 67 61 6d 65 20  72 6f 75 74 69 6e 65 73  |to game routines|
00014d90  20 77 65 72 65 20 74 72  69 63 6b 79 20 74 6f 0a  | were tricky to.|
00014da0  73 65 74 20 66 6f 72 20  61 20 63 6f 6d 70 6c 69  |set for a compli|
00014db0  63 61 74 65 64 20 72 65  61 73 6f 6e 20 74 6f 20  |cated reason to |
00014dc0  64 6f 20 77 69 74 68 20  68 6f 77 20 63 6f 6e 73  |do with how cons|
00014dd0  74 61 6e 74 73 20 61 72  65 20 74 72 61 6e 73 6c  |tants are transl|
00014de0  61 74 65 64 2e 0a 53 75  66 66 69 63 65 20 74 6f  |ated..Suffice to|
00014df0  20 73 61 79 20 74 68 61  74 20 6f 6e 65 20 63 61  | say that one ca|
00014e00  6e 20 6e 6f 77 20 64 6f  20 74 68 69 73 20 62 79  |n now do this by|
00014e10  2c 20 65 2e 67 2e 0a 0a  20 20 66 72 6f 67 2e 70  |, e.g...  frog.p|
00014e20  72 65 72 6f 75 74 69 6e  65 20 3d 20 23 72 24 45  |reroutine = #r$E|
00014e30  6e 6f 72 6d 6f 75 73 46  72 6f 67 50 72 65 3b 0a  |normousFrogPre;.|
00014e40  0a 6f 72 0a 0a 20 20 66  72 6f 67 2e 70 72 65 72  |.or..  frog.prer|
00014e50  6f 75 74 69 6e 65 20 3d  20 23 72 24 4c 69 74 74  |outine = #r$Litt|
00014e60  6c 65 46 72 6f 67 50 72  65 3b 0a 0a 0a 54 68 69  |leFrogPre;...Thi|
00014e70  72 64 6c 79 2c 20 69 74  20 77 61 73 20 64 69 66  |rdly, it was dif|
00014e80  66 69 63 75 6c 74 20 74  6f 20 63 68 61 6e 67 65  |ficult to change|
00014e90  20 74 68 65 20 64 69 63  74 69 6f 6e 61 72 79 20  | the dictionary |
00014ea0  65 6e 74 72 69 65 73 20  72 65 63 6f 67 6e 69 73  |entries recognis|
00014eb0  65 64 0a 61 73 20 72 65  66 65 72 72 69 6e 67 20  |ed.as referring |
00014ec0  74 6f 20 61 6e 20 6f 62  6a 65 63 74 2e 20 20 57  |to an object.  W|
00014ed0  65 6c 6c 2c 20 69 74 20  73 74 69 6c 6c 20 69 73  |ell, it still is|
00014ee0  2c 20 62 75 74 20 68 65  72 65 27 73 20 68 6f 77  |, but here's how|
00014ef0  20 69 74 27 73 20 64 6f  6e 65 3a 0a 0a 43 72 65  | it's done:..Cre|
00014f00  61 74 65 20 79 6f 75 72  20 6f 62 6a 65 63 74 20  |ate your object |
00014f10  77 69 74 68 20 74 68 65  20 6e 61 6d 65 20 66 69  |with the name fi|
00014f20  65 6c 64 20 63 6f 6e 74  61 69 6e 69 6e 67 20 64  |eld containing d|
00014f30  75 6d 6d 79 20 65 6e 74  72 69 65 73 2c 20 65 2e  |ummy entries, e.|
00014f40  67 2e 0a 0a 20 20 4f 42  4a 45 43 54 20 66 72 6f  |g...  OBJECT fro|
00014f50  67 20 22 40 30 30 22 20  61 74 74 69 63 0a 20 20  |g "@00" attic.  |
00014f60  20 20 57 49 54 48 20 6e  61 6d 65 20 22 7a 7a 7a  |  WITH name "zzz|
00014f70  7a 7a 7a 22 20 22 7a 7a  7a 7a 7a 7a 22 20 22 7a  |zzz" "zzzzzz" "z|
00014f80  7a 7a 7a 7a 7a 22 2c 0a  20 20 20 20 20 20 20 20  |zzzzz",.        |
00014f90  20 2e 2e 2e 3b 20 20 0a  0a 61 6e 64 20 74 68 65  | ...;  ..and the|
00014fa0  6e 20 69 6e 69 74 69 61  6c 6c 79 20 73 65 74 20  |n initially set |
00014fb0  74 68 65 73 65 20 62 79  0a 0a 20 20 78 20 3d 20  |these by..  x = |
00014fc0  66 72 6f 67 2e 26 6e 61  6d 65 3b 0a 0a 20 20 78  |frog.&name;..  x|
00014fd0  2d 2d 3e 30 20 3d 20 23  6e 24 6c 69 74 74 6c 65  |-->0 = #n$little|
00014fe0  3b 0a 20 20 78 2d 2d 3e  31 20 3d 20 23 6e 24 67  |;.  x-->1 = #n$g|
00014ff0  72 65 65 6e 3b 0a 20 20  78 2d 2d 3e 32 20 3d 20  |reen;.  x-->2 = |
00015000  23 6e 24 66 72 6f 67 3b  0a 0a 74 68 65 6e 20 61  |#n$frog;..then a|
00015010  6c 74 65 72 20 74 68 65  6d 20 62 79 0a 0a 20 20  |lter them by..  |
00015020  78 20 3d 20 66 72 6f 67  2e 26 6e 61 6d 65 3b 0a  |x = frog.&name;.|
00015030  0a 20 20 78 2d 2d 3e 30  20 3d 20 23 6e 24 65 6e  |.  x-->0 = #n$en|
00015040  6f 72 6d 6f 75 73 3b 0a  0a 28 57 61 72 6e 69 6e  |ormous;..(Warnin|
00015050  67 3a 20 69 66 20 74 68  65 72 65 20 61 72 65 20  |g: if there are |
00015060  6f 6e 6c 79 20 74 68 72  65 65 20 65 6e 74 72 69  |only three entri|
00015070  65 73 20 69 6e 20 74 68  65 20 6e 61 6d 65 20 70  |es in the name p|
00015080  72 6f 70 65 72 74 79 20  6c 69 73 74 2c 20 61 73  |roperty list, as|
00015090  0a 68 65 72 65 2c 20 74  68 65 6e 20 74 68 65 20  |.here, then the |
000150a0  5a 2d 6d 61 63 68 69 6e  65 20 77 69 6c 6c 20 63  |Z-machine will c|
000150b0  72 61 73 68 20 69 66 20  79 6f 75 20 74 72 79 20  |rash if you try |
000150c0  74 6f 20 77 72 69 74 65  20 74 6f 20 74 68 65 20  |to write to the |
000150d0  66 6f 75 72 74 68 3a 20  73 6f 0a 6d 61 6b 65 20  |fourth: so.make |
000150e0  73 75 72 65 20 74 68 65  72 65 20 61 72 65 20 65  |sure there are e|
000150f0  6e 6f 75 67 68 20 64 75  6d 6d 79 20 65 6e 74 72  |nough dummy entr|
00015100  69 65 73 20 77 68 65 6e  20 79 6f 75 20 63 72 65  |ies when you cre|
00015110  61 74 65 20 74 68 65 20  6f 62 6a 65 63 74 2e 29  |ate the object.)|
00015120  0a 0a 0a 49 74 20 69 73  20 74 68 75 73 20 70 6f  |...It is thus po|
00015130  73 73 69 62 6c 65 20 74  6f 20 63 68 61 6e 67 65  |ssible to change|
00015140  20 61 62 73 6f 6c 75 74  65 6c 79 20 65 76 65 72  | absolutely ever|
00015150  79 20 61 73 70 65 63 74  20 6f 66 20 61 6e 20 6f  |y aspect of an o|
00015160  62 6a 65 63 74 2e 20 20  4f 6e 65 0a 76 69 72 74  |bject.  One.virt|
00015170  75 65 20 6f 66 20 74 68  69 73 20 69 73 20 74 68  |ue of this is th|
00015180  61 74 2c 20 61 73 20 52  69 63 68 61 72 64 20 54  |at, as Richard T|
00015190  75 63 6b 65 72 20 70 6f  69 6e 74 65 64 20 6f 75  |ucker pointed ou|
000151a0  74 20 74 6f 20 74 68 65  20 61 75 74 68 6f 72 2c  |t to the author,|
000151b0  20 74 68 65 0a 76 65 72  73 69 6f 6e 2d 33 20 6c  | the.version-3 l|
000151c0  69 6d 69 74 20 6f 66 20  32 35 36 20 6f 62 6a 65  |imit of 256 obje|
000151d0  63 74 73 20 63 65 61 73  65 73 20 74 6f 20 62 65  |cts ceases to be|
000151e0  20 61 20 6c 69 6d 69 74  61 74 69 6f 6e 20 69 66  | a limitation if|
000151f0  20 79 6f 75 20 63 61 6e  20 72 65 63 79 63 6c 65  | you can recycle|
00015200  0a 74 68 65 6d 2e 20 49  74 20 74 61 6b 65 73 20  |.them. It takes |
00015210  63 61 72 65 66 75 6c 20  63 6f 64 69 6e 67 2c 20  |careful coding, |
00015220  62 75 74 20 74 68 65 73  65 20 6d 65 74 68 6f 64  |but these method|
00015230  73 20 61 6c 6c 6f 77 20  74 68 61 74 20 72 65 63  |s allow that rec|
00015240  79 63 6c 69 6e 67 20 74  6f 0a 74 61 6b 65 20 70  |ycling to.take p|
00015250  6c 61 63 65 2e 0a 0a 54  68 69 73 20 69 73 20 77  |lace...This is w|
00015260  68 79 20 6d 75 6c 74 69  70 6c 65 20 69 6e 74 65  |hy multiple inte|
00015270  72 6e 61 6c 20 6e 61 6d  65 73 20 61 72 65 20 6e  |rnal names are n|
00015280  6f 77 20 61 6c 6c 6f 77  65 64 20 66 6f 72 20 61  |ow allowed for a|
00015290  6e 20 6f 62 6a 65 63 74  3a 0a 0a 20 20 4f 42 4a  |n object:..  OBJ|
000152a0  45 43 54 20 66 72 6f 67  20 62 72 69 63 6b 20 68  |ECT frog brick h|
000152b0  65 72 72 69 6e 67 20 22  40 30 30 22 20 61 74 74  |erring "@00" att|
000152c0  69 63 0a 20 20 20 20 57  49 54 48 20 6e 61 6d 65  |ic.    WITH name|
000152d0  20 22 7a 7a 7a 7a 7a 7a  22 20 22 7a 7a 7a 7a 7a  | "zzzzzz" "zzzzz|
000152e0  7a 22 20 22 7a 7a 7a 7a  7a 7a 22 2c 0a 20 20 20  |z" "zzzzzz",.   |
000152f0  20 20 20 20 20 20 2e 2e  2e 3b 0a 0a 77 69 6c 6c  |      ...;..will|
00015300  20 61 6c 6c 6f 77 20 74  68 65 20 73 61 6d 65 20  | allow the same |
00015310  6f 62 6a 65 63 74 20 6e  75 6d 62 65 72 20 74 6f  |object number to|
00015320  20 62 65 20 63 61 6c 6c  65 64 20 66 72 6f 67 2c  | be called frog,|
00015330  20 62 72 69 63 6b 20 6f  72 20 68 65 72 72 69 6e  | brick or herrin|
00015340  67 20 62 79 0a 64 69 66  66 65 72 65 6e 74 20 72  |g by.different r|
00015350  6f 75 74 69 6e 65 73 20  77 68 69 63 68 20 64 65  |outines which de|
00015360  61 6c 20 77 69 74 68 20  64 69 66 66 65 72 65 6e  |al with differen|
00015370  74 20 69 6e 63 61 72 6e  61 74 69 6f 6e 73 20 6f  |t incarnations o|
00015380  66 20 74 68 65 20 73 61  6d 65 0a 6f 62 6a 65 63  |f the same.objec|
00015390  74 2e 0a 0a 49 6e 20 61  20 76 65 72 73 69 6f 6e  |t...In a version|
000153a0  2d 35 20 67 61 6d 65 20  69 74 20 73 65 65 6d 73  |-5 game it seems|
000153b0  20 62 65 73 74 20 6e 6f  74 20 74 6f 20 75 73 65  | best not to use|
000153c0  20 74 68 69 73 20 64 65  76 69 63 65 2e 0a 0a 0a  | this device....|
000153d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00015410  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 31 39 2e 20  |-----------.19. |
00015420  20 41 62 62 72 65 76 69  61 74 69 6f 6e 73 0a 2d  | Abbreviations.-|
00015430  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00015470  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0a 0a 0a 20 20 20  |----------...   |
00015480  20 20 22 4f 62 76 69 6f  75 73 6c 79 2c 20 74 6f  |  "Obviously, to|
00015490  20 67 65 74 20 6d 61 78  69 6d 75 6d 20 67 61 69  | get maximum gai|
000154a0  6e 20 6f 6e 65 20 6d 75  73 74 20 6d 61 6b 65 20  |n one must make |
000154b0  73 65 6e 73 69 62 6c 65  20 63 68 6f 69 63 65 73  |sensible choices|
000154c0  2e 0a 20 20 20 20 20 41  20 72 65 61 73 6f 6e 61  |..     A reasona|
000154d0  62 6c 65 20 73 65 6c 65  63 74 69 6f 6e 20 69 73  |ble selection is|
000154e0  2e 2e 2e 22 0a 0a 20 20  20 20 20 20 20 20 20 20  |..."..          |
000154f0  28 75 6e 69 6e 74 65 6e  64 65 64 20 69 72 6f 6e  |(unintended iron|
00015500  79 20 66 72 6f 6d 20 74  68 65 20 74 68 69 72 64  |y from the third|
00015510  20 65 64 69 74 69 6f 6e  20 6f 66 20 74 68 69 73  | edition of this|
00015520  20 6d 61 6e 75 61 6c 29  0a 0a 0a 57 68 65 6e 20  | manual)...When |
00015530  74 68 65 20 67 61 6d 65  20 62 65 63 6f 6d 65 73  |the game becomes|
00015540  20 66 75 6c 6c 2c 20 38  20 74 6f 20 31 30 25 20  | full, 8 to 10% |
00015550  6f 66 20 69 74 73 20 6c  65 6e 67 74 68 20 63 61  |of its length ca|
00015560  6e 20 62 65 20 73 61 76  65 64 20 62 79 20 6d 61  |n be saved by ma|
00015570  6b 69 6e 67 0a 75 73 65  20 6f 66 20 74 65 78 74  |king.use of text|
00015580  20 61 62 62 72 65 76 69  61 74 69 6f 6e 73 3a 20  | abbreviations: |
00015590  61 20 6d 65 74 68 6f 64  20 75 6e 64 65 72 20 77  |a method under w|
000155a0  68 69 63 68 20 75 70 20  74 6f 20 36 34 20 63 6f  |hich up to 64 co|
000155b0  6d 6d 6f 6e 6c 79 20 6f  63 63 75 72 72 69 6e 67  |mmonly occurring|
000155c0  0a 70 68 72 61 73 65 73  20 63 61 6e 20 62 65 20  |.phrases can be |
000155d0  61 62 62 72 65 76 69 61  74 65 64 20 77 68 65 6e  |abbreviated when|
000155e0  65 76 65 72 20 74 68 65  79 20 6f 63 63 75 72 2e  |ever they occur.|
000155f0  0a 0a 54 68 69 73 20 6d  61 6b 65 73 20 6e 6f 20  |..This makes no |
00015600  64 69 66 66 65 72 65 6e  63 65 20 74 6f 20 74 68  |difference to th|
00015610  65 20 74 65 78 74 20 61  73 20 73 65 65 6e 20 62  |e text as seen b|
00015620  79 20 74 68 65 20 70 6c  61 79 65 72 2e 0a 0a 42  |y the player...B|
00015630  65 63 61 75 73 65 20 63  68 65 63 6b 69 6e 67 20  |ecause checking |
00015640  66 6f 72 20 74 68 65 73  65 20 63 61 75 73 65 73  |for these causes|
00015650  20 61 20 73 70 65 65 64  20 6f 76 65 72 68 65 61  | a speed overhea|
00015660  64 20 28 61 67 61 69 6e  2c 20 6f 66 20 61 62 6f  |d (again, of abo|
00015670  75 74 20 31 30 25 29 2c  0a 61 6e 64 20 69 73 6e  |ut 10%),.and isn|
00015680  27 74 20 77 6f 72 74 68  77 68 69 6c 65 20 75 6e  |'t worthwhile un|
00015690  74 69 6c 20 74 68 65 20  67 61 6d 65 20 69 73 20  |til the game is |
000156a0  61 62 6f 75 74 20 39 30  25 20 66 75 6c 6c 2c 20  |about 90% full, |
000156b0  49 6e 66 6f 72 6d 20 64  6f 65 73 20 6e 6f 74 20  |Inform does not |
000156c0  64 6f 0a 73 6f 20 65 78  63 65 70 74 20 69 6e 20  |do.so except in |
000156d0  65 63 6f 6e 6f 6d 79 20  6d 6f 64 65 20 28 63 6f  |economy mode (co|
000156e0  6d 70 69 6c 69 6e 67 20  77 69 74 68 20 74 68 65  |mpiling with the|
000156f0  20 73 77 69 74 63 68 20  2d 65 20 6f 6e 29 2e 0a  | switch -e on)..|
00015700  0a 41 6e 20 61 62 62 72  65 76 69 61 74 69 6f 6e  |.An abbreviation|
00015710  20 6d 75 73 74 20 62 65  20 64 65 63 6c 61 72 65  | must be declare|
00015720  64 20 65 78 70 6c 69 63  69 74 6c 79 2c 20 62 65  |d explicitly, be|
00015730  66 6f 72 65 20 61 6e 79  20 6f 74 68 65 72 20 74  |fore any other t|
00015740  65 78 74 20 61 70 70 65  61 72 73 2c 0a 62 79 20  |ext appears,.by |
00015750  61 20 64 69 72 65 63 74  69 76 65 20 73 75 63 68  |a directive such|
00015760  20 61 73 3a 0a 0a 20 20  41 42 42 52 45 56 49 41  | as:..  ABBREVIA|
00015770  54 45 20 22 74 68 65 20  22 3b 0a 0a 4f 6e 6c 79  |TE "the ";..Only|
00015780  20 36 34 20 6d 61 79 20  62 65 20 64 65 63 6c 61  | 64 may be decla|
00015790  72 65 64 20 28 6e 6f 74  65 20 66 6f 72 20 65 78  |red (note for ex|
000157a0  70 65 72 74 73 3a 20 74  68 65 20 72 65 6d 61 69  |perts: the remai|
000157b0  6e 69 6e 67 20 33 32 20  73 6c 6f 74 73 20 69 6e  |ning 32 slots in|
000157c0  20 74 68 65 0a 73 79 6e  6f 6e 79 6d 73 20 74 61  | the.synonyms ta|
000157d0  62 6c 65 20 61 72 65 20  61 6c 6c 6f 63 61 74 65  |ble are allocate|
000157e0  64 20 66 6f 72 20 76 61  72 69 61 62 6c 65 20 73  |d for variable s|
000157f0  74 72 69 6e 67 73 2c 20  73 65 65 20 28 31 38 29  |trings, see (18)|
00015800  29 2e 0a 0a 28 54 68 69  73 20 63 61 75 73 65 73  |)...(This causes|
00015810  20 22 74 68 65 20 22 20  74 6f 20 62 65 20 73 74  | "the " to be st|
00015820  6f 72 65 64 20 69 6e 74  65 72 6e 61 6c 6c 79 20  |ored internally |
00015830  61 73 20 6f 6e 6c 79 20  32 20 74 65 78 74 20 63  |as only 2 text c|
00015840  68 75 6e 6b 73 2c 20 72  61 74 68 65 72 0a 74 68  |hunks, rather.th|
00015850  61 6e 20 34 2c 20 77 68  65 6e 65 76 65 72 20 69  |an 4, whenever i|
00015860  74 20 6f 63 63 75 72 73  3a 20 77 68 69 63 68 20  |t occurs: which |
00015870  69 73 20 76 65 72 79 20  6f 66 74 65 6e 2e 29 0a  |is very often.).|
00015880  0a 54 6f 20 73 65 65 20  68 6f 77 20 67 6f 6f 64  |.To see how good|
00015890  20 79 6f 75 72 20 63 75  72 72 65 6e 74 20 63 68  | your current ch|
000158a0  6f 69 63 65 20 6f 66 20  61 62 62 72 65 76 69 61  |oice of abbrevia|
000158b0  74 69 6f 6e 73 20 69 73  2c 20 74 72 79 20 63 6f  |tions is, try co|
000158c0  6d 70 69 6c 69 6e 67 20  77 69 74 68 0a 74 68 65  |mpiling with.the|
000158d0  20 2d 66 20 28 66 72 65  71 75 65 6e 63 69 65 73  | -f (frequencies|
000158e0  29 20 6f 70 74 69 6f 6e  20 73 65 74 2c 20 77 68  |) option set, wh|
000158f0  69 63 68 20 77 69 6c 6c  20 63 6f 75 6e 74 20 74  |ich will count t|
00015900  68 65 20 6e 75 6d 62 65  72 20 6f 66 20 74 69 6d  |he number of tim|
00015910  65 73 20 65 61 63 68 0a  61 62 62 72 65 76 69 61  |es each.abbrevia|
00015920  74 69 6f 6e 20 69 73 20  75 73 65 64 2c 20 61 6e  |tion is used, an|
00015930  64 20 77 6f 72 6b 20 6f  75 74 20 68 6f 77 20 6d  |d work out how m|
00015940  61 6e 79 20 62 79 74 65  73 20 69 74 20 73 61 76  |any bytes it sav|
00015950  65 64 2e 20 20 46 6f 72  20 69 6e 73 74 61 6e 63  |ed.  For instanc|
00015960  65 2c 0a 22 20 74 68 65  20 22 20 6f 63 63 75 72  |e,." the " occur|
00015970  73 20 73 6f 6d 65 20 32  34 34 35 20 74 69 6d 65  |s some 2445 time|
00015980  73 20 69 6e 20 74 68 65  20 6c 61 74 65 73 74 20  |s in the latest |
00015990  76 65 72 73 69 6f 6e 20  6f 66 20 22 43 75 72 73  |version of "Curs|
000159a0  65 73 22 2e 0a 45 78 70  65 72 69 6d 65 6e 74 69  |es"..Experimenti|
000159b0  6e 67 20 77 69 74 68 20  77 6f 72 64 73 20 73 6f  |ng with words so|
000159c0  6f 6e 20 72 65 76 65 61  6c 73 20 74 68 61 74 20  |on reveals that |
000159d0  70 61 72 74 73 20 6f 66  20 73 70 65 65 63 68 20  |parts of speech |
000159e0  61 6e 64 20 77 6f 72 64  73 20 6c 69 6b 65 0a 22  |and words like."|
000159f0  74 68 65 72 65 22 20 6d  61 6b 65 20 62 69 67 20  |there" make big |
00015a00  73 61 76 69 6e 67 73 2c  20 62 75 74 20 74 68 61  |savings, but tha|
00015a10  74 20 61 6c 6d 6f 73 74  20 61 6e 79 20 70 72 6f  |t almost any pro|
00015a20  70 65 72 20 6e 6f 75 6e  20 6d 61 6b 65 73 20 68  |per noun makes h|
00015a30  61 72 64 6c 79 20 61 6e  79 0a 64 69 66 66 65 72  |ardly any.differ|
00015a40  65 6e 63 65 2e 0a 0a 49  6e 66 6f 63 6f 6d 27 73  |ence...Infocom's|
00015a50  20 6f 77 6e 20 63 6f 6d  70 69 6c 65 72 20 64 6f  | own compiler do|
00015a60  65 73 20 6e 6f 74 20 73  65 65 6d 20 74 6f 20 68  |es not seem to h|
00015a70  61 76 65 20 63 68 6f 73  65 6e 20 61 62 62 72 65  |ave chosen abbre|
00015a80  76 69 61 74 69 6f 6e 73  20 76 65 72 79 0a 72 69  |viations very.ri|
00015a90  67 6f 72 6f 75 73 6c 79  2c 20 73 69 6e 63 65 20  |gorously, since |
00015aa0  49 6e 66 6f 63 6f 6d 20  73 74 6f 72 79 20 66 69  |Infocom story fi|
00015ab0  6c 65 73 20 63 6f 6e 74  61 69 6e 20 6a 75 73 74  |les contain just|
00015ac0  20 73 75 63 68 20 61 20  6e 61 69 76 65 20 6c 69  | such a naive li|
00015ad0  73 74 2e 20 20 28 54 68  69 73 0a 6d 61 79 20 68  |st.  (This.may h|
00015ae0  61 76 65 20 62 65 65 6e  20 77 69 73 65 20 66 72  |ave been wise fr|
00015af0  6f 6d 20 74 68 65 20 70  6f 69 6e 74 20 6f 66 20  |om the point of |
00015b00  76 69 65 77 20 6f 66 20  70 72 69 6e 74 69 6e 67  |view of printing|
00015b10  20 73 70 65 65 64 20 69  6e 20 74 68 65 20 64 61  | speed in the da|
00015b20  79 73 20 6f 66 0a 6d 75  63 68 20 73 6c 6f 77 65  |ys of.much slowe|
00015b30  72 20 63 6f 6d 70 75 74  65 72 73 2e 29 0a 0a 49  |r computers.)..I|
00015b40  6e 20 61 6e 79 20 63 61  73 65 2c 20 74 68 65 20  |n any case, the |
00015b50  2d 75 20 6f 70 74 69 6f  6e 20 6f 66 20 49 6e 66  |-u option of Inf|
00015b60  6f 72 6d 20 28 69 66 20  79 6f 75 72 20 63 6f 6d  |orm (if your com|
00015b70  70 75 74 65 72 20 69 73  20 6c 61 72 67 65 20 65  |puter is large e|
00015b80  6e 6f 75 67 68 20 61 6e  64 0a 66 61 73 74 20 65  |nough and.fast e|
00015b90  6e 6f 75 67 68 20 74 6f  20 6d 61 6b 65 20 74 68  |nough to make th|
00015ba0  69 73 20 66 65 61 73 69  62 6c 65 29 20 77 69 6c  |is feasible) wil|
00015bb0  6c 20 74 72 79 20 74 6f  20 77 6f 72 6b 20 6f 75  |l try to work ou|
00015bc0  74 20 61 20 6e 65 61 72  6c 79 2d 6f 70 74 69 6d  |t a nearly-optim|
00015bd0  61 6c 20 73 65 74 0a 6f  66 20 61 62 62 72 65 76  |al set.of abbrev|
00015be0  69 61 74 69 6f 6e 73 2e  0a 0a 54 68 65 20 61 6c  |iations...The al|
00015bf0  67 6f 72 69 74 68 6d 20  66 6f 72 20 64 6f 69 6e  |gorithm for doin|
00015c00  67 20 73 6f 20 69 73 20  74 6f 6f 20 63 6f 6d 70  |g so is too comp|
00015c10  6c 65 78 20 74 6f 20 67  69 76 65 20 68 65 72 65  |lex to give here|
00015c20  3a 20 73 65 65 20 74 68  65 20 73 6f 75 72 63 65  |: see the source|
00015c30  20 63 6f 64 65 2e 0a 42  72 69 65 66 6c 79 2c 20  | code..Briefly, |
00015c40  69 74 20 72 75 6e 73 20  69 6e 20 74 77 6f 20 70  |it runs in two p|
00015c50  68 61 73 65 73 3a 20 62  75 69 6c 64 69 6e 67 20  |hases: building |
00015c60  61 20 74 61 62 6c 65 20  6f 66 20 63 72 6f 73 73  |a table of cross|
00015c70  2d 72 65 66 65 72 65 6e  63 65 73 2c 20 61 6e 64  |-references, and|
00015c80  0a 74 68 65 6e 20 72 75  6e 6e 69 6e 67 20 61 20  |.then running a |
00015c90  6e 75 6d 62 65 72 20 6f  66 20 70 61 73 73 65 73  |number of passes|
00015ca0  20 6c 6f 6f 6b 69 6e 67  20 66 6f 72 20 67 6f 6f  | looking for goo|
00015cb0  64 20 73 75 62 73 74 72  69 6e 67 73 20 61 6e 64  |d substrings and|
00015cc0  20 63 68 6f 6f 73 69 6e  67 0a 67 6f 6f 64 20 61  | choosing.good a|
00015cd0  6e 74 69 63 68 61 69 6e  73 20 66 72 6f 6d 20 74  |ntichains from t|
00015ce0  68 65 20 70 61 72 74 69  61 6c 6c 79 20 6f 72 64  |he partially ord|
00015cf0  65 72 65 64 20 73 65 74  20 72 65 73 75 6c 74 69  |ered set resulti|
00015d00  6e 67 2e 20 20 54 68 65  20 72 65 73 75 6c 74 20  |ng.  The result |
00015d10  69 73 20 6e 6f 74 0a 67  75 61 72 61 6e 74 65 65  |is not.guarantee|
00015d20  64 20 74 6f 20 62 65 20  6f 70 74 69 6d 61 6c 20  |d to be optimal |
00015d30  62 75 74 20 73 65 65 6d  73 20 70 72 65 74 74 79  |but seems pretty|
00015d40  20 67 6f 6f 64 2e 20 20  54 68 65 20 6f 75 74 70  | good.  The outp|
00015d50  75 74 20 69 74 20 66 69  6e 61 6c 6c 79 0a 70 72  |ut it finally.pr|
00015d60  6f 64 75 63 65 73 20 69  73 20 61 20 6c 69 73 74  |oduces is a list|
00015d70  20 6f 66 20 6c 65 67 61  6c 20 49 6e 66 6f 72 6d  | of legal Inform|
00015d80  20 22 41 62 62 72 65 76  69 61 74 65 22 20 63 6f  | "Abbreviate" co|
00015d90  6d 6d 61 6e 64 73 20 77  68 69 63 68 20 63 61 6e  |mmands which can|
00015da0  20 62 65 20 70 61 73 74  65 64 0a 69 6e 74 6f 20  | be pasted.into |
00015db0  73 6f 75 72 63 65 20 63  6f 64 65 2e 0a 0a 53 69  |source code...Si|
00015dc0  6e 63 65 20 74 68 65 72  65 20 61 72 65 20 73 6f  |nce there are so|
00015dd0  6d 65 74 68 69 6e 67 20  6c 69 6b 65 0a 0a 20 20  |mething like..  |
00015de0  20 20 20 33 30 30 30 30  30 0a 20 20 20 20 32 0a  |   300000.    2.|
00015df0  0a 70 6f 73 73 69 62 6c  65 20 63 68 6f 69 63 65  |.possible choice|
00015e00  73 20 66 6f 72 20 61 20  67 61 6d 65 20 74 68 65  |s for a game the|
00015e10  20 73 69 7a 65 20 6f 66  20 22 43 75 72 73 65 73  | size of "Curses|
00015e20  22 2c 20 74 68 69 73 20  69 73 20 62 6f 75 6e 64  |", this is bound|
00015e30  20 74 6f 20 62 65 20 61  0a 74 72 69 63 6b 79 20  | to be a.tricky |
00015e40  61 6e 64 20 63 6f 6d 70  75 74 61 74 69 6f 6e 61  |and computationa|
00015e50  6c 6c 79 20 65 78 70 65  6e 73 69 76 65 20 6a 6f  |lly expensive jo|
00015e60  62 2e 20 20 54 68 65 20  31 32 38 4b 20 76 65 72  |b.  The 128K ver|
00015e70  73 69 6f 6e 20 6f 66 20  22 43 75 72 73 65 73 22  |sion of "Curses"|
00015e80  20 74 61 6b 65 73 0a 61  62 6f 75 74 20 34 35 20  | takes.about 45 |
00015e90  73 65 63 6f 6e 64 73 20  74 6f 20 63 6f 6d 70 69  |seconds to compi|
00015ea0  6c 65 20 6f 6e 20 6d 79  20 6d 61 63 68 69 6e 65  |le on my machine|
00015eb0  2c 20 61 6e 64 20 73 6c  69 67 68 74 6c 79 20 75  |, and slightly u|
00015ec0  6e 64 65 72 20 74 77 6f  20 68 6f 75 72 73 20 74  |nder two hours t|
00015ed0  6f 0a 6f 70 74 69 6d 69  73 65 2e 20 20 54 68 65  |o.optimise.  The|
00015ee0  72 65 20 61 72 65 20 74  68 72 65 65 20 70 61 73  |re are three pas|
00015ef0  73 65 73 2c 20 6f 66 20  77 68 69 63 68 20 74 68  |ses, of which th|
00015f00  65 20 66 69 72 73 74 20  69 73 20 62 79 20 66 61  |e first is by fa|
00015f10  72 20 74 68 65 20 6c 6f  6e 67 65 73 74 2e 0a 0a  |r the longest...|
00015f20  52 65 61 73 6f 6e 61 62  6c 65 20 67 75 65 73 73  |Reasonable guess|
00015f30  77 6f 72 6b 20 61 6e 64  20 65 78 70 65 72 69 6d  |work and experim|
00015f40  65 6e 74 20 28 72 65 73  75 6c 74 69 6e 67 20 69  |ent (resulting i|
00015f50  6e 20 74 68 65 20 77 6f  72 64 73 20 73 75 67 67  |n the words sugg|
00015f60  65 73 74 65 64 20 69 6e  0a 65 61 72 6c 69 65 72  |ested in.earlier|
00015f70  20 65 64 69 74 69 6f 6e  73 20 6f 66 20 74 68 69  | editions of thi|
00015f80  73 20 6d 61 6e 75 61 6c  29 20 61 63 74 75 61 6c  |s manual) actual|
00015f90  6c 79 20 64 6f 65 73 6e  27 74 20 70 65 72 66 6f  |ly doesn't perfo|
00015fa0  72 6d 20 74 6f 6f 20 62  61 64 6c 79 2c 20 62 75  |rm too badly, bu|
00015fb0  74 0a 22 43 75 72 73 65  73 22 20 77 61 73 20 31  |t."Curses" was 1|
00015fc0  32 30 30 20 62 79 74 65  73 20 73 68 6f 72 74 65  |200 bytes shorte|
00015fd0  72 20 74 68 61 6e 20 74  68 61 74 20 77 68 65 6e  |r than that when|
00015fe0  20 6f 70 74 69 6d 69 73  65 64 3a 20 73 61 6d 70  | optimised: samp|
00015ff0  6c 65 20 2d 66 20 6f 75  74 70 75 74 0a 28 61 67  |le -f output.(ag|
00016000  61 69 6e 2c 20 66 6f 72  20 74 68 65 20 31 32 38  |ain, for the 128|
00016010  4b 20 76 65 72 73 69 6f  6e 20 6f 66 20 22 43 75  |K version of "Cu|
00016020  72 73 65 73 22 29 20 66  6f 6c 6c 6f 77 73 3a 0a  |rses") follows:.|
00016030  0a 20 20 20 20 48 6f 77  20 66 72 65 71 75 65 6e  |.    How frequen|
00016040  74 6c 79 20 61 62 62 72  65 76 69 61 74 69 6f 6e  |tly abbreviation|
00016050  73 20 77 65 72 65 20 75  73 65 64 2c 20 61 6e 64  |s were used, and|
00016060  20 72 6f 75 67 68 6c 79  20 68 6f 77 20 6d 61 6e  | roughly how man|
00016070  79 0a 20 20 20 20 62 79  74 65 73 20 74 68 65 79  |y.    bytes they|
00016080  20 73 61 76 65 64 3a 20  20 28 27 5f 27 20 64 65  | saved:  ('_' de|
00016090  6e 6f 74 65 73 20 73 70  61 63 65 73 29 0a 20 20  |notes spaces).  |
000160a0  20 20 20 20 20 79 6f 75  20 20 20 36 36 38 2f 20  |     you   668/ |
000160b0  20 34 34 34 20 20 20 20  20 20 20 20 20 77 69 74  | 444         wit|
000160c0  68 20 20 20 31 34 34 2f  20 20 31 39 30 20 20 20  |h   144/  190   |
000160d0  20 20 20 20 20 77 68 69  63 68 20 20 20 20 39 32  |     which    92|
000160e0  2f 20 20 31 38 32 20 20  20 0a 20 20 20 20 20 20  |/  182   .      |
000160f0  20 75 72 73 20 20 20 20  35 38 2f 20 20 20 33 38  | urs    58/   38|
00016100  20 20 20 20 20 20 20 20  20 74 69 6f 6e 20 20 20  |         tion   |
00016110  31 34 32 2f 20 20 31 38  38 20 20 20 20 20 20 20  |142/  188       |
00016120  20 20 20 74 65 72 20 20  20 32 37 34 2f 20 20 31  |   ter   274/  1|
00016130  38 32 20 20 20 0a 20 20  20 20 20 20 20 74 5f 77  |82   .       t_w|
00016140  20 20 20 31 33 34 2f 20  20 20 38 38 20 20 20 20  |   134/   88    |
00016150  20 20 20 20 20 20 74 5f  73 20 20 20 31 31 37 2f  |      t_s   117/|
00016160  20 20 20 37 37 20 20 20  20 20 20 20 20 20 20 74  |   77          t|
00016170  5f 6f 20 20 20 31 36 34  2f 20 20 31 30 38 20 20  |_o   164/  108  |
00016180  20 0a 20 20 20 20 20 20  20 74 5f 69 20 20 20 31  | .       t_i   1|
00016190  36 37 2f 20 20 31 31 30  20 20 20 20 20 20 20 20  |67/  110        |
000161a0  20 20 69 6e 67 20 20 20  39 36 30 2f 20 20 36 33  |  ing   960/  63|
000161b0  39 20 20 20 20 20 20 20  20 20 69 67 68 74 20 20  |9         ight  |
000161c0  20 31 38 37 2f 20 20 32  34 38 20 20 20 0a 20 20  | 187/  248   .  |
000161d0  20 20 20 20 20 68 65 72  20 20 20 32 38 33 2f 20  |     her   283/ |
000161e0  20 31 38 38 20 20 20 20  20 20 20 20 20 20 65 5f  | 188          e_|
000161f0  77 20 20 20 31 34 36 2f  20 20 20 39 36 20 20 20  |w   146/   96   |
00016200  20 20 20 20 20 20 20 65  5f 73 20 20 20 31 36 30  |       e_s   160|
00016210  2f 20 20 31 30 36 20 20  20 0a 20 20 20 20 20 20  |/  106   .      |
00016220  20 65 5f 6f 20 20 20 32  32 37 2f 20 20 31 35 30  | e_o   227/  150|
00016230  20 20 20 20 20 20 20 20  20 20 65 5f 69 20 20 20  |          e_i   |
00016240  32 34 35 2f 20 20 31 36  32 20 20 20 20 20 20 20  |245/  162       |
00016250  20 20 20 65 5f 61 20 20  20 32 35 34 2f 20 20 31  |   e_a   254/  1|
00016260  36 38 20 20 20 0a 20 20  20 20 20 20 20 64 65 72  |68   .       der|
00016270  20 20 20 20 38 37 2f 20  20 20 35 37 20 20 20 20  |    87/   57    |
00016280  20 20 20 20 20 20 64 5f  73 20 20 20 20 36 31 2f  |      d_s    61/|
00016290  20 20 20 34 30 20 20 20  20 20 20 20 20 20 20 64  |   40          d|
000162a0  5f 6f 20 20 20 31 32 32  2f 20 20 20 38 30 20 20  |_o   122/   80  |
000162b0  20 0a 20 20 20 20 20 20  20 64 5f 69 20 20 20 20  | .       d_i    |
000162c0  38 32 2f 20 20 20 35 34  20 20 20 20 20 20 20 20  |82/   54        |
000162d0  20 20 64 5f 61 20 20 20  31 32 32 2f 20 20 20 38  |  d_a   122/   8|
000162e0  30 20 20 20 20 20 20 20  20 20 20 61 6e 64 20 20  |0          and  |
000162f0  20 35 36 30 2f 20 20 33  37 32 20 20 20 0a 20 20  | 560/  372   .  |
00016300  20 20 20 20 20 61 6c 6c  20 20 20 32 38 39 2f 20  |     all   289/ |
00016310  20 31 39 32 20 20 20 20  20 20 20 20 20 20 59 6f  | 192          Yo|
00016320  75 20 20 20 32 39 37 2f  20 20 33 39 34 20 20 20  |u   297/  394   |
00016330  20 20 20 20 20 20 54 68  69 73 20 20 20 20 34 37  |      This    47|
00016340  2f 20 20 20 39 32 20 20  20 0a 20 20 20 20 20 20  |/   92   .      |
00016350  20 54 68 65 20 20 20 33  38 34 2f 20 20 35 31 30  | The   384/  510|
00016360  20 20 20 20 20 20 4d 65  6c 64 72 65 77 20 20 20  |      Meldrew   |
00016370  20 32 38 2f 20 20 31 30  38 20 20 20 20 20 20 20  | 28/  108       |
00016380  20 49 74 5f 69 73 20 20  20 20 34 30 2f 20 20 31  | It_is    40/  1|
00016390  30 34 20 20 20 0a 20 41  75 6e 74 5f 4a 65 6d 69  |04   . Aunt_Jemi|
000163a0  6d 61 20 20 31 35 2f 20  20 31 30 32 20 20 20 20  |ma  15/  102    |
000163b0  20 20 20 20 20 20 20 2e  5f 20 20 20 36 38 30 2f  |       ._   680/|
000163c0  20 20 34 35 32 20 20 20  20 20 20 20 20 20 20 20  |  452           |
000163d0  2c 5f 20 20 31 34 34 34  2f 20 20 39 36 32 20 20  |,_  1444/  962  |
000163e0  20 0a 20 20 20 20 20 20  27 73 5f 7e 20 20 20 20  | .      's_~    |
000163f0  34 32 2f 20 20 31 30 39  20 20 20 20 20 20 20 20  |42/  109        |
00016400  27 73 5f 6e 6f 20 20 20  20 34 31 2f 20 20 31 30  |'s_no    41/  10|
00016410  36 20 20 20 20 20 20 20  20 20 20 5f 75 6e 20 20  |6          _un  |
00016420  20 31 30 35 2f 20 20 20  36 39 20 20 20 0a 20 20  | 105/   69   .  |
00016430  20 20 20 20 20 5f 74 6f  20 20 20 37 30 38 2f 20  |     _to   708/ |
00016440  20 34 37 31 20 20 20 20  20 20 20 20 5f 74 68 65  | 471        _the|
00016450  5f 20 20 31 33 32 38 2f  20 32 36 35 34 20 20 20  |_  1328/ 2654   |
00016460  20 20 20 20 20 20 20 5f  74 68 20 20 20 35 37 38  |       _th   578|
00016470  2f 20 20 33 38 34 20 20  20 0a 20 20 20 20 20 20  |/  384   .      |
00016480  20 5f 72 6f 20 20 20 31  31 30 2f 20 20 20 37 32  | _ro   110/   72|
00016490  20 20 20 20 20 20 20 20  20 20 5f 70 72 20 20 20  |          _pr   |
000164a0  20 39 35 2f 20 20 20 36  32 20 20 20 20 20 20 20  | 95/   62       |
000164b0  20 20 20 5f 70 6f 20 20  20 20 37 38 2f 20 20 20  |   _po    78/   |
000164c0  35 31 20 20 20 0a 20 20  20 20 20 20 20 5f 6e 6f  |51   .       _no|
000164d0  20 20 20 32 34 36 2f 20  20 31 36 33 20 20 20 20  |   246/  163    |
000164e0  20 20 20 20 20 20 5f 6d  61 20 20 20 31 36 35 2f  |      _ma   165/|
000164f0  20 20 31 30 39 20 20 20  20 20 20 20 20 20 20 5f  |  109          _|
00016500  6c 6f 20 20 20 31 31 39  2f 20 20 20 37 38 20 20  |lo   119/   78  |
00016510  20 0a 20 20 20 20 20 20  20 5f 68 6f 20 20 20 20  | .       _ho    |
00016520  38 37 2f 20 20 20 35 37  20 20 20 20 20 20 20 20  |87/   57        |
00016530  20 20 5f 68 69 20 20 20  20 39 39 2f 20 20 20 36  |  _hi    99/   6|
00016540  35 20 20 20 20 20 20 20  20 20 20 5f 68 61 20 20  |5          _ha  |
00016550  20 33 30 39 2f 20 20 32  30 35 20 20 20 0a 20 20  | 309/  205   .  |
00016560  20 20 20 20 20 5f 67 72  20 20 20 20 36 37 2f 20  |     _gr    67/ |
00016570  20 20 34 34 20 20 20 20  20 20 20 20 20 20 5f 67  |  44          _g|
00016580  61 20 20 20 20 36 30 2f  20 20 20 33 39 20 20 20  |a    60/   39   |
00016590  20 20 20 20 20 5f 66 72  6f 6d 20 20 20 20 39 34  |     _from    94|
000165a0  2f 20 20 31 38 36 20 20  20 0a 20 20 20 20 20 20  |/  186   .      |
000165b0  5f 66 6f 72 20 20 20 31  38 35 2f 20 20 32 34 35  |_for   185/  245|
000165c0  20 20 20 20 20 20 20 20  20 20 5f 66 69 20 20 20  |          _fi   |
000165d0  31 33 30 2f 20 20 20 38  36 20 20 20 20 20 20 20  |130/   86       |
000165e0  20 20 20 5f 66 61 20 20  20 20 39 37 2f 20 20 20  |   _fa    97/   |
000165f0  36 34 20 20 20 0a 20 20  20 20 20 20 20 5f 65 78  |64   .       _ex|
00016600  20 20 20 20 38 39 2f 20  20 20 35 38 20 20 20 20  |    89/   58    |
00016610  20 20 20 20 20 20 5f 65  61 20 20 20 20 36 31 2f  |      _ea    61/|
00016620  20 20 20 34 30 20 20 20  20 20 20 20 20 5f 64 6f  |   40        _do|
00016630  6f 72 20 20 20 20 34 36  2f 20 20 20 39 30 20 20  |or    46/   90  |
00016640  20 0a 20 20 20 20 20 20  20 5f 64 69 20 20 20 31  | .       _di   1|
00016650  31 30 2f 20 20 20 37 32  20 20 20 20 20 20 20 20  |10/   72        |
00016660  20 5f 63 6f 6e 20 20 20  20 38 38 2f 20 20 31 31  | _con    88/  11|
00016670  36 20 20 20 20 20 20 20  20 20 5f 63 6f 6d 20 20  |6         _com  |
00016680  20 20 37 32 2f 20 20 20  39 34 20 20 20 0a 20 20  |  72/   94   .  |
00016690  20 20 20 20 20 5f 63 6c  20 20 20 20 38 31 2f 20  |     _cl    81/ |
000166a0  20 20 35 33 20 20 20 20  20 20 20 20 20 5f 63 61  |  53         _ca|
000166b0  6e 20 20 20 31 36 34 2f  20 20 32 31 37 20 20 20  |n   164/  217   |
000166c0  20 20 20 20 20 20 20 5f  62 61 20 20 20 31 32 30  |       _ba   120|
000166d0  2f 20 20 20 37 39 20 20  20 0a 20 20 20 20 20 20  |/   79   .      |
000166e0  20 5f 61 5f 20 20 20 35  38 37 2f 20 20 33 39 30  | _a_   587/  390|
000166f0  20 20 20 0a 0a 28 4f 6e  20 74 68 65 20 6d 6f 73  |   ..(On the mos|
00016700  74 20 72 65 63 65 6e 74  20 28 32 35 36 4b 29 20  |t recent (256K) |
00016710  76 65 72 73 69 6f 6e 20  6f 66 20 22 43 75 72 73  |version of "Curs|
00016720  65 73 22 2c 20 75 73 69  6e 67 20 61 62 62 72 65  |es", using abbre|
00016730  76 69 61 74 69 6f 6e 73  20 73 61 76 65 64 0a 61  |viations saved.a|
00016740  62 6f 75 74 20 32 33 30  30 30 20 62 79 74 65 73  |bout 23000 bytes|
00016750  20 61 6e 64 20 61 64 64  65 64 20 39 20 73 65 63  | and added 9 sec|
00016760  6f 6e 64 73 20 74 6f 20  61 20 39 31 2d 73 65 63  |onds to a 91-sec|
00016770  6f 6e 64 20 63 6f 6d 70  69 6c 61 74 69 6f 6e 20  |ond compilation |
00016780  74 69 6d 65 2e 29 0a 0a  4d 6f 73 74 20 6f 66 20  |time.)..Most of |
00016790  74 68 65 73 65 20 61 62  62 72 65 76 69 61 74 69  |these abbreviati|
000167a0  6f 6e 73 2c 20 69 74 20  73 65 65 6d 73 20 66 61  |ons, it seems fa|
000167b0  69 72 20 74 6f 20 73 61  79 2c 20 77 6f 75 6c 64  |ir to say, would|
000167c0  20 6e 6f 74 20 62 65 20  67 75 65 73 73 65 64 20  | not be guessed |
000167d0  61 74 2c 0a 61 6e 64 20  69 74 27 73 20 69 6e 74  |at,.and it's int|
000167e0  65 72 65 73 74 69 6e 67  20 68 6f 77 20 66 65 77  |eresting how few|
000167f0  20 77 6f 72 64 73 20 69  6e 20 63 6f 6d 6d 6f 6e  | words in common|
00016800  20 74 68 65 20 6e 61 69  76 65 20 61 6e 64 20 6f  | the naive and o|
00016810  70 74 69 6d 69 73 65 64  20 6c 69 73 74 73 0a 68  |ptimised lists.h|
00016820  61 76 65 2e 20 20 4f 6e  6c 79 20 74 77 6f 20 70  |ave.  Only two p|
00016830  72 6f 70 65 72 20 6e 6f  75 6e 73 20 73 75 72 76  |roper nouns surv|
00016840  69 76 65 64 2c 20 61 6e  64 20 74 68 65 79 20 70  |ived, and they p|
00016850  72 6f 76 69 64 65 20 74  68 65 20 6f 6e 6c 79 20  |rovide the only |
00016860  6c 6f 6e 67 69 73 68 0a  77 6f 72 64 73 2e 20 20  |longish.words.  |
00016870  22 69 73 20 22 20 61 73  20 73 75 63 68 20 74 75  |"is " as such tu|
00016880  72 6e 65 64 20 6f 75 74  20 6e 6f 74 20 74 6f 20  |rned out not to |
00016890  62 65 20 77 6f 72 74 68  77 68 69 6c 65 2e 20 20  |be worthwhile.  |
000168a0  22 20 74 68 65 20 22 20  77 61 73 20 70 65 72 68  |" the " was perh|
000168b0  61 70 73 0a 6f 62 76 69  6f 75 73 20 69 6e 20 72  |aps.obvious in r|
000168c0  65 74 72 6f 73 70 65 63  74 2c 20 62 75 74 20 49  |etrospect, but I|
000168d0  20 64 69 64 6e 27 74 20  74 68 69 6e 6b 20 6f 66  | didn't think of|
000168e0  20 69 74 2e 20 20 54 68  65 20 62 65 73 74 20 73  | it.  The best s|
000168f0  74 72 61 74 65 67 79 20  66 6f 72 0a 61 62 62 72  |trategy for.abbr|
00016900  65 76 69 61 74 69 6e 67  20 73 65 65 6d 73 2c 20  |eviating seems, |
00016910  73 75 72 70 72 69 73 69  6e 67 6c 79 2c 20 74 6f  |surprisingly, to|
00016920  20 62 65 20 74 6f 20 63  68 6f 6f 73 65 20 74 68  | be to choose th|
00016930  72 65 65 2d 63 68 61 72  61 63 74 65 72 20 73 74  |ree-character st|
00016940  72 69 6e 67 73 0a 77 68  69 63 68 20 6d 61 6b 65  |rings.which make|
00016950  20 61 20 66 72 61 63 74  69 6f 6e 61 6c 20 73 61  | a fractional sa|
00016960  76 69 6e 67 20 65 61 63  68 20 28 6f 6e 6c 79 20  |ving each (only |
00016970  6f 6e 65 20 5a 2d 63 68  61 72 61 63 74 65 72 20  |one Z-character |
00016980  65 61 63 68 20 74 69 6d  65 2c 20 66 6f 72 20 74  |each time, for t|
00016990  68 65 0a 6d 6f 73 74 20  70 61 72 74 29 20 62 75  |he.most part) bu|
000169a0  74 20 77 68 69 63 68 20  6f 63 63 75 72 20 76 65  |t which occur ve|
000169b0  72 79 20 6f 66 74 65 6e  20 69 6e 64 65 65 64 2e  |ry often indeed.|
000169c0  20 20 28 54 68 69 73 20  6d 61 79 20 62 65 20 75  |  (This may be u|
000169d0  6e 64 65 73 69 72 61 62  6c 65 20 66 72 6f 6d 0a  |ndesirable from.|
000169e0  74 68 65 20 70 6f 69 6e  74 20 6f 66 20 76 69 65  |the point of vie|
000169f0  77 20 6f 66 20 70 72 69  6e 74 69 6e 67 20 73 70  |w of printing sp|
00016a00  65 65 64 2c 20 6f 66 20  63 6f 75 72 73 65 2e 29  |eed, of course.)|
00016a10  0a 0a 4e 6f 74 65 20 61  6c 73 6f 20 74 68 61 74  |..Note also that|
00016a20  20 61 6e 6f 74 68 65 72  20 33 32 20 61 62 62 72  | another 32 abbr|
00016a30  65 76 69 61 74 69 6f 6e  73 20 28 77 68 69 63 68  |eviations (which|
00016a40  20 63 6f 75 6c 64 20 62  65 20 61 63 63 6f 6d 6d  | could be accomm|
00016a50  6f 64 61 74 65 64 2c 20  69 66 20 74 68 65 0a 73  |odated, if the.s|
00016a60  74 72 69 6e 67 2d 63 68  61 6e 67 69 6e 67 20 6d  |tring-changing m|
00016a70  65 63 68 61 6e 69 73 6d  20 77 65 72 65 20 64 72  |echanism were dr|
00016a80  6f 70 70 65 64 29 20 77  6f 75 6c 64 20 6e 6f 74  |opped) would not|
00016a90  20 6d 61 6b 65 20 61 6c  6c 20 74 68 61 74 20 6d  | make all that m|
00016aa0  75 63 68 0a 64 69 66 66  65 72 65 6e 63 65 2e 20  |uch.difference. |
00016ab0  20 54 68 65 20 6c 65 61  73 74 20 77 6f 72 74 68  | The least worth|
00016ac0  77 68 69 6c 65 20 6f 66  20 74 68 65 73 65 20 61  |while of these a|
00016ad0  6c 72 65 61 64 79 20 73  61 76 65 73 20 6f 6e 6c  |lready saves onl|
00016ae0  79 20 33 38 20 62 79 74  65 73 20 6f 72 0a 73 6f  |y 38 bytes or.so|
00016af0  2e 0a 0a 0a 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |....------------|
00016b00  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00016b30  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0a  |---------------.|
00016b40  32 30 2e 20 20 42 65 6c  6c 73 2c 20 77 68 69 73  |20.  Bells, whis|
00016b50  74 6c 65 73 20 61 6e 64  20 67 69 6d 6d 69 63 6b  |tles and gimmick|
00016b60  73 0a 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |s.--------------|
00016b70  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00016ba0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0a 0a 0a  |-------------...|
00016bb0  20 20 20 20 22 48 65 20  68 61 73 20 77 72 69 74  |    "He has writ|
00016bc0  74 65 6e 20 70 6f 65 6d  73 20 72 65 73 65 6d 62  |ten poems resemb|
00016bd0  6c 69 6e 67 20 74 68 65  20 6b 69 6e 64 20 6f 66  |ling the kind of|
00016be0  20 70 69 63 74 75 72 65  73 20 74 79 70 69 73 74  | pictures typist|
00016bf0  73 0a 20 20 20 20 6d 61  6b 65 20 77 69 74 68 20  |s.    make with |
00016c00  74 68 65 69 72 20 6d 61  63 68 69 6e 65 73 20 69  |their machines i|
00016c10  6e 20 74 68 65 20 63 6f  66 66 65 65 20 62 72 65  |n the coffee bre|
00016c20  61 6b 2e 2e 2e 22 0a 0a  20 20 20 20 20 20 20 20  |ak..."..        |
00016c30  20 28 50 68 69 6c 69 70  20 4c 61 72 6b 69 6e 20  | (Philip Larkin |
00016c40  6f 6e 20 74 68 65 20 6d  6f 64 65 72 6e 20 61 72  |on the modern ar|
00016c50  74 69 73 74 2c 20 66 72  6f 6d 20 74 68 65 0a 20  |tist, from the. |
00016c60  20 20 20 20 20 20 20 20  20 69 6e 74 72 6f 64 75  |         introdu|
00016c70  63 74 69 6f 6e 20 74 6f  20 22 41 6c 6c 20 57 68  |ction to "All Wh|
00016c80  61 74 20 4a 61 7a 7a 22  29 0a 0a 0a 61 2e 20 20  |at Jazz")...a.  |
00016c90  56 65 72 73 69 6f 6e 20  33 0a 2d 2d 2d 2d 2d 2d  |Version 3.------|
00016ca0  2d 2d 2d 2d 2d 2d 2d 0a  0a 0a 56 65 72 73 69 6f  |-------...Versio|
00016cb0  6e 20 33 20 73 74 6f 72  79 20 66 69 6c 65 73 20  |n 3 story files |
00016cc0  61 72 65 20 70 6c 65 61  73 69 6e 67 6c 79 20 61  |are pleasingly a|
00016cd0  75 73 74 65 72 65 2e 20  20 41 6c 6d 6f 73 74 20  |ustere.  Almost |
00016ce0  74 68 65 69 72 20 6f 6e  6c 79 20 73 70 65 63 69  |their only speci|
00016cf0  61 6c 0a 65 66 66 65 63  74 73 20 61 72 65 20 74  |al.effects are t|
00016d00  68 65 20 73 74 61 74 75  73 20 6c 69 6e 65 2c 20  |he status line, |
00016d10  61 6e 64 20 6f 63 63 61  73 69 6f 6e 61 6c 20 63  |and occasional c|
00016d20  68 61 72 61 63 74 65 72  20 67 72 61 70 68 69 63  |haracter graphic|
00016d30  20 6d 61 70 73 20 6f 72  0a 64 72 61 77 69 6e 67  | maps or.drawing|
00016d40  73 2e 0a 0a 54 68 65 20  73 74 61 74 75 73 20 6c  |s...The status l|
00016d50  69 6e 65 20 69 73 20 70  65 72 68 61 70 73 20 74  |ine is perhaps t|
00016d60  68 65 20 6d 6f 73 74 20  64 69 73 74 69 6e 63 74  |he most distinct|
00016d70  69 76 65 20 66 65 61 74  75 72 65 20 6f 66 20 49  |ive feature of I|
00016d80  6e 66 6f 63 6f 6d 20 67  61 6d 65 73 20 69 6e 0a  |nfocom games in.|
00016d90  70 6c 61 79 2e 20 20 54  68 69 73 20 69 73 20 74  |play.  This is t|
00016da0  68 65 20 28 75 73 75 61  6c 6c 79 20 68 69 67 68  |he (usually high|
00016db0  6c 69 67 68 74 65 64 29  20 62 61 72 20 61 63 72  |lighted) bar acr|
00016dc0  6f 73 73 20 74 68 65 20  74 6f 70 20 6f 66 20 74  |oss the top of t|
00016dd0  68 65 20 73 63 72 65 65  6e 2e 20 0a 54 68 65 20  |he screen. .The |
00016de0  67 61 6d 65 20 61 75 74  6f 6d 61 74 69 63 61 6c  |game automatical|
00016df0  6c 79 20 70 72 69 6e 74  73 20 74 68 65 20 63 75  |ly prints the cu|
00016e00  72 72 65 6e 74 20 67 61  6d 65 20 6c 6f 63 61 74  |rrent game locat|
00016e10  69 6f 6e 2c 20 61 6e 64  20 65 69 74 68 65 72 20  |ion, and either |
00016e20  74 68 65 20 74 69 6d 65  0a 6f 72 20 74 68 65 20  |the time.or the |
00016e30  73 63 6f 72 65 20 61 6e  64 20 6e 75 6d 62 65 72  |score and number|
00016e40  20 6f 66 20 74 75 72 6e  73 20 74 61 6b 65 6e 2e  | of turns taken.|
00016e50  0a 0a 54 68 65 20 73 74  61 74 75 73 20 6c 69 6e  |..The status lin|
00016e60  65 20 69 73 20 72 65 64  69 73 70 6c 61 79 65 64  |e is redisplayed|
00016e70  20 61 74 20 6c 65 61 73  74 20 28 61 29 20 6f 6e  | at least (a) on|
00016e80  20 61 20 53 48 4f 57 5f  53 43 4f 52 45 20 63 6f  | a SHOW_SCORE co|
00016e90  6d 6d 61 6e 64 20 61 6e  64 0a 28 62 29 20 65 61  |mmand and.(b) ea|
00016ea0  63 68 20 74 69 6d 65 20  74 68 65 20 67 61 6d 65  |ch time the game|
00016eb0  20 61 73 6b 73 20 74 68  65 20 70 6c 61 79 65 72  | asks the player|
00016ec0  20 74 6f 20 74 79 70 65  20 73 6f 6d 65 74 68 69  | to type somethi|
00016ed0  6e 67 2e 20 20 49 74 20  6d 61 79 20 62 65 0a 64  |ng.  It may be.d|
00016ee0  69 73 70 6c 61 79 65 64  20 65 76 65 6e 20 6d 6f  |isplayed even mo|
00016ef0  72 65 20 6f 66 74 65 6e  2c 20 61 74 20 74 68 65  |re often, at the|
00016f00  20 77 68 69 6d 20 6f 66  20 74 68 65 20 69 6e 74  | whim of the int|
00016f10  65 72 70 72 65 74 65 72  2e 0a 0a 54 68 65 20 70  |erpreter...The p|
00016f20  6c 61 63 65 20 6e 61 6d  65 20 69 73 20 74 68 65  |lace name is the|
00016f30  20 73 68 6f 72 74 20 6e  61 6d 65 20 6f 66 20 74  | short name of t|
00016f40  68 65 20 6f 62 6a 65 63  74 20 77 68 6f 73 65 20  |he object whose |
00016f50  6e 75 6d 62 65 72 20 69  73 20 68 65 6c 64 20 69  |number is held i|
00016f60  6e 0a 67 6c 6f 62 61 6c  20 30 20 2d 20 74 68 65  |n.global 0 - the|
00016f70  20 65 61 72 6c 69 65 73  74 20 67 6c 6f 62 61 6c  | earliest global|
00016f80  20 64 65 63 6c 61 72 65  64 20 69 6e 20 74 68 65  | declared in the|
00016f90  20 66 69 6c 65 2e 20 20  49 66 20 65 76 65 72 20  | file.  If ever |
00016fa0  74 68 69 73 20 67 6c 6f  62 61 6c 0a 68 6f 6c 64  |this global.hold|
00016fb0  73 20 74 68 65 20 76 61  6c 75 65 20 30 2c 20 74  |s the value 0, t|
00016fc0  68 65 20 6e 61 6d 65 20  64 69 73 70 6c 61 79 65  |he name displaye|
00016fd0  64 20 77 69 6c 6c 20 62  65 63 6f 6d 65 20 63 6f  |d will become co|
00016fe0  72 72 75 70 74 65 64 20  61 6e 64 20 74 68 65 20  |rrupted and the |
00016ff0  67 61 6d 65 0a 6d 61 79  20 63 72 61 73 68 2e 0a  |game.may crash..|
00017000  0a 54 68 65 20 6e 65 78  74 20 74 77 6f 20 67 6c  |.The next two gl|
00017010  6f 62 61 6c 73 20 61 72  65 20 61 6c 73 6f 20 75  |obals are also u|
00017020  73 65 64 2e 0a 0a 42 79  20 64 65 66 61 75 6c 74  |sed...By default|
00017030  2c 20 74 68 65 73 65 20  73 68 6f 77 20 74 68 65  |, these show the|
00017040  20 73 63 6f 72 65 20 61  6e 64 20 6e 75 6d 62 65  | score and numbe|
00017050  72 20 6f 66 20 74 75 72  6e 73 20 74 61 6b 65 6e  |r of turns taken|
00017060  20 73 6f 20 66 61 72 2c  20 75 73 75 61 6c 6c 79  | so far, usually|
00017070  0a 69 6e 20 74 68 65 20  66 6f 72 6d 20 22 34 2f  |.in the form "4/|
00017080  38 37 22 2e 20 20 28 49  6e 74 65 72 70 72 65 74  |87".  (Interpret|
00017090  65 72 73 20 76 61 72 79  20 69 6e 20 68 6f 77 20  |ers vary in how |
000170a0  74 68 65 79 20 70 72 69  6e 74 20 74 68 65 73 65  |they print these|
000170b0  2e 29 0a 0a 48 6f 77 65  76 65 72 2c 20 69 66 20  |.)..However, if |
000170c0  74 68 65 20 66 69 6c 65  20 63 6f 6e 74 61 69 6e  |the file contain|
000170d0  73 20 74 68 65 20 64 69  72 65 63 74 69 76 65 0a  |s the directive.|
000170e0  0a 20 20 53 74 61 74 75  73 6c 69 6e 65 20 74 69  |.  Statusline ti|
000170f0  6d 65 3b 0a 0a 74 68 65  6e 20 74 68 65 79 20 61  |me;..then they a|
00017100  72 65 20 74 72 65 61 74  65 64 20 61 73 20 74 68  |re treated as th|
00017110  65 20 74 69 6d 65 20 69  6e 20 68 6f 75 72 73 20  |e time in hours |
00017120  61 6e 64 20 6d 69 6e 75  74 65 73 2e 20 20 46 6f  |and minutes.  Fo|
00017130  72 20 69 6e 73 74 61 6e  63 65 2c 0a 31 20 61 6e  |r instance,.1 an|
00017140  64 20 33 32 20 77 6f 75  6c 64 20 63 6f 6d 65 20  |d 32 would come |
00017150  6f 75 74 20 61 73 20 22  31 3a 33 32 20 61 6d 22  |out as "1:32 am"|
00017160  2e 0a 0a 49 74 20 69 73  20 75 70 20 74 6f 20 74  |...It is up to t|
00017170  68 65 20 70 72 6f 67 72  61 6d 20 74 6f 20 61 64  |he program to ad|
00017180  6a 75 73 74 20 74 68 65  73 65 20 76 61 72 69 61  |just these varia|
00017190  62 6c 65 73 20 61 73 20  74 69 6d 65 20 70 61 73  |bles as time pas|
000171a0  73 65 73 2c 20 73 63 6f  72 65 0a 69 73 20 67 61  |ses, score.is ga|
000171b0  74 68 65 72 65 64 2c 20  6c 6f 63 61 74 69 6f 6e  |thered, location|
000171c0  20 63 68 61 6e 67 65 73  2c 20 65 74 63 2e 20 20  | changes, etc.  |
000171d0  28 54 68 6f 75 67 68 20  61 73 20 75 73 75 61 6c  |(Though as usual|
000171e0  2c 20 74 68 65 20 6c 69  62 72 61 72 79 20 77 69  |, the library wi|
000171f0  6c 6c 0a 74 61 6b 65 20  63 61 72 65 20 6f 66 20  |ll.take care of |
00017200  73 6f 6d 65 20 6f 66 20  74 68 69 73 20 77 6f 72  |some of this wor|
00017210  6b 2e 29 0a 0a 0a 41 62  6f 75 74 20 63 68 61 72  |k.)...About char|
00017220  61 63 74 65 72 20 67 72  61 70 68 69 63 20 64 72  |acter graphic dr|
00017230  61 77 69 6e 67 73 3a 20  6f 6e 20 73 6f 6d 65 20  |awings: on some |
00017240  6d 61 63 68 69 6e 65 73  2c 20 74 65 78 74 20 77  |machines, text w|
00017250  69 6c 6c 20 62 79 20 64  65 66 61 75 6c 74 20 62  |ill by default b|
00017260  65 0a 64 69 73 70 6c 61  79 65 64 20 69 6e 20 61  |e.displayed in a|
00017270  20 70 72 6f 70 6f 72 74  69 6f 6e 61 6c 20 66 6f  | proportional fo|
00017280  6e 74 20 28 69 2e 65 2e  20 6f 6e 65 20 69 6e 20  |nt (i.e. one in |
00017290  77 68 69 63 68 20 74 68  65 20 77 69 64 74 68 20  |which the width |
000172a0  6f 66 20 61 20 6c 65 74  74 65 72 0a 64 65 70 65  |of a letter.depe|
000172b0  6e 64 73 20 6f 6e 20 77  68 61 74 20 69 74 20 69  |nds on what it i|
000172c0  73 2c 20 73 6f 20 66 6f  72 20 65 78 61 6d 70 6c  |s, so for exampl|
000172d0  65 20 61 6e 20 69 20 77  69 6c 6c 20 62 65 20 6e  |e an i will be n|
000172e0  61 72 72 6f 77 65 72 20  74 68 61 6e 20 61 6e 20  |arrower than an |
000172f0  6d 29 2e 20 20 49 66 0a  79 6f 75 20 77 61 6e 74  |m).  If.you want|
00017300  20 74 6f 20 64 69 73 70  6c 61 79 20 61 20 64 69  | to display a di|
00017310  61 67 72 61 6d 20 6d 61  64 65 20 75 70 20 6f 66  |agram made up of|
00017320  20 6c 65 74 74 65 72 73  2c 20 79 6f 75 20 77 69  | letters, you wi|
00017330  6c 6c 20 68 61 76 65 20  74 6f 20 74 75 72 6e 20  |ll have to turn |
00017340  74 68 69 73 0a 6f 66 66  2c 20 66 6f 72 20 77 68  |this.off, for wh|
00017350  69 63 68 20 74 68 65 20  22 66 6f 6e 74 22 20 63  |ich the "font" c|
00017360  6f 6d 6d 61 6e 64 20 69  73 20 70 72 6f 76 69 64  |ommand is provid|
00017370  65 64 3a 0a 0a 20 20 20  66 6f 6e 74 20 6f 66 66  |ed:..   font off|
00017380  3b 0a 20 20 20 70 72 69  6e 74 20 22 20 20 20 2b  |;.   print "   +|
00017390  2d 2d 2d 2b 5e 20 20 20  7c 20 41 20 7c 5e 20 20  |---+^   | A |^  |
000173a0  20 2b 2d 2d 2d 2b 5e 22  3b 0a 20 20 20 66 6f 6e  | +---+^";.   fon|
000173b0  74 20 6f 6e 3b 0a 0a 66  6f 72 20 65 78 61 6d 70  |t on;..for examp|
000173c0  6c 65 2e 20 20 52 65 6d  65 6d 62 65 72 20 74 6f  |le.  Remember to|
000173d0  20 74 75 72 6e 20 74 68  65 20 66 6f 6e 74 20 62  | turn the font b|
000173e0  61 63 6b 20 6f 6e 20 61  66 74 65 72 77 61 72 64  |ack on afterward|
000173f0  73 2e 0a 0a 4f 6e 20 61  20 6d 61 63 68 69 6e 65  |s...On a machine|
00017400  20 6e 6f 74 20 75 73 69  6e 67 20 70 72 6f 70 6f  | not using propo|
00017410  72 74 69 6f 6e 61 6c 20  66 6f 6e 74 73 2c 20 74  |rtional fonts, t|
00017420  68 65 73 65 20 68 61 76  65 20 6e 6f 20 65 66 66  |hese have no eff|
00017430  65 63 74 2e 20 20 42 75  74 0a 74 68 65 20 63 6f  |ect.  But.the co|
00017440  6d 6d 61 6e 64 73 20 6e  65 65 64 20 74 6f 20 62  |mmands need to b|
00017450  65 20 69 6e 73 65 72 74  65 64 20 66 6f 72 20 74  |e inserted for t|
00017460  68 65 20 73 61 6b 65 20  6f 66 20 6d 61 63 68 69  |he sake of machi|
00017470  6e 65 73 20 77 68 69 63  68 20 64 6f 2e 0a 0a 57  |nes which do...W|
00017480  41 52 4e 49 4e 47 3a 20  53 6f 6d 65 20 69 6e 74  |ARNING: Some int|
00017490  65 72 70 72 65 74 65 72  73 20 6f 6e 6c 79 20 64  |erpreters only d|
000174a0  69 73 70 6c 61 79 20 61  20 6c 69 6e 65 20 6f 6e  |isplay a line on|
000174b0  63 65 20 69 74 20 68 61  73 20 73 63 72 6f 6c 6c  |ce it has scroll|
000174c0  65 64 2e 0a 20 20 20 2a  20 20 20 20 20 43 6f 6e  |ed..   *     Con|
000174d0  73 65 71 75 65 6e 74 6c  79 20 69 74 20 69 73 20  |sequently it is |
000174e0  77 69 73 65 73 74 20 6f  6e 6c 79 20 74 6f 20 63  |wisest only to c|
000174f0  68 61 6e 67 65 20 74 68  65 20 66 6f 6e 74 20 61  |hange the font a|
00017500  66 74 65 72 20 61 0a 20  20 2f 21 5c 20 20 20 20  |fter a.  /!\    |
00017510  6e 65 77 2d 6c 69 6e 65  20 68 61 73 20 62 65 65  |new-line has bee|
00017520  6e 20 70 72 69 6e 74 65  64 2e 0a 20 2a 2d 2d 2d  |n printed.. *---|
00017530  2a 20 20 20 0a 0a 0a 62  2e 20 20 56 65 72 73 69  |*   ...b.  Versi|
00017540  6f 6e 20 35 0a 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |on 5.-----------|
00017550  2d 2d 0a 0a 0a 56 61 72  69 6f 75 73 20 67 69 6d  |--...Various gim|
00017560  6d 69 63 6b 73 20 61 6e  64 20 73 70 65 63 69 61  |micks and specia|
00017570  6c 20 65 66 66 65 63 74  73 20 61 72 65 20 70 72  |l effects are pr|
00017580  6f 76 69 64 65 64 20 66  6f 72 20 56 65 72 73 69  |ovided for Versi|
00017590  6f 6e 20 35 20 73 74 6f  72 79 20 66 69 6c 65 73  |on 5 story files|
000175a0  2e 20 0a 54 68 65 73 65  20 73 68 6f 75 6c 64 20  |. .These should |
000175b0  62 65 20 75 73 65 64 20  61 73 20 73 70 61 72 69  |be used as spari|
000175c0  6e 67 6c 79 20 61 73 20  70 6f 73 73 69 62 6c 65  |ngly as possible|
000175d0  2c 20 69 6e 20 74 68 65  20 69 6e 74 65 72 65 73  |, in the interes|
000175e0  74 73 20 6f 66 20 70 75  62 6c 69 63 0a 64 65 63  |ts of public.dec|
000175f0  65 6e 63 79 20 61 73 20  6d 75 63 68 20 61 73 20  |ency as much as |
00017600  6f 66 20 70 6f 72 74 61  62 69 6c 69 74 79 2e 0a  |of portability..|
00017610  0a 41 73 73 65 6d 62 6c  79 20 6c 61 6e 67 75 61  |.Assembly langua|
00017620  67 65 20 74 6f 20 63 6f  64 65 20 73 75 63 68 20  |ge to code such |
00017630  65 66 66 65 63 74 73 20  69 73 20 64 65 74 61 69  |effects is detai|
00017640  6c 65 64 20 69 6e 20 28  41 34 29 2e 0a 0a 54 68  |led in (A4)...Th|
00017650  65 20 6d 61 69 6e 20 64  69 66 66 65 72 65 6e 63  |e main differenc|
00017660  65 20 69 73 20 74 68 61  74 20 74 68 65 20 73 74  |e is that the st|
00017670  61 74 75 73 20 6c 69 6e  65 20 69 73 20 6e 6f 74  |atus line is not|
00017680  20 61 75 74 6f 6d 61 74  69 63 61 6c 6c 79 20 64  | automatically d|
00017690  69 73 70 6c 61 79 65 64  0a 61 6e 64 20 74 68 61  |isplayed.and tha|
000176a0  74 20 53 48 4f 57 5f 53  43 4f 52 45 20 69 73 20  |t SHOW_SCORE is |
000176b0  6e 6f 20 6c 6f 6e 67 65  72 20 6c 65 67 61 6c 2e  |no longer legal.|
000176c0  20 20 48 6f 77 65 76 65  72 2c 20 74 68 65 20 52  |  However, the R|
000176d0  45 41 44 20 63 6f 6d 6d  61 6e 64 20 69 73 20 61  |EAD command is a|
000176e0  62 6c 65 0a 74 6f 20 65  6d 75 6c 61 74 65 20 74  |ble.to emulate t|
000176f0  68 65 20 6f 6c 64 20 73  74 61 74 75 73 20 6c 69  |he old status li|
00017700  6e 65 20 62 79 2c 20 66  6f 72 20 69 6e 73 74 61  |ne by, for insta|
00017710  6e 63 65 2c 0a 0a 20 20  72 65 61 64 20 62 75 66  |nce,..  read buf|
00017720  66 65 72 20 70 61 72 73  65 3b 0a 0a 69 66 20 79  |fer parse;..if y|
00017730  6f 75 20 6f 6e 6c 79 20  77 61 6e 74 20 61 20 73  |ou only want a s|
00017740  74 61 6e 64 61 72 64 20  6f 6e 65 2e 20 20 49 66  |tandard one.  If|
00017750  20 79 6f 75 20 77 61 6e  74 20 73 6f 6d 65 74 68  | you want someth|
00017760  69 6e 67 20 6d 6f 72 65  20 65 78 6f 74 69 63 2c  |ing more exotic,|
00017770  20 79 6f 75 0a 77 69 6c  6c 20 6e 65 65 64 20 73  | you.will need s|
00017780  6f 6d 65 74 68 69 6e 67  20 6c 69 6b 65 3a 0a 0a  |omething like:..|
00017790  20 20 72 65 61 64 20 62  75 66 66 65 72 20 70 61  |  read buffer pa|
000177a0  72 73 65 20 50 72 65 74  74 79 3b 0a 0a 77 68 65  |rse Pretty;..whe|
000177b0  72 65 20 74 68 65 20 50  72 65 74 74 79 28 29 20  |re the Pretty() |
000177c0  72 6f 75 74 69 6e 65 20  69 73 2c 20 73 61 79 3a  |routine is, say:|
000177d0  0a 0a 20 20 5b 20 50 72  65 74 74 79 20 69 20 6a  |..  [ Pretty i j|
000177e0  3b 0a 20 20 20 20 69 20  3d 20 30 2d 3e 33 33 3b  |;.    i = 0->33;|
000177f0  20 69 66 20 28 69 3d 3d  30 29 20 69 3d 38 30 3b  | if (i==0) i=80;|
00017800  20 20 20 20 20 20 20 20  20 20 21 20 20 46 69 6e  |          !  Fin|
00017810  64 20 77 69 64 74 68 20  6f 66 20 73 63 72 65 65  |d width of scree|
00017820  6e 0a 0a 20 20 20 20 73  70 6c 69 74 5f 77 69 6e  |n..    split_win|
00017830  64 6f 77 20 32 3b 20 20  20 20 20 20 20 20 20 20  |dow 2;          |
00017840  20 20 20 20 20 20 20 20  20 20 20 21 20 20 43 72  |           !  Cr|
00017850  65 61 74 65 20 32 2d 6c  69 6e 65 20 74 6f 70 20  |eate 2-line top |
00017860  77 69 6e 64 6f 77 0a 20  20 20 20 62 75 66 66 65  |window.    buffe|
00017870  72 5f 6d 6f 64 65 20 30  3b 20 20 20 20 20 20 20  |r_mode 0;       |
00017880  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 21  |               !|
00017890  20 20 53 77 69 74 63 68  20 6f 66 66 20 6c 69 6e  |  Switch off lin|
000178a0  65 2d 73 70 6c 69 74 74  69 6e 67 0a 20 20 20 20  |e-splitting.    |
000178b0  73 65 74 5f 77 69 6e 64  6f 77 20 31 3b 20 20 20  |set_window 1;   |
000178c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000178d0  20 20 20 20 21 20 20 4d  6f 76 65 20 74 6f 20 69  |    !  Move to i|
000178e0  74 0a 20 20 20 20 73 74  79 6c 65 20 72 65 76 65  |t.    style reve|
000178f0  72 73 65 3b 20 20 20 20  20 20 20 20 20 20 20 20  |rse;            |
00017900  20 20 20 20 20 20 20 20  20 20 21 20 20 52 65 76  |          !  Rev|
00017910  65 72 73 65 2d 76 69 64  65 6f 20 6d 6f 64 65 20  |erse-video mode |
00017920  6f 6e 0a 0a 20 20 20 20  73 65 74 5f 63 75 72 73  |on..    set_curs|
00017930  6f 72 20 31 20 31 3b 20  20 20 20 20 20 20 20 20  |or 1 1;         |
00017940  20 20 20 20 20 20 20 20  20 20 20 20 21 20 20 42  |            !  B|
00017950  6c 61 6e 6b 20 6f 75 74  20 6c 69 6e 65 20 31 2e  |lank out line 1.|
00017960  2e 2e 0a 20 20 20 20 73  70 61 63 65 73 20 69 3b  |...    spaces i;|
00017970  0a 20 20 20 20 73 65 74  5f 63 75 72 73 6f 72 20  |.    set_cursor |
00017980  32 20 31 3b 20 20 20 20  20 20 20 20 20 20 20 20  |2 1;            |
00017990  20 20 20 20 20 20 20 20  20 21 20 20 61 6e 64 20  |         !  and |
000179a0  6c 69 6e 65 20 32 2e 2e  2e 20 77 69 74 68 20 73  |line 2... with s|
000179b0  70 61 63 65 73 0a 20 20  20 20 73 70 61 63 65 73  |paces.    spaces|
000179c0  20 69 3b 0a 0a 20 20 20  20 73 65 74 5f 63 75 72  | i;..    set_cur|
000179d0  73 6f 72 20 31 20 32 3b  20 20 20 20 20 20 20 20  |sor 1 2;        |
000179e0  20 20 20 20 20 20 20 20  20 20 20 20 20 21 20 20  |             !  |
000179f0  50 72 69 6e 74 20 74 68  65 20 74 6f 70 20 6c 69  |Print the top li|
00017a00  6e 65 0a 20 20 20 20 70  72 69 6e 74 5f 6f 62 6a  |ne.    print_obj|
00017a10  20 6c 6f 63 61 74 69 6f  6e 3b 0a 20 20 20 20 73  | location;.    s|
00017a20  65 74 5f 63 75 72 73 6f  72 20 31 20 35 33 3b 0a  |et_cursor 1 53;.|
00017a30  20 20 20 20 70 72 69 6e  74 20 22 41 6d 75 6c 65  |    print "Amule|
00017a40  74 73 3a 20 22 3b 20 70  72 69 6e 74 5f 6e 75 6d  |ts: "; print_num|
00017a50  20 73 63 6f 72 65 3b 0a  20 20 20 20 73 65 74 5f  | score;.    set_|
00017a60  63 75 72 73 6f 72 20 31  20 36 36 3b 0a 20 20 20  |cursor 1 66;.   |
00017a70  20 70 72 69 6e 74 20 22  44 61 79 73 3a 20 22 3b  | print "Days: ";|
00017a80  20 70 72 69 6e 74 5f 6e  75 6d 20 74 75 72 6e 73  | print_num turns|
00017a90  3b 0a 0a 20 20 20 20 73  65 74 5f 63 75 72 73 6f  |;..    set_curso|
00017aa0  72 20 32 20 32 3b 20 20  20 20 20 20 20 20 20 20  |r 2 2;          |
00017ab0  20 20 20 20 20 20 20 20  20 20 20 21 20 20 41 6e  |           !  An|
00017ac0  64 20 74 68 65 20 73 65  63 6f 6e 64 20 6c 69 6e  |d the second lin|
00017ad0  65 0a 20 20 20 20 50 72  69 6e 74 52 61 6e 6b 28  |e.    PrintRank(|
00017ae0  29 3b 0a 0a 20 20 20 20  73 74 79 6c 65 20 72 6f  |);..    style ro|
00017af0  6d 61 6e 3b 20 20 20 20  20 20 20 20 20 20 20 20  |man;            |
00017b00  20 20 20 20 20 20 20 20  20 20 20 20 21 20 20 42  |            !  B|
00017b10  61 63 6b 20 74 6f 20 73  74 61 6e 64 61 72 64 20  |ack to standard |
00017b20  74 65 78 74 0a 20 20 20  20 62 75 66 66 65 72 5f  |text.    buffer_|
00017b30  6d 6f 64 65 20 31 3b 20  20 20 20 20 20 20 20 20  |mode 1;         |
00017b40  20 20 20 20 20 20 20 20  20 20 20 20 20 21 20 20  |             !  |
00017b50  53 77 69 74 63 68 20 6f  6e 20 6c 69 6e 65 2d 73  |Switch on line-s|
00017b60  70 6c 69 74 74 69 6e 67  0a 20 20 20 20 73 65 74  |plitting.    set|
00017b70  5f 77 69 6e 64 6f 77 20  30 3b 20 20 20 20 20 20  |_window 0;      |
00017b80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00017b90  20 21 20 20 69 6e 20 74  68 65 20 73 74 61 6e 64  | !  in the stand|
00017ba0  61 72 64 20 77 69 6e 64  6f 77 0a 20 20 5d 3b 0a  |ard window.  ];.|
00017bb0  0a 42 79 20 73 74 72 65  74 63 68 69 6e 67 20 74  |.By stretching t|
00017bc0  68 65 20 73 74 61 74 75  73 20 62 61 72 20 74 6f  |he status bar to|
00017bd0  20 6d 61 6e 79 20 6c 69  6e 65 73 20 77 69 64 65  | many lines wide|
00017be0  2c 20 79 6f 75 20 63 61  6e 20 6d 61 6b 65 20 69  |, you can make i|
00017bf0  74 20 73 68 6f 77 20 61  0a 63 68 61 72 61 63 74  |t show a.charact|
00017c00  65 72 2d 67 72 61 70 68  69 63 73 20 6d 61 70 2c  |er-graphics map,|
00017c10  20 61 20 53 63 6f 74 74  20 41 64 61 6d 73 2d 73  | a Scott Adams-s|
00017c20  74 79 6c 65 20 6c 69 73  74 20 6f 66 20 76 69 61  |tyle list of via|
00017c30  62 6c 65 20 64 69 72 65  63 74 69 6f 6e 73 2c 20  |ble directions, |
00017c40  61 6e 0a 65 6c 65 63 74  69 6f 6e 20 73 6c 6f 67  |an.election slog|
00017c50  61 6e 20 66 6f 72 20 79  6f 75 72 20 66 61 76 6f  |an for your favo|
00017c60  75 72 69 74 65 20 70 6f  6c 69 74 69 63 69 61 6e  |urite politician|
00017c70  20 2d 20 74 68 65 20 70  6f 73 73 69 62 69 6c 69  | - the possibili|
00017c80  74 69 65 73 20 61 72 65  2c 20 61 6c 61 73 2c 0a  |ties are, alas,.|
00017c90  65 6e 64 6c 65 73 73 2e  0a 0a 59 6f 75 20 63 61  |endless...You ca|
00017ca0  6e 20 61 6c 73 6f 20 42  45 45 50 20 74 68 65 20  |n also BEEP the |
00017cb0  75 73 65 72 20 61 6e 64  20 72 65 61 64 20 74 68  |user and read th|
00017cc0  65 20 6b 65 79 62 6f 61  72 64 20 22 6c 69 76 65  |e keyboard "live|
00017cd0  22 2c 20 77 69 74 68 20  61 20 63 6c 6f 63 6b 0a  |", with a clock.|
00017ce0  72 75 6e 6e 69 6e 67 3b  20 73 65 65 20 61 70 70  |running; see app|
00017cf0  65 6e 64 69 78 20 28 41  34 29 20 66 6f 72 20 66  |endix (A4) for f|
00017d00  75 6c 6c 65 72 20 64 65  74 61 69 6c 73 2e 0a 0a  |uller details...|
00017d10  0a 53 6f 6d 65 74 68 69  6e 67 20 73 65 76 65 72  |.Something sever|
00017d20  61 6c 20 6c 61 74 65 72  20 49 6e 66 6f 63 6f 6d  |al later Infocom|
00017d30  20 67 61 6d 65 73 20 64  69 64 20 77 61 73 20 74  | games did was t|
00017d40  6f 20 64 69 73 70 6c 61  79 20 6d 65 73 73 61 67  |o display messag|
00017d50  65 73 0a 2d 20 71 75 6f  74 61 74 69 6f 6e 73 2c  |es.- quotations,|
00017d60  20 77 72 69 74 69 6e 67  73 20 6f 6e 20 73 69 67  | writings on sig|
00017d70  6e 73 2c 20 65 74 63 2e  20 2d 20 69 6e 20 72 65  |ns, etc. - in re|
00017d80  76 65 72 73 65 20 76 69  64 65 6f 20 69 6e 20 61  |verse video in a|
00017d90  20 63 65 6e 74 72 65 64  20 74 65 78 74 0a 77 69  | centred text.wi|
00017da0  6e 64 6f 77 20 61 74 20  74 68 65 20 74 6f 70 20  |ndow at the top |
00017db0  6f 66 20 74 68 65 20 73  63 72 65 65 6e 2e 20 20  |of the screen.  |
00017dc0  54 68 69 73 20 69 73 20  65 61 73 79 20 62 75 74  |This is easy but|
00017dd0  20 74 65 64 69 6f 75 73  20 74 6f 20 63 6f 64 65  | tedious to code|
00017de0  0a 63 6f 72 72 65 63 74  6c 79 2c 20 73 6f 20 49  |.correctly, so I|
00017df0  6e 66 6f 72 6d 20 70 72  6f 76 69 64 65 73 20 61  |nform provides a|
00017e00  20 63 6f 6d 6d 61 6e 64  20 74 6f 20 64 6f 20 69  | command to do i|
00017e10  74 2c 20 76 69 7a 2e 20  22 42 4f 58 22 2e 20 20  |t, viz. "BOX".  |
00017e20  46 6f 72 0a 69 6e 73 74  61 6e 63 65 2c 0a 0a 20  |For.instance,.. |
00017e30  20 20 20 20 42 4f 58 20  22 42 65 77 61 72 65 20  |    BOX "Beware |
00017e40  6f 66 20 74 68 65 20 44  6f 67 22 3b 0a 0a 6f 72  |of the Dog";..or|
00017e50  0a 0a 20 20 20 20 20 42  4f 58 20 22 49 20 6d 69  |..     BOX "I mi|
00017e60  67 68 74 20 72 65 70 65  61 74 20 74 6f 20 6d 79  |ght repeat to my|
00017e70  73 65 6c 66 2c 20 73 6c  6f 77 6c 79 20 61 6e 64  |self, slowly and|
00017e80  20 73 6f 6f 74 68 69 6e  67 6c 79 2c 22 0a 20 20  | soothingly,".  |
00017e90  20 20 20 20 20 20 20 22  61 20 6c 69 73 74 20 6f  |       "a list o|
00017ea0  66 20 71 75 6f 74 61 74  69 6f 6e 73 20 62 65 61  |f quotations bea|
00017eb0  75 74 69 66 75 6c 20 66  72 6f 6d 20 6d 69 6e 64  |utiful from mind|
00017ec0  73 20 70 72 6f 66 6f 75  6e 64 3b 22 0a 20 20 20  |s profound;".   |
00017ed0  20 20 20 20 20 20 22 69  66 20 49 20 63 61 6e 20  |      "if I can |
00017ee0  72 65 6d 65 6d 62 65 72  20 61 6e 79 20 6f 66 20  |remember any of |
00017ef0  74 68 65 20 64 61 6d 6e  20 74 68 69 6e 67 73 2e  |the damn things.|
00017f00  22 0a 20 20 20 20 20 20  20 20 20 22 22 0a 20 20  |".         "".  |
00017f10  20 20 20 20 20 20 20 22  2d 2d 20 44 6f 72 6f 74  |       "-- Dorot|
00017f20  68 79 20 50 61 72 6b 65  72 22 3b 0a 0a 4e 6f 74  |hy Parker";..Not|
00017f30  65 20 74 68 61 74 20 61  20 73 74 72 69 6e 67 20  |e that a string |
00017f40  6f 66 20 6c 69 6e 65 73  20 69 73 20 67 69 76 65  |of lines is give|
00017f50  6e 20 28 77 69 74 68 6f  75 74 20 69 6e 74 65 72  |n (without inter|
00017f60  76 65 6e 69 6e 67 20 63  6f 6d 6d 61 73 29 20 61  |vening commas) a|
00017f70  6e 64 0a 74 68 61 74 20  61 20 62 6c 61 6e 6b 20  |nd.that a blank |
00017f80  6c 69 6e 65 20 69 73 20  67 69 76 65 6e 20 62 79  |line is given by|
00017f90  20 61 20 6e 75 6c 6c 20  73 74 72 69 6e 67 2e 20  | a null string. |
00017fa0  20 52 65 6d 65 6d 62 65  72 20 74 68 61 74 20 74  | Remember that t|
00017fb0  68 65 20 74 65 78 74 0a  63 61 6e 6e 6f 74 20 62  |he text.cannot b|
00017fc0  65 20 74 6f 6f 20 77 69  64 65 20 6f 72 20 69 74  |e too wide or it|
00017fd0  20 77 69 6c 6c 20 6c 6f  6f 6b 20 61 77 66 75 6c  | will look awful|
00017fe0  20 6f 6e 20 61 20 73 6d  61 6c 6c 20 73 63 72 65  | on a small scre|
00017ff0  65 6e 2e 0a 0a 54 68 65  20 61 75 74 68 6f 72 20  |en...The author |
00018000  74 61 6b 65 73 20 74 68  65 20 76 69 65 77 20 74  |takes the view t|
00018010  68 61 74 20 74 68 69 73  20 64 65 76 69 63 65 20  |hat this device |
00018020  69 73 20 61 6d 75 73 69  6e 67 20 66 6f 72 20 69  |is amusing for i|
00018030  72 72 65 6c 65 76 61 6e  74 0a 71 75 6f 74 61 74  |rrelevant.quotat|
00018040  69 6f 6e 73 20 62 75 74  20 69 72 72 69 74 61 74  |ions but irritat|
00018050  69 6e 67 20 77 68 65 6e  20 69 74 20 63 6f 6e 76  |ing when it conv|
00018060  65 79 73 20 76 69 74 61  6c 20 69 6e 66 6f 72 6d  |eys vital inform|
00018070  61 74 69 6f 6e 20 28 73  75 63 68 20 61 73 2c 0a  |ation (such as,.|
00018080  22 42 65 77 61 72 65 20  6f 66 20 74 68 65 20 44  |"Beware of the D|
00018090  6f 67 22 2c 20 66 6f 72  20 69 6e 73 74 61 6e 63  |og", for instanc|
000180a0  65 29 2e 0a 0a 0a 56 65  72 73 69 6f 6e 2d 35 20  |e)....Version-5 |
000180b0  61 6c 73 6f 20 61 6c 6c  6f 77 73 20 61 6e 20 22  |also allows an "|
000180c0  75 6e 64 6f 22 20 66 65  61 74 75 72 65 20 74 6f  |undo" feature to|
000180d0  20 62 65 20 70 72 6f 67  72 61 6d 6d 65 64 2e 20  | be programmed. |
000180e0  20 53 65 65 20 28 41 34  29 0a 66 6f 72 20 64 65  | See (A4).for de|
000180f0  74 61 69 6c 73 2e 20 20  49 74 20 64 6f 65 73 20  |tails.  It does |
00018100  6e 6f 74 20 70 72 6f 70  65 72 6c 79 20 77 6f 72  |not properly wor|
00018110  6b 20 6f 6e 20 61 6c 6c  20 69 6e 74 65 72 70 72  |k on all interpr|
00018120  65 74 65 72 73 2c 20 62  75 74 20 69 73 0a 77 6f  |eters, but is.wo|
00018130  72 74 68 77 68 69 6c 65  20 65 6e 6f 75 67 68 20  |rthwhile enough |
00018140  74 6f 20 62 65 20 63 6f  64 65 64 20 61 6e 79 77  |to be coded anyw|
00018150  61 79 2e 0a 0a 0a 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ay....----------|
00018160  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000181a0  2d 0a 44 65 73 69 67 6e  65 72 27 73 20 4d 61 6e  |-.Designer's Man|
000181b0  75 61 6c 3a 20 55 73 69  6e 67 20 74 68 65 20 4c  |ual: Using the L|
000181c0  69 62 72 61 72 79 0a 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ibrary.---------|
000181d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00018210  2d 2d 0a 0a 0a 20 20 20  20 20 22 41 6e 64 20 77  |--...     "And w|
00018220  68 61 74 20 77 61 73 20  6f 6e 65 20 74 6f 20 6d  |hat was one to m|
00018230  61 6b 65 20 6f 66 20 74  68 65 20 61 72 72 61 6e  |ake of the arran|
00018240  67 65 6d 65 6e 74 20 6f  66 20 63 6f 76 65 72 65  |gement of covere|
00018250  64 20 77 61 6c 6b 2c 0a  20 20 20 20 20 6c 69 62  |d walk,.     lib|
00018260  72 61 72 79 20 61 6e 64  20 63 6f 6d 6d 75 6e 61  |rary and communa|
00018270  6c 20 72 65 66 65 63 74  6f 72 79 20 77 68 69 63  |l refectory whic|
00018280  68 20 73 65 65 6d 65 64  20 74 6f 20 66 6f 72 6d  |h seemed to form|
00018290  20 61 6e 20 61 6c 6d 6f  73 74 0a 20 20 20 20 20  | an almost.     |
000182a0  69 6e 64 65 70 65 6e 64  65 6e 74 20 65 6e 74 69  |independent enti|
000182b0  74 79 20 77 69 74 68 69  6e 20 74 68 65 20 70 6c  |ty within the pl|
000182c0  61 6e 20 6f 66 20 74 68  65 20 6d 61 75 73 6f 6c  |an of the mausol|
000182d0  65 75 6d 3f 20 20 54 68  65 0a 20 20 20 20 20 65  |eum?  The.     e|
000182e0  78 70 65 63 74 61 6e 74  20 76 69 73 69 74 6f 72  |xpectant visitor|
000182f0  20 77 6f 75 6c 64 20 68  61 76 65 20 62 65 65 6e  | would have been|
00018300  20 64 69 73 61 70 70 6f  69 6e 74 65 64 20 6f 6e  | disappointed on|
00018310  20 65 6e 74 65 72 69 6e  67 20 74 68 69 73 0a 20  | entering this. |
00018320  20 20 20 20 70 61 72 74  20 6f 66 20 74 68 65 20  |    part of the |
00018330  6d 6f 6e 75 6d 65 6e 74  2e 2e 2e 22 0a 0a 20 20  |monument..."..  |
00018340  20 20 20 20 20 20 20 20  28 4c 75 63 69 61 6e 6f  |        (Luciano|
00018350  20 43 61 6e 66 6f 72 61  2c 20 22 54 68 65 20 56  | Canfora, "The V|
00018360  61 6e 69 73 68 65 64 20  4c 69 62 72 61 72 79 22  |anished Library"|
00018370  29 0a 0a 0a 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |)...------------|
00018380  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000183b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0a  |---------------.|
000183c0  44 31 2e 20 20 47 65 74  74 69 6e 67 20 73 74 61  |D1.  Getting sta|
000183d0  72 74 65 64 0a 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |rted.-----------|
000183e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00018420  0a 0a 0a 54 68 65 20 66  69 72 73 74 20 74 68 69  |...The first thi|
00018430  6e 67 20 74 6f 20 74 72  79 20 69 73 20 74 6f 20  |ng to try is to |
00018440  63 6f 6d 70 69 6c 65 20  74 68 65 20 22 48 65 6c  |compile the "Hel|
00018450  6c 6f 20 43 72 75 65 6c  20 57 6f 72 6c 64 22 20  |lo Cruel World" |
00018460  67 61 6d 65 2c 20 61 20  76 65 72 79 0a 73 68 6f  |game, a very.sho|
00018470  72 74 20 74 65 73 74 20  66 69 6c 65 20 67 69 76  |rt test file giv|
00018480  65 6e 20 69 6e 20 41 70  70 65 6e 64 69 78 20 43  |en in Appendix C|
00018490  2e 20 20 49 66 20 74 68  61 74 20 63 6f 6d 70 69  |.  If that compi|
000184a0  6c 65 73 20 61 6e 64 20  72 75 6e 73 20 70 72 6f  |les and runs pro|
000184b0  70 65 72 6c 79 0a 28 70  72 6f 64 75 63 69 6e 67  |perly.(producing|
000184c0  20 61 20 73 68 6f 72 74  20 70 61 67 65 20 6f 66  | a short page of|
000184d0  20 74 65 78 74 2c 20 74  68 65 6e 20 66 69 6e 69  | text, then fini|
000184e0  73 68 69 6e 67 29 2c 20  74 72 79 20 74 68 65 20  |shing), try the |
000184f0  66 6f 6c 6c 6f 77 69 6e  67 3a 0a 0a 0a 20 20 20  |following:...   |
00018500  20 43 6f 6e 73 74 61 6e  74 20 53 74 6f 72 79 20  | Constant Story |
00018510  22 53 48 45 4c 4c 22 3b  0a 20 20 20 20 43 6f 6e  |"SHELL";.    Con|
00018520  73 74 61 6e 74 20 48 65  61 64 6c 69 6e 65 20 22  |stant Headline "|
00018530  5e 41 6e 20 49 6e 74 65  72 61 63 74 69 76 65 20  |^An Interactive |
00018540  53 6b 65 6c 65 74 6f 6e  5e 5c 0a 20 20 20 20 20  |Skeleton^\.     |
00018550  20 20 20 20 20 20 20 20  20 20 20 20 43 6f 70 79  |            Copy|
00018560  72 69 67 68 74 20 28 63  29 20 31 39 39 34 20 62  |right (c) 1994 b|
00018570  79 20 28 79 6f 75 72 20  6e 61 6d 65 20 68 65 72  |y (your name her|
00018580  65 29 2e 5e 22 3b 0a 0a  20 20 20 20 23 69 6e 63  |e).^";..    #inc|
00018590  6c 75 64 65 20 22 50 61  72 73 65 72 22 3b 0a 20  |lude "Parser";. |
000185a0  20 20 20 23 69 6e 63 6c  75 64 65 20 22 56 65 72  |   #include "Ver|
000185b0  62 4c 69 62 22 3b 0a 0a  20 20 20 20 4f 62 6a 65  |bLib";..    Obje|
000185c0  63 74 20 42 6c 61 6e 6b  5f 52 6f 6f 6d 20 22 42  |ct Blank_Room "B|
000185d0  6c 61 6e 6b 20 52 6f 6f  6d 22 0a 20 20 20 20 20  |lank Room".     |
000185e0  20 77 69 74 68 20 64 65  73 63 72 69 70 74 69 6f  | with descriptio|
000185f0  6e 20 22 41 6e 20 65 6d  70 74 79 20 72 6f 6f 6d  |n "An empty room|
00018600  2e 22 0a 20 20 20 20 20  20 68 61 73 20 20 6c 69  |.".      has  li|
00018610  67 68 74 3b 0a 0a 20 20  20 20 5b 20 49 6e 69 74  |ght;..    [ Init|
00018620  69 61 6c 69 73 65 3b 0a  20 20 20 20 20 20 6c 6f  |ialise;.      lo|
00018630  63 61 74 69 6f 6e 3d 72  6f 6f 6d 3b 0a 20 20 20  |cation=room;.   |
00018640  20 20 20 22 5e 5e 5e 5e  5e 57 65 6c 63 6f 6d 65  |   "^^^^^Welcome|
00018650  20 74 6f 20 74 68 65 20  73 68 65 6c 6c 2e 2e 2e  | to the shell...|
00018660  5e 5e 22 3b 0a 20 20 20  20 5d 3b 0a 20 20 20 20  |^^";.    ];.    |
00018670  0a 20 20 20 20 23 69 6e  63 6c 75 64 65 20 22 47  |.    #include "G|
00018680  72 61 6d 6d 61 72 22 3b  0a 20 20 20 20 65 6e 64  |rammar";.    end|
00018690  3b 0a 0a 0a 49 66 20 74  68 69 73 20 63 6f 6d 70  |;...If this comp|
000186a0  69 6c 65 73 2c 20 49 6e  66 6f 72 6d 20 69 73 20  |iles, Inform is |
000186b0  61 6c 6d 6f 73 74 20 63  65 72 74 61 69 6e 6c 79  |almost certainly|
000186c0  20 73 65 74 20 75 70 20  61 6e 64 20 77 6f 72 6b  | set up and work|
000186d0  69 6e 67 20 70 72 6f 70  65 72 6c 79 2e 0a 49 74  |ing properly..It|
000186e0  20 74 61 6b 65 73 20 61  20 73 68 6f 72 74 20 77  | takes a short w|
000186f0  68 69 6c 65 20 74 6f 20  63 6f 6d 70 69 6c 65 2c  |hile to compile,|
00018700  20 62 65 63 61 75 73 65  20 69 74 20 22 69 6e 63  | because it "inc|
00018710  6c 75 64 65 73 22 20 74  68 72 65 65 20 6c 61 72  |ludes" three lar|
00018720  67 65 20 73 74 61 6e 64  61 72 64 0a 66 69 6c 65  |ge standard.file|
00018730  73 2c 20 63 6f 6e 74 61  69 6e 69 6e 67 20 61 20  |s, containing a |
00018740  6c 61 72 67 65 20 61 6d  6f 75 6e 74 20 6f 66 20  |large amount of |
00018750  63 6f 64 65 2e 20 20 54  68 65 73 65 20 61 72 65  |code.  These are|
00018760  3a 0a 0a 20 20 20 20 50  61 72 73 65 72 20 20 20  |:..    Parser   |
00018770  20 20 20 20 20 54 68 65  20 63 6f 72 65 20 6f 66  |     The core of|
00018780  20 74 68 65 20 67 61 6d  65 2c 20 61 6e 64 20 61  | the game, and a|
00018790  20 70 72 6f 70 65 72 20  67 61 6d 65 20 70 61 72  | proper game par|
000187a0  73 65 72 0a 20 20 20 20  56 65 72 62 4c 69 62 20  |ser.    VerbLib |
000187b0  20 20 20 20 20 20 41 20  6c 69 62 72 61 72 79 20  |      A library |
000187c0  6f 66 20 72 6f 75 74 69  6e 65 73 20 66 6f 72 20  |of routines for |
000187d0  67 61 6d 65 20 76 65 72  62 73 20 6c 69 6b 65 20  |game verbs like |
000187e0  22 74 61 6b 65 22 0a 20  20 20 20 47 72 61 6d 6d  |"take".    Gramm|
000187f0  61 72 20 20 20 20 20 20  20 41 20 67 72 61 6d 6d  |ar       A gramm|
00018800  61 72 20 74 61 62 6c 65  20 74 6f 20 64 65 63 6f  |ar table to deco|
00018810  64 65 20 74 68 65 20 70  6c 61 79 65 72 27 73 20  |de the player's |
00018820  69 6e 70 75 74 20 66 72  6f 6d 0a 20 20 0a 54 6f  |input from.  .To|
00018830  67 65 74 68 65 72 2c 20  74 68 65 79 20 6d 61 6b  |gether, they mak|
00018840  65 20 75 70 20 74 68 65  20 22 6c 69 62 72 61 72  |e up the "librar|
00018850  79 22 2e 20 20 54 68 65  79 20 63 61 6e 20 63 65  |y".  They can ce|
00018860  72 74 61 69 6e 6c 79 20  62 65 20 6d 6f 64 69 66  |rtainly be modif|
00018870  69 65 64 20 62 79 0a 70  72 6f 67 72 61 6d 6d 65  |ied by.programme|
00018880  72 73 2c 20 62 75 74 20  68 61 76 65 20 62 65 65  |rs, but have bee|
00018890  6e 20 64 65 73 69 67 6e  65 64 20 69 6e 20 73 75  |n designed in su|
000188a0  63 68 20 61 20 77 61 79  20 61 73 20 74 6f 20 6d  |ch a way as to m|
000188b0  69 6e 69 6d 69 73 65 20  74 68 65 20 6e 65 65 64  |inimise the need|
000188c0  20 66 6f 72 0a 74 68 69  73 2e 20 20 28 54 68 65  | for.this.  (The|
000188d0  20 22 23 69 6e 63 6c 75  64 65 22 73 20 61 72 65  | "#include"s are|
000188e0  20 77 72 69 74 74 65 6e  20 74 68 61 74 20 77 61  | written that wa|
000188f0  79 20 74 6f 20 69 6d 69  74 61 74 65 20 43 2c 20  |y to imitate C, |
00018900  62 75 74 20 74 68 65 79  20 63 6f 75 6c 64 0a 6a  |but they could.j|
00018910  75 73 74 20 62 65 20 77  72 69 74 74 65 6e 20 22  |ust be written "|
00018920  49 6e 63 6c 75 64 65 22  2e 29 0a 0a 41 70 61 72  |Include".)..Apar|
00018930  74 20 66 72 6f 6d 20 74  68 61 74 2c 20 74 68 65  |t from that, the|
00018940  20 63 6f 64 65 20 63 6f  6e 74 61 69 6e 73 3a 0a  | code contains:.|
00018950  0a 20 20 73 74 72 69 6e  67 73 20 67 69 76 69 6e  |.  strings givin|
00018960  67 20 74 68 65 20 6e 61  6d 65 20 6f 66 20 74 68  |g the name of th|
00018970  65 20 67 61 6d 65 2c 20  61 6e 64 20 61 20 63 6f  |e game, and a co|
00018980  70 79 72 69 67 68 74 20  6d 65 73 73 61 67 65 2c  |pyright message,|
00018990  20 74 6f 20 62 65 0a 70  72 69 6e 74 65 64 20 6f  | to be.printed o|
000189a0  75 74 20 61 74 20 74 68  65 20 61 70 70 72 6f 70  |ut at the approp|
000189b0  72 69 61 74 65 20 6d 6f  6d 65 6e 74 73 3b 0a 0a  |riate moments;..|
000189c0  20 20 61 20 72 6f 75 74  69 6e 65 2c 20 63 61 6c  |  a routine, cal|
000189d0  6c 65 64 20 22 49 6e 69  74 69 61 6c 69 73 65 22  |led "Initialise"|
000189e0  2c 20 77 68 69 63 68 20  69 73 20 72 75 6e 20 77  |, which is run w|
000189f0  68 65 6e 20 74 68 65 20  67 61 6d 65 20 62 65 67  |hen the game beg|
00018a00  69 6e 73 2c 20 61 6e 64  0a 73 69 6d 70 6c 79 20  |ins, and.simply |
00018a10  73 65 74 73 20 77 68 65  72 65 20 74 68 65 20 70  |sets where the p|
00018a20  6c 61 79 65 72 20 73 74  61 72 74 73 20 28 69 6e  |layer starts (in|
00018a30  20 74 68 65 20 6f 62 76  69 6f 75 73 20 70 6c 61  | the obvious pla|
00018a40  63 65 21 29 20 61 6e 64  20 70 72 69 6e 74 73 20  |ce!) and prints |
00018a50  61 0a 77 65 6c 63 6f 6d  69 6e 67 20 6d 65 73 73  |a.welcoming mess|
00018a60  61 67 65 3b 0a 0a 20 20  61 6e 20 6f 62 6a 65 63  |age;..  an objec|
00018a70  74 2c 20 74 6f 20 62 65  20 74 68 65 20 6f 6e 6c  |t, to be the onl|
00018a80  79 20 72 6f 6f 6d 20 6f  66 20 74 68 65 20 67 61  |y room of the ga|
00018a90  6d 65 2e 0a 0a 54 68 65  20 22 73 68 65 6c 6c 22  |me...The "shell"|
00018aa0  20 67 61 6d 65 20 69 73  20 76 65 72 79 20 62 6f  | game is very bo|
00018ab0  72 69 6e 67 3a 20 74 68  65 72 65 20 69 73 20 6e  |ring: there is n|
00018ac0  6f 74 68 69 6e 67 20 66  6f 72 20 74 68 65 20 70  |othing for the p|
00018ad0  6c 61 79 65 72 20 74 6f  20 64 6f 20 62 75 74 0a  |layer to do but.|
00018ae0  77 61 69 74 20 61 6e 64  20 71 75 69 74 2e 0a 0a  |wait and quit...|
00018af0  0a 49 6e 20 49 6e 66 6f  72 6d 2c 20 65 76 65 72  |.In Inform, ever|
00018b00  79 74 68 69 6e 67 20 69  73 20 61 6e 20 6f 62 6a  |ything is an obj|
00018b10  65 63 74 3a 20 72 6f 6f  6d 73 2c 20 63 6f 6d 70  |ect: rooms, comp|
00018b20  61 73 73 20 64 69 72 65  63 74 69 6f 6e 73 2c 20  |ass directions, |
00018b30  74 68 69 6e 67 73 20 74  6f 20 62 65 0a 70 69 63  |things to be.pic|
00018b40  6b 65 64 20 75 70 2c 20  73 63 65 6e 65 72 79 20  |ked up, scenery |
00018b50  61 6e 64 20 65 76 65 6e  20 69 6e 74 61 6e 67 69  |and even intangi|
00018b60  62 6c 65 20 74 68 69 6e  67 73 20 6c 69 6b 65 20  |ble things like |
00018b70  6d 69 73 74 2e 20 20 4c  65 74 20 75 73 20 61 64  |mist.  Let us ad|
00018b80  64 0a 73 6f 6d 65 74 68  69 6e 67 2c 20 75 6e 64  |d.something, und|
00018b90  65 72 6e 65 61 74 68 20  74 68 65 20 72 6f 6f 6d  |erneath the room|
00018ba0  27 73 20 64 65 66 69 6e  69 74 69 6f 6e 3a 0a 0a  |'s definition:..|
00018bb0  20 20 20 20 20 4e 65 61  72 62 79 20 63 6f 6e 65  |     Nearby cone|
00018bc0  20 22 67 72 65 65 6e 20  63 6f 6e 65 22 0a 20 20  | "green cone".  |
00018bd0  20 20 20 20 20 77 69 74  68 20 6e 61 6d 65 20 22  |     with name "|
00018be0  67 72 65 65 6e 22 20 22  63 6f 6e 65 22 3b 0a 0a  |green" "cone";..|
00018bf0  28 22 4e 65 61 72 62 79  22 20 6a 75 73 74 20 6d  |("Nearby" just m|
00018c00  65 61 6e 73 20 69 74 27  73 20 61 6e 20 6f 62 6a  |eans it's an obj|
00018c10  65 63 74 20 69 6e 73 69  64 65 20 74 68 65 20 6c  |ect inside the l|
00018c20  61 73 74 20 74 68 69 6e  67 20 64 65 63 6c 61 72  |ast thing declar|
00018c30  65 64 20 61 73 20 61 6e  0a 22 4f 62 6a 65 63 74  |ed as an."Object|
00018c40  22 2c 20 69 6e 20 74 68  69 73 20 63 61 73 65 20  |", in this case |
00018c50  74 68 65 20 42 6c 61 6e  6b 20 52 6f 6f 6d 2e 29  |the Blank Room.)|
00018c60  0a 0a 41 20 67 72 65 65  6e 20 63 6f 6e 65 20 6e  |..A green cone n|
00018c70  6f 77 20 61 70 70 65 61  72 73 20 69 6e 20 74 68  |ow appears in th|
00018c80  65 20 42 6c 61 6e 6b 20  52 6f 6f 6d 2e 20 20 54  |e Blank Room.  T|
00018c90  68 65 20 70 6c 61 79 65  72 20 63 61 6e 20 63 61  |he player can ca|
00018ca0  6c 6c 20 69 74 20 65 69  74 68 65 72 0a 22 67 72  |ll it either."gr|
00018cb0  65 65 6e 20 63 6f 6e 65  22 2c 20 22 63 6f 6e 65  |een cone", "cone|
00018cc0  22 20 6f 72 20 65 76 65  6e 20 22 67 72 65 65 6e  |" or even "green|
00018cd0  22 2e 20 20 49 74 20 63  61 6e 20 62 65 20 74 61  |".  It can be ta|
00018ce0  6b 65 6e 2c 20 64 72 6f  70 70 65 64 2c 20 6c 6f  |ken, dropped, lo|
00018cf0  6f 6b 65 64 20 61 74 2c  0a 6c 6f 6f 6b 65 64 20  |oked at,.looked |
00018d00  75 6e 64 65 72 20 61 6e  64 20 73 6f 20 6f 6e 2e  |under and so on.|
00018d10  0a 0a 54 68 69 73 20 69  73 20 73 74 69 6c 6c 20  |..This is still |
00018d20  72 61 74 68 65 72 20 70  6c 61 69 6e 2e 20 20 45  |rather plain.  E|
00018d30  78 61 6d 69 6e 69 6e 67  20 74 68 65 20 63 6f 6e  |xamining the con|
00018d40  65 20 73 65 65 73 20 22  6e 6f 74 68 69 6e 67 20  |e sees "nothing |
00018d50  73 70 65 63 69 61 6c 20  61 62 6f 75 74 0a 74 68  |special about.th|
00018d60  65 20 67 72 65 65 6e 20  63 6f 6e 65 22 2c 20 66  |e green cone", f|
00018d70  6f 72 20 69 6e 73 74 61  6e 63 65 2e 20 20 53 6f  |or instance.  So|
00018d80  20 77 65 20 6d 69 67 68  74 20 65 78 74 65 6e 64  | we might extend|
00018d90  20 74 68 65 20 64 65 66  69 6e 69 74 69 6f 6e 20  | the definition |
00018da0  62 79 3a 0a 0a 20 20 20  20 20 4e 65 61 72 62 79  |by:..     Nearby|
00018db0  20 63 6f 6e 65 20 22 67  72 65 65 6e 20 63 6f 6e  | cone "green con|
00018dc0  65 22 0a 20 20 20 20 20  20 20 77 69 74 68 20 6e  |e".       with n|
00018dd0  61 6d 65 20 22 67 72 65  65 6e 22 20 22 63 6f 6e  |ame "green" "con|
00018de0  65 22 20 22 65 6d 65 72  61 6c 64 22 2c 0a 20 20  |e" "emerald",.  |
00018df0  20 20 20 20 20 20 20 20  20 20 69 6e 69 74 69 61  |          initia|
00018e00  6c 20 22 4e 65 61 72 62  79 20 69 73 20 61 6e 20  |l "Nearby is an |
00018e10  65 6d 65 72 61 6c 64 20  67 72 65 65 6e 20 63 6f  |emerald green co|
00018e20  6e 65 2c 20 6f 6e 65 20  66 6f 6f 74 20 68 69 67  |ne, one foot hig|
00018e30  68 2e 22 3b 0a 0a 54 68  65 20 22 69 6e 69 74 69  |h.";..The "initi|
00018e40  61 6c 22 20 6d 65 73 73  61 67 65 20 6e 6f 77 20  |al" message now |
00018e50  61 70 70 65 61 72 73 20  77 68 65 6e 20 77 65 20  |appears when we |
00018e60  61 72 72 69 76 65 20 69  6e 20 74 68 65 20 45 6d  |arrive in the Em|
00018e70  70 74 79 20 52 6f 6f 6d  2e 20 20 54 61 6b 69 6e  |pty Room.  Takin|
00018e80  67 0a 74 68 69 6e 67 73  20 61 20 6c 69 74 74 6c  |g.things a littl|
00018e90  65 20 66 75 72 74 68 65  72 2e 2e 2e 0a 0a 20 20  |e further.....  |
00018ea0  20 20 20 4e 65 61 72 62  79 20 63 6f 6e 65 20 22  |   Nearby cone "|
00018eb0  67 72 65 65 6e 20 63 6f  6e 65 22 0a 20 20 20 20  |green cone".    |
00018ec0  20 20 20 77 69 74 68 20  6e 61 6d 65 20 22 67 72  |   with name "gr|
00018ed0  65 65 6e 22 20 22 63 6f  6e 65 22 20 22 65 6d 65  |een" "cone" "eme|
00018ee0  72 61 6c 64 22 20 22 6d  61 72 7a 69 70 61 6e 22  |rald" "marzipan"|
00018ef0  2c 0a 20 20 20 20 20 20  20 20 20 20 20 20 69 6e  |,.            in|
00018f00  69 74 69 61 6c 20 22 4e  65 61 72 62 79 20 69 73  |itial "Nearby is|
00018f10  20 61 6e 20 65 6d 65 72  61 6c 64 20 67 72 65 65  | an emerald gree|
00018f20  6e 20 63 6f 6e 65 2c 20  6f 6e 65 20 66 6f 6f 74  |n cone, one foot|
00018f30  20 68 69 67 68 2e 22 2c  0a 20 20 20 20 20 20 20  | high.",.       |
00018f40  20 20 20 20 20 64 65 73  63 72 69 70 74 69 6f 6e  |     description|
00018f50  20 22 54 68 65 20 63 6f  6e 65 20 73 65 65 6d 73  | "The cone seems|
00018f60  20 74 6f 20 62 65 20 6d  61 64 65 20 6f 66 20 65  | to be made of e|
00018f70  6d 65 72 61 6c 64 2d 63  6f 6c 6f 75 72 65 64 20  |merald-coloured |
00018f80  5c 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |\.              |
00018f90  20 20 20 20 20 20 20 20  20 20 20 6d 61 72 7a 69  |           marzi|
00018fa0  70 61 6e 2e 22 0a 20 20  20 20 20 20 20 68 61 73  |pan.".       has|
00018fb0  20 20 65 64 69 62 6c 65  3b 0a 0a 28 4e 6f 74 65  |  edible;..(Note|
00018fc0  20 74 68 61 74 20 74 68  65 20 64 65 73 63 72 69  | that the descri|
00018fd0  70 74 69 6f 6e 20 69 73  20 73 70 6c 69 74 20 61  |ption is split a|
00018fe0  63 72 6f 73 73 20 74 77  6f 20 6c 69 6e 65 73 3a  |cross two lines:|
00018ff0  20 74 68 65 20 5c 20 6d  61 6b 65 73 20 74 68 65  | the \ makes the|
00019000  20 6d 65 73 73 61 67 65  0a 63 6f 6d 65 20 6f 75  | message.come ou|
00019010  74 20 61 73 20 6f 6e 65  20 73 65 6e 74 65 6e 63  |t as one sentenc|
00019020  65 20 77 69 74 68 6f 75  74 20 61 20 68 75 67 65  |e without a huge|
00019030  20 73 70 61 63 65 2e 29  20 20 4e 6f 77 20 69 66  | space.)  Now if|
00019040  20 77 65 20 65 78 61 6d  69 6e 65 20 74 68 65 0a  | we examine the.|
00019050  63 6f 6e 65 2c 20 77 65  20 67 65 74 20 69 74 73  |cone, we get its|
00019060  20 73 75 72 70 72 69 73  69 6e 67 20 22 64 65 73  | surprising "des|
00019070  63 72 69 70 74 69 6f 6e  22 2e 20 20 41 6c 73 6f  |cription".  Also|
00019080  2c 20 74 68 65 20 63 6f  6e 65 20 6e 6f 74 20 6f  |, the cone not o|
00019090  6e 6c 79 20 68 61 73 0a  22 70 72 6f 70 65 72 74  |nly has."propert|
000190a0  69 65 73 22 20 28 74 68  65 20 76 61 6c 75 65 73  |ies" (the values|
000190b0  20 6f 66 20 22 6e 61 6d  65 22 2c 20 22 64 65 73  | of "name", "des|
000190c0  63 72 69 70 74 69 6f 6e  22 20 61 6e 64 20 22 69  |cription" and "i|
000190d0  6e 69 74 69 61 6c 22 29  20 62 75 74 20 6e 6f 77  |nitial") but now|
000190e0  0a 61 6c 73 6f 20 61 6e  20 22 61 74 74 72 69 62  |.also an "attrib|
000190f0  75 74 65 22 20 28 77 68  69 63 68 20 63 61 6e 20  |ute" (which can |
00019100  6f 6e 6c 79 20 62 65 20  68 65 6c 64 20 6f 72 20  |only be held or |
00019110  6e 6f 74 20 68 65 6c 64  29 2e 20 20 41 6e 64 20  |not held).  And |
00019120  74 68 65 20 70 6c 61 79  65 72 0a 63 61 6e 20 6e  |the player.can n|
00019130  6f 77 20 65 61 74 20 74  68 65 20 63 6f 6e 65 2e  |ow eat the cone.|
00019140  0a 0a 54 68 65 72 65 20  73 74 69 6c 6c 20 69 73  |..There still is|
00019150  6e 27 74 20 61 6e 79 20  61 63 74 75 61 6c 20 63  |n't any actual c|
00019160  6f 64 65 20 63 6f 6e 6e  65 63 74 65 64 20 77 69  |ode connected wi|
00019170  74 68 20 74 68 65 20 63  6f 6e 65 2e 20 20 57 65  |th the cone.  We|
00019180  20 63 6f 75 6c 64 20 67  6f 0a 66 75 72 74 68 65  | could go.furthe|
00019190  72 20 77 69 74 68 6f 75  74 20 64 6f 69 6e 67 20  |r without doing |
000191a0  61 6e 79 20 68 6f 6e 65  73 74 20 70 72 6f 67 72  |any honest progr|
000191b0  61 6d 6d 69 6e 67 2c 20  62 75 74 20 69 6e 73 74  |amming, but inst|
000191c0  65 61 64 3a 0a 0a 20 20  20 20 20 4e 65 61 72 62  |ead:..     Nearb|
000191d0  79 20 63 6f 6e 65 20 22  67 72 65 65 6e 20 63 6f  |y cone "green co|
000191e0  6e 65 22 0a 20 20 20 20  20 20 20 77 69 74 68 20  |ne".       with |
000191f0  6e 61 6d 65 20 22 67 72  65 65 6e 22 20 22 63 6f  |name "green" "co|
00019200  6e 65 22 20 22 65 6d 65  72 61 6c 64 22 20 22 6d  |ne" "emerald" "m|
00019210  61 72 7a 69 70 61 6e 22  2c 0a 20 20 20 20 20 20  |arzipan",.      |
00019220  20 20 20 20 20 20 69 6e  69 74 69 61 6c 20 22 4e  |      initial "N|
00019230  65 61 72 62 79 20 69 73  20 61 6e 20 65 6d 65 72  |earby is an emer|
00019240  61 6c 64 20 67 72 65 65  6e 20 63 6f 6e 65 2c 20  |ald green cone, |
00019250  6f 6e 65 20 66 6f 6f 74  20 68 69 67 68 2e 22 2c  |one foot high.",|
00019260  0a 20 20 20 20 20 20 20  20 20 20 20 20 64 65 73  |.            des|
00019270  63 72 69 70 74 69 6f 6e  20 22 54 68 65 20 63 6f  |cription "The co|
00019280  6e 65 20 73 65 65 6d 73  20 74 6f 20 62 65 20 6d  |ne seems to be m|
00019290  61 64 65 20 6f 66 20 65  6d 65 72 61 6c 64 2d 63  |ade of emerald-c|
000192a0  6f 6c 6f 75 72 65 64 20  5c 0a 20 20 20 20 20 20  |oloured \.      |
000192b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000192c0  20 20 20 6d 61 72 7a 69  70 61 6e 2e 22 2c 0a 20  |   marzipan.",. |
000192d0  20 20 20 20 20 20 20 20  20 20 20 61 66 74 65 72  |           after|
000192e0  0a 20 20 20 20 20 20 20  20 20 20 20 20 5b 3b 20  |.            [; |
000192f0  54 61 6b 65 3a 20 22 54  61 6b 65 6e 2e 20 20 28  |Take: "Taken.  (|
00019300  59 6f 75 72 20 68 61 6e  64 73 20 61 72 65 20 73  |Your hands are s|
00019310  6d 65 61 72 65 64 20 77  69 74 68 20 6d 61 72 7a  |meared with marz|
00019320  69 70 61 6e 2e 29 22 3b  0a 20 20 20 20 20 20 20  |ipan.)";.       |
00019330  20 20 20 20 20 20 20 20  44 72 6f 70 3a 20 22 54  |        Drop: "T|
00019340  68 65 20 63 6f 6e 65 20  64 72 6f 70 73 20 74 6f  |he cone drops to|
00019350  20 74 68 65 20 66 6c 6f  6f 72 20 61 6e 64 20 73  | the floor and s|
00019360  61 67 73 20 61 20 6c 69  74 74 6c 65 2e 22 3b 0a  |ags a little.";.|
00019370  20 20 20 20 20 20 20 20  20 20 20 20 5d 2c 0a 20  |            ],. |
00019380  20 20 20 20 20 20 68 61  73 20 20 65 64 69 62 6c  |      has  edibl|
00019390  65 3b 0a 0a 54 68 65 20  70 72 6f 70 65 72 74 79  |e;..The property|
000193a0  20 22 61 66 74 65 72 22  20 64 6f 65 73 6e 27 74  | "after" doesn't|
000193b0  20 6a 75 73 74 20 68 61  76 65 20 61 20 73 74 72  | just have a str|
000193c0  69 6e 67 20 66 6f 72 20  61 20 76 61 6c 75 65 3a  |ing for a value:|
000193d0  20 69 74 20 68 61 73 20  61 0a 72 6f 75 74 69 6e  | it has a.routin|
000193e0  65 20 6f 66 20 69 74 73  20 6f 77 6e 2e 20 20 28  |e of its own.  (|
000193f0  54 68 69 73 20 69 73 20  6d 75 63 68 20 6c 69 6b  |This is much lik|
00019400  65 20 74 68 65 20 22 49  6e 69 74 69 61 6c 69 73  |e the "Initialis|
00019410  65 22 20 72 6f 75 74 69  6e 65 2c 20 65 78 63 65  |e" routine, exce|
00019420  70 74 0a 74 68 61 74 20  69 74 20 64 6f 65 73 6e  |pt.that it doesn|
00019430  27 74 20 68 61 76 65 20  61 20 6e 61 6d 65 3a 20  |'t have a name: |
00019440  69 74 20 64 6f 65 73 6e  27 74 20 6e 65 65 64 20  |it doesn't need |
00019450  6f 6e 65 2e 29 20 20 4e  6f 77 20 77 68 61 74 20  |one.)  Now what |
00019460  68 61 70 70 65 6e 73 20  69 73 0a 74 68 61 74 20  |happens is.that |
00019470  77 68 65 6e 20 61 6e 20  61 63 74 69 6f 6e 20 68  |when an action h|
00019480  61 70 70 65 6e 73 20 74  6f 20 74 68 65 20 63 6f  |appens to the co|
00019490  6e 65 2c 20 74 68 65 20  22 61 66 74 65 72 22 20  |ne, the "after" |
000194a0  72 6f 75 74 69 6e 65 20  69 73 20 63 61 6c 6c 65  |routine is calle|
000194b0  64 0a 74 6f 20 61 70 70  6c 79 20 61 6e 79 20 73  |d.to apply any s|
000194c0  70 65 63 69 61 6c 20 72  75 6c 65 73 20 61 62 6f  |pecial rules abo|
000194d0  75 74 20 74 68 65 20 63  6f 6e 65 2e 20 20 49 6e  |ut the cone.  In|
000194e0  20 74 68 69 73 20 63 61  73 65 2c 20 54 61 6b 65  | this case, Take|
000194f0  20 61 6e 64 20 44 72 6f  70 0a 61 72 65 20 74 68  | and Drop.are th|
00019500  65 20 6f 6e 6c 79 20 61  63 74 69 6f 6e 73 20 74  |e only actions t|
00019510  61 6d 70 65 72 65 64 20  77 69 74 68 3a 20 61 6e  |ampered with: an|
00019520  64 20 74 68 65 20 6f 6e  6c 79 20 65 66 66 65 63  |d the only effec|
00019530  74 20 69 73 20 74 68 61  74 20 74 68 65 0a 75 73  |t is that the.us|
00019540  75 61 6c 20 6d 65 73 73  61 67 65 73 20 28 22 54  |ual messages ("T|
00019550  61 6b 65 6e 2e 22 20 22  44 72 6f 70 70 65 64 2e  |aken." "Dropped.|
00019560  22 29 20 61 72 65 20 72  65 70 6c 61 63 65 64 2e  |") are replaced.|
00019570  0a 0a 53 74 69 6c 6c 2c  20 74 68 65 20 63 6f 6e  |..Still, the con|
00019580  65 20 64 6f 65 73 6e 27  74 20 61 63 74 75 61 6c  |e doesn't actual|
00019590  6c 79 20 64 6f 20 61 6e  79 74 68 69 6e 67 21 20  |ly do anything! |
000195a0  20 53 6f 20 68 65 72 65  20 69 74 20 69 73 20 77  | So here it is w|
000195b0  69 74 68 20 61 0a 28 63  6f 6d 70 6c 65 74 65 6c  |ith a.(completel|
000195c0  79 20 75 6e 66 61 69 72  29 20 70 75 7a 7a 6c 65  |y unfair) puzzle|
000195d0  20 61 64 64 65 64 3a 0a  0a 20 20 20 20 20 4e 65  | added:..     Ne|
000195e0  61 72 62 79 20 63 6f 6e  65 20 22 67 72 65 65 6e  |arby cone "green|
000195f0  20 63 6f 6e 65 22 0a 20  20 20 20 20 20 20 77 69  | cone".       wi|
00019600  74 68 20 6e 61 6d 65 20  22 67 72 65 65 6e 22 20  |th name "green" |
00019610  22 63 6f 6e 65 22 20 22  65 6d 65 72 61 6c 64 22  |"cone" "emerald"|
00019620  20 22 6d 61 72 7a 69 70  61 6e 22 2c 0a 20 20 20  | "marzipan",.   |
00019630  20 20 20 20 20 20 20 20  20 69 6e 69 74 69 61 6c  |         initial|
00019640  20 22 4e 65 61 72 62 79  20 69 73 20 61 6e 20 65  | "Nearby is an e|
00019650  6d 65 72 61 6c 64 20 67  72 65 65 6e 20 63 6f 6e  |merald green con|
00019660  65 2c 20 6f 6e 65 20 66  6f 6f 74 20 68 69 67 68  |e, one foot high|
00019670  2e 22 2c 0a 20 20 20 20  20 20 20 20 20 20 20 20  |.",.            |
00019680  64 65 73 63 72 69 70 74  69 6f 6e 20 22 54 68 65  |description "The|
00019690  20 63 6f 6e 65 20 73 65  65 6d 73 20 74 6f 20 62  | cone seems to b|
000196a0  65 20 6d 61 64 65 20 6f  66 20 65 6d 65 72 61 6c  |e made of emeral|
000196b0  64 2d 63 6f 6c 6f 75 72  65 64 20 5c 0a 20 20 20  |d-coloured \.   |
000196c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000196d0  20 20 20 20 20 20 6d 61  72 7a 69 70 61 6e 2e 22  |      marzipan."|
000196e0  2c 0a 20 20 20 20 20 20  20 20 20 20 20 20 62 65  |,.            be|
000196f0  66 6f 72 65 0a 20 20 20  20 20 20 20 20 20 20 20  |fore.           |
00019700  20 5b 3b 20 45 61 74 3a  20 69 66 20 28 72 61 6e  | [; Eat: if (ran|
00019710  64 6f 6d 28 31 30 30 29  20 3c 3d 20 33 30 29 0a  |dom(100) <= 30).|
00019720  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00019730  20 20 20 20 7b 20 20 20  64 65 61 64 66 6c 61 67  |    {   deadflag|
00019740  20 3d 20 31 3b 0a 20 20  20 20 20 20 20 20 20 20  | = 1;.          |
00019750  20 20 20 20 20 20 20 20  20 20 20 20 20 20 22 55  |              "U|
00019760  6e 66 6f 72 74 75 6e 61  74 65 6c 79 2c 20 79 6f  |nfortunately, yo|
00019770  75 20 73 65 65 6d 20 74  6f 20 62 65 20 61 6c 6c  |u seem to be all|
00019780  65 72 67 69 63 20 74 6f  20 61 6c 6d 6f 6e 64 73  |ergic to almonds|
00019790  2e 22 3b 0a 20 20 20 20  20 20 20 20 20 20 20 20  |.";.            |
000197a0  20 20 20 20 20 20 20 20  7d 0a 20 20 20 20 20 20  |        }.      |
000197b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 22 59  |              "Y|
000197c0  6f 75 20 6e 69 62 62 6c  65 20 61 74 20 61 20 63  |ou nibble at a c|
000197d0  6f 72 6e 65 72 20 6f 66  20 74 68 65 20 63 6f 6e  |orner of the con|
000197e0  65 2e 22 3b 0a 20 20 20  20 20 20 20 20 20 20 20  |e.";.           |
000197f0  20 5d 2c 0a 20 20 20 20  20 20 20 20 20 20 20 20  | ],.            |
00019800  61 66 74 65 72 0a 20 20  20 20 20 20 20 20 20 20  |after.          |
00019810  20 20 5b 3b 20 54 61 6b  65 3a 20 22 54 61 6b 65  |  [; Take: "Take|
00019820  6e 2e 20 20 28 59 6f 75  72 20 68 61 6e 64 73 20  |n.  (Your hands |
00019830  61 72 65 20 73 6d 65 61  72 65 64 20 77 69 74 68  |are smeared with|
00019840  20 6d 61 72 7a 69 70 61  6e 2e 29 22 3b 0a 20 20  | marzipan.)";.  |
00019850  20 20 20 20 20 20 20 20  20 20 20 20 20 44 72 6f  |             Dro|
00019860  70 3a 20 22 54 68 65 20  63 6f 6e 65 20 64 72 6f  |p: "The cone dro|
00019870  70 73 20 74 6f 20 74 68  65 20 66 6c 6f 6f 72 20  |ps to the floor |
00019880  61 6e 64 20 73 61 67 73  20 61 20 6c 69 74 74 6c  |and sags a littl|
00019890  65 2e 22 3b 0a 20 20 20  20 20 20 20 20 20 20 20  |e.";.           |
000198a0  20 5d 2c 0a 20 20 20 20  20 20 20 68 61 73 20 20  | ],.       has  |
000198b0  65 64 69 62 6c 65 3b 0a  0a 54 68 65 20 22 62 65  |edible;..The "be|
000198c0  66 6f 72 65 22 20 72 6f  75 74 69 6e 65 20 69 73  |fore" routine is|
000198d0  20 63 61 6c 6c 65 64 20  62 65 66 6f 72 65 20 74  | called before t|
000198e0  68 65 20 70 6c 61 79 65  72 27 73 20 69 6e 74 65  |he player's inte|
000198f0  6e 64 65 64 20 61 63 74  69 6f 6e 20 74 61 6b 65  |nded action take|
00019900  73 0a 70 6c 61 63 65 2e  20 20 53 6f 20 77 68 65  |s.place.  So whe|
00019910  6e 20 74 68 65 20 70 6c  61 79 65 72 20 74 72 69  |n the player tri|
00019920  65 73 20 74 79 70 69 6e  67 2c 20 73 61 79 2c 20  |es typing, say, |
00019930  22 65 61 74 20 74 68 65  20 63 6f 6e 65 22 2c 20  |"eat the cone", |
00019940  77 68 61 74 20 68 61 70  70 65 6e 73 0a 69 73 3a  |what happens.is:|
00019950  20 69 6e 20 33 30 25 20  6f 66 20 63 61 73 65 73  | in 30% of cases|
00019960  2c 20 73 68 65 20 64 69  65 73 20 6f 66 20 61 6c  |, she dies of al|
00019970  6d 6f 6e 64 20 70 6f 69  73 6f 6e 69 6e 67 3b 20  |mond poisoning; |
00019980  61 6e 64 20 69 6e 20 74  68 65 20 6f 74 68 65 72  |and in the other|
00019990  20 37 30 25 2c 0a 73 68  65 20 73 69 6d 70 6c 79  | 70%,.she simply|
000199a0  20 6e 69 62 62 6c 65 73  20 61 20 63 6f 72 6e 65  | nibbles a corne|
000199b0  72 20 6f 66 20 74 68 65  20 63 6f 6e 65 20 28 77  |r of the cone (w|
000199c0  69 74 68 6f 75 74 20 61  63 74 75 61 6c 6c 79 20  |ithout actually |
000199d0  63 6f 6e 73 75 6d 69 6e  67 20 69 74 0a 63 6f 6d  |consuming it.com|
000199e0  70 6c 65 74 65 6c 79 29  2e 0a 0a 22 64 65 61 64  |pletely)..."dead|
000199f0  66 6c 61 67 22 20 69 73  20 61 20 67 6c 6f 62 61  |flag" is a globa|
00019a00  6c 20 76 61 72 69 61 62  6c 65 2c 20 77 68 6f 73  |l variable, whos|
00019a10  65 20 76 61 6c 75 65 20  64 6f 65 73 20 6e 6f 74  |e value does not|
00019a20  20 62 65 6c 6f 6e 67 20  74 6f 20 61 6e 79 20 70  | belong to any p|
00019a30  61 72 74 69 63 75 6c 61  72 0a 6f 62 6a 65 63 74  |articular.object|
00019a40  20 28 6f 72 20 72 6f 75  74 69 6e 65 29 2e 20 20  | (or routine).  |
00019a50  49 74 20 69 73 20 64 65  66 69 6e 65 64 20 73 6f  |It is defined so|
00019a60  6d 65 77 68 65 72 65 20  69 6e 20 74 68 65 20 64  |mewhere in the d|
00019a70  65 70 74 68 73 20 6f 66  20 74 68 65 20 6c 69 62  |epths of the lib|
00019a80  72 61 72 79 3a 0a 69 74  27 73 20 75 73 75 61 6c  |rary:.it's usual|
00019a90  6c 79 20 30 3b 20 73 65  74 74 69 6e 67 20 69 74  |ly 0; setting it|
00019aa0  20 74 6f 20 31 20 63 61  75 73 65 73 20 74 68 65  | to 1 causes the|
00019ab0  20 67 61 6d 65 20 74 6f  20 62 65 20 6c 6f 73 74  | game to be lost|
00019ac0  2e 0a 0a 49 6e 20 65 69  74 68 65 72 20 63 61 73  |...In either cas|
00019ad0  65 2c 20 74 68 65 20 75  73 75 61 6c 20 72 75 6c  |e, the usual rul|
00019ae0  65 20 66 6f 72 20 74 68  65 20 45 61 74 20 61 63  |e for the Eat ac|
00019af0  74 69 6f 6e 20 69 73 20  6e 65 76 65 72 20 61 70  |tion is never ap|
00019b00  70 6c 69 65 64 2e 20 20  54 68 69 73 20 69 73 0a  |plied.  This is.|
00019b10  62 65 63 61 75 73 65 2c  20 61 6c 74 68 6f 75 67  |because, althoug|
00019b20  68 20 69 74 20 69 73 6e  27 74 20 6f 62 76 69 6f  |h it isn't obvio|
00019b30  75 73 20 66 72 6f 6d 20  74 68 65 20 63 6f 64 65  |us from the code|
00019b40  2c 20 74 68 65 20 72 6f  75 74 69 6e 65 20 61 63  |, the routine ac|
00019b50  74 75 61 6c 6c 79 0a 72  65 74 75 72 6e 73 20 61  |tually.returns a|
00019b60  20 76 61 6c 75 65 2c 20  74 72 75 65 20 6f 72 20  | value, true or |
00019b70  66 61 6c 73 65 2e 20 20  41 6e 64 20 74 68 65 20  |false.  And the |
00019b80  63 6f 6d 6d 61 6e 64 0a  0a 20 20 20 20 22 55 6e  |command..    "Un|
00019b90  66 6f 72 74 75 6e 61 74  65 6c 79 2c 20 79 6f 75  |fortunately, you|
00019ba0  20 73 65 65 6d 20 74 6f  20 62 65 20 61 6c 6c 65  | seem to be alle|
00019bb0  72 67 69 63 20 74 6f 20  61 6c 6d 6f 6e 64 73 2e  |rgic to almonds.|
00019bc0  22 3b 0a 0a 6e 6f 74 20  6f 6e 6c 79 20 70 72 69  |";..not only pri|
00019bd0  6e 74 73 20 74 68 65 20  6d 65 73 73 61 67 65 20  |nts the message |
00019be0  28 74 6f 67 65 74 68 65  72 20 77 69 74 68 20 61  |(together with a|
00019bf0  20 63 61 72 72 69 61 67  65 20 72 65 74 75 72 6e  | carriage return|
00019c00  29 2c 20 62 75 74 20 61  6c 73 6f 0a 72 65 74 75  |), but also.retu|
00019c10  72 6e 73 20 74 72 75 65  20 66 72 6f 6d 20 74 68  |rns true from th|
00019c20  65 20 22 62 65 66 6f 72  65 22 20 72 6f 75 74 69  |e "before" routi|
00019c30  6e 65 2e 20 20 53 69 6e  63 65 20 74 68 65 20 72  |ne.  Since the r|
00019c40  6f 75 74 69 6e 65 20 6e  6f 72 6d 61 6c 6c 79 20  |outine normally |
00019c50  72 65 74 75 72 6e 73 0a  66 61 6c 73 65 2c 20 74  |returns.false, t|
00019c60  68 65 20 6c 69 62 72 61  72 79 20 6b 6e 6f 77 73  |he library knows|
00019c70  20 74 68 61 74 20 73 6f  6d 65 74 68 69 6e 67 20  | that something |
00019c80  68 61 73 20 68 61 70 70  65 6e 65 64 20 74 6f 20  |has happened to |
00019c90  69 6e 74 65 72 72 75 70  74 20 74 68 65 20 75 73  |interrupt the us|
00019ca0  75 61 6c 0a 72 75 6c 65  73 20 6f 66 20 74 68 65  |ual.rules of the|
00019cb0  20 67 61 6d 65 2e 0a 0a  0a 4f 6e 65 20 6d 6f 72  | game....One mor|
00019cc0  65 20 65 78 74 65 6e 73  69 6f 6e 3a 0a 0a 20 20  |e extension:..  |
00019cd0  20 20 20 4e 65 61 72 62  79 20 63 6f 6e 65 20 22  |   Nearby cone "|
00019ce0  67 72 65 65 6e 20 63 6f  6e 65 22 0a 20 20 20 20  |green cone".    |
00019cf0  20 20 20 77 69 74 68 20  6e 61 6d 65 20 22 67 72  |   with name "gr|
00019d00  65 65 6e 22 20 22 63 6f  6e 65 22 20 22 65 6d 65  |een" "cone" "eme|
00019d10  72 61 6c 64 22 20 22 6d  61 72 7a 69 70 61 6e 22  |rald" "marzipan"|
00019d20  2c 0a 20 20 20 20 20 20  20 20 20 20 20 20 64 65  |,.            de|
00019d30  73 63 72 69 62 65 0a 20  20 20 20 20 20 20 20 20  |scribe.         |
00019d40  20 20 20 5b 3b 20 69 66  20 28 63 6f 6e 65 20 68  |   [; if (cone h|
00019d50  61 73 20 6d 6f 76 65 64  29 0a 20 20 20 20 20 20  |as moved).      |
00019d60  20 20 20 20 20 20 20 20  20 20 20 20 20 22 41 20  |             "A |
00019d70  6d 69 73 73 68 61 70 65  6e 20 63 6f 6e 65 20 6f  |misshapen cone o|
00019d80  66 20 67 72 65 65 6e 20  6d 61 72 7a 69 70 61 6e  |f green marzipan|
00019d90  20 73 69 74 73 20 68 65  72 65 2e 22 3b 0a 20 20  | sits here.";.  |
00019da0  20 20 20 20 20 20 20 20  20 20 20 20 20 22 4e 65  |             "Ne|
00019db0  61 72 62 79 20 69 73 20  61 6e 20 65 6d 65 72 61  |arby is an emera|
00019dc0  6c 64 20 67 72 65 65 6e  20 63 6f 6e 65 2c 20 6f  |ld green cone, o|
00019dd0  6e 65 20 66 6f 6f 74 20  68 69 67 68 2e 22 3b 0a  |ne foot high.";.|
00019de0  20 20 20 20 20 20 20 20  20 20 20 20 5d 2c 0a 20  |            ],. |
00019df0  20 20 20 20 20 20 20 20  20 20 20 64 65 73 63 72  |           descr|
00019e00  69 70 74 69 6f 6e 20 22  54 68 65 20 63 6f 6e 65  |iption "The cone|
00019e10  20 73 65 65 6d 73 20 74  6f 20 62 65 20 6d 61 64  | seems to be mad|
00019e20  65 20 6f 66 20 65 6d 65  72 61 6c 64 2d 63 6f 6c  |e of emerald-col|
00019e30  6f 75 72 65 64 20 5c 0a  20 20 20 20 20 20 20 20  |oured \.        |
00019e40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00019e50  20 6d 61 72 7a 69 70 61  6e 2e 22 2c 0a 20 20 20  | marzipan.",.   |
00019e60  20 20 20 20 20 20 20 20  20 62 65 66 6f 72 65 0a  |         before.|
00019e70  20 20 20 20 20 20 20 20  20 20 20 20 5b 3b 20 45  |            [; E|
00019e80  61 74 3a 20 69 66 20 28  72 61 6e 64 6f 6d 28 31  |at: if (random(1|
00019e90  30 30 29 20 3c 3d 20 33  30 29 0a 20 20 20 20 20  |00) <= 30).     |
00019ea0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 7b  |               {|
00019eb0  20 20 20 64 65 61 64 66  6c 61 67 20 3d 20 31 3b  |   deadflag = 1;|
00019ec0  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00019ed0  20 20 20 20 20 20 20 20  20 22 55 6e 66 6f 72 74  |         "Unfort|
00019ee0  75 6e 61 74 65 6c 79 2c  20 79 6f 75 20 73 65 65  |unately, you see|
00019ef0  6d 20 74 6f 20 62 65 20  61 6c 6c 65 72 67 69 63  |m to be allergic|
00019f00  20 74 6f 20 61 6c 6d 6f  6e 64 73 2e 22 3b 0a 20  | to almonds.";. |
00019f10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00019f20  20 20 20 7d 0a 20 20 20  20 20 20 20 20 20 20 20  |   }.           |
00019f30  20 20 20 20 20 20 20 20  20 22 59 6f 75 20 6e 69  |         "You ni|
00019f40  62 62 6c 65 20 61 74 20  61 20 63 6f 72 6e 65 72  |bble at a corner|
00019f50  20 6f 66 20 74 68 65 20  63 6f 6e 65 2e 22 3b 0a  | of the cone.";.|
00019f60  20 20 20 20 20 20 20 20  20 20 20 20 5d 2c 0a 20  |            ],. |
00019f70  20 20 20 20 20 20 20 20  20 20 20 61 66 74 65 72  |           after|
00019f80  0a 20 20 20 20 20 20 20  20 20 20 20 20 5b 3b 20  |.            [; |
00019f90  54 61 6b 65 3a 20 22 54  61 6b 65 6e 2e 20 20 28  |Take: "Taken.  (|
00019fa0  59 6f 75 72 20 68 61 6e  64 73 20 61 72 65 20 73  |Your hands are s|
00019fb0  6d 65 61 72 65 64 20 77  69 74 68 20 6d 61 72 7a  |meared with marz|
00019fc0  69 70 61 6e 2e 29 22 3b  0a 20 20 20 20 20 20 20  |ipan.)";.       |
00019fd0  20 20 20 20 20 20 20 20  44 72 6f 70 3a 20 63 6f  |        Drop: co|
00019fe0  6e 65 2e 64 65 73 63 72  69 70 74 69 6f 6e 20 3d  |ne.description =|
00019ff0  20 22 54 68 65 20 63 6f  6e 65 20 69 73 20 61 20  | "The cone is a |
0001a000  76 61 67 75 65 20 67 72  65 65 6e 20 6d 65 73 73  |vague green mess|
0001a010  2e 22 3b 0a 20 20 20 20  20 20 20 20 20 20 20 20  |.";.            |
0001a020  20 20 20 20 20 20 20 20  20 22 54 68 65 20 63 6f  |         "The co|
0001a030  6e 65 20 64 72 6f 70 73  20 74 6f 20 74 68 65 20  |ne drops to the |
0001a040  66 6c 6f 6f 72 20 61 6e  64 20 73 61 67 73 20 61  |floor and sags a|
0001a050  20 6c 69 74 74 6c 65 2e  22 3b 0a 20 20 20 20 20  | little.";.     |
0001a060  20 20 20 20 20 20 20 5d  2c 0a 20 20 20 20 20 20  |       ],.      |
0001a070  20 68 61 73 20 20 65 64  69 62 6c 65 3b 0a 0a 4e  | has  edible;..N|
0001a080  6f 77 20 74 68 65 20 6f  6c 64 20 22 69 6e 69 74  |ow the old "init|
0001a090  69 61 6c 22 20 6d 65 73  73 61 67 65 20 68 61 73  |ial" message has|
0001a0a0  20 67 6f 6e 65 2e 20 20  49 6e 73 74 65 61 64 2c  | gone.  Instead,|
0001a0b0  20 77 65 20 68 61 76 65  20 70 72 6f 76 69 64 65  | we have provide|
0001a0c0  64 20 61 0a 22 64 65 73  63 72 69 62 65 22 20 72  |d a."describe" r|
0001a0d0  6f 75 74 69 6e 65 2e 20  20 57 68 65 6e 65 76 65  |outine.  Wheneve|
0001a0e0  72 20 74 68 65 20 67 61  6d 65 20 68 61 73 20 74  |r the game has t|
0001a0f0  6f 20 64 65 73 63 72 69  62 65 20 74 68 65 20 63  |o describe the c|
0001a100  6f 6e 65 20 69 6e 20 74  68 65 0a 64 65 73 63 72  |one in the.descr|
0001a110  69 70 74 69 6f 6e 20 6f  66 20 61 20 70 6c 61 63  |iption of a plac|
0001a120  65 2c 20 69 74 20 77 69  6c 6c 20 63 61 6c 6c 20  |e, it will call |
0001a130  74 68 69 73 20 72 6f 75  74 69 6e 65 2e 20 20 54  |this routine.  T|
0001a140  68 65 20 22 6d 6f 76 65  64 22 20 61 74 74 72 69  |he "moved" attri|
0001a150  62 75 74 65 0a 69 73 20  68 65 6c 64 20 6f 6e 6c  |bute.is held onl|
0001a160  79 20 62 79 20 61 6e 20  6f 62 6a 65 63 74 20 77  |y by an object w|
0001a170  68 69 63 68 20 68 61 73  20 61 74 20 73 6f 6d 65  |hich has at some|
0001a180  20 74 69 6d 65 20 69 6e  20 74 68 65 20 70 61 73  | time in the pas|
0001a190  74 20 62 65 65 6e 20 74  61 6b 65 6e 2e 20 20 53  |t been taken.  S|
0001a1a0  6f 0a 74 68 65 20 63 6f  6e 65 20 69 73 20 6e 6f  |o.the cone is no|
0001a1b0  77 20 70 65 72 66 65 63  74 20 61 6e 64 20 75 6e  |w perfect and un|
0001a1c0  74 6f 75 63 68 65 64 20  75 6e 74 69 6c 20 74 61  |touched until ta|
0001a1d0  6b 65 6e 20 61 6e 64 20  64 72 6f 70 70 65 64 2c  |ken and dropped,|
0001a1e0  20 77 68 65 72 65 75 70  6f 6e 0a 69 74 20 62 65  | whereupon.it be|
0001a1f0  63 6f 6d 65 73 20 6d 69  73 73 68 61 70 65 6e 2e  |comes misshapen.|
0001a200  20 20 41 6c 73 6f 2c 20  74 68 65 20 61 63 74 20  |  Also, the act |
0001a210  6f 66 20 64 72 6f 70 70  69 6e 67 20 74 68 65 20  |of dropping the |
0001a220  63 6f 6e 65 20 6e 6f 77  20 63 68 61 6e 67 65 73  |cone now changes|
0001a230  20 74 68 65 0a 64 65 73  63 72 69 70 74 69 6f 6e  | the.description|
0001a240  20 77 68 69 63 68 20 61  70 70 65 61 72 73 20 77  | which appears w|
0001a250  68 65 6e 20 61 20 70 6c  61 79 65 72 20 65 78 61  |hen a player exa|
0001a260  6d 69 6e 65 73 20 69 74  2e 0a 0a 0a 2d 2d 2d 2d  |mines it....----|
0001a270  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0001a2b0  2d 2d 2d 2d 2d 2d 2d 0a  44 32 2e 20 20 50 6c 61  |-------.D2.  Pla|
0001a2c0  63 65 73 2c 20 73 63 65  6e 65 72 79 20 61 6e 64  |ces, scenery and|
0001a2d0  20 74 68 65 20 6d 61 70  0a 2d 2d 2d 2d 2d 2d 2d  | the map.-------|
0001a2e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0001a320  2d 2d 2d 2d 0a 0a 0a 4e  6f 77 20 66 6f 72 20 61  |----...Now for a|
0001a330  20 72 6f 6f 6d 3a 20 74  68 72 6f 77 20 61 77 61  | room: throw awa|
0001a340  79 20 74 68 65 20 6f 6c  64 20 22 62 6c 61 6e 6b  |y the old "blank|
0001a350  20 72 6f 6f 6d 22 20 61  6e 64 20 72 65 70 6c 61  | room" and repla|
0001a360  63 65 20 69 74 20 62 79  2e 2e 2e 0a 0a 20 20 20  |ce it by.....   |
0001a370  20 20 4f 62 6a 65 63 74  20 53 71 75 61 72 65 5f  |  Object Square_|
0001a380  52 6f 6f 6d 20 22 53 71  75 61 72 65 20 52 6f 6f  |Room "Square Roo|
0001a390  6d 22 0a 20 20 20 20 20  20 20 77 69 74 68 20 64  |m".       with d|
0001a3a0  65 73 63 72 69 70 74 69  6f 6e 0a 20 20 20 20 20  |escription.     |
0001a3b0  20 20 20 20 20 20 20 20  20 20 20 22 41 20 62 72  |           "A br|
0001a3c0  6f 61 64 2c 20 73 71 75  61 72 65 20 72 6f 6f 6d  |oad, square room|
0001a3d0  2c 20 74 65 6e 20 79 61  72 64 73 20 6f 6e 20 61  |, ten yards on a|
0001a3e0  20 73 69 64 65 2c 20 66  6c 6f 6f 72 65 64 20 5c  | side, floored \|
0001a3f0  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
0001a400  20 20 77 69 74 68 20 62  6c 61 63 6b 20 61 6e 64  |  with black and|
0001a410  20 77 68 69 74 65 20 63  68 65 71 75 65 72 65 64  | white chequered|
0001a420  20 74 69 6c 65 73 2e 22  0a 20 20 20 20 20 20 20  | tiles.".       |
0001a430  68 61 73 20 20 6c 69 67  68 74 3b 0a 0a 28 57 65  |has  light;..(We|
0001a440  20 61 6c 73 6f 20 68 61  76 65 20 74 6f 20 63 68  | also have to ch|
0001a450  61 6e 67 65 20 74 68 65  20 49 6e 69 74 69 61 6c  |ange the Initial|
0001a460  69 73 65 20 72 6f 75 74  69 6e 65 20 74 6f 20 6d  |ise routine to m|
0001a470  61 6b 65 20 74 68 69 73  20 74 68 65 20 70 6c 61  |ake this the pla|
0001a480  63 65 0a 77 68 65 72 65  20 74 68 65 20 70 6c 61  |ce.where the pla|
0001a490  79 65 72 20 62 65 67 69  6e 73 2c 20 73 69 6e 63  |yer begins, sinc|
0001a4a0  65 20 74 68 65 20 42 6c  61 6e 6b 20 52 6f 6f 6d  |e the Blank Room|
0001a4b0  20 6e 6f 20 6c 6f 6e 67  65 72 20 65 78 69 73 74  | no longer exist|
0001a4c0  73 2e 29 0a 0a 4c 69 6b  65 20 74 68 65 20 62 6c  |s.)..Like the bl|
0001a4d0  61 6e 6b 20 72 6f 6f 6d  2c 20 74 68 69 73 20 6f  |ank room, this o|
0001a4e0  6e 65 20 68 61 73 20 22  6c 69 67 68 74 22 2e 20  |ne has "light". |
0001a4f0  20 28 49 66 20 69 74 20  64 69 64 6e 27 74 2c 20  | (If it didn't, |
0001a500  74 68 65 20 70 6c 61 79  65 72 0a 77 6f 75 6c 64  |the player.would|
0001a510  20 6e 65 76 65 72 20 73  65 65 20 69 74 2c 20 73  | never see it, s|
0001a520  69 6e 63 65 20 69 74 20  77 6f 75 6c 64 20 62 65  |ince it would be|
0001a530  20 64 61 72 6b 2c 20 61  6e 64 20 74 68 65 20 70  | dark, and the p|
0001a540  6c 61 79 65 72 20 68 61  73 6e 27 74 20 79 65 74  |layer hasn't yet|
0001a550  0a 62 65 65 6e 20 67 69  76 65 6e 20 61 20 6c 61  |.been given a la|
0001a560  6d 70 20 6f 72 20 74 6f  72 63 68 20 6f 66 20 73  |mp or torch of s|
0001a570  6f 6d 65 20 6b 69 6e 64  2e 29 20 20 53 6f 20 77  |ome kind.)  So w|
0001a580  68 65 72 65 20 69 73 20  74 68 65 20 6c 69 67 68  |here is the ligh|
0001a590  74 20 63 6f 6d 69 6e 67  0a 66 72 6f 6d 3f 0a 0a  |t coming.from?..|
0001a5a0  20 20 20 20 20 4e 65 61  72 62 79 20 63 68 61 6e  |     Nearby chan|
0001a5b0  64 65 6c 69 65 72 20 22  63 72 79 73 74 61 6c 20  |delier "crystal |
0001a5c0  63 68 61 6e 64 65 6c 69  65 72 22 0a 20 20 20 20  |chandelier".    |
0001a5d0  20 20 20 77 69 74 68 20  6e 61 6d 65 20 22 63 72  |   with name "cr|
0001a5e0  79 73 74 61 6c 22 20 22  63 68 61 6e 64 65 6c 69  |ystal" "chandeli|
0001a5f0  65 72 22 2c 0a 20 20 20  20 20 20 20 20 20 20 20  |er",.           |
0001a600  20 69 6e 69 74 69 61 6c  20 22 41 20 63 72 79 73  | initial "A crys|
0001a610  74 61 6c 20 63 68 61 6e  64 65 6c 69 65 72 20 68  |tal chandelier h|
0001a620  61 6e 67 73 20 66 72 6f  6d 20 66 61 72 20 61 62  |angs from far ab|
0001a630  6f 76 65 2c 20 63 61 73  74 69 6e 67 20 5c 0a 20  |ove, casting \. |
0001a640  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001a650  20 20 20 20 6c 69 67 68  74 20 69 6e 20 6c 69 74  |    light in lit|
0001a660  74 6c 65 20 72 61 69 6e  62 6f 77 73 20 61 63 72  |tle rainbows acr|
0001a670  6f 73 73 20 74 68 65 20  66 6c 6f 6f 72 2e 22 2c  |oss the floor.",|
0001a680  0a 20 20 20 20 20 20 20  20 20 20 20 20 64 65 73  |.            des|
0001a690  63 72 69 70 74 69 6f 6e  20 22 54 68 65 20 63 72  |cription "The cr|
0001a6a0  79 73 74 61 6c 20 69 73  20 62 65 61 75 74 69 66  |ystal is beautif|
0001a6b0  75 6c 20 63 75 74 2d 67  6c 61 73 73 2e 22 0a 20  |ul cut-glass.". |
0001a6c0  20 20 20 20 20 20 20 68  61 73 20 73 74 61 74 69  |       has stati|
0001a6d0  63 3b 0a 0a 54 68 69 73  20 69 73 20 61 20 70 69  |c;..This is a pi|
0001a6e0  65 63 65 20 6f 66 20 73  63 65 6e 65 72 79 2c 20  |ece of scenery, |
0001a6f0  68 65 6e 63 65 20 74 68  65 20 22 73 74 61 74 69  |hence the "stati|
0001a700  63 22 20 61 74 74 72 69  62 75 74 65 20 28 77 68  |c" attribute (wh|
0001a710  69 63 68 20 6d 65 61 6e  73 20 69 74 0a 63 61 6e  |ich means it.can|
0001a720  27 74 20 62 65 20 74 61  6b 65 6e 20 6f 72 20 6d  |'t be taken or m|
0001a730  6f 76 65 64 29 2e 20 20  42 75 74 20 77 68 61 74  |oved).  But what|
0001a740  20 61 62 6f 75 74 20 74  68 65 20 72 61 69 6e 62  | about the rainb|
0001a750  6f 77 73 3f 0a 0a 20 20  20 20 20 4e 65 61 72 62  |ows?..     Nearb|
0001a760  79 20 72 61 69 6e 62 6f  77 73 20 22 72 61 69 6e  |y rainbows "rain|
0001a770  62 6f 77 73 22 0a 20 20  20 20 20 20 20 77 69 74  |bows".       wit|
0001a780  68 20 6e 61 6d 65 20 22  72 61 69 6e 62 6f 77 22  |h name "rainbow"|
0001a790  20 22 72 61 69 6e 62 6f  77 73 22 2c 0a 20 20 20  | "rainbows",.   |
0001a7a0  20 20 20 20 20 20 20 20  20 64 65 73 63 72 69 70  |         descrip|
0001a7b0  74 69 6f 6e 20 22 43 61  75 73 65 64 20 62 79 20  |tion "Caused by |
0001a7c0  64 69 66 66 72 61 63 74  69 6f 6e 2c 20 6f 72 20  |diffraction, or |
0001a7d0  73 6f 6d 65 74 68 69 6e  67 20 6c 69 6b 65 20 74  |something like t|
0001a7e0  68 61 74 20 2d 20 5c 0a  20 20 20 20 20 20 20 20  |hat - \.        |
0001a7f0  20 20 20 20 20 20 20 20  79 6f 75 20 77 65 72 65  |        you were|
0001a800  20 6e 65 76 65 72 20 76  65 72 79 20 67 6f 6f 64  | never very good|
0001a810  20 61 74 20 70 68 79 73  69 63 73 2e 22 0a 20 20  | at physics.".  |
0001a820  20 20 20 20 20 20 68 61  73 20 73 63 65 6e 65 72  |      has scener|
0001a830  79 3b 0a 0a 42 65 69 6e  67 20 22 73 63 65 6e 65  |y;..Being "scene|
0001a840  72 79 22 20 6d 61 6b 65  73 20 74 68 65 20 6f 62  |ry" makes the ob|
0001a850  6a 65 63 74 20 6e 6f 74  20 6f 6e 6c 79 20 73 74  |ject not only st|
0001a860  61 74 69 63 20 62 75 74  20 61 6c 73 6f 20 6e 6f  |atic but also no|
0001a870  74 20 64 65 73 63 72 69  62 65 64 0a 62 79 20 74  |t described.by t|
0001a880  68 65 20 67 61 6d 65 20  75 6e 6c 65 73 73 20 61  |he game unless a|
0001a890  63 74 75 61 6c 6c 79 20  65 78 61 6d 69 6e 65 64  |ctually examined|
0001a8a0  20 62 79 20 74 68 65 20  70 6c 61 79 65 72 2e 20  | by the player. |
0001a8b0  20 41 20 74 72 75 65 20  70 65 72 66 65 63 74 69  | A true perfecti|
0001a8c0  6f 6e 69 73 74 0a 6d 69  67 68 74 20 61 6c 74 65  |onist.might alte|
0001a8d0  72 20 69 74 20 74 6f 3a  0a 0a 20 20 20 20 20 4e  |r it to:..     N|
0001a8e0  65 61 72 62 79 20 72 61  69 6e 62 6f 77 73 20 22  |earby rainbows "|
0001a8f0  72 61 69 6e 62 6f 77 73  22 0a 20 20 20 20 20 20  |rainbows".      |
0001a900  20 77 69 74 68 20 6e 61  6d 65 20 22 72 61 69 6e  | with name "rain|
0001a910  62 6f 77 22 20 22 72 61  69 6e 62 6f 77 73 22 2c  |bow" "rainbows",|
0001a920  0a 20 20 20 20 20 20 20  20 20 20 20 20 64 65 73  |.            des|
0001a930  63 72 69 70 74 69 6f 6e  20 22 43 61 75 73 65 64  |cription "Caused|
0001a940  20 62 79 20 64 69 66 66  72 61 63 74 69 6f 6e 2c  | by diffraction,|
0001a950  20 6f 72 20 73 6f 6d 65  74 68 69 6e 67 20 6c 69  | or something li|
0001a960  6b 65 20 74 68 61 74 20  2d 20 5c 0a 20 20 20 20  |ke that - \.    |
0001a970  20 20 20 20 20 20 20 20  20 20 20 20 79 6f 75 20  |            you |
0001a980  77 65 72 65 20 6e 65 76  65 72 20 76 65 72 79 20  |were never very |
0001a990  67 6f 6f 64 20 61 74 20  70 68 79 73 69 63 73 2e  |good at physics.|
0001a9a0  22 2c 0a 20 20 20 20 20  20 20 20 20 20 20 20 62  |",.            b|
0001a9b0  65 66 6f 72 65 0a 20 20  20 20 20 20 20 20 20 20  |efore.          |
0001a9c0  20 20 5b 3b 20 54 61 6b  65 2c 20 50 75 73 68 2c  |  [; Take, Push,|
0001a9d0  20 50 75 6c 6c 2c 20 54  75 72 6e 3a 20 22 42 75  | Pull, Turn: "Bu|
0001a9e0  74 20 74 68 65 20 72 61  69 6e 62 6f 77 73 20 61  |t the rainbows a|
0001a9f0  72 65 20 6d 61 64 65 20  6f 66 20 6c 69 67 68 74  |re made of light|
0001aa00  2e 22 3b 0a 20 20 20 20  20 20 20 20 20 20 20 20  |.";.            |
0001aa10  5d 2c 0a 20 20 20 20 20  20 20 20 68 61 73 20 73  |],.        has s|
0001aa20  63 65 6e 65 72 79 3b 0a  0a 0a 4c 65 74 20 75 73  |cenery;...Let us|
0001aa30  20 6e 6f 77 20 61 64 64  20 61 20 73 65 63 6f 6e  | now add a secon|
0001aa40  64 20 72 6f 6f 6d 3a 0a  0a 20 20 20 20 20 4f 62  |d room:..     Ob|
0001aa50  6a 65 63 74 20 43 6f 72  72 69 64 6f 72 20 22 53  |ject Corridor "S|
0001aa60  6c 6f 70 69 6e 67 20 43  6f 72 72 69 64 6f 72 22  |loping Corridor"|
0001aa70  0a 20 20 20 20 20 20 20  77 69 74 68 20 64 65 73  |.       with des|
0001aa80  63 72 69 70 74 69 6f 6e  0a 20 20 20 20 20 20 20  |cription.       |
0001aa90  20 20 20 20 20 20 20 20  20 22 54 68 69 73 20 63  |         "This c|
0001aaa0  6f 72 72 69 64 6f 72 20  73 6c 6f 70 65 73 20 75  |orridor slopes u|
0001aab0  70 77 61 72 64 20 61 6e  64 20 6f 75 74 20 6f 66  |pward and out of|
0001aac0  20 74 68 65 20 73 71 75  61 72 65 20 72 6f 6f 6d  | the square room|
0001aad0  2e 22 2c 0a 20 20 20 20  20 20 20 20 20 20 20 20  |.",.            |
0001aae0  64 5f 74 6f 20 53 71 75  61 72 65 5f 52 6f 6f 6d  |d_to Square_Room|
0001aaf0  2c 20 73 5f 74 6f 20 53  71 75 61 72 65 5f 52 6f  |, s_to Square_Ro|
0001ab00  6f 6d 2c 0a 20 20 20 20  20 20 20 20 20 20 20 20  |om,.            |
0001ab10  75 5f 74 6f 20 22 54 68  65 20 73 6c 6f 70 65 20  |u_to "The slope |
0001ab20  62 65 63 6f 6d 65 73 20  69 6d 70 6f 73 73 69 62  |becomes impossib|
0001ab30  6c 79 20 73 74 65 65 70  2c 20 61 6e 64 20 79 6f  |ly steep, and yo|
0001ab40  75 20 72 65 74 72 65 61  74 2e 22 2c 0a 20 20 20  |u retreat.",.   |
0001ab50  20 20 20 20 20 20 20 20  20 63 61 6e 74 5f 67 6f  |         cant_go|
0001ab60  20 22 54 68 65 20 63 6f  72 72 69 64 6f 72 20 72  | "The corridor r|
0001ab70  75 6e 73 20 75 70 20 61  6e 64 20 64 6f 77 6e 2e  |uns up and down.|
0001ab80  22 0a 20 20 20 20 20 20  20 68 61 73 20 20 6c 69  |".       has  li|
0001ab90  67 68 74 3b 0a 0a 61 6e  64 20 65 78 74 65 6e 64  |ght;..and extend|
0001aba0  20 74 68 65 20 53 71 75  61 72 65 20 52 6f 6f 6d  | the Square Room|
0001abb0  20 74 6f 3a 0a 0a 20 20  20 20 20 4f 62 6a 65 63  | to:..     Objec|
0001abc0  74 20 53 71 75 61 72 65  5f 52 6f 6f 6d 20 22 53  |t Square_Room "S|
0001abd0  71 75 61 72 65 20 52 6f  6f 6d 22 0a 20 20 20 20  |quare Room".    |
0001abe0  20 20 20 77 69 74 68 20  64 65 73 63 72 69 70 74  |   with descript|
0001abf0  69 6f 6e 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ion.            |
0001ac00  20 20 20 20 22 41 20 62  72 6f 61 64 2c 20 73 71  |    "A broad, sq|
0001ac10  75 61 72 65 20 72 6f 6f  6d 2c 20 74 65 6e 20 79  |uare room, ten y|
0001ac20  61 72 64 73 20 6f 6e 20  61 20 73 69 64 65 2c 20  |ards on a side, |
0001ac30  66 6c 6f 6f 72 65 64 20  5c 0a 20 20 20 20 20 20  |floored \.      |
0001ac40  20 20 20 20 20 20 20 20  20 20 20 77 69 74 68 20  |           with |
0001ac50  62 6c 61 63 6b 20 61 6e  64 20 77 68 69 74 65 20  |black and white |
0001ac60  63 68 65 71 75 65 72 65  64 20 74 69 6c 65 73 2e  |chequered tiles.|
0001ac70  20 20 41 20 64 6f 6f 72  77 61 79 20 69 6e 20 74  |  A doorway in t|
0001ac80  68 65 20 5c 0a 20 20 20  20 20 20 20 20 20 20 20  |he \.           |
0001ac90  20 20 20 20 20 20 63 65  6e 74 72 65 20 6f 66 20  |      centre of |
0001aca0  74 68 65 20 6e 6f 72 74  68 20 73 69 64 65 20 6f  |the north side o|
0001acb0  70 65 6e 73 20 6f 6e 74  6f 20 61 20 72 69 73 69  |pens onto a risi|
0001acc0  6e 67 20 63 6f 72 72 69  64 6f 72 2e 22 2c 0a 20  |ng corridor.",. |
0001acd0  20 20 20 20 20 20 20 20  20 20 20 75 5f 74 6f 20  |           u_to |
0001ace0  43 6f 72 72 69 64 6f 72  2c 0a 20 20 20 20 20 20  |Corridor,.      |
0001acf0  20 20 20 20 20 20 6e 5f  74 6f 20 43 6f 72 72 69  |      n_to Corri|
0001ad00  64 6f 72 0a 20 20 20 20  20 20 20 68 61 73 20 20  |dor.       has  |
0001ad10  6c 69 67 68 74 3b 0a 0a  54 68 65 20 70 6c 61 79  |light;..The play|
0001ad20  65 72 20 63 61 6e 20 6e  6f 77 20 67 6f 20 66 72  |er can now go fr|
0001ad30  6f 6d 20 6f 6e 65 20 74  6f 20 74 68 65 20 6f 74  |om one to the ot|
0001ad40  68 65 72 2e 20 20 54 68  65 20 70 72 6f 70 65 72  |her.  The proper|
0001ad50  74 69 65 73 20 22 75 5f  74 6f 22 2c 20 22 64 5f  |ties "u_to", "d_|
0001ad60  74 6f 22 2c 0a 22 6e 5f  74 6f 22 20 28 61 6e 64  |to",."n_to" (and|
0001ad70  20 73 6f 20 6f 6e 29 20  64 65 63 6c 61 72 65 20  | so on) declare |
0001ad80  77 68 61 74 20 6c 69 65  73 20 69 6e 20 74 68 65  |what lies in the|
0001ad90  20 64 69 72 65 63 74 69  6f 6e 73 20 22 75 70 22  | directions "up"|
0001ada0  2c 20 22 64 6f 77 6e 22  2c 20 22 6e 6f 72 74 68  |, "down", "north|
0001adb0  22 0a 28 61 6e 64 20 73  6f 20 6f 6e 29 2e 20 20  |".(and so on).  |
0001adc0  49 66 20 74 68 65 79 20  61 72 65 6e 27 74 20 64  |If they aren't d|
0001add0  65 63 6c 61 72 65 64 2c  20 6f 6e 65 20 63 61 6e  |eclared, one can|
0001ade0  6e 6f 74 20 67 6f 20 74  68 61 74 20 77 61 79 2e  |not go that way.|
0001adf0  20 20 4e 6f 74 69 63 65  20 74 68 61 74 0a 74 68  |  Notice that.th|
0001ae00  65 79 20 63 61 6e 20 62  65 20 65 69 74 68 65 72  |ey can be either|
0001ae10  20 61 20 72 6f 6f 6d 20  6f 72 20 61 20 6d 65 73  | a room or a mes|
0001ae20  73 61 67 65 20 77 68 69  63 68 20 69 73 20 70 72  |sage which is pr|
0001ae30  69 6e 74 65 64 20 69 66  20 74 68 65 20 70 6c 61  |inted if the pla|
0001ae40  79 65 72 20 74 72 69 65  73 0a 74 6f 20 67 6f 20  |yer tries.to go |
0001ae50  69 6e 20 74 68 65 20 67  69 76 65 6e 20 64 69 72  |in the given dir|
0001ae60  65 63 74 69 6f 6e 2e 0a  0a 49 6e 20 74 68 65 20  |ection...In the |
0001ae70  53 71 75 61 72 65 20 52  6f 6f 6d 2c 20 69 66 20  |Square Room, if |
0001ae80  74 68 65 20 70 6c 61 79  65 72 20 74 72 69 65 73  |the player tries|
0001ae90  20 74 6f 20 67 6f 2c 20  73 61 79 2c 20 65 61 73  | to go, say, eas|
0001aea0  74 2c 20 73 68 65 20 67  65 74 73 20 61 20 6d 65  |t, she gets a me|
0001aeb0  73 73 61 67 65 0a 61 6c  6f 6e 67 20 74 68 65 20  |ssage.along the |
0001aec0  6c 69 6e 65 73 20 6f 66  20 22 59 6f 75 20 63 61  |lines of "You ca|
0001aed0  6e 27 74 20 67 6f 20 74  68 61 74 20 77 61 79 2e  |n't go that way.|
0001aee0  22 2c 20 77 68 69 63 68  20 69 73 20 6e 6f 74 20  |", which is not |
0001aef0  76 65 72 79 20 68 65 6c  70 66 75 6c 2e 20 20 49  |very helpful.  I|
0001af00  6e 0a 74 68 65 20 43 6f  72 72 69 64 6f 72 2c 20  |n.the Corridor, |
0001af10  74 68 65 20 22 63 61 6e  74 5f 67 6f 22 20 6d 65  |the "cant_go" me|
0001af20  73 73 61 67 65 20 69 73  20 70 72 69 6e 74 65 64  |ssage is printed|
0001af30  20 69 6e 73 74 65 61 64  2e 0a 0a 4e 6f 74 69 63  | instead...Notic|
0001af40  65 20 74 68 61 74 20 74  68 65 20 6d 61 70 20 63  |e that the map c|
0001af50  6f 6e 6e 65 63 74 69 6f  6e 73 20 61 72 65 20 61  |onnections are a|
0001af60  6c 6c 20 6f 6e 65 2d 77  61 79 3a 20 74 68 65 79  |ll one-way: they|
0001af70  20 6a 75 73 74 20 68 61  70 70 65 6e 20 74 6f 20  | just happen to |
0001af80  62 65 0a 64 65 66 69 6e  65 64 20 69 6e 20 73 75  |be.defined in su|
0001af90  63 68 20 61 20 77 61 79  20 74 68 61 74 20 74 68  |ch a way that th|
0001afa0  65 79 20 61 70 70 65 61  72 20 74 77 6f 2d 77 61  |ey appear two-wa|
0001afb0  79 2e 0a 0a 0a 52 6f 6f  6d 73 20 61 6c 73 6f 20  |y....Rooms also |
0001afc0  68 61 76 65 20 72 75 6c  65 73 20 6f 66 20 74 68  |have rules of th|
0001afd0  65 69 72 20 6f 77 6e 2e  20 20 57 65 20 6d 69 67  |eir own.  We mig|
0001afe0  68 74 20 77 72 69 74 65  3a 0a 0a 20 20 20 20 20  |ht write:..     |
0001aff0  4f 62 6a 65 63 74 20 43  6f 72 72 69 64 6f 72 20  |Object Corridor |
0001b000  22 53 6c 6f 70 69 6e 67  20 43 6f 72 72 69 64 6f  |"Sloping Corrido|
0001b010  72 22 0a 20 20 20 20 20  20 20 77 69 74 68 20 64  |r".       with d|
0001b020  65 73 63 72 69 70 74 69  6f 6e 0a 20 20 20 20 20  |escription.     |
0001b030  20 20 20 20 20 20 20 20  20 20 20 22 54 68 69 73  |           "This|
0001b040  20 63 6f 72 72 69 64 6f  72 20 73 6c 6f 70 65 73  | corridor slopes|
0001b050  20 75 70 77 61 72 64 20  61 6e 64 20 6f 75 74 20  | upward and out |
0001b060  6f 66 20 74 68 65 20 73  71 75 61 72 65 20 72 6f  |of the square ro|
0001b070  6f 6d 3a 20 20 5c 0a 20  20 20 20 20 20 20 20 20  |om:  \.         |
0001b080  20 20 20 20 20 20 20 20  74 68 65 20 66 6c 6f 6f  |        the floo|
0001b090  72 20 75 6e 64 65 72 66  6f 6f 74 20 69 73 20 61  |r underfoot is a|
0001b0a0  20 6c 69 74 74 6c 65 20  73 74 69 63 6b 79 2e 22  | little sticky."|
0001b0b0  2c 0a 20 20 20 20 20 20  20 20 20 20 20 20 64 5f  |,.            d_|
0001b0c0  74 6f 20 53 71 75 61 72  65 5f 52 6f 6f 6d 2c 20  |to Square_Room, |
0001b0d0  73 5f 74 6f 20 53 71 75  61 72 65 5f 52 6f 6f 6d  |s_to Square_Room|
0001b0e0  2c 0a 20 20 20 20 20 20  20 20 20 20 20 20 75 5f  |,.            u_|
0001b0f0  74 6f 20 22 54 68 65 20  73 6c 6f 70 65 20 62 65  |to "The slope be|
0001b100  63 6f 6d 65 73 20 69 6d  70 6f 73 73 69 62 6c 79  |comes impossibly|
0001b110  20 73 74 65 65 70 2c 20  61 6e 64 20 79 6f 75 20  | steep, and you |
0001b120  72 65 74 72 65 61 74 2e  22 2c 0a 20 20 20 20 20  |retreat.",.     |
0001b130  20 20 20 20 20 20 20 63  61 6e 74 5f 67 6f 20 22  |       cant_go "|
0001b140  54 68 65 20 63 6f 72 72  69 64 6f 72 20 72 75 6e  |The corridor run|
0001b150  73 20 75 70 20 61 6e 64  20 64 6f 77 6e 2e 22 2c  |s up and down.",|
0001b160  0a 20 20 20 20 20 20 20  20 20 20 20 20 62 65 66  |.            bef|
0001b170  6f 72 65 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ore.            |
0001b180  5b 3b 20 54 61 6b 65 3a  20 69 66 20 28 6e 6f 75  |[; Take: if (nou|
0001b190  6e 20 3d 3d 20 63 6f 6e  65 29 0a 20 20 20 20 20  |n == cone).     |
0001b1a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001b1b0  20 20 20 20 22 54 68 65  20 63 6f 6e 65 20 73 65  |    "The cone se|
0001b1c0  65 6d 73 20 74 6f 20 62  65 20 73 74 75 63 6b 20  |ems to be stuck |
0001b1d0  74 6f 20 74 68 65 20 66  6c 6f 6f 72 20 68 65 72  |to the floor her|
0001b1e0  65 2e 22 3b 0a 20 20 20  20 20 20 20 20 20 20 20  |e.";.           |
0001b1f0  20 5d 2c 0a 20 20 20 20  20 20 20 68 61 73 20 20  | ],.       has  |
0001b200  6c 69 67 68 74 3b 0a 0a  61 6e 64 20 6e 6f 77 20  |light;..and now |
0001b210  74 68 65 20 63 6f 6e 65  20 28 69 66 20 64 72 6f  |the cone (if dro|
0001b220  70 70 65 64 20 74 68 65  72 65 29 20 63 61 6e 6e  |pped there) cann|
0001b230  6f 74 20 62 65 20 74 61  6b 65 6e 20 66 72 6f 6d  |ot be taken from|
0001b240  20 74 68 65 20 66 6c 6f  6f 72 20 6f 66 0a 74 68  | the floor of.th|
0001b250  65 20 53 6c 6f 70 69 6e  67 20 43 6f 72 72 69 64  |e Sloping Corrid|
0001b260  6f 72 2e 20 20 54 68 65  20 76 61 72 69 61 62 6c  |or.  The variabl|
0001b270  65 73 20 22 6e 6f 75 6e  22 20 61 6e 64 20 22 73  |es "noun" and "s|
0001b280  65 63 6f 6e 64 22 20 68  6f 6c 64 20 74 68 65 20  |econd" hold the |
0001b290  66 69 72 73 74 0a 61 6e  64 20 73 65 63 6f 6e 64  |first.and second|
0001b2a0  20 6e 6f 75 6e 73 20 73  75 70 70 6c 69 65 64 20  | nouns supplied |
0001b2b0  77 69 74 68 20 61 6e 20  61 63 74 69 6f 6e 2e 20  |with an action. |
0001b2c0  20 52 6f 6f 6d 73 20 68  61 76 65 20 62 65 66 6f  | Rooms have befo|
0001b2d0  72 65 20 61 6e 64 20 61  66 74 65 72 0a 72 6f 75  |re and after.rou|
0001b2e0  74 69 6e 65 73 20 6a 75  73 74 20 61 73 20 6f 62  |tines just as ob|
0001b2f0  6a 65 63 74 73 20 64 6f  2e 0a 0a 52 65 6d 65 6d  |jects do...Remem|
0001b300  62 65 72 2c 20 77 68 65  6e 20 77 72 69 74 69 6e  |ber, when writin|
0001b310  67 20 72 75 6c 65 73 20  66 6f 72 20 72 6f 6f 6d  |g rules for room|
0001b320  73 2c 20 74 68 61 74 20  74 68 65 20 72 6f 6f 6d  |s, that the room|
0001b330  20 6d 61 79 20 62 65 20  61 20 64 69 66 66 65 72  | may be a differ|
0001b340  65 6e 74 0a 6f 6e 65 20  61 66 74 65 72 20 74 68  |ent.one after th|
0001b350  65 20 61 63 74 69 6f 6e  20 68 61 73 20 74 61 6b  |e action has tak|
0001b360  65 6e 20 70 6c 61 63 65  2e 20 20 54 68 65 20 47  |en place.  The G|
0001b370  6f 20 61 63 74 69 6f 6e  2c 20 66 6f 72 20 69 6e  |o action, for in|
0001b380  73 74 61 6e 63 65 2c 20  69 73 0a 6f 66 66 65 72  |stance, is.offer|
0001b390  65 64 20 74 6f 20 74 68  65 20 22 62 65 66 6f 72  |ed to the "befor|
0001b3a0  65 22 20 72 6f 75 74 69  6e 65 20 6f 66 20 74 68  |e" routine of th|
0001b3b0  65 20 72 6f 6f 6d 20 77  68 69 63 68 20 69 73 20  |e room which is |
0001b3c0  62 65 69 6e 67 20 6c 65  66 74 2c 20 61 6e 64 20  |being left, and |
0001b3d0  74 68 65 0a 22 61 66 74  65 72 22 20 72 6f 75 74  |the."after" rout|
0001b3e0  69 6e 65 20 6f 66 20 74  68 65 20 72 6f 6f 6d 20  |ine of the room |
0001b3f0  62 65 69 6e 67 20 61 72  72 69 76 65 64 20 69 6e  |being arrived in|
0001b400  2e 20 20 46 6f 72 20 65  78 61 6d 70 6c 65 3a 0a  |.  For example:.|
0001b410  0a 20 20 20 20 20 20 20  20 20 20 20 20 61 66 74  |.            aft|
0001b420  65 72 0a 20 20 20 20 20  20 20 20 20 20 20 20 5b  |er.            [|
0001b430  3b 20 47 6f 3a 20 69 66  20 28 6e 6f 75 6e 3d 3d  |; Go: if (noun==|
0001b440  69 6e 5f 6f 62 6a 29 0a  20 20 20 20 20 20 20 20  |in_obj).        |
0001b450  20 20 20 20 20 20 20 20  20 20 20 70 72 69 6e 74  |           print|
0001b460  20 22 48 6f 77 20 67 72  61 74 65 66 75 6c 20 79  | "How grateful y|
0001b470  6f 75 20 61 72 65 20 74  6f 20 67 65 74 20 6f 75  |ou are to get ou|
0001b480  74 20 6f 66 20 74 68 65  20 72 61 69 6e 2e 2e 2e  |t of the rain...|
0001b490  5e 22 3b 0a 20 20 20 20  20 20 20 20 20 20 20 20  |^";.            |
0001b4a0  5d 0a 0a 77 69 6c 6c 20  70 72 69 6e 74 20 74 68  |]..will print th|
0001b4b0  65 20 6d 65 73 73 61 67  65 20 77 68 65 6e 20 74  |e message when t|
0001b4c0  68 65 20 72 6f 6f 6d 20  69 73 20 65 6e 74 65 72  |he room is enter|
0001b4d0  65 64 20 76 69 61 20 74  68 65 20 22 69 6e 22 20  |ed via the "in" |
0001b4e0  64 69 72 65 63 74 69 6f  6e 2e 0a 28 4e 6f 74 65  |direction..(Note|
0001b4f0  20 74 68 61 74 20 74 68  65 20 6d 65 73 73 61 67  | that the messag|
0001b500  65 20 69 73 20 70 72 69  6e 74 65 64 20 77 69 74  |e is printed wit|
0001b510  68 20 74 68 65 20 22 70  72 69 6e 74 22 20 63 6f  |h the "print" co|
0001b520  6d 6d 61 6e 64 2e 20 20  54 68 69 73 20 6d 65 61  |mmand.  This mea|
0001b530  6e 73 0a 74 68 61 74 20  69 74 20 64 6f 65 73 20  |ns.that it does |
0001b540  6e 6f 74 20 61 75 74 6f  6d 61 74 69 63 61 6c 6c  |not automaticall|
0001b550  79 20 72 65 74 75 72 6e  20 74 72 75 65 3a 20 69  |y return true: i|
0001b560  6e 20 66 61 63 74 2c 20  69 74 20 72 65 74 75 72  |n fact, it retur|
0001b570  6e 73 20 66 61 6c 73 65  2c 0a 73 6f 20 74 68 65  |ns false,.so the|
0001b580  20 67 61 6d 65 20 6b 6e  6f 77 73 20 74 68 61 74  | game knows that|
0001b590  20 74 68 65 20 75 73 75  61 6c 20 72 75 6c 65 73  | the usual rules|
0001b5a0  20 73 74 69 6c 6c 20 61  70 70 6c 79 2e 20 20 41  | still apply.  A|
0001b5b0  6c 73 6f 2c 20 6e 6f 20  6e 65 77 2d 6c 69 6e 65  |lso, no new-line|
0001b5c0  0a 69 73 20 70 72 69 6e  74 65 64 20 61 75 74 6f  |.is printed auto|
0001b5d0  6d 61 74 69 63 61 6c 6c  79 3a 20 74 68 65 20 5e  |matically: the ^|
0001b5e0  20 73 79 6d 62 6f 6c 20  6d 65 61 6e 73 20 22 70  | symbol means "p|
0001b5f0  72 69 6e 74 20 61 20 6e  65 77 2d 6c 69 6e 65 22  |rint a new-line"|
0001b600  2e 29 0a 0a 44 69 72 65  63 74 69 6f 6e 73 20 28  |.)..Directions (|
0001b610  73 75 63 68 20 61 73 20  22 6e 6f 72 74 68 22 29  |such as "north")|
0001b620  20 61 72 65 20 6f 62 6a  65 63 74 73 20 63 61 6c  | are objects cal|
0001b630  6c 65 64 20 6e 5f 6f 62  6a 2c 20 73 5f 6f 62 6a  |led n_obj, s_obj|
0001b640  20 61 6e 64 20 73 6f 20  6f 6e 3a 0a 69 6e 20 74  | and so on:.in t|
0001b650  68 69 73 20 63 61 73 65  2c 20 69 6e 5f 6f 62 6a  |his case, in_obj|
0001b660  2e 20 20 28 54 68 65 79  20 61 72 65 20 6e 6f 74  |.  (They are not|
0001b670  20 74 6f 20 62 65 20 63  6f 6e 66 75 73 65 64 20  | to be confused |
0001b680  77 69 74 68 20 74 68 65  20 70 72 6f 70 65 72 74  |with the propert|
0001b690  79 20 6e 61 6d 65 73 0a  22 6e 5f 74 6f 22 20 61  |y names."n_to" a|
0001b6a0  6e 64 20 73 6f 20 6f 6e  2e 29 0a 0a 0a 2d 2d 2d  |nd so on.)...---|
0001b6b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0001b6f0  2d 2d 2d 2d 2d 2d 2d 2d  0a 44 33 2e 20 20 43 61  |--------.D3.  Ca|
0001b700  75 73 69 6e 67 20 61 63  74 69 6f 6e 73 20 61 6e  |using actions an|
0001b710  64 20 6d 61 6b 69 6e 67  20 6e 65 77 20 6f 6e 65  |d making new one|
0001b720  73 0a 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |s.--------------|
0001b730  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0001b760  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0a 0a 0a  |-------------...|
0001b770  51 75 69 74 65 20 6f 66  74 65 6e 20 79 6f 75 20  |Quite often you |
0001b780  77 61 6e 74 20 74 6f 20  73 69 6d 75 6c 61 74 65  |want to simulate|
0001b790  20 74 68 65 20 65 66 66  65 63 74 20 6f 66 20 61  | the effect of a|
0001b7a0  20 70 6c 61 79 65 72 20  74 79 70 69 6e 67 20 73  | player typing s|
0001b7b0  6f 6d 65 74 68 69 6e 67  2e 0a 46 6f 72 20 69 6e  |omething..For in|
0001b7c0  73 74 61 6e 63 65 2c 20  69 6e 20 74 68 65 20 50  |stance, in the P|
0001b7d0  65 70 70 65 72 20 52 6f  6f 6d 20 74 68 65 20 61  |epper Room the a|
0001b7e0  69 72 20 69 73 20 66 75  6c 6c 20 6f 66 20 70 65  |ir is full of pe|
0001b7f0  70 70 65 72 20 61 6e 64  20 65 76 65 72 79 20 74  |pper and every t|
0001b800  75 72 6e 0a 79 6f 75 20  73 6e 65 65 7a 65 20 61  |urn.you sneeze a|
0001b810  6e 64 20 64 72 6f 70 20  73 6f 6d 65 74 68 69 6e  |nd drop somethin|
0001b820  67 20 61 74 20 72 61 6e  64 6f 6d 2e 20 20 49 66  |g at random.  If|
0001b830  20 74 68 65 20 63 6f 64  65 20 74 6f 20 64 6f 20  | the code to do |
0001b840  74 68 69 73 20 73 69 6d  70 6c 79 0a 72 65 6d 6f  |this simply.remo|
0001b850  76 65 73 20 61 6e 20 6f  62 6a 65 63 74 20 61 6e  |ves an object an|
0001b860  64 20 70 75 74 73 20 69  74 20 6f 6e 20 74 68 65  |d puts it on the|
0001b870  20 66 6c 6f 6f 72 2c 20  74 68 65 6e 20 69 74 20  | floor, then it |
0001b880  6d 69 67 68 74 20 61 63  63 69 64 65 6e 74 61 6c  |might accidental|
0001b890  6c 79 0a 70 72 6f 76 69  64 65 20 61 20 73 6f 6c  |ly.provide a sol|
0001b8a0  75 74 69 6f 6e 20 74 6f  20 61 20 70 72 6f 62 6c  |ution to a probl|
0001b8b0  65 6d 20 6c 69 6b 65 20  22 74 68 65 20 74 6f 66  |em like "the tof|
0001b8c0  66 65 65 20 61 70 70 6c  65 20 73 74 69 63 6b 73  |fee apple sticks|
0001b8d0  20 74 6f 20 79 6f 75 72  20 68 61 6e 64 73 0a 73  | to your hands.s|
0001b8e0  6f 20 79 6f 75 20 63 61  6e 27 74 20 64 72 6f 70  |o you can't drop|
0001b8f0  20 69 74 22 2e 0a 0a 54  68 69 73 20 63 61 6e 20  | it"...This can |
0001b900  61 74 20 6c 65 61 73 74  20 62 65 20 63 6f 64 65  |at least be code|
0001b910  64 20 6c 69 6b 65 20 74  68 69 73 3a 0a 0a 20 20  |d like this:..  |
0001b920  59 6f 75 20 73 6e 65 65  7a 65 20 63 6f 6e 76 75  |You sneeze convu|
0001b930  6c 73 69 76 65 6c 79 2c  20 61 6e 64 20 6c 6f 73  |lsively, and los|
0001b940  65 20 79 6f 75 72 20 67  72 69 70 20 6f 6e 20 74  |e your grip on t|
0001b950  68 65 20 74 6f 66 66 65  65 20 61 70 70 6c 65 2e  |he toffee apple.|
0001b960  2e 2e 0a 20 20 54 68 65  20 74 6f 66 66 65 65 20  |...  The toffee |
0001b970  61 70 70 6c 65 20 73 74  69 63 6b 73 20 74 6f 20  |apple sticks to |
0001b980  79 6f 75 72 20 68 61 6e  64 21 0a 0a 77 68 69 63  |your hand!..whic|
0001b990  68 20 28 61 6c 74 68 6f  75 67 68 20 6e 6f 74 20  |h (although not |
0001b9a0  69 64 65 61 6c 29 20 69  73 20 6d 75 63 68 20 62  |ideal) is much b|
0001b9b0  65 74 74 65 72 2e 20 20  41 73 20 61 6e 20 65 78  |etter.  As an ex|
0001b9c0  61 6d 70 6c 65 2c 20 68  65 72 65 20 69 73 20 61  |ample, here is a|
0001b9d0  6e 6f 74 68 65 72 0a 70  69 65 63 65 20 6f 66 20  |nother.piece of |
0001b9e0  73 63 65 6e 65 72 79 20  74 6f 20 63 6c 75 74 74  |scenery to clutt|
0001b9f0  65 72 20 75 70 20 74 68  65 20 74 69 6e 79 20 6d  |er up the tiny m|
0001ba00  61 70 20 73 6f 20 66 61  72 3a 0a 0a 0a 20 20 20  |ap so far:...   |
0001ba10  20 20 4f 62 6a 65 63 74  20 6c 6f 77 5f 6d 69 73  |  Object low_mis|
0001ba20  74 20 22 6c 6f 77 20 6d  69 73 74 22 0a 20 20 20  |t "low mist".   |
0001ba30  20 20 20 20 77 69 74 68  20 6e 61 6d 65 20 22 6c  |    with name "l|
0001ba40  6f 77 22 20 22 73 77 69  72 6c 69 6e 67 22 20 22  |ow" "swirling" "|
0001ba50  6d 69 73 74 22 2c 20 61  72 74 69 63 6c 65 20 22  |mist", article "|
0001ba60  74 68 65 22 2c 0a 20 20  20 20 20 20 20 20 20 20  |the",.          |
0001ba70  20 20 69 6e 69 74 69 61  6c 20 22 41 20 6c 6f 77  |  initial "A low|
0001ba80  20 6d 69 73 74 20 73 77  69 72 6c 73 20 61 62 6f  | mist swirls abo|
0001ba90  75 74 20 79 6f 75 72 20  66 65 65 74 2e 22 2c 0a  |ut your feet.",.|
0001baa0  20 20 20 20 20 20 20 20  20 20 20 20 64 65 73 63  |            desc|
0001bab0  72 69 70 74 69 6f 6e 20  22 49 74 20 63 61 72 72  |ription "It carr|
0001bac0  69 65 73 20 74 68 65 20  75 6e 6d 69 73 74 61 6b  |ies the unmistak|
0001bad0  61 62 6c 65 20 6f 64 6f  75 72 20 6f 66 20 63 69  |able odour of ci|
0001bae0  6e 6e 61 6d 6f 6e 2e 22  2c 0a 20 20 20 20 20 20  |nnamon.",.      |
0001baf0  20 20 20 20 20 20 66 6f  75 6e 64 5f 69 6e 20 20  |      found_in  |
0001bb00  53 71 75 61 72 65 5f 52  6f 6f 6d 20 20 43 6f 72  |Square_Room  Cor|
0001bb10  72 69 64 6f 72 2c 0a 20  20 20 20 20 20 20 20 20  |ridor,.         |
0001bb20  20 20 20 62 65 66 6f 72  65 0a 20 20 20 20 20 20  |   before.      |
0001bb30  20 20 20 20 20 20 5b 3b  20 53 6d 65 6c 6c 3a 20  |      [; Smell: |
0001bb40  3c 3c 45 78 61 6d 69 6e  65 20 73 65 6c 66 3e 3e  |<<Examine self>>|
0001bb50  3b 0a 20 20 20 20 20 20  20 20 20 20 20 20 5d 2c  |;.            ],|
0001bb60  0a 20 20 20 20 20 20 20  68 61 73 20 20 73 74 61  |.       has  sta|
0001bb70  74 69 63 3b 0a 0a 54 68  69 73 20 6d 69 73 74 20  |tic;..This mist |
0001bb80  69 73 20 66 6f 75 6e 64  20 69 6e 20 62 6f 74 68  |is found in both|
0001bb90  20 74 68 65 20 53 71 75  61 72 65 20 52 6f 6f 6d  | the Square Room|
0001bba0  20 61 6e 64 20 74 68 65  20 43 6f 72 72 69 64 6f  | and the Corrido|
0001bbb0  72 3a 20 6e 6f 74 65 20  74 68 61 74 20 74 68 65  |r: note that the|
0001bbc0  0a 22 66 6f 75 6e 64 5f  69 6e 22 20 70 72 6f 70  |."found_in" prop|
0001bbd0  65 72 74 79 20 68 61 73  20 61 20 6c 69 73 74 20  |erty has a list |
0001bbe0  6f 66 20 70 6c 61 63 65  73 20 61 73 20 69 74 73  |of places as its|
0001bbf0  20 76 61 6c 75 65 2e 0a  0a 28 4e 6f 74 65 20 61  | value...(Note a|
0001bc00  6c 73 6f 20 74 68 65 20  22 61 72 74 69 63 6c 65  |lso the "article|
0001bc10  22 2e 20 20 55 73 75 61  6c 6c 79 20 74 68 65 20  |".  Usually the |
0001bc20  69 6e 64 65 66 69 6e 69  74 65 20 61 72 74 69 63  |indefinite artic|
0001bc30  6c 65 20 66 6f 72 20 61  6e 20 6f 62 6a 65 63 74  |le for an object|
0001bc40  0a 69 73 20 22 61 22 2e  20 20 43 68 61 6e 67 69  |.is "a".  Changi|
0001bc50  6e 67 20 69 74 20 67 69  76 65 73 20 61 20 6c 69  |ng it gives a li|
0001bc60  74 74 6c 65 20 76 61 72  69 65 74 79 3a 0a 0a 20  |ttle variety:.. |
0001bc70  20 61 20 70 6c 61 74 69  6e 75 6d 20 62 61 72 0a  | a platinum bar.|
0001bc80  20 20 61 6e 20 6f 72 61  6e 67 65 20 62 61 6c 6c  |  an orange ball|
0001bc90  6f 6f 6e 0a 20 20 79 6f  75 72 20 41 75 6e 74 20  |oon.  your Aunt |
0001bca0  4a 65 6d 69 6d 61 0a 20  20 73 6f 6d 65 20 62 75  |Jemima.  some bu|
0001bcb0  6e 64 6c 65 73 20 6f 66  20 72 65 65 64 73 0a 20  |ndles of reeds. |
0001bcc0  20 66 61 72 20 74 6f 6f  20 6d 61 6e 79 20 6d 61  | far too many ma|
0001bcd0  72 62 6c 65 73 0a 0a 66  6f 72 20 65 78 61 6d 70  |rbles..for examp|
0001bce0  6c 65 2e 29 0a 0a 20 0a  54 68 65 20 70 6c 61 79  |le.).. .The play|
0001bcf0  65 72 20 77 69 6c 6c 20  66 69 6e 64 20 74 68 61  |er will find tha|
0001bd00  74 20 73 6d 65 6c 6c 69  6e 67 20 74 68 65 20 6d  |t smelling the m|
0001bd10  69 73 74 20 70 72 6f 64  75 63 65 73 20 74 68 65  |ist produces the|
0001bd20  20 73 61 6d 65 20 6d 65  73 73 61 67 65 20 61 73  | same message as|
0001bd30  0a 6c 6f 6f 6b 69 6e 67  20 61 74 20 69 74 2e 20  |.looking at it. |
0001bd40  20 54 68 65 20 63 6f 6d  6d 61 6e 64 0a 0a 20 20  | The command..  |
0001bd50  20 20 20 3c 3c 45 78 61  6d 69 6e 65 20 73 65 6c  |   <<Examine sel|
0001bd60  66 3e 3e 3b 0a 0a 63 61  75 73 65 73 20 74 68 65  |f>>;..causes the|
0001bd70  20 67 61 6d 65 20 74 6f  20 62 65 68 61 76 65 20  | game to behave |
0001bd80  65 78 61 63 74 6c 79 20  61 73 20 69 66 20 74 68  |exactly as if th|
0001bd90  65 20 70 6c 61 79 65 72  20 68 61 64 20 74 79 70  |e player had typ|
0001bda0  65 64 20 22 65 78 61 6d  69 6e 65 20 74 68 65 0a  |ed "examine the.|
0001bdb0  6d 69 73 74 22 20 61 74  20 74 68 65 20 6b 65 79  |mist" at the key|
0001bdc0  62 6f 61 72 64 3a 20 74  68 61 74 20 69 73 2c 20  |board: that is, |
0001bdd0  74 68 65 20 45 78 61 6d  69 6e 65 20 61 63 74 69  |the Examine acti|
0001bde0  6f 6e 20 68 61 70 70 65  6e 73 2c 20 61 70 70 6c  |on happens, appl|
0001bdf0  69 65 64 20 74 6f 0a 74  68 65 20 6c 6f 77 5f 6d  |ied to.the low_m|
0001be00  69 73 74 20 6f 62 6a 65  63 74 2e 20 20 28 22 73  |ist object.  ("s|
0001be10  65 6c 66 22 20 61 6c 77  61 79 73 20 6d 65 61 6e  |elf" always mean|
0001be20  73 20 74 68 65 20 6f 62  6a 65 63 74 20 77 68 6f  |s the object who|
0001be30  73 65 20 72 6f 75 74 69  6e 65 20 74 68 69 73 0a  |se routine this.|
0001be40  69 73 2e 20 20 49 6e 20  74 68 69 73 20 63 61 73  |is.  In this cas|
0001be50  65 2c 20 69 74 27 73 20  72 65 61 6c 6c 79 20 61  |e, it's really a|
0001be60  20 62 69 74 20 70 6f 69  6e 74 6c 65 73 73 20 73  | bit pointless s|
0001be70  69 6e 63 65 0a 0a 20 20  20 20 20 3c 3c 45 78 61  |ince..     <<Exa|
0001be80  6d 69 6e 65 20 6c 6f 77  5f 6d 69 73 74 3e 3e 3b  |mine low_mist>>;|
0001be90  0a 0a 64 6f 65 73 20 6a  75 73 74 20 74 68 65 20  |..does just the |
0001bea0  73 61 6d 65 20 74 68 69  6e 67 2e 29 20 20 41 66  |same thing.)  Af|
0001beb0  74 65 72 20 67 6f 69 6e  67 20 74 68 72 6f 75 67  |ter going throug|
0001bec0  68 20 74 68 65 20 62 75  73 69 6e 65 73 73 20 6f  |h the business o|
0001bed0  66 20 65 78 61 6d 69 6e  69 6e 67 0a 74 68 65 20  |f examining.the |
0001bee0  6d 69 73 74 2c 20 74 68  65 20 72 6f 75 74 69 6e  |mist, the routin|
0001bef0  65 20 74 68 65 6e 20 72  65 74 75 72 6e 73 20 22  |e then returns "|
0001bf00  74 72 75 65 22 20 28 69  6e 20 74 68 69 73 20 63  |true" (in this c|
0001bf10  61 73 65 2c 20 73 6f 20  74 68 61 74 20 74 68 65  |ase, so that the|
0001bf20  20 6e 6f 72 6d 61 6c 0a  72 75 6c 65 73 20 66 6f  | normal.rules fo|
0001bf30  72 20 73 6d 65 6c 6c 69  6e 67 20 73 6f 6d 65 74  |r smelling somet|
0001bf40  68 69 6e 67 20 61 72 65  20 73 74 6f 70 70 65 64  |hing are stopped|
0001bf50  20 69 6e 20 74 68 65 69  72 20 74 72 61 63 6b 73  | in their tracks|
0001bf60  29 2e 0a 0a 49 66 20 69  6e 73 74 65 61 64 0a 0a  |)...If instead..|
0001bf70  20 20 20 20 20 3c 45 78  61 6d 69 6e 65 20 73 65  |     <Examine se|
0001bf80  6c 66 3e 3b 0a 0a 68 61  64 20 62 65 65 6e 20 75  |lf>;..had been u|
0001bf90  73 65 64 2c 20 74 68 65  20 73 61 6d 65 20 77 6f  |sed, the same wo|
0001bfa0  75 6c 64 20 68 61 76 65  20 68 61 70 70 65 6e 65  |uld have happene|
0001bfb0  64 2c 20 62 75 74 20 74  68 65 20 72 6f 75 74 69  |d, but the routi|
0001bfc0  6e 65 20 77 6f 75 6c 64  20 6e 6f 74 20 68 61 76  |ne would not hav|
0001bfd0  65 0a 72 65 74 75 72 6e  65 64 20 22 74 72 75 65  |e.returned "true|
0001bfe0  22 2e 20 20 53 6f 20 74  68 65 20 6d 69 73 74 20  |".  So the mist |
0001bff0  77 6f 75 6c 64 20 62 65  20 65 78 61 6d 69 6e 65  |would be examine|
0001c000  64 3b 20 61 6e 64 20 74  68 65 6e 20 74 68 65 20  |d; and then the |
0001c010  6c 69 62 72 61 72 79 20  77 6f 75 6c 64 0a 68 61  |library would.ha|
0001c020  76 65 20 63 61 72 72 69  65 64 20 6f 6e 20 61 6e  |ve carried on an|
0001c030  64 20 73 61 69 64 20 73  6f 6d 65 74 68 69 6e 67  |d said something|
0001c040  20 6c 69 6b 65 20 22 59  6f 75 20 73 6d 65 6c 6c  | like "You smell|
0001c050  20 6e 6f 74 68 69 6e 67  20 75 6e 75 73 75 61 6c  | nothing unusual|
0001c060  2e 22 2e 0a 0a 4f 74 68  65 72 20 61 63 74 69 6f  |."...Other actio|
0001c070  6e 73 20 63 61 6e 20 6f  66 20 63 6f 75 72 73 65  |ns can of course|
0001c080  20 61 6c 73 6f 20 62 65  20 77 72 69 74 74 65 6e  | also be written|
0001c090  20 74 68 69 73 20 77 61  79 3a 0a 0a 20 20 20 20  | this way:..    |
0001c0a0  20 3c 4c 6f 6f 6b 3e 3b  20 20 3c 3c 54 68 72 6f  | <Look>;  <<Thro|
0001c0b0  77 41 74 20 63 6f 6e 65  20 63 68 61 6e 64 65 6c  |wAt cone chandel|
0001c0c0  69 65 72 3e 3e 3b 0a 0a  77 69 6c 6c 2c 20 66 6f  |ier>>;..will, fo|
0001c0d0  72 20 69 6e 73 74 61 6e  63 65 2c 20 6c 6f 6f 6b  |r instance, look|
0001c0e0  20 61 72 6f 75 6e 64 2c  20 74 68 65 6e 20 62 65  | around, then be|
0001c0f0  68 61 76 65 20 61 73 20  69 66 20 74 68 65 20 70  |have as if the p|
0001c100  6c 61 79 65 72 20 68 61  64 20 61 73 6b 65 64 0a  |layer had asked.|
0001c110  74 6f 20 74 68 72 6f 77  20 74 68 65 20 63 6f 6e  |to throw the con|
0001c120  65 20 61 74 20 74 68 65  20 63 68 61 6e 64 65 6c  |e at the chandel|
0001c130  69 65 72 2c 20 74 68 65  6e 20 72 65 74 75 72 6e  |ier, then return|
0001c140  20 74 72 75 65 2e 0a 0a  0a 52 65 71 75 65 73 74  | true....Request|
0001c150  73 20 6c 69 6b 65 20 22  4c 6f 6f 6b 22 2c 20 22  |s like "Look", "|
0001c160  54 68 72 6f 77 41 74 22  2c 20 22 54 61 6b 65 22  |ThrowAt", "Take"|
0001c170  20 61 6e 64 20 73 6f 20  6f 6e 20 61 72 65 20 63  | and so on are c|
0001c180  61 6c 6c 65 64 20 61 63  74 69 6f 6e 73 2e 20 0a  |alled actions. .|
0001c190  49 6e 74 65 72 6e 61 6c  6c 79 2c 20 74 68 65 79  |Internally, they|
0001c1a0  20 61 72 65 20 73 74 6f  72 65 64 20 61 73 20 6e  | are stored as n|
0001c1b0  75 6d 62 65 72 73 2c 20  61 6e 64 20 74 68 65 20  |umbers, and the |
0001c1c0  6e 75 6d 62 65 72 20 61  73 73 6f 63 69 61 74 65  |number associate|
0001c1d0  64 20 77 69 74 68 20 61  6e 0a 61 63 74 69 6f 6e  |d with an.action|
0001c1e0  20 63 61 6e 20 62 65 20  67 6f 74 20 61 74 20 62  | can be got at b|
0001c1f0  79 0a 0a 20 20 20 20 20  78 20 3d 20 23 23 54 61  |y..     x = ##Ta|
0001c200  6b 65 3b 0a 0a 66 6f 72  20 69 6e 73 74 61 6e 63  |ke;..for instanc|
0001c210  65 2e 20 20 54 68 65 20  76 61 72 69 61 62 6c 65  |e.  The variable|
0001c220  20 22 61 63 74 69 6f 6e  22 20 68 6f 6c 64 73 20  | "action" holds |
0001c230  74 68 65 20 63 75 72 72  65 6e 74 20 61 63 74 69  |the current acti|
0001c240  6f 6e 20 6e 75 6d 62 65  72 2e 0a 53 6f 6d 65 74  |on number..Somet|
0001c250  69 6d 65 73 20 69 74 27  73 20 63 6f 6e 76 65 6e  |imes it's conven|
0001c260  69 65 6e 74 20 74 6f 20  75 73 65 20 74 68 69 73  |ient to use this|
0001c270  20 64 69 72 65 63 74 6c  79 2e 20 20 46 6f 72 20  | directly.  For |
0001c280  69 6e 73 74 61 6e 63 65  2c 20 69 6d 61 67 69 6e  |instance, imagin|
0001c290  65 0a 61 20 6d 69 72 72  6f 72 20 68 75 6e 67 20  |e.a mirror hung |
0001c2a0  76 65 72 79 20 66 61 72  20 61 62 6f 76 65 20 74  |very far above t|
0001c2b0  68 65 20 70 6c 61 79 65  72 2e 20 20 47 69 76 65  |he player.  Give|
0001c2c0  6e 3a 0a 0a 20 20 20 20  20 20 20 20 20 20 20 20  |n:..            |
0001c2d0  62 65 66 6f 72 65 0a 20  20 20 20 20 20 20 20 20  |before.         |
0001c2e0  20 20 20 5b 3b 20 69 66  20 28 61 63 74 69 6f 6e  |   [; if (action|
0001c2f0  3d 3d 23 23 45 78 61 6d  69 6e 65 29 20 72 66 61  |==##Examine) rfa|
0001c300  6c 73 65 3b 0a 20 20 20  20 20 20 20 20 20 20 20  |lse;.           |
0001c310  20 20 20 20 22 54 68 65  20 6d 69 72 72 6f 72 20  |    "The mirror |
0001c320  69 73 20 74 6f 6f 20 68  69 67 68 20 75 70 2c 20  |is too high up, |
0001c330  6f 75 74 20 6f 66 20 72  65 61 63 68 2e 22 3b 0a  |out of reach.";.|
0001c340  20 20 20 20 20 20 20 20  20 20 20 20 5d 0a 0a 74  |            ]..t|
0001c350  68 65 20 70 6c 61 79 65  72 20 77 69 6c 6c 20 6f  |he player will o|
0001c360  6e 6c 79 20 62 65 20 61  62 6c 65 20 74 6f 20 65  |nly be able to e|
0001c370  78 61 6d 69 6e 65 20 74  68 65 20 6d 69 72 72 6f  |xamine the mirro|
0001c380  72 2c 20 61 6e 64 20 6e  6f 74 68 69 6e 67 20 65  |r, and nothing e|
0001c390  6c 73 65 2e 0a 54 68 69  73 20 70 72 65 76 65 6e  |lse..This preven|
0001c3a0  74 73 20 74 68 65 20 6c  69 62 72 61 72 79 20 66  |ts the library f|
0001c3b0  72 6f 6d 20 65 76 65 72  20 73 61 79 69 6e 67 20  |rom ever saying |
0001c3c0  73 6f 6d 65 74 68 69 6e  67 20 6c 69 6b 65 20 22  |something like "|
0001c3d0  59 6f 75 20 70 75 73 68  20 74 68 65 0a 6d 69 72  |You push the.mir|
0001c3e0  72 6f 72 20 62 75 74 20  6e 6f 74 68 69 6e 67 20  |ror but nothing |
0001c3f0  68 61 70 70 65 6e 73 2e  22 2c 20 77 68 69 63 68  |happens.", which|
0001c400  20 77 6f 75 6c 64 20 62  65 20 6d 69 73 6c 65 61  | would be mislea|
0001c410  64 69 6e 67 2e 0a 0a 0a  41 6e 20 61 63 74 69 6f  |ding....An actio|
0001c420  6e 20 63 6f 72 72 65 73  70 6f 6e 64 73 20 74 6f  |n corresponds to|
0001c430  20 61 20 72 6f 75 74 69  6e 65 20 73 6f 6d 65 77  | a routine somew|
0001c440  68 65 72 65 20 77 68 69  63 68 20 61 63 74 75 61  |here which actua|
0001c450  6c 6c 79 20 63 61 72 72  69 65 73 20 6f 75 74 0a  |lly carries out.|
0001c460  74 68 65 20 6c 6f 6f 6b  69 6e 67 2c 20 74 68 72  |the looking, thr|
0001c470  6f 77 69 6e 67 20 61 74  2c 20 74 61 6b 69 6e 67  |owing at, taking|
0001c480  20 61 6e 64 20 73 6f 20  66 6f 72 74 68 2e 20 20  | and so forth.  |
0001c490  28 57 65 6c 6c 2c 20 69  6e 20 66 61 63 74 20 74  |(Well, in fact t|
0001c4a0  68 65 72 65 20 61 72 65  0a 61 6c 73 6f 20 73 6f  |here are.also so|
0001c4b0  6d 65 20 73 70 65 63 69  61 6c 20 61 63 74 69 6f  |me special actio|
0001c4c0  6e 73 20 63 61 6c 6c 65  64 20 22 66 61 6b 65 20  |ns called "fake |
0001c4d0  61 63 74 69 6f 6e 73 22  20 77 68 69 63 68 20 64  |actions" which d|
0001c4e0  6f 6e 27 74 20 63 6f 72  72 65 73 70 6f 6e 64 20  |on't correspond |
0001c4f0  74 6f 0a 73 75 63 68 20  72 6f 75 74 69 6e 65 73  |to.such routines|
0001c500  2c 20 61 73 20 77 65 20  73 68 61 6c 6c 20 63 6f  |, as we shall co|
0001c510  6d 65 20 74 6f 20 6c 61  74 65 72 2e 29 20 20 54  |me to later.)  T|
0001c520  68 65 73 65 20 68 61 76  65 20 74 68 65 20 73 61  |hese have the sa|
0001c530  6d 65 20 6e 61 6d 65 20  61 73 20 74 68 65 0a 61  |me name as the.a|
0001c540  63 74 69 6f 6e 20 77 69  74 68 20 22 53 75 62 22  |ction with "Sub"|
0001c550  20 28 73 68 6f 72 74 20  66 6f 72 20 22 73 75 62  | (short for "sub|
0001c560  72 6f 75 74 69 6e 65 22  29 20 6f 6e 20 74 68 65  |routine") on the|
0001c570  20 65 6e 64 3a 20 73 6f  2c 20 22 54 61 6b 65 53  | end: so, "TakeS|
0001c580  75 62 22 20 66 6f 72 0a  69 6e 73 74 61 6e 63 65  |ub" for.instance|
0001c590  2e 0a 0a 0a 54 68 65 20  61 63 74 69 6f 6e 73 20  |....The actions |
0001c5a0  69 6d 70 6c 65 6d 65 6e  74 65 64 20 62 79 20 74  |implemented by t|
0001c5b0  68 65 20 6c 69 62 72 61  72 79 20 61 72 65 20 69  |he library are i|
0001c5c0  6e 20 74 68 72 65 65 20  67 72 6f 75 70 73 3a 0a  |n three groups:.|
0001c5d0  0a 20 31 2e 20 51 75 69  74 2c 20 52 65 73 74 61  |. 1. Quit, Resta|
0001c5e0  72 74 2c 20 52 65 73 74  6f 72 65 2c 20 56 65 72  |rt, Restore, Ver|
0001c5f0  69 66 79 2c 20 53 61 76  65 2c 20 53 63 72 69 70  |ify, Save, Scrip|
0001c600  74 4f 6e 2c 20 53 63 72  69 70 74 4f 66 66 2c 0a  |tOn, ScriptOff,.|
0001c610  20 20 20 20 42 72 69 65  66 2c 20 4e 6f 72 6d 61  |    Brief, Norma|
0001c620  6c 2c 20 56 65 72 62 6f  73 65 3b 0a 20 20 0a 20  |l, Verbose;.  . |
0001c630  32 2e 20 49 6e 76 2c 20  54 61 6b 65 2c 20 44 72  |2. Inv, Take, Dr|
0001c640  6f 70 2c 20 52 65 6d 6f  76 65 2c 20 50 75 74 4f  |op, Remove, PutO|
0001c650  6e 2c 20 49 6e 73 65 72  74 2c 20 54 72 61 6e 73  |n, Insert, Trans|
0001c660  66 65 72 2c 20 45 6d 70  74 79 2c 0a 20 20 20 20  |fer, Empty,.    |
0001c670  45 6e 74 65 72 2c 20 45  78 69 74 2c 20 47 6f 2c  |Enter, Exit, Go,|
0001c680  20 4c 6f 6f 6b 2c 20 45  78 61 6d 69 6e 65 2c 20  | Look, Examine, |
0001c690  47 69 76 65 2c 0a 20 20  20 20 55 6e 6c 6f 63 6b  |Give,.    Unlock|
0001c6a0  2c 20 4c 6f 63 6b 2c 20  53 77 69 74 63 68 4f 6e  |, Lock, SwitchOn|
0001c6b0  2c 20 53 77 69 74 63 68  4f 66 66 2c 20 4f 70 65  |, SwitchOff, Ope|
0001c6c0  6e 2c 20 43 6c 6f 73 65  2c 20 44 69 73 72 6f 62  |n, Close, Disrob|
0001c6d0  65 2c 20 57 65 61 72 2c  20 45 61 74 3b 0a 0a 20  |e, Wear, Eat;.. |
0001c6e0  33 2e 20 59 65 73 2c 20  4e 6f 2c 20 42 75 72 6e  |3. Yes, No, Burn|
0001c6f0  2c 20 50 72 61 79 2c 20  57 61 6b 65 2c 20 57 61  |, Pray, Wake, Wa|
0001c700  6b 65 4f 74 68 65 72 20  5b 70 65 72 73 6f 6e 5d  |keOther [person]|
0001c710  2c 0a 20 20 20 20 4b 69  73 73 2c 20 54 68 69 6e  |,.    Kiss, Thin|
0001c720  6b 2c 20 53 6d 65 6c 6c  2c 20 4c 69 73 74 65 6e  |k, Smell, Listen|
0001c730  2c 20 54 61 73 74 65 2c  20 54 6f 75 63 68 2c 20  |, Taste, Touch, |
0001c740  54 6f 75 63 68 54 68 69  6e 67 2c 20 44 69 67 2c  |TouchThing, Dig,|
0001c750  0a 20 20 20 20 43 75 74  2c 20 4a 75 6d 70 20 5b  |.    Cut, Jump [|
0001c760  6a 75 6d 70 20 6f 6e 20  74 68 65 20 73 70 6f 74  |jump on the spot|
0001c770  5d 2c 20 4a 75 6d 70 4f  76 65 72 2c 20 54 69 65  |], JumpOver, Tie|
0001c780  2c 20 44 72 69 6e 6b 2c  0a 20 20 20 20 46 69 6c  |, Drink,.    Fil|
0001c790  6c 2c 20 53 6f 72 72 79  2c 20 53 74 72 6f 6e 67  |l, Sorry, Strong|
0001c7a0  20 5b 73 77 65 61 72 20  77 6f 72 64 5d 2c 20 4d  | [swear word], M|
0001c7b0  69 6c 64 20 5b 73 77 65  61 72 20 77 6f 72 64 5d  |ild [swear word]|
0001c7c0  2c 20 41 74 74 61 63 6b  2c 20 53 77 69 6d 2c 0a  |, Attack, Swim,.|
0001c7d0  20 20 20 20 53 77 69 6e  67 20 5b 73 6f 6d 65 74  |    Swing [somet|
0001c7e0  68 69 6e 67 5d 2c 20 42  6c 6f 77 2c 20 52 75 62  |hing], Blow, Rub|
0001c7f0  2c 20 53 65 74 2c 20 57  61 76 65 48 61 6e 64 73  |, Set, WaveHands|
0001c800  20 5b 69 65 2c 20 6a 75  73 74 20 22 77 61 76 65  | [ie, just "wave|
0001c810  22 5d 2c 0a 20 20 20 20  57 61 76 65 20 5b 73 6f  |"],.    Wave [so|
0001c820  6d 65 74 68 69 6e 67 5d  2c 20 50 75 6c 6c 2c 20  |mething], Pull, |
0001c830  50 75 73 68 2c 20 50 75  73 68 44 69 72 20 5b 70  |Push, PushDir [p|
0001c840  75 73 68 20 73 6f 6d 65  74 68 69 6e 67 20 69 6e  |ush something in|
0001c850  20 61 20 64 69 72 65 63  74 69 6f 6e 5d 2c 0a 20  | a direction],. |
0001c860  20 20 20 54 75 72 6e 2c  20 53 71 75 65 65 7a 65  |   Turn, Squeeze|
0001c870  2c 20 4c 6f 6f 6b 55 6e  64 65 72 20 5b 6c 6f 6f  |, LookUnder [loo|
0001c880  6b 20 75 6e 64 65 72 6e  65 61 74 68 20 73 6f 6d  |k underneath som|
0001c890  65 74 68 69 6e 67 5d 2c  20 53 65 61 72 63 68 2c  |ething], Search,|
0001c8a0  0a 20 20 20 20 54 68 72  6f 77 41 74 2c 20 41 6e  |.    ThrowAt, An|
0001c8b0  73 77 65 72 2c 20 42 75  79 2c 20 41 73 6b 2c 20  |swer, Buy, Ask, |
0001c8c0  53 69 6e 67 2c 20 43 6c  69 6d 62 2c 20 57 61 69  |Sing, Climb, Wai|
0001c8d0  74 2c 20 53 6c 65 65 70  0a 0a 4e 6f 74 65 20 74  |t, Sleep..Note t|
0001c8e0  68 61 74 20 74 68 65 20  70 6c 61 79 65 72 20 63  |hat the player c|
0001c8f0  61 6e 20 74 79 70 65 20  61 6c 6c 20 6d 61 6e 6e  |an type all mann|
0001c900  65 72 20 6f 66 20 74 68  69 6e 67 73 20 74 6f 20  |er of things to |
0001c910  67 65 74 20 74 68 65 73  65 2e 20 20 46 6f 72 0a  |get these.  For.|
0001c920  69 6e 73 74 61 6e 63 65  2c 20 22 74 61 6b 65 20  |instance, "take |
0001c930  6f 66 66 20 73 68 69 72  74 22 20 61 6e 64 20 22  |off shirt" and "|
0001c940  72 65 6d 6f 76 65 20 74  68 65 20 73 68 69 72 74  |remove the shirt|
0001c950  22 20 62 6f 74 68 20 63  61 75 73 65 20 74 68 65  |" both cause the|
0001c960  20 44 69 73 72 6f 62 65  0a 61 63 74 69 6f 6e 2e  | Disrobe.action.|
0001c970  20 20 59 6f 75 72 20 63  6f 64 65 20 63 61 6e 20  |  Your code can |
0001c980  69 67 6e 6f 72 65 20 74  68 69 73 20 63 6f 6d 70  |ignore this comp|
0001c990  6c 69 63 61 74 69 6f 6e  2e 0a 0a 47 72 6f 75 70  |lication...Group|
0001c9a0  20 31 20 61 63 74 69 6f  6e 73 20 61 72 65 20 63  | 1 actions are c|
0001c9b0  61 6c 6c 65 64 20 22 6d  65 74 61 22 20 2d 20 74  |alled "meta" - t|
0001c9c0  68 65 79 20 61 72 65 20  6f 75 74 73 69 64 65 20  |hey are outside |
0001c9d0  74 68 65 20 67 61 6d 65  20 70 72 6f 70 65 72 2c  |the game proper,|
0001c9e0  20 61 6e 64 0a 79 6f 75  72 20 63 6f 64 65 20 69  | and.your code i|
0001c9f0  73 20 75 6e 61 62 6c 65  20 74 6f 20 69 6e 74 65  |s unable to inte|
0001ca00  72 66 65 72 65 20 77 69  74 68 20 74 68 65 6d 2e  |rfere with them.|
0001ca10  20 20 28 49 66 20 79 6f  75 20 77 61 6e 74 20 61  |  (If you want a|
0001ca20  20 72 6f 6f 6d 20 77 68  65 72 65 20 74 68 65 0a  | room where the.|
0001ca30  67 61 6d 65 20 63 61 6e  27 74 20 62 65 20 73 61  |game can't be sa|
0001ca40  76 65 64 2c 20 61 73 20  66 6f 72 20 69 6e 73 74  |ved, as for inst|
0001ca50  61 6e 63 65 20 22 53 70  65 6c 6c 62 72 65 61 6b  |ance "Spellbreak|
0001ca60  65 72 22 20 63 75 6e 6e  69 6e 67 6c 79 20 64 6f  |er" cunningly do|
0001ca70  65 73 2c 20 79 6f 75 27  6c 6c 0a 68 61 76 65 20  |es, you'll.have |
0001ca80  74 6f 20 74 61 6d 70 65  72 20 77 69 74 68 20 53  |to tamper with S|
0001ca90  61 76 65 53 75 62 20 64  69 72 65 63 74 6c 79 2c  |aveSub directly,|
0001caa0  20 73 61 79 20 77 69 74  68 20 61 20 52 65 70 6c  | say with a Repl|
0001cab0  61 63 65 6d 65 6e 74 20  72 6f 75 74 69 6e 65 3a  |acement routine:|
0001cac0  20 73 65 65 0a 6c 61 74  65 72 2e 29 0a 0a 47 72  | see.later.)..Gr|
0001cad0  6f 75 70 20 32 20 61 63  74 69 6f 6e 73 2c 20 62  |oup 2 actions, b|
0001cae0  79 20 64 65 66 61 75 6c  74 2c 20 61 63 74 75 61  |y default, actua|
0001caf0  6c 6c 79 20 64 6f 20 73  6f 6d 65 74 68 69 6e 67  |lly do something|
0001cb00  3b 20 67 72 6f 75 70 20  33 20 61 63 74 69 6f 6e  |; group 3 action|
0001cb10  73 2c 0a 62 79 20 64 65  66 61 75 6c 74 2c 20 64  |s,.by default, d|
0001cb20  6f 20 6e 6f 74 68 69 6e  67 20 62 75 74 20 72 65  |o nothing but re|
0001cb30  70 6c 79 20 77 69 74 68  20 61 20 67 65 6e 65 72  |ply with a gener|
0001cb40  61 6c 6c 79 20 6e 65 67  61 74 69 76 65 20 6d 65  |ally negative me|
0001cb50  73 73 61 67 65 2e 0a 0a  0a 41 6c 74 68 6f 75 67  |ssage....Althoug|
0001cb60  68 20 61 6c 6c 20 61 63  74 69 6f 6e 73 20 63 61  |h all actions ca|
0001cb70  6c 6c 20 74 68 65 20 22  62 65 66 6f 72 65 22 20  |ll the "before" |
0001cb80  72 6f 75 74 69 6e 65 73  2c 20 6e 6f 74 20 61 6c  |routines, not al|
0001cb90  6c 20 6f 66 20 74 68 65  6d 20 62 6f 74 68 65 72  |l of them bother|
0001cba0  20 74 6f 0a 63 68 65 63  6b 20 22 61 66 74 65 72  | to.check "after|
0001cbb0  22 20 72 6f 75 74 69 6e  65 73 2e 20 20 46 6f 72  |" routines.  For|
0001cbc0  20 69 6e 73 74 61 6e 63  65 2c 20 73 69 6e 63 65  | instance, since|
0001cbd0  20 74 68 65 20 62 75 69  6c 74 2d 69 6e 20 53 6d  | the built-in Sm|
0001cbe0  65 6c 6c 53 75 62 20 72  6f 75 74 69 6e 65 0a 6a  |ellSub routine.j|
0001cbf0  75 73 74 20 73 61 79 73  20 22 59 6f 75 20 73 6d  |ust says "You sm|
0001cc00  65 6c 6c 20 6e 6f 74 68  69 6e 67 20 6f 75 74 20  |ell nothing out |
0001cc10  6f 66 20 74 68 65 20 6f  72 64 69 6e 61 72 79 22  |of the ordinary"|
0001cc20  2c 20 74 68 65 72 65 20  77 6f 75 6c 64 20 62 65  |, there would be|
0001cc30  20 6e 6f 20 70 6f 69 6e  74 0a 63 61 6c 6c 69 6e  | no point.callin|
0001cc40  67 20 22 61 66 74 65 72  22 20 72 6f 75 74 69 6e  |g "after" routin|
0001cc50  65 73 20 2d 20 6e 6f 74  68 69 6e 67 2c 20 61 66  |es - nothing, af|
0001cc60  74 65 72 20 61 6c 6c 2c  20 68 61 73 20 62 65 65  |ter all, has bee|
0001cc70  6e 20 64 6f 6e 65 2e 20  20 28 54 68 65 73 65 20  |n done.  (These |
0001cc80  61 72 65 0a 74 68 65 20  67 72 6f 75 70 20 33 20  |are.the group 3 |
0001cc90  61 63 74 69 6f 6e 73 20  61 62 6f 76 65 2e 29 0a  |actions above.).|
0001cca0  0a 54 68 65 20 6f 6e 65  73 20 77 68 69 63 68 20  |.The ones which |
0001ccb0  61 63 74 75 61 6c 6c 79  20 64 6f 20 73 6f 6d 65  |actually do some|
0001ccc0  74 68 69 6e 67 2c 20 61  6e 64 20 63 61 6c 6c 20  |thing, and call |
0001ccd0  22 61 66 74 65 72 22 2c  20 61 72 65 3a 0a 0a 20  |"after", are:.. |
0001cce0  20 49 6e 76 2c 20 54 61  6b 65 2c 20 44 72 6f 70  | Inv, Take, Drop|
0001ccf0  2c 20 52 65 6d 6f 76 65  2c 20 50 75 74 4f 6e 2c  |, Remove, PutOn,|
0001cd00  20 49 6e 73 65 72 74 2c  20 45 78 69 74 2c 20 47  | Insert, Exit, G|
0001cd10  6f 2c 20 4c 6f 6f 6b 2c  20 45 78 61 6d 69 6e 65  |o, Look, Examine|
0001cd20  2c 20 55 6e 6c 6f 63 6b  2c 0a 20 20 4c 6f 63 6b  |, Unlock,.  Lock|
0001cd30  2c 20 53 77 69 74 63 68  4f 6e 2c 20 53 77 69 74  |, SwitchOn, Swit|
0001cd40  63 68 4f 66 66 2c 20 4f  70 65 6e 2c 20 43 6c 6f  |chOff, Open, Clo|
0001cd50  73 65 2c 20 44 69 73 72  6f 62 65 2c 20 57 65 61  |se, Disrobe, Wea|
0001cd60  72 2c 20 45 61 74 2c 20  53 65 61 72 63 68 2e 0a  |r, Eat, Search..|
0001cd70  0a 28 53 6f 6d 65 20 6f  74 68 65 72 20 67 72 6f  |.(Some other gro|
0001cd80  75 70 20 32 20 61 63 74  69 6f 6e 73 20 75 73 65  |up 2 actions use|
0001cd90  20 74 68 65 73 65 20 22  61 66 74 65 72 22 20 72  | these "after" r|
0001cda0  6f 75 74 69 6e 65 73 20  69 6e 64 69 72 65 63 74  |outines indirect|
0001cdb0  6c 79 20 2d 20 69 66 20  74 68 65 0a 70 6c 61 79  |ly - if the.play|
0001cdc0  65 72 20 65 6d 70 74 69  65 73 20 61 20 73 61 63  |er empties a sac|
0001cdd0  6b 20 6f 75 74 20 6f 6e  74 6f 20 74 68 65 20 66  |k out onto the f|
0001cde0  6c 6f 6f 72 2c 20 74 68  69 73 20 69 73 20 64 65  |loor, this is de|
0001cdf0  65 6d 65 64 20 74 6f 20  62 65 20 64 72 6f 70 70  |emed to be dropp|
0001ce00  69 6e 67 20 74 68 65 0a  6f 62 6a 65 63 74 73 20  |ing the.objects |
0001ce10  77 69 74 68 69 6e 2c 20  66 6f 72 20 69 6e 73 74  |within, for inst|
0001ce20  61 6e 63 65 2c 20 61 6e  64 20 69 66 20 61 20 73  |ance, and if a s|
0001ce30  61 63 6b 20 69 73 20 65  6d 70 74 69 65 64 20 69  |ack is emptied i|
0001ce40  6e 74 6f 20 61 20 70 61  63 6b 69 6e 67 20 63 61  |nto a packing ca|
0001ce50  73 65 0a 74 68 69 73 20  69 73 20 63 6f 6e 73 69  |se.this is consi|
0001ce60  64 65 72 65 64 20 61 20  6d 75 6c 74 69 70 6c 65  |dered a multiple|
0001ce70  20 69 6e 73 65 72 74 69  6f 6e 2e 29 0a 0a 0a 54  | insertion.)...T|
0001ce80  68 65 20 6c 69 62 72 61  72 79 27 73 20 61 63 74  |he library's act|
0001ce90  69 6f 6e 73 20 61 72 65  20 65 61 73 69 6c 79 20  |ions are easily |
0001cea0  61 64 64 65 64 20 74 6f  2e 20 20 46 6f 72 20 69  |added to.  For i|
0001ceb0  6e 73 74 61 6e 63 65 2c  20 61 64 64 20 74 68 65  |nstance, add the|
0001cec0  20 72 6f 75 74 69 6e 65  3a 0a 0a 20 20 20 20 20  | routine:..     |
0001ced0  5b 20 42 6c 6f 72 70 6c  65 53 75 62 3b 0a 20 20  |[ BlorpleSub;.  |
0001cee0  20 20 20 20 20 20 20 22  59 6f 75 20 73 70 65 61  |       "You spea|
0001cef0  6b 20 74 68 65 20 6d 61  67 69 63 20 77 6f 72 64  |k the magic word|
0001cf00  20 7e 42 6c 6f 72 70 6c  65 7e 2e 20 20 4e 6f 74  | ~Blorple~.  Not|
0001cf10  68 69 6e 67 20 68 61 70  70 65 6e 73 2e 22 3b 0a  |hing happens.";.|
0001cf20  20 20 20 20 20 5d 3b 0a  0a 28 73 6f 6d 65 77 68  |     ];..(somewh|
0001cf30  65 72 65 20 61 66 74 65  72 20 74 68 65 20 49 6e  |ere after the In|
0001cf40  69 74 69 61 6c 69 73 65  20 72 6f 75 74 69 6e 65  |itialise routine|
0001cf50  2c 20 73 61 79 2c 20 74  6f 20 62 65 20 74 69 64  |, say, to be tid|
0001cf60  79 29 2e 20 20 54 68 65  72 65 20 69 73 20 6e 6f  |y).  There is no|
0001cf70  77 0a 61 6e 20 61 63 74  69 6f 6e 20 22 42 6c 6f  |w.an action "Blo|
0001cf80  72 70 6c 65 22 20 28 74  68 6f 75 67 68 20 69 74  |rple" (though it|
0001cf90  20 64 6f 65 73 6e 27 74  20 64 6f 20 61 6e 79 74  | doesn't do anyt|
0001cfa0  68 69 6e 67 20 76 65 72  79 20 69 6e 74 65 72 65  |hing very intere|
0001cfb0  73 74 69 6e 67 29 2e 20  20 4f 6e 65 0a 63 61 6e  |sting).  One.can|
0001cfc0  20 75 73 65 20 74 68 65  20 63 6f 6d 6d 61 6e 64  | use the command|
0001cfd0  20 3c 42 6c 6f 72 70 6c  65 3e 3b 20 74 6f 20 6d  | <Blorple>; to m|
0001cfe0  61 6b 65 20 69 74 20 68  61 70 70 65 6e 2c 20 61  |ake it happen, a|
0001cff0  6e 64 20 63 6f 75 6c 64  20 63 68 61 6e 67 65 20  |nd could change |
0001d000  74 68 65 0a 22 62 65 66  6f 72 65 22 20 72 6f 75  |the."before" rou|
0001d010  74 69 6e 65 20 6f 66 2c  20 73 61 79 2c 20 74 68  |tine of, say, th|
0001d020  65 20 43 6f 72 72 69 64  6f 72 2c 20 74 6f 20 6d  |e Corridor, to m|
0001d030  61 6b 65 20 42 6c 6f 72  70 6c 65 20 64 6f 20 73  |ake Blorple do s|
0001d040  6f 6d 65 74 68 69 6e 67  0a 65 78 63 69 74 69 6e  |omething.excitin|
0001d050  67 20 69 6e 20 74 68 61  74 20 6f 6e 65 20 70 6c  |g in that one pl|
0001d060  61 63 65 2e 20 20 49 6e  20 6f 74 68 65 72 20 77  |ace.  In other w|
0001d070  6f 72 64 73 2c 20 42 6c  6f 72 70 6c 65 20 69 73  |ords, Blorple is|
0001d080  20 6e 6f 77 20 61 6e 20  61 63 74 69 6f 6e 20 6a  | now an action j|
0001d090  75 73 74 0a 6c 69 6b 65  20 61 6e 79 20 6f 74 68  |ust.like any oth|
0001d0a0  65 72 2e 0a 0a 42 75 74  20 74 68 65 20 70 6c 61  |er...But the pla|
0001d0b0  79 65 72 20 63 61 6e 27  74 20 79 65 74 20 74 79  |yer can't yet ty|
0001d0c0  70 65 20 22 62 6c 6f 72  70 6c 65 22 20 61 6e 64  |pe "blorple" and|
0001d0d0  20 67 65 74 20 74 68 69  73 20 72 65 73 70 6f 6e  | get this respon|
0001d0e0  73 65 2c 20 62 65 63 61  75 73 65 0a 61 6c 74 68  |se, because.alth|
0001d0f0  6f 75 67 68 20 74 68 65  20 61 63 74 69 6f 6e 20  |ough the action |
0001d100  65 78 69 73 74 73 2c 20  69 74 20 68 61 73 6e 27  |exists, it hasn'|
0001d110  74 20 62 65 65 6e 20 77  72 69 74 74 65 6e 20 69  |t been written i|
0001d120  6e 74 6f 20 74 68 65 20  67 72 61 6d 6d 61 72 20  |nto the grammar |
0001d130  6f 66 0a 74 68 65 20 67  61 6d 65 2e 20 20 54 68  |of.the game.  Th|
0001d140  65 20 67 72 61 6d 6d 61  72 20 69 73 20 61 20 6c  |e grammar is a l|
0001d150  61 72 67 65 20 74 61 62  6c 65 20 28 6d 6f 73 74  |arge table (most|
0001d160  6c 79 20 77 72 69 74 74  65 6e 20 6f 75 74 20 69  |ly written out i|
0001d170  6e 20 74 68 65 20 22 47  72 61 6d 6d 61 72 22 0a  |n the "Grammar".|
0001d180  6c 69 62 72 61 72 79 20  66 69 6c 65 29 2e 20 20  |library file).  |
0001d190  49 74 20 63 61 6e 20 65  61 73 69 6c 79 20 62 65  |It can easily be|
0001d1a0  20 61 64 64 65 64 20 74  6f 2c 20 61 6e 64 20 69  | added to, and i|
0001d1b0  6e 20 74 68 69 73 20 63  61 73 65 20 77 65 20 73  |n this case we s|
0001d1c0  69 6d 70 6c 79 20 61 64  64 0a 74 68 65 20 6c 69  |imply add.the li|
0001d1d0  6e 65 73 0a 0a 20 20 20  20 20 56 65 72 62 20 22  |nes..     Verb "|
0001d1e0  62 6c 6f 72 70 6c 65 22  0a 20 20 20 20 20 20 20  |blorple".       |
0001d1f0  20 20 20 20 20 20 20 20  20 2a 20 20 20 20 20 20  |         *      |
0001d200  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001d210  20 20 20 20 20 20 20 20  20 20 2d 3e 20 42 6c 6f  |          -> Blo|
0001d220  72 70 6c 65 3b 0a 0a 69  6d 6d 65 64 69 61 74 65  |rple;..immediate|
0001d230  6c 79 20 61 66 74 65 72  20 74 68 65 20 69 6e 63  |ly after the inc|
0001d240  6c 75 73 69 6f 6e 20 6f  66 20 74 68 65 20 22 47  |lusion of the "G|
0001d250  72 61 6d 6d 61 72 22 20  66 69 6c 65 2e 20 20 54  |rammar" file.  T|
0001d260  68 69 73 20 69 73 20 61  62 6f 75 74 20 61 73 0a  |his is about as.|
0001d270  73 69 6d 70 6c 65 20 61  73 20 67 72 61 6d 6d 61  |simple as gramma|
0001d280  72 20 6c 69 6e 65 73 20  63 6f 6d 65 2c 20 61 6e  |r lines come, an|
0001d290  64 20 6d 65 61 6e 73 20  74 68 61 74 20 6f 6e 6c  |d means that onl|
0001d2a0  79 20 74 68 65 20 77 6f  72 64 20 22 62 6c 6f 72  |y the word "blor|
0001d2b0  70 6c 65 22 20 63 61 6e  0a 62 65 20 75 73 65 64  |ple" can.be used|
0001d2c0  20 61 73 20 61 20 76 65  72 62 2c 20 61 6e 64 20  | as a verb, and |
0001d2d0  69 74 20 63 61 6e 27 74  20 61 70 70 6c 79 20 74  |it can't apply t|
0001d2e0  6f 20 61 6e 79 20 6e 6f  75 6e 20 6f 72 20 6e 6f  |o any noun or no|
0001d2f0  75 6e 73 2e 0a 0a 47 72  61 6d 6d 61 72 20 69 73  |uns...Grammar is|
0001d300  20 6d 6f 72 65 20 66 75  6c 6c 79 20 64 65 73 63  | more fully desc|
0001d310  72 69 62 65 64 20 69 6e  20 28 31 34 29 2c 20 62  |ribed in (14), b|
0001d320  75 74 20 6c 6f 6f 6b 69  6e 67 20 61 74 20 74 68  |ut looking at th|
0001d330  65 20 67 72 61 6d 6d 61  72 20 74 61 62 6c 65 0a  |e grammar table.|
0001d340  69 6e 20 74 68 65 20 22  47 72 61 6d 6d 61 72 22  |in the "Grammar"|
0001d350  20 66 69 6c 65 20 77 69  6c 6c 20 67 69 76 65 20  | file will give |
0001d360  61 20 66 61 69 72 20 69  64 65 61 20 6f 66 20 77  |a fair idea of w|
0001d370  68 61 74 20 69 74 20 63  61 6e 20 64 6f 2e 0a 0a  |hat it can do...|
0001d380  0a 49 74 20 69 73 20 74  69 6d 65 20 74 6f 20 62  |.It is time to b|
0001d390  65 20 6d 6f 72 65 20 70  72 65 63 69 73 65 20 61  |e more precise a|
0001d3a0  62 6f 75 74 20 74 68 65  20 65 78 61 63 74 20 73  |bout the exact s|
0001d3b0  65 71 75 65 6e 63 65 20  6f 66 20 65 76 65 6e 74  |equence of event|
0001d3c0  73 2e 20 20 53 75 70 70  6f 73 65 0a 74 68 65 20  |s.  Suppose.the |
0001d3d0  70 6c 61 79 65 72 20 69  73 20 69 6e 20 74 68 65  |player is in the|
0001d3e0  20 42 65 64 71 75 69 6c  74 20 52 6f 6f 6d 2c 20  | Bedquilt Room, |
0001d3f0  61 6e 64 20 74 79 70 65  73 20 22 64 72 6f 70 20  |and types "drop |
0001d400  6f 79 73 74 65 72 22 2e  20 20 4f 6e 63 65 20 69  |oyster".  Once i|
0001d410  74 20 68 61 73 0a 63 68  65 63 6b 65 64 20 74 68  |t has.checked th|
0001d420  61 74 20 74 68 69 73 20  69 73 20 61 20 72 65 61  |at this is a rea|
0001d430  73 6f 6e 61 62 6c 65 20  63 6f 6d 6d 61 6e 64 2c  |sonable command,|
0001d440  20 74 68 65 20 70 61 72  73 65 72 20 64 6f 65 73  | the parser does|
0001d450  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 3a 0a  | the following:.|
0001d460  0a 20 20 20 31 2e 20 20  43 61 6c 6c 20 47 61 6d  |.   1.  Call Gam|
0001d470  65 50 72 65 52 6f 75 74  69 6e 65 20 28 69 66 20  |ePreRoutine (if |
0001d480  74 68 65 72 65 20 69 73  20 6f 6e 65 29 2e 0a 20  |there is one).. |
0001d490  20 20 20 20 20 20 49 66  20 74 68 69 73 20 72 65  |      If this re|
0001d4a0  74 75 72 6e 73 20 74 72  75 65 2c 20 73 74 6f 70  |turns true, stop|
0001d4b0  20 68 65 72 65 2e 0a 0a  20 20 20 32 2e 20 20 43  | here...   2.  C|
0001d4c0  61 6c 6c 20 74 68 65 20  22 62 65 66 6f 72 65 22  |all the "before"|
0001d4d0  20 6f 66 20 42 65 64 71  75 69 6c 74 20 52 6f 6f  | of Bedquilt Roo|
0001d4e0  6d 2e 0a 20 20 20 20 20  20 20 49 66 20 74 68 69  |m..       If thi|
0001d4f0  73 20 72 65 74 75 72 6e  73 20 74 72 75 65 2c 20  |s returns true, |
0001d500  73 74 6f 70 20 68 65 72  65 2e 0a 0a 20 20 20 33  |stop here...   3|
0001d510  2e 20 20 54 68 65 6e 20  74 68 65 20 22 62 65 66  |.  Then the "bef|
0001d520  6f 72 65 22 20 6f 66 20  74 68 65 20 6f 79 73 74  |ore" of the oyst|
0001d530  65 72 2e 0a 20 20 20 20  20 20 20 49 66 20 74 68  |er..       If th|
0001d540  69 73 20 72 65 74 75 72  6e 73 20 74 72 75 65 2c  |is returns true,|
0001d550  20 73 74 6f 70 20 68 65  72 65 2e 0a 0a 20 20 20  | stop here...   |
0001d560  34 2e 20 20 41 63 74 75  61 6c 6c 79 20 64 72 6f  |4.  Actually dro|
0001d570  70 20 74 68 65 20 6f 62  6a 65 63 74 2e 0a 0a 20  |p the object... |
0001d580  20 20 35 2e 20 20 43 61  6c 6c 20 74 68 65 20 22  |  5.  Call the "|
0001d590  61 66 74 65 72 22 20 6f  66 20 42 65 64 71 75 69  |after" of Bedqui|
0001d5a0  6c 74 2e 0a 20 20 20 20  20 20 20 49 66 20 74 68  |lt..       If th|
0001d5b0  69 73 20 72 65 74 75 72  6e 73 20 74 72 75 65 2c  |is returns true,|
0001d5c0  20 73 74 6f 70 20 68 65  72 65 2e 0a 0a 20 20 20  | stop here...   |
0001d5d0  36 2e 20 20 54 68 65 6e  20 74 68 65 20 22 61 66  |6.  Then the "af|
0001d5e0  74 65 72 22 20 6f 66 20  74 68 65 20 6f 79 73 74  |ter" of the oyst|
0001d5f0  65 72 2e 0a 20 20 20 20  20 20 20 49 66 20 74 68  |er..       If th|
0001d600  69 73 20 72 65 74 75 72  6e 73 20 74 72 75 65 2c  |is returns true,|
0001d610  20 73 74 6f 70 20 68 65  72 65 2e 0a 0a 20 20 20  | stop here...   |
0001d620  37 2e 20 20 43 61 6c 6c  20 47 61 6d 65 50 6f 73  |7.  Call GamePos|
0001d630  74 52 6f 75 74 69 6e 65  20 28 69 66 20 74 68 65  |tRoutine (if the|
0001d640  72 65 20 69 73 20 6f 6e  65 29 2e 0a 20 20 20 20  |re is one)..    |
0001d650  20 20 20 49 66 20 74 68  69 73 20 72 65 74 75 72  |   If this retur|
0001d660  6e 73 20 74 72 75 65 2c  20 73 74 6f 70 20 68 65  |ns true, stop he|
0001d670  72 65 2e 0a 0a 20 20 20  38 2e 20 20 50 72 69 6e  |re...   8.  Prin|
0001d680  74 20 22 44 72 6f 70 70  65 64 2e 22 0a 0a 28 47  |t "Dropped."..(G|
0001d690  61 6d 65 50 72 65 52 6f  75 74 69 6e 65 20 61 6e  |amePreRoutine an|
0001d6a0  64 20 47 61 6d 65 50 6f  73 74 52 6f 75 74 69 6e  |d GamePostRoutin|
0001d6b0  65 20 61 72 65 20 72 6f  75 74 69 6e 65 73 20 79  |e are routines y|
0001d6c0  6f 75 20 63 61 6e 20 6f  70 74 69 6f 6e 61 6c 6c  |ou can optionall|
0001d6d0  79 0a 70 72 6f 76 69 64  65 20 74 6f 20 6d 61 6b  |y.provide to mak|
0001d6e0  65 20 67 6c 6f 62 61 6c  20 72 75 6c 65 20 63 68  |e global rule ch|
0001d6f0  61 6e 67 65 73 3a 20 74  68 65 69 72 20 75 73 65  |anges: their use|
0001d700  20 69 73 20 74 6f 20 62  65 20 61 76 6f 69 64 65  | is to be avoide|
0001d710  64 20 69 66 0a 70 6f 73  73 69 62 6c 65 2c 20 61  |d if.possible, a|
0001d720  73 20 69 74 20 75 73 75  61 6c 6c 79 20 69 73 2c  |s it usually is,|
0001d730  20 66 6f 72 20 72 65 61  73 6f 6e 73 20 6f 66 20  | for reasons of |
0001d740  73 70 65 65 64 20 61 6e  64 20 74 69 64 69 6e 65  |speed and tidine|
0001d750  73 73 2e 29 0a 0a 0a 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ss.)...---------|
0001d760  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0001d7a0  2d 2d 0a 44 34 2e 20 20  43 6f 6e 74 61 69 6e 65  |--.D4.  Containe|
0001d7b0  72 73 2c 20 64 6f 6f 72  73 2c 20 73 77 69 74 63  |rs, doors, switc|
0001d7c0  68 65 73 20 61 6e 64 20  76 65 68 69 63 6c 65 73  |hes and vehicles|
0001d7d0  0a 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.---------------|
0001d7e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0001d810  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0a 0a 0a 4f  |------------...O|
0001d820  62 6a 65 63 74 73 20 63  61 6e 20 62 65 20 69 6e  |bjects can be in|
0001d830  73 69 64 65 20 6f 72 20  6f 6e 20 74 6f 70 20 6f  |side or on top o|
0001d840  66 20 6f 6e 65 20 61 6e  6f 74 68 65 72 2e 20 20  |f one another.  |
0001d850  41 6e 20 6f 62 6a 65 63  74 20 77 68 69 63 68 20  |An object which |
0001d860  68 61 73 0a 22 63 6f 6e  74 61 69 6e 65 72 22 20  |has."container" |
0001d870  63 61 6e 20 63 6f 6e 74  61 69 6e 20 74 68 69 6e  |can contain thin|
0001d880  67 73 2c 20 6c 69 6b 65  20 61 20 62 6f 78 3a 20  |gs, like a box: |
0001d890  6f 6e 65 20 77 68 69 63  68 20 68 61 73 20 22 73  |one which has "s|
0001d8a0  75 70 70 6f 72 74 65 72  22 0a 63 61 6e 20 68 6f  |upporter".can ho|
0001d8b0  6c 64 20 74 68 65 6d 20  75 70 2c 20 6c 69 6b 65  |ld them up, like|
0001d8c0  20 61 20 74 61 62 6c 65  2e 20 20 28 41 6e 20 6f  | a table.  (An o|
0001d8d0  62 6a 65 63 74 20 63 61  6e 27 74 20 68 61 76 65  |bject can't have|
0001d8e0  20 62 6f 74 68 20 61 74  20 6f 6e 63 65 2e 29 0a  | both at once.).|
0001d8f0  49 74 20 63 61 6e 20 68  6f 6c 64 20 75 70 20 74  |It can hold up t|
0001d900  6f 20 31 30 30 20 69 74  65 6d 73 2c 20 62 79 20  |o 100 items, by |
0001d910  64 65 66 61 75 6c 74 3a  20 74 68 69 73 20 69 73  |default: this is|
0001d920  20 73 65 74 20 62 79 20  74 68 65 20 22 63 61 70  | set by the "cap|
0001d930  61 63 69 74 79 22 0a 70  72 6f 70 65 72 74 79 2e  |acity".property.|
0001d940  0a 0a 48 6f 77 65 76 65  72 2c 20 6f 6e 65 20 63  |..However, one c|
0001d950  61 6e 20 6f 6e 6c 79 20  70 75 74 20 74 68 69 6e  |an only put thin|
0001d960  67 73 20 69 6e 73 69 64  65 20 73 6f 6d 65 74 68  |gs inside someth|
0001d970  69 6e 67 20 77 68 69 63  68 20 68 61 73 20 22 6f  |ing which has "o|
0001d980  70 65 6e 22 2e 0a 49 66  20 69 74 20 68 61 73 20  |pen"..If it has |
0001d990  22 6f 70 65 6e 61 62 6c  65 22 2c 20 74 68 65 20  |"openable", the |
0001d9a0  70 6c 61 79 65 72 20 63  61 6e 20 6f 70 65 6e 20  |player can open |
0001d9b0  61 6e 64 20 63 6c 6f 73  65 20 69 74 20 61 74 20  |and close it at |
0001d9c0  77 69 6c 6c 2e 20 20 28  55 6e 6c 65 73 73 0a 69  |will.  (Unless.i|
0001d9d0  74 20 61 6c 73 6f 20 68  61 73 20 22 6c 6f 63 6b  |t also has "lock|
0001d9e0  65 64 22 2e 29 0a 0a 54  6f 20 63 6f 6d 70 6c 69  |ed".)..To compli|
0001d9f0  63 61 74 65 20 6d 61 74  74 65 72 73 2c 20 73 6f  |cate matters, so|
0001da00  6d 65 20 63 6f 6e 74 61  69 6e 65 72 73 20 61 72  |me containers ar|
0001da10  65 20 22 74 72 61 6e 73  70 61 72 65 6e 74 22 20  |e "transparent" |
0001da20  28 73 6f 20 74 68 61 74  20 74 68 65 0a 70 6c 61  |(so that the.pla|
0001da30  79 65 72 20 63 61 6e 20  73 65 65 20 69 6e 73 69  |yer can see insi|
0001da40  64 65 20 74 68 65 6d 20  65 76 65 6e 20 77 68 65  |de them even whe|
0001da50  6e 20 74 68 65 79 20 61  72 65 20 63 6c 6f 73 65  |n they are close|
0001da60  64 29 20 61 6e 64 20 73  6f 6d 65 20 61 72 65 20  |d) and some are |
0001da70  6e 6f 74 2e 0a 0a 0a 43  6f 6e 74 61 69 6e 65 72  |not....Container|
0001da80  73 20 28 61 6e 64 20 73  75 70 70 6f 72 74 65 72  |s (and supporter|
0001da90  73 29 20 61 72 65 20 61  62 6c 65 20 74 6f 20 72  |s) are able to r|
0001daa0  65 61 63 74 20 74 6f 20  74 68 69 6e 67 73 20 62  |eact to things b|
0001dab0  65 69 6e 67 20 70 75 74  20 69 6e 73 69 64 65 0a  |eing put inside.|
0001dac0  74 68 65 6d 2c 20 6f 72  20 72 65 6d 6f 76 65 64  |them, or removed|
0001dad0  20 66 72 6f 6d 20 74 68  65 6d 3a 20 66 6f 72 20  | from them: for |
0001dae0  65 78 61 6d 70 6c 65 2c  0a 0a 20 20 20 20 20 4f  |example,..     O|
0001daf0  62 6a 65 63 74 20 62 61  67 20 22 74 6f 6f 74 68  |bject bag "tooth|
0001db00  65 64 20 62 61 67 22 20  72 6f 6f 6d 0a 20 20 20  |ed bag" room.   |
0001db10  20 20 20 20 77 69 74 68  20 6e 61 6d 65 20 22 74  |    with name "t|
0001db20  6f 6f 74 68 65 64 22 20  22 62 61 67 22 2c 0a 20  |oothed" "bag",. |
0001db30  20 20 20 20 20 20 20 20  20 20 20 64 65 73 63 72  |           descr|
0001db40  69 70 74 69 6f 6e 20 22  41 20 63 61 70 61 63 69  |iption "A capaci|
0001db50  6f 75 73 20 62 61 67 20  77 69 74 68 20 61 20 74  |ous bag with a t|
0001db60  6f 6f 74 68 65 64 20 6d  6f 75 74 68 2e 22 2c 0a  |oothed mouth.",.|
0001db70  20 20 20 20 20 20 20 20  20 20 20 20 62 65 66 6f  |            befo|
0001db80  72 65 0a 20 20 20 20 20  20 20 20 20 20 20 20 5b  |re.            [|
0001db90  3b 20 4c 65 74 47 6f 3a  20 22 54 68 65 20 62 61  |; LetGo: "The ba|
0001dba0  67 20 64 65 66 69 61 6e  74 6c 79 20 62 69 74 65  |g defiantly bite|
0001dbb0  73 20 69 74 73 65 6c 66  20 5c 0a 20 20 20 20 20  |s itself \.     |
0001dbc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001dbd0  20 20 73 68 75 74 20 6f  6e 20 79 6f 75 72 20 68  |  shut on your h|
0001dbe0  61 6e 64 20 75 6e 74 69  6c 20 79 6f 75 20 64 65  |and until you de|
0001dbf0  73 69 73 74 2e 22 3b 0a  20 20 20 20 20 20 20 20  |sist.";.        |
0001dc00  20 20 20 20 20 20 20 43  6c 6f 73 65 3a 20 22 54  |       Close: "T|
0001dc10  68 65 20 62 61 67 20 72  65 73 69 73 74 73 20 61  |he bag resists a|
0001dc20  6c 6c 20 61 74 74 65 6d  70 74 73 20 74 6f 20 63  |ll attempts to c|
0001dc30  6c 6f 73 65 20 69 74 2e  22 3b 0a 20 20 20 20 20  |lose it.";.     |
0001dc40  20 20 20 20 20 20 20 5d  2c 0a 20 20 20 20 20 20  |       ],.      |
0001dc50  20 20 20 20 20 20 61 66  74 65 72 0a 20 20 20 20  |      after.    |
0001dc60  20 20 20 20 20 20 20 20  5b 3b 20 52 65 63 65 69  |        [; Recei|
0001dc70  76 65 3a 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ve:.            |
0001dc80  20 20 20 20 20 20 20 70  72 69 6e 74 20 22 54 68  |       print "Th|
0001dc90  65 20 62 61 67 20 77 72  69 67 67 6c 65 73 20 68  |e bag wriggles h|
0001dca0  69 64 65 6f 75 73 6c 79  20 61 73 20 69 74 20 73  |ideously as it s|
0001dcb0  77 61 6c 6c 6f 77 73 20  22 3b 0a 20 20 20 20 20  |wallows ";.     |
0001dcc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 44 65  |              De|
0001dcd0  66 41 72 74 28 69 6e 70  31 29 3b 20 22 2e 22 3b  |fArt(inp1); ".";|
0001dce0  0a 20 20 20 20 20 20 20  20 20 20 20 20 5d 2c 0a  |.            ],.|
0001dcf0  20 20 20 20 20 20 20 68  61 73 20 20 63 6f 6e 74  |       has  cont|
0001dd00  61 69 6e 65 72 20 6f 70  65 6e 3b 0a 0a 6d 61 6b  |ainer open;..mak|
0001dd10  65 73 20 61 20 72 61 74  68 65 72 20 61 63 71 75  |es a rather acqu|
0001dd20  69 73 69 74 69 76 65 20  62 61 67 3a 0a 0a 20 20  |isitive bag:..  |
0001dd30  20 20 3e 70 75 74 20 66  69 73 68 20 69 6e 20 62  |  >put fish in b|
0001dd40  61 67 0a 20 20 20 20 54  68 65 20 62 61 67 20 77  |ag.    The bag w|
0001dd50  72 69 67 67 6c 65 73 20  68 69 64 65 6f 75 73 6c  |riggles hideousl|
0001dd60  79 20 61 73 20 69 74 20  73 77 61 6c 6c 6f 77 73  |y as it swallows|
0001dd70  20 74 68 65 20 66 69 73  68 2e 0a 0a 20 20 20 20  | the fish...    |
0001dd80  3e 67 65 74 20 66 69 73  68 0a 20 20 20 20 54 68  |>get fish.    Th|
0001dd90  65 20 62 61 67 20 64 65  66 69 61 6e 74 6c 79 20  |e bag defiantly |
0001dda0  62 69 74 65 73 20 69 74  73 65 6c 66 20 73 68 75  |bites itself shu|
0001ddb0  74 20 6f 6e 20 79 6f 75  72 20 68 61 6e 64 20 75  |t on your hand u|
0001ddc0  6e 74 69 6c 20 79 6f 75  20 64 65 73 69 73 74 2e  |ntil you desist.|
0001ddd0  0a 0a 28 4c 65 74 47 6f  20 61 6e 64 20 52 65 63  |..(LetGo and Rec|
0001dde0  65 69 76 65 20 61 72 65  20 61 63 74 75 61 6c 6c  |eive are actuall|
0001ddf0  79 20 74 77 6f 20 6f 66  20 74 68 65 20 22 66 61  |y two of the "fa|
0001de00  6b 65 22 20 61 63 74 69  6f 6e 73 3a 20 74 68 65  |ke" actions: the|
0001de10  79 20 61 72 65 0a 74 68  65 20 61 63 74 69 6f 6e  |y are.the action|
0001de20  73 20 49 6e 73 65 72 74  20 61 6e 64 20 52 65 6d  |s Insert and Rem|
0001de30  6f 76 65 20 6c 6f 6f 6b  65 64 20 61 74 20 66 72  |ove looked at fr|
0001de40  6f 6d 20 74 68 65 20 6f  74 68 65 72 20 63 6f 6e  |om the other con|
0001de50  74 61 69 6e 65 72 27 73  20 70 6f 69 6e 74 0a 6f  |tainer's point.o|
0001de60  66 20 76 69 65 77 2e 20  20 49 74 27 73 20 71 75  |f view.  It's qu|
0001de70  69 74 65 20 73 74 72 61  69 67 68 74 66 6f 72 77  |ite straightforw|
0001de80  61 72 64 20 74 6f 20 64  65 66 69 6e 65 20 66 61  |ard to define fa|
0001de90  6b 65 20 61 63 74 69 6f  6e 73 2e 20 20 53 65 65  |ke actions.  See|
0001dea0  20 74 68 65 0a 77 61 79  20 74 68 65 73 65 20 61  | the.way these a|
0001deb0  72 65 20 64 65 66 69 6e  65 64 20 69 6e 20 22 56  |re defined in "V|
0001dec0  65 72 62 6c 69 62 22 20  74 6f 20 67 65 74 20 74  |erblib" to get t|
0001ded0  68 65 20 69 64 65 61 2e  29 0a 0a 0a 4f 62 6a 65  |he idea.)...Obje|
0001dee0  63 74 73 20 77 68 69 63  68 20 68 61 76 65 20 22  |cts which have "|
0001def0  6c 6f 63 6b 65 64 22 20  63 61 6e 6e 6f 74 20 62  |locked" cannot b|
0001df00  65 20 6f 70 65 6e 65 64  2c 20 62 65 20 74 68 65  |e opened, be the|
0001df10  79 20 64 6f 6f 72 73 20  6f 72 20 63 6f 6e 74 61  |y doors or conta|
0001df20  69 6e 65 72 73 0a 28 6f  72 20 62 6f 74 68 29 2e  |iners.(or both).|
0001df30  20 20 42 75 74 20 6f 62  6a 65 63 74 73 20 77 68  |  But objects wh|
0001df40  69 63 68 20 68 61 76 65  20 22 6c 6f 63 6b 61 62  |ich have "lockab|
0001df50  6c 65 22 20 63 61 6e 20  62 65 20 6c 6f 63 6b 65  |le" can be locke|
0001df60  64 20 6f 72 20 75 6e 6c  6f 63 6b 65 64 0a 77 69  |d or unlocked.wi|
0001df70  74 68 20 74 68 65 20 61  70 70 72 6f 70 72 69 61  |th the appropria|
0001df80  74 65 20 6b 65 79 2c 20  77 68 69 63 68 20 69 73  |te key, which is|
0001df90  20 64 65 63 6c 61 72 65  64 20 69 6e 20 74 68 65  | declared in the|
0001dfa0  20 22 77 69 74 68 5f 6b  65 79 22 20 70 72 6f 70  | "with_key" prop|
0001dfb0  65 72 74 79 2e 0a 28 49  66 20 69 74 20 69 73 20  |erty..(If it is |
0001dfc0  75 6e 64 65 63 6c 61 72  65 64 2c 20 74 68 65 6e  |undeclared, then|
0001dfd0  20 6e 6f 20 6b 65 79 20  77 69 6c 6c 20 66 69 74  | no key will fit|
0001dfe0  2e 29 0a 0a 41 73 20 61  20 66 69 6e 61 6c 20 65  |.)..As a final e|
0001dff0  78 61 6d 70 6c 65 20 6f  66 20 61 20 63 6f 6e 74  |xample of a cont|
0001e000  61 69 6e 65 72 2c 20 74  68 69 73 20 69 73 20 61  |ainer, this is a|
0001e010  20 66 61 69 72 6c 79 20  74 79 70 69 63 61 6c 20  | fairly typical |
0001e020  6c 6f 63 6b 65 64 0a 63  75 70 62 6f 61 72 64 3a  |locked.cupboard:|
0001e030  0a 0a 20 20 20 20 20 20  20 4e 65 61 72 62 79 20  |..       Nearby |
0001e040  63 75 70 62 6f 61 72 64  20 22 62 6f 6c 74 65 64  |cupboard "bolted|
0001e050  20 63 75 70 62 6f 61 72  64 22 0a 20 20 20 20 20  | cupboard".     |
0001e060  20 20 20 20 77 69 74 68  20 6e 61 6d 65 20 22 62  |    with name "b|
0001e070  6f 6c 74 65 64 22 20 22  63 75 70 62 6f 61 72 64  |olted" "cupboard|
0001e080  22 2c 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |",.             |
0001e090  20 64 65 73 63 72 69 62  65 0a 20 20 20 20 20 20  | describe.      |
0001e0a0  20 20 20 20 20 20 20 20  5b 3b 20 69 66 20 28 73  |        [; if (s|
0001e0b0  65 6c 66 20 68 61 73 6e  74 20 6f 70 65 6e 29 0a  |elf hasnt open).|
0001e0c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001e0d0  20 20 20 20 20 22 5e 41  20 73 68 75 74 20 63 75  |     "^A shut cu|
0001e0e0  70 62 6f 61 72 64 20 69  73 20 62 6f 6c 74 65 64  |pboard is bolted|
0001e0f0  20 74 6f 20 6f 6e 65 20  77 61 6c 6c 2e 22 3b 0a  | to one wall.";.|
0001e100  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001e110  20 22 5e 42 6f 6c 74 65  64 20 75 70 20 6f 6e 20  | "^Bolted up on |
0001e120  6f 6e 65 20 77 61 6c 6c  20 69 73 20 61 6e 20 6f  |one wall is an o|
0001e130  70 65 6e 20 63 75 70 62  6f 61 72 64 2e 22 3b 0a  |pen cupboard.";.|
0001e140  20 20 20 20 20 20 20 20  20 20 20 20 20 20 5d 2c  |              ],|
0001e150  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 77  |.              w|
0001e160  69 74 68 5f 6b 65 79 20  6b 65 79 0a 20 20 20 20  |ith_key key.    |
0001e170  20 20 20 20 20 68 61 73  20 20 6c 6f 63 6b 65 64  |     has  locked|
0001e180  20 63 6f 6e 74 61 69 6e  65 72 20 6f 70 65 6e 61  | container opena|
0001e190  62 6c 65 20 6c 6f 63 6b  61 62 6c 65 20 73 74 61  |ble lockable sta|
0001e1a0  74 69 63 3b 0a 0a 0a 0a  41 20 75 73 65 66 75 6c  |tic;....A useful|
0001e1b0  20 6b 69 6e 64 20 6f 66  20 6f 62 6a 65 63 74 20  | kind of object |
0001e1c0  69 73 20 61 20 22 64 6f  6f 72 22 2e 20 20 54 68  |is a "door".  Th|
0001e1d0  69 73 20 6e 65 65 64 20  6e 6f 74 20 6c 69 74 65  |is need not lite|
0001e1e0  72 61 6c 6c 79 20 62 65  20 61 20 64 6f 6f 72 3a  |rally be a door:|
0001e1f0  0a 69 74 20 6d 69 67 68  74 20 62 65 20 61 20 72  |.it might be a r|
0001e200  6f 70 65 2d 62 72 69 64  67 65 20 6f 72 20 61 20  |ope-bridge or a |
0001e210  6c 61 64 64 65 72 2c 20  66 6f 72 20 69 6e 73 74  |ladder, for inst|
0001e220  61 6e 63 65 2e 20 20 54  6f 20 73 65 74 20 75 70  |ance.  To set up|
0001e230  20 61 20 64 6f 6f 72 3a  0a 0a 20 20 20 20 28 61  | a door:..    (a|
0001e240  29 20 20 67 69 76 65 20  74 68 65 20 6f 62 6a 65  |)  give the obje|
0001e250  63 74 20 74 68 65 20 22  64 6f 6f 72 22 20 61 74  |ct the "door" at|
0001e260  74 72 69 62 75 74 65 3b  0a 0a 20 20 20 20 28 62  |tribute;..    (b|
0001e270  29 20 20 73 65 74 20 74  68 65 20 22 64 6f 6f 72  |)  set the "door|
0001e280  5f 74 6f 22 20 70 72 6f  70 65 72 74 79 20 74 6f  |_to" property to|
0001e290  20 74 68 65 20 64 65 73  74 69 6e 61 74 69 6f 6e  | the destination|
0001e2a0  3b 0a 0a 20 20 20 20 28  63 29 20 20 73 65 74 20  |;..    (c)  set |
0001e2b0  74 68 65 20 22 64 6f 6f  72 5f 64 69 72 22 20 70  |the "door_dir" p|
0001e2c0  72 6f 70 65 72 74 79 20  74 6f 20 74 68 65 20 64  |roperty to the d|
0001e2d0  69 72 65 63 74 69 6f 6e  20 77 68 69 63 68 20 74  |irection which t|
0001e2e0  68 61 74 20 77 6f 75 6c  64 20 62 65 2c 0a 20 20  |hat would be,.  |
0001e2f0  20 20 20 20 20 20 20 73  75 63 68 20 61 73 20 22  |       such as "|
0001e300  6e 5f 74 6f 22 3b 0a 0a  20 20 20 20 28 64 29 20  |n_to";..    (d) |
0001e310  20 6d 61 6b 65 20 74 68  65 20 72 6f 6f 6d 27 73  | make the room's|
0001e320  20 6d 61 70 20 63 6f 6e  6e 65 63 74 69 6f 6e 20  | map connection |
0001e330  69 6e 20 74 68 61 74 20  64 69 72 65 63 74 69 6f  |in that directio|
0001e340  6e 20 70 6f 69 6e 74 20  74 6f 20 74 68 65 0a 20  |n point to the. |
0001e350  20 20 20 20 20 20 20 20  64 6f 6f 72 20 69 74 73  |        door its|
0001e360  65 6c 66 2e 0a 0a 46 6f  72 20 65 78 61 6d 70 6c  |elf...For exampl|
0001e370  65 2c 20 68 65 72 65 20  69 73 20 61 20 63 6c 6f  |e, here is a clo|
0001e380  73 65 64 20 61 6e 64 20  6c 6f 63 6b 65 64 20 64  |sed and locked d|
0001e390  6f 6f 72 3a 0a 0a 20 20  20 20 20 4f 62 6a 65 63  |oor:..     Objec|
0001e3a0  74 20 49 6e 5f 49 6d 6d  65 6e 73 65 5f 4e 5f 53  |t In_Immense_N_S|
0001e3b0  5f 50 61 73 73 61 67 65  20 22 49 6d 6d 65 6e 73  |_Passage "Immens|
0001e3c0  65 20 4e 2f 53 20 50 61  73 73 61 67 65 22 0a 20  |e N/S Passage". |
0001e3d0  20 20 20 20 20 20 77 69  74 68 20 64 65 73 63 72  |      with descr|
0001e3e0  69 70 74 69 6f 6e 20 22  4f 6e 65 20 65 6e 64 20  |iption "One end |
0001e3f0  6f 66 20 61 6e 20 69 6d  6d 65 6e 73 65 20 6e 6f  |of an immense no|
0001e400  72 74 68 2f 73 6f 75 74  68 20 70 61 73 73 61 67  |rth/south passag|
0001e410  65 2e 22 2c 0a 20 20 20  20 20 20 20 20 20 20 20  |e.",.           |
0001e420  20 73 5f 74 6f 20 49 6e  5f 47 69 61 6e 74 5f 52  | s_to In_Giant_R|
0001e430  6f 6f 6d 2c 0a 20 20 20  20 20 20 20 20 20 20 20  |oom,.           |
0001e440  20 6e 5f 74 6f 20 52 75  73 74 79 44 6f 6f 72 3b  | n_to RustyDoor;|
0001e450  0a 0a 20 20 20 20 20 4e  65 61 72 62 79 20 52 75  |..     Nearby Ru|
0001e460  73 74 79 44 6f 6f 72 20  22 72 75 73 74 79 20 64  |styDoor "rusty d|
0001e470  6f 6f 72 22 0a 20 20 20  20 20 20 20 77 69 74 68  |oor".       with|
0001e480  20 64 65 73 63 72 69 70  74 69 6f 6e 20 22 49 74  | description "It|
0001e490  27 73 20 6a 75 73 74 20  61 20 62 69 67 20 69 72  |'s just a big ir|
0001e4a0  6f 6e 20 64 6f 6f 72 2e  22 2c 0a 20 20 20 20 20  |on door.",.     |
0001e4b0  20 20 20 20 20 20 20 6e  61 6d 65 20 22 64 6f 6f  |       name "doo|
0001e4c0  72 22 20 22 68 69 6e 67  65 22 20 22 68 69 6e 67  |r" "hinge" "hing|
0001e4d0  65 73 22 20 22 6d 61 73  73 69 76 65 22 20 22 72  |es" "massive" "r|
0001e4e0  75 73 74 79 22 20 22 69  72 6f 6e 22 2c 0a 20 20  |usty" "iron",.  |
0001e4f0  20 20 20 20 20 20 20 20  20 20 77 68 65 6e 5f 63  |          when_c|
0001e500  6c 6f 73 65 64 0a 20 20  20 20 20 20 20 20 20 20  |losed.          |
0001e510  20 20 20 20 20 20 22 54  68 65 20 77 61 79 20 6e  |      "The way n|
0001e520  6f 72 74 68 20 69 73 20  62 61 72 72 65 64 20 62  |orth is barred b|
0001e530  79 20 61 20 6d 61 73 73  69 76 65 2c 20 72 75 73  |y a massive, rus|
0001e540  74 79 2c 20 69 72 6f 6e  20 64 6f 6f 72 2e 22 2c  |ty, iron door.",|
0001e550  0a 20 20 20 20 20 20 20  20 20 20 20 20 77 68 65  |.            whe|
0001e560  6e 5f 6f 70 65 6e 0a 20  20 20 20 20 20 20 20 20  |n_open.         |
0001e570  20 20 20 20 20 20 20 22  54 68 65 20 77 61 79 20  |       "The way |
0001e580  6e 6f 72 74 68 20 6c 65  61 64 73 20 74 68 72 6f  |north leads thro|
0001e590  75 67 68 20 61 20 6d 61  73 73 69 76 65 2c 20 72  |ugh a massive, r|
0001e5a0  75 73 74 79 2c 20 69 72  6f 6e 20 64 6f 6f 72 2e  |usty, iron door.|
0001e5b0  22 2c 0a 20 20 20 20 20  20 20 20 20 20 20 20 64  |",.            d|
0001e5c0  6f 6f 72 5f 74 6f 20 49  6e 5f 43 61 76 65 72 6e  |oor_to In_Cavern|
0001e5d0  5f 57 69 74 68 5f 57 61  74 65 72 66 61 6c 6c 2c  |_With_Waterfall,|
0001e5e0  0a 20 20 20 20 20 20 20  20 20 20 20 20 64 6f 6f  |.            doo|
0001e5f0  72 5f 64 69 72 20 6e 5f  74 6f 2c 0a 20 20 20 20  |r_dir n_to,.    |
0001e600  20 20 20 20 20 20 20 20  77 69 74 68 5f 6b 65 79  |        with_key|
0001e610  20 73 65 74 5f 6f 66 5f  6b 65 79 73 0a 20 20 20  | set_of_keys.   |
0001e620  20 20 20 20 68 61 73 20  20 73 74 61 74 69 63 20  |    has  static |
0001e630  64 6f 6f 72 20 6f 70 65  6e 61 62 6c 65 20 6c 6f  |door openable lo|
0001e640  63 6b 61 62 6c 65 20 6c  6f 63 6b 65 64 3b 0a 0a  |ckable locked;..|
0001e650  28 4e 6f 74 65 20 74 68  61 74 20 74 68 65 20 64  |(Note that the d|
0001e660  6f 6f 72 20 69 73 20 22  73 74 61 74 69 63 22 20  |oor is "static" |
0001e670  2d 20 6f 74 68 65 72 77  69 73 65 20 74 68 65 20  |- otherwise the |
0001e680  70 6c 61 79 65 72 20 63  6f 75 6c 64 20 70 69 63  |player could pic|
0001e690  6b 20 69 74 20 75 70 20  61 6e 64 0a 77 61 6c 6b  |k it up and.walk|
0001e6a0  20 61 77 61 79 20 77 69  74 68 20 69 74 21 29 20  | away with it!) |
0001e6b0  20 54 68 65 20 70 72 6f  70 65 72 74 69 65 73 20  | The properties |
0001e6c0  22 77 68 65 6e 5f 63 6c  6f 73 65 64 22 20 61 6e  |"when_closed" an|
0001e6d0  64 20 22 77 68 65 6e 5f  6f 70 65 6e 22 20 67 69  |d "when_open" gi|
0001e6e0  76 65 0a 64 65 73 63 72  69 70 74 69 6f 6e 73 20  |ve.descriptions |
0001e6f0  61 70 70 72 6f 70 72 69  61 74 65 20 66 6f 72 20  |appropriate for |
0001e700  74 68 65 20 64 6f 6f 72  20 69 6e 20 74 68 65 73  |the door in thes|
0001e710  65 20 74 77 6f 20 73 74  61 74 65 73 2e 0a 0a 44  |e two states...D|
0001e720  6f 6f 72 73 20 61 72 65  20 72 61 74 68 65 72 20  |oors are rather |
0001e730  6f 6e 65 2d 77 61 79 3a  20 74 68 65 79 20 61 72  |one-way: they ar|
0001e740  65 20 6f 6e 6c 79 20 72  65 61 6c 6c 79 20 70 72  |e only really pr|
0001e750  65 73 65 6e 74 20 6f 6e  20 6f 6e 65 20 73 69 64  |esent on one sid|
0001e760  65 2e 20 20 49 66 0a 61  20 64 6f 6f 72 20 6e 65  |e.  If.a door ne|
0001e770  65 64 73 20 74 6f 20 62  65 20 61 63 63 65 73 73  |eds to be access|
0001e780  69 62 6c 65 20 28 6f 70  65 6e 61 62 6c 65 20 61  |ible (openable a|
0001e790  6e 64 20 6c 6f 63 6b 61  62 6c 65 20 66 72 6f 6d  |nd lockable from|
0001e7a0  20 65 69 74 68 65 72 20  73 69 64 65 29 2c 0a 61  | either side),.a|
0001e7b0  20 6e 65 61 74 20 74 72  69 63 6b 20 69 73 20 74  | neat trick is t|
0001e7c0  6f 20 6d 61 6b 65 20 69  74 20 70 72 65 73 65 6e  |o make it presen|
0001e7d0  74 20 69 6e 20 62 6f 74  68 20 6c 6f 63 61 74 69  |t in both locati|
0001e7e0  6f 6e 73 20 61 6e 64 20  74 6f 20 66 69 78 20 74  |ons and to fix t|
0001e7f0  68 65 0a 64 6f 6f 72 5f  74 6f 20 61 6e 64 20 64  |he.door_to and d|
0001e800  6f 6f 72 5f 64 69 72 20  74 6f 20 74 68 65 20 72  |oor_dir to the r|
0001e810  69 67 68 74 20 77 61 79  20 72 6f 75 6e 64 20 66  |ight way round f|
0001e820  6f 72 20 77 68 69 63 68  65 76 65 72 20 73 69 64  |or whichever sid|
0001e830  65 20 74 68 65 20 70 6c  61 79 65 72 0a 69 73 20  |e the player.is |
0001e840  6f 6e 2e 20 20 48 65 72  65 2c 20 74 68 65 6e 2c  |on.  Here, then,|
0001e850  20 69 73 20 61 20 74 77  6f 2d 77 61 79 20 64 6f  | is a two-way do|
0001e860  6f 72 3a 0a 0a 20 20 20  20 20 4f 62 6a 65 63 74  |or:..     Object|
0001e870  20 47 72 61 74 65 20 22  73 74 65 65 6c 20 67 72  | Grate "steel gr|
0001e880  61 74 65 22 0a 20 20 20  20 20 20 20 77 69 74 68  |ate".       with|
0001e890  20 6e 61 6d 65 20 22 67  72 61 74 65 22 20 22 6c  | name "grate" "l|
0001e8a0  6f 63 6b 22 20 22 67 61  74 65 22 20 22 67 72 69  |ock" "gate" "gri|
0001e8b0  6c 6c 65 22 20 22 6d 65  74 61 6c 22 0a 20 20 20  |lle" "metal".   |
0001e8c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 22 73  |              "s|
0001e8d0  74 72 6f 6e 67 22 20 22  73 74 65 65 6c 22 20 22  |trong" "steel" "|
0001e8e0  67 72 61 74 69 6e 67 22  2c 0a 20 20 20 20 20 20  |grating",.      |
0001e8f0  20 20 20 20 20 20 64 65  73 63 72 69 70 74 69 6f  |      descriptio|
0001e900  6e 20 22 49 74 20 6a 75  73 74 20 6c 6f 6f 6b 73  |n "It just looks|
0001e910  20 6c 69 6b 65 20 61 6e  20 6f 72 64 69 6e 61 72  | like an ordinar|
0001e920  79 20 67 72 61 74 65 20  5c 0a 20 20 20 20 20 20  |y grate \.      |
0001e930  20 20 20 20 20 20 20 20  20 20 6d 6f 75 6e 74 65  |          mounte|
0001e940  64 20 69 6e 20 63 6f 6e  63 72 65 74 65 2e 22 2c  |d in concrete.",|
0001e950  0a 20 20 20 20 20 20 20  20 20 20 20 20 77 69 74  |.            wit|
0001e960  68 5f 6b 65 79 20 73 65  74 5f 6f 66 5f 6b 65 79  |h_key set_of_key|
0001e970  73 2c 0a 20 20 20 20 20  20 20 20 20 20 20 20 64  |s,.            d|
0001e980  6f 6f 72 5f 64 69 72 0a  20 20 20 20 20 20 20 20  |oor_dir.        |
0001e990  20 20 20 20 5b 3b 20 69  66 20 28 6c 6f 63 61 74  |    [; if (locat|
0001e9a0  69 6f 6e 3d 3d 42 65 6c  6f 77 5f 54 68 65 5f 47  |ion==Below_The_G|
0001e9b0  72 61 74 65 29 20 72 65  74 75 72 6e 20 75 5f 74  |rate) return u_t|
0001e9c0  6f 3b 20 72 65 74 75 72  6e 20 64 5f 74 6f 3b 0a  |o; return d_to;.|
0001e9d0  20 20 20 20 20 20 20 20  20 20 20 20 5d 2c 0a 20  |            ],. |
0001e9e0  20 20 20 20 20 20 20 20  20 20 20 64 6f 6f 72 5f  |           door_|
0001e9f0  74 6f 0a 20 20 20 20 20  20 20 20 20 20 20 20 5b  |to.            [|
0001ea00  3b 20 69 66 20 28 6c 6f  63 61 74 69 6f 6e 3d 3d  |; if (location==|
0001ea10  42 65 6c 6f 77 5f 54 68  65 5f 47 72 61 74 65 29  |Below_The_Grate)|
0001ea20  20 72 65 74 75 72 6e 20  4f 75 74 73 69 64 65 5f  | return Outside_|
0001ea30  47 72 61 74 65 3b 0a 20  20 20 20 20 20 20 20 20  |Grate;.         |
0001ea40  20 20 20 20 20 20 72 65  74 75 72 6e 20 42 65 6c  |      return Bel|
0001ea50  6f 77 5f 54 68 65 5f 47  72 61 74 65 3b 0a 20 20  |ow_The_Grate;.  |
0001ea60  20 20 20 20 20 20 20 20  20 20 5d 2c 0a 20 20 20  |          ],.   |
0001ea70  20 20 20 20 20 20 20 20  20 64 65 73 63 72 69 62  |         describ|
0001ea80  65 0a 20 20 20 20 20 20  20 20 20 20 20 20 5b 3b  |e.            [;|
0001ea90  20 69 66 20 28 73 65 6c  66 20 68 61 73 20 6f 70  | if (self has op|
0001eaa0  65 6e 29 20 22 5e 54 68  65 20 67 72 61 74 65 20  |en) "^The grate |
0001eab0  73 74 61 6e 64 73 20 6f  70 65 6e 2e 22 3b 0a 20  |stands open.";. |
0001eac0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 69 66  |              if|
0001ead0  20 28 73 65 6c 66 20 68  61 73 6e 74 20 6c 6f 63  | (self hasnt loc|
0001eae0  6b 65 64 29 20 22 5e 54  68 65 20 67 72 61 74 65  |ked) "^The grate|
0001eaf0  20 69 73 20 75 6e 6c 6f  63 6b 65 64 20 62 75 74  | is unlocked but|
0001eb00  20 73 68 75 74 2e 22 3b  0a 20 20 20 20 20 20 20  | shut.";.       |
0001eb10  20 20 20 20 20 20 20 20  72 74 72 75 65 3b 0a 20  |        rtrue;. |
0001eb20  20 20 20 20 20 20 20 20  20 20 20 5d 2c 0a 20 20  |           ],.  |
0001eb30  20 20 20 20 20 20 20 20  20 20 66 6f 75 6e 64 5f  |          found_|
0001eb40  69 6e 20 20 42 65 6c 6f  77 5f 54 68 65 5f 47 72  |in  Below_The_Gr|
0001eb50  61 74 65 20 20 4f 75 74  73 69 64 65 5f 47 72 61  |ate  Outside_Gra|
0001eb60  74 65 0a 20 20 20 20 20  20 20 68 61 73 20 20 73  |te.       has  s|
0001eb70  74 61 74 69 63 20 64 6f  6f 72 20 6f 70 65 6e 61  |tatic door opena|
0001eb80  62 6c 65 20 6c 6f 63 6b  61 62 6c 65 20 6c 6f 63  |ble lockable loc|
0001eb90  6b 65 64 3b 0a 0a 77 68  65 72 65 20 42 65 6c 6f  |ked;..where Belo|
0001eba0  77 5f 54 68 65 5f 47 72  61 74 65 20 68 61 73 20  |w_The_Grate has |
0001ebb0  75 5f 74 6f 20 73 65 74  20 74 6f 20 47 72 61 74  |u_to set to Grat|
0001ebc0  65 2c 20 61 6e 64 20 4f  75 74 73 69 64 65 5f 47  |e, and Outside_G|
0001ebd0  72 61 74 65 20 68 61 73  20 64 5f 74 6f 0a 73 65  |rate has d_to.se|
0001ebe0  74 20 74 6f 20 47 72 61  74 65 2e 20 20 54 68 65  |t to Grate.  The|
0001ebf0  20 67 72 61 74 65 20 63  61 6e 20 6e 6f 77 20 62  | grate can now b|
0001ec00  65 20 6f 70 65 6e 65 64  2c 20 63 6c 6f 73 65 64  |e opened, closed|
0001ec10  2c 20 65 6e 74 65 72 65  64 20 61 6e 64 20 6c 6f  |, entered and lo|
0001ec20  63 6b 65 64 0a 66 72 6f  6d 20 61 62 6f 76 65 20  |cked.from above |
0001ec30  6f 72 20 62 65 6c 6f 77  2e 0a 0a 0a 41 74 20 66  |or below....At f|
0001ec40  69 72 73 74 20 73 69 67  68 74 2c 20 69 74 20 69  |irst sight, it i|
0001ec50  73 6e 27 74 20 6f 62 76  69 6f 75 73 20 77 68 79  |sn't obvious why|
0001ec60  20 64 6f 6f 72 73 20 68  61 76 65 20 74 68 65 20  | doors have the |
0001ec70  22 64 6f 6f 72 5f 64 69  72 22 20 70 72 6f 70 65  |"door_dir" prope|
0001ec80  72 74 79 2e 0a 57 68 79  20 64 6f 65 73 20 61 20  |rty..Why does a |
0001ec90  64 6f 6f 72 20 6e 65 65  64 20 74 6f 20 6b 6e 6f  |door need to kno|
0001eca0  77 20 77 68 69 63 68 20  77 61 79 20 69 74 20 66  |w which way it f|
0001ecb0  61 63 65 73 3f 20 20 54  68 65 20 69 64 65 61 20  |aces?  The idea |
0001ecc0  69 73 20 74 68 61 74 20  69 66 0a 74 68 65 72 65  |is that if.there|
0001ecd0  27 73 20 61 6e 20 6f 70  65 6e 20 64 6f 6f 72 20  |'s an open door |
0001ece0  69 6e 20 74 68 65 20 73  6f 75 74 68 20 77 61 6c  |in the south wal|
0001ecf0  6c 2c 20 61 20 70 6c 61  79 65 72 20 63 61 6e 20  |l, a player can |
0001ed00  67 6f 20 74 68 72 6f 75  67 68 20 69 74 20 65 69  |go through it ei|
0001ed10  74 68 65 72 0a 62 79 20  74 79 70 69 6e 67 20 22  |ther.by typing "|
0001ed20  73 6f 75 74 68 22 20 6f  72 20 22 65 6e 74 65 72  |south" or "enter|
0001ed30  20 64 6f 6f 72 22 2e 20  20 53 6f 20 77 68 61 74  | door".  So what|
0001ed40  20 74 68 65 20 45 6e 74  65 72 20 61 63 74 69 6f  | the Enter actio|
0001ed50  6e 20 64 6f 65 73 20 28  69 66 0a 74 68 65 20 64  |n does (if.the d|
0001ed60  6f 6f 72 20 69 73 20 61  63 74 75 61 6c 6c 79 20  |oor is actually |
0001ed70  6f 70 65 6e 29 20 69 73  20 74 6f 20 63 61 75 73  |open) is to caus|
0001ed80  65 20 74 68 65 20 47 6f  20 61 63 74 69 6f 6e 20  |e the Go action |
0001ed90  77 69 74 68 20 74 68 65  20 67 69 76 65 6e 0a 64  |with the given.d|
0001eda0  69 72 65 63 74 69 6f 6e  2e 0a 0a 54 68 69 73 20  |irection...This |
0001edb0  68 61 73 20 6f 6e 65 20  70 72 61 63 74 69 63 61  |has one practica|
0001edc0  6c 20 63 6f 6e 73 65 71  75 65 6e 63 65 3a 20 69  |l consequence: i|
0001edd0  66 20 79 6f 75 20 70 75  74 20 22 62 65 66 6f 72  |f you put "befor|
0001ede0  65 22 20 61 6e 64 20 22  61 66 74 65 72 22 20 72  |e" and "after" r|
0001edf0  6f 75 74 69 6e 65 73 0a  6f 6e 20 74 68 65 20 45  |outines.on the E|
0001ee00  6e 74 65 72 20 61 63 74  69 6f 6e 20 66 6f 72 20  |nter action for |
0001ee10  74 68 65 20 47 72 61 74  65 2c 20 74 68 65 79 20  |the Grate, they |
0001ee20  6f 6e 6c 79 20 61 70 70  6c 79 20 74 6f 20 61 20  |only apply to a |
0001ee30  70 6c 61 79 65 72 20 74  79 70 69 6e 67 0a 22 65  |player typing."e|
0001ee40  6e 74 65 72 20 67 72 61  74 65 22 20 61 6e 64 20  |nter grate" and |
0001ee50  6e 6f 74 20 74 6f 20 6f  6e 65 20 6a 75 73 74 20  |not to one just |
0001ee60  74 79 70 69 6e 67 20 22  64 6f 77 6e 22 2e 20 20  |typing "down".  |
0001ee70  54 68 65 20 77 61 79 20  74 6f 20 74 72 61 70 20  |The way to trap |
0001ee80  62 6f 74 68 20 61 74 0a  6f 6e 63 65 20 69 73 20  |both at.once is |
0001ee90  74 6f 20 77 72 69 74 65  20 61 20 72 6f 75 74 69  |to write a routi|
0001eea0  6e 65 20 66 6f 72 20 74  68 65 20 64 5f 74 6f 20  |ne for the d_to |
0001eeb0  70 72 6f 70 65 72 74 79  20 6f 66 20 4f 75 74 73  |property of Outs|
0001eec0  69 64 65 5f 47 72 61 74  65 2e 0a 0a 0a 0a 4f 62  |ide_Grate.....Ob|
0001eed0  6a 65 63 74 73 20 63 61  6e 20 61 6c 73 6f 20 62  |jects can also b|
0001eee0  65 20 22 73 77 69 74 63  68 61 62 6c 65 22 2e 20  |e "switchable". |
0001eef0  20 54 68 69 73 20 6d 65  61 6e 73 20 74 68 65 79  | This means they|
0001ef00  20 63 61 6e 20 62 65 20  74 75 72 6e 65 64 20 6f  | can be turned o|
0001ef10  66 66 20 6f 72 0a 6f 6e  2c 20 61 73 20 69 66 20  |ff or.on, as if |
0001ef20  74 68 65 79 20 68 61 64  20 73 6f 6d 65 20 6b 69  |they had some ki|
0001ef30  6e 64 20 6f 66 20 73 77  69 74 63 68 20 6f 6e 20  |nd of switch on |
0001ef40  74 68 65 6d 2e 20 20 54  68 65 20 6f 62 6a 65 63  |them.  The objec|
0001ef50  74 20 68 61 73 20 74 68  65 0a 61 74 74 72 69 62  |t has the.attrib|
0001ef60  75 74 65 20 22 6f 6e 22  20 69 66 20 69 74 27 73  |ute "on" if it's|
0001ef70  20 6f 6e 2e 20 20 46 6f  72 20 65 78 61 6d 70 6c  | on.  For exampl|
0001ef80  65 3a 0a 0a 20 20 20 20  20 4f 62 6a 65 63 74 20  |e:..     Object |
0001ef90  73 65 61 72 63 68 6c 69  67 68 74 20 22 47 6f 74  |searchlight "Got|
0001efa0  68 61 6d 20 43 69 74 79  20 73 65 61 72 63 68 6c  |ham City searchl|
0001efb0  69 67 68 74 22 20 73 6b  79 73 63 72 61 70 65 72  |ight" skyscraper|
0001efc0  0a 20 20 20 20 20 20 20  77 69 74 68 20 6e 61 6d  |.       with nam|
0001efd0  65 20 22 73 65 61 72 63  68 22 20 22 6c 69 67 68  |e "search" "ligh|
0001efe0  74 22 20 22 74 65 6d 70  6c 61 74 65 22 2c 20 61  |t" "template", a|
0001eff0  72 74 69 63 6c 65 20 22  74 68 65 22 2c 0a 20 20  |rticle "the",.  |
0001f000  20 20 20 20 20 20 20 20  20 20 64 65 73 63 72 69  |          descri|
0001f010  70 74 69 6f 6e 20 22 49  74 20 68 61 73 20 73 6f  |ption "It has so|
0001f020  6d 65 20 6b 69 6e 64 20  6f 66 20 74 65 6d 70 6c  |me kind of templ|
0001f030  61 74 65 20 6f 6e 20 69  74 2e 22 2c 0a 20 20 20  |ate on it.",.   |
0001f040  20 20 20 20 20 20 20 20  20 77 68 65 6e 5f 6f 6e  |         when_on|
0001f050  20 22 54 68 65 20 6f 6c  64 20 63 69 74 79 20 73  | "The old city s|
0001f060  65 61 72 63 68 6c 69 67  68 74 20 73 68 69 6e 65  |earchlight shine|
0001f070  73 20 6f 75 74 20 61 20  62 61 74 20 61 67 61 69  |s out a bat agai|
0001f080  6e 73 74 20 5c 0a 20 20  20 20 20 20 20 20 20 20  |nst \.          |
0001f090  20 20 20 20 20 20 20 20  20 20 20 74 68 65 20 66  |           the f|
0001f0a0  65 61 74 68 65 72 2d 63  6c 6f 75 64 73 20 6f 66  |eather-clouds of|
0001f0b0  20 74 68 65 20 64 61 72  6b 65 6e 69 6e 67 20 73  | the darkening s|
0001f0c0  6b 79 2e 22 2c 0a 20 20  20 20 20 20 20 20 20 20  |ky.",.          |
0001f0d0  20 20 77 68 65 6e 5f 6f  66 66 20 22 54 68 65 20  |  when_off "The |
0001f0e0  6f 6c 64 20 63 69 74 79  20 73 65 61 72 63 68 6c  |old city searchl|
0001f0f0  69 67 68 74 2c 20 6e 65  67 6c 65 63 74 65 64 20  |ight, neglected |
0001f100  62 75 74 20 73 74 69 6c  6c 20 5c 0a 20 20 20 20  |but still \.    |
0001f110  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001f120  20 20 66 75 6e 63 74 69  6f 6e 61 6c 2c 20 73 69  |  functional, si|
0001f130  74 73 20 68 65 72 65 2e  22 0a 20 20 20 20 20 20  |ts here.".      |
0001f140  20 68 61 73 20 20 73 77  69 74 63 68 61 62 6c 65  | has  switchable|
0001f150  20 73 74 61 74 69 63 3b  0a 0a 48 65 72 65 20 69  | static;..Here i|
0001f160  73 20 61 20 6c 61 6d 70  20 77 68 6f 73 65 20 62  |s a lamp whose b|
0001f170  61 74 74 65 72 69 65 73  20 77 69 6c 6c 20 73 6f  |atteries will so|
0001f180  6d 65 20 64 61 79 20 72  75 6e 20 64 6f 77 6e 3a  |me day run down:|
0001f190  0a 0a 20 20 20 20 20 4e  65 61 72 62 79 20 62 72  |..     Nearby br|
0001f1a0  61 73 73 5f 6c 61 6e 74  65 72 6e 20 22 62 72 61  |ass_lantern "bra|
0001f1b0  73 73 20 6c 61 6e 74 65  72 6e 22 0a 20 20 20 20  |ss lantern".    |
0001f1c0  20 20 20 77 69 74 68 20  6e 61 6d 65 20 22 6c 61  |   with name "la|
0001f1d0  6d 70 22 20 22 6c 61 6e  74 65 72 6e 22 20 22 73  |mp" "lantern" "s|
0001f1e0  68 69 6e 79 22 20 22 62  72 61 73 73 22 2c 0a 20  |hiny" "brass",. |
0001f1f0  20 20 20 20 20 20 20 20  20 20 20 77 68 65 6e 5f  |           when_|
0001f200  6f 66 66 20 20 22 54 68  65 72 65 20 69 73 20 61  |off  "There is a|
0001f210  20 73 68 69 6e 79 20 62  72 61 73 73 20 6c 61 6d  | shiny brass lam|
0001f220  70 20 6e 65 61 72 62 79  2e 22 2c 0a 20 20 20 20  |p nearby.",.    |
0001f230  20 20 20 20 20 20 20 20  77 68 65 6e 5f 6f 6e 20  |        when_on |
0001f240  20 20 22 59 6f 75 72 20  6c 61 6d 70 20 69 73 20  |  "Your lamp is |
0001f250  68 65 72 65 2c 20 67 6c  65 61 6d 69 6e 67 20 62  |here, gleaming b|
0001f260  72 69 67 68 74 6c 79 2e  22 2c 0a 20 20 20 20 20  |rightly.",.     |
0001f270  20 20 20 20 20 20 20 74  69 6d 65 5f 6c 65 66 74  |       time_left|
0001f280  20 33 33 30 2c 0a 20 20  20 20 20 20 20 20 20 20  | 330,.          |
0001f290  20 20 62 65 66 6f 72 65  0a 20 20 20 20 20 20 20  |  before.       |
0001f2a0  20 20 20 20 20 5b 3b 20  45 78 61 6d 69 6e 65 3a  |     [; Examine:|
0001f2b0  20 70 72 69 6e 74 20 22  49 74 20 69 73 20 61 20  | print "It is a |
0001f2c0  73 68 69 6e 79 20 62 72  61 73 73 20 6c 61 6d 70  |shiny brass lamp|
0001f2d0  22 3b 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |";.             |
0001f2e0  20 20 20 20 20 20 20 20  69 66 20 28 62 72 61 73  |        if (bras|
0001f2f0  73 5f 6c 61 6e 74 65 72  6e 20 68 61 73 6e 74 20  |s_lantern hasnt |
0001f300  6f 6e 29 0a 20 20 20 20  20 20 20 20 20 20 20 20  |on).            |
0001f310  20 20 20 20 20 20 20 20  20 20 20 20 20 22 2e 20  |             ". |
0001f320  20 49 74 20 69 73 20 6e  6f 74 20 63 75 72 72 65  | It is not curre|
0001f330  6e 74 6c 79 20 6c 69 74  2e 22 3b 0a 20 20 20 20  |ntly lit.";.    |
0001f340  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001f350  20 69 66 20 28 62 72 61  73 73 5f 6c 61 6e 74 65  | if (brass_lante|
0001f360  72 6e 2e 74 69 6d 65 5f  6c 65 66 74 20 3c 20 33  |rn.time_left < 3|
0001f370  30 29 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |0).             |
0001f380  20 20 20 20 20 20 20 20  20 20 20 20 22 2c 20 67  |            ", g|
0001f390  6c 6f 77 69 6e 67 20 64  69 6d 6c 79 2e 22 3b 0a  |lowing dimly.";.|
0001f3a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001f3b0  20 20 20 20 20 22 2c 20  67 6c 6f 77 69 6e 67 20  |     ", glowing |
0001f3c0  62 72 69 67 68 74 6c 79  2e 22 3b 0a 20 20 20 20  |brightly.";.    |
0001f3d0  20 20 20 20 20 20 20 20  20 20 20 42 75 72 6e 3a  |           Burn:|
0001f3e0  20 3c 3c 53 77 69 74 63  68 4f 6e 20 62 72 61 73  | <<SwitchOn bras|
0001f3f0  73 5f 6c 61 6e 74 65 72  6e 3e 3e 3b 0a 20 20 20  |s_lantern>>;.   |
0001f400  20 20 20 20 20 20 20 20  20 20 20 20 52 75 62 3a  |            Rub:|
0001f410  20 20 22 52 75 62 62 69  6e 67 20 74 68 65 20 65  |  "Rubbing the e|
0001f420  6c 65 63 74 72 69 63 20  6c 61 6d 70 20 69 73 20  |lectric lamp is |
0001f430  6e 6f 74 20 70 61 72 74  69 63 75 6c 61 72 6c 79  |not particularly|
0001f440  20 5c 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  | \.             |
0001f450  20 20 20 20 20 20 20 20  20 72 65 77 61 72 64 69  |         rewardi|
0001f460  6e 67 2e 20 20 41 6e 79  77 61 79 2c 20 6e 6f 74  |ng.  Anyway, not|
0001f470  68 69 6e 67 20 65 78 63  69 74 69 6e 67 20 68 61  |hing exciting ha|
0001f480  70 70 65 6e 73 2e 22 3b  0a 20 20 20 20 20 20 20  |ppens.";.       |
0001f490  20 20 20 20 20 20 20 20  53 77 69 74 63 68 4f 6e  |        SwitchOn|
0001f4a0  3a 20 69 66 20 28 62 72  61 73 73 5f 6c 61 6e 74  |: if (brass_lant|
0001f4b0  65 72 6e 2e 74 69 6d 65  5f 6c 65 66 74 20 3c 3d  |ern.time_left <=|
0001f4c0  20 30 29 0a 20 20 20 20  20 20 20 20 20 20 20 20  | 0).            |
0001f4d0  20 20 20 20 20 20 20 20  20 22 55 6e 66 6f 72 74  |         "Unfort|
0001f4e0  75 6e 61 74 65 6c 79 2c  20 74 68 65 20 62 61 74  |unately, the bat|
0001f4f0  74 65 72 69 65 73 20 73  65 65 6d 20 74 6f 20 62  |teries seem to b|
0001f500  65 20 64 65 61 64 2e 22  3b 0a 20 20 20 20 20 20  |e dead.";.      |
0001f510  20 20 20 20 20 20 5d 2c  0a 20 20 20 20 20 20 20  |      ],.       |
0001f520  20 20 20 20 20 61 66 74  65 72 0a 20 20 20 20 20  |     after.     |
0001f530  20 20 20 20 20 20 20 5b  3b 20 53 77 69 74 63 68  |       [; Switch|
0001f540  4f 6e 3a 20 67 69 76 65  20 62 72 61 73 73 5f 6c  |On: give brass_l|
0001f550  61 6e 74 65 72 6e 20 6c  69 67 68 74 3b 0a 20 20  |antern light;.  |
0001f560  20 20 20 20 20 20 20 20  20 20 20 20 20 53 77 69  |             Swi|
0001f570  74 63 68 4f 66 66 3a 20  67 69 76 65 20 62 72 61  |tchOff: give bra|
0001f580  73 73 5f 6c 61 6e 74 65  72 6e 20 7e 6c 69 67 68  |ss_lantern ~ligh|
0001f590  74 3b 0a 20 20 20 20 20  20 20 20 20 20 20 20 5d  |t;.            ]|
0001f5a0  2c 0a 20 20 20 20 20 20  20 68 61 73 20 20 73 77  |,.       has  sw|
0001f5b0  69 74 63 68 61 62 6c 65  3b 0a 0a 0a 41 6e 20 6f  |itchable;...An o|
0001f5c0  62 6a 65 63 74 20 77 68  69 63 68 20 68 61 73 20  |bject which has |
0001f5d0  22 65 6e 74 65 72 61 62  6c 65 22 20 63 61 6e 20  |"enterable" can |
0001f5e0  62 65 20 67 6f 74 20 69  6e 73 69 64 65 2e 20 20  |be got inside.  |
0001f5f0  28 54 68 65 20 69 64 65  61 20 6f 66 20 22 69 6e  |(The idea of "in|
0001f600  73 69 64 65 22 0a 68 65  72 65 20 69 73 20 74 68  |side".here is th|
0001f610  61 74 20 74 68 65 20 70  6c 61 79 65 72 20 69 73  |at the player is|
0001f620  20 6f 6e 6c 79 20 68 61  6c 66 2d 69 6e 2c 20 61  | only half-in, a|
0001f630  73 20 77 69 74 68 20 61  20 63 61 72 20 6f 72 20  |s with a car or |
0001f640  61 20 70 73 79 63 68 69  61 74 72 69 73 74 27 73  |a psychiatrist's|
0001f650  0a 63 6f 75 63 68 2e 20  20 49 66 20 69 74 27 73  |.couch.  If it's|
0001f660  20 6d 6f 72 65 20 6c 69  6b 65 20 61 20 70 72 69  | more like a pri|
0001f670  73 6f 6e 20 63 65 6c 6c  2c 20 74 68 65 6e 20 69  |son cell, then i|
0001f680  74 20 73 68 6f 75 6c 64  20 62 65 20 61 20 73 65  |t should be a se|
0001f690  70 61 72 61 74 65 0a 70  6c 61 63 65 2e 29 0a 0a  |parate.place.)..|
0001f6a0  20 20 20 20 20 4f 62 6a  65 63 74 20 63 61 72 20  |     Object car |
0001f6b0  22 6c 69 74 74 6c 65 20  72 65 64 20 63 61 72 22  |"little red car"|
0001f6c0  20 63 61 76 65 0a 20 20  20 20 20 20 20 77 69 74  | cave.       wit|
0001f6d0  68 20 6e 61 6d 65 20 22  6c 69 74 74 6c 65 22 20  |h name "little" |
0001f6e0  22 72 65 64 22 20 22 63  61 72 22 2c 0a 20 20 20  |"red" "car",.   |
0001f6f0  20 20 20 20 20 20 20 20  20 6c 6f 6e 67 64 65 73  |         longdes|
0001f700  63 20 22 4c 61 72 67 65  20 65 6e 6f 75 67 68 20  |c "Large enough |
0001f710  74 6f 20 73 69 74 20 69  6e 73 69 64 65 2e 20 20  |to sit inside.  |
0001f720  41 6d 6f 6e 67 20 74 68  65 20 63 6f 6e 74 72 6f  |Among the contro|
0001f730  6c 73 20 69 73 20 61 20  5c 0a 20 20 20 20 20 20  |ls is a \.      |
0001f740  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001f750  70 72 6f 6d 69 6e 65 6e  74 20 6f 6e 2f 6f 66 66  |prominent on/off|
0001f760  20 73 77 69 74 63 68 2e  20 20 54 68 65 20 6e 75  | switch.  The nu|
0001f770  6d 62 65 72 70 6c 61 74  65 20 69 73 20 4b 41 52  |mberplate is KAR|
0001f780  20 31 2e 22 2c 0a 20 20  20 20 20 20 20 20 20 20  | 1.",.          |
0001f790  20 20 69 6e 69 74 70 6f  73 20 22 54 68 65 20 72  |  initpos "The r|
0001f7a0  65 64 20 63 61 72 20 73  69 74 73 20 68 65 72 65  |ed car sits here|
0001f7b0  2c 20 69 74 73 20 65 6e  67 69 6e 65 20 73 74 69  |, its engine sti|
0001f7c0  6c 6c 20 72 75 6e 6e 69  6e 67 2e 22 2c 0a 20 20  |ll running.",.  |
0001f7d0  20 20 20 20 20 20 20 20  20 20 63 6c 6f 73 65 64  |          closed|
0001f7e0  70 6f 73 20 22 41 20 6c  69 74 74 6c 65 20 72 65  |pos "A little re|
0001f7f0  64 20 63 61 72 20 69 73  20 70 61 72 6b 65 64 20  |d car is parked |
0001f800  68 65 72 65 2e 22 2c 0a  20 20 20 20 20 20 20 20  |here.",.        |
0001f810  20 20 20 20 62 65 66 6f  72 65 0a 20 20 20 20 20  |    before.     |
0001f820  20 20 20 20 20 20 20 5b  3b 20 47 6f 3a 20 69 66  |       [; Go: if|
0001f830  20 28 63 61 72 20 68 61  73 20 6f 6e 29 20 22 42  | (car has on) "B|
0001f840  72 6d 6d 21 20 20 42 72  6d 6d 21 22 3b 0a 20 20  |rmm!  Brmm!";.  |
0001f850  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001f860  20 70 72 69 6e 74 20 22  28 54 68 65 20 69 67 6e  | print "(The ign|
0001f870  69 74 69 6f 6e 20 69 73  20 6f 66 66 20 61 74 20  |ition is off at |
0001f880  74 68 65 20 6d 6f 6d 65  6e 74 2e 29 5e 22 3b 0a  |the moment.)^";.|
0001f890  20 20 20 20 20 20 20 20  20 20 20 20 5d 2c 0a 20  |            ],. |
0001f8a0  20 20 20 20 20 20 68 61  73 20 20 73 77 69 74 63  |      has  switc|
0001f8b0  68 61 62 6c 65 20 65 6e  74 65 72 61 62 6c 65 20  |hable enterable |
0001f8c0  73 74 61 74 69 63 20 63  6f 6e 74 61 69 6e 65 72  |static container|
0001f8d0  20 6f 70 65 6e 3b 0a 0a  54 68 69 73 20 64 65 6d  | open;..This dem|
0001f8e0  6f 6e 73 74 72 61 74 65  73 20 61 20 73 70 65 63  |onstrates a spec|
0001f8f0  69 61 6c 20 72 75 6c 65  2e 20 20 49 66 20 61 20  |ial rule.  If a |
0001f900  70 6c 61 79 65 72 20 69  73 20 69 6e 73 69 64 65  |player is inside|
0001f910  20 61 6e 20 65 6e 74 65  72 61 62 6c 65 20 6f 62  | an enterable ob|
0001f920  6a 65 63 74 0a 61 6e 64  20 74 72 69 65 73 20 74  |ject.and tries t|
0001f930  6f 20 6d 6f 76 65 2c 20  73 61 79 20 22 6e 6f 72  |o move, say "nor|
0001f940  74 68 22 2c 20 74 68 65  20 62 65 66 6f 72 65 20  |th", the before |
0001f950  72 6f 75 74 69 6e 65 20  66 6f 72 20 74 68 65 20  |routine for the |
0001f960  6f 62 6a 65 63 74 20 69  73 20 63 61 6c 6c 65 64  |object is called|
0001f970  0a 77 69 74 68 20 74 68  65 20 61 63 74 69 6f 6e  |.with the action|
0001f980  20 47 6f 2c 20 61 6e 64  20 6e 5f 6f 62 6a 20 61  | Go, and n_obj a|
0001f990  73 20 74 68 65 20 6e 6f  75 6e 2e 20 20 49 66 20  |s the noun.  If |
0001f9a0  69 74 20 72 65 74 75 72  6e 73 20 66 61 6c 73 65  |it returns false|
0001f9b0  2c 20 74 68 65 20 67 61  6d 65 0a 64 69 73 61 6c  |, the game.disal|
0001f9c0  6c 6f 77 73 20 74 68 65  20 61 74 74 65 6d 70 74  |lows the attempt|
0001f9d0  20 74 6f 20 6d 6f 76 65  20 28 61 73 20 75 73 75  | to move (as usu|
0001f9e0  61 6c 29 2e 20 20 49 66  20 69 74 20 72 65 74 75  |al).  If it retu|
0001f9f0  72 6e 73 20 74 72 75 65  2c 20 74 68 65 6e 20 74  |rns true, then t|
0001fa00  68 65 0a 76 65 68 69 63  6c 65 20 61 6e 64 20 70  |he.vehicle and p|
0001fa10  6c 61 79 65 72 20 6d 6f  76 65 20 74 6f 67 65 74  |layer move toget|
0001fa20  68 65 72 20 76 69 61 20  74 68 65 20 67 61 6d 65  |her via the game|
0001fa30  27 73 20 75 73 75 61 6c  20 6d 61 70 2e 0a 0a 0a  |'s usual map....|
0001fa40  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0001fa80  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 44 35 2e 20  |-----------.D5. |
0001fa90  20 4c 69 76 69 6e 67 20  63 72 65 61 74 75 72 65  | Living creature|
0001faa0  73 0a 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |s.--------------|
0001fab0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0001fae0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0a 0a 0a  |-------------...|
0001faf0  41 6e 69 6d 61 74 65 20  6f 62 6a 65 63 74 73 20  |Animate objects |
0001fb00  28 73 75 63 68 20 61 73  20 73 65 61 20 6d 6f 6e  |(such as sea mon|
0001fb10  73 74 65 72 73 2c 20 6d  61 64 20 61 75 6e 74 73  |sters, mad aunts|
0001fb20  20 6f 72 20 6e 61 73 74  79 20 6c 69 74 74 6c 65  | or nasty little|
0001fb30  20 64 77 61 72 76 65 73  29 0a 68 61 76 65 20 61  | dwarves).have a|
0001fb40  20 70 72 6f 70 65 72 74  79 20 63 61 6c 6c 65 64  | property called|
0001fb50  20 22 6c 69 66 65 22 2c  20 63 6f 6e 74 61 69 6e  | "life", contain|
0001fb60  69 6e 67 20 74 68 65 69  72 20 72 75 6c 65 73 2e  |ing their rules.|
0001fb70  20 20 54 68 69 73 20 62  65 68 61 76 65 73 20 6a  |  This behaves j|
0001fb80  75 73 74 0a 6c 69 6b 65  20 61 20 22 62 65 66 6f  |ust.like a "befo|
0001fb90  72 65 22 20 6f 72 20 22  61 66 74 65 72 22 20 72  |re" or "after" r|
0001fba0  6f 75 74 69 6e 65 2c 20  62 75 74 20 6f 6e 6c 79  |outine, but only|
0001fbb0  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 61  | the following a|
0001fbc0  63 74 69 6f 6e 73 20 61  70 70 6c 79 3a 0a 0a 20  |ctions apply:.. |
0001fbd0  20 20 4f 72 64 65 72 20  20 20 20 20 20 20 20 20  |  Order         |
0001fbe0  54 68 65 20 70 6c 61 79  65 72 20 68 61 73 20 61  |The player has a|
0001fbf0  73 6b 65 64 20 74 68 65  20 63 72 65 61 74 75 72  |sked the creatur|
0001fc00  65 20 74 6f 20 64 6f 20  73 6f 6d 65 74 68 69 6e  |e to do somethin|
0001fc10  67 2c 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |g,.             |
0001fc20  20 20 20 20 65 2e 67 2e  2c 20 62 79 20 22 74 72  |    e.g., by "tr|
0001fc30  6f 6c 6c 2c 20 67 6f 20  73 6f 75 74 68 22 2e 20  |oll, go south". |
0001fc40  20 61 63 74 69 6f 6e 2c  20 6e 6f 75 6e 20 61 6e  | action, noun an|
0001fc50  64 20 73 65 63 6f 6e 64  20 61 72 65 0a 20 20 20  |d second are.   |
0001fc60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 73 65  |              se|
0001fc70  74 20 75 70 20 61 73 20  75 73 75 61 6c 3a 20 65  |t up as usual: e|
0001fc80  2e 67 2e 20 61 63 74 69  6f 6e 3d 23 23 47 6f 20  |.g. action=##Go |
0001fc90  61 6e 64 20 6e 6f 75 6e  3d 73 5f 6f 62 6a 2e 0a  |and noun=s_obj..|
0001fca0  0a 20 20 20 41 74 74 61  63 6b 20 20 20 20 20 20  |.   Attack      |
0001fcb0  20 20 50 6c 61 79 65 72  20 74 72 69 65 64 20 74  |  Player tried t|
0001fcc0  6f 20 61 74 74 61 63 6b  20 63 72 65 61 74 75 72  |o attack creatur|
0001fcd0  65 0a 0a 20 20 20 4b 69  73 73 20 20 20 20 20 20  |e..   Kiss      |
0001fce0  20 20 20 20 54 72 69 65  64 20 74 6f 20 6b 69 73  |    Tried to kis|
0001fcf0  73 0a 0a 20 20 20 41 6e  73 77 65 72 20 20 20 20  |s..   Answer    |
0001fd00  20 20 20 20 54 68 65 20  70 6c 61 79 65 72 20 74  |    The player t|
0001fd10  72 69 65 64 20 65 69 74  68 65 72 20 22 61 6e 73  |ried either "ans|
0001fd20  77 65 72 20 3c 77 6f 72  64 3e 20 74 6f 20 74 72  |wer <word> to tr|
0001fd30  6f 6c 6c 22 2c 20 6f 72  20 65 6c 73 65 0a 20 20  |oll", or else.  |
0001fd40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 22  |               "|
0001fd50  74 72 6f 6c 6c 2c 20 3c  73 6f 6d 65 74 68 69 6e  |troll, <somethin|
0001fd60  67 20 6e 6f 74 20 75 6e  64 65 72 73 74 6f 6f 64  |g not understood|
0001fd70  3e 22 2e 20 20 49 6e 20  65 69 74 68 65 72 20 63  |>".  In either c|
0001fd80  61 73 65 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ase.            |
0001fd90  20 20 20 20 20 73 70 65  63 69 61 6c 5f 77 6f 72  |     special_wor|
0001fda0  64 20 69 73 20 73 65 74  20 74 6f 20 74 68 65 20  |d is set to the |
0001fdb0  64 69 63 74 69 6f 6e 61  72 79 20 65 6e 74 72 79  |dictionary entry|
0001fdc0  20 6f 66 20 74 68 65 20  66 69 72 73 74 0a 20 20  | of the first.  |
0001fdd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 77  |               w|
0001fde0  6f 72 64 2c 20 6f 72 20  30 20 69 66 20 69 74 20  |ord, or 0 if it |
0001fdf0  69 73 6e 27 74 20 69 6e  20 74 68 65 20 64 69 63  |isn't in the dic|
0001fe00  74 69 6f 6e 61 72 79 2c  20 61 6e 64 0a 20 20 20  |tionary, and.   |
0001fe10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 73 70  |              sp|
0001fe20  65 63 69 61 6c 5f 6e 75  6d 62 65 72 20 69 73 20  |ecial_number is |
0001fe30  73 65 74 20 74 6f 20 61  6e 20 61 74 74 65 6d 70  |set to an attemp|
0001fe40  74 20 74 6f 20 72 65 61  64 20 69 74 20 61 73 20  |t to read it as |
0001fe50  61 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |a.              |
0001fe60  20 20 20 6e 75 6d 62 65  72 2e 20 20 28 46 6f 72  |   number.  (For|
0001fe70  20 69 6e 73 74 61 6e 63  65 2c 20 22 63 6f 6d 70  | instance, "comp|
0001fe80  75 74 65 72 2c 20 31 34  33 22 20 77 69 6c 6c 20  |uter, 143" will |
0001fe90  63 61 75 73 65 0a 20 20  20 20 20 20 20 20 20 20  |cause.          |
0001fea0  20 20 20 20 20 20 20 73  70 65 63 69 61 6c 5f 6e  |       special_n|
0001feb0  75 6d 62 65 72 20 74 6f  20 62 65 20 73 65 74 20  |umber to be set |
0001fec0  74 6f 20 31 34 33 2e 29  0a 0a 20 20 20 41 73 6b  |to 143.)..   Ask|
0001fed0  20 20 20 20 20 20 20 20  20 20 20 22 61 73 6b 20  |           "ask |
0001fee0  74 72 6f 6c 6c 20 61 62  6f 75 74 20 2e 2e 2e 22  |troll about ..."|
0001fef0  20 2d 20 73 69 6d 69 6c  61 72 6c 79 20 73 70 65  | - similarly spe|
0001ff00  63 69 61 6c 5f 77 6f 72  64 20 61 6e 64 0a 20 20  |cial_word and.  |
0001ff10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 73  |               s|
0001ff20  70 65 63 69 61 6c 5f 6e  75 6d 62 65 72 20 61 72  |pecial_number ar|
0001ff30  65 20 73 65 74 20 75 70  0a 0a 20 20 20 47 69 76  |e set up..   Giv|
0001ff40  65 20 20 20 20 20 20 20  20 20 20 6e 6f 75 6e 20  |e          noun |
0001ff50  68 6f 6c 64 73 20 74 68  65 20 6f 62 6a 65 63 74  |holds the object|
0001ff60  20 6e 75 6d 62 65 72 20  6f 66 20 77 68 61 74 20  | number of what |
0001ff70  74 68 65 20 70 6c 61 79  65 72 20 68 61 73 20 74  |the player has t|
0001ff80  72 69 65 64 0a 20 20 20  20 20 20 20 20 20 20 20  |ried.           |
0001ff90  20 20 20 20 20 20 74 6f  20 67 69 76 65 20 28 6f  |      to give (o|
0001ffa0  72 20 66 65 65 64 29 20  74 68 65 20 63 72 65 61  |r feed) the crea|
0001ffb0  74 75 72 65 2e 20 20 28  55 6e 6c 65 73 73 20 63  |ture.  (Unless c|
0001ffc0  6f 64 65 20 69 73 20 77  72 69 74 74 65 6e 0a 20  |ode is written. |
0001ffd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0001ffe0  74 68 65 20 63 72 65 61  74 75 72 65 20 77 69 6c  |the creature wil|
0001fff0  6c 20 22 73 65 65 6d 20  75 6e 69 6e 74 65 72 65  |l "seem unintere|
00020000  73 74 65 64 22 20 61 6e  64 20 6e 6f 74 68 69 6e  |sted" and nothin|
00020010  67 20 77 69 6c 6c 0a 20  20 20 20 20 20 20 20 20  |g will.         |
00020020  20 20 20 20 20 20 20 20  68 61 70 70 65 6e 2e 29  |        happen.)|
00020030  0a 0a 20 20 20 54 68 72  6f 77 41 74 20 20 20 20  |..   ThrowAt    |
00020040  20 20 20 6e 6f 75 6e 20  68 6f 6c 64 73 20 77 68  |   noun holds wh|
00020050  61 74 65 76 65 72 20 74  68 65 20 70 6c 61 79 65  |atever the playe|
00020060  72 20 74 72 69 65 64 20  74 6f 20 74 68 72 6f 77  |r tried to throw|
00020070  2e 0a 0a 49 66 20 74 68  65 20 72 6f 75 74 69 6e  |...If the routin|
00020080  65 20 64 6f 65 73 6e 27  74 20 65 78 69 73 74 2c  |e doesn't exist,|
00020090  20 6f 72 20 72 65 74 75  72 6e 73 20 66 61 6c 73  | or returns fals|
000200a0  65 2c 20 65 76 65 6e 74  73 20 77 69 6c 6c 20 74  |e, events will t|
000200b0  61 6b 65 20 74 68 65 69  72 0a 75 73 75 61 6c 20  |ake their.usual |
000200c0  63 6f 75 72 73 65 2e 20  20 48 65 72 65 20 69 73  |course.  Here is|
000200d0  20 61 20 66 75 6c 6c 20  65 78 61 6d 70 6c 65 3a  | a full example:|
000200e0  0a 0a 20 20 20 20 20 4f  62 6a 65 63 74 20 73 6e  |..     Object sn|
000200f0  61 6b 65 20 22 73 75 6c  6c 65 6e 20 73 6e 61 6b  |ake "sullen snak|
00020100  65 22 20 6d 69 73 74 73  0a 20 20 20 20 20 20 20  |e" mists.       |
00020110  77 69 74 68 20 6e 61 6d  65 20 22 73 75 6c 6c 65  |with name "sulle|
00020120  6e 22 20 22 73 6e 61 6b  65 22 2c 0a 20 20 20 20  |n" "snake",.    |
00020130  20 20 20 20 20 20 20 20  64 65 73 63 72 69 70 74  |        descript|
00020140  69 6f 6e 20 22 50 65 72  68 61 70 73 20 61 20 62  |ion "Perhaps a b|
00020150  6f 61 20 63 6f 6e 73 74  72 69 63 74 6f 72 2e 20  |oa constrictor. |
00020160  20 50 65 72 68 61 70 73  20 6e 6f 74 2e 22 2c 0a  | Perhaps not.",.|
00020170  20 20 20 20 20 20 20 20  20 20 20 20 6c 69 66 65  |            life|
00020180  0a 20 20 20 20 20 20 20  20 20 20 20 20 5b 3b 20  |.            [; |
00020190  4f 72 64 65 72 3a 20 69  66 20 28 61 63 74 69 6f  |Order: if (actio|
000201a0  6e 3d 3d 23 23 47 6f 29  0a 20 20 20 20 20 20 20  |n==##Go).       |
000201b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000201c0  20 22 54 68 65 20 73 6e  61 6b 65 20 77 61 73 6e  | "The snake wasn|
000201d0  27 74 20 62 6f 72 6e 20  79 65 73 74 65 72 64 61  |'t born yesterda|
000201e0  79 2e 22 3b 0a 20 20 20  20 20 20 20 20 20 20 20  |y.";.           |
000201f0  20 20 20 20 41 74 74 61  63 6b 3a 20 20 22 4c 61  |    Attack:  "La|
00020200  7a 69 6c 79 2c 20 74 68  65 20 73 6e 61 6b 65 20  |zily, the snake |
00020210  64 6f 64 67 65 73 20 79  6f 75 72 20 61 74 74 61  |dodges your atta|
00020220  63 6b 2e 22 3b 0a 20 20  20 20 20 20 20 20 20 20  |ck.";.          |
00020230  20 20 20 20 20 4b 69 73  73 3a 20 20 20 20 22 57  |     Kiss:    "W|
00020240  68 61 74 20 61 20 72 65  70 75 6c 73 69 76 65 20  |hat a repulsive |
00020250  69 64 65 61 2e 22 3b 0a  20 20 20 20 20 20 20 20  |idea.";.        |
00020260  20 20 20 20 20 20 20 54  68 72 6f 77 41 74 3a 20  |       ThrowAt: |
00020270  70 72 69 6e 74 20 22 45  66 66 6f 72 74 6c 65 73  |print "Effortles|
00020280  73 6c 79 2c 20 74 68 65  20 73 6e 61 6b 65 20 64  |sly, the snake d|
00020290  6f 64 67 65 73 20 22 3b  0a 20 20 20 20 20 20 20  |odges ";.       |
000202a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000202b0  20 44 65 66 41 72 74 28  69 6e 70 31 29 3b 20 22  | DefArt(inp1); "|
000202c0  2e 22 3b 0a 20 20 20 20  20 20 20 20 20 20 20 20  |.";.            |
000202d0  20 20 20 41 6e 73 77 65  72 3a 20 20 22 54 68 65  |   Answer:  "The|
000202e0  20 73 6e 61 6b 65 20 64  69 73 64 61 69 6e 73 20  | snake disdains |
000202f0  74 6f 20 63 6f 6d 6d 65  6e 74 2e 22 3b 0a 20 20  |to comment.";.  |
00020300  20 20 20 20 20 20 20 20  20 20 20 20 20 41 73 6b  |             Ask|
00020310  3a 20 20 20 20 20 69 66  20 28 6e 6f 75 6e 20 3d  |:     if (noun =|
00020320  3d 20 27 6d 69 73 74 73  27 29 0a 20 20 20 20 20  |= 'mists').     |
00020330  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00020340  20 20 20 20 20 20 20 22  7e 48 65 61 6c 74 68 79  |       "~Healthy|
00020350  20 61 6e 64 20 67 6f 6f  64 20 66 6f 72 20 74 68  | and good for th|
00020360  65 20 73 6b 69 6e 2c 20  6d 69 73 74 73 2e 7e 22  |e skin, mists.~"|
00020370  3b 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |;.              |
00020380  20 20 20 20 20 20 20 20  20 20 22 7e 49 27 6d 20  |          "~I'm |
00020390  6f 6e 6c 79 20 74 68 65  20 6f 62 6c 69 67 61 74  |only the obligat|
000203a0  6f 72 79 20 6d 6f 6e 73  74 65 72 2e 7e 22 3b 0a  |ory monster.~";.|
000203b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 47  |               G|
000203c0  69 76 65 3a 20 20 20 20  69 66 20 28 6e 6f 75 6e  |ive:    if (noun|
000203d0  20 68 61 73 20 65 64 69  62 6c 65 29 0a 20 20 20  | has edible).   |
000203e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000203f0  20 20 20 20 20 7b 20 20  20 72 65 6d 6f 76 65 20  |     {   remove |
00020400  6e 6f 75 6e 3b 0a 20 20  20 20 20 20 20 20 20 20  |noun;.          |
00020410  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00020420  20 20 22 7e 4d 6d 6d 21  20 20 54 68 61 6e 6b 73  |  "~Mmm!  Thanks|
00020430  21 20 20 49 20 73 74 69  6c 6c 20 68 61 74 65 20  |!  I still hate |
00020440  79 6f 75 2c 20 74 68 6f  75 67 68 2e 7e 22 3b 0a  |you, though.~";.|
00020450  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00020460  20 20 20 20 20 20 20 20  7d 0a 20 20 20 20 20 20  |        }.      |
00020470  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00020480  20 20 22 7e 42 6c 65 75  72 67 68 68 21 20 20 41  |  "~Bleurghh!  A|
00020490  72 65 20 79 6f 75 20 74  72 79 69 6e 67 20 74 6f  |re you trying to|
000204a0  20 70 6f 69 73 6f 6e 20  6d 65 3f 7e 22 3b 0a 20  | poison me?~";. |
000204b0  20 20 20 20 20 20 20 20  20 20 20 5d 2c 0a 20 20  |           ],.  |
000204c0  20 20 20 20 20 68 61 73  20 20 61 6e 69 6d 61 74  |     has  animat|
000204d0  65 3b 0a 0a 4f 66 20 63  6f 75 72 73 65 20 61 6e  |e;..Of course an|
000204e0  20 22 61 6e 69 6d 61 74  65 22 20 73 74 69 6c 6c  | "animate" still|
000204f0  20 68 61 73 20 22 62 65  66 6f 72 65 22 20 61 6e  | has "before" an|
00020500  64 20 22 61 66 74 65 72  22 20 72 6f 75 74 69 6e  |d "after" routin|
00020510  65 73 20 6c 69 6b 65 20  61 6e 79 0a 6f 74 68 65  |es like any.othe|
00020520  72 2e 20 20 28 54 68 65  20 6c 69 62 72 61 72 79  |r.  (The library|
00020530  20 75 6e 64 65 72 73 74  61 6e 64 73 20 74 68 61  | understands tha|
00020540  74 2c 20 66 6f 72 20 65  78 61 6d 70 6c 65 2c 20  |t, for example, |
00020550  61 6e 20 61 6e 69 6d 61  74 65 20 63 72 65 61 74  |an animate creat|
00020560  75 72 65 0a 63 61 6e 6e  6f 74 20 62 65 20 74 61  |ure.cannot be ta|
00020570  6b 65 6e 2e 29 0a 0a 0a  41 20 66 6f 6f 74 6e 6f  |ken.)...A footno|
00020580  74 65 20 61 62 6f 75 74  20 4f 72 64 65 72 3a 20  |te about Order: |
00020590  4f 72 64 65 72 20 69 73  20 61 6e 6f 74 68 65 72  |Order is another|
000205a0  20 22 66 61 6b 65 20 61  63 74 69 6f 6e 22 2e 20  | "fake action". |
000205b0  20 54 68 65 20 22 62 65  66 6f 72 65 22 0a 61 6e  | The "before".an|
000205c0  64 20 22 61 66 74 65 72  22 20 72 6f 75 74 69 6e  |d "after" routin|
000205d0  65 73 20 6f 66 20 61 20  72 6f 6f 6d 20 63 61 6e  |es of a room can|
000205e0  27 74 20 64 65 74 65 63  74 20 74 68 65 20 70 6c  |'t detect the pl|
000205f0  61 79 65 72 20 68 61 76  69 6e 67 20 67 69 76 65  |ayer having give|
00020600  6e 20 61 0a 72 65 71 75  65 73 74 20 74 6f 20 61  |n a.request to a|
00020610  6e 6f 74 68 65 72 20 63  68 61 72 61 63 74 65 72  |nother character|
00020620  2e 20 20 41 6c 73 6f 2c  20 69 66 20 79 6f 75 20  |.  Also, if you |
00020630  77 61 6e 74 20 74 68 65  20 73 6e 61 6b 65 20 74  |want the snake t|
00020640  6f 20 6f 62 65 79 20 77  68 65 6e 0a 74 68 65 20  |o obey when.the |
00020650  70 6c 61 79 65 72 20 74  65 6c 6c 73 20 69 74 20  |player tells it |
00020660  74 6f 20 74 61 6b 65 20  73 6f 6d 65 74 68 69 6e  |to take somethin|
00020670  67 2c 20 79 6f 75 20 68  61 76 65 20 74 6f 20 77  |g, you have to w|
00020680  72 69 74 65 20 74 68 65  20 63 6f 64 65 20 74 6f  |rite the code to|
00020690  20 64 6f 0a 74 68 65 20  61 63 74 75 61 6c 20 74  | do.the actual t|
000206a0  61 6b 69 6e 67 20 79 6f  75 72 73 65 6c 66 2e 20  |aking yourself. |
000206b0  20 54 68 69 73 20 69 73  6e 27 74 20 61 6e 79 20  | This isn't any |
000206c0  70 72 6f 62 6c 65 6d 20  69 6e 20 70 72 61 63 74  |problem in pract|
000206d0  69 63 65 2e 20 20 28 54  72 79 0a 6c 6f 6f 6b 69  |ice.  (Try.looki|
000206e0  6e 67 20 61 74 20 74 68  65 20 63 6f 64 65 20 66  |ng at the code f|
000206f0  6f 72 20 22 43 68 72 69  73 74 6f 70 68 65 72 22  |or "Christopher"|
00020700  20 69 6e 20 74 68 65 20  22 54 6f 79 73 68 6f 70  | in the "Toyshop|
00020710  22 20 65 78 61 6d 70 6c  65 20 67 61 6d 65 2e 29  |" example game.)|
00020720  0a 0a 0a 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |...-------------|
00020730  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00020760  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0a 44  |--------------.D|
00020770  36 2e 20 20 43 6c 61 73  73 65 73 20 6f 66 20 6f  |6.  Classes of o|
00020780  62 6a 65 63 74 73 0a 2d  2d 2d 2d 2d 2d 2d 2d 2d  |bjects.---------|
00020790  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000207d0  2d 2d 0a 0a 0a 41 6e 20  65 78 61 6d 70 6c 65 20  |--...An example |
000207e0  6f 66 20 61 20 63 6c 61  73 73 20 69 73 3a 0a 0a  |of a class is:..|
000207f0  20 20 20 20 20 20 43 6c  61 73 73 20 54 72 65 61  |      Class Trea|
00020800  73 75 72 65 0a 20 20 20  20 20 20 20 77 69 74 68  |sure.       with|
00020810  20 64 65 70 6f 73 69 74  70 6f 69 6e 74 73 20 31  | depositpoints 1|
00020820  30 2c 0a 20 20 20 20 20  20 20 20 20 20 20 20 61  |0,.            a|
00020830  66 74 65 72 0a 20 20 20  20 20 20 20 20 20 20 20  |fter.           |
00020840  20 5b 3b 20 54 61 6b 65  3a 20 69 66 20 28 6c 6f  | [; Take: if (lo|
00020850  63 61 74 69 6f 6e 3d 3d  49 6e 73 69 64 65 5f 42  |cation==Inside_B|
00020860  75 69 6c 64 69 6e 67 29  0a 20 20 20 20 20 20 20  |uilding).       |
00020870  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00020880  20 20 20 73 63 6f 72 65  3d 73 63 6f 72 65 2d 73  |   score=score-s|
00020890  65 6c 66 2e 64 65 70 6f  73 69 74 70 6f 69 6e 74  |elf.depositpoint|
000208a0  73 3b 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |s;.             |
000208b0  20 20 20 20 20 20 20 20  73 63 6f 72 65 3d 73 63  |        score=sc|
000208c0  6f 72 65 2b 35 3b 0a 20  20 20 20 20 20 20 20 20  |ore+5;.         |
000208d0  20 20 20 20 20 20 20 20  20 20 20 20 22 54 61 6b  |            "Tak|
000208e0  65 6e 21 22 3b 0a 20 20  20 20 20 20 20 20 20 20  |en!";.          |
000208f0  20 20 20 20 20 44 72 6f  70 3a 20 73 63 6f 72 65  |     Drop: score|
00020900  3d 73 63 6f 72 65 2d 35  3b 0a 20 20 20 20 20 20  |=score-5;.      |
00020910  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 69  |               i|
00020920  66 20 28 6c 6f 63 61 74  69 6f 6e 3d 3d 49 6e 73  |f (location==Ins|
00020930  69 64 65 5f 42 75 69 6c  64 69 6e 67 29 0a 20 20  |ide_Building).  |
00020940  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00020950  20 20 20 7b 20 20 20 73  63 6f 72 65 3d 73 63 6f  |   {   score=sco|
00020960  72 65 2b 73 65 6c 66 2e  64 65 70 6f 73 69 74 70  |re+self.depositp|
00020970  6f 69 6e 74 73 3b 0a 20  20 20 20 20 20 20 20 20  |oints;.         |
00020980  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00020990  22 53 61 66 65 6c 79 20  64 65 70 6f 73 69 74 65  |"Safely deposite|
000209a0  64 2e 22 3b 0a 20 20 20  20 20 20 20 20 20 20 20  |d.";.           |
000209b0  20 20 20 20 20 20 20 20  20 20 7d 20 20 20 20 20  |          }     |
000209c0  20 20 20 20 20 20 20 20  20 20 0a 20 20 20 20 20  |          .     |
000209d0  20 20 20 20 20 20 20 5d  2c 0a 20 20 20 20 20 20  |       ],.      |
000209e0  20 68 61 73 20 20 76 61  6c 75 61 62 6c 65 3b 0a  | has  valuable;.|
000209f0  0a 41 6e 79 20 6f 62 6a  65 63 74 20 64 65 63 6c  |.Any object decl|
00020a00  61 72 65 64 20 61 73 20  62 65 69 6e 67 20 6f 66  |ared as being of|
00020a10  20 74 68 69 73 20 63 6c  61 73 73 2c 20 73 75 63  | this class, suc|
00020a20  68 20 61 73 3a 0a 0a 20  20 20 20 20 4e 65 61 72  |h as:..     Near|
00020a30  62 79 20 62 61 72 73 5f  6f 66 5f 73 69 6c 76 65  |by bars_of_silve|
00020a40  72 20 22 62 61 72 73 20  6f 66 20 73 69 6c 76 65  |r "bars of silve|
00020a50  72 22 0a 20 20 20 20 20  20 63 6c 61 73 73 20 54  |r".      class T|
00020a60  72 65 61 73 75 72 65 0a  20 20 20 20 20 20 20 77  |reasure.       w|
00020a70  69 74 68 20 64 65 73 63  72 69 70 74 69 6f 6e 20  |ith description |
00020a80  22 54 68 65 79 27 72 65  20 70 72 6f 62 61 62 6c  |"They're probabl|
00020a90  79 20 77 6f 72 74 68 20  61 20 66 6f 72 74 75 6e  |y worth a fortun|
00020aa0  65 21 22 2c 0a 20 20 20  20 20 20 20 20 20 20 20  |e!",.           |
00020ab0  20 69 6e 69 74 69 61 6c  20 22 54 68 65 72 65 20  | initial "There |
00020ac0  61 72 65 20 62 61 72 73  20 6f 66 20 73 69 6c 76  |are bars of silv|
00020ad0  65 72 20 68 65 72 65 21  22 2c 0a 20 20 20 20 20  |er here!",.     |
00020ae0  20 20 20 20 20 20 20 61  72 74 69 63 6c 65 20 22  |       article "|
00020af0  73 6f 6d 65 22 2c 0a 20  20 20 20 20 20 20 20 20  |some",.         |
00020b00  20 20 20 6e 61 6d 65 20  22 73 69 6c 76 65 72 22  |   name "silver"|
00020b10  20 22 62 61 72 73 22 3b  0a 0a 69 6e 68 65 72 69  | "bars";..inheri|
00020b20  74 73 20 74 68 65 20 22  64 65 70 6f 73 69 74 70  |ts the "depositp|
00020b30  6f 69 6e 74 73 22 20 76  61 6c 75 65 20 6f 66 20  |oints" value of |
00020b40  31 30 20 61 6e 64 20 74  68 65 20 72 75 6c 65 73  |10 and the rules|
00020b50  20 61 62 6f 75 74 20 74  61 6b 69 6e 67 0a 61 6e  | about taking.an|
00020b60  64 20 64 72 6f 70 70 69  6e 67 2e 20 20 49 66 20  |d dropping.  If |
00020b70  74 68 65 20 73 69 6c 76  65 72 20 62 61 72 73 20  |the silver bars |
00020b80  68 61 64 20 74 68 65 6d  73 65 6c 76 65 73 20 73  |had themselves s|
00020b90  65 74 20 22 64 65 70 6f  73 69 74 70 6f 69 6e 74  |et "depositpoint|
00020ba0  73 22 0a 74 6f 20 31 35  2c 20 73 61 79 2c 20 74  |s".to 15, say, t|
00020bb0  68 65 6e 20 74 68 65 20  76 61 6c 75 65 20 77 6f  |hen the value wo|
00020bc0  75 6c 64 20 62 65 20 31  35 3a 20 69 2e 65 2e 2c  |uld be 15: i.e.,|
00020bd0  20 74 68 65 20 63 6c 61  73 73 20 77 6f 75 6c 64  | the class would|
00020be0  20 62 65 0a 6f 76 65 72  2d 72 69 64 64 65 6e 2e  | be.over-ridden.|
00020bf0  0a 0a 57 65 20 63 6f 75  6c 64 20 61 6c 73 6f 2c  |..We could also,|
00020c00  20 66 6f 72 20 69 6e 73  74 61 6e 63 65 2c 20 68  | for instance, h|
00020c10  61 76 65 3a 0a 0a 20 20  20 20 20 4e 65 61 72 62  |ave:..     Nearb|
00020c20  79 20 63 61 6b 65 20 22  76 61 6c 75 61 62 6c 65  |y cake "valuable|
00020c30  20 63 61 6b 65 22 0a 20  20 20 20 20 20 63 6c 61  | cake".      cla|
00020c40  73 73 20 54 72 65 61 73  75 72 65 0a 20 20 20 20  |ss Treasure.    |
00020c50  20 20 20 77 69 74 68 20  64 65 73 63 72 69 70 74  |   with descript|
00020c60  69 6f 6e 20 22 45 78 71  75 69 73 69 74 65 21 22  |ion "Exquisite!"|
00020c70  2c 0a 20 20 20 20 20 20  20 20 20 20 20 20 69 6e  |,.            in|
00020c80  69 74 69 61 6c 20 22 54  68 65 72 65 27 73 20 61  |itial "There's a|
00020c90  20 76 61 6c 75 61 62 6c  65 20 63 61 6b 65 20 68  | valuable cake h|
00020ca0  65 72 65 21 22 2c 0a 20  20 20 20 20 20 20 20 20  |ere!",.         |
00020cb0  20 20 20 61 66 74 65 72  0a 20 20 20 20 20 20 20  |   after.       |
00020cc0  20 20 20 20 20 5b 3b 20  45 61 74 3a 20 22 59 6f  |     [; Eat: "Yo|
00020cd0  75 72 20 6d 6f 73 74 20  65 78 70 65 6e 73 69 76  |ur most expensiv|
00020ce0  65 20 6d 65 61 6c 20 69  6e 20 61 67 65 73 2c 20  |e meal in ages, |
00020cf0  62 75 74 20 77 6f 72 74  68 20 69 74 2e 22 3b 0a  |but worth it.";.|
00020d00  20 20 20 20 20 20 20 20  20 20 20 20 5d 2c 0a 20  |            ],. |
00020d10  20 20 20 20 20 20 20 20  20 20 20 6e 61 6d 65 20  |           name |
00020d20  22 76 61 6c 75 61 62 6c  65 22 20 22 63 61 6b 65  |"valuable" "cake|
00020d30  22 0a 20 20 20 20 20 20  20 68 61 73 20 20 65 64  |".       has  ed|
00020d40  69 62 6c 65 3b 0a 0a 4e  6f 77 20 74 68 65 20 63  |ible;..Now the c|
00020d50  61 6b 65 20 68 61 73 20  74 77 6f 20 22 61 66 74  |ake has two "aft|
00020d60  65 72 22 20 72 75 6c 65  73 2e 20 20 42 6f 74 68  |er" rules.  Both|
00020d70  20 61 70 70 6c 79 2c 20  62 75 74 20 74 68 65 20  | apply, but the |
00020d80  72 75 6c 65 20 69 6e 20  74 68 65 20 63 61 6b 65  |rule in the cake|
00020d90  0a 69 74 73 65 6c 66 20  74 61 6b 65 73 20 70 72  |.itself takes pr|
00020da0  65 63 65 64 65 6e 63 65  2c 20 69 2e 65 2e 2c 20  |ecedence, i.e., |
00020db0  68 61 70 70 65 6e 73 20  66 69 72 73 74 2e 0a 0a  |happens first...|
00020dc0  0a 41 6e 20 6f 62 6a 65  63 74 20 63 61 6e 20 69  |.An object can i|
00020dd0  6e 68 65 72 69 74 20 66  72 6f 6d 20 73 65 76 65  |nherit from seve|
00020de0  72 61 6c 20 63 6c 61 73  73 65 73 20 61 74 20 6f  |ral classes at o|
00020df0  6e 63 65 20 28 69 6e 20  73 65 71 75 65 6e 63 65  |nce (in sequence|
00020e00  2c 20 6c 65 66 74 20 74  6f 0a 72 69 67 68 74 29  |, left to.right)|
00020e10  2e 20 20 41 20 63 6c 61  73 73 20 63 61 6e 20 69  |.  A class can i|
00020e20  74 73 65 6c 66 20 69 6e  68 65 72 69 74 20 66 72  |tself inherit fr|
00020e30  6f 6d 20 6f 74 68 65 72  20 63 6c 61 73 73 65 73  |om other classes|
00020e40  2e 20 20 54 68 65 20 66  75 6c 6c 20 72 75 6c 65  |.  The full rule|
00020e50  73 0a 61 72 65 20 69 6e  20 28 31 33 29 2e 0a 0a  |s.are in (13)...|
00020e60  0a 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.---------------|
00020e70  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00020ea0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 0a 44 37 2e  |------------.D7.|
00020eb0  20 20 44 61 65 6d 6f 6e  73 20 61 6e 64 20 74 68  |  Daemons and th|
00020ec0  65 20 70 61 73 73 69 6e  67 20 6f 66 20 74 69 6d  |e passing of tim|
00020ed0  65 0a 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |e.--------------|
00020ee0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00020f10  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0a 0a 0a  |-------------...|
00020f20  42 79 20 74 72 61 64 69  74 69 6f 6e 2c 20 61 20  |By tradition, a |
00020f30  22 64 61 65 6d 6f 6e 22  20 69 73 20 61 6e 20 65  |"daemon" is an e|
00020f40  76 65 6e 74 20 77 68 69  63 68 20 68 61 70 70 65  |vent which happe|
00020f50  6e 73 20 65 61 63 68 20  74 75 72 6e 20 77 68 69  |ns each turn whi|
00020f60  6c 65 20 69 74 20 69 73  0a 61 63 74 69 76 65 2e  |le it is.active.|
00020f70  20 20 54 68 65 20 63 6c  61 73 73 69 63 20 65 78  |  The classic ex|
00020f80  61 6d 70 6c 65 20 69 73  20 6f 66 20 61 20 64 77  |ample is of a dw|
00020f90  61 72 66 20 77 68 69 63  68 20 61 70 70 65 61 72  |arf which appear|
00020fa0  73 20 69 6e 20 74 68 65  20 63 61 76 65 3a 20 69  |s in the cave: i|
00020fb0  74 0a 68 61 73 20 61 20  64 61 65 6d 6f 6e 20 72  |t.has a daemon r|
00020fc0  6f 75 74 69 6e 65 20 61  74 74 61 63 68 65 64 20  |outine attached |
00020fd0  74 6f 20 6d 6f 76 65 20  69 74 20 61 62 6f 75 74  |to move it about|
00020fe0  2c 20 6d 61 6b 65 20 69  74 20 74 68 72 6f 77 20  |, make it throw |
00020ff0  6b 6e 69 76 65 73 20 61  74 0a 74 68 65 20 70 6c  |knives at.the pl|
00021000  61 79 65 72 20 61 6e 64  20 6f 74 68 65 72 20 70  |ayer and other p|
00021010  6c 65 61 73 61 6e 74 72  69 65 73 2e 0a 0a 45 61  |leasantries...Ea|
00021020  63 68 20 6f 62 6a 65 63  74 20 63 61 6e 20 68 61  |ch object can ha|
00021030  76 65 20 69 74 73 20 6f  77 6e 20 64 61 65 6d 6f  |ve its own daemo|
00021040  6e 2e 20 20 49 74 20 69  73 20 73 65 74 20 67 6f  |n.  It is set go|
00021050  69 6e 67 20 62 79 20 63  61 6c 6c 69 6e 67 20 74  |ing by calling t|
00021060  68 65 0a 72 6f 75 74 69  6e 65 0a 0a 20 20 20 20  |he.routine..    |
00021070  20 53 74 61 72 74 44 61  65 6d 6f 6e 28 74 68 65  | StartDaemon(the|
00021080  2d 6f 62 6a 65 63 74 29  3b 0a 0a 61 6e 64 20 63  |-object);..and c|
00021090  61 6e 20 62 65 20 74 75  72 6e 65 64 20 6f 66 66  |an be turned off|
000210a0  20 61 67 61 69 6e 20 77  69 74 68 0a 0a 20 20 20  | again with..   |
000210b0  20 20 53 74 6f 70 44 61  65 6d 6f 6e 28 74 68 65  |  StopDaemon(the|
000210c0  2d 6f 62 6a 65 63 74 29  3b 0a 0a 4f 6e 63 65 20  |-object);..Once |
000210d0  69 74 27 73 20 61 63 74  69 76 65 2c 20 69 74 73  |it's active, its|
000210e0  20 22 64 61 65 6d 6f 6e  22 20 70 72 6f 70 65 72  | "daemon" proper|
000210f0  74 79 20 69 73 20 63 61  6c 6c 65 64 20 61 73 20  |ty is called as |
00021100  61 20 72 6f 75 74 69 6e  65 20 65 61 63 68 20 74  |a routine each t|
00021110  75 72 6e 2e 0a 28 42 65  20 77 61 72 6e 65 64 3a  |urn..(Be warned:|
00021120  20 74 68 69 73 20 63 6f  6e 74 69 6e 75 65 73 20  | this continues |
00021130  74 6f 20 68 61 70 70 65  6e 20 65 76 65 6e 20 69  |to happen even i|
00021140  66 20 74 68 65 20 64 61  65 6d 6f 6e 20 69 73 20  |f the daemon is |
00021150  61 73 73 6f 63 69 61 74  65 64 20 77 69 74 68 0a  |associated with.|
00021160  61 20 72 6f 6f 6d 20 6f  72 20 69 74 65 6d 20 77  |a room or item w|
00021170  68 69 63 68 20 68 61 73  20 62 65 65 6e 20 6c 65  |hich has been le|
00021180  66 74 20 62 65 68 69 6e  64 20 62 79 20 74 68 65  |ft behind by the|
00021190  20 70 6c 61 79 65 72 2e  29 0a 0a 0a 41 20 22 74  | player.)...A "t|
000211a0  69 6d 65 72 22 20 28 74  68 65 73 65 20 61 72 65  |imer" (these are|
000211b0  20 74 72 61 64 69 74 69  6f 6e 61 6c 6c 79 20 63  | traditionally c|
000211c0  61 6c 6c 65 64 20 22 66  75 73 65 73 22 20 62 75  |alled "fuses" bu|
000211d0  74 20 74 68 65 20 61 75  74 68 6f 72 20 63 61 6e  |t the author can|
000211e0  20 73 74 61 6e 64 0a 6f  6e 6c 79 20 73 6f 20 6d  | stand.only so m|
000211f0  75 63 68 20 74 72 61 64  69 74 69 6f 6e 29 20 63  |uch tradition) c|
00021200  61 6e 20 61 6c 74 65 72  6e 61 74 69 76 65 6c 79  |an alternatively|
00021210  20 62 65 20 61 74 74 61  63 68 65 64 20 74 6f 20  | be attached to |
00021220  61 6e 20 6f 62 6a 65 63  74 2e 0a 28 41 6e 20 6f  |an object..(An o|
00021230  62 6a 65 63 74 20 63 61  6e 27 74 20 68 61 76 65  |bject can't have|
00021240  20 62 6f 74 68 20 61 20  74 69 6d 65 72 20 61 6e  | both a timer an|
00021250  64 20 61 20 64 61 65 6d  6f 6e 20 61 63 74 69 76  |d a daemon activ|
00021260  65 20 61 74 20 74 68 65  20 73 61 6d 65 20 74 69  |e at the same ti|
00021270  6d 65 2e 29 0a 41 20 74  69 6d 65 72 20 69 73 20  |me.).A timer is |
00021280  73 74 61 72 74 65 64 20  77 69 74 68 0a 0a 20 20  |started with..  |
00021290  20 20 20 53 74 61 72 74  54 69 6d 65 72 28 74 68  |   StartTimer(th|
000212a0  65 2d 6f 62 6a 65 63 74  2c 20 74 69 6d 65 29 3b  |e-object, time);|
000212b0  0a 0a 69 6e 20 77 68 69  63 68 20 63 61 73 65 20  |..in which case |
000212c0  69 74 20 77 69 6c 6c 20  22 67 6f 20 6f 66 66 22  |it will "go off"|
000212d0  20 28 61 6c 61 72 6d 20  63 6c 6f 63 6b 2d 73 74  | (alarm clock-st|
000212e0  79 6c 65 29 20 69 6e 20  74 68 65 20 67 69 76 65  |yle) in the give|
000212f0  6e 20 6e 75 6d 62 65 72  20 6f 66 0a 74 75 72 6e  |n number of.turn|
00021300  73 2e 20 20 54 68 69 73  20 6d 65 61 6e 73 20 74  |s.  This means t|
00021310  68 61 74 20 69 74 73 20  22 74 69 6d 65 5f 6f 75  |hat its "time_ou|
00021320  74 22 20 72 6f 75 74 69  6e 65 20 77 69 6c 6c 20  |t" routine will |
00021330  62 65 20 63 61 6c 6c 65  64 2c 20 6f 6e 63 65 20  |be called, once |
00021340  61 6e 64 0a 6f 6e 63 65  20 6f 6e 6c 79 2c 20 61  |and.once only, a|
00021350  74 20 74 68 69 73 20 74  69 6d 65 2e 0a 0a 49 74  |t this time...It|
00021360  20 63 61 6e 20 62 65 20  64 65 61 63 74 69 76 61  | can be deactiva|
00021370  74 65 64 20 28 73 6f 20  74 68 61 74 20 69 74 20  |ted (so that it |
00021380  77 69 6c 6c 20 6e 65 76  65 72 20 67 6f 20 6f 66  |will never go of|
00021390  66 29 20 62 79 20 63 61  6c 6c 69 6e 67 0a 0a 20  |f) by calling.. |
000213a0  20 20 20 20 53 74 6f 70  54 69 6d 65 72 28 74 68  |    StopTimer(th|
000213b0  65 2d 6f 62 6a 65 63 74  29 3b 0a 0a 0a 54 69 6d  |e-object);...Tim|
000213c0  65 72 73 20 61 6e 64 20  64 61 65 6d 6f 6e 73 20  |ers and daemons |
000213d0  61 72 65 20 5f 72 65 71  75 69 72 65 64 5f 20 74  |are _required_ t|
000213e0  6f 20 70 72 6f 76 69 64  65 20 61 20 22 74 69 6d  |o provide a "tim|
000213f0  65 5f 6c 65 66 74 22 20  70 72 6f 70 65 72 74 79  |e_left" property|
00021400  2e 20 20 49 6e 0a 74 68  65 20 63 61 73 65 20 6f  |.  In.the case o|
00021410  66 20 61 20 64 61 65 6d  6f 6e 2c 20 74 68 69 73  |f a daemon, this|
00021420  20 69 73 20 73 65 74 20  74 6f 20 2d 31 20 77 68  | is set to -1 wh|
00021430  65 6e 20 74 68 65 20 64  61 65 6d 6f 6e 20 69 73  |en the daemon is|
00021440  20 61 63 74 69 76 65 2e  20 20 49 6e 20 74 68 65  | active.  In the|
00021450  0a 63 61 73 65 20 6f 66  20 61 20 74 69 6d 65 72  |.case of a timer|
00021460  2c 20 69 74 27 73 20 74  68 65 20 6e 75 6d 62 65  |, it's the numbe|
00021470  72 20 6f 66 20 74 75 72  6e 73 20 6c 65 66 74 20  |r of turns left |
00021480  62 65 66 6f 72 65 20 74  68 65 20 74 69 6d 65 72  |before the timer|
00021490  20 67 6f 65 73 20 6f 66  66 2e 0a 54 68 69 73 20  | goes off..This |
000214a0  63 61 6e 20 62 65 20 6d  61 6e 69 70 75 6c 61 74  |can be manipulat|
000214b0  65 64 20 61 6e 64 20 6c  6f 6f 6b 65 64 20 61 74  |ed and looked at|
000214c0  20 62 79 20 74 68 65 20  70 72 6f 67 72 61 6d 2e  | by the program.|
000214d0  20 20 57 61 72 6e 69 6e  67 3a 20 69 66 20 79 6f  |  Warning: if yo|
000214e0  75 0a 66 6f 72 67 65 74  20 74 6f 20 70 72 6f 76  |u.forget to prov|
000214f0  69 64 65 20 22 74 69 6d  65 5f 6c 65 66 74 22 2c  |ide "time_left",|
00021500  20 74 68 65 20 67 61 6d  65 20 6d 61 79 20 63 72  | the game may cr|
00021510  61 73 68 21 0a 0a 0a 49  66 20 79 6f 75 27 72 65  |ash!...If you're|
00021520  20 77 72 69 74 69 6e 67  20 61 20 67 61 6d 65 20  | writing a game |
00021530  77 69 74 68 20 74 69 6d  65 20 69 6e 73 74 65 61  |with time instea|
00021540  64 20 6f 66 20 73 63 6f  72 65 2f 74 75 72 6e 73  |d of score/turns|
00021550  20 6f 6e 20 74 68 65 20  73 74 61 74 75 73 0a 6c  | on the status.l|
00021560  69 6e 65 2c 20 79 6f 75  20 63 61 6e 20 73 65 74  |ine, you can set|
00021570  20 74 68 65 20 74 69 6d  65 20 62 79 0a 0a 20 20  | the time by..  |
00021580  20 53 65 74 54 69 6d 65  28 20 68 6f 75 72 73 2a  | SetTime( hours*|
00021590  36 30 2b 6d 69 6e 75 74  65 73 2c 20 72 61 74 65  |60+minutes, rate|
000215a0  29 3b 0a 0a 77 68 65 72  65 20 72 61 74 65 3d 30  |);..where rate=0|
000215b0  20 6d 65 61 6e 73 20 74  68 65 20 74 69 6d 65 20  | means the time |
000215c0  69 73 20 6c 65 66 74 20  61 6c 6f 6e 65 2c 20 61  |is left alone, a|
000215d0  6e 64 20 69 66 20 72 61  74 65 3e 30 20 74 68 61  |nd if rate>0 tha|
000215e0  74 20 6d 61 6e 79 0a 6d  69 6e 75 74 65 73 20 70  |t many.minutes p|
000215f0  61 73 73 20 65 76 65 72  79 20 61 63 74 69 6f 6e  |ass every action|
00021600  2c 20 77 68 65 72 65 61  73 20 69 66 20 72 61 74  |, whereas if rat|
00021610  65 3c 30 20 74 68 61 74  20 6d 61 6e 79 20 61 63  |e<0 that many ac|
00021620  74 69 6f 6e 73 20 70 61  73 73 0a 66 6f 72 20 65  |tions pass.for e|
00021630  76 65 72 79 20 6d 69 6e  75 74 65 2e 0a 0a 54 68  |very minute...Th|
00021640  65 20 63 75 72 72 65 6e  74 20 74 69 6d 65 20 69  |e current time i|
00021650  73 20 68 65 6c 64 20 69  6e 20 61 20 76 61 72 69  |s held in a vari|
00021660  61 62 6c 65 2c 20 22 74  68 65 5f 74 69 6d 65 22  |able, "the_time"|
00021670  2e 20 20 49 74 27 73 20  61 20 32 34 2d 68 6f 75  |.  It's a 24-hou|
00021680  72 0a 63 6c 6f 63 6b 2e  0a 0a 43 61 6c 6c 69 6e  |r.clock...Callin|
00021690  67 20 53 65 74 54 69 6d  65 20 61 6c 73 6f 20 74  |g SetTime also t|
000216a0  65 6c 6c 73 20 74 68 65  20 6c 69 62 72 61 72 79  |ells the library|
000216b0  20 74 68 61 74 20 74 68  65 20 67 61 6d 65 20 69  | that the game i|
000216c0  73 20 61 20 22 74 69 6d  65 22 20 72 61 74 68 65  |s a "time" rathe|
000216d0  72 20 74 68 61 6e 0a 22  73 63 6f 72 65 22 20 67  |r than."score" g|
000216e0  61 6d 65 2e 20 20 52 65  6d 65 6d 62 65 72 20 74  |ame.  Remember t|
000216f0  6f 20 63 61 6c 6c 20 69  74 20 69 6e 20 49 6e 69  |o call it in Ini|
00021700  74 69 61 6c 69 73 65 28  29 2e 0a 0a 0a 45 78 61  |tialise()....Exa|
00021710  63 74 6c 79 20 77 68 61  74 20 68 61 70 70 65 6e  |ctly what happen|
00021720  73 20 61 74 20 74 68 65  20 65 6e 64 20 6f 66 20  |s at the end of |
00021730  65 61 63 68 20 74 75 72  6e 20 69 73 3a 0a 0a 20  |each turn is:.. |
00021740  20 31 2e 20 20 54 68 65  20 74 75 72 6e 73 20 63  | 1.  The turns c|
00021750  6f 75 6e 74 65 72 20 69  73 20 69 6e 63 72 65 6d  |ounter is increm|
00021760  65 6e 74 65 64 2e 0a 0a  20 20 32 2e 20 20 54 68  |ented...  2.  Th|
00021770  65 20 74 69 6d 65 20 6d  6f 76 65 73 20 6f 6e 2e  |e time moves on.|
00021780  0a 0a 20 20 33 2e 20 20  44 61 65 6d 6f 6e 73 20  |..  3.  Daemons |
00021790  61 6e 64 20 74 69 6d 65  72 73 20 61 72 65 20 72  |and timers are r|
000217a0  75 6e 20 28 69 6e 20 6e  6f 20 70 61 72 74 69 63  |un (in no partic|
000217b0  75 6c 61 72 20 6f 72 64  65 72 29 2e 0a 0a 20 20  |ular order)...  |
000217c0  34 2e 20 20 54 68 65 20  22 65 61 63 68 5f 74 75  |4.  The "each_tu|
000217d0  72 6e 22 20 72 6f 75 74  69 6e 65 20 6f 66 20 74  |rn" routine of t|
000217e0  68 65 20 63 75 72 72 65  6e 74 20 72 6f 6f 6d 20  |he current room |
000217f0  69 73 20 72 75 6e 2e 0a  0a 20 20 35 2e 20 20 54  |is run...  5.  T|
00021800  68 65 20 67 61 6d 65 27  73 20 67 6c 6f 62 61 6c  |he game's global|
00021810  20 54 69 6d 65 50 61 73  73 65 73 28 29 20 72 6f  | TimePasses() ro|
00021820  75 74 69 6e 65 20 69 73  20 63 61 6c 6c 65 64 2e  |utine is called.|
00021830  0a 0a 20 20 36 2e 20 20  4c 69 67 68 74 20 69 73  |..  6.  Light is|
00021840  20 72 65 2d 63 6f 6e 73  69 64 65 72 65 64 20 28  | re-considered (|
00021850  69 74 20 6d 61 79 20 68  61 76 65 20 67 6f 6e 65  |it may have gone|
00021860  20 64 61 72 6b 20 61 73  20 61 20 72 65 73 75 6c  | dark as a resul|
00021870  74 0a 20 20 20 20 20 20  20 20 6f 66 20 77 68 61  |t.        of wha|
00021880  74 20 68 61 73 20 68 61  70 70 65 6e 65 64 29 2e  |t has happened).|
00021890  0a 0a 54 68 69 73 20 73  65 71 75 65 6e 63 65 20  |..This sequence |
000218a0  69 73 20 61 62 61 6e 64  6f 6e 65 64 20 69 66 20  |is abandoned if |
000218b0  61 74 20 61 6e 79 20 73  74 61 67 65 20 74 68 65  |at any stage the|
000218c0  20 70 6c 61 79 65 72 20  64 69 65 73 2e 0a 0a 0a  | player dies....|
000218d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00021910  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 44 38 2e 20  |-----------.D8. |
00021920  20 43 61 6c 6c 73 20 74  6f 20 61 6e 64 20 66 72  | Calls to and fr|
00021930  6f 6d 20 74 68 65 20 6c  69 62 72 61 72 79 0a 2d  |om the library.-|
00021940  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00021980  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0a 0a 0a 41 20 67  |----------...A g|
00021990  61 6d 65 20 75 73 69 6e  67 20 74 68 65 20 6c 69  |ame using the li|
000219a0  62 72 61 72 79 20 5f 6d  75 73 74 5f 20 70 72 6f  |brary _must_ pro|
000219b0  76 69 64 65 20 6f 6e 65  20 72 6f 75 74 69 6e 65  |vide one routine|
000219c0  3a 0a 0a 20 20 49 6e 69  74 69 61 6c 69 73 65 28  |:..  Initialise(|
000219d0  29 20 69 73 20 63 61 6c  6c 65 64 20 62 65 66 6f  |) is called befo|
000219e0  72 65 20 74 68 65 20 62  61 6e 6e 65 72 20 69 73  |re the banner is|
000219f0  20 70 72 69 6e 74 65 64  20 75 70 2c 20 61 6e 64  | printed up, and|
00021a00  20 6f 6e 65 20 74 68 69  6e 67 20 69 74 0a 20 20  | one thing it.  |
00021a10  5f 6d 75 73 74 5f 20 64  6f 20 69 73 20 74 6f 20  |_must_ do is to |
00021a20  73 65 74 20 22 6c 6f 63  61 74 69 6f 6e 22 20 74  |set "location" t|
00021a30  6f 20 74 68 65 20 69 6e  69 74 69 61 6c 20 67 61  |o the initial ga|
00021a40  6d 65 20 6c 6f 63 61 74  69 6f 6e 2e 0a 0a 49 74  |me location...It|
00021a50  20 6d 75 73 74 20 61 6c  73 6f 20 64 65 66 69 6e  | must also defin|
00021a60  65 20 74 77 6f 20 73 74  72 69 6e 67 20 63 6f 6e  |e two string con|
00021a70  73 74 61 6e 74 73 2c 20  53 74 6f 72 79 20 61 6e  |stants, Story an|
00021a80  64 20 48 65 61 64 6c 69  6e 65 2c 20 65 2e 67 2e  |d Headline, e.g.|
00021a90  3a 0a 0a 20 20 20 20 20  43 6f 6e 73 74 61 6e 74  |:..     Constant|
00021aa0  20 53 74 6f 72 79 20 22  5a 4f 52 4b 20 49 49 22  | Story "ZORK II"|
00021ab0  3b 0a 20 20 20 20 20 43  6f 6e 73 74 61 6e 74 20  |;.     Constant |
00021ac0  48 65 61 64 6c 69 6e 65  20 22 5e 41 6e 20 49 6e  |Headline "^An In|
00021ad0  74 65 72 61 63 74 69 76  65 20 50 6c 61 67 69 61  |teractive Plagia|
00021ae0  72 69 73 6d 5e 5c 0a 20  20 20 20 20 20 20 20 20  |rism^\.         |
00021af0  20 20 20 20 20 20 20 20  43 6f 70 79 72 69 67 68  |        Copyrigh|
00021b00  74 20 28 63 29 20 31 39  39 33 20 62 79 20 49 76  |t (c) 1993 by Iv|
00021b10  61 6e 20 4f 2e 20 49 64  65 61 73 2e 5e 22 3b 0a  |an O. Ideas.^";.|
00021b20  0a 0a 49 6e 20 61 64 64  69 74 69 6f 6e 2c 20 69  |..In addition, i|
00021b30  74 20 6d 61 79 20 28 62  75 74 20 6e 65 65 64 20  |t may (but need |
00021b40  6e 6f 74 29 20 70 72 6f  76 69 64 65 20 74 68 65  |not) provide the|
00021b50  20 66 6f 6c 6c 6f 77 69  6e 67 20 72 6f 75 74 69  | following routi|
00021b60  6e 65 73 3a 0a 0a 20 20  54 69 6d 65 50 61 73 73  |nes:..  TimePass|
00021b70  65 73 28 29 20 69 73 20  63 61 6c 6c 65 64 20 61  |es() is called a|
00021b80  66 74 65 72 20 65 76 65  72 79 20 74 75 72 6e 20  |fter every turn |
00021b90  28 62 75 74 20 6e 6f 74  2c 20 66 6f 72 20 69 6e  |(but not, for in|
00021ba0  73 74 61 6e 63 65 2c 20  61 66 74 65 72 20 61 0a  |stance, after a.|
00021bb0  20 20 20 20 63 6f 6d 6d  61 6e 64 20 6c 69 6b 65  |    command like|
00021bc0  20 22 73 63 6f 72 65 22  20 6f 72 20 22 73 61 76  | "score" or "sav|
00021bd0  65 22 29 2e 20 20 49 74  27 73 20 6d 75 63 68 20  |e").  It's much |
00021be0  6d 6f 72 65 20 65 6c 65  67 61 6e 74 20 74 6f 20  |more elegant to |
00021bf0  75 73 65 20 74 69 6d 65  72 73 0a 20 20 20 20 61  |use timers.    a|
00021c00  6e 64 20 64 61 65 6d 6f  6e 73 2c 20 6f 72 20 22  |nd daemons, or "|
00021c10  65 61 63 68 5f 74 75 72  6e 22 20 72 6f 75 74 69  |each_turn" routi|
00021c20  6e 65 73 20 66 6f 72 20  69 6e 64 69 76 69 64 75  |nes for individu|
00021c30  61 6c 20 72 6f 6f 6d 73  20 2d 20 75 73 69 6e 67  |al rooms - using|
00021c40  20 74 68 69 73 0a 20 20  20 20 69 73 20 61 20 6c  | this.    is a l|
00021c50  61 73 74 20 72 65 73 6f  72 74 2e 0a 0a 20 20 50  |ast resort...  P|
00021c60  72 69 6e 74 52 61 6e 6b  28 29 20 63 6f 6d 70 6c  |rintRank() compl|
00021c70  65 74 65 73 20 74 68 65  20 70 72 69 6e 74 69 6e  |etes the printin|
00021c80  67 20 6f 66 20 74 68 65  20 73 63 6f 72 65 2e 20  |g of the score. |
00021c90  20 28 59 6f 75 20 6d 69  67 68 74 20 77 61 6e 74  | (You might want|
00021ca0  20 74 6f 20 63 68 61 6e  67 65 0a 20 20 20 20 74  | to change.    t|
00021cb0  68 69 73 2c 20 73 6f 20  61 73 20 74 6f 20 6d 61  |his, so as to ma|
00021cc0  6b 65 20 74 68 65 20 72  61 6e 6b 73 20 73 6f 6d  |ke the ranks som|
00021cd0  65 74 68 69 6e 67 20 6c  69 6b 65 20 22 6a 75 6e  |ething like "jun|
00021ce0  69 6f 72 20 61 73 74 72  6f 6e 61 75 74 22 20 6f  |ior astronaut" o|
00021cf0  72 0a 20 20 20 20 22 6d  61 73 74 65 72 20 63 61  |r.    "master ca|
00021d00  74 62 75 72 67 6c 61 72  22 20 6f 72 20 77 68 61  |tburglar" or wha|
00021d10  74 65 76 65 72 20 73 75  69 74 73 20 79 6f 75 72  |tever suits your|
00021d20  20 67 61 6d 65 2e 29 0a  0a 20 20 44 61 72 6b 54  | game.)..  DarkT|
00021d30  6f 44 61 72 6b 28 29 20  69 73 20 63 61 6c 6c 65  |oDark() is calle|
00021d40  64 20 77 68 65 6e 20 61  20 70 6c 61 79 65 72 20  |d when a player |
00021d50  67 6f 65 73 20 66 72 6f  6d 20 6f 6e 65 20 64 61  |goes from one da|
00021d60  72 6b 20 72 6f 6f 6d 20  69 6e 74 6f 20 61 6e 6f  |rk room into ano|
00021d70  74 68 65 72 0a 20 20 20  20 6f 6e 65 2e 20 20 49  |ther.    one.  I|
00021d80  66 20 79 6f 75 20 77 61  6e 74 2c 20 79 6f 75 20  |f you want, you |
00021d90  63 61 6e 20 74 61 6b 65  20 74 68 65 20 6f 70 70  |can take the opp|
00021da0  6f 72 74 75 6e 69 74 79  20 74 6f 20 6b 69 6c 6c  |ortunity to kill|
00021db0  20 74 68 65 20 70 6c 61  79 65 72 20 6f 66 66 0a  | the player off.|
00021dc0  20 20 20 20 66 6f 72 20  64 6f 69 6e 67 20 74 68  |    for doing th|
00021dd0  69 73 2e 0a 0a 20 20 44  65 61 74 68 4d 65 73 73  |is...  DeathMess|
00021de0  61 67 65 28 29 20 69 73  20 74 6f 20 70 72 69 6e  |age() is to prin|
00021df0  74 20 75 70 20 22 59 6f  75 20 68 61 76 65 20 64  |t up "You have d|
00021e00  69 65 64 22 20 73 74 79  6c 65 20 6d 65 73 73 61  |ied" style messa|
00021e10  67 65 73 2e 20 20 54 6f  20 6b 69 6c 6c 20 61 0a  |ges.  To kill a.|
00021e20  20 20 20 20 70 6c 61 79  65 72 2c 20 73 65 74 20  |    player, set |
00021e30  22 64 65 61 64 66 6c 61  67 22 20 74 6f 20 31 2e  |"deadflag" to 1.|
00021e40  20 20 54 6f 20 6d 61 6b  65 20 61 20 70 6c 61 79  |  To make a play|
00021e50  65 72 20 77 69 6e 2c 20  73 65 74 20 22 64 65 61  |er win, set "dea|
00021e60  64 66 6c 61 67 22 20 74  6f 20 32 2e 0a 20 20 20  |dflag" to 2..   |
00021e70  20 49 66 20 79 6f 75 20  73 65 74 20 22 64 65 61  | If you set "dea|
00021e80  64 66 6c 61 67 22 20 74  6f 20 61 6e 79 20 6f 74  |dflag" to any ot|
00021e90  68 65 72 20 76 61 6c 75  65 20 28 33 2c 20 34 2c  |her value (3, 4,|
00021ea0  20 2e 2e 2e 29 20 74 68  69 73 20 72 6f 75 74 69  | ...) this routi|
00021eb0  6e 65 20 69 73 0a 20 20  20 20 63 61 6c 6c 65 64  |ne is.    called|
00021ec0  20 74 6f 20 73 61 79 20  77 68 61 74 20 68 61 70  | to say what hap|
00021ed0  70 65 6e 65 64 2c 20 65  2e 67 2e 20 22 59 6f 75  |pened, e.g. "You|
00021ee0  20 68 61 76 65 20 63 68  61 6e 67 65 64 22 2e 0a  | have changed"..|
00021ef0  0a 20 20 4c 6f 6f 6b 52  6f 75 74 69 6e 65 28 29  |.  LookRoutine()|
00021f00  20 69 73 20 63 61 6c 6c  65 64 20 61 74 20 74 68  | is called at th|
00021f10  65 20 65 6e 64 20 6f 66  20 65 76 65 72 79 20 6c  |e end of every l|
00021f20  6f 63 61 74 69 6f 6e 20  64 65 73 63 72 69 70 74  |ocation descript|
00021f30  69 6f 6e 2e 0a 0a 20 20  4e 65 77 52 6f 6f 6d 28  |ion...  NewRoom(|
00021f40  29 20 69 73 20 63 61 6c  6c 65 64 20 77 68 65 6e  |) is called when|
00021f50  20 74 68 65 20 72 6f 6f  6d 20 63 68 61 6e 67 65  | the room change|
00021f60  73 2c 20 62 65 66 6f 72  65 20 61 6e 79 20 64 65  |s, before any de|
00021f70  73 63 72 69 70 74 69 6f  6e 20 6f 66 20 69 74 0a  |scription of it.|
00021f80  20 20 20 20 69 73 20 70  72 69 6e 74 65 64 2e 20  |    is printed. |
00021f90  20 28 54 68 69 73 20 68  61 70 70 65 6e 73 20 6e  | (This happens n|
00021fa0  6f 20 6d 61 74 74 65 72  20 68 6f 77 20 74 68 65  |o matter how the|
00021fb0  20 63 68 61 6e 67 65 20  6f 66 20 72 6f 6f 6d 20  | change of room |
00021fc0  6f 63 63 75 72 72 65 64  2e 29 0a 0a 20 20 50 72  |occurred.)..  Pr|
00021fd0  69 6e 74 54 61 73 6b 4e  61 6d 65 28 29 20 70 72  |intTaskName() pr|
00021fe0  69 6e 74 73 20 74 68 65  20 6e 61 6d 65 20 6f 66  |ints the name of|
00021ff0  20 61 20 67 61 6d 65 20  74 61 73 6b 20 28 73 75  | a game task (su|
00022000  63 68 20 61 73 20 22 64  72 69 76 69 6e 67 20 74  |ch as "driving t|
00022010  68 65 0a 20 20 20 20 63  61 72 22 29 2e 0a 0a 20  |he.    car")... |
00022020  20 41 6d 75 73 69 6e 67  28 29 20 69 73 20 63 61  | Amusing() is ca|
00022030  6c 6c 65 64 20 74 6f 20  70 72 69 6e 74 20 73 6f  |lled to print so|
00022040  6d 65 20 61 6d 75 73 69  6e 67 20 61 66 74 65 72  |me amusing after|
00022050  77 6f 72 64 20 77 68 65  6e 20 74 68 65 20 67 61  |word when the ga|
00022060  6d 65 20 69 73 20 77 6f  6e 0a 20 20 20 20 28 66  |me is won.    (f|
00022070  6f 72 20 69 6e 73 74 61  6e 63 65 2c 20 69 74 20  |or instance, it |
00022080  6d 69 67 68 74 20 61 64  76 65 72 74 69 73 65 20  |might advertise |
00022090  73 6f 6d 65 20 66 65 61  74 75 72 65 73 20 77 68  |some features wh|
000220a0  69 63 68 20 61 20 73 75  63 63 65 73 73 66 75 6c  |ich a successful|
000220b0  0a 20 20 20 20 70 6c 61  79 65 72 20 6d 69 67 68  |.    player migh|
000220c0  74 20 6e 65 76 65 72 20  68 61 76 65 20 6e 6f 74  |t never have not|
000220d0  69 63 65 64 29 2e 20 20  28 42 75 74 20 6f 6e 6c  |iced).  (But onl|
000220e0  79 20 69 66 20 79 6f 75  20 68 61 76 65 20 64 65  |y if you have de|
000220f0  66 69 6e 65 64 20 74 68  65 0a 20 20 20 20 63 6f  |fined the.    co|
00022100  6e 73 74 61 6e 74 20 41  4d 55 53 49 4e 47 5f 50  |nstant AMUSING_P|
00022110  52 4f 56 49 44 45 44 20  69 6e 20 79 6f 75 72 20  |ROVIDED in your |
00022120  6f 77 6e 20 63 6f 64 65  2e 29 0a 0a 20 20 47 61  |own code.)..  Ga|
00022130  6d 65 50 72 65 52 6f 75  74 69 6e 65 28 29 20 61  |mePreRoutine() a|
00022140  6e 64 20 47 61 6d 65 50  6f 73 74 52 6f 75 74 69  |nd GamePostRouti|
00022150  6e 65 28 29 20 2d 20 73  65 65 20 62 65 6c 6f 77  |ne() - see below|
00022160  2e 0a 0a 20 20 50 61 72  73 65 4e 75 6d 62 65 72  |...  ParseNumber|
00022170  20 2d 20 61 6c 6c 6f 77  73 20 6e 75 6d 62 65 72  | - allows number|
00022180  73 20 69 6e 20 75 6e 75  73 75 61 6c 20 66 6f 72  |s in unusual for|
00022190  6d 61 74 73 20 74 6f 20  62 65 20 70 61 72 73 65  |mats to be parse|
000221a0  64 2e 20 20 53 6f 6d 65  74 69 6d 65 73 0a 20 20  |d.  Sometimes.  |
000221b0  20 20 69 74 27 73 20 75  73 65 66 75 6c 20 66 6f  |  it's useful fo|
000221c0  72 20 74 68 65 20 70 61  72 73 65 72 20 74 6f 20  |r the parser to |
000221d0  62 65 20 61 62 6c 65 20  74 6f 20 75 6e 64 65 72  |be able to under|
000221e0  73 74 61 6e 64 20 6e 75  6d 62 65 72 73 20 69 6e  |stand numbers in|
000221f0  0a 20 20 20 20 73 74 72  61 6e 67 65 20 66 6f 72  |.    strange for|
00022200  6d 61 74 73 3a 20 52 6f  6d 61 6e 20 6e 75 6d 65  |mats: Roman nume|
00022210  72 61 6c 73 2c 20 6c 65  74 74 65 72 20 63 6f 64  |rals, letter cod|
00022220  65 73 2c 20 6c 6f 6e 67  20 74 65 6c 65 70 68 6f  |es, long telepho|
00022230  6e 65 20 6e 75 6d 62 65  72 73 2c 0a 20 20 20 20  |ne numbers,.    |
00022240  65 74 63 2e 20 20 41 63  63 6f 72 64 69 6e 67 6c  |etc.  Accordingl|
00022250  79 20 79 6f 75 20 63 61  6e 20 70 72 6f 76 69 64  |y you can provid|
00022260  65 0a 0a 20 20 20 20 20  5b 20 50 61 72 73 65 4e  |e..     [ ParseN|
00022270  75 6d 62 65 72 20 62 75  66 66 65 72 20 6c 65 6e  |umber buffer len|
00022280  67 74 68 3b 0a 20 20 20  20 20 20 20 2e 2e 2e 72  |gth;.       ...r|
00022290  65 74 75 72 6e 69 6e 67  20 30 20 69 66 20 6e 6f  |eturning 0 if no|
000222a0  20 6d 61 74 63 68 20 69  73 20 6d 61 64 65 2c 20  | match is made, |
000222b0  6f 72 20 74 68 65 20 6e  75 6d 62 65 72 20 6f 74  |or the number ot|
000222c0  68 65 72 77 69 73 65 2e  2e 2e 0a 20 20 20 20 20  |herwise....     |
000222d0  5d 3b 0a 0a 20 20 20 20  74 6f 20 65 78 61 6d 69  |];..    to exami|
000222e0  6e 65 20 74 68 65 20 22  6e 75 6d 62 65 72 22 20  |ne the "number" |
000222f0  68 65 6c 64 20 69 6e 20  41 53 43 49 49 20 63 68  |held in ASCII ch|
00022300  61 72 61 63 74 65 72 73  20 61 74 20 74 68 65 20  |aracters at the |
00022310  67 69 76 65 6e 20 62 79  74 65 0a 20 20 20 20 61  |given byte.    a|
00022320  64 64 72 65 73 73 2c 20  6f 66 20 67 69 76 65 6e  |ddress, of given|
00022330  20 6c 65 6e 67 74 68 2e  20 20 49 66 20 74 68 69  | length.  If thi|
00022340  73 20 69 73 20 70 72 65  73 65 6e 74 2c 20 74 68  |s is present, th|
00022350  65 6e 20 77 68 65 6e 20  73 70 65 63 69 61 6c 5f  |en when special_|
00022360  6e 75 6d 62 65 72 0a 20  20 20 20 69 73 20 73 65  |number.    is se|
00022370  74 2c 20 69 74 20 77 69  6c 6c 20 62 65 20 73 65  |t, it will be se|
00022380  74 20 75 73 69 6e 67 20  74 68 69 73 20 72 6f 75  |t using this rou|
00022390  74 69 6e 65 20 69 66 20  70 6f 73 73 69 62 6c 65  |tine if possible|
000223a0  20 66 69 72 73 74 20 28  61 6e 64 20 74 68 65 6e  | first (and then|
000223b0  0a 20 20 20 20 6c 61 70  73 65 20 69 6e 74 6f 20  |.    lapse into |
000223c0  69 74 73 20 75 73 75 61  6c 20 70 61 72 73 69 6e  |its usual parsin|
000223d0  67 20 69 66 20 69 74 20  6d 61 6b 65 73 20 6e 6f  |g if it makes no|
000223e0  20 6d 61 74 63 68 29 2e  0a 0a 20 20 41 66 74 65  | match)...  Afte|
000223f0  72 4c 69 66 65 20 2d 20  63 61 6c 6c 65 64 20 77  |rLife - called w|
00022400  68 65 6e 20 64 65 61 74  68 20 74 61 6b 65 73 20  |hen death takes |
00022410  70 6c 61 63 65 2c 20 62  75 74 20 62 65 66 6f 72  |place, but befor|
00022420  65 20 61 6e 79 0a 20 20  20 20 2a 2a 2a 20 59 6f  |e any.    *** Yo|
00022430  75 20 68 61 76 65 20 64  69 65 64 20 2a 2a 2a 20  |u have died *** |
00022440  6d 65 73 73 61 67 65 20  61 70 70 65 61 72 73 2e  |message appears.|
00022450  20 20 49 66 20 69 74 20  72 65 73 65 74 73 20 64  |  If it resets d|
00022460  65 61 64 66 6c 61 67 20  62 61 63 6b 20 74 6f 20  |eadflag back to |
00022470  30 2c 0a 20 20 20 20 74  68 65 20 70 6c 61 79 65  |0,.    the playe|
00022480  72 20 65 66 66 65 63 74  69 76 65 6c 79 20 67 65  |r effectively ge|
00022490  74 73 20 72 65 73 75 72  72 65 63 74 65 64 2e 0a  |ts resurrected..|
000224a0  0a 0a 41 70 61 72 74 20  66 72 6f 6d 20 74 68 65  |..Apart from the|
000224b0  73 65 2c 20 74 68 65 20  6f 6e 6c 79 20 72 6f 75  |se, the only rou|
000224c0  74 69 6e 65 73 20 6f 66  20 79 6f 75 72 73 20 77  |tines of yours w|
000224d0  68 69 63 68 20 61 72 65  20 65 76 65 72 20 63 61  |hich are ever ca|
000224e0  6c 6c 65 64 20 61 72 65  20 74 68 6f 73 65 0a 61  |lled are those.a|
000224f0  74 74 61 63 68 65 64 20  74 6f 20 79 6f 75 72 20  |ttached to your |
00022500  6f 62 6a 65 63 74 73 2e  0a 0a 0a 54 68 65 20 6c  |objects....The l|
00022510  69 62 72 61 72 79 20 63  6f 6e 74 61 69 6e 73 20  |ibrary contains |
00022520  73 65 76 65 72 61 6c 20  75 73 65 66 75 6c 20 72  |several useful r|
00022530  6f 75 74 69 6e 65 73 20  77 68 69 63 68 20 63 61  |outines which ca|
00022540  6e 20 62 65 20 63 61 6c  6c 65 64 20 66 72 6f 6d  |n be called from|
00022550  20 74 69 6d 65 0a 74 6f  20 74 69 6d 65 2e 20 20  | time.to time.  |
00022560  41 6d 6f 6e 67 20 74 68  65 73 65 20 61 72 65 3a  |Among these are:|
00022570  0a 0a 20 20 44 65 66 41  72 74 28 6f 62 6a 29 3a  |..  DefArt(obj):|
00022580  20 61 20 75 73 65 66 75  6c 20 6c 69 74 74 6c 65  | a useful little|
00022590  20 72 6f 75 74 69 6e 65  20 77 68 69 63 68 20 70  | routine which p|
000225a0  72 69 6e 74 73 20 74 68  65 20 6e 61 6d 65 20 6f  |rints the name o|
000225b0  66 20 74 68 65 0a 20 20  20 20 20 20 6f 62 6a 65  |f the.      obje|
000225c0  63 74 2c 20 77 69 74 68  20 69 74 73 20 64 65 66  |ct, with its def|
000225d0  69 6e 69 74 65 20 61 72  74 69 63 6c 65 20 61 74  |inite article at|
000225e0  74 61 63 68 65 64 2e 20  20 54 68 69 73 20 63 61  |tached.  This ca|
000225f0  75 73 65 73 2c 20 66 6f  72 20 65 78 61 6d 70 6c  |uses, for exampl|
00022600  65 2c 0a 0a 20 20 20 20  20 20 20 20 20 20 74 68  |e,..          th|
00022610  65 20 70 6c 61 74 69 6e  75 6d 20 62 61 72 0a 20  |e platinum bar. |
00022620  20 20 20 20 20 20 20 20  20 41 75 6e 74 20 4a 65  |         Aunt Je|
00022630  6d 69 6d 61 0a 20 20 20  20 20 20 20 20 20 20 45  |mima.          E|
00022640  6c 62 65 72 65 74 68 0a  0a 20 20 20 20 20 20 28  |lbereth..      (|
00022650  61 6e 20 6f 62 6a 65 63  74 20 77 69 74 68 20 22  |an object with "|
00022660  70 72 6f 70 65 72 22 20  2d 20 6d 65 61 6e 69 6e  |proper" - meanin|
00022670  67 2c 20 74 68 65 20 6e  61 6d 65 20 69 73 20 61  |g, the name is a|
00022680  20 70 72 6f 70 65 72 20  6e 6f 75 6e 20 2d 20 64  | proper noun - d|
00022690  6f 65 73 0a 20 20 20 20  20 20 6e 6f 74 20 68 61  |oes.      not ha|
000226a0  76 65 20 22 74 68 65 22  20 70 72 69 6e 74 65 64  |ve "the" printed|
000226b0  20 69 6e 20 66 72 6f 6e  74 29 2e 0a 0a 20 20 43  | in front)...  C|
000226c0  44 65 66 41 72 74 28 6f  62 6a 29 3a 20 74 68 65  |DefArt(obj): the|
000226d0  20 73 61 6d 65 20 62 75  74 20 77 69 74 68 20 61  | same but with a|
000226e0  20 63 61 70 69 74 61 6c  20 6c 65 74 74 65 72 20  | capital letter |
000226f0  61 74 20 74 68 65 20 66  72 6f 6e 74 2e 0a 0a 20  |at the front... |
00022700  20 49 6e 64 65 66 41 72  74 28 6f 62 6a 29 3a 20  | IndefArt(obj): |
00022710  73 69 6d 69 6c 61 72 2c  20 62 75 74 20 77 69 74  |similar, but wit|
00022720  68 20 74 68 65 20 69 6e  64 65 66 69 6e 69 74 65  |h the indefinite|
00022730  20 61 72 74 69 63 6c 65  3a 0a 0a 20 20 20 20 20  | article:..     |
00022740  20 20 20 20 20 61 20 70  6c 61 74 69 6e 75 6d 20  |     a platinum |
00022750  62 61 72 0a 20 20 20 20  20 20 20 20 20 20 61 6e  |bar.          an|
00022760  20 6f 72 61 6e 67 65 20  62 61 6c 6c 6f 6f 6e 0a  | orange balloon.|
00022770  20 20 20 20 20 20 20 20  20 20 79 6f 75 72 20 41  |          your A|
00022780  75 6e 74 20 4a 65 6d 69  6d 61 0a 20 20 20 20 20  |unt Jemima.     |
00022790  20 20 20 20 20 73 6f 6d  65 20 62 75 6e 64 6c 65  |     some bundle|
000227a0  73 20 6f 66 20 72 65 65  64 73 0a 20 20 20 20 20  |s of reeds.     |
000227b0  20 20 20 20 20 66 61 72  20 74 6f 6f 20 6d 61 6e  |     far too man|
000227c0  79 20 6d 61 72 62 6c 65  73 0a 0a 20 20 20 20 20  |y marbles..     |
000227d0  20 28 74 68 65 20 69 6e  64 65 66 69 6e 69 74 65  | (the indefinite|
000227e0  20 61 72 74 69 63 6c 65  20 69 73 20 22 61 22 20  | article is "a" |
000227f0  75 6e 6c 65 73 73 20 73  65 74 20 62 79 20 74 68  |unless set by th|
00022800  65 20 22 61 72 74 69 63  6c 65 22 20 70 72 6f 70  |e "article" prop|
00022810  65 72 74 79 29 2e 0a 0a  20 20 44 65 73 63 72 69  |erty)...  Descri|
00022820  62 65 4f 62 6a 28 6f 62  6a 29 3a 20 70 72 6f 64  |beObj(obj): prod|
00022830  75 63 65 73 20 61 20 6d  6f 72 65 20 63 6f 6d 70  |uces a more comp|
00022840  6c 65 74 65 20 64 65 73  63 72 69 70 74 69 6f 6e  |lete description|
00022850  3a 0a 0a 20 20 20 20 20  20 20 20 20 20 61 6e 20  |:..          an |
00022860  65 6c 65 63 74 72 69 63  20 74 6f 72 63 68 20 28  |electric torch (|
00022870  70 72 6f 76 69 64 69 6e  67 20 6c 69 67 68 74 29  |providing light)|
00022880  0a 20 20 20 20 20 20 20  20 20 20 61 20 72 75 63  |.          a ruc|
00022890  6b 73 61 63 6b 20 28 77  68 69 63 68 20 69 73 20  |ksack (which is |
000228a0  6f 70 65 6e 20 61 6e 64  20 63 6f 6e 74 61 69 6e  |open and contain|
000228b0  73 20 61 20 73 63 61 72  6c 65 74 20 66 69 73 68  |s a scarlet fish|
000228c0  29 0a 0a 20 20 41 63 68  69 65 76 65 64 28 74 61  |)..  Achieved(ta|
000228d0  73 6b 29 3a 20 64 65 63  6c 61 72 65 73 20 61 20  |sk): declares a |
000228e0  63 65 72 74 61 69 6e 20  74 61 73 6b 20 61 73 20  |certain task as |
000228f0  63 6f 6d 70 6c 65 74 65  64 20 28 73 65 65 20 62  |completed (see b|
00022900  65 6c 6f 77 29 0a 0a 20  20 50 6c 61 79 65 72 54  |elow)..  PlayerT|
00022910  6f 28 70 6c 61 63 65 29  3a 20 6d 6f 76 65 73 20  |o(place): moves |
00022920  74 68 65 20 70 6c 61 79  65 72 20 74 6f 20 61 20  |the player to a |
00022930  6e 65 77 20 70 6c 61 63  65 20 28 73 65 65 20 62  |new place (see b|
00022940  65 6c 6f 77 29 0a 0a 20  20 53 65 74 54 69 6d 65  |elow)..  SetTime|
00022950  28 6e 6f 77 2c 20 73 74  65 70 29 3a 20 73 65 74  |(now, step): set|
00022960  73 20 74 68 65 20 32 34  2d 68 6f 75 72 20 63 6c  |s the 24-hour cl|
00022970  6f 63 6b 20 28 73 65 65  20 61 62 6f 76 65 29 0a  |ock (see above).|
00022980  0a 20 20 59 65 73 4f 72  4e 6f 28 29 3a 20 61 73  |.  YesOrNo(): as|
00022990  6b 73 20 74 68 65 20 70  6c 61 79 65 72 20 61 20  |ks the player a |
000229a0  79 65 73 2d 6e 6f 20 71  75 65 73 74 69 6f 6e 2c  |yes-no question,|
000229b0  20 72 65 74 75 72 6e 69  6e 67 20 74 72 75 65 20  | returning true |
000229c0  69 66 20 74 68 65 0a 20  20 20 20 20 20 72 65 70  |if the.      rep|
000229d0  6c 79 20 77 61 73 20 79  65 73 2e 20 20 28 49 74  |ly was yes.  (It|
000229e0  20 64 6f 65 73 6e 27 74  20 70 72 69 6e 74 20 74  | doesn't print t|
000229f0  68 65 20 71 75 65 73 74  69 6f 6e 2e 29 0a 0a 0a  |he question.)...|
00022a00  4f 63 63 61 73 69 6f 6e  61 6c 6c 79 20 79 6f 75  |Occasionally you|
00022a10  20 6e 65 65 64 20 74 6f  20 72 65 77 72 69 74 65  | need to rewrite|
00022a20  20 6f 6e 65 20 6f 66 20  74 68 65 20 6c 69 62 72  | one of the libr|
00022a30  61 72 79 20 72 6f 75 74  69 6e 65 73 2e 20 20 42  |ary routines.  B|
00022a40  75 74 0a 74 68 65 20 64  61 6e 67 65 72 20 6f 66  |ut.the danger of|
00022a50  20 64 6f 69 6e 67 20 73  6f 20 69 73 20 74 68 61  | doing so is tha|
00022a60  74 20 69 74 20 69 73 20  74 68 65 6e 20 6e 65 63  |t it is then nec|
00022a70  65 73 73 61 72 79 20 74  6f 20 6b 65 65 70 20 61  |essary to keep a|
00022a80  20 63 6f 70 79 0a 6f 66  20 74 68 65 20 6c 69 62  | copy.of the lib|
00022a90  72 61 72 79 20 66 6f 72  20 65 76 65 72 79 20 67  |rary for every g|
00022aa0  61 6d 65 2c 20 77 68 69  63 68 20 69 73 20 63 6c  |ame, which is cl|
00022ab0  65 61 72 6c 79 20 75 6e  73 61 74 69 73 66 61 63  |early unsatisfac|
00022ac0  74 6f 72 79 2e 20 20 53  6f 3a 0a 74 68 65 20 64  |tory.  So:.the d|
00022ad0  69 72 65 63 74 69 76 65  0a 0a 20 20 20 20 52 45  |irective..    RE|
00022ae0  50 4c 41 43 45 20 42 75  72 6e 53 75 62 3b 0a 0a  |PLACE BurnSub;..|
00022af0  28 69 66 20 70 6c 61 63  65 64 20 62 65 66 6f 72  |(if placed befor|
00022b00  65 20 74 68 65 20 6c 69  62 72 61 72 79 20 66 69  |e the library fi|
00022b10  6c 65 73 20 61 72 65 20  69 6e 63 6c 75 64 65 64  |les are included|
00022b20  29 20 74 65 6c 6c 73 20  49 6e 66 6f 72 6d 20 74  |) tells Inform t|
00022b30  6f 0a 69 67 6e 6f 72 65  20 74 68 65 20 64 65 66  |o.ignore the def|
00022b40  69 6e 69 74 69 6f 6e 20  6f 66 20 22 42 75 72 6e  |inition of "Burn|
00022b50  53 75 62 22 20 69 6e 20  74 68 65 20 6c 69 62 72  |Sub" in the libr|
00022b60  61 72 79 20 66 69 6c 65  73 2e 20 20 28 59 6f 75  |ary files.  (You|
00022b70  20 74 68 65 6e 0a 68 61  76 65 20 74 6f 20 64 65  | then.have to de|
00022b80  66 69 6e 65 20 61 20 72  6f 75 74 69 6e 65 20 63  |fine a routine c|
00022b90  61 6c 6c 65 64 20 42 75  72 6e 53 75 62 20 79 6f  |alled BurnSub yo|
00022ba0  75 72 73 65 6c 66 2e 29  0a 0a 0a 0a 54 68 65 20  |urself.)....The |
00022bb0  6c 69 62 72 61 72 79 20  77 6f 6e 27 74 20 61 6c  |library won't al|
00022bc0  6c 6f 77 20 74 68 65 20  70 6c 61 79 65 72 20 74  |low the player t|
00022bd0  6f 20 63 61 72 72 79 20  61 6e 20 69 6e 64 65 66  |o carry an indef|
00022be0  69 6e 69 74 65 20 6e 75  6d 62 65 72 20 6f 66 0a  |inite number of.|
00022bf0  6f 62 6a 65 63 74 73 3a  20 74 68 65 20 6c 69 6d  |objects: the lim|
00022c00  69 74 20 61 6c 6c 6f 77  65 64 20 69 73 20 74 68  |it allowed is th|
00022c10  65 20 63 6f 6e 73 74 61  6e 74 20 4d 41 58 5f 43  |e constant MAX_C|
00022c20  41 52 52 49 45 44 2c 20  77 68 69 63 68 20 79 6f  |ARRIED, which yo|
00022c30  75 0a 6d 61 79 20 64 65  66 69 6e 65 20 69 66 20  |u.may define if |
00022c40  79 6f 75 20 77 69 73 68  2e 20 20 28 49 66 20 79  |you wish.  (If y|
00022c50  6f 75 20 64 6f 6e 27 74  20 64 65 66 69 6e 65 20  |ou don't define |
00022c60  69 74 2c 20 69 74 27 73  20 31 30 30 2c 20 77 68  |it, it's 100, wh|
00022c70  69 63 68 0a 72 6f 75 67  68 6c 79 20 72 65 6d 6f  |ich.roughly remo|
00022c80  76 65 73 20 74 68 65 20  72 75 6c 65 2e 29 0a 0a  |ves the rule.)..|
00022c90  49 66 20 79 6f 75 20 64  65 66 69 6e 65 20 53 41  |If you define SA|
00022ca0  43 4b 5f 4f 42 4a 45 43  54 20 74 6f 20 62 65 20  |CK_OBJECT to be |
00022cb0  73 6f 6d 65 20 63 6f 6e  74 61 69 6e 65 72 2c 20  |some container, |
00022cc0  74 68 65 6e 20 74 68 65  20 70 6c 61 79 65 72 20  |then the player |
00022cd0  77 69 6c 6c 0a 61 75 74  6f 6d 61 74 69 63 61 6c  |will.automatical|
00022ce0  6c 79 20 70 75 74 20 6f  6c 64 2c 20 6c 65 61 73  |ly put old, leas|
00022cf0  74 2d 75 73 65 64 20 6f  62 6a 65 63 74 73 20 61  |t-used objects a|
00022d00  77 61 79 20 69 6e 20 69  74 20 61 73 20 74 68 65  |way in it as the|
00022d10  20 67 61 6d 65 0a 70 72  6f 67 72 65 73 73 65 73  | game.progresses|
00022d20  2e 20 20 28 49 66 20 6e  6f 74 2c 20 6e 6f 74 68  |.  (If not, noth|
00022d30  69 6e 67 20 68 61 70 70  65 6e 73 2e 29 0a 0a 0a  |ing happens.)...|
00022d40  41 6e 6f 74 68 65 72 20  63 6f 6e 73 74 61 6e 74  |Another constant|
00022d50  20 69 73 20 41 4d 55 53  49 4e 47 5f 50 52 4f 56  | is AMUSING_PROV|
00022d60  49 44 45 44 2e 20 20 49  66 20 79 6f 75 20 64 65  |IDED.  If you de|
00022d70  66 69 6e 65 20 74 68 69  73 2c 20 74 68 65 20 6c  |fine this, the l|
00022d80  69 62 72 61 72 79 0a 6b  6e 6f 77 73 20 74 6f 20  |ibrary.knows to |
00022d90  70 75 74 20 61 6e 20 22  61 6d 75 73 69 6e 67 22  |put an "amusing"|
00022da0  20 6f 70 74 69 6f 6e 20  6f 6e 20 74 68 65 20 6d  | option on the m|
00022db0  65 6e 75 20 61 66 74 65  72 20 74 68 65 20 67 61  |enu after the ga|
00022dc0  6d 65 20 69 73 20 77 6f  6e 2e 0a 49 74 20 77 69  |me is won..It wi|
00022dd0  6c 6c 20 74 68 65 6e 20  63 61 6c 6c 20 41 6d 75  |ll then call Amu|
00022de0  73 69 6e 67 28 29 20 66  72 6f 6d 20 79 6f 75 72  |sing() from your|
00022df0  20 63 6f 64 65 20 77 68  65 6e 20 6e 65 65 64 65  | code when neede|
00022e00  64 2e 0a 0a 0a 49 6e 20  64 65 62 75 67 67 69 6e  |d....In debuggin|
00022e10  67 2c 20 69 74 27 73 20  73 6f 6d 65 74 69 6d 65  |g, it's sometime|
00022e20  73 20 74 72 69 63 6b 79  20 74 6f 20 77 6f 72 6b  |s tricky to work|
00022e30  20 6f 75 74 20 65 78 61  63 74 6c 79 20 77 68 61  | out exactly wha|
00022e40  74 20 69 73 0a 68 61 70  70 65 6e 69 6e 67 20 61  |t is.happening a|
00022e50  6e 64 20 69 6e 20 77 68  61 74 20 6f 72 64 65 72  |nd in what order|
00022e60  2e 20 20 49 66 20 61 20  67 61 6d 65 20 69 73 20  |.  If a game is |
00022e70  63 6f 6d 70 69 6c 65 64  20 77 69 74 68 20 74 68  |compiled with th|
00022e80  65 20 63 6f 6e 73 74 61  6e 74 0a 44 45 42 55 47  |e constant.DEBUG|
00022e90  20 64 65 66 69 6e 65 64  2c 20 74 68 65 6e 20 69  | defined, then i|
00022ea0  74 20 77 69 6c 6c 20 70  72 69 6e 74 20 6f 75 74  |t will print out|
00022eb0  20 64 65 74 61 69 6c 73  20 6f 66 20 65 76 65 72  | details of ever|
00022ec0  79 20 6f 62 6a 65 63 74  20 72 6f 75 74 69 6e 65  |y object routine|
00022ed0  0a 65 76 65 72 20 63 61  6c 6c 65 64 2c 20 77 68  |.ever called, wh|
00022ee0  69 63 68 20 6d 61 6b 65  73 20 69 74 20 6d 75 63  |ich makes it muc|
00022ef0  68 20 65 61 73 69 65 72  20 74 6f 20 66 6f 6c 6c  |h easier to foll|
00022f00  6f 77 20 77 68 61 74 27  73 20 67 6f 69 6e 67 20  |ow what's going |
00022f10  6f 6e 2e 0a 0a 0a 54 68  65 20 6f 74 68 65 72 20  |on....The other |
00022f20  63 6f 6e 73 74 61 6e 74  73 20 79 6f 75 20 61 72  |constants you ar|
00022f30  65 20 61 6c 6c 6f 77 65  64 20 74 6f 20 64 65 66  |e allowed to def|
00022f40  69 6e 65 20 68 65 6c 70  20 74 68 65 20 73 63 6f  |ine help the sco|
00022f50  72 65 20 72 6f 75 74 69  6e 65 73 0a 61 6c 6f 6e  |re routines.alon|
00022f60  67 2e 20 20 54 68 65 73  65 20 61 72 65 3a 0a 0a  |g.  These are:..|
00022f70  20 20 20 4d 41 58 5f 53  43 4f 52 45 20 20 20 20  |   MAX_SCORE    |
00022f80  20 54 68 65 20 6d 61 78  69 6d 75 6d 20 67 61 6d  | The maximum gam|
00022f90  65 20 73 63 6f 72 65 20  28 64 65 66 61 75 6c 74  |e score (default|
00022fa0  20 30 29 0a 20 20 20 4e  55 4d 42 45 52 5f 54 41  | 0).   NUMBER_TA|
00022fb0  53 4b 53 20 20 4e 75 6d  62 65 72 20 6f 66 20 69  |SKS  Number of i|
00022fc0  6e 64 69 76 69 64 75 61  6c 20 22 74 61 73 6b 73  |ndividual "tasks|
00022fd0  22 20 74 6f 20 70 65 72  66 6f 72 6d 20 28 31 29  |" to perform (1)|
00022fe0  0a 20 20 20 4f 42 4a 45  43 54 5f 53 43 4f 52 45  |.   OBJECT_SCORE|
00022ff0  20 20 42 6f 6e 75 73 20  66 6f 72 20 66 69 72 73  |  Bonus for firs|
00023000  74 20 70 69 63 6b 69 6e  67 20 75 70 20 61 20 22  |t picking up a "|
00023010  73 63 6f 72 65 64 22 20  6f 62 6a 65 63 74 20 28  |scored" object (|
00023020  34 29 0a 20 20 20 52 4f  4f 4d 5f 53 43 4f 52 45  |4).   ROOM_SCORE|
00023030  20 20 20 20 42 6f 6e 75  73 20 66 6f 72 20 66 69  |    Bonus for fi|
00023040  72 73 74 20 65 6e 74 65  72 69 6e 67 20 61 20 22  |rst entering a "|
00023050  73 63 6f 72 65 64 22 20  72 6f 6f 6d 20 28 35 29  |scored" room (5)|
00023060  0a 0a 61 6e 64 20 74 68  65 6e 20 74 68 65 20 69  |..and then the i|
00023070  6e 64 69 76 69 64 75 61  6c 20 74 61 73 6b 73 20  |ndividual tasks |
00023080  68 61 76 65 20 73 63 6f  72 65 73 2c 20 61 73 20  |have scores, as |
00023090  66 6f 6c 6c 6f 77 73 3a  0a 0a 20 20 20 47 6c 6f  |follows:..   Glo|
000230a0  62 61 6c 20 74 61 73 6b  5f 73 63 6f 72 65 73 20  |bal task_scores |
000230b0  69 6e 69 74 69 61 6c 20  74 31 20 74 32 20 2e 2e  |initial t1 t2 ..|
000230c0  2e 20 74 6e 3b 0a 0a 57  69 74 68 69 6e 20 79 6f  |. tn;..Within yo|
000230d0  75 72 20 63 6f 64 65 2c  20 77 68 65 6e 20 61 20  |ur code, when a |
000230e0  70 6c 61 79 65 72 20 61  63 68 69 65 76 65 73 20  |player achieves |
000230f0  73 6f 6d 65 74 68 69 6e  67 2c 20 63 61 6c 6c 20  |something, call |
00023100  41 63 68 69 65 76 65 64  28 74 61 73 6b 29 0a 74  |Achieved(task).t|
00023110  6f 20 6d 61 72 6b 20 74  68 61 74 20 74 68 65 20  |o mark that the |
00023120  74 61 73 6b 20 68 61 73  20 62 65 65 6e 20 63 6f  |task has been co|
00023130  6d 70 6c 65 74 65 64 2e  20 20 49 74 20 77 69 6c  |mpleted.  It wil|
00023140  6c 20 6f 6e 6c 79 20 61  77 61 72 64 20 70 6f 69  |l only award poi|
00023150  6e 74 73 20 69 66 0a 74  68 69 73 20 74 61 73 6b  |nts if.this task|
00023160  20 68 61 73 20 6e 6f 74  20 62 65 65 6e 20 63 6f  | has not been co|
00023170  6d 70 6c 65 74 65 64 20  62 65 66 6f 72 65 2e 0a  |mpleted before..|
00023180  0a 54 68 65 72 65 20 64  6f 20 6e 6f 74 20 68 61  |.There do not ha|
00023190  76 65 20 74 6f 20 62 65  20 61 6e 79 20 22 74 61  |ve to be any "ta|
000231a0  73 6b 73 22 3a 20 74 68  65 72 65 27 73 20 6e 6f  |sks": there's no|
000231b0  20 6e 65 65 64 20 74 6f  20 75 73 65 20 74 68 65  | need to use the|
000231c0  20 73 63 6f 72 69 6e 67  0a 73 79 73 74 65 6d 20  | scoring.system |
000231d0  70 72 6f 76 69 64 65 64  2e 20 20 54 61 73 6b 73  |provided.  Tasks|
000231e0  20 28 61 6e 64 20 74 68  65 20 76 65 72 62 20 22  | (and the verb "|
000231f0  66 75 6c 6c 22 20 66 6f  72 20 66 75 6c 6c 20 73  |full" for full s|
00023200  63 6f 72 65 29 20 77 69  6c 6c 20 6f 6e 6c 79 0a  |core) will only.|
00023210  77 6f 72 6b 20 61 74 20  61 6c 6c 20 69 66 20 79  |work at all if y|
00023220  6f 75 20 64 65 66 69 6e  65 20 74 68 65 20 63 6f  |ou define the co|
00023230  6e 73 74 61 6e 74 20 54  41 53 4b 53 5f 50 52 4f  |nstant TASKS_PRO|
00023240  56 49 44 45 44 2e 0a 0a  0a 54 68 65 20 6c 69 62  |VIDED....The lib|
00023250  72 61 72 79 20 6d 61 69  6e 74 61 69 6e 73 20 6c  |rary maintains l|
00023260  69 67 68 74 20 62 79 20  69 74 73 65 6c 66 2e 20  |ight by itself. |
00023270  20 49 74 20 77 69 6c 6c  20 63 6f 70 65 2c 20 66  | It will cope, f|
00023280  6f 72 20 69 6e 73 74 61  6e 63 65 2c 20 77 69 74  |or instance, wit|
00023290  68 0a 77 68 61 74 20 68  61 70 70 65 6e 73 20 69  |h.what happens i|
000232a0  66 20 61 20 64 77 61 72  66 20 70 69 63 6b 73 20  |f a dwarf picks |
000232b0  75 70 20 74 68 65 20 6c  69 67 68 74 20 73 6f 75  |up the light sou|
000232c0  72 63 65 20 61 6e 64 20  77 61 6c 6b 73 20 61 77  |rce and walks aw|
000232d0  61 79 2c 20 6f 72 20 69  66 0a 74 68 65 20 6c 69  |ay, or if.the li|
000232e0  67 68 74 20 73 6f 75 72  63 65 20 69 73 20 73 68  |ght source is sh|
000232f0  75 74 20 75 70 20 69 6e  20 61 6e 20 6f 70 61 71  |ut up in an opaq|
00023300  75 65 20 62 6f 78 2e 20  20 54 68 65 20 70 72 6f  |ue box.  The pro|
00023310  67 72 61 6d 20 63 61 6e  20 67 69 76 65 0a 6f 72  |gram can give.or|
00023320  20 74 61 6b 65 20 61 77  61 79 20 74 68 65 20 6c  | take away the l|
00023330  69 67 68 74 20 61 74 74  72 69 62 75 74 65 20 74  |ight attribute t|
00023340  6f 20 61 6e 79 74 68 69  6e 67 2c 20 6f 72 20 6d  |o anything, or m|
00023350  6f 76 65 20 61 6e 79 74  68 69 6e 67 20 61 6e 79  |ove anything any|
00023360  77 68 65 72 65 2c 0a 77  69 74 68 6f 75 74 20 68  |where,.without h|
00023370  61 76 69 6e 67 20 74 6f  20 74 68 69 6e 6b 20 61  |aving to think a|
00023380  62 6f 75 74 20 77 68 65  74 68 65 72 20 6f 72 20  |bout whether or |
00023390  6e 6f 74 20 74 68 69 73  20 6d 61 6b 65 73 20 74  |not this makes t|
000233a0  68 65 20 72 6f 6f 6d 20  64 61 72 6b 2e 0a 0a 0a  |he room dark....|
000233b0  54 6f 20 6d 6f 76 65 20  74 68 65 20 70 6c 61 79  |To move the play|
000233c0  65 72 20 61 62 6f 75 74  20 28 66 6f 72 20 74 65  |er about (for te|
000233d0  6c 65 70 6f 72 74 61 74  69 6f 6e 20 6f 66 20 73  |leportation of s|
000233e0  6f 6d 65 20 6b 69 6e 64  29 2c 20 74 77 6f 20 74  |ome kind), two t|
000233f0  68 69 6e 67 73 0a 6d 75  73 74 20 62 65 20 64 6f  |hings.must be do|
00023400  6e 65 3a 20 74 6f 20 6d  6f 76 65 20 74 68 65 20  |ne: to move the |
00023410  70 6c 61 79 65 72 20 6f  62 6a 65 63 74 2c 20 62  |player object, b|
00023420  79 0a 0a 20 20 20 6d 6f  76 65 20 70 6c 61 79 65  |y..   move playe|
00023430  72 20 74 6f 20 6e 65 77  72 6f 6f 6d 3b 0a 0a 61  |r to newroom;..a|
00023440  6e 64 20 61 6c 73 6f 20  74 6f 20 63 68 61 6e 67  |nd also to chang|
00023450  65 20 74 68 65 20 22 6c  6f 63 61 74 69 6f 6e 22  |e the "location"|
00023460  20 76 61 72 69 61 62 6c  65 2c 20 77 68 69 63 68  | variable, which|
00023470  20 73 61 79 73 20 77 68  69 63 68 20 72 6f 6f 6d  | says which room|
00023480  20 74 6f 0a 64 69 73 70  6c 61 79 20 6f 6e 20 74  | to.display on t|
00023490  68 65 20 73 74 61 74 75  73 20 6c 69 6e 65 3a 0a  |he status line:.|
000234a0  0a 20 20 20 6c 6f 63 61  74 69 6f 6e 20 3d 20 6e  |.   location = n|
000234b0  65 77 72 6f 6f 6d 3b 0a  0a 49 6e 20 67 65 6e 65  |ewroom;..In gene|
000234c0  72 61 6c 20 6c 6f 63 61  74 69 6f 6e 20 63 61 6e  |ral location can|
000234d0  20 62 65 20 64 69 66 66  65 72 65 6e 74 20 66 72  | be different fr|
000234e0  6f 6d 20 70 61 72 65 6e  74 28 70 6c 61 79 65 72  |om parent(player|
000234f0  29 20 69 6e 20 74 77 6f  20 77 61 79 73 3a 20 69  |) in two ways: i|
00023500  74 0a 63 61 6e 20 62 65  20 22 44 61 72 6b 6e 65  |t.can be "Darkne|
00023510  73 73 22 2c 20 6f 72 20  69 74 20 63 61 6e 20 62  |ss", or it can b|
00023520  65 20 74 68 65 20 61 63  74 75 61 6c 20 72 6f 6f  |e the actual roo|
00023530  6d 20 77 68 69 6c 65 20  70 61 72 65 6e 74 28 70  |m while parent(p|
00023540  6c 61 79 65 72 29 20 69  73 0a 73 6f 6d 65 74 68  |layer) is.someth|
00023550  69 6e 67 20 74 68 65 20  70 6c 61 79 65 72 20 73  |ing the player s|
00023560  69 74 73 20 69 6e 73 69  64 65 2c 20 6c 69 6b 65  |its inside, like|
00023570  20 28 73 61 79 29 20 61  20 6a 65 65 70 2e 0a 0a  | (say) a jeep...|
00023580  54 68 65 20 63 6c 65 61  6e 65 73 74 20 77 61 79  |The cleanest way|
00023590  20 74 6f 20 6d 6f 76 65  20 74 68 65 20 70 6c 61  | to move the pla|
000235a0  79 65 72 20 69 73 20 63  61 6c 6c 20 50 6c 61 79  |yer is call Play|
000235b0  65 72 54 6f 28 70 6c 61  63 65 29 3b 20 77 68 69  |erTo(place); whi|
000235c0  63 68 20 61 6c 73 6f 0a  73 6f 72 74 73 20 6f 75  |ch also.sorts ou|
000235d0  74 20 74 68 69 6e 67 73  20 6c 69 6b 65 20 6f 6e  |t things like on|
000235e0  6c 79 20 70 72 69 6e 74  69 6e 67 20 74 68 65 20  |ly printing the |
000235f0  6e 65 77 20 72 6f 6f 6d  27 73 20 64 65 73 63 72  |new room's descr|
00023600  69 70 74 69 6f 6e 20 69  66 20 74 68 65 72 65 27  |iption if there'|
00023610  73 0a 65 6e 6f 75 67 68  20 6c 69 67 68 74 20 74  |s.enough light t|
00023620  68 65 72 65 20 74 6f 20  73 65 65 20 62 79 2e 20  |here to see by. |
00023630  20 28 43 61 6c 6c 69 6e  67 20 50 6c 61 79 65 72  | (Calling Player|
00023640  54 6f 28 70 6c 61 63 65  2c 20 31 29 3b 20 77 69  |To(place, 1); wi|
00023650  6c 6c 20 6d 6f 76 65 20  74 68 65 0a 70 6c 61 79  |ll move the.play|
00023660  65 72 20 77 69 74 68 6f  75 74 20 70 72 69 6e 74  |er without print|
00023670  69 6e 67 20 61 6e 79 74  68 69 6e 67 2c 20 61 6e  |ing anything, an|
00023680  64 20 69 6e 20 70 61 72  74 69 63 75 6c 61 72 20  |d in particular |
00023690  77 69 74 68 6f 75 74 20  70 72 69 6e 74 69 6e 67  |without printing|
000236a0  20 61 6e 79 0a 72 6f 6f  6d 20 64 65 73 63 72 69  | any.room descri|
000236b0  70 74 69 6f 6e 2e 29 0a  0a 0a 46 69 6e 61 6c 6c  |ption.)...Finall|
000236c0  79 2c 20 79 6f 75 20 6d  69 67 68 74 20 77 61 6e  |y, you might wan|
000236d0  74 20 74 68 65 20 70 61  72 73 65 72 20 74 6f 20  |t the parser to |
000236e0  6b 6e 6f 77 20 61 62 6f  75 74 20 70 6c 75 72 61  |know about plura|
000236f0  6c 20 6e 6f 75 6e 73 2e  20 20 4d 61 6e 79 0a 67  |l nouns.  Many.g|
00023700  61 6d 65 73 20 69 6e 76  6f 6c 76 65 20 63 6f 6c  |ames involve col|
00023710  6c 65 63 74 69 6e 67 20  61 20 6e 75 6d 62 65 72  |lecting a number|
00023720  20 6f 66 20 73 69 6d 69  6c 61 72 20 69 74 65 6d  | of similar item|
00023730  73 2c 20 73 61 79 20 61  20 73 65 74 20 6f 66 20  |s, say a set of |
00023740  6e 69 6e 65 0a 63 72 6f  77 6e 73 20 69 6e 20 64  |nine.crowns in d|
00023750  69 66 66 65 72 65 6e 74  20 63 6f 6c 6f 75 72 73  |ifferent colours|
00023760  2e 20 20 54 68 65 6e 20  79 6f 75 27 64 20 77 61  |.  Then you'd wa|
00023770  6e 74 20 74 68 65 20 70  61 72 73 65 72 20 74 6f  |nt the parser to|
00023780  20 72 65 63 6f 67 6e 69  73 65 0a 74 68 69 6e 67  | recognise.thing|
00023790  73 20 6c 69 6b 65 0a 0a  20 20 20 3e 20 64 72 6f  |s like..   > dro|
000237a0  70 20 61 6c 6c 20 6f 66  20 74 68 65 20 63 72 6f  |p all of the cro|
000237b0  77 6e 73 20 65 78 63 65  70 74 20 67 72 65 65 6e  |wns except green|
000237c0  0a 0a 66 6f 72 20 69 6e  73 74 61 6e 63 65 2e 20  |..for instance. |
000237d0  20 49 74 20 63 61 6e 20  64 6f 20 74 68 69 73 2c  | It can do this,|
000237e0  20 70 72 6f 76 69 64 65  64 20 69 74 27 73 20 74  | provided it's t|
000237f0  6f 6c 64 20 74 68 61 74  20 22 63 72 6f 77 6e 73  |old that "crowns|
00023800  22 20 69 73 20 74 68 65  0a 70 6c 75 72 61 6c 20  |" is the.plural |
00023810  6f 66 20 63 72 6f 77 6e  2c 20 61 6e 64 20 70 72  |of crown, and pr|
00023820  6f 76 69 64 65 64 20 69  74 27 73 20 74 6f 6c 64  |ovided it's told|
00023830  20 68 6f 77 20 74 6f 20  72 65 63 6f 67 6e 69 73  | how to recognis|
00023840  65 20 61 20 63 72 6f 77  6e 20 77 68 65 6e 0a 69  |e a crown when.i|
00023850  74 20 73 65 65 73 20 6f  6e 65 2e 0a 0a 59 6f 75  |t sees one...You|
00023860  20 6e 65 65 64 20 6e 6f  74 20 64 65 63 6c 61 72  | need not declar|
00023870  65 20 61 6e 79 2c 20 62  75 74 20 61 72 65 20 61  |e any, but are a|
00023880  6c 6c 6f 77 65 64 20 75  70 20 74 6f 20 74 68 72  |llowed up to thr|
00023890  65 65 20 73 75 63 68 20  70 6c 75 72 61 6c 73 2c  |ee such plurals,|
000238a0  20 64 65 63 6c 61 72 65  64 0a 69 6e 20 79 6f 75  | declared.in you|
000238b0  72 20 49 6e 69 74 69 61  6c 69 73 65 28 29 20 72  |r Initialise() r|
000238c0  6f 75 74 69 6e 65 20 62  79 20 6c 69 6e 65 73 20  |outine by lines |
000238d0  6c 69 6b 65 3a 0a 0a 20  20 20 20 70 6c 75 72 61  |like:..    plura|
000238e0  6c 5f 77 6f 72 64 31 20  3d 20 27 63 72 6f 77 6e  |l_word1 = 'crown|
000238f0  73 27 3b 20 70 6c 75 72  61 6c 5f 66 69 6c 74 65  |s'; plural_filte|
00023900  72 31 20 3d 20 69 73 5f  63 72 6f 77 6e 3b 0a 0a  |r1 = is_crown;..|
00023910  28 61 6e 64 20 73 6f 20  6f 6e 2c 20 66 6f 72 20  |(and so on, for |
00023920  32 20 61 6e 64 20 33 20  61 73 20 6e 65 65 64 65  |2 and 3 as neede|
00023930  64 29 2e 20 20 59 6f 75  20 6d 75 73 74 20 61 6c  |d).  You must al|
00023940  72 65 61 64 79 20 68 61  76 65 20 64 65 63 6c 61  |ready have decla|
00023950  72 65 64 20 69 73 5f 63  72 6f 77 6e 0a 61 73 20  |red is_crown.as |
00023960  61 6e 20 41 74 74 72 69  62 75 74 65 2c 20 61 6e  |an Attribute, an|
00023970  64 20 66 6c 61 67 67 65  64 20 61 6c 6c 20 74 68  |d flagged all th|
00023980  65 20 63 72 6f 77 6e 73  20 77 69 74 68 20 74 68  |e crowns with th|
00023990  69 73 20 61 74 74 72 69  62 75 74 65 2e 20 20 28  |is attribute.  (|
000239a0  27 63 72 6f 77 6e 73 27  0a 69 73 20 61 20 63 6f  |'crowns'.is a co|
000239b0  6e 73 74 72 75 63 74 69  6f 6e 20 77 68 69 63 68  |nstruction which|
000239c0  20 70 75 74 73 20 74 68  65 20 77 6f 72 64 20 22  | puts the word "|
000239d0  63 72 6f 77 6e 73 22 20  69 6e 74 6f 20 74 68 65  |crowns" into the|
000239e0  20 64 69 63 74 69 6f 6e  61 72 79 2e 29 0a 0a 0a  | dictionary.)...|
000239f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00023a30  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 44 39 2e 20  |-----------.D9. |
00023a40  20 54 61 62 6c 65 20 6f  66 20 70 72 6f 70 65 72  | Table of proper|
00023a50  74 69 65 73 20 61 6e 64  20 61 74 74 72 69 62 75  |ties and attribu|
00023a60  74 65 73 0a 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |tes.------------|
00023a70  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00023aa0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0a  |---------------.|
00023ab0  0a 0a 54 68 65 20 66 6f  6c 6c 6f 77 69 6e 67 20  |..The following |
00023ac0  61 72 65 20 74 68 65 20  61 74 74 72 69 62 75 74  |are the attribut|
00023ad0  65 73 20 64 65 66 69 6e  65 64 20 62 79 20 74 68  |es defined by th|
00023ae0  65 20 6c 69 62 72 61 72  79 2c 20 61 73 20 74 68  |e library, as th|
00023af0  65 79 20 61 70 70 6c 79  0a 74 6f 20 6f 62 6a 65  |ey apply.to obje|
00023b00  63 74 73 3a 0a 0a 0a 20  20 20 20 20 20 6c 69 67  |cts:...      lig|
00023b10  68 74 20 20 20 20 20 20  20 20 20 20 20 20 67 69  |ht            gi|
00023b20  76 65 73 20 6f 66 66 20  6c 69 67 68 74 0a 20 20  |ves off light.  |
00023b30  20 20 20 20 63 6f 6e 63  65 61 6c 65 64 20 20 20  |    concealed   |
00023b40  20 20 20 20 20 69 6e 76  69 73 69 62 6c 65 2c 20  |     invisible, |
00023b50  62 75 74 20 74 6f 75 63  68 61 62 6c 65 0a 20 20  |but touchable.  |
00023b60  20 20 20 20 77 6f 72 6e  20 20 20 20 20 20 20 20  |    worn        |
00023b70  20 20 20 20 20 63 75 72  72 65 6e 74 6c 79 20 77  |     currently w|
00023b80  6f 72 6e 20 63 6c 6f 74  68 69 6e 67 0a 20 20 20  |orn clothing.   |
00023b90  20 20 20 63 6c 6f 74 68  69 6e 67 20 20 20 20 20  |   clothing     |
00023ba0  20 20 20 20 63 61 6e 20  62 65 20 63 6c 6f 74 68  |    can be cloth|
00023bb0  69 6e 67 0a 20 20 20 20  20 20 61 6e 69 6d 61 74  |ing.      animat|
00023bc0  65 20 20 20 20 20 20 20  20 20 20 69 73 20 61 20  |e          is a |
00023bd0  6c 69 76 69 6e 67 20 63  72 65 61 74 75 72 65 20  |living creature |
00023be0  6f 66 20 73 6f 6d 65 20  6b 69 6e 64 0a 20 20 20  |of some kind.   |
00023bf0  20 20 20 66 65 6d 61 6c  65 20 20 20 20 20 20 20  |   female       |
00023c00  20 20 20 20 67 65 6e 64  65 72 20 66 65 6d 61 6c  |    gender femal|
00023c10  65 20 28 6f 74 68 65 72  77 69 73 65 20 6d 61 6c  |e (otherwise mal|
00023c20  65 29 20 2d 20 75 73 65  64 20 66 6f 72 20 65 67  |e) - used for eg|
00023c30  20 22 68 65 72 22 0a 20  20 20 20 20 20 70 72 6f  | "her".      pro|
00023c40  70 65 72 20 20 20 20 20  20 20 20 20 20 20 73 68  |per           sh|
00023c50  6f 72 74 20 6e 61 6d 65  20 69 73 20 70 72 6f 70  |ort name is prop|
00023c60  65 72 20 6e 6f 75 6e 0a  20 20 20 20 20 20 6d 6f  |er noun.      mo|
00023c70  76 65 64 20 20 20 20 20  20 20 20 20 20 20 20 68  |ved            h|
00023c80  61 73 20 62 65 65 6e 20  70 69 63 6b 65 64 20 75  |as been picked u|
00023c90  70 20 61 74 20 73 6f 6d  65 20 74 69 6d 65 0a 20  |p at some time. |
00023ca0  20 20 20 20 20 64 6f 6f  72 20 20 20 20 20 20 20  |     door       |
00023cb0  20 20 20 20 20 20 69 73  20 61 20 64 6f 6f 72 77  |      is a doorw|
00023cc0  61 79 20 6f 66 20 73 6f  6d 65 20 6b 69 6e 64 0a  |ay of some kind.|
00023cd0  20 20 20 20 20 20 63 6f  6e 74 61 69 6e 65 72 20  |      container |
00023ce0  20 20 20 20 20 20 20 63  61 6e 20 63 6f 6e 74 61  |       can conta|
00023cf0  69 6e 20 74 68 69 6e 67  73 20 28 65 67 2c 20 61  |in things (eg, a|
00023d00  20 62 6f 74 74 6c 65 29  0a 20 20 20 20 20 20 73  | bottle).      s|
00023d10  75 70 70 6f 72 74 65 72  20 20 20 20 20 20 20 20  |upporter        |
00023d20  63 61 6e 20 73 75 70 70  6f 72 74 20 74 68 69 6e  |can support thin|
00023d30  67 73 20 28 65 67 2c 20  61 20 74 61 62 6c 65 29  |gs (eg, a table)|
00023d40  0a 20 20 20 20 20 20 74  72 61 6e 73 70 61 72 65  |.      transpare|
00023d50  6e 74 20 20 20 20 20 20  69 6e 74 65 72 69 6f 72  |nt      interior|
00023d60  20 6f 66 20 63 6f 6e 74  61 69 6e 65 72 20 63 61  | of container ca|
00023d70  6e 20 62 65 20 73 65 65  6e 20 77 68 65 6e 20 63  |n be seen when c|
00023d80  6c 6f 73 65 64 0a 20 20  20 20 20 20 6f 70 65 6e  |losed.      open|
00023d90  20 20 20 20 20 20 20 20  20 20 20 20 20 63 6f 6e  |             con|
00023da0  74 61 69 6e 65 72 20 6f  72 20 64 6f 6f 72 77 61  |tainer or doorwa|
00023db0  79 20 77 68 69 63 68 20  69 73 20 6f 70 65 6e 0a  |y which is open.|
00023dc0  20 20 20 20 20 20 6f 70  65 6e 61 62 6c 65 20 20  |      openable  |
00023dd0  20 20 20 20 20 20 20 63  6f 6e 74 61 69 6e 65 72  |       container|
00023de0  20 6f 72 20 64 6f 6f 72  77 61 79 20 6f 70 65 6e  | or doorway open|
00023df0  2f 63 6c 6f 73 65 61 62  6c 65 20 74 6f 20 70 6c  |/closeable to pl|
00023e00  61 79 65 72 0a 20 20 20  20 20 20 77 6f 72 6b 66  |ayer.      workf|
00023e10  6c 61 67 20 20 20 20 20  20 20 20 20 28 66 6c 61  |lag         (fla|
00023e20  67 20 75 73 65 64 20 62  79 20 70 61 72 73 65 72  |g used by parser|
00023e30  29 0a 20 20 20 20 20 20  65 6e 74 65 72 61 62 6c  |).      enterabl|
00023e40  65 20 20 20 20 20 20 20  20 63 61 6e 20 62 65 20  |e        can be |
00023e50  65 6e 74 65 72 65 64 20  28 65 67 2c 20 63 61 72  |entered (eg, car|
00023e60  20 6f 72 20 66 69 72 65  70 6c 61 63 65 29 0a 20  | or fireplace). |
00023e70  20 20 20 20 20 73 63 65  6e 65 72 79 20 20 20 20  |     scenery    |
00023e80  20 20 20 20 20 20 6e 6f  74 20 64 65 73 63 72 69  |      not descri|
00023e90  62 65 64 20 62 79 20 4c  6f 6f 6b 2c 20 6e 6f 72  |bed by Look, nor|
00023ea0  20 6d 6f 76 65 61 62 6c  65 20 28 65 67 2c 20 72  | moveable (eg, r|
00023eb0  6f 63 6b 20 66 61 63 65  29 0a 20 20 20 20 20 20  |ock face).      |
00023ec0  73 74 61 74 69 63 20 20  20 20 20 20 20 20 20 20  |static          |
00023ed0  20 69 6d 6d 6f 76 61 62  6c 79 20 66 69 78 65 64  | immovably fixed|
00023ee0  20 69 6e 20 70 6c 61 63  65 20 28 65 67 2c 20 59  | in place (eg, Y|
00023ef0  32 20 72 6f 63 6b 29 0a  20 20 20 20 20 20 64 69  |2 rock).      di|
00023f00  72 65 63 74 69 6f 6e 20  20 20 20 20 20 20 20 28  |rection        (|
00023f10  69 73 20 6f 6e 65 20 6f  66 20 74 68 65 20 63 6f  |is one of the co|
00023f20  6d 70 61 73 73 20 64 69  72 65 63 74 69 6f 6e 73  |mpass directions|
00023f30  29 0a 20 20 20 20 20 20  6c 6f 63 6b 61 62 6c 65  |).      lockable|
00023f40  20 20 20 20 20 20 20 20  20 63 61 6e 20 62 65 20  |         can be |
00023f50  6c 6f 63 6b 65 64 20 6f  72 20 75 6e 6c 6f 63 6b  |locked or unlock|
00023f60  65 64 20 28 77 69 74 68  20 73 75 69 74 61 62 6c  |ed (with suitabl|
00023f70  65 20 6b 65 79 29 0a 20  20 20 20 20 20 6c 6f 63  |e key).      loc|
00023f80  6b 65 64 20 20 20 20 20  20 20 20 20 20 20 69 73  |ked           is|
00023f90  20 70 72 65 73 65 6e 74  6c 79 20 6c 6f 63 6b 65  | presently locke|
00023fa0  64 0a 20 20 20 20 20 20  73 77 69 74 63 68 61 62  |d.      switchab|
00023fb0  6c 65 20 20 20 20 20 20  20 63 61 6e 20 62 65 20  |le       can be |
00023fc0  73 77 69 74 63 68 65 64  20 6f 6e 20 61 6e 64 20  |switched on and |
00023fd0  6f 66 66 0a 20 20 20 20  20 20 6f 6e 20 20 20 20  |off.      on    |
00023fe0  20 20 20 20 20 20 20 20  20 20 20 69 73 20 70 72  |           is pr|
00023ff0  65 73 65 6e 74 6c 79 20  73 77 69 74 63 68 65 64  |esently switched|
00024000  20 6f 6e 0a 20 20 20 20  20 20 65 64 69 62 6c 65  | on.      edible|
00024010  20 20 20 20 20 20 20 20  20 20 20 63 61 6e 20 62  |           can b|
00024020  65 20 65 61 74 65 6e 0a  20 20 20 20 20 20 61 75  |e eaten.      au|
00024030  74 6f 73 65 61 72 63 68  20 20 20 20 20 20 20 65  |tosearch       e|
00024040  78 61 6d 69 6e 69 6e 67  20 74 68 69 73 20 6f 62  |xamining this ob|
00024050  6a 65 63 74 20 63 61 75  73 65 73 20 69 74 20 61  |ject causes it a|
00024060  6c 73 6f 20 74 6f 20 62  65 20 73 65 61 72 63 68  |lso to be search|
00024070  65 64 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |ed.             |
00024080  20 20 20 20 20 20 20 20  20 20 20 20 28 69 6e 20  |            (in |
00024090  70 61 72 74 69 63 75 6c  61 72 2c 20 6c 6f 6f 6b  |particular, look|
000240a0  65 64 20 69 6e 73 69 64  65 20 69 66 20 69 74 27  |ed inside if it'|
000240b0  73 20 61 20 63 6f 6e 74  61 69 6e 65 72 29 0a 20  |s a container). |
000240c0  20 20 20 20 20 73 63 6f  72 65 64 20 20 20 20 20  |     scored     |
000240d0  20 20 20 20 20 20 61 77  61 72 64 20 70 6f 69 6e  |      award poin|
000240e0  74 73 20 66 6f 72 20 66  69 72 73 74 20 74 61 6b  |ts for first tak|
000240f0  69 6e 67 0a 20 20 20 20  20 20 74 61 6c 6b 61 62  |ing.      talkab|
00024100  6c 65 20 20 20 20 20 20  20 20 20 69 73 20 6e 6f  |le         is no|
00024110  74 20 61 6e 20 61 6e 69  6d 61 74 65 20 63 72 65  |t an animate cre|
00024120  61 74 75 72 65 2c 20 62  75 74 20 63 61 6e 20 6e  |ature, but can n|
00024130  65 76 65 72 74 68 65 6c  65 73 73 0a 20 20 20 20  |evertheless.    |
00024140  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024150  20 20 20 20 20 62 65 20  74 61 6c 6b 65 64 20 74  |     be talked t|
00024160  6f 20 28 65 67 2c 20 61  20 6d 69 63 72 6f 70 68  |o (eg, a microph|
00024170  6f 6e 65 29 0a 20 20 20  20 20 20 61 62 73 65 6e  |one).      absen|
00024180  74 20 20 20 20 20 20 20  20 20 20 20 61 20 72 65  |t           a re|
00024190  6d 6f 76 65 64 20 6f 62  6a 65 63 74 20 6e 6f 72  |moved object nor|
000241a0  6d 61 6c 6c 79 20 66 6f  75 6e 64 20 69 6e 20 73  |mally found in s|
000241b0  65 76 65 72 61 6c 20 70  6c 61 63 65 73 0a 20 20  |everal places.  |
000241c0  20 20 20 20 67 65 6e 65  72 61 6c 20 20 20 20 20  |    general     |
000241d0  20 20 20 20 20 67 65 6e  65 72 61 6c 2d 70 75 72  |     general-pur|
000241e0  70 6f 73 65 20 66 6c 61  67 0a 0a 22 67 65 6e 65  |pose flag.."gene|
000241f0  72 61 6c 22 20 69 73 20  66 72 65 65 20 66 6f 72  |ral" is free for|
00024200  20 74 68 65 20 75 73 65  72 20 28 61 73 20 61 72  | the user (as ar|
00024210  65 20 74 68 65 20 72 65  6d 61 69 6e 69 6e 67 20  |e the remaining |
00024220  73 70 61 72 65 20 61 74  74 72 69 62 75 74 65 73  |spare attributes|
00024230  29 20 61 6e 64 0a 63 6f  6e 76 65 6e 74 69 6f 6e  |) and.convention|
00024240  61 6c 6c 79 20 6d 65 61  6e 73 20 22 74 68 65 20  |ally means "the |
00024250  70 75 7a 7a 6c 65 20 61  73 73 6f 63 69 61 74 65  |puzzle associate|
00024260  64 20 77 69 74 68 20 74  68 69 73 20 6f 62 6a 65  |d with this obje|
00024270  63 74 20 68 61 73 20 62  65 65 6e 0a 73 6f 6c 76  |ct has been.solv|
00024280  65 64 22 2e 0a 0a 41 6e  20 6f 62 6a 65 63 74 20  |ed"...An object |
00024290  63 61 6e 6e 6f 74 20 62  65 20 62 6f 74 68 20 61  |cannot be both a|
000242a0  20 63 6f 6e 74 61 69 6e  65 72 20 61 6e 64 20 61  | container and a|
000242b0  20 73 75 70 70 6f 72 74  65 72 2e 0a 0a 4d 6f 73  | supporter...Mos|
000242c0  74 20 6f 66 20 74 68 65  20 61 62 6f 76 65 20 61  |t of the above a|
000242d0  74 74 72 69 62 75 74 65  73 20 6d 61 6b 65 20 6e  |ttributes make n|
000242e0  6f 20 73 65 6e 73 65 20  66 6f 72 20 6c 6f 63 61  |o sense for loca|
000242f0  74 69 6f 6e 73 2e 20 20  54 68 65 20 61 74 74 72  |tions.  The attr|
00024300  69 62 75 74 65 73 0a 61  70 70 6c 79 69 6e 67 20  |ibutes.applying |
00024310  74 6f 20 74 68 65 6d 20  61 72 65 3a 0a 0a 20 20  |to them are:..  |
00024320  20 20 20 20 6c 69 67 68  74 20 20 20 20 20 20 20  |    light       |
00024330  20 20 20 20 20 74 68 65  72 65 27 73 20 61 6d 62  |     there's amb|
00024340  69 65 6e 74 20 6c 69 67  68 74 0a 20 20 20 20 20  |ient light.     |
00024350  20 76 69 73 69 74 65 64  20 20 20 20 20 20 20 20  | visited        |
00024360  20 20 70 6c 61 63 65 20  68 61 73 20 62 65 65 6e  |  place has been|
00024370  20 76 69 73 69 74 65 64  20 61 74 20 73 6f 6d 65  | visited at some|
00024380  20 74 69 6d 65 0a 20 20  20 20 20 20 73 63 6f 72  | time.      scor|
00024390  65 64 20 20 20 20 20 20  20 20 20 20 20 61 77 61  |ed           awa|
000243a0  72 64 20 70 6f 69 6e 74  73 20 66 6f 72 20 66 69  |rd points for fi|
000243b0  72 73 74 20 76 69 73 69  74 0a 0a 28 49 66 20 79  |rst visit..(If y|
000243c0  6f 75 20 73 69 6d 70 6c  79 20 6e 65 76 65 72 20  |ou simply never |
000243d0  77 61 6e 74 20 74 6f 20  68 61 76 65 20 64 61 72  |want to have dar|
000243e0  6b 6e 65 73 73 2c 20 61  20 73 6e 65 61 6b 79 20  |kness, a sneaky |
000243f0  77 61 79 20 6f 66 20 64  6f 69 6e 67 20 69 74 20  |way of doing it |
00024400  69 73 20 74 6f 0a 70 75  74 20 74 68 65 20 6c 69  |is to.put the li|
00024410  6e 65 0a 0a 20 20 20 20  67 69 76 65 20 70 6c 61  |ne..    give pla|
00024420  79 65 72 20 6c 69 67 68  74 3b 0a 0a 69 6e 20 49  |yer light;..in I|
00024430  6e 69 74 69 61 6c 69 73  65 28 29 2e 20 20 54 68  |nitialise().  Th|
00024440  65 20 67 61 6d 65 20 77  6f 72 6b 73 20 61 73 20  |e game works as |
00024450  69 66 20 74 68 65 20 70  6c 61 79 65 72 20 68 65  |if the player he|
00024460  72 73 65 6c 66 20 77 61  73 20 67 6c 6f 77 69 6e  |rself was glowin|
00024470  67 0a 65 6e 6f 75 67 68  20 74 6f 20 70 72 6f 76  |g.enough to prov|
00024480  69 64 65 20 6c 69 67 68  74 20 74 6f 20 73 65 65  |ide light to see|
00024490  20 62 79 2e 20 20 49 6e  20 65 76 65 72 79 20 73  | by.  In every s|
000244a0  69 74 75 61 74 69 6f 6e  2c 20 74 68 65 6e 2c 20  |ituation, then, |
000244b0  69 74 27 73 20 6c 69 67  68 74 2e 29 0a 0a 0a 48  |it's light.)...H|
000244c0  65 72 65 20 61 72 65 20  74 68 65 20 70 72 6f 70  |ere are the prop|
000244d0  65 72 74 69 65 73 20 64  65 66 69 6e 65 64 20 61  |erties defined a|
000244e0  6e 64 20 75 73 65 64 20  62 79 20 74 68 65 20 6c  |nd used by the l|
000244f0  69 62 72 61 72 79 3a 0a  0a 20 20 20 20 20 20 20  |ibrary:..       |
00024500  20 20 20 20 20 20 20 20  20 20 20 44 65 66 61 75  |           Defau|
00024510  6c 74 20 76 61 6c 75 65  20 20 20 20 55 73 65 0a  |lt value    Use.|
00024520  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024530  20 20 20 20 69 66 20 6e  6f 74 20 30 0a 20 20 20  |    if not 0.   |
00024540  20 20 20 6e 61 6d 65 20  28 2a 29 20 20 20 20 20  |   name (*)     |
00024550  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024560  66 6f 72 20 61 6e 20 6f  62 6a 65 63 74 3a 0a 20  |for an object:. |
00024570  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00024590  20 20 20 20 20 20 64 69  63 74 69 6f 6e 61 72 79  |      dictionary|
000245a0  20 77 6f 72 64 73 20 72  65 66 65 72 72 69 6e 67  | words referring|
000245b0  20 74 6f 20 69 74 0a 20  20 20 20 20 20 20 20 20  | to it.         |
000245c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000245d0  20 20 20 20 20 20 20 20  20 20 66 6f 72 20 61 20  |          for a |
000245e0  72 6f 6f 6d 3a 0a 20 20  20 20 20 20 20 20 20 20  |room:.          |
000245f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024600  20 20 20 20 20 20 20 20  20 20 20 20 20 64 69 63  |             dic|
00024610  74 69 6f 6e 61 72 79 20  77 6f 72 64 73 20 77 68  |tionary words wh|
00024620  69 63 68 20 72 65 66 65  72 20 74 6f 0a 20 20 20  |ich refer to.   |
00024630  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00024650  20 20 20 20 22 69 72 72  65 6c 65 76 61 6e 74 22  |    "irrelevant"|
00024660  20 74 68 69 6e 67 73 20  69 6e 20 61 20 72 6f 6f  | things in a roo|
00024670  6d 0a 0a 20 20 20 20 20  20 64 65 73 63 72 69 70  |m..      descrip|
00024680  74 69 6f 6e 20 20 20 20  20 20 20 20 20 20 20 20  |tion            |
00024690  20 20 20 20 20 20 66 6f  72 20 61 6e 20 6f 62 6a  |      for an obj|
000246a0  65 63 74 3a 0a 20 20 20  20 20 20 20 20 20 20 20  |ect:.           |
000246b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000246c0  20 20 20 20 20 20 20 20  20 20 20 20 65 78 61 6d  |            exam|
000246d0  69 6e 65 20 64 65 73 63  72 69 70 74 69 6f 6e 20  |ine description |
000246e0  6f 66 20 61 6e 20 6f 62  6a 65 63 74 2c 0a 20 20  |of an object,.  |
000246f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00024710  20 20 20 20 20 6f 72 20  72 6f 75 74 69 6e 65 20  |     or routine |
00024720  74 6f 20 70 72 69 6e 74  20 6f 6e 65 0a 20 20 20  |to print one.   |
00024730  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00024750  66 6f 72 20 61 20 72 6f  6f 6d 3a 0a 20 20 20 20  |for a room:.    |
00024760  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00024780  20 20 20 6c 6f 6e 67 20  64 65 73 63 72 69 70 74  |   long descript|
00024790  69 6f 6e 20 6f 66 20 61  20 72 6f 6f 6d 2c 0a 20  |ion of a room,. |
000247a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000247c0  20 20 20 20 20 20 6f 72  20 72 6f 75 74 69 6e 65  |      or routine|
000247d0  20 74 6f 20 70 72 69 6e  74 20 6f 6e 65 0a 0a 20  | to print one.. |
000247e0  20 20 20 20 20 61 72 74  69 63 6c 65 20 20 20 20  |     article    |
000247f0  20 20 20 22 61 22 20 20  20 20 20 20 20 20 20 20  |   "a"          |
00024800  20 20 69 6e 64 65 66 69  6e 69 74 65 20 61 72 74  |  indefinite art|
00024810  69 63 6c 65 20 28 6f 62  6a 65 63 74 73 20 6f 6e  |icle (objects on|
00024820  6c 79 29 0a 0a 20 20 20  20 20 20 69 6e 69 74 69  |ly)..      initi|
00024830  61 6c 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |al              |
00024840  20 20 20 20 20 20 20 20  66 6f 72 20 61 6e 20 6f  |        for an o|
00024850  62 6a 65 63 74 3a 0a 20  20 20 20 20 20 20 20 20  |bject:.         |
00024860  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024870  20 20 20 20 20 20 20 20  20 20 20 20 20 20 69 6e  |              in|
00024880  69 74 69 61 6c 20 64 65  73 63 72 69 70 74 69 6f  |itial descriptio|
00024890  6e 20 6f 66 20 61 6e 20  6f 62 6a 65 63 74 0a 20  |n of an object. |
000248a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000248c0  20 20 20 20 20 20 6e 6f  74 20 79 65 74 20 70 69  |      not yet pi|
000248d0  63 6b 65 64 20 75 70 0a  20 20 20 20 20 20 20 20  |cked up.        |
000248e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000248f0  20 20 20 20 20 20 20 20  20 20 20 66 6f 72 20 61  |           for a|
00024900  20 72 6f 6f 6d 3a 0a 20  20 20 20 20 20 20 20 20  | room:.         |
00024910  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024920  20 20 20 20 20 20 20 20  20 20 20 20 20 20 72 6f  |              ro|
00024930  75 74 69 6e 65 20 63 61  6c 6c 65 64 20 77 68 65  |utine called whe|
00024940  6e 20 74 68 65 20 72 6f  6f 6d 20 69 73 0a 20 20  |n the room is.  |
00024950  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00024970  20 20 20 20 20 65 6e 74  65 72 65 64 2c 20 62 65  |     entered, be|
00024980  66 6f 72 65 20 69 74 73  20 64 65 73 63 72 69 70  |fore its descrip|
00024990  74 69 6f 6e 20 69 73 0a  20 20 20 20 20 20 20 20  |tion is.        |
000249a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000249b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 70  |               p|
000249c0  72 69 6e 74 65 64 0a 0a  20 20 20 20 20 20 64 65  |rinted..      de|
000249d0  73 63 72 69 62 65 20 20  20 20 20 20 20 20 20 20  |scribe          |
000249e0  20 20 20 20 20 20 20 20  20 20 20 66 6f 72 20 61  |           for a|
000249f0  6e 20 6f 62 6a 65 63 74  3a 0a 20 20 20 20 20 20  |n object:.      |
00024a00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00024a20  20 72 6f 75 74 69 6e 65  20 74 6f 20 64 65 73 63  | routine to desc|
00024a30  72 69 62 65 20 69 74 20  64 75 72 69 6e 67 20 4c  |ribe it during L|
00024a40  6f 6f 6b 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ook.            |
00024a50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024a60  20 20 20 20 20 20 20 20  20 20 20 28 74 68 69 73  |           (this|
00024a70  20 6f 76 65 72 2d 72 69  64 65 73 20 69 74 73 20  | over-rides its |
00024a80  22 69 6e 69 74 69 61 6c  22 29 0a 20 20 20 20 20  |"initial").     |
00024a90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024aa0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 66 6f  |              fo|
00024ab0  72 20 61 20 72 6f 6f 6d  3a 0a 20 20 20 20 20 20  |r a room:.      |
00024ac0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00024ae0  20 72 6f 75 74 69 6e 65  20 74 6f 20 70 72 69 6e  | routine to prin|
00024af0  74 20 61 20 6c 6f 6e 67  20 64 65 73 63 72 69 70  |t a long descrip|
00024b00  74 69 6f 6e 0a 20 20 20  20 20 20 20 20 20 20 20  |tion.           |
00024b10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024b20  20 20 20 20 20 20 20 20  20 20 20 20 28 74 68 69  |            (thi|
00024b30  73 20 6f 76 65 72 2d 72  69 64 65 73 20 69 74 73  |s over-rides its|
00024b40  20 22 64 65 73 63 72 69  70 74 69 6f 6e 22 0a 20  | "description". |
00024b50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00024b70  20 20 20 20 20 20 61 6e  64 20 69 73 20 70 72 6f  |      and is pro|
00024b80  76 69 64 65 64 20 66 6f  72 20 63 6f 6e 73 69 73  |vided for consis|
00024b90  74 65 6e 63 79 29 0a 20  20 20 20 20 20 20 20 20  |tency).         |
00024ba0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024bb0  20 20 20 20 20 20 20 20  20 20 28 6e 6f 74 65 3a  |          (note:|
00024bc0  20 22 64 65 73 63 72 69  62 65 22 20 63 61 6e 20  | "describe" can |
00024bd0  6f 6e 6c 79 20 62 65 20  61 20 72 6f 75 74 69 6e  |only be a routin|
00024be0  65 29 0a 0a 20 20 20 20  20 20 62 65 66 6f 72 65  |e)..      before|
00024bf0  20 20 20 20 20 20 20 20  24 66 66 66 66 20 20 20  |        $ffff   |
00024c00  20 20 20 20 20 20 20 72  6f 75 74 69 6e 65 20 66  |       routine f|
00024c10  6f 72 20 61 6c 74 65 72  69 6e 67 20 72 75 6c 65  |or altering rule|
00024c20  73 20 62 65 66 6f 72 65  20 61 63 74 69 6f 6e 73  |s before actions|
00024c30  0a 20 20 20 20 20 20 61  66 74 65 72 20 20 20 20  |.      after    |
00024c40  20 20 20 20 20 24 66 66  66 66 20 20 20 20 20 20  |     $ffff      |
00024c50  20 20 20 20 61 6e 64 20  61 66 74 65 72 20 61 63  |    and after ac|
00024c60  74 69 6f 6e 73 0a 20 20  20 20 20 20 6c 69 66 65  |tions.      life|
00024c70  20 20 20 20 20 20 20 20  20 20 24 66 66 66 66 20  |          $ffff |
00024c80  20 20 20 20 20 20 20 20  20 61 6e 64 20 72 75 6c  |         and rul|
00024c90  65 73 20 66 6f 72 20 22  61 6e 69 6d 61 74 65 22  |es for "animate"|
00024ca0  20 63 72 65 61 74 75 72  65 73 0a 0a 0a 20 20 20  | creatures...   |
00024cb0  20 20 20 6e 5f 74 6f 20  20 20 73 5f 74 6f 20 20  |   n_to   s_to  |
00024cc0  28 2a 2a 29 20 20 20 20  20 20 20 20 20 20 20 20  |(**)            |
00024cd0  66 6f 72 20 61 20 72 6f  6f 6d 3a 0a 20 20 20 20  |for a room:.    |
00024ce0  20 20 65 5f 74 6f 20 20  20 77 5f 74 6f 20 20 20  |  e_to   w_to   |
00024cf0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024d00  20 20 20 6d 61 70 20 63  6f 6e 6e 65 63 74 69 6f  |   map connectio|
00024d10  6e 73 20 74 6f 20 6f 74  68 65 72 20 72 6f 6f 6d  |ns to other room|
00024d20  73 2c 0a 20 20 20 20 20  20 6e 65 5f 74 6f 20 20  |s,.      ne_to  |
00024d30  73 65 5f 74 6f 20 20 20  20 20 20 20 20 20 20 20  |se_to           |
00024d40  20 20 20 20 20 20 20 20  20 20 6f 72 20 73 74 72  |          or str|
00024d50  69 6e 67 73 20 74 6f 20  70 72 69 6e 74 20 69 66  |ings to print if|
00024d60  20 63 61 6e 27 74 20 67  6f 2c 0a 20 20 20 20 20  | can't go,.     |
00024d70  20 6e 77 5f 74 6f 20 20  73 77 5f 74 6f 20 20 20  | nw_to  sw_to   |
00024d80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024d90  20 20 6f 72 20 72 6f 75  74 69 6e 65 73 20 74 6f  |  or routines to|
00024da0  20 63 61 6c 6c 20 74 6f  20 64 65 74 65 72 6d 69  | call to determi|
00024db0  6e 65 20 74 68 69 73 20  0a 20 20 20 20 20 20 75  |ne this .      u|
00024dc0  5f 74 6f 20 20 20 64 5f  74 6f 0a 20 20 20 20 20  |_to   d_to.     |
00024dd0  20 69 6e 5f 74 6f 20 20  6f 75 74 5f 74 6f 0a 0a  | in_to  out_to..|
00024de0  20 20 20 20 20 20 63 61  6e 74 5f 67 6f 20 20 20  |      cant_go   |
00024df0  20 20 20 20 20 22 59 6f  75 20 63 61 6e 27 74 20  |     "You can't |
00024e00  67 6f 20 74 68 61 74 20  77 61 79 2e 22 0a 20 20  |go that way.".  |
00024e10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00024e30  20 66 6f 72 20 61 20 72  6f 6f 6d 3a 0a 20 20 20  | for a room:.   |
00024e40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00024e60  20 20 20 20 70 72 69 6e  74 65 64 20 77 68 65 6e  |    printed when|
00024e70  20 70 6c 61 79 65 72 20  74 72 69 65 73 20 74 6f  | player tries to|
00024e80  20 67 6f 20 61 6e 0a 20  20 20 20 20 20 20 20 20  | go an.         |
00024e90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024ea0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 69 6d  |              im|
00024eb0  70 6f 73 73 69 62 6c 65  20 77 61 79 20 66 72 6f  |possible way fro|
00024ec0  6d 20 61 20 6c 6f 63 61  74 69 6f 6e 0a 0a 20 20  |m a location..  |
00024ed0  20 20 20 20 64 6f 6f 72  5f 74 6f 20 20 20 20 20  |    door_to     |
00024ee0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024ef0  20 70 6c 61 63 65 20 74  68 61 74 20 61 20 22 64  | place that a "d|
00024f00  6f 6f 72 22 20 63 6f 6e  6e 65 63 74 73 20 74 6f  |oor" connects to|
00024f10  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00024f20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024f30  20 20 20 20 20 20 20 20  6f 72 20 72 6f 75 74 69  |        or routi|
00024f40  6e 65 20 72 65 74 75 72  6e 69 6e 67 20 74 68 69  |ne returning thi|
00024f50  73 0a 20 20 20 20 20 20  64 6f 6f 72 5f 64 69 72  |s.      door_dir|
00024f60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024f70  20 20 20 20 20 64 69 72  65 63 74 69 6f 6e 20 77  |     direction w|
00024f80  68 69 63 68 20 67 6f 65  73 20 74 68 72 6f 75 67  |hich goes throug|
00024f90  68 20 69 74 0a 20 20 20  20 20 20 20 20 20 20 20  |h it.           |
00024fa0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00024fb0  20 20 20 20 20 20 20 20  20 20 20 20 6f 72 20 72  |            or r|
00024fc0  6f 75 74 69 6e 65 20 72  65 74 75 72 6e 69 6e 67  |outine returning|
00024fd0  20 74 68 69 73 0a 0a 20  20 20 20 20 20 77 68 65  | this..      whe|
00024fe0  6e 5f 63 6c 6f 73 65 64  20 20 20 20 20 20 20 20  |n_closed        |
00024ff0  20 20 20 20 20 20 20 20  20 20 64 65 73 63 72 69  |          descri|
00025000  70 74 69 6f 6e 20 6f 66  20 61 20 64 6f 6f 72 20  |ption of a door |
00025010  77 68 69 63 68 20 69 73  20 63 6c 6f 73 65 64 0a  |which is closed.|
00025020  20 20 20 20 20 20 77 68  65 6e 5f 6f 70 65 6e 20  |      when_open |
00025030  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00025040  20 20 20 64 65 73 63 72  69 70 74 69 6f 6e 20 6f  |   description o|
00025050  66 20 61 20 64 6f 6f 72  20 77 68 69 63 68 20 69  |f a door which i|
00025060  73 20 6f 70 65 6e 0a 0a  20 20 20 20 20 20 77 68  |s open..      wh|
00025070  65 6e 5f 6f 6e 20 20 20  20 20 20 20 20 20 20 20  |en_on           |
00025080  20 20 20 20 20 20 20 20  20 20 20 64 65 73 63 72  |           descr|
00025090  69 70 74 69 6f 6e 20 6f  66 20 61 20 73 77 69 74  |iption of a swit|
000250a0  63 68 61 62 6c 65 20 77  68 69 63 68 20 69 73 20  |chable which is |
000250b0  6f 6e 0a 20 20 20 20 20  20 77 68 65 6e 5f 6f 66  |on.      when_of|
000250c0  66 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |f               |
000250d0  20 20 20 20 20 20 64 65  73 63 72 69 70 74 69 6f  |      descriptio|
000250e0  6e 20 6f 66 20 61 20 73  77 69 74 63 68 61 62 6c  |n of a switchabl|
000250f0  65 20 77 68 69 63 68 20  69 73 20 6f 66 66 0a 0a  |e which is off..|
00025100  20 20 20 20 20 20 77 69  74 68 5f 6b 65 79 20 20  |      with_key  |
00025110  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00025120  20 20 20 6b 65 79 20 74  6f 20 75 6e 6c 6f 63 6b  |   key to unlock|
00025130  20 61 20 6c 6f 63 6b 61  62 6c 65 20 6f 62 6a 65  | a lockable obje|
00025140  63 74 0a 0a 20 20 20 20  20 20 63 61 70 61 63 69  |ct..      capaci|
00025150  74 79 20 20 20 20 20 20  31 30 30 20 20 20 20 20  |ty      100     |
00025160  20 20 20 20 20 20 20 6d  61 78 69 6d 75 6d 20 6e  |       maximum n|
00025170  75 6d 62 65 72 20 6f 66  20 74 68 69 6e 67 73 20  |umber of things |
00025180  61 20 63 6f 6e 74 61 69  6e 65 72 0a 20 20 20 20  |a container.    |
00025190  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000251a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 6f  |               o|
000251b0  72 20 73 75 70 70 6f 72  74 65 72 20 63 61 6e 20  |r supporter can |
000251c0  63 6f 6e 74 61 69 6e 20  6f 72 20 73 75 70 70 6f  |contain or suppo|
000251d0  72 74 0a 0a 20 20 20 20  20 20 66 6f 75 6e 64 5f  |rt..      found_|
000251e0  69 6e 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |in              |
000251f0  20 20 20 20 20 20 20 66  6f 72 20 61 6e 20 6f 62  |       for an ob|
00025200  6a 65 63 74 3a 0a 20 20  20 20 20 20 20 20 20 20  |ject:.          |
00025210  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00025220  20 20 20 20 20 20 20 20  20 20 20 20 20 6c 69 73  |             lis|
00025230  74 20 6f 66 20 72 6f 6f  6d 73 20 69 6e 20 77 68  |t of rooms in wh|
00025240  69 63 68 20 69 74 20 69  73 20 66 6f 75 6e 64 0a  |ich it is found.|
00025250  0a 20 20 20 20 20 20 74  69 6d 65 5f 6c 65 66 74  |.      time_left|
00025260  20 28 2a 2a 2a 29 20 20  20 20 20 20 20 20 20 20  | (***)          |
00025270  20 20 20 20 74 75 72 6e  73 20 6c 65 66 74 20 75  |    turns left u|
00025280  6e 74 69 6c 20 74 69 6d  65 72 20 67 6f 65 73 20  |ntil timer goes |
00025290  6f 66 66 0a 20 20 20 20  20 20 74 69 6d 65 5f 6f  |off.      time_o|
000252a0  75 74 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ut              |
000252b0  20 20 20 20 20 20 20 72  6f 75 74 69 6e 65 20 74  |       routine t|
000252c0  6f 20 72 75 6e 20 77 68  65 6e 20 69 74 20 64 6f  |o run when it do|
000252d0  65 73 0a 0a 20 20 20 20  20 20 64 61 65 6d 6f 6e  |es..      daemon|
000252e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000252f0  20 20 20 20 20 20 20 64  61 65 6d 6f 6e 20 72 6f  |       daemon ro|
00025300  75 74 69 6e 65 20 28 63  61 6c 6c 65 64 20 65 61  |utine (called ea|
00025310  63 68 20 74 75 72 6e 20  77 68 69 6c 65 0a 20 20  |ch turn while.  |
00025320  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00025340  20 61 63 74 69 76 65 29  0a 0a 20 20 20 20 20 20  | active)..      |
00025350  65 61 63 68 5f 74 75 72  6e 20 20 20 20 20 20 20  |each_turn       |
00025360  20 20 20 20 20 20 20 20  20 20 20 20 20 66 6f 72  |             for|
00025370  20 61 20 72 6f 6f 6d 3a  0a 20 20 20 20 20 20 20  | a room:.       |
00025380  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000253a0  63 61 6c 6c 65 64 20 65  61 63 68 20 74 75 72 6e  |called each turn|
000253b0  20 74 68 65 20 70 6c 61  79 65 72 20 69 73 20 69  | the player is i|
000253c0  6e 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |n.              |
000253d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000253e0  20 20 20 20 20 20 20 20  20 74 68 65 20 72 6f 6f  |         the roo|
000253f0  6d 0a 0a 20 20 20 20 20  20 6e 75 6d 62 65 72 20  |m..      number |
00025400  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00025410  20 20 20 20 20 20 74 68  69 73 20 69 73 20 70 72  |      this is pr|
00025420  6f 76 69 64 65 64 20 61  73 20 61 20 67 65 6e 65  |ovided as a gene|
00025430  72 61 6c 2d 70 75 72 70  6f 73 65 0a 20 20 20 20  |ral-purpose.    |
00025440  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00025450  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 69  |               i|
00025460  6e 74 65 67 65 72 20 76  61 72 69 61 62 6c 65 20  |nteger variable |
00025470  28 74 6f 20 73 61 76 65  20 6f 6e 20 67 6c 6f 62  |(to save on glob|
00025480  61 6c 73 29 3a 0a 20 20  20 20 20 20 20 20 20 20  |als):.          |
00025490  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000254a0  20 20 20 20 20 20 20 20  20 74 68 65 20 6c 69 62  |         the lib|
000254b0  72 61 72 79 20 6e 65 76  65 72 20 64 6f 65 73 20  |rary never does |
000254c0  61 6e 79 74 68 69 6e 67  20 74 6f 20 6f 72 0a 20  |anything to or. |
000254d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000254f0  20 20 77 69 74 68 20 69  74 0a 0a 28 2a 29 20 22  |  with it..(*) "|
00025500  6e 61 6d 65 22 20 69 73  20 61 20 70 72 6f 70 65  |name" is a prope|
00025510  72 74 79 20 61 63 74 75  61 6c 6c 79 20 64 65 66  |rty actually def|
00025520  69 6e 65 64 20 69 6e 20  74 68 65 20 73 79 6e 74  |ined in the synt|
00025530  61 78 20 6f 66 20 49 6e  66 6f 72 6d 20 69 74 73  |ax of Inform its|
00025540  65 6c 66 2e 0a 42 75 74  20 74 68 69 73 20 69 73  |elf..But this is|
00025550  20 74 68 65 20 75 73 65  20 74 6f 20 77 68 69 63  | the use to whic|
00025560  68 20 69 74 20 69 73 20  70 75 74 20 62 79 20 74  |h it is put by t|
00025570  68 65 20 6c 69 62 72 61  72 79 20 72 6f 75 74 69  |he library routi|
00025580  6e 65 73 2e 0a 0a 28 2a  2a 29 20 77 61 72 6e 69  |nes...(**) warni|
00025590  6e 67 3a 20 64 6f 20 6e  6f 74 20 63 6f 6e 66 75  |ng: do not confu|
000255a0  73 65 20 74 68 65 73 65  20 77 69 74 68 20 74 68  |se these with th|
000255b0  65 20 64 69 72 65 63 74  69 6f 6e 20 6f 62 6a 65  |e direction obje|
000255c0  63 74 73 20 6e 5f 6f 62  6a 2c 0a 73 5f 6f 62 6a  |cts n_obj,.s_obj|
000255d0  2e 2e 2e 20 77 68 69 63  68 20 61 72 65 20 77 68  |... which are wh|
000255e0  61 74 20 6e 6f 75 6e 2c  20 73 65 63 6f 6e 64 20  |at noun, second |
000255f0  65 74 63 20 77 6f 75 6c  64 20 62 65 20 73 65 74  |etc would be set|
00025600  20 74 6f 20 69 6e 20 61  20 63 6f 6d 6d 61 6e 64  | to in a command|
00025610  0a 6d 65 6e 74 69 6f 6e  69 6e 67 20 61 20 64 69  |.mentioning a di|
00025620  72 65 63 74 69 6f 6e 20  28 73 75 63 68 20 61 73  |rection (such as|
00025630  20 22 70 75 73 68 20 74  68 65 20 63 61 72 20 6e  | "push the car n|
00025640  6f 72 74 68 22 29 2e 0a  20 0a 28 2a 2a 2a 29 20  |orth").. .(***) |
00025650  77 61 72 6e 69 6e 67 3a  20 74 68 69 73 20 5f 6d  |warning: this _m|
00025660  75 73 74 5f 20 62 65 20  64 65 63 6c 61 72 65 64  |ust_ be declared|
00025670  20 66 6f 72 20 61 6e 79  20 6f 62 6a 65 63 74 20  | for any object |
00025680  77 68 69 63 68 20 69 73  20 67 6f 69 6e 67 20 74  |which is going t|
00025690  6f 0a 62 65 20 75 73 65  64 20 61 73 20 61 20 74  |o.be used as a t|
000256a0  69 6d 65 72 20 6f 72 20  61 20 64 61 65 6d 6f 6e  |imer or a daemon|
000256b0  2c 20 6f 72 20 74 68 65  20 5a 2d 6d 61 63 68 69  |, or the Z-machi|
000256c0  6e 65 20 6d 61 79 20 63  72 61 73 68 20 61 74 20  |ne may crash at |
000256d0  72 75 6e 2d 74 69 6d 65  2e 0a 0a 0a 2d 2d 2d 2d  |run-time....----|
000256e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00025720  2d 2d 2d 2d 2d 2d 2d 0a  44 31 30 2e 20 20 43 75  |-------.D10.  Cu|
00025730  73 74 6f 6d 69 73 69 6e  67 20 74 68 65 20 70 61  |stomising the pa|
00025740  72 73 65 72 0a 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |rser.-----------|
00025750  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00025790  0a 0a 0a 49 6e 66 6f 72  6d 20 35 20 68 61 73 20  |...Inform 5 has |
000257a0  61 20 76 61 72 69 65 74  79 20 6f 66 20 6e 65 77  |a variety of new|
000257b0  20 66 65 61 74 75 72 65  73 20 74 6f 20 6d 61 6b  | features to mak|
000257c0  65 20 63 75 73 74 6f 6d  69 73 69 6e 67 20 74 68  |e customising th|
000257d0  65 20 70 61 72 73 65 72  0a 70 6f 73 73 69 62 6c  |e parser.possibl|
000257e0  65 3a 20 66 6f 72 20 69  6e 73 74 61 6e 63 65 2c  |e: for instance,|
000257f0  20 6e 75 6d 62 65 72 73  20 63 61 6e 20 62 65 20  | numbers can be |
00025800  73 70 65 63 69 66 69 65  64 20 64 69 72 65 63 74  |specified direct|
00025810  6c 79 20 69 6e 20 67 72  61 6d 6d 61 72 0a 74 61  |ly in grammar.ta|
00025820  62 6c 65 73 2c 20 6c 69  6b 65 20 73 6f 3a 0a 0a  |bles, like so:..|
00025830  20 20 20 20 20 56 65 72  62 20 22 74 79 70 65 22  |     Verb "type"|
00025840  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00025850  20 20 20 20 20 20 2a 20  6e 75 6d 62 65 72 20 20  |      * number  |
00025860  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00025870  20 20 20 20 20 20 20 2d  3e 20 54 79 70 65 4e 75  |       -> TypeNu|
00025880  6d 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |m.              |
00025890  20 20 20 20 20 20 20 2a  20 73 70 65 63 69 61 6c  |       * special|
000258a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000258b0  20 20 20 20 20 20 20 20  2d 3e 20 54 79 70 65 57  |        -> TypeW|
000258c0  6f 72 64 3b 0a 0a 73 6f  20 74 68 61 74 20 74 68  |ord;..so that th|
000258d0  65 20 54 79 70 65 4e 75  6d 20 61 63 74 69 6f 6e  |e TypeNum action|
000258e0  20 77 69 6c 6c 20 68 61  70 70 65 6e 20 69 66 20  | will happen if |
000258f0  74 68 65 20 70 6c 61 79  65 72 20 74 79 70 65 73  |the player types|
00025900  0a 0a 20 20 20 20 20 3e  20 74 79 70 65 20 35 30  |..     > type 50|
00025910  34 0a 0a 62 75 74 20 54  79 70 65 57 6f 72 64 20  |4..but TypeWord |
00025920  77 69 6c 6c 20 68 61 70  70 65 6e 20 69 66 20 74  |will happen if t|
00025930  68 65 20 70 6c 61 79 65  72 20 74 79 70 65 73 20  |he player types |
00025940  61 6e 79 20 6f 74 68 65  72 20 74 65 78 74 2e 20  |any other text. |
00025950  20 54 68 65 20 72 6f 75  74 69 6e 65 0a 77 68 69  | The routine.whi|
00025960  63 68 20 70 61 72 73 65  73 20 6e 75 6d 62 65 72  |ch parses number|
00025970  73 20 63 61 6e 20 69 74  73 65 6c 66 20 62 65 20  |s can itself be |
00025980  72 65 77 72 69 74 74 65  6e 20 74 6f 20 61 6c 6c  |rewritten to all|
00025990  6f 77 2c 20 73 61 79 2c  20 52 6f 6d 61 6e 20 6e  |ow, say, Roman n|
000259a0  75 6d 65 72 61 6c 73 2e  0a 0a 0a 57 65 20 63 61  |umerals....We ca|
000259b0  6e 20 61 6c 73 6f 20 73  6f 72 74 20 6f 75 74 20  |n also sort out |
000259c0  6f 62 6a 65 63 74 73 20  61 63 63 6f 72 64 69 6e  |objects accordin|
000259d0  67 20 74 6f 20 61 74 74  72 69 62 75 74 65 73 20  |g to attributes |
000259e0  74 68 61 74 20 74 68 65  79 20 68 61 76 65 3a 0a  |that they have:.|
000259f0  0a 20 20 20 20 20 56 65  72 62 20 22 75 73 65 22  |.     Verb "use"|
00025a00  20 22 65 6d 70 6c 6f 79  22 20 22 75 74 69 6c 69  | "employ" "utili|
00025a10  73 65 22 0a 20 20 20 20  20 20 20 20 20 20 20 20  |se".            |
00025a20  20 20 20 20 20 20 20 20  20 2a 20 65 64 69 62 6c  |         * edibl|
00025a30  65 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |e               |
00025a40  20 20 20 20 20 20 20 20  20 20 2d 3e 20 45 61 74  |          -> Eat|
00025a50  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00025a60  20 20 20 20 20 20 2a 20  63 6c 6f 74 68 69 6e 67  |      * clothing|
00025a70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00025a80  20 20 20 20 20 20 20 2d  3e 20 57 65 61 72 0a 20  |       -> Wear. |
00025a90  20 20 20 20 2e 2e 2e 61  6e 64 20 73 6f 20 6f 6e  |    ...and so on|
00025aa0  2e 2e 2e 0a 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
00025ab0  20 20 20 20 20 20 20 20  20 2a 20 65 6e 74 65 72  |         * enter|
00025ac0  61 62 6c 65 20 20 20 20  20 20 20 20 20 20 20 20  |able            |
00025ad0  20 20 20 20 20 20 20 20  20 20 2d 3e 20 45 6e 74  |          -> Ent|
00025ae0  65 72 3b 0a 0a 49 6e 20  66 61 63 74 2c 20 79 6f  |er;..In fact, yo|
00025af0  75 20 63 61 6e 20 73 75  70 70 6c 79 20 61 20 72  |u can supply a r|
00025b00  6f 75 74 69 6e 65 20 74  6f 20 6d 61 6b 65 20 61  |outine to make a|
00025b10  6c 6d 6f 73 74 20 61 6e  79 20 70 61 72 73 69 6e  |lmost any parsin|
00025b20  67 20 64 65 63 69 73 69  6f 6e 2e 0a 46 6f 72 20  |g decision..For |
00025b30  69 6e 73 74 61 6e 63 65  3a 0a 0a 20 20 20 20 20  |instance:..     |
00025b40  5b 20 46 72 65 6e 63 68  20 77 20 6e 3b 20 77 3d  |[ French w n; w=|
00025b50  4e 65 78 74 57 6f 72 64  28 29 3b 0a 20 20 20 20  |NextWord();.    |
00025b60  20 20 20 20 20 69 66 20  28 77 3d 3d 27 75 6e 27  |     if (w=='un'|
00025b70  20 6f 72 20 27 75 6e 65  27 29 20 6e 3d 31 3b 0a  | or 'une') n=1;.|
00025b80  20 20 20 20 20 20 20 20  20 69 66 20 28 77 3d 3d  |         if (w==|
00025b90  27 64 65 75 78 27 29 20  20 20 20 20 20 20 20 6e  |'deux')        n|
00025ba0  3d 32 3b 0a 20 20 20 20  20 20 20 20 20 69 66 20  |=2;.         if |
00025bb0  28 77 3d 3d 27 74 72 6f  69 73 27 29 20 20 20 20  |(w=='trois')    |
00025bc0  20 20 20 6e 3d 33 3b 0a  20 20 20 20 20 20 20 20  |   n=3;.        |
00025bd0  20 69 66 20 28 77 3d 3d  27 71 75 61 74 72 65 27  | if (w=='quatre'|
00025be0  29 20 20 20 20 20 20 6e  3d 34 3b 0a 20 20 20 20  |)      n=4;.    |
00025bf0  20 20 20 20 20 69 66 20  28 77 3d 3d 27 63 69 6e  |     if (w=='cin|
00025c00  71 27 29 20 20 20 20 20  20 20 20 6e 3d 35 3b 0a  |q')        n=5;.|
00025c10  20 20 20 20 20 20 20 20  20 69 66 20 28 6e 3d 3d  |         if (n==|
00025c20  30 29 20 72 65 74 75 72  6e 20 2d 31 3b 0a 20 20  |0) return -1;.  |
00025c30  20 20 20 20 20 20 20 70  61 72 73 65 64 5f 6e 75  |       parsed_nu|
00025c40  6d 62 65 72 20 3d 20 6e  3b 20 72 65 74 75 72 6e  |mber = n; return|
00025c50  20 31 3b 0a 20 20 20 20  20 5d 3b 0a 0a 77 69 6c  | 1;.     ];..wil|
00025c60  6c 20 64 65 74 65 63 74  20 46 72 65 6e 63 68 20  |l detect French |
00025c70  6e 75 6d 62 65 72 73 2c  20 61 6e 64 20 63 61 6e  |numbers, and can|
00025c80  20 62 65 20 75 73 65 64  20 62 79 20 73 6f 6d 65  | be used by some|
00025c90  74 68 69 6e 67 20 6c 69  6b 65 3a 0a 0a 20 20 20  |thing like:..   |
00025ca0  20 20 56 65 72 62 20 22  74 79 70 65 22 0a 20 20  |  Verb "type".  |
00025cb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00025cc0  20 20 20 2a 20 46 72 65  6e 63 68 20 20 20 20 20  |   * French     |
00025cd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00025ce0  20 20 20 20 2d 3e 20 54  79 70 65 46 72 65 6e 63  |    -> TypeFrenc|
00025cf0  68 4e 75 6d 0a 20 20 20  20 20 20 20 20 20 20 20  |hNum.           |
00025d00  20 20 20 20 20 20 20 20  20 20 2a 20 6e 75 6d 62  |          * numb|
00025d10  65 72 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |er              |
00025d20  20 20 20 20 20 20 20 20  20 20 20 2d 3e 20 54 79  |           -> Ty|
00025d30  70 65 4e 75 6d 3b 0a 0a  54 68 65 20 73 70 65 63  |peNum;..The spec|
00025d40  69 66 69 63 61 74 69 6f  6e 20 66 6f 72 20 61 20  |ification for a |
00025d50  72 6f 75 74 69 6e 65 20  6c 69 6b 65 20 74 68 69  |routine like thi|
00025d60  73 20 69 73 20 61 73 20  66 6f 6c 6c 6f 77 73 3a  |s is as follows:|
00025d70  20 69 74 20 69 73 20 74  6f 20 75 73 65 0a 4e 65  | it is to use.Ne|
00025d80  78 74 57 6f 72 64 20 28  70 6f 73 73 69 62 6c 79  |xtWord (possibly|
00025d90  20 73 65 76 65 72 61 6c  20 74 69 6d 65 73 29 20  | several times) |
00025da0  74 6f 20 6c 6f 6f 6b 20  61 74 20 74 68 65 20 61  |to look at the a|
00025db0  70 70 72 6f 70 72 69 61  74 65 20 77 6f 72 64 73  |ppropriate words|
00025dc0  20 77 68 69 63 68 0a 74  68 65 20 75 73 65 72 20  | which.the user |
00025dd0  68 61 73 20 74 79 70 65  64 2e 20 20 54 68 65 20  |has typed.  The |
00025de0  76 61 72 69 61 62 6c 65  20 77 6e 20 28 63 75 72  |variable wn (cur|
00025df0  72 65 6e 74 20 77 6f 72  64 20 6e 75 6d 62 65 72  |rent word number|
00025e00  29 20 6d 61 79 20 61 6c  73 6f 20 62 65 0a 68 65  |) may also be.he|
00025e10  6c 70 66 75 6c 2e 20 20  54 68 65 20 72 6f 75 74  |lpful.  The rout|
00025e20  69 6e 65 20 6d 75 73 74  20 72 65 74 75 72 6e 3a  |ine must return:|
00025e30  0a 0a 20 20 20 20 20 2d  31 20 20 20 20 20 20 69  |..     -1      i|
00025e40  66 20 74 68 65 20 75 73  65 72 27 73 20 69 6e 70  |f the user's inp|
00025e50  75 74 20 69 73 6e 27 74  20 75 6e 64 65 72 73 74  |ut isn't underst|
00025e60  6f 6f 64 2c 0a 20 20 20  20 20 20 31 20 20 20 20  |ood,.      1    |
00025e70  20 20 69 66 20 74 68 65  72 65 20 69 73 20 61 20  |  if there is a |
00025e80  6e 75 6d 65 72 69 63 61  6c 20 76 61 6c 75 65 20  |numerical value |
00025e90  72 65 73 75 6c 74 69 6e  67 0a 20 20 20 20 20 20  |resulting.      |
00025ea0  20 20 20 20 20 20 20 20  20 20 20 28 61 6e 64 20  |           (and |
00025eb0  74 68 65 20 76 61 6c 75  65 20 73 68 6f 75 6c 64  |the value should|
00025ec0  20 62 65 20 70 75 74 20  69 6e 20 74 68 65 20 76  | be put in the v|
00025ed0  61 72 69 61 62 6c 65 20  70 61 72 73 65 64 5f 6e  |ariable parsed_n|
00025ee0  75 6d 62 65 72 29 0a 20  20 20 20 20 20 6e 20 20  |umber).      n  |
00025ef0  20 20 20 20 69 66 20 6f  62 6a 65 63 74 20 6e 20  |    if object n |
00025f00  69 73 20 75 6e 64 65 72  73 74 6f 6f 64 2e 0a 0a  |is understood...|
00025f10  4f 6e 20 61 6e 20 75 6e  73 75 63 63 65 73 73 66  |On an unsuccessf|
00025f20  75 6c 20 6d 61 74 63 68  20 28 72 65 74 75 72 6e  |ul match (return|
00025f30  69 6e 67 20 2d 31 29 20  69 74 20 64 6f 65 73 6e  |ing -1) it doesn|
00025f40  27 74 20 6d 61 74 74 65  72 20 77 68 61 74 20 74  |'t matter what t|
00025f50  68 65 20 66 69 6e 61 6c  0a 76 61 6c 75 65 20 6f  |he final.value o|
00025f60  66 20 77 6e 20 69 73 2e  20 20 4f 6e 20 61 20 73  |f wn is.  On a s|
00025f70  75 63 63 65 73 73 66 75  6c 20 6f 6e 65 20 69 74  |uccessful one it|
00025f80  20 73 68 6f 75 6c 64 20  62 65 20 6c 65 66 74 20  | should be left |
00025f90  70 6f 69 6e 74 69 6e 67  20 74 6f 20 74 68 65 20  |pointing to the |
00025fa0  6e 65 78 74 0a 74 68 69  6e 67 20 61 66 74 65 72  |next.thing after|
00025fb0  20 77 68 61 74 20 74 68  65 20 72 6f 75 74 69 6e  | what the routin|
00025fc0  65 20 75 6e 64 65 72 73  74 6f 6f 64 2e 0a 0a 0a  |e understood....|
00025fd0  41 6e 6f 74 68 65 72 20  70 6f 73 73 69 62 69 6c  |Another possibil|
00025fe0  69 74 79 20 69 73 20 61  73 20 66 6f 6c 6c 6f 77  |ity is as follow|
00025ff0  73 2e 20 20 53 75 70 70  6f 73 65 20 77 65 20 77  |s.  Suppose we w|
00026000  61 6e 74 20 61 20 76 65  72 62 2c 20 22 66 72 65  |ant a verb, "fre|
00026010  65 22 2c 20 62 75 74 20  6f 6e 6c 79 0a 74 6f 20  |e", but only.to |
00026020  72 65 6c 65 61 73 65 20  61 6e 69 6d 61 6c 73 20  |release animals |
00026030  66 72 6f 6d 20 61 20 63  61 67 65 3a 0a 0a 20 20  |from a cage:..  |
00026040  20 20 20 5b 20 43 61 67  65 64 43 72 65 61 74 75  |   [ CagedCreatu|
00026050  72 65 3b 0a 20 20 20 20  20 20 20 20 20 69 66 20  |re;.         if |
00026060  28 6e 6f 75 6e 20 69 6e  20 77 69 63 6b 65 72 5f  |(noun in wicker_|
00026070  63 61 67 65 29 20 72 74  72 75 65 3b 0a 20 20 20  |cage) rtrue;.   |
00026080  20 20 20 20 20 20 72 66  61 6c 73 65 3b 0a 20 20  |      rfalse;.  |
00026090  20 20 20 5d 3b 0a 0a 20  20 20 20 20 56 65 72 62  |   ];..     Verb|
000260a0  20 22 66 72 65 65 22 20  22 72 65 6c 65 61 73 65  | "free" "release|
000260b0  22 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |".              |
000260c0  20 20 20 20 20 20 20 2a  20 6e 6f 75 6e 3d 43 61  |       * noun=Ca|
000260d0  67 65 64 43 72 65 61 74  75 72 65 20 20 20 20 20  |gedCreature     |
000260e0  20 20 20 20 20 20 20 20  2d 3e 20 46 72 65 65 41  |        -> FreeA|
000260f0  6e 69 6d 61 6c 3b 0a 0a  53 6f 20 74 68 61 74 20  |nimal;..So that |
00026100  6f 6e 6c 79 20 6e 6f 75  6e 73 20 77 68 69 63 68  |only nouns which|
00026110  20 70 61 73 73 20 74 68  65 20 43 61 67 65 64 43  | pass the CagedC|
00026120  72 65 61 74 75 72 65 20  74 65 73 74 20 61 72 65  |reature test are|
00026130  20 61 6c 6c 6f 77 65 64  2e 0a 0a 0a 54 68 65 20  | allowed....The |
00026140  61 62 6f 76 65 20 65 78  61 6d 70 6c 65 73 20 61  |above examples a|
00026150  72 65 20 73 6c 69 67 68  74 6c 79 20 63 6f 6e 74  |re slightly cont|
00026160  72 69 76 65 64 20 62 65  63 61 75 73 65 20 74 68  |rived because th|
00026170  65 79 20 63 72 65 61 74  65 20 77 68 6f 6c 6c 79  |ey create wholly|
00026180  0a 6e 65 77 20 61 6e 64  20 75 6e 6c 69 6b 65 6c  |.new and unlikel|
00026190  79 20 76 65 72 62 73 2e  20 20 4d 6f 72 65 20 6f  |y verbs.  More o|
000261a0  66 74 65 6e 2c 20 6f 6e  65 20 77 6f 75 6c 64 20  |ften, one would |
000261b0  77 61 6e 74 2c 20 73 61  79 2c 20 61 20 62 69 67  |want, say, a big|
000261c0  20 61 72 72 61 79 20 6f  66 0a 6c 61 62 65 6c 6c  | array of.labell|
000261d0  65 64 20 62 75 74 74 6f  6e 73 2c 20 61 6e 79 20  |ed buttons, any |
000261e0  6f 66 20 77 68 69 63 68  20 63 6f 75 6c 64 20 62  |of which could b|
000261f0  65 20 70 75 73 68 65 64  2e 20 20 53 6f 20 74 68  |e pushed.  So th|
00026200  65 20 76 65 72 62 20 66  6f 72 20 22 70 75 73 68  |e verb for "push|
00026210  22 0a 6f 75 67 68 74 20  74 6f 20 62 65 20 65 78  |".ought to be ex|
00026220  74 65 6e 64 65 64 20 62  79 3a 0a 0a 20 20 20 20  |tended by:..    |
00026230  20 45 78 74 65 6e 64 20  22 70 75 73 68 22 0a 20  | Extend "push". |
00026240  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00026250  20 20 20 20 2a 20 42 75  74 74 6f 6e 20 20 20 20  |    * Button    |
00026260  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00026270  20 20 20 20 20 2d 3e 20  50 75 73 68 42 75 74 74  |     -> PushButt|
00026280  6f 6e 3b 20 20 20 0a 0a  61 6e 64 20 61 20 72 6f  |on;   ..and a ro|
00026290  75 74 69 6e 65 20 63 61  6c 6c 65 64 20 42 75 74  |utine called But|
000262a0  74 6f 6e 20 63 6f 75 6c  64 20 62 65 20 77 72 69  |ton could be wri|
000262b0  74 74 65 6e 20 74 6f 20  61 63 63 65 70 74 20 74  |tten to accept t|
000262c0  68 69 6e 67 73 20 6c 69  6b 65 0a 0a 20 20 20 20  |hings like..    |
000262d0  22 62 75 74 74 6f 6e 20  6a 31 36 22 2c 20 22 64  |"button j16", "d|
000262e0  31 31 22 2c 20 22 61 35  20 62 75 74 74 6f 6e 22  |11", "a5 button"|
000262f0  2e 0a 0a 54 68 65 20 70  6f 69 6e 74 20 6f 66 20  |...The point of |
00026300  45 78 74 65 6e 64 20 69  73 20 74 68 61 74 20 69  |Extend is that i|
00026310  74 20 69 73 20 61 67 61  69 6e 73 74 20 74 68 65  |t is against the|
00026320  20 73 70 69 72 69 74 20  6f 66 20 74 68 65 20 6c  | spirit of the l|
00026330  69 62 72 61 72 79 20 74  6f 0a 61 6c 74 65 72 20  |ibrary to.alter |
00026340  74 68 65 20 73 74 61 6e  64 61 72 64 20 6c 69 62  |the standard lib|
00026350  72 61 72 79 20 66 69 6c  65 73 20 2d 20 69 6e 63  |rary files - inc|
00026360  6c 75 64 69 6e 67 20 74  68 65 20 67 72 61 6d 6d  |luding the gramm|
00026370  61 72 20 74 61 62 6c 65  20 2d 20 75 6e 6c 65 73  |ar table - unles|
00026380  73 0a 61 62 73 6f 6c 75  74 65 6c 79 20 6e 65 63  |s.absolutely nec|
00026390  65 73 73 61 72 79 2e 0a  0a 4e 6f 72 6d 61 6c 6c  |essary...Normall|
000263a0  79 2c 20 65 78 74 72 61  20 6c 69 6e 65 73 20 6f  |y, extra lines o|
000263b0  66 20 67 72 61 6d 6d 61  72 20 61 72 65 20 61 64  |f grammar are ad|
000263c0  64 65 64 20 61 74 20 74  68 65 20 62 6f 74 74 6f  |ded at the botto|
000263d0  6d 20 6f 66 20 74 68 6f  73 65 20 61 6c 72 65 61  |m of those alrea|
000263e0  64 79 0a 74 68 65 72 65  2e 20 20 54 68 69 73 20  |dy.there.  This |
000263f0  6d 61 79 20 6e 6f 74 20  62 65 20 77 68 61 74 20  |may not be what |
00026400  79 6f 75 20 77 61 6e 74  2e 20 20 46 6f 72 20 69  |you want.  For i|
00026410  6e 73 74 61 6e 63 65 2c  20 22 74 61 6b 65 22 20  |nstance, "take" |
00026420  68 61 73 20 61 20 67 72  61 6d 6d 61 72 0a 6c 69  |has a grammar.li|
00026430  6e 65 0a 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ne..            |
00026440  20 20 20 20 20 20 20 20  20 2a 20 6d 75 6c 74 69  |         * multi|
00026450  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00026460  20 20 20 20 20 20 20 20  20 20 2d 3e 20 54 61 6b  |          -> Tak|
00026470  65 0a 0a 71 75 69 74 65  20 65 61 72 6c 79 20 6f  |e..quite early o|
00026480  6e 2e 20 20 53 6f 20 69  66 20 79 6f 75 20 77 61  |n.  So if you wa|
00026490  6e 74 20 74 6f 20 61 64  64 20 61 20 67 72 61 6d  |nt to add a gram|
000264a0  6d 61 72 20 6c 69 6e 65  20 77 68 69 63 68 20 64  |mar line which d|
000264b0  69 76 65 72 74 73 0a 22  74 61 6b 65 20 73 6f 6d  |iverts."take som|
000264c0  65 74 68 69 6e 67 2d 65  64 69 62 6c 65 22 20 74  |ething-edible" t|
000264d0  6f 20 61 20 64 69 66 66  65 72 65 6e 74 20 61 63  |o a different ac|
000264e0  74 69 6f 6e 2c 20 6c 69  6b 65 20 73 6f 3a 0a 0a  |tion, like so:..|
000264f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00026500  20 20 20 20 20 2a 20 65  64 69 62 6c 65 20 20 20  |     * edible   |
00026510  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00026520  20 20 20 20 20 20 2d 3e  20 45 61 74 0a 0a 74 68  |      -> Eat..th|
00026530  65 6e 20 69 74 27 73 20  6e 6f 20 67 6f 6f 64 20  |en it's no good |
00026540  61 64 64 69 6e 67 20 74  68 69 73 20 61 74 20 74  |adding this at t|
00026550  68 65 20 62 6f 74 74 6f  6d 20 6f 66 20 74 68 65  |he bottom of the|
00026560  20 54 61 6b 65 20 67 72  61 6d 6d 61 72 2c 20 62  | Take grammar, b|
00026570  65 63 61 75 73 65 0a 74  68 65 20 65 61 72 6c 69  |ecause.the earli|
00026580  65 72 20 6c 69 6e 65 20  77 69 6c 6c 20 61 6c 77  |er line will alw|
00026590  61 79 73 20 62 65 20 6d  61 74 63 68 65 64 20 66  |ays be matched f|
000265a0  69 72 73 74 2e 20 20 54  68 75 73 2c 20 79 6f 75  |irst.  Thus, you|
000265b0  20 72 65 61 6c 6c 79 20  77 61 6e 74 0a 74 6f 20  | really want.to |
000265c0  69 6e 73 65 72 74 20 79  6f 75 72 20 6c 69 6e 65  |insert your line|
000265d0  20 61 74 20 74 68 65 20  74 6f 70 2c 20 6e 6f 74  | at the top, not|
000265e0  20 74 68 65 20 62 6f 74  74 6f 6d 2c 20 69 6e 20  | the bottom, in |
000265f0  74 68 69 73 20 63 61 73  65 2e 20 20 54 68 65 20  |this case.  The |
00026600  72 69 67 68 74 0a 63 6f  6d 6d 61 6e 64 20 69 73  |right.command is|
00026610  0a 0a 20 20 20 20 20 45  78 74 65 6e 64 20 22 74  |..     Extend "t|
00026620  61 6b 65 22 20 66 69 72  73 74 0a 20 20 20 20 20  |ake" first.     |
00026630  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00026640  2a 20 65 64 69 62 6c 65  20 20 20 20 20 20 20 20  |* edible        |
00026650  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00026660  20 2d 3e 20 45 61 74 3b  0a 20 20 0a 0a 59 6f 75  | -> Eat;.  ..You|
00026670  20 6d 69 67 68 74 20 77  61 6e 74 20 74 6f 20 61  | might want to a|
00026680  63 74 75 61 6c 6c 79 20  72 65 70 6c 61 63 65 20  |ctually replace |
00026690  74 68 65 20 6f 6c 64 20  67 72 61 6d 6d 61 72 20  |the old grammar |
000266a0  63 6f 6d 70 6c 65 74 65  6c 79 2c 20 6e 6f 74 20  |completely, not |
000266b0  6a 75 73 74 0a 61 64 64  20 61 20 6c 69 6e 65 20  |just.add a line |
000266c0  6f 72 20 74 77 6f 2e 20  20 46 6f 72 20 74 68 69  |or two.  For thi|
000266d0  73 2c 20 75 73 65 0a 0a  20 20 20 20 20 45 78 74  |s, use..     Ext|
000266e0  65 6e 64 20 22 70 75 73  68 22 20 72 65 70 6c 61  |end "push" repla|
000266f0  63 65 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |ce.             |
00026700  20 20 20 20 20 20 20 20  2a 20 42 75 74 74 6f 6e  |        * Button|
00026710  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00026720  20 20 20 20 20 20 20 20  20 2d 3e 20 50 75 73 68  |         -> Push|
00026730  42 75 74 74 6f 6e 3b 0a  0a 61 6e 64 20 6e 6f 77  |Button;..and now|
00026740  20 22 70 75 73 68 22 20  63 61 6e 20 62 65 20 75  | "push" can be u|
00026750  73 65 64 20 6f 6e 6c 79  20 69 6e 20 74 68 69 73  |sed only in this|
00026760  20 77 61 79 2e 0a 0a 0a  41 73 20 61 6e 20 65 78  | way....As an ex|
00026770  61 6d 70 6c 65 20 28 73  75 67 67 65 73 74 65 64  |ample (suggested|
00026780  20 62 79 20 61 20 66 72  75 73 74 72 61 74 65 64  | by a frustrated|
00026790  20 49 6e 66 6f 72 6d 20  34 20 75 73 65 72 29 2c  | Inform 4 user),|
000267a0  20 73 75 70 70 6f 73 65  20 77 65 20 68 61 76 65  | suppose we have|
000267b0  0a 61 20 73 70 61 63 65  73 68 69 70 20 77 68 69  |.a spaceship whi|
000267c0  63 68 20 68 61 73 20 61  20 63 6f 6e 74 72 6f 6c  |ch has a control|
000267d0  20 70 61 6e 65 6c 20 77  69 74 68 20 66 69 76 65  | panel with five|
000267e0  20 73 6c 69 64 69 6e 67  20 63 6f 6e 74 72 6f 6c  | sliding control|
000267f0  73 2c 20 65 61 63 68 20  6f 66 0a 77 68 69 63 68  |s, each of.which|
00026800  20 63 61 6e 20 62 65 20  73 65 74 20 74 6f 20 61  | can be set to a|
00026810  20 6e 75 6d 65 72 69 63  61 6c 20 76 61 6c 75 65  | numerical value|
00026820  2e 20 20 4e 6f 77 20 77  65 20 63 6f 75 6c 64 20  |.  Now we could |
00026830  69 6d 70 6c 65 6d 65 6e  74 20 74 68 65 73 65 20  |implement these |
00026840  77 69 74 68 0a 66 69 76  65 20 73 65 70 61 72 61  |with.five separa|
00026850  74 65 20 6f 62 6a 65 63  74 73 2c 20 65 73 73 65  |te objects, esse|
00026860  6e 74 69 61 6c 6c 79 20  64 75 70 6c 69 63 61 74  |ntially duplicat|
00026870  65 73 20 6f 66 20 65 61  63 68 20 6f 74 68 65 72  |es of each other|
00026880  2e 20 20 28 41 6e 64 20  62 79 0a 75 73 69 6e 67  |.  (And by.using|
00026890  20 61 20 63 6c 61 73 73  20 64 65 66 69 6e 69 74  | a class definit|
000268a0  69 6f 6e 2c 20 74 68 69  73 20 77 6f 75 6c 64 6e  |ion, this wouldn|
000268b0  27 74 20 6c 6f 6f 6b 20  74 6f 6f 20 62 61 64 2e  |'t look too bad.|
000268c0  29 20 20 42 75 74 20 69  66 20 74 68 65 72 65 20  |)  But if there |
000268d0  77 65 72 65 0a 35 30 30  20 73 6c 69 64 65 73 20  |were.500 slides |
000268e0  74 68 69 73 20 77 6f 75  6c 64 20 62 65 20 6c 65  |this would be le|
000268f0  73 73 20 72 65 61 73 6f  6e 61 62 6c 65 2e 20 20  |ss reasonable.  |
00026900  53 6f 3a 0a 0a 0a 20 20  20 20 20 5b 20 41 53 6c  |So:...     [ ASl|
00026910  69 64 65 20 77 20 6e 3b  0a 20 20 20 20 20 20 20  |ide w n;.       |
00026920  20 69 66 20 28 6c 6f 63  61 74 69 6f 6e 7e 3d 4d  | if (location~=M|
00026930  61 63 68 69 6e 65 5f 52  6f 6f 6d 29 20 20 20 20  |achine_Room)    |
00026940  20 20 20 20 20 20 20 20  21 20 20 53 6c 69 64 65  |        !  Slide|
00026950  73 20 6f 6e 6c 79 20 6d  61 6b 65 20 73 65 6e 73  |s only make sens|
00026960  65 20 69 6e 0a 20 20 20  20 20 20 20 20 20 20 20  |e in.           |
00026970  20 72 65 74 75 72 6e 20  2d 31 3b 20 20 20 20 20  | return -1;     |
00026980  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00026990  20 20 20 20 21 20 20 74  68 65 20 4d 61 63 68 69  |    !  the Machi|
000269a0  6e 65 20 52 6f 6f 6d 0a  20 20 20 20 20 20 20 20  |ne Room.        |
000269b0  77 3d 4e 65 78 74 57 6f  72 64 28 29 3b 0a 20 20  |w=NextWord();.  |
000269c0  20 20 20 20 20 20 69 66  20 28 77 3d 3d 27 73 6c  |      if (w=='sl|
000269d0  69 64 65 27 29 20 77 3d  4e 65 78 74 57 6f 72 64  |ide') w=NextWord|
000269e0  28 29 3b 0a 20 20 20 20  20 20 20 20 6e 3d 30 3b  |();.        n=0;|
000269f0  0a 20 20 20 20 20 20 20  20 69 66 20 28 77 3d 3d  |.        if (w==|
00026a00  27 66 69 72 73 74 27 20  6f 72 20 27 6f 6e 65 27  |'first' or 'one'|
00026a10  29 20 20 20 6e 3d 31 3b  0a 20 20 20 20 20 20 20  |)   n=1;.       |
00026a20  20 69 66 20 28 77 3d 3d  27 73 65 63 6f 6e 64 27  | if (w=='second'|
00026a30  20 6f 72 20 27 74 77 6f  27 29 20 20 6e 3d 32 3b  | or 'two')  n=2;|
00026a40  0a 20 20 20 20 20 20 20  20 69 66 20 28 77 3d 3d  |.        if (w==|
00026a50  27 74 68 69 72 64 27 20  6f 72 20 27 74 68 72 65  |'third' or 'thre|
00026a60  65 27 29 20 6e 3d 33 3b  0a 20 20 20 20 20 20 20  |e') n=3;.       |
00026a70  20 69 66 20 28 77 3d 3d  27 66 6f 75 72 74 68 27  | if (w=='fourth'|
00026a80  20 6f 72 20 27 66 6f 75  72 27 29 20 6e 3d 34 3b  | or 'four') n=4;|
00026a90  0a 20 20 20 20 20 20 20  20 69 66 20 28 77 3d 3d  |.        if (w==|
00026aa0  27 66 69 66 74 68 27 20  6f 72 20 27 66 69 76 65  |'fifth' or 'five|
00026ab0  27 29 20 20 6e 3d 35 3b  0a 20 20 20 20 20 20 20  |')  n=5;.       |
00026ac0  20 69 66 20 28 6e 3d 3d  30 29 20 72 65 74 75 72  | if (n==0) retur|
00026ad0  6e 20 2d 31 3b 20 20 20  20 20 20 20 20 20 20 20  |n -1;           |
00026ae0  20 20 20 20 20 20 20 20  21 20 20 46 61 69 6c 75  |        !  Failu|
00026af0  72 65 21 0a 20 20 20 20  20 20 20 20 77 3d 4e 65  |re!.        w=Ne|
00026b00  78 74 57 6f 72 64 28 29  3b 0a 20 20 20 20 20 20  |xtWord();.      |
00026b10  20 20 69 66 20 28 77 7e  3d 27 73 6c 69 64 65 27  |  if (w~='slide'|
00026b20  29 20 77 6e 2d 2d 3b 20  20 20 20 20 20 20 20 20  |) wn--;         |
00026b30  20 20 20 20 20 20 20 20  20 21 20 20 4d 6f 76 65  |         !  Move|
00026b40  20 77 6f 72 64 20 63 6f  75 6e 74 65 72 20 62 61  | word counter ba|
00026b50  63 6b 20 74 6f 0a 20 20  20 20 20 20 20 20 20 20  |ck to.          |
00026b60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00026b80  20 20 20 20 20 21 20 20  66 69 72 73 74 20 6d 69  |     !  first mi|
00026b90  73 75 6e 64 65 72 73 74  6f 6f 64 20 77 6f 72 64  |sunderstood word|
00026ba0  0a 20 20 20 20 20 20 20  20 70 61 72 73 65 64 5f  |.        parsed_|
00026bb0  6e 75 6d 62 65 72 3d 6e  3b 0a 20 20 20 20 20 20  |number=n;.      |
00026bc0  20 20 72 65 74 75 72 6e  20 31 3b 20 20 20 20 20  |  return 1;     |
00026bd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00026be0  20 20 20 20 20 20 20 20  20 21 20 20 53 75 63 63  |         !  Succ|
00026bf0  65 73 73 21 0a 20 20 20  20 20 5d 3b 0a 20 20 20  |ess!.     ];.   |
00026c00  20 20 0a 20 20 20 20 20  47 6c 6f 62 61 6c 20 73  |  .     Global s|
00026c10  6c 69 64 65 5f 73 65 74  74 69 6e 67 73 20 64 61  |lide_settings da|
00026c20  74 61 20 31 30 3b 20 20  20 20 20 20 20 20 20 20  |ta 10;          |
00026c30  20 20 21 20 20 54 65 6e  20 62 79 74 65 73 20 6f  |  !  Ten bytes o|
00026c40  66 20 64 61 74 61 20 74  6f 20 68 6f 6c 64 0a 20  |f data to hold. |
00026c50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00026c70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 21 20  |              ! |
00026c80  20 66 69 76 65 20 77 6f  72 64 73 20 66 6f 72 20  | five words for |
00026c90  74 68 65 20 73 65 74 74  69 6e 67 73 0a 20 20 20  |the settings.   |
00026ca0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00026cc0  20 20 20 20 20 20 20 20  20 20 20 20 21 20 20 28  |            !  (|
00026cd0  61 6c 6c 20 69 6e 69 74  69 61 6c 6c 79 20 7a 65  |all initially ze|
00026ce0  72 6f 29 0a 20 20 20 20  20 0a 20 20 20 20 20 21  |ro).     .     !|
00026cf0  20 20 41 6e 20 69 6e 74  65 72 65 73 74 69 6e 67  |  An interesting|
00026d00  20 70 6f 69 6e 74 20 68  65 72 65 20 69 73 20 74  | point here is t|
00026d10  68 61 74 20 22 6e 6f 75  6e 22 20 61 6e 64 20 22  |hat "noun" and "|
00026d20  73 65 63 6f 6e 64 22 20  63 6f 6e 74 61 69 6e 20  |second" contain |
00026d30  74 68 65 0a 20 20 20 20  20 21 20 20 61 70 70 72  |the.     !  appr|
00026d40  6f 70 72 69 61 74 65 20  6e 75 6d 62 65 72 73 2c  |opriate numbers,|
00026d50  20 61 6e 64 20 6e 6f 74  20 6f 62 6a 65 63 74 73  | and not objects|
00026d60  3a 20 74 68 69 73 20 61  6c 6c 20 68 61 70 70 65  |: this all happe|
00026d70  6e 73 20 61 75 74 6f 6d  61 74 69 63 61 6c 6c 79  |ns automatically|
00026d80  0a 0a 20 20 20 20 20 5b  20 53 65 74 53 6c 69 64  |..     [ SetSlid|
00026d90  65 53 75 62 3b 0a 20 20  20 20 20 20 20 20 73 6c  |eSub;.        sl|
00026da0  69 64 65 5f 73 65 74 74  69 6e 67 73 2d 2d 3e 28  |ide_settings-->(|
00026db0  6e 6f 75 6e 2d 31 29 20  3d 20 73 65 63 6f 6e 64  |noun-1) = second|
00026dc0  3b 0a 20 20 20 20 20 20  20 20 70 72 69 6e 74 5f  |;.        print_|
00026dd0  72 65 74 20 22 59 6f 75  20 73 65 74 20 73 6c 69  |ret "You set sli|
00026de0  64 65 20 6e 75 6d 62 65  72 20 22 2c 20 6e 6f 75  |de number ", nou|
00026df0  6e 2c 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |n,.             |
00026e00  20 20 20 20 20 22 20 74  6f 20 74 68 65 20 76 61  |     " to the va|
00026e10  6c 75 65 20 22 2c 20 73  65 63 6f 6e 64 2c 20 22  |lue ", second, "|
00026e20  2e 22 3b 0a 20 20 20 20  20 5d 3b 0a 20 20 20 20  |.";.     ];.    |
00026e30  20 0a 20 20 20 20 20 5b  20 58 53 6c 69 64 65 53  | .     [ XSlideS|
00026e40  75 62 3b 0a 20 20 20 20  20 20 20 20 70 72 69 6e  |ub;.        prin|
00026e50  74 5f 72 65 74 20 22 53  6c 69 64 65 20 6e 75 6d  |t_ret "Slide num|
00026e60  62 65 72 20 22 2c 20 6e  6f 75 6e 2c 20 22 20 63  |ber ", noun, " c|
00026e70  75 72 72 65 6e 74 6c 79  20 73 74 61 6e 64 73 20  |urrently stands |
00026e80  61 74 20 22 2c 0a 20 20  20 20 20 20 20 20 20 20  |at ",.          |
00026e90  20 20 73 6c 69 64 65 5f  73 65 74 74 69 6e 67 73  |  slide_settings|
00026ea0  2d 2d 3e 28 6e 6f 75 6e  2d 31 29 2c 20 22 2e 22  |-->(noun-1), "."|
00026eb0  3b 0a 20 20 20 20 20 5d  3b 0a 20 20 20 20 20 0a  |;.     ];.     .|
00026ec0  20 20 20 20 20 45 78 74  65 6e 64 20 22 73 65 74  |     Extend "set|
00026ed0  22 20 66 69 72 73 74 0a  20 20 20 20 20 20 20 20  |" first.        |
00026ee0  20 20 20 20 20 20 20 20  2a 20 41 53 6c 69 64 65  |        * ASlide|
00026ef0  20 22 74 6f 22 20 6e 75  6d 62 65 72 20 20 20 20  | "to" number    |
00026f00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 2d 3e  |              ->|
00026f10  20 53 65 74 53 6c 69 64  65 3b 0a 20 20 20 20 20  | SetSlide;.     |
00026f20  45 78 74 65 6e 64 20 22  70 75 73 68 22 20 66 69  |Extend "push" fi|
00026f30  72 73 74 0a 20 20 20 20  20 20 20 20 20 20 20 20  |rst.            |
00026f40  20 20 20 20 2a 20 41 53  6c 69 64 65 20 22 74 6f  |    * ASlide "to|
00026f50  22 20 6e 75 6d 62 65 72  20 20 20 20 20 20 20 20  |" number        |
00026f60  20 20 20 20 20 20 20 20  20 20 2d 3e 20 53 65 74  |          -> Set|
00026f70  53 6c 69 64 65 3b 0a 20  20 20 20 20 45 78 74 65  |Slide;.     Exte|
00026f80  6e 64 20 22 65 78 61 6d  69 6e 65 22 20 66 69 72  |nd "examine" fir|
00026f90  73 74 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |st.             |
00026fa0  20 20 20 2a 20 41 53 6c  69 64 65 20 20 20 20 20  |   * ASlide     |
00026fb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00026fc0  20 20 20 20 20 20 20 20  20 2d 3e 20 58 53 6c 69  |         -> XSli|
00026fd0  64 65 3b 0a 0a 54 68 69  73 20 72 65 73 75 6c 74  |de;..This result|
00026fe0  73 20 69 6e 20 73 6f 6d  65 74 68 69 6e 67 20 6c  |s in something l|
00026ff0  69 6b 65 3a 0a 0a 20 20  20 20 20 3e 6c 6f 6f 6b  |ike:..     >look|
00027000  0a 0a 20 20 20 20 20 4d  61 63 68 69 6e 65 20 52  |..     Machine R|
00027010  6f 6f 6d 0a 20 20 20 20  20 54 68 65 72 65 20 69  |oom.     There i|
00027020  73 20 61 20 63 6f 6e 74  72 6f 6c 20 70 61 6e 65  |s a control pane|
00027030  6c 20 68 65 72 65 2c 20  77 69 74 68 20 66 69 76  |l here, with fiv|
00027040  65 20 73 6c 69 64 65 73  2c 20 65 61 63 68 20 6f  |e slides, each o|
00027050  66 20 77 68 69 63 68 20  63 61 6e 20 62 65 0a 20  |f which can be. |
00027060  20 20 20 20 73 65 74 20  74 6f 20 61 20 6e 75 6d  |    set to a num|
00027070  65 72 69 63 61 6c 20 76  61 6c 75 65 2e 0a 0a 20  |erical value... |
00027080  20 20 20 20 3e 70 75 73  68 20 73 6c 69 64 65 20  |    >push slide |
00027090  6f 6e 65 20 74 6f 20 35  0a 20 20 20 20 20 59 6f  |one to 5.     Yo|
000270a0  75 20 73 65 74 20 73 6c  69 64 65 20 6e 75 6d 62  |u set slide numb|
000270b0  65 72 20 31 20 74 6f 20  74 68 65 20 76 61 6c 75  |er 1 to the valu|
000270c0  65 20 35 2e 0a 0a 20 20  20 20 20 3e 65 78 61 6d  |e 5...     >exam|
000270d0  69 6e 65 20 74 68 65 20  66 69 72 73 74 20 73 6c  |ine the first sl|
000270e0  69 64 65 0a 20 20 20 20  20 53 6c 69 64 65 20 6e  |ide.     Slide n|
000270f0  75 6d 62 65 72 20 31 20  63 75 72 72 65 6e 74 6c  |umber 1 currentl|
00027100  79 20 73 74 61 6e 64 73  20 61 74 20 35 2e 0a 0a  |y stands at 5...|
00027110  20 20 20 20 20 3e 73 65  74 20 66 6f 75 72 20 74  |     >set four t|
00027120  6f 20 36 0a 20 20 20 20  20 59 6f 75 20 73 65 74  |o 6.     You set|
00027130  20 73 6c 69 64 65 20 6e  75 6d 62 65 72 20 34 20  | slide number 4 |
00027140  74 6f 20 74 68 65 20 76  61 6c 75 65 20 36 2e 0a  |to the value 6..|
00027150  0a 0a 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |..--------------|
00027160  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00027190  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0a 41 70  |-------------.Ap|
000271a0  70 65 6e 64 69 78 20 42  3a 20 20 54 68 65 20 43  |pendix B:  The C|
000271b0  72 61 66 74 20 6f 66 20  74 68 65 20 41 64 76 65  |raft of the Adve|
000271c0  6e 74 75 72 65 0a 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |nture.----------|
000271d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00027210  2d 0a 0a 0a 20 20 20 20  20 22 53 6b 69 6c 6c 20  |-...     "Skill |
00027220  77 69 74 68 6f 75 74 20  69 6d 61 67 69 6e 61 74  |without imaginat|
00027230  69 6f 6e 20 69 73 20 63  72 61 66 74 73 6d 61 6e  |ion is craftsman|
00027240  73 68 69 70 20 61 6e 64  20 67 69 76 65 73 20 75  |ship and gives u|
00027250  73 0a 20 20 20 20 20 6d  61 6e 79 20 75 73 65 66  |s.     many usef|
00027260  75 6c 20 6f 62 6a 65 63  74 73 20 73 75 63 68 20  |ul objects such |
00027270  61 73 20 77 69 63 6b 65  72 77 6f 72 6b 20 70 69  |as wickerwork pi|
00027280  63 6e 69 63 20 62 61 73  6b 65 74 73 2e 0a 20 20  |cnic baskets..  |
00027290  20 20 20 49 6d 61 67 69  6e 61 74 69 6f 6e 20 77  |   Imagination w|
000272a0  69 74 68 6f 75 74 20 73  6b 69 6c 6c 20 67 69 76  |ithout skill giv|
000272b0  65 73 20 75 73 20 6d 6f  64 65 72 6e 20 61 72 74  |es us modern art|
000272c0  2e 22 0a 0a 20 20 20 20  20 20 20 20 20 20 28 54  |."..          (T|
000272d0  6f 6d 20 53 74 6f 70 70  61 72 64 2c 20 22 41 72  |om Stoppard, "Ar|
000272e0  74 69 73 74 20 44 65 73  63 65 6e 64 69 6e 67 20  |tist Descending |
000272f0  41 20 53 74 61 69 72 63  61 73 65 22 29 0a 0a 0a  |A Staircase")...|
00027300  44 65 73 69 67 6e 20 69  73 20 62 6f 74 68 20 61  |Design is both a|
00027310  6e 20 61 72 74 20 61 6e  64 20 61 20 63 72 61 66  |n art and a craf|
00027320  74 2e 20 20 57 68 65 72  65 61 73 20 61 72 74 20  |t.  Whereas art |
00027330  63 61 6e 6e 6f 74 20 62  65 20 74 61 75 67 68 74  |cannot be taught|
00027340  2c 20 6f 6e 6c 79 0a 63  6f 6d 6d 65 6e 74 65 64  |, only.commented|
00027350  20 75 70 6f 6e 2c 20 63  72 61 66 74 20 61 74 20  | upon, craft at |
00027360  6c 65 61 73 74 20 63 61  6e 20 62 65 20 68 61 6e  |least can be han|
00027370  64 65 64 20 64 6f 77 6e  3a 20 62 75 74 20 74 68  |ded down: but th|
00027380  65 20 74 72 69 63 6b 73  20 6f 66 20 74 68 65 0a  |e tricks of the.|
00027390  74 72 61 64 65 20 64 6f  20 6e 6f 74 20 6d 61 6b  |trade do not mak|
000273a0  65 20 61 6e 20 65 6c 65  67 61 6e 74 20 6e 61 72  |e an elegant nar|
000273b0  72 61 74 69 76 65 2c 20  6f 6e 6c 79 20 61 20 63  |rative, only a c|
000273c0  61 74 61 6c 6f 67 75 65  2e 20 20 54 68 69 73 20  |atalogue.  This |
000273d0  61 70 70 65 6e 64 69 78  0a 63 6f 6e 74 61 69 6e  |appendix.contain|
000273e0  73 20 6a 75 73 74 20 73  75 63 68 20 61 20 73 74  |s just such a st|
000273f0  72 69 6e 67 20 6f 66 20  67 72 69 74 73 20 6f 66  |ring of grits of|
00027400  20 77 69 73 64 6f 6d 20  61 6e 64 20 68 61 6c 66  | wisdom and half|
00027410  2d 62 61 6b 65 64 20 63  72 69 74 69 63 61 6c 0a  |-baked critical.|
00027420  6f 70 69 6e 69 6f 6e 73  2c 20 77 68 69 63 68 20  |opinions, which |
00027430  6d 61 79 20 77 65 6c 6c  20 6c 65 61 76 65 20 74  |may well leave t|
00027440  68 65 20 72 65 61 64 65  72 20 66 65 65 6c 69 6e  |he reader feelin|
00027450  67 20 75 6e 73 61 74 69  73 66 69 65 64 2e 20 20  |g unsatisfied.  |
00027460  4f 6e 65 20 63 61 6e 20  6f 6e 6c 79 0a 73 61 79  |One can only.say|
00027470  20 74 6f 20 73 75 63 68  20 61 20 72 65 61 64 65  | to such a reade|
00027480  72 20 74 68 61 74 20 61  6e 79 20 62 6f 6f 6b 20  |r that any book |
00027490  63 6c 61 69 6d 69 6e 67  20 74 6f 20 72 65 76 65  |claiming to reve|
000274a0  61 6c 20 74 68 65 20 73  65 63 72 65 74 20 6f 66  |al the secret of|
000274b0  20 68 6f 77 20 74 6f 0a  70 61 69 6e 74 2c 20 6f  | how to.paint, o|
000274c0  72 20 74 6f 20 77 72 69  74 65 20 6e 6f 76 65 6c  |r to write novel|
000274d0  73 2c 20 6f 72 20 74 6f  20 68 61 76 65 20 69 64  |s, or to have id|
000274e0  65 61 73 2c 20 73 68 6f  75 6c 64 20 62 65 20 72  |eas, should be r|
000274f0  65 63 79 63 6c 65 64 20  61 74 20 6f 6e 63 65 20  |ecycled at once |
00027500  69 6e 74 6f 0a 73 6f 6d  65 74 68 69 6e 67 20 6d  |into.something m|
00027510  6f 72 65 20 67 65 6e 75  69 6e 65 6c 79 20 61 72  |ore genuinely ar|
00027520  74 69 73 74 69 63 2c 20  73 61 79 20 61 20 70 61  |tistic, say a pa|
00027530  70 69 65 72 2d 6d 61 63  68 65 20 73 63 75 6c 70  |pier-mache sculp|
00027540  74 75 72 65 2e 0a 0a 49  66 20 74 68 65 72 65 20  |ture...If there |
00027550  69 73 20 61 6e 79 20 74  68 65 6d 65 20 68 65 72  |is any theme her|
00027560  65 2c 20 69 74 20 69 73  20 73 69 6d 70 6c 79 20  |e, it is simply |
00027570  74 68 61 74 20 73 74 61  6e 64 61 72 64 73 20 63  |that standards c|
00027580  6f 75 6e 74 20 66 6f 72  20 73 6f 6d 65 74 68 69  |ount for somethi|
00027590  6e 67 2e 0a 0a 0a 54 68  65 20 61 75 74 68 6f 72  |ng....The author|
000275a0  20 6f 66 20 61 20 74 65  78 74 20 61 64 76 65 6e  | of a text adven|
000275b0  74 75 72 65 20 68 61 73  20 74 6f 20 62 65 20 73  |ture has to be s|
000275c0  63 68 69 7a 6f 70 68 72  65 6e 69 63 20 69 6e 20  |chizophrenic in |
000275d0  61 20 77 61 79 20 74 68  61 74 20 74 68 65 0a 61  |a way that the.a|
000275e0  75 74 68 6f 72 20 6f 66  20 61 20 6e 6f 76 65 6c  |uthor of a novel|
000275f0  20 64 6f 65 73 20 6e 6f  74 2e 20 20 54 68 65 20  | does not.  The |
00027600  6e 6f 76 65 6c 2d 72 65  61 64 65 72 20 64 6f 65  |novel-reader doe|
00027610  73 20 6e 6f 74 20 73 75  66 66 65 72 20 61 73 20  |s not suffer as |
00027620  74 68 65 20 70 6c 61 79  65 72 0a 6f 66 20 61 20  |the player.of a |
00027630  67 61 6d 65 20 64 6f 65  73 3a 20 73 68 65 20 6e  |game does: she n|
00027640  65 65 64 73 20 6f 6e 6c  79 20 74 6f 20 6b 65 65  |eeds only to kee|
00027650  70 20 74 75 72 6e 69 6e  67 20 74 68 65 20 70 61  |p turning the pa|
00027660  67 65 73 2c 20 61 6e 64  20 63 61 6e 20 62 65 20  |ges, and can be |
00027670  74 72 75 73 74 65 64 0a  74 6f 20 64 6f 20 74 68  |trusted.to do th|
00027680  69 73 20 62 79 20 68 65  72 73 65 6c 66 2e 20 20  |is by herself.  |
00027690  54 68 65 20 6e 6f 76 65  6c 69 73 74 20 6d 61 79  |The novelist may|
000276a0  20 77 6f 72 72 79 20 74  68 61 74 20 74 68 65 20  | worry that the |
000276b0  72 65 61 64 65 72 20 69  73 20 67 65 74 74 69 6e  |reader is gettin|
000276c0  67 0a 62 6f 72 65 64 20  61 6e 64 20 64 69 73 63  |g.bored and disc|
000276d0  6f 75 72 61 67 65 64 2c  20 62 75 74 20 6e 6f 74  |ouraged, but not|
000276e0  20 74 68 61 74 20 73 68  65 20 77 69 6c 6c 20 73  | that she will s|
000276f0  75 64 64 65 6e 6c 79 20  66 69 6e 64 20 70 61 67  |uddenly find pag|
00027700  65 73 20 36 33 20 74 6f  20 74 68 65 0a 65 6e 64  |es 63 to the.end|
00027710  20 68 61 76 65 20 62 65  65 6e 20 67 6c 75 65 64  | have been glued|
00027720  20 74 6f 67 65 74 68 65  72 20 6a 75 73 74 20 61  | together just a|
00027730  73 20 74 68 65 20 70 6c  6f 74 20 69 73 20 67 65  |s the plot is ge|
00027740  74 74 69 6e 67 20 69 6e  74 65 72 65 73 74 69 6e  |tting interestin|
00027750  67 2e 0a 0a 54 68 75 73  2c 20 74 68 65 20 67 61  |g...Thus, the ga|
00027760  6d 65 20 61 75 74 68 6f  72 20 68 61 73 20 63 6f  |me author has co|
00027770  6e 74 69 6e 75 61 6c 6c  79 20 74 6f 20 77 6f 72  |ntinually to wor|
00027780  72 79 20 61 62 6f 75 74  20 68 6f 77 20 74 68 65  |ry about how the|
00027790  20 70 6c 61 79 65 72 20  69 73 0a 67 65 74 74 69  | player is.getti|
000277a0  6e 67 20 61 6c 6f 6e 67  2c 20 77 68 65 74 68 65  |ng along, whethe|
000277b0  72 20 73 68 65 20 69 73  20 6c 6f 73 74 2c 20 63  |r she is lost, c|
000277c0  6f 6e 66 75 73 65 64 2c  20 66 65 64 20 75 70 2c  |onfused, fed up,|
000277d0  20 66 69 6e 64 69 6e 67  20 69 74 20 74 6f 6f 20  | finding it too |
000277e0  74 65 64 69 6f 75 73 0a  74 6f 20 6b 65 65 70 20  |tedious.to keep |
000277f0  61 6e 20 61 63 63 75 72  61 74 65 20 6d 61 70 3a  |an accurate map:|
00027800  20 6f 72 2c 20 6f 6e 20  74 68 65 20 6f 74 68 65  | or, on the othe|
00027810  72 20 68 61 6e 64 2c 20  77 68 65 74 68 65 72 20  |r hand, whether |
00027820  73 68 65 20 69 73 20 79  61 77 6e 69 6e 67 0a 74  |she is yawning.t|
00027830  68 72 6f 75 67 68 20 61  20 73 65 71 75 65 6e 63  |hrough a sequenc|
00027840  65 20 6f 66 20 65 61 73  79 20 70 75 7a 7a 6c 65  |e of easy puzzle|
00027850  73 20 77 69 74 68 6f 75  74 20 6d 75 63 68 20 65  |s without much e|
00027860  78 70 6c 6f 72 61 74 69  6f 6e 2e 20 20 54 6f 6f  |xploration.  Too|
00027870  20 64 69 66 66 69 63 75  6c 74 2c 0a 74 6f 6f 20  | difficult,.too |
00027880  65 61 73 79 3f 20 20 54  6f 6f 20 6d 75 63 68 20  |easy?  Too much |
00027890  63 68 6f 69 63 65 2c 20  74 6f 6f 20 6c 69 74 74  |choice, too litt|
000278a0  6c 65 3f 0a 0a 4f 6e 20  74 68 65 20 6f 74 68 65  |le?..On the othe|
000278b0  72 20 68 61 6e 64 2c 20  74 68 65 72 65 20 69 73  |r hand, there is|
000278c0  20 61 6c 73 6f 20 61 20  6e 6f 76 65 6c 20 74 6f  | also a novel to|
000278d0  20 62 65 20 77 72 69 74  74 65 6e 3a 20 74 68 65  | be written: the|
000278e0  20 70 6c 61 79 65 72 20  6d 61 79 20 67 65 74 0a  | player may get.|
000278f0  74 68 65 20 63 68 61 70  74 65 72 73 20 61 6c 6c  |the chapters all|
00027900  20 6f 75 74 20 6f 66 20  6f 72 64 65 72 2c 20 74  | out of order, t|
00027910  68 65 20 70 6c 6f 74 20  6d 61 79 20 67 6f 20 61  |he plot may go a|
00027920  77 72 79 2c 20 62 75 74  20 73 6f 6d 65 68 6f 77  |wry, but somehow|
00027930  20 74 68 65 20 61 75 74  68 6f 72 0a 68 61 73 20  | the author.has |
00027940  74 6f 20 72 65 73 63 75  65 20 74 68 65 20 73 69  |to rescue the si|
00027950  74 75 61 74 69 6f 6e 20  61 6e 64 20 62 69 6e 64  |tuation and bind|
00027960  20 75 70 20 74 68 65 20  73 74 72 69 6e 67 73 20  | up the strings |
00027970  6e 65 61 74 6c 79 2e 20  20 4f 75 72 20 70 6c 61  |neatly.  Our pla|
00027980  79 65 72 0a 73 68 6f 75  6c 64 20 77 61 6c 6b 20  |yer.should walk |
00027990  61 77 61 79 20 74 68 69  6e 6b 69 6e 67 20 69 74  |away thinking it|
000279a0  20 77 61 73 20 61 20 77  65 6c 6c 2d 74 68 6f 75  | was a well-thou|
000279b0  67 68 74 20 6f 75 74 20  73 74 6f 72 79 3a 20 69  |ght out story: i|
000279c0  6e 20 66 61 63 74 2c 20  61 20 6e 6f 76 65 6c 2c  |n fact, a novel,|
000279d0  0a 61 6e 64 20 6e 6f 74  20 61 20 63 68 69 6c 64  |.and not a child|
000279e0  27 73 20 70 75 7a 7a 6c  65 2d 62 6f 6f 6b 2e 0a  |'s puzzle-book..|
000279f0  0a 54 68 75 73 2c 20 61  6c 74 68 6f 75 67 68 20  |.Thus, although |
00027a00  74 68 69 73 20 61 72 74  69 63 6c 65 20 69 73 20  |this article is |
00027a10  61 62 6f 75 74 20 64 65  73 69 67 6e 2c 20 69 74  |about design, it|
00027a20  20 62 65 67 69 6e 73 20  77 69 74 68 20 74 68 65  | begins with the|
00027a30  20 70 6c 61 79 65 72 27  73 0a 65 79 65 20 76 69  | player's.eye vi|
00027a40  65 77 2e 0a 0a 0a 54 68  65 6e 2c 20 74 6f 6f 2c  |ew....Then, too,|
00027a50  20 61 6e 20 61 64 76 65  6e 74 75 72 65 20 67 61  | an adventure ga|
00027a60  6d 65 20 69 73 20 61 20  63 72 6f 73 73 77 6f 72  |me is a crosswor|
00027a70  64 20 61 74 20 77 61 72  20 77 69 74 68 20 61 20  |d at war with a |
00027a80  6e 61 72 72 61 74 69 76  65 2e 20 20 44 65 73 69  |narrative.  Desi|
00027a90  67 6e 0a 73 68 61 72 70  6c 79 20 64 69 76 69 64  |gn.sharply divid|
00027aa0  65 73 20 69 6e 74 6f 20  74 68 65 20 67 6c 6f 62  |es into the glob|
00027ab0  61 6c 20 2d 20 70 6c 6f  74 2c 20 73 74 72 75 63  |al - plot, struc|
00027ac0  74 75 72 65 2c 20 67 65  6e 72 65 20 2d 20 61 6e  |ture, genre - an|
00027ad0  64 20 74 68 65 20 6c 6f  63 61 6c 20 2d 0a 70 75  |d the local -.pu|
00027ae0  7a 7a 6c 65 73 20 61 6e  64 20 72 6f 6f 6d 73 2c  |zzles and rooms,|
00027af0  20 6f 72 64 65 72 73 20  69 6e 20 77 68 69 63 68  | orders in which|
00027b00  20 74 68 69 6e 67 73 20  6d 75 73 74 20 62 65 20  | things must be |
00027b10  64 6f 6e 65 2e 20 20 41  6e 64 20 74 68 69 73 20  |done.  And this |
00027b20  61 72 74 69 63 6c 65 0a  64 69 76 69 64 65 73 20  |article.divides |
00027b30  61 63 63 6f 72 64 69 6e  67 6c 79 2e 0a 0a 0a 2d  |accordingly....-|
00027b40  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00027b80  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0a 42 31 2e 20 41  |----------.B1. A|
00027b90  20 42 69 6c 6c 20 6f 66  20 50 6c 61 79 65 72 27  | Bill of Player'|
00027ba0  73 20 52 69 67 68 74 73  0a 2d 2d 2d 2d 2d 2d 2d  |s Rights.-------|
00027bb0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00027bf0  2d 2d 2d 2d 0a 0a 0a 20  20 20 20 20 22 49 6e 20  |----...     "In |
00027c00  61 6e 20 65 61 72 6c 79  20 76 65 72 73 69 6f 6e  |an early version|
00027c10  20 6f 66 20 5a 6f 72 6b  2c 20 69 74 20 77 61 73  | of Zork, it was|
00027c20  20 70 6f 73 73 69 62 6c  65 20 74 6f 20 62 65 20  | possible to be |
00027c30  6b 69 6c 6c 65 64 20 62  79 0a 20 20 20 20 20 74  |killed by.     t|
00027c40  68 65 20 63 6f 6c 6c 61  70 73 65 20 6f 66 20 61  |he collapse of a|
00027c50  6e 20 75 6e 73 74 61 62  6c 65 20 72 6f 6f 6d 2e  |n unstable room.|
00027c60  20 44 75 65 20 74 6f 20  63 61 72 65 6c 65 73 73  | Due to careless|
00027c70  6e 65 73 73 20 77 69 74  68 0a 20 20 20 20 20 73  |ness with.     s|
00027c80  63 68 65 64 75 6c 69 6e  67 20 73 75 63 68 20 61  |cheduling such a|
00027c90  20 63 6f 6c 6c 61 70 73  65 2c 20 35 30 2c 30 30  | collapse, 50,00|
00027ca0  30 20 70 6f 75 6e 64 73  20 6f 66 20 72 6f 63 6b  |0 pounds of rock|
00027cb0  20 6d 69 67 68 74 20 66  61 6c 6c 20 6f 6e 0a 20  | might fall on. |
00027cc0  20 20 20 20 79 6f 75 72  20 68 65 61 64 20 64 75  |    your head du|
00027cd0  72 69 6e 67 20 61 20 73  74 72 6f 6c 6c 20 64 6f  |ring a stroll do|
00027ce0  77 6e 20 61 20 66 6f 72  65 73 74 20 70 61 74 68  |wn a forest path|
00027cf0  2e 20 4d 65 74 65 6f 72  73 2c 20 6e 6f 20 64 6f  |. Meteors, no do|
00027d00  75 62 74 2e 22 0a 0a 20  20 20 20 20 20 20 20 20  |ubt."..         |
00027d10  20 28 50 2e 20 44 61 76  69 64 20 4c 65 62 6c 69  | (P. David Lebli|
00027d20  6e 67 2c 20 22 5a 6f 72  6b 20 61 6e 64 20 74 68  |ng, "Zork and th|
00027d30  65 20 46 75 74 75 72 65  20 6f 66 20 43 6f 6d 70  |e Future of Comp|
00027d40  75 74 65 72 69 7a 65 64  0a 20 20 20 20 20 20 20  |uterized.       |
00027d50  20 20 20 46 61 6e 74 61  73 79 20 53 69 6d 75 6c  |   Fantasy Simul|
00027d60  61 74 69 6f 6e 73 22 29  0a 0a 0a 20 20 57 2e 20  |ations")...  W. |
00027d70  48 2e 20 41 75 64 65 6e  20 6f 6e 63 65 20 6f 62  |H. Auden once ob|
00027d80  73 65 72 76 65 64 20 74  68 61 74 20 70 6f 65 74  |served that poet|
00027d90  72 79 20 6d 61 6b 65 73  20 6e 6f 74 68 69 6e 67  |ry makes nothing|
00027da0  20 68 61 70 70 65 6e 2e  20 20 41 64 76 65 6e 74  | happen.  Advent|
00027db0  75 72 65 0a 67 61 6d 65  73 20 61 72 65 20 65 76  |ure.games are ev|
00027dc0  65 6e 20 6d 6f 72 65 20  66 75 74 69 6c 65 3a 20  |en more futile: |
00027dd0  69 74 20 6d 75 73 74 20  6e 65 76 65 72 20 62 65  |it must never be|
00027de0  20 66 6f 72 67 6f 74 74  65 6e 20 74 68 61 74 20  | forgotten that |
00027df0  74 68 65 79 0a 69 6e 74  65 6e 74 69 6f 6e 61 6c  |they.intentional|
00027e00  6c 79 20 61 6e 6e 6f 79  20 74 68 65 20 70 6c 61  |ly annoy the pla|
00027e10  79 65 72 20 6d 6f 73 74  20 6f 66 20 74 68 65 20  |yer most of the |
00027e20  74 69 6d 65 2e 20 20 54  68 65 72 65 27 73 20 61  |time.  There's a|
00027e30  20 66 69 6e 65 20 6c 69  6e 65 0a 62 65 74 77 65  | fine line.betwe|
00027e40  65 6e 20 61 20 63 68 61  6c 6c 65 6e 67 65 20 61  |en a challenge a|
00027e50  6e 64 20 61 20 6e 75 69  73 61 6e 63 65 3a 20 61  |nd a nuisance: a|
00027e60  6e 64 20 73 6f 20 74 68  65 20 64 65 73 69 67 6e  |nd so the design|
00027e70  65 72 20 73 68 6f 75 6c  64 20 74 68 69 6e 6b 2c  |er should think,|
00027e80  20 66 69 72 73 74 0a 61  6e 64 20 66 6f 72 65 6d  | first.and forem|
00027e90  6f 73 74 2c 20 6c 69 6b  65 20 61 20 70 6c 61 79  |ost, like a play|
00027ea0  65 72 2c 20 6e 6f 74 20  61 20 70 72 6f 67 72 61  |er, not a progra|
00027eb0  6d 6d 65 72 20 6f 72 20  65 76 65 6e 20 61 6e 20  |mmer or even an |
00027ec0  61 75 74 68 6f 72 2e 0a  0a 20 20 57 69 74 68 20  |author...  With |
00027ed0  74 68 61 74 20 69 6e 20  6d 69 6e 64 2c 20 49 20  |that in mind, I |
00027ee0  68 6f 6c 64 20 74 68 65  20 66 6f 6c 6c 6f 77 69  |hold the followi|
00027ef0  6e 67 20 72 69 67 68 74  73 20 74 6f 20 62 65 20  |ng rights to be |
00027f00  73 65 6c 66 2d 65 76 69  64 65 6e 74 3a 0a 0a 0a  |self-evident:...|
00027f10  20 20 20 20 31 2e 20 20  4e 6f 74 20 74 6f 20 62  |    1.  Not to b|
00027f20  65 20 6b 69 6c 6c 65 64  20 77 69 74 68 6f 75 74  |e killed without|
00027f30  20 77 61 72 6e 69 6e 67  0a 0a 20 20 41 74 20 69  | warning..  At i|
00027f40  74 73 20 6d 6f 73 74 20  62 61 73 69 63 20 6c 65  |ts most basic le|
00027f50  76 65 6c 2c 20 74 68 69  73 20 6d 65 61 6e 73 20  |vel, this means |
00027f60  74 68 61 74 20 61 20 72  6f 6f 6d 20 77 69 74 68  |that a room with|
00027f70  20 74 68 72 65 65 20 65  78 69 74 73 2c 20 74 77  | three exits, tw|
00027f80  6f 20 6f 66 0a 77 68 69  63 68 20 6c 65 61 64 20  |o of.which lead |
00027f90  74 6f 20 69 6e 73 74 61  6e 74 20 64 65 61 74 68  |to instant death|
00027fa0  20 61 6e 64 20 74 68 65  20 74 68 69 72 64 20 74  | and the third t|
00027fb0  6f 20 74 72 65 61 73 75  72 65 2c 20 69 73 20 75  |o treasure, is u|
00027fc0  6e 72 65 61 73 6f 6e 61  62 6c 65 0a 77 69 74 68  |nreasonable.with|
00027fd0  6f 75 74 20 73 6f 6d 65  20 68 69 6e 74 2e 20 20  |out some hint.  |
00027fe0  4f 6e 20 74 68 65 20 73  75 62 6a 65 63 74 20 6f  |On the subject o|
00027ff0  66 20 77 68 69 63 68 3a  0a 0a 20 20 20 20 32 2e  |f which:..    2.|
00028000  20 20 4e 6f 74 20 74 6f  20 62 65 20 67 69 76 65  |  Not to be give|
00028010  6e 20 68 6f 72 72 69 62  6c 79 20 75 6e 63 6c 65  |n horribly uncle|
00028020  61 72 20 68 69 6e 74 73  0a 20 0a 20 20 4d 61 6e  |ar hints. .  Man|
00028030  79 20 79 65 61 72 73 20  61 67 6f 2c 20 49 20 70  |y years ago, I p|
00028040  6c 61 79 65 64 20 61 20  67 61 6d 65 20 69 6e 20  |layed a game in |
00028050  77 68 69 63 68 20 67 6f  69 6e 67 20 6e 6f 72 74  |which going nort|
00028060  68 20 66 72 6f 6d 20 61  20 63 61 76 65 20 6c 65  |h from a cave le|
00028070  64 20 74 6f 20 61 0a 6c  65 74 68 61 6c 20 70 69  |d to a.lethal pi|
00028080  74 2e 20 20 54 68 65 20  68 69 6e 74 20 77 61 73  |t.  The hint was|
00028090  3a 20 74 68 65 72 65 20  77 61 73 20 61 20 70 72  |: there was a pr|
000280a0  69 64 65 20 6f 66 20 6c  69 6f 6e 73 20 63 61 72  |ide of lions car|
000280b0  76 65 64 20 61 62 6f 76  65 20 74 68 65 0a 64 6f  |ved above the.do|
000280c0  6f 72 77 61 79 2e 20 20  47 6f 6f 64 20 68 69 6e  |orway.  Good hin|
000280d0  74 73 20 63 61 6e 20 62  65 20 73 6b 69 6c 66 75  |ts can be skilfu|
000280e0  6c 6c 79 20 68 69 64 64  65 6e 2c 20 6f 72 20 76  |lly hidden, or v|
000280f0  65 72 79 20 62 72 69 65  66 20 28 49 20 74 68 69  |ery brief (I thi|
00028100  6e 6b 2c 20 66 6f 72 0a  65 78 61 6d 70 6c 65 2c  |nk, for.example,|
00028110  20 74 68 65 20 68 69 6e  74 20 69 6e 20 74 68 65  | the hint in the|
00028120  20 6d 6f 76 69 6e 67 2d  72 6f 63 6b 73 20 70 6c  | moving-rocks pl|
00028130  61 69 6e 20 70 72 6f 62  6c 65 6d 20 69 6e 20 22  |ain problem in "|
00028140  53 70 65 6c 6c 62 72 65  61 6b 65 72 22 20 69 73  |Spellbreaker" is|
00028150  20 61 0a 6d 61 73 74 65  72 70 69 65 63 65 29 20  | a.masterpiece) |
00028160  62 75 74 20 73 68 6f 75  6c 64 20 6e 6f 74 20 6e  |but should not n|
00028170  65 65 64 20 65 78 70 6c  61 69 6e 69 6e 67 20 65  |eed explaining e|
00028180  76 65 6e 20 61 66 74 65  72 20 74 68 65 20 65 76  |ven after the ev|
00028190  65 6e 74 2e 0a 0a 20 20  53 75 72 76 69 76 61 6c  |ent...  Survival|
000281a0  20 69 73 20 6e 6f 74 20  65 6e 6f 75 67 68 2e 20  | is not enough. |
000281b0  20 49 64 65 61 6c 6c 79  2c 20 77 65 20 77 6f 75  | Ideally, we wou|
000281c0  6c 64 20 6c 69 6b 65 2e  2e 2e 0a 0a 20 20 20 20  |ld like.....    |
000281d0  33 2e 20 20 54 6f 20 62  65 20 61 62 6c 65 20 74  |3.  To be able t|
000281e0  6f 20 77 69 6e 20 77 69  74 68 6f 75 74 20 65 78  |o win without ex|
000281f0  70 65 72 69 65 6e 63 65  20 6f 66 20 70 61 73 74  |perience of past|
00028200  20 6c 69 76 65 73 0a 0a  20 20 54 68 69 73 20 72  | lives..  This r|
00028210  75 6c 65 20 69 73 20 76  65 72 79 20 68 61 72 64  |ule is very hard|
00028220  20 74 6f 20 61 62 69 64  65 20 62 79 2e 20 20 48  | to abide by.  H|
00028230  65 72 65 20 61 72 65 20  74 68 72 65 65 20 65 78  |ere are three ex|
00028240  61 6d 70 6c 65 73 3a 0a  0a 20 20 20 20 20 20 28  |amples:..      (|
00028250  69 29 20 20 54 68 65 72  65 20 69 73 20 61 20 6e  |i)  There is a n|
00028260  75 63 6c 65 61 72 20 62  6f 6d 62 20 62 75 72 69  |uclear bomb buri|
00028270  65 64 20 75 6e 64 65 72  20 73 6f 6d 65 20 61 6e  |ed under some an|
00028280  6f 6e 79 6d 6f 75 73 0a  20 20 20 20 20 20 20 20  |onymous.        |
00028290  20 20 20 66 6c 6f 6f 72  20 73 6f 6d 65 77 68 65  |   floor somewhe|
000282a0  72 65 2c 20 77 68 69 63  68 20 6d 75 73 74 20 62  |re, which must b|
000282b0  65 20 64 69 73 61 72 6d  65 64 2e 20 20 54 68 65  |e disarmed.  The|
000282c0  20 70 6c 61 79 65 72 20  6b 6e 6f 77 73 0a 20 20  | player knows.  |
000282d0  20 20 20 20 20 20 20 20  20 77 68 65 72 65 20 74  |         where t|
000282e0  6f 20 64 69 67 20 62 65  63 61 75 73 65 2c 20 6c  |o dig because, l|
000282f0  61 73 74 20 74 69 6d 65  20 61 72 6f 75 6e 64 2c  |ast time around,|
00028300  20 69 74 20 62 6c 65 77  20 75 70 20 74 68 65 72  | it blew up ther|
00028310  65 2e 0a 0a 20 20 20 20  20 20 28 69 69 29 20 54  |e...      (ii) T|
00028320  68 65 72 65 20 69 73 20  61 20 72 6f 63 6b 65 74  |here is a rocket|
00028330  2d 6c 61 75 6e 63 68 65  72 20 77 69 74 68 20 61  |-launcher with a|
00028340  20 70 61 6e 65 6c 20 6f  66 20 62 75 74 74 6f 6e  | panel of button|
00028350  73 2c 20 77 68 69 63 68  20 6c 6f 6f 6b 73 0a 20  |s, which looks. |
00028360  20 20 20 20 20 20 20 20  20 20 61 73 20 69 66 20  |          as if |
00028370  69 74 20 6e 65 65 64 73  20 74 6f 20 62 65 20 63  |it needs to be c|
00028380  6f 72 72 65 63 74 6c 79  20 70 72 6f 67 72 61 6d  |orrectly program|
00028390  6d 65 64 2e 20 20 42 75  74 20 74 68 65 20 70 6c  |med.  But the pl|
000283a0  61 79 65 72 0a 20 20 20  20 20 20 20 20 20 20 20  |ayer.           |
000283b0  63 61 6e 20 6d 69 73 66  69 72 65 20 74 68 65 20  |can misfire the |
000283c0  72 6f 63 6b 65 74 20 65  61 73 69 6c 79 20 62 79  |rocket easily by|
000283d0  20 74 61 6d 70 65 72 69  6e 67 20 77 69 74 68 20  | tampering with |
000283e0  74 68 65 20 63 6f 6e 74  72 6f 6c 73 0a 20 20 20  |the controls.   |
000283f0  20 20 20 20 20 20 20 20  62 65 66 6f 72 65 20 66  |        before f|
00028400  69 6e 64 69 6e 67 20 74  68 65 20 6d 61 6e 75 61  |inding the manua|
00028410  6c 2e 0a 0a 20 20 20 20  20 20 28 69 69 69 29 20  |l...      (iii) |
00028420  28 54 68 69 73 20 66 72  6f 6d 20 22 54 68 65 20  |(This from "The |
00028430  4c 75 72 6b 69 6e 67 20  48 6f 72 72 6f 72 22 2e  |Lurking Horror".|
00028440  29 20 20 53 6f 6d 65 74  68 69 6e 67 20 6e 65 65  |)  Something nee|
00028450  64 73 20 74 6f 20 62 65  20 63 6f 6f 6b 65 64 0a  |ds to be cooked.|
00028460  20 20 20 20 20 20 20 20  20 20 20 66 6f 72 20 74  |           for t|
00028470  68 65 20 72 69 67 68 74  20 6c 65 6e 67 74 68 20  |he right length |
00028480  6f 66 20 74 69 6d 65 2e  20 20 54 68 65 20 6f 6e  |of time.  The on|
00028490  6c 79 20 77 61 79 20 74  6f 20 66 69 6e 64 20 74  |ly way to find t|
000284a0  68 65 20 72 69 67 68 74  0a 20 20 20 20 20 20 20  |he right.       |
000284b0  20 20 20 20 74 69 6d 65  20 69 73 20 62 79 20 74  |    time is by t|
000284c0  72 69 61 6c 20 61 6e 64  20 65 72 72 6f 72 2c 20  |rial and error, |
000284d0  62 75 74 20 65 61 63 68  20 67 61 6d 65 20 61 6c  |but each game al|
000284e0  6c 6f 77 73 20 6f 6e 6c  79 20 6f 6e 65 20 74 72  |lows only one tr|
000284f0  69 61 6c 2e 0a 20 20 20  20 20 20 20 20 20 20 20  |ial..           |
00028500  4f 6e 20 74 68 65 20 6f  74 68 65 72 20 68 61 6e  |On the other han|
00028510  64 2c 20 63 6f 6d 6d 6f  6e 20 73 65 6e 73 65 20  |d, common sense |
00028520  73 75 67 67 65 73 74 73  20 61 20 72 65 61 73 6f  |suggests a reaso|
00028530  6e 61 62 6c 65 20 61 6e  73 77 65 72 2e 0a 0a 20  |nable answer... |
00028540  20 4f 66 20 74 68 65 73  65 20 28 69 29 20 69 73  | Of these (i) is|
00028550  20 63 6c 65 61 72 6c 79  20 75 6e 66 61 69 72 2c  | clearly unfair,|
00028560  20 6d 6f 73 74 20 70 6c  61 79 65 72 73 20 77 6f  | most players wo|
00028570  75 6c 64 20 61 67 72 65  65 20 28 69 69 29 20 69  |uld agree (ii) i|
00028580  73 20 66 61 69 72 0a 65  6e 6f 75 67 68 20 61 6e  |s fair.enough an|
00028590  64 20 28 69 69 69 29 2c  20 61 73 20 74 65 6e 64  |d (iii), as tend|
000285a0  73 20 74 6f 20 68 61 70  70 65 6e 20 77 69 74 68  |s to happen with|
000285b0  20 72 65 61 6c 20 63 61  73 65 73 2c 20 69 73 20  | real cases, is |
000285c0  62 6f 72 64 65 72 2d 6c  69 6e 65 2e 0a 0a 20 20  |border-line...  |
000285d0  49 6e 20 70 72 69 6e 63  69 70 6c 65 2c 20 74 68  |In principle, th|
000285e0  65 6e 2c 20 61 20 67 6f  6f 64 20 70 6c 61 79 65  |en, a good playe|
000285f0  72 20 73 68 6f 75 6c 64  20 62 65 20 61 62 6c 65  |r should be able|
00028600  20 74 6f 20 70 6c 61 79  20 74 68 65 20 65 6e 74  | to play the ent|
00028610  69 72 65 20 67 61 6d 65  0a 6f 75 74 20 77 69 74  |ire game.out wit|
00028620  68 6f 75 74 20 64 6f 69  6e 67 20 61 6e 79 74 68  |hout doing anyth|
00028630  69 6e 67 20 69 6c 6c 6f  67 69 63 61 6c 2c 20 61  |ing illogical, a|
00028640  6e 64 2c 20 69 6e 20 73  69 6d 69 6c 61 72 20 76  |nd, in similar v|
00028650  65 69 6e 3a 0a 0a 20 20  20 20 34 2e 20 20 54 6f  |ein:..    4.  To|
00028660  20 62 65 20 61 62 6c 65  20 74 6f 20 77 69 6e 20  | be able to win |
00028670  77 69 74 68 6f 75 74 20  6b 6e 6f 77 6c 65 64 67  |without knowledg|
00028680  65 20 6f 66 20 66 75 74  75 72 65 20 65 76 65 6e  |e of future even|
00028690  74 73 0a 0a 20 20 46 6f  72 20 65 78 61 6d 70 6c  |ts..  For exampl|
000286a0  65 2c 20 74 68 65 20 67  61 6d 65 20 6f 70 65 6e  |e, the game open|
000286b0  73 20 6e 65 61 72 20 61  20 73 68 6f 70 2e 20 20  |s near a shop.  |
000286c0  59 6f 75 20 68 61 76 65  20 6f 6e 65 20 63 6f 69  |You have one coi|
000286d0  6e 20 61 6e 64 20 63 61  6e 20 62 75 79 20 61 0a  |n and can buy a.|
000286e0  6c 61 6d 70 2c 20 61 20  6d 61 67 69 63 20 63 61  |lamp, a magic ca|
000286f0  72 70 65 74 20 6f 72 20  61 20 70 65 72 69 73 63  |rpet or a perisc|
00028700  6f 70 65 2e 20 20 46 69  76 65 20 6d 69 6e 75 74  |ope.  Five minut|
00028710  65 73 20 6c 61 74 65 72  20 79 6f 75 20 61 72 65  |es later you are|
00028720  20 74 72 61 6e 73 70 6f  72 74 65 64 0a 61 77 61  | transported.awa|
00028730  79 20 77 69 74 68 6f 75  74 20 77 61 72 6e 69 6e  |y without warnin|
00028740  67 20 74 6f 20 61 20 73  75 62 6d 61 72 69 6e 65  |g to a submarine|
00028750  2c 20 77 68 65 72 65 75  70 6f 6e 20 79 6f 75 20  |, whereupon you |
00028760  6e 65 65 64 20 61 20 70  65 72 69 73 63 6f 70 65  |need a periscope|
00028770  2e 20 20 49 66 20 79 6f  75 0a 62 6f 75 67 68 74  |.  If you.bought|
00028780  20 74 68 65 20 63 61 72  70 65 74 2c 20 62 61 64  | the carpet, bad|
00028790  20 6c 75 63 6b 2e 0a 0a  20 20 20 20 35 2e 20 20  | luck...    5.  |
000287a0  4e 6f 74 20 74 6f 20 68  61 76 65 20 74 68 65 20  |Not to have the |
000287b0  67 61 6d 65 20 63 6c 6f  73 65 64 20 6f 66 66 20  |game closed off |
000287c0  77 69 74 68 6f 75 74 20  77 61 72 6e 69 6e 67 0a  |without warning.|
000287d0  0a 20 20 43 6c 6f 73 65  64 20 6f 66 66 20 6d 65  |.  Closed off me|
000287e0  61 6e 69 6e 67 20 74 68  61 74 20 69 74 20 77 6f  |aning that it wo|
000287f0  75 6c 64 20 62 65 63 6f  6d 65 20 69 6d 70 6f 73  |uld become impos|
00028800  73 69 62 6c 65 20 74 6f  20 70 72 6f 63 65 65 64  |sible to proceed|
00028810  20 61 74 20 73 6f 6d 65  0a 6c 61 74 65 72 20 64  | at some.later d|
00028820  61 74 65 2e 20 20 49 66  20 74 68 65 72 65 20 69  |ate.  If there i|
00028830  73 20 61 20 70 61 70 69  65 72 2d 6d 61 63 68 65  |s a papier-mache|
00028840  20 77 61 6c 6c 20 77 68  69 63 68 20 79 6f 75 20  | wall which you |
00028850  63 61 6e 20 77 61 6c 6b  20 74 68 72 6f 75 67 68  |can walk through|
00028860  20 61 74 0a 74 68 65 20  76 65 72 79 20 62 65 67  | at.the very beg|
00028870  69 6e 6e 69 6e 67 20 6f  66 20 74 68 65 20 67 61  |inning of the ga|
00028880  6d 65 2c 20 69 74 20 69  73 20 65 78 74 72 65 6d  |me, it is extrem|
00028890  65 6c 79 20 61 6e 6e 6f  79 69 6e 67 20 74 6f 20  |ely annoying to |
000288a0  66 69 6e 64 20 74 68 61  74 20 61 0a 70 75 7a 7a  |find that a.puzz|
000288b0  6c 65 20 61 74 20 74 68  65 20 76 65 72 79 20 65  |le at the very e|
000288c0  6e 64 20 72 65 71 75 69  72 65 73 20 69 74 20 74  |nd requires it t|
000288d0  6f 20 73 74 69 6c 6c 20  62 65 20 69 6e 74 61 63  |o still be intac|
000288e0  74 2c 20 62 65 63 61 75  73 65 20 65 76 65 72 79  |t, because every|
000288f0  20 6f 6e 65 20 6f 66 0a  79 6f 75 72 20 73 61 76  | one of.your sav|
00028900  65 64 20 67 61 6d 65 73  20 77 69 6c 6c 20 62 65  |ed games will be|
00028910  20 75 73 65 6c 65 73 73  2e 20 20 53 69 6d 69 6c  | useless.  Simil|
00028920  61 72 6c 79 20 69 74 20  69 73 20 71 75 69 74 65  |arly it is quite|
00028930  20 63 6f 6d 6d 6f 6e 20  74 6f 20 68 61 76 65 20  | common to have |
00028940  61 0a 72 6f 6f 6d 20 77  68 69 63 68 20 63 61 6e  |a.room which can|
00028950  20 6f 6e 6c 79 20 62 65  20 76 69 73 69 74 65 64  | only be visited|
00028960  20 6f 6e 63 65 20 70 65  72 20 67 61 6d 65 2e 20  | once per game. |
00028970  20 49 66 20 74 68 65 72  65 20 61 72 65 20 74 77  | If there are tw|
00028980  6f 20 64 69 66 66 65 72  65 6e 74 0a 74 68 69 6e  |o different.thin|
00028990  67 73 20 74 6f 20 62 65  20 61 63 63 6f 6d 70 6c  |gs to be accompl|
000289a0  69 73 68 65 64 20 74 68  65 72 65 2c 20 74 68 69  |ished there, thi|
000289b0  73 20 73 68 6f 75 6c 64  20 62 65 20 68 69 6e 74  |s should be hint|
000289c0  65 64 20 61 74 2e 0a 0a  20 20 49 6e 20 6f 74 68  |ed at...  In oth|
000289d0  65 72 20 77 6f 72 64 73  2c 20 61 6e 20 69 72 72  |er words, an irr|
000289e0  65 76 6f 63 61 62 6c 65  20 61 63 74 20 69 73 20  |evocable act is |
000289f0  6f 6e 6c 79 20 66 61 69  72 20 69 66 20 74 68 65  |only fair if the|
00028a00  20 70 6c 61 79 65 72 20  69 73 20 67 69 76 65 6e  | player is given|
00028a10  0a 64 75 65 20 77 61 72  6e 69 6e 67 20 74 68 61  |.due warning tha|
00028a20  74 20 69 74 20 77 6f 75  6c 64 20 62 65 20 69 72  |t it would be ir|
00028a30  72 65 76 6f 63 61 62 6c  65 2e 0a 0a 20 20 20 20  |revocable...    |
00028a40  36 2e 20 20 4e 6f 74 20  74 6f 20 6e 65 65 64 20  |6.  Not to need |
00028a50  74 6f 20 64 6f 20 75 6e  6c 69 6b 65 6c 79 20 74  |to do unlikely t|
00028a60  68 69 6e 67 73 0a 0a 20  20 46 6f 72 20 65 78 61  |hings..  For exa|
00028a70  6d 70 6c 65 2c 20 61 20  67 61 6d 65 20 77 68 69  |mple, a game whi|
00028a80  63 68 20 64 65 70 65 6e  64 73 20 6f 6e 20 61 73  |ch depends on as|
00028a90  6b 69 6e 67 20 61 20 70  6f 6c 69 63 65 6d 61 6e  |king a policeman|
00028aa0  20 61 62 6f 75 74 20 73  6f 6d 65 74 68 69 6e 67  | about something|
00028ab0  20 68 65 0a 63 6f 75 6c  64 20 6e 6f 74 20 72 65  | he.could not re|
00028ac0  61 73 6f 6e 61 62 6c 79  20 6b 6e 6f 77 20 61 62  |asonably know ab|
00028ad0  6f 75 74 2e 20 20 28 4c  65 73 73 20 65 78 74 72  |out.  (Less extr|
00028ae0  65 6d 65 6c 79 2c 20 74  68 65 20 70 72 6f 62 6c  |emely, the probl|
00028af0  65 6d 20 6f 66 20 74 68  65 0a 68 61 63 6b 65 72  |em of the.hacker|
00028b00  27 73 20 6b 65 79 73 20  69 6e 20 22 54 68 65 20  |'s keys in "The |
00028b10  4c 75 72 6b 69 6e 67 20  48 6f 72 72 6f 72 22 2e  |Lurking Horror".|
00028b20  29 20 20 41 6e 6f 74 68  65 72 20 75 6e 6c 69 6b  |)  Another unlik|
00028b30  65 6c 79 20 74 68 69 6e  67 20 69 73 20 77 61 69  |ely thing is wai|
00028b40  74 69 6e 67 0a 69 6e 20  64 75 6c 6c 20 70 6c 61  |ting.in dull pla|
00028b50  63 65 73 2e 20 20 49 66  20 79 6f 75 20 68 61 76  |ces.  If you hav|
00028b60  65 20 61 20 6a 75 6e 63  74 69 6f 6e 20 61 74 20  |e a junction at |
00028b70  77 68 69 63 68 20 61 66  74 65 72 20 66 69 76 65  |which after five|
00028b80  20 74 75 72 6e 73 20 61  6e 20 65 6c 66 0a 74 75  | turns an elf.tu|
00028b90  72 6e 73 20 75 70 20 62  65 61 72 69 6e 67 20 61  |rns up bearing a|
00028ba0  20 6d 61 67 69 63 20 72  69 6e 67 2c 20 61 20 70  | magic ring, a p|
00028bb0  6c 61 79 65 72 20 6d 61  79 20 77 65 6c 6c 20 6e  |layer may well n|
00028bc0  65 76 65 72 20 73 70 65  6e 64 20 66 69 76 65 0a  |ever spend five.|
00028bd0  63 6f 6e 73 65 63 75 74  69 76 65 20 74 75 72 6e  |consecutive turn|
00028be0  73 20 74 68 65 72 65 20  61 6e 64 20 77 69 6c 6c  |s there and will|
00028bf0  20 6d 69 73 73 20 77 68  61 74 20 79 6f 75 20 69  | miss what you i|
00028c00  6e 74 65 6e 64 65 64 20  74 6f 20 62 65 20 65 61  |ntended to be ea|
00028c10  73 79 2e 20 20 28 22 5a  6f 72 6b 0a 49 49 49 22  |sy.  ("Zork.III"|
00028c20  20 69 73 20 76 65 72 79  20 6d 75 63 68 20 61 20  | is very much a |
00028c30  63 61 73 65 20 69 6e 20  70 6f 69 6e 74 2e 29 20  |case in point.) |
00028c40  20 49 66 20 79 6f 75 20  77 61 6e 74 20 74 68 65  | If you want the|
00028c50  20 70 6c 61 79 65 72 20  74 6f 20 73 74 61 79 0a  | player to stay.|
00028c60  73 6f 6d 65 77 68 65 72  65 20 66 6f 72 20 61 20  |somewhere for a |
00028c70  77 68 69 6c 65 2c 20 70  75 74 20 73 6f 6d 65 74  |while, put somet|
00028c80  68 69 6e 67 20 69 6e 74  72 69 67 75 69 6e 67 20  |hing intriguing |
00028c90  74 68 65 72 65 2e 0a 0a  20 20 20 20 37 2e 20 20  |there...    7.  |
00028ca0  4e 6f 74 20 74 6f 20 6e  65 65 64 20 74 6f 20 64  |Not to need to d|
00028cb0  6f 20 62 6f 72 69 6e 67  20 74 68 69 6e 67 73 20  |o boring things |
00028cc0  66 6f 72 20 74 68 65 20  73 61 6b 65 20 6f 66 20  |for the sake of |
00028cd0  69 74 0a 0a 20 20 49 6e  20 74 68 65 20 62 61 64  |it..  In the bad|
00028ce0  20 6f 6c 64 20 64 61 79  73 20 6d 61 6e 79 20 67  | old days many g|
00028cf0  61 6d 65 73 20 77 6f 75  6c 64 20 6d 61 6b 65 20  |ames would make |
00028d00  6c 69 66 65 20 64 69 66  66 69 63 75 6c 74 20 62  |life difficult b|
00028d10  79 20 70 75 74 74 69 6e  67 0a 6f 62 6a 65 63 74  |y putting.object|
00028d20  73 20 6e 65 65 64 65 64  20 74 6f 20 73 6f 6c 76  |s needed to solv|
00028d30  65 20 61 20 70 72 6f 62  6c 65 6d 20 6d 69 6c 65  |e a problem mile|
00028d40  73 20 61 77 61 79 20 66  72 6f 6d 20 77 68 65 72  |s away from wher|
00028d50  65 20 74 68 65 20 70 72  6f 62 6c 65 6d 20 77 61  |e the problem wa|
00028d60  73 2c 0a 64 65 73 70 69  74 65 20 61 6c 6c 20 6c  |s,.despite all l|
00028d70  6f 67 69 63 20 2d 20 73  61 79 2c 20 70 75 74 74  |ogic - say, putt|
00028d80  69 6e 67 20 61 20 62 6f  61 74 20 69 6e 20 74 68  |ing a boat in th|
00028d90  65 20 6d 69 64 64 6c 65  20 6f 66 20 61 20 64 65  |e middle of a de|
00028da0  73 65 72 74 2e 20 20 4f  72 2c 20 66 6f 72 0a 65  |sert.  Or, for.e|
00028db0  78 61 6d 70 6c 65 2c 20  61 20 66 6f 75 72 2d 64  |xample, a four-d|
00028dc0  69 73 63 73 20 74 6f 77  65 72 20 6f 66 20 48 61  |iscs tower of Ha|
00028dd0  6e 6f 69 20 70 75 7a 7a  6c 65 20 6d 69 67 68 74  |noi puzzle might|
00028de0  20 65 6e 74 65 72 74 61  69 6e 2e 20 20 42 75 74  | entertain.  But|
00028df0  20 6e 6f 74 20 61 6e 0a  65 69 67 68 74 2d 64 69  | not an.eight-di|
00028e00  73 63 73 20 6f 6e 65 2e  20 20 41 6e 64 20 74 68  |scs one.  And th|
00028e10  65 20 74 77 6f 20 6d 6f  73 74 20 68 61 63 6b 6e  |e two most hackn|
00028e20  65 79 65 64 20 70 75 7a  7a 6c 65 73 20 2d 20 6f  |eyed puzzles - o|
00028e30  6e 6c 79 20 62 65 69 6e  67 20 61 62 6c 65 20 74  |nly being able t|
00028e40  6f 0a 63 61 72 72 79 20  66 6f 75 72 20 69 74 65  |o.carry four ite|
00028e50  6d 73 2c 20 61 6e 64 20  66 75 6d 62 6c 69 6e 67  |ms, and fumbling|
00028e60  20 77 69 74 68 20 61 20  72 75 63 6b 73 61 63 6b  | with a rucksack|
00028e70  2c 20 6f 72 20 68 61 76  69 6e 67 20 74 6f 20 6b  |, or having to k|
00028e80  65 65 70 20 66 69 6e 64  69 6e 67 0a 6e 65 77 20  |eep finding.new |
00028e90  6c 69 67 68 74 20 73 6f  75 72 63 65 73 20 2d 20  |light sources - |
00028ea0  63 61 6e 20 77 65 61 72  20 61 20 70 6c 61 79 65  |can wear a playe|
00028eb0  72 27 73 20 70 61 74 69  65 6e 63 65 20 64 6f 77  |r's patience dow|
00028ec0  6e 20 76 65 72 79 20 71  75 69 63 6b 6c 79 2e 0a  |n very quickly..|
00028ed0  0a 20 20 20 20 38 2e 20  20 4e 6f 74 20 74 6f 20  |.    8.  Not to |
00028ee0  68 61 76 65 20 74 6f 20  74 79 70 65 20 65 78 61  |have to type exa|
00028ef0  63 74 6c 79 20 74 68 65  20 72 69 67 68 74 20 76  |ctly the right v|
00028f00  65 72 62 0a 0a 20 20 46  6f 72 20 69 6e 73 74 61  |erb..  For insta|
00028f10  6e 63 65 2c 20 22 6c 6f  6f 6b 69 6e 67 20 69 6e  |nce, "looking in|
00028f20  73 69 64 65 22 20 61 20  62 6f 78 20 66 69 6e 64  |side" a box find|
00028f30  73 20 6e 6f 74 68 69 6e  67 2c 20 62 75 74 20 22  |s nothing, but "|
00028f40  73 65 61 72 63 68 69 6e  67 22 20 69 74 0a 64 6f  |searching" it.do|
00028f50  65 73 2e 20 20 4f 72 20  63 6f 6e 73 69 64 65 72  |es.  Or consider|
00028f60  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 64  | the following d|
00028f70  69 61 6c 6f 67 75 65 20  28 61 6d 61 7a 69 6e 67  |ialogue (amazing|
00028f80  6c 79 2c 20 66 72 6f 6d  20 22 53 6f 72 63 65 72  |ly, from "Sorcer|
00028f90  65 72 22 29 3a 0a 0a 20  20 20 20 3e 75 6e 6c 6f  |er"):..    >unlo|
00028fa0  63 6b 20 6a 6f 75 72 6e  61 6c 0a 20 20 20 20 28  |ck journal.    (|
00028fb0  77 69 74 68 20 74 68 65  20 73 6d 61 6c 6c 20 6b  |with the small k|
00028fc0  65 79 29 0a 20 20 20 20  4e 6f 20 73 70 65 6c 6c  |ey).    No spell|
00028fd0  20 77 6f 75 6c 64 20 68  65 6c 70 20 77 69 74 68  | would help with|
00028fe0  20 74 68 61 74 21 0a 0a  20 20 20 20 3e 6f 70 65  | that!..    >ope|
00028ff0  6e 20 6a 6f 75 72 6e 61  6c 0a 20 20 20 20 28 77  |n journal.    (w|
00029000  69 74 68 20 74 68 65 20  73 6d 61 6c 6c 20 6b 65  |ith the small ke|
00029010  79 29 0a 20 20 20 20 54  68 65 20 6a 6f 75 72 6e  |y).    The journ|
00029020  61 6c 20 73 70 72 69 6e  67 73 20 6f 70 65 6e 2e  |al springs open.|
00029030  0a 0a 54 68 69 73 20 69  73 20 73 6f 20 6d 69 73  |..This is so mis|
00029040  6c 65 61 64 69 6e 67 20  61 73 20 74 6f 20 63 6f  |leading as to co|
00029050  6e 73 74 69 74 75 74 65  20 61 20 62 75 67 2e 20  |nstitute a bug. |
00029060  20 42 75 74 20 69 74 27  73 20 61 6e 20 65 61 73  | But it's an eas|
00029070  79 20 64 65 73 69 67 6e  20 66 61 75 6c 74 0a 74  |y design fault.t|
00029080  6f 20 66 61 6c 6c 20 69  6e 74 6f 2e 20 20 28 53  |o fall into.  (S|
00029090  69 6d 69 6c 61 72 6c 79  2c 20 74 68 65 20 77 6f  |imilarly, the wo|
000290a0  72 64 69 6e 67 20 6e 65  65 64 65 64 20 74 6f 20  |rding needed to |
000290b0  75 73 65 20 74 68 65 20  62 72 69 63 6b 20 69 6e  |use the brick in|
000290c0  20 22 5a 6f 72 6b 20 49  49 22 0a 73 74 72 69 6b  | "Zork II".strik|
000290d0  65 73 20 6d 65 20 61 73  20 71 75 69 74 65 20 75  |es me as quite u|
000290e0  6e 66 61 69 72 2e 20 20  4f 72 20 70 65 72 68 61  |nfair.  Or perha|
000290f0  70 73 20 49 20 6d 69 73  73 65 64 20 73 6f 6d 65  |ps I missed some|
00029100  74 68 69 6e 67 20 6f 62  76 69 6f 75 73 2e 29 20  |thing obvious.) |
00029110  20 43 6f 6e 73 69 64 65  72 0a 68 6f 77 20 6d 61  | Consider.how ma|
00029120  6e 79 20 77 61 79 73 20  61 20 70 6c 61 79 65 72  |ny ways a player|
00029130  20 63 61 6e 2c 20 66 6f  72 20 69 6e 73 74 61 6e  | can, for instan|
00029140  63 65 2c 20 61 73 6b 20  74 6f 20 74 61 6b 65 20  |ce, ask to take |
00029150  61 20 63 6f 61 74 20 6f  66 66 3a 0a 0a 20 20 20  |a coat off:..   |
00029160  20 72 65 6d 6f 76 65 20  63 6f 61 74 20 2f 20 74  | remove coat / t|
00029170  61 6b 65 20 63 6f 61 74  20 6f 66 66 20 2f 20 74  |ake coat off / t|
00029180  61 6b 65 20 6f 66 66 20  63 6f 61 74 20 2f 20 64  |ake off coat / d|
00029190  69 73 72 6f 62 65 20 63  6f 61 74 0a 20 20 20 20  |isrobe coat.    |
000291a0  64 6f 66 66 20 63 6f 61  74 2f a0 73 68 65 64 20  |doff coat/.shed |
000291b0  63 6f 61 74 0a 0a 28 42  65 6c 69 65 76 65 20 69  |coat..(Believe i|
000291c0  74 20 6f 72 20 6e 6f 74  2c 20 70 6c 61 79 2d 74  |t or not, play-t|
000291d0  65 73 74 65 72 73 20 68  61 76 65 20 61 73 6b 65  |esters have aske|
000291e0  64 20 6d 65 20 74 6f 20  69 6d 70 6c 65 6d 65 6e  |d me to implemen|
000291f0  74 20 22 64 6f 6e 22 20  61 6e 64 0a 22 64 6f 66  |t "don" and."dof|
00029200  66 22 2e 29 20 20 4e 6f  75 6e 73 20 61 6c 73 6f  |f".)  Nouns also|
00029210  20 6e 65 65 64 2e 2e 2e  0a 0a 20 20 20 20 39 2e  | need.....    9.|
00029220  20 20 54 6f 20 62 65 20  61 6c 6c 6f 77 65 64 20  |  To be allowed |
00029230  72 65 61 73 6f 6e 61 62  6c 65 20 73 79 6e 6f 6e  |reasonable synon|
00029240  79 6d 73 0a 0a 20 20 49  6e 20 74 68 65 20 73 61  |yms..  In the sa|
00029250  6d 65 20 72 6f 6f 6d 20  69 6e 20 22 53 6f 72 63  |me room in "Sorc|
00029260  65 72 65 72 22 20 69 73  20 61 20 22 77 6f 76 65  |erer" is a "wove|
00029270  6e 20 77 61 6c 6c 20 68  61 6e 67 69 6e 67 22 20  |n wall hanging" |
00029280  77 68 69 63 68 20 63 61  6e 20 69 6e 73 74 65 61  |which can instea|
00029290  64 0a 62 65 20 63 61 6c  6c 65 64 20 22 74 61 70  |d.be called "tap|
000292a0  65 73 74 72 79 22 20 28  74 68 6f 75 67 68 20 6e  |estry" (though n|
000292b0  6f 74 20 22 63 75 72 74  61 69 6e 22 29 2e 20 20  |ot "curtain").  |
000292c0  54 68 69 73 20 69 73 20  6e 6f 74 20 61 20 6c 75  |This is not a lu|
000292d0  78 75 72 79 2c 20 69 74  27 73 20 61 6e 0a 65 73  |xury, it's an.es|
000292e0  73 65 6e 74 69 61 6c 2e  20 20 46 6f 72 20 69 6e  |sential.  For in|
000292f0  73 74 61 6e 63 65 2c 20  69 6e 20 22 54 72 69 6e  |stance, in "Trin|
00029300  69 74 79 22 20 74 68 65  72 65 20 69 73 20 61 20  |ity" there is a |
00029310  63 68 61 72 6d 69 6e 67  20 73 74 61 74 75 65 20  |charming statue |
00029320  6f 66 20 61 0a 63 61 72  65 66 72 65 65 20 6c 69  |of a.carefree li|
00029330  74 74 6c 65 20 62 6f 79  20 70 6c 61 79 69 6e 67  |ttle boy playing|
00029340  20 61 20 73 65 74 20 6f  66 20 70 61 6e 20 70 69  | a set of pan pi|
00029350  70 65 73 2e 20 20 54 68  69 73 20 63 61 6e 20 62  |pes.  This can b|
00029360  65 20 63 61 6c 6c 65 64  20 74 68 65 0a 22 63 68  |e called the."ch|
00029370  61 72 6d 69 6e 67 22 20  6f 72 20 22 70 65 74 65  |arming" or "pete|
00029380  72 22 20 22 73 74 61 74  75 65 22 20 22 73 63 75  |r" "statue" "scu|
00029390  6c 70 74 75 72 65 22 20  22 70 61 6e 22 20 22 62  |lpture" "pan" "b|
000293a0  6f 79 22 20 22 70 69 70  65 22 20 6f 72 20 22 70  |oy" "pipe" or "p|
000293b0  69 70 65 73 22 2e 0a 41  6e 64 20 6f 62 6a 65 63  |ipes"..And objec|
000293c0  74 73 20 6f 66 74 65 6e  20 68 61 76 65 20 6d 6f  |ts often have mo|
000293d0  72 65 20 74 68 61 6e 20  31 30 20 6e 6f 75 6e 73  |re than 10 nouns|
000293e0  20 61 74 74 61 63 68 65  64 2e 0a 0a 20 20 20 20  | attached...    |
000293f0  31 30 2e 20 20 54 6f 20  68 61 76 65 20 61 20 64  |10.  To have a d|
00029400  65 63 65 6e 74 20 70 61  72 73 65 72 0a 0a 20 20  |ecent parser..  |
00029410  49 66 20 6f 6e 6c 79 20  74 68 69 73 20 77 65 6e  |If only this wen|
00029420  74 20 77 69 74 68 6f 75  74 20 73 61 79 69 6e 67  |t without saying|
00029430  2e 20 20 41 74 20 74 68  65 20 76 65 72 79 20 6c  |.  At the very l|
00029440  65 61 73 74 20 69 74 20  73 68 6f 75 6c 64 20 70  |east it should p|
00029450  72 6f 76 69 64 65 20 66  6f 72 0a 74 61 6b 69 6e  |rovide for.takin|
00029460  67 20 61 6e 64 20 64 72  6f 70 70 69 6e 67 20 6d  |g and dropping m|
00029470  75 6c 74 69 70 6c 65 20  6f 62 6a 65 63 74 73 2e  |ultiple objects.|
00029480  20 20 53 6f 6d 65 20 73  75 67 67 65 73 74 69 6f  |  Some suggestio|
00029490  6e 73 20 66 6f 72 20 61  20 64 65 63 65 6e 74 0a  |ns for a decent.|
000294a0  73 70 65 63 69 66 69 63  61 74 69 6f 6e 20 61 72  |specification ar|
000294b0  65 20 67 69 76 65 6e 20  69 6e 20 41 70 70 65 6e  |e given in Appen|
000294c0  64 69 78 20 42 35 2e 0a  0a 0a 20 20 53 69 6e 63  |dix B5....  Sinc|
000294d0  65 20 6f 6e 6c 79 20 47  6f 64 20 73 74 6f 70 73  |e only God stops|
000294e0  20 77 69 74 68 20 74 65  6e 20 63 6f 6d 6d 61 6e  | with ten comman|
000294f0  64 6d 65 6e 74 73 2c 20  68 65 72 65 20 61 72 65  |dments, here are|
00029500  20 73 65 76 65 6e 20 6d  6f 72 65 2e 20 20 54 68  | seven more.  Th|
00029510  65 73 65 0a 61 72 65 20  72 61 74 68 65 72 20 6d  |ese.are rather m|
00029520  6f 72 65 20 6d 61 74 74  65 72 73 20 6f 66 20 6f  |ore matters of o|
00029530  70 69 6e 69 6f 6e 3a 0a  0a 20 20 20 20 31 31 2e  |pinion:..    11.|
00029540  20 20 54 6f 20 68 61 76  65 20 72 65 61 73 6f 6e  |  To have reason|
00029550  61 62 6c 65 20 66 72 65  65 64 6f 6d 20 6f 66 20  |able freedom of |
00029560  61 63 74 69 6f 6e 0a 0a  20 20 42 65 69 6e 67 20  |action..  Being |
00029570  6c 6f 63 6b 65 64 20 75  70 20 69 6e 20 61 20 6c  |locked up in a l|
00029580  6f 6e 67 20 73 65 71 75  65 6e 63 65 20 6f 66 20  |ong sequence of |
00029590  70 72 69 73 6f 6e 73 2c  20 77 69 74 68 20 6f 6e  |prisons, with on|
000295a0  6c 79 20 62 72 69 65 66  20 65 73 63 61 70 65 73  |ly brief escapes|
000295b0  0a 62 65 74 77 65 65 6e  20 74 68 65 6d 2c 20 69  |.between them, i|
000295c0  73 20 6e 6f 74 20 61 6c  6c 20 74 68 61 74 20 65  |s not all that e|
000295d0  6e 74 65 72 74 61 69 6e  69 6e 67 2e 20 20 41 66  |ntertaining.  Af|
000295e0  74 65 72 20 61 20 77 68  69 6c 65 20 74 68 65 20  |ter a while the |
000295f0  70 6c 61 79 65 72 20 62  65 67 69 6e 73 0a 74 6f  |player begins.to|
00029600  20 66 65 65 6c 20 74 68  61 74 20 74 68 65 20 64  | feel that the d|
00029610  65 73 69 67 6e 65 72 20  68 61 73 20 74 69 65 64  |esigner has tied|
00029620  20 68 69 6d 20 74 6f 20  61 20 63 68 61 69 72 20  | him to a chair |
00029630  69 6e 20 6f 72 64 65 72  20 74 6f 20 73 68 6f 75  |in order to shou|
00029640  74 20 74 68 65 20 70 6c  6f 74 0a 61 74 20 68 69  |t the plot.at hi|
00029650  6d 2e 20 20 54 68 69 73  20 69 73 20 70 61 72 74  |m.  This is part|
00029660  69 63 75 6c 61 72 6c 79  20 64 61 6e 67 65 72 6f  |icularly dangero|
00029670  75 73 20 66 6f 72 20 61  64 76 65 6e 74 75 72 65  |us for adventure|
00029680  20 67 61 6d 65 20 61 64  61 70 74 61 74 69 6f 6e  | game adaptation|
00029690  73 20 6f 66 0a 62 6f 6f  6b 73 20 28 61 6e 64 20  |s of.books (and |
000296a0  6d 6f 73 74 20 70 6c 61  79 65 72 73 20 77 6f 75  |most players wou|
000296b0  6c 64 20 61 67 72 65 65  20 74 68 61 74 20 74 68  |ld agree that th|
000296c0  65 20 4d 65 6c 62 6f 75  72 6e 65 20 48 6f 75 73  |e Melbourne Hous|
000296d0  65 20 61 64 76 65 6e 74  75 72 65 73 0a 62 61 73  |e adventures.bas|
000296e0  65 64 20 6f 6e 20 22 54  68 65 20 4c 6f 72 64 20  |ed on "The Lord |
000296f0  6f 66 20 74 68 65 20 52  69 6e 67 73 22 20 73 75  |of the Rings" su|
00029700  66 66 65 72 65 64 20 66  72 6f 6d 20 74 68 69 73  |ffered from this|
00029710  29 2e 0a 0a 20 20 20 20  31 32 2e 20 20 4e 6f 74  |)...    12.  Not|
00029720  20 74 6f 20 64 65 70 65  6e 64 20 6d 75 63 68 20  | to depend much |
00029730  6f 6e 20 6c 75 63 6b 0a  0a 20 20 53 6d 61 6c 6c  |on luck..  Small|
00029740  20 63 68 61 6e 63 65 20  76 61 72 69 61 74 69 6f  | chance variatio|
00029750  6e 73 20 61 64 64 20 74  6f 20 74 68 65 20 66 75  |ns add to the fu|
00029760  6e 2c 20 62 75 74 20 6f  6e 6c 79 20 73 6d 61 6c  |n, but only smal|
00029770  6c 20 6f 6e 65 73 2e 20  20 54 68 65 20 74 68 69  |l ones.  The thi|
00029780  65 66 20 69 6e 0a 22 5a  6f 72 6b 20 49 22 20 73  |ef in."Zork I" s|
00029790  65 65 6d 73 20 74 6f 20  6d 65 20 74 6f 20 62 65  |eems to me to be|
000297a0  20 6a 75 73 74 20 61 62  6f 75 74 20 72 69 67 68  | just about righ|
000297b0  74 20 69 6e 20 74 68 69  73 20 72 65 73 70 65 63  |t in this respec|
000297c0  74 2c 20 61 6e 64 20 73  69 6d 69 6c 61 72 6c 79  |t, and similarly|
000297d0  0a 74 68 65 20 73 70 69  6e 6e 69 6e 67 20 72 6f  |.the spinning ro|
000297e0  6f 6d 20 69 6e 20 22 5a  6f 72 6b 20 49 49 22 2e  |om in "Zork II".|
000297f0  20 20 42 75 74 20 61 20  74 65 6e 2d 74 6f 6e 20  |  But a ten-ton |
00029800  77 65 69 67 68 74 20 77  68 69 63 68 20 66 65 6c  |weight which fel|
00029810  6c 20 64 6f 77 6e 20 61  6e 64 0a 6b 69 6c 6c 65  |l down and.kille|
00029820  64 20 79 6f 75 20 61 74  20 61 20 63 65 72 74 61  |d you at a certa|
00029830  69 6e 20 70 6f 69 6e 74  20 69 6e 20 68 61 6c 66  |in point in half|
00029840  20 6f 66 20 61 6c 6c 20  67 61 6d 65 73 20 69 73  | of all games is|
00029850  20 6a 75 73 74 20 61 6e  6e 6f 79 69 6e 67 2e 0a  | just annoying..|
00029860  0a 20 20 54 68 65 72 65  20 69 73 20 6d 75 63 68  |.  There is much|
00029870  20 74 6f 20 62 65 20 73  61 69 64 20 66 6f 72 20  | to be said for |
00029880  76 61 72 79 69 6e 67 20  6d 65 73 73 61 67 65 73  |varying messages|
00029890  20 77 68 69 63 68 20 6f  63 63 75 72 20 76 65 72  | which occur ver|
000298a0  79 20 6f 66 74 65 6e 20  28 73 75 63 68 0a 61 73  |y often (such.as|
000298b0  2c 20 22 59 6f 75 20 63  6f 6e 73 75 6c 74 20 79  |, "You consult y|
000298c0  6f 75 72 20 73 70 65 6c  6c 20 62 6f 6f 6b 2e 22  |our spell book."|
000298d0  29 20 69 6e 20 61 20 66  61 69 72 6c 79 20 72 61  |) in a fairly ra|
000298e0  6e 64 6f 6d 20 77 61 79  2c 20 66 6f 72 20 76 61  |ndom way, for va|
000298f0  72 69 65 74 79 27 73 0a  6f 77 6e 20 73 61 6b 65  |riety's.own sake|
00029900  2e 0a 0a 20 20 20 20 31  33 2e 20 20 54 6f 20 62  |...    13.  To b|
00029910  65 20 61 62 6c 65 20 74  6f 20 75 6e 64 65 72 73  |e able to unders|
00029920  74 61 6e 64 20 61 20 70  72 6f 62 6c 65 6d 20 6f  |tand a problem o|
00029930  6e 63 65 20 69 74 20 69  73 20 73 6f 6c 76 65 64  |nce it is solved|
00029940  0a 0a 20 20 54 68 69 73  20 6d 61 79 20 73 6f 75  |..  This may sou|
00029950  6e 64 20 6f 64 64 2c 20  62 75 74 20 6d 61 6e 79  |nd odd, but many|
00029960  20 70 72 6f 62 6c 65 6d  73 20 61 72 65 20 73 6f  | problems are so|
00029970  6c 76 65 64 20 62 79 20  61 63 63 69 64 65 6e 74  |lved by accident|
00029980  20 6f 72 20 74 72 69 61  6c 20 61 6e 64 0a 65 72  | or trial and.er|
00029990  72 6f 72 2e 20 20 41 20  67 75 61 72 64 2d 70 6f  |ror.  A guard-po|
000299a0  73 74 20 77 68 69 63 68  20 63 61 6e 20 62 65 20  |st which can be |
000299b0  70 61 73 73 65 64 20 69  66 20 61 6e 64 20 6f 6e  |passed if and on|
000299c0  6c 79 20 69 66 20 79 6f  75 20 61 72 65 20 63 61  |ly if you are ca|
000299d0  72 72 79 69 6e 67 20 61  0a 73 70 65 61 72 2c 20  |rrying a.spear, |
000299e0  66 6f 72 20 69 6e 73 74  61 6e 63 65 2c 20 6f 75  |for instance, ou|
000299f0  67 68 74 20 74 6f 20 69  6e 64 69 63 61 74 65 20  |ght to indicate |
00029a00  73 6f 6d 65 68 6f 77 20  74 68 61 74 20 74 68 69  |somehow that thi|
00029a10  73 20 69 73 20 77 68 79  20 79 6f 75 27 72 65 0a  |s is why you're.|
00029a20  61 6c 6c 6f 77 65 64 20  70 61 73 74 2e 20 20 28  |allowed past.  (|
00029a30  54 68 65 20 6d 6f 73 74  20 65 78 74 72 65 6d 65  |The most extreme|
00029a40  20 65 78 61 6d 70 6c 65  20 6d 75 73 74 20 62 65  | example must be|
00029a50  20 74 68 65 20 6e 6f 74  6f 72 69 6f 75 73 20 42  | the notorious B|
00029a60  61 6e 6b 20 6f 66 0a 5a  6f 72 6b 2c 20 6f 66 20  |ank of.Zork, of |
00029a70  77 68 69 63 68 20 49 27  76 65 20 6e 65 76 65 72  |which I've never|
00029a80  20 65 76 65 6e 20 75 6e  64 65 72 73 74 6f 6f 64  | even understood|
00029a90  20 6f 74 68 65 72 20 70  65 6f 70 6c 65 27 73 20  | other people's |
00029aa0  65 78 70 6c 61 6e 61 74  69 6f 6e 73 2e 29 0a 0a  |explanations.)..|
00029ab0  20 20 20 20 31 34 2e 20  20 4e 6f 74 20 74 6f 20  |    14.  Not to |
00029ac0  62 65 20 67 69 76 65 6e  20 74 6f 6f 20 6d 61 6e  |be given too man|
00029ad0  79 20 72 65 64 20 68 65  72 72 69 6e 67 73 0a 0a  |y red herrings..|
00029ae0  20 20 41 20 66 65 77 20  72 65 64 20 68 65 72 72  |  A few red herr|
00029af0  69 6e 67 73 20 6d 61 6b  65 20 61 20 67 61 6d 65  |ings make a game|
00029b00  20 6d 6f 72 65 20 69 6e  74 65 72 65 73 74 69 6e  | more interestin|
00029b10  67 2e 20 20 41 20 76 65  72 79 20 6e 69 63 65 20  |g.  A very nice |
00029b20  66 65 61 74 75 72 65 20  6f 66 0a 22 5a 6f 72 6b  |feature of."Zork|
00029b30  20 49 22 2c 20 22 49 49  22 20 61 6e 64 20 22 49  | I", "II" and "I|
00029b40  49 49 22 20 69 73 20 74  68 61 74 20 74 68 65 79  |II" is that they|
00029b50  20 65 61 63 68 20 63 6f  6e 74 61 69 6e 20 72 65  | each contain re|
00029b60  64 20 68 65 72 72 69 6e  67 73 20 65 78 70 6c 61  |d herrings expla|
00029b70  69 6e 65 64 20 69 6e 0a  74 68 65 20 6f 74 68 65  |ined in.the othe|
00029b80  72 73 20 28 69 6e 20 6f  6e 65 20 63 61 73 65 2c  |rs (in one case,|
00029b90  20 65 78 70 6c 61 69 6e  65 64 20 69 6e 20 22 53  | explained in "S|
00029ba0  6f 72 63 65 72 65 72 22  29 2e 20 20 42 75 74 20  |orcerer").  But |
00029bb0  64 69 66 66 69 63 75 6c  74 20 70 75 7a 7a 6c 65  |difficult puzzle|
00029bc0  73 0a 74 65 6e 64 20 74  6f 20 62 65 20 73 6f 6c  |s.tend to be sol|
00029bd0  76 65 64 20 6c 61 73 74  2c 20 61 6e 64 20 74 68  |ved last, and th|
00029be0  65 20 6d 61 69 6e 20 74  65 63 68 6e 69 71 75 65  |e main technique|
00029bf0  20 70 6c 61 79 65 72 73  20 75 73 65 20 69 73 20  | players use is |
00029c00  74 6f 20 6c 6f 6f 6b 20  61 74 0a 74 68 65 69 72  |to look at.their|
00029c10  20 6d 61 70 73 20 61 6e  64 20 73 65 65 20 77 68  | maps and see wh|
00029c20  61 74 27 73 20 6c 65 66  74 20 74 68 61 74 20 74  |at's left that t|
00029c30  68 65 79 20 64 6f 6e 27  74 20 75 6e 64 65 72 73  |hey don't unders|
00029c40  74 61 6e 64 2e 20 20 54  68 69 73 20 69 73 0a 66  |tand.  This is.f|
00029c50  72 75 73 74 72 61 74 69  6e 67 20 77 68 65 6e 20  |rustrating when |
00029c60  74 68 65 72 65 20 61 72  65 20 6d 61 6e 79 20 69  |there are many i|
00029c70  6e 73 6f 6c 75 62 6c 65  20 70 75 7a 7a 6c 65 73  |nsoluble puzzles|
00029c80  20 61 6e 64 20 75 73 65  6c 65 73 73 20 6f 62 6a  | and useless obj|
00029c90  65 63 74 73 2e 20 20 53  6f 0a 79 6f 75 20 63 61  |ects.  So.you ca|
00029ca0  6e 20 65 78 70 65 63 74  20 70 6c 61 79 65 72 73  |n expect players|
00029cb0  20 74 6f 20 6c 6f 73 65  20 69 6e 74 65 72 65 73  | to lose interes|
00029cc0  74 20 69 66 20 79 6f 75  20 61 72 65 6e 27 74 20  |t if you aren't |
00029cd0  63 61 72 65 66 75 6c 2e  20 20 4d 79 20 70 65 72  |careful.  My per|
00029ce0  73 6f 6e 61 6c 0a 76 69  65 77 20 69 73 20 74 68  |sonal.view is th|
00029cf0  61 74 20 72 65 64 20 68  65 72 72 69 6e 67 73 20  |at red herrings |
00029d00  6f 75 67 68 74 20 74 6f  20 62 65 20 63 6c 75 65  |ought to be clue|
00029d10  64 3a 20 66 6f 72 20 69  6e 73 74 61 6e 63 65 2c  |d: for instance,|
00029d20  20 69 66 20 74 68 65 72  65 20 69 73 20 61 0a 75  | if there is a.u|
00029d30  73 65 6c 65 73 73 20 63  6f 63 6f 6e 75 74 20 6e  |seless coconut n|
00029d40  65 61 72 20 74 68 65 20  62 65 67 69 6e 6e 69 6e  |ear the beginnin|
00029d50  67 2c 20 74 68 65 6e 20  70 65 72 68 61 70 73 20  |g, then perhaps |
00029d60  6d 75 63 68 20 6c 61 74  65 72 20 61 6e 20 61 62  |much later an ab|
00029d70  73 65 6e 74 2d 6d 69 6e  64 65 64 0a 62 6f 74 61  |sent-minded.bota|
00029d80  6e 69 73 74 20 63 6f 75  6c 64 20 62 65 20 66 6f  |nist could be fo|
00029d90  75 6e 64 20 77 68 6f 20  77 61 6e 64 65 72 65 64  |und who wandered|
00029da0  20 61 62 6f 75 74 20 64  72 6f 70 70 69 6e 67 20  | about dropping |
00029db0  74 68 65 6d 2e 20 20 54  68 65 20 63 6f 63 6f 6e  |them.  The cocon|
00029dc0  75 74 0a 73 68 6f 75 6c  64 20 61 74 20 6c 65 61  |ut.should at lea|
00029dd0  73 74 20 68 61 76 65 20  73 6f 6d 65 20 72 61 74  |st have some rat|
00029de0  69 6f 6e 61 6c 65 2e 0a  0a 20 20 41 6e 20 6f 62  |ionale...  An ob|
00029df0  6a 65 63 74 20 69 73 20  6e 6f 74 20 61 20 72 65  |ject is not a re|
00029e00  64 20 68 65 72 72 69 6e  67 20 6d 65 72 65 6c 79  |d herring merely|
00029e10  20 62 65 63 61 75 73 65  20 69 74 20 68 61 73 20  | because it has |
00029e20  6e 6f 20 67 61 6d 65 20  66 75 6e 63 74 69 6f 6e  |no game function|
00029e30  3a 20 61 0a 75 73 65 6c  65 73 73 20 6e 65 77 73  |: a.useless news|
00029e40  70 61 70 65 72 20 63 6f  75 6c 64 20 71 75 69 74  |paper could quit|
00029e50  65 20 66 61 69 72 6c 79  20 62 65 20 66 6f 75 6e  |e fairly be foun|
00029e60  64 20 69 6e 20 61 20 6c  69 62 72 61 72 79 2e 20  |d in a library. |
00029e70  20 42 75 74 20 6e 6f 74  20 61 0a 6b 61 6c 65 69  | But not a.kalei|
00029e80  64 6f 73 63 6f 70 65 2e  0a 0a 20 20 54 68 65 20  |doscope...  The |
00029e90  76 65 72 79 20 77 6f 72  73 74 20 67 61 6d 65 20  |very worst game |
00029ea0  49 27 76 65 20 70 6c 61  79 65 64 20 66 6f 72 20  |I've played for |
00029eb0  72 65 64 20 68 65 72 72  69 6e 67 73 20 69 73 20  |red herrings is |
00029ec0  22 53 6f 72 63 65 72 65  72 22 2c 20 77 68 69 63  |"Sorcerer", whic|
00029ed0  68 20 62 79 0a 6d 79 20  72 65 63 6b 6f 6e 69 6e  |h by.my reckonin|
00029ee0  67 20 68 61 73 20 31 30  2e 0a 0a 20 20 20 20 31  |g has 10...    1|
00029ef0  35 2e 20 20 54 6f 20 68  61 76 65 20 61 20 67 6f  |5.  To have a go|
00029f00  6f 64 20 72 65 61 73 6f  6e 20 77 68 79 20 73 6f  |od reason why so|
00029f10  6d 65 74 68 69 6e 67 20  69 73 20 69 6d 70 6f 73  |mething is impos|
00029f20  73 69 62 6c 65 0a 0a 20  20 55 6e 6c 65 73 73 20  |sible..  Unless |
00029f30  69 74 27 73 20 61 6c 73  6f 20 66 75 6e 6e 79 2c  |it's also funny,|
00029f40  20 61 20 76 65 72 79 20  63 6f 6e 74 72 69 76 65  | a very contrive|
00029f50  64 20 72 65 61 73 6f 6e  20 77 68 79 20 73 6f 6d  |d reason why som|
00029f60  65 74 68 69 6e 67 20 69  73 0a 69 6d 70 6f 73 73  |ething is.imposs|
00029f70  69 62 6c 65 20 6a 75 73  74 20 69 72 72 69 74 61  |ible just irrita|
00029f80  74 65 73 2e 20 20 28 54  68 65 20 72 65 61 73 6f  |tes.  (The reaso|
00029f90  6e 20 6f 6e 65 20 63 61  6e 27 74 20 77 61 6c 6b  |n one can't walk|
00029fa0  20 6f 6e 20 74 68 65 20  67 72 61 73 73 20 69 6e  | on the grass in|
00029fb0  0a 22 54 72 69 6e 69 74  79 22 20 69 73 20 6f 6e  |."Trinity" is on|
00029fc0  6c 79 20 6a 75 73 74 20  66 75 6e 6e 79 20 65 6e  |ly just funny en|
00029fd0  6f 75 67 68 2c 20 49 20  74 68 69 6e 6b 2e 29 0a  |ough, I think.).|
00029fe0  0a 20 20 4d 6f 72 61 6c  20 6f 62 6a 65 63 74 69  |.  Moral objecti|
00029ff0  6f 6e 73 2c 20 74 68 6f  75 67 68 2c 20 61 72 65  |ons, though, are|
0002a000  20 66 61 69 72 2e 20 20  46 6f 72 20 69 6e 73 74  | fair.  For inst|
0002a010  61 6e 63 65 2c 20 69 66  20 79 6f 75 20 61 72 65  |ance, if you are|
0002a020  20 73 74 61 79 69 6e 67  20 69 6e 0a 79 6f 75 72  | staying in.your|
0002a030  20 62 65 73 74 20 66 72  69 65 6e 64 27 73 20 68  | best friend's h|
0002a040  6f 75 73 65 2c 20 77 68  65 72 65 20 74 68 65 72  |ouse, where ther|
0002a050  65 20 69 73 20 61 20 64  69 61 6d 6f 6e 64 20 69  |e is a diamond i|
0002a060  6e 20 61 20 64 69 73 70  6c 61 79 20 63 61 73 65  |n a display case|
0002a070  2c 0a 73 6d 61 73 68 69  6e 67 20 74 68 65 20 63  |,.smashing the c|
0002a080  61 73 65 20 61 6e 64 20  74 61 6b 69 6e 67 20 74  |ase and taking t|
0002a090  68 65 20 64 69 61 6d 6f  6e 64 20 77 6f 75 6c 64  |he diamond would|
0002a0a0  20 62 65 20 70 68 79 73  69 63 61 6c 6c 79 20 65  | be physically e|
0002a0b0  61 73 79 20 62 75 74 20  71 75 69 74 65 0a 6f 75  |asy but quite.ou|
0002a0c0  74 20 6f 66 20 63 68 61  72 61 63 74 65 72 2e 20  |t of character. |
0002a0d0  20 4d 72 20 53 70 6f 63  6b 20 63 61 6e 20 63 65  | Mr Spock can ce|
0002a0e0  72 74 61 69 6e 6c 79 20  62 65 20 64 69 73 61 6c  |rtainly be disal|
0002a0f0  6c 6f 77 65 64 20 66 72  6f 6d 20 73 68 6f 6f 74  |lowed from shoot|
0002a100  69 6e 67 0a 43 61 70 74  61 69 6e 20 4b 69 72 6b  |ing.Captain Kirk|
0002a110  20 69 6e 20 74 68 65 20  62 61 63 6b 2e 0a 0a 20  | in the back... |
0002a120  20 20 20 31 36 2e 20 20  4e 6f 74 20 74 6f 20 6e  |   16.  Not to n|
0002a130  65 65 64 20 74 6f 20 62  65 20 41 6d 65 72 69 63  |eed to be Americ|
0002a140  61 6e 20 20 20 20 28 2a  29 0a 0a 20 20 54 68 65  |an    (*)..  The|
0002a150  20 64 69 61 6d 6f 6e 64  20 6d 61 7a 65 20 69 6e  | diamond maze in|
0002a160  20 22 5a 6f 72 6b 20 49  49 22 20 62 65 69 6e 67  | "Zork II" being|
0002a170  20 61 20 63 61 73 65 20  69 6e 20 70 6f 69 6e 74  | a case in point|
0002a180  2e 20 20 53 69 6d 69 6c  61 72 6c 79 2c 20 69 74  |.  Similarly, it|
0002a190  27 73 0a 70 6f 6c 69 74  65 20 74 6f 20 61 6c 6c  |'s.polite to all|
0002a1a0  6f 77 20 74 68 65 20 70  6c 61 79 65 72 20 74 6f  |ow the player to|
0002a1b0  20 74 79 70 65 20 45 6e  67 6c 69 73 68 20 6f 72  | type English or|
0002a1c0  20 41 6d 65 72 69 63 61  6e 20 73 70 65 6c 6c 69  | American spelli|
0002a1d0  6e 67 73 20 6f 72 20 69  64 69 6f 6d 2e 20 0a 46  |ngs or idiom. .F|
0002a1e0  6f 72 20 69 6e 73 74 61  6e 63 65 20 22 54 72 69  |or instance "Tri|
0002a1f0  6e 69 74 79 22 20 65 6e  64 65 61 72 73 20 69 74  |nity" endears it|
0002a200  73 65 6c 66 20 74 6f 20  45 6e 67 6c 69 73 68 20  |self to English |
0002a210  70 6c 61 79 65 72 73 20  69 6e 20 74 68 61 74 20  |players in that |
0002a220  74 68 65 20 73 6f 63 63  65 72 0a 62 61 6c 6c 20  |the soccer.ball |
0002a230  63 61 6e 20 62 65 20 63  61 6c 6c 65 64 20 22 66  |can be called "f|
0002a240  6f 6f 74 62 61 6c 6c 22  20 2d 20 73 6f 63 63 65  |ootball" - socce|
0002a250  72 20 69 73 20 61 20 77  6f 72 64 20 61 6c 6d 6f  |r is a word almo|
0002a260  73 74 20 6e 65 76 65 72  20 75 73 65 64 20 69 6e  |st never used in|
0002a270  0a 45 6e 67 6c 61 6e 64  2e 0a 0a 20 20 20 20 31  |.England...    1|
0002a280  37 2e 20 20 54 6f 20 6b  6e 6f 77 20 68 6f 77 20  |7.  To know how |
0002a290  74 68 65 20 67 61 6d 65  20 69 73 20 67 65 74 74  |the game is gett|
0002a2a0  69 6e 67 20 6f 6e 0a 0a  20 20 49 6e 20 6f 74 68  |ing on..  In oth|
0002a2b0  65 72 20 77 6f 72 64 73  2c 20 77 68 65 6e 20 74  |er words, when t|
0002a2c0  68 65 20 65 6e 64 20 69  73 20 61 70 70 72 6f 61  |he end is approa|
0002a2d0  63 68 69 6e 67 2c 20 6f  72 20 68 6f 77 20 74 68  |ching, or how th|
0002a2e0  65 20 70 6c 6f 74 20 69  73 0a 64 65 76 65 6c 6f  |e plot is.develo|
0002a2f0  70 69 6e 67 2e 20 20 4f  6e 63 65 20 75 70 6f 6e  |ping.  Once upon|
0002a300  20 61 20 74 69 6d 65 2c  20 73 63 6f 72 65 20 77  | a time, score w|
0002a310  61 73 20 74 68 65 20 6f  6e 6c 79 20 6d 65 61 73  |as the only meas|
0002a320  75 72 65 20 6f 66 20 74  68 69 73 2c 20 62 75 74  |ure of this, but|
0002a330  0a 68 6f 70 65 66 75 6c  6c 79 20 6e 6f 74 20 61  |.hopefully not a|
0002a340  6e 79 20 6d 6f 72 65 2e  0a 0a 0a 28 2a 29 20 53  |ny more....(*) S|
0002a350  65 76 65 72 61 6c 20 70  65 6f 70 6c 65 20 68 61  |everal people ha|
0002a360  76 65 20 70 6f 6c 69 74  65 6c 79 20 70 6f 69 6e  |ve politely poin|
0002a370  74 65 64 20 6f 75 74 20  74 6f 20 6d 65 20 74 68  |ted out to me th|
0002a380  61 74 20 6d 79 20 6f 77  6e 20 67 61 6d 65 0a 20  |at my own game. |
0002a390  20 20 20 22 43 75 72 73  65 73 22 20 69 73 2c 20  |   "Curses" is, |
0002a3a0  73 68 61 6c 6c 20 77 65  20 73 61 79 2c 20 73 6c  |shall we say, sl|
0002a3b0  69 67 68 74 6c 79 20 45  6e 67 6c 69 73 68 2e 20  |ightly English. |
0002a3c0  20 42 75 74 20 74 68 65  6e 2c 20 6c 69 6b 65 20  | But then, like |
0002a3d0  61 6e 79 0a 20 20 20 20  67 6f 6f 64 20 64 69 63  |any.    good dic|
0002a3e0  74 61 74 6f 72 2c 20 49  20 70 72 65 66 65 72 20  |tator, I prefer |
0002a3f0  64 72 61 66 74 69 6e 67  20 63 6f 6e 73 74 69 74  |drafting constit|
0002a400  75 74 69 6f 6e 73 20 74  6f 20 61 62 69 64 69 6e  |utions to abidin|
0002a410  67 20 62 79 20 74 68 65  6d 2e 0a 0a 0a 2d 2d 2d  |g by them....---|
0002a420  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0002a460  2d 2d 2d 2d 2d 2d 2d 2d  0a 42 32 2e 20 20 41 20  |--------.B2.  A |
0002a470  6e 61 72 72 61 74 69 76  65 2e 2e 2e 0a 2d 2d 2d  |narrative....---|
0002a480  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0002a4c0  2d 2d 2d 2d 2d 2d 2d 2d  0a 0a 0a 20 20 20 20 20  |--------...     |
0002a4d0  22 54 68 65 20 69 6e 69  74 69 61 6c 20 76 65 72  |"The initial ver|
0002a4e0  73 69 6f 6e 20 6f 66 20  74 68 65 20 67 61 6d 65  |sion of the game|
0002a4f0  20 77 61 73 20 64 65 73  69 67 6e 65 64 20 61 6e  | was designed an|
0002a500  64 0a 20 20 20 20 20 69  6d 70 6c 65 6d 65 6e 74  |d.     implement|
0002a510  65 64 20 69 6e 20 61 62  6f 75 74 20 74 77 6f 20  |ed in about two |
0002a520  77 65 65 6b 73 2e 22 0a  0a 20 20 20 20 20 20 20  |weeks."..       |
0002a530  20 20 20 28 50 2e 20 44  61 76 69 64 20 4c 65 62  |   (P. David Leb|
0002a540  6c 69 6e 67 2c 20 4d 61  72 63 20 53 2e 20 42 6c  |ling, Marc S. Bl|
0002a550  61 6e 6b 2c 20 54 69 6d  6f 74 68 79 20 41 2e 20  |ank, Timothy A. |
0002a560  41 6e 64 65 72 73 6f 6e  2c 0a 20 20 20 20 20 20  |Anderson,.      |
0002a570  20 20 20 20 20 22 5a 6f  72 6b 3a 20 41 20 43 6f  |     "Zork: A Co|
0002a580  6d 70 75 74 65 72 69 7a  65 64 20 46 61 6e 74 61  |mputerized Fanta|
0002a590  73 79 20 53 69 6d 75 6c  61 74 69 6f 6e 20 47 61  |sy Simulation Ga|
0002a5a0  6d 65 22 29 0a 0a 20 20  20 20 20 22 49 74 20 77  |me")..     "It w|
0002a5b0  61 73 20 73 74 61 72 74  65 64 20 69 6e 20 4d 61  |as started in Ma|
0002a5c0  79 20 6f 66 20 27 38 35  20 61 6e 64 20 66 69 6e  |y of '85 and fin|
0002a5d0  69 73 68 65 64 20 69 6e  20 4a 75 6e 65 20 27 38  |ished in June '8|
0002a5e0  36 2e 22 0a 0a 20 20 20  20 20 20 20 20 20 20 28  |6."..          (|
0002a5f0  42 72 69 61 6e 20 4d 6f  72 69 61 72 74 79 20 6f  |Brian Moriarty o|
0002a600  6e 20 22 54 72 69 6e 69  74 79 22 3a 20 77 68 69  |n "Trinity": whi|
0002a610  63 68 20 63 61 6d 65 20  66 72 6f 6d 20 65 61 72  |ch came from ear|
0002a620  6c 69 65 72 0a 20 20 20  20 20 20 20 20 20 20 20  |lier.           |
0002a630  69 64 65 61 73 20 79 65  74 29 0a 0a 0a 31 2e 20  |ideas yet)...1. |
0002a640  20 47 65 6e 72 65 20 61  6e 64 20 47 65 74 74 69  | Genre and Getti|
0002a650  6e 67 20 53 74 61 72 74  65 64 0a 2d 2d 2d 2d 2d  |ng Started.-----|
0002a660  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0002a670  2d 2d 2d 2d 2d 2d 2d 2d  0a 0a 54 68 65 20 64 61  |--------..The da|
0002a680  79 73 20 6f 66 20 67 61  6d 65 73 20 77 68 69 63  |ys of games whic|
0002a690  68 20 63 6f 6e 73 69 73  74 65 64 20 6f 66 20 77  |h consisted of w|
0002a6a0  61 6e 64 65 72 69 6e 67  20 61 72 6f 75 6e 64 20  |andering around |
0002a6b0  64 6f 69 6e 67 20 75 6e  72 65 6c 61 74 65 64 20  |doing unrelated |
0002a6c0  74 68 69 6e 67 73 0a 74  6f 20 67 65 74 20 74 72  |things.to get tr|
0002a6d0  65 61 73 75 72 65 73 2c  20 61 72 65 20 6c 6f 6e  |easures, are lon|
0002a6e0  67 20 70 61 73 73 65 64  2c 20 69 66 20 74 68 65  |g passed, if the|
0002a6f0  79 20 65 76 65 72 20 77  65 72 65 2e 20 20 45 76  |y ever were.  Ev|
0002a700  65 6e 20 74 68 65 20 74  77 6f 20 6f 72 69 67 69  |en the two origi|
0002a710  6e 61 6c 73 2c 0a 43 72  6f 77 74 68 65 72 20 61  |nals,.Crowther a|
0002a720  6e 64 20 57 6f 6f 64 27  73 20 22 41 64 76 65 6e  |nd Wood's "Adven|
0002a730  74 75 72 65 22 20 28 73  6f 6d 65 74 69 6d 65 73  |ture" (sometimes|
0002a740  20 63 61 6c 6c 65 64 20  22 43 6f 6c 6f 73 73 61  | called "Colossa|
0002a750  6c 20 43 61 76 65 22 29  20 61 6e 64 20 74 68 65  |l Cave") and the|
0002a760  0a 4d 49 54 20 67 72 6f  75 70 27 73 20 22 5a 6f  |.MIT group's "Zo|
0002a770  72 6b 22 2c 20 77 65 6e  74 20 74 6f 20 73 6f 6d  |rk", went to som|
0002a780  65 20 65 66 66 6f 72 74  20 74 6f 20 61 76 6f 69  |e effort to avoi|
0002a790  64 20 74 68 69 73 2e 0a  0a 54 68 65 69 72 20 6d  |d this...Their m|
0002a7a0  61 6e 79 20 69 6d 69 74  61 74 6f 72 73 2c 20 69  |any imitators, i|
0002a7b0  6e 20 74 68 65 20 65 61  72 6c 79 20 79 65 61 72  |n the early year|
0002a7c0  73 20 6f 66 20 73 6d 61  6c 6c 20 63 6f 6d 70 75  |s of small compu|
0002a7d0  74 65 72 73 2c 20 6f 66  74 65 6e 20 74 6f 6f 6b  |ters, often took|
0002a7e0  20 6e 6f 0a 73 75 63 68  20 74 72 6f 75 62 6c 65  | no.such trouble|
0002a7f0  2e 20 20 54 68 65 20 65  66 66 65 63 74 20 77 61  |.  The effect wa|
0002a800  73 20 61 6c 6d 6f 73 74  20 73 75 72 72 65 61 6c  |s almost surreal|
0002a810  2e 20 20 4f 6e 65 20 77  6f 75 6c 64 20 77 61 6c  |.  One would wal|
0002a820  6b 20 61 63 72 6f 73 73  20 74 68 65 0a 64 72 61  |k across the.dra|
0002a830  77 62 72 69 64 67 65 20  6f 66 20 61 20 6d 65 64  |wbridge of a med|
0002a840  69 65 76 61 6c 20 63 61  73 74 6c 65 20 61 6e 64  |ieval castle and|
0002a850  20 66 69 6e 64 20 61 20  70 6f 74 20 70 6c 61 6e  | find a pot plan|
0002a860  74 2c 20 61 20 76 61 74  20 6f 66 20 61 63 69 64  |t, a vat of acid|
0002a870  2c 20 61 20 63 6f 70 79  0a 6f 66 20 50 6c 61 79  |, a copy.of Play|
0002a880  62 6f 79 20 6d 61 67 61  7a 69 6e 65 20 61 6e 64  |boy magazine and|
0002a890  20 61 6e 20 65 6c 65 63  74 72 69 63 20 64 72 69  | an electric dri|
0002a8a0  6c 6c 2e 20 20 54 68 65  72 65 20 77 65 72 65 20  |ll.  There were |
0002a8b0  70 75 7a 7a 6c 65 73 20  77 69 74 68 6f 75 74 0a  |puzzles without.|
0002a8c0  72 68 79 6d 65 20 6f 72  20 72 65 61 73 6f 6e 2e  |rhyme or reason.|
0002a8d0  20 20 54 68 65 20 70 6c  61 79 65 72 20 77 61 73  |  The player was|
0002a8e0  20 61 20 63 68 61 72 61  63 74 65 72 6c 65 73 73  | a characterless|
0002a8f0  20 6d 61 67 70 69 65 20  61 6c 77 61 79 73 20 6f  | magpie always o|
0002a900  6e 20 74 68 65 0a 6c 6f  6f 6b 6f 75 74 20 66 6f  |n the.lookout fo|
0002a910  72 20 73 6f 6d 65 74 68  69 6e 67 20 63 75 74 65  |r something cute|
0002a920  20 74 6f 20 64 6f 2e 20  20 54 68 65 20 63 72 6f  | to do.  The cro|
0002a930  73 73 77 6f 72 64 20 68  61 64 20 77 6f 6e 20 77  |ssword had won w|
0002a940  69 74 68 6f 75 74 20 61  20 66 69 67 68 74 2e 0a  |ithout a fight..|
0002a950  0a 22 41 64 76 65 6e 74  75 72 65 22 2c 20 6f 6e  |."Adventure", on|
0002a960  65 20 6f 66 20 74 68 65  20 6d 6f 73 74 20 63 6f  |e of the most co|
0002a970  70 69 65 64 20 61 6e 64  20 62 6f 72 72 6f 77 65  |pied and borrowe|
0002a980  64 2d 66 72 6f 6d 20 67  61 6d 65 73 20 65 76 65  |d-from games eve|
0002a990  72 20 64 65 76 69 73 65  64 2c 0a 77 61 73 20 69  |r devised,.was i|
0002a9a0  6e 20 66 61 63 74 20 76  65 72 79 20 63 6c 65 61  |n fact very clea|
0002a9b0  6e 20 69 6e 20 74 68 69  73 20 72 65 73 70 65 63  |n in this respec|
0002a9c0  74 3a 20 61 74 20 69 74  73 20 62 65 73 74 20 69  |t: at its best i|
0002a9d0  74 20 68 61 64 20 61 6e  20 61 75 73 74 65 72 65  |t had an austere|
0002a9e0  2c 0a 54 6f 6c 6b 69 65  6e 65 73 71 75 65 20 66  |,.Tolkienesque f|
0002a9f0  65 65 6c 2c 20 69 6e 20  77 68 69 63 68 20 6d 61  |eel, in which ma|
0002aa00  67 69 63 20 77 61 73 20  73 63 61 72 63 65 2c 20  |gic was scarce, |
0002aa10  61 6e 64 20 69 74 73 20  61 74 6d 6f 73 70 68 65  |and its atmosphe|
0002aa20  72 65 20 61 6e 64 0a 67  65 6f 67 72 61 70 68 79  |re and.geography|
0002aa30  20 77 61 73 20 77 65 6c  6c 2d 6a 75 64 67 65 64  | was well-judged|
0002aa40  2c 20 65 73 70 65 63 69  61 6c 6c 79 20 61 72 6f  |, especially aro|
0002aa50  75 6e 64 20 74 68 65 20  65 64 67 65 73 20 6f 66  |und the edges of|
0002aa60  20 74 68 65 20 6d 61 70  3a 0a 74 68 65 20 6f 75  | the map:.the ou|
0002aa70  74 73 69 64 65 20 66 6f  72 65 73 74 73 20 61 6e  |tside forests an|
0002aa80  64 20 67 75 6c 6c 69 65  73 2c 20 74 68 65 20 65  |d gullies, the e|
0002aa90  61 72 6c 79 20 72 75 62  62 6c 65 2d 73 74 72 65  |arly rubble-stre|
0002aaa0  77 6e 20 63 61 76 65 73  2c 20 74 68 65 20 4f 72  |wn caves, the Or|
0002aab0  61 6e 67 65 0a 52 69 76  65 72 20 52 6f 63 6b 20  |ange.River Rock |
0002aac0  72 6f 6f 6d 20 61 6e 64  20 74 68 65 20 72 69 6d  |room and the rim|
0002aad0  20 6f 66 20 74 68 65 20  76 6f 6c 63 61 6e 6f 2e  | of the volcano.|
0002aae0  20 20 4b 6e 69 66 65 2d  74 68 72 6f 77 69 6e 67  |  Knife-throwing|
0002aaf0  20 64 77 61 72 76 65 73  0a 77 6f 75 6c 64 20 61  | dwarves.would a|
0002ab00  70 70 65 61 72 20 66 72  6f 6d 20 74 69 6d 65 20  |ppear from time |
0002ab10  74 6f 20 74 69 6d 65 2e  20 20 42 75 74 20 6a 6f  |to time.  But jo|
0002ab20  6b 79 20 74 6f 77 6e 20  63 6f 75 6e 63 69 6c 20  |ky town council |
0002ab30  6f 66 66 69 63 65 72 73  20 77 69 74 68 0a 63 6c  |officers with.cl|
0002ab40  69 70 62 6f 61 72 64 73  20 6e 65 76 65 72 20 77  |ipboards never w|
0002ab50  6f 75 6c 64 2e 20 20 22  5a 6f 72 6b 22 20 77 61  |ould.  "Zork" wa|
0002ab60  73 20 63 6f 6e 64 65 6e  73 65 64 2c 20 6c 65 73  |s condensed, les|
0002ab70  73 20 73 70 61 63 69 6f  75 73 20 61 6e 64 20 6e  |s spacious and n|
0002ab80  65 76 65 72 0a 71 75 69  74 65 20 73 6f 20 63 6f  |ever.quite so co|
0002ab90  6e 73 69 73 74 65 6e 74  20 69 6e 20 73 74 79 6c  |nsistent in styl|
0002aba0  65 3a 20 6d 61 63 68 69  6e 65 73 20 77 69 74 68  |e: machines with|
0002abb0  20 62 75 74 74 6f 6e 73  20 6c 61 79 20 73 69 64  | buttons lay sid|
0002abc0  65 20 62 79 20 73 69 64  65 20 77 69 74 68 0a 74  |e by side with.t|
0002abd0  72 6f 6c 6c 73 20 61 6e  64 20 76 61 6d 70 69 72  |rolls and vampir|
0002abe0  65 20 62 61 74 73 2e 20  20 49 74 20 77 61 73 20  |e bats.  It was |
0002abf0  61 20 73 75 70 65 72 62  20 69 6d 70 6c 65 6d 65  |a superb impleme|
0002ac00  6e 74 61 74 69 6f 6e 2c  20 69 6e 20 61 6c 6d 6f  |ntation, in almo|
0002ac10  73 74 20 65 76 65 72 79  0a 72 65 73 70 65 63 74  |st every.respect|
0002ac20  20 6e 69 63 65 72 20 74  68 61 6e 20 22 41 64 76  | nicer than "Adv|
0002ac30  65 6e 74 75 72 65 22 3a  20 79 65 74 20 22 41 64  |enture": yet "Ad|
0002ac40  76 65 6e 74 75 72 65 22  20 72 65 6d 61 69 6e 73  |venture" remains|
0002ac50  20 74 68 65 20 62 65 74  74 65 72 20 67 61 6d 65  | the better game|
0002ac60  2e 0a 0a 42 79 20 74 68  65 20 31 39 38 30 73 20  |...By the 1980s |
0002ac70  62 65 74 74 65 72 20 67  61 6d 65 73 20 68 61 64  |better games had|
0002ac80  20 73 65 74 74 6c 65 64  20 74 68 65 20 70 6f 69  | settled the poi|
0002ac90  6e 74 2e 20 20 41 6e 79  20 70 6c 61 79 65 72 20  |nt.  Any player |
0002aca0  64 75 6d 70 65 64 20 69  6e 20 74 68 65 0a 6d 69  |dumped in the.mi|
0002acb0  64 64 6c 65 20 6f 66 20  6f 6e 65 20 6f 66 20 22  |ddle of one of "|
0002acc0  54 68 65 20 4c 75 72 6b  69 6e 67 20 48 6f 72 72  |The Lurking Horr|
0002acd0  6f 72 22 20 28 48 2e 20  50 2e 20 4c 6f 76 65 63  |or" (H. P. Lovec|
0002ace0  72 61 66 74 20 68 6f 72  72 6f 72 29 2c 20 22 4c  |raft horror), "L|
0002acf0  65 61 74 68 65 72 0a 47  6f 64 64 65 73 73 65 73  |eather.Goddesses|
0002ad00  20 6f 66 20 50 68 6f 62  6f 73 22 20 28 33 30 73  | of Phobos" (30s|
0002ad10  20 72 61 63 79 20 73 70  61 63 65 20 6f 70 65 72  | racy space oper|
0002ad20  61 29 20 6f 72 20 22 42  61 6c 6c 79 68 6f 6f 22  |a) or "Ballyhoo"|
0002ad30  20 28 6d 6f 75 72 6e 66  75 6c 6c 79 0a 63 79 6e  | (mournfully.cyn|
0002ad40  69 63 61 6c 20 63 69 72  63 75 73 20 6d 79 73 74  |ical circus myst|
0002ad50  65 72 79 29 20 77 6f 75  6c 64 20 69 6d 6d 65 64  |ery) would immed|
0002ad60  69 61 74 65 6c 79 20 62  65 20 61 62 6c 65 20 74  |iately be able t|
0002ad70  6f 20 73 61 79 20 77 68  69 63 68 20 69 74 20 77  |o say which it w|
0002ad80  61 73 2e 0a 0a 49 66 20  74 68 65 72 65 20 69 73  |as...If there is|
0002ad90  20 61 20 6d 6f 72 61 6c  20 68 65 72 65 2c 20 69  | a moral here, i|
0002ada0  74 20 69 73 20 74 68 61  74 20 74 68 65 20 65 73  |t is that the es|
0002adb0  73 65 6e 74 69 61 6c 20  66 6c 61 76 6f 75 72 20  |sential flavour |
0002adc0  74 68 61 74 20 6d 61 6b  65 73 20 79 6f 75 72 0a  |that makes your.|
0002add0  67 61 6d 65 20 64 69 73  74 69 6e 63 74 69 76 65  |game distinctive|
0002ade0  20 61 6e 64 20 79 6f 75  72 73 20 69 73 20 67 65  | and yours is ge|
0002adf0  6e 72 65 2e 20 20 41 6e  64 20 73 6f 20 74 68 65  |nre.  And so the|
0002ae00  20 66 69 72 73 74 20 64  65 63 69 73 69 6f 6e 20  | first decision |
0002ae10  74 6f 20 62 65 20 6d 61  64 65 2c 0a 77 68 65 6e  |to be made,.when|
0002ae20  20 62 65 67 69 6e 6e 69  6e 67 20 61 20 64 65 73  | beginning a des|
0002ae30  69 67 6e 2c 20 69 73 20  74 68 65 20 73 74 79 6c  |ign, is the styl|
0002ae40  65 20 6f 66 20 74 68 65  20 67 61 6d 65 2e 20 20  |e of the game.  |
0002ae50  4d 61 6a 6f 72 20 6f 72  20 6d 69 6e 6f 72 20 6b  |Major or minor k|
0002ae60  65 79 2c 0a 62 61 73 69  63 61 6c 6c 79 20 63 68  |ey,.basically ch|
0002ae70  65 65 72 66 75 6c 20 6f  72 20 6e 69 67 68 74 6d  |eerful or nightm|
0002ae80  61 72 69 73 68 2c 20 6f  72 20 73 6f 6d 65 77 68  |arish, or somewh|
0002ae90  65 72 65 20 69 6e 20 62  65 74 77 65 65 6e 3f 20  |ere in between? |
0002aea0  20 45 78 70 6c 6f 72 61  74 69 6f 6e 2c 0a 72 6f  | Exploration,.ro|
0002aeb0  6d 61 6e 63 65 2c 20 6d  79 73 74 65 72 79 2c 20  |mance, mystery, |
0002aec0  68 69 73 74 6f 72 69 63  61 6c 20 72 65 63 6f 6e  |historical recon|
0002aed0  73 74 72 75 63 74 69 6f  6e 2c 20 61 64 61 70 74  |struction, adapt|
0002aee0  61 74 69 6f 6e 20 6f 66  20 61 20 62 6f 6f 6b 2c  |ation of a book,|
0002aef0  20 66 69 6c 6d 0a 6e 6f  69 72 2c 20 68 6f 72 72  | film.noir, horr|
0002af00  6f 72 3f 20 20 49 6e 20  74 68 65 20 73 74 79 6c  |or?  In the styl|
0002af10  65 20 6f 66 20 54 65 72  72 79 20 50 72 61 74 63  |e of Terry Pratc|
0002af20  68 65 74 74 2c 20 45 64  67 61 72 20 41 6c 6c 65  |hett, Edgar Alle|
0002af30  6e 20 50 6f 65 2c 20 54  68 6f 6d 61 73 0a 48 61  |n Poe, Thomas.Ha|
0002af40  72 64 79 2c 20 50 68 69  6c 69 70 20 4b 2e 20 44  |rdy, Philip K. D|
0002af50  69 63 6b 3f 20 20 49 63  65 6c 61 6e 64 69 63 2c  |ick?  Icelandic,|
0002af60  20 47 72 65 65 6b 2c 20  43 68 61 75 63 65 72 69  | Greek, Chauceri|
0002af70  61 6e 2c 20 48 6f 70 69  20 49 6e 64 69 61 6e 2c  |an, Hopi Indian,|
0002af80  20 41 7a 74 65 63 2c 0a  41 75 73 74 72 61 6c 69  | Aztec,.Australi|
0002af90  61 6e 20 6d 79 74 68 3f  0a 0a 41 20 77 6f 72 64  |an myth?..A word|
0002afa0  20 6f 66 20 77 61 72 6e  69 6e 67 20 61 62 6f 75  | of warning abou|
0002afb0  74 20 61 64 61 70 74 69  6e 67 20 62 6f 6f 6b 73  |t adapting books|
0002afc0  3a 20 72 65 6d 65 6d 62  65 72 20 63 6f 70 79 72  |: remember copyr|
0002afd0  69 67 68 74 2c 20 77 68  69 63 68 20 68 61 73 0a  |ight, which has.|
0002afe0  62 72 6f 61 64 65 72 20  69 6d 70 6c 69 63 61 74  |broader implicat|
0002aff0  69 6f 6e 73 20 74 68 61  6e 20 6d 61 6e 79 20 6e  |ions than many n|
0002b000  6f 6e 2d 61 75 74 68 6f  72 73 20 72 65 61 6c 69  |on-authors reali|
0002b010  73 65 2e 20 20 28 46 6f  72 20 69 6e 73 74 61 6e  |se.  (For instan|
0002b020  63 65 2c 20 66 61 6e 73  20 6f 66 0a 41 6e 6e 65  |ce, fans of.Anne|
0002b030  20 4d 63 43 61 66 66 72  65 79 27 73 20 22 64 72  | McCaffrey's "dr|
0002b040  61 67 6f 6e 22 20 73 65  72 69 65 73 20 6f 66 20  |agon" series of |
0002b050  6e 6f 76 65 6c 73 20 61  72 65 20 61 6c 6c 6f 77  |novels are allow|
0002b060  65 64 20 74 6f 20 70 6c  61 79 20 6e 65 74 77 6f  |ed to play netwo|
0002b070  72 6b 20 67 61 6d 65 73  0a 73 65 74 20 6f 6e 20  |rk games.set on |
0002b080  69 6d 61 67 69 6e 61 72  79 20 70 6c 61 6e 65 74  |imaginary planet|
0002b090  73 20 77 68 69 63 68 20  64 6f 20 6e 6f 74 20 61  |s which do not a|
0002b0a0  70 70 65 61 72 20 69 6e  20 4d 63 43 61 66 66 72  |ppear in McCaffr|
0002b0b0  65 79 27 73 20 77 6f 72  6b 73 2c 20 61 6e 64 20  |ey's works, and |
0002b0c0  74 6f 0a 61 64 6f 70 74  20 63 68 61 72 61 63 74  |to.adopt charact|
0002b0d0  65 72 73 20 6f 66 20 74  68 65 69 72 20 6f 77 6e  |ers of their own|
0002b0e0  20 69 6e 76 65 6e 74 69  6f 6e 2c 20 62 75 74 20  | invention, but |
0002b0f0  6e 6f 74 20 74 6f 20 75  73 65 20 6f 72 20 72 65  |not to use or re|
0002b100  66 65 72 20 74 6f 20 68  65 72 73 2e 20 0a 54 68  |fer to hers. .Th|
0002b110  69 73 20 69 73 20 61 20  72 65 6c 61 74 69 76 65  |is is a relative|
0002b120  6c 79 20 74 6f 6c 65 72  61 6e 74 20 70 6f 73 69  |ly tolerant posi|
0002b130  74 69 6f 6e 20 6f 6e 20  74 68 65 20 70 61 72 74  |tion on the part|
0002b140  20 6f 66 20 68 65 72 20  70 75 62 6c 69 73 68 65  | of her publishe|
0002b150  72 73 2e 29 20 20 41 6e  64 0a 65 76 65 6e 20 69  |rs.)  And.even i|
0002b160  66 20 6e 6f 20 6d 6f 6e  65 79 20 63 68 61 6e 67  |f no money chang|
0002b170  65 73 20 68 61 6e 64 73  2c 20 63 6f 70 79 72 69  |es hands, copyri|
0002b180  67 68 74 20 6c 61 77 20  69 73 20 65 6e 66 6f 72  |ght law is enfor|
0002b190  63 65 61 62 6c 65 2e 20  20 54 68 65 0a 71 75 6f  |ceable.  The.quo|
0002b1a0  74 61 74 69 6f 6e 73 20  66 72 6f 6d 20 67 61 6d  |tations from gam|
0002b1b0  65 73 20 69 6e 20 74 68  69 73 20 61 72 74 69 63  |es in this artic|
0002b1c0  6c 65 20 61 72 65 20 6c  65 67 61 6c 20 6f 6e 6c  |le are legal onl|
0002b1d0  79 20 62 65 63 61 75 73  65 20 62 72 69 65 66 20  |y because brief |
0002b1e0  65 78 63 65 72 70 74 73  0a 61 72 65 20 70 65 72  |excerpts.are per|
0002b1f0  6d 69 74 74 65 64 20 66  6f 72 20 63 72 69 74 69  |mitted for criti|
0002b200  63 61 6c 20 6f 72 20 72  65 76 69 65 77 20 70 75  |cal or review pu|
0002b210  72 70 6f 73 65 73 2e 20  20 41 6c 73 6f 2c 20 62  |rposes.  Also, b|
0002b220  65 20 61 77 61 72 65 20  74 68 61 74 20 61 20 64  |e aware that a d|
0002b230  69 72 65 63 74 0a 6c 69  6e 65 61 72 20 70 6c 6f  |irect.linear plo|
0002b240  74 20 69 73 20 76 65 72  79 20 68 61 72 64 20 74  |t is very hard t|
0002b250  6f 20 73 75 63 63 65 73  73 66 75 6c 6c 79 20 69  |o successfully i|
0002b260  6d 70 6c 65 6d 65 6e 74  20 69 6e 20 61 6e 20 61  |mplement in an a|
0002b270  64 76 65 6e 74 75 72 65  20 67 61 6d 65 2e 20 20  |dventure game.  |
0002b280  49 74 0a 77 69 6c 6c 20  62 65 20 74 6f 6f 20 6c  |It.will be too l|
0002b290  6f 6e 67 20 28 6a 75 73  74 20 61 73 20 61 20 6e  |ong (just as a n|
0002b2a0  6f 76 65 6c 20 69 73 20  6f 66 74 65 6e 20 74 6f  |ovel is often to|
0002b2b0  6f 20 6c 61 72 67 65 20  66 6f 72 20 61 20 66 69  |o large for a fi|
0002b2c0  6c 6d 2c 20 77 68 69 63  68 20 69 73 0a 6e 65 61  |lm, which is.nea|
0002b2d0  72 65 72 20 74 6f 20 61  20 6c 6f 6e 67 69 73 68  |rer to a longish|
0002b2e0  20 73 68 6f 72 74 20 73  74 6f 72 79 20 69 6e 20  | short story in |
0002b2f0  73 63 6f 70 65 29 20 61  6e 64 20 69 74 20 77 69  |scope) and it wi|
0002b300  6c 6c 20 69 6e 76 6f 6c  76 65 20 74 68 65 20 63  |ll involve the c|
0002b310  65 6e 74 72 61 6c 0a 63  68 61 72 61 63 74 65 72  |entral.character|
0002b320  20 6d 61 6b 69 6e 67 20  63 72 75 63 69 61 6c 20  | making crucial |
0002b330  61 6e 64 20 70 65 72 68  61 70 73 20 75 6e 6c 69  |and perhaps unli|
0002b340  6b 65 6c 79 20 64 65 63  69 73 69 6f 6e 73 20 61  |kely decisions a|
0002b350  74 20 74 68 65 20 72 69  67 68 74 20 6d 6f 6d 65  |t the right mome|
0002b360  6e 74 2e 0a 0a 49 66 20  74 68 65 20 63 68 6f 73  |nt...If the chos|
0002b370  65 6e 20 67 65 6e 72 65  20 69 73 6e 27 74 20 66  |en genre isn't f|
0002b380  72 65 73 68 20 61 6e 64  20 72 65 6c 61 74 69 76  |resh and relativ|
0002b390  65 6c 79 20 6e 65 77 2c  20 74 68 65 6e 20 74 68  |ely new, then th|
0002b3a0  65 20 67 61 6d 65 20 68  61 64 20 62 65 74 74 65  |e game had bette|
0002b3b0  72 0a 62 65 20 76 65 72  79 20 67 6f 6f 64 2e 20  |r.be very good. |
0002b3c0  20 49 74 27 73 20 61 20  66 61 74 65 66 75 6c 20  | It's a fateful |
0002b3d0  64 65 63 69 73 69 6f 6e  3a 20 74 68 65 20 6f 6e  |decision: the on|
0002b3e0  6c 79 20 69 72 72 65 76  65 72 73 69 62 6c 65 20  |ly irreversible |
0002b3f0  6f 6e 65 2e 0a 0a 0a 32  2e 20 20 52 65 73 65 61  |one....2.  Resea|
0002b400  72 63 68 0a 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |rch.------------|
0002b410  0a 0a 44 65 73 69 67 6e  20 75 73 75 61 6c 6c 79  |..Design usually|
0002b420  20 62 65 67 69 6e 73 20  77 69 74 68 2c 20 61 6e  | begins with, an|
0002b430  64 20 69 73 20 70 65 72  69 6f 64 69 63 61 6c 6c  |d is periodicall|
0002b440  79 20 69 6e 74 65 72 72  75 70 74 65 64 20 62 79  |y interrupted by|
0002b450  2c 20 72 65 73 65 61 72  63 68 2e 20 0a 54 68 69  |, research. .Thi|
0002b460  73 20 63 61 6e 20 62 65  20 74 68 65 20 6d 6f 73  |s can be the mos|
0002b470  74 20 65 6e 74 65 72 74  61 69 6e 69 6e 67 20 70  |t entertaining p|
0002b480  61 72 74 20 6f 66 20 74  68 65 20 70 72 6f 6a 65  |art of the proje|
0002b490  63 74 20 61 6e 64 20 69  73 20 63 65 72 74 61 69  |ct and is certai|
0002b4a0  6e 6c 79 20 74 68 65 0a  6d 6f 73 74 20 72 65 77  |nly the.most rew|
0002b4b0  61 72 64 69 6e 67 2c 20  6e 6f 74 20 73 6f 20 6d  |arding, not so m|
0002b4c0  75 63 68 20 62 65 63 61  75 73 65 20 61 62 73 6f  |uch because abso|
0002b4d0  6c 75 74 65 20 66 61 63  74 75 61 6c 20 61 63 63  |lute factual acc|
0002b4e0  75 72 61 63 79 20 69 73  20 69 6d 70 6f 72 74 61  |uracy is importa|
0002b4f0  6e 74 0a 62 75 74 20 62  65 63 61 75 73 65 20 69  |nt.but because i|
0002b500  74 20 63 6f 6e 74 69 6e  75 61 6c 6c 79 20 73 70  |t continually sp|
0002b510  61 72 6b 73 20 6f 66 66  20 69 64 65 61 73 2e 0a  |arks off ideas..|
0002b520  0a 45 76 65 6e 20 74 68  65 20 6f 72 69 67 69 6e  |.Even the origin|
0002b530  61 6c 20 41 64 76 65 6e  74 75 72 65 20 62 65 67  |al Adventure beg|
0002b540  61 6e 20 61 73 20 61 20  73 69 6d 75 6c 61 74 69  |an as a simulati|
0002b550  6f 6e 20 6f 66 20 61 20  72 65 61 6c 20 63 61 76  |on of a real cav|
0002b560  65 20 73 79 73 74 65 6d  0a 28 74 68 65 20 4d 61  |e system.(the Ma|
0002b570  6d 6d 6f 74 68 20 61 6e  64 20 46 6c 69 6e 74 20  |mmoth and Flint |
0002b580  52 69 64 67 65 20 63 61  76 65 73 29 3a 20 6f 6e  |Ridge caves): on|
0002b590  65 20 72 65 61 73 6f 6e  20 66 6f 72 20 74 68 65  |e reason for the|
0002b5a0  20 70 6c 61 75 73 69 62  69 6c 69 74 79 20 6f 66  | plausibility of|
0002b5b0  20 69 74 73 0a 75 6e 64  65 72 67 72 6f 75 6e 64  | its.underground|
0002b5c0  20 67 65 6f 67 72 61 70  68 79 2e 0a 0a 41 20 64  | geography...A d|
0002b5d0  65 63 65 6e 74 20 74 6f  77 6e 20 6c 69 62 72 61  |ecent town libra|
0002b5e0  72 79 2c 20 66 6f 72 20  69 6e 73 74 61 6e 63 65  |ry, for instance|
0002b5f0  2c 20 63 6f 6e 74 61 69  6e 73 20 74 68 6f 75 73  |, contains thous|
0002b600  61 6e 64 73 20 6f 66 20  6d 61 70 73 20 6f 66 20  |ands of maps of |
0002b610  6f 6e 65 20 6b 69 6e 64  0a 6f 72 20 61 6e 6f 74  |one kind.or anot|
0002b620  68 65 72 20 69 66 20 6f  6e 65 20 6b 6e 6f 77 73  |her if one knows|
0002b630  20 77 68 65 72 65 20 74  6f 20 6c 6f 6f 6b 3a 20  | where to look: |
0002b640  64 65 63 6b 20 70 6c 61  6e 73 20 6f 66 20 4e 61  |deck plans of Na|
0002b650  70 6f 6c 65 6f 6e 69 63  20 77 61 72 73 68 69 70  |poleonic warship|
0002b660  73 2c 0a 73 6d 61 6c 6c  2d 73 63 61 6c 65 20 63  |s,.small-scale c|
0002b670  6f 6e 74 6f 75 72 20 6d  61 70 73 20 6f 66 20 6d  |ontour maps of m|
0002b680  6f 75 6e 74 61 69 6e 20  70 61 73 73 65 73 2c 20  |ountain passes, |
0002b690  63 69 74 79 20 70 6c 61  6e 73 20 6f 66 20 4e 65  |city plans of Ne|
0002b6a0  77 20 59 6f 72 6b 20 61  6e 64 0a 61 6e 63 69 65  |w York and.ancie|
0002b6b0  6e 74 20 54 68 65 62 65  73 2c 20 74 68 65 20 6c  |nt Thebes, the l|
0002b6c0  61 79 6f 75 74 20 6f 66  20 74 68 65 20 55 2e 53  |ayout of the U.S|
0002b6d0  2e 20 43 6f 6e 67 72 65  73 73 2e 20 20 54 68 65  |. Congress.  The|
0002b6e0  72 65 20 77 69 6c 6c 20  62 65 20 70 68 6f 74 6f  |re will be photo|
0002b6f0  67 72 61 70 68 73 0a 6f  66 20 65 76 65 72 79 20  |graphs.of every |
0002b700  63 6f 6e 63 65 69 76 61  62 6c 65 20 6b 69 6e 64  |conceivable kind|
0002b710  20 6f 66 20 74 65 72 72  61 69 6e 2c 20 6f 66 20  | of terrain, of |
0002b720  6d 6f 73 74 20 73 70 65  63 69 65 73 20 6f 66 20  |most species of |
0002b730  61 6e 69 6d 61 6c 73 20  61 6e 64 20 70 6c 61 6e  |animals and plan|
0002b740  74 73 3b 0a 74 68 65 72  65 20 77 69 6c 6c 20 62  |ts;.there will b|
0002b750  65 20 63 75 74 61 77 61  79 20 64 72 61 77 69 6e  |e cutaway drawin|
0002b760  67 73 20 6f 66 20 61 20  37 34 37 20 61 69 72 6c  |gs of a 747 airl|
0002b770  69 6e 65 72 20 61 6e 64  20 61 20 64 6f 6d 65 73  |iner and a domes|
0002b780  74 69 63 20 66 72 69 64  67 65 3b 0a 73 68 65 6c  |tic fridge;.shel|
0002b790  76 65 73 20 66 75 6c 6c  20 6f 66 20 74 68 65 20  |ves full of the |
0002b7a0  63 6f 6c 6c 65 63 74 65  64 20 70 61 69 6e 74 69  |collected painti|
0002b7b0  6e 67 73 20 6f 66 20 65  76 65 72 79 20 67 72 65  |ngs of every gre|
0002b7c0  61 74 20 61 72 74 69 73  74 20 66 72 6f 6d 20 74  |at artist from t|
0002b7d0  68 65 0a 52 65 6e 61 69  73 73 61 6e 63 65 20 6f  |he.Renaissance o|
0002b7e0  6e 77 61 72 64 73 2e 20  20 44 61 74 61 20 69 73  |nwards.  Data is|
0002b7f0  20 61 76 61 69 6c 61 62  6c 65 20 6f 6e 20 74 68  | available on th|
0002b800  65 20 6d 65 6c 74 69 6e  67 20 70 6f 69 6e 74 20  |e melting point |
0002b810  6f 66 20 74 75 6e 67 73  74 65 6e 2c 0a 74 68 65  |of tungsten,.the|
0002b820  20 64 69 73 74 61 6e 63  65 73 20 61 6e 64 20 73  | distances and s|
0002b830  70 65 63 74 72 61 6c 20  74 79 70 65 73 20 6f 66  |pectral types of|
0002b840  20 74 68 65 20 6e 65 61  72 65 73 74 20 74 77 6f  | the nearest two|
0002b850  20 64 6f 7a 65 6e 20 73  74 61 72 73 2c 20 6a 6f  | dozen stars, jo|
0002b860  75 72 6e 65 79 0a 74 69  6d 65 73 20 62 79 20 72  |urney.times by r|
0002b870  61 69 6c 20 61 6e 64 20  72 6f 61 64 20 61 63 72  |ail and road acr|
0002b880  6f 73 73 20 46 72 61 6e  63 65 2e 0a 0a 48 69 73  |oss France...His|
0002b890  74 6f 72 79 20 63 72 6f  77 64 73 20 77 69 74 68  |tory crowds with|
0002b8a0  20 66 75 67 69 74 69 76  65 20 74 61 6c 65 73 2e  | fugitive tales.|
0002b8b0  20 20 41 20 62 6f 6f 6b  20 6f 6e 20 74 68 65 20  |  A book on the |
0002b8c0  68 69 73 74 6f 72 79 20  6f 66 20 74 72 61 64 65  |history of trade|
0002b8d0  20 77 69 74 68 0a 43 68  69 6e 61 20 6d 61 79 2c  | with.China may,|
0002b8e0  20 66 6f 72 20 69 6e 73  74 61 6e 63 65 2c 20 73  | for instance, s|
0002b8f0  61 79 3a 0a 0a 20 20 41  20 42 72 69 74 69 73 68  |ay:..  A British|
0002b900  20 6d 69 73 73 69 6f 6e  20 68 61 64 20 62 65 65  | mission had bee|
0002b910  6e 20 62 72 69 65 66 6c  79 20 69 6d 70 72 69 73  |n briefly impris|
0002b920  6f 6e 65 64 20 69 6e 20  74 68 65 20 77 61 6c 6c  |oned in the wall|
0002b930  65 64 20 63 69 74 79 0a  20 20 64 75 72 69 6e 67  |ed city.  during|
0002b940  20 4d 61 72 63 68 20 31  39 30 33 3a 20 77 68 65  | March 1903: whe|
0002b950  6e 20 73 75 70 70 6c 69  65 73 20 72 61 6e 20 6c  |n supplies ran l|
0002b960  6f 77 2c 20 61 20 4d 61  72 69 6e 65 20 6f 66 66  |ow, a Marine off|
0002b970  69 63 65 72 20 6c 65 64  20 61 0a 20 20 64 69 76  |icer led a.  div|
0002b980  65 72 73 69 6f 6e 61 72  79 20 62 72 65 61 6b 2d  |ersionary break-|
0002b990  6f 75 74 20 77 68 69 6c  65 20 74 68 65 20 6f 74  |out while the ot|
0002b9a0  68 65 72 73 20 65 73 63  61 70 65 64 20 74 6f 20  |hers escaped to |
0002b9b0  74 68 65 20 52 6f 79 61  6c 20 4e 61 76 79 0a 20  |the Royal Navy. |
0002b9c0  20 66 72 69 67 61 74 65  20 61 74 20 61 6e 63 68  | frigate at anch|
0002b9d0  6f 72 2c 20 61 66 74 65  72 20 68 69 64 69 6e 67  |or, after hiding|
0002b9e0  20 66 6f 72 20 74 77 6f  20 64 61 79 73 20 69 6e  | for two days in|
0002b9f0  20 61 6e 20 61 62 61 6e  64 6f 6e 65 64 20 74 65  | an abandoned te|
0002ba00  6d 70 6c 65 2e 0a 20 20  54 68 65 20 73 75 62 73  |mple..  The subs|
0002ba10  65 71 75 65 6e 74 20 64  69 70 6c 6f 6d 61 74 69  |equent diplomati|
0002ba20  63 20 69 6e 63 69 64 65  6e 74 2e 2e 2e 0a 0a 53  |c incident.....S|
0002ba30  74 6f 72 69 65 73 20 68  61 76 65 20 62 65 65 6e  |tories have been|
0002ba40  20 73 70 75 6e 20 6f 75  74 20 6f 66 20 6c 65 73  | spun out of les|
0002ba50  73 2e 0a 0a 54 68 65 6e  2c 20 74 6f 6f 2c 20 75  |s...Then, too, u|
0002ba60  73 65 66 75 6c 20 72 61  77 20 6d 61 74 65 72 69  |seful raw materi|
0002ba70  61 6c 73 20 63 6f 6d 65  20 74 6f 20 68 61 6e 64  |als come to hand|
0002ba80  2e 20 20 41 20 62 6f 6f  6b 20 61 62 6f 75 74 20  |.  A book about |
0002ba90  54 69 62 65 74 20 6d 61  79 0a 6d 65 6e 74 69 6f  |Tibet may.mentio|
0002baa0  6e 2c 20 69 6e 20 70 61  73 73 69 6e 67 2c 20 74  |n, in passing, t|
0002bab0  68 65 20 77 61 79 20 74  6f 20 6d 61 6b 65 20 74  |he way to make t|
0002bac0  65 61 20 77 69 74 68 20  61 20 63 68 61 72 63 6f  |ea with a charco|
0002bad0  61 6c 2d 62 75 72 6e 69  6e 67 20 73 61 6d 6f 76  |al-burning samov|
0002bae0  61 72 2e 20 0a 53 6f 2c  20 77 68 79 20 6e 6f 74  |ar. .So, why not|
0002baf0  20 61 20 74 65 61 2d 6d  61 6b 69 6e 67 20 70 75  | a tea-making pu|
0002bb00  7a 7a 6c 65 20 73 6f 6d  65 77 68 65 72 65 3f 20  |zzle somewhere? |
0002bb10  20 49 74 20 64 6f 65 73  6e 27 74 20 6d 61 74 74  | It doesn't matt|
0002bb20  65 72 20 74 68 61 74 20  74 68 65 72 65 0a 69 73  |er that there.is|
0002bb30  20 61 73 20 79 65 74 20  6e 6f 20 70 6c 6f 74 20  | as yet no plot |
0002bb40  74 6f 20 66 69 74 20 69  74 20 69 6e 74 6f 3a 20  |to fit it into: |
0002bb50  69 66 20 69 74 27 73 20  69 6e 20 6b 65 65 70 69  |if it's in keepi|
0002bb60  6e 67 20 77 69 74 68 20  74 68 65 20 67 65 6e 72  |ng with the genr|
0002bb70  65 2c 20 69 74 0a 77 69  6c 6c 20 66 69 74 20 73  |e, it.will fit s|
0002bb80  6f 6d 65 77 68 65 72 65  2e 0a 0a 52 65 73 65 61  |omewhere...Resea|
0002bb90  72 63 68 20 61 6c 73 6f  20 75 73 65 66 75 6c 6c  |rch also usefull|
0002bba0  79 20 66 69 6c 6c 73 20  69 6e 20 67 61 70 73 2e  |y fills in gaps.|
0002bbb0  20 20 53 75 70 70 6f 73  65 20 61 20 66 69 72 65  |  Suppose a fire|
0002bbc0  20 73 74 61 74 69 6f 6e  20 69 73 20 74 6f 20 62  | station is to b|
0002bbd0  65 0a 63 72 65 61 74 65  64 3a 20 77 68 61 74 20  |e.created: what |
0002bbe0  61 72 65 20 74 68 65 20  72 6f 6f 6d 73 3f 20 20  |are the rooms?  |
0002bbf0  41 20 67 61 72 61 67 65  2c 20 61 20 6c 6f 75 6e  |A garage, a loun|
0002bc00  67 65 2c 20 61 20 72 6f  6f 6d 20 66 75 6c 6c 20  |ge, a room full |
0002bc10  6f 66 20 75 6e 69 66 6f  72 6d 73 2c 0a 79 65 73  |of uniforms,.yes|
0002bc20  3a 20 62 75 74 20 77 68  61 74 20 65 6c 73 65 3f  |: but what else?|
0002bc30  20 20 48 65 72 65 20 69  73 20 53 74 75 20 47 61  |  Here is Stu Ga|
0002bc40  6c 6c 65 79 2c 20 6f 6e  20 77 72 69 74 69 6e 67  |lley, on writing|
0002bc50  20 74 68 65 20 43 68 61  6e 64 6c 65 72 65 73 71  | the Chandleresq|
0002bc60  75 65 20 6d 75 72 64 65  72 0a 6d 79 73 74 65 72  |ue murder.myster|
0002bc70  79 20 22 57 69 74 6e 65  73 73 22 3a 0a 0a 20 20  |y "Witness":..  |
0002bc80  22 53 6f 6f 6e 20 6d 79  20 6f 66 66 69 63 65 20  |"Soon my office |
0002bc90  62 6f 6f 6b 73 68 65 6c  66 20 68 61 64 20 61 6e  |bookshelf had an|
0002bca0  20 6f 6c 64 20 53 65 61  72 73 20 63 61 74 61 6c  | old Sears catal|
0002bcb0  6f 67 75 65 20 61 6e 64  20 61 20 70 69 63 74 6f  |ogue and a picto|
0002bcc0  72 69 61 6c 0a 20 20 68  69 73 74 6f 72 79 20 6f  |rial.  history o|
0002bcd0  66 20 61 64 76 65 72 74  69 73 69 6e 67 20 28 74  |f advertising (t|
0002bce0  6f 20 68 65 6c 70 20 6d  65 20 66 75 72 6e 69 73  |o help me furnis|
0002bcf0  68 20 74 68 65 20 68 6f  75 73 65 20 61 6e 64 20  |h the house and |
0002bd00  63 6c 6f 74 68 65 20 74  68 65 0a 20 20 63 68 61  |clothe the.  cha|
0002bd10  72 61 63 74 65 72 73 29  2c 20 74 68 65 20 22 44  |racters), the "D|
0002bd20  69 63 74 69 6f 6e 61 72  79 20 6f 66 20 41 6d 65  |ictionary of Ame|
0002bd30  72 69 63 61 6e 20 53 6c  61 6e 67 22 20 28 74 6f  |rican Slang" (to|
0002bd40  20 61 64 64 20 63 6f 6c  6f 75 72 20 74 6f 20 74  | add colour to t|
0002bd50  68 65 0a 20 20 74 65 78  74 29 20 61 6e 64 20 61  |he.  text) and a|
0002bd60  20 31 39 33 37 20 64 65  73 6b 20 65 6e 63 79 63  | 1937 desk encyc|
0002bd70  6c 6f 70 61 65 64 69 61  20 28 74 6f 20 77 65 65  |lopaedia (to wee|
0002bd80  64 20 6f 75 74 20 61 6e  61 63 68 72 6f 6e 69 73  |d out anachronis|
0002bd90  6d 73 29 2e 22 0a 0a 0a  54 68 65 20 70 65 72 69  |ms)."...The peri|
0002bda0  6c 20 6f 66 20 72 65 73  65 61 72 63 68 2c 20 6f  |l of research, o|
0002bdb0  6e 20 74 68 65 20 6f 74  68 65 72 20 68 61 6e 64  |n the other hand|
0002bdc0  2c 20 69 73 20 74 68 61  74 20 69 74 20 70 69 6c  |, is that it pil|
0002bdd0  65 73 20 75 70 20 66 61  63 74 20 77 69 74 68 6f  |es up fact witho|
0002bde0  75 74 0a 65 6e 64 2e 20  20 49 74 20 69 73 20 65  |ut.end.  It is e|
0002bdf0  73 73 65 6e 74 69 61 6c  20 74 6f 20 63 6f 6e 64  |ssential to cond|
0002be00  65 6e 73 65 2e 20 20 48  65 72 65 20 42 72 69 61  |ense.  Here Bria|
0002be10  6e 20 4d 6f 72 69 61 72  74 79 2c 20 6f 6e 20 72  |n Moriarty, on r|
0002be20  65 73 65 61 72 63 68 20  66 6f 72 0a 22 54 72 69  |esearch for."Tri|
0002be30  6e 69 74 79 22 2c 20 77  68 69 63 68 20 69 6e 63  |nity", which inc|
0002be40  6c 75 64 65 64 20 67 65  6f 6c 6f 67 69 63 61 6c  |luded geological|
0002be50  20 73 75 72 76 65 79 73  3a 0a 0a 20 20 22 54 68  | surveys:..  "Th|
0002be60  65 20 66 69 72 73 74 20  74 68 69 6e 67 20 49 20  |e first thing I |
0002be70  64 69 64 20 77 61 73 20  73 69 74 20 64 6f 77 6e  |did was sit down|
0002be80  20 61 6e 64 20 6d 61 6b  65 20 61 20 6d 61 70 20  | and make a map |
0002be90  6f 66 20 74 68 65 20 54  72 69 6e 69 74 79 20 73  |of the Trinity s|
0002bea0  69 74 65 2e 20 49 74 0a  20 20 77 61 73 20 63 68  |ite. It.  was ch|
0002beb0  61 6e 67 65 64 20 61 62  6f 75 74 20 35 30 20 74  |anged about 50 t|
0002bec0  69 6d 65 73 20 74 72 79  69 6e 67 20 74 6f 20 73  |imes trying to s|
0002bed0  69 6d 70 6c 69 66 79 20  69 74 20 61 6e 64 20 67  |implify it and g|
0002bee0  65 74 20 69 74 20 64 6f  77 6e 20 66 72 6f 6d 20  |et it down from |
0002bef0  6f 76 65 72 0a 20 20 31  30 30 20 72 6f 6f 6d 73  |over.  100 rooms|
0002bf00  20 74 6f 20 74 68 65 20  34 30 20 6f 72 20 73 6f  | to the 40 or so|
0002bf10  20 72 6f 6f 6d 73 20 74  68 61 74 20 6e 6f 77 20  | rooms that now |
0002bf20  63 6f 6d 70 72 69 73 65  20 69 74 2e 20 49 74 20  |comprise it. It |
0002bf30  77 61 73 20 61 20 6c 6f  74 20 6d 6f 72 65 0a 20  |was a lot more. |
0002bf40  20 61 63 63 75 72 61 74  65 20 61 6e 64 20 76 65  | accurate and ve|
0002bf50  72 79 20 64 65 74 61 69  6c 65 64 2c 20 62 75 74  |ry detailed, but|
0002bf60  20 61 20 6c 6f 74 20 6f  66 20 74 68 61 74 20 64  | a lot of that d|
0002bf70  65 74 61 69 6c 20 77 61  73 20 74 6f 74 61 6c 6c  |etail was totall|
0002bf80  79 20 75 73 65 6c 65 73  73 2e 22 0a 0a 54 68 65  |y useless."..The|
0002bf90  72 65 20 69 73 20 6e 6f  20 6e 65 65 64 20 74 6f  |re is no need to|
0002bfa0  20 69 6d 70 6c 65 6d 65  6e 74 20 74 65 6e 20 73  | implement ten s|
0002bfb0  69 64 65 2d 63 68 61 70  65 6c 73 20 77 68 65 6e  |ide-chapels when|
0002bfc0  20 63 6f 64 69 6e 67 2c  20 73 61 79 2c 20 43 68  | coding, say, Ch|
0002bfd0  61 72 74 72 65 73 0a 63  61 74 68 65 64 72 61 6c  |artres.cathedral|
0002bfe0  2c 20 6d 65 72 65 6c 79  20 62 65 63 61 75 73 65  |, merely because|
0002bff0  20 74 68 65 20 72 65 61  6c 20 6f 6e 65 20 68 61  | the real one ha|
0002c000  73 20 74 65 6e 2e 0a 0a  0a 33 2e 20 20 48 6f 77  |s ten....3.  How|
0002c010  20 50 6c 6f 74 73 20 53  74 61 72 74 0a 2d 2d 2d  | Plots Start.---|
0002c020  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0002c030  0a 0a 41 74 20 74 68 69  73 20 70 6f 69 6e 74 20  |..At this point |
0002c040  74 68 65 20 64 65 73 69  67 6e 65 72 20 68 61 73  |the designer has|
0002c050  20 61 20 66 65 77 20 70  68 6f 74 6f 63 6f 70 69  | a few photocopi|
0002c060  65 64 20 73 68 65 65 74  73 2c 20 73 6f 6d 65 20  |ed sheets, some |
0002c070  73 63 72 69 62 62 6c 65  64 0a 69 64 65 61 73 20  |scribbled.ideas |
0002c080  61 6e 64 20 70 65 72 68  61 70 73 20 65 76 65 6e  |and perhaps even|
0002c090  20 61 20 6c 69 74 74 6c  65 20 63 6f 64 65 20 2d  | a little code -|
0002c0a0  20 74 68 65 20 69 6d 70  6c 65 6d 65 6e 74 61 74  | the implementat|
0002c0b0  69 6f 6e 20 6f 66 20 61  20 73 61 6d 6f 76 61 72  |ion of a samovar|
0002c0c0  2c 20 66 6f 72 0a 69 6e  73 74 61 6e 63 65 20 2d  |, for.instance -|
0002c0d0  20 62 75 74 20 6e 6f 74  68 69 6e 67 20 65 6c 73  | but nothing els|
0002c0e0  65 2e 20 20 28 54 68 65  72 65 27 73 20 6e 6f 20  |e.  (There's no |
0002c0f0  68 61 72 6d 20 69 6e 20  73 6b 65 74 63 68 69 6e  |harm in sketchin|
0002c100  67 20 64 65 74 61 69 6c  73 20 62 65 66 6f 72 65  |g details before|
0002c110  0a 68 61 76 69 6e 67 20  74 68 65 20 77 68 6f 6c  |.having the whol|
0002c120  65 20 64 65 73 69 67 6e  20 77 6f 72 6b 65 64 20  |e design worked |
0002c130  6f 75 74 3a 20 70 61 69  6e 74 65 72 73 20 6f 66  |out: painters of|
0002c140  74 65 6e 20 64 6f 2e 20  20 42 65 73 69 64 65 73  |ten do.  Besides|
0002c150  2c 20 69 74 20 63 61 6e  20 62 65 0a 76 65 72 79  |, it can be.very|
0002c160  20 64 69 73 73 70 69 72  69 74 69 6e 67 20 6c 6f  | disspiriting lo|
0002c170  6f 6b 69 6e 67 20 61 74  20 61 20 68 75 67 65 20  |oking at a huge |
0002c180  70 61 70 65 72 20 70 6c  61 6e 20 6f 66 20 77 68  |paper plan of wh|
0002c190  69 63 68 20 6e 6f 74 68  69 6e 67 20 77 68 61 74  |ich nothing what|
0002c1a0  65 76 65 72 20 69 73 0a  79 65 74 20 70 72 6f 67  |ever is.yet prog|
0002c1b0  72 61 6d 6d 65 64 2e 29  0a 0a 49 74 20 69 73 20  |rammed.)..It is |
0002c1c0  74 69 6d 65 20 66 6f 72  20 61 20 70 6c 6f 74 2e  |time for a plot.|
0002c1d0  0a 0a 50 6c 6f 74 20 62  65 67 69 6e 73 20 77 69  |..Plot begins wi|
0002c1e0  74 68 20 74 68 65 20 6f  70 65 6e 69 6e 67 20 6d  |th the opening m|
0002c1f0  65 73 73 61 67 65 2c 20  72 61 74 68 65 72 20 74  |essage, rather t|
0002c200  68 65 20 77 61 79 20 61  6e 20 65 70 69 73 6f 64  |he way an episod|
0002c210  65 20 6f 66 20 53 74 61  72 20 54 72 65 6b 0a 62  |e of Star Trek.b|
0002c220  65 67 69 6e 73 20 62 65  66 6f 72 65 20 74 68 65  |egins before the|
0002c230  20 63 72 65 64 69 74 73  20 63 6f 6d 65 20 75 70  | credits come up|
0002c240  2e 20 20 57 72 69 74 65  20 69 74 20 6e 6f 77 2e  |.  Write it now.|
0002c250  20 20 49 74 20 6f 75 67  68 74 20 74 6f 20 62 65  |  It ought to be|
0002c260  20 73 74 72 69 6b 69 6e  67 0a 61 6e 64 20 63 6f  | striking.and co|
0002c270  6e 63 69 73 65 20 28 6e  6f 74 20 61 6e 20 65 66  |ncise (not an ef|
0002c280  66 6f 72 74 20 74 6f 20  73 69 74 20 74 68 72 6f  |fort to sit thro|
0002c290  75 67 68 2c 20 6c 69 6b  65 20 74 68 65 20 74 69  |ugh, like the ti|
0002c2a0  74 6c 65 20 70 61 67 65  20 6f 66 20 22 42 65 79  |tle page of "Bey|
0002c2b0  6f 6e 64 0a 5a 6f 72 6b  22 29 2e 20 20 42 79 20  |ond.Zork").  By |
0002c2c0  61 6e 64 20 6c 61 72 67  65 20 49 6e 66 6f 63 6f  |and large Infoco|
0002c2d0  6d 20 77 65 72 65 20 67  6f 6f 64 20 61 74 20 74  |m were good at t|
0002c2e0  68 69 73 2c 20 61 6e 64  20 61 20 66 69 6e 65 20  |his, and a fine |
0002c2f0  65 78 61 6d 70 6c 65 20  69 73 20 42 72 69 61 6e  |example is Brian|
0002c300  0a 4d 6f 72 69 61 72 74  79 27 73 20 6f 76 65 72  |.Moriarty's over|
0002c310  74 75 72 65 20 74 6f 20  22 54 72 69 6e 69 74 79  |ture to "Trinity|
0002c320  22 3a 0a 0a 20 20 53 68  61 72 70 20 77 6f 72 64  |":..  Sharp word|
0002c330  73 20 62 65 74 77 65 65  6e 20 74 68 65 20 73 75  |s between the su|
0002c340  70 65 72 70 6f 77 65 72  73 2e 20 54 61 6e 6b 73  |perpowers. Tanks|
0002c350  20 69 6e 20 45 61 73 74  20 42 65 72 6c 69 6e 2e  | in East Berlin.|
0002c360  20 41 6e 64 20 6e 6f 77  2c 0a 20 20 72 65 70 6f  | And now,.  repo|
0002c370  72 74 73 20 74 68 65 20  42 42 43 2c 20 72 75 6d  |rts the BBC, rum|
0002c380  6f 72 73 20 6f 66 20 61  20 73 61 74 65 6c 6c 69  |ors of a satelli|
0002c390  74 65 20 62 6c 61 63 6b  6f 75 74 2e 20 49 74 27  |te blackout. It'|
0002c3a0  73 20 65 6e 6f 75 67 68  20 74 6f 20 73 70 6f 69  |s enough to spoi|
0002c3b0  6c 20 79 6f 75 72 0a 20  20 63 6f 6e 74 69 6e 65  |l your.  contine|
0002c3c0  6e 74 61 6c 20 62 72 65  61 6b 66 61 73 74 2e 0a  |ntal breakfast..|
0002c3d0  0a 20 20 42 75 74 20 74  68 65 20 77 6f 72 6c 64  |.  But the world|
0002c3e0  20 77 69 6c 6c 20 68 61  76 65 20 74 6f 20 77 61  | will have to wa|
0002c3f0  69 74 2e 20 54 68 69 73  20 69 73 20 74 68 65 20  |it. This is the |
0002c400  6c 61 73 74 20 64 61 79  20 6f 66 20 79 6f 75 72  |last day of your|
0002c410  20 24 35 39 39 20 4c 6f  6e 64 6f 6e 0a 20 20 47  | $599 London.  G|
0002c420  65 74 61 77 61 79 20 50  61 63 6b 61 67 65 2c 20  |etaway Package, |
0002c430  61 6e 64 20 79 6f 75 27  72 65 20 64 65 74 65 72  |and you're deter|
0002c440  6d 69 6e 65 64 20 74 6f  20 73 6f 61 6b 20 75 70  |mined to soak up|
0002c450  20 61 73 20 6d 75 63 68  20 6f 66 20 74 68 61 74  | as much of that|
0002c460  0a 20 20 61 75 74 68 65  6e 74 69 63 20 45 6e 67  |.  authentic Eng|
0002c470  6c 69 73 68 20 61 6d 62  69 65 6e 63 65 20 61 73  |lish ambience as|
0002c480  20 79 6f 75 20 63 61 6e  2e 20 53 6f 20 79 6f 75  | you can. So you|
0002c490  27 76 65 20 6c 65 66 74  20 74 68 65 20 74 6f 75  |'ve left the tou|
0002c4a0  72 20 62 75 73 20 62 65  68 69 6e 64 2c 0a 20 20  |r bus behind,.  |
0002c4b0  64 69 74 63 68 65 64 20  74 68 65 20 63 61 6d 65  |ditched the came|
0002c4c0  72 61 20 61 6e 64 20 65  73 63 61 70 65 64 20 74  |ra and escaped t|
0002c4d0  6f 20 48 79 64 65 20 50  61 72 6b 20 66 6f 72 20  |o Hyde Park for |
0002c4e0  61 20 63 6f 6e 74 65 6d  70 6c 61 74 69 76 65 20  |a contemplative |
0002c4f0  73 74 72 6f 6c 6c 0a 20  20 74 68 72 6f 75 67 68  |stroll.  through|
0002c500  20 74 68 65 20 4b 65 6e  73 69 6e 67 74 6f 6e 20  | the Kensington |
0002c510  47 61 72 64 65 6e 73 2e  0a 0a 41 6c 72 65 61 64  |Gardens...Alread|
0002c520  79 20 79 6f 75 20 6b 6e  6f 77 3a 20 77 68 6f 20  |y you know: who |
0002c530  79 6f 75 20 61 72 65 20  28 61 6e 20 75 6e 61 64  |you are (an unad|
0002c540  76 65 6e 74 75 72 6f 75  73 20 41 6d 65 72 69 63  |venturous Americ|
0002c550  61 6e 20 74 6f 75 72 69  73 74 2c 20 6f 66 20 6e  |an tourist, of n|
0002c560  6f 0a 73 69 67 6e 69 66  69 63 61 6e 63 65 20 69  |o.significance i|
0002c570  6e 20 74 68 65 20 77 6f  72 6c 64 29 3b 20 65 78  |n the world); ex|
0002c580  61 63 74 6c 79 20 77 68  65 72 65 20 79 6f 75 20  |actly where you |
0002c590  61 72 65 20 28 4b 65 6e  73 69 6e 67 74 6f 6e 20  |are (Kensington |
0002c5a0  47 61 72 64 65 6e 73 2c  20 48 79 64 65 0a 50 61  |Gardens, Hyde.Pa|
0002c5b0  72 6b 2c 20 4c 6f 6e 64  6f 6e 2c 20 45 6e 67 6c  |rk, London, Engl|
0002c5c0  61 6e 64 29 3b 20 61 6e  64 20 77 68 61 74 20 69  |and); and what i|
0002c5d0  73 20 67 6f 69 6e 67 20  6f 6e 20 28 57 6f 72 6c  |s going on (Worl|
0002c5e0  64 20 57 61 72 20 49 49  49 20 69 73 20 61 62 6f  |d War III is abo|
0002c5f0  75 74 20 74 6f 0a 62 72  65 61 6b 20 6f 75 74 29  |ut to.break out)|
0002c600  2e 20 20 4e 6f 74 69 63  65 20 74 68 65 20 63 61  |.  Notice the ca|
0002c610  72 65 66 75 6c 20 64 65  74 61 69 6c 73 3a 20 6d  |reful details: m|
0002c620  65 6e 74 69 6f 6e 20 6f  66 20 74 68 65 20 42 42  |ention of the BB|
0002c630  43 2c 20 6f 66 20 63 6f  6e 74 69 6e 65 6e 74 61  |C, of continenta|
0002c640  6c 0a 62 72 65 61 6b 66  61 73 74 73 2c 20 6f 66  |l.breakfasts, of|
0002c650  20 74 68 65 20 63 61 6d  65 72 61 20 61 6e 64 20  | the camera and |
0002c660  74 68 65 20 74 6f 75 72  20 62 75 73 2e 20 20 4d  |the tour bus.  M|
0002c670  6f 72 65 20 73 75 62 74  6c 79 2c 20 22 54 72 69  |ore subtly, "Tri|
0002c680  6e 69 74 79 22 20 69 73  20 61 0a 67 61 6d 65 20  |nity" is a.game |
0002c690  77 68 69 63 68 20 73 74  61 72 74 73 20 61 73 20  |which starts as |
0002c6a0  61 20 6b 69 6e 64 20 6f  66 20 65 73 63 61 70 69  |a kind of escapi|
0002c6b0  73 6d 20 66 72 6f 6d 20  61 20 64 69 73 61 73 74  |sm from a disast|
0002c6c0  72 6f 75 73 20 77 6f 72  6c 64 20 6f 75 74 20 6f  |rous world out o|
0002c6d0  66 0a 63 6f 6e 74 72 6f  6c 3a 20 6e 6f 74 69 63  |f.control: notic|
0002c6e0  65 20 74 68 65 20 77 61  79 20 74 68 65 20 66 69  |e the way the fi|
0002c6f0  72 73 74 20 70 61 72 61  67 72 61 70 68 20 69 73  |rst paragraph is|
0002c700  20 69 6e 20 74 65 6e 73  65 2c 20 62 6c 75 6e 74  | in tense, blunt|
0002c710  2c 0a 68 65 61 64 6c 69  6e 65 2d 6c 69 6b 65 20  |,.headline-like |
0002c720  73 65 6e 74 65 6e 63 65  73 2c 20 77 68 65 72 65  |sentences, where|
0002c730  61 73 20 74 68 65 20 73  65 63 6f 6e 64 20 69 73  |as the second is|
0002c740  20 6d 75 63 68 20 6d 6f  72 65 20 72 65 6c 61 78  | much more relax|
0002c750  65 64 2e 20 20 53 6f 20  61 20 6c 6f 74 0a 68 61  |ed.  So a lot.ha|
0002c760  73 20 62 65 65 6e 20 61  63 68 69 65 76 65 64 20  |s been achieved |
0002c770  62 79 20 74 68 65 73 65  20 74 77 6f 20 6f 70 65  |by these two ope|
0002c780  6e 69 6e 67 20 70 61 72  61 67 72 61 70 68 73 2e  |ning paragraphs.|
0002c790  0a 0a 54 68 65 20 70 6f  69 6e 74 20 61 62 6f 75  |..The point abou|
0002c7a0  74 20 74 65 6c 6c 69 6e  67 20 74 68 65 20 70 6c  |t telling the pl|
0002c7b0  61 79 65 72 20 77 68 6f  20 74 6f 20 62 65 20 69  |ayer who to be i|
0002c7c0  73 20 6d 6f 72 65 20 73  75 62 74 6c 65 20 74 68  |s more subtle th|
0002c7d0  61 6e 20 66 69 72 73 74  0a 61 70 70 65 61 72 73  |an first.appears|
0002c7e0  2e 20 20 47 65 6e 64 65  72 20 69 73 20 65 73 70  |.  Gender is esp|
0002c7f0  65 63 69 61 6c 6c 79 20  61 6e 20 61 77 6b 77 61  |ecially an awkwa|
0002c800  72 64 20 70 6f 69 6e 74  2e 20 20 49 6e 20 73 6f  |rd point.  In so|
0002c810  6d 65 20 67 61 6d 65 73  20 74 68 65 20 70 6c 61  |me games the pla|
0002c820  79 65 72 27 73 0a 63 68  61 72 61 63 74 65 72 20  |yer's.character |
0002c830  69 73 20 65 78 61 63 74  6c 79 20 70 72 65 73 63  |is exactly presc|
0002c840  72 69 62 65 64 3a 20 69  6e 20 22 50 6c 75 6e 64  |ribed: in "Plund|
0002c850  65 72 65 64 20 48 65 61  72 74 73 22 20 79 6f 75  |ered Hearts" you|
0002c860  20 61 72 65 20 61 20 70  61 72 74 69 63 75 6c 61  | are a particula|
0002c870  72 0a 67 69 72 6c 20 77  68 69 73 6b 65 64 20 61  |r.girl whisked a|
0002c880  77 61 79 20 62 79 20 70  69 72 61 74 65 73 2c 20  |way by pirates, |
0002c890  61 6e 64 20 68 61 76 65  20 74 6f 20 61 63 74 20  |and have to act |
0002c8a0  69 6e 20 63 68 61 72 61  63 74 65 72 2e 20 20 4f  |in character.  O|
0002c8b0  74 68 65 72 20 67 61 6d  65 73 0a 74 61 6b 65 20  |ther games.take |
0002c8c0  74 68 65 20 61 74 74 69  74 75 64 65 20 74 68 61  |the attitude tha|
0002c8d0  74 20 61 6e 79 6f 6e 65  20 77 68 6f 20 74 75 72  |t anyone who tur|
0002c8e0  6e 73 20 75 70 20 63 61  6e 20 70 6c 61 79 2e 20  |ns up can play. |
0002c8f0  20 54 68 65 20 67 61 6d  65 20 61 73 73 75 6d 65  | The game assume|
0002c900  73 0a 6e 6f 74 68 69 6e  67 20 61 62 6f 75 74 20  |s.nothing about |
0002c910  74 68 65 20 70 6c 61 79  65 72 27 73 20 67 65 6e  |the player's gen|
0002c920  64 65 72 20 6f 72 20 61  74 74 69 74 75 64 65 73  |der or attitudes|
0002c930  2e 0a 0a 0a 41 6e 79 77  61 79 2c 20 74 68 65 20  |....Anyway, the |
0002c940  70 6c 61 79 65 72 20 6b  6e 6f 77 73 20 77 68 6f  |player knows who|
0002c950  20 68 65 20 69 73 2e 20  20 57 68 61 74 20 69 73  | he is.  What is|
0002c960  20 68 65 20 74 6f 20 64  6f 3f 20 20 45 76 65 6e  | he to do?  Even|
0002c970  20 69 66 20 79 6f 75 20  64 6f 6e 27 74 0a 77 61  | if you don't.wa|
0002c980  6e 74 20 68 69 6d 20 74  6f 20 6b 6e 6f 77 20 65  |nt him to know e|
0002c990  76 65 72 79 74 68 69 6e  67 20 79 65 74 2c 20 68  |verything yet, h|
0002c9a0  65 20 68 61 73 20 74 6f  20 68 61 76 65 20 73 6f  |e has to have so|
0002c9b0  6d 65 20 69 6e 69 74 69  61 6c 20 74 61 73 6b 2e  |me initial task.|
0002c9c0  0a 0a 47 61 6d 65 73 20  76 61 72 79 20 69 6e 20  |..Games vary in |
0002c9d0  68 6f 77 20 6d 75 63 68  20 74 68 65 79 20 72 65  |how much they re|
0002c9e0  76 65 61 6c 20 61 74 20  6f 6e 63 65 2e 20 20 22  |veal at once.  "|
0002c9f0  54 72 69 6e 69 74 79 22  2c 20 61 62 6f 76 65 2c  |Trinity", above,|
0002ca00  20 69 73 20 66 6f 72 65  62 6f 64 69 6e 67 0a 62  | is foreboding.b|
0002ca10  75 74 20 72 65 61 6c 6c  79 20 6f 6e 6c 79 20 74  |ut really only t|
0002ca20  65 6c 6c 73 20 74 68 65  20 70 6c 61 79 65 72 20  |ells the player |
0002ca30  74 6f 20 67 6f 20 66 6f  72 20 61 20 77 61 6c 6b  |to go for a walk|
0002ca40  2e 20 20 22 43 75 72 73  65 73 22 20 67 69 76 65  |.  "Curses" give|
0002ca50  73 20 74 68 65 0a 70 6c  61 79 65 72 20 61 6e 20  |s the.player an |
0002ca60  69 6e 69 74 69 61 6c 20  74 61 73 6b 20 77 68 69  |initial task whi|
0002ca70  63 68 20 69 73 20 71 75  69 74 65 20 65 61 73 79  |ch is quite easy|
0002ca80  20 2d 20 6c 6f 6f 6b 20  74 68 72 6f 75 67 68 20  | - look through |
0002ca90  73 6f 6d 65 20 61 74 74  69 63 73 20 66 6f 72 20  |some attics for |
0002caa0  61 0a 74 6f 75 72 69 73  74 20 6d 61 70 20 6f 66  |a.tourist map of|
0002cab0  20 50 61 72 69 73 20 2d  20 62 75 74 20 74 68 65  | Paris - but the|
0002cac0  20 73 69 67 6e 69 66 69  63 61 6e 63 65 20 6f 66  | significance of|
0002cad0  20 77 68 69 63 68 20 69  73 20 6f 6e 6c 79 20 67  | which is only g|
0002cae0  72 61 64 75 61 6c 6c 79  0a 72 65 76 65 61 6c 65  |radually.reveale|
0002caf0  64 2c 20 69 6e 20 73 74  61 67 65 73 2c 20 61 73  |d, in stages, as|
0002cb00  20 74 68 65 20 67 61 6d  65 20 70 72 6f 63 65 65  | the game procee|
0002cb10  64 73 2e 20 20 4f 6e 20  74 68 65 20 6f 74 68 65  |ds.  On the othe|
0002cb20  72 20 68 61 6e 64 2c 20  65 76 65 6e 20 74 68 65  |r hand, even the|
0002cb30  20 62 65 73 74 0a 6f 66  20 22 6d 61 67 69 63 20  | best.of "magic |
0002cb40  72 65 61 6c 6d 22 20 74  79 70 65 20 67 61 6d 65  |realm" type game|
0002cb50  73 20 28 73 75 63 68 20  61 73 20 22 45 6e 63 68  |s (such as "Ench|
0002cb60  61 6e 74 65 72 22 29 20  74 65 6e 64 73 20 74 6f  |anter") tends to|
0002cb70  20 62 65 67 69 6e 2e 2e  2e 0a 0a 20 20 59 6f 75  | begin.....  You|
0002cb80  2c 20 61 20 6e 6f 76 69  63 65 20 45 6e 63 68 61  |, a novice Encha|
0002cb90  6e 74 65 72 20 77 69 74  68 20 62 75 74 20 61 20  |nter with but a |
0002cba0  66 65 77 20 73 69 6d 70  6c 65 20 73 70 65 6c 6c  |few simple spell|
0002cbb0  73 20 69 6e 20 79 6f 75  72 20 42 6f 6f 6b 2c 0a  |s in your Book,.|
0002cbc0  20 20 6d 75 73 74 20 73  65 65 6b 20 6f 75 74 20  |  must seek out |
0002cbd0  4b 72 69 6c 6c 2c 20 65  78 70 6c 6f 72 65 20 74  |Krill, explore t|
0002cbe0  68 65 20 43 61 73 74 6c  65 20 68 65 20 68 61 73  |he Castle he has|
0002cbf0  20 6f 76 65 72 74 68 72  6f 77 6e 2c 20 61 6e 64  | overthrown, and|
0002cc00  20 6c 65 61 72 6e 0a 20  20 68 69 73 20 73 65 63  | learn.  his sec|
0002cc10  72 65 74 73 2e 20 20 4f  6e 6c 79 20 74 68 65 6e  |rets.  Only then|
0002cc20  20 6d 61 79 20 68 69 73  20 76 61 73 74 20 65 76  | may his vast ev|
0002cc30  69 6c 2e 2e 2e 0a 0a 0a  54 68 65 20 6d 6f 73 74  |il......The most|
0002cc40  20 63 6f 6d 6d 6f 6e 20  70 6c 6f 74 73 20 62 6f  | common plots bo|
0002cc50  69 6c 20 64 6f 77 6e 20  74 6f 20 73 61 76 69 6e  |il down to savin|
0002cc60  67 20 74 68 65 20 77 6f  72 6c 64 2c 20 62 79 20  |g the world, by |
0002cc70  65 78 70 6c 6f 72 69 6e  67 20 75 6e 74 69 6c 0a  |exploring until.|
0002cc80  65 76 65 6e 74 75 61 6c  6c 79 20 79 6f 75 20 76  |eventually you v|
0002cc90  61 6e 71 75 69 73 68 20  73 6f 6d 65 74 68 69 6e  |anquish somethin|
0002cca0  67 20 28 22 4c 75 72 6b  69 6e 67 20 48 6f 72 72  |g ("Lurking Horr|
0002ccb0  6f 72 22 20 61 67 61 69  6e 2c 20 66 6f 72 20 69  |or" again, for i|
0002ccc0  6e 73 74 61 6e 63 65 29  20 6f 72 0a 63 6f 6c 6c  |nstance) or.coll|
0002ccd0  65 63 74 69 6e 67 20 73  6f 6d 65 20 6e 75 6d 62  |ecting some numb|
0002cce0  65 72 20 6f 66 20 6f 62  6a 65 63 74 73 20 68 69  |er of objects hi|
0002ccf0  64 64 65 6e 20 69 6e 20  61 77 6b 77 61 72 64 20  |dden in awkward |
0002cd00  70 6c 61 63 65 73 20 28  22 4c 65 61 74 68 65 72  |places ("Leather|
0002cd10  0a 47 6f 64 64 65 73 73  65 73 22 20 61 67 61 69  |.Goddesses" agai|
0002cd20  6e 2c 20 73 61 79 29 2e  20 20 54 68 65 20 6c 61  |n, say).  The la|
0002cd30  74 74 65 72 20 63 61 6e  20 67 65 74 20 76 65 72  |tter can get ver|
0002cd40  79 20 68 61 63 6b 6e 65  79 65 64 20 28 66 69 6e  |y hackneyed (fin|
0002cd50  64 20 74 68 65 20 6e 69  6e 65 0a 6d 61 67 69 63  |d the nine.magic|
0002cd60  20 73 70 6f 6f 6e 73 20  6f 66 20 5a 65 6e 64 61  | spoons of Zenda|
0002cd70  20 74 6f 20 72 65 75 6e  69 74 65 20 74 68 65 20  | to reunite the |
0002cd80  4b 69 6e 67 64 6f 6d 2e  2e 2e 29 2c 20 73 6f 20  |Kingdom...), so |
0002cd90  6d 75 63 68 20 73 6f 20  74 68 61 74 20 69 74 20  |much so that it |
0002cda0  62 65 63 6f 6d 65 73 0a  61 20 62 69 74 20 6f 66  |becomes.a bit of|
0002cdb0  20 61 20 6a 6f 6b 65 20  28 22 48 6f 6c 6c 79 77  | a joke ("Hollyw|
0002cdc0  6f 6f 64 20 48 69 6a 69  6e 78 22 29 20 62 75 74  |ood Hijinx") but|
0002cdd0  20 73 74 69 6c 6c 20 69  74 20 69 73 6e 27 74 20  | still it isn't |
0002cde0  61 20 62 61 64 20 69 64  65 61 2c 20 62 65 63 61  |a bad idea, beca|
0002cdf0  75 73 65 0a 69 74 20 65  6e 61 62 6c 65 73 20 6d  |use.it enables m|
0002ce00  61 6e 79 20 64 69 66 66  65 72 65 6e 74 20 70 72  |any different pr|
0002ce10  6f 62 6c 65 6d 73 20 74  6f 20 62 65 20 6f 70 65  |oblems to be ope|
0002ce20  6e 20 61 74 20 6f 6e 63  65 2e 0a 0a 41 20 67 61  |n at once...A ga|
0002ce30  6d 65 20 77 68 69 63 68  20 69 6e 76 6f 6c 76 65  |me which involve|
0002ce40  73 20 72 65 61 6c 6c 79  20 66 6c 65 73 68 65 64  |s really fleshed|
0002ce50  2d 6f 75 74 20 63 68 61  72 61 63 74 65 72 73 20  |-out characters |
0002ce60  6f 74 68 65 72 20 74 68  61 6e 20 74 68 65 20 70  |other than the p|
0002ce70  6c 61 79 65 72 0a 77 69  6c 6c 20 6f 62 76 69 6f  |layer.will obvio|
0002ce80  75 73 6c 79 20 6f 66 66  65 72 20 61 20 6d 75 63  |usly offer a muc|
0002ce90  68 20 6c 61 72 67 65 72  20 72 61 6e 67 65 20 6f  |h larger range o|
0002cea0  66 20 70 6f 73 73 69 62  6c 65 20 70 6c 6f 74 73  |f possible plots|
0002ceb0  2e 0a 0a 54 68 65 20 75  6c 74 69 6d 61 74 65 20  |...The ultimate |
0002cec0  61 69 6d 20 69 6e 20 77  6f 72 6b 69 6e 67 20 6f  |aim in working o|
0002ced0  75 74 20 61 20 70 6c 6f  74 20 69 73 20 74 6f 20  |ut a plot is to |
0002cee0  62 65 20 61 62 6c 65 20  74 6f 20 77 72 69 74 65  |be able to write|
0002cef0  20 61 20 6f 6e 65 2d 70  61 67 65 0a 73 79 6e 6f  | a one-page.syno|
0002cf00  70 73 69 73 20 6f 66 20  77 68 61 74 20 77 69 6c  |psis of what wil|
0002cf10  6c 20 68 61 70 70 65 6e  20 69 6e 20 74 68 65 20  |l happen in the |
0002cf20  66 75 6c 6c 20 67 61 6d  65 3a 20 61 6e 64 20 74  |full game: and t|
0002cf30  68 69 73 20 6f 75 67 68  74 20 74 6f 20 68 61 76  |his ought to hav|
0002cf40  65 20 61 0a 63 6c 65 61  72 20 73 74 72 75 63 74  |e a.clear struct|
0002cf50  75 72 65 2e 0a 0a 0a 34  2e 20 20 53 69 7a 65 20  |ure....4.  Size |
0002cf60  61 6e 64 20 44 65 6e 73  69 74 79 0a 2d 2d 2d 2d  |and Density.----|
0002cf70  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0002cf80  0a 0a 4f 6e 63 65 20 75  70 6f 6e 20 61 20 74 69  |..Once upon a ti|
0002cf90  6d 65 2c 20 74 68 65 20  73 6f 6c 65 20 6d 65 61  |me, the sole mea|
0002cfa0  73 75 72 65 20 6f 66 20  71 75 61 6c 69 74 79 20  |sure of quality |
0002cfb0  69 6e 20 61 64 76 65 72  74 69 73 65 6d 65 6e 74  |in advertisement|
0002cfc0  73 20 66 6f 72 0a 61 64  76 65 6e 74 75 72 65 20  |s for.adventure |
0002cfd0  67 61 6d 65 73 20 77 61  73 20 74 68 65 20 6e 75  |games was the nu|
0002cfe0  6d 62 65 72 20 6f 66 20  72 6f 6f 6d 73 2e 20 20  |mber of rooms.  |
0002cff0  45 76 65 6e 20 71 75 69  74 65 20 73 6d 61 6c 6c  |Even quite small|
0002d000  20 70 72 6f 67 72 61 6d  73 20 77 6f 75 6c 64 0a  | programs would.|
0002d010  68 61 76 65 20 32 30 30  20 72 6f 6f 6d 73 2c 20  |have 200 rooms, |
0002d020  77 68 69 63 68 20 6d 65  61 6e 74 20 6f 6e 6c 79  |which meant only|
0002d030  20 6d 69 6e 69 6d 61 6c  20 72 6f 6f 6d 20 64 65  | minimal room de|
0002d040  73 63 72 69 70 74 69 6f  6e 73 20 61 6e 64 20 73  |scriptions and s|
0002d050  69 6d 70 6c 65 0a 70 75  7a 7a 6c 65 73 20 77 68  |imple.puzzles wh|
0002d060  69 63 68 20 77 65 72 65  20 73 63 61 74 74 65 72  |ich were scatter|
0002d070  65 64 20 74 68 69 6e 6c  79 20 6f 76 65 72 20 74  |ed thinly over t|
0002d080  68 65 20 6d 61 70 2e 20  20 28 54 68 65 20 4c 65  |he map.  (The Le|
0002d090  76 65 6c 20 39 20 67 61  6d 65 0a 22 53 6e 6f 77  |vel 9 game."Snow|
0002d0a0  62 61 6c 6c 22 20 2d 20  70 65 72 68 61 70 73 20  |ball" - perhaps |
0002d0b0  74 68 65 69 72 20 62 65  73 74 2c 20 61 6e 64 20  |their best, and |
0002d0c0  6e 6f 77 20 70 65 72 68  61 70 73 20 61 6c 6d 6f  |now perhaps almo|
0002d0d0  73 74 20 6c 6f 73 74 20  2d 20 63 68 65 65 6b 69  |st lost - cheeki|
0002d0e0  6c 79 0a 61 64 76 65 72  74 69 73 65 64 20 69 74  |ly.advertised it|
0002d0f0  73 65 6c 66 20 61 73 20  68 61 76 69 6e 67 20 32  |self as having 2|
0002d100  2c 30 30 30 2c 30 30 30  20 72 6f 6f 6d 73 2e 2e  |,000,000 rooms..|
0002d110  2e 20 74 68 6f 75 67 68  20 6f 66 20 63 6f 75 72  |. though of cour|
0002d120  73 65 20 31 2c 39 39 39  2c 38 30 30 20 6f 66 0a  |se 1,999,800 of.|
0002d130  74 68 65 6d 20 77 65 72  65 20 71 75 69 74 65 20  |them were quite |
0002d140  73 69 6d 69 6c 61 72 20  74 6f 20 65 61 63 68 20  |similar to each |
0002d150  6f 74 68 65 72 2e 29 0a  0a 4e 6f 77 61 64 61 79  |other.)..Nowaday|
0002d160  73 20 61 20 68 65 61 6c  74 68 69 65 72 20 70 72  |s a healthier pr|
0002d170  69 6e 63 69 70 6c 65 20  68 61 73 20 62 65 65 6e  |inciple has been|
0002d180  20 61 64 6f 70 74 65 64  3a 20 74 68 61 74 20 28  | adopted: that (|
0002d190  62 61 72 72 69 6e 67 20  61 20 66 65 77 0a 6a 75  |barring a few.ju|
0002d1a0  6e 63 74 69 6f 6e 73 20  61 6e 64 20 63 6f 72 72  |nctions and corr|
0002d1b0  69 64 6f 72 73 29 20 74  68 65 72 65 20 73 68 6f  |idors) there sho|
0002d1c0  75 6c 64 20 62 65 20 73  6f 6d 65 74 68 69 6e 67  |uld be something|
0002d1d0  20 6f 75 74 20 6f 66 20  74 68 65 20 6f 72 64 69  | out of the ordi|
0002d1e0  6e 61 72 79 20 61 62 6f  75 74 0a 65 76 65 72 79  |nary about.every|
0002d1f0  20 72 6f 6f 6d 2e 0a 0a  4f 6e 65 20 72 65 61 73  | room...One reas|
0002d200  6f 6e 20 66 6f 72 20 74  68 65 20 71 75 61 6c 69  |on for the quali|
0002d210  74 79 20 6f 66 20 74 68  65 20 49 6e 66 6f 63 6f  |ty of the Infoco|
0002d220  6d 20 67 61 6d 65 73 20  69 73 20 74 68 61 74 20  |m games is that |
0002d230  74 68 65 69 72 20 76 65  72 73 69 6f 6e 20 33 0a  |their version 3.|
0002d240  66 6f 72 6d 61 74 20 28  74 68 65 20 73 6d 61 6c  |format (the smal|
0002d250  6c 65 72 20 6f 6e 65 2c  20 62 75 74 20 75 73 65  |ler one, but use|
0002d260  64 20 66 6f 72 20 74 68  65 20 6d 61 6a 6f 72 69  |d for the majori|
0002d270  74 79 20 6f 66 20 74 68  65 69 72 20 70 72 6f 64  |ty of their prod|
0002d280  75 63 74 73 29 20 68 61  73 20 61 6e 0a 61 62 73  |ucts) has an.abs|
0002d290  6f 6c 75 74 65 20 63 65  69 6c 69 6e 67 20 6f 66  |olute ceiling of|
0002d2a0  20 32 35 35 20 6f 62 6a  65 63 74 73 2c 20 77 68  | 255 objects, wh|
0002d2b0  69 63 68 20 6e 65 65 64  73 20 74 6f 20 63 6f 76  |ich needs to cov|
0002d2c0  65 72 20 72 6f 6f 6d 73  2c 20 6f 62 6a 65 63 74  |er rooms, object|
0002d2d0  73 20 61 6e 64 0a 6d 61  6e 79 20 6f 74 68 65 72  |s and.many other|
0002d2e0  20 74 68 69 6e 67 73 20  28 65 2e 67 2e 2c 20 63  | things (e.g., c|
0002d2f0  6f 6d 70 61 73 73 20 64  69 72 65 63 74 69 6f 6e  |ompass direction|
0002d300  73 2c 20 6f 72 20 74 68  65 20 73 70 65 6c 6c 73  |s, or the spells|
0002d310  20 69 6e 20 22 45 6e 63  68 61 6e 74 65 72 22 20  | in "Enchanter" |
0002d320  65 74 0a 61 6c 29 2e 20  20 4d 61 6e 79 20 22 6f  |et.al).  Many "o|
0002d330  62 6a 65 63 74 73 22 20  61 72 65 20 6e 6f 74 20  |bjects" are not |
0002d340  70 6f 72 74 61 62 6c 65  20 61 6e 79 77 61 79 3a  |portable anyway:|
0002d350  20 77 61 6c 6c 73 2c 20  74 61 70 65 73 74 72 69  | walls, tapestri|
0002d360  65 73 2c 20 74 68 72 6f  6e 65 73 2c 0a 63 6f 6e  |es, thrones,.con|
0002d370  74 72 6f 6c 20 70 61 6e  65 6c 73 2c 20 63 6f 61  |trol panels, coa|
0002d380  6c 2d 67 72 69 6e 64 69  6e 67 20 6d 61 63 68 69  |l-grinding machi|
0002d390  6e 65 73 20 61 6e 64 20  73 6f 20 6f 6e 2e 0a 0a  |nes and so on...|
0002d3a0  41 73 20 61 20 72 75 6c  65 20 6f 66 20 74 68 75  |As a rule of thu|
0002d3b0  6d 62 2c 20 66 6f 75 72  20 6f 62 6a 65 63 74 73  |mb, four objects|
0002d3c0  20 74 6f 20 6f 6e 65 20  72 6f 6f 6d 20 69 73 20  | to one room is |
0002d3d0  61 62 6f 75 74 20 72 69  67 68 74 3a 20 74 68 69  |about right: thi|
0002d3e0  73 20 6d 65 61 6e 73 0a  74 68 65 72 65 20 77 69  |s means.there wi|
0002d3f0  6c 6c 20 62 65 2c 20 73  61 79 2c 20 36 30 20 72  |ll be, say, 60 r|
0002d400  6f 6f 6d 73 2e 20 20 4f  66 20 74 68 65 20 72 65  |ooms.  Of the re|
0002d410  6d 61 69 6e 69 6e 67 20  32 30 30 20 6f 62 6a 65  |maining 200 obje|
0002d420  63 74 73 2c 20 6f 6e 65  20 63 61 6e 20 65 78 70  |cts, one can exp|
0002d430  65 63 74 0a 31 35 2d 32  30 20 74 6f 20 62 65 20  |ect.15-20 to be |
0002d440  75 73 65 64 20 75 70 20  62 79 20 74 68 65 20 67  |used up by the g|
0002d450  61 6d 65 27 73 20 61 64  6d 69 6e 69 73 74 72 61  |ame's administra|
0002d460  74 69 6f 6e 20 28 65 67  2c 20 61 20 22 64 61 72  |tion (eg, a "dar|
0002d470  6b 6e 65 73 73 22 20 72  6f 6f 6d 2c 20 31 30 0a  |kness" room, 10.|
0002d480  63 6f 6d 70 61 73 73 20  64 69 72 65 63 74 69 6f  |compass directio|
0002d490  6e 73 2c 20 61 20 70 6c  61 79 65 72 20 61 6e 64  |ns, a player and|
0002d4a0  20 73 6f 20 6f 6e 29 2e  20 20 41 6e 6f 74 68 65  | so on).  Anothe|
0002d4b0  72 20 35 30 2d 37 35 20  6f 72 20 73 6f 20 6f 62  |r 50-75 or so ob|
0002d4c0  6a 65 63 74 73 20 6d 61  79 20 62 65 0a 70 6f 72  |jects may be.por|
0002d4d0  74 61 62 6c 65 20 62 75  74 20 74 68 65 20 6c 61  |table but the la|
0002d4e0  72 67 65 73 74 20 6e 75  6d 62 65 72 2c 20 61 74  |rgest number, at|
0002d4f0  20 6c 65 61 73 74 20 31  30 30 2c 20 77 69 6c 6c  | least 100, will|
0002d500  20 62 65 20 66 75 72 6e  69 74 75 72 65 2e 0a 0a  | be furniture...|
0002d510  53 6f 20 61 6e 20 6f 62  6a 65 63 74 20 6c 69 6d  |So an object lim|
0002d520  69 74 20 63 61 6e 20 62  65 20 61 20 62 6c 65 73  |it can be a bles|
0002d530  73 69 6e 67 20 61 73 20  77 65 6c 6c 20 61 73 20  |sing as well as |
0002d540  61 20 63 75 72 73 65 3a  20 69 74 20 66 6f 72 63  |a curse: it forc|
0002d550  65 73 20 74 68 65 0a 64  65 73 69 67 6e 65 72 20  |es the.designer |
0002d560  74 6f 20 6d 61 6b 65 20  74 68 65 20 67 61 6d 65  |to make the game|
0002d570  20 64 65 6e 73 65 2e 20  20 52 6f 6f 6d 73 20 61  | dense.  Rooms a|
0002d580  72 65 20 74 6f 6f 20 70  72 65 63 69 6f 75 73 20  |re too precious |
0002d590  74 6f 20 62 65 20 77 61  73 74 65 64 2e 0a 0a 53  |to be wasted...S|
0002d5a0  69 6d 69 6c 61 72 6c 79  2c 20 69 6e 20 74 68 65  |imilarly, in the|
0002d5b0  20 76 65 72 73 69 6f 6e  2d 33 20 66 6f 72 6d 61  | version-3 forma|
0002d5c0  74 2c 20 74 68 65 72 65  20 77 61 73 20 72 6f 6f  |t, there was roo|
0002d5d0  6d 20 66 6f 72 20 31 35  30 4b 20 6f 66 20 74 65  |m for 150K of te|
0002d5e0  78 74 20 61 74 20 74 68  65 0a 6d 6f 73 74 2e 20  |xt at the.most. |
0002d5f0  20 54 68 69 73 20 69 73  20 74 68 65 20 65 71 75  | This is the equ|
0002d600  69 76 61 6c 65 6e 74 20  6f 66 20 61 62 6f 75 74  |ivalent of about|
0002d610  20 61 20 71 75 61 72 74  65 72 20 6f 66 20 61 20  | a quarter of a |
0002d620  6d 6f 64 65 72 6e 20 6e  6f 76 65 6c 2c 20 6f 72  |modern novel, or|
0002d630  0a 70 65 72 68 61 70 73  20 74 68 65 20 61 6e 61  |.perhaps the ana|
0002d640  6c 6f 67 79 20 69 73 20  74 68 61 74 20 74 68 65  |logy is that the|
0002d650  72 65 20 61 72 65 20 65  6e 6f 75 67 68 20 62 79  |re are enough by|
0002d660  74 65 73 20 74 6f 20 73  74 6f 72 65 20 61 20 76  |tes to store a v|
0002d670  65 72 79 0a 73 75 62 73  74 61 6e 74 69 61 6c 20  |ery.substantial |
0002d680  62 6f 6f 6b 20 6f 66 20  70 6f 65 74 72 79 2e 20  |book of poetry. |
0002d690  52 6f 75 67 68 6c 79 2c  20 74 68 65 6e 2c 20 6f  |Roughly, then, o|
0002d6a0  6e 65 20 63 61 6e 20 61  66 66 6f 72 64 20 74 6f  |ne can afford to|
0002d6b0  20 73 70 65 6e 64 20 32  4b 20 6f 66 0a 74 65 78  | spend 2K of.tex|
0002d6c0  74 20 28 73 61 79 2c 20  33 35 30 20 77 6f 72 64  |t (say, 350 word|
0002d6d0  73 29 20 69 6e 20 65 61  63 68 20 72 6f 6f 6d 20  |s) in each room |
0002d6e0  2d 20 61 62 6f 75 74 20  74 65 6e 20 74 69 6d 65  |- about ten time|
0002d6f0  73 20 74 68 65 20 6c 65  76 65 6c 20 6f 66 20 64  |s the level of d|
0002d700  65 74 61 69 6c 20 6f 66  0a 74 68 65 20 6f 72 69  |etail of.the ori|
0002d710  67 69 6e 61 6c 20 6d 61  69 6e 66 72 61 6d 65 20  |ginal mainframe |
0002d720  41 64 76 65 6e 74 75 72  65 2e 0a 0a 53 6f 20 69  |Adventure...So i|
0002d730  74 20 69 73 20 77 69 73  65 20 74 6f 20 62 65 67  |t is wise to beg|
0002d740  69 6e 20 77 6f 72 6b 69  6e 67 20 6f 75 74 20 72  |in working out r|
0002d750  65 73 6f 75 72 63 65 73  20 65 61 72 6c 79 2e 20  |esources early. |
0002d760  20 49 66 20 74 68 65 72  65 20 61 72 65 20 6f 6e  | If there are on|
0002d770  6c 79 20 36 30 0a 72 6f  6f 6d 73 20 74 6f 20 61  |ly 60.rooms to a|
0002d780  6c 6c 6f 63 61 74 65 2c  20 68 6f 77 20 77 69 6c  |llocate, how wil|
0002d790  6c 20 74 68 65 79 20 62  65 20 64 69 76 69 64 65  |l they be divide|
0002d7a0  64 20 75 70 20 61 6d 6f  6e 67 20 74 68 65 20 73  |d up among the s|
0002d7b0  74 61 67 65 73 20 6f 66  20 74 68 65 0a 67 61 6d  |tages of the.gam|
0002d7c0  65 3f 20 20 49 73 20 74  68 65 20 70 6c 61 6e 20  |e?  Is the plan |
0002d7d0  74 6f 6f 20 61 6d 62 69  74 69 6f 75 73 2c 20 6f  |too ambitious, o|
0002d7e0  72 20 74 6f 6f 20 6d 65  65 6b 3f 0a 0a 0a 35 2e  |r too meek?...5.|
0002d7f0  20 20 53 74 72 75 63 74  75 72 65 3a 20 54 68 65  |  Structure: The|
0002d800  20 50 72 6f 6c 6f 67 75  65 0a 2d 2d 2d 2d 2d 2d  | Prologue.------|
0002d810  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
0002d820  2d 2d 2d 2d 2d 0a 0a 4a  75 73 74 20 61 73 20 6d  |-----..Just as m|
0002d830  6f 73 74 20 48 6f 6c 6c  79 77 6f 6f 64 20 66 69  |ost Hollywood fi|
0002d840  6c 6d 73 20 61 72 65 20  74 68 72 65 65 2d 61 63  |lms are three-ac|
0002d850  74 20 70 6c 61 79 73 20  28 66 6f 6c 6c 6f 77 69  |t plays (followi|
0002d860  6e 67 20 61 20 63 6f 6e  76 65 6e 74 69 6f 6e 0a  |ng a convention.|
0002d870  61 62 61 6e 64 6f 6e 65  64 20 64 65 63 61 64 65  |abandoned decade|
0002d880  73 20 61 67 6f 20 62 79  20 74 68 65 20 74 68 65  |s ago by the the|
0002d890  61 74 72 65 29 2c 20 74  68 65 72 65 20 69 73 20  |atre), there is |
0002d8a0  61 20 63 6f 6e 76 65 6e  74 69 6f 6e 61 6c 20 67  |a conventional g|
0002d8b0  61 6d 65 0a 73 74 72 75  63 74 75 72 65 2e 0a 0a  |ame.structure...|
0002d8c0  4d 6f 73 74 20 67 61 6d  65 73 20 68 61 76 65 20  |Most games have |
0002d8d0  61 20 70 72 6f 6c 6f 67  75 65 2c 20 61 20 6d 69  |a prologue, a mi|
0002d8e0  64 64 6c 65 20 67 61 6d  65 20 61 6e 64 20 61 6e  |ddle game and an|
0002d8f0  20 65 6e 64 20 67 61 6d  65 2c 20 75 73 75 61 6c  | end game, usual|
0002d900  6c 79 20 71 75 69 74 65  0a 63 6c 6f 73 65 64 20  |ly quite.closed |
0002d910  6f 66 66 20 66 72 6f 6d  20 65 61 63 68 20 6f 74  |off from each ot|
0002d920  68 65 72 2e 20 20 4f 6e  63 65 20 6f 6e 65 20 6f  |her.  Once one o|
0002d930  66 20 74 68 65 73 65 20  70 68 61 73 65 73 20 68  |f these phases h|
0002d940  61 73 20 62 65 65 6e 20  6c 65 66 74 2c 20 69 74  |as been left, it|
0002d950  0a 67 65 6e 65 72 61 6c  6c 79 20 63 61 6e 6e 6f  |.generally canno|
0002d960  74 20 62 65 20 72 65 74  75 72 6e 65 64 20 74 6f  |t be returned to|
0002d970  20 28 74 68 6f 75 67 68  20 74 68 65 72 65 20 69  | (though there i|
0002d980  73 20 73 6f 6d 65 74 69  6d 65 73 20 61 20 72 65  |s sometimes a re|
0002d990  70 72 69 73 65 20 61 74  20 74 68 65 0a 65 6e 64  |prise at the.end|
0002d9a0  2c 20 6f 72 20 61 20 70  72 65 6d 6f 6e 69 74 69  |, or a premoniti|
0002d9b0  6f 6e 20 61 74 20 74 68  65 20 62 65 67 69 6e 6e  |on at the beginn|
0002d9c0  69 6e 67 29 2e 0a 0a 0a  54 68 65 20 70 72 6f 6c  |ing)....The prol|
0002d9d0  6f 67 75 65 20 68 61 73  20 74 77 6f 20 76 69 74  |ogue has two vit|
0002d9e0  61 6c 20 64 75 74 69 65  73 2e 20 20 46 69 72 73  |al duties.  Firs|
0002d9f0  74 6c 79 2c 20 69 74 20  68 61 73 20 74 6f 20 65  |tly, it has to e|
0002da00  73 74 61 62 6c 69 73 68  20 61 6e 0a 61 74 6d 6f  |stablish an.atmo|
0002da10  73 70 68 65 72 65 2c 20  61 6e 64 20 67 69 76 65  |sphere, and give|
0002da20  20 6f 75 74 20 61 20 6c  69 74 74 6c 65 20 62 61  | out a little ba|
0002da30  63 6b 67 72 6f 75 6e 64  20 69 6e 66 6f 72 6d 61  |ckground informa|
0002da40  74 69 6f 6e 2e 0a 0a 54  68 65 20 6f 72 69 67 69  |tion...The origi|
0002da50  6e 61 6c 20 6d 61 69 6e  66 72 61 6d 65 20 41 64  |nal mainframe Ad|
0002da60  76 65 6e 74 75 72 65 20  68 61 64 20 74 68 65 20  |venture had the |
0002da70  61 62 6f 76 65 2d 67 72  6f 75 6e 64 20 6c 61 6e  |above-ground lan|
0002da80  64 73 63 61 70 65 3b 20  74 68 65 20 66 61 63 74  |dscape; the fact|
0002da90  0a 74 68 61 74 20 69 74  20 77 61 73 20 74 68 65  |.that it was the|
0002daa0  72 65 20 67 61 76 65 20  61 20 6d 75 63 68 20 67  |re gave a much g|
0002dab0  72 65 61 74 65 72 20 73  65 6e 73 65 20 6f 66 20  |reater sense of |
0002dac0  63 6c 61 75 73 74 72 6f  70 68 6f 62 69 61 20 61  |claustrophobia a|
0002dad0  6e 64 20 64 65 70 74 68  20 74 6f 0a 74 68 65 20  |nd depth to.the |
0002dae0  75 6e 64 65 72 67 72 6f  75 6e 64 20 62 75 6c 6b  |underground bulk|
0002daf0  20 6f 66 20 74 68 65 20  67 61 6d 65 2e 20 20 53  | of the game.  S|
0002db00  69 6d 69 6c 61 72 6c 79  2c 20 6d 6f 73 74 20 67  |imilarly, most g|
0002db10  61 6d 65 73 20 62 65 67  69 6e 20 77 69 74 68 0a  |ames begin with.|
0002db20  73 6f 6d 65 74 68 69 6e  67 20 72 65 6c 61 74 69  |something relati|
0002db30  76 65 6c 79 20 6d 75 6e  64 61 6e 65 20 28 74 68  |vely mundane (th|
0002db40  65 20 67 75 69 6c 64 2d  68 6f 75 73 65 20 69 6e  |e guild-house in|
0002db50  20 22 53 6f 72 63 65 72  65 72 22 2c 20 4b 65 6e  | "Sorcerer", Ken|
0002db60  73 69 6e 67 74 6f 6e 0a  47 61 72 64 65 6e 73 20  |sington.Gardens |
0002db70  69 6e 20 22 54 72 69 6e  69 74 79 22 29 20 6f 72  |in "Trinity") or|
0002db80  20 65 6c 73 65 20 74 68  65 79 20 69 6e 63 6c 75  | else they inclu|
0002db90  64 65 20 74 68 65 20 65  78 6f 74 69 63 20 77 69  |de the exotic wi|
0002dba0  74 68 20 64 72 65 61 6d  2d 73 65 71 75 65 6e 63  |th dream-sequenc|
0002dbb0  65 73 0a 28 66 6f 72 20  69 6e 73 74 61 6e 63 65  |es.(for instance|
0002dbc0  2c 20 22 54 68 65 20 4c  75 72 6b 69 6e 67 20 48  |, "The Lurking H|
0002dbd0  6f 72 72 6f 72 22 29 2e  20 20 53 65 6c 64 6f 6d  |orror").  Seldom|
0002dbe0  20 69 73 20 61 20 70 6c  61 79 65 72 20 64 72 6f  | is a player dro|
0002dbf0  70 70 65 64 20 69 6e 20  61 74 0a 74 68 65 20 64  |pped in at.the d|
0002dc00  65 65 70 20 65 6e 64 20  28 61 73 20 22 50 6c 75  |eep end (as "Plu|
0002dc10  6e 64 65 72 65 64 20 48  65 61 72 74 73 22 2c 20  |ndered Hearts", |
0002dc20  77 68 69 63 68 20 62 65  67 69 6e 73 20 69 6e 20  |which begins in |
0002dc30  74 68 65 20 6d 69 64 64  6c 65 20 6f 66 20 61 20  |the middle of a |
0002dc40  73 65 61 0a 62 61 74 74  6c 65 29 2e 0a 0a 41 6e  |sea.battle)...An|
0002dc50  64 20 74 68 65 20 6f 74  68 65 72 20 64 75 74 79  |d the other duty|
0002dc60  20 69 73 20 74 6f 20 61  74 74 72 61 63 74 20 61  | is to attract a|
0002dc70  20 70 6c 61 79 65 72 20  65 6e 6f 75 67 68 20 74  | player enough t|
0002dc80  6f 20 6d 61 6b 65 20 68  65 72 20 63 61 72 72 79  |o make her carry|
0002dc90  20 6f 6e 0a 70 6c 61 79  69 6e 67 2e 20 20 49 74  | on.playing.  It|
0002dca0  27 73 20 77 6f 72 74 68  20 69 6d 61 67 69 6e 69  |'s worth imagini|
0002dcb0  6e 67 20 74 68 61 74 20  74 68 65 20 70 6c 61 79  |ng that the play|
0002dcc0  65 72 20 69 73 20 6f 6e  6c 79 20 74 6f 79 69 6e  |er is only toyin|
0002dcd0  67 20 77 69 74 68 20 74  68 65 20 67 61 6d 65 0a  |g with the game.|
0002dce0  61 74 20 74 68 69 73 20  73 74 61 67 65 2c 20 61  |at this stage, a|
0002dcf0  6e 64 20 69 73 6e 27 74  20 64 72 61 77 69 6e 67  |nd isn't drawing|
0002dd00  20 61 20 6d 61 70 20 6f  72 20 62 65 69 6e 67 20  | a map or being |
0002dd10  61 74 20 61 6c 6c 20 63  61 72 65 66 75 6c 2e 20  |at all careful. |
0002dd20  20 49 66 20 74 68 65 0a  70 72 6f 6c 6f 67 75 65  | If the.prologue|
0002dd30  20 69 73 20 62 69 67 2c  20 74 68 65 20 70 6c 61  | is big, the pla|
0002dd40  79 65 72 20 77 69 6c 6c  20 71 75 69 63 6b 6c 79  |yer will quickly|
0002dd50  20 67 65 74 20 6c 6f 73  74 20 61 6e 64 20 67 69  | get lost and gi|
0002dd60  76 65 20 75 70 2e 20 20  49 66 20 69 74 20 69 73  |ve up.  If it is|
0002dd70  20 74 6f 6f 0a 68 61 72  64 2c 20 74 68 65 6e 20  | too.hard, then |
0002dd80  6d 61 6e 79 20 70 6c 61  79 65 72 73 20 73 69 6d  |many players sim|
0002dd90  70 6c 79 20 77 6f 6e 27  74 20 72 65 61 63 68 20  |ply won't reach |
0002dda0  74 68 65 20 6d 69 64 64  6c 65 20 67 61 6d 65 2e  |the middle game.|
0002ddb0  0a 0a 50 65 72 68 61 70  73 20 65 69 67 68 74 20  |..Perhaps eight |
0002ddc0  74 6f 20 74 65 6e 20 72  6f 6f 6d 73 20 69 73 20  |to ten rooms is |
0002ddd0  74 68 65 20 6c 61 72 67  65 73 74 20 61 20 70 72  |the largest a pr|
0002dde0  6f 6c 6f 67 75 65 20 6f  75 67 68 74 20 74 6f 20  |ologue ought to |
0002ddf0  62 65 2c 20 61 6e 64 20  65 76 65 6e 0a 74 68 65  |be, and even.the|
0002de00  6e 20 69 74 20 73 68 6f  75 6c 64 20 68 61 76 65  |n it should have|
0002de10  20 61 20 73 69 6d 70 6c  65 20 28 65 61 73 69 6c  | a simple (easil|
0002de20  79 20 72 65 6d 65 6d 62  65 72 65 64 29 20 6d 61  |y remembered) ma|
0002de30  70 20 6c 61 79 6f 75 74  2e 20 20 54 68 65 20 70  |p layout.  The p|
0002de40  6c 61 79 65 72 20 63 61  6e 0a 70 69 63 6b 20 75  |layer can.pick u|
0002de50  70 20 61 20 66 65 77 20  75 73 65 66 75 6c 20 69  |p a few useful i|
0002de60  74 65 6d 73 20 2d 20 74  68 65 20 74 72 61 64 69  |tems - the tradi|
0002de70  74 69 6f 6e 61 6c 20 62  6f 74 74 6c 65 2c 20 6c  |tional bottle, l|
0002de80  61 6d 70 20 61 6e 64 20  6b 65 79 2c 20 77 68 61  |amp and key, wha|
0002de90  74 65 76 65 72 0a 74 68  65 79 20 6d 61 79 20 62  |tever.they may b|
0002dea0  65 20 69 6e 20 74 68 69  73 20 67 61 6d 65 20 2d  |e in this game -|
0002deb0  20 61 6e 64 20 73 65 74  20 6f 75 74 20 6f 6e 20  | and set out on |
0002dec0  74 68 65 20 6a 6f 75 72  6e 65 79 20 62 79 20 6f  |the journey by o|
0002ded0  6e 65 20 6d 65 61 6e 73  20 6f 72 0a 61 6e 6f 74  |ne means or.anot|
0002dee0  68 65 72 2e 0a 0a 0a 36  2e 20 20 54 68 65 20 4d  |her....6.  The M|
0002def0  69 64 64 6c 65 20 47 61  6d 65 0a 2d 2d 2d 2d 2d  |iddle Game.-----|
0002df00  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0a 0a  |--------------..|
0002df10  54 68 65 20 6d 69 64 64  6c 65 20 67 61 6d 65 20  |The middle game |
0002df20  69 73 20 62 6f 74 68 20  74 68 65 20 6c 61 72 67  |is both the larg|
0002df30  65 73 74 20 61 6e 64 20  74 68 65 20 6f 6e 65 20  |est and the one |
0002df40  77 68 69 63 68 20 6c 65  61 73 74 20 6e 65 65 64  |which least need|
0002df50  73 20 64 65 74 61 69 6c  65 64 0a 70 6c 61 6e 6e  |s detailed.plann|
0002df60  69 6e 67 20 69 6e 20 61  64 76 61 6e 63 65 2c 20  |ing in advance, |
0002df70  6f 64 64 6c 79 20 65 6e  6f 75 67 68 2c 20 62 65  |oddly enough, be|
0002df80  63 61 75 73 65 20 69 74  20 69 73 20 74 68 65 20  |cause it is the |
0002df90  6f 6e 65 20 77 68 69 63  68 20 63 6f 6d 65 73 20  |one which comes |
0002dfa0  6e 65 61 72 65 73 74 0a  74 6f 20 62 65 69 6e 67  |nearest.to being|
0002dfb0  20 61 20 63 6f 6c 6c 65  63 74 69 6f 6e 20 6f 66  | a collection of|
0002dfc0  20 70 75 7a 7a 6c 65 73  2e 0a 0a 54 68 65 72 65  | puzzles...There|
0002dfd0  20 6d 61 79 20 62 65 20  35 30 20 6f 72 20 73 6f  | may be 50 or so|
0002dfe0  20 6c 6f 63 61 74 69 6f  6e 73 20 69 6e 20 74 68  | locations in th|
0002dff0  65 20 6d 69 64 64 6c 65  20 67 61 6d 65 2e 20 20  |e middle game.  |
0002e000  48 6f 77 20 61 72 65 20  74 68 65 79 20 74 6f 20  |How are they to |
0002e010  62 65 0a 64 69 76 69 64  65 64 20 75 70 3f 20 20  |be.divided up?  |
0002e020  57 69 6c 6c 20 74 68 65  72 65 20 62 65 20 6f 6e  |Will there be on|
0002e030  65 20 68 75 67 65 20 6c  61 6e 64 73 63 61 70 65  |e huge landscape|
0002e040  2c 20 6f 72 20 77 69 6c  6c 20 69 74 20 64 69 76  |, or will it div|
0002e050  69 64 65 20 69 6e 74 6f  20 7a 6f 6e 65 73 3f 20  |ide into zones? |
0002e060  0a 48 65 72 65 2c 20 64  65 73 69 67 6e 65 72 73  |.Here, designers|
0002e070  20 6f 66 74 65 6e 20 74  72 79 20 74 6f 20 69 6d  | often try to im|
0002e080  70 6f 73 65 20 73 6f 6d  65 20 63 6f 68 65 72 65  |pose some cohere|
0002e090  6e 63 79 20 62 79 20 6d  61 6b 69 6e 67 20 73 79  |ncy by making sy|
0002e0a0  6d 6d 65 74 72 69 63 61  6c 0a 70 61 74 74 65 72  |mmetrical.patter|
0002e0b0  6e 73 3a 20 61 72 65 61  73 20 63 6f 72 72 65 73  |ns: areas corres|
0002e0c0  70 6f 6e 64 69 6e 67 20  74 6f 20 74 68 65 20 66  |ponding to the f|
0002e0d0  6f 75 72 20 77 69 6e 64  73 2c 20 6f 72 20 74 68  |our winds, or th|
0002e0e0  65 20 74 77 65 6c 76 65  20 73 69 67 6e 73 20 6f  |e twelve signs o|
0002e0f0  66 20 74 68 65 0a 5a 6f  64 69 61 63 2c 20 66 6f  |f the.Zodiac, fo|
0002e100  72 20 69 6e 73 74 61 6e  63 65 2e 20 20 47 61 69  |r instance.  Gai|
0002e110  6e 69 6e 67 20 61 63 63  65 73 73 20 74 6f 20 74  |ning access to t|
0002e120  68 65 73 65 20 61 72 65  61 73 2c 20 6f 6e 65 20  |hese areas, one |
0002e130  62 79 20 6f 6e 65 2c 20  70 72 6f 76 69 64 65 73  |by one, provides|
0002e140  0a 61 20 73 65 71 75 65  6e 63 65 20 6f 66 20 70  |.a sequence of p|
0002e150  72 6f 62 6c 65 6d 73 20  61 6e 64 20 72 65 77 61  |roblems and rewa|
0002e160  72 64 73 20 66 6f 72 20  74 68 65 20 70 6c 61 79  |rds for the play|
0002e170  65 72 2e 0a 0a 50 65 72  68 61 70 73 20 74 68 65  |er...Perhaps the|
0002e180  20 66 75 6e 64 61 6d 65  6e 74 61 6c 20 71 75 65  | fundamental que|
0002e190  73 74 69 6f 6e 20 69 73  3a 20 77 69 64 65 20 6f  |stion is: wide o|
0002e1a0  72 20 6e 61 72 72 6f 77  3f 20 20 48 6f 77 20 6d  |r narrow?  How m|
0002e1b0  75 63 68 20 77 69 6c 6c  20 62 65 0a 76 69 73 69  |uch will be.visi|
0002e1c0  62 6c 65 20 61 74 20 6f  6e 63 65 3f 0a 0a 53 6f  |ble at once?..So|
0002e1d0  6d 65 20 67 61 6d 65 73  2c 20 73 75 63 68 20 61  |me games, such a|
0002e1e0  73 20 74 68 65 20 6f 72  69 67 69 6e 61 6c 20 41  |s the original A|
0002e1f0  64 76 65 6e 74 75 72 65  2c 20 61 72 65 20 76 65  |dventure, are ve|
0002e200  72 79 20 77 69 64 65 3a  20 74 68 65 72 65 20 61  |ry wide: there a|
0002e210  72 65 20 74 68 69 72 74  79 20 6f 72 0a 73 6f 20  |re thirty or.so |
0002e220  70 75 7a 7a 6c 65 73 2c  20 61 6c 6c 20 65 61 73  |puzzles, all eas|
0002e230  69 6c 79 20 61 76 61 69  6c 61 62 6c 65 2c 20 6e  |ily available, n|
0002e240  6f 6e 65 20 6c 65 61 64  69 6e 67 20 74 6f 20 65  |one leading to e|
0002e250  61 63 68 20 6f 74 68 65  72 2e 20 20 4f 74 68 65  |ach other.  Othe|
0002e260  72 73 2c 20 73 75 63 68  20 61 73 0a 22 53 70 65  |rs, such as."Spe|
0002e270  6c 6c 62 72 65 61 6b 65  72 22 2c 20 61 72 65 20  |llbreaker", are |
0002e280  76 65 72 79 20 6e 61 72  72 6f 77 3a 20 61 20 6c  |very narrow: a l|
0002e290  6f 6e 67 20 73 65 71 75  65 6e 63 65 20 6f 66 20  |ong sequence of |
0002e2a0  70 75 7a 7a 6c 65 73 2c  20 65 61 63 68 20 6f 66  |puzzles, each of|
0002e2b0  20 77 68 69 63 68 0a 6c  65 61 64 73 20 6f 6e 6c  | which.leads onl|
0002e2c0  79 20 74 6f 20 61 20 63  68 61 6e 63 65 20 74 6f  |y to a chance to|
0002e2d0  20 73 6f 6c 76 65 20 74  68 65 20 6e 65 78 74 2e  | solve the next.|
0002e2e0  0a 0a 41 20 63 6f 6d 70  72 6f 6d 69 73 65 20 69  |..A compromise i|
0002e2f0  73 20 70 72 6f 62 61 62  6c 79 20 62 65 73 74 2e  |s probably best.|
0002e300  20 20 57 69 64 65 20 67  61 6d 65 73 20 61 72 65  |  Wide games are|
0002e310  20 6e 6f 74 20 76 65 72  79 20 69 6e 74 65 72 65  | not very intere|
0002e320  73 74 69 6e 67 20 28 61  6e 64 0a 61 6e 6e 6f 79  |sting (and.annoy|
0002e330  69 6e 67 6c 79 20 75 6e  72 65 77 61 72 64 69 6e  |ingly unrewardin|
0002e340  67 20 73 69 6e 63 65 20  6f 6e 65 20 6b 6e 6f 77  |g since one know|
0002e350  73 20 74 68 61 74 20 61  20 70 72 6f 62 6c 65 6d  |s that a problem|
0002e360  20 73 6f 6c 76 65 64 20  63 61 6e 6e 6f 74 20 6c  | solved cannot l|
0002e370  65 61 64 20 74 6f 0a 61  20 77 68 6f 6c 65 20 6e  |ead to.a whole n|
0002e380  65 77 20 6c 61 6e 64 73  63 61 70 65 29 2c 20 77  |ew landscape), w|
0002e390  68 69 6c 65 20 6e 61 72  72 6f 77 20 6f 6e 65 73  |hile narrow ones|
0002e3a0  20 63 61 6e 20 69 6e 20  61 20 77 61 79 20 62 65  | can in a way be|
0002e3b0  20 65 61 73 79 3a 20 69  66 20 6f 6e 6c 79 20 6f  | easy: if only o|
0002e3c0  6e 65 0a 70 75 7a 7a 6c  65 20 69 73 20 61 76 61  |ne.puzzle is ava|
0002e3d0  69 6c 61 62 6c 65 20 61  74 20 61 20 74 69 6d 65  |ilable at a time|
0002e3e0  2c 20 74 68 65 20 70 6c  61 79 65 72 20 77 69 6c  |, the player wil|
0002e3f0  6c 20 6a 75 73 74 20 63  6f 6e 63 65 6e 74 72 61  |l just concentra|
0002e400  74 65 20 6f 6e 20 69 74  2c 20 61 6e 64 0a 77 69  |te on it, and.wi|
0002e410  6c 6c 20 6e 6f 74 20 62  65 20 68 65 6c 64 20 75  |ll not be held u|
0002e420  70 20 62 79 20 74 72 79  69 6e 67 20 74 6f 20 75  |p by trying to u|
0002e430  73 65 20 6f 62 6a 65 63  74 73 20 77 68 69 63 68  |se objects which|
0002e440  20 61 72 65 20 70 72 6f  76 69 64 65 64 20 66 6f  | are provided fo|
0002e450  72 0a 64 69 66 66 65 72  65 6e 74 20 70 75 7a 7a  |r.different puzz|
0002e460  6c 65 73 2e 0a 0a 4a 75  73 74 20 61 73 20 74 68  |les...Just as th|
0002e470  65 20 6e 75 6d 62 65 72  20 6f 66 20 6c 6f 63 61  |e number of loca|
0002e480  74 69 6f 6e 73 20 63 61  6e 20 62 65 20 64 69 76  |tions can be div|
0002e490  69 64 65 64 20 69 6e 74  6f 20 72 6f 75 67 68 20  |ided into rough |
0002e4a0  63 6c 61 73 73 65 73 20  61 74 20 74 68 69 73 20  |classes at this |
0002e4b0  0a 73 74 61 67 65 2c 20  73 6f 20 63 61 6e 20 74  |.stage, so can t|
0002e4c0  68 65 20 6e 75 6d 62 65  72 20 6f 66 20 28 70 6f  |he number of (po|
0002e4d0  72 74 61 62 6c 65 29 20  6f 62 6a 65 63 74 73 2e  |rtable) objects.|
0002e4e0  20 20 49 6e 20 6d 6f 73  74 20 67 61 6d 65 73 2c  |  In most games,|
0002e4f0  20 74 68 65 72 65 20 61  72 65 0a 61 20 66 65 77  | there are.a few|
0002e500  20 66 61 6d 69 6c 69 65  73 20 6f 66 20 6f 62 6a  | families of obj|
0002e510  65 63 74 73 3a 20 74 68  65 20 63 75 62 65 73 20  |ects: the cubes |
0002e520  61 6e 64 20 73 63 72 6f  6c 6c 73 20 69 6e 20 22  |and scrolls in "|
0002e530  53 70 65 6c 6c 62 72 65  61 6b 65 72 22 2c 20 74  |Spellbreaker", t|
0002e540  68 65 0a 72 6f 64 73 20  61 6e 64 20 54 61 72 6f  |he.rods and Taro|
0002e550  74 20 63 61 72 64 73 20  69 6e 20 22 43 75 72 73  |t cards in "Curs|
0002e560  65 73 22 20 61 6e 64 20  73 6f 20 6f 6e 2e 20 20  |es" and so on.  |
0002e570  54 68 65 73 65 20 61 72  65 20 74 6f 20 62 65 20  |These are to be |
0002e580  73 63 61 74 74 65 72 65  64 0a 61 62 6f 75 74 20  |scattered.about |
0002e590  74 68 65 20 6d 61 70 2c  20 6f 66 20 63 6f 75 72  |the map, of cour|
0002e5a0  73 65 2c 20 61 6e 64 20  66 6f 75 6e 64 20 6f 6e  |se, and found on|
0002e5b0  65 20 62 79 20 6f 6e 65  20 62 79 20 61 20 70 6c  |e by one by a pl|
0002e5c0  61 79 65 72 20 77 68 6f  20 77 69 6c 6c 20 63 6f  |ayer who will co|
0002e5d0  6d 65 20 74 6f 0a 76 61  6c 75 65 20 74 68 65 6d  |me to.value them|
0002e5e0  20 68 69 67 68 6c 79 2e  20 20 54 68 65 20 72 65  | highly.  The re|
0002e5f0  61 6c 6c 79 20 69 6d 70  6f 72 74 61 6e 74 20 72  |ally important r|
0002e600  75 6c 65 73 20 6f 66 20  74 68 65 20 67 61 6d 65  |ules of the game|
0002e610  20 74 6f 20 77 6f 72 6b  20 6f 75 74 20 61 74 0a  | to work out at.|
0002e620  74 68 69 73 20 73 74 61  67 65 20 61 72 65 20 74  |this stage are t|
0002e630  68 6f 73 65 20 74 6f 20  64 6f 20 77 69 74 68 20  |hose to do with |
0002e640  74 68 65 73 65 20 66 61  6d 69 6c 69 65 73 20 6f  |these families o|
0002e650  66 20 6f 62 6a 65 63 74  73 2e 20 20 57 68 61 74  |f objects.  What|
0002e660  20 61 72 65 20 74 68 65  79 0a 66 6f 72 3f 20 20  | are they.for?  |
0002e670  49 73 20 74 68 65 72 65  20 61 20 73 70 65 63 69  |Is there a speci|
0002e680  61 6c 20 77 61 79 20 74  6f 20 75 73 65 20 74 68  |al way to use th|
0002e690  65 6d 3f 20 20 41 6e 64  20 74 68 65 73 65 20 61  |em?  And these a|
0002e6a0  72 65 20 74 68 65 20 66  69 72 73 74 20 70 75 7a  |re the first puz|
0002e6b0  7a 6c 65 73 0a 74 6f 20  69 6d 70 6c 65 6d 65 6e  |zles.to implemen|
0002e6c0  74 2e 0a 0a 4d 6f 73 74  20 67 61 6d 65 73 20 69  |t...Most games i|
0002e6d0  6e 20 74 68 65 20 22 66  61 6e 74 61 73 79 22 20  |n the "fantasy" |
0002e6e0  73 74 79 6c 65 20 68 61  76 65 20 73 6f 6d 65 20  |style have some |
0002e6f0  6b 69 6e 64 20 6f 66 20  22 6d 61 67 69 63 22 20  |kind of "magic" |
0002e700  73 79 73 74 65 6d 2c 20  73 6f 6d 65 0a 77 61 79  |system, some.way|
0002e710  20 6f 66 20 61 6c 6c 6f  77 69 6e 67 20 74 68 65  | of allowing the|
0002e720  20 70 6c 61 79 65 72 20  74 6f 20 74 72 61 6e 73  | player to trans|
0002e730  66 6f 72 6d 20 68 65 72  20 73 75 72 72 6f 75 6e  |form her surroun|
0002e740  64 69 6e 67 73 20 69 6e  20 61 20 77 68 6f 6c 6c  |dings in a wholl|
0002e750  79 0a 75 6e 65 78 70 65  63 74 65 64 20 61 6e 64  |y.unexpected and|
0002e760  20 64 72 61 6d 61 74 69  63 20 77 61 79 20 77 68  | dramatic way wh|
0002e770  69 63 68 20 77 6f 75 6c  64 20 6e 6f 74 20 62 65  |ich would not be|
0002e780  20 70 6f 73 73 69 62 6c  65 20 69 6e 20 72 65 61  | possible in rea|
0002e790  6c 20 6c 69 66 65 2e 20  20 54 68 65 72 65 0a 61  |l life.  There.a|
0002e7a0  72 65 20 74 77 6f 20 64  61 6e 67 65 72 73 20 68  |re two dangers h|
0002e7b0  65 72 65 3a 20 66 69 72  73 74 6c 79 2c 20 6d 61  |ere: firstly, ma|
0002e7c0  6e 79 20 73 79 73 74 65  6d 73 20 68 61 76 65 20  |ny systems have |
0002e7d0  61 6c 72 65 61 64 79 20  62 65 65 6e 20 74 72 69  |already been tri|
0002e7e0  65 64 20 2d 20 61 6e 64  0a 6e 61 74 75 72 61 6c  |ed - and.natural|
0002e7f0  6c 79 20 61 20 64 65 73  69 67 6e 65 72 20 77 61  |ly a designer wa|
0002e800  6e 74 73 20 74 6f 20 66  69 6e 64 20 61 20 6e 65  |nts to find a ne|
0002e810  77 20 6f 6e 65 2c 20 73  6f 6d 65 68 6f 77 20 6c  |w one, somehow l|
0002e820  69 6e 6b 65 64 20 74 6f  20 74 68 65 20 6f 62 6a  |inked to the obj|
0002e830  65 63 74 73 0a 6f 66 20  74 68 65 20 67 61 6d 65  |ects.of the game|
0002e840  20 61 6e 64 20 67 72 61  64 75 61 6c 6c 79 20 72  | and gradually r|
0002e850  65 76 65 61 6c 65 64 20  64 75 72 69 6e 67 20 69  |evealed during i|
0002e860  74 2e 0a 0a 53 65 63 6f  6e 64 6c 79 2c 20 6d 61  |t...Secondly, ma|
0002e870  67 69 63 20 69 73 20 73  75 72 72 65 61 6c 20 61  |gic is surreal a|
0002e880  6c 6d 6f 73 74 20 62 79  20 64 65 66 69 6e 69 74  |lmost by definit|
0002e890  69 6f 6e 20 61 6e 64 20  73 75 72 72 65 61 6c 69  |ion and surreali|
0002e8a0  73 6d 20 69 73 20 64 61  6e 67 65 72 6f 75 73 0a  |sm is dangerous.|
0002e8b0  28 75 6e 6c 65 73 73 20  69 74 20 69 73 20 64 65  |(unless it is de|
0002e8c0  6c 69 62 65 72 61 74 65  2c 20 73 6f 6d 65 74 68  |liberate, someth|
0002e8d0  69 6e 67 20 6f 6e 6c 79  20 72 65 61 6c 6c 79 20  |ing only really |
0002e8e0  61 74 74 65 6d 70 74 65  64 20 6f 6e 63 65 2c 20  |attempted once, |
0002e8f0  69 6e 20 22 4e 6f 72 64  20 27 6e 27 0a 42 75 72  |in "Nord 'n'.Bur|
0002e900  74 20 43 6f 75 6c 64 6e  27 74 20 4d 61 6b 65 20  |t Couldn't Make |
0002e910  48 65 61 64 20 4e 6f 72  20 54 61 69 6c 20 4f 66  |Head Nor Tail Of|
0002e920  20 49 74 22 29 2e 20 20  54 68 65 20 6d 61 72 76  | It").  The marv|
0002e930  65 6c 6c 6f 75 73 20 54  2d 52 65 6d 6f 76 69 6e  |ellous T-Removin|
0002e940  67 20 4d 61 63 68 69 6e  65 0a 6f 66 20 22 4c 65  |g Machine.of "Le|
0002e950  61 74 68 65 72 20 47 6f  64 64 65 73 73 65 73 20  |ather Goddesses |
0002e960  6f 66 20 50 68 6f 62 6f  73 22 20 28 77 68 69 63  |of Phobos" (whic|
0002e970  68 20 63 61 6e 2c 20 66  6f 72 20 69 6e 73 74 61  |h can, for insta|
0002e980  6e 63 65 2c 20 74 72 61  6e 73 66 6f 72 6d 20 61  |nce, transform a|
0002e990  0a 72 61 62 62 69 74 20  74 6f 20 61 20 72 61 62  |.rabbit to a rab|
0002e9a0  62 69 29 20 69 73 20 61  20 73 74 72 6f 6b 65 20  |bi) is a stroke |
0002e9b0  6f 66 20 67 65 6e 69 75  73 20 62 75 74 20 61 20  |of genius but a |
0002e9c0  72 69 73 6b 79 20 6f 6e  65 2e 20 20 54 68 65 20  |risky one.  The |
0002e9d0  61 64 76 65 6e 74 75 72  65 0a 67 61 6d 65 20 69  |adventure.game i|
0002e9e0  73 20 63 65 6e 74 72 65  64 20 6f 6e 20 77 6f 72  |s centred on wor|
0002e9f0  64 73 20 61 6e 64 20 64  65 73 63 72 69 70 74 69  |ds and descripti|
0002ea00  6f 6e 73 2c 20 62 75 74  20 74 68 65 20 77 6f 72  |ons, but the wor|
0002ea10  6c 64 20 69 74 20 69 6e  63 61 72 6e 61 74 65 73  |ld it incarnates|
0002ea20  20 69 73 0a 73 75 70 70  6f 73 65 64 20 74 6f 20  | is.supposed to |
0002ea30  62 65 20 73 6f 6c 69 64  20 61 6e 64 20 72 65 61  |be solid and rea|
0002ea40  6c 2c 20 73 75 72 65 6c  79 2c 20 61 6e 64 20 6e  |l, surely, and n|
0002ea50  6f 74 20 64 65 70 65 6e  64 65 6e 74 20 6f 6e 20  |ot dependent on |
0002ea60  68 6f 77 20 69 74 20 69  73 0a 64 65 73 63 72 69  |how it is.descri|
0002ea70  62 65 64 3f 20 20 54 6f  20 70 72 65 76 65 6e 74  |bed?  To prevent|
0002ea80  20 6d 61 67 69 63 20 66  72 6f 6d 20 64 65 72 61  | magic from dera|
0002ea90  69 6c 69 6e 67 20 74 68  65 20 69 6c 6c 75 73 69  |iling the illusi|
0002eaa0  6f 6e 2c 20 69 74 20 6d  75 73 74 20 68 61 76 65  |on, it must have|
0002eab0  20 61 0a 63 6f 68 65 72  65 6e 74 20 72 61 74 69  | a.coherent rati|
0002eac0  6f 6e 61 6c 65 2e 20 20  54 68 69 73 20 69 73 20  |onale.  This is |
0002ead0  70 65 72 68 61 70 73 20  74 68 65 20 64 65 66 69  |perhaps the defi|
0002eae0  6e 69 74 69 6f 6e 20 6f  66 20 6d 79 73 74 69 63  |nition of mystic|
0002eaf0  20 72 65 6c 69 67 69 6f  6e 2c 20 61 6e 64 0a 74  | religion, and.t|
0002eb00  68 65 72 65 20 61 72 65  20 70 6c 65 6e 74 79 20  |here are plenty |
0002eb10  61 72 6f 75 6e 64 20 74  6f 20 73 74 65 61 6c 20  |around to steal |
0002eb20  66 72 6f 6d 2e 0a 0a 0a  53 6f 20 61 20 66 69 72  |from....So a fir|
0002eb30  73 74 2d 64 72 61 66 74  20 64 65 73 69 67 6e 20  |st-draft design |
0002eb40  6f 66 20 74 68 65 20 6d  69 64 64 6c 65 20 67 61  |of the middle ga|
0002eb50  6d 65 20 6d 61 79 20 6a  75 73 74 20 63 6f 6e 73  |me may just cons|
0002eb60  69 73 74 20 6f 66 20 61  20 72 6f 75 67 68 0a 73  |ist of a rough.s|
0002eb70  6b 65 74 63 68 20 6f 66  20 61 20 6d 61 70 20 64  |ketch of a map d|
0002eb80  69 76 69 64 65 64 20 69  6e 74 6f 20 7a 6f 6e 65  |ivided into zone|
0002eb90  73 2c 20 77 69 74 68 20  61 6e 20 69 64 65 61 20  |s, with an idea |
0002eba0  66 6f 72 20 73 6f 6d 65  20 65 76 65 6e 74 20 6f  |for some event o|
0002ebb0  72 20 6d 65 65 74 69 6e  67 0a 74 6f 20 74 61 6b  |r meeting.to tak|
0002ebc0  65 20 70 6c 61 63 65 20  69 6e 20 65 61 63 68 2c  |e place in each,|
0002ebd0  20 74 6f 67 65 74 68 65  72 20 77 69 74 68 20 73  | together with s|
0002ebe0  6f 6d 65 20 67 65 6e 65  72 61 6c 20 69 64 65 61  |ome general idea|
0002ebf0  73 20 66 6f 72 20 6f 62  6a 65 63 74 73 2e 20 0a  |s for objects. .|
0002ec00  53 6c 6f 74 74 69 6e 67  20 61 63 74 75 61 6c 20  |Slotting actual |
0002ec10  70 75 7a 7a 6c 65 73 20  69 6e 20 63 61 6e 20 63  |puzzles in can c|
0002ec20  6f 6d 65 20 6c 61 74 65  72 2e 0a 0a 0a 37 2e 20  |ome later....7. |
0002ec30  20 54 68 65 20 45 6e 64  20 47 61 6d 65 0a 2d 2d  | The End Game.--|
0002ec40  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0a 0a  |--------------..|
0002ec50  53 6f 6d 65 20 65 6e 64  20 67 61 6d 65 73 20 61  |Some end games a|
0002ec60  72 65 20 73 6d 61 6c 6c  20 28 22 54 68 65 20 4c  |re small ("The L|
0002ec70  75 72 6b 69 6e 67 20 48  6f 72 72 6f 72 22 20 6f  |urking Horror" o|
0002ec80  72 20 22 53 6f 72 63 65  72 65 72 22 20 66 6f 72  |r "Sorcerer" for|
0002ec90  20 69 6e 73 74 61 6e 63  65 29 2c 0a 6f 74 68 65  | instance),.othe|
0002eca0  72 73 20 6c 61 72 67 65  20 28 74 68 65 20 6d 61  |rs large (the ma|
0002ecb0  73 74 65 72 20 67 61 6d  65 20 69 6e 20 73 6f 6d  |ster game in som|
0002ecc0  65 20 69 6d 70 6c 65 6d  65 6e 74 61 74 69 6f 6e  |e implementation|
0002ecd0  73 20 6f 66 20 74 68 65  20 6d 61 69 6e 66 72 61  |s of the mainfra|
0002ece0  6d 65 0a 41 64 76 65 6e  74 75 72 65 29 2e 20 20  |me.Adventure).  |
0002ecf0  4e 6f 6e 65 74 68 65 6c  65 73 73 2c 20 61 6c 6d  |Nonetheless, alm|
0002ed00  6f 73 74 20 61 6c 6c 20  67 61 6d 65 73 20 68 61  |ost all games ha|
0002ed10  76 65 20 6f 6e 65 2e 0a  0a 45 6e 64 20 67 61 6d  |ve one...End gam|
0002ed20  65 73 20 73 65 72 76 65  20 74 77 6f 20 70 75 72  |es serve two pur|
0002ed30  70 6f 73 65 73 2e 20 20  46 69 72 73 74 6c 79 20  |poses.  Firstly |
0002ed40  74 68 65 79 20 67 69 76  65 20 74 68 65 20 70 6c  |they give the pl|
0002ed50  61 79 65 72 20 61 20 73  65 6e 73 65 20 6f 66 20  |ayer a sense of |
0002ed60  62 65 69 6e 67 0a 6e 65  61 72 20 74 6f 20 73 75  |being.near to su|
0002ed70  63 63 65 73 73 2c 20 61  6e 64 20 63 61 6e 20 62  |ccess, and can b|
0002ed80  65 20 75 73 65 64 20 74  6f 20 63 75 6c 6d 69 6e  |e used to culmin|
0002ed90  61 74 65 20 74 68 65 20  70 6c 6f 74 2c 20 74 6f  |ate the plot, to|
0002eda0  20 72 65 76 65 61 6c 20  74 68 65 20 67 61 6d 65  | reveal the game|
0002edb0  27 73 0a 73 65 63 72 65  74 73 2e 20 20 54 68 69  |'s.secrets.  Thi|
0002edc0  73 20 69 73 20 6f 62 76  69 6f 75 73 20 65 6e 6f  |s is obvious eno|
0002edd0  75 67 68 2e 20 20 42 75  74 20 73 65 63 6f 6e 64  |ugh.  But second|
0002ede0  6c 79 20 74 68 65 79 20  61 6c 73 6f 20 73 65 72  |ly they also ser|
0002edf0  76 65 20 74 6f 20 73 74  6f 70 20 74 68 65 0a 66  |ve to stop the.f|
0002ee00  69 6e 61 6c 20 73 74 61  67 65 20 6f 66 20 74 68  |inal stage of th|
0002ee10  65 20 67 61 6d 65 20 66  72 6f 6d 20 62 65 69 6e  |e game from bein|
0002ee20  67 20 74 6f 6f 20 68 61  72 64 2e 0a 0a 41 73 20  |g too hard...As |
0002ee30  61 20 64 65 73 69 67 6e  65 72 2c 20 79 6f 75 20  |a designer, you |
0002ee40  64 6f 6e 27 74 20 75 73  75 61 6c 6c 79 20 77 61  |don't usually wa|
0002ee50  6e 74 20 74 68 65 20 6c  61 73 74 20 73 74 65 70  |nt the last step|
0002ee60  20 74 6f 20 62 65 20 74  6f 6f 20 64 69 66 66 69  | to be too diffi|
0002ee70  63 75 6c 74 3b 20 79 6f  75 0a 77 61 6e 74 20 74  |cult; you.want t|
0002ee80  6f 20 67 69 76 65 20 74  68 65 20 70 6c 61 79 65  |o give the playe|
0002ee90  72 20 74 68 65 20 73 61  74 69 73 66 61 63 74 69  |r the satisfacti|
0002eea0  6f 6e 20 6f 66 20 66 69  6e 69 73 68 69 6e 67 2c  |on of finishing,|
0002eeb0  20 61 73 20 61 20 72 65  77 61 72 64 20 66 6f 72  | as a reward for|
0002eec0  0a 68 61 76 69 6e 67 20  67 6f 74 20 74 68 72 6f  |.having got thro|
0002eed0  75 67 68 20 74 68 65 20  67 61 6d 65 2e 20 20 28  |ugh the game.  (|
0002eee0  42 75 74 20 6f 66 20 63  6f 75 72 73 65 20 79 6f  |But of course yo|
0002eef0  75 20 77 61 6e 74 20 74  6f 20 6d 61 6b 65 20 68  |u want to make h|
0002ef00  69 6d 20 77 6f 72 6b 20  66 6f 72 0a 69 74 2e 29  |im work for.it.)|
0002ef10  20 20 41 6e 20 65 6e 64  20 67 61 6d 65 20 68 65  |  An end game he|
0002ef20  6c 70 73 2c 20 62 65 63  61 75 73 65 20 69 74 20  |lps, because it |
0002ef30  6e 61 72 72 6f 77 73 20  74 68 65 20 67 61 6d 65  |narrows the game|
0002ef40  2c 20 73 6f 20 74 68 61  74 20 6f 6e 6c 79 20 61  |, so that only a|
0002ef50  20 66 65 77 0a 72 6f 6f  6d 73 20 61 6e 64 20 6f  | few.rooms and o|
0002ef60  62 6a 65 63 74 73 20 61  72 65 20 61 63 63 65 73  |bjects are acces|
0002ef70  73 69 62 6c 65 2e 0a 0a  49 6e 20 61 20 6e 6f 76  |sible...In a nov|
0002ef80  65 6c 69 73 74 27 73 20  6c 61 73 74 20 63 68 61  |elist's last cha|
0002ef90  70 74 65 72 2c 20 65 6e  64 73 20 61 72 65 20 61  |pter, ends are a|
0002efa0  6c 77 61 79 73 20 74 69  65 64 20 75 70 20 28 73  |lways tied up (s|
0002efb0  75 73 70 69 63 69 6f 75  73 6c 79 20 6e 65 61 74  |uspiciously neat|
0002efc0  6c 79 0a 63 6f 6d 70 61  72 65 64 20 77 69 74 68  |ly.compared with|
0002efd0  20 72 65 61 6c 20 6c 69  66 65 29 2e 20 20 54 68  | real life).  Th|
0002efe0  65 20 63 68 61 72 61 63  74 65 72 73 20 61 72 65  |e characters are|
0002eff0  20 61 6c 6c 20 73 65 6e  74 20 6f 66 66 20 77 69  | all sent off wi|
0002f000  74 68 20 74 68 65 69 72  20 66 61 74 65 73 0a 77  |th their fates.w|
0002f010  6f 72 6b 65 64 20 6f 75  74 20 61 6e 64 20 69 73  |orked out and is|
0002f020  73 75 65 73 20 77 68 69  63 68 20 63 72 6f 70 70  |sues which cropp|
0002f030  65 64 20 75 70 20 66 72  6f 6d 20 74 69 6d 65 20  |ed up from time |
0002f040  74 6f 20 74 69 6d 65 20  61 72 65 20 73 65 74 74  |to time are sett|
0002f050  6c 65 64 2e 20 20 53 6f  0a 73 68 6f 75 6c 64 20  |led.  So.should |
0002f060  74 68 65 20 65 6e 64 20  67 61 6d 65 20 62 65 2e  |the end game be.|
0002f070  20 20 4c 6f 6f 6b 69 6e  67 20 62 61 63 6b 2c 20  |  Looking back, |
0002f080  61 73 20 69 66 20 79 6f  75 20 77 65 72 65 20 61  |as if you were a|
0002f090  20 77 69 6e 6e 69 6e 67  20 70 6c 61 79 65 72 2c  | winning player,|
0002f0a0  0a 64 6f 20 79 6f 75 20  75 6e 64 65 72 73 74 61  |.do you understa|
0002f0b0  6e 64 20 77 68 79 20 65  76 65 72 79 74 68 69 6e  |nd why everythin|
0002f0c0  67 20 74 68 61 74 20 68  61 70 70 65 6e 65 64 20  |g that happened |
0002f0d0  64 69 64 3f 20 20 4f 66  20 63 6f 75 72 73 65 2c  |did?  Of course,|
0002f0e0  20 73 6f 6d 65 0a 71 75  65 73 74 69 6f 6e 73 20  | some.questions |
0002f0f0  77 69 6c 6c 20 66 6f 72  65 76 65 72 20 72 65 6d  |will forever rem|
0002f100  61 69 6e 20 64 61 72 6b  2e 20 20 57 68 6f 20 64  |ain dark.  Who d|
0002f110  69 64 20 6b 69 6c 6c 20  74 68 65 20 63 68 61 75  |id kill the chau|
0002f120  66 66 65 75 72 20 69 6e  20 22 54 68 65 20 42 69  |ffeur in "The Bi|
0002f130  67 0a 53 6c 65 65 70 22  3f 0a 0a 4d 6f 73 74 20  |g.Sleep"?..Most |
0002f140  73 74 6f 72 69 65 73 20  68 61 76 65 20 61 20 64  |stories have a d|
0002f150  65 63 69 73 69 76 65 20  65 6e 64 2e 20 20 54 68  |ecisive end.  Th|
0002f160  65 20 6f 6c 64 20 47 6f  74 68 69 63 20 6d 61 6e  |e old Gothic man|
0002f170  6f 72 20 68 6f 75 73 65  20 62 75 72 6e 73 20 64  |or house burns d|
0002f180  6f 77 6e 2c 0a 74 68 65  20 61 6c 69 65 6e 20 69  |own,.the alien i|
0002f190  6e 76 61 64 65 72 73 20  61 72 65 20 70 6f 69 73  |nvaders are pois|
0002f1a0  6f 6e 65 64 2c 20 74 68  65 20 65 76 69 6c 20 77  |oned, the evil w|
0002f1b0  61 72 6c 6f 72 64 20 69  73 20 64 65 70 6f 73 65  |arlord is depose|
0002f1c0  64 2e 20 20 49 66 20 74  68 65 20 65 6e 64 0a 67  |d.  If the end.g|
0002f1d0  61 6d 65 20 6c 61 63 6b  73 20 73 75 63 68 20 61  |ame lacks such a|
0002f1e0  6e 20 65 76 65 6e 74 2c  20 70 65 72 68 61 70 73  |n event, perhaps|
0002f1f0  20 69 74 20 69 73 20 69  6e 73 75 66 66 69 63 69  | it is insuffici|
0002f200  65 6e 74 6c 79 20 66 69  6e 61 6c 2e 0a 0a 41 62  |ently final...Ab|
0002f210  6f 76 65 20 61 6c 6c 2c  20 77 68 61 74 20 68 61  |ove all, what ha|
0002f220  70 70 65 6e 73 20 74 6f  20 74 68 65 20 70 6c 61  |ppens to the pla|
0002f230  79 65 72 27 73 20 63 68  61 72 61 63 74 65 72 2c  |yer's character,|
0002f240  20 77 68 65 6e 20 74 68  65 20 61 64 76 65 6e 74  | when the advent|
0002f250  75 72 65 20 65 6e 64 73  3f 0a 0a 54 68 65 20 66  |ure ends?..The f|
0002f260  69 6e 61 6c 20 6d 65 73  73 61 67 65 20 69 73 20  |inal message is |
0002f270  61 6c 73 6f 20 61 6e 20  69 6d 70 6f 72 74 61 6e  |also an importan|
0002f280  74 20 6f 6e 65 20 74 6f  20 77 72 69 74 65 20 63  |t one to write c|
0002f290  61 72 65 66 75 6c 6c 79  2c 20 61 6e 64 2c 20 6c  |arefully, and, l|
0002f2a0  69 6b 65 20 74 68 65 0a  6f 76 65 72 74 75 72 65  |ike the.overture|
0002f2b0  2c 20 74 68 65 20 63 6f  64 61 20 73 68 6f 75 6c  |, the coda shoul|
0002f2c0  64 20 62 65 20 62 72 69  65 66 2e 20 20 54 6f 20  |d be brief.  To |
0002f2d0  71 75 6f 74 65 20 65 78  61 6d 70 6c 65 73 20 68  |quote examples h|
0002f2e0  65 72 65 20 77 6f 75 6c  64 20 6f 6e 6c 79 20 73  |ere would only s|
0002f2f0  70 6f 69 6c 0a 74 68 65  69 72 20 67 61 6d 65 73  |poil.their games|
0002f300  2e 20 20 42 75 74 20 61  20 67 6f 6f 64 20 72 75  |.  But a good ru|
0002f310  6c 65 20 6f 66 20 74 68  75 6d 62 2c 20 61 73 20  |le of thumb, as |
0002f320  61 6e 79 20 66 69 6c 6d  20 73 63 72 65 65 6e 70  |any film screenp|
0002f330  6c 61 79 20 77 72 69 74  65 72 20 77 69 6c 6c 0a  |lay writer will.|
0002f340  74 65 73 74 69 66 79 2c  20 73 65 65 6d 73 20 74  |testify, seems t|
0002f350  6f 20 62 65 20 74 6f 20  6d 61 6b 65 20 74 68 65  |o be to make the|
0002f360  20 74 77 6f 20 73 63 65  6e 65 73 20 77 68 69 63  | two scenes whic|
0002f370  68 20 6f 70 65 6e 20 61  6e 64 20 63 6c 6f 73 65  |h open and close|
0002f380  20 74 68 65 20 73 74 6f  72 79 0a 22 62 6f 6f 6b  | the story."book|
0002f390  2d 65 6e 64 73 22 20 66  6f 72 20 65 61 63 68 20  |-ends" for each |
0002f3a0  6f 74 68 65 72 3a 20 73  79 6d 6d 65 74 72 69 63  |other: symmetric|
0002f3b0  61 6c 20 61 6e 64 20 6d  61 74 63 68 69 6e 67 2e  |al and matching.|
0002f3c0  0a 0a 0a 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |...-------------|
0002f3d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0002f400  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0a 42  |--------------.B|
0002f410  33 2e 20 20 2e 2e 2e 61  74 20 77 61 72 20 77 69  |3.  ...at war wi|
0002f420  74 68 20 61 20 63 72 6f  73 73 77 6f 72 64 0a 2d  |th a crossword.-|
0002f430  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0002f470  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0a 0a 20 20 20 20  |----------..    |
0002f480  20 46 6f 72 65 73 74 20  73 77 61 79 73 2c 0a 20  | Forest sways,. |
0002f490  20 20 20 20 72 6f 63 6b  73 20 70 72 65 73 73 20  |    rocks press |
0002f4a0  68 65 61 76 69 6c 79 2c  0a 20 20 20 20 20 72 6f  |heavily,.     ro|
0002f4b0  6f 74 73 20 67 72 69 70  2c 0a 20 20 20 20 20 74  |ots grip,.     t|
0002f4c0  72 65 65 2d 74 72 75 6e  6b 20 63 6c 6f 73 65 20  |ree-trunk close |
0002f4d0  74 6f 20 74 72 65 65 2d  74 72 75 6e 6b 2e 0a 20  |to tree-trunk.. |
0002f4e0  20 20 20 20 57 61 76 65  20 75 70 6f 6e 20 77 61  |    Wave upon wa|
0002f4f0  76 65 20 62 72 65 61 6b  73 2c 20 66 6f 61 6d 69  |ve breaks, foami|
0002f500  6e 67 2c 0a 20 20 20 20  20 64 65 65 70 65 73 74  |ng,.     deepest|
0002f510  20 63 61 76 65 72 6e 20  70 72 6f 76 69 64 65 73  | cavern provides|
0002f520  20 73 68 65 6c 74 65 72  2e 0a 0a 20 20 20 20 20  | shelter...     |
0002f530  20 20 20 20 20 28 47 6f  65 74 68 65 2c 20 22 46  |     (Goethe, "F|
0002f540  61 75 73 74 22 29 0a 0a  0a 41 6e 64 20 73 6f 20  |aust")...And so |
0002f550  66 72 6f 6d 20 74 68 65  20 6c 61 72 67 65 20 74  |from the large t|
0002f560  6f 20 74 68 65 20 73 6d  61 6c 6c 2e 20 20 54 68  |o the small.  Th|
0002f570  65 20 6c 61 79 6f 75 74  20 69 73 20 73 6b 65 74  |e layout is sket|
0002f580  63 68 65 64 20 6f 75 74  3b 20 61 20 72 6f 75 67  |ched out; a roug|
0002f590  68 0a 73 79 6e 6f 70 73  69 73 20 69 73 20 77 72  |h.synopsis is wr|
0002f5a0  69 74 74 65 6e 20 64 6f  77 6e 3b 20 62 75 74 20  |itten down; but |
0002f5b0  6e 6f 6e 65 20 6f 66 20  74 68 65 20 61 63 74 69  |none of the acti|
0002f5c0  6f 6e 20 6f 66 20 74 68  65 20 67 61 6d 65 20 69  |on of the game i|
0002f5d0  73 20 63 6c 65 61 72 20  71 75 69 74 65 0a 79 65  |s clear quite.ye|
0002f5e0  74 2e 20 20 49 6e 20 73  68 6f 72 74 2c 20 74 68  |t.  In short, th|
0002f5f0  65 72 65 20 61 72 65 20  6e 6f 20 70 75 7a 7a 6c  |ere are no puzzl|
0002f600  65 73 2e 20 20 57 68 61  74 20 61 72 65 20 74 68  |es.  What are th|
0002f610  65 79 20 74 6f 20 62 65  3f 20 20 48 6f 77 20 77  |ey to be?  How w|
0002f620  69 6c 6c 20 74 68 65 79  0a 6c 69 6e 6b 20 74 6f  |ill they.link to|
0002f630  67 65 74 68 65 72 3f 0a  0a 0a 31 2e 20 20 50 75  |gether?...1.  Pu|
0002f640  7a 7a 6c 65 73 0a 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |zzles.----------|
0002f650  2d 0a 0a 50 75 7a 7a 6c  65 73 20 6f 75 67 68 74  |-..Puzzles ought|
0002f660  20 6e 6f 74 20 74 6f 20  62 65 20 73 69 6d 70 6c  | not to be simpl|
0002f670  79 20 61 20 6d 61 74 74  65 72 20 6f 66 20 74 79  |y a matter of ty|
0002f680  70 69 6e 67 20 6f 6e 65  20 77 65 6c 6c 2d 63 68  |ping one well-ch|
0002f690  6f 73 65 6e 20 6c 69 6e  65 2e 20 20 54 68 65 0a  |osen line.  The.|
0002f6a0  68 61 6c 6c 6d 61 72 6b  20 6f 66 20 61 20 67 6f  |hallmark of a go|
0002f6b0  6f 64 20 67 61 6d 65 20  69 73 20 6e 6f 74 20 74  |od game is not t|
0002f6c0  6f 20 67 65 74 20 61 6e  79 20 70 6f 69 6e 74 73  |o get any points|
0002f6d0  20 66 6f 72 20 70 69 63  6b 69 6e 67 20 75 70 20  | for picking up |
0002f6e0  61 6e 20 65 61 73 69 6c  79 0a 61 76 61 69 6c 61  |an easily.availa|
0002f6f0  62 6c 65 20 6b 65 79 20  61 6e 64 20 75 6e 6c 6f  |ble key and unlo|
0002f700  63 6b 69 6e 67 20 61 20  64 6f 6f 72 20 77 69 74  |cking a door wit|
0002f710  68 20 69 74 2e 20 20 54  68 69 73 20 73 6f 72 74  |h it.  This sort|
0002f720  20 6f 66 20 6c 6f 77 2d  6c 65 76 65 6c 0a 61 63  | of low-level.ac|
0002f730  68 69 65 76 65 6d 65 6e  74 20 2d 20 6c 69 6b 65  |hievement - like|
0002f740  20 77 65 61 72 69 6e 67  20 61 6e 20 6f 76 65 72  | wearing an over|
0002f750  63 6f 61 74 20 66 6f 75  6e 64 20 6c 79 69 6e 67  |coat found lying|
0002f760  20 61 72 6f 75 6e 64 2c  20 66 6f 72 20 69 6e 73  | around, for ins|
0002f770  74 61 6e 63 65 20 2d 0a  73 68 6f 75 6c 64 20 6e  |tance -.should n|
0002f780  6f 74 20 62 65 20 65 6e  6f 75 67 68 2e 20 20 41  |ot be enough.  A|
0002f790  20 6d 65 6d 6f 72 61 62  6c 65 20 70 75 7a 7a 6c  | memorable puzzl|
0002f7a0  65 20 77 69 6c 6c 20 6e  65 65 64 20 73 65 76 65  |e will need seve|
0002f7b0  72 61 6c 20 64 69 66 66  65 72 65 6e 74 20 69 64  |ral different id|
0002f7c0  65 61 73 20 0a 74 6f 20  73 6f 6c 76 65 20 28 74  |eas .to solve (t|
0002f7d0  68 65 20 42 61 62 65 6c  20 66 69 73 68 20 64 69  |he Babel fish di|
0002f7e0  73 70 65 6e 73 65 72 20  69 6e 20 22 54 68 65 20  |spenser in "The |
0002f7f0  48 69 74 63 68 2d 68 69  6b 65 72 27 73 20 47 75  |Hitch-hiker's Gu|
0002f800  69 64 65 20 74 6f 20 74  68 65 0a 47 61 6c 61 78  |ide to the.Galax|
0002f810  79 22 2c 20 66 6f 72 20  69 6e 73 74 61 6e 63 65  |y", for instance|
0002f820  29 2e 0a 0a 4d 79 20 70  65 72 73 6f 6e 61 6c 20  |)...My personal |
0002f830  72 75 6c 65 20 77 69 74  68 20 70 75 7a 7a 6c 65  |rule with puzzle|
0002f840  73 20 69 73 20 6e 65 76  65 72 20 74 6f 20 61 6c  |s is never to al|
0002f850  6c 6f 77 20 6f 6e 65 20  77 68 69 63 68 20 49 20  |low one which I |
0002f860  63 61 6e 20 63 6f 64 65  20 75 70 20 69 6e 0a 6c  |can code up in.l|
0002f870  65 73 73 20 74 68 61 6e  20 66 69 76 65 20 6d 69  |ess than five mi|
0002f880  6e 75 74 65 73 2e 0a 0a  53 74 69 6c 6c 2c 20 61  |nutes...Still, a|
0002f890  20 67 6f 6f 64 20 67 61  6d 65 20 6d 69 78 65 73  | good game mixes|
0002f8a0  20 74 68 65 20 65 61 73  79 20 77 69 74 68 20 74  | the easy with t|
0002f8b0  68 65 20 68 61 72 64 2c  20 65 73 70 65 63 69 61  |he hard, especia|
0002f8c0  6c 6c 79 20 6e 65 61 72  20 74 68 65 0a 62 65 67  |lly near the.beg|
0002f8d0  69 6e 6e 69 6e 67 2e 20  20 54 68 65 20 70 6c 61  |inning.  The pla|
0002f8e0  79 65 72 20 73 68 6f 75  6c 64 20 62 65 20 61 62  |yer should be ab|
0002f8f0  6c 65 20 74 6f 20 73 63  6f 72 65 20 61 20 66 65  |le to score a fe|
0002f900  77 20 70 6f 69 6e 74 73  20 28 6e 6f 74 20 6d 61  |w points (not ma|
0002f910  6e 79 29 20 6f 6e 0a 74  68 65 20 76 65 72 79 20  |ny) on.the very |
0002f920  66 69 72 73 74 20 68 61  6c 66 2d 68 65 61 72 74  |first half-heart|
0002f930  65 64 20 61 74 74 65 6d  70 74 2e 0a 0a 54 68 65  |ed attempt...The|
0002f940  72 65 20 61 72 65 20 74  68 72 65 65 20 62 69 67  |re are three big|
0002f950  20 70 69 74 66 61 6c 6c  73 20 69 6e 20 6d 61 6b  | pitfalls in mak|
0002f960  69 6e 67 20 70 75 7a 7a  6c 65 73 3a 0a 0a 2d 2d  |ing puzzles:..--|
0002f970  20 54 68 65 20 22 47 65  74 2d 58 2d 55 73 65 2d  | The "Get-X-Use-|
0002f980  58 22 20 73 79 6e 64 72  6f 6d 65 2e 20 20 48 65  |X" syndrome.  He|
0002f990  72 65 2c 20 74 68 65 20  77 68 6f 6c 65 20 67 61  |re, the whole ga|
0002f9a0  6d 65 20 69 6e 76 6f 6c  76 65 73 20 77 61 6e 64  |me involves wand|
0002f9b0  65 72 69 6e 67 0a 61 62  6f 75 74 20 70 69 63 6b  |ering.about pick|
0002f9c0  69 6e 67 20 75 70 20 62  69 63 79 63 6c 65 20 70  |ing up bicycle p|
0002f9d0  75 6d 70 73 20 61 6e 64  20 74 68 65 6e 20 6c 6f  |umps and then lo|
0002f9e0  6f 6b 69 6e 67 20 66 6f  72 20 61 20 62 69 63 79  |oking for a bicy|
0002f9f0  63 6c 65 3a 20 70 69 63  6b 69 6e 67 20 75 70 0a  |cle: picking up.|
0002fa00  70 69 6e 73 20 61 6e 64  20 6c 6f 6f 6b 69 6e 67  |pins and looking|
0002fa10  20 66 6f 72 20 62 61 6c  6c 6f 6f 6e 73 20 74 6f  | for balloons to|
0002fa20  20 62 75 72 73 74 2c 20  61 6e 64 20 73 6f 20 6f  | burst, and so o|
0002fa30  6e 2e 20 20 53 6f 20 65  76 65 72 79 20 70 75 7a  |n.  So every puz|
0002fa40  7a 6c 65 20 6e 65 65 64  73 0a 6f 6e 65 20 6f 62  |zle needs.one ob|
0002fa50  6a 65 63 74 2e 20 20 41  73 20 73 6f 6f 6e 20 61  |ject.  As soon a|
0002fa60  73 20 69 74 20 68 61 73  20 62 65 65 6e 20 75 73  |s it has been us|
0002fa70  65 64 20 69 74 20 63 61  6e 20 62 65 20 64 72 6f  |ed it can be dro|
0002fa80  70 70 65 64 2c 20 66 6f  72 20 69 74 20 73 75 72  |pped, for it sur|
0002fa90  65 6c 79 0a 77 69 6c 6c  20 6e 6f 74 20 62 65 20  |ely.will not be |
0002faa0  72 65 71 75 69 72 65 64  20 61 67 61 69 6e 2e 0a  |required again..|
0002fab0  0a 2d 2d 20 54 68 65 20  22 57 68 61 74 27 73 2d  |.-- The "What's-|
0002fac0  54 68 65 2d 56 65 72 62  22 20 73 79 6e 64 72 6f  |The-Verb" syndro|
0002fad0  6d 65 2e 20 20 53 6f 20  79 6f 75 20 68 61 76 65  |me.  So you have|
0002fae0  20 79 6f 75 72 20 62 69  63 79 63 6c 65 20 70 75  | your bicycle pu|
0002faf0  6d 70 20 61 6e 64 0a 62  69 63 79 63 6c 65 3a 20  |mp and.bicycle: |
0002fb00  22 75 73 65 20 70 75 6d  70 22 20 64 6f 65 73 6e  |"use pump" doesn|
0002fb10  27 74 20 77 6f 72 6b 2c  20 22 70 75 6d 70 20 62  |'t work, "pump b|
0002fb20  69 6b 65 22 20 64 6f 65  73 6e 27 74 20 77 6f 72  |ike" doesn't wor|
0002fb30  6b 2e 2e 2e 20 6f 6e 6c  79 20 22 69 6e 66 6c 61  |k... only "infla|
0002fb40  74 65 0a 74 79 72 65 22  20 64 6f 65 73 2e 20 20  |te.tyre" does.  |
0002fb50  54 68 65 72 65 20 61 72  65 20 67 61 6d 65 73 20  |There are games |
0002fb60  77 68 65 72 65 20 74 68  69 73 20 6c 69 6e 67 75  |where this lingu|
0002fb70  69 73 74 69 63 20 63 68  61 6c 6c 65 6e 67 65 20  |istic challenge |
0002fb80  69 73 20 6d 6f 73 74 20  6f 66 20 74 68 65 0a 77  |is most of the.w|
0002fb90  6f 72 6b 20 66 6f 72 20  74 68 65 20 70 6c 61 79  |ork for the play|
0002fba0  65 72 2e 20 20 41 6e 20  65 73 70 65 63 69 61 6c  |er.  An especial|
0002fbb0  6c 79 20 74 72 69 63 6b  79 20 66 6f 72 6d 20 6f  |ly tricky form o|
0002fbc0  66 20 74 68 69 73 20 70  72 6f 62 6c 65 6d 20 69  |f this problem i|
0002fbd0  73 20 74 68 61 74 20 69  6e 0a 6d 6f 73 74 20 67  |s that in.most g|
0002fbe0  61 6d 65 73 20 22 65 78  61 6d 69 6e 65 22 2c 20  |ames "examine", |
0002fbf0  22 73 65 61 72 63 68 22  20 61 6e 64 20 22 6c 6f  |"search" and "lo|
0002fc00  6f 6b 20 69 6e 73 69 64  65 22 20 61 72 65 20 64  |ok inside" are d|
0002fc10  69 66 66 65 72 65 6e 74  20 61 63 74 69 6f 6e 73  |ifferent actions|
0002fc20  3a 20 69 74 0a 69 73 20  65 61 73 79 20 74 6f 20  |: it.is easy to |
0002fc30  63 6f 64 65 20 61 20 68  69 64 64 65 6e 20 74 72  |code a hidden tr|
0002fc40  65 61 73 75 72 65 2c 20  73 61 79 2c 20 73 6f 20  |easure, say, so |
0002fc50  74 68 61 74 20 6f 6e 6c  79 20 6f 6e 65 20 6f 66  |that only one of|
0002fc60  20 74 68 65 73 65 20 70  72 6f 64 75 63 65 73 0a  | these produces.|
0002fc70  74 68 65 20 74 72 65 61  73 75 72 65 2e 0a 0a 2d  |the treasure...-|
0002fc80  2d 20 54 68 65 20 22 49  6e 2d 4a 6f 6b 65 22 20  |- The "In-Joke" |
0002fc90  73 79 6e 64 72 6f 6d 65  2e 20 20 49 6e 20 77 68  |syndrome.  In wh|
0002fca0  69 63 68 20 74 68 65 20  70 6c 61 79 65 72 20 68  |ich the player h|
0002fcb0  61 73 20 74 6f 20 70 6c  61 79 20 61 20 70 61 72  |as to play a par|
0002fcc0  6f 64 79 20 6f 66 20 79  6f 75 72 0a 63 6f 6d 70  |ody of your.comp|
0002fcd0  61 6e 79 20 6f 66 66 69  63 65 2c 20 68 69 67 68  |any office, high|
0002fce0  20 73 63 68 6f 6f 6c 20  63 6c 61 73 73 2c 20 65  | school class, e|
0002fcf0  74 63 2e 2c 20 6f 72 20  66 69 6e 64 73 20 61 6e  |tc., or finds an|
0002fd00  20 65 6e 74 69 72 65 6c  79 20 69 6e 65 78 70 6c  | entirely inexpl|
0002fd10  69 63 61 62 6c 65 0a 6f  62 6a 65 63 74 20 28 73  |icable.object (s|
0002fd20  61 79 2c 20 61 20 63 6f  61 74 20 77 69 74 68 20  |ay, a coat with |
0002fd30  61 20 6d 79 73 74 65 72  69 6f 75 73 20 73 6c 6f  |a mysterious slo|
0002fd40  67 61 6e 20 6f 6e 29 20  77 68 69 63 68 20 69 73  |gan on) which is|
0002fd50  20 6f 6e 6c 79 20 74 68  65 72 65 20 62 65 63 61  | only there beca|
0002fd60  75 73 65 0a 79 6f 75 72  20 73 69 73 74 65 72 20  |use.your sister |
0002fd70  68 61 73 20 61 20 76 65  72 79 20 66 75 6e 6e 79  |has a very funny|
0002fd80  20 6f 6e 65 20 6c 69 6b  65 20 69 74 2c 20 6f 72  | one like it, or|
0002fd90  20 6d 65 65 74 73 20 65  6e 64 6c 65 73 73 20 62  | meets endless b|
0002fda0  69 7a 61 72 72 65 0a 63  68 61 72 61 63 74 65 72  |izarre.character|
0002fdb0  73 20 6d 6f 64 65 6c 6c  65 64 20 6f 6e 20 79 6f  |s modelled on yo|
0002fdc0  75 72 20 62 65 73 74 20  66 72 69 65 6e 64 73 20  |ur best friends |
0002fdd0  61 6e 64 20 65 6e 65 6d  69 65 73 2e 0a 0a 54 68  |and enemies...Th|
0002fde0  65 6e 20 61 67 61 69 6e  2c 20 61 20 66 65 77 20  |en again, a few |
0002fdf0  70 75 7a 7a 6c 65 73 20  77 69 6c 6c 20 61 6c 77  |puzzles will alw|
0002fe00  61 79 73 20 62 65 20 69  6e 20 74 68 65 20 67 65  |ays be in the ge|
0002fe10  74 2d 78 2d 75 73 65 2d  78 20 73 74 79 6c 65 2c  |t-x-use-x style,|
0002fe20  20 61 6e 64 20 74 68 61  74 0a 64 6f 65 73 20 6e  | and that.does n|
0002fe30  6f 20 68 61 72 6d 3a 20  77 68 69 6c 65 20 70 75  |o harm: while pu|
0002fe40  72 73 75 69 6e 67 20 74  6f 6c 65 72 61 6e 63 65  |rsuing tolerance|
0002fe50  20 6f 66 20 76 65 72 62  73 20 74 6f 20 65 78 74  | of verbs to ext|
0002fe60  72 65 6d 65 73 20 6c 65  61 64 73 20 74 6f 0a 65  |remes leads to.e|
0002fe70  76 65 72 79 74 68 69 6e  67 20 62 65 69 6e 67 20  |verything being |
0002fe80  22 6d 6f 76 65 64 22 2c  20 6e 6f 74 20 22 70 75  |"moved", not "pu|
0002fe90  73 68 65 64 22 2c 20 22  70 75 6c 6c 65 64 22 2c  |shed", "pulled",|
0002fea0  20 22 72 6f 74 61 74 65  64 22 20 61 6e 64 20 73  | "rotated" and s|
0002feb0  6f 20 6f 6e 3a 20 61 6e  64 0a 77 68 61 74 20 61  |o on: and.what a|
0002fec0  72 74 69 73 74 20 68 61  73 20 6e 6f 74 20 69 6d  |rtist has not im|
0002fed0  6d 6f 72 74 61 6c 69 73  65 64 20 68 69 73 20 6d  |mortalised his m|
0002fee0  61 64 64 65 72 20 66 72  69 65 6e 64 73 20 61 74  |adder friends at|
0002fef0  20 6f 6e 65 20 74 69 6d  65 20 6f 72 20 61 6e 6f  | one time or ano|
0002ff00  74 68 65 72 3f 0a 0a 56  61 72 69 65 74 79 20 69  |ther?..Variety i|
0002ff10  6e 20 73 74 79 6c 65 20  69 73 20 76 65 72 79 20  |n style is very |
0002ff20  69 6d 70 6f 72 74 61 6e  74 2c 20 62 75 74 20 6c  |important, but l|
0002ff30  6f 67 69 63 20 69 73 20  70 61 72 61 6d 6f 75 6e  |ogic is paramoun|
0002ff40  74 2e 20 20 4f 66 74 65  6e 20 74 68 65 0a 64 65  |t.  Often the.de|
0002ff50  73 69 67 6e 65 72 20 62  65 67 69 6e 73 20 6b 6e  |signer begins kn|
0002ff60  6f 77 69 6e 67 20 6f 6e  6c 79 20 61 73 20 6d 75  |owing only as mu|
0002ff70  63 68 20 61 73 20 74 68  61 74 20 69 6e 20 61 20  |ch as that in a |
0002ff80  67 69 76 65 6e 20 70 6c  61 63 65 2c 20 74 68 65  |given place, the|
0002ff90  20 70 6c 61 79 65 72 20  69 73 0a 74 6f 20 70 75  | player is.to pu|
0002ffa0  74 20 6f 75 74 20 61 20  66 69 72 65 2e 20 20 48  |t out a fire.  H|
0002ffb0  6f 77 20 69 73 20 74 68  69 73 20 74 6f 20 62 65  |ow is this to be|
0002ffc0  20 64 6f 6e 65 3f 20 20  57 69 6c 6c 20 74 68 65  | done?  Will the|
0002ffd0  20 6d 65 61 6e 73 20 62  65 20 66 6f 75 6e 64 20  | means be found |
0002ffe0  6e 65 61 72 62 79 3f 0a  57 69 6c 6c 20 74 68 65  |nearby?.Will the|
0002fff0  20 66 69 72 65 20 68 61  76 65 20 6f 74 68 65 72  | fire have other|
00030000  20 63 6f 6e 73 65 71 75  65 6e 63 65 73 3f 20 20  | consequences?  |
00030010  57 69 6c 6c 20 74 68 65  72 65 20 62 65 20 70 61  |Will there be pa|
00030020  72 74 69 61 6c 20 73 6f  6c 75 74 69 6f 6e 73 20  |rtial solutions |
00030030  74 6f 0a 74 68 65 20 70  72 6f 62 6c 65 6d 2c 20  |to.the problem, |
00030040  77 68 69 63 68 20 70 75  74 20 74 68 65 20 66 69  |which put the fi|
00030050  72 65 20 6f 75 74 20 62  75 74 20 6c 65 61 76 65  |re out but leave|
00030060  20 76 69 74 61 6c 20 65  71 75 69 70 6d 65 6e 74  | vital equipment|
00030070  20 64 61 6d 61 67 65 64  3f 20 20 49 66 0a 74 68  | damaged?  If.th|
00030080  65 20 70 6c 61 79 65 72  20 74 61 6b 65 73 20 61  |e player takes a|
00030090  20 6c 6f 6e 67 20 74 69  6d 65 20 6e 6f 74 20 73  | long time not s|
000300a0  6f 6c 76 69 6e 67 20 74  68 65 20 70 72 6f 62 6c  |olving the probl|
000300b0  65 6d 2c 20 77 69 6c 6c  20 74 68 65 20 70 6c 61  |em, will the pla|
000300c0  63 65 20 62 75 72 6e 0a  64 6f 77 6e 20 73 6f 20  |ce burn.down so |
000300d0  74 68 61 74 20 74 68 65  20 67 61 6d 65 20 62 65  |that the game be|
000300e0  63 6f 6d 65 73 20 75 6e  77 69 6e 6e 61 62 6c 65  |comes unwinnable|
000300f0  3f 0a 0a 0a 32 2e 20 20  4d 61 63 68 69 6e 65 72  |?...2.  Machiner|
00030100  79 0a 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0a  |y.-------------.|
00030110  0a 49 6e 20 73 6f 6d 65  20 77 61 79 73 20 74 68  |.In some ways th|
00030120  65 20 65 61 73 69 65 73  74 20 70 75 7a 7a 6c 65  |e easiest puzzle|
00030130  73 20 74 6f 20 77 72 69  74 65 20 73 65 6e 73 69  |s to write sensi|
00030140  62 6c 79 20 61 72 65 20  6d 61 63 68 69 6e 65 73  |bly are machines|
00030150  2c 20 77 68 69 63 68 20  6e 65 65 64 0a 74 6f 20  |, which need.to |
00030160  62 65 20 6d 61 6e 69 70  75 6c 61 74 65 64 3a 20  |be manipulated: |
00030170  6c 65 76 65 72 73 20 74  6f 20 70 75 6c 6c 2c 20  |levers to pull, |
00030180  73 77 69 74 63 68 65 73  20 74 6f 20 70 72 65 73  |switches to pres|
00030190  73 2c 20 63 6f 67 73 20  74 6f 20 74 75 72 6e 2c  |s, cogs to turn,|
000301a0  20 72 6f 70 65 73 20 74  6f 0a 70 75 6c 6c 2e 20  | ropes to.pull. |
000301b0  20 54 68 65 79 20 64 6f  20 6e 6f 74 20 68 61 76  | They do not hav|
000301c0  65 20 74 6f 20 72 65 73  70 6f 6e 64 20 74 6f 20  |e to respond to |
000301d0  63 6f 6e 76 65 72 73 61  74 69 6f 6e 2e 20 20 54  |conversation.  T|
000301e0  68 65 79 20 6f 66 74 65  6e 20 6e 65 65 64 20 74  |hey often need t|
000301f0  6f 6f 6c 73 2c 0a 77 68  69 63 68 20 62 72 69 6e  |ools,.which brin|
00030200  67 73 20 69 6e 20 6f 62  6a 65 63 74 73 2e 20 20  |gs in objects.  |
00030210  54 68 65 79 20 63 61 6e  20 74 72 61 6e 73 66 6f  |They can transfo|
00030220  72 6d 20 74 68 69 6e 67  73 20 69 6e 20 61 20 73  |rm things in a s|
00030230  65 6d 69 2d 6d 61 67 69  63 61 6c 20 77 61 79 0a  |emi-magical way.|
00030240  28 63 6f 61 6c 20 74 6f  20 64 69 61 6d 6f 6e 64  |(coal to diamond|
00030250  73 20 62 65 69 6e 67 20  74 68 65 20 63 6c 69 63  |s being the clic|
00030260  68 65 29 20 61 6e 64 20  63 61 6e 20 70 6c 61 75  |he) and can plau|
00030270  73 69 62 6c 79 20 64 6f  20 61 6c 6d 6f 73 74 20  |sibly do almost |
00030280  61 6e 79 74 68 69 6e 67  20 69 66 0a 73 75 66 66  |anything if.suff|
00030290  69 63 69 65 6e 74 6c 79  20 6d 79 73 74 65 72 69  |iciently mysteri|
000302a0  6f 75 73 20 61 6e 64 20  73 74 72 61 6e 67 65 3a  |ous and strange:|
000302b0  20 74 69 6d 65 20 74 72  61 76 65 6c 2c 20 66 6f  | time travel, fo|
000302c0  72 20 69 6e 73 74 61 6e  63 65 2e 0a 0a 54 68 65  |r instance...The|
000302d0  79 20 63 61 6e 20 61 6c  73 6f 20 63 6f 6e 6e 65  |y can also conne|
000302e0  63 74 20 74 6f 67 65 74  68 65 72 20 64 69 66 66  |ct together diff|
000302f0  65 72 65 6e 74 20 6c 6f  63 61 74 69 6f 6e 73 20  |erent locations |
00030300  77 69 74 68 20 6d 61 63  68 69 6e 65 72 79 3a 20  |with machinery: |
00030310  63 68 61 69 6e 73 2c 0a  73 77 69 6e 67 69 6e 67  |chains,.swinging|
00030320  20 61 72 6d 73 2c 20 63  68 75 74 65 73 20 6d 61  | arms, chutes ma|
00030330  79 20 72 75 6e 20 61 63  72 6f 73 73 20 74 68 65  |y run across the|
00030340  20 6d 61 70 2c 20 61 6e  64 20 68 65 6c 70 20 74  | map, and help t|
00030350  6f 20 67 6c 75 65 20 69  74 20 74 6f 67 65 74 68  |o glue it togeth|
00030360  65 72 2e 0a 0a 41 20 73  70 65 63 69 61 6c 20 6b  |er...A special k|
00030370  69 6e 64 20 6f 66 20 6d  61 63 68 69 6e 65 20 69  |ind of machine i|
00030380  73 20 74 68 65 20 6b 69  6e 64 20 74 6f 20 62 65  |s the kind to be|
00030390  20 74 72 61 76 65 6c 6c  65 64 20 69 6e 2e 20 20  | travelled in.  |
000303a0  4d 61 6e 79 20 49 6e 66  6f 63 6f 6d 0a 67 61 6d  |Many Infocom.gam|
000303b0  65 73 20 68 61 76 65 20  73 75 63 68 20 61 20 76  |es have such a v|
000303c0  65 68 69 63 6c 65 20 28  73 69 6e 63 65 20 74 68  |ehicle (since th|
000303d0  65 20 63 6f 64 65 20 77  61 73 20 61 6c 72 65 61  |e code was alrea|
000303e0  64 79 20 77 72 69 74 74  65 6e 20 66 6f 72 20 69  |dy written for i|
000303f0  74 20 69 6e 20 5a 6f 72  6b 0a 49 29 20 61 6e 64  |t in Zork.I) and|
00030400  20 63 61 72 73 2c 20 74  72 61 63 74 6f 72 73 2c  | cars, tractors,|
00030410  20 66 6f 72 6b 2d 6c 69  66 74 20 74 72 75 63 6b  | fork-lift truck|
00030420  73 2c 20 62 6f 61 74 73  2c 20 68 6f 74 2d 61 69  |s, boats, hot-ai|
00030430  72 20 62 61 6c 6c 6f 6f  6e 73 20 68 61 76 65 20  |r balloons have |
00030440  61 6c 6c 0a 6d 61 64 65  20 61 70 70 65 61 72 61  |all.made appeara|
00030450  6e 63 65 73 2e 20 20 54  68 65 79 20 6e 65 65 64  |nces.  They need|
00030460  20 61 20 6c 69 74 74 6c  65 20 63 61 72 65 20 28  | a little care (|
00030470  66 6f 72 20 69 6e 73 74  61 6e 63 65 2c 20 6e 6f  |for instance, no|
00030480  74 20 62 65 69 6e 67 20  61 62 6c 65 20 74 6f 0a  |t being able to.|
00030490  64 72 69 76 65 20 75 70  73 74 61 69 72 73 2c 20  |drive upstairs, |
000304a0  6f 72 20 74 68 72 6f 75  67 68 20 61 20 6e 61 72  |or through a nar|
000304b0  72 6f 77 20 63 72 65 76  69 63 65 29 20 62 75 74  |row crevice) but|
000304c0  20 73 75 67 67 65 73 74  20 61 20 77 68 6f 6c 65  | suggest a whole|
000304d0  20 72 61 6e 67 65 20 6f  66 0a 6e 65 77 20 70 75  | range of.new pu|
000304e0  7a 7a 6c 65 73 3a 20 70  65 74 72 6f 6c 2c 20 69  |zzles: petrol, i|
000304f0  67 6e 69 74 69 6f 6e 20  6b 65 79 73 2c 20 61 20  |gnition keys, a |
00030500  63 61 72 20 72 61 64 69  6f 20 70 65 72 68 61 70  |car radio perhap|
00030510  73 2e 20 20 41 6e 64 20  74 72 61 76 65 6c 6c 69  |s.  And travelli|
00030520  6e 67 0a 69 6e 20 6e 65  77 20 77 61 79 73 20 61  |ng.in new ways a|
00030530  64 64 73 20 74 6f 20 74  68 65 20 72 65 61 6c 69  |dds to the reali|
00030540  73 6d 20 6f 66 20 74 68  65 20 6c 61 6e 64 73 63  |sm of the landsc|
00030550  61 70 65 2c 20 77 68 69  63 68 20 69 73 20 6e 6f  |ape, which is no|
00030560  20 6c 6f 6e 67 65 72 20  61 20 73 65 74 0a 6f 66  | longer a set.of|
00030570  20 72 75 6c 65 73 20 61  62 6f 75 74 20 77 61 6c  | rules about wal|
00030580  6b 69 6e 67 2e 0a 0a 0a  33 2e 20 20 4b 65 79 73  |king....3.  Keys|
00030590  20 61 6e 64 20 44 6f 6f  72 73 0a 2d 2d 2d 2d 2d  | and Doors.-----|
000305a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0a 0a 41  |-------------..A|
000305b0  6c 6d 6f 73 74 20 69 6e  76 61 72 69 61 62 6c 79  |lmost invariably|
000305c0  20 67 61 6d 65 73 20 63  6c 6f 73 65 20 6f 66 66  | games close off|
000305d0  20 73 65 63 74 69 6f 6e  73 20 6f 66 20 74 68 65  | sections of the|
000305e0  20 6d 61 70 20 28 74 65  6d 70 6f 72 61 72 69 6c  | map (temporaril|
000305f0  79 29 20 62 79 0a 70 75  74 74 69 6e 67 20 74 68  |y) by.putting th|
00030600  65 6d 20 62 65 68 69 6e  64 20 6c 6f 63 6b 65 64  |em behind locked|
00030610  20 64 6f 6f 72 73 2c 20  77 68 69 63 68 20 74 68  | doors, which th|
00030620  65 20 70 6c 61 79 65 72  20 63 61 6e 20 73 65 65  |e player can see|
00030630  20 61 6e 64 20 67 6e 61  73 68 20 68 65 72 0a 74  | and gnash her.t|
00030640  65 65 74 68 20 6f 76 65  72 2c 20 62 75 74 20 63  |eeth over, but c|
00030650  61 6e 6e 6f 74 20 79 65  74 20 6f 70 65 6e 2e 20  |annot yet open. |
00030660  20 41 6e 64 20 61 6c 6d  6f 73 74 20 65 76 65 72  | And almost ever|
00030670  79 20 76 61 72 69 61 74  69 6f 6e 20 6f 6e 20 74  |y variation on t|
00030680  68 69 73 20 74 68 65 6d  65 0a 68 61 73 20 62 65  |his theme.has be|
00030690  65 6e 20 74 72 69 65 64  3a 20 63 6f 64 65 64 20  |en tried: coded |
000306a0  6d 65 73 73 61 67 65 73  20 6f 6e 20 74 68 65 20  |messages on the |
000306b0  64 6f 6f 72 2c 20 69 6c  6c 75 73 6f 72 79 20 64  |door, illusory d|
000306c0  65 66 65 6e 63 65 73 2c  20 67 61 74 65 2d 6b 65  |efences, gate-ke|
000306d0  65 70 65 72 73 2c 0a 74  68 65 20 6b 65 79 20 62  |epers,.the key b|
000306e0  65 69 6e 67 20 69 6e 20  74 68 65 20 6c 6f 63 6b  |eing in the lock|
000306f0  20 6f 6e 20 74 68 65 20  77 72 6f 6e 67 20 73 69  | on the wrong si|
00030700  64 65 2c 20 61 6e 64 20  73 6f 20 6f 6e 2e 20 20  |de, and so on.  |
00030710  53 74 69 6c 6c 2c 20 74  68 65 20 75 73 75 61 6c  |Still, the usual|
00030720  0a 74 68 69 6e 67 20 69  73 20 73 69 6d 70 6c 79  |.thing is simply|
00030730  20 74 6f 20 66 69 6e 64  20 61 20 6b 65 79 20 69  | to find a key i|
00030740  6e 20 73 6f 6d 65 20 66  61 69 72 6c 79 20 72 65  |n some fairly re|
00030750  6d 6f 74 65 20 70 6c 61  63 65 2c 20 62 72 69 6e  |mote place, brin|
00030760  67 20 69 74 20 74 6f 20  74 68 65 0a 64 6f 6f 72  |g it to the.door|
00030770  20 61 6e 64 20 6f 70 65  6e 20 69 74 2e 0a 0a 49  | and open it...I|
00030780  66 20 74 68 65 72 65 20  61 72 65 20 70 65 6f 70  |f there are peop|
00030790  6c 65 20 6a 75 73 74 20  69 6e 73 69 64 65 2c 20  |le just inside, |
000307a0  64 6f 20 74 68 65 79 20  72 65 61 63 74 20 77 68  |do they react wh|
000307b0  65 6e 20 74 68 65 20 70  6c 61 79 65 72 20 6b 6e  |en the player kn|
000307c0  6f 63 6b 73 20 6f 6e 20  74 68 65 0a 64 6f 6f 72  |ocks on the.door|
000307d0  2c 20 6f 72 20 74 72 69  65 73 20 74 6f 20 62 72  |, or tries to br|
000307e0  65 61 6b 20 69 74 20 64  6f 77 6e 20 6f 72 20 72  |eak it down or r|
000307f0  61 6d 20 69 74 3f 20 20  49 66 20 6e 6f 74 2c 20  |am it?  If not, |
00030800  77 68 79 20 6e 6f 74 3f  0a 0a 49 6e 20 73 6f 6d  |why not?..In som|
00030810  65 20 73 69 74 75 61 74  69 6f 6e 73 20 64 6f 6f  |e situations doo|
00030820  72 73 20 73 68 6f 75 6c  64 20 62 65 20 6c 6f 63  |rs should be loc|
00030830  6b 61 62 6c 65 20 28 61  6e 64 20 6f 70 65 6e 2d  |kable (and open-|
00030840  20 61 6e 64 20 63 6c 6f  73 65 61 62 6c 65 29 20  | and closeable) |
00030850  6f 6e 0a 62 6f 74 68 20  73 69 64 65 73 2e 20 20  |on.both sides.  |
00030860  54 68 69 73 20 69 73 20  69 72 72 69 74 61 74 69  |This is irritati|
00030870  6e 67 20 74 6f 20 69 6d  70 6c 65 6d 65 6e 74 20  |ng to implement |
00030880  62 75 74 20 61 64 64 73  20 63 6f 6e 73 69 64 65  |but adds conside|
00030890  72 61 62 6c 79 20 74 6f  20 74 68 65 0a 65 66 66  |rably to the.eff|
000308a0  65 63 74 2e 0a 0a 49 6e  20 61 20 6c 61 72 67 65  |ect...In a large|
000308b0  20 67 61 6d 65 20 74 68  65 72 65 20 6d 61 79 20  | game there may |
000308c0  62 65 20 73 65 76 65 72  61 6c 2c 20 70 65 72 68  |be several, perh|
000308d0  61 70 73 20 66 69 76 65  20 6f 72 20 73 69 78 2c  |aps five or six,|
000308e0  20 6b 65 79 73 20 6f 66  20 6f 6e 65 20 6b 69 6e  | keys of one kin|
000308f0  64 0a 6f 72 20 61 6e 6f  74 68 65 72 3a 20 69 74  |d.or another: it|
00030900  27 73 20 65 73 73 65 6e  74 69 61 6c 20 6e 6f 74  |'s essential not|
00030910  20 74 6f 20 6d 61 6b 65  20 74 68 65 73 65 20 74  | to make these t|
00030920  6f 6f 20 73 69 6d 69 6c  61 72 20 69 6e 20 61 70  |oo similar in ap|
00030930  70 65 61 72 61 6e 63 65  2e 20 0a 53 6f 6d 65 20  |pearance. .Some |
00030940  67 61 6d 65 73 20 68 61  76 65 20 22 6d 61 73 74  |games have "mast|
00030950  65 72 20 6b 65 79 73 22  20 77 68 69 63 68 20 6f  |er keys" which o|
00030960  70 65 6e 20 73 65 76 65  72 61 6c 20 64 69 66 66  |pen several diff|
00030970  65 72 65 6e 74 20 6c 6f  63 6b 73 20 69 6e 20 61  |erent locks in a|
00030980  0a 62 75 69 6c 64 69 6e  67 2c 20 66 6f 72 20 69  |.building, for i|
00030990  6e 73 74 61 6e 63 65 2c  20 6f 72 20 22 73 6b 65  |nstance, or "ske|
000309a0  6c 65 74 6f 6e 20 6b 65  79 73 22 2c 20 6f 72 20  |leton keys", or |
000309b0  61 20 6d 61 67 69 63 20  73 70 65 6c 6c 20 74 6f  |a magic spell to|
000309c0  20 67 65 74 20 61 72 6f  75 6e 64 0a 74 68 69 73  | get around.this|
000309d0  2e 0a 0a 0a 34 2e 20 20  41 69 72 2c 20 45 61 72  |....4.  Air, Ear|
000309e0  74 68 2c 20 46 69 72 65  20 61 6e 64 20 57 61 74  |th, Fire and Wat|
000309f0  65 72 0a 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |er.-------------|
00030a00  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00030a10  2d 0a 0a 54 68 65 20 65  6c 65 6d 65 6e 74 73 20  |-..The elements |
00030a20  61 6c 6c 20 74 61 6e 67  6c 65 20 75 70 20 63 6f  |all tangle up co|
00030a30  64 65 20 62 75 74 20 61  64 64 20 74 6f 20 74 68  |de but add to th|
00030a40  65 20 69 6c 6c 75 73 69  6f 6e 2e 20 20 46 69 72  |e illusion.  Fir|
00030a50  65 20 68 61 73 20 6d 61  6e 79 0a 75 73 65 66 75  |e has many.usefu|
00030a60  6c 20 70 72 6f 70 65 72  74 69 65 73 20 2d 20 69  |l properties - i|
00030a70  74 20 6d 61 6b 65 73 20  6c 69 67 68 74 2c 20 69  |t makes light, i|
00030a80  74 20 64 65 73 74 72 6f  79 73 20 74 68 69 6e 67  |t destroys thing|
00030a90  73 2c 20 69 74 20 63 61  6e 20 63 61 75 73 65 0a  |s, it can cause.|
00030aa0  65 78 70 6c 6f 73 69 6f  6e 73 20 61 6e 64 20 63  |explosions and c|
00030ab0  68 65 6d 69 63 61 6c 20  72 65 61 63 74 69 6f 6e  |hemical reaction|
00030ac0  73 2c 20 69 74 20 63 6f  6f 6b 73 20 66 6f 6f 64  |s, it cooks food|
00030ad0  2c 20 69 74 20 73 6f 66  74 65 6e 73 20 6d 61 74  |, it softens mat|
00030ae0  65 72 69 61 6c 73 2c 20  69 74 0a 63 61 6e 20 62  |erials, it.can b|
00030af0  65 20 70 61 73 73 65 64  20 66 72 6f 6d 20 6f 6e  |e passed from on|
00030b00  65 20 6f 62 6a 65 63 74  20 74 6f 20 61 6e 6f 74  |e object to anot|
00030b10  68 65 72 20 2d 20 62 75  74 20 69 6e 20 74 68 65  |her - but in the|
00030b20  20 65 6e 64 20 69 74 20  73 70 72 65 61 64 73 2c  | end it spreads,|
00030b30  0a 77 68 65 72 65 61 73  20 63 6f 64 65 20 64 6f  |.whereas code do|
00030b40  65 73 6e 27 74 2e 20 20  49 66 20 74 68 65 20 70  |esn't.  If the p|
00030b50  6c 61 79 65 72 20 69 73  20 61 6c 6c 6f 77 65 64  |layer is allowed|
00030b60  20 74 6f 20 63 61 72 72  79 20 61 20 6e 61 6b 65  | to carry a nake|
00030b70  64 20 66 6c 61 6d 65 0a  61 72 6f 75 6e 64 20 28  |d flame.around (|
00030b80  61 20 62 75 72 6e 69 6e  67 20 74 6f 72 63 68 2c  |a burning torch,|
00030b90  20 66 6f 72 20 69 6e 73  74 61 6e 63 65 29 2c 20  | for instance), |
00030ba0  74 68 65 6e 20 73 75 64  64 65 6e 6c 79 20 74 68  |then suddenly th|
00030bb0  65 20 67 61 6d 65 20 6e  65 65 64 73 20 74 6f 20  |e game needs to |
00030bc0  6b 6e 6f 77 0a 77 68 65  74 68 65 72 20 6f 72 20  |know.whether or |
00030bd0  6e 6f 74 20 65 61 63 68  20 69 74 65 6d 20 69 6e  |not each item in|
00030be0  20 74 68 65 20 67 61 6d  65 20 28 61 20 63 75 72  | the game (a cur|
00030bf0  74 61 69 6e 2c 20 61 20  70 6f 74 20 70 6c 61 6e  |tain, a pot plan|
00030c00  74 2c 20 61 20 62 6f 6f  6b 29 20 69 73 0a 66 6c  |t, a book) is.fl|
00030c10  61 6d 6d 61 62 6c 65 2e  20 20 45 76 65 6e 20 74  |ammable.  Even t|
00030c20  68 65 20 63 6c 61 73 73  69 63 20 6d 61 74 63 68  |he classic match|
00030c30  62 6f 6f 6b 20 6f 66 20  6d 61 74 63 68 65 73 20  |book of matches |
00030c40  63 61 6e 20 6d 61 6b 65  20 66 6f 72 20 67 72 69  |can make for gri|
00030c50  73 6c 79 0a 69 6d 70 6c  65 6d 65 6e 74 61 74 69  |sly.implementati|
00030c60  6f 6e 2e 0a 0a 41 73 20  69 6e 20 52 6f 62 65 72  |on...As in Rober|
00030c70  74 20 52 65 64 66 6f 72  64 27 73 20 66 69 6c 6d  |t Redford's film|
00030c80  2c 20 73 6f 20 69 6e 20  74 68 65 20 62 65 73 74  |, so in the best|
00030c90  20 67 61 6d 65 20 6c 61  6e 64 73 63 61 70 69 6e  | game landscapin|
00030ca0  67 3a 20 61 20 72 69 76  65 72 20 72 75 6e 73 0a  |g: a river runs.|
00030cb0  74 68 72 6f 75 67 68 20  69 74 2e 20 20 42 75 74  |through it.  But|
00030cc0  20 69 6e 20 61 6e 79 20  72 6f 6f 6d 20 77 68 65  | in any room whe|
00030cd0  72 65 20 77 61 74 65 72  20 69 73 20 61 76 61 69  |re water is avai|
00030ce0  6c 61 62 6c 65 2c 20 70  6c 61 79 65 72 73 20 77  |lable, players w|
00030cf0  69 6c 6c 20 74 72 79 0a  64 72 69 6e 6b 69 6e 67  |ill try.drinking|
00030d00  2c 20 73 77 69 6d 6d 69  6e 67 2c 20 77 61 73 68  |, swimming, wash|
00030d10  69 6e 67 2c 20 64 69 76  69 6e 67 2e 20 20 54 68  |ing, diving.  Th|
00030d20  65 79 20 77 69 6c 6c 20  74 72 79 20 74 6f 20 77  |ey will try to w|
00030d30  61 6c 6b 20 61 77 61 79  20 77 69 74 68 20 74 68  |alk away with th|
00030d40  65 0a 77 61 74 65 72 2e  20 20 28 54 68 69 73 20  |e.water.  (This |
00030d50  61 6c 73 6f 20 61 70 70  6c 69 65 73 20 74 6f 20  |also applies to |
00030d60  61 63 69 64 20 70 6f 6f  6c 73 2c 20 6e 61 74 75  |acid pools, natu|
00030d70  72 61 6c 20 6f 69 6c 20  70 69 74 73 20 61 6e 64  |ral oil pits and|
00030d80  20 74 68 65 20 6c 69 6b  65 2e 29 0a 0a 4c 69 71  | the like.)..Liq|
00030d90  75 69 64 73 20 6d 61 6b  65 20 70 6f 6f 72 20 6f  |uids make poor o|
00030da0  62 6a 65 63 74 73 2c 20  62 65 63 61 75 73 65 20  |bjects, because |
00030db0  74 68 65 79 20 6e 65 65  64 20 74 6f 20 62 65 20  |they need to be |
00030dc0  63 61 72 72 69 65 64 20  69 6e 20 73 6f 6d 65 20  |carried in some |
00030dd0  63 6f 6e 74 61 69 6e 65  72 0a 79 65 74 20 63 61  |container.yet ca|
00030de0  6e 20 62 65 20 70 6f 75  72 65 64 20 66 72 6f 6d  |n be poured from|
00030df0  20 6f 6e 65 20 74 6f 20  61 6e 6f 74 68 65 72 2c  | one to another,|
00030e00  20 61 6e 64 20 62 65 63  61 75 73 65 20 74 68 65  | and because the|
00030e10  79 20 61 72 65 20 65 6e  64 6c 65 73 73 6c 79 0a  |y are endlessly.|
00030e20  64 69 76 69 73 69 62 6c  65 2e 20 20 22 53 6f 6d  |divisible.  "Som|
00030e30  65 20 77 61 74 65 72 22  20 63 61 6e 20 65 61 73  |e water" can eas|
00030e40  69 6c 79 20 62 65 20 6d  61 64 65 20 69 6e 74 6f  |ily be made into|
00030e50  20 22 73 6f 6d 65 20 77  61 74 65 72 22 20 61 6e  | "some water" an|
00030e60  64 20 22 73 6f 6d 65 0a  77 61 74 65 72 22 2e 20  |d "some.water". |
00030e70  20 49 66 20 74 68 65 72  65 27 73 20 6d 6f 72 65  | If there's more|
00030e80  20 74 68 61 6e 20 6f 6e  65 20 6c 69 71 75 69 64  | than one liquid|
00030e90  20 69 6e 20 74 68 65 20  67 61 6d 65 2c 20 63 61  | in the game, ca|
00030ea0  6e 20 74 68 65 79 20 62  65 20 6d 69 78 65 64 3f  |n they be mixed?|
00030eb0  20 0a 50 6f 75 72 69 6e  67 20 6c 69 71 75 69 64  | .Pouring liquid|
00030ec0  20 6f 76 65 72 20 73 6f  6d 65 74 68 69 6e 67 20  | over something |
00030ed0  69 73 20 6c 69 6b 65 6c  79 20 74 6f 20 6d 61 6b  |is likely to mak|
00030ee0  65 20 61 20 6d 65 73 73  20 6f 66 20 69 74 3a 20  |e a mess of it: |
00030ef0  79 65 74 20 77 68 79 20  73 68 6f 75 6c 64 0a 69  |yet why should.i|
00030f00  74 20 62 65 20 69 6d 70  6f 73 73 69 62 6c 65 3f  |t be impossible?|
00030f10  20 20 41 6e 64 20 73 6f  20 6f 6e 2e 0a 0a 54 68  |  And so on...Th|
00030f20  65 20 63 6f 6d 70 72 6f  6d 69 73 65 20 73 6f 6c  |e compromise sol|
00030f30  75 74 69 6f 6e 20 69 73  20 75 73 75 61 6c 6c 79  |ution is usually|
00030f40  20 74 6f 20 68 61 76 65  20 61 20 62 6f 74 74 6c  | to have a bottl|
00030f50  65 20 77 69 74 68 20 61  20 22 63 61 70 61 63 69  |e with a "capaci|
00030f60  74 79 22 20 6f 66 2c 0a  73 61 79 2c 20 35 20 75  |ty" of,.say, 5 u|
00030f70  6e 69 74 73 20 6f 66 20  77 61 74 65 72 2c 20 77  |nits of water, w|
00030f80  68 69 63 68 20 63 61 6e  20 62 65 20 72 65 66 69  |hich can be refi|
00030f90  6c 6c 65 64 20 69 6e 20  61 6e 79 20 72 6f 6f 6d  |lled in any room|
00030fa0  20 77 68 65 72 65 20 74  68 65 72 65 20 69 73 0a  | where there is.|
00030fb0  77 61 74 65 72 20 28 74  68 65 72 65 20 69 73 20  |water (there is |
00030fc0  61 20 66 6c 61 67 20 66  6f 72 20 74 68 69 73 2c  |a flag for this,|
00030fd0  20 73 61 79 29 2c 20 61  6e 64 20 74 68 65 6e 20  | say), and then |
00030fe0  31 20 75 6e 69 74 20 61  74 20 61 20 74 69 6d 65  |1 unit at a time|
00030ff0  20 69 73 20 64 72 75 6e  6b 2c 0a 70 6f 75 72 65  | is drunk,.poure|
00031000  64 20 6f 75 74 2c 20 65  74 63 2e 20 20 54 68 65  |d out, etc.  The|
00031010  20 70 6c 61 79 65 72 20  77 68 6f 20 74 72 69 65  | player who trie|
00031020  73 20 74 6f 20 70 6f 75  72 20 77 61 74 65 72 20  |s to pour water |
00031030  6f 76 65 72 20 74 68 69  6e 67 73 20 69 73 20 73  |over things is s|
00031040  69 6d 70 6c 79 0a 61 64  6d 6f 6e 69 73 68 65 64  |imply.admonished|
00031050  20 61 6e 64 20 74 6f 6c  64 20 6e 6f 74 20 74 6f  | and told not to|
00031060  2e 0a 0a 49 6d 70 6c 65  6d 65 6e 74 69 6e 67 20  |...Implementing |
00031070  73 77 69 6d 6d 69 6e 67  2c 20 6f 72 20 62 65 69  |swimming, or bei|
00031080  6e 67 20 75 6e 64 65 72  77 61 74 65 72 2c 20 69  |ng underwater, i|
00031090  73 20 61 20 64 69 66 66  65 72 65 6e 74 20 6f 72  |s a different or|
000310a0  64 65 72 20 6f 66 0a 64  69 66 66 69 63 75 6c 74  |der of.difficult|
000310b0  79 20 61 67 61 69 6e 2e  20 20 57 68 61 74 20 68  |y again.  What h|
000310c0  61 70 70 65 6e 73 20 74  6f 20 74 68 65 20 6f 62  |appens to the ob|
000310d0  6a 65 63 74 73 20 62 65  69 6e 67 20 68 65 6c 64  |jects being held|
000310e0  3f 20 20 43 61 6e 20 61  20 70 6c 61 79 65 72 0a  |?  Can a player.|
000310f0  73 77 69 6d 20 77 68 69  6c 65 20 77 65 61 72 69  |swim while weari|
00031100  6e 67 20 68 65 61 76 79  20 63 6c 6f 74 68 65 73  |ng heavy clothes|
00031110  2c 20 6f 72 20 63 61 72  72 79 69 6e 67 20 6d 61  |, or carrying ma|
00031120  6e 79 20 74 68 69 6e 67  73 3f 0a 0a 4d 6f 72 65  |ny things?..More|
00031130  6f 76 65 72 2c 20 64 6f  65 73 20 74 68 65 20 70  |over, does the p|
00031140  6c 61 79 65 72 20 72 75  6e 20 6f 75 74 20 6f 66  |layer run out of|
00031150  20 61 69 72 3f 20 20 49  6e 20 6d 61 6e 79 20 67  | air?  In many g|
00031160  61 6d 65 73 20 74 68 65  72 65 20 69 73 20 73 6f  |ames there is so|
00031170  6d 65 20 73 75 63 68 0a  70 75 7a 7a 6c 65 3a 20  |me such.puzzle: |
00031180  61 20 72 6f 6f 6d 20 77  68 65 72 65 20 74 68 65  |a room where the|
00031190  20 61 69 72 20 69 73 20  70 6f 6f 72 2c 20 6f 72  | air is poor, or|
000311a0  20 6f 70 65 6e 20 73 70  61 63 65 2c 20 6f 72 20  | open space, or |
000311b0  75 6e 64 65 72 77 61 74  65 72 3a 20 61 6e 64 20  |underwater: and |
000311c0  61 0a 73 63 75 62 61 20  6d 61 73 6b 20 6f 72 20  |a.scuba mask or |
000311d0  61 20 73 70 61 63 65 20  68 65 6c 6d 65 74 20 69  |a space helmet i|
000311e0  73 20 63 61 6c 6c 65 64  20 66 6f 72 2e 20 20 4f  |s called for.  O|
000311f0  6e 65 20 73 68 6f 75 6c  64 20 6e 6f 74 20 6b 69  |ne should not ki|
00031200  6c 6c 20 74 68 65 20 70  6c 61 79 65 72 0a 61 74  |ll the player.at|
00031210  20 6f 6e 63 65 20 77 68  65 6e 20 68 65 20 65 6e  | once when he en|
00031220  74 65 72 73 20 73 75 63  68 20 61 20 68 6f 73 74  |ters such a host|
00031230  69 6c 65 20 65 6e 76 69  72 6f 6e 6d 65 6e 74 20  |ile environment |
00031240  75 6e 70 72 6f 74 65 63  74 65 64 2c 20 73 69 6e  |unprotected, sin|
00031250  63 65 20 68 65 20 77 69  6c 6c 0a 70 72 6f 62 61  |ce he will.proba|
00031260  62 6c 79 20 6e 6f 74 20  68 61 76 65 20 68 61 64  |bly not have had|
00031270  20 66 61 69 72 20 77 61  72 6e 69 6e 67 2e 20 20  | fair warning.  |
00031280  53 6f 6d 65 20 67 61 6d  65 73 20 65 76 65 6e 20  |Some games even |
00031290  69 6d 70 6c 65 6d 65 6e  74 20 67 61 73 65 73 3a  |implement gases:|
000312a0  0a 68 65 6c 69 75 6d 2c  20 65 78 70 6c 6f 73 69  |.helium, explosi|
000312b0  76 65 20 68 79 64 72 6f  67 65 6e 2c 20 6c 61 75  |ve hydrogen, lau|
000312c0  67 68 69 6e 67 20 67 61  73 2e 0a 0a 41 6e 64 20  |ghing gas...And |
000312d0  73 6f 20 74 6f 20 65 61  72 74 68 2e 20 20 4f 6e  |so to earth.  On|
000312e0  65 20 6f 66 20 74 68 65  20 6f 6c 64 65 73 74 20  |e of the oldest |
000312f0  70 75 7a 7a 6c 65 73 20  61 72 6f 75 6e 64 20 69  |puzzles around i|
00031300  73 20 64 69 67 67 69 6e  67 20 66 6f 72 20 62 75  |s digging for bu|
00031310  72 69 65 64 0a 74 72 65  61 73 75 72 65 2e 20 20  |ried.treasure.  |
00031320  54 68 65 20 73 68 6f 76  65 6c 20 63 61 6e 20 62  |The shovel can b|
00031330  65 20 66 6f 75 6e 64 20  69 6e 20 6a 75 73 74 20  |e found in just |
00031340  61 62 6f 75 74 20 65 76  65 72 79 20 74 72 61 64  |about every trad|
00031350  69 74 69 6f 6e 61 6c 2d  73 74 79 6c 65 0a 67 61  |itional-style.ga|
00031360  6d 65 2e 20 20 4f 66 20  63 6f 75 72 73 65 20 69  |me.  Of course i|
00031370  6e 20 72 65 61 6c 20 6c  69 66 65 20 6f 6e 65 20  |n real life one |
00031380  63 61 6e 20 64 69 67 20  76 65 72 79 20 6e 65 61  |can dig very nea|
00031390  72 6c 79 20 61 6e 79 77  68 65 72 65 20 6f 75 74  |rly anywhere out|
000313a0  64 6f 6f 72 73 3a 0a 74  68 65 72 65 27 73 20 6a  |doors:.there's j|
000313b0  75 73 74 20 6c 69 74 74  6c 65 20 63 61 75 73 65  |ust little cause|
000313c0  20 74 6f 2e 20 20 47 61  6d 65 73 20 72 65 61 6c  | to.  Games real|
000313d0  6c 79 20 63 61 6e 27 74  20 61 66 66 6f 72 64 20  |ly can't afford |
000313e0  74 6f 20 61 6c 6c 6f 77  20 74 68 69 73 2e 20 49  |to allow this. I|
000313f0  74 27 73 0a 71 75 69 74  65 20 64 69 66 66 69 63  |t's.quite diffic|
00031400  75 6c 74 20 74 6f 20 74  68 69 6e 6b 20 6f 66 20  |ult to think of |
00031410  61 20 70 65 72 73 75 61  73 69 76 65 20 77 61 79  |a persuasive way|
00031420  20 6f 66 20 62 72 65 61  6b 69 6e 67 20 74 68 65  | of breaking the|
00031430  20 6e 65 77 73 20 74 6f  20 74 68 65 0a 70 6c 61  | news to the.pla|
00031440  79 65 72 2c 20 74 68 6f  75 67 68 2e 0a 0a 53 74  |yer, though...St|
00031450  69 6c 6c 2c 20 64 69 67  67 69 6e 67 20 69 6e 20  |ill, digging in |
00031460  73 6f 6d 65 20 66 6f 72  6d 20 6d 61 6b 65 73 20  |some form makes |
00031470  61 20 67 6f 6f 64 20 70  75 7a 7a 6c 65 3a 20 69  |a good puzzle: i|
00031480  74 20 61 72 74 69 66 69  63 69 61 6c 6c 79 20 63  |t artificially c|
00031490  72 65 61 74 65 73 20 61  0a 6e 65 77 20 6c 6f 63  |reates a.new loc|
000314a0  61 74 69 6f 6e 2c 20 6f  72 20 61 20 6e 65 77 20  |ation, or a new |
000314b0  6d 61 70 20 63 6f 6e 6e  65 63 74 69 6f 6e 2c 20  |map connection, |
000314c0  6f 72 20 61 20 6e 65 77  20 63 6f 6e 74 61 69 6e  |or a new contain|
000314d0  65 72 20 28 74 68 65 20  68 6f 6c 65 20 6c 65 66  |er (the hole lef|
000314e0  74 0a 62 65 68 69 6e 64  29 2e 0a 0a 0a 35 2e 20  |t.behind)....5. |
000314f0  20 41 6e 69 6d 61 6c 73  20 61 6e 64 20 50 6c 61  | Animals and Pla|
00031500  6e 74 73 0a 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |nts.------------|
00031510  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 0a 0a 56 65 67 65  |----------..Vege|
00031520  74 61 74 69 6f 6e 20 66  69 74 73 20 69 6e 74 6f  |tation fits into|
00031530  20 61 6c 6d 6f 73 74 20  61 6e 79 20 6c 61 6e 64  | almost any land|
00031540  73 63 61 70 65 2c 20 61  6e 64 20 69 6e 20 6d 6f  |scape, and in mo|
00031550  73 74 20 67 61 6d 65 73  20 70 6c 61 79 73 20 73  |st games plays s|
00031560  6f 6d 65 20 70 61 72 74  0a 69 6e 20 69 74 2e 20  |ome part.in it. |
00031570  20 54 68 69 73 20 69 73  20 67 6f 6f 64 20 66 6f  | This is good fo|
00031580  72 20 76 61 72 69 65 74  79 2c 20 73 69 6e 63 65  |r variety, since|
00031590  20 62 79 20 61 6e 64 20  6c 61 72 67 65 20 6f 6e  | by and large on|
000315a0  65 20 64 65 61 6c 73 20  77 69 74 68 20 70 6c 61  |e deals with pla|
000315b0  6e 74 73 0a 64 69 66 66  65 72 65 6e 74 6c 79 20  |nts.differently |
000315c0  66 72 6f 6d 20 6d 61 63  68 69 6e 65 73 20 61 6e  |from machines an|
000315d0  64 20 70 65 6f 70 6c 65  2e 20 20 50 75 6c 6c 69  |d people.  Pulli|
000315e0  6e 67 20 74 68 65 20 75  6e 64 65 72 67 72 6f 77  |ng the undergrow|
000315f0  74 68 20 61 77 61 79 20  66 72 6f 6d 0a 72 75 69  |th away from.rui|
00031600  6e 73 2c 20 66 6f 72 20  69 6e 73 74 61 6e 63 65  |ns, for instance|
00031610  2c 20 6f 72 20 70 69 63  6b 69 6e 67 20 66 6c 6f  |, or picking flo|
00031620  77 65 72 73 2e 0a 0a 41  20 70 6c 61 6e 74 20 77  |wers...A plant w|
00031630  68 69 63 68 20 63 61 6e  20 62 65 20 77 61 74 65  |hich can be wate|
00031640  72 65 64 20 74 6f 20 6d  61 6b 65 20 69 74 20 67  |red to make it g|
00031650  72 6f 77 20 69 6e 74 6f  20 61 20 62 65 61 6e 73  |row into a beans|
00031660  74 61 6c 6b 20 69 73 20  6e 6f 77 2c 0a 70 65 72  |talk is now,.per|
00031670  68 61 70 73 2c 20 72 61  74 68 65 72 20 61 20 63  |haps, rather a c|
00031680  6c 69 63 68 65 2e 20 20  53 6f 2c 20 6f 66 20 63  |liche.  So, of c|
00031690  6f 75 72 73 65 2c 20 6e  61 74 75 72 61 6c 6c 79  |ourse, naturally|
000316a0  20 6e 6f 20 73 65 6c 66  2d 72 65 73 70 65 63 74  | no self-respect|
000316b0  69 6e 67 0a 61 75 74 68  6f 72 20 77 6f 75 6c 64  |ing.author would|
000316c0  20 77 72 69 74 65 20 6f  6e 65 2e 0a 0a 54 72 65  | write one...Tre|
000316d0  65 73 20 61 6e 64 20 63  72 65 65 70 69 6e 67 20  |es and creeping |
000316e0  70 6c 61 6e 74 73 20 28  77 69 73 74 61 72 69 61  |plants (wistaria|
000316f0  20 6f 72 20 69 76 79 2c  20 66 6f 72 20 69 6e 73  | or ivy, for ins|
00031700  74 61 6e 63 65 29 20 6f  75 67 68 74 20 74 6f 20  |tance) ought to |
00031710  62 65 0a 63 6c 69 6d 62  61 62 6c 65 2c 20 65 76  |be.climbable, ev|
00031720  65 6e 20 69 66 20 74 68  69 73 20 64 6f 65 73 20  |en if this does |
00031730  6e 6f 20 67 6f 6f 64 2e  0a 0a 41 6e 69 6d 61 6c  |no good...Animal|
00031740  73 20 61 72 65 20 65 76  65 6e 20 6d 6f 72 65 20  |s are even more |
00031750  75 73 65 66 75 6c 2c 20  66 6f 72 20 73 65 76 65  |useful, for seve|
00031760  72 61 6c 20 72 65 61 73  6f 6e 73 3a 20 74 68 65  |ral reasons: the|
00031770  79 20 6d 6f 76 65 2c 20  74 68 65 79 20 62 65 68  |y move, they beh|
00031780  61 76 65 20 69 6e 0a 63  75 72 69 6f 75 73 20 61  |ave in.curious a|
00031790  6e 64 20 6f 62 73 65 73  73 69 76 65 20 77 61 79  |nd obsessive way|
000317a0  73 3a 20 74 68 65 79 20  68 61 76 65 20 61 6d 75  |s: they have amu|
000317b0  73 69 6e 67 6c 79 20 68  75 6d 61 6e 20 63 68 61  |singly human cha|
000317c0  72 61 63 74 65 72 69 73  74 69 63 73 2c 20 62 75  |racteristics, bu|
000317d0  74 0a 64 6f 20 6e 6f 74  20 67 65 6e 65 72 61 6c  |t.do not general|
000317e0  6c 79 20 72 65 61 63 74  20 74 6f 20 63 6f 6e 76  |ly react to conv|
000317f0  65 72 73 61 74 69 6f 6e  20 61 6e 64 20 6e 65 65  |ersation and nee|
00031800  64 20 6e 6f 74 20 62 65  20 70 61 72 74 69 63 75  |d not be particu|
00031810  6c 61 72 6c 79 0a 73 75  72 70 72 69 73 65 64 20  |larly.surprised |
00031820  62 79 20 74 68 65 20 70  6c 61 79 65 72 20 64 6f  |by the player do|
00031830  69 6e 67 20 73 6f 6d 65  74 68 69 6e 67 20 76 65  |ing something ve|
00031840  72 79 20 73 68 6f 63 6b  69 6e 67 20 6e 65 61 72  |ry shocking near|
00031850  62 79 2c 20 73 6f 20 74  68 65 79 20 61 72 65 0a  |by, so they are.|
00031860  72 65 6c 61 74 69 76 65  6c 79 20 65 61 73 79 20  |relatively easy |
00031870  74 6f 20 63 6f 64 65 3a  20 61 6e 64 20 74 68 65  |to code: and the|
00031880  79 20 61 64 64 20 61 20  73 70 6c 61 73 68 20 6f  |y add a splash o|
00031890  66 20 63 6f 6c 6f 75 72  2e 20 20 57 68 61 74 20  |f colour.  What |
000318a0  77 6f 75 6c 64 20 74 68  65 0a 47 61 72 64 65 6e  |would the.Garden|
000318b0  20 6f 66 20 45 64 65 6e  20 68 61 76 65 20 62 65  | of Eden have be|
000318c0  65 6e 20 77 69 74 68 6f  75 74 20 74 75 72 74 6c  |en without turtl|
000318d0  65 73 2c 20 65 6c 65 70  68 61 6e 74 73 2c 20 72  |es, elephants, r|
000318e0  61 62 62 69 74 73 2c 20  6c 65 6f 70 61 72 64 73  |abbits, leopards|
000318f0  20 61 6e 64 0a 67 75 69  6e 65 61 20 70 69 67 73  | and.guinea pigs|
00031900  3f 0a 0a 54 68 65 20 63  6c 61 73 73 69 63 2c 20  |?..The classic, |
00031910  72 61 74 68 65 72 20 70  72 65 64 69 63 74 61 62  |rather predictab|
00031920  6c 65 20 70 75 7a 7a 6c  65 20 77 69 74 68 20 61  |le puzzle with a|
00031930  6e 69 6d 61 6c 73 20 69  73 20 73 6f 6c 76 65 64  |nimals is solved|
00031940  20 62 79 20 66 65 65 64  69 6e 67 0a 74 68 65 6d  | by feeding.them|
00031950  20 73 6f 6d 65 20 61 70  70 6f 73 69 74 65 20 66  | some apposite f|
00031960  6f 6f 64 20 74 6f 20 6d  61 6b 65 20 74 68 65 6d  |ood to make them|
00031970  20 6f 62 65 64 69 65 6e  74 2c 20 74 68 65 6e 20  | obedient, then |
00031980  67 65 74 74 69 6e 67 20  74 68 65 6d 20 74 6f 20  |getting them to |
00031990  64 6f 0a 73 6f 6d 65 74  68 69 6e 67 2e 20 20 47  |do.something.  G|
000319a0  6f 6f 64 20 67 61 6d 65  73 20 66 69 6e 64 20 73  |ood games find s|
000319b0  6f 6d 65 74 68 69 6e 67  20 62 65 74 74 65 72 2e  |omething better.|
000319c0  20 20 28 43 75 72 69 6f  75 73 6c 79 2c 20 74 68  |  (Curiously, th|
000319d0  65 20 61 6e 69 6d 61 6c  0a 70 75 7a 7a 6c 65 73  |e animal.puzzles|
000319e0  20 69 6e 20 22 41 64 76  65 6e 74 75 72 65 22 20  | in "Adventure" |
000319f0  2d 20 74 68 65 20 62 65  61 72 2c 20 74 68 65 20  |- the bear, the |
00031a00  62 69 72 64 20 61 6e 64  20 74 68 65 20 73 6e 61  |bird and the sna|
00031a10  6b 65 20 2d 20 61 72 65  20 6d 6f 72 65 0a 6f 72  |ke - are more.or|
00031a20  69 67 69 6e 61 6c 20 74  68 61 6e 20 6d 6f 73 74  |iginal than most|
00031a30  20 6f 66 20 74 68 6f 73  65 20 69 6e 20 6c 61 74  | of those in lat|
00031a40  65 72 20 67 61 6d 65 73  2e 29 0a 0a 0a 36 2e 20  |er games.)...6. |
00031a50  20 50 65 6f 70 6c 65 0a  2d 2d 2d 2d 2d 2d 2d 2d  | People.--------|
00031a60  2d 2d 0a 0a 41 6e 64 20  73 6f 20 64 61 77 6e 73  |--..And so dawns|
00031a70  20 74 68 65 20 73 69 78  74 68 20 64 61 79 20 6f  | the sixth day o|
00031a80  66 20 63 72 65 61 74 69  6f 6e 3a 20 77 65 20 68  |f creation: we h|
00031a90  61 76 65 20 74 68 65 20  6d 6f 75 6e 74 61 69 6e  |ave the mountain|
00031aa0  73 2c 20 72 69 76 65 72  73 2c 0a 70 6c 61 6e 74  |s, rivers,.plant|
00031ab0  73 20 61 6e 64 20 61 6e  69 6d 61 6c 73 2c 20 62  |s and animals, b|
00031ac0  75 74 20 61 73 20 79 65  74 20 6e 6f 20 70 65 6f  |ut as yet no peo|
00031ad0  70 6c 65 2e 0a 0a 54 68  65 20 74 72 61 70 20 77  |ple...The trap w|
00031ae0  69 74 68 20 22 70 65 6f  70 6c 65 22 20 70 75 7a  |ith "people" puz|
00031af0  7a 6c 65 73 20 73 68 6f  75 6c 64 20 70 65 72 68  |zles should perh|
00031b00  61 70 73 20 62 65 20 63  61 6c 6c 65 64 20 74 68  |aps be called th|
00031b10  65 20 47 65 74 2d 58 2d  47 69 76 65 2d 58 0a 73  |e Get-X-Give-X.s|
00031b20  79 6e 64 72 6f 6d 65 2e  20 20 50 65 6f 70 6c 65  |yndrome.  People|
00031b30  20 61 72 65 20 61 20 6c  69 74 74 6c 65 20 6d 6f  | are a little mo|
00031b40  72 65 20 63 6f 6d 70 6c  69 63 61 74 65 64 20 74  |re complicated t|
00031b50  68 61 6e 20 74 68 61 74  2e 20 20 54 68 65 20 6e  |han that.  The n|
00031b60  69 67 68 74 6d 61 72 65  0a 6f 66 20 63 6f 64 69  |ightmare.of codi|
00031b70  6e 67 20 72 65 61 6c 20  63 68 61 72 61 63 74 65  |ng real characte|
00031b80  72 73 20 69 73 20 69 6c  6c 75 73 74 72 61 74 65  |rs is illustrate|
00031b90  64 20 77 65 6c 6c 20 62  79 20 6f 6e 65 20 6f 66  |d well by one of|
00031ba0  20 44 61 76 65 20 4c 65  62 6c 69 6e 67 27 73 0a  | Dave Lebling's.|
00031bb0  65 78 61 6d 70 6c 65 20  62 75 67 73 20 66 72 6f  |example bugs fro|
00031bc0  6d 20 22 53 75 73 70 65  63 74 22 3a 0a 0a 20 20  |m "Suspect":..  |
00031bd0  20 3e 20 53 48 4f 57 20  43 4f 52 50 53 45 20 54  | > SHOW CORPSE T|
00031be0  4f 20 4d 49 43 48 41 45  4c 0a 20 20 20 4d 69 63  |O MICHAEL.   Mic|
00031bf0  68 61 65 6c 20 64 6f 65  73 6e 27 74 20 61 70 70  |hael doesn't app|
00031c00  65 61 72 20 69 6e 74 65  72 65 73 74 65 64 2e 0a  |ear interested..|
00031c10  0a 20 20 20 4f 66 20 63  6f 75 72 73 65 2c 20 4d  |.   Of course, M|
00031c20  69 63 68 61 65 6c 20 69  73 20 6f 6e 6c 79 20 56  |ichael is only V|
00031c30  65 72 6f 6e 69 63 61 27  73 20 68 75 73 62 61 6e  |eronica's husban|
00031c40  64 3b 20 77 68 79 20 77  6f 75 6c 64 20 68 65 20  |d; why would he |
00031c50  62 65 0a 20 20 20 69 6e  74 65 72 65 73 74 65 64  |be.   interested|
00031c60  3f 0a 0a 50 65 6f 70 6c  65 20 61 72 65 20 74 68  |?..People are th|
00031c70  65 20 68 61 72 64 65 73  74 20 65 6c 65 6d 65 6e  |e hardest elemen|
00031c80  74 73 20 6f 66 20 61 6e  79 20 67 61 6d 65 20 74  |ts of any game t|
00031c90  6f 20 63 6f 64 65 20 75  70 2e 20 20 54 68 65 79  |o code up.  They|
00031ca0  20 63 61 6e 20 74 61 6b  65 20 66 69 76 65 0a 74  | can take five.t|
00031cb0  69 6d 65 73 20 74 68 65  20 61 6d 6f 75 6e 74 20  |imes the amount |
00031cc0  6f 66 20 63 6f 64 65 20  61 74 74 61 63 68 65 64  |of code attached|
00031cd0  20 74 6f 20 65 76 65 6e  20 61 20 63 6f 6d 70 6c  | to even a compl|
00031ce0  69 63 61 74 65 64 20 72  6f 6f 6d 2e 20 20 54 68  |icated room.  Th|
00031cf0  65 79 20 68 61 76 65 20  74 6f 3a 0a 0a 2d 2d 20  |ey have to:..-- |
00031d00  72 65 61 63 74 20 74 6f  20 65 76 65 6e 74 73 20  |react to events |
00031d10  28 61 73 20 61 62 6f 76  65 21 29 3b 0a 0a 2d 2d  |(as above!);..--|
00031d20  20 6d 61 6b 65 20 63 6f  6e 76 65 72 73 61 74 69  | make conversati|
00031d30  6f 6e 20 6f 66 20 73 6f  6d 65 20 6b 69 6e 64 20  |on of some kind |
00031d40  6f 72 20 61 6e 6f 74 68  65 72 3b 0a 0a 2d 2d 20  |or another;..-- |
00031d50  75 6e 64 65 72 73 74 61  6e 64 20 61 6e 64 20 73  |understand and s|
00031d60  6f 6d 65 74 69 6d 65 73  20 6f 62 65 79 20 69 6e  |ometimes obey in|
00031d70  73 74 72 75 63 74 69 6f  6e 73 20 28 22 72 6f 62  |structions ("rob|
00031d80  6f 74 2c 20 67 6f 20 73  6f 75 74 68 22 29 3b 0a  |ot, go south");.|
00031d90  0a 2d 2d 20 77 61 6e 64  65 72 20 61 72 6f 75 6e  |.-- wander aroun|
00031da0  64 20 74 68 65 20 6d 61  70 20 69 6e 20 61 20 77  |d the map in a w|
00031db0  61 79 20 63 6f 6e 73 69  73 74 65 6e 74 20 77 69  |ay consistent wi|
00031dc0  74 68 20 74 68 65 20 77  61 79 20 74 68 65 20 70  |th the way the p|
00031dd0  6c 61 79 65 72 20 64 6f  65 73 3b 0a 0a 2d 2d 20  |layer does;..-- |
00031de0  68 61 76 65 20 73 6f 6d  65 20 61 74 74 69 74 75  |have some attitu|
00031df0  64 65 20 74 6f 20 74 68  65 20 70 6c 61 79 65 72  |de to the player|
00031e00  2c 20 61 6e 64 20 73 6f  6d 65 20 70 65 72 73 6f  |, and some perso|
00031e10  6e 61 6c 69 74 79 2e 0a  0a 54 68 65 79 20 6f 66  |nality...They of|
00031e20  74 65 6e 20 68 61 76 65  20 70 6f 73 73 65 73 73  |ten have possess|
00031e30  69 6f 6e 73 20 6f 66 20  74 68 65 69 72 20 6f 77  |ions of their ow|
00031e40  6e 20 61 6e 64 20 63 61  6e 20 65 78 70 65 63 74  |n and can expect|
00031e50  20 74 6f 20 62 65 20 61  74 74 61 63 6b 65 64 2c  | to be attacked,|
00031e60  0a 68 61 76 65 20 74 68  69 6e 67 73 20 67 69 76  |.have things giv|
00031e70  65 6e 20 74 6f 20 6f 72  20 74 68 72 6f 77 6e 20  |en to or thrown |
00031e80  61 74 20 74 68 65 6d 2c  20 6f 72 20 65 76 65 6e  |at them, or even|
00031e90  20 6b 69 73 73 65 64 20  62 79 20 61 20 64 65 73  | kissed by a des|
00031ea0  70 65 72 61 74 65 0a 70  6c 61 79 65 72 2e 20 20  |perate.player.  |
00031eb0  41 6c 6c 20 74 68 69 73  20 72 65 71 75 69 72 65  |All this require|
00031ec0  73 20 63 6f 64 65 2e 20  20 47 6f 6f 64 20 70 6c  |s code.  Good pl|
00031ed0  61 79 65 72 20 63 68 61  72 61 63 74 65 72 73 20  |ayer characters |
00031ee0  61 6c 73 6f 20 64 6f 20  73 75 72 70 72 69 73 69  |also do surprisi|
00031ef0  6e 67 0a 74 68 69 6e 67  73 20 66 72 6f 6d 20 74  |ng.things from t|
00031f00  69 6d 65 20 74 6f 20 74  69 6d 65 2c 20 69 6e 20  |ime to time, in |
00031f10  61 20 72 61 6e 64 6f 6d  20 77 61 79 2e 20 20 49  |a random way.  I|
00031f20  6e 20 73 6f 6d 65 20 67  61 6d 65 73 20 74 68 65  |n some games the|
00031f30  79 20 68 61 76 65 20 61  20 76 61 73 74 0a 73 74  |y have a vast.st|
00031f40  6f 63 6b 20 6f 66 20 6b  6e 6f 77 6c 65 64 67 65  |ock of knowledge|
00031f50  20 61 6e 64 20 72 65 70  6c 69 65 73 2e 20 20 54  | and replies.  T|
00031f60  68 65 20 77 6f 6d 61 6e  20 73 65 6c 6c 69 6e 67  |he woman selling|
00031f70  20 62 72 65 61 64 2d 63  72 75 6d 62 73 20 61 74  | bread-crumbs at|
00031f80  20 74 68 65 20 76 65 72  79 0a 62 65 67 69 6e 6e  | the very.beginn|
00031f90  69 6e 67 20 6f 66 20 22  54 72 69 6e 69 74 79 22  |ing of "Trinity"|
00031fa0  20 28 77 68 6f 20 64 6f  65 73 20 6e 6f 74 20 70  | (who does not p|
00031fb0  6c 61 79 20 61 20 68 75  67 65 20 72 6f 6c 65 20  |lay a huge role |
00031fc0  69 6e 20 74 68 65 20 67  61 6d 65 29 20 63 61 6e  |in the game) can|
00031fd0  20 73 61 79 0a 6f 76 65  72 20 35 30 20 64 69 66  | say.over 50 dif|
00031fe0  66 65 72 65 6e 74 20 74  68 69 6e 67 73 2e 0a 0a  |ferent things...|
00031ff0  4d 6f 73 74 20 63 6f 6e  76 65 72 73 61 74 69 6f  |Most conversatio|
00032000  6e 20 69 73 20 61 64 64  65 64 20 74 6f 20 74 68  |n is added to th|
00032010  65 20 63 6f 64 65 20 69  6e 20 70 6c 61 79 2d 74  |e code in play-t|
00032020  65 73 74 69 6e 67 2e 20  20 49 66 20 74 68 65 20  |esting.  If the |
00032030  70 6c 61 79 2d 74 65 73  74 65 72 73 0a 63 6f 6d  |play-testers.com|
00032040  70 6c 61 69 6e 20 74 68  61 74 20 22 61 73 6b 20  |plain that "ask |
00032050  77 61 69 74 65 72 20 61  62 6f 75 74 20 61 70 70  |waiter about app|
00032060  6c 65 73 22 20 64 6f 65  73 20 6e 6f 74 68 69 6e  |les" does nothin|
00032070  67 2c 20 74 68 65 6e 20  61 64 64 20 73 6f 6d 65  |g, then add some|
00032080  20 72 65 70 6c 79 2c 0a  65 76 65 6e 20 69 66 20  | reply,.even if |
00032090  6e 6f 74 20 61 20 74 65  72 72 69 62 6c 79 20 75  |not a terribly u|
000320a0  73 65 66 75 6c 20 6f 6e  65 2e 0a 0a 47 6f 6f 64  |seful one...Good|
000320b0  20 70 6c 61 79 65 72 2d  63 68 61 72 61 63 74 65  | player-characte|
000320c0  72 73 20 6d 61 79 20 63  6f 6d 65 20 61 6e 64 20  |rs may come and |
000320d0  67 6f 2c 20 74 75 72 6e  69 6e 67 20 75 70 20 61  |go, turning up a|
000320e0  74 20 64 69 66 66 65 72  65 6e 74 20 74 69 6d 65  |t different time|
000320f0  73 20 64 75 72 69 6e 67  0a 74 68 65 20 67 61 6d  |s during.the gam|
00032100  65 3a 20 74 68 65 79 20  61 72 65 20 70 61 72 74  |e: they are part|
00032110  20 6f 66 20 74 68 65 20  6c 61 72 67 65 72 20 70  | of the larger p|
00032120  6c 6f 74 2e 20 20 42 75  74 20 74 68 65 72 65 20  |lot.  But there |
00032130  69 73 20 61 6c 73 6f 20  72 6f 6f 6d 20 66 6f 72  |is also room for|
00032140  20 74 68 65 0a 68 75 6d  62 6c 65 20 64 6f 6f 72  | the.humble door|
00032150  2d 6b 65 65 70 65 72 20  77 68 6f 20 68 61 73 20  |-keeper who has |
00032160  6e 6f 74 68 69 6e 67 20  74 6f 20 64 6f 20 62 75  |nothing to do bu|
00032170  74 20 63 68 65 63 6b 20  70 61 73 73 65 73 2e 0a  |t check passes..|
00032180  0a 0a 37 2e 20 20 4d 61  7a 65 73 2e 2e 2e 0a 2d  |..7.  Mazes....-|
00032190  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 0a 41 6c 6d  |-----------..Alm|
000321a0  6f 73 74 20 65 76 65 72  79 20 67 61 6d 65 20 63  |ost every game c|
000321b0  6f 6e 74 61 69 6e 73 20  61 20 6d 61 7a 65 2e 20  |ontains a maze. |
000321c0  20 4e 6f 74 68 69 6e 67  20 6e 6f 77 61 64 61 79  | Nothing nowaday|
000321d0  73 20 77 69 6c 6c 20 65  76 65 72 20 65 71 75 61  |s will ever equa|
000321e0  6c 20 74 68 65 0a 69 6d  6d 6f 72 74 61 6c 0a 0a  |l the.immortal..|
000321f0  20 20 59 6f 75 20 61 72  65 20 69 6e 20 61 20 6d  |  You are in a m|
00032200  61 7a 65 20 6f 66 20 74  77 69 73 74 79 20 6c 69  |aze of twisty li|
00032210  74 74 6c 65 20 70 61 73  73 61 67 65 73 2c 20 61  |ttle passages, a|
00032220  6c 6c 20 61 6c 69 6b 65  2e 0a 0a 42 75 74 20 6e  |ll alike...But n|
00032230  6f 77 20 77 65 20 61 72  65 20 61 6c 6c 20 6a 61  |ow we are all ja|
00032240  64 65 64 2e 20 20 41 20  6d 61 7a 65 20 73 68 6f  |ded.  A maze sho|
00032250  75 6c 64 20 6f 66 66 65  72 20 73 6f 6d 65 20 74  |uld offer some t|
00032260  77 69 73 74 20 77 68 69  63 68 20 68 61 73 6e 27  |wist which hasn'|
00032270  74 20 62 65 65 6e 0a 64  6f 6e 65 20 62 65 66 6f  |t been.done befo|
00032280  72 65 20 28 74 68 65 20  6f 6e 65 73 20 69 6e 20  |re (the ones in |
00032290  22 45 6e 63 68 61 6e 74  65 72 22 20 61 6e 64 20  |"Enchanter" and |
000322a0  22 53 6f 72 63 65 72 65  72 22 20 62 65 69 6e 67  |"Sorcerer" being|
000322b0  20 66 69 6e 65 20 65 78  61 6d 70 6c 65 73 29 2e  | fine examples).|
000322c0  0a 0a 54 68 65 20 70 6f  69 6e 74 20 69 73 20 6e  |..The point is n|
000322d0  6f 74 20 74 6f 20 6d 61  6b 65 20 69 74 20 68 61  |ot to make it ha|
000322e0  72 64 20 61 6e 64 20 62  6f 72 69 6e 67 2e 20 20  |rd and boring.  |
000322f0  54 68 65 20 73 74 61 6e  64 61 72 64 20 6d 61 7a  |The standard maz|
00032300  65 20 73 6f 6c 75 74 69  6f 6e 20 69 73 0a 74 6f  |e solution is.to|
00032310  20 6c 69 74 74 65 72 20  74 68 65 20 72 6f 6f 6d  | litter the room|
00032320  73 20 77 69 74 68 20 6f  62 6a 65 63 74 73 20 69  |s with objects i|
00032330  6e 20 6f 72 64 65 72 20  74 6f 20 6d 61 6b 65 20  |n order to make |
00032340  74 68 65 20 72 6f 6f 6d  73 20 64 69 73 74 69 6e  |the rooms distin|
00032350  67 75 69 73 68 61 62 6c  65 2e 0a 49 74 27 73 20  |guishable..It's |
00032360  65 61 73 79 20 65 6e 6f  75 67 68 20 74 6f 20 6f  |easy enough to o|
00032370  62 73 74 72 75 63 74 20  74 68 69 73 2c 20 74 68  |bstruct this, th|
00032380  65 20 74 68 69 65 66 20  69 6e 20 22 5a 6f 72 6b  |e thief in "Zork|
00032390  20 49 22 20 62 65 69 6e  67 20 61 62 6f 75 74 20  | I" being about |
000323a0  74 68 65 0a 77 69 74 74  69 65 73 74 20 77 61 79  |the.wittiest way|
000323b0  20 6f 66 20 64 6f 69 6e  67 20 73 6f 2e 20 20 42  | of doing so.  B|
000323c0  75 74 20 74 68 61 74 20  6f 6e 6c 79 20 6d 61 6b  |ut that only mak|
000323d0  65 73 20 61 20 6d 61 7a  65 20 74 65 64 69 6f 75  |es a maze tediou|
000323e0  73 6c 79 20 64 69 66 66  69 63 75 6c 74 2e 0a 0a  |sly difficult...|
000323f0  49 6e 73 74 65 61 64 20  74 68 65 72 65 20 73 68  |Instead there sh|
00032400  6f 75 6c 64 20 62 65 20  61 6e 20 65 6c 65 67 61  |ould be an elega|
00032410  6e 74 20 71 75 69 63 6b  20 73 6f 6c 75 74 69 6f  |nt quick solutio|
00032420  6e 3a 20 66 6f 72 20 69  6e 73 74 61 6e 63 65 20  |n: for instance |
00032430  61 20 67 75 69 64 65 20  77 68 6f 0a 6e 65 65 64  |a guide who.need|
00032440  73 20 74 6f 20 62 65 20  62 72 69 62 65 64 2c 20  |s to be bribed, |
00032450  6f 72 20 66 6c 75 6f 72  65 73 63 65 6e 74 20 61  |or fluorescent a|
00032460  72 72 6f 77 73 20 70 61  69 6e 74 65 64 20 6f 6e  |rrows painted on|
00032470  20 74 68 65 20 66 6c 6f  6f 72 20 77 68 69 63 68  | the floor which|
00032480  20 63 61 6e 0a 6f 6e 6c  79 20 62 65 20 73 65 65  | can.only be see|
00032490  6e 20 69 6e 20 64 61 72  6b 6e 65 73 73 20 28 70  |n in darkness (p|
000324a0  6c 75 73 20 61 20 68 69  6e 74 20 61 62 6f 75 74  |lus a hint about|
000324b0  20 64 61 72 6b 6e 65 73  73 2c 20 6f 66 20 63 6f  | darkness, of co|
000324c0  75 72 73 65 29 2e 0a 0a  41 62 6f 76 65 20 61 6c  |urse)...Above al|
000324d0  6c 2c 20 64 6f 6e 27 74  20 64 65 73 69 67 6e 20  |l, don't design |
000324e0  61 20 6d 61 7a 65 20 77  68 69 63 68 20 61 70 70  |a maze which app|
000324f0  65 61 72 73 20 74 6f 20  62 65 20 61 20 73 74 61  |ears to be a sta|
00032500  6e 64 61 72 64 20 69 6d  70 6f 73 73 69 62 6c 79  |ndard impossibly|
00032510  0a 68 61 72 64 20 6f 6e  65 3a 20 65 76 65 6e 20  |.hard one: even |
00032520  69 66 20 69 74 20 69 73  6e 27 74 2c 20 61 20 70  |if it isn't, a p|
00032530  6c 61 79 65 72 20 6d 61  79 20 6c 6f 73 65 20 68  |layer may lose h|
00032540  65 61 72 74 20 61 6e 64  20 67 69 76 65 20 75 70  |eart and give up|
00032550  20 72 61 74 68 65 72 20  74 68 61 6e 0a 67 6f 20  | rather than.go |
00032560  74 6f 20 74 68 65 20 74  72 6f 75 62 6c 65 20 6f  |to the trouble o|
00032570  66 20 6d 61 70 70 69 6e  67 20 69 74 2e 0a 0a 0a  |f mapping it....|
00032580  38 2e 20 20 2e 2e 2e 61  6e 64 20 4f 74 68 65 72  |8.  ...and Other|
00032590  20 43 6c 69 63 68 65 73  0a 2d 2d 2d 2d 2d 2d 2d  | Cliches.-------|
000325a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000325b0  2d 0a 0a 54 68 65 72 65  20 61 72 65 20 61 20 66  |-..There are a f|
000325c0  65 77 20 67 61 6d 65 73  20 77 68 69 63 68 20 64  |ew games which d|
000325d0  6f 20 6e 6f 74 20 68 61  76 65 20 22 6c 69 67 68  |o not have "ligh|
000325e0  74 20 73 6f 75 72 63 65  22 20 70 75 7a 7a 6c 65  |t source" puzzle|
000325f0  73 2c 20 62 75 74 20 69  74 27 73 0a 68 61 72 64  |s, but it's.hard|
00032600  20 74 6f 20 74 68 69 6e  6b 20 6f 66 20 6d 61 6e  | to think of man|
00032610  79 2e 20 20 54 68 65 20  74 77 6f 20 73 74 61 6e  |y.  The two stan|
00032620  64 61 72 64 73 20 72 65  64 75 63 65 20 74 6f 3a  |dards reduce to:|
00032630  0a 0a 2d 2d 20 74 68 65  20 70 6c 61 79 65 72 27  |..-- the player'|
00032640  73 20 6c 61 6d 70 20 73  6c 6f 77 6c 79 20 72 75  |s lamp slowly ru|
00032650  6e 73 20 64 6f 77 6e 20  61 6e 64 20 77 69 6c 6c  |ns down and will|
00032660  20 6e 65 65 64 20 6e 65  77 20 6f 69 6c 20 61 74  | need new oil at|
00032670  20 6c 65 61 73 74 20 6f  6e 63 65 3b 0a 0a 2d 2d  | least once;..--|
00032680  20 61 20 64 61 72 6b 20  72 6f 6f 6d 2c 20 66 75  | a dark room, fu|
00032690  6c 6c 20 6f 66 20 74 72  65 61 73 75 72 65 2c 20  |ll of treasure, |
000326a0  63 61 6e 20 61 70 70 61  72 65 6e 74 6c 79 20 6f  |can apparently o|
000326b0  6e 6c 79 20 62 65 20 72  65 61 63 68 65 64 20 74  |nly be reached t|
000326c0  68 72 6f 75 67 68 20 61  0a 76 65 72 79 20 6e 61  |hrough a.very na|
000326d0  72 72 6f 77 20 70 61 73  73 61 67 65 2c 20 6f 6e  |rrow passage, on|
000326e0  65 20 77 68 69 63 68 20  63 61 6e 6e 6f 74 20 62  |e which cannot b|
000326f0  65 20 70 61 73 73 65 64  20 62 79 20 61 20 70 6c  |e passed by a pl|
00032700  61 79 65 72 20 63 61 72  72 79 69 6e 67 0a 61 6e  |ayer carrying.an|
00032710  79 74 68 69 6e 67 20 28  69 6e 63 6c 75 64 69 6e  |ything (includin|
00032720  67 20 74 68 65 20 6c 61  6d 70 29 2e 0a 0a 4d 6f  |g the lamp)...Mo|
00032730  73 74 20 67 61 6d 65 73  20 63 6f 6e 74 61 69 6e  |st games contain|
00032740  20 62 6f 74 68 2c 20 61  6e 64 20 70 65 72 68 61  | both, and perha|
00032750  70 73 20 6d 6f 73 74 20  61 6c 77 61 79 73 20 77  |ps most always w|
00032760  69 6c 6c 2c 20 62 75 74  20 76 61 72 69 61 74 69  |ill, but variati|
00032770  6f 6e 73 20 61 72 65 0a  77 65 6c 63 6f 6d 65 2e  |ons are.welcome.|
00032780  20 20 28 54 68 65 72 65  20 69 73 20 61 20 73 75  |  (There is a su|
00032790  70 65 72 62 6c 79 20 63  6c 65 76 65 72 20 6f 6e  |perbly clever on|
000327a0  65 20 69 6e 20 22 5a 6f  72 6b 20 49 49 49 22 2c  |e in "Zork III",|
000327b0  20 66 6f 72 20 69 6e 73  74 61 6e 63 65 2e 29 0a  | for instance.).|
000327c0  0a 0a 53 69 6d 69 6c 61  72 6c 79 2c 20 75 6e 6c  |..Similarly, unl|
000327d0  65 73 73 20 74 68 65 72  65 20 61 72 65 20 76 65  |ess there are ve|
000327e0  72 79 20 66 65 77 20 70  6f 72 74 61 62 6c 65 20  |ry few portable |
000327f0  6f 62 6a 65 63 74 73 2c  20 69 74 20 62 65 63 6f  |objects, it beco|
00032800  6d 65 73 20 72 69 64 69  63 75 6c 6f 75 73 0a 74  |mes ridiculous.t|
00032810  68 61 74 20 61 20 70 6c  61 79 65 72 20 63 61 6e  |hat a player can|
00032820  20 63 61 72 72 79 20 68  75 6e 64 72 65 64 73 20  | carry hundreds |
00032830  6f 66 20 62 75 6c 6b 79  20 61 6e 64 20 66 69 64  |of bulky and fid|
00032840  64 6c 79 20 74 68 69 6e  67 73 20 61 72 6f 75 6e  |dly things aroun|
00032850  64 20 61 6c 6c 20 74 68  65 0a 74 69 6d 65 3a 20  |d all the.time: |
00032860  73 6f 20 6d 6f 73 74 20  67 61 6d 65 73 20 69 6d  |so most games im|
00032870  70 6f 73 65 20 61 20 6c  69 6d 69 74 20 6f 6e 20  |pose a limit on |
00032880  68 6f 77 20 6d 75 63 68  20 63 61 6e 20 62 65 20  |how much can be |
00032890  63 61 72 72 69 65 64 2c  20 62 79 20 63 6f 6e 76  |carried, by conv|
000328a0  65 6e 74 69 6f 6e 0a 66  6f 75 72 20 28 62 65 63  |ention.four (bec|
000328b0  61 75 73 65 20 74 68 61  74 27 73 20 77 68 61 74  |ause that's what|
000328c0  20 41 64 76 65 6e 74 75  72 65 20 64 69 64 29 2e  | Adventure did).|
000328d0  20 20 49 74 20 69 73 20  62 61 64 20 66 6f 72 6d  |  It is bad form|
000328e0  20 74 6f 20 73 65 74 20  70 75 7a 7a 6c 65 73 0a  | to set puzzles.|
000328f0  6d 61 6b 69 6e 67 20 6c  69 66 65 20 64 69 66 66  |making life diff|
00032900  69 63 75 6c 74 20 62 65  63 61 75 73 65 20 74 68  |icult because th|
00032910  65 20 6c 69 6d 69 74 20  69 73 20 66 6f 75 72 20  |e limit is four |
00032920  61 6e 64 20 6e 6f 74 20  66 69 76 65 20 28 61 66  |and not five (af|
00032930  74 65 72 20 61 6c 6c 2c  20 69 6e 0a 63 61 73 65  |ter all, in.case|
00032940  20 6f 66 20 65 6d 65 72  67 65 6e 63 79 2c 20 61  | of emergency, a|
00032950  20 70 6c 61 79 65 72 20  63 6f 75 6c 64 20 61 6c  | player could al|
00032960  77 61 79 73 20 63 61 72  72 79 20 73 6f 6d 65 74  |ways carry somet|
00032970  68 69 6e 67 20 65 6c 73  65 29 2e 20 20 4f 66 20  |hing else).  Of |
00032980  63 6f 75 72 73 65 0a 74  68 65 20 6e 6f 72 6d 20  |course.the norm |
00032990  69 73 20 74 6f 20 70 72  6f 76 69 64 65 20 61 20  |is to provide a |
000329a0  62 61 67 20 66 6f 72 20  63 61 72 72 79 69 6e 67  |bag for carrying|
000329b0  20 74 68 69 6e 67 73 2e  0a 0a 53 6f 70 68 69 73  | things...Sophis|
000329c0  74 69 63 61 74 65 64 20  67 61 6d 65 73 20 61 6c  |ticated games al|
000329d0  73 6f 20 71 75 69 65 74  6c 79 20 77 6f 72 6b 20  |so quietly work |
000329e0  6f 75 74 20 74 68 65 20  74 6f 74 61 6c 20 77 65  |out the total we|
000329f0  69 67 68 74 20 62 65 69  6e 67 20 63 61 72 72 69  |ight being carri|
00032a00  65 64 2e 20 0a 28 4f 6e  65 20 6f 66 20 74 68 65  |ed. .(One of the|
00032a10  20 49 6e 66 6f 63 6f 6d  20 67 61 6d 65 73 20 63  | Infocom games c|
00032a20  6f 6e 74 61 69 6e 73 20  61 20 6d 61 72 76 65 6c  |ontains a marvel|
00032a30  6c 6f 75 73 6c 79 20 68  65 61 76 79 20 72 65 64  |lously heavy red|
00032a40  20 68 65 72 72 69 6e 67  20 77 68 69 63 68 0a 63  | herring which.c|
00032a50  61 6e 20 62 65 20 63 61  72 72 69 65 64 20 61 6e  |an be carried an|
00032a60  79 77 68 65 72 65 2c 20  62 75 74 20 69 73 20 74  |ywhere, but is t|
00032a70  65 72 72 69 62 6c 79 20  65 78 68 61 75 73 74 69  |erribly exhausti|
00032a80  6e 67 20 74 6f 20 6d 6f  76 65 2e 29 0a 0a 4d 65  |ng to move.)..Me|
00032a90  6e 74 69 6f 6e 20 6f 66  20 65 78 68 61 75 73 74  |ntion of exhaust|
00032aa0  69 6f 6e 20 72 61 69 73  65 73 20 74 68 65 20 71  |ion raises the q|
00032ab0  75 65 73 74 69 6f 6e 20  6f 66 20 74 68 65 20 70  |uestion of the p|
00032ac0  6c 61 79 65 72 27 73 20  73 74 61 74 65 20 6f 66  |layer's state of|
00032ad0  20 68 65 61 6c 74 68 2e  20 0a 53 6f 6d 65 20 67  | health. .Some g|
00032ae0  61 6d 65 73 20 74 61 6b  65 20 61 20 71 75 69 74  |ames take a quit|
00032af0  65 20 72 6f 6c 65 2d 70  6c 61 79 69 6e 67 2d 73  |e role-playing-s|
00032b00  74 79 6c 65 20 76 69 65  77 20 6f 66 20 74 68 69  |tyle view of thi|
00032b10  73 2c 20 77 69 74 68 20  28 70 65 72 68 61 70 73  |s, with (perhaps|
00032b20  0a 68 69 64 64 65 6e 29  20 61 74 74 72 69 62 75  |.hidden) attribu|
00032b30  74 65 73 20 6f 66 20 22  73 74 72 65 6e 67 74 68  |tes of "strength|
00032b40  22 20 61 6e 64 20 22 63  6f 6e 73 74 69 74 75 74  |" and "constitut|
00032b50  69 6f 6e 22 2e 20 20 54  68 65 20 70 6c 61 79 65  |ion".  The playe|
00032b60  72 20 67 72 6f 77 73 20  77 65 61 72 79 0a 61 6e  |r grows weary.an|
00032b70  64 20 6e 65 65 64 73 20  66 6f 6f 64 2c 20 74 69  |d needs food, ti|
00032b80  72 65 64 20 61 6e 64 20  6e 65 65 64 73 20 73 6c  |red and needs sl|
00032b90  65 65 70 2c 20 77 6f 75  6e 64 65 64 20 61 6e 64  |eep, wounded and|
00032ba0  20 6e 65 65 64 73 20 72  65 63 75 70 65 72 61 74  | needs recuperat|
00032bb0  69 6f 6e 2e 0a 41 20 70  75 7a 7a 6c 65 20 77 68  |ion..A puzzle wh|
00032bc0  69 63 68 20 72 65 61 6c  6c 79 20 65 78 70 6c 6f  |ich really explo|
00032bd0  69 74 73 20 74 68 69 73  20 77 6f 75 6c 64 20 62  |its this would b|
00032be0  65 20 64 69 66 66 69 63  75 6c 74 20 74 6f 20 6d  |e difficult to m|
00032bf0  61 6b 65 20 66 61 69 72  2e 0a 0a 0a 39 2e 20 20  |ake fair....9.  |
00032c00  52 65 77 61 72 64 73 20  61 6e 64 20 50 65 6e 61  |Rewards and Pena|
00032c10  6c 74 69 65 73 0a 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |lties.----------|
00032c20  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 0a  |---------------.|
00032c30  0a 54 68 65 72 65 20 61  72 65 20 74 77 6f 20 6b  |.There are two k|
00032c40  69 6e 64 73 20 6f 66 20  72 65 77 61 72 64 20 77  |inds of reward w|
00032c50  68 69 63 68 20 6e 65 65  64 20 74 6f 20 62 65 20  |hich need to be |
00032c60  67 69 76 65 6e 20 74 6f  20 61 20 70 6c 61 79 65  |given to a playe|
00032c70  72 20 69 6e 20 72 65 74  75 72 6e 0a 66 6f 72 20  |r in return.for |
00032c80  73 6f 6c 76 69 6e 67 20  61 20 70 75 7a 7a 6c 65  |solving a puzzle|
00032c90  2e 20 20 4f 6e 65 20 69  73 20 6f 62 76 69 6f 75  |.  One is obviou|
00032ca0  73 3a 20 74 68 65 20 67  61 6d 65 20 61 64 76 61  |s: the game adva|
00032cb0  6e 63 65 73 20 61 20 6c  69 74 74 6c 65 2e 20 20  |nces a little.  |
00032cc0  42 75 74 20 74 68 65 0a  70 6c 61 79 65 72 20 61  |But the.player a|
00032cd0  74 20 74 68 65 20 6b 65  79 62 6f 61 72 64 20 6e  |t the keyboard n|
00032ce0  65 65 64 73 20 61 20 72  65 77 61 72 64 20 61 73  |eeds a reward as|
00032cf0  20 77 65 6c 6c 2c 20 74  68 61 74 20 74 68 65 20  | well, that the |
00032d00  67 61 6d 65 20 73 68 6f  75 6c 64 20 6f 66 66 65  |game should offe|
00032d10  72 0a 73 6f 6d 65 74 68  69 6e 67 20 6e 65 77 20  |r.something new |
00032d20  74 6f 20 6c 6f 6f 6b 20  61 74 2e 20 20 49 6e 20  |to look at.  In |
00032d30  74 68 65 20 6f 6c 64 20  64 61 79 73 2c 20 77 68  |the old days, wh|
00032d40  65 6e 20 61 20 70 75 7a  7a 6c 65 20 77 61 73 20  |en a puzzle was |
00032d50  73 6f 6c 76 65 64 2c 20  74 68 65 0a 70 6c 61 79  |solved, the.play|
00032d60  65 72 20 73 69 6d 70 6c  79 20 67 6f 74 20 61 20  |er simply got a |
00032d70  62 61 72 20 6f 66 20 67  6f 6c 64 20 61 6e 64 20  |bar of gold and |
00032d80  68 61 64 20 6f 6e 65 20  6c 65 73 73 20 70 75 7a  |had one less puz|
00032d90  7a 6c 65 20 74 6f 20 73  6f 6c 76 65 2e 0a 0a 4d  |zle to solve...M|
00032da0  75 63 68 20 62 65 74 74  65 72 20 69 73 20 74 6f  |uch better is to|
00032db0  20 6f 66 66 65 72 20 74  68 65 20 70 6c 61 79 65  | offer the playe|
00032dc0  72 20 73 6f 6d 65 20 6e  65 77 20 72 6f 6f 6d 73  |r some new rooms|
00032dd0  20 61 6e 64 20 6f 62 6a  65 63 74 73 20 74 6f 20  | and objects to |
00032de0  70 6c 61 79 0a 77 69 74  68 2c 20 61 73 20 74 68  |play.with, as th|
00032df0  69 73 20 69 73 20 61 20  72 65 61 6c 20 69 6e 63  |is is a real inc|
00032e00  65 6e 74 69 76 65 2e 20  20 49 66 20 6e 6f 20 6e  |entive.  If no n|
00032e10  65 77 20 72 6f 6f 6d 73  20 61 72 65 20 6f 6e 20  |ew rooms are on |
00032e20  6f 66 66 65 72 2c 20 61  74 20 6c 65 61 73 74 0a  |offer, at least.|
00032e30  74 68 65 20 22 74 72 65  61 73 75 72 65 22 20 6f  |the "treasure" o|
00032e40  62 6a 65 63 74 73 20 63  61 6e 20 62 65 20 6d 61  |bjects can be ma|
00032e50  64 65 20 69 6e 74 65 72  65 73 74 69 6e 67 2c 20  |de interesting, |
00032e60  6c 69 6b 65 20 74 68 65  20 73 70 65 6c 6c 73 20  |like the spells |
00032e70  69 6e 20 74 68 65 0a 22  45 6e 63 68 61 6e 74 65  |in the."Enchante|
00032e80  72 22 20 74 72 69 6c 6f  67 79 20 6f 72 20 74 68  |r" trilogy or th|
00032e90  65 20 63 75 62 65 73 20  69 6e 20 22 53 70 65 6c  |e cubes in "Spel|
00032ea0  6c 62 72 65 61 6b 65 72  22 2e 0a 0a 49 6e 20 6f  |lbreaker"...In o|
00032eb0  6c 64 65 6e 20 64 61 79  73 2c 20 67 61 6d 65 73  |lden days, games|
00032ec0  20 6b 69 6c 6c 65 64 20  74 68 65 20 70 6c 61 79  | killed the play|
00032ed0  65 72 20 69 6e 20 73 6f  6d 65 20 77 61 79 20 66  |er in some way f|
00032ee0  6f 72 20 61 6c 6d 6f 73  74 20 65 76 65 72 79 20  |or almost every |
00032ef0  77 72 6f 6e 67 0a 67 75  65 73 73 20 28 6f 72 20  |wrong.guess (or |
00032f00  61 6c 74 65 72 65 64 20  74 68 65 20 73 74 61 74  |altered the stat|
00032f10  65 20 6f 66 20 74 68 65  20 67 61 6d 65 20 73 6f  |e of the game so|
00032f20  20 74 68 61 74 20 69 74  20 68 61 64 20 62 65 63  | that it had bec|
00032f30  6f 6d 65 20 75 6e 77 69  6e 6e 61 62 6c 65 29 2e  |ome unwinnable).|
00032f40  0a 54 68 69 73 20 77 61  73 20 61 6e 6e 6f 79 69  |.This was annoyi|
00032f50  6e 67 20 61 6e 64 20 6d  65 61 6e 74 20 74 68 61  |ng and meant tha|
00032f60  74 20 76 69 72 74 75 61  6c 6c 79 20 61 6c 6c 20  |t virtually all |
00032f70  70 6c 61 79 65 72 73 20  77 65 72 65 20 73 6f 20  |players were so |
00032f80  70 61 72 61 6e 6f 69 64  0a 61 73 20 74 6f 20 73  |paranoid.as to s|
00032f90  61 76 65 20 74 68 65 20  67 61 6d 65 20 62 65 66  |ave the game bef|
00032fa0  6f 72 65 2c 20 73 61 79  2c 20 70 69 63 6b 69 6e  |ore, say, pickin|
00032fb0  67 20 75 70 20 61 6e 79  20 6e 65 77 20 6f 62 6a  |g up any new obj|
00032fc0  65 63 74 2e 20 20 4e 6f  77 61 64 61 79 73 0a 69  |ect.  Nowadays.i|
00032fd0  74 20 69 73 20 74 68 6f  75 67 68 74 20 70 6f 6c  |t is thought pol|
00032fe0  69 74 65 20 6e 6f 74 20  74 6f 20 6b 69 6c 6c 20  |ite not to kill |
00032ff0  74 68 65 20 70 6c 61 79  65 72 20 77 69 74 68 6f  |the player witho|
00033000  75 74 20 64 75 65 20 77  61 72 6e 69 6e 67 2c 20  |ut due warning, |
00033010  61 6e 64 20 74 6f 0a 6d  61 6b 65 20 73 6d 61 6c  |and to.make smal|
00033020  6c 65 72 20 6d 69 73 74  61 6b 65 73 20 72 65 63  |ler mistakes rec|
00033030  6f 76 65 72 61 62 6c 65  2d 66 72 6f 6d 2e 20 20  |overable-from.  |
00033040  41 20 67 6f 6f 64 20 61  6c 74 65 72 6e 61 74 69  |A good alternati|
00033050  76 65 20 74 6f 20 74 68  65 20 64 65 61 74 68 0a  |ve to the death.|
00033060  73 65 6e 74 65 6e 63 65  20 69 73 20 65 78 69 6c  |sentence is exil|
00033070  65 20 28 69 2e 65 2e 2c  20 69 6e 20 73 6f 6d 65  |e (i.e., in some|
00033080  20 77 61 79 20 6d 6f 76  69 6e 67 20 74 68 65 20  | way moving the |
00033090  70 6c 61 79 65 72 20 73  6f 6d 65 77 68 65 72 65  |player somewhere|
000330a0  0a 69 6e 63 6f 6e 76 65  6e 69 65 6e 74 20 62 75  |.inconvenient bu|
000330b0  74 20 72 65 74 75 72 6e  61 62 6c 65 2d 66 72 6f  |t returnable-fro|
000330c0  6d 29 2e 0a 0a 0a 31 30  2e 20 20 57 72 69 74 69  |m)....10.  Writi|
000330d0  6e 67 20 52 6f 6f 6d 20  44 65 73 63 72 69 70 74  |ng Room Descript|
000330e0  69 6f 6e 73 0a 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ions.-----------|
000330f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00033100  2d 2d 2d 0a 0a 46 69 72  73 74 2c 20 61 20 77 61  |---..First, a wa|
00033110  72 6e 69 6e 67 3a 20 69  74 20 69 73 20 74 65 6d  |rning: it is tem|
00033120  70 74 69 6e 67 2c 20 77  68 65 6e 20 62 65 67 69  |pting, when begi|
00033130  6e 6e 69 6e 67 20 74 6f  20 63 6f 64 65 2c 20 74  |nning to code, t|
00033140  6f 20 67 69 76 65 20 72  6f 6f 6d 73 0a 22 74 65  |o give rooms."te|
00033150  6d 70 6f 72 61 72 79 22  20 64 65 73 63 72 69 70  |mporary" descrip|
00033160  74 69 6f 6e 73 20 28 22  53 6c 61 62 20 72 6f 6f  |tions ("Slab roo|
00033170  6d 2e 22 20 22 43 6c 6f  69 73 74 65 72 2e 22 29  |m." "Cloister.")|
00033180  2c 20 61 6e 64 20 6c 65  61 76 65 20 74 68 65 20  |, and leave the |
00033190  77 72 69 74 69 6e 67 0a  66 6f 72 20 6c 61 74 65  |writing.for late|
000331a0  72 2e 20 20 54 68 65 72  65 20 69 73 20 6e 6f 20  |r.  There is no |
000331b0  6d 6f 72 65 20 64 65 70  72 65 73 73 69 6e 67 20  |more depressing |
000331c0  70 6f 69 6e 74 20 74 68  61 6e 20 77 68 65 6e 20  |point than when |
000331d0  66 61 63 69 6e 67 20 61  20 70 69 6c 65 20 6f 66  |facing a pile of|
000331e0  20 35 30 0a 72 6f 6f 6d  20 64 65 73 63 72 69 70  | 50.room descrip|
000331f0  74 69 6f 6e 73 20 74 6f  20 77 72 69 74 65 2c 20  |tions to write, |
00033200  61 6c 6c 20 61 74 20 6f  6e 63 65 2c 20 61 6e 64  |all at once, and|
00033210  20 66 65 65 6c 69 6e 67  20 74 68 61 74 20 6f 6e  | feeling that on|
00033220  65 27 73 20 65 6e 74 68  75 73 69 61 73 6d 0a 68  |e's enthusiasm.h|
00033230  61 73 20 61 6c 74 6f 67  65 74 68 65 72 20 67 6f  |as altogether go|
00033240  6e 65 2e 20 20 28 54 68  65 20 73 61 6d 65 20 77  |ne.  (The same w|
00033250  61 72 6e 69 6e 67 20 61  70 70 6c 69 65 73 20 74  |arning applies t|
00033260  6f 20 6d 61 6b 69 6e 67  20 61 6e 20 6f 76 65 72  |o making an over|
00033270  2d 64 65 74 61 69 6c 65  64 0a 64 65 73 69 67 6e  |-detailed.design|
00033280  20 62 65 66 6f 72 65 20  64 6f 69 6e 67 20 61 6e  | before doing an|
00033290  79 20 63 6f 64 69 6e 67  2e 29 20 20 42 65 73 69  |y coding.)  Besi|
000332a0  64 65 73 2c 20 77 68 65  6e 20 74 65 73 74 69 6e  |des, when testin|
000332b0  67 20 74 68 65 20 72 6f  6f 6d 73 20 63 6f 6e 63  |g the rooms conc|
000332c0  65 72 6e 65 64 2c 0a 6f  6e 65 20 68 61 73 20 6e  |erned,.one has n|
000332d0  6f 20 66 65 65 6c 69 6e  67 20 6f 66 20 77 68 61  |o feeling of wha|
000332e0  74 20 74 68 65 20 67 61  6d 65 20 77 69 6c 6c 20  |t the game will |
000332f0  6c 6f 6f 6b 20 6c 69 6b  65 20 65 78 63 65 70 74  |look like except|
00033300  20 74 61 74 74 79 2c 20  61 6e 64 20 74 68 69 73  | tatty, and this|
00033310  0a 69 73 20 61 6c 73 6f  20 64 65 70 72 65 73 73  |.is also depress|
00033320  69 6e 67 2e 20 20 41 6c  73 6f 2c 20 77 72 69 74  |ing.  Also, writ|
00033330  69 6e 67 20 72 6f 6f 6d  20 64 65 73 63 72 69 70  |ing room descrip|
00033340  74 69 6f 6e 73 20 66 6f  72 63 65 73 20 74 68 65  |tions forces the|
00033350  20 61 75 74 68 6f 72 20  74 6f 0a 74 68 69 6e 6b  | author to.think|
00033360  20 61 62 6f 75 74 20 77  68 61 74 20 74 68 65 20  | about what the |
00033370  72 6f 6f 6d 20 69 73 20  75 6c 74 69 6d 61 74 65  |room is ultimate|
00033380  6c 79 20 66 6f 72 2c 20  77 68 69 63 68 20 69 73  |ly for, which is|
00033390  20 6e 6f 20 62 61 64 20  74 68 69 6e 67 2e 20 20  | no bad thing.  |
000333a0  53 6f 0a 77 72 69 74 65  20 61 20 66 65 77 20 61  |So.write a few a|
000333b0  74 20 61 20 74 69 6d 65  2c 20 61 73 20 63 6f 64  |t a time, as cod|
000333c0  69 6e 67 20 67 6f 65 73  20 6f 6e 2c 20 62 75 74  |ing goes on, but|
000333d0  20 77 72 69 74 65 20 74  68 65 6d 20 70 72 6f 70  | write them prop|
000333e0  65 72 6c 79 3a 20 61 6e  64 20 65 64 69 74 0a 6c  |erly: and edit.l|
000333f0  61 74 65 72 20 69 66 20  6e 65 63 65 73 73 61 72  |ater if necessar|
00033400  79 20 28 69 74 20 77 69  6c 6c 20 62 65 29 2e 0a  |y (it will be)..|
00033410  0a 53 69 7a 65 20 64 6f  65 73 6e 27 74 20 6d 61  |.Size doesn't ma|
00033420  74 74 65 72 2e 20 20 49  74 20 69 73 20 61 6c 6c  |tter.  It is all|
00033430  20 74 6f 6f 20 65 61 73  79 20 74 6f 20 77 72 69  | too easy to wri|
00033440  74 65 20 61 20 68 75 67  65 20 72 6f 6f 6d 20 64  |te a huge room d|
00033450  65 73 63 72 69 70 74 69  6f 6e 2c 0a 72 61 6d 62  |escription,.ramb|
00033460  6c 69 6e 67 20 77 69 74  68 20 69 72 72 65 6c 65  |ling with irrele|
00033470  76 61 6e 74 20 64 65 74  61 69 6c 73 3a 20 74 68  |vant details: th|
00033480  65 72 65 20 61 72 65 20  75 73 75 61 6c 6c 79 20  |ere are usually |
00033490  6f 6e 65 20 74 6f 20 74  68 72 65 65 20 65 73 73  |one to three ess|
000334a0  65 6e 74 69 61 6c 73 0a  74 6f 20 67 65 74 20 61  |entials.to get a|
000334b0  63 72 6f 73 73 2c 20 61  6e 64 20 74 68 65 20 72  |cross, and the r|
000334c0  65 73 74 20 73 68 6f 75  6c 64 20 62 65 20 63 75  |est should be cu|
000334d0  74 2e 0a 0a 42 75 74 20  65 76 65 6e 20 74 68 65  |t...But even the|
000334e0  20 6d 6f 73 74 20 74 65  64 69 6f 75 73 20 6a 75  | most tedious ju|
000334f0  6e 63 74 69 6f 6e 73 20  64 65 73 65 72 76 65 20  |nctions deserve |
00033500  64 65 73 63 72 69 70 74  69 6f 6e 2c 20 61 6e 64  |description, and|
00033510  20 64 65 73 63 72 69 70  74 69 6f 6e 20 69 73 0a  | description is.|
00033520  6d 6f 72 65 20 74 68 61  6e 20 61 20 6c 69 73 74  |more than a list|
00033530  20 6f 66 20 65 78 69 74  73 2e 20 20 48 65 72 65  | of exits.  Here|
00033540  20 69 73 20 22 41 64 76  65 6e 74 75 72 65 22 20  | is "Adventure" |
00033550  61 74 20 69 74 73 20 6d  6f 73 74 20 67 72 61 63  |at its most grac|
00033560  65 66 75 6c 3a 0a 0a 20  20 20 59 6f 75 27 72 65  |eful:..   You're|
00033570  20 69 6e 20 61 20 6c 61  72 67 65 20 72 6f 6f 6d  | in a large room|
00033580  20 63 61 72 76 65 64 20  6f 75 74 20 6f 66 20 73  | carved out of s|
00033590  65 64 69 6d 65 6e 74 61  72 79 20 72 6f 63 6b 2e  |edimentary rock.|
000335a0  20 20 54 68 65 20 66 6c  6f 6f 72 20 61 6e 64 0a  |  The floor and.|
000335b0  20 20 20 77 61 6c 6c 73  20 61 72 65 20 6c 69 74  |   walls are lit|
000335c0  74 65 72 65 64 20 77 69  74 68 20 62 69 74 73 20  |tered with bits |
000335d0  6f 66 20 73 68 65 6c 6c  73 20 65 6d 62 65 64 64  |of shells embedd|
000335e0  65 64 20 69 6e 20 74 68  65 20 73 74 6f 6e 65 2e  |ed in the stone.|
000335f0  20 20 41 20 73 68 61 6c  6c 6f 77 0a 20 20 20 70  |  A shallow.   p|
00033600  61 73 73 61 67 65 20 70  72 6f 63 65 65 64 73 20  |assage proceeds |
00033610  64 6f 77 6e 77 61 72 64  2c 20 61 6e 64 20 61 20  |downward, and a |
00033620  73 6f 6d 65 77 68 61 74  20 73 74 65 65 70 65 72  |somewhat steeper|
00033630  20 6f 6e 65 20 6c 65 61  64 73 20 75 70 2e 20 20  | one leads up.  |
00033640  41 20 6c 6f 77 0a 20 20  20 68 61 6e 64 73 20 61  |A low.   hands a|
00033650  6e 64 20 6b 6e 65 65 73  20 70 61 73 73 61 67 65  |nd knees passage|
00033660  20 65 6e 74 65 72 73 20  66 72 6f 6d 20 74 68 65  | enters from the|
00033670  20 73 6f 75 74 68 2e 0a  0a 20 20 20 59 6f 75 20  | south...   You |
00033680  61 72 65 20 77 61 6c 6b  69 6e 67 20 61 6c 6f 6e  |are walking alon|
00033690  67 20 61 20 67 65 6e 74  6c 79 20 73 6c 6f 70 69  |g a gently slopi|
000336a0  6e 67 20 6e 6f 72 74 68  2f 73 6f 75 74 68 20 70  |ng north/south p|
000336b0  61 73 73 61 67 65 20 6c  69 6e 65 64 20 77 69 74  |assage lined wit|
000336c0  68 0a 20 20 20 6f 64 64  6c 79 20 73 68 61 70 65  |h.   oddly shape|
000336d0  64 20 6c 69 6d 65 73 74  6f 6e 65 20 66 6f 72 6d  |d limestone form|
000336e0  61 74 69 6f 6e 73 2e 0a  0a 4e 6f 74 65 20 74 68  |ations...Note th|
000336f0  65 20 67 65 6f 6c 6f 67  79 2c 20 74 68 65 20 73  |e geology, the s|
00033700  6c 69 67 68 74 20 75 6e  65 76 65 6e 6e 65 73 73  |light unevenness|
00033710  20 6f 66 20 74 68 65 20  67 72 6f 75 6e 64 20 61  | of the ground a|
00033720  6e 64 20 74 68 65 20 76  61 72 69 61 74 69 6f 6e  |nd the variation|
00033730  20 69 6e 0a 74 68 65 20  73 69 7a 65 20 6f 66 20  | in.the size of |
00033740  74 68 65 20 74 75 6e 6e  65 6c 73 2e 20 20 45 76  |the tunnels.  Ev|
00033750  65 6e 20 69 66 20 6e 6f  74 68 69 6e 67 20 68 61  |en if nothing ha|
00033760  70 70 65 6e 73 20 68 65  72 65 2c 20 74 68 65 73  |ppens here, thes|
00033770  65 20 61 72 65 20 72 65  61 6c 0a 70 6c 61 63 65  |e are real.place|
00033780  73 2e 0a 0a 46 6c 69 70  70 61 6e 74 2c 20 6a 6f  |s...Flippant, jo|
00033790  6b 79 20 72 6f 6f 6d 20  64 65 73 63 72 69 70 74  |ky room descript|
000337a0  69 6f 6e 73 20 61 72 65  20 62 65 73 74 20 61 76  |ions are best av|
000337b0  6f 69 64 65 64 20 69 66  20 74 68 65 79 20 77 69  |oided if they wi|
000337c0  6c 6c 20 62 65 20 6f 66  74 65 6e 0a 72 65 76 69  |ll be often.revi|
000337d0  73 69 74 65 64 2e 20 20  41 62 6f 75 74 20 6f 6e  |sited.  About on|
000337e0  63 65 20 69 6e 20 61 20  67 61 6d 65 20 61 6e 20  |ce in a game an |
000337f0  61 75 74 68 6f 72 20 63  61 6e 20 67 65 74 20 61  |author can get a|
00033800  77 61 79 20 77 69 74 68  3a 0a 0a 20 20 20 4f 62  |way with:..   Ob|
00033810  73 65 72 76 61 74 69 6f  6e 20 52 6f 6f 6d 0a 20  |servation Room. |
00033820  20 20 43 61 6c 76 69 6e  20 43 6f 6f 6c 69 64 67  |  Calvin Coolidg|
00033830  65 20 6f 6e 63 65 20 64  65 73 63 72 69 62 65 64  |e once described|
00033840  20 77 69 6e 64 6f 77 73  20 61 73 20 22 72 65 63  | windows as "rec|
00033850  74 61 6e 67 6c 65 73 20  6f 66 20 67 6c 61 73 73  |tangles of glass|
00033860  2e 22 20 20 49 66 20 73  6f 2c 0a 20 20 20 68 65  |."  If so,.   he|
00033870  20 6d 61 79 20 68 61 76  65 20 62 65 65 6e 20 74  | may have been t|
00033880  68 69 6e 6b 69 6e 67 20  61 62 6f 75 74 20 74 68  |hinking about th|
00033890  65 20 77 69 6e 64 6f 77  20 77 68 69 63 68 20 66  |e window which f|
000338a0  69 6c 6c 73 20 74 68 65  20 77 65 73 74 65 72 6e  |ills the western|
000338b0  20 77 61 6c 6c 0a 20 20  20 6f 66 20 74 68 69 73  | wall.   of this|
000338c0  20 72 6f 6f 6d 2e 20 20  41 20 74 69 6e 79 20 63  | room.  A tiny c|
000338d0  6c 6f 73 65 74 20 6c 69  65 73 20 74 6f 20 74 68  |loset lies to th|
000338e0  65 20 6e 6f 72 74 68 2e  20 20 41 20 73 69 67 6e  |e north.  A sign|
000338f0  20 69 73 20 70 6f 73 74  65 64 20 6e 65 78 74 20  | is posted next |
00033900  74 6f 0a 20 20 20 74 68  65 20 73 74 61 69 72 73  |to.   the stairs|
00033910  20 77 68 69 63 68 20 6c  65 61 64 20 62 6f 74 68  | which lead both|
00033920  20 75 70 77 61 72 64 73  20 61 6e 64 20 64 6f 77  | upwards and dow|
00033930  6e 77 61 72 64 73 2e 0a  0a 61 20 63 68 61 72 61  |nwards...a chara|
00033940  63 74 65 72 69 73 74 69  63 20 70 69 65 63 65 20  |cteristic piece |
00033950  6f 66 20 53 74 65 76 65  20 4d 65 72 65 74 7a 6b  |of Steve Meretzk|
00033960  79 20 66 72 6f 6d 20 22  4c 65 61 74 68 65 72 20  |y from "Leather |
00033970  47 6f 64 64 65 73 73 65  73 20 6f 66 20 50 68 6f  |Goddesses of Pho|
00033980  62 6f 73 22 2c 0a 77 68  69 63 68 20 64 65 6d 6f  |bos",.which demo|
00033990  6e 73 74 72 61 74 65 73  20 74 68 65 20 6c 65 6e  |nstrates the len|
000339a0  67 74 68 73 20 6f 6e 65  20 68 61 73 20 74 6f 20  |gths one has to |
000339b0  67 6f 20 74 6f 20 77 68  65 6e 20 66 61 63 65 64  |go to when faced|
000339c0  20 77 69 74 68 20 61 0a  72 65 6c 65 6e 74 6c 65  | with a.relentle|
000339d0  73 73 6c 79 20 6f 72 64  69 6e 61 72 79 20 6a 75  |ssly ordinary ju|
000339e0  6e 63 74 69 6f 6e 2d 77  69 74 68 2d 77 69 6e 64  |nction-with-wind|
000339f0  6f 77 2e 20 20 54 68 65  20 73 65 6e 74 65 6e 63  |ow.  The sentenc|
00033a00  65 20 77 68 69 63 68 20  74 68 65 20 77 68 6f 6c  |e which the whol|
00033a10  65 0a 64 65 73 63 72 69  70 74 69 6f 6e 20 68 61  |e.description ha|
00033a20  73 20 62 65 65 6e 20 77  72 69 74 74 65 6e 20 74  |s been written t|
00033a30  6f 20 61 76 6f 69 64 20  69 73 20 22 59 6f 75 20  |o avoid is "You |
00033a40  63 61 6e 20 67 6f 20 75  70 2c 20 64 6f 77 6e 20  |can go up, down |
00033a50  6f 72 20 6e 6f 72 74 68  2e 22 0a 0a 0a 52 6f 6f  |or north."...Roo|
00033a60  6d 20 64 65 73 63 72 69  70 74 69 6f 6e 73 20 61  |m descriptions a|
00033a70  72 65 20 6f 62 6c 69 67  65 64 20 74 6f 20 6d 65  |re obliged to me|
00033a80  6e 74 69 6f 6e 20 74 68  65 20 6f 62 76 69 6f 75  |ntion the obviou|
00033a90  73 20 65 78 69 74 73 20  2d 20 61 6e 64 20 69 74  |s exits - and it|
00033aa0  20 69 73 0a 63 65 72 74  61 69 6e 6c 79 20 70 6f  | is.certainly po|
00033ab0  6f 72 20 66 6f 72 6d 20  74 6f 20 66 61 69 6c 20  |or form to fail |
00033ac0  74 6f 20 6d 65 6e 74 69  6f 6e 20 6f 6e 65 20 69  |to mention one i|
00033ad0  6e 20 70 61 72 74 69 63  75 6c 61 72 20 75 6e 6c  |n particular unl|
00033ae0  65 73 73 20 74 68 65 72  65 20 69 73 0a 67 6f 6f  |ess there is.goo|
00033af0  64 20 72 65 61 73 6f 6e  20 2d 20 62 75 74 20 74  |d reason - but t|
00033b00  68 65 72 65 20 61 72 65  20 77 61 79 73 20 74 6f  |here are ways to|
00033b10  20 61 76 6f 69 64 20 77  68 61 74 20 63 61 6e 20  | avoid what can |
00033b20  62 65 20 61 20 74 69 72  65 73 6f 6d 65 6c 79 0a  |be a tiresomely.|
00033b30  72 65 70 65 74 69 74 69  76 65 20 62 75 73 69 6e  |repetitive busin|
00033b40  65 73 73 2e 20 20 46 6f  72 20 69 6e 73 74 61 6e  |ess.  For instan|
00033b50  63 65 2c 0a 0a 20 20 20  44 61 72 6b 20 43 61 76  |ce,..   Dark Cav|
00033b60  65 0a 20 20 20 4c 69 74  74 6c 65 20 6c 69 67 68  |e.   Little ligh|
00033b70  74 20 73 65 65 70 73 20  69 6e 74 6f 20 74 68 69  |t seeps into thi|
00033b80  73 20 6d 75 64 64 79 2c  20 62 6f 6e 65 2d 73 63  |s muddy, bone-sc|
00033b90  61 74 74 65 72 65 64 20  63 61 76 65 20 61 6e 64  |attered cave and|
00033ba0  20 61 6c 72 65 61 64 79  0a 20 20 20 79 6f 75 20  | already.   you |
00033bb0  6c 6f 6e 67 20 66 6f 72  20 66 72 65 73 68 20 61  |long for fresh a|
00033bc0  69 72 2e 20 20 53 74 72  61 6e 67 65 20 62 75 62  |ir.  Strange bub|
00033bd0  62 6c 65 73 2c 20 70 75  6c 73 69 6e 67 20 61 6e  |bles, pulsing an|
00033be0  64 20 73 68 69 66 74 69  6e 67 20 61 73 20 69 66  |d shifting as if|
00033bf0  0a 20 20 20 61 6c 69 76  65 2c 20 68 61 6e 67 20  |.   alive, hang |
00033c00  75 70 6f 6e 20 74 68 65  20 72 6f 63 6b 20 61 74  |upon the rock at|
00033c10  20 63 72 61 7a 79 2c 20  69 72 72 65 67 75 6c 61  | crazy, irregula|
00033c20  72 20 61 6e 67 6c 65 73  2e 0a 0a 20 20 20 42 6c  |r angles...   Bl|
00033c30  61 63 6b 20 63 72 61 62  73 20 73 63 75 74 74 6c  |ack crabs scuttl|
00033c40  65 20 61 62 6f 75 74 20  79 6f 75 72 20 66 65 65  |e about your fee|
00033c50  74 2e 0a 0a 20 20 20 3e  20 53 4f 55 54 48 0a 20  |t...   > SOUTH. |
00033c60  20 20 54 68 65 20 6f 6e  6c 79 20 65 78 69 74 20  |  The only exit |
00033c70  69 73 20 62 61 63 6b 20  6f 75 74 20 6e 6f 72 74  |is back out nort|
00033c80  68 20 74 6f 20 74 68 65  20 73 65 61 2d 73 68 6f  |h to the sea-sho|
00033c90  72 65 2e 0a 0a 49 6e 20  6f 74 68 65 72 20 77 6f  |re...In other wo|
00033ca0  72 64 73 2c 20 74 68 65  20 22 59 6f 75 20 63 61  |rds, the "You ca|
00033cb0  6e 27 74 20 67 6f 20 74  68 61 74 20 77 61 79 22  |n't go that way"|
00033cc0  20 6d 65 73 73 61 67 65  20 69 73 20 74 61 69 6c  | message is tail|
00033cd0  6f 72 65 64 20 74 6f 20  65 61 63 68 0a 69 6e 64  |ored to each.ind|
00033ce0  69 76 69 64 75 61 6c 20  72 6f 6f 6d 2e 0a 0a 41  |ividual room...A|
00033cf0  76 6f 69 64 69 6e 67 20  72 65 70 65 74 69 74 69  |voiding repetiti|
00033d00  6f 6e 20 69 73 20 77 65  6c 6c 2d 6e 69 67 68 20  |on is well-nigh |
00033d10  69 6d 70 6f 73 73 69 62  6c 65 2c 20 61 6e 64 20  |impossible, and |
00033d20  65 78 70 65 72 69 65 6e  63 65 64 20 70 6c 61 79  |experienced play|
00033d30  65 72 73 20 77 69 6c 6c  0a 6b 6e 6f 77 20 61 6c  |ers will.know al|
00033d40  6c 20 74 68 65 20 76 61  72 69 6f 75 73 20 66 6f  |l the various fo|
00033d50  72 6d 75 6c 61 65 20 62  79 20 68 65 61 72 74 3a  |rmulae by heart:|
00033d60  20 22 59 6f 75 27 72 65  20 69 6e 22 2c 20 22 59  | "You're in", "Y|
00033d70  6f 75 20 61 72 65 20 69  6e 22 2c 20 22 54 68 69  |ou are in", "Thi|
00033d80  73 0a 69 73 22 2c 20 22  59 6f 75 20 68 61 76 65  |s.is", "You have|
00033d90  20 63 6f 6d 65 20 74 6f  22 20 61 6e 64 20 73 6f  | come to" and so|
00033da0  20 66 6f 72 74 68 2e 20  20 49 20 75 73 75 61 6c  | forth.  I usual|
00033db0  6c 79 20 70 72 65 66 65  72 20 69 6d 70 65 72 73  |ly prefer impers|
00033dc0  6f 6e 61 6c 20 72 6f 6f  6d 0a 64 65 73 63 72 69  |onal room.descri|
00033dd0  70 74 69 6f 6e 73 20 28  6e 6f 74 20 6d 65 6e 74  |ptions (not ment|
00033de0  69 6f 6e 69 6e 67 20 22  79 6f 75 22 20 75 6e 6c  |ioning "you" unl|
00033df0  65 73 73 20 74 6f 20 73  61 79 20 73 6f 6d 65 74  |ess to say somet|
00033e00  68 69 6e 67 20 6f 74 68  65 72 20 74 68 61 6e 20  |hing other than |
00033e10  74 68 65 0a 6f 62 76 69  6f 75 73 20 66 61 63 74  |the.obvious fact|
00033e20  20 6f 66 20 62 65 69 6e  67 20 70 72 65 73 65 6e  | of being presen|
00033e30  74 29 2e 0a 0a 41 73 20  69 6e 20 61 6c 6c 20 77  |t)...As in all w|
00033e40  72 69 74 69 6e 67 2c 20  76 6f 63 61 62 75 6c 61  |riting, vocabula|
00033e50  72 79 20 63 6f 75 6e 74  73 2e 20 20 49 66 20 74  |ry counts.  If t|
00033e60  68 65 72 65 20 69 73 20  61 20 74 72 65 65 2c 20  |here is a tree, |
00033e70  77 68 61 74 20 6b 69 6e  64 20 69 73 20 69 74 2c  |what kind is it,|
00033e80  0a 6f 61 6b 2c 20 6a 75  6e 69 70 65 72 2c 20 68  |.oak, juniper, h|
00033e90  61 77 74 68 6f 72 6e 2c  20 61 73 68 3f 20 20 54  |awthorn, ash?  T|
00033ea0  68 65 6e 2c 20 74 6f 6f  2c 20 64 6f 6e 27 74 20  |hen, too, don't |
00033eb0  6d 61 6b 65 20 61 6c 6c  20 72 6f 6f 6d 20 64 65  |make all room de|
00033ec0  73 63 72 69 70 74 69 6f  6e 73 0a 73 74 61 74 69  |scriptions.stati|
00033ed0  63 2c 20 61 6e 64 20 74  72 79 20 74 6f 20 69 6e  |c, and try to in|
00033ee0  76 6f 6b 65 20 6d 6f 72  65 20 74 68 61 6e 20 6a  |voke more than j|
00033ef0  75 73 74 20 73 69 67 68  74 20 61 74 20 74 69 6d  |ust sight at tim|
00033f00  65 73 3a 20 73 6d 65 6c  6c 2c 20 74 6f 75 63 68  |es: smell, touch|
00033f10  20 61 6e 64 0a 73 6f 75  6e 64 20 61 72 65 20 70  | and.sound are p|
00033f20  6f 77 65 72 66 75 6c 6c  79 20 65 76 6f 63 61 74  |owerfully evocat|
00033f30  69 76 65 2e 20 20 50 75  72 69 74 79 20 61 6e 64  |ive.  Purity and|
00033f40  20 63 6f 72 72 75 70 74  69 6f 6e 2c 20 6d 6f 76  | corruption, mov|
00033f50  65 6d 65 6e 74 20 61 6e  64 0a 73 74 69 6c 6c 6e  |ement and.stilln|
00033f60  65 73 73 2c 20 6c 69 67  68 74 20 61 6e 64 20 64  |ess, light and d|
00033f70  61 72 6b 20 68 61 76 65  20 6f 62 73 65 73 73 65  |ark have obsesse|
00033f80  64 20 77 72 69 74 65 72  73 20 74 68 72 6f 75 67  |d writers throug|
00033f90  68 20 74 68 65 20 61 67  65 73 2e 0a 0a 41 62 6f  |h the ages...Abo|
00033fa0  76 65 20 61 6c 6c 2c 20  61 76 6f 69 64 20 74 68  |ve all, avoid th|
00033fb0  65 20 70 6c 61 69 6e 6e  65 73 73 20 6f 66 3a 0a  |e plainness of:.|
00033fc0  0a 20 20 20 59 6f 75 20  61 72 65 20 69 6e 20 74  |.   You are in t|
00033fd0  68 65 20 47 72 65 61 74  20 48 61 6c 6c 2e 20 20  |he Great Hall.  |
00033fe0  59 6f 75 20 63 61 6e 20  67 6f 20 6e 6f 72 74 68  |You can go north|
00033ff0  20 74 6f 20 74 68 65 20  4d 69 6e 73 74 72 65 6c  | to the Minstrel|
00034000  27 73 20 47 61 6c 6c 65  72 79 2c 0a 20 20 20 65  |'s Gallery,.   e|
00034010  61 73 74 20 74 6f 20 74  68 65 20 66 69 72 65 70  |ast to the firep|
00034020  6c 61 63 65 20 61 6e 64  20 64 6f 77 6e 20 74 6f  |lace and down to|
00034030  20 74 68 65 20 6b 69 74  63 68 65 6e 73 2e 0a 0a  | the kitchens...|
00034040  20 20 20 54 68 65 72 65  20 69 73 20 61 20 73 77  |   There is a sw|
00034050  6f 72 64 20 68 65 72 65  2e 0a 0a 53 6f 20 6d 75  |ord here...So mu|
00034060  63 68 20 66 6f 72 20 62  61 64 20 72 6f 6f 6d 20  |ch for bad room |
00034070  64 65 73 63 72 69 70 74  69 6f 6e 73 2e 20 20 54  |descriptions.  T|
00034080  68 65 20 66 6f 6c 6c 6f  77 69 6e 67 20 65 78 61  |he following exa|
00034090  6d 70 6c 65 20 28 77 68  69 63 68 20 49 20 68 61  |mple (which I ha|
000340a0  76 65 20 6e 6f 74 0a 69  6e 76 65 6e 74 65 64 29  |ve not.invented)|
000340b0  20 69 73 20 73 6f 6d 65  74 68 69 6e 67 20 6d 75  | is something mu|
000340c0  63 68 20 6d 6f 72 65 20  64 61 6e 67 65 72 6f 75  |ch more dangerou|
000340d0  73 2c 20 74 68 65 20 6d  65 64 69 6f 63 72 65 20  |s, the mediocre |
000340e0  72 6f 6f 6d 20 64 65 73  63 72 69 70 74 69 6f 6e  |room description|
000340f0  3a 0a 0a 20 20 20 57 68  69 72 6c 70 6f 6f 6c 20  |:..   Whirlpool |
00034100  52 6f 6f 6d 0a 20 20 20  59 6f 75 20 61 72 65 20  |Room.   You are |
00034110  69 6e 20 61 20 6d 61 67  6e 69 66 69 63 65 6e 74  |in a magnificent|
00034120  20 63 61 76 65 72 6e 20  77 69 74 68 20 61 20 72  | cavern with a r|
00034130  75 73 68 69 6e 67 20 73  74 72 65 61 6d 2c 20 77  |ushing stream, w|
00034140  68 69 63 68 20 63 61 73  63 61 64 65 73 0a 20 20  |hich cascades.  |
00034150  20 6f 76 65 72 20 61 20  73 70 61 72 6b 6c 69 6e  | over a sparklin|
00034160  67 20 77 61 74 65 72 66  61 6c 6c 20 69 6e 74 6f  |g waterfall into|
00034170  20 61 20 72 6f 61 72 69  6e 67 20 77 68 69 72 6c  | a roaring whirl|
00034180  70 6f 6f 6c 20 77 68 69  63 68 20 64 69 73 61 70  |pool which disap|
00034190  70 65 61 72 73 0a 20 20  20 74 68 72 6f 75 67 68  |pears.   through|
000341a0  20 61 20 68 6f 6c 65 20  69 6e 20 74 68 65 20 66  | a hole in the f|
000341b0  6c 6f 6f 72 2e 20 20 50  61 73 73 61 67 65 73 20  |loor.  Passages |
000341c0  65 78 69 74 20 74 6f 20  74 68 65 20 73 6f 75 74  |exit to the sout|
000341d0  68 20 61 6e 64 20 77 65  73 74 2e 0a 0a 2e 2e 2e  |h and west......|
000341e0  73 65 65 6d 73 20 61 20  64 65 63 65 6e 74 20 65  |seems a decent e|
000341f0  6e 6f 75 67 68 20 74 72  79 2e 20 20 42 75 74 20  |nough try.  But |
00034200  6e 6f 20 6e 6f 76 65 6c  69 73 74 20 77 6f 75 6c  |no novelist woul|
00034210  64 20 77 72 69 74 65 20  73 75 63 68 20 73 65 6e  |d write such sen|
00034220  74 65 6e 63 65 73 2e 20  0a 45 61 63 68 20 69 6d  |tences. .Each im|
00034230  70 6f 72 74 61 6e 74 20  6e 6f 75 6e 20 2d 20 22  |portant noun - "|
00034240  63 61 76 65 72 6e 22 2c  20 22 73 74 72 65 61 6d  |cavern", "stream|
00034250  22 2c 20 22 77 61 74 65  72 66 61 6c 6c 22 2c 20  |", "waterfall", |
00034260  22 77 68 69 72 6c 70 6f  6f 6c 22 20 2d 20 68 61  |"whirlpool" - ha|
00034270  73 20 69 74 73 0a 6f 77  6e 20 61 64 6a 65 63 74  |s its.own adject|
00034280  69 76 65 20 2d 20 22 6d  61 67 6e 69 66 69 63 65  |ive - "magnifice|
00034290  6e 74 22 2c 20 22 72 75  73 68 69 6e 67 22 2c 20  |nt", "rushing", |
000342a0  22 73 70 61 72 6b 6c 69  6e 67 22 2c 20 22 72 6f  |"sparkling", "ro|
000342b0  61 72 69 6e 67 22 2e 20  20 54 68 65 20 74 77 6f  |aring".  The two|
000342c0  0a 22 77 68 69 63 68 22  20 63 6c 61 75 73 65 73  |."which" clauses|
000342d0  20 69 6e 20 61 20 72 6f  77 20 61 72 65 20 61 20  | in a row are a |
000342e0  6c 69 74 74 6c 65 20 75  6e 68 61 70 70 79 2e 20  |little unhappy. |
000342f0  20 22 43 61 73 63 61 64  65 73 22 20 69 73 20 67  | "Cascades" is g|
00034300  6f 6f 64 2c 20 62 75 74  20 64 6f 65 73 0a 61 20  |ood, but does.a |
00034310  73 74 72 65 61 6d 20 63  61 73 63 61 64 65 20 22  |stream cascade "|
00034320  6f 76 65 72 22 20 61 20  77 61 74 65 72 66 61 6c  |over" a waterfal|
00034330  6c 3f 20 20 44 6f 65 73  20 61 20 77 68 69 72 6c  |l?  Does a whirl|
00034340  70 6f 6f 6c 20 69 74 73  65 6c 66 20 64 69 73 61  |pool itself disa|
00034350  70 70 65 61 72 3f 20 0a  54 68 65 20 22 68 6f 6c  |ppear? .The "hol|
00034360  65 20 69 6e 20 74 68 65  20 66 6c 6f 6f 72 22 20  |e in the floor" |
00034370  73 65 65 6d 73 20 69 6e  63 6f 6e 67 72 75 6f 75  |seems incongruou|
00034380  73 2e 20 20 53 75 72 65  6c 79 20 69 74 20 6d 75  |s.  Surely it mu|
00034390  73 74 20 62 65 20 75 6e  64 65 72 77 61 74 65 72  |st be underwater|
000343a0  2c 0a 69 6e 64 65 65 64  20 64 65 65 70 20 75 6e  |,.indeed deep un|
000343b0  64 65 72 77 61 74 65 72  3f 0a 0a 43 6f 6d 65 20  |derwater?..Come |
000343c0  74 6f 20 74 68 61 74 2c  20 74 68 65 20 67 65 6f  |to that, the geo|
000343d0  67 72 61 70 68 79 20 63  6f 75 6c 64 20 62 65 20  |graphy could be |
000343e0  62 65 74 74 65 72 20 75  73 65 64 2c 20 77 68 69  |better used, whi|
000343f0  63 68 20 77 6f 75 6c 64  20 61 6c 73 6f 20 68 65  |ch would also he|
00034400  6c 70 20 74 6f 0a 70 6c  61 63 65 20 74 68 65 20  |lp to.place the |
00034410  77 68 69 72 6c 70 6f 6f  6c 20 77 69 74 68 69 6e  |whirlpool within|
00034420  20 74 68 65 20 63 61 76  65 20 28 69 6e 20 74 68  | the cave (in th|
00034430  65 20 6d 69 64 64 6c 65  3f 20 6f 6e 20 6f 6e 65  |e middle? on one|
00034440  20 65 64 67 65 3f 29 2e  20 20 41 6e 64 20 77 68  | edge?).  And wh|
00034450  79 0a 22 57 68 69 72 6c  70 6f 6f 6c 20 52 6f 6f  |y."Whirlpool Roo|
00034460  6d 22 2c 20 77 68 69 63  68 20 73 6f 75 6e 64 73  |m", which sounds|
00034470  20 6c 69 6b 65 20 70 61  72 74 20 6f 66 20 61 20  | like part of a |
00034480  68 65 61 6c 74 68 20 63  6c 75 62 3f 20 20 41 73  |health club?  As|
00034490  20 61 20 73 65 63 6f 6e  64 0a 64 72 61 66 74 2c  | a second.draft,|
000344a0  20 74 68 65 6e 2c 20 66  6f 6c 6c 6f 77 69 6e 67  | then, following|
000344b0  20 74 68 65 20 6f 72 69  67 69 6e 61 6c 3a 0a 0a  | the original:..|
000344c0  20 20 20 57 68 69 72 6c  70 6f 6f 6c 20 4c 65 64  |   Whirlpool Led|
000344d0  67 65 0a 20 20 20 54 68  65 20 70 61 74 68 20 72  |ge.   The path r|
000344e0  75 6e 73 20 61 20 71 75  61 72 74 65 72 2d 63 69  |uns a quarter-ci|
000344f0  72 63 6c 65 20 66 72 6f  6d 20 73 6f 75 74 68 20  |rcle from south |
00034500  74 6f 20 77 65 73 74 20  61 72 6f 75 6e 64 20 61  |to west around a|
00034510  20 62 72 6f 6b 65 6e 20  6c 65 64 67 65 0a 20 20  | broken ledge.  |
00034520  20 6f 66 20 74 68 69 73  20 66 75 6e 6e 65 6c 20  | of this funnel |
00034530  63 61 76 65 72 6e 2e 20  20 41 20 77 61 74 65 72  |cavern.  A water|
00034540  66 61 6c 6c 20 64 72 6f  70 73 20 6f 75 74 20 6f  |fall drops out o|
00034550  66 20 74 68 65 20 64 61  72 6b 6e 65 73 73 2c 20  |f the darkness, |
00034560  63 61 74 63 68 69 6e 67  0a 20 20 20 74 68 65 20  |catching.   the |
00034570  6c 61 6d 70 6c 69 67 68  74 20 61 73 20 69 74 20  |lamplight as it |
00034580  63 61 73 63 61 64 65 73  20 69 6e 74 6f 20 74 68  |cascades into th|
00034590  65 20 62 61 73 69 6e 2e  20 20 53 69 6e 69 73 74  |e basin.  Sinist|
000345a0  65 72 2c 20 72 61 70 69  64 20 63 75 72 72 65 6e  |er, rapid curren|
000345b0  74 73 0a 20 20 20 77 68  69 70 20 69 6e 74 6f 20  |ts.   whip into |
000345c0  61 20 72 6f 61 72 69 6e  67 20 77 68 69 72 6c 70  |a roaring whirlp|
000345d0  6f 6f 6c 20 62 65 6c 6f  77 2e 0a 0a 45 76 65 6e  |ool below...Even|
000345e0  20 73 6f 3a 20 74 68 65  72 65 20 69 73 20 6e 6f  | so: there is no|
000345f0  74 68 69 6e 67 20 6d 61  6e 2d 6d 61 64 65 2c 20  |thing man-made, |
00034600  6e 6f 74 68 69 6e 67 20  61 6c 69 76 65 2c 20 6e  |nothing alive, n|
00034610  6f 20 63 6f 6c 6f 75 72  20 61 6e 64 20 62 65 73  |o colour and bes|
00034620  69 64 65 73 0a 69 74 20  73 65 65 6d 73 20 74 6f  |ides.it seems to|
00034630  20 6d 69 73 73 20 74 68  65 20 65 73 73 65 6e 74  | miss the essent|
00034640  69 61 6c 20 66 65 61 74  75 72 65 20 6f 66 20 61  |ial feature of a|
00034650  6c 6c 20 74 68 65 20 6d  6f 75 6e 74 61 69 6e 20  |ll the mountain |
00034660  77 61 74 65 72 2d 63 61  76 65 73 20 49 27 76 65  |water-caves I've|
00034670  0a 65 76 65 72 20 62 65  65 6e 20 74 6f 2c 20 73  |.ever been to, s|
00034680  6f 20 6c 65 74 20 75 73  20 61 64 64 20 61 20 73  |o let us add a s|
00034690  65 63 6f 6e 64 20 70 61  72 61 67 72 61 70 68 20  |econd paragraph |
000346a0  28 77 69 74 68 20 61 20  6c 69 6e 65 20 62 72 65  |(with a line bre|
000346b0  61 6b 2c 20 77 68 69 63  68 0a 69 73 20 6d 75 63  |ak, which.is muc|
000346c0  68 20 65 61 73 69 65 72  20 6f 6e 20 74 68 65 20  |h easier on the |
000346d0  65 79 65 29 3a 0a 0a 20  20 20 42 6c 75 65 2d 67  |eye):..   Blue-g|
000346e0  72 65 65 6e 20 61 6c 67  61 65 20 68 61 6e 67 73  |reen algae hangs|
000346f0  20 69 6e 20 63 6c 75 73  74 65 72 73 20 66 72 6f  | in clusters fro|
00034700  6d 20 74 68 65 20 6f 6c  64 20 67 75 61 72 64 2d  |m the old guard-|
00034710  72 61 69 6c 69 6e 67 2c  20 77 68 69 63 68 20 68  |railing, which h|
00034720  61 73 0a 20 20 20 61 6c  6d 6f 73 74 20 72 75 73  |as.   almost rus|
00034730  74 65 64 20 63 6c 65 61  6e 20 74 68 72 6f 75 67  |ted clean throug|
00034740  68 20 69 6e 20 74 68 65  20 66 72 69 67 69 64 2c  |h in the frigid,|
00034750  20 73 6f 61 6b 69 6e 67  20 61 69 72 2e 0a 0a 54  | soaking air...T|
00034760  68 65 20 61 6c 67 61 65  20 61 6e 64 20 74 68 65  |he algae and the|
00034770  20 67 75 61 72 64 2d 72  61 69 6c 20 6f 66 66 65  | guard-rail offe|
00034780  72 20 64 69 73 74 69 6e  63 74 20 70 6f 73 73 69  |r distinct possi|
00034790  62 69 6c 69 74 69 65 73  20 6f 66 20 61 20 70 75  |bilities of a pu|
000347a0  7a 7a 6c 65 20 6f 72 0a  74 77 6f 2e 2e 2e 20 20  |zzle or.two...  |
000347b0  50 65 72 68 61 70 73 20  74 68 65 72 65 20 61 72  |Perhaps there ar|
000347c0  65 20 66 72 6f 67 73 20  77 68 6f 20 63 6f 75 6c  |e frogs who coul|
000347d0  64 20 65 61 74 20 74 68  65 20 61 6c 67 61 65 3b  |d eat the algae;|
000347e0  20 70 65 72 68 61 70 73  20 74 68 65 20 70 6c 61  | perhaps the pla|
000347f0  79 65 72 0a 6d 69 67 68  74 20 66 69 6e 64 20 61  |yer.might find a|
00034800  20 75 73 65 20 66 6f 72  20 69 72 6f 6e 20 6f 78  | use for iron ox|
00034810  69 64 65 2c 20 61 6e 64  20 63 6f 75 6c 64 20 73  |ide, and could s|
00034820  63 72 61 70 65 20 72 75  73 74 20 66 72 6f 6d 20  |crape rust from |
00034830  74 68 65 20 72 61 69 6c  69 6e 67 2e 20 0a 28 48  |the railing. .(H|
00034840  65 72 62 61 6c 69 73 74  73 20 70 72 6f 62 61 62  |erbalists probab|
00034850  6c 79 20 75 73 65 64 20  74 6f 20 75 73 65 20 72  |ly used to use r|
00034860  75 73 74 20 66 6f 72 20  73 6f 6d 65 74 68 69 6e  |ust for somethin|
00034870  67 2c 20 61 6e 64 20 61  6e 20 65 6e 63 79 63 6c  |g, and an encycl|
00034880  6f 70 61 65 64 69 61 20  6f 72 0a 61 20 63 68 65  |opaedia or.a che|
00034890  6d 69 73 74 72 79 20 74  65 78 74 20 62 6f 6f 6b  |mistry text book|
000348a0  20 6d 69 67 68 74 20 6b  6e 6f 77 2e 29 20 20 43  | might know.)  C|
000348b0  65 72 74 61 69 6e 6c 79  20 74 68 65 20 72 61 69  |ertainly the rai|
000348c0  6c 69 6e 67 20 73 68 6f  75 6c 64 20 62 72 65 61  |ling should brea|
000348d0  6b 20 69 66 20 61 0a 72  6f 70 65 20 69 73 20 74  |k if a.rope is t|
000348e0  69 65 64 20 74 6f 20 69  74 2e 20 20 49 73 20 69  |ied to it.  Is i|
000348f0  74 20 73 61 66 65 20 74  6f 20 64 69 76 65 20 69  |t safe to dive i|
00034900  6e 3f 20 20 44 6f 65 73  20 74 68 65 20 77 61 74  |n?  Does the wat|
00034910  65 72 20 68 61 76 65 20  61 20 68 79 70 6e 6f 74  |er have a hypnot|
00034920  69 63 0a 65 66 66 65 63  74 20 6f 6e 20 73 6f 6d  |ic.effect on som|
00034930  65 6f 6e 65 20 77 68 6f  20 73 74 61 72 65 73 20  |eone who stares |
00034940  69 6e 74 6f 20 69 74 3f  20 20 49 73 20 74 68 65  |into it?  Is the|
00034950  72 65 20 61 6e 79 74 68  69 6e 67 20 64 72 79 20  |re anything dry |
00034960  77 68 69 63 68 20 77 6f  75 6c 64 0a 62 65 63 6f  |which would.beco|
00034970  6d 65 20 64 61 6d 70 20  69 66 20 74 68 65 20 70  |me damp if the p|
00034980  6c 61 79 65 72 20 62 72  6f 75 67 68 74 20 69 74  |layer brought it|
00034990  20 74 68 72 6f 75 67 68  20 68 65 72 65 3f 20 20  | through here?  |
000349a0  4d 69 67 68 74 20 74 68  65 72 65 20 62 65 20 61  |Might there be a|
000349b0  20 73 65 63 6f 6e 64 0a  6c 65 64 67 65 20 68 69  | second.ledge hi|
000349c0  67 68 65 72 20 75 70 20  77 68 65 72 65 20 74 68  |gher up where th|
000349d0  65 20 73 74 72 65 61 6d  20 66 61 6c 6c 73 20 69  |e stream falls i|
000349e0  6e 74 6f 20 74 68 65 20  63 61 76 65 3f 20 20 2d  |nto the cave?  -|
000349f0  20 41 6e 64 20 73 6f 20  61 20 6c 6f 63 61 74 69  | And so a locati|
00034a00  6f 6e 0a 69 73 20 6d 61  64 65 2e 0a 0a 0a 31 31  |on.is made....11|
00034a10  2e 20 20 54 68 65 20 4d  61 70 0a 2d 2d 2d 2d 2d  |.  The Map.-----|
00034a20  2d 2d 2d 2d 2d 2d 2d 0a  0a 50 75 7a 7a 6c 65 73  |-------..Puzzles|
00034a30  20 61 6e 64 20 6f 62 6a  65 63 74 73 20 61 72 65  | and objects are|
00034a40  20 69 6e 65 78 74 72 69  63 61 62 6c 79 20 6c 69  | inextricably li|
00034a50  6e 6b 65 64 20 74 6f 20  74 68 65 20 6d 61 70 2c  |nked to the map,|
00034a60  20 77 68 69 63 68 20 6d  65 61 6e 73 20 74 68 61  | which means tha|
00034a70  74 20 74 68 65 0a 66 69  6e 61 6c 20 73 74 61 74  |t the.final stat|
00034a80  65 20 6f 66 20 74 68 65  20 6d 61 70 20 6f 6e 6c  |e of the map onl|
00034a90  79 20 67 72 61 64 75 61  6c 6c 79 20 65 6d 65 72  |y gradually emer|
00034aa0  67 65 73 20 61 6e 64 20  74 68 65 20 61 75 74 68  |ges and the auth|
00034ab0  6f 72 20 73 68 6f 75 6c  64 20 65 78 70 65 63 74  |or should expect|
00034ac0  0a 74 6f 20 68 61 76 65  20 74 6f 20 6b 65 65 70  |.to have to keep|
00034ad0  20 63 68 61 6e 67 69 6e  67 20 69 74 20 74 6f 20  | changing it to |
00034ae0  67 65 74 20 69 74 20 72  69 67 68 74 20 2d 20 72  |get it right - r|
00034af0  61 74 68 65 72 20 74 68  61 6e 20 74 6f 20 64 65  |ather than to de|
00034b00  76 69 73 65 20 61 6e 0a  65 6e 6f 72 6d 6f 75 73  |vise an.enormous|
00034b10  20 65 6d 70 74 79 20 6c  61 6e 64 73 63 61 70 65  | empty landscape|
00034b20  20 61 74 20 66 69 72 73  74 20 61 6e 64 20 74 68  | at first and th|
00034b30  65 6e 20 66 69 6c 6c 20  69 74 20 77 69 74 68 20  |en fill it with |
00034b40  6d 61 74 65 72 69 61 6c  2e 0a 0a 42 61 63 6b 20  |material...Back |
00034b50  74 6f 20 61 74 6d 6f 73  70 68 65 72 65 2c 20 74  |to atmosphere, t|
00034b60  68 65 6e 2c 20 62 65 63  61 75 73 65 20 74 68 72  |hen, because thr|
00034b70  6f 75 67 68 6f 75 74 20  69 74 27 73 20 76 69 74  |oughout it's vit|
00034b80  61 6c 20 74 68 61 74 20  74 68 65 20 6d 61 70 20  |al that the map |
00034b90  73 68 6f 75 6c 64 0a 62  65 20 63 6f 6e 74 69 6e  |should.be contin|
00034ba0  75 6f 75 73 2e 20 20 54  68 65 20 6d 61 72 6b 20  |uous.  The mark |
00034bb0  6f 66 20 61 20 70 6f 6f  72 20 67 61 6d 65 20 69  |of a poor game i|
00034bc0  73 20 61 20 6d 61 70 20  6c 69 6b 65 3a 0a 0a 20  |s a map like:.. |
00034bd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00034be0  20 20 20 20 20 20 20 20  20 20 20 47 6c 61 63 69  |           Glaci|
00034bf0  65 72 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |er.             |
00034c00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00034c10  20 20 7c 0a 20 20 20 20  20 20 20 20 20 20 20 20  |  |.            |
00034c20  20 44 75 6e 67 65 6f 6e  20 20 2d 2d 20 20 4f 72  | Dungeon  --  Or|
00034c30  69 65 6e 74 61 6c 20 52  6f 6f 6d 20 20 2d 2d 20  |iental Room  -- |
00034c40  20 46 69 72 65 20 53 74  61 74 69 6f 6e 0a 20 20  | Fire Station.  |
00034c50  20 20 20 20 20 20 20 20  20 20 20 20 28 66 69 73  |            (fis|
00034c60  68 29 20 20 20 20 20 20  20 28 6d 65 67 61 70 68  |h)       (megaph|
00034c70  6f 6e 65 29 20 20 20 20  20 20 20 20 20 28 74 75  |one)         (tu|
00034c80  6c 69 70 73 29 0a 20 20  20 20 20 20 20 20 20 20  |lips).          |
00034c90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00034ca0  20 20 20 20 20 7c 0a 20  20 20 20 20 20 20 20 20  |     |.         |
00034cb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00034cc0  20 20 43 68 65 65 73 65  20 52 6f 6f 6d 0a 0a 69  |  Cheese Room..i|
00034cd0  6e 20 77 68 69 63 68 20  6e 6f 74 68 69 6e 67 20  |n which nothing |
00034ce0  72 65 6c 61 74 65 73 20  74 6f 20 61 6e 79 74 68  |relates to anyth|
00034cf0  69 6e 67 20 65 6c 73 65  2c 20 73 6f 20 74 68 61  |ing else, so tha|
00034d00  74 20 74 68 65 20 67 61  6d 65 20 68 61 73 20 6e  |t the game has n|
00034d10  6f 20 6f 76 65 72 61 6c  6c 0a 67 65 6f 67 72 61  |o overall.geogra|
00034d20  70 68 79 20 61 74 20 61  6c 6c 2e 20 20 4d 75 63  |phy at all.  Muc|
00034d30  68 20 6d 6f 72 65 20 62  65 6c 69 65 76 61 62 6c  |h more believabl|
00034d40  65 20 69 73 20 73 6f 6d  65 74 68 69 6e 67 20 6c  |e is something l|
00034d50  69 6b 65 3a 0a 0a 20 20  20 20 20 20 20 20 20 20  |ike:..          |
00034d60  20 20 20 20 20 20 20 20  20 53 6e 6f 77 79 20 4d  |         Snowy M|
00034d70  6f 75 6e 74 61 69 6e 73  69 64 65 0a 20 20 20 20  |ountainside.    |
00034d80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00034d90  20 20 20 20 20 20 20 20  5c 20 20 0a 20 20 20 20  |        \  .    |
00034da0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00034db0  20 20 20 20 20 43 61 72  76 65 64 20 54 75 6e 6e  |     Carved Tunn|
00034dc0  65 6c 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |el.             |
00034dd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00034de0  20 20 7c 0a 20 20 20 20  20 20 20 20 20 20 20 20  |  |.            |
00034df0  20 20 20 20 20 20 20 20  20 20 20 20 20 4f 72 69  |             Ori|
00034e00  65 6e 74 61 6c 20 52 6f  6f 6d 20 20 2d 2d 20 4a  |ental Room  -- J|
00034e10  61 64 65 20 50 61 73 73  61 67 65 20 2d 2d 20 46  |ade Passage -- F|
00034e20  69 72 65 20 44 72 61 67  6f 6e 0a 20 20 20 20 20  |ire Dragon.     |
00034e30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00034e40  20 20 20 20 20 20 20 28  62 75 64 64 68 61 29 20  |       (buddha) |
00034e50  20 20 20 20 20 20 28 62  6f 6e 73 61 69 20 74 72  |      (bonsai tr|
00034e60  65 65 29 20 20 20 20 20  20 52 6f 6f 6d 0a 20 20  |ee)      Room.  |
00034e70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00034e80  20 20 20 20 20 20 20 20  20 20 20 20 20 7c 0a 20  |             |. |
00034e90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00034ea0  20 20 20 20 20 20 20 20  42 6c 6f 73 73 6f 6d 20  |        Blossom |
00034eb0  52 6f 6f 6d 0a 0a 54 68  65 20 6d 61 70 20 73 68  |Room..The map sh|
00034ec0  6f 75 6c 64 20 72 65 66  6c 65 63 74 20 73 6f 6d  |ould reflect som|
00034ed0  65 20 6c 61 72 67 65 2d  73 63 61 6c 65 20 67 65  |e large-scale ge|
00034ee0  6f 67 72 61 70 68 79 20  74 6f 6f 3a 20 74 68 65  |ography too: the|
00034ef0  20 6d 6f 75 6e 74 61 69  6e 73 69 64 65 0a 73 68  | mountainside.sh|
00034f00  6f 75 6c 64 20 65 78 74  65 6e 64 20 61 63 72 6f  |ould extend acro|
00034f10  73 73 20 74 68 65 20 6d  61 70 20 69 6e 20 62 6f  |ss the map in bo|
00034f20  74 68 20 64 69 72 65 63  74 69 6f 6e 73 2e 20 20  |th directions.  |
00034f30  49 66 20 74 68 65 72 65  20 69 73 20 61 20 73 74  |If there is a st|
00034f40  72 65 61 6d 0a 70 61 73  73 69 6e 67 20 74 68 72  |ream.passing thr|
00034f50  6f 75 67 68 20 61 20 67  69 76 65 6e 20 6c 6f 63  |ough a given loc|
00034f60  61 74 69 6f 6e 2c 20 77  68 61 74 20 68 61 70 70  |ation, what happ|
00034f70  65 6e 73 20 74 6f 20 69  74 3f 20 20 41 6e 64 20  |ens to it?  And |
00034f80  73 6f 20 6f 6e 2e 20 20  4d 61 70 73 0a 6f 66 20  |so on.  Maps.of |
00034f90  72 65 61 6c 20 6d 6f 75  6e 74 61 69 6e 20 72 61  |real mountain ra|
00034fa0  6e 67 65 73 20 61 6e 64  20 72 65 61 6c 20 63 61  |nges and real ca|
00034fb0  76 65 20 73 79 73 74 65  6d 73 20 63 61 6e 20 62  |ve systems can b|
00034fc0  65 20 71 75 69 74 65 20  68 65 6c 70 66 75 6c 20  |e quite helpful |
00034fd0  77 68 65 6e 0a 74 72 79  69 6e 67 20 74 6f 20 77  |when.trying to w|
00034fe0  6f 72 6b 20 6f 75 74 20  61 6e 20 69 6e 74 65 72  |ork out an inter|
00034ff0  65 73 74 69 6e 67 20 67  65 6f 67 72 61 70 68 79  |esting geography|
00035000  2e 0a 0a 0a 41 20 76 65  78 65 64 20 71 75 65 73  |....A vexed ques|
00035010  74 69 6f 6e 20 69 73 20  6a 75 73 74 20 68 6f 77  |tion is just how|
00035020  20 6d 75 63 68 20 6c 61  6e 64 20 6f 63 63 75 70  | much land occup|
00035030  69 65 73 20 61 20 73 69  6e 67 6c 65 20 6c 6f 63  |ies a single loc|
00035040  61 74 69 6f 6e 2e 20 20  55 73 75 61 6c 6c 79 0a  |ation.  Usually.|
00035050  61 20 6c 6f 63 61 74 69  6f 6e 20 72 65 70 72 65  |a location repre|
00035060  73 65 6e 74 73 20 61 20  22 72 6f 6f 6d 22 2c 20  |sents a "room", |
00035070  70 65 72 68 61 70 73 20  74 65 6e 20 79 61 72 64  |perhaps ten yard|
00035080  73 20 61 63 72 6f 73 73  20 61 74 20 74 68 65 20  |s across at the |
00035090  6d 6f 73 74 2e 20 0a 52  65 61 6c 6c 79 20 6c 61  |most. .Really la|
000350a0  72 67 65 20 75 6e 64 65  72 67 72 6f 75 6e 64 20  |rge underground |
000350b0  63 68 61 6d 62 65 72 73  20 2d 20 74 68 65 20 6c  |chambers - the l|
000350c0  65 67 65 6e 64 61 72 79  20 22 48 61 6c 6c 20 6f  |egendary "Hall o|
000350d0  66 20 4d 69 73 74 73 22  20 69 6e 0a 41 64 76 65  |f Mists" in.Adve|
000350e0  6e 74 75 72 65 2c 20 74  68 65 20 62 61 72 67 65  |nture, the barge|
000350f0  20 63 68 61 6d 62 65 72  20 69 6e 20 22 49 6e 66  | chamber in "Inf|
00035100  69 64 65 6c 22 20 2d 20  61 72 65 20 75 73 75 61  |idel" - are usua|
00035110  6c 6c 79 20 69 6d 70 6c  65 6d 65 6e 74 65 64 20  |lly implemented |
00035120  77 69 74 68 0a 73 65 76  65 72 61 6c 20 6c 6f 63  |with.several loc|
00035130  61 74 69 6f 6e 73 2c 20  73 6f 6d 65 74 68 69 6e  |ations, somethin|
00035140  67 20 6c 69 6b 65 3a 0a  0a 20 20 20 20 20 20 20  |g like:..       |
00035150  20 20 20 20 20 20 20 20  20 20 42 61 6c 6c 72 6f  |          Ballro|
00035160  6f 6d 20 4e 57 20 20 20  20 20 2d 2d 2d 20 20 20  |om NW     ---   |
00035170  20 20 42 61 6c 6c 72 6f  6f 6d 20 4e 45 0a 20 20  |  Ballroom NE.  |
00035180  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00035190  20 20 20 7c 20 20 20 20  20 20 5c 20 20 20 20 20  |   |      \     |
000351a0  20 20 20 20 20 20 2f 20  20 20 20 7c 0a 20 20 20  |      /    |.   |
000351b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000351c0  20 20 7c 20 20 20 20 20  20 20 44 61 6e 63 65 20  |  |       Dance |
000351d0  46 6c 6f 6f 72 20 20 20  20 20 7c 0a 20 20 20 20  |Floor     |.    |
000351e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000351f0  20 7c 20 20 20 20 20 20  2f 20 20 20 20 20 20 20  | |      /       |
00035200  20 20 20 20 5c 20 20 20  20 7c 0a 20 20 20 20 20  |    \    |.     |
00035210  20 20 20 20 20 20 20 20  20 20 20 20 42 61 6c 6c  |            Ball|
00035220  72 6f 6f 6d 20 53 57 20  20 20 20 20 2d 2d 2d 20  |room SW     --- |
00035230  20 20 20 20 42 61 6c 6c  72 6f 6f 6d 20 53 45 0a  |    Ballroom SE.|
00035240  0a 54 68 69 73 20 64 6f  65 73 20 67 69 76 65 20  |.This does give |
00035250  73 6f 6d 65 20 69 6d 70  72 65 73 73 69 6f 6e 20  |some impression |
00035260  6f 66 20 73 70 61 63 65  20 62 75 74 20 69 74 20  |of space but it |
00035270  63 61 6e 20 61 6c 73 6f  20 77 61 73 74 65 20 6c  |can also waste l|
00035280  6f 63 61 74 69 6f 6e 73  20 69 6e 20 61 0a 71 75  |ocations in a.qu|
00035290  69 74 65 20 64 75 6c 6c  20 77 61 79 2c 20 75 6e  |ite dull way, un|
000352a0  6c 65 73 73 20 74 68 65  72 65 20 61 72 65 20 67  |less there are g|
000352b0  65 6e 75 69 6e 65 6c 79  20 64 69 66 66 65 72 65  |enuinely differe|
000352c0  6e 74 20 74 68 69 6e 67  73 20 74 6f 20 64 6f 20  |nt things to do |
000352d0  61 74 20 73 6f 6d 65 0a  6f 66 20 74 68 65 20 63  |at some.of the c|
000352e0  6f 72 6e 65 72 73 2e 0a  0a 4f 6e 20 74 68 65 20  |orners...On the |
000352f0  6f 74 68 65 72 20 68 61  6e 64 2c 20 73 6f 6d 65  |other hand, some|
00035300  74 69 6d 65 73 20 61 6e  20 65 6e 74 69 72 65 20  |times an entire |
00035310  6d 65 61 64 6f 77 2c 20  6f 72 20 76 61 6c 6c 65  |meadow, or valle|
00035320  79 2c 20 6d 69 67 68 74  20 62 65 20 6f 6e 65 0a  |y, might be one.|
00035330  73 69 6e 67 6c 65 20 6c  6f 63 61 74 69 6f 6e 2c  |single location,|
00035340  20 62 75 74 20 74 68 65  6e 20 69 74 73 20 64 65  | but then its de|
00035350  73 63 72 69 70 74 69 6f  6e 20 77 69 6c 6c 20 68  |scription will h|
00035360  61 76 65 20 74 6f 20 62  65 20 77 72 69 74 74 65  |ave to be writte|
00035370  6e 20 63 61 72 65 66 75  6c 6c 79 0a 74 6f 20 6d  |n carefully.to m|
00035380  61 6b 65 20 74 68 69 73  20 63 6c 65 61 72 2e 0a  |ake this clear..|
00035390  0a 0a 49 6e 20 64 65 73  69 67 6e 69 6e 67 20 61  |..In designing a|
000353a0  20 6d 61 70 2c 20 69 74  20 61 64 64 73 20 74 6f  | map, it adds to|
000353b0  20 74 68 65 20 69 6e 74  65 72 65 73 74 20 74 6f  | the interest to|
000353c0  20 6d 61 6b 65 20 61 20  66 65 77 20 63 6f 6e 6e  | make a few conn|
000353d0  65 63 74 69 6f 6e 73 20  69 6e 20 74 68 65 0a 72  |ections in the.r|
000353e0  61 72 65 72 20 63 6f 6d  70 61 73 73 20 64 69 72  |arer compass dir|
000353f0  65 63 74 69 6f 6e 73 20  28 4e 45 2c 20 4e 57 2c  |ections (NE, NW,|
00035400  20 53 45 2c 20 53 57 29  20 74 6f 20 70 72 65 76  | SE, SW) to prev|
00035410  65 6e 74 20 74 68 65 20  70 6c 61 79 65 72 20 66  |ent the player f|
00035420  72 6f 6d 20 61 0a 66 65  65 6c 69 6e 67 20 74 68  |rom a.feeling th|
00035430  61 74 20 74 68 65 20 67  61 6d 65 20 68 61 73 20  |at the game has |
00035440  61 20 73 71 75 61 72 65  20 67 72 69 64 2e 20 20  |a square grid.  |
00035450  54 68 65 72 65 20 73 68  6f 75 6c 64 20 61 6c 73  |There should als|
00035460  6f 20 62 65 20 61 20 66  65 77 0a 28 70 6f 73 73  |o be a few.(poss|
00035470  69 62 6c 79 20 6c 6f 6e  67 29 20 6c 6f 6f 70 73  |ibly long) loops|
00035480  20 77 68 69 63 68 20 63  61 6e 20 62 65 20 77 61  | which can be wa|
00035490  6c 6b 65 64 20 61 72 6f  75 6e 64 2c 20 74 6f 20  |lked around, to |
000354a0  70 72 65 76 65 6e 74 20  65 6e 64 6c 65 73 73 0a  |prevent endless.|
000354b0  72 65 74 72 61 63 69 6e  67 20 6f 66 20 73 74 65  |retracing of ste|
000354c0  70 73 20 61 6e 64 20 74  6f 20 61 76 6f 69 64 20  |ps and to avoid |
000354d0  74 68 65 20 61 70 70 65  61 72 61 6e 63 65 20 6f  |the appearance o|
000354e0  66 20 61 20 62 75 73 20  73 65 72 76 69 63 65 20  |f a bus service |
000354f0  6d 61 70 2c 0a 68 61 6c  66 20 61 20 64 6f 7a 65  |map,.half a doze|
00035500  6e 20 6c 69 6e 65 73 20  77 69 74 68 20 6f 6e 6c  |n lines with onl|
00035510  79 20 6f 6e 65 20 65 78  63 68 61 6e 67 65 2e 0a  |y one exchange..|
00035520  0a 49 66 20 74 68 65 20  6d 61 70 20 69 73 20 76  |.If the map is v|
00035530  65 72 79 20 6c 61 72 67  65 2c 20 6f 72 20 69 66  |ery large, or if|
00035540  20 61 20 67 6f 6f 64 20  64 65 61 6c 20 6f 66 20  | a good deal of |
00035550  74 6f 2d 61 6e 64 2d 66  72 6f 69 6e 67 20 69 73  |to-and-froing is|
00035560  20 63 61 6c 6c 65 64 20  66 6f 72 2c 0a 74 68 65  | called for,.the|
00035570  72 65 20 73 68 6f 75 6c  64 20 62 65 20 73 6f 6d  |re should be som|
00035580  65 20 72 61 70 69 64 20  6d 65 61 6e 73 20 6f 66  |e rapid means of|
00035590  20 6d 6f 76 69 6e 67 20  61 63 72 6f 73 73 20 69  | moving across i|
000355a0  74 2c 20 73 75 63 68 20  61 73 20 74 68 65 20 6d  |t, such as the m|
000355b0  61 67 69 63 0a 77 6f 72  64 73 20 69 6e 20 41 64  |agic.words in Ad|
000355c0  76 65 6e 74 75 72 65 2c  20 6f 72 20 74 68 65 20  |venture, or the |
000355d0  63 75 62 65 73 20 69 6e  20 22 53 70 65 6c 6c 62  |cubes in "Spellb|
000355e0  72 65 61 6b 65 72 22 2e  20 20 54 68 69 73 20 63  |reaker".  This c|
000355f0  61 6e 20 62 65 20 61 20  70 75 7a 7a 6c 65 0a 69  |an be a puzzle.i|
00035600  6e 20 69 74 73 65 6c 66  20 2d 20 6f 6e 65 20 74  |n itself - one t|
00035610  68 61 74 20 70 6c 61 79  65 72 73 20 64 6f 20 6e  |hat players do n|
00035620  6f 74 20 68 61 76 65 20  74 6f 20 73 6f 6c 76 65  |ot have to solve|
00035630  2c 20 62 75 74 20 77 69  6c 6c 20 72 65 77 61 72  |, but will rewar|
00035640  64 20 74 68 65 6d 0a 69  66 20 74 68 65 79 20 64  |d them.if they d|
00035650  6f 2e 0a 0a 0a 31 32 2e  20 20 4c 6f 6f 6b 69 6e  |o....12.  Lookin|
00035660  67 20 42 61 63 6b 20 61  74 20 74 68 65 20 53 68  |g Back at the Sh|
00035670  61 70 65 0a 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ape.------------|
00035680  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00035690  2d 2d 0a 0a 41 20 75 73  65 66 75 6c 20 65 78 65  |--..A useful exe|
000356a0  72 63 69 73 65 2c 20 74  6f 77 61 72 64 73 20 74  |rcise, towards t|
000356b0  68 65 20 65 6e 64 20 6f  66 20 74 68 65 20 64 65  |he end of the de|
000356c0  73 69 67 6e 20 73 74 61  67 65 2c 20 69 73 20 74  |sign stage, is t|
000356d0  6f 20 64 72 61 77 20 6f  75 74 20 61 0a 74 72 65  |o draw out a.tre|
000356e0  65 20 28 6f 72 20 6d 6f  72 65 20 61 63 63 75 72  |e (or more accur|
000356f0  61 74 65 6c 79 20 61 20  6c 61 74 74 69 63 65 29  |ately a lattice)|
00035700  20 6f 66 20 61 6c 6c 20  74 68 65 20 70 75 7a 7a  | of all the puzz|
00035710  6c 65 73 20 69 6e 20 61  20 67 61 6d 65 2e 20 20  |les in a game.  |
00035720  41 74 20 74 68 65 0a 74  6f 70 20 69 73 20 61 20  |At the.top is a |
00035730  6e 6f 64 65 20 72 65 70  72 65 73 65 6e 74 69 6e  |node representin|
00035740  67 20 74 68 65 20 73 74  61 72 74 20 6f 66 20 74  |g the start of t|
00035750  68 65 20 67 61 6d 65 2c  20 61 6e 64 20 74 68 65  |he game, and the|
00035760  6e 20 6c 6f 77 65 72 20  6e 6f 64 65 73 0a 72 65  |n lower nodes.re|
00035770  70 72 65 73 65 6e 74 20  73 6f 6c 76 65 64 20 70  |present solved p|
00035780  75 7a 7a 6c 65 73 2e 20  20 41 6e 20 61 72 72 6f  |uzzles.  An arro|
00035790  77 20 69 73 20 64 72 61  77 6e 20 62 65 74 77 65  |w is drawn betwe|
000357a0  65 6e 20 74 77 6f 20 70  75 7a 7a 6c 65 73 20 69  |en two puzzles i|
000357b0  66 20 6f 6e 65 20 68 61  73 0a 74 6f 20 62 65 20  |f one has.to be |
000357c0  73 6f 6c 76 65 64 20 62  65 66 6f 72 65 20 74 68  |solved before th|
000357d0  65 20 6f 74 68 65 72 20  63 61 6e 20 62 65 2e 20  |e other can be. |
000357e0  20 46 6f 72 20 69 6e 73  74 61 6e 63 65 2c 20 61  | For instance, a|
000357f0  20 73 69 6d 70 6c 65 20  70 6f 72 74 69 6f 6e 20  | simple portion |
00035800  6d 69 67 68 74 0a 6c 6f  6f 6b 20 6c 69 6b 65 3a  |might.look like:|
00035810  0a 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |..              |
00035820  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00035830  20 53 74 61 72 74 0a 20  20 20 20 20 20 20 20 20  | Start.         |
00035840  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00035850  20 20 20 20 20 2f 20 20  20 20 20 5c 0a 20 20 20  |     /     \.   |
00035860  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00035870  20 20 20 20 20 20 20 20  20 20 2f 20 20 20 20 20  |          /     |
00035880  20 20 5c 0a 20 20 20 20  20 20 20 20 20 20 20 20  |  \.            |
00035890  20 20 20 20 20 20 20 20  20 20 46 69 6e 64 20 6b  |          Find k|
000358a0  65 79 20 20 20 20 20 46  69 6e 64 20 63 61 72 0a  |ey     Find car.|
000358b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000358c0  20 20 20 20 20 20 20 20  20 20 20 20 20 5c 20 20  |             \  |
000358d0  20 20 20 20 20 20 7c 0a  20 20 20 20 20 20 20 20  |      |.        |
000358e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000358f0  20 20 20 20 20 20 5c 20  20 20 20 20 20 20 7c 0a  |      \       |.|
00035900  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00035910  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 53  |               S|
00035920  74 61 72 74 20 63 61 72  0a 20 20 20 20 20 20 20  |tart car.       |
00035930  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00035940  20 20 20 20 20 20 20 20  20 20 20 20 7c 0a 20 20  |            |.  |
00035950  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00035970  20 7c 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  | |.             |
00035980  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00035990  52 65 61 63 68 20 6d 6f  74 6f 72 77 61 79 0a 0a  |Reach motorway..|
000359a0  54 68 69 73 20 69 73 20  75 73 65 66 75 6c 20 62  |This is useful b|
000359b0  65 63 61 75 73 65 20 69  74 20 63 68 65 63 6b 73  |ecause it checks|
000359c0  20 74 68 61 74 20 74 68  65 20 67 61 6d 65 20 69  | that the game i|
000359d0  73 20 73 6f 6c 75 62 6c  65 20 28 66 6f 72 20 65  |s soluble (for e|
000359e0  78 61 6d 70 6c 65 2c 20  69 66 0a 74 68 65 20 69  |xample, if.the i|
000359f0  67 6e 69 74 69 6f 6e 20  6b 65 79 20 68 61 64 20  |gnition key had |
00035a00  62 65 65 6e 20 6b 65 70  74 20 69 6e 20 61 20 70  |been kept in a p|
00035a10  68 6f 6e 65 20 62 6f 78  20 6f 6e 20 74 68 65 20  |hone box on the |
00035a20  6d 6f 74 6f 72 77 61 79  2c 20 69 74 20 77 6f 75  |motorway, it wou|
00035a30  6c 64 6e 27 74 0a 68 61  76 65 20 62 65 65 6e 29  |ldn't.have been)|
00035a40  20 62 75 74 20 61 6c 73  6f 20 62 65 63 61 75 73  | but also becaus|
00035a50  65 20 69 74 20 73 68 6f  77 73 20 74 68 65 20 6f  |e it shows the o|
00035a60  76 65 72 61 6c 6c 20 73  74 72 75 63 74 75 72 65  |verall structure|
00035a70  20 6f 66 20 74 68 65 20  67 61 6d 65 2e 0a 41 73  | of the game..As|
00035a80  6b 3a 0a 0a 20 20 44 6f  20 6c 61 72 67 65 20 70  |k:..  Do large p|
00035a90  61 72 74 73 20 6f 66 20  74 68 65 20 67 61 6d 65  |arts of the game|
00035aa0  20 64 65 70 65 6e 64 20  6f 6e 20 6f 6e 65 20 64  | depend on one d|
00035ab0  69 66 66 69 63 75 6c 74  20 70 75 7a 7a 6c 65 3f  |ifficult puzzle?|
00035ac0  0a 20 20 48 6f 77 20 6d  61 6e 79 20 73 74 65 70  |.  How many step|
00035ad0  73 20 64 6f 65 73 20 61  20 74 79 70 69 63 61 6c  |s does a typical|
00035ae0  20 70 72 6f 62 6c 65 6d  20 6e 65 65 64 3f 0a 20  | problem need?. |
00035af0  20 48 6f 77 20 77 69 64  65 20 69 73 20 74 68 65  | How wide is the|
00035b00  20 67 61 6d 65 20 61 74  20 61 6e 79 20 67 69 76  | game at any giv|
00035b10  65 6e 20 74 69 6d 65 3f  0a 0a 42 6f 74 74 6c 65  |en time?..Bottle|
00035b20  6e 65 63 6b 73 20 73 68  6f 75 6c 64 20 62 65 20  |necks should be |
00035b30  61 76 6f 69 64 65 64 20  75 6e 6c 65 73 73 20 74  |avoided unless t|
00035b40  68 65 79 20 61 72 65 20  72 65 61 73 6f 6e 61 62  |hey are reasonab|
00035b50  6c 79 20 67 75 65 73 73  61 62 6c 65 3a 0a 6f 74  |ly guessable:.ot|
00035b60  68 65 72 77 69 73 65 20  6d 61 6e 79 20 70 6c 61  |herwise many pla|
00035b70  79 65 72 73 20 77 69 6c  6c 20 73 69 6d 70 6c 79  |yers will simply|
00035b80  20 67 65 74 20 6e 6f 20  66 75 72 74 68 65 72 2e  | get no further.|
00035b90  20 20 55 6e 6c 65 73 73  2c 20 6f 66 20 63 6f 75  |  Unless, of cou|
00035ba0  72 73 65 2c 0a 74 68 65  79 20 61 72 65 20 69 6e  |rse,.they are in|
00035bb0  74 65 6e 64 65 64 20 66  6f 72 20 65 78 61 63 74  |tended for exact|
00035bc0  6c 79 20 74 68 61 74 2c  20 74 6f 20 64 69 76 69  |ly that, to divi|
00035bd0  64 65 20 61 6e 20 61 72  65 61 20 6f 66 20 74 68  |de an area of th|
00035be0  65 20 67 61 6d 65 20 69  6e 74 6f 0a 65 61 72 6c  |e game into.earl|
00035bf0  69 65 72 20 61 6e 64 20  6c 61 74 65 72 2e 0a 0a  |ier and later...|
00035c00  4a 75 73 74 20 61 73 20  73 6f 6d 65 20 70 75 7a  |Just as some puz|
00035c10  7a 6c 65 73 20 73 68 6f  75 6c 64 20 68 61 76 65  |zles should have|
00035c20  20 6d 6f 72 65 20 74 68  61 6e 20 6f 6e 65 20 73  | more than one s|
00035c30  6f 6c 75 74 69 6f 6e 2c  20 73 6f 6d 65 20 6f 62  |olution, some ob|
00035c40  6a 65 63 74 73 20 73 68  6f 75 6c 64 0a 68 61 76  |jects should.hav|
00035c50  65 20 6d 6f 72 65 20 74  68 61 6e 20 6f 6e 65 20  |e more than one |
00035c60  70 75 72 70 6f 73 65 2e  20 20 49 6e 20 62 61 64  |purpose.  In bad|
00035c70  20 6f 6c 64 20 67 61 6d  65 73 2c 20 70 6c 61 79  | old games, play|
00035c80  65 72 73 20 61 75 74 6f  6d 61 74 69 63 61 6c 6c  |ers automaticall|
00035c90  79 20 74 68 72 65 77 0a  61 77 61 79 20 65 76 65  |y threw.away eve|
00035ca0  72 79 74 68 69 6e 67 20  61 73 20 73 6f 6f 6e 20  |rything as soon |
00035cb0  61 73 20 74 68 65 79 27  64 20 75 73 65 64 20 74  |as they'd used t|
00035cc0  68 65 6d 2e 20 20 49 6e  20 62 65 74 74 65 72 20  |hem.  In better |
00035cd0  64 65 73 69 67 6e 65 64  20 67 61 6d 65 73 2c 0a  |designed games,.|
00035ce0  6f 62 76 69 6f 75 73 6c  79 20 75 73 65 66 75 6c  |obviously useful|
00035cf0  20 74 68 69 6e 67 73 20  28 6c 69 6b 65 20 74 68  | things (like th|
00035d00  65 20 63 72 6f 77 62 61  72 20 61 6e 64 20 74 68  |e crowbar and th|
00035d10  65 20 67 6c 6f 76 65 73  20 69 6e 20 22 4c 75 72  |e gloves in "Lur|
00035d20  6b 69 6e 67 0a 48 6f 72  72 6f 72 22 29 20 73 68  |king.Horror") sh|
00035d30  6f 75 6c 64 20 62 65 20  68 75 6e 67 20 6f 6e 20  |ould be hung on |
00035d40  74 6f 20 62 79 20 74 68  65 20 70 6c 61 79 65 72  |to by the player|
00035d50  20 74 68 72 6f 75 67 68  6f 75 74 2e 0a 0a 41 20  | throughout...A |
00035d60  66 69 6e 61 6c 20 77 6f  72 64 20 6f 6e 20 73 68  |final word on sh|
00035d70  61 70 65 3a 20 6f 6e 65  20 6f 66 20 74 68 65 20  |ape: one of the |
00035d80  6d 6f 73 74 20 61 6e 6e  6f 79 69 6e 67 20 74 68  |most annoying th|
00035d90  69 6e 67 73 20 66 6f 72  20 70 6c 61 79 65 72 73  |ings for players|
00035da0  20 69 73 20 74 6f 20 0a  66 69 6e 64 2c 20 61 74  | is to .find, at|
00035db0  20 74 68 65 20 65 78 74  72 65 6d 65 20 65 6e 64  | the extreme end|
00035dc0  20 6f 66 20 74 68 65 20  67 61 6d 65 20 28 69 6e  | of the game (in|
00035dd0  20 74 68 65 20 6d 61 73  74 65 72 20 67 61 6d 65  | the master game|
00035de0  2c 20 70 65 72 68 61 70  73 29 20 74 68 61 74 0a  |, perhaps) that.|
00035df0  61 20 66 65 77 20 6f 74  68 65 72 77 69 73 65 20  |a few otherwise |
00035e00  75 73 65 6c 65 73 73 20  6f 62 6a 65 63 74 73 20  |useless objects |
00035e10  6f 75 67 68 74 20 74 6f  20 68 61 76 65 20 62 65  |ought to have be|
00035e20  65 6e 20 62 72 6f 75 67  68 74 20 61 6c 6f 6e 67  |en brought along|
00035e30  2c 20 62 75 74 20 74 68  61 74 0a 69 74 20 69 73  |, but that.it is|
00035e40  20 6e 6f 77 20 74 6f 6f  20 6c 61 74 65 2e 20 20  | now too late.  |
00035e50  54 68 65 20 70 6c 61 79  65 72 20 73 68 6f 75 6c  |The player shoul|
00035e60  64 20 6e 6f 74 20 62 65  20 74 68 69 6e 6b 69 6e  |d not be thinkin|
00035e70  67 20 74 68 61 74 20 74  68 65 20 72 65 61 73 6f  |g that the reaso|
00035e80  6e 20 66 6f 72 0a 62 65  69 6e 67 20 73 74 75 63  |n for.being stuc|
00035e90  6b 20 6f 6e 20 74 68 65  20 6d 61 73 74 65 72 20  |k on the master |
00035ea0  67 61 6d 65 20 69 73 20  74 68 61 74 20 73 6f 6d  |game is that som|
00035eb0  65 74 68 69 6e 67 20 76  65 72 79 20 6f 62 73 63  |ething very obsc|
00035ec0  75 72 65 20 73 68 6f 75  6c 64 20 68 61 76 65 0a  |ure should have.|
00035ed0  62 65 65 6e 20 64 6f 6e  65 20 35 30 30 20 74 75  |been done 500 tu|
00035ee0  72 6e 73 20 62 65 66 6f  72 65 2e 0a 0a 0a 2d 2d  |rns before....--|
00035ef0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00035f30  2d 2d 2d 2d 2d 2d 2d 2d  2d 0a 42 34 2e 20 20 56  |---------.B4.  V|
00035f40  61 72 6e 69 73 68 20 61  6e 64 20 76 65 6e 65 65  |arnish and venee|
00035f50  72 0a 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |r.--------------|
00035f60  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00035f90  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0a 0a 0a  |-------------...|
00035fa0  53 6f 20 79 6f 75 20 68  61 76 65 20 61 20 67 61  |So you have a ga|
00035fb0  6d 65 3a 20 74 68 65 20  77 6f 6f 64 20 69 73 20  |me: the wood is |
00035fc0  72 6f 75 67 68 20 61 6e  64 20 73 70 6c 69 6e 74  |rough and splint|
00035fd0  65 72 65 64 2c 20 62 75  74 20 69 74 27 73 20 72  |ered, but it's r|
00035fe0  65 63 6f 67 6e 69 73 61  62 6c 79 0a 61 20 67 61  |ecognisably.a ga|
00035ff0  6d 65 2e 20 20 54 68 65  72 65 27 73 20 73 74 69  |me.  There's sti|
00036000  6c 6c 20 61 20 67 6f 6f  64 20 6d 6f 6e 74 68 27  |ll a good month'|
00036010  73 20 77 6f 72 6b 20 74  6f 20 64 6f 2c 20 74 68  |s work to do, th|
00036020  6f 75 67 68 20 69 74 20  69 73 20 65 61 73 69 65  |ough it is easie|
00036030  72 20 77 6f 72 6b 0a 74  68 61 6e 20 62 65 66 6f  |r work.than befo|
00036040  72 65 20 61 6e 64 20 66  65 65 6c 73 20 6d 6f 72  |re and feels mor|
00036050  65 20 72 65 77 61 72 64  69 6e 67 2e 0a 0a 31 2e  |e rewarding...1.|
00036060  20 20 53 63 6f 72 69 6e  67 0a 2d 2d 2d 2d 2d 2d  |  Scoring.------|
00036070  2d 2d 2d 2d 2d 0a 0a 54  68 65 20 74 72 61 64 69  |-----..The tradi|
00036080  74 69 6f 6e 61 6c 20 77  61 79 20 74 6f 20 73 63  |tional way to sc|
00036090  6f 72 65 20 61 6e 20 61  64 76 65 6e 74 75 72 65  |ore an adventure|
000360a0  20 67 61 6d 65 20 69 73  20 74 6f 20 67 69 76 65  | game is to give|
000360b0  20 61 20 70 6f 69 6e 74  73 20 73 63 6f 72 65 20  | a points score |
000360c0  6f 75 74 0a 6f 66 20 73  6f 6d 65 20 6c 61 72 67  |out.of some larg|
000360d0  65 20 61 6e 64 20 70 6c  65 61 73 69 6e 67 20 6e  |e and pleasing n|
000360e0  75 6d 62 65 72 20 28 73  61 79 2c 20 34 30 30 29  |umber (say, 400)|
000360f0  20 61 6e 64 20 61 20 72  61 6e 6b 2e 20 20 54 68  | and a rank.  Th|
00036100  65 72 65 20 61 72 65 20  75 73 75 61 6c 6c 79 0a  |ere are usually.|
00036110  74 65 6e 20 74 6f 20 66  69 66 74 65 65 6e 20 72  |ten to fifteen r|
00036120  61 6e 6b 73 2e 20 20 41  20 67 65 6e 75 69 6e 65  |anks.  A genuine|
00036130  20 65 78 61 6d 70 6c 65  20 28 77 68 69 63 68 20  | example (which |
00036140  73 68 61 6c 6c 20 72 65  6d 61 69 6e 20 6e 61 6d  |shall remain nam|
00036150  65 6c 65 73 73 29 3a 0a  0a 20 20 42 65 67 69 6e  |eless):..  Begin|
00036160  6e 65 72 20 28 30 29 2c  20 41 6d 61 74 65 75 72  |ner (0), Amateur|
00036170  20 41 64 76 65 6e 74 75  72 65 72 20 28 34 30 29  | Adventurer (40)|
00036180  2c 20 4e 6f 76 69 63 65  20 41 64 76 65 6e 74 75  |, Novice Adventu|
00036190  72 65 72 20 28 38 30 29  2c 20 4a 75 6e 69 6f 72  |rer (80), Junior|
000361a0  0a 20 20 41 64 76 65 6e  74 75 72 65 72 20 28 31  |.  Adventurer (1|
000361b0  36 30 29 2c 20 41 64 76  65 6e 74 75 72 65 72 20  |60), Adventurer |
000361c0  28 32 34 30 29 2c 20 4d  61 73 74 65 72 20 28 33  |(240), Master (3|
000361d0  32 30 29 2c 20 57 69 7a  61 72 64 20 28 33 36 30  |20), Wizard (360|
000361e0  29 2c 0a 20 20 4d 61 73  74 65 72 20 41 64 76 65  |),.  Master Adve|
000361f0  6e 74 75 72 65 72 20 28  34 30 30 29 0a 0a 69 6e  |nturer (400)..in|
00036200  20 77 68 69 63 68 2c 20  61 6c 74 68 6f 75 67 68  | which, although|
00036210  20 72 61 6e 6b 73 20 63  6f 72 72 65 73 70 6f 6e  | ranks correspon|
00036220  64 20 74 6f 20 72 6f 75  6e 64 20 6e 75 6d 62 65  |d to round numbe|
00036230  72 73 2c 20 73 74 69 6c  6c 20 74 68 65 79 20 68  |rs, still they h|
00036240  61 76 65 0a 70 65 72 68  61 70 73 20 62 65 65 6e  |ave.perhaps been|
00036250  20 72 69 67 67 65 64 20  74 6f 20 66 69 74 20 74  | rigged to fit t|
00036260  68 65 20 67 61 6d 65 2e  20 20 41 6e 6f 74 68 65  |he game.  Anothe|
00036270  72 20 61 6d 75 73 69 6e  67 20 74 6f 75 63 68 20  |r amusing touch |
00036280  69 73 20 74 68 61 74 20  72 61 6e 6b 73 0a 74 65  |is that ranks.te|
00036290  6e 64 20 74 6f 20 62 65  20 6e 61 6d 65 64 20 66  |nd to be named f|
000362a0  6f 72 20 74 68 65 20 70  6c 61 79 65 72 27 73 20  |or the player's |
000362b0  70 72 6f 66 65 73 73 69  6f 6e 20 69 6e 20 74 68  |profession in th|
000362c0  65 20 67 61 6d 65 20 2d  20 73 6f 2c 20 61 20 6d  |e game - so, a m|
000362d0  75 73 69 63 69 61 6e 0a  6d 69 67 68 74 20 62 65  |usician.might be|
000362e0  67 69 6e 20 61 73 20 22  4e 6f 76 69 63 65 22 20  |gin as "Novice" |
000362f0  61 6e 64 20 72 69 73 65  20 74 68 72 6f 75 67 68  |and rise through|
00036300  20 22 53 65 63 6f 6e 64  20 56 69 6f 6c 69 6e 69  | "Second Violini|
00036310  73 74 22 20 74 6f 20 22  43 6f 6e 64 75 63 74 6f  |st" to "Conducto|
00036320  72 22 2e 0a 4f 6e 65 20  6f 66 20 74 68 65 20 77  |r"..One of the w|
00036330  69 74 74 69 65 73 74 20  69 73 20 69 6e 20 74 68  |ittiest is in th|
00036340  65 20 64 65 74 65 63 74  69 76 65 20 67 61 6d 65  |e detective game|
00036350  20 22 53 68 65 72 6c 6f  63 6b 22 2c 20 77 68 65  | "Sherlock", whe|
00036360  72 65 20 74 68 65 20 6c  6f 77 65 73 74 0a 72 61  |re the lowest.ra|
00036370  6e 6b 20 2d 20 74 68 65  20 7a 65 72 6f 2d 61 63  |nk - the zero-ac|
00036380  68 69 65 76 65 6d 65 6e  74 20 72 61 6e 6b 20 2d  |hievement rank -|
00036390  20 69 73 20 22 43 68 69  65 66 20 53 75 70 65 72  | is "Chief Super|
000363a0  69 6e 74 65 6e 64 65 6e  74 20 6f 66 20 53 63 6f  |intendent of Sco|
000363b0  74 6c 61 6e 64 0a 59 61  72 64 22 2e 0a 0a 41 6d  |tland.Yard"...Am|
000363c0  6f 6e 67 20 74 68 65 20  71 75 65 73 74 69 6f 6e  |ong the question|
000363d0  73 20 74 6f 20 61 73 6b  20 61 72 65 3a 20 77 69  |s to ask are: wi|
000363e0  6c 6c 20 65 76 65 72 79  20 77 69 6e 6e 65 72 20  |ll every winner |
000363f0  6f 66 20 74 68 65 20 67  61 6d 65 20 6e 65 63 65  |of the game nece|
00036400  73 73 61 72 69 6c 79 0a  73 63 6f 72 65 20 65 78  |ssarily.score ex|
00036410  61 63 74 6c 79 20 34 30  30 20 6f 75 74 20 6f 66  |actly 400 out of|
00036420  20 34 30 30 3f 20 20 28  54 68 69 73 20 69 73 20  | 400?  (This is |
00036430  76 65 72 79 20 64 69 66  66 69 63 75 6c 74 20 74  |very difficult t|
00036440  6f 20 61 72 72 61 6e 67  65 20 69 66 20 65 76 65  |o arrange if eve|
00036450  6e 0a 73 6d 61 6c 6c 20  61 63 74 73 20 61 72 65  |n.small acts are|
00036460  20 73 63 6f 72 65 64 2e  29 20 20 57 69 6c 6c 20  | scored.)  Will |
00036470  65 76 65 72 79 6f 6e 65  20 65 6e 74 65 72 69 6e  |everyone enterin|
00036480  67 20 74 68 65 20 65 6e  64 20 67 61 6d 65 20 61  |g the end game a|
00036490  6c 72 65 61 64 79 20 68  61 76 65 20 61 0a 73 63  |lready have a.sc|
000364a0  6f 72 65 20 6f 66 20 33  36 30 2c 20 61 6e 64 20  |ore of 360, and |
000364b0  73 6f 20 68 61 76 65 20  65 61 72 6e 65 64 20 74  |so have earned t|
000364c0  68 65 20 74 69 74 6c 65  20 22 57 69 7a 61 72 64  |he title "Wizard|
000364d0  22 3f 20 20 57 69 6c 6c  20 74 68 65 20 72 61 6e  |"?  Will the ran|
000364e0  6b 0a 22 41 6d 61 74 65  75 72 22 20 63 6f 72 72  |k."Amateur" corr|
000364f0  65 73 70 6f 6e 64 20 65  78 61 63 74 6c 79 20 74  |espond exactly t|
00036500  6f 20 68 61 76 69 6e 67  20 67 6f 74 20 6f 75 74  |o having got out|
00036510  20 6f 66 20 74 68 65 20  70 72 6f 6c 6f 67 75 65  | of the prologue|
00036520  20 61 6e 64 20 69 6e 74  6f 20 74 68 65 0a 6d 69  | and into the.mi|
00036530  64 64 6c 65 20 67 61 6d  65 3f 0a 0a 53 6f 20 77  |ddle game?..So w|
00036540  68 61 74 20 64 65 73 65  72 76 65 73 20 70 6f 69  |hat deserves poi|
00036550  6e 74 73 3f 20 20 43 6c  65 61 72 6c 79 20 73 6f  |nts?  Clearly so|
00036560  6c 76 69 6e 67 20 74 68  65 20 6d 61 6a 6f 72 20  |lving the major |
00036570  70 75 7a 7a 6c 65 73 20  64 6f 65 73 2e 20 20 42  |puzzles does.  B|
00036580  75 74 20 64 6f 20 0a 74  68 65 20 6d 69 6e 6f 72  |ut do .the minor|
00036590  2c 20 6f 6e 6c 79 20 68  61 6c 66 77 61 79 2d 74  |, only halfway-t|
000365a0  68 65 72 65 2d 79 65 74  20 70 75 7a 7a 6c 65 73  |here-yet puzzles|
000365b0  3f 20 20 48 65 72 65 2c  20 61 73 20 65 76 65 72  |?  Here, as ever|
000365c0  2c 20 67 61 6d 65 73 20  76 61 72 79 0a 67 72 65  |, games vary.gre|
000365d0  61 74 6c 79 2e 20 20 49  6e 20 22 5a 6f 72 6b 20  |atly.  In "Zork |
000365e0  49 49 49 22 2c 20 74 68  65 20 73 63 6f 72 69 6e  |III", the scorin|
000365f0  67 20 69 73 20 6f 75 74  20 6f 66 20 37 20 61 6e  |g is out of 7 an|
00036600  64 20 63 6f 72 72 65 73  70 6f 6e 64 73 20 74 6f  |d corresponds to|
00036610  20 73 65 76 65 6e 0a 76  69 74 61 6c 20 70 75 7a  | seven.vital puz|
00036620  7a 6c 65 73 20 28 74 68  6f 75 67 68 20 61 20 73  |zles (though a s|
00036630  63 6f 72 65 20 6f 66 20  37 20 64 6f 65 73 20 6e  |core of 7 does n|
00036640  6f 74 20 6d 65 61 6e 20  74 68 65 20 67 61 6d 65  |ot mean the game|
00036650  20 69 73 20 6f 76 65 72  29 2e 20 20 49 6e 20 22  | is over).  In "|
00036660  54 68 65 0a 4c 75 72 6b  69 6e 67 20 48 6f 72 72  |The.Lurking Horr|
00036670  6f 72 22 2c 20 32 30 20  6d 61 6a 6f 72 20 70 75  |or", 20 major pu|
00036680  7a 7a 6c 65 73 20 61 72  65 20 61 77 61 72 64 65  |zzles are awarde|
00036690  64 20 35 20 70 6f 69 6e  74 73 20 65 61 63 68 2c  |d 5 points each,|
000366a0  20 6d 61 6b 69 6e 67 20  61 0a 6d 61 78 69 6d 75  | making a.maximu|
000366b0  6d 20 6f 66 20 31 30 30  2e 0a 0a 41 6c 74 65 72  |m of 100...Alter|
000366c0  6e 61 74 69 76 65 6c 79  2c 20 74 68 65 72 65 20  |natively, there |
000366d0  69 73 20 74 68 65 20 63  6f 6d 70 6c 69 63 61 74  |is the complicat|
000366e0  65 64 20 61 70 70 72 6f  61 63 68 2c 20 74 79 70  |ed approach, typ|
000366f0  69 66 69 65 64 20 62 79  20 74 68 65 20 6f 72 69  |ified by the ori|
00036700  67 69 6e 61 6c 0a 41 64  76 65 6e 74 75 72 65 2e  |ginal.Adventure.|
00036710  20 20 50 6f 69 6e 74 73  20 61 72 65 20 61 77 61  |  Points are awa|
00036720  72 64 65 64 20 69 6e 20  74 77 6f 73 20 61 6e 64  |rded in twos and|
00036730  20 74 68 72 65 65 73 20  66 6f 72 20 73 6d 61 6c  | threes for smal|
00036740  6c 20 61 63 74 73 2c 20  61 6e 64 20 74 68 65 6e  |l acts, and then|
00036750  0a 69 6e 20 6c 61 72 67  65 72 20 64 6f 73 65 73  |.in larger doses|
00036760  20 66 6f 72 20 74 72 65  61 73 75 72 65 73 20 2d  | for treasures -|
00036770  20 73 69 6c 76 65 72 20  62 61 72 73 20 35 2c 20  | silver bars 5, |
00036780  67 6f 6c 64 20 61 6d 75  6c 65 74 73 20 31 30 2c  |gold amulets 10,|
00036790  20 70 6c 61 74 69 6e 75  6d 0a 70 65 6e 64 61 6e  | platinum.pendan|
000367a0  74 73 20 32 30 2e 20 20  54 72 65 61 73 75 72 65  |ts 20.  Treasure|
000367b0  73 20 61 72 65 20 73 63  6f 72 65 64 20 74 77 69  |s are scored twi|
000367c0  63 65 2c 20 6f 6e 63 65  20 77 68 65 6e 20 66 6f  |ce, once when fo|
000367d0  75 6e 64 2c 20 6f 6e 63  65 20 77 68 65 6e 20 72  |und, once when r|
000367e0  65 6d 6f 76 65 64 0a 74  6f 20 73 61 66 65 74 79  |emoved.to safety|
000367f0  20 2d 20 74 6f 20 74 68  65 20 74 72 6f 70 68 79  | - to the trophy|
00036800  20 63 61 73 65 20 69 6e  20 22 5a 6f 72 6b 20 49  | case in "Zork I|
00036810  22 2c 20 6f 72 20 69 6e  73 69 64 65 20 74 68 65  |", or inside the|
00036820  20 70 61 63 6b 69 6e 67  20 63 61 73 65 20 6f 66  | packing case of|
00036830  0a 4c 65 76 65 6c 20 39  27 73 20 67 61 6d 65 20  |.Level 9's game |
00036840  22 44 75 6e 67 65 6f 6e  22 2e 20 20 46 75 72 74  |"Dungeon".  Furt|
00036850  68 65 72 6d 6f 72 65 2c  20 31 20 70 6f 69 6e 74  |hermore, 1 point|
00036860  20 69 73 20 61 77 61 72  64 65 64 20 66 6f 72 20  | is awarded for |
00036870  65 61 63 68 20 72 6f 6f  6d 0a 76 69 73 69 74 65  |each room.visite|
00036880  64 20 66 6f 72 20 74 68  65 20 66 69 72 73 74 20  |d for the first |
00036890  74 69 6d 65 2c 20 61 6e  64 20 31 20 66 6f 72 20  |time, and 1 for |
000368a0  6e 65 76 65 72 20 68 61  76 69 6e 67 20 73 61 76  |never having sav|
000368b0  65 64 20 74 68 65 20 67  61 6d 65 20 2d 20 61 0a  |ed the game - a.|
000368c0  70 61 72 74 69 63 75 6c  61 72 6c 79 20 65 76 69  |particularly evi|
000368d0  6c 20 74 72 69 63 6b 2e  0a 0a 49 6e 20 73 6f 6d  |l trick...In som|
000368e0  65 20 67 61 6d 65 73 20  28 73 75 63 68 20 61 73  |e games (such as|
000368f0  20 74 68 65 20 65 61 72  6c 69 65 73 74 20 42 72  | the earliest Br|
00036900  69 74 69 73 68 20 67 61  6d 65 20 6f 66 20 72 65  |itish game of re|
00036910  61 6c 20 71 75 61 6c 69  74 79 2c 20 22 41 63 68  |al quality, "Ach|
00036920  65 74 6f 6e 22 2c 0a 77  72 69 74 74 65 6e 20 61  |eton",.written a|
00036930  74 20 43 61 6d 62 72 69  64 67 65 20 55 6e 69 76  |t Cambridge Univ|
00036940  65 72 73 69 74 79 20 69  6e 20 31 39 37 39 2d 38  |ersity in 1979-8|
00036950  30 20 61 6e 64 20 6c 61  74 65 72 20 69 6d 70 6c  |0 and later impl|
00036960  65 6d 65 6e 74 65 64 20  6f 6e 20 41 63 6f 72 6e  |emented on Acorn|
00036970  0a 6d 69 63 72 6f 63 6f  6d 70 75 74 65 72 73 29  |.microcomputers)|
00036980  20 73 63 6f 72 65 20 61  63 74 75 61 6c 6c 79 20  | score actually |
00036990  66 61 6c 6c 73 20 62 61  63 6b 20 77 68 65 6e 20  |falls back when |
000369a0  74 68 65 20 70 6c 61 79  65 72 20 69 73 20 77 61  |the player is wa|
000369b0  73 74 69 6e 67 20 74 69  6d 65 0a 61 6e 64 20 6e  |sting time.and n|
000369c0  6f 74 68 69 6e 67 20 69  73 20 62 65 69 6e 67 20  |othing is being |
000369d0  61 63 68 69 65 76 65 64  3a 20 74 68 65 20 70 6c  |achieved: the pl|
000369e0  61 79 65 72 27 73 20 6d  61 6e 61 20 67 72 61 64  |ayer's mana grad|
000369f0  75 61 6c 6c 79 20 66 61  64 65 73 2e 20 20 54 68  |ually fades.  Th|
00036a00  69 73 0a 61 6e 6e 6f 79  73 20 73 6f 6d 65 20 70  |is.annoys some p|
00036a10  6c 61 79 65 72 73 20 69  6e 74 65 6e 73 65 6c 79  |layers intensely|
00036a20  20 28 6e 6f 20 62 61 64  20 74 68 69 6e 67 29 2e  | (no bad thing).|
00036a30  0a 0a 47 61 6d 65 73 20  75 73 65 64 20 74 6f 20  |..Games used to |
00036a40  68 61 76 65 20 61 20 22  4c 61 73 74 20 4c 6f 75  |have a "Last Lou|
00036a50  73 79 20 50 6f 69 6e 74  22 20 62 79 20 63 75 73  |sy Point" by cus|
00036a60  74 6f 6d 20 2d 20 61 20  73 69 6e 67 6c 65 20 70  |tom - a single p|
00036a70  6f 69 6e 74 20 77 68 69  63 68 0a 63 6f 75 6c 64  |oint which.could|
00036a80  20 6f 6e 6c 79 20 62 65  20 77 6f 6e 20 62 79 20  | only be won by |
00036a90  64 6f 69 6e 67 20 73 6f  6d 65 74 68 69 6e 67 20  |doing something |
00036aa0  68 75 67 65 6c 79 20 75  6e 6c 69 6b 65 6c 79 2c  |hugely unlikely,|
00036ab0  20 73 75 63 68 20 61 73  20 67 6f 69 6e 67 20 74  | such as going t|
00036ac0  6f 20 61 0a 70 61 72 74  69 63 75 6c 61 72 20 61  |o a.particular a|
00036ad0  72 65 61 20 6f 66 20 74  68 65 20 50 69 72 61 74  |rea of the Pirat|
00036ae0  65 27 73 20 4d 61 7a 65  20 61 6e 64 20 64 72 6f  |e's Maze and dro|
00036af0  70 70 69 6e 67 20 61 20  6b 65 79 2e 20 20 54 68  |pping a key.  Th|
00036b00  69 73 20 63 75 73 74 6f  6d 2c 0a 68 61 70 70 69  |is custom,.happi|
00036b10  6c 79 2c 20 68 61 73 20  66 61 6c 6c 65 6e 20 69  |ly, has fallen i|
00036b20  6e 74 6f 20 64 69 73 75  73 65 2e 0a 0a 0a 32 2e  |nto disuse....2.|
00036b30  20 20 57 72 6f 6e 67 20  47 75 65 73 73 65 73 0a  |  Wrong Guesses.|
00036b40  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00036b50  2d 0a 0a 46 6f 72 20 73  6f 6d 65 20 70 75 7a 7a  |-..For some puzz|
00036b60  6c 65 73 2c 20 61 20 70  65 72 66 65 63 74 6c 79  |les, a perfectly|
00036b70  20 67 6f 6f 64 20 61 6c  74 65 72 6e 61 74 69 76  | good alternativ|
00036b80  65 20 73 6f 6c 75 74 69  6f 6e 20 77 69 6c 6c 20  |e solution will |
00036b90  6f 63 63 75 72 20 74 6f  0a 70 6c 61 79 65 72 73  |occur to.players|
00036ba0  2e 20 20 49 74 27 73 20  67 6f 6f 64 20 73 74 79  |.  It's good sty|
00036bb0  6c 65 20 74 6f 20 63 6f  64 65 20 74 77 6f 20 6f  |le to code two o|
00036bc0  72 20 6d 6f 72 65 20 73  6f 6c 75 74 69 6f 6e 73  |r more solutions|
00036bd0  20 74 6f 20 74 68 65 20  73 61 6d 65 20 70 75 7a  | to the same puz|
00036be0  7a 6c 65 2c 0a 69 66 20  74 68 61 74 20 64 6f 65  |zle,.if that doe|
00036bf0  73 6e 27 74 20 75 70 73  65 74 20 74 68 65 20 72  |sn't upset the r|
00036c00  65 73 74 20 6f 66 20 74  68 65 20 67 61 6d 65 2e  |est of the game.|
00036c10  20 20 42 75 74 20 65 76  65 6e 20 69 66 20 69 74  |  But even if it|
00036c20  20 64 6f 65 73 2c 20 61  74 20 6c 65 61 73 74 0a  | does, at least.|
00036c30  61 20 67 61 6d 65 20 73  68 6f 75 6c 64 20 73 61  |a game should sa|
00036c40  79 20 73 6f 6d 65 74 68  69 6e 67 20 77 68 65 6e  |y something when|
00036c50  20 61 20 67 6f 6f 64 20  67 75 65 73 73 20 69 73  | a good guess is|
00036c60  20 6d 61 64 65 2e 20 20  28 54 72 79 69 6e 67 20  | made.  (Trying |
00036c70  74 6f 20 63 72 6f 73 73  20 74 68 65 0a 76 6f 6c  |to cross the.vol|
00036c80  63 61 6e 6f 20 6f 6e 20  74 68 65 20 6d 61 67 69  |cano on the magi|
00036c90  63 20 63 61 72 70 65 74  20 69 6e 20 22 53 70 65  |c carpet in "Spe|
00036ca0  6c 6c 62 72 65 61 6b 65  72 22 20 69 73 20 61 20  |llbreaker" is a |
00036cb0  63 61 73 65 20 69 6e 20  70 6f 69 6e 74 2e 29 0a  |case in point.).|
00036cc0  0a 46 6f 72 20 65 78 61  6d 70 6c 65 2c 20 69 6e  |.For example, in|
00036cd0  20 22 43 75 72 73 65 73  22 20 74 68 65 72 65 20  | "Curses" there |
00036ce0  61 72 65 20 28 61 74 20  74 69 6d 65 20 6f 66 20  |are (at time of |
00036cf0  77 72 69 74 69 6e 67 29  20 66 6f 75 72 20 64 69  |writing) four di|
00036d00  66 66 65 72 65 6e 74 20  77 61 79 73 0a 74 6f 20  |fferent ways.to |
00036d10  6f 70 65 6e 20 74 68 65  20 63 68 69 6c 64 2d 70  |open the child-p|
00036d20  72 6f 6f 66 20 6d 65 64  69 63 69 6e 65 20 62 6f  |roof medicine bo|
00036d30  74 74 6c 65 2e 20 20 54  68 65 79 20 61 72 65 20  |ttle.  They are |
00036d40  61 6c 6c 20 71 75 69 74  65 20 68 61 72 64 20 74  |all quite hard t|
00036d50  6f 20 67 75 65 73 73 2c  0a 74 68 65 79 20 61 72  |o guess,.they ar|
00036d60  65 20 61 6c 6c 20 6c 6f  67 69 63 61 6c 6c 79 20  |e all logically |
00036d70  72 65 61 73 6f 6e 61 62  6c 65 20 61 6e 64 20 6d  |reasonable and m|
00036d80  6f 73 74 20 70 6c 61 79  65 72 73 20 67 65 74 20  |ost players get |
00036d90  6f 6e 65 20 6f 66 20 74  68 65 6d 2e 0a 0a 0a 4f  |one of them....O|
00036da0  6e 65 20 72 65 61 73 6f  6e 20 77 68 79 20 22 5a  |ne reason why "Z|
00036db0  6f 72 6b 22 20 68 65 6c  64 20 74 68 65 20 70 6c  |ork" held the pl|
00036dc0  61 79 65 72 27 73 20 61  74 74 65 6e 74 69 6f 6e  |ayer's attention|
00036dd0  20 73 6f 20 66 69 72 6d  6c 79 20 28 61 6e 64 20  | so firmly (and |
00036de0  77 68 79 20 69 74 20 74  6f 6f 6b 0a 61 62 6f 75  |why it took.abou|
00036df0  74 20 74 65 6e 20 74 69  6d 65 73 20 74 68 65 20  |t ten times the |
00036e00  63 6f 64 65 20 73 69 7a  65 2c 20 64 65 73 70 69  |code size, despi|
00036e10  74 65 20 62 65 69 6e 67  20 72 61 74 68 65 72 20  |te being rather |
00036e20  73 6d 61 6c 6c 65 72 20  74 68 61 6e 20 74 68 65  |smaller than the|
00036e30  0a 6f 72 69 67 69 6e 61  6c 20 6d 61 69 6e 66 72  |.original mainfr|
00036e40  61 6d 65 20 41 64 76 65  6e 74 75 72 65 29 20 77  |ame Adventure) w|
00036e50  61 73 20 74 68 61 74 20  69 74 20 68 61 64 20 61  |as that it had a|
00036e60  20 68 75 67 65 20 73 74  6f 63 6b 20 6f 66 20 75  | huge stock of u|
00036e70  73 75 61 6c 6c 79 20 66  75 6e 6e 79 0a 72 65 73  |sually funny.res|
00036e80  70 6f 6e 73 65 73 20 74  6f 20 72 65 61 73 6f 6e  |ponses to reason|
00036e90  61 62 6c 65 20 74 68 69  6e 67 73 20 77 68 69 63  |able things whic|
00036ea0  68 20 6d 69 67 68 74 20  62 65 20 74 72 69 65 64  |h might be tried|
00036eb0  2e 0a 0a 4d 79 20 66 61  76 6f 75 72 69 74 65 20  |...My favourite |
00036ec0  66 75 6e 6e 79 20 72 65  73 70 6f 6e 73 65 2c 20  |funny response, |
00036ed0  77 68 69 63 68 20 49 20  63 61 6e 27 74 20 72 65  |which I can't re|
00036ee0  73 69 73 74 20 72 65 70  72 69 6e 74 69 6e 67 20  |sist reprinting |
00036ef0  68 65 72 65 2c 20 69 73  3a 0a 0a 20 20 20 59 6f  |here, is:..   Yo|
00036f00  75 20 61 72 65 20 66 61  6c 6c 69 6e 67 20 74 6f  |u are falling to|
00036f10  77 61 72 64 73 20 74 68  65 20 67 72 6f 75 6e 64  |wards the ground|
00036f20  2c 20 77 69 6e 64 20 77  68 69 70 70 69 6e 67 20  |, wind whipping |
00036f30  61 72 6f 75 6e 64 20 79  6f 75 2e 0a 20 20 20 3e  |around you..   >|
00036f40  65 61 73 74 0a 20 20 20  44 6f 77 6e 20 73 65 65  |east.   Down see|
00036f50  6d 73 20 6d 6f 72 65 20  6c 69 6b 65 6c 79 2e 20  |ms more likely. |
00036f60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00036f80  20 5b 22 53 70 65 6c 6c  62 72 65 61 6b 65 72 22  | ["Spellbreaker"|
00036f90  5d 0a 0a 28 54 68 6f 75  67 68 20 49 20 61 6c 73  |]..(Though I als|
00036fa0  6f 20 72 65 63 6f 6d 6d  65 6e 64 20 74 72 79 69  |o recommend tryi|
00036fb0  6e 67 20 74 6f 20 74 61  6b 65 20 74 68 65 20 73  |ng to take the s|
00036fc0  65 61 20 73 65 72 70 65  6e 74 20 69 6e 20 22 5a  |ea serpent in "Z|
00036fd0  6f 72 6b 20 49 49 22 2e  29 20 20 54 68 69 73 0a  |ork II".)  This.|
00036fe0  69 73 20 61 20 67 6f 6f  64 20 65 78 61 6d 70 6c  |is a good exampl|
00036ff0  65 20 62 65 63 61 75 73  65 20 69 74 27 73 20 65  |e because it's e|
00037000  78 61 63 74 6c 79 20 74  68 65 20 73 6f 72 74 20  |xactly the sort |
00037010  6f 66 20 62 6f 72 69 6e  67 20 72 75 6c 65 20 28  |of boring rule (|
00037020  63 61 6e 27 74 20 6d 6f  76 65 0a 66 72 6f 6d 20  |can't move.from |
00037030  74 68 65 20 6d 69 64 61  69 72 20 70 6f 73 69 74  |the midair posit|
00037040  69 6f 6e 29 20 77 68 69  63 68 20 6d 6f 73 74 20  |ion) which most |
00037050  64 65 73 69 67 6e 65 72  73 20 75 73 75 61 6c 6c  |designers usuall|
00037060  79 20 77 61 6e 74 20 74  6f 20 63 6f 64 65 20 61  |y want to code a|
00037070  73 20 66 61 73 74 0a 61  73 20 70 6f 73 73 69 62  |s fast.as possib|
00037080  6c 65 2c 20 61 6e 64 20  64 6f 6e 27 74 20 77 72  |le, and don't wr|
00037090  69 74 65 20 77 69 74 68  20 61 6e 79 20 69 6d 61  |ite with any ima|
000370a0  67 69 6e 61 74 69 6f 6e  2e 0a 0a 0a 41 6e 6f 74  |gination....Anot|
000370b0  68 65 72 20 66 6f 72 6d  20 6f 66 20 77 72 6f 6e  |her form of wron|
000370c0  67 20 67 75 65 73 73 20  69 73 20 69 6e 20 76 6f  |g guess is in vo|
000370d0  63 61 62 75 6c 61 72 79  2e 20 20 55 6e 6c 65 73  |cabulary.  Unles|
000370e0  73 20 65 78 63 65 70 74  69 6f 6e 61 6c 6c 79 20  |s exceptionally |
000370f0  6c 61 72 67 65 2c 20 61  0a 67 6f 6f 64 20 67 61  |large, a.good ga|
00037100  6d 65 20 6f 75 67 68 74  20 74 6f 20 68 61 76 65  |me ought to have|
00037110  20 61 62 6f 75 74 20 61  20 31 30 30 30 2d 77 6f  | about a 1000-wo|
00037120  72 64 20 76 6f 63 61 62  75 6c 61 72 79 3a 20 74  |rd vocabulary: t|
00037130  6f 6f 20 6d 75 63 68 20  6c 65 73 73 20 74 68 61  |oo much less tha|
00037140  6e 0a 74 68 61 74 20 61  6e 64 20 69 74 20 69 73  |n.that and it is|
00037150  20 70 72 6f 62 61 62 6c  79 20 6d 69 73 73 69 6e  | probably missin|
00037160  67 20 72 65 61 73 6f 6e  61 62 6c 65 20 73 79 6e  |g reasonable syn|
00037170  6f 6e 79 6d 73 3b 20 74  6f 6f 20 6d 75 63 68 20  |onyms; too much |
00037180  6d 6f 72 65 20 61 6e 64  20 69 74 20 69 73 0a 77  |more and it is.w|
00037190  61 73 74 69 6e 67 20 73  70 61 63 65 20 61 6e 64  |asting space and|
000371a0  20 74 69 6d 65 2e 20 20  52 65 6d 65 6d 62 65 72  | time.  Remember|
000371b0  20 74 6f 6f 20 74 68 61  74 20 70 6c 61 79 65 72  | too that player|
000371c0  73 20 64 6f 20 6e 6f 74  20 6b 6e 6f 77 20 61 74  |s do not know at|
000371d0  20 66 69 72 73 74 20 77  68 61 74 0a 74 68 65 20  | first what.the |
000371e0  72 65 6c 65 76 61 6e 74  20 61 6e 64 20 69 72 72  |relevant and irr|
000371f0  65 6c 65 76 61 6e 74 20  6f 62 6a 65 63 74 73 20  |elevant objects |
00037200  69 6e 20 61 20 72 6f 6f  6d 20 61 72 65 2e 20 20  |in a room are.  |
00037210  46 6f 72 20 69 6e 73 74  61 6e 63 65 3a 0a 0a 20  |For instance:.. |
00037220  20 20 4f 6c 64 20 57 69  6e 65 72 79 0a 20 20 20  |  Old Winery.   |
00037230  54 68 69 73 20 73 6d 61  6c 6c 20 63 61 76 69 74  |This small cavit|
00037240  79 20 61 74 20 74 68 65  20 6e 6f 72 74 68 20 65  |y at the north e|
00037250  6e 64 20 6f 66 20 74 68  65 20 61 74 74 69 63 20  |nd of the attic |
00037260  6f 6e 63 65 20 68 6f 75  73 65 64 20 61 6c 6c 20  |once housed all |
00037270  6d 61 6e 6e 65 72 20 6f  66 0a 20 20 20 68 6f 6d  |manner of.   hom|
00037280  65 2d 6d 61 64 65 20 77  69 6e 65 20 70 61 72 61  |e-made wine para|
00037290  70 68 65 72 6e 61 6c 69  61 2c 20 6e 6f 77 20 6c  |phernalia, now l|
000372a0  6f 73 74 20 61 6e 64 20  75 6e 6c 61 6d 65 6e 74  |ost and unlament|
000372b0  65 64 2e 20 20 53 74 65  70 73 2c 20 70 72 6f 76  |ed.  Steps, prov|
000372c0  69 64 65 64 0a 20 20 20  77 69 74 68 20 61 20 67  |ided.   with a g|
000372d0  6f 6f 64 20 73 74 72 6f  6e 67 20 62 61 6e 69 73  |ood strong banis|
000372e0  74 65 72 2d 72 61 69 6c  2c 20 6c 65 61 64 20 64  |ter-rail, lead d|
000372f0  6f 77 6e 20 61 6e 64 20  74 6f 20 74 68 65 20 77  |own and to the w|
00037300  65 73 74 2c 20 61 6e 64  20 74 68 65 0a 20 20 20  |est, and the.   |
00037310  62 61 6e 69 73 74 65 72  20 72 61 69 6c 20 63 6f  |banister rail co|
00037320  6e 74 69 6e 75 65 73 20  61 6c 6f 6e 67 20 61 20  |ntinues along a |
00037330  70 61 73 73 61 67 65 20  65 61 73 74 2e 0a 0a 20  |passage east... |
00037340  20 20 28 61 6e 64 20 73  6f 6d 65 20 6d 6f 72 65  |  (and some more|
00037350  20 66 6f 6c 6c 6f 77 73  29 0a 0a 54 68 69 73 20  | follows)..This |
00037360  63 6c 65 61 72 6c 79 20  6d 65 6e 74 69 6f 6e 73  |clearly mentions|
00037370  20 61 20 62 61 6e 69 73  74 65 72 2c 20 77 68 69  | a banister, whi|
00037380  63 68 20 28 61 73 20 69  74 20 68 61 70 70 65 6e  |ch (as it happen|
00037390  73 29 20 70 6c 61 79 73  20 6e 6f 20 70 61 72 74  |s) plays no part|
000373a0  20 69 6e 20 74 68 65 0a  67 61 6d 65 2c 20 62 75  | in the.game, bu|
000373b0  74 20 6d 65 72 65 6c 79  20 72 65 69 6e 66 6f 72  |t merely reinfor|
000373c0  63 65 73 20 74 68 65 20  69 64 65 61 20 6f 66 20  |ces the idea of |
000373d0  61 6e 20 65 61 73 74 2d  77 65 73 74 20 70 61 73  |an east-west pas|
000373e0  73 61 67 65 20 69 6e 63  6c 75 64 69 6e 67 20 61  |sage including a|
000373f0  0a 73 74 61 69 72 63 61  73 65 20 77 68 69 63 68  |.staircase which|
00037400  20 28 61 73 20 69 74 20  68 61 70 70 65 6e 73 29  | (as it happens)|
00037410  20 69 73 20 70 61 72 74  6c 79 20 66 6f 72 20 74  | is partly for t|
00037420  68 65 20 75 73 65 20 6f  66 20 61 20 66 72 61 69  |he use of a frai|
00037430  6c 20 72 65 6c 61 74 69  76 65 2e 20 0a 42 75 74  |l relative. .But|
00037440  20 74 68 65 20 70 6c 61  79 65 72 20 6d 61 79 20  | the player may |
00037450  77 65 6c 6c 20 74 72 79  20 74 69 65 69 6e 67 20  |well try tieing |
00037460  74 68 69 6e 67 20 74 6f  20 74 68 65 20 72 61 69  |thing to the rai|
00037470  6c 2c 20 70 75 6c 6c 69  6e 67 20 61 74 20 69 74  |l, pulling at it|
00037480  20 61 6e 64 20 73 6f 0a  6f 6e 2e 20 20 53 6f 20  | and so.on.  So |
00037490  74 68 65 20 67 61 6d 65  20 6b 6e 6f 77 73 20 22  |the game knows "|
000374a0  62 61 6e 69 73 74 65 72  22 2c 20 22 72 61 69 6c  |banister", "rail|
000374b0  22 20 61 6e 64 20 28 6e  6f 74 20 65 6e 74 69 72  |" and (not entir|
000374c0  65 6c 79 20 6c 6f 67 69  63 61 6c 6c 79 2c 20 62  |ely logically, b|
000374d0  75 74 0a 70 6c 61 79 65  72 73 20 61 72 65 20 6e  |ut.players are n|
000374e0  6f 74 20 65 6e 74 69 72  65 6c 79 20 6c 6f 67 69  |ot entirely logi|
000374f0  63 61 6c 29 20 22 70 61  72 61 70 68 65 72 6e 61  |cal) "parapherna|
00037500  6c 69 61 22 20 61 73 20  6e 61 6d 65 73 20 6f 66  |lia" as names of|
00037510  20 69 72 72 65 6c 65 76  61 6e 74 0a 74 68 69 6e  | irrelevant.thin|
00037520  67 73 2e 20 41 6e 20 61  74 74 65 6d 70 74 20 74  |gs. An attempt t|
00037530  6f 20 74 6f 79 20 77 69  74 68 20 74 68 65 6d 20  |o toy with them |
00037540  72 65 73 75 6c 74 73 20  69 6e 20 74 68 65 20 72  |results in the r|
00037550  65 70 6c 79 0a 0a 20 20  20 20 54 68 61 74 27 73  |eply..    That's|
00037560  20 6e 6f 74 20 73 6f 6d  65 74 68 69 6e 67 20 79  | not something y|
00037570  6f 75 20 6e 65 65 64 20  74 6f 20 72 65 66 65 72  |ou need to refer|
00037580  20 74 6f 20 69 6e 20 74  68 65 20 63 6f 75 72 73  | to in the cours|
00037590  65 20 6f 66 20 74 68 69  73 20 67 61 6d 65 2e 0a  |e of this game..|
000375a0  0a 77 68 69 63 68 20 6d  6f 73 74 20 70 6c 61 79  |.which most play|
000375b0  65 72 73 20 61 70 70 72  65 63 69 61 74 65 20 61  |ers appreciate a|
000375c0  73 20 66 61 69 72 2c 20  61 6e 64 20 69 73 20 62  |s fair, and is b|
000375d0  65 74 74 65 72 20 74 68  61 6e 20 74 68 65 20 70  |etter than the p|
000375e0  61 72 73 65 72 20 65 69  74 68 65 72 0a 62 65 69  |arser either.bei|
000375f0  6e 67 20 69 67 6e 6f 72  61 6e 74 20 6f 72 2c 20  |ng ignorant or, |
00037600  77 6f 72 73 65 2c 20 70  72 65 74 65 6e 64 69 6e  |worse, pretendin|
00037610  67 20 6e 6f 74 20 74 6f  20 62 65 2e 0a 0a 41 20  |g not to be...A |
00037620  66 65 61 74 75 72 65 20  77 68 69 63 68 20 73 6f  |feature which so|
00037630  6d 65 20 67 61 6d 65 73  20 67 6f 20 74 6f 20 61  |me games go to a|
00037640  20 67 72 65 61 74 20 64  65 61 6c 20 6f 66 20 74  | great deal of t|
00037650  72 6f 75 62 6c 65 20 74  6f 20 70 72 6f 76 69 64  |rouble to provid|
00037660  65 2c 20 62 75 74 20 69  73 0a 6f 66 20 61 72 67  |e, but is.of arg|
00037670  75 61 62 6c 65 20 6d 65  72 69 74 20 28 73 6f 20  |uable merit (so |
00037680  74 68 69 6e 6b 20 49 29  2c 20 69 73 20 74 6f 20  |think I), is to |
00037690  6e 61 6d 65 20 65 76 65  72 79 20 72 6f 6f 6d 2c  |name every room,|
000376a0  20 73 6f 20 74 68 61 74  20 22 73 65 61 72 63 68  | so that "search|
000376b0  0a 77 69 6e 65 72 79 22  20 77 6f 75 6c 64 20 62  |.winery" would b|
000376c0  65 20 75 6e 64 65 72 73  74 6f 6f 64 20 28 74 68  |e understood (th|
000376d0  6f 75 67 68 20 6f 66 20  63 6f 75 72 73 65 20 69  |ough of course i|
000376e0  74 20 77 6f 75 6c 64 20  64 6f 20 6e 6f 74 68 69  |t would do nothi|
000376f0  6e 67 20 61 6c 6d 6f 73  74 0a 65 76 65 72 79 77  |ng almost.everyw|
00037700  68 65 72 65 2e 2e 2e 20  61 6e 64 20 61 20 70 6c  |here... and a pl|
00037710  61 79 65 72 20 77 6f 75  6c 64 20 68 61 76 65 20  |ayer would have |
00037720  74 6f 20 74 72 79 20 73  6f 6d 65 74 68 69 6e 67  |to try something|
00037730  20 73 69 6d 69 6c 61 72  20 65 76 65 72 79 77 68  | similar everywh|
00037740  65 72 65 20 6f 6e 0a 74  68 65 20 6f 66 66 20 63  |ere on.the off c|
00037750  68 61 6e 63 65 29 2e 20  20 53 6f 6d 65 20 67 61  |hance).  Some ga|
00037760  6d 65 73 20 77 6f 75 6c  64 20 65 76 65 6e 20 70  |mes would even p|
00037770  72 6f 76 69 64 65 20 22  67 6f 20 74 6f 20 77 69  |rovide "go to wi|
00037780  6e 65 72 79 22 20 66 72  6f 6d 20 6e 65 61 72 62  |nery" from nearb|
00037790  79 0a 70 6c 61 63 65 73  2e 20 20 54 68 65 73 65  |y.places.  These|
000377a0  20 61 72 65 20 69 6d 70  72 65 73 73 69 76 65 20  | are impressive |
000377b0  66 65 61 74 75 72 65 73  20 62 75 74 20 6e 65 65  |features but nee|
000377c0  64 20 74 6f 20 62 65 20  63 6f 64 65 64 20 63 61  |d to be coded ca|
000377d0  72 65 66 75 6c 6c 79 20  6e 6f 74 20 74 6f 0a 67  |refully not to.g|
000377e0  69 76 65 20 74 68 65 20  70 6c 61 79 65 72 20 69  |ive the player i|
000377f0  6e 66 6f 72 6d 61 74 69  6f 6e 20 73 68 65 20 6d  |nformation she m|
00037800  61 79 20 6e 6f 74 20 79  65 74 20 68 61 76 65 20  |ay not yet have |
00037810  65 61 72 6e 65 64 2e 0a  0a 0a 33 2e 20 20 48 69  |earned....3.  Hi|
00037820  6e 74 73 20 61 6e 64 20  50 72 69 7a 65 73 0a 2d  |nts and Prizes.-|
00037830  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00037840  2d 2d 2d 0a 0a 41 20 67  6f 6f 64 20 67 61 6d 65  |---..A good game|
00037850  20 28 75 6e 6c 65 73 73  20 77 72 69 74 74 65 6e  | (unless written|
00037860  20 66 6f 72 20 61 20 63  6f 6d 70 65 74 69 74 69  | for a competiti|
00037870  6f 6e 29 20 77 69 6c 6c  20 6f 66 74 65 6e 20 63  |on) will often c|
00037880  6f 6e 74 61 69 6e 20 61  20 68 69 6e 74 73 0a 73  |ontain a hints.s|
00037890  65 72 76 69 63 65 2c 20  61 73 20 74 68 65 20 49  |ervice, as the I|
000378a0  6e 66 6f 63 6f 6d 20 67  61 6d 65 73 20 64 69 64  |nfocom games did|
000378b0  20 69 6e 20 6c 61 74 74  65 72 20 64 61 79 73 2e  | in latter days.|
000378c0  20 20 4d 6f 73 74 20 70  6c 61 79 65 72 73 20 77  |  Most players w|
000378d0  69 6c 6c 20 6f 6e 6c 79  0a 72 65 61 6c 6c 79 20  |ill only.really |
000378e0  62 61 64 6c 79 20 62 65  20 73 74 75 63 6b 20 61  |badly be stuck a|
000378f0  62 6f 75 74 20 6f 6e 63  65 20 69 6e 20 74 68 65  |bout once in the|
00037900  20 63 6f 75 72 73 65 20  6f 66 20 61 20 67 61 6d  | course of a gam|
00037910  65 20 28 61 6e 64 20 74  68 65 79 20 76 61 72 79  |e (and they vary|
00037920  0a 77 69 64 65 6c 79 20  69 6e 20 77 68 69 63 68  |.widely in which|
00037930  20 70 75 7a 7a 6c 65 20  74 6f 20 62 65 20 72 65  | puzzle to be re|
00037940  61 6c 6c 79 20 62 61 64  6c 79 20 73 74 75 63 6b  |ally badly stuck|
00037950  20 6f 6e 29 20 61 6e 64  20 69 74 20 69 73 20 6f  | on) and it is o|
00037960  6e 6c 79 20 66 61 69 72  0a 74 6f 20 72 65 73 63  |nly fair.to resc|
00037970  75 65 20 74 68 65 6d 2e  20 20 28 49 66 20 6e 6f  |ue them.  (If no|
00037980  74 68 69 6e 67 20 65 6c  73 65 2c 20 74 68 69 73  |thing else, this|
00037990  20 63 75 74 73 20 64 6f  77 6e 20 6f 6e 20 74 68  | cuts down on th|
000379a0  65 20 76 6f 6c 75 6d 65  20 6f 66 20 65 6d 61 69  |e volume of emai|
000379b0  6c 0a 63 72 69 65 73 20  66 6f 72 20 68 65 6c 70  |l.cries for help|
000379c0  20 77 68 69 63 68 20 6d  61 79 20 61 72 72 69 76  | which may arriv|
000379d0  65 2e 29 20 20 54 68 65  72 65 20 61 72 65 20 74  |e.)  There are t|
000379e0  77 6f 20 77 61 79 73 20  74 6f 20 70 72 6f 76 69  |wo ways to provi|
000379f0  64 65 20 68 69 6e 74 73  3a 0a 0a 2d 2d 20 69 6e  |de hints:..-- in|
00037a00  20 74 68 65 20 67 61 6d  65 20 69 74 73 65 6c 66  | the game itself|
00037a10  2c 20 62 79 20 68 61 76  69 6e 67 20 73 6f 6d 65  |, by having some|
00037a20  20 73 61 67 65 20 6f 6c  64 20 77 6f 72 74 68 79  | sage old worthy|
00037a30  20 74 6f 20 61 73 6b 3b  0a 0a 2d 2d 20 70 72 6f  | to ask;..-- pro|
00037a40  70 65 72 6c 79 20 73 65  70 61 72 61 74 65 64 20  |perly separated |
00037a50  66 72 6f 6d 20 74 68 65  20 67 61 6d 65 2c 20 77  |from the game, w|
00037a60  69 74 68 20 61 20 22 68  69 6e 74 22 20 63 6f 6d  |ith a "hint" com|
00037a70  6d 61 6e 64 20 77 68 69  63 68 20 6f 66 66 65 72  |mand which offer|
00037a80  73 0a 6f 6e 65 20 6f 72  20 6d 6f 72 65 20 6d 65  |s.one or more me|
00037a90  6e 75 73 20 66 75 6c 6c  20 6f 66 20 70 6f 73 73  |nus full of poss|
00037aa0  69 62 6c 65 20 71 75 65  73 74 69 6f 6e 73 2e 0a  |ible questions..|
00037ab0  0a 4f 66 20 63 6f 75 72  73 65 2c 20 61 20 68 69  |.Of course, a hi|
00037ac0  6e 74 20 73 68 6f 75 6c  64 20 6e 6f 74 20 62 65  |nt should not be|
00037ad0  20 61 6e 20 65 78 70 6c  69 63 69 74 20 61 6e 73  | an explicit ans|
00037ae0  77 65 72 2e 0a 0a 0a 41  74 20 74 68 65 20 65 6e  |wer....At the en|
00037af0  64 20 6f 66 20 74 68 65  20 67 61 6d 65 2c 20 77  |d of the game, w|
00037b00  68 65 6e 20 69 74 20 68  61 73 20 62 65 65 6e 20  |hen it has been |
00037b10  77 6f 6e 2c 20 69 73 20  74 68 65 72 65 20 61 6e  |won, is there an|
00037b20  79 74 68 69 6e 67 20 65  6c 73 65 20 74 6f 20 62  |ything else to b|
00037b30  65 20 0a 73 61 69 64 3f  20 20 49 6e 20 73 6f 6d  |e .said?  In som|
00037b40  65 20 67 61 6d 65 73 2c  20 74 68 65 72 65 20 69  |e games, there i|
00037b50  73 2e 20 20 49 6e 20 69  74 73 20 66 69 6e 61 6c  |s.  In its final|
00037b60  20 69 6e 63 61 72 6e 61  74 69 6f 6e 73 20 28 61  | incarnations (a|
00037b70  6c 61 73 2c 20 6e 6f 74  20 74 68 65 0a 6f 6e 65  |las, not the.one|
00037b80  20 69 6e 63 6c 75 64 65  64 20 69 6e 20 74 68 65  | included in the|
00037b90  20 22 4c 6f 73 74 20 54  72 65 61 73 75 72 65 73  | "Lost Treasures|
00037ba0  20 6f 66 20 49 6e 66 6f  63 6f 6d 22 20 70 61 63  | of Infocom" pac|
00037bb0  6b 61 67 65 29 2c 20 22  5a 6f 72 6b 20 49 22 20  |kage), "Zork I" |
00037bc0  6f 66 66 65 72 65 64 0a  77 69 6e 6e 65 72 73 20  |offered.winners |
00037bd0  61 63 63 65 73 73 20 74  6f 20 74 68 65 20 68 69  |access to the hi|
00037be0  6e 74 73 20 73 79 73 74  65 6d 20 61 74 20 74 68  |nts system at th|
00037bf0  65 20 52 45 53 54 41 52  54 2c 20 52 45 53 54 4f  |e RESTART, RESTO|
00037c00  52 45 20 6f 72 20 51 55  49 54 20 70 72 6f 6d 70  |RE or QUIT promp|
00037c10  74 2e 20 0a 22 43 75 72  73 65 73 22 20 67 6f 65  |t. ."Curses" goe|
00037c20  73 20 73 6f 20 66 61 72  20 61 73 20 74 6f 20 68  |s so far as to h|
00037c30  61 76 65 20 61 20 74 72  69 76 69 61 20 71 75 69  |ave a trivia qui|
00037c40  7a 2c 20 72 65 61 6c 6c  79 20 74 6f 20 74 65 6c  |z, really to tel|
00037c50  6c 20 74 68 65 20 70 6c  61 79 65 72 0a 61 62 6f  |l the player.abo|
00037c60  75 74 20 73 6f 6d 65 20  6f 66 20 74 68 65 20 73  |ut some of the s|
00037c70  74 72 61 6e 67 65 72 20  74 68 69 6e 67 73 20 77  |tranger things w|
00037c80  68 69 63 68 20 63 61 6e  20 62 65 20 64 6f 6e 65  |hich can be done|
00037c90  20 69 6e 20 74 68 65 20  67 61 6d 65 2e 20 20 28  | in the game.  (|
00037ca0  49 66 0a 6e 6f 74 68 69  6e 67 20 65 6c 73 65 2c  |If.nothing else,|
00037cb0  20 74 68 69 73 20 69 73  20 61 20 67 6f 6f 64 20  | this is a good |
00037cc0  63 68 61 6e 63 65 20 66  6f 72 20 74 68 65 20 67  |chance for the g|
00037cd0  61 6d 65 27 73 20 61 75  74 68 6f 72 20 74 6f 20  |ame's author to |
00037ce0  62 6f 61 73 74 2e 29 0a  0a 0a 34 2e 20 20 55 73  |boast.)...4.  Us|
00037cf0  65 72 20 49 6e 74 65 72  66 61 63 65 2c 20 61 6e  |er Interface, an|
00037d00  64 20 61 6c 6c 20 74 68  61 74 20 6a 61 7a 7a 0a  |d all that jazz.|
00037d10  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00037d30  2d 2d 2d 2d 2d 0a 0a 4e  6f 2c 20 6e 6f 74 20 77  |-----..No, not w|
00037d40  69 6e 64 6f 77 73 20 61  6e 64 20 70 75 6c 6c 2d  |indows and pull-|
00037d50  64 6f 77 6e 20 6d 65 6e  75 73 2c 20 62 75 74 20  |down menus, but |
00037d60  74 68 65 20 66 65 77 20  6d 65 74 61 2d 63 6f 6d  |the few meta-com|
00037d70  6d 61 6e 64 73 20 77 68  69 63 68 20 67 6f 20 74  |mands which go t|
00037d80  6f 0a 74 68 65 20 67 61  6d 65 20 70 72 6f 67 72  |o.the game progr|
00037d90  61 6d 20 61 6e 64 20 64  6f 20 6e 6f 74 20 72 65  |am and do not re|
00037da0  70 72 65 73 65 6e 74 20  61 63 74 69 6f 6e 73 20  |present actions |
00037db0  6f 66 20 74 68 65 20 70  6c 61 79 65 72 27 73 20  |of the player's |
00037dc0  63 68 61 72 61 63 74 65  72 20 69 6e 0a 74 68 65  |character in.the|
00037dd0  20 67 61 6d 65 2e 20 20  4f 66 20 63 6f 75 72 73  | game.  Of cours|
00037de0  65 2c 0a 0a 20 20 53 41  56 45 2c 20 52 45 53 54  |e,..  SAVE, REST|
00037df0  4f 52 45 2c 20 52 45 53  54 41 52 54 2c 20 51 55  |ORE, RESTART, QU|
00037e00  49 54 0a 0a 61 72 65 20  65 73 73 65 6e 74 69 61  |IT..are essentia|
00037e10  6c 2e 20 20 47 61 6d 65  73 20 73 68 6f 75 6c 64  |l.  Games should|
00037e20  20 61 6c 73 6f 20 70 72  6f 76 69 64 65 20 63 6f  | also provide co|
00037e30  6d 6d 61 6e 64 73 20 74  6f 20 61 6c 6c 6f 77 20  |mmands to allow |
00037e40  74 68 65 20 70 6c 61 79  65 72 20 74 6f 0a 63 68  |the player to.ch|
00037e50  6f 6f 73 65 20 77 68 65  74 68 65 72 20 72 6f 6f  |oose whether roo|
00037e60  6d 20 64 65 73 63 72 69  70 74 69 6f 6e 73 20 61  |m descriptions a|
00037e70  72 65 20 61 62 62 72 65  76 69 61 74 65 64 20 6f  |re abbreviated o|
00037e80  6e 20 73 65 63 6f 6e 64  20 76 69 73 69 74 73 20  |n second visits |
00037e90  6f 72 20 6e 6f 74 2e 20  0a 4f 74 68 65 72 20 73  |or not. .Other s|
00037ea0  75 63 68 20 6f 70 74 69  6f 6e 73 20 6d 69 67 68  |uch options migh|
00037eb0  74 20 62 65 20 63 6f 6d  6d 61 6e 64 73 20 74 6f  |t be commands to|
00037ec0  20 63 6f 6e 74 72 6f 6c  20 77 68 65 74 68 65 72  | control whether|
00037ed0  20 74 68 65 20 67 61 6d  65 20 70 72 69 6e 74 73  | the game prints|
00037ee0  20 6f 75 74 0a 6d 65 73  73 61 67 65 73 20 6c 69  | out.messages li|
00037ef0  6b 65 0a 0a 20 20 5b 59  6f 75 72 20 73 63 6f 72  |ke..  [Your scor|
00037f00  65 20 68 61 73 20 6a 75  73 74 20 67 6f 6e 65 20  |e has just gone |
00037f10  75 70 20 62 79 20 31 30  20 70 6f 69 6e 74 73 2e  |up by 10 points.|
00037f20  5d 0a 0a 61 6e 64 20 63  6f 6d 6d 61 6e 64 73 20  |]..and commands |
00037f30  74 6f 20 74 72 61 6e 73  63 72 69 62 65 20 74 6f  |to transcribe to|
00037f40  20 74 68 65 20 70 72 69  6e 74 65 72 20 6f 72 20  | the printer or |
00037f50  74 6f 20 61 20 66 69 6c  65 20 2d 20 74 68 65 73  |to a file - thes|
00037f60  65 20 61 72 65 20 65 78  74 72 65 6d 65 6c 79 0a  |e are extremely.|
00037f70  75 73 65 66 75 6c 20 77  68 65 6e 20 72 65 63 65  |useful when rece|
00037f80  69 76 69 6e 67 20 63 6f  6d 6d 65 6e 74 73 20 66  |iving comments f|
00037f90  72 6f 6d 20 70 6c 61 79  2d 74 65 73 74 65 72 73  |rom play-testers|
00037fa0  2e 0a 0a 55 4e 44 4f 20  69 73 20 64 69 66 66 69  |...UNDO is diffi|
00037fb0  63 75 6c 74 20 74 6f 20  63 6f 64 65 20 62 75 74  |cult to code but|
00037fc0  20 77 6f 72 74 68 20 69  74 2e 20 20 49 6e 20 22  | worth it.  In "|
00037fd0  43 75 72 73 65 73 22 2c  20 55 4e 44 4f 20 63 61  |Curses", UNDO ca|
00037fe0  6e 20 65 76 65 6e 20 72  65 73 74 6f 72 65 0a 74  |n even restore.t|
00037ff0  68 65 20 70 6c 61 79 65  72 20 70 6f 73 74 68 75  |he player posthu|
00038000  6d 6f 75 73 6c 79 20 28  74 68 6f 75 67 68 20 74  |mously (though t|
00038010  68 69 73 20 69 73 20 6e  6f 74 20 61 64 76 65 72  |his is not adver|
00038020  74 69 73 65 64 20 69 6e  20 74 68 65 20 67 61 6d  |tised in the gam|
00038030  65 3a 20 64 65 61 74 68  2c 0a 77 68 65 72 65 20  |e: death,.where |
00038040  69 73 20 74 68 79 20 73  74 69 6e 67 3f 29 2e 0a  |is thy sting?)..|
00038050  0a 41 62 62 72 65 76 69  61 74 69 6f 6e 73 20 28  |.Abbreviations (|
00038060  65 73 70 65 63 69 61 6c  6c 79 20 22 67 22 20 66  |especially "g" f|
00038070  6f 72 20 61 67 61 69 6e  2c 20 22 7a 22 20 66 6f  |or again, "z" fo|
00038080  72 20 77 61 69 74 2c 20  22 78 22 20 66 6f 72 20  |r wait, "x" for |
00038090  65 78 61 6d 69 6e 65 29  20 6d 75 73 74 0a 6e 6f  |examine) must.no|
000380a0  77 20 62 65 20 63 6f 6e  73 69 64 65 72 65 64 20  |w be considered |
000380b0  65 73 73 65 6e 74 69 61  6c 2e 0a 0a 53 6f 6d 65  |essential...Some|
000380c0  20 67 61 6d 65 73 20 70  72 6f 64 75 63 65 20 71  | games produce q|
000380d0  75 6f 74 61 74 69 6f 6e  73 20 6f 72 20 6a 6f 6b  |uotations or jok|
000380e0  65 73 20 66 72 6f 6d 20  74 69 6d 65 20 74 6f 20  |es from time to |
000380f0  74 69 6d 65 20 69 6e 20  6c 69 74 74 6c 65 20 77  |time in little w|
00038100  69 6e 64 6f 77 73 0a 61  77 61 79 20 66 72 6f 6d  |indows.away from|
00038110  20 74 68 65 20 6d 61 69  6e 20 74 65 78 74 20 6f  | the main text o|
00038120  66 20 74 68 65 20 67 61  6d 65 2e 20 20 43 61 72  |f the game.  Car|
00038130  65 20 69 73 20 6e 65 65  64 65 64 20 74 6f 20 61  |e is needed to a|
00038140  76 6f 69 64 20 74 68 65  73 65 0a 6f 76 65 72 6c  |void these.overl|
00038150  79 69 6e 67 20 76 69 74  61 6c 20 74 65 78 74 2e  |ying vital text.|
00038160  20 20 49 74 20 6f 75 67  68 74 20 74 6f 20 70 6f  |  It ought to po|
00038170  73 73 69 62 6c 65 20 74  6f 20 74 75 72 6e 20 74  |ssible to turn t|
00038180  68 69 73 20 66 65 61 74  75 72 65 20 6f 66 66 2e  |his feature off.|
00038190  0a 0a 54 68 65 20 61 75  74 68 6f 72 27 73 20 6f  |..The author's o|
000381a0  6e 6c 79 20 69 6e 6e 6f  76 61 74 69 6f 6e 73 20  |nly innovations |
000381b0  69 6e 20 74 68 69 73 20  6c 69 6e 65 20 61 72 65  |in this line are|
000381c0  20 74 6f 20 70 72 6f 76  69 64 65 20 61 20 22 66  | to provide a "f|
000381d0  75 6c 6c 20 73 63 6f 72  65 22 0a 66 65 61 74 75  |ull score".featu|
000381e0  72 65 2c 20 77 68 69 63  68 20 61 63 63 6f 75 6e  |re, which accoun|
000381f0  74 73 20 65 78 61 63 74  6c 79 20 66 6f 72 20 77  |ts exactly for w|
00038200  68 65 72 65 20 74 68 65  20 70 6c 61 79 65 72 27  |here the player'|
00038210  73 20 73 63 6f 72 65 20  68 61 73 20 63 6f 6d 65  |s score has come|
00038220  20 66 72 6f 6d 0a 61 6e  64 20 6c 69 73 74 73 20  | from.and lists |
00038230  61 63 68 69 65 76 65 6d  65 6e 74 73 20 73 6f 20  |achievements so |
00038240  66 61 72 2c 20 61 6e 64  20 74 6f 20 70 72 6f 76  |far, and to prov|
00038250  69 64 65 20 22 6f 62 6a  65 63 74 73 22 20 61 6e  |ide "objects" an|
00038260  64 20 22 70 6c 61 63 65  73 22 0a 63 6f 6d 6d 61  |d "places".comma|
00038270  6e 64 73 3a 0a 0a 20 20  20 3e 70 6c 61 63 65 73  |nds:..   >places|
00038280  0a 20 20 20 59 6f 75 20  68 61 76 65 20 76 69 73  |.   You have vis|
00038290  69 74 65 64 3a 20 41 74  74 69 63 20 61 6e 64 20  |ited: Attic and |
000382a0  4f 6c 64 20 46 75 72 6e  69 74 75 72 65 2e 0a 0a  |Old Furniture...|
000382b0  20 20 20 3e 6f 62 6a 65  63 74 73 0a 20 20 20 4f  |   >objects.   O|
000382c0  62 6a 65 63 74 73 20 79  6f 75 20 68 61 76 65 20  |bjects you have |
000382d0  68 61 6e 64 6c 65 64 3a  0a 0a 20 20 20 74 68 65  |handled:..   the|
000382e0  20 63 72 75 6d 70 6c 65  64 20 70 69 65 63 65 20  | crumpled piece |
000382f0  6f 66 20 70 61 70 65 72  20 20 20 28 68 65 6c 64  |of paper   (held|
00038300  29 0a 20 20 20 74 68 65  20 65 6c 65 63 74 72 69  |).   the electri|
00038310  63 20 74 6f 72 63 68 20  20 20 28 68 65 6c 64 29  |c torch   (held)|
00038320  0a 20 20 20 74 68 65 20  63 68 6f 63 6f 6c 61 74  |.   the chocolat|
00038330  65 20 62 69 73 63 75 69  74 20 20 20 28 68 65 6c  |e biscuit   (hel|
00038340  64 29 0a 20 20 20 74 68  65 20 62 69 72 64 20 77  |d).   the bird w|
00038350  68 69 73 74 6c 65 20 20  20 28 69 6e 20 4f 6c 64  |histle   (in Old|
00038360  20 46 75 72 6e 69 74 75  72 65 29 0a 20 20 20 74  | Furniture).   t|
00038370  68 65 20 67 69 66 74 2d  77 72 61 70 70 65 64 20  |he gift-wrapped |
00038380  70 61 72 63 65 6c 20 20  20 28 6c 6f 73 74 29 0a  |parcel   (lost).|
00038390  0a 54 68 65 73 65 20 66  65 61 74 75 72 65 73 20  |.These features |
000383a0  6d 61 79 20 6f 72 20 6d  61 79 20 6e 6f 74 20 63  |may or may not c|
000383b0  61 74 63 68 20 6f 6e 2e  0a 0a 0a 35 2e 20 20 44  |atch on....5.  D|
000383c0  65 62 75 67 67 69 6e 67  20 61 6e 64 20 54 65 73  |ebugging and Tes|
000383d0  74 69 6e 67 0a 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ting.-----------|
000383e0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0a 0a  |--------------..|
000383f0  45 76 65 72 79 20 61 75  74 68 6f 72 20 77 69 6c  |Every author wil|
00038400  6c 20 6e 65 65 64 20 61  20 66 65 77 20 22 73 65  |l need a few "se|
00038410  63 72 65 74 22 20 64 65  62 75 67 67 69 6e 67 20  |cret" debugging |
00038420  63 6f 6d 6d 61 6e 64 73  20 28 73 74 69 6c 6c 20  |commands (still |
00038430  70 72 65 73 65 6e 74 20  69 6e 0a 73 65 76 65 72  |present in.sever|
00038440  61 6c 20 6f 66 20 74 68  65 20 49 6e 66 6f 63 6f  |al of the Infoco|
00038450  6d 20 67 61 6d 65 73 2c  20 66 6f 72 20 69 6e 73  |m games, for ins|
00038460  74 61 6e 63 65 29 20 74  6f 20 74 72 61 6e 73 70  |tance) to transp|
00038470  6f 72 74 20 74 68 65 20  70 6c 61 79 65 72 20 61  |ort the player a|
00038480  63 72 6f 73 73 0a 74 68  65 20 6d 61 70 2c 20 6f  |cross.the map, o|
00038490  72 20 67 65 74 20 61 6e  79 20 6f 62 6a 65 63 74  |r get any object|
000384a0  20 62 79 20 72 65 6d 6f  74 65 20 63 6f 6e 74 72  | by remote contr|
000384b0  6f 6c 2e 20 20 53 69 6e  63 65 20 64 65 62 75 67  |ol.  Since debug|
000384c0  67 69 6e 67 20 6e 65 76  65 72 20 65 6e 64 73 2c  |ging never ends,|
000384d0  0a 69 74 27 73 20 6e 65  76 65 72 20 77 69 73 65  |.it's never wise|
000384e0  20 74 6f 20 72 65 6d 6f  76 65 20 74 68 65 73 65  | to remove these|
000384f0  20 63 6f 6d 6d 61 6e 64  73 3a 20 69 6e 73 74 65  | commands: inste|
00038500  61 64 2c 20 70 72 6f 74  65 63 74 20 74 68 65 6d  |ad, protect them|
00038510  20 77 69 74 68 20 61 0a  70 61 73 73 77 6f 72 64  | with a.password|
00038520  20 69 6e 20 72 65 6c 65  61 73 65 64 20 65 64 69  | in released edi|
00038530  74 69 6f 6e 73 2e 0a 0a  41 6e 20 75 6e 6f 62 76  |tions...An unobv|
00038540  69 6f 75 73 20 62 75 74  20 75 73 65 66 75 6c 20  |ious but useful |
00038550  66 65 61 74 75 72 65 20  69 73 20 61 20 63 6f 6d  |feature is a com|
00038560  6d 61 6e 64 20 74 6f 20  6d 61 6b 65 20 74 68 65  |mand to make the|
00038570  20 67 61 6d 65 20 6e 6f  6e 2d 72 61 6e 64 6f 6d  | game non-random|
00038580  2e 0a 54 68 61 74 20 69  73 2c 20 69 66 20 74 68  |..That is, if th|
00038590  65 72 65 20 69 73 20 61  20 64 6f 6f 72 77 61 79  |ere is a doorway|
000385a0  20 77 68 69 63 68 20 72  61 6e 64 6f 6d 6c 79 20  | which randomly |
000385b0  6c 65 61 64 73 20 74 6f  20 6f 6e 65 20 6f 66 20  |leads to one of |
000385c0  74 68 72 65 65 20 70 6c  61 63 65 73 2c 0a 74 68  |three places,.th|
000385d0  65 6e 20 74 68 69 73 20  63 6f 6d 6d 61 6e 64 20  |en this command |
000385e0  77 69 6c 6c 20 6d 61 6b  65 20 69 74 20 70 72 65  |will make it pre|
000385f0  64 69 63 74 61 62 6c 65  2e 20 20 54 68 69 73 20  |dictable.  This |
00038600  69 73 20 65 73 73 65 6e  74 69 61 6c 20 77 68 65  |is essential whe|
00038610  6e 20 74 65 73 74 69 6e  67 0a 74 68 65 20 67 61  |n testing.the ga|
00038620  6d 65 20 61 67 61 69 6e  73 74 20 61 20 74 72 61  |me against a tra|
00038630  6e 73 63 72 69 70 74 2e  0a 0a 44 75 72 69 6e 67  |nscript...During|
00038640  20 64 65 73 69 67 6e 2c  20 69 74 27 73 20 68 65  | design, it's he|
00038650  6c 70 66 75 6c 20 74 6f  20 6b 65 65 70 20 73 75  |lpful to keep su|
00038660  63 68 20 61 20 73 63 72  69 70 74 20 6f 66 20 63  |ch a script of c|
00038670  6f 6d 6d 61 6e 64 73 20  77 68 69 63 68 20 77 69  |ommands which wi|
00038680  6e 73 20 74 68 65 0a 67  61 6d 65 20 66 72 6f 6d  |ns the.game from|
00038690  20 74 68 65 20 73 74 61  72 74 20 70 6f 73 69 74  | the start posit|
000386a0  69 6f 6e 2e 20 20 49 64  65 61 6c 6c 79 2c 20 79  |ion.  Ideally, y|
000386b0  6f 75 72 20 67 61 6d 65  20 6f 75 67 68 74 20 74  |our game ought t|
000386c0  6f 20 62 65 20 61 62 6c  65 20 74 6f 20 61 63 63  |o be able to acc|
000386d0  65 70 74 0a 69 6e 70 75  74 20 66 72 6f 6d 20 61  |ept.input from a|
000386e0  20 66 69 6c 65 20 6f 66  20 63 6f 6d 6d 61 6e 64  | file of command|
000386f0  73 20 61 73 20 77 65 6c  6c 20 61 73 20 66 72 6f  |s as well as fro|
00038700  6d 20 74 68 65 20 6b 65  79 62 6f 61 72 64 2c 20  |m the keyboard, |
00038710  73 6f 20 74 68 61 74 20  74 68 69 73 0a 73 63 72  |so that this.scr|
00038720  69 70 74 20 63 61 6e 20  62 65 20 72 75 6e 20 61  |ipt can be run a|
00038730  75 74 6f 6d 61 74 69 63  61 6c 6c 79 20 74 68 72  |utomatically thr|
00038740  6f 75 67 68 2e 0a 0a 54  68 69 73 20 6d 65 61 6e  |ough...This mean|
00038750  73 20 74 68 61 74 20 77  68 65 6e 20 69 74 20 63  |s that when it c|
00038760  6f 6d 65 73 20 74 6f 20  61 64 64 69 6e 67 20 61  |omes to adding a|
00038770  20 6e 65 77 20 66 65 61  74 75 72 65 20 74 6f 77  | new feature tow|
00038780  61 72 64 73 20 74 68 65  20 65 6e 64 2c 20 69 74  |ards the end, it|
00038790  20 69 73 0a 65 61 73 79  20 74 6f 20 63 68 65 63  | is.easy to chec|
000387a0  6b 20 77 68 65 74 68 65  72 20 6f 72 20 6e 6f 74  |k whether or not|
000387b0  20 69 74 20 75 70 73 65  74 73 20 66 65 61 74 75  | it upsets featu|
000387c0  72 65 73 20 65 61 72 6c  69 65 72 20 6f 6e 2e 0a  |res earlier on..|
000387d0  0a 42 75 67 73 20 61 72  65 20 75 73 75 61 6c 6c  |.Bugs are usuall|
000387e0  79 20 65 61 73 79 20 74  6f 20 66 69 78 3a 20 74  |y easy to fix: t|
000387f0  68 65 79 20 61 72 65 20  6d 6f 73 74 6c 79 20 73  |hey are mostly s|
00038800  6d 61 6c 6c 20 6f 76 65  72 73 69 67 68 74 73 2e  |mall oversights.|
00038810  20 20 56 65 72 79 20 66  65 77 0a 74 61 6b 65 20  |  Very few.take |
00038820  6d 6f 72 65 20 74 68 61  6e 20 66 69 76 65 20 6d  |more than five m|
00038830  69 6e 75 74 65 73 20 74  6f 20 66 69 78 2e 20 20  |inutes to fix.  |
00038840  45 73 70 65 63 69 61 6c  6c 79 20 63 6f 6d 6d 6f  |Especially commo|
00038850  6e 20 61 72 65 3a 0a 0a  2d 2d 20 73 6c 69 70 73  |n are:..-- slips|
00038860  20 6f 66 20 70 75 6e 63  74 75 61 74 69 6f 6e 2c  | of punctuation,|
00038870  20 73 70 65 6c 6c 69 6e  67 20 6f 72 20 67 72 61  | spelling or gra|
00038880  6d 6d 61 72 20 28 66 6f  72 20 69 6e 73 74 61 6e  |mmar (for instan|
00038890  63 65 2c 20 22 61 20 6f  72 61 6e 67 65 22 29 3b  |ce, "a orange");|
000388a0  0a 0a 2d 2d 20 72 6f 6f  6d 73 20 62 65 69 6e 67  |..-- rooms being|
000388b0  20 64 61 72 6b 20 77 68  65 6e 20 74 68 65 79 20  | dark when they |
000388c0  6f 75 67 68 74 20 74 6f  20 62 65 20 6c 69 67 68  |ought to be ligh|
000388d0  74 20 28 74 68 69 73 20  74 65 6e 64 73 20 6e 6f  |t (this tends no|
000388e0  74 20 74 6f 20 73 68 6f  77 20 69 66 0a 74 68 65  |t to show if.the|
000388f0  20 70 6c 61 79 65 72 20  68 61 62 69 74 75 61 6c  | player habitual|
00038900  6c 79 20 63 61 72 72 69  65 73 20 61 20 6c 61 6d  |ly carries a lam|
00038910  70 20 61 6e 79 77 61 79  29 2c 20 6f 72 20 6e 6f  |p anyway), or no|
00038920  74 20 63 68 61 6e 67 69  6e 67 20 74 68 65 69 72  |t changing their|
00038930  20 73 74 61 74 65 0a 6f  66 20 6c 69 67 68 74 2f  | state.of light/|
00038940  64 61 72 6b 6e 65 73 73  20 77 68 65 6e 20 74 68  |darkness when th|
00038950  65 79 20 73 68 6f 75 6c  64 2c 20 61 73 20 66 6f  |ey should, as fo|
00038960  72 20 69 6e 73 74 61 6e  63 65 20 77 68 65 6e 20  |r instance when |
00038970  61 20 73 6b 79 6c 69 67  68 74 20 6f 70 65 6e 73  |a skylight opens|
00038980  20 6f 72 0a 63 6c 6f 73  65 73 3b 0a 0a 2d 2d 20  | or.closes;..-- |
00038990  6f 74 68 65 72 20 6f 62  6a 65 63 74 20 66 6c 61  |other object fla|
000389a0  67 73 20 68 61 76 69 6e  67 20 62 65 65 6e 20 66  |gs having been f|
000389b0  6f 72 67 6f 74 74 65 6e  2c 20 73 75 63 68 20 61  |orgotten, such a|
000389c0  73 20 61 20 66 69 73 68  20 6e 6f 74 20 62 65 69  |s a fish not bei|
000389d0  6e 67 0a 66 6c 61 67 67  65 64 20 61 73 20 65 64  |ng.flagged as ed|
000389e0  69 62 6c 65 3b 0a 0a 2d  2d 20 6d 61 70 20 63 6f  |ible;..-- map co|
000389f0  6e 6e 65 63 74 69 6f 6e  73 20 62 65 69 6e 67 20  |nnections being |
00038a00  76 65 72 79 20 73 6c 69  67 68 74 6c 79 20 6f 75  |very slightly ou|
00038a10  74 2c 20 65 2e 67 2e 20  77 65 73 74 20 69 6e 20  |t, e.g. west in |
00038a20  6f 6e 65 20 64 69 72 65  63 74 69 6f 6e 20 61 6e  |one direction an|
00038a30  64 0a 6e 6f 72 74 68 65  61 73 74 20 69 6e 20 74  |d.northeast in t|
00038a40  68 65 20 6f 74 68 65 72  2c 20 62 79 20 61 63 63  |he other, by acc|
00038a50  69 64 65 6e 74 3b 0a 0a  2d 2d 20 73 6f 6d 65 74  |ident;..-- somet|
00038a60  68 69 6e 67 20 77 68 69  63 68 20 6c 6f 67 69 63  |hing which logic|
00038a70  61 6c 6c 79 20 63 61 6e  20 6f 6e 6c 79 20 68 61  |ally can only ha|
00038a80  70 70 65 6e 20 6f 6e 63  65 2c 20 73 75 63 68 20  |ppen once, such |
00038a90  61 73 20 61 20 77 69 6e  64 6f 77 20 62 65 69 6e  |as a window bein|
00038aa0  67 0a 62 72 6f 6b 65 6e  2c 20 61 63 74 75 61 6c  |g.broken, actual|
00038ab0  6c 79 20 62 65 69 6e 67  20 70 6f 73 73 69 62 6c  |ly being possibl|
00038ac0  65 20 6d 6f 72 65 20 74  68 61 6e 20 6f 6e 63 65  |e more than once|
00038ad0  2c 20 77 69 74 68 20 73  74 72 61 6e 67 65 20 63  |, with strange c|
00038ae0  6f 6e 73 65 71 75 65 6e  63 65 73 3b 0a 0a 2d 2d  |onsequences;..--|
00038af0  20 67 65 6e 65 72 61 6c  20 6d 65 73 73 61 67 65  | general message|
00038b00  73 20 62 65 69 6e 67 20  75 6e 66 6f 72 74 75 6e  |s being unfortun|
00038b10  61 74 65 20 69 6e 20 70  61 72 74 69 63 75 6c 61  |ate in particula|
00038b20  72 20 63 61 73 65 73 2c  20 73 75 63 68 20 61 73  |r cases, such as|
00038b30  20 22 54 68 65 20 62 61  6c 6c 0a 62 6f 75 6e 63  | "The ball.bounc|
00038b40  65 73 20 6f 6e 20 74 68  65 20 67 72 6f 75 6e 64  |es on the ground|
00038b50  20 61 6e 64 20 72 65 74  75 72 6e 73 20 74 6f 20  | and returns to |
00038b60  79 6f 75 72 20 68 61 6e  64 2e 22 20 69 6e 20 6d  |your hand." in m|
00038b70  69 64 2d 61 69 72 20 6f  72 20 77 68 69 6c 65 0a  |id-air or while.|
00038b80  77 61 64 69 6e 67 20 74  68 72 6f 75 67 68 20 61  |wading through a|
00038b90  20 66 6f 72 64 3b 0a 0a  2d 2d 20 73 6d 61 6c 6c  | ford;..-- small|
00038ba0  20 69 6c 6c 6f 67 69 63  61 6c 69 74 69 65 73 3a  | illogicalities:|
00038bb0  20 62 65 69 6e 67 20 61  62 6c 65 20 74 6f 20 73  | being able to s|
00038bc0  77 69 6d 20 77 69 74 68  20 61 20 73 75 69 74 20  |wim with a suit |
00038bd0  6f 66 20 61 72 6d 6f 75  72 20 6f 6e 2c 20 6f 72  |of armour on, or|
00038be0  0a 77 61 76 65 20 74 68  65 20 63 6f 61 74 20 79  |.wave the coat y|
00038bf0  6f 75 27 72 65 20 77 65  61 72 69 6e 67 2c 20 6f  |ou're wearing, o|
00038c00  72 20 65 61 74 20 77 68  69 6c 65 20 77 65 61 72  |r eat while wear|
00038c10  69 6e 67 20 61 20 67 61  73 20 6d 61 73 6b 3b 0a  |ing a gas mask;.|
00038c20  0a 2d 2d 20 70 61 72 73  65 72 20 61 63 63 69 64  |.-- parser accid|
00038c30  65 6e 74 73 20 61 6e 64  20 6d 69 73 6e 61 6d 69  |ents and misnami|
00038c40  6e 67 73 2e 0a 0a 44 6f  20 6e 6f 74 20 67 6f 20  |ngs...Do not go |
00038c50  69 6e 74 6f 20 70 6c 61  79 2d 74 65 73 74 69 6e  |into play-testin|
00038c60  67 20 75 6e 74 69 6c 20  74 68 65 20 73 63 6f 72  |g until the scor|
00038c70  69 6e 67 20 73 79 73 74  65 6d 20 69 73 20 77 6f  |ing system is wo|
00038c80  72 6b 65 64 20 6f 75 74  20 61 6e 64 0a 74 68 65  |rked out and.the|
00038c90  20 67 61 6d 65 20 70 61  73 73 65 73 20 74 68 65  | game passes the|
00038ca0  20 65 6e 74 69 72 65 20  74 72 61 6e 73 63 72 69  | entire transcri|
00038cb0  70 74 20 6f 66 20 74 68  65 20 22 77 69 6e 6e 69  |pt of the "winni|
00038cc0  6e 67 22 20 73 6f 6c 75  74 69 6f 6e 20 77 69 74  |ng" solution wit|
00038cd0  68 6f 75 74 0a 63 72 61  73 68 69 6e 67 20 6f 72  |hout.crashing or|
00038ce0  20 67 69 76 69 6e 67 20  61 62 73 75 72 64 20 72  | giving absurd r|
00038cf0  65 70 6c 69 65 73 2e 0a  0a 0a 36 2e 20 20 50 6c  |eplies....6.  Pl|
00038d00  61 79 74 65 73 74 69 6e  67 0a 2d 2d 2d 2d 2d 2d  |aytesting.------|
00038d10  2d 2d 2d 2d 2d 2d 2d 2d  2d 0a 0a 54 68 65 20 64  |---------..The d|
00038d20  61 79 73 20 6f 66 20 70  6c 61 79 2d 74 65 73 74  |ays of play-test|
00038d30  69 6e 67 20 61 72 65 20  66 75 6e 20 62 75 74 20  |ing are fun but |
00038d40  68 61 72 72 6f 77 69 6e  67 2e 20 20 54 68 65 20  |harrowing.  The |
00038d50  66 69 72 73 74 20 74 68  69 6e 67 20 74 6f 20 64  |first thing to d|
00038d60  6f 20 69 73 20 74 6f 0a  67 65 74 20 61 20 66 65  |o is to.get a fe|
00038d70  77 20 22 66 72 69 65 6e  64 73 22 20 61 6e 64 20  |w "friends" and |
00038d80  6d 61 6b 65 20 74 68 65  6d 20 70 6c 61 79 20 66  |make them play f|
00038d90  6f 72 20 61 20 77 68 69  6c 65 2e 20 4c 6f 6f 6b  |or a while. Look|
00038da0  20 6f 76 65 72 20 74 68  65 69 72 0a 73 68 6f 75  | over their.shou|
00038db0  6c 64 65 72 73 2c 20 73  63 72 69 62 62 6c 65 20  |lders, scribble |
00038dc0  66 75 72 69 6f 75 73 6c  79 20 6f 6e 20 61 20 70  |furiously on a p|
00038dd0  69 65 63 65 20 6f 66 20  70 61 70 65 72 2c 20 6d  |iece of paper, m|
00038de0  6f 61 6e 20 77 69 74 68  20 64 65 73 70 61 69 72  |oan with despair|
00038df0  20 61 6e 64 0a 66 72 75  73 74 72 61 74 69 6f 6e  | and.frustration|
00038e00  2c 20 62 75 74 20 64 6f  20 6e 6f 74 20 73 70 65  |, but do not spe|
00038e10  61 6b 2e 20 20 46 6f 72  63 65 20 79 6f 75 72 73  |ak.  Force yours|
00038e20  65 6c 66 20 6e 6f 74 20  74 6f 20 65 78 70 6c 61  |elf not to expla|
00038e30  69 6e 20 6f 72 20 64 65  66 65 6e 64 2c 0a 77 68  |in or defend,.wh|
00038e40  61 74 65 76 65 72 20 74  68 65 20 70 72 6f 76 6f  |atever the provo|
00038e50  63 61 74 69 6f 6e 2e 20  20 45 78 70 65 63 74 20  |cation.  Expect |
00038e60  74 6f 20 68 61 76 65 20  61 62 75 73 65 20 68 65  |to have abuse he|
00038e70  61 70 65 64 20 6f 6e 20  79 6f 75 2c 20 61 6e 64  |aped on you, and|
00038e80  20 62 65 61 72 20 75 70  0a 6e 6f 62 6c 79 20 75  | bear up.nobly u|
00038e90  6e 64 65 72 20 74 68 65  20 73 74 72 61 69 6e 2e  |nder the strain.|
00038ea0  20 20 54 6f 20 71 75 6f  74 65 20 44 61 76 65 20  |  To quote Dave |
00038eb0  4c 65 62 6c 69 6e 67 20  28 6f 6e 20 74 65 73 74  |Lebling (on test|
00038ec0  69 6e 67 20 22 53 75 73  70 65 63 74 22 2c 20 66  |ing "Suspect", f|
00038ed0  72 6f 6d 0a 74 68 65 20  22 4e 65 77 20 5a 6f 72  |rom.the "New Zor|
00038ee0  6b 20 54 69 6d 65 73 22  29 3a 0a 0a 20 20 20 3e  |k Times"):..   >|
00038ef0  20 42 41 52 54 45 4e 44  45 52 2c 20 47 49 56 45  | BARTENDER, GIVE|
00038f00  20 4d 45 20 41 20 44 52  49 4e 4b 0a 20 20 20 22  | ME A DRINK.   "|
00038f10  53 6f 72 72 79 2c 20 49  27 76 65 20 62 65 65 6e  |Sorry, I've been|
00038f20  20 68 69 72 65 64 20 74  6f 20 6d 69 78 20 64 72  | hired to mix dr|
00038f30  69 6e 6b 73 20 61 6e 64  20 74 68 61 74 27 73 20  |inks and that's |
00038f40  61 6c 6c 2e 22 0a 0a 20  20 20 3e 20 44 41 4e 43  |all."..   > DANC|
00038f50  45 20 57 49 54 48 20 41  4c 49 43 49 41 0a 20 20  |E WITH ALICIA.  |
00038f60  20 57 68 69 63 68 20 41  6c 69 63 69 61 20 64 6f  | Which Alicia do|
00038f70  20 79 6f 75 20 6d 65 61  6e 2c 20 41 6c 69 63 69  | you mean, Alici|
00038f80  61 20 6f 72 20 74 68 65  20 6f 76 65 72 63 6f 61  |a or the overcoa|
00038f90  74 3f 0a 0a 20 20 20 56  65 72 6f 6e 69 63 61 27  |t?..   Veronica'|
00038fa0  73 20 62 6f 64 79 20 69  73 20 73 6c 75 6d 70 65  |s body is slumpe|
00038fb0  64 20 62 65 68 69 6e 64  20 74 68 65 20 64 65 73  |d behind the des|
00038fc0  6b 2c 20 73 74 72 61 6e  67 6c 65 64 20 77 69 74  |k, strangled wit|
00038fd0  68 20 61 20 6c 61 72 69  61 74 2e 0a 20 20 20 3e  |h a lariat..   >|
00038fe0  20 54 41 4c 4b 20 54 4f  20 56 45 52 4f 4e 49 43  | TALK TO VERONIC|
00038ff0  41 0a 20 20 20 56 65 72  6f 6e 69 63 61 27 73 20  |A.   Veronica's |
00039000  62 6f 64 79 20 69 73 20  6c 69 73 74 65 6e 69 6e  |body is listenin|
00039010  67 2e 0a 0a 20 20 20 4c  69 74 74 6c 65 20 62 75  |g...   Little bu|
00039020  67 73 2c 20 79 6f 75 20  6b 6e 6f 77 3f 20 20 54  |gs, you know?  T|
00039030  68 69 6e 67 73 20 6e 6f  20 6f 6e 65 20 77 6f 75  |hings no one wou|
00039040  6c 64 20 6e 6f 74 69 63  65 2e 20 20 41 74 20 74  |ld notice.  At t|
00039050  68 69 73 20 70 6f 69 6e  74 20 74 68 65 0a 20 20  |his point the.  |
00039060  20 74 65 73 74 65 72 27  73 20 6a 6f 62 20 69 73  | tester's job is|
00039070  20 66 61 69 72 6c 79 20  65 61 73 79 2e 20 20 54  | fairly easy.  T|
00039080  68 65 20 73 74 6f 72 79  20 69 73 20 6c 69 6b 65  |he story is like|
00039090  20 61 20 68 6f 75 73 65  20 6f 66 20 63 61 72 64  | a house of card|
000390a0  73 20 2d 2d 20 69 74 0a  20 20 20 6c 6f 6f 6b 73  |s -- it.   looks|
000390b0  20 70 72 65 74 74 79 20  73 6f 6c 69 64 20 62 75  | pretty solid bu|
000390c0  74 20 74 68 65 20 73 6c  69 67 68 74 65 73 74 20  |t the slightest |
000390d0  74 6f 75 63 68 20 63 6f  6c 6c 61 70 73 65 73 20  |touch collapses |
000390e0  69 74 2e 2e 2e 0a 0a 41  66 74 65 72 20 61 20 63  |it.....After a c|
000390f0  6c 65 61 6e 69 6e 67 2d  75 70 20 65 78 65 72 63  |leaning-up exerc|
00039100  69 73 65 20 28 61 6e 64  20 74 68 65 72 65 27 73  |ise (and there's|
00039110  20 73 74 69 6c 6c 20 74  69 6d 65 20 74 6f 20 72  | still time to r|
00039120  65 74 68 69 6e 6b 20 61  6e 64 0a 72 65 64 72 61  |ethink and.redra|
00039130  66 74 29 2c 20 67 69 76  65 20 74 68 65 20 67 61  |ft), give the ga|
00039140  6d 65 20 74 6f 20 61 20  66 65 77 20 62 72 61 76  |me to a few brav|
00039150  65 20 62 65 74 61 2d 74  65 73 74 65 72 73 2e 20  |e beta-testers. |
00039160  20 49 6e 73 69 73 74 20  6f 6e 20 72 65 70 6f 72  | Insist on repor|
00039170  74 73 20 69 6e 0a 77 72  69 74 69 6e 67 20 6f 72  |ts in.writing or|
00039180  20 65 6d 61 69 6c 2c 20  6f 72 20 73 6f 6d 65 20  | email, or some |
00039190  63 6f 6e 63 72 65 74 65  20 66 6f 72 6d 2c 20 61  |concrete form, a|
000391a0  6e 64 20 69 66 20 79 6f  75 20 63 61 6e 20 70 65  |nd if you can pe|
000391b0  72 73 75 61 64 65 20 74  68 65 20 74 65 73 74 65  |rsuade the teste|
000391c0  72 73 0a 74 68 65 6e 20  74 72 79 20 74 6f 20 67  |rs.then try to g|
000391d0  65 74 20 61 20 73 65 72  69 65 73 20 6f 66 20 72  |et a series of r|
000391e0  65 70 6f 72 74 73 2c 20  6f 6e 65 20 61 74 20 61  |eports, one at a|
000391f0  20 74 69 6d 65 2c 20 72  61 74 68 65 72 20 74 68  | time, rather th|
00039200  61 6e 20 77 61 69 74 69  6e 67 20 61 0a 6d 6f 6e  |an waiting a.mon|
00039210  74 68 20 66 6f 72 20 61  6e 20 65 70 69 63 20 6c  |th for an epic l|
00039220  69 73 74 20 6f 66 20 62  75 67 73 2e 20 20 4b 65  |ist of bugs.  Ke|
00039230  65 70 20 69 6e 20 74 6f  75 63 68 20 74 6f 20 6d  |ep in touch to m|
00039240  61 6b 65 20 73 75 72 65  20 74 68 65 20 74 65 73  |ake sure the tes|
00039250  74 65 72 73 20 61 72 65  0a 6e 6f 74 20 75 74 74  |ters are.not utt|
00039260  65 72 6c 79 20 73 74 75  63 6b 20 62 65 63 61 75  |erly stuck becau|
00039270  73 65 20 61 20 70 75 7a  7a 6c 65 20 69 73 20 69  |se a puzzle is i|
00039280  6d 70 6f 73 73 69 62 6c  65 20 64 75 65 20 74 6f  |mpossible due to|
00039290  20 61 20 62 75 67 2c 20  6f 72 20 64 75 65 20 74  | a bug, or due t|
000392a0  6f 20 69 74 0a 6a 75 73  74 20 62 65 69 6e 67 20  |o it.just being |
000392b0  66 61 72 20 74 6f 6f 20  68 61 72 64 2e 20 20 44  |far too hard.  D|
000392c0  6f 6e 27 74 20 67 69 76  65 20 68 69 6e 74 73 20  |on't give hints |
000392d0  75 6e 6c 65 73 73 20 74  68 65 79 20 61 72 65 20  |unless they are |
000392e0  61 73 6b 65 64 20 66 6f  72 2e 0a 0a 50 6c 61 79  |asked for...Play|
000392f0  2d 74 65 73 74 69 6e 67  20 77 69 6c 6c 20 70 72  |-testing will pr|
00039300  6f 64 75 63 65 20 61 20  67 6f 6f 64 20 31 30 30  |oduce a good 100|
00039310  20 6f 72 20 73 6f 20 62  75 67 73 2c 20 6d 6f 73  | or so bugs, mos|
00039320  74 6c 79 20 61 77 65 73  6f 6d 65 6c 79 20 74 72  |tly awesomely tr|
00039330  69 76 69 61 6c 0a 61 6e  64 20 65 61 73 69 6c 79  |ivial.and easily|
00039340  20 66 69 78 65 64 2e 20  20 53 74 69 6c 6c 2c 20  | fixed.  Still, |
00039350  65 78 70 65 63 74 20 61  20 66 65 77 20 63 61 74  |expect a few cat|
00039360  61 73 74 72 6f 70 68 65  73 2e 0a 0a 47 6f 6f 64  |astrophes...Good|
00039370  20 70 6c 61 79 2d 74 65  73 74 65 72 73 20 61 72  | play-testers ar|
00039380  65 20 77 6f 72 74 68 20  74 68 65 69 72 20 77 65  |e worth their we|
00039390  69 67 68 74 20 69 6e 20  67 6f 6c 64 2e 20 20 54  |ight in gold.  T|
000393a0  68 65 79 20 74 72 79 20  74 68 69 6e 67 73 20 69  |hey try things i|
000393b0  6e 20 61 0a 73 79 73 74  65 6d 61 74 69 63 61 6c  |n a.systematical|
000393c0  6c 79 20 70 65 72 76 65  72 73 65 20 77 61 79 2e  |ly perverse way.|
000393d0  20 20 54 6f 20 71 75 6f  74 65 20 4d 69 63 68 61  |  To quote Micha|
000393e0  65 6c 20 4b 69 6e 79 6f  6e 2c 20 77 68 6f 73 65  |el Kinyon, whose|
000393f0  20 65 66 66 65 63 74 20  6d 61 79 20 62 65 0a 66  | effect may be.f|
00039400  65 6c 74 20 61 6c 6d 6f  73 74 20 65 76 65 72 79  |elt almost every|
00039410  77 68 65 72 65 20 69 6e  20 22 43 75 72 73 65 73  |where in "Curses|
00039420  22 2c 0a 0a 20 20 20 41  20 74 65 73 74 65 72 20  |",..   A tester |
00039430  77 69 74 68 20 61 20 6e  65 77 20 76 65 72 62 20  |with a new verb |
00039440  69 73 20 6c 69 6b 65 20  61 20 6b 69 64 20 77 69  |is like a kid wi|
00039450  74 68 20 61 20 68 61 6d  6d 65 72 3b 20 65 76 65  |th a hammer; eve|
00039460  72 79 20 70 72 6f 62 6c  65 6d 0a 20 20 20 73 65  |ry problem.   se|
00039470  65 6d 73 20 6c 69 6b 65  20 61 20 6e 61 69 6c 2e  |ems like a nail.|
00039480  0a 0a 41 6e 64 20 68 6f  77 20 65 6c 73 65 20 77  |..And how else w|
00039490  6f 75 6c 64 20 79 6f 75  20 6b 6e 6f 77 20 77 68  |ould you know wh|
000394a0  65 74 68 65 72 20 22 73  63 72 61 70 65 20 70 61  |ether "scrape pa|
000394b0  72 72 6f 74 22 20 70 72  6f 64 75 63 65 64 20 61  |rrot" produced a|
000394c0  20 73 65 6e 73 69 62 6c  65 0a 72 65 70 6c 79 20  | sensible.reply |
000394d0  6f 72 20 6e 6f 74 3f 0a  0a 55 6e 6c 65 73 73 20  |or not?..Unless |
000394e0  74 68 65 72 65 20 69 73  20 72 65 61 73 6f 6e 20  |there is reason |
000394f0  6e 6f 74 20 74 6f 20 28  62 65 63 61 75 73 65 20  |not to (because |
00039500  79 6f 75 20 6b 6e 6f 77  20 6d 6f 72 65 20 74 68  |you know more th|
00039510  61 6e 20 74 68 65 79 20  64 6f 20 61 62 6f 75 74  |an they do about|
00039520  20 68 6f 77 0a 74 68 65  20 70 6c 6f 74 20 77 69  | how.the plot wi|
00039530  6c 6c 20 77 6f 72 6b 20  6f 75 74 29 2c 20 6c 69  |ll work out), li|
00039540  73 74 65 6e 20 74 6f 20  77 68 61 74 20 74 68 65  |sten to what the|
00039550  20 70 6c 61 79 2d 74 65  73 74 65 72 73 20 73 61  | play-testers sa|
00039560  79 20 61 62 6f 75 74 20  73 74 79 6c 65 20 61 6e  |y about style an|
00039570  64 0a 63 6f 6e 73 69 73  74 65 6e 63 79 20 74 6f  |d.consistency to|
00039580  6f 2e 20 20 42 65 20 73  75 72 65 20 61 6c 73 6f  |o.  Be sure also|
00039590  20 74 6f 20 63 72 65 64  69 74 20 74 68 65 6d 20  | to credit them |
000395a0  73 6f 6d 65 77 68 65 72  65 20 69 6e 20 74 68 65  |somewhere in the|
000395b0  20 67 61 6d 65 2e 0a 0a  0a 37 2e 20 20 49 74 27  | game....7.  It'|
000395c0  73 20 4e 65 76 65 72 20  46 69 6e 69 73 68 65 64  |s Never Finished|
000395d0  0a 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |.---------------|
000395e0  2d 2d 2d 2d 2d 2d 2d 2d  0a 0a 47 61 6d 65 73 20  |--------..Games |
000395f0  61 72 65 20 6e 65 76 65  72 20 66 69 6e 69 73 68  |are never finish|
00039600  65 64 2e 20 20 54 68 65  72 65 27 73 20 61 6c 77  |ed.  There's alw|
00039610  61 79 73 20 6f 6e 65 20  6d 6f 72 65 20 62 75 67  |ays one more bug|
00039620  2c 20 6f 72 20 6f 6e 65  20 6d 6f 72 65 20 6d 65  |, or one more me|
00039630  73 73 61 67 65 0a 77 68  69 63 68 20 63 6f 75 6c  |ssage.which coul|
00039640  64 20 62 65 20 69 6d 70  72 6f 76 65 64 2c 20 6f  |d be improved, o|
00039650  72 20 6f 6e 65 20 6d 6f  72 65 20 6c 69 74 74 6c  |r one more littl|
00039660  65 20 63 75 74 65 20 72  65 70 6c 79 20 74 6f 20  |e cute reply to |
00039670  70 75 74 20 69 6e 2e 20  20 44 65 62 75 67 67 69  |put in.  Debuggi|
00039680  6e 67 0a 69 73 20 61 20  63 72 65 61 74 69 76 65  |ng.is a creative|
00039690  20 70 72 6f 63 65 73 73  20 61 6e 64 20 61 64 64  | process and add|
000396a0  73 20 74 6f 20 74 68 65  20 6c 69 66 65 20 6f 66  |s to the life of|
000396b0  20 74 68 65 20 67 61 6d  65 2e 20 20 54 68 65 20  | the game.  The |
000396c0  66 69 72 73 74 0a 69 6e  63 61 72 6e 61 74 69 6f  |first.incarnatio|
000396d0  6e 20 6f 66 20 6d 79 20  67 61 6d 65 20 22 43 75  |n of my game "Cu|
000396e0  72 73 65 73 22 20 77 61  73 20 66 69 6e 69 73 68  |rses" was finish|
000396f0  65 64 20 61 66 74 65 72  20 61 62 6f 75 74 20 38  |ed after about 8|
00039700  30 4b 20 6f 66 20 63 6f  64 69 6e 67 2c 20 62 75  |0K of coding, bu|
00039710  74 0a 61 66 74 65 72 20  70 6c 61 79 2d 74 65 73  |t.after play-tes|
00039720  74 69 6e 67 20 72 6f 73  65 20 74 6f 20 31 32 38  |ting rose to 128|
00039730  4b 20 6c 6f 6e 67 2e 20  20 49 6e 20 6f 74 68 65  |K long.  In othe|
00039740  72 20 77 6f 72 64 73 2c  20 6f 76 65 72 20 61 20  |r words, over a |
00039750  74 68 69 72 64 20 6f 66  0a 61 20 67 61 6d 65 20  |third of.a game |
00039760  69 73 20 64 65 76 6f 74  65 64 20 74 6f 20 22 69  |is devoted to "i|
00039770  72 72 65 6c 65 76 61 6e  74 22 20 66 65 61 74 75  |rrelevant" featu|
00039780  72 65 73 2c 20 62 6c 69  6e 64 20 61 6c 6c 65 79  |res, blind alley|
00039790  73 2c 20 66 6c 69 70 70  61 6e 74 20 72 65 70 6c  |s, flippant repl|
000397a0  69 65 73 0a 61 6e 64 20  74 68 65 20 6c 69 6b 65  |ies.and the like|
000397b0  2e 0a 0a 52 6f 75 67 68  6c 79 20 32 30 30 20 62  |...Roughly 200 b|
000397c0  75 67 73 20 69 6e 20 22  43 75 72 73 65 73 22 20  |ugs in "Curses" |
000397d0  68 61 76 65 20 62 65 65  6e 20 73 70 6f 74 74 65  |have been spotte|
000397e0  64 20 73 69 6e 63 65 20  69 74 20 77 61 73 20 72  |d since it was r|
000397f0  65 6c 65 61 73 65 64 0a  70 75 62 6c 69 63 61 6c  |eleased.publical|
00039800  6c 79 20 6f 6e 65 20 79  65 61 72 20 61 67 6f 20  |ly one year ago |
00039810  28 49 20 68 61 76 65 20  72 65 63 65 69 76 65 64  |(I have received|
00039820  20 77 65 6c 6c 20 6f 76  65 72 20 61 20 74 68 6f  | well over a tho|
00039830  75 73 61 6e 64 20 65 6d  61 69 6c 20 6d 65 73 73  |usand email mess|
00039840  61 67 65 73 0a 6f 6e 20  74 68 65 20 73 75 62 6a  |ages.on the subj|
00039850  65 63 74 29 2c 20 61 6e  64 20 74 68 61 74 20 77  |ect), and that w|
00039860  61 73 20 61 66 74 65 72  20 70 6c 61 79 2d 74 65  |as after play-te|
00039870  73 74 69 6e 67 20 68 61  64 20 62 65 65 6e 20 22  |sting had been "|
00039880  66 69 6e 69 73 68 65 64  22 2e 20 20 41 62 6f 75  |finished".  Abou|
00039890  74 0a 6f 6e 63 65 20 61  20 77 65 65 6b 20 49 20  |t.once a week I |
000398a0  6d 61 6b 65 20 74 68 69  73 20 77 65 65 6b 27 73  |make this week's|
000398b0  20 63 6f 72 72 65 63 74  69 6f 6e 73 2c 20 61 6e  | corrections, an|
000398c0  64 20 61 62 6f 75 74 20  6f 6e 63 65 20 65 76 65  |d about once eve|
000398d0  72 79 20 74 68 72 65 65  0a 6d 6f 6e 74 68 73 20  |ry three.months |
000398e0  49 20 72 65 2d 69 73 73  75 65 20 74 68 65 20 6d  |I re-issue the m|
000398f0  65 6e 64 65 64 20 76 65  72 73 69 6f 6e 2e 20 20  |ended version.  |
00039900  54 68 75 73 2c 20 6d 61  6e 79 20 70 65 6f 70 6c  |Thus, many peopl|
00039910  65 20 77 68 6f 20 73 75  67 67 65 73 74 65 64 0a  |e who suggested.|
00039920  6c 69 74 74 6c 65 20 65  78 74 65 6e 73 69 6f 6e  |little extension|
00039930  73 20 61 6e 64 20 72 65  70 61 69 72 73 20 68 61  |s and repairs ha|
00039940  76 65 20 67 72 65 61 74  6c 79 20 63 6f 6e 74 72  |ve greatly contr|
00039950  69 62 75 74 65 64 20 74  6f 20 74 68 65 20 67 61  |ibuted to the ga|
00039960  6d 65 2c 20 61 6e 64 0a  74 68 61 74 27 73 20 77  |me, and.that's w|
00039970  68 79 20 74 68 65 72 65  20 61 72 65 20 73 6f 20  |hy there are so |
00039980  6d 61 6e 79 20 6e 61 6d  65 73 20 69 6e 20 74 68  |many names in th|
00039990  65 20 63 72 65 64 69 74  73 2e 0a 0a 0a 38 2e 20  |e credits....8. |
000399a0  20 41 66 74 65 72 77 6f  72 64 0a 2d 2d 2d 2d 2d  | Afterword.-----|
000399b0  2d 2d 2d 2d 2d 2d 2d 2d  0a 0a 41 6e 20 61 64 76  |--------..An adv|
000399c0  65 6e 74 75 72 65 20 67  61 6d 65 2c 20 63 75 72  |enture game, cur|
000399d0  69 6f 75 73 6c 79 2c 20  69 73 20 6f 6e 65 20 6f  |iously, is one o|
000399e0  66 20 74 68 65 20 6d 6f  73 74 20 73 61 74 69 73  |f the most satis|
000399f0  66 79 69 6e 67 20 77 6f  72 6b 73 20 74 6f 20 68  |fying works to h|
00039a00  61 76 65 0a 77 72 69 74  74 65 6e 3a 20 70 65 72  |ave.written: per|
00039a10  68 61 70 73 20 62 65 63  61 75 73 65 20 6f 6e 65  |haps because one|
00039a20  20 63 61 6e 20 61 6c 77  61 79 73 20 70 6f 6c 69  | can always poli|
00039a30  73 68 20 69 74 20 61 20  6c 69 74 74 6c 65 20 66  |sh it a little f|
00039a40  75 72 74 68 65 72 2c 20  70 65 72 68 61 70 73 0a  |urther, perhaps.|
00039a50  62 65 63 61 75 73 65 20  69 74 20 68 61 73 20 73  |because it has s|
00039a60  6f 20 6d 61 6e 79 20 68  69 64 64 65 6e 20 61 6e  |o many hidden an|
00039a70  64 20 73 65 63 72 65 74  20 70 6f 73 73 69 62 69  |d secret possibi|
00039a80  6c 69 74 69 65 73 2c 20  70 65 72 68 61 70 73 20  |lities, perhaps |
00039a90  62 65 63 61 75 73 65 0a  73 6f 6d 65 74 68 69 6e  |because.somethin|
00039aa0  67 20 69 73 20 6d 61 64  65 20 61 73 20 77 65 6c  |g is made as wel|
00039ab0  6c 20 61 73 20 77 72 69  74 74 65 6e 2e 20 20 46  |l as written.  F|
00039ac0  6f 72 20 6d 79 73 65 6c  66 2c 20 74 68 6f 75 67  |or myself, thoug|
00039ad0  68 2c 20 70 65 72 68 61  70 73 20 61 6c 73 6f 0a  |h, perhaps also.|
00039ae0  62 65 63 61 75 73 65 20  65 61 63 68 20 64 61 79  |because each day|
00039af0  20 73 6f 6d 65 62 6f 64  79 20 6e 65 77 20 6d 61  | somebody new ma|
00039b00  79 20 77 61 6e 64 65 72  20 69 6e 74 6f 20 69 74  |y wander into it|
00039b10  73 20 77 6f 72 6c 64 2c  20 61 73 20 49 20 64 69  |s world, as I di|
00039b20  64 20 77 68 65 6e 0a 6f  63 63 61 73 69 6f 6e 61  |d when.occasiona|
00039b30  6c 6c 79 20 74 61 6b 65  6e 20 74 6f 20 61 20 44  |lly taken to a D|
00039b40  69 67 69 74 61 6c 20 6d  61 69 6e 66 72 61 6d 65  |igital mainframe|
00039b50  20 69 6e 20 74 68 65 20  31 39 37 30 73 2c 20 74  | in the 1970s, t|
00039b60  68 72 6f 75 67 68 20 61  20 64 61 72 6b 0a 77 61  |hrough a dark.wa|
00039b70  72 72 65 6e 20 6f 66 20  70 61 73 73 61 67 65 73  |rren of passages|
00039b80  20 75 6e 74 69 64 69 65  72 20 65 76 65 6e 20 74  | untidier even t|
00039b90  68 61 6e 20 6d 79 20 62  65 64 72 6f 6f 6d 3a 20  |han my bedroom: |
00039ba0  73 6f 20 74 68 61 74 20  74 68 65 20 67 6c 6f 77  |so that the glow|
00039bb0  20 6f 66 20 74 68 65 0a  77 6f 72 64 73 20 68 61  | of the.words ha|
00039bc0  73 20 6e 6f 74 20 71 75  69 74 65 20 66 61 64 65  |s not quite fade|
00039bd0  64 20 66 72 6f 6d 20 6d  79 20 65 79 65 73 2e 0a  |d from my eyes..|
00039be0  0a 0a 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |..--------------|
00039bf0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00039c20  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0a 43 31  |-------------.C1|
00039c30  2e 20 41 20 48 65 6c 6c  6f 20 43 72 75 65 6c 20  |. A Hello Cruel |
00039c40  57 6f 72 6c 64 20 70 72  6f 67 72 61 6d 0a 2d 2d  |World program.--|
00039c50  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00039c90  2d 2d 2d 2d 2d 2d 2d 2d  2d 0a 0a 0a 3e 20 20 20  |---------...>   |
00039ca0  21 0a 3e 20 20 20 21 20  41 20 67 72 65 61 74 20  |!.>   ! A great |
00039cb0  73 74 65 70 20 62 61 63  6b 77 61 72 64 20 69 6e  |step backward in|
00039cc0  20 69 6e 74 65 72 61 63  74 69 76 65 20 66 69 63  | interactive fic|
00039cd0  74 69 6f 6e 2e 2e 2e 0a  3e 20 20 20 21 0a 3e 0a  |tion....>   !.>.|
00039ce0  3e 20 20 20 4f 62 6a 65  63 74 20 68 69 6c 6c 73  |>   Object hills|
00039cf0  69 64 65 20 22 42 61 72  65 20 68 69 6c 6c 73 69  |ide "Bare hillsi|
00039d00  64 65 22 20 6e 6f 74 68  69 6e 67 3b 0a 3e 0a 3e  |de" nothing;.>.>|
00039d10  20 20 20 67 6c 6f 62 61  6c 20 70 6c 61 63 65 20  |   global place |
00039d20  3d 20 68 69 6c 6c 73 69  64 65 3b 0a 3e 20 20 20  |= hillside;.>   |
00039d30  67 6c 6f 62 61 6c 20 73  63 6f 72 65 20 3d 20 30  |global score = 0|
00039d40  3b 0a 3e 20 20 20 67 6c  6f 62 61 6c 20 74 75 72  |;.>   global tur|
00039d50  6e 73 20 3d 20 31 3b 0a  3e 20 20 20 0a 3e 20 20  |ns = 1;.>   .>  |
00039d60  20 5b 20 4d 61 69 6e 3b  0a 3e 20 20 20 0a 3e 20  | [ Main;.>   .> |
00039d70  20 20 20 20 70 72 69 6e  74 20 22 5e 5e 5e 5e 5e  |    print "^^^^^|
00039d80  5e 5e 5e 5e 5e 5e 59 6f  75 20 77 61 6b 65 20 75  |^^^^^^You wake u|
00039d90  70 2c 20 73 68 69 76 65  72 69 6e 67 20 74 6f 20  |p, shivering to |
00039da0  73 65 65 20 74 68 61 74  20 4d 6f 72 67 6f 74 68  |see that Morgoth|
00039db0  20 5c 0a 3e 20 20 20 20  20 20 20 20 20 20 20 20  | \.>            |
00039dc0  74 68 65 20 46 6c 61 74  75 6c 65 6e 74 20 44 65  |the Flatulent De|
00039dd0  76 69 6c 20 69 73 20 74  6f 77 65 72 69 6e 67 20  |vil is towering |
00039de0  6f 76 65 72 20 79 6f 75  2e 2e 2e 5e 5e 22 3b 0a  |over you...^^";.|
00039df0  3e 20 20 20 20 20 4d 65  73 73 61 67 65 28 29 3b  |>     Message();|
00039e00  0a 3e 20 20 20 20 20 70  72 69 6e 74 20 22 5e 5e  |.>     print "^^|
00039e10  2e 2e 2e 61 6e 64 20 68  65 20 73 71 75 61 73 68  |...and he squash|
00039e20  65 73 20 79 6f 75 20 65  66 66 6f 72 74 6c 65 73  |es you effortles|
00039e30  73 6c 79 2e 5c 0a 3e 20  20 20 20 20 20 20 20 20  |sly.\.>         |
00039e40  20 20 20 5e 5e 20 20 20  2a 2a 2a 20 59 6f 75 20  |   ^^   *** You |
00039e50  68 61 76 65 20 64 69 65  64 20 2a 2a 2a 5e 5e 5e  |have died ***^^^|
00039e60  5e 5e 22 3b 0a 3e 20 20  20 0a 3e 20 20 20 20 20  |^^";.>   .>     |
00039e70  71 75 69 74 3b 0a 3e 20  20 20 5d 3b 0a 3e 20 20  |quit;.>   ];.>  |
00039e80  20 0a 3e 20 20 20 5b 20  4d 65 73 73 61 67 65 20  | .>   [ Message |
00039e90  69 3b 0a 3e 0a 3e 20 20  20 20 20 70 72 69 6e 74  |i;.>.>     print|
00039ea0  20 22 48 45 4c 4c 4f 20  43 52 55 45 4c 20 57 4f  | "HELLO CRUEL WO|
00039eb0  52 4c 44 5e 5c 0a 3e 20  20 20 20 20 20 20 20 20  |RLD^\.>         |
00039ec0  20 20 20 41 20 4e 6f 6e  2d 49 6e 74 65 72 61 63  |   A Non-Interac|
00039ed0  74 69 76 65 20 44 65 6d  6f 6e 73 74 72 61 74 69  |tive Demonstrati|
00039ee0  6f 6e 5e 5c 0a 3e 20 20  20 20 20 20 20 20 20 20  |on^\.>          |
00039ef0  20 20 43 6f 70 79 72 69  67 68 74 20 28 63 29 20  |  Copyright (c) |
00039f00  31 39 39 34 20 62 79 20  47 72 61 68 61 6d 20 4e  |1994 by Graham N|
00039f10  65 6c 73 6f 6e 2e 20 41  6c 6c 20 72 69 67 68 74  |elson. All right|
00039f20  73 20 72 65 73 65 72 76  65 64 2e 5e 5c 0a 3e 20  |s reserved.^\.> |
00039f30  20 20 20 20 20 20 20 20  20 20 20 52 65 6c 65 61  |           Relea|
00039f40  73 65 20 22 2c 20 28 30  2d 2d 3e 31 29 20 26 20  |se ", (0-->1) & |
00039f50  24 30 33 66 66 2c 20 22  20 2f 20 53 65 72 69 61  |$03ff, " / Seria|
00039f60  6c 20 6e 75 6d 62 65 72  20 22 3b 0a 3e 20 20 20  |l number ";.>   |
00039f70  0a 3e 20 20 20 20 20 66  6f 72 20 28 69 3d 31 38  |.>     for (i=18|
00039f80  20 3a 20 69 3c 32 34 20  3a 20 69 2b 2b 29 20 70  | : i<24 : i++) p|
00039f90  72 69 6e 74 20 63 68 61  72 20 30 2d 3e 69 3b 20  |rint char 0->i; |
00039fa0  20 6e 65 77 5f 6c 69 6e  65 3b 0a 3e 20 20 20 5d  | new_line;.>   ]|
00039fb0  3b 0a 3e 20 20 20 0a 0a  4e 6f 74 65 20 74 68 61  |;.>   ..Note tha|
00039fc0  74 20 74 68 65 20 66 61  6d 69 6c 69 61 72 20 62  |t the familiar b|
00039fd0  61 6e 6e 65 72 20 68 61  73 20 74 6f 20 62 65 20  |anner has to be |
00039fe0  70 72 6f 64 75 63 65 64  20 62 79 20 79 6f 75 72  |produced by your|
00039ff0  20 63 6f 64 65 2e 20 20  42 79 0a 63 6f 6e 76 65  | code.  By.conve|
0003a000  6e 74 69 6f 6e 2c 20 74  68 65 20 66 69 72 73 74  |ntion, the first|
0003a010  20 77 6f 72 64 20 28 61  74 20 62 79 74 65 73 20  | word (at bytes |
0003a020  32 20 61 6e 64 20 33 29  20 6f 66 20 74 68 65 20  |2 and 3) of the |
0003a030  66 69 6c 65 20 69 73 20  74 68 65 20 72 65 6c 65  |file is the rele|
0003a040  61 73 65 0a 6e 75 6d 62  65 72 2c 20 61 6e 64 20  |ase.number, and |
0003a050  74 68 69 73 20 69 73 20  77 68 61 74 20 69 73 20  |this is what is |
0003a060  73 65 74 20 62 79 20 74  68 65 20 52 45 4c 45 41  |set by the RELEA|
0003a070  53 45 20 63 6f 6d 6d 61  6e 64 2e 20 20 49 6e 20  |SE command.  In |
0003a080  74 68 69 73 20 66 69 6c  65 20 74 68 65 72 65 0a  |this file there.|
0003a090  69 73 6e 27 74 20 61 20  52 45 4c 45 41 53 45 20  |isn't a RELEASE |
0003a0a0  63 6f 6d 6d 61 6e 64 2c  20 73 6f 20 69 74 20 63  |command, so it c|
0003a0b0  6f 6d 65 73 20 6f 75 74  20 61 73 20 31 2e 20 20  |omes out as 1.  |
0003a0c0  42 79 74 65 73 20 31 38  20 74 6f 20 32 33 20 63  |Bytes 18 to 23 c|
0003a0d0  6f 6e 74 61 69 6e 20 74  68 65 0a 73 65 72 69 61  |ontain the.seria|
0003a0e0  6c 20 6e 75 6d 62 65 72  2c 20 6f 72 20 69 6e 20  |l number, or in |
0003a0f0  66 61 63 74 20 74 68 65  20 73 65 72 69 61 6c 20  |fact the serial |
0003a100  73 74 72 69 6e 67 20 6f  66 20 41 53 43 49 49 20  |string of ASCII |
0003a110  63 68 61 72 61 63 74 65  72 73 2e 20 20 42 79 20  |characters.  By |
0003a120  63 75 73 74 6f 6d 0a 61  6e 64 20 74 72 61 64 69  |custom.and tradi|
0003a130  74 69 6f 6e 2c 20 74 68  65 73 65 20 61 72 65 20  |tion, these are |
0003a140  74 68 65 20 64 61 74 65  20 6f 66 20 63 6f 6d 70  |the date of comp|
0003a150  69 6c 61 74 69 6f 6e 20  61 72 72 61 6e 67 65 64  |ilation arranged|
0003a160  20 59 59 4d 4d 44 44 2c  20 61 6e 64 20 49 6e 66  | YYMMDD, and Inf|
0003a170  6f 72 6d 0a 73 65 74 73  20 74 68 65 73 65 20 61  |orm.sets these a|
0003a180  75 74 6f 6d 61 74 69 63  61 6c 6c 79 2e 0a 0a 4e  |utomatically...N|
0003a190  6f 74 65 20 61 6c 73 6f  20 74 68 61 74 20 4d 65  |ote also that Me|
0003a1a0  73 73 61 67 65 20 68 61  64 20 74 6f 20 62 65 20  |ssage had to be |
0003a1b0  61 20 73 65 70 61 72 61  74 65 20 72 6f 75 74 69  |a separate routi|
0003a1c0  6e 65 20 73 69 6e 63 65  20 77 65 20 6e 65 65 64  |ne since we need|
0003a1d0  65 64 20 61 20 6c 6f 63  61 6c 0a 76 61 72 69 61  |ed a local.varia|
0003a1e0  62 6c 65 2c 20 61 6e 64  20 4d 61 69 6e 20 69 73  |ble, and Main is|
0003a1f0  20 6e 6f 74 20 70 65 72  6d 69 74 74 65 64 20 74  | not permitted t|
0003a200  6f 20 68 61 76 65 20 6c  6f 63 61 6c 20 76 61 72  |o have local var|
0003a210  69 61 62 6c 65 73 20 6f  66 20 69 74 73 20 6f 77  |iables of its ow|
0003a220  6e 2e 0a 0a 28 54 68 65  20 61 62 6f 76 65 20 73  |n...(The above s|
0003a230  6f 75 72 63 65 20 68 61  73 20 63 68 61 6e 67 65  |ource has change|
0003a240  64 20 61 20 6c 69 74 74  6c 65 20 73 69 6e 63 65  |d a little since|
0003a250  20 74 68 65 20 66 69 72  73 74 20 72 65 6c 65 61  | the first relea|
0003a260  73 65 3a 20 69 66 20 74  68 65 0a 6f 62 6a 65 63  |se: if the.objec|
0003a270  74 20 69 73 20 6e 6f 74  20 69 6e 63 6c 75 64 65  |t is not include|
0003a280  64 2c 20 74 68 65 6e 20  73 6f 6d 65 20 69 6e 74  |d, then some int|
0003a290  65 72 70 72 65 74 65 72  73 20 28 6e 6f 74 20 74  |erpreters (not t|
0003a2a0  68 65 20 49 6e 66 6f 54  61 73 6b 46 6f 72 63 65  |he InfoTaskForce|
0003a2b0  20 6f 6e 65 29 0a 77 68  69 63 68 20 76 6f 6c 75  | one).which volu|
0003a2c0  6e 74 61 72 69 6c 79 20  64 69 73 70 6c 61 79 20  |ntarily display |
0003a2d0  74 68 65 20 73 74 61 74  75 73 20 6c 69 6e 65 20  |the status line |
0003a2e0  28 77 68 65 6e 20 6e 6f  74 20 61 73 6b 65 64 20  |(when not asked |
0003a2f0  74 6f 20 64 6f 20 73 6f  29 2c 20 67 65 74 20 69  |to do so), get i|
0003a300  6e 0a 61 20 71 75 61 6e  64 61 72 79 20 70 72 69  |n.a quandary pri|
0003a310  6e 74 69 6e 67 20 61 20  6c 6f 63 61 74 69 6f 6e  |nting a location|
0003a320  2c 20 74 69 6d 65 20 61  6e 64 20 73 63 6f 72 65  |, time and score|
0003a330  2e 20 20 53 6f 20 66 6f  72 20 74 68 65 69 72 20  |.  So for their |
0003a340  62 65 6e 65 66 69 74 2c  20 68 65 72 65 0a 61 72  |benefit, here.ar|
0003a350  65 20 61 6c 6c 20 74 68  72 65 65 2e 29 0a 0a 4f  |e all three.)..O|
0003a360  6e 20 6d 79 20 6d 61 63  68 69 6e 65 20 28 61 6e  |n my machine (an|
0003a370  20 41 63 6f 72 6e 20 41  72 63 68 69 6d 65 64 65  | Acorn Archimede|
0003a380  73 20 41 35 30 30 30 29  2c 20 63 6f 6d 70 69 6c  |s A5000), compil|
0003a390  69 6e 67 20 77 69 74 68  20 73 74 61 74 69 73 74  |ing with statist|
0003a3a0  69 63 73 0a 70 72 6f 64  75 63 65 73 20 73 6f 6d  |ics.produces som|
0003a3b0  65 74 68 69 6e 67 20 6c  69 6b 65 3a 0a 0a 20 20  |ething like:..  |
0003a3c0  2a 69 6e 66 6f 72 6d 20  2d 73 20 68 65 6c 6c 6f  |*inform -s hello|
0003a3d0  77 0a 20 20 41 72 63 68  69 6d 65 64 65 73 20 49  |w.  Archimedes I|
0003a3e0  6e 66 6f 72 6d 20 35 20  28 76 31 32 35 39 2f 61  |nform 5 (v1259/a|
0003a3f0  74 29 0a 20 20 49 6e 70  75 74 20 33 31 20 6c 69  |t).  Input 31 li|
0003a400  6e 65 73 20 28 34 30 20  73 74 61 74 65 6d 65 6e  |nes (40 statemen|
0003a410  74 73 2c 20 36 39 30 20  63 68 61 72 73 29 0a 20  |ts, 690 chars). |
0003a420  20 56 65 72 73 69 6f 6e  20 33 20 28 53 74 61 6e  | Version 3 (Stan|
0003a430  64 61 72 64 29 20 73 74  6f 72 79 20 66 69 6c 65  |dard) story file|
0003a440  0a 20 20 20 20 20 31 20  6f 62 6a 65 63 74 73 20  |.     1 objects |
0003a450  28 6d 61 78 69 6d 75 6d  20 32 35 35 29 20 20 20  |(maximum 255)   |
0003a460  20 20 20 20 20 30 20 64  69 63 74 69 6f 6e 61 72  |     0 dictionar|
0003a470  79 20 65 6e 74 72 69 65  73 20 28 6d 61 78 69 6d  |y entries (maxim|
0003a480  75 6d 20 37 35 30 29 0a  20 20 20 20 20 30 20 61  |um 750).     0 a|
0003a490  74 74 72 69 62 75 74 65  73 20 28 6d 61 78 69 6d  |ttributes (maxim|
0003a4a0  75 6d 20 33 32 29 20 20  20 20 20 20 30 20 70 72  |um 32)      0 pr|
0003a4b0  6f 70 65 72 74 69 65 73  20 28 6d 61 78 69 6d 75  |operties (maximu|
0003a4c0  6d 20 33 30 29 0a 20 20  20 20 20 30 20 61 64 6a  |m 30).     0 adj|
0003a4d0  65 63 74 69 76 65 73 20  28 6d 61 78 69 6d 75 6d  |ectives (maximum|
0003a4e0  20 32 34 30 29 20 20 20  20 20 30 20 76 65 72 62  | 240)     0 verb|
0003a4f0  73 20 28 6d 61 78 69 6d  75 6d 20 31 31 30 29 0a  |s (maximum 110).|
0003a500  20 20 20 20 20 30 20 61  63 74 69 6f 6e 73 20 28  |     0 actions (|
0003a510  6d 61 78 69 6d 75 6d 20  31 32 35 29 20 20 20 20  |maximum 125)    |
0003a520  20 20 20 20 30 20 61 62  62 72 65 76 69 61 74 69  |    0 abbreviati|
0003a530  6f 6e 73 20 28 6d 61 78  69 6d 75 6d 20 36 34 29  |ons (maximum 64)|
0003a540  0a 20 20 20 20 20 33 20  67 6c 6f 62 61 6c 73 20  |.     3 globals |
0003a550  28 6d 61 78 69 6d 75 6d  20 32 34 30 29 20 20 20  |(maximum 240)   |
0003a560  20 20 20 34 38 30 20 76  61 72 69 61 62 6c 65 20  |   480 variable |
0003a570  73 70 61 63 65 20 28 6d  61 78 69 6d 75 6d 20 31  |space (maximum 1|
0003a580  35 30 30 29 0a 20 20 20  31 38 39 20 73 79 6d 62  |500).   189 symb|
0003a590  6f 6c 73 20 28 6d 61 78  69 6d 75 6d 20 34 30 30  |ols (maximum 400|
0003a5a0  30 29 20 20 20 20 20 20  20 32 20 72 6f 75 74 69  |0)       2 routi|
0003a5b0  6e 65 73 20 28 6d 61 78  69 6d 75 6d 20 34 30 30  |nes (maximum 400|
0003a5c0  29 0a 20 20 20 33 31 34  20 63 68 61 72 61 63 74  |).   314 charact|
0003a5d0  65 72 73 20 6f 66 20 74  65 78 74 20 28 63 6f 6d  |ers of text (com|
0003a5e0  70 72 65 73 73 65 64 20  74 6f 20 32 37 36 20 62  |pressed to 276 b|
0003a5f0  79 74 65 73 2c 20 72 61  74 65 20 30 2e 38 37 38  |ytes, rate 0.878|
0003a600  29 0a 20 20 4f 75 74 70  75 74 20 73 74 6f 72 79  |).  Output story|
0003a610  20 66 69 6c 65 20 69 73  20 20 20 31 2e 35 4b 20  | file is   1.5K |
0003a620  6c 6f 6e 67 20 28 6d 61  78 69 6d 75 6d 20 31 32  |long (maximum 12|
0003a630  38 4b 29 0a 20 20 45 73  73 65 6e 74 69 61 6c 20  |8K).  Essential |
0003a640  73 69 7a 65 20 31 31 35  30 20 62 79 74 65 73 3a  |size 1150 bytes:|
0003a650  20 31 32 39 39 32 32 20  72 65 6d 61 69 6e 69 6e  | 129922 remainin|
0003a660  67 0a 20 20 43 6f 6d 70  6c 65 74 65 64 20 69 6e  |g.  Completed in|
0003a670  20 31 20 73 65 63 6f 6e  64 73 2e 0a 0a 6f 72 2c  | 1 seconds...or,|
0003a680  20 69 6e 20 76 65 72 73  69 6f 6e 2d 35 20 6d 6f  | in version-5 mo|
0003a690  64 65 3a 0a 0a 20 20 2a  69 6e 66 6f 72 6d 20 2d  |de:..  *inform -|
0003a6a0  73 76 35 20 68 65 6c 6c  6f 77 0a 20 20 41 72 63  |sv5 hellow.  Arc|
0003a6b0  68 69 6d 65 64 65 73 20  49 6e 66 6f 72 6d 20 35  |himedes Inform 5|
0003a6c0  20 28 76 31 32 35 39 2f  61 74 29 0a 20 20 49 6e  | (v1259/at).  In|
0003a6d0  70 75 74 20 33 31 20 6c  69 6e 65 73 20 28 34 30  |put 31 lines (40|
0003a6e0  20 73 74 61 74 65 6d 65  6e 74 73 2c 20 36 39 30  | statements, 690|
0003a6f0  20 63 68 61 72 73 29 0a  20 20 56 65 72 73 69 6f  | chars).  Versio|
0003a700  6e 20 35 20 28 41 64 76  61 6e 63 65 64 29 20 73  |n 5 (Advanced) s|
0003a710  74 6f 72 79 20 66 69 6c  65 0a 20 20 20 20 20 31  |tory file.     1|
0003a720  20 6f 62 6a 65 63 74 73  20 28 6d 61 78 69 6d 75  | objects (maximu|
0003a730  6d 20 35 31 31 29 20 20  20 20 20 20 20 20 30 20  |m 511)        0 |
0003a740  64 69 63 74 69 6f 6e 61  72 79 20 65 6e 74 72 69  |dictionary entri|
0003a750  65 73 20 28 6d 61 78 69  6d 75 6d 20 37 35 30 29  |es (maximum 750)|
0003a760  0a 20 20 20 20 20 30 20  61 74 74 72 69 62 75 74  |.     0 attribut|
0003a770  65 73 20 28 6d 61 78 69  6d 75 6d 20 34 38 29 20  |es (maximum 48) |
0003a780  20 20 20 20 20 30 20 70  72 6f 70 65 72 74 69 65  |     0 propertie|
0003a790  73 20 28 6d 61 78 69 6d  75 6d 20 36 32 29 0a 20  |s (maximum 62). |
0003a7a0  20 20 20 20 30 20 61 64  6a 65 63 74 69 76 65 73  |    0 adjectives|
0003a7b0  20 28 6d 61 78 69 6d 75  6d 20 32 34 30 29 20 20  | (maximum 240)  |
0003a7c0  20 20 20 30 20 76 65 72  62 73 20 28 6d 61 78 69  |   0 verbs (maxi|
0003a7d0  6d 75 6d 20 31 31 30 29  0a 20 20 20 20 20 30 20  |mum 110).     0 |
0003a7e0  61 63 74 69 6f 6e 73 20  28 6d 61 78 69 6d 75 6d  |actions (maximum|
0003a7f0  20 31 32 35 29 20 20 20  20 20 20 20 20 30 20 61  | 125)        0 a|
0003a800  62 62 72 65 76 69 61 74  69 6f 6e 73 20 28 6d 61  |bbreviations (ma|
0003a810  78 69 6d 75 6d 20 36 34  29 0a 20 20 20 20 20 33  |ximum 64).     3|
0003a820  20 67 6c 6f 62 61 6c 73  20 28 6d 61 78 69 6d 75  | globals (maximu|
0003a830  6d 20 32 34 30 29 20 20  20 20 20 20 34 38 30 20  |m 240)      480 |
0003a840  76 61 72 69 61 62 6c 65  20 73 70 61 63 65 20 28  |variable space (|
0003a850  6d 61 78 69 6d 75 6d 20  31 35 30 30 29 0a 20 20  |maximum 1500).  |
0003a860  20 31 38 39 20 73 79 6d  62 6f 6c 73 20 28 6d 61  | 189 symbols (ma|
0003a870  78 69 6d 75 6d 20 34 30  30 30 29 20 20 20 20 20  |ximum 4000)     |
0003a880  20 20 32 20 72 6f 75 74  69 6e 65 73 20 28 6d 61  |  2 routines (ma|
0003a890  78 69 6d 75 6d 20 34 30  30 29 0a 20 20 20 33 31  |ximum 400).   31|
0003a8a0  34 20 63 68 61 72 61 63  74 65 72 73 20 6f 66 20  |4 characters of |
0003a8b0  74 65 78 74 20 28 63 6f  6d 70 72 65 73 73 65 64  |text (compressed|
0003a8c0  20 74 6f 20 32 37 36 20  62 79 74 65 73 2c 20 72  | to 276 bytes, r|
0003a8d0  61 74 65 20 30 2e 38 37  38 29 0a 20 20 4f 75 74  |ate 0.878).  Out|
0003a8e0  70 75 74 20 73 74 6f 72  79 20 66 69 6c 65 20 69  |put story file i|
0003a8f0  73 20 20 20 31 2e 35 4b  20 6c 6f 6e 67 20 28 6d  |s   1.5K long (m|
0003a900  61 78 69 6d 75 6d 20 32  35 36 4b 29 0a 20 20 45  |aximum 256K).  E|
0003a910  73 73 65 6e 74 69 61 6c  20 73 69 7a 65 20 31 32  |ssential size 12|
0003a920  31 36 20 62 79 74 65 73  3a 20 32 36 30 39 32 38  |16 bytes: 260928|
0003a930  20 72 65 6d 61 69 6e 69  6e 67 0a 20 20 43 6f 6d  | remaining.  Com|
0003a940  70 6c 65 74 65 64 20 69  6e 20 31 20 73 65 63 6f  |pleted in 1 seco|
0003a950  6e 64 73 2e 0a 0a 28 54  68 65 20 73 65 63 6f 6e  |nds...(The secon|
0003a960  64 20 62 65 69 6e 67 20  6d 6f 73 74 6c 79 20 63  |d being mostly c|
0003a970  6f 6e 73 75 6d 65 64 20  69 6e 20 70 72 69 6e 74  |onsumed in print|
0003a980  69 6e 67 20 6f 75 74 20  74 68 65 20 73 74 61 74  |ing out the stat|
0003a990  69 73 74 69 63 73 2e 20  20 49 6e 0a 70 72 61 63  |istics.  In.prac|
0003a9a0  74 69 63 65 20 74 68 65  20 63 6f 6d 70 69 6c 61  |tice the compila|
0003a9b0  74 69 6f 6e 20 74 69 6d  65 20 69 73 20 72 6f 75  |tion time is rou|
0003a9c0  67 68 6c 79 20 70 72 6f  70 6f 72 74 69 6f 6e 61  |ghly proportiona|
0003a9d0  6c 20 74 6f 20 74 68 65  20 6f 75 74 70 75 74 20  |l to the output |
0003a9e0  6c 65 6e 67 74 68 2c 0a  61 6e 64 20 74 79 70 69  |length,.and typi|
0003a9f0  63 61 6c 6c 79 20 74 61  6b 65 73 20 30 2e 35 20  |cally takes 0.5 |
0003aa00  73 65 63 6f 6e 64 73 20  70 65 72 20 4b 20 6f 66  |seconds per K of|
0003aa10  20 73 74 6f 72 79 20 66  69 6c 65 20 6f 6e 20 6d  | story file on m|
0003aa20  79 20 6d 61 63 68 69 6e  65 2e 29 0a 0a 54 68 65  |y machine.)..The|
0003aa30  20 22 65 73 73 65 6e 74  69 61 6c 20 73 69 7a 65  | "essential size|
0003aa40  22 20 69 73 20 74 68 65  20 6e 75 6d 62 65 72 20  |" is the number |
0003aa50  6f 66 20 62 79 74 65 73  20 61 63 74 75 61 6c 6c  |of bytes actuall|
0003aa60  79 20 75 73 65 64 3a 20  74 68 65 20 73 74 6f 72  |y used: the stor|
0003aa70  79 20 66 69 6c 65 0a 69  73 20 72 6f 75 6e 64 65  |y file.is rounde|
0003aa80  64 20 75 70 20 69 6e 20  73 69 7a 65 20 74 6f 20  |d up in size to |
0003aa90  61 6e 20 65 78 61 63 74  20 6e 75 6d 62 65 72 20  |an exact number |
0003aaa0  6f 66 20 35 31 32 2d 62  79 74 65 20 62 6c 6f 63  |of 512-byte bloc|
0003aab0  6b 73 2e 20 54 68 65 20  6e 75 6d 62 65 72 0a 72  |ks. The number.r|
0003aac0  65 6d 61 69 6e 69 6e 67  20 69 73 20 74 68 65 20  |emaining is the |
0003aad0  61 63 74 75 61 6c 20 6e  75 6d 62 65 72 20 6f 66  |actual number of|
0003aae0  20 62 79 74 65 73 20 66  72 65 65 20 69 6e 20 74  | bytes free in t|
0003aaf0  68 65 20 5a 2d 6d 61 63  68 69 6e 65 2e 0a 0a 4e  |he Z-machine...N|
0003ab00  6f 74 65 3a 20 69 66 20  79 6f 75 20 74 72 79 20  |ote: if you try |
0003ab10  63 6f 6d 70 69 6c 69 6e  67 20 74 68 65 20 65 78  |compiling the ex|
0003ab20  61 6d 70 6c 65 20 67 61  6d 65 73 2c 20 61 6e 64  |ample games, and|
0003ab30  20 67 65 74 20 64 69 66  66 65 72 65 6e 74 0a 73  | get different.s|
0003ab40  74 61 74 69 73 74 69 63  73 20 6f 75 74 70 75 74  |tatistics output|
0003ab50  73 2c 20 64 6f 20 6e 6f  74 20 77 6f 72 72 79 3b  |s, do not worry;|
0003ab60  20 69 74 20 70 72 6f 62  61 62 6c 79 20 6d 65 61  | it probably mea|
0003ab70  6e 73 20 79 6f 75 27 72  65 20 75 73 69 6e 67 20  |ns you're using |
0003ab80  61 20 6c 61 74 65 72 0a  76 65 72 73 69 6f 6e 20  |a later.version |
0003ab90  6f 66 20 49 6e 66 6f 72  6d 20 74 68 61 6e 20 74  |of Inform than t|
0003aba0  68 65 20 6f 6e 65 20 74  68 61 74 20 70 72 69 6e  |he one that prin|
0003abb0  74 65 64 20 74 68 65 20  61 62 6f 76 65 2e 20 20  |ted the above.  |
0003abc0  53 69 6d 69 6c 61 72 6c  79 2c 0a 64 6f 20 6e 6f  |Similarly,.do no|
0003abd0  74 20 77 6f 72 72 79 20  69 66 20 79 6f 75 72 20  |t worry if your |
0003abe0  63 6f 6d 70 69 6c 65 64  20 73 74 6f 72 79 20 66  |compiled story f|
0003abf0  69 6c 65 20 73 68 6f 77  73 20 64 69 66 66 65 72  |ile shows differ|
0003ac00  65 6e 63 65 73 20 77 69  74 68 20 74 68 65 0a 6f  |ences with the.o|
0003ac10  62 6a 65 63 74 20 63 6f  64 65 20 69 6e 20 74 68  |bject code in th|
0003ac20  65 20 61 72 63 68 69 76  65 2e 20 20 49 74 20 77  |e archive.  It w|
0003ac30  69 6c 6c 20 63 65 72 74  61 69 6e 6c 79 20 68 61  |ill certainly ha|
0003ac40  76 65 20 61 20 64 69 66  66 65 72 65 6e 74 20 73  |ve a different s|
0003ac50  65 72 69 61 6c 0a 6e 75  6d 62 65 72 20 28 69 2e  |erial.number (i.|
0003ac60  65 2e 2c 20 64 61 74 65  20 6f 66 20 63 6f 6d 70  |e., date of comp|
0003ac70  69 6c 61 74 69 6f 6e 29  20 61 6e 64 20 70 6f 73  |ilation) and pos|
0003ac80  73 69 62 6c 79 20 61 6c  73 6f 20 61 20 64 69 66  |sibly also a dif|
0003ac90  66 65 72 65 6e 74 20 49  6e 66 6f 72 6d 0a 76 65  |ferent Inform.ve|
0003aca0  72 73 69 6f 6e 20 6e 75  6d 62 65 72 20 65 6d 62  |rsion number emb|
0003acb0  65 64 64 65 64 20 69 6e  20 69 74 2e 0a 0a 49 66  |edded in it...If|
0003acc0  20 74 68 65 20 22 54 6f  79 73 68 6f 70 22 20 65  | the "Toyshop" e|
0003acd0  78 61 6d 70 6c 65 20 28  73 65 65 20 62 65 6c 6f  |xample (see belo|
0003ace0  77 29 20 63 6f 6d 70 69  6c 65 73 20 77 69 74 68  |w) compiles with|
0003acf0  6f 75 74 20 49 6e 66 6f  72 6d 20 65 72 72 6f 72  |out Inform error|
0003ad00  73 20 61 6e 64 0a 70 6c  61 79 73 20 70 72 6f 70  |s and.plays prop|
0003ad10  65 72 6c 79 2c 20 74 68  65 6e 20 49 6e 66 6f 72  |erly, then Infor|
0003ad20  6d 20 69 73 20 70 72 6f  62 61 62 6c 79 20 77 6f  |m is probably wo|
0003ad30  72 6b 69 6e 67 20 4f 4b  2e 0a 0a 41 73 20 61 6e  |rking OK...As an|
0003ad40  20 65 78 74 72 65 6d 65  20 65 78 61 6d 70 6c 65  | extreme example|
0003ad50  2c 20 73 74 61 74 69 73  74 69 63 73 20 66 6f 72  |, statistics for|
0003ad60  20 22 43 75 72 73 65 73  22 20 6c 6f 6f 6b 20 73  | "Curses" look s|
0003ad70  6f 6d 65 74 68 69 6e 67  20 6c 69 6b 65 3a 0a 0a  |omething like:..|
0003ad80  20 20 41 72 63 68 69 6d  65 64 65 73 20 49 6e 66  |  Archimedes Inf|
0003ad90  6f 72 6d 20 35 20 28 76  31 32 35 39 2f 61 74 29  |orm 5 (v1259/at)|
0003ada0  0a 20 20 49 6e 70 75 74  20 31 35 37 30 38 20 6c  |.  Input 15708 l|
0003adb0  69 6e 65 73 20 28 33 32  35 30 31 20 73 74 61 74  |ines (32501 stat|
0003adc0  65 6d 65 6e 74 73 2c 20  36 34 34 35 30 32 20 63  |ements, 644502 c|
0003add0  68 61 72 73 29 20 66 72  6f 6d 20 32 20 66 69 6c  |hars) from 2 fil|
0003ade0  65 73 0a 20 20 56 65 72  73 69 6f 6e 20 35 20 28  |es.  Version 5 (|
0003adf0  41 64 76 61 6e 63 65 64  29 20 73 74 6f 72 79 20  |Advanced) story |
0003ae00  66 69 6c 65 0a 20 20 20  34 36 35 20 6f 62 6a 65  |file.   465 obje|
0003ae10  63 74 73 20 28 6d 61 78  69 6d 75 6d 20 35 31 31  |cts (maximum 511|
0003ae20  29 20 20 20 20 20 31 32  32 35 20 64 69 63 74 69  |)     1225 dicti|
0003ae30  6f 6e 61 72 79 20 65 6e  74 72 69 65 73 20 28 6d  |onary entries (m|
0003ae40  61 78 69 6d 75 6d 20 31  33 30 30 29 0a 20 20 20  |aximum 1300).   |
0003ae50  20 33 37 20 61 74 74 72  69 62 75 74 65 73 20 28  | 37 attributes (|
0003ae60  6d 61 78 69 6d 75 6d 20  34 38 29 20 20 20 20 20  |maximum 48)     |
0003ae70  33 30 20 70 72 6f 70 65  72 74 69 65 73 20 28 6d  |30 properties (m|
0003ae80  61 78 69 6d 75 6d 20 36  32 29 0a 20 20 20 20 33  |aximum 62).    3|
0003ae90  31 20 61 64 6a 65 63 74  69 76 65 73 20 28 6d 61  |1 adjectives (ma|
0003aea0  78 69 6d 75 6d 20 32 34  30 29 20 20 20 31 32 31  |ximum 240)   121|
0003aeb0  20 76 65 72 62 73 20 28  6d 61 78 69 6d 75 6d 20  | verbs (maximum |
0003aec0  31 34 30 29 0a 20 20 20  31 34 35 20 61 63 74 69  |140).   145 acti|
0003aed0  6f 6e 73 20 28 6d 61 78  69 6d 75 6d 20 31 35 30  |ons (maximum 150|
0003aee0  29 20 20 20 20 20 20 20  36 34 20 61 62 62 72 65  |)       64 abbre|
0003aef0  76 69 61 74 69 6f 6e 73  20 28 6d 61 78 69 6d 75  |viations (maximu|
0003af00  6d 20 36 34 29 0a 20 20  20 31 33 32 20 67 6c 6f  |m 64).   132 glo|
0003af10  62 61 6c 73 20 28 6d 61  78 69 6d 75 6d 20 32 34  |bals (maximum 24|
0003af20  30 29 20 20 20 20 20 31  35 35 38 20 76 61 72 69  |0)     1558 vari|
0003af30  61 62 6c 65 20 73 70 61  63 65 20 28 6d 61 78 69  |able space (maxi|
0003af40  6d 75 6d 20 31 36 30 30  29 0a 20 20 35 34 38 33  |mum 1600).  5483|
0003af50  20 73 79 6d 62 6f 6c 73  20 28 6d 61 78 69 6d 75  | symbols (maximu|
0003af60  6d 20 36 34 30 30 29 20  20 20 20 20 34 35 38 20  |m 6400)     458 |
0003af70  72 6f 75 74 69 6e 65 73  20 28 6d 61 78 69 6d 75  |routines (maximu|
0003af80  6d 20 35 30 30 29 0a 20  20 20 20 20 30 20 63 6c  |m 500).     0 cl|
0003af90  61 73 73 65 73 20 28 6d  61 78 69 6d 75 6d 20 33  |asses (maximum 3|
0003afa0  32 29 20 20 20 20 20 20  20 20 20 30 20 66 61 6b  |2)         0 fak|
0003afb0  65 20 61 63 74 69 6f 6e  73 20 28 6d 61 78 69 6d  |e actions (maxim|
0003afc0  75 6d 20 31 35 30 29 0a  20 20 32 34 37 36 35 34  |um 150).  247654|
0003afd0  20 63 68 61 72 61 63 74  65 72 73 20 6f 66 20 74  | characters of t|
0003afe0  65 78 74 20 28 63 6f 6d  70 72 65 73 73 65 64 20  |ext (compressed |
0003aff0  74 6f 20 31 35 36 32 37  32 20 62 79 74 65 73 2c  |to 156272 bytes,|
0003b000  20 72 61 74 65 20 30 2e  36 33 31 29 0a 20 20 4f  | rate 0.631).  O|
0003b010  75 74 70 75 74 20 73 74  6f 72 79 20 66 69 6c 65  |utput story file|
0003b020  20 69 73 20 32 32 33 2e  35 4b 20 6c 6f 6e 67 20  | is 223.5K long |
0003b030  28 6d 61 78 69 6d 75 6d  20 32 35 36 4b 29 0a 20  |(maximum 256K). |
0003b040  20 45 73 73 65 6e 74 69  61 6c 20 73 69 7a 65 20  | Essential size |
0003b050  32 32 38 33 39 32 20 62  79 74 65 73 3a 20 33 33  |228392 bytes: 33|
0003b060  37 35 32 20 72 65 6d 61  69 6e 69 6e 67 0a 20 20  |752 remaining.  |
0003b070  43 6f 6d 70 6c 65 74 65  64 20 69 6e 20 39 38 20  |Completed in 98 |
0003b080  73 65 63 6f 6e 64 73 2e  0a 0a 0a 2d 2d 2d 2d 2d  |seconds....-----|
0003b090  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0003b0d0  2d 2d 2d 2d 2d 2d 0a 43  32 2e 20 22 54 6f 79 73  |------.C2. "Toys|
0003b0e0  68 6f 70 22 3a 20 61 20  73 6d 61 6c 6c 20 74 6f  |hop": a small to|
0003b0f0  79 20 67 61 6d 65 0a 2d  2d 2d 2d 2d 2d 2d 2d 2d  |y game.---------|
0003b100  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0003b140  2d 2d 0a 0a 0a 54 68 65  20 22 48 65 6c 6c 6f 20  |--...The "Hello |
0003b150  43 72 75 65 6c 20 57 6f  72 6c 64 22 20 70 72 6f  |Cruel World" pro|
0003b160  67 72 61 6d 20 69 73 20  65 6e 74 69 63 69 6e 67  |gram is enticing|
0003b170  6c 79 20 73 68 6f 72 74  20 61 6e 64 20 65 61 73  |ly short and eas|
0003b180  79 2c 20 62 75 74 20 6f  6e 6c 79 0a 62 65 63 61  |y, but only.beca|
0003b190  75 73 65 20 69 74 20 64  6f 65 73 6e 27 74 20 63  |use it doesn't c|
0003b1a0  6f 6e 74 61 69 6e 20 61  20 70 61 72 73 65 72 2e  |ontain a parser.|
0003b1b0  20 20 41 20 66 75 6c 6c  79 20 66 75 6e 63 74 69  |  A fully functi|
0003b1c0  6f 6e 69 6e 67 20 70 61  72 73 65 72 20 69 73 20  |oning parser is |
0003b1d0  68 61 72 64 0a 77 6f 72  6b 20 74 6f 20 77 72 69  |hard.work to wri|
0003b1e0  74 65 2c 20 61 6e 64 20  6f 63 63 75 70 69 65 73  |te, and occupies|
0003b1f0  20 61 20 67 6f 6f 64 20  64 65 61 6c 20 6f 66 20  | a good deal of |
0003b200  22 49 6e 66 6f 72 6d 22  20 63 6f 64 65 2e 20 20  |"Inform" code.  |
0003b210  42 65 73 69 64 65 73 20  74 68 69 73 2c 0a 74 68  |Besides this,.th|
0003b220  65 20 65 76 65 72 79 64  61 79 20 6d 65 63 68 61  |e everyday mecha|
0003b230  6e 69 63 73 20 6f 66 20  61 6e 20 61 64 76 65 6e  |nics of an adven|
0003b240  74 75 72 65 20 67 61 6d  65 20 69 6e 76 6f 6c 76  |ture game involv|
0003b250  65 20 6d 6f 72 65 20 63  6f 64 69 6e 67 20 74 68  |e more coding th|
0003b260  61 6e 20 6d 6f 73 74 0a  64 65 73 69 67 6e 65 72  |an most.designer|
0003b270  73 20 77 61 6e 74 20 74  6f 20 67 6f 20 69 6e 74  |s want to go int|
0003b280  6f 2c 20 61 74 20 6c 65  61 73 74 20 61 74 20 74  |o, at least at t|
0003b290  68 65 20 6f 75 74 73 65  74 2e 0a 0a 22 54 6f 79  |he outset..."Toy|
0003b2a0  73 68 6f 70 22 20 69 73  20 61 20 66 69 76 65 20  |shop" is a five |
0003b2b0  66 69 6e 67 65 72 20 65  78 65 72 63 69 73 65 20  |finger exercise |
0003b2c0  77 69 74 68 20 74 68 65  20 4c 69 62 72 61 72 79  |with the Library|
0003b2d0  2e 20 20 49 74 20 63 6f  6e 74 61 69 6e 73 20 61  |.  It contains a|
0003b2e0  0a 68 65 61 70 20 6f 66  20 65 78 61 6d 70 6c 65  |.heap of example|
0003b2f0  20 6f 62 6a 65 63 74 73  20 64 65 6d 6f 6e 73 74  | objects demonst|
0003b300  72 61 74 69 6e 67 20 76  61 72 69 6f 75 73 20 75  |rating various u|
0003b310  6e 75 73 75 61 6c 20 66  65 61 74 75 72 65 73 2c  |nusual features,|
0003b320  20 62 75 74 20 69 73 0a  6e 6f 74 20 72 65 61 6c  | but is.not real|
0003b330  6c 79 20 61 20 67 61 6d  65 2e 20 20 4e 6f 74 65  |ly a game.  Note|
0003b340  2c 20 66 6f 72 20 69 6e  73 74 61 6e 63 65 2c 20  |, for instance, |
0003b350  74 68 61 74 3a 0a 0a 20  20 49 6e 20 74 68 65 20  |that:..  In the |
0003b360  64 61 72 6b 20 72 6f 6f  6d 2c 20 73 68 75 74 74  |dark room, shutt|
0003b370  69 6e 67 20 74 68 65 20  66 6c 75 6f 72 65 73 63  |ing the fluoresc|
0003b380  65 6e 74 20 62 61 6c 6c  20 75 70 20 69 6e 20 74  |ent ball up in t|
0003b390  68 65 20 73 74 65 65 6c  20 62 6f 78 0a 6d 61 6b  |he steel box.mak|
0003b3a0  65 73 20 74 68 65 20 72  6f 6f 6d 20 67 6f 20 64  |es the room go d|
0003b3b0  61 72 6b 2c 20 62 75 74  20 69 6e 20 74 68 65 20  |ark, but in the |
0003b3c0  67 6c 61 73 73 20 62 6f  78 20 64 6f 65 73 20 6e  |glass box does n|
0003b3d0  6f 74 3b 0a 0a 20 20 54  68 65 20 62 75 69 6c 64  |ot;..  The build|
0003b3e0  69 6e 67 20 62 6c 6f 63  6b 73 20 28 69 6d 70 6c  |ing blocks (impl|
0003b3f0  65 6d 65 6e 74 65 64 20  62 79 20 61 20 63 6c 61  |emented by a cla|
0003b400  73 73 29 20 63 61 6e 20  62 65 20 70 69 6c 65 64  |ss) can be piled|
0003b410  20 74 68 72 65 65 20 68  69 67 68 2c 0a 62 75 74  | three high,.but|
0003b420  20 63 6f 6c 6c 61 70 73  65 20 69 66 20 66 6f 75  | collapse if fou|
0003b430  72 20 68 69 67 68 3a 20  68 69 67 68 65 72 20 62  |r high: higher b|
0003b440  6c 6f 63 6b 73 20 66 61  6c 6c 20 64 6f 77 6e 20  |locks fall down |
0003b450  77 68 65 6e 20 6c 6f 77  65 72 20 6f 6e 65 73 20  |when lower ones |
0003b460  61 72 65 0a 74 61 6b 65  6e 2e 20 20 4e 6f 74 65  |are.taken.  Note|
0003b470  20 74 68 65 20 77 61 79  20 70 69 6c 65 73 20 61  | the way piles a|
0003b480  72 65 20 73 70 65 63 69  61 6c 6c 79 20 64 65 73  |re specially des|
0003b490  63 72 69 62 65 64 2c 20  61 6e 64 20 74 68 61 74  |cribed, and that|
0003b4a0  20 43 68 72 69 73 0a 63  61 6e 20 70 69 6c 65 20  | Chris.can pile |
0003b4b0  74 68 65 6d 20 66 6f 75  72 20 68 69 67 68 2c 20  |them four high, |
0003b4c0  69 66 20 67 69 76 65 6e  20 74 68 65 20 62 6c 6f  |if given the blo|
0003b4d0  63 6b 73 20 61 6e 64 20  74 68 65 20 72 69 67 68  |cks and the righ|
0003b4e0  74 20 69 6e 73 74 72 75  63 74 69 6f 6e 73 3b 0a  |t instructions;.|
0003b4f0  0a 20 20 54 68 65 20 72  65 64 20 63 61 72 20 28  |.  The red car (|
0003b500  64 65 6d 6f 6e 73 74 72  61 74 69 6e 67 20 74 77  |demonstrating tw|
0003b510  6f 20 73 6f 6d 65 77 68  61 74 20 65 78 63 65 70  |o somewhat excep|
0003b520  74 69 6f 6e 61 6c 20 72  75 6c 65 73 20 61 62 6f  |tional rules abo|
0003b530  75 74 20 68 6f 77 0a 22  74 72 79 69 6e 67 20 74  |ut how."trying t|
0003b540  6f 20 64 72 69 76 65 20  61 20 76 65 68 69 63 6c  |o drive a vehicl|
0003b550  65 22 20 61 6e 64 20 22  74 72 79 69 6e 67 20 74  |e" and "trying t|
0003b560  6f 20 70 75 73 68 20 73  6f 6d 65 74 68 69 6e 67  |o push something|
0003b570  20 74 6f 20 61 20 64 69  66 66 65 72 65 6e 74 0a  | to a different.|
0003b580  6c 6f 63 61 74 69 6f 6e  22 20 61 72 65 20 73 6f  |location" are so|
0003b590  72 74 65 64 20 6f 75 74  29 20 63 61 6e 20 62 65  |rted out) can be|
0003b5a0  20 64 72 69 76 65 6e 20  61 72 6f 75 6e 64 2c 20  | driven around, |
0003b5b0  6f 72 20 70 75 73 68 65  64 3b 0a 0a 20 20 54 68  |or pushed;..  Th|
0003b5c0  65 20 70 61 64 64 65 64  20 66 6c 6f 6f 72 20 63  |e padded floor c|
0003b5d0  61 6e 20 62 65 20 6c 6f  6f 6b 65 64 20 61 74 20  |an be looked at |
0003b5e0  69 6e 20 61 6c 6c 20 74  68 72 65 65 20 6d 61 69  |in all three mai|
0003b5f0  6e 20 6c 6f 63 61 74 69  6f 6e 73 3b 0a 0a 20 20  |n locations;..  |
0003b600  54 68 65 20 68 65 6c 69  75 6d 20 62 61 6c 6c 6f  |The helium ballo|
0003b610  6f 6e 20 64 72 69 66 74  73 20 61 62 6f 75 74 20  |on drifts about |
0003b620  77 69 74 68 20 74 68 65  20 77 69 6e 64 20 77 68  |with the wind wh|
0003b630  69 63 68 20 62 6c 6f 77  73 20 69 6e 20 66 72 6f  |ich blows in fro|
0003b640  6d 20 74 68 65 0a 68 69  67 68 20 77 69 6e 64 6f  |m the.high windo|
0003b650  77 2e 0a 0a 54 68 65 20  74 6f 79 73 20 69 6e 20  |w...The toys in |
0003b660  74 68 65 20 73 68 6f 70  20 61 72 65 20 72 61 74  |the shop are rat|
0003b670  68 65 72 20 65 78 6f 74  69 63 20 6f 62 6a 65 63  |her exotic objec|
0003b680  74 73 3a 20 6d 6f 72 65  20 6f 72 64 69 6e 61 72  |ts: more ordinar|
0003b690  79 20 6f 6e 65 73 20 61  72 65 0a 64 65 6d 6f 6e  |y ones are.demon|
0003b6a0  73 74 72 61 74 65 64 20  62 79 20 74 68 65 20 22  |strated by the "|
0003b6b0  41 64 76 65 6e 74 75 72  65 22 20 65 78 61 6d 70  |Adventure" examp|
0003b6c0  6c 65 2e 20 20 28 41 6e  64 20 73 6f 6d 65 20 6f  |le.  (And some o|
0003b6d0  66 20 74 68 65 20 6f 62  6a 65 63 74 73 20 6d 61  |f the objects ma|
0003b6e0  79 0a 67 69 76 65 20 6f  6c 64 20 49 6e 66 6f 72  |y.give old Infor|
0003b6f0  6d 20 75 73 65 72 73 20  61 20 63 65 72 74 61 69  |m users a certai|
0003b700  6e 20 66 65 65 6c 69 6e  67 20 6f 66 20 64 65 6a  |n feeling of dej|
0003b710  61 2d 76 75 2e 29 0a 0a  43 6f 6d 70 69 6c 69 6e  |a-vu.)..Compilin|
0003b720  67 20 22 54 6f 79 73 68  6f 70 22 20 77 69 74 68  |g "Toyshop" with|
0003b730  20 73 74 61 74 69 73 74  69 63 73 20 73 68 6f 75  | statistics shou|
0003b740  6c 64 20 70 72 6f 64 75  63 65 20 73 6f 6d 65 74  |ld produce somet|
0003b750  68 69 6e 67 20 6c 69 6b  65 0a 0a 20 20 41 72 63  |hing like..  Arc|
0003b760  68 69 6d 65 64 65 73 20  49 6e 66 6f 72 6d 20 35  |himedes Inform 5|
0003b770  20 28 76 31 32 35 39 2f  61 74 29 0a 20 20 49 6e  | (v1259/at).  In|
0003b780  70 75 74 20 34 32 37 37  20 6c 69 6e 65 73 20 28  |put 4277 lines (|
0003b790  38 38 38 30 20 73 74 61  74 65 6d 65 6e 74 73 2c  |8880 statements,|
0003b7a0  20 31 33 38 30 30 30 20  63 68 61 72 73 29 20 66  | 138000 chars) f|
0003b7b0  72 6f 6d 20 34 20 66 69  6c 65 73 0a 20 20 56 65  |rom 4 files.  Ve|
0003b7c0  72 73 69 6f 6e 20 33 20  28 53 74 61 6e 64 61 72  |rsion 3 (Standar|
0003b7d0  64 29 20 73 74 6f 72 79  20 66 69 6c 65 0a 20 20  |d) story file.  |
0003b7e0  20 20 34 31 20 6f 62 6a  65 63 74 73 20 28 6d 61  |  41 objects (ma|
0003b7f0  78 69 6d 75 6d 20 32 35  35 29 20 20 20 20 20 20  |ximum 255)      |
0003b800  33 30 35 20 64 69 63 74  69 6f 6e 61 72 79 20 65  |305 dictionary e|
0003b810  6e 74 72 69 65 73 20 28  6d 61 78 69 6d 75 6d 20  |ntries (maximum |
0003b820  31 33 30 30 29 0a 20 20  20 20 33 30 20 61 74 74  |1300).    30 att|
0003b830  72 69 62 75 74 65 73 20  28 6d 61 78 69 6d 75 6d  |ributes (maximum|
0003b840  20 33 32 29 20 20 20 20  20 32 35 20 70 72 6f 70  | 32)     25 prop|
0003b850  65 72 74 69 65 73 20 28  6d 61 78 69 6d 75 6d 20  |erties (maximum |
0003b860  33 30 29 0a 20 20 20 20  31 39 20 61 64 6a 65 63  |30).    19 adjec|
0003b870  74 69 76 65 73 20 28 6d  61 78 69 6d 75 6d 20 32  |tives (maximum 2|
0003b880  34 30 29 20 20 20 20 37  37 20 76 65 72 62 73 20  |40)    77 verbs |
0003b890  28 6d 61 78 69 6d 75 6d  20 31 34 30 29 0a 20 20  |(maximum 140).  |
0003b8a0  20 20 38 37 20 61 63 74  69 6f 6e 73 20 28 6d 61  |  87 actions (ma|
0003b8b0  78 69 6d 75 6d 20 31 35  30 29 20 20 20 20 20 20  |ximum 150)      |
0003b8c0  20 20 30 20 61 62 62 72  65 76 69 61 74 69 6f 6e  |  0 abbreviation|
0003b8d0  73 20 28 6d 61 78 69 6d  75 6d 20 36 34 29 0a 20  |s (maximum 64). |
0003b8e0  20 20 20 39 31 20 67 6c  6f 62 61 6c 73 20 28 6d  |   91 globals (m|
0003b8f0  61 78 69 6d 75 6d 20 32  34 30 29 20 20 20 20 20  |aximum 240)     |
0003b900  31 32 34 39 20 76 61 72  69 61 62 6c 65 20 73 70  |1249 variable sp|
0003b910  61 63 65 20 28 6d 61 78  69 6d 75 6d 20 31 36 30  |ace (maximum 160|
0003b920  30 29 0a 20 20 31 38 30  37 20 73 79 6d 62 6f 6c  |0).  1807 symbol|
0003b930  73 20 28 6d 61 78 69 6d  75 6d 20 36 34 30 30 29  |s (maximum 6400)|
0003b940  20 20 20 20 20 31 38 34  20 72 6f 75 74 69 6e 65  |     184 routine|
0003b950  73 20 28 6d 61 78 69 6d  75 6d 20 35 30 30 29 0a  |s (maximum 500).|
0003b960  20 20 20 20 20 31 20 63  6c 61 73 73 65 73 20 28  |     1 classes (|
0003b970  6d 61 78 69 6d 75 6d 20  33 32 29 20 20 20 20 20  |maximum 32)     |
0003b980  20 20 20 20 33 20 66 61  6b 65 20 61 63 74 69 6f  |    3 fake actio|
0003b990  6e 73 20 28 6d 61 78 69  6d 75 6d 20 31 35 30 29  |ns (maximum 150)|
0003b9a0  0a 20 20 31 32 30 31 39  20 63 68 61 72 61 63 74  |.  12019 charact|
0003b9b0  65 72 73 20 6f 66 20 74  65 78 74 20 28 63 6f 6d  |ers of text (com|
0003b9c0  70 72 65 73 73 65 64 20  74 6f 20 39 31 36 38 20  |pressed to 9168 |
0003b9d0  62 79 74 65 73 2c 20 72  61 74 65 20 30 2e 37 36  |bytes, rate 0.76|
0003b9e0  32 29 0a 20 20 4f 75 74  70 75 74 20 73 74 6f 72  |2).  Output stor|
0003b9f0  79 20 66 69 6c 65 20 69  73 20 20 32 36 2e 35 4b  |y file is  26.5K|
0003ba00  20 6c 6f 6e 67 20 28 6d  61 78 69 6d 75 6d 20 31  | long (maximum 1|
0003ba10  32 38 4b 29 0a 20 20 45  73 73 65 6e 74 69 61 6c  |28K).  Essential|
0003ba20  20 73 69 7a 65 20 32 36  38 38 36 20 62 79 74 65  | size 26886 byte|
0003ba30  73 3a 20 31 30 34 31 38  36 20 72 65 6d 61 69 6e  |s: 104186 remain|
0003ba40  69 6e 67 0a 20 20 43 6f  6d 70 6c 65 74 65 64 20  |ing.  Completed |
0003ba50  69 6e 20 32 32 20 73 65  63 6f 6e 64 73 2e 0a 0a  |in 22 seconds...|
0003ba60  28 22 54 6f 79 73 68 6f  70 22 20 69 73 20 6f 6e  |("Toyshop" is on|
0003ba70  6c 79 20 61 20 6c 69 74  74 6c 65 20 6f 76 65 72  |ly a little over|
0003ba80  20 35 30 30 20 6c 69 6e  65 73 20 6c 6f 6e 67 3a  | 500 lines long:|
0003ba90  20 74 68 65 20 72 65 73  74 20 69 73 20 74 68 65  | the rest is the|
0003baa0  0a 6c 69 62 72 61 72 79  2e 29 0a 20 20 0a 41 67  |.library.).  .Ag|
0003bab0  61 69 6e 2c 20 64 6f 6e  27 74 20 77 6f 72 72 79  |ain, don't worry|
0003bac0  20 69 66 20 74 68 65 20  64 65 74 61 69 6c 73 20  | if the details |
0003bad0  61 72 65 20 73 6c 69 67  68 74 6c 79 20 64 69 66  |are slightly dif|
0003bae0  66 65 72 65 6e 74 2e 0a  20 20 0a 0a 2d 2d 2d 2d  |ferent..  ..----|
0003baf0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0003bb30  2d 2d 2d 2d 2d 2d 2d 0a  43 33 2e 20 20 22 41 64  |-------.C3.  "Ad|
0003bb40  76 65 6e 74 75 72 65 22  3a 20 61 20 70 6f 72 74  |venture": a port|
0003bb50  20 6f 66 20 43 6f 6c 6f  73 73 61 6c 20 43 61 76  | of Colossal Cav|
0003bb60  65 0a 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |e.--------------|
0003bb70  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0003bba0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0a 0a 0a  |-------------...|
0003bbb0  20 20 20 20 20 20 20 22  59 6f 75 20 61 72 65 20  |       "You are |
0003bbc0  69 6e 20 61 20 6d 61 7a  65 20 6f 66 20 74 77 69  |in a maze of twi|
0003bbd0  73 74 79 20 6c 69 74 74  6c 65 20 70 61 73 73 61  |sty little passa|
0003bbe0  67 65 73 2c 20 61 6c 6c  20 61 6c 69 6b 65 2e 22  |ges, all alike."|
0003bbf0  0a 0a 0a 41 73 20 61 20  6d 6f 72 65 20 73 75 62  |...As a more sub|
0003bc00  73 74 61 6e 74 69 61 6c  20 65 78 61 6d 70 6c 65  |stantial example|
0003bc10  2c 20 74 72 79 20 63 6f  6d 70 69 6c 69 6e 67 20  |, try compiling |
0003bc20  22 41 64 76 65 6e 74 75  72 65 22 2c 20 61 20 70  |"Adventure", a p|
0003bc30  6f 72 74 20 6f 66 0a 74  68 65 20 6f 72 69 67 69  |ort of.the origi|
0003bc40  6e 61 6c 20 43 72 6f 77  74 68 65 72 20 61 6e 64  |nal Crowther and|
0003bc50  20 57 6f 6f 64 73 20 61  64 76 65 6e 74 75 72 65  | Woods adventure|
0003bc60  2c 20 74 61 6b 65 6e 20  66 72 6f 6d 20 44 61 76  |, taken from Dav|
0003bc70  69 64 20 4d 2e 20 42 61  67 67 65 74 74 27 73 0a  |id M. Baggett's.|
0003bc80  65 78 63 65 6c 6c 65 6e  74 20 54 41 44 53 20 76  |excellent TADS v|
0003bc90  65 72 73 69 6f 6e 20 28  74 68 65 20 6d 6f 73 74  |ersion (the most|
0003bca0  20 66 61 69 74 68 66 75  6c 20 72 65 63 6f 6e 73  | faithful recons|
0003bcb0  74 72 75 63 74 69 6f 6e  20 6f 66 20 74 68 65 20  |truction of the |
0003bcc0  6f 72 69 67 69 6e 61 6c  0a 61 76 61 69 6c 61 62  |original.availab|
0003bcd0  6c 65 20 6f 6e 20 74 68  65 20 49 6e 74 65 72 6e  |le on the Intern|
0003bce0  65 74 2c 20 61 73 20 66  61 72 20 61 73 20 74 68  |et, as far as th|
0003bcf0  65 20 61 75 74 68 6f 72  20 63 61 6e 20 66 69 6e  |e author can fin|
0003bd00  64 29 2e 0a 0a 54 68 65  20 73 6f 75 72 63 65 20  |d)...The source |
0003bd10  63 6f 64 65 20 64 65 6d  6f 6e 73 74 72 61 74 65  |code demonstrate|
0003bd20  73 20 61 20 6e 6f 74 69  63 65 61 62 6c 79 20 64  |s a noticeably d|
0003bd30  69 66 66 65 72 65 6e 74  20 66 65 61 74 75 72 65  |ifferent feature|
0003bd40  20 6f 66 20 49 6e 66 6f  72 6d 20 35 0a 6f 76 65  | of Inform 5.ove|
0003bd50  72 20 49 6e 66 6f 72 6d  20 34 20 2d 20 74 68 65  |r Inform 4 - the|
0003bd60  72 65 20 61 72 65 20 68  61 72 64 6c 79 20 61 6e  |re are hardly an|
0003bd70  79 20 72 6f 75 74 69 6e  65 73 3a 20 61 6c 6d 6f  |y routines: almo|
0003bd80  73 74 20 61 6c 6c 20 74  68 65 20 73 6f 75 72 63  |st all the sourc|
0003bd90  65 20 63 6f 64 65 0a 69  73 20 64 65 66 69 6e 69  |e code.is defini|
0003bda0  74 69 6f 6e 73 20 6f 66  20 6f 62 6a 65 63 74 73  |tions of objects|
0003bdb0  2e 0a 0a 54 68 65 20 6d  61 67 69 63 20 77 6f 72  |...The magic wor|
0003bdc0  64 73 20 61 72 65 20 6e  69 63 65 20 65 78 61 6d  |ds are nice exam|
0003bdd0  70 6c 65 73 20 6f 66 20  75 73 65 72 2d 64 65 66  |ples of user-def|
0003bde0  69 6e 65 64 20 61 63 74  69 6f 6e 73 3b 20 74 68  |ined actions; th|
0003bdf0  65 20 64 77 61 72 76 65  73 0a 61 6e 64 20 74 68  |e dwarves.and th|
0003be00  65 20 63 61 76 65 2d 63  6c 6f 73 69 6e 67 20 6d  |e cave-closing m|
0003be10  65 63 68 61 6e 69 73 6d  20 61 72 65 20 71 75 69  |echanism are qui|
0003be20  74 65 20 65 6c 65 67 61  6e 74 6c 79 20 64 65 66  |te elegantly def|
0003be30  69 6e 65 64 20 61 73 20  64 61 65 6d 6f 6e 73 2e  |ined as daemons.|
0003be40  0a 4f 74 68 65 72 77 69  73 65 20 6d 6f 73 74 20  |.Otherwise most |
0003be50  6f 66 20 74 68 65 20 63  6f 64 65 20 69 73 20 66  |of the code is f|
0003be60  61 69 72 6c 79 20 70 6c  61 69 6e 20 61 6e 64 20  |airly plain and |
0003be70  73 74 72 61 69 67 68 74  2d 66 6f 72 77 61 72 64  |straight-forward|
0003be80  2e 0a 0a 53 74 61 74 69  73 74 69 63 73 20 73 68  |...Statistics sh|
0003be90  6f 75 6c 64 20 6c 6f 6f  6b 20 73 6f 6d 65 74 68  |ould look someth|
0003bea0  69 6e 67 20 6c 69 6b 65  3a 0a 0a 0a 20 20 41 72  |ing like:...  Ar|
0003beb0  63 68 69 6d 65 64 65 73  20 49 6e 66 6f 72 6d 20  |chimedes Inform |
0003bec0  35 20 28 76 31 32 35 39  2f 61 74 29 0a 20 20 49  |5 (v1259/at).  I|
0003bed0  6e 70 75 74 20 37 34 33  38 20 6c 69 6e 65 73 20  |nput 7438 lines |
0003bee0  28 31 33 30 30 34 20 73  74 61 74 65 6d 65 6e 74  |(13004 statement|
0003bef0  73 2c 20 32 35 34 39 38  35 20 63 68 61 72 73 29  |s, 254985 chars)|
0003bf00  20 66 72 6f 6d 20 34 20  66 69 6c 65 73 0a 20 20  | from 4 files.  |
0003bf10  56 65 72 73 69 6f 6e 20  35 20 28 41 64 76 61 6e  |Version 5 (Advan|
0003bf20  63 65 64 29 20 73 74 6f  72 79 20 66 69 6c 65 0a  |ced) story file.|
0003bf30  20 20 20 32 35 39 20 6f  62 6a 65 63 74 73 20 28  |   259 objects (|
0003bf40  6d 61 78 69 6d 75 6d 20  35 31 31 29 20 20 20 20  |maximum 511)    |
0003bf50  20 20 36 36 33 20 64 69  63 74 69 6f 6e 61 72 79  |  663 dictionary|
0003bf60  20 65 6e 74 72 69 65 73  20 28 6d 61 78 69 6d 75  | entries (maximu|
0003bf70  6d 20 31 33 30 30 29 0a  20 20 20 20 33 32 20 61  |m 1300).    32 a|
0003bf80  74 74 72 69 62 75 74 65  73 20 28 6d 61 78 69 6d  |ttributes (maxim|
0003bf90  75 6d 20 34 38 29 20 20  20 20 20 32 36 20 70 72  |um 48)     26 pr|
0003bfa0  6f 70 65 72 74 69 65 73  20 28 6d 61 78 69 6d 75  |operties (maximu|
0003bfb0  6d 20 36 32 29 0a 20 20  20 20 31 38 20 61 64 6a  |m 62).    18 adj|
0003bfc0  65 63 74 69 76 65 73 20  28 6d 61 78 69 6d 75 6d  |ectives (maximum|
0003bfd0  20 32 34 30 29 20 20 20  20 39 37 20 76 65 72 62  | 240)    97 verb|
0003bfe0  73 20 28 6d 61 78 69 6d  75 6d 20 31 34 30 29 0a  |s (maximum 140).|
0003bff0  20 20 20 31 30 37 20 61  63 74 69 6f 6e 73 20 28  |   107 actions (|
0003c000  6d 61 78 69 6d 75 6d 20  31 35 30 29 20 20 20 20  |maximum 150)    |
0003c010  20 20 20 20 30 20 61 62  62 72 65 76 69 61 74 69  |    0 abbreviati|
0003c020  6f 6e 73 20 28 6d 61 78  69 6d 75 6d 20 36 34 29  |ons (maximum 64)|
0003c030  0a 20 20 20 31 30 30 20  67 6c 6f 62 61 6c 73 20  |.   100 globals |
0003c040  28 6d 61 78 69 6d 75 6d  20 32 34 30 29 20 20 20  |(maximum 240)   |
0003c050  20 20 31 32 34 39 20 76  61 72 69 61 62 6c 65 20  |  1249 variable |
0003c060  73 70 61 63 65 20 28 6d  61 78 69 6d 75 6d 20 31  |space (maximum 1|
0003c070  36 30 30 29 0a 20 20 32  35 35 36 20 73 79 6d 62  |600).  2556 symb|
0003c080  6f 6c 73 20 28 6d 61 78  69 6d 75 6d 20 36 34 30  |ols (maximum 640|
0003c090  30 29 20 20 20 20 20 32  39 39 20 72 6f 75 74 69  |0)     299 routi|
0003c0a0  6e 65 73 20 28 6d 61 78  69 6d 75 6d 20 35 30 30  |nes (maximum 500|
0003c0b0  29 0a 20 20 20 20 20 35  20 63 6c 61 73 73 65 73  |).     5 classes|
0003c0c0  20 28 6d 61 78 69 6d 75  6d 20 33 32 29 20 20 20  | (maximum 32)   |
0003c0d0  20 20 20 20 20 20 33 20  66 61 6b 65 20 61 63 74  |      3 fake act|
0003c0e0  69 6f 6e 73 20 28 6d 61  78 69 6d 75 6d 20 31 35  |ions (maximum 15|
0003c0f0  30 29 0a 20 20 35 36 35  32 39 20 63 68 61 72 61  |0).  56529 chara|
0003c100  63 74 65 72 73 20 6f 66  20 74 65 78 74 20 28 63  |cters of text (c|
0003c110  6f 6d 70 72 65 73 73 65  64 20 74 6f 20 34 31 32  |ompressed to 412|
0003c120  31 36 20 62 79 74 65 73  2c 20 72 61 74 65 20 30  |16 bytes, rate 0|
0003c130  2e 37 32 39 29 0a 20 20  4f 75 74 70 75 74 20 73  |.729).  Output s|
0003c140  74 6f 72 79 20 66 69 6c  65 20 69 73 20 20 37 34  |tory file is  74|
0003c150  4b 20 6c 6f 6e 67 20 28  6d 61 78 69 6d 75 6d 20  |K long (maximum |
0003c160  32 35 36 4b 29 0a 20 20  45 73 73 65 6e 74 69 61  |256K).  Essentia|
0003c170  6c 20 73 69 7a 65 20 37  35 33 32 34 20 62 79 74  |l size 75324 byt|
0003c180  65 73 3a 20 31 38 36 38  32 30 20 72 65 6d 61 69  |es: 186820 remai|
0003c190  6e 69 6e 67 0a 20 20 43  6f 6d 70 6c 65 74 65 64  |ning.  Completed|
0003c1a0  20 69 6e 20 34 34 20 73  65 63 6f 6e 64 73 2e 0a  | in 44 seconds..|
0003c1b0  0a 0a 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |..--------------|
0003c1c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0003c1f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0a 43 34  |-------------.C4|
0003c200  2e 20 20 41 20 73 68 65  6c 6c 20 67 61 6d 65 20  |.  A shell game |
0003c210  74 6f 20 62 75 69 6c 64  20 6f 6e 0a 2d 2d 2d 2d  |to build on.----|
0003c220  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0003c260  2d 2d 2d 2d 2d 2d 2d 0a  0a 0a 20 20 20 20 20 20  |-------...      |
0003c270  20 22 47 69 76 65 20 74  68 65 20 70 75 62 6c 69  | "Give the publi|
0003c280  63 20 6e 6f 74 20 77 68  61 74 20 74 68 65 79 20  |c not what they |
0003c290  77 61 6e 74 20 62 75 74  20 77 68 61 74 20 74 68  |want but what th|
0003c2a0  65 79 20 6f 75 67 68 74  0a 20 20 20 20 20 20 20  |ey ought.       |
0003c2b0  20 74 6f 20 77 61 6e 74  20 61 6e 64 20 64 6f 6e  | to want and don|
0003c2c0  74 2e 22 0a 0a 20 20 20  20 20 20 20 20 20 20 20  |t."..           |
0003c2d0  20 20 20 20 20 28 47 65  6f 72 67 65 20 42 65 72  |     (George Ber|
0003c2e0  6e 61 72 64 20 53 68 61  77 20 6f 6e 20 67 6f 76  |nard Shaw on gov|
0003c2f0  65 72 6e 6d 65 6e 74 29  0a 0a 0a 54 68 65 20 73  |ernment)...The s|
0003c300  68 65 6c 6c 20 62 65 6c  6f 77 20 69 73 20 74 68  |hell below is th|
0003c310  65 20 6d 69 6e 69 6d 75  6d 20 79 6f 75 20 6e 65  |e minimum you ne|
0003c320  65 64 20 74 6f 20 77 72  69 74 65 20 74 6f 20 75  |ed to write to u|
0003c330  73 65 20 74 68 65 20 6c  69 62 72 61 72 79 0a 72  |se the library.r|
0003c340  6f 75 74 69 6e 65 73 2e  20 20 4e 6f 74 65 20 74  |outines.  Note t|
0003c350  68 61 74 20 74 68 65 20  6f 72 64 65 72 20 69 6e  |hat the order in|
0003c360  20 77 68 69 63 68 20 74  68 69 6e 67 73 20 6f 63  | which things oc|
0003c370  63 75 72 20 69 73 20 71  75 69 74 65 20 69 6d 70  |cur is quite imp|
0003c380  6f 72 74 61 6e 74 2e 0a  4e 6f 74 68 69 6e 67 20  |ortant..Nothing |
0003c390  73 68 6f 75 6c 64 20 61  70 70 65 61 72 20 61 62  |should appear ab|
0003c3a0  6f 76 65 20 74 68 65 20  23 69 6e 63 6c 75 64 65  |ove the #include|
0003c3b0  20 22 50 61 72 73 65 72  22 20 6c 69 6e 65 20 65  | "Parser" line e|
0003c3c0  78 63 65 70 74 20 70 6f  73 73 69 62 6c 79 0a 6d  |xcept possibly.m|
0003c3d0  6f 72 65 20 64 65 66 69  6e 65 64 20 63 6f 6e 73  |ore defined cons|
0003c3e0  74 61 6e 74 73 20 61 6e  64 20 61 6e 79 20 61 62  |tants and any ab|
0003c3f0  62 72 65 76 69 61 74 69  6f 6e 73 2e 20 20 54 68  |breviations.  Th|
0003c400  65 20 67 72 61 6d 6d 61  72 20 74 61 62 6c 65 20  |e grammar table |
0003c410  73 68 6f 75 6c 64 0a 62  65 20 6c 61 73 74 2e 0a  |should.be last..|
0003c420  0a 3e 20 20 20 21 0a 3e  20 20 20 21 20 53 68 65  |.>   !.>   ! She|
0003c430  6c 6c 20 6f 66 20 61 20  67 61 6d 65 0a 3e 20 20  |ll of a game.>  |
0003c440  20 21 0a 3e 20 20 20 0a  3e 20 20 20 43 6f 6e 73  | !.>   .>   Cons|
0003c450  74 61 6e 74 20 53 74 6f  72 79 20 22 53 48 45 4c  |tant Story "SHEL|
0003c460  4c 22 3b 0a 3e 20 20 20  43 6f 6e 73 74 61 6e 74  |L";.>   Constant|
0003c470  20 48 65 61 64 6c 69 6e  65 20 22 5e 41 6e 20 49  | Headline "^An I|
0003c480  6e 74 65 72 61 63 74 69  76 65 20 53 6b 65 6c 65  |nteractive Skele|
0003c490  74 6f 6e 5e 5c 0a 3e 20  20 20 20 20 20 20 20 20  |ton^\.>         |
0003c4a0  20 20 20 20 20 20 20 43  6f 70 79 72 69 67 68 74  |       Copyright|
0003c4b0  20 28 63 29 20 31 39 39  33 20 62 79 20 28 79 6f  | (c) 1993 by (yo|
0003c4c0  75 72 20 6e 61 6d 65 20  68 65 72 65 29 2e 5e 22  |ur name here).^"|
0003c4d0  3b 0a 3e 20 20 20 0a 3e  20 20 20 23 69 6e 63 6c  |;.>   .>   #incl|
0003c4e0  75 64 65 20 22 50 61 72  73 65 72 22 3b 0a 3e 20  |ude "Parser";.> |
0003c4f0  20 20 23 69 6e 63 6c 75  64 65 20 22 56 65 72 62  |  #include "Verb|
0003c500  4c 69 62 22 3b 0a 3e 20  20 20 0a 3e 20 20 20 4f  |Lib";.>   .>   O|
0003c510  62 6a 65 63 74 20 72 6f  6f 6d 20 22 42 6c 61 6e  |bject room "Blan|
0003c520  6b 20 52 6f 6f 6d 22 20  6e 6f 74 68 69 6e 67 0a  |k Room" nothing.|
0003c530  3e 20 20 20 20 20 77 69  74 68 20 6c 6f 6e 67 64  |>     with longd|
0003c540  65 73 63 20 22 41 6e 20  65 6d 70 74 79 20 72 6f  |esc "An empty ro|
0003c550  6f 6d 2e 22 0a 3e 20 20  20 20 20 68 61 73 20 20  |om.".>     has  |
0003c560  6c 69 67 68 74 3b 0a 3e  20 20 20 0a 3e 20 20 20  |light;.>   .>   |
0003c570  5b 20 49 6e 69 74 69 61  6c 69 73 65 3b 0a 3e 20  |[ Initialise;.> |
0003c580  20 20 20 20 6c 6f 63 61  74 69 6f 6e 3d 72 6f 6f  |    location=roo|
0003c590  6d 3b 0a 3e 20 20 20 20  20 70 72 69 6e 74 20 22  |m;.>     print "|
0003c5a0  5e 5e 5e 5e 5e 57 65 6c  63 6f 6d 65 20 74 6f 20  |^^^^^Welcome to |
0003c5b0  74 68 65 20 73 68 65 6c  6c 2e 2e 2e 5e 5e 22 3b  |the shell...^^";|
0003c5c0  0a 3e 20 20 20 5d 3b 0a  3e 20 20 20 0a 3e 20 20  |.>   ];.>   .>  |
0003c5d0  20 23 69 6e 63 6c 75 64  65 20 22 47 72 61 6d 6d  | #include "Gramm|
0003c5e0  61 72 22 3b 0a 3e 20 20  20 65 6e 64 3b 0a 0a 0a  |ar";.>   end;...|
0003c5f0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0003c630  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0a 46 6f 6f 74  |-----------.Foot|
0003c640  6e 6f 74 65 3a 20 41 76  61 69 6c 61 62 69 6c 69  |note: Availabili|
0003c650  74 79 20 6f 6e 20 74 68  65 20 49 6e 74 65 72 6e  |ty on the Intern|
0003c660  65 74 2c 20 61 6e 64 20  4c 65 67 61 6c 20 44 65  |et, and Legal De|
0003c670  63 6c 61 72 61 74 69 6f  6e 0a 2d 2d 2d 2d 2d 2d  |claration.------|
0003c680  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0003c6c0  2d 2d 2d 2d 2d 0a 0a 0a  20 20 4d 61 74 65 72 69  |-----...  Materi|
0003c6d0  61 6c 20 6f 6e 20 49 6e  66 6f 72 6d 20 6d 61 79  |al on Inform may|
0003c6e0  20 62 65 20 66 6f 75 6e  64 20 6f 6e 20 74 68 65  | be found on the|
0003c6f0  20 49 6e 74 65 72 6e 65  74 2e 20 20 49 74 20 6f  | Internet.  It o|
0003c700  72 69 67 69 6e 61 74 65  73 20 66 72 6f 6d 20 74  |riginates from t|
0003c710  68 65 0a 69 66 2d 61 72  63 68 69 76 65 20 61 74  |he.if-archive at|
0003c720  20 74 68 65 20 47 65 72  6d 61 6e 20 61 6e 6f 6e  | the German anon|
0003c730  79 6d 6f 75 73 20 66 74  70 20 73 69 74 65 20 66  |ymous ftp site f|
0003c740  74 70 2e 67 6d 64 2e 64  65 2c 20 77 68 69 63 68  |tp.gmd.de, which|
0003c750  20 69 73 20 6d 61 69 6e  74 61 69 6e 65 64 0a 63  | is maintained.c|
0003c760  75 72 72 65 6e 74 6c 79  20 62 79 20 56 6f 6c 6b  |urrently by Volk|
0003c770  65 72 20 42 6c 61 73 69  75 73 2c 20 69 6e 20 74  |er Blasius, in t|
0003c780  68 65 20 64 69 72 65 63  74 6f 72 79 0a 0a 20 20  |he directory..  |
0003c790  69 66 2d 61 72 63 68 69  76 65 2f 69 6e 66 6f 63  |if-archive/infoc|
0003c7a0  6f 6d 2f 63 6f 6d 70 69  6c 65 72 73 2f 69 6e 66  |om/compilers/inf|
0003c7b0  6f 72 6d 2e 0a 0a 56 65  72 73 69 6f 6e 73 20 66  |orm...Versions f|
0003c7c0  6f 75 6e 64 20 61 74 20  6f 74 68 65 72 20 73 69  |ound at other si|
0003c7d0  74 65 73 20 28 65 78 63  65 70 74 20 74 68 6f 73  |tes (except thos|
0003c7e0  65 20 77 68 69 63 68 20  6d 69 72 72 6f 72 20 66  |e which mirror f|
0003c7f0  74 70 2e 67 6d 64 2e 64  65 29 20 6d 61 79 0a 77  |tp.gmd.de) may.w|
0003c800  65 6c 6c 20 62 65 20 6f  75 74 20 6f 66 20 64 61  |ell be out of da|
0003c810  74 65 2e 20 20 28 49 6e  20 70 61 72 74 69 63 75  |te.  (In particu|
0003c820  6c 61 72 2c 20 74 68 65  72 65 20 61 72 65 20 73  |lar, there are s|
0003c830  6f 6d 65 20 72 61 74 68  65 72 20 6f 6c 64 20 61  |ome rather old a|
0003c840  6e 64 20 64 65 63 72 65  70 69 74 0a 76 65 72 73  |nd decrepit.vers|
0003c850  69 6f 6e 73 20 6f 66 20  49 6e 66 6f 72 6d 20 6f  |ions of Inform o|
0003c860  6e 20 73 6f 6d 65 20 41  72 63 68 69 6d 65 64 65  |n some Archimede|
0003c870  73 20 61 72 63 68 69 76  65 73 2e 29 20 20 53 6f  |s archives.)  So|
0003c880  20 66 61 72 2c 20 75 70  64 61 74 65 64 20 76 65  | far, updated ve|
0003c890  72 73 69 6f 6e 73 0a 68  61 76 65 20 62 65 65 6e  |rsions.have been|
0003c8a0  20 70 6f 73 74 65 64 20  61 62 6f 75 74 20 6f 6e  | posted about on|
0003c8b0  63 65 20 61 20 71 75 61  72 74 65 72 2e 0a 0a 20  |ce a quarter... |
0003c8c0  20 41 20 21 53 70 61 72  6b 46 53 20 61 72 63 68  | A !SparkFS arch|
0003c8d0  69 76 65 20 6f 66 20 61  20 52 49 53 43 4f 53 20  |ive of a RISCOS |
0003c8e0  74 65 73 74 69 6e 67 20  70 72 6f 67 72 61 6d 20  |testing program |
0003c8f0  66 6f 72 20 72 75 6e 6e  69 6e 67 20 74 65 73 74  |for running test|
0003c900  20 73 63 72 69 70 74 73  0a 74 68 72 6f 75 67 68  | scripts.through|
0003c910  20 61 64 76 65 6e 74 75  72 65 20 67 61 6d 65 73  | adventure games|
0003c920  20 70 72 6f 64 75 63 65  64 20 62 79 20 49 6e 66  | produced by Inf|
0003c930  6f 72 6d 20 63 61 6e 20  61 6c 73 6f 20 62 65 20  |orm can also be |
0003c940  66 6f 75 6e 64 20 61 74  20 74 68 69 73 20 66 74  |found at this ft|
0003c950  70 0a 73 69 74 65 2c 20  69 6e 20 70 72 6f 67 72  |p.site, in progr|
0003c960  61 6d 6d 69 6e 67 2f 75  74 69 6c 69 74 69 65 73  |amming/utilities|
0003c970  2e 0a 0a 20 20 54 68 65  20 49 6e 66 6f 72 6d 20  |...  The Inform |
0003c980  63 6f 64 65 20 69 73 20  69 6e 20 70 6f 72 74 61  |code is in porta|
0003c990  62 6c 65 20 41 4e 53 49  20 43 2c 20 61 6e 64 20  |ble ANSI C, and |
0003c9a0  68 61 73 20 62 65 65 6e  20 70 6f 72 74 65 64 20  |has been ported |
0003c9b0  74 6f 20 6d 61 6e 79 0a  64 69 66 66 65 72 65 6e  |to many.differen|
0003c9c0  74 20 6d 61 63 68 69 6e  65 73 2e 20 20 49 74 73  |t machines.  Its|
0003c9d0  20 73 6f 75 72 63 65 20  63 6f 64 65 20 69 73 20  | source code is |
0003c9e0  70 75 62 6c 69 63 61 6c  6c 79 20 61 76 61 69 6c  |publically avail|
0003c9f0  61 62 6c 65 20 61 74 20  74 68 65 20 61 62 6f 76  |able at the abov|
0003ca00  65 0a 73 69 74 65 2e 20  20 54 68 65 20 66 75 6c  |e.site.  The ful|
0003ca10  6c 20 76 65 72 73 69 6f  6e 20 6f 66 20 74 68 69  |l version of thi|
0003ca20  73 20 6d 61 6e 75 61 6c  20 28 69 6e 63 6c 75 64  |s manual (includ|
0003ca30  69 6e 67 20 61 20 74 65  63 68 6e 69 63 61 6c 20  |ing a technical |
0003ca40  73 70 65 63 69 66 69 63  61 74 69 6f 6e 0a 6f 66  |specification.of|
0003ca50  20 74 68 65 20 49 6e 66  6f 63 6f 6d 20 5a 2d 6d  | the Infocom Z-m|
0003ca60  61 63 68 69 6e 65 20 66  6f 72 6d 61 74 29 20 69  |achine format) i|
0003ca70  73 20 61 6c 73 6f 20 74  68 65 72 65 2e 0a 0a 20  |s also there... |
0003ca80  20 49 6e 66 6f 72 6d 20  69 73 20 6e 6f 74 20 70  | Inform is not p|
0003ca90  75 62 6c 69 63 20 64 6f  6d 61 69 6e 20 69 6e 20  |ublic domain in |
0003caa0  74 68 65 20 70 72 6f 70  65 72 20 6c 65 67 61 6c  |the proper legal|
0003cab0  20 73 65 6e 73 65 20 6f  66 20 74 68 65 20 74 65  | sense of the te|
0003cac0  72 6d 2e 20 20 54 68 65  0a 63 6f 70 79 72 69 67  |rm.  The.copyrig|
0003cad0  68 74 20 69 73 20 72 65  74 61 69 6e 65 64 20 62  |ht is retained b|
0003cae0  79 20 74 68 65 20 61 75  74 68 6f 72 2c 20 47 72  |y the author, Gr|
0003caf0  61 68 61 6d 20 4e 65 6c  73 6f 6e 2e 20 20 49 20  |aham Nelson.  I |
0003cb00  61 6d 20 70 65 72 66 65  63 74 6c 79 20 68 61 70  |am perfectly hap|
0003cb10  70 79 0a 66 6f 72 20 49  6e 66 6f 72 6d 20 74 6f  |py.for Inform to|
0003cb20  20 62 65 20 75 73 65 64  20 62 79 20 61 6e 79 62  | be used by anyb|
0003cb30  6f 64 79 20 66 6f 72 20  61 6e 79 20 72 65 63 72  |ody for any recr|
0003cb40  65 61 74 69 6f 6e 61 6c  20 70 75 72 70 6f 73 65  |eational purpose|
0003cb50  2e 20 20 49 74 20 6d 61  79 20 62 65 0a 66 72 65  |.  It may be.fre|
0003cb60  65 6c 79 20 64 69 73 74  72 69 62 75 74 65 64 20  |ely distributed |
0003cb70  70 72 6f 76 69 64 65 64  20 6e 6f 20 70 72 6f 66  |provided no prof|
0003cb80  69 74 20 69 73 20 69 6e  76 6f 6c 76 65 64 2c 20  |it is involved, |
0003cb90  61 6e 64 20 70 72 6f 76  69 64 65 64 20 74 68 65  |and provided the|
0003cba0  0a 63 6f 70 79 72 69 67  68 74 20 6d 65 73 73 61  |.copyright messa|
0003cbb0  67 65 20 69 73 20 72 65  74 61 69 6e 65 64 2e 0a  |ge is retained..|
0003cbc0  0a 20 20 53 74 6f 72 79  20 66 69 6c 65 73 20 70  |.  Story files p|
0003cbd0  72 6f 64 75 63 65 64 20  62 79 20 49 6e 66 6f 72  |roduced by Infor|
0003cbe0  6d 20 62 65 6c 6f 6e 67  20 74 6f 20 77 68 6f 65  |m belong to whoe|
0003cbf0  76 65 72 20 77 72 6f 74  65 20 74 68 65 20 73 6f  |ver wrote the so|
0003cc00  75 72 63 65 20 66 6f 72  0a 74 68 65 6d 3b 20 49  |urce for.them; I|
0003cc10  20 74 68 69 6e 6b 2c 20  68 6f 77 65 76 65 72 2c  | think, however,|
0003cc20  20 69 74 20 69 73 20 66  61 69 72 20 74 6f 20 61  | it is fair to a|
0003cc30  73 6b 20 74 68 61 74 20  67 61 6d 65 2d 77 72 69  |sk that game-wri|
0003cc40  74 65 72 73 20 70 75 74  20 73 6f 6d 65 20 6d 65  |ters put some me|
0003cc50  73 73 61 67 65 0a 69 6e  74 6f 20 74 68 65 69 72  |ssage.into their|
0003cc60  20 63 72 65 64 69 74 73  20 73 61 79 69 6e 67 20  | credits saying |
0003cc70  74 68 61 74 20 49 6e 66  6f 72 6d 20 77 61 73 20  |that Inform was |
0003cc80  75 73 65 64 2c 20 61 6e  64 20 67 69 76 69 6e 67  |used, and giving|
0003cc90  20 74 68 65 20 76 65 72  73 69 6f 6e 0a 6e 75 6d  | the version.num|
0003cca0  62 65 72 20 75 73 65 64  20 74 6f 20 63 6f 6d 70  |ber used to comp|
0003ccb0  69 6c 65 20 69 74 2e 0a  0a 0a 2d 2d 2d 2d 2d 2d  |ile it....------|
0003ccc0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0003cd00  2d 2d 2d 2d 2d 0a 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |-----.----------|
0003cd10  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0003cd50  2d 0a 54 68 69 73 20 6d  61 6e 75 61 6c 20 28 43  |-.This manual (C|
0003cd60  29 20 43 6f 70 79 72 69  67 68 74 20 47 72 61 68  |) Copyright Grah|
0003cd70  61 6d 20 4e 65 6c 73 6f  6e 20 31 39 39 33 2c 20  |am Nelson 1993, |
0003cd80  31 39 39 34 0a 20 20 20  20 20 20 20 20 20 20 20  |1994.           |
0003cd90  20 20 20 20 20 41 63 6f  72 6e 20 55 73 65 72 20  |     Acorn User |
0003cda0  65 64 69 74 69 6f 6e 0a  2d 2d 2d 2d 2d 2d 2d 2d  |edition.--------|
0003cdb0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
0003cdf0  2d 2d 2d 0a                                       |---.|
0003cdf4