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