home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / games / gags.zip / PART2.DOC < prev    next >
Text File  |  1985-08-24  |  54KB  |  1,216 lines

  1.                                       2-1
  2.  
  3.  
  4.       The Generic Adventure Game System
  5.       Copyright 1985 by Mark J. Welch
  6.       
  7.       
  8.                       __________________________________
  9.                      |                                  |
  10.                      |  How to write an adventure game: |
  11.                      |__________________________________|
  12.       
  13.                                    
  14.       
  15.       -------------------------------------------------------
  16.       Introduction: Why Should I Write My Own Adventure Game?
  17.       -------------------------------------------------------
  18.       
  19.          If you're asking that question, it's quite possible that you 
  20.       shouldn't. But let me suggest a scenario: 
  21.       
  22.         - Imagine your office as an adventure game. Imagine the 
  23.       wonderful descriptions you could provide for your co-workers' 
  24.       offices, the analogies you could make for the delivery people, 
  25.       and the thinly-veiled insults of your boss you could include. If 
  26.       such an adventure game scenario were written in reasonable taste, 
  27.       it could serve as a well-deserved diversion on a Friday 
  28.       afternoon. Of course, if it's written in poor taste, and your 
  29.       insults aren't veiled enough, it could be your last Friday.  
  30.         -  Maybe you are trying to teach someone something. Perhaps you 
  31.       want them to learn about computers. Maybe you want to guide them 
  32.       through many screens of tutorials. If you could write the text as 
  33.       an adventure game, and make learning a game -- even fun -- the 
  34.       game players might learn more faster.  
  35.         - Or maybe you're well-equipped with a great imagination and 
  36.       you want to develop a game that will rival the ones you've 
  37.       bought in stores or played with friends. Perhaps this is your 
  38.       chance to prove your fiction-writing abilities. Who knows what 
  39.       adventure lurks in the heart of the computer user?  
  40.       
  41.       
  42.  
  43.                                       2-2
  44.  
  45.       ---------------------------------------------------------
  46.       How the Adventure Game Works -- A Superficial Explanation
  47.       ---------------------------------------------------------
  48.       
  49.       (This section explains how GAGS does what it does. You might want 
  50.       to look at a copy of a .DAT file, such as UNDERGND.DAT, as you 
  51.       read this.) 
  52.       
  53.       
  54.       A Sequential Account
  55.       --------------------
  56.       As an author, I knew that anyone who developed an adventure game 
  57.       using GAGS would want instant credit, so the first thing GAGS 
  58.       does is look on the disk for a title file, which should contain 
  59.       the name of the game, the author's name, and perhaps a copyright 
  60.       statement. Each line in the file is displayed centered on the 
  61.       screen. 
  62.            Being protective, I also make sure the program posts my 
  63.       copyright notice just below the game writer's. If, for some 
  64.       reason, there is no file TITLE.DAT, the GAGS copyright 
  65.       information is displayed by itself. The title screen, with the 
  66.       author's information and mine, stays on the screen while the 
  67.       program initializes all its data arrays and records and reads the 
  68.       data file.  
  69.            The program next reads the datafile (filename.DAT). It 
  70.       searches each of its 17 keywords (words like "ROOM," "NOUN," or 
  71.       "CREATURE"). When it finds one of these words as the first word 
  72.       on a line (ignoring spaces and punctuation), it looks for a 
  73.       number so it knows where to store the information that follows.  
  74.       It then carefully analyzes each line that follows, updating its 
  75.       internal arrays to match the specifications in the text file, 
  76.       until it finds a keyword beginning with "END_" (i.e.  
  77.       END_CREATURE, END_NOUN, END_ROOM).  Note: the game will NOT 
  78.       detect a mismatched END_keyword; all it really checks is that the 
  79.       the first four letters are "END_".  
  80.            Since the file contains both descriptions and data record 
  81.       information, it takes a while to scan the whole file: for a 30K 
  82.       file with about 65 rooms, it takes fifty seconds. Among other 
  83.       things, this gives the player a good chance to read the title 
  84.       screen, thus satisfying the game author's conceit and mine.  
  85.            If the file contains some text preceded by the keyword INTRO 
  86.       and ended with the keyword END_INTRO, that text is displayed as 
  87.       it is encountered. It cannot be re-read during the game.   
  88.            Once all the data has been read in, the program puts the 
  89.       player into room 2 of the game (there is no room 1: a location of 
  90.       1 indicates the player's pockets). GAGS then prints the long text 
  91.       description for room 2, (defined by ROOM_DESCR 2...END_ROOM_DESCR)
  92.       and the player is asked what to do.  
  93.             
  94.                                  (continued)
  95.       
  96.                                       2-3
  97.    
  98.                           (how GAGS works, continued)
  99.        
  100.       
  101.            Each time the player types in a command and <ENTER>, the 
  102.       program sends the input line to the "parse" module. The parser 
  103.       take the input line, breaks it into separate words, and tries to 
  104.       locate a verb, a noun, a preposition, and another noun as the 
  105.       object of the preposition. It does this by eliminating extra 
  106.       words like "the" and "please"; and by checking and then 
  107.       eliminating adjectives. It returns four words: verb, noun, 
  108.       preposition, and an object of the preposition. (If any element is 
  109.       missing, the "empty string" ('') is returned.) 
  110.            If an invalid word is found by the parser, it informs the 
  111.       user by suggesting what part of speech it sought and what word it 
  112.       didn't recognize. Otherwise, the program then calls the execute 
  113.       module; this section selects a procedure to call based on the 
  114.       verb (throw, take, eat, move). Depending on the procedure's own 
  115.       checking, the noun, preposition and object might be rejected as 
  116.       invalid or, in some cases, ignored partly or completely.  
  117.       
  118.            If motion is called for, the program checks to see if the 
  119.       direction is valid (i.e. if moving EAST was supposed to get the 
  120.       player to a new room). If it's valid, the player is moved to the 
  121.       new room; if not, the player is informed. Other actions are 
  122.       checked in the same way: if a noun is expected, does the player 
  123.       have it or is it in the room? If the thing is here, does this 
  124.       time, place, and action constitute a special event of some sort? 
  125.       If it does, the player is sent off to a "special" procedure; 
  126.       otherwise the action is executed and the thing is changed as 
  127.       specified, or is described or taken. 
  128.       
  129.            There are two ways a player can be moved to a new room. One 
  130.       is by specifically trying to do so. Moving east is generally 
  131.       accomplished by typing "EAST." 
  132.            The other way to move is by meeting a set of special 
  133.       requirements that the current game's author has defined as a 
  134.       "special." The special might be defined, in plain language, as "if 
  135.       the player is in the sauna, and he turns the faucet, then move him 
  136.       to another room X." That other room might be anything.  One 
  137.       possibility is that it may be a room with a similar or identical 
  138.       description, but with a new exit or without an old one.  It might 
  139.       even be the same room, but by executing the "special," the program 
  140.       displays several lines of text.  
  141.           In this case, the special text might be "You turn on the 
  142.       faucet, and scalding hot water pours onto your feet. You scream in 
  143.       agony and kick the faucet, which is turned off." If the author was 
  144.       cruel, the "special" here might move the player to a new room 
  145.       called "hell" and be told "As you turn the faucet, scalding hot 
  146.       water pours out onto your legs. You scream in agony, but the faucet 
  147.       won't shut off. In minutes, you are scalded to death. You awaken in 
  148.       hell, where Satan tells you that your punishment for killing the 
  149.       lizard [something the player did earlier to get here] will be 
  150.       boiling in oil for eternity."  The new room description would 
  151.       describe a vat of boiling oil, provide no exits, and include the 
  152.       keyword GAME_END to end the game.  
  153.       
  154.                                  (continued)
  155.       
  156.                                       2-4
  157.  
  158.                          (how GAGS works, continued)
  159.        
  160.       
  161.            "Specials" are the way you do almost anything unusual.  Of 
  162.       course, a special can be used to move a player to a new room 
  163.       (i.e.  "touch mirror" might cause the player to fall through the 
  164.       looking-glass and into a new room). But specials also allow a 
  165.       room to be "changed" in the player's view -- this is accomplished 
  166.       by actually moving the player to a new, but similar room. If you 
  167.       want an airlock to close one door and open another, you use a 
  168.       "special" which moves the player to a 'new' airlock with a 
  169.       different exit. If you want a player to 'teleport,' you use a 
  170.       special. If you want to player to be surprised by some action but 
  171.       not moved (i.e. 'play stereo' could lead to "Beethoven's Fifth 
  172.       plays loudly, awakening the neighbors.  Someone pounds loudly on 
  173.       the ceiling"), use a special.  
  174.            There is one problem with using a special to "change" a 
  175.       room. If you decide, for example, to have a player move from an 
  176.       intact room to a damaged room when s/he decides to "push button," 
  177.       you may have some problems. Suppose the intact room was 13, the 
  178.       damaged room was 14, and room 7 was adjacent. The player moves 
  179.       east from 7 to 13.  S/he pushes the button and is "specialed" to 
  180.       room 14. S/he exits west to room 7, since you've provided that 
  181.       exit from either room 13 or 14. When s/he moves east from 7, 
  182.       however, s/he moves back to room 13, since room 7's pointers 
  183.       remain unchanged by the "special." My fix to this is to simply 
  184.       not provide reverse pointers: once you've blown up a room, make 
  185.       sure the player can't ever trace his/her steps back to the 
  186.       undamaged room.  
  187.       
  188.            Internally, specials are stored as a direction, and each 
  189.       room that has a special has a "key" -- a matching noun. This is 
  190.       probably the most complex part of creating an adventure game: you 
  191.       need to have some fairly complex linkage in your data file, all 
  192.       done manually. 
  193.       
  194.       
  195.                                       2-5
  196.       
  197.       How GAGS Works: Another Approach
  198.       -------------------------------- 
  199.       
  200.       GAGS keeps track of three large record arrays internally: the 
  201.       rooms, the nouns, and the creatures. 
  202.       
  203.       -----
  204.       Rooms
  205.       -----
  206.       
  207.       Each room is a record, with the following fields:
  208.          name (string) 
  209.          n,s,e,w,ne,se,sw,nw,u,d,enter,exit,special 
  210.                      (all integers: what room do they lead to?)
  211.          key (integer - what noun activates the 'special' direction?)
  212.          has_seen (true/false: has the player seen this room yet?)
  213.          locked_door  (true/false - is there a locked door here?)
  214.          points (how many points for just getting to this room?)
  215.       
  216.       The room specification in the data file is quite simple:
  217.       
  218.         ROOM <nn>
  219.         <Room Name>
  220.         <direction> <nn>
  221.               .
  222.               .
  223.               .
  224.         <direction> <nn>
  225.         <  optional: SPECIAL <nn>    and  KEY <nn>  >
  226.         <  optional: POINTS <n>                     >
  227.         <  optional: LIGHT <nn>                     >
  228.         <  optional: GAME_END                       >
  229.         END_ROOM
  230.       
  231.       A room description must also be provided: 
  232.       
  233.       ROOM_DESCR <nn>
  234.       Some text, any number of lines, about the room.
  235.       END_ROOM_DESCR
  236.       
  237.       (Similar formats are used for descriptions of nouns and creatures.)
  238.       
  239.       It is recommended that at a minimum, one exit be provided; 
  240.       otherwise the player will be stuck in the room until he quits. Of 
  241.       course, that direction might be a special. 
  242.       
  243.       
  244.                                       2-6      
  245.  
  246.       --------
  247.       Specials
  248.       --------
  249.            To 'activate' the special, the player must 'do something' to 
  250.       the noun specified as the room's KEY. This can include turning 
  251.       it, pushing it, pulling it, or playing it (depending on what can 
  252.       be done to the noun as defined). If the proper action is taken on 
  253.       the noun while in the room, the player will be relocated to the 
  254.       room specified in the SPECIAL line and the SPECIAL nn text will 
  255.       be displayed. (If the Special points to the current room, the 
  256.       only effect apparent to the reader will be the display of the 
  257.       SPECIAL text.) 
  258.       
  259.       An example:
  260.       
  261.       --------
  262.       
  263.       ROOM 13
  264.         .
  265.         .
  266.       SPECIAL 13
  267.       KEY 218
  268.       END_ROOM
  269.       
  270.       NOUN 218
  271.       Stereo
  272.         .
  273.         .
  274.       TURNABLE
  275.       PLAYABLE
  276.       END_NOUN
  277.       
  278.       SPECIAL 13
  279.       As you turn on the stereo, you hear a song by "Duran Duran." The 
  280.       stereo turns itself off when the song is finished.
  281.       END_SPECIAL
  282.       
  283.       -----------
  284.       
  285.       Defaults:  The default for almost all integer values is zero: 
  286.       thus, any direction not specified will be set to zero (no room), 
  287.       including 'special' and the key noun pointer, unless the data 
  288.       file specifies differently.  
  289.       
  290.       
  291.                                       2-7
  292.  
  293.       -----
  294.       Nouns
  295.       -----
  296.       
  297.       Nouns are necessarily more complex. They are specified in the 
  298.       following format, listed with the possible values (and defaults) 
  299.       
  300.       NOUN <nn>       
  301.       <name>   - must appear on second line, must be one word (underscores 
  302.                             permitted) 
  303.       <adjective> - must appear on 3rd line - a one-word adjective (or 'NO_ADJ')
  304.       <short>  - must appear on 4th line - one line of text describing the noun 
  305.            (the remaining words and phrases may appear in any order or may be 
  306.            omitted to obtain the default values) 
  307.       WEIGHT <nn>     - 1 to 100+ (default=1)
  308.       SIZE <nn>       - 1 to 100+ (default=1)
  309.       LOCATION <nn>   - initial location (room number, another noun, or the 
  310.                             player) (1=player) (default = 0) 
  311.       READABLE        - default is 'not readable'
  312.       CLOSABLE        - default is 'not closable'
  313.       CLOSED          - default is 'open'
  314.       ON              - default is 'off'
  315.       PUSHABLE        - default is 'not pushable' - activates special!
  316.       TURNABLE        - default is 'not turnble' - activates special!
  317.       PLAYABLE        - default is 'not playable' - activates special!
  318.       LOCKABLE        - default is 'not lockable'
  319.       LOCKED          - default is 'unlocked'
  320.       KEY <nn>        - default is 0 (what noun is used to unlock this noun?)
  321.       POISONOUS       - default is 'nonpoisonous'
  322.       EDIBLE          - default is 'inedible'
  323.       DRINKABLE       - default is 'undrinkable'
  324.       UNMOVABLE       - default is 'movable' (can be TAKEn)
  325.       POINTS <nn>     - default is 0 -- how many points if carried?
  326.       IS_LIGHT        - default is 'false'
  327.       END_NOUN        - this word must appear alone on a line!
  328.       
  329.       Note: To 'spice' up the game, you might want to put things inside 
  330.       other things initially, so the player has to open everything to 
  331.       be sure s/he doesn't miss anything important. Be logical, though: 
  332.       a refrigerator seems likely to be open-able, but a crabapple 
  333.       probably ought to be 'closed' and 'unclosable' and thus unable to 
  334.       contain something else (unless you're into razor blades...). 
  335.       
  336.       
  337.                                       2-8      
  338.  
  339.       ----
  340.       TEXT
  341.       ----
  342.         Things that can be "read" are perhaps best described as 
  343.       "special specials." Rather than using the "SPECIAL" function, 
  344.       readable objects use "TEXT." Thus, the following would be a 
  345.       valid set of definitions:
  346.       
  347.       --------
  348.       
  349.       NOUN 232
  350.       Book
  351.       Red
  352.       There is a small red book here.
  353.       WEIGHT 1
  354.       SIZE 3
  355.       LOCATION 32
  356.       READABLE
  357.       END_NOUN
  358.       
  359.       NOUN_DESCR 232
  360.       The red book is quite thin, and has a hard cover. There is 
  361.       writing on the book.
  362.       END_NOUN_DESCR
  363.       
  364.       TEXT 232
  365.       The title of the book is "The Wisdom of Ronald Reagan."
  366.       The pages are all blank.
  367.       END_TEXT
  368.       
  369.       
  370.       
  371.       ----------
  372.       PUSH_DESCR
  373.       PULL_DESCR
  374.       TURN_DESCR
  375.       PLAY_DESCR
  376.       ----------
  377.       If a noun is described as being pushable, playable, turnable, or 
  378.       pullable, you can define a response to the player taking those 
  379.       actions. This description will be displayed only if the player 
  380.       takes the specified action AND that action does not activate a 
  381.       SPECIAL for the current room. If there is no description 
  382.       provided, a standard ("nothing happens") message is provided.
  383.       
  384.       
  385.                                       2-9
  386.       
  387.       ---------
  388.       Creatures
  389.       ---------
  390.       
  391.       Creatures, like rooms, are relatively simple. Any living thing is 
  392.       identified as a 'creature', and can be either 'friendly' or 
  393.       'hostile'. 
  394.       
  395.       CREATURE <nn>
  396.       <name>
  397.       <adjective>
  398.       <short descriptive line of text>
  399.       LOCATION <nn>           - default := 0
  400.       WEAPON <nn>             - what noun kills it? (default := 0)
  401.       HOSTILE                 - (default is FRIENDLY)
  402.       END_CREATURE             - must be the only thing on the line!
  403.       
  404.       Friendly creatures are quite passive; hostile creatures are not 
  405.       quite as friendly. It is recommended that provisions be made for 
  406.       a weapon to kill any hostile creatures. For fairness, that weapon 
  407.       should be accessible by the player BEFORE s/he meets the hostile 
  408.       creature. 
  409.          Players should be discouraged from wild and unwarranted 
  410.       killing: i.e. they ought not kill friendly creatures. If no 
  411.       weapon will kill the creature (i.e. if you leave or specify 
  412.       WEAPON as the default value 0), the player cannot kill it. For 
  413.       friendly creatures, you should not lead the player on by making 
  414.       the weapon something unexpected: if the player kindly offers a 
  415.       jelly bean to the friendly creature, it ought not be fatal. On the 
  416.       other had, using a poisoned jelly bean to kill the Reagan_Beast 
  417.       might be both appropriate and challenging. Only one weapon can 
  418.       kill any given creature, but the same weapon might be used to kill 
  419.       many creatures. 
  420.       
  421.       ---------
  422.       
  423.       
  424.       
  425.                                       2-10      
  426.  
  427.       Some last-minute notes:
  428.       
  429.       
  430.       Order of definitions:
  431.          Note: GAGS doesn't require that the definitions be in a 
  432.       specific order. Definitions can be freely mixed throughout your 
  433.       data files. You'll probably want to group items together that 
  434.       logically belong together; that's how I wrote the sample game. 
  435.       The order of definitions in the file has NO effect on game 
  436.       performance, as long as each definition is properly structured.  
  437.       If you write 'INTRO' text for the game, it's best to put that 
  438.       text at the end of the data file; that way the initialization 
  439.       will be done when the player finishes reading the introduction.  
  440.       (If the INTRO text is at the top of the file, GAGS must read the 
  441.       rest of the data file after the player has read the 
  442.       introduction, causing a more noticable and worrisome delay.) 
  443.       
  444.       
  445.       Word Processors:
  446.          Note: I used PC-Write to create the sample adventure file. You 
  447.       MUST use a word processor which creates plain ASCII/DOS text 
  448.       files with a true carriage return at the end of each line. Lines 
  449.       longer than 80 characters, and WordStar document files, will 
  450.       cause GAGS to gag! (For information on obtaining PC-Write, see 
  451.       appendix D -- "Other Shareware.") 
  452.       
  453.       Value Ranges for Game Definitions:
  454.          Note: The following are the valid ranges of numbers for nouns,
  455.       rooms, and creatures. DO NOT assign improper numbers to any 
  456.       category, or you will experience unpredictable (but consistently 
  457.       erroneous) results.
  458.               Player:           1
  459.               ROOMS:            2     to      199
  460.               NOUNS:          201     to      299
  461.               CREATURES:      301     to      399
  462.       
  463.       Note: The GameWriter Diagnostics Mode
  464.       
  465.            GAGS has a "diagnostics" mode which should be somewhat 
  466.       helpful as you develop games. By adding /d to the DOS command 
  467.       line that invokes GAGS, you'll be able to see exactly what the 
  468.       game is doing during initialization. If you compare a paper copy 
  469.       of your .DAT file to the diagnostics screen output, you'll be 
  470.       able to see exactly when and if the system encounters any 
  471.       problems with your file. The diagnostics mode is specifically 
  472.       designed to let you graphically see if any "END_" statements are 
  473.       missing. It is not a very powerful debugging tool, but it takes 
  474.       much of the guesswork out of the system.  
  475.        
  476.                                  (continued)
  477.       
  478.                                       2-11
  479.  
  480.                         (Last-minute notes, continued)
  481.       
  482.       
  483.       Light and Darkness:
  484.          If a room has a LIGHT value other than 0 (the default), the 
  485.       room will appear pitch black if the player wanders in empty-
  486.       handed. There are two "types" of lights and two types of 
  487.       darkness. A noun may be defined as being a light by specifying 
  488.       the word IS_LIGHT in its definition; in this case, it will light 
  489.       any dark room defined as LIGHT 1. The light value of 1 in a room
  490.       definition means that any light will make the room visible. Of 
  491.       course, these "general-purpose" lights must be turned on to light 
  492.       the room, and thus all LIGHTs can be TURNed ON and OFF (or 
  493.       LIGHTed and EXTINGUISHed.). (EXT is an acceptable abbreviation 
  494.       for EXTINGUISH; EX is the abbreviation for EXAMINE.) 
  495.          If the LIGHT value is more than 1 (i.e. LIGHT 218), only the
  496.       noun with the matching number will make the room's contents 
  497.       visible. This is useful if the darkness comes from something 
  498.       other than an absence of light: for example, a fan might be the 
  499.       only object that makes a smoky room clear enough to see in. 
  500.       A special-purpose light need not be defined as a light (i.e. it 
  501.       doesn't have to be defined IS_LIGHT), nor does it have to be on, 
  502.       to work as a light in a room with that noun as a LIGHT. A 
  503.       noun can function as a special-purpose light for more than one 
  504.       room, but each room can only be lit by one special-purpose light. 
  505.       (A room with a LIGHT value of 1 will be lit by ANY noun defined 
  506.       as IS_LIGHT.)
  507.       
  508.       
  509.       -----------
  510.       
  511.       Note: Command abbreviations
  512.       
  513.            Some command abbreviations have been implemented:
  514.       
  515.               .       =       examine (i.e. ". bar")
  516.               !       =       attack  (i.e. "! wolf")
  517.               ex      =       examine
  518.               ext     =       extinguish (turn off)
  519.       
  520.       
  521.       
  522.                                       2-12      
  523.  
  524.       Creating a typical room:
  525.       ------------------------
  526.       
  527.          Let's suppose that my game contains a bedroom, connected to a 
  528.       closet, a bathroom, and a hallway. In the bedroom are a lamp, a 
  529.       bed, a dresser, a mirror, and a werewolf.
  530.       
  531.          First, I want to define the room itself:
  532.       
  533.       
  534.       ===============================================
  535.       ROOM 34
  536.       Master Bedroom
  537.       WEST 33                 (33 is the hallway)
  538.       EAST 35                 (35 is the bathroom)
  539.       NORTHEAST 36            (36 is the closet)
  540.       END_ROOM
  541.       ===============================================
  542.       
  543.          A description of the room is appropriate here:
  544.       
  545.       ===============================================
  546.       ROOM_DESCR 34
  547.       This is the master bedroom, where Mommy and Daddy usually sleep.
  548.       Plainly visible in the room are a bed, a dresser, a lamp, and a 
  549.       large wall mirror. The room smells horrible, as if a large, 
  550.       unclean animal had been here recently.
  551.       END_ROOM_DESCR 
  552.       =============================================== 
  553.       
  554.          Note that this description mentions the nouns that are 
  555.       initially in the room. This is OK, since all of the nouns are 
  556.       UNMOVABLE, but if they could be taken by the player, they should 
  557.       not be described in the room description since they won't be 
  558.       there if the player should return.
  559.       
  560.          That werewolf is begging to be described, too:
  561.       
  562.       
  563.       ===============================================
  564.       CREATURE 315
  565.       Werewolf
  566.       Black
  567.       There is a menacing black werewolf here.
  568.       LOCATION 34
  569.       WEAPON 217                      <-- Noun 217 will kill it 
  570.       HOSTILE                         <-- ever met a friendly werewolf?
  571.       END_CREATURE
  572.       ===============================================
  573.       
  574.       ===============================================
  575.       CREATURE_DESCR 315
  576.       The werewolf is about the size of a small horse. Its matted fur 
  577.       stinks, and a sickening smell emerges from its open mouth, 
  578.       through which you can see sharp, large teeth.  
  579.       END_CREATURE_DESCR
  580.       ===============================================
  581.       
  582.                                       2-13
  583.       
  584.          Finally, each noun within the room ought to be defined and 
  585.       described:
  586.       
  587.       ===============================================
  588.       NOUN 220
  589.       Bed
  590.       Large
  591.       There is a large (king-size) bed here.
  592.       LOCATION 34
  593.       UNMOVABLE
  594.       END_NOUN
  595.       ===============================================
  596.       NOUN_DESCR 220
  597.       The bed is quite ordinary.
  598.       END_NOUN_DESCR
  599.       ===============================================
  600.       NOUN 221
  601.       Dresser
  602.       Wooden
  603.       There is a large wooden dresser here.
  604.       LOCATION 34
  605.       CLOSABLE
  606.       CLOSED
  607.       UNMOVABLE
  608.       END_NOUN
  609.       ===============================================
  610.       NOUN_DESCR 221
  611.       The wooden dresser looks pretty much like most wooden dressers.
  612.       END_NOUN_DESCR
  613.       ===============================================
  614.       NOUN 222
  615.       Lamp
  616.       Small
  617.       There is a lamp on the dresser.
  618.       LOCATION 34
  619.       UNMOVABLE
  620.       END_NOUN
  621.       ===============================================
  622.       NOUN_DESCR 222
  623.       The small table lamp is pink and has a green shade. 
  624.       END_NOUN_DESCR
  625.       ===============================================
  626.       NOUN 223
  627.       Mirror
  628.       Strange
  629.       There is a wall-size mirror here.
  630.       LOCATION 34
  631.       UNMOVABLE
  632.       END_NOUN
  633.       ===============================================
  634.       NOUN_DESCR 223
  635.       As you gaze into the mirror, you sense something unusual about 
  636.       it. It seems to shimmer, and your reflection seems somehow 
  637.       unreal, as if the mirror weren't really there at all.
  638.       END_NOUN_DESCR
  639.       ===============================================
  640.       
  641.                                       2-14
  642.       
  643.          Hmm. That mirror seems rather interesting. Maybe we could make 
  644.       a "special" out of it. For example: when the player touches it, 
  645.       s/he is sent to room 50, the mystic cavern of the Wizardess.
  646.       To do so, we need to add a "special" to room 34 and specify the 
  647.       mirror as its key, and we need to make the mirror touchable.
  648.       (Note: "touch" and "push" are synonyms -- you should use the 
  649.       word "push," not the word "touch," in your definitions.) 
  650.                                                                     
  651.       ===============================================
  652.       ROOM 34
  653.       Master Bedroom
  654.       WEST 33                 (33 is the hallway)
  655.       EAST 35                 (35 is the bathroom)
  656.       NORTHEAST 36            (36 is the closet)
  657.       SPECIAL 50              <--
  658.       KEY 223                 <--
  659.       END_ROOM
  660.       ===============================================
  661.       
  662.       ===============================================
  663.       NOUN 223
  664.       Mirror
  665.       Strange
  666.       There is a wall-size mirror here.
  667.       LOCATION 34
  668.       UNMOVABLE
  669.       PUSHABLE               <-- Here's how we'll activate the special
  670.       END_NOUN
  671.       ===============================================
  672.       
  673.       
  674.          The player will see room 50's description when s/he gets 
  675.       there, but the SPECIAL text for room 50 will be displayed first:
  676.       
  677.       
  678.       ===============================================
  679.       SPECIAL 50
  680.       You reach out to touch the mirror, and are shocked to find that 
  681.       your fingers vanish through the surface. Before you can react, 
  682.       you feel yourself drawn forward through the mirror, and into a 
  683.       black nothingness. You look back to try to see the mirror, but 
  684.       everything is black.
  685.          You are falling, but not very quickly -- it's almost as if you 
  686.       are floating. As you fall, your eyes begin to adjust to the 
  687.       darkness. Then, suddenly, you land on a soft cushion of some 
  688.       sort. As you rest on the cushion, your eyes adjust to the very 
  689.       dim light of this new room.  
  690.       END_SPECIAL
  691.       ===============================================
  692.       
  693.         (Note that usually, you'd want to have a PUSH_DESCR  prepared 
  694.         for when the player touches a noun when it doesn't activate a 
  695.         special, but the mirror can't be moved so it will always 
  696.         activate a special when touched.)
  697.          
  698.       
  699.                                       2-15
  700.  
  701.       How to include Comments:
  702.       ------------------------
  703.       
  704.          Within your data file, you'll probably want to include 
  705.       comments which won't be processed by the game itself, so you'll 
  706.       be able to understand why you did certain things.
  707.          
  708.          In general, GAGS treats anything it doesn't understand as a 
  709.       comment. Thus, if you have a paragraph of text in between 
  710.       definitions, GAGS will usually ignore it.
  711.          BEWARE: If one of the lines in the paragraph begins with a 
  712.       keyword like "noun" or "text," GAGS will probably decide that 
  713.       it's the beginning of a definition and get confused.  
  714.          To avoid this, you can use a nonsense word to start each line 
  715.       of a comment: words like "REM" (for remark) are useful since they
  716.       also clearly state what the line is. 
  717.          Gags ignores most punctuation completely, so using "comment" 
  718.       indicators like "(*" and "*)" or { and } won't help anything. 
  719.       GAGS usually only sees alphabetic characters ('a'..'z' and 
  720.       'A'..'Z').
  721.          You can put comments on lines which contain a keyword or a 
  722.       keyword and a number; don't include comments on lines which 
  723.       contain a full-line description.
  724.       
  725.       Example of properly-commented definitions:
  726.       
  727.       ===============================================
  728.       ROOM 34                 
  729.       Master Bedroom
  730.       WEST 33                 (33 is the hallway)
  731.       EAST 35                 (35 is the bathroom)
  732.       NORTHEAST 36            (36 is the closet)
  733.       SPECIAL 50              <-- Special goes to room 50 (cavern)
  734.       KEY 223                 <-- Spec.activated by touching mirror
  735.       END_ROOM
  736.       ===============================================
  737.       
  738.       ===============================================
  739.       NOUN 223
  740.       Mirror                  
  741.       Strange                 (isn't there a better adjective?)
  742.       There is a wall-size mirror here.
  743.       LOCATION 34             (in the Master Bedroom)
  744.               rem: the player finds this mirror in the master bedroom,
  745.               rem: and gets to the Cavern by touching it. The player
  746.               rem: can only return if s/he has the magic amulet, and
  747.               rem: will need the soap from the bathroom to kill the
  748.               rem: demon on the bridge.
  749.       UNMOVABLE               (not very useful if the player can take it!)
  750.       PUSHABLE                <-- Here's how we'll activate the special
  751.       END_NOUN
  752.       ===============================================
  753.       
  754.                                       2-16      
  755.  
  756.       
  757.       Example of a badly-commented definition:
  758.       
  759.       ===============================================
  760.       ROOM 34                 
  761.       Master Bedroom
  762.       WEST 33                 (33 is the hallway)
  763.               (If the player decides to enter the bathroom to the
  764.               west, s/he will find the 32 gold pieces.)
  765.       EAST 35                 (35 is the bathroom)
  766.       NORTHEAST 36            (36 is the closet)
  767.       SPECIAL 50              <-- Special goes to room 50 (cavern)
  768.       KEY 223                 <-- Spec.activated by touching mirror
  769.               (The player gets to the mystic cavern by means of a
  770.               key special, activated by noun 233)
  771.       END_ROOM
  772.       ===============================================
  773.  
  774.          In the above example, the second full comment line begins with 
  775.       the keyword "WEST" and contains the number 32, so GAGS might 
  776.       decide that WEST should lead to room 32, changing the game! The 
  777.       last line before the END_ROOM could confuse GAGS and redefine the
  778.       key number (probably to zero).
  779.       
  780.       
  781.       
  782.                                      -30-
  783.       
  784.       
  785.       
  786.                      
  787.  
  788.  
  789.  
  790.  
  791.                               REFERENCE MANUAL
  792.       
  793.                                   for the 
  794.       
  795.                        GENERIC ADVENTURE GAME SYSTEM
  796.       
  797.                           
  798.  
  799.                                      by
  800.                   
  801.                                Mark J. Welch
  802.  
  803.                       
  804.                              September 1, 1985
  805.  
  806.                        
  807.  
  808.                       Copyright 1985 by Mark J. Welch
  809.  
  810.                             All Rights Reserved
  811.  
  812.  
  813.        _____________________________________________________________
  814.       |                                                             |
  815.       |  The Generic Adventure Game System, in all source code and  |
  816.       |  object code formats, and all related documents, are copy-  |
  817.       |  right 1985 by Mark J. Welch. The Generic Adventure Game    |
  818.       |  System is distributed as Shareware, with restrictions as   |
  819.       |  specified in the documentation. Commericial use without    |
  820.       |  prior written permission is prohibited.                    |
  821.       |     GAGS is distributed as Shareware: if you like the       |
  822.       |  program, please become a registered user by sending $15    |
  823.       |  to the author:     Mark J. Welch                           |
  824.       |                     P.O. Box 2049                           |
  825.       |                     San Francisco, CA 94126-2409            |
  826.       |                     415-982-4591 (voice)                    |
  827.       |                     415-391-9148 (modem)                    |
  828.       |_____________________________________________________________|
  829.       
  830.  
  831.                                       R-1
  832.  
  833.  
  834.       Introduction to the GAGS Reference Manual
  835.       -----------------------------------------
  836.       
  837.       This document describes the precise syntax and rules for the data 
  838.       files relating to the Generic Adventure Game System (GAGS). Two 
  839.       data files are associated with each game: filename.DAT and 
  840.       filename.TTL.
  841.  
  842.  
  843.       filename.TTL: The Opening Screen(s)
  844.       --------------------------------
  845.       
  846.       The file filename.TTL is not "inspected" by GAGS in any way. The 
  847.       game program merely reads the file line by line and echoes it to 
  848.       the screen, pausing if the screen fills. (You might need to 
  849.       experiment with spacing if the "More" prompt obscures sections of 
  850.       text or graphics.) 
  851.       
  852.          While any ASCII or IBM characters can be used -- including 
  853.       some control characters -- use of non-ASCII characters is not 
  854.       recommended if you believe the game might be used by people who 
  855.       do not have IBM-compatible systems. Note that Control-Z (a value 
  856.       of 26) is the end-of file character, so don't embed this 
  857.       character in your text.  
  858.       
  859.          If you want your game to be covered by standard copyright 
  860.       protection, include the statement "Copyright <year> by <name>" in 
  861.       the opening screen, and provide a mailing address. The GAGS 
  862.       copyright notice, for the game "engine," will also be displayed 
  863.       after your opening screen.  
  864.       
  865.       
  866.       filename.DAT: The Main Data File
  867.       ------------------------------
  868.       
  869.       Needless to say, filename.DAT is the file that takes all the work, 
  870.       and this reference manual is devoted to the syntax of that file.
  871.       
  872.       
  873.       Classes: NOUNs, ROOMs, and CREATUREs
  874.       ------------------------------------
  875.       There are three classes of "things" in the game: NOUNs, VERBs, 
  876.       and CREATUREs. Each object defined must have a separate 
  877.       definition and description. Other specifications may pertain to a 
  878.       room or noun, as described in the precise syntax.
  879.       
  880.       
  881.  
  882.                                       R-2
  883.  
  884.       Structure of the .DAT file
  885.       --------------------------------
  886.        (A more formal syntax)
  887.       
  888.       The .DAT file consists of a set of definitions.
  889.       
  890.       Each definition is one of the following types; each type is also 
  891.       the introductory keyword of the definition:
  892.       
  893.          NOUN            ROOM            CREATURE         INTRO
  894.          NOUN_DESCR      ROOM_DESCR      CREATURE_DESCR
  895.          TEXT            SPECIAL         PULL_DESCR
  896.          PLAY_DESCR      PUSH_DESCR      TURN_DESCR
  897.       
  898.       Each definition is ended by a word beginning with the the string 
  899.       'END_' (i.e. 'END_NOUN'). NOTE: While it is advisable to use 
  900.       matching keywords, GAGS only checks for the initial characters 
  901.       'END_' and not for the complete appropriate end-of-block keyword.  
  902.       
  903.       Comments: Any text which occurs outside a definition is 
  904.       considered a comment and is ignored. In addition, unknown words 
  905.       *within* a defintion are *usually* ignored as well. However, to 
  906.       avoid unpleasant surprises, it is recommended that a known 
  907.       nonsense word ('rem' or 'comment') be used at the start of all 
  908.       comment lines.  
  909.  
  910.  
  911.       DESCRiption types:
  912.       ------------------
  913.  
  914.       Each description type consists merely of lines of ASCII text 
  915.       which are echoed to the screen when the user expects a 
  916.       description of something defined in the game. 
  917.       
  918.       If the file contains the following lines:
  919.       
  920.               NOUN 2
  921.               Globe
  922.               Red
  923.                .
  924.                .
  925.                .
  926.               END_NOUN
  927.       
  928.               NOUN_DESCR 2
  929.               The small red globe is a perfect sphere. It glows 
  930.               slightly.
  931.               END_OF_NOUN
  932.       
  933.               NOUN_DESCR 3
  934.               The towel is about eighteen inches wide by twenty-four 
  935.               inches long, and is quite soft.
  936.               END_NOUN
  937.       
  938.       The result of a player typing 'examine globe' would be:
  939.       
  940.               The small red globe is a perfect sphere. It glows 
  941.               slightly.
  942.       
  943.       
  944.                                       R-3
  945.  
  946.       
  947.       NOUNs
  948.       -----
  949.       
  950.               NOUN nnn                <-- nn is a number from 201 to 299
  951.               Name                    <-- one-word name of the noun
  952.               Adjective               <-- one-word adjective
  953.               Short description of the noun
  954.                             REM    ^-- a one-line description of the noun
  955.               {other characteristics go here}-
  956.               END_NOUN
  957.       
  958.           Other characteristics (optional):
  959.       
  960.               SIZE nn                 <-- nn is a number from 1 to 99+
  961.               WEIGHT nn               <-- nn is a number from 1 to 99+
  962.               UNMOVABLE               <-- default is movable (carryable)
  963.               LOCATION nn             <-- nn is a room number (1-199)
  964.               READABLE                <-- default is "not readable"
  965.                                           {if READABLE then <TEXT nn> 
  966.                                            must also be defined}
  967.               CLOSABLE                <-- default is "not closable"
  968.               CLOSED                  <-- default is "open"
  969.                                           {if open then it can hold
  970.                                            something}
  971.               LOCKABLE                <-- default is not lockable
  972.               LOCKED                  <-- default is unlocked
  973.               KEY nn                  <-- default is 0
  974.                                           {noun nn unlocks this noun
  975.                                            if it's lockable}
  976.               EDIBLE                  <-- default is inedible
  977.               DRINKABLE               <-- default is undrinkable/solid
  978.               POISONOUS               <-- default is nonpoisonous
  979.                                           {predictable effect if poisonous
  980.                                            edible/drinkable noun is eaten}
  981.               ON                      <-- default is 'off' 
  982.               PUSHABLE                <-- default is not pushable
  983.                                           {PUSH_DESCR nn recommended but
  984.                                            not required if it is pushable}
  985.               PULLABLE                <--  (ditto, PULL_DESCR nn)
  986.               PLAYABLE                <--  (ditto, PLAY_DESCR nn)
  987.               TURNABLE                <--  (ditto, TURN_DESCR nn)
  988.               IS_LIGHT                <-- default is NOT is_light
  989.                                               (IS_LIGHT -> illuminates any room
  990.                                               defined as LIGHT 1 or LIGHT nnn
  991.                                               where nnn is the noun number)
  992.               POINTS                  <-- default is 0 (points awarded to player
  993.                                               if object is held at game_end)
  994.               CAN_SHOOT               <-- default is can't shoot (can the 
  995.                                               weapon be used to shoot a 
  996.                                               creature? if not, it must be 
  997.                                               thrown) 
  998.               NUM_SHOTS               <-- default is 0 (how many bullets/ 
  999.                                               charges are there initially? 
  1000.                                               decremented each time the noun is 
  1001.                                               fired.) 
  1002.  
  1003.  
  1004.                                       R-4
  1005.  
  1006.  
  1007.       ROOMs
  1008.       -----
  1009.       The syntax of a room definition:
  1010.       
  1011.  
  1012.       Required:
  1013.       
  1014.              |<-----significant----->|<------ignored------------------------>|
  1015.                                      |
  1016.       
  1017.               ROOM nnn                <-- nnn is a number from 1 to 199
  1018.               Room Name               <-- room name (no comments!)
  1019.               {other characteristics}
  1020.               END_ROOM
  1021.       
  1022.       
  1023.       Optional characteristics:       <-- optional but at least one is
  1024.                                           strongly recommended
  1025.       
  1026.              |<-----significant----->|<------ignored------------------------>|
  1027.                                      |
  1028.       
  1029.               {direction} nnn         <-- nnn is a number from 1 to 199
  1030.                                           (default is 0)
  1031.                                           {any one of 12 directions can be 
  1032.                                            specified, from the list:
  1033.                                               NORTH   NORTHEAST  UP
  1034.                                               SOUTH   SOUTHEAST  DOWN
  1035.                                               EAST    NORTHWEST  ENTER
  1036.                                               WEST    SOUTHWEST  EXIT}
  1037.               SPECIAL nnn             <-- optional, nnn is a room number.{If
  1038.                                           present, the current definition
  1039.                                           must include KEY xxx and there must
  1040.                                           be a SPECIAL nnn definition}
  1041.               KEY xxx                 <-- xxx is a noun number (201-299)
  1042.                                           {activates special nnn}
  1043.               LIGHT xxx               <-- xxx is a noun number (201-299)
  1044.                                               OR the value 1 ("any light")
  1045.                                               {default is 0}
  1046.               POINTS xxx              <-- xxx is number of points player is
  1047.                                               awarded just for getting here.
  1048.                                               Default is 0.
  1049.               GAME_END                <-- if this line is in the def, the
  1050.                                               game ends as soon as the player
  1051.                                               enters the room (the room_descr
  1052.                                               is displayed, then the score).
  1053.       
  1054.       
  1055.                                       R-5
  1056.       
  1057.       CREATUREs
  1058.       ---------
  1059.       
  1060.       Required:
  1061.       
  1062.               CREATURE nnn            <-- nnn is a number from 301 to 399
  1063.               Name                    <-- one word name
  1064.               Adjective               <-- one word adjective
  1065.               Short description of creature.
  1066.                                       ^-- a one-liner
  1067.               {optional characteristics}
  1068.               END_CREATURE
  1069.       
  1070.       
  1071.       Optional:
  1072.       
  1073.               LOCATION nn             <-- nn is a room number from 1 to 199.
  1074.                                           {default is 0}
  1075.               WEAPON nn               <-- nn is a noun number from 201 to 299
  1076.                                           {default is 0}
  1077.                                           {noun nnn kills this creature}
  1078.               HOSTILE                 <-- default is friendly
  1079.               THRESHHOLD n            <-- {n is number of times monster can be 
  1080.                                           unsuccessfully attacked before it 
  1081.                                           kills the player - default 3}
  1082.               
  1083.       
  1084.       
  1085.       NOTE: A player cannot exit a room containing a hostile monster. 
  1086.       When killed, creatures are relocated to LOCATION 0.  Currently, 
  1087.       friendly/non-hostile creatures have no effect on the game's outcome.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.       SPECIALs
  1094.       --------
  1095.  
  1096.       If a player properly accesses the KEY to a SPECIAL, by acting on 
  1097.       it in the proper ROOM in a defined manner (PLAY, PUSH, PULL, 
  1098.       TURN), the player is relocated to the room specified in SPECIAL 
  1099.       nn within the room definition, and the text defined in the SPECIAL nn
  1100.       definition is displayed. In reality, if the entry SPECIAL nn 
  1101.       within the original room definition points to the same (current) 
  1102.       room, the player will not actually be moved anywhere, and the 
  1103.       only effect will be to display the SPECIAL text, which is 
  1104.       arranged like the '_DESCR' texts. (If the SPECIAL is activated, the 
  1105.       TURN_DESCR, etc. text is NOT displayed.)
  1106.  
  1107.                                       R-6      
  1108.  
  1109.       TEXT:
  1110.       -----
  1111.       
  1112.       TEXT is like the '_DESCR' texts, except that it is displayed only 
  1113.       when a noun is 'READ' by the player.
  1114.  
  1115.  
  1116.  
  1117.       Page Pauses
  1118.       -----------
  1119.          Normally, the game pauses after every 22 lines of text (so that the 
  1120.       player can read it), and the player then hits <CR> to read more. As you 
  1121.       play-test your game, you might try to adjust your paragraph or line 
  1122.       spacing so that the page breaks don't come at awkward spots and confuse 
  1123.       the player. This is probably most important in the title screen and the 
  1124.       INTRO text; it is less controllable in the individual room descriptions.
  1125.  
  1126.  
  1127.       PLAY, PUSH, PULL, TURN:
  1128.       -----------------------
  1129.       If a noun is defined as playable, pushable, pullable or turnable 
  1130.       and the player attempts to do so, the relevant '_DESCR' text is 
  1131.       displayed. If the action is valid but there is no accompanying 
  1132.       text, the player is informed that nothing interesting happens.  
  1133.          EXCEPTION: if the specified action fulfills the current room's 
  1134.       requirement for a SPECIAL, the push/pull/turn/play text is NOT 
  1135.       displayed, and the SPECIAL nn text is displayed instead for the 
  1136.       room the player is "moved" to.  
  1137.       
  1138.       Note: While "touch" is a synonym for "push" within a game, TOUCH 
  1139.             is NOT a keyword in a .DAT file. Use PUSHABLE and 
  1140.             PUSH_DESCR, not TOUCHABLE or TOUCH_DESCR.  
  1141.  
  1142.  
  1143.       INTRO
  1144.       -----
  1145.          The introductory text is displayed during the game's initialization 
  1146.       and cannot be re-read later. It also cannot be skipped over. It is 
  1147.       recommended that the INTRO text be put at the end of the data file since 
  1148.       it is displayed as it is encountered during initialization (locating it 
  1149.       at the top of the file would result in a long delay AFTER the 
  1150.       introduction and long after the initialization delay message has 
  1151.       vanished).
  1152.  
  1153.  
  1154.  
  1155.       LIGHTs and darkness
  1156.       -------------------
  1157.          If a room has been defined with a LIGHT value other than 0, it will 
  1158.       appear dark if the player enters the room empty-handed. If the LIGHT 
  1159.       value is 1, any noun serving as a light will make the room visible 
  1160.       (provided that the noun has been turned on). If the LIGHT value is a 
  1161.       number from 201 to 299, the room will only be visible if the player is 
  1162.       carrying that noun (it need not be turned on). 
  1163.       
  1164.  
  1165.                                       R-7
  1166.  
  1167.       EATing, DRINKing, and dying
  1168.       ---------------------------
  1169.          Any object defined as EDIBLE can be eaten. Any object defined as 
  1170.       DRINKable can be drunk. And any object defined as POISONOUS will kill the 
  1171.       player if s/he eats or drinks it. POISONOUS has no effect if the noun is 
  1172.       neither edible nor drinkable. In most situations, it is considered poor 
  1173.       sport to make completely non-threatening and logically edible things 
  1174.       poisonous; it is likewise questionable to make packages of rat poison 
  1175.       edible but non-poisonous.
  1176.  
  1177.  
  1178.       WEIGHT and SIZE
  1179.       ---------------
  1180.          Those values are there for a reason. No player can lift an object 
  1181.       heavier than 100, even if it's defined as MOVABLE. Likewise, objects 
  1182.       larger than 100 are too awkward to be carried. The total weight the 
  1183.       player can carry is 100, so the player cannot carry two 60-weight objects 
  1184.       at once. Total size limit is also 100. It is considered poor sport to 
  1185.       assign large weight values to feathers and low values to large slabs of 
  1186.       steel, but cruel gamewriters are able to do so. Likewise, a game will be 
  1187.       less baffling if small objects (pens, tin cans) have small size values 
  1188.       and large ones (desks, cars) are larger.
  1189.          (Remember, of course, that if your scenario puts the player in the 
  1190.       role of King Kong or Godzilla, you'd want to scale everything down so 
  1191.       s/he might be able to easily carry six cars and a bus but have difficulty 
  1192.       with more than one fully-loaded semi or house.)  
  1193.  
  1194.  
  1195.  
  1196.       SCORE (POINTS)
  1197.       --------------
  1198.          The player's progress in the game is reported in two ways: the number 
  1199.       of rooms visited, and the number of points currently held. The player 
  1200.       receives the defined number of points for visiting each room (default 
  1201.       point value is 0), and for carrying each noun when scoring is done 
  1202.       (default is 0). Players get no points for having eaten something, since 
  1203.       objects which are eaten or drunk are removed from the game. There is no 
  1204.       facility to reward the player for eating or punish the player for not 
  1205.       eating.  
  1206.          For best results, it is best to assign a point value to each room 
  1207.       which the player arrives at after solving some puzzle. It's also wise to 
  1208.       award a few points for out-of-the-way rooms. Objects should only have 
  1209.       point values if they can reasonably be expected to be carried at the end 
  1210.       of game -- if an object is too heavy to be lifted, it's not logical to 
  1211.       assign it a point value. Also, make sure that the total weight and size 
  1212.       of the point-valued objects doesn't exceed 99, since the player can't 
  1213.       carry that weight.
  1214.  
  1215.  
  1216.