[comp.sources.games] v05i095: tess - beyond the tesseract, an abstract adventure game, Part02/02

games@tekred.TEK.COM (12/08/88)

Submitted by: Viola lee <viola@idacom.cs.ubc.ca>
Comp.sources.games: Volume 5, Issue 95
Archive-name: tess/Part02

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 2 (of 2)."
# Contents:  adv.doc tess-def.c tess.1 tess.doc
# Wrapped by billr@saab on Wed Dec  7 16:58:58 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'adv.doc' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'adv.doc'\"
else
echo shar: Extracting \"'adv.doc'\" \(6077 characters\)
sed "s/^X//" >'adv.doc' <<'END_OF_FILE'
XAdventure Guidelines
X====================
X
X- These guidelines reflect the author's personal philosophy to adventures,
X  so there is naturally a bias in favor of certain factors and against others.
X  This is not to say that some factors are "bad", since what one person finds
X  frustrating another would find challenging.
X
X- Parts of the guidelines are taken from the Byte article "Adventure as
X  Literature".
X
X- Topics covered:
X    - Theme
X    - Plot
X    - Puzzles
X    - Locations
X    - Objects
X    - Mechanics
X    - Parser
X
X
XTheme
X-----
X  - Be bold
X      - Adventures can take place anywhere.
X
X  - Use sub-themes
X      - Add variety to adventure.
X      - Can be very different set of locations, or related sets (e.g. different
X        worlds, or just different stores).
X
X  - The theme should permeate throughout the adventure
X
X
XPlot
X----
X- An adventure can present several featrues to the player (listed in order
X  of decreasing importance):
X    - a goal to be accomplished
X    - puzzles to be solved
X    - interaction with the adventure world
X    - a story
X    - pictures
X
X- Have events happen to carry the story along
X    - Events don't have to be linear in occurrence.
X    - An event could occur to sidetrack the player.
X    - The adventure world shouldn't be too static.
X
X- Have alternative plots, endings, or even objectives
X    - Player selects which story line, or adv. randomly picks one.
X    - Player, as he plays, selects his own destiny, with some puzzles applying
X      to different scenarios.
X
X- Have unified but open text
X    - Unified: work out the history of the adventure world that explains each
X      object and character, and details the events before the adventure begin.
X    - Open: although the full history is available, don't have to explain
X      everything.
X    - This background will provide the foundation and basis for the adventure's
X      puzzles and situations.
X
X- Have a step by step build up to some climax or high point.  Something
X  exciting should happen at this point.
X
X
XPuzzles
X-------
X- No irreversible puzzles 
X    - More than just one chance to do something.
X    - Important objects can not be destroyed.
X    - No irrecoverable situations.
X
X- Have several solutions to problems
X    - Avoid the bad thinking "if I spend time putting it in, then everyone
X      must encounter it".
X    - If a player's action accomplishes something, or at least generates
X      a non-canned response, then the player is more satisfied than a
X      canned response or a "I don't know how to do that" message.
X    - In order of decreasing satisfaction, the type of responses are:
X        - action towards goal
X        - action irrelevant to goal
X        - non-canned response
X        - canned response
X        - unanticipated command
X        - not recognizing word
X
X- Have solutions with a moral quality or sense of purpose.
X    - Avoid bland do-it-because-you-can type of puzzles.
X    - Could have some emotions attached (e.g. rescue a fuzzy animal).
X    - The player should feel a sense of accomplishment.
X
X- Have fair and "logical" puzzles
X    - Puzzles can be as different and wild as the imagination, but they
X      must be logically solvable given the circumstances that the player
X      is in.
X    - The puzzles should fit into the overall theme.  Sometimes puzzles can
X      simply be reworded to fit into a particular theme.
X
X
XLocations
X---------
X- No illogical mazes, mixed-up directions, or un-mappable locations
X    - A maze should be a real maze, not a set of impossible-to-map rooms.
X    - Even if the adventure consists of independent sets of locations,
X      there should still be a logical layout to the map.
X
X- No empty or useless rooms
X    - A location just for the sake of completeness may add to the theme,
X      but from the player's point of view it is disappointing.
X    - This is especially true if the descriptions of the rooms are short,
X      since for long descriptions the location can significantly add to the
X      mood and feel of the adventrue.
X
X
XObjects
X-------
X- Have an info source
X    - Gives backgound info on objects/characters.
X    - Gives hints / how to use objects.
X    - Plot development.
X    - Humour.
X
X- Have "helper" characters
X    - act as an ally to the player
X    - e.g. The vendor in Intrepid, Thunderhawk in Gems
X
X- Have character interaction
X    - Fake conversations.
X    - Puzzles involving other characters.
X    - Getting hints from characters.
X    - Characters which follow the player.
X
X
XMechanics
X---------
X- No deaths
X    - Use a warning message for experimental/avoidable deaths.
X    - No unavoidable dangers / always have warnings.
X    - "If the player can be killed, then he can be warned of the danger".
X
X- No dwindling vital resource constraints (battery, air, time)
X    - As part of a puzzle, having to refill a resource is alright.
X    - As a limiting factor which can halt an adventure and force a player
X      to restart, it is an unnecessary obstacle.
X
X- Have a high carry limit, or no limit at all
X    - Object count dependent.
X    - Object size/weight dependent.
X
X- Have a narrator with a consistent personality and knowledge level.
X    - An all-knowing entity watching from above.
X    - Someone moving with the player.
X    - A puppet controlled by the player (uses 'I' in narrative).
X
X- Have some factors in the adventure that are random with each game
X    - e.g. safe combination, color, a true maze
X
X
XParser
X------
X- Have a large vocabulary
X    - Provide synonyms for words, especially for verbs.
X
X- Have appropriate parser:
X    - If the adventure requires many verb-noun-object constructs, then having
X      to use verb-noun commands with auxillary prompts becomes cumbersome.
X    - A more advanced parser can give more interesting puzzles and a more
X      natural feel to the adventure, but will require more work to handle
X      other responses.
X    - Parser types, in increasing order of complexity:
X        - "verb noun"
X        - "verb [article] noun"
X        - "verb [article] [ajective]* noun"
X        - "verb [article] [ajective]* noun [prep [article] [adjective]* noun]"
X
END_OF_FILE
if test 6077 -ne `wc -c <'adv.doc'`; then
    echo shar: \"'adv.doc'\" unpacked with wrong size!
fi
# end of 'adv.doc'
fi
if test -f 'tess-def.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'tess-def.c'\"
else
echo shar: Extracting \"'tess-def.c'\" \(8897 characters\)
sed "s/^X//" >'tess-def.c' <<'END_OF_FILE'
X/*
X  Beyond The Tesseract
X    - adventure world definition
X*/
X
X#define MaxLocs 36      /* # rooms */
X#define MaxObjs 54      /* # objects */
X#define MaxDirs 4       /* only 4 directions used (N E S W) */
X
X/*----------------------------*/
X/* Location
X*/
X#define north 0
X#define east  1
X#define south 2
X#define west  3
X#define up    4
X#define down  5
X
Xtypedef struct   /* room information */
X{
X  char
X    *name;       /* description of the room */
X
X  int
X    link [ MaxDirs ];  /* room connections: north, east, south, west */
X}
Xroom_type;
X
X
Xroom_type room [ MaxLocs ] =
X{
X  "in the adventure storage room" ,  0,0,0,0,
X  "in a green house" ,  0,0,2,7,
X  "in a researcher's office" ,  1,0,0,8,
X  "on the contradicting premises of a deduction" ,  5,0,0,0,
X  "in a mirrored hall" ,  0,11,9,10,
X  "at the origin" ,  14,16,3,15,
X  "in a spectral vortex" ,    0,0,19,0,   
X  "in a library" ,  0,1,8,0,    
X  "in a cryogenic lab" ,  7,2,0,0,    
X  "in a glass sphere" ,  4,0,0,0,
X  "in a hall of mirrors" ,  12,4,0,0,
X  "in a mirror hallway" ,  13,0,0,4,
X  "in a chamber of crystal" ,  0,0,10,0,
X  "in a transparent vault" ,  0,0,11,0,
X  "at the infinite point" ,  0,0,5,0,     
X  "in a set of all sets that's not a member of itself",  0,5,0,0,
X  "by a field of absolute certainty" ,  0,0,0,5,    
X  "in n-dimensional space" ,  0,0,0,16,   
X  "in an ocean of magnetic monopoles",  0,19,21,0,
X  "in a sea of radio frequencies" ,  6,20,22,18,
X  "in an ionic storm",  0,0,0,19,
X  "in a scintillating shower of light",  18,22,0,0,  
X  "in a chromatic whirlpool of infrared to ultraviolet" ,  19,0,0,21,
X  "in inner space" ,  0,24,26,0,  
X  "at the outer limits" ,  0,25,0,23,
X  "in the twilight of thought" ,  0,0,28,24,
X  "beyond the edge of forever" ,  23,27,0,0,  
X  "at the brink of time" ,  0,28,0,26,  
X  "in the shadow of tomorrow" ,  25,0,0,27,  
X  "in an alien atheneum" ,  30,0,0,0,    
X  "in the dimensia chamber" ,  0,0,29,0,
X  "in point-land" ,  0,0,29,0,   
X  "in line-land",  0,0,29,0,   
X  "in plane-land",  0,0,29,0,   
X  "in sphere-land",  0,0,29,0,    
X  "in an abyss of non-existence.  Shadows spellout 'Reasons and Answers'",  0,0
X,0,0
X};
X
X
X/*----------------------------*/
X/* objects
X*/
Xtypedef struct     /* object information */
X{
X  char
X    *name;         /* name of object */
X
X  int
X    init_loc,      /* initial location */
X    attr,          /* attribute:  b0=get  (b1=check in get)  b2=look  */
X    loc;           /* current location */
X}
Xobject_type;
X
X
Xobject_type obj [ MaxObjs ] =
X{
X  "", 0,0, 0,
X  "north" , 0, 0, 0,
X  "east" , 0, 0, 0,
X  "south" , 0, 0, 0,
X  "west" , 0, 0, 0,
X  "inventory" , 0, 0, 0,
X  "a large circular reflector" , 1, 4, 0,
X  "a CRT" , 2, 4, 0,
X  "a hyper-plant-being" , 9, 6, 0,
X  "a group" , 14, 6, 0,
X  "a hole in the argument" , 3, 4, 0,
X  "a dimension projector" , 30, 4, 0,
X  "some buttons" , -9, 4, 0,
X  "zero" , -7, 0, 0,
X  "one" , -7, 0, 0,
X  "two" , -7, 0, 0,
X  "three" , -7, 0, 0,
X  "four" , -7, 0, 0,
X  "fractal" , -9, 0, 0,
X  "chaos" , 31, 4, 0,
X  "some Fatou dust" , 32, 4, 0,
X  "a von Koch snowflake" , 33, 4, 0,
X  "Mount Mandelbrot" , 34, 4, 0,
X  "a tombstone" , 34, 4, 0,
X  "a stack" , -1, 5, 0,
X  "an audio transmutator" , 11, 5, 0,
X  "a book" , 7, 5, 0,
X  "some Z-pills" , 8, 1, 0,
X  "a pool of bubbling fluid" , 8, 2, 0,
X  "a Klein bottle" , 0, 5, 0,
X  "a prism" , 12, 5, 0,
X  "a _y_ing apparatus" , 13, 5, 0,
X  "an infinite improbability" , 15, 7, 0,
X  "a mobius strip" , 5, 1, 0,
X  "a Riemann zeta integral" , 17, 5, 0,
X  "a hexahedron" , 18, 5, 0,
X  "a ceramic coil" , 19, 5, 0,
X  "plasma" , 20, 3, 0,
X  "a 4-D solid" , 0, 1, 0,
X  "some 4-D liquid" , 0, 3, 0,
X  "a singularity" , 0, 5, 0,
X  "an image disk" , 29, 5, 0,
X  "a supposition" , 24, 5, 0,
X  "an hypothesis" , 28, 5, 0,
X  "a lemma" , 0, 5, 0,
X  "a theorem" , 0, 5, 0,
X  "an axiom" , 27, 5, 0,
X  "a postulate" , 23, 5, 0,
X  "a meditating mathematician" , 26, 4, 0,
X  "a crystal tetrahedron", 0, 5, 0,
X  "a non-differentiable function", 14, 5, 0,
X  "an idea", 0, 5, 0,
X  "a contradiction" , 0, 5, 0,
X  "a warranty" , 29, 5, 0
X};
X
X/* constants to refer to objects by
X*/
X#define o_nothing 0
X#define o_north 1
X#define o_east 2
X#define o_south 3
X#define o_west 4
X#define o_invent 5
X#define o_mirror 6
X#define o_crt 7
X#define o_plant 8
X#define o_group 9
X#define o_hole 10
X#define o_proj 11
X#define o_buttons 12
X#define o_zero 13
X#define o_one 14
X#define o_two 15
X#define o_three 16
X#define o_four 17
X#define o_fractal 18
X#define o_chaos 19
X#define o_dust 20
X#define o_flake 21
X#define o_mount 22
X#define o_tomb 23
X#define o_stack 24
X#define o_audio 25
X#define o_book 26
X#define o_pills 27
X#define o_fluid 28
X#define o_bottle 29
X#define o_prism 30
X#define o_appa 31
X#define o_improb 32
X#define o_strip 33
X#define o_zeta 34
X#define o_cube 35
X#define o_coil 36
X#define o_plasma 37
X#define o_solid 38
X#define o_liquid 39
X#define o_sing 40
X#define o_disk 41
X#define o_supp 42
X#define o_hypo 43
X#define o_lemma 44
X#define o_theorem 45
X#define o_axiom 46
X#define o_post 47
X#define o_math 48
X#define o_tetra 49
X#define o_func 50
X#define o_idea 51
X#define o_contra 52
X#define o_warr 53
X
X/*----------------------------*/
X/* vocabulary
X*/
Xtypedef struct          /* vocabulary word */
X{
X  char *name;           /* word used */
X  int num;              /* which object it corresponds to */
X}
Xvocab_type;
X
Xvocab_type v_noun [] =          /* start w/blank string, end w/null string */
X{
X  "    " , 0,
X  "n   " , 1 ,  "nort" , 1 ,
X  "e   " , 2 ,  "east" , 2 ,
X  "s   " , 3 ,  "sout" , 3 ,
X  "w   " , 4 ,  "west" , 4 ,
X  "i   " , 5 ,  "inve" , 5 ,  "inv " , 5 ,  "all ", 5 ,
X  "refl" , 6 ,  "mirr" , 6 ,
X  "crt " , 7 ,  "scre" , 7 ,  "tube" , 7 ,
X  "plan" , 8 ,  "bein" , 8 ,  "alie" , 8 ,
X  "grou" , 9 ,
X  "hole" , 10 ,
X  "proj" , 11 ,
X  "butt" , 12 ,
X  "zero" , 13 ,  "0   " , 13 ,
X  "one " , 14 ,  "1   " , 14 ,
X  "two " , 15 ,  "2   " , 15 ,
X  "thre" , 16 ,  "3   " , 16 ,
X  "four" , 17 ,  "4   " , 17 ,
X  "frac" , 18 ,
X  "chao" , 19 ,
X  "dust" , 20 ,  "fato" , 20 ,
X  "snow" , 21 ,  "flak" , 21 ,  "koch" , 21 ,
X  "moun" , 22 ,  "mt  " , 22 ,  "mand" , 22 ,
X  "tomb" , 23 ,  "epit" , 23 ,
X  "stac" , 24 ,  "key " , 24 ,
X  "audi" , 25 ,  "tran" , 25 ,  "earp" , 25 ,
X  "book" , 26 ,  "adve" , 26 ,
X  "pill" , 27 ,  "z-pi" , 27 ,  "z   " , 27 ,
X  "pool" , 28 ,  "flui" , 28 ,
X  "klei" , 29 ,  "bott" , 29 ,
X  "pris" , 30 ,
X  "_y_ " , 31 ,  "appa" , 31 ,  "y   " , 31 ,
X  "impr" , 32 ,  "hear" , 32 ,  "gold" , 32 ,
X  "mobi" , 33 ,  "stri" , 33 ,  "moeb" , 33 ,
X  "riem" , 34 ,  "zeta" , 34 ,  "inte" , 34 ,
X  "hexa" , 35 ,  "cube" , 35 ,  "die " , 35 ,  "dice" , 35 ,
X  "coil" , 36 ,  "cera" , 36 ,  "loop" , 36 ,
X  "plas" , 37 ,
X  "soli" , 38 ,  "tess" , 38 ,
X  "liqu" , 39 ,
X  "sing" , 40 ,  "band" , 40 ,  "filt" , 40 ,
X  "disk" , 41 ,  "disc" , 41 ,
X  "supp" , 42 ,
X  "hypo" , 43 ,
X  "lemm" , 44 ,
X  "theo" , 45 ,
X  "axio" , 46 ,
X  "post" , 47 ,  "prof" , 47 ,
X  "math" , 48 ,
X  "crys" , 49 ,  "tetr" , 49 ,  "pyra" , 49,
X  "func" , 50 ,
X  "idea" , 51 ,
X  "cont" , 52 ,
X  "warr" , 53 ,  "guar" , 53 ,
X  "",0
X};
X
Xvocab_type v_verb[] =
X{
X  "    " , 0 ,
X  "nort" , 1 ,  "n   " ,  1 ,
X  "east" , 2 ,  "e   " ,  2 ,
X  "sout" , 3 ,  "s   " ,  3 ,
X  "west" , 4 ,  "w   " ,  4 ,
X  "inve" , 5 ,  "i   " ,  5 ,
X  "go  " , 6 ,
X  "get " , 7 ,  "take" ,  7 ,  "grab" , 7 ,  "g   " , 7 ,
X  "drop" , 8 ,  "leav" ,  8 ,
X  "thro" , 9 ,  "toss" ,  9 ,
X  "brea" , 10 ,  "hit " , 10 ,  "kill" , 10 ,  "figh" , 10 ,  "kick" , 10 ,
X                 "atta" , 10 ,
X  "look" , 11 ,  "exam" , 11 ,  "l   " , 11 ,
X  "read" , 12 ,
X  "use " , 13 ,  "util" , 13 ,  "appl" , 13 ,
X  "touc" , 14 ,  "feel" , 14 ,
X  "swin" , 15 ,  "wave" , 15 ,  "shak" , 15 ,
X  "rub " , 16 ,  "pres" , 17 ,  "push" , 17 ,
X  "pop " , 18 ,
X  "spin" , 19 ,  "turn" , 19 ,  "rota" , 19 ,  "twis" , 19 ,  "flip" , 19 ,
X  "roll" , 20 ,
X  "wear" , 21 ,
X  "eat " , 22 ,  "swal" , 22 ,
X  "tast" , 23 ,
X  "drin" , 24 ,
X  "remo" , 25 ,
X  "wate" , 26 ,  "wet " , 26 ,  "wash" , 26 ,  "hydr" , 26 ,
X  "fill" , 27 ,
X  "pour" , 28 ,  "empt" , 28 ,
X  "free" , 29 ,  "cool" , 29 ,
X  "melt" , 30 ,
X  "play" , 31 ,  "star" , 31 ,
X  "inse" , 32 ,  "put " , 32 ,
X  "_y_ " , 33 ,  "y   " , 33 ,
X  "prov" , 34 ,  "veri" , 34 ,  "deve" , 34 ,
X  "fix " , 35 ,  "repa" , 35 ,
X  "smel" , 36 ,
X  "clos" , 37 ,
X  "open" , 38 ,
X  "stop" , 39 ,
X  "say " , 40 ,  "spea" , 40 ,
X  "quit" , 41 ,
X  "help" , 42 ,
X  "list" , 43 ,  "hear" , 43 ,
X  "save" , 44 ,
X  "load" , 45 ,
X  "scor" , 46 ,
X  "slee" , 47 ,  "drea" , 47 ,
X  "wake" , 48 ,
X  "give" , 49 ,
X  "scan" , 50 ,  "sc  " , 50 ,
X  "eval" , 51 ,  "solv" , 51 ,  "diff" , 51 ,
X  "thin" , 52 ,  "pond" , 52 ,  "medi" , 52 ,
X  "burn" , 53 ,  "igni" , 53 ,  "heat" , 53 ,
X  "evap" , 54 ,  "vapo" , 54 ,
X  "clim" , 55 ,
X  "cut " , 56 ,  "slic" , 56 ,  "stab" , 56 ,
X  "join" , 57 ,
X  "sing" , 58 ,
X  "" , 0
X};
X
Xint
X  num_verbs = sizeof( v_verb ) / sizeof( vocab_type ),
X  num_nouns = sizeof( v_noun ) / sizeof( vocab_type );
X
END_OF_FILE
if test 8897 -ne `wc -c <'tess-def.c'`; then
    echo shar: \"'tess-def.c'\" unpacked with wrong size!
fi
# end of 'tess-def.c'
fi
if test -f 'tess.1' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'tess.1'\"
else
echo shar: Extracting \"'tess.1'\" \(2724 characters\)
sed "s/^X//" >'tess.1' <<'END_OF_FILE'
X.TH TESS 1
X.SH NAME
Xtess - beyond the tesseract, an abstract adventure
X.SH SYNOPSIS
Xtess
X.SH DESCRIPTION
X.SH Scenario:
X.LP
XYou have reached the final part of your mission.  You have gained access
Xto the complex, and all but the last procedure has been performed.  Now
Xcomes a time of waiting, in which you must search for the hidden 12-word
Xmessage that will aid you at the final step.  But what choice will you
Xmake when that time comes?
X.LP
XThe scenario for the adventure is meant to be vague.  Once the adventure has
Xbeen completed, the scenario will hopefully become clear.
X.SH Instructions:
X.LP
XThis adventure recognizes the standard commands for moving (N,E,S,W),
Xtaking inventory (I), maninpulating objects (GET, DROP, LOOK), and
Xsaving games (SAVE, LOAD), as well as many others.  Use 2-word 'verb noun'
Xcommands, such as 'use stack' or 'get all'.  Only the first four letters
Xof each word are significant.  The adventure recognizes about 200 words,
Xso if one word doesn't work, try another.
X.SH Notes:
X.LP
X.IP - 5
XThe "stack" is an acroynym for Space Time Activated Continuum Key.
XYou will find this object very useful.
X.IP - 5
XThis adventure is abstract and a bit on the technical side.  Detail
Xknowledge of the technical background is not necessary, although it will
Xmake the adventure more enjoyable.
X.IP - 5
XThere is no carry limit, and no death traps.  The map of the adventure can
Xbe draw on a grid.  All it takes is a little experimenting to put all the
Xsubsets of locations together "logically".
X.IP - 5
XKnowledge of high school physics and math concepts is necessary to
Xplay this adventure.
X.SH References:
X.LP
XThe following books and reference works were used at one time or another
Xas a source of information and/or inspiration:
X.LP
X.in +5
X.na
XThe Beauty of Fractals.
X.br
XThe Fontana Dictionary of Modern Thought.
X.br
XThe Fractal Geometry of Nature.
X.br
XGodel, Escher, Bach: An Eternal Golden Braid.
X.br
XThe Heritage Illustrated Dictionary Of the English Language.
X.br
XMathematics: The New Golden Age.
X.br
XThe New Lexicon Webster's Dictionary, Encyclopedic Edition.
X.br
XThe Penguin Dictionary of Science, Fifth Edition.
X.br
XRoget's International Thesaurus.
X.br
XThe Science of Fractal Images.
X.br
XThe VNR Concise Encyclopedia of Mathematics.
X.br
XThe World of M.C. Escher.
X.in -5
X.ad
X.SH SEE ALSO
Xtess.doc, adv.doc
X.SH AUTHOR
X.nf
X.na
XDavid Lo
X4516 Albert St.
XBurnaby, B.C.   V5C 2G5
XCanada
X604-291-0690
Xemail c/o viola@idacom.cs.ubc.ca
X.fi
X.ad
X.LP
XThis adventure is FreeShareAnythingWare.  If you like this program, hate it,
Xor really don't care at all, then I would be happy to to hear from you
X(a letter, a post-it note, etc).
X.LP
XPlease share unmodified copies of this adventure with everyone you meet.
END_OF_FILE
if test 2724 -ne `wc -c <'tess.1'`; then
    echo shar: \"'tess.1'\" unpacked with wrong size!
fi
# end of 'tess.1'
fi
if test -f 'tess.doc' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'tess.doc'\"
else
echo shar: Extracting \"'tess.doc'\" \(5733 characters\)
sed "s/^X//" >'tess.doc' <<'END_OF_FILE'
XBeyond The Tesseract   V2.0p   Nov/88
X--------------------
X
XAn abstract text adventure by  |  This adventure is FreeShareAnythingWare.
X  David Lo                     |  If you like this program, hate it,
X  4516 Albert St.              |  or really don't care at all, then
X  Burnaby, B.C.   V5C 2G5      |  I would be happy to to hear from you
X  Canada                       |  (a letter, a post-it note, etc).
X  604-291-0690                 |
X  email c/o viola@idacom.cs.ubc.ca
X
XPlease share unmodified copies of this adventure with everyone you meet.
X
X
XScenario:
X---------
X  You have reached the final part of your mission.  You have gained access
X  to the complex, and all but the last procedure has been performed.  Now
X  comes a time of waiting, in which you must search for the hidden 12-word
X  message that will aid you at the final step.  But what choice will you
X  make when that time comes?
X
X  The scenario for the adventure is meant to be vague.  Once the adventure has
X  been completed, the scenario will hopefully become clear.
X
X
XInstructions:
X-------------
X  This adventure recognizes the standard commands for moving (N,E,S,W),
X  taking inventory (I), maninpulating objects (GET, DROP, LOOK), and
X  saving games (SAVE, LOAD), as well as many others.  Use 2-word 'verb noun'
X  commands, such as 'use stack' or 'get all'.  Only the first four letters
X  of each word are significant.  The adventure recognizes about 200 words,
X  so if one word doesn't work, try another.
X
X
XNotes:
X------
X  - The "stack" is an acroynym for Space Time Activated Continuum Key.
X    You will find this object very useful.
X
X  - This adventure is abstract and a bit on the technical side.  Detail
X    knowledge of the technical background is not necessary, although it will
X    make the adventure more enjoyable.
X
X  - There is no carry limit, and no death traps.  The map of the adventure can
X    be draw on a grid.  All it takes is a little experimenting to put all the
X    subsets of locations together "logically".
X
X
XCompiling Notes:
X----------------
X  - There are three source files for the adventure:
X      TESS-DEF.C  : adventure world and vocabulary definition
X      PARSER.C    : command parser
X      TESS.C      : main adventure file.  #includes TESS-DEF.C and PARSER.C.
X
X| - To compile with Turbo C 1.5, comment out the "#define tty" line in
X|   TESS.C and compile with the command "tcc tess.c".  This will result in
X|   the adventure using a split-screen format for the display.
X|
X| - For other compilers, compiling with the "tty" symbol defined will result in
X|   a scrolling, non-IBM dependent display that should work with most compilers
X|   and terminals.  Compile with a command equivalent to the Unix command
X|   "cc tess.c -o tess".
X
X  - The following are some of the "non-classical" C features used:
X      enum
X      functional prototyping
X
X  - In the function "intro", Some compiler may give a warning about the
X    variable "k" being used before it's defined.  This is intentionally done
X    as part of the routine to reseed the random number generator.
X
X
XHistory:
X-------
X  Version    Date        Machine        Language         # Lines
X  --------------------------------------------------------------
X  1.0        Jun. 1983   16K TRS-80     Level II BASIC   350
X  2.0        Sep. 1988   IBM-XT clone   Turbo C 1.5      2500
X| 2.0p       Nov. 1988       "          dlc,msc,qc
X|                        Sun-3          pcc,gcc
X
X  Tesseract Version 2.0 is my first MS-DOS adventure and an exercise in
X  learning C.  Since this is a direct port of the old BASIC version, it may be
X  smaller than some other adventures, and some of the coding might not be too
X  clean.  For the C version, appropriate changes were made to the data
X  structures, additions and small changes made to some of the puzzles, and the
X  ending expanded.
X
X  The very first adventure that I wrote was in 1982, titled "Hall of the
X  Mountain King" (find the Crystal of Light).  Tesseract Version 1.0 was the
X  second of the three TRS-80 BASIC adventures that I wrote in a two month
X  adventure-frenzy during the summer of 1983.  The first was "Project Triad"
X  (defuse the bomb on the space station), and the third was "Codename
X  Intrepid" (deliver a package to another agent).
X
X| The first release was version 2.0 in Oct. 1988, in binary form over Usenet.
X| This release (2.0p) is the portable source version designed to work with
X| compilers other than Turbo C.  -- Dennis Lo.
X
XReferences:
X-----------
X  The following books and reference works were used at one time or another
X  as a source of information and/or inspiration:
X
X    The Beauty of Fractals.
X    The Fontana Dictionary of Modern Thought.
X    The Fractal Geometry of Nature.
X    Godel, Escher, Bach: An Eternal Golden Braid.
X    The Heritage Illustrated Dictionary Of the English Language.
X    Mathematics: The New Golden Age.
X    The New Lexicon Webster's Dictionary, Encyclopedic Edition.
X    The Penguin Dictionary of Science, Fifth Edition.
X    Roget's International Thesaurus.
X    The Science of Fractal Images.
X    The VNR Concise Encyclopedia of Mathematics.
X    The World of M.C. Escher.
X
X
XTesseract:
X----------
X               /*--------------/*
X             /  '            /  '
X           /   '|          /   '|
X        */----'---------*/    ' |
X       '|    '  |      '|    '  |
X      ' |   '   |     ' |   '   |
X     '  |  '   /*----'--|--'---/*
X    '   | '  /  '   '   | '  /  '
X   '    |' /   '   '    |' /   '
X  '    /*/----'---'----/*/    '
X '   /  '    '   '   /  '    '
X'  /   '|   '   '  /   '|   '
X*/----'----'----*/    ' |  '
X|    '  | '     |    '  | '
X|   '   |'      |   '   |'
X|  '   /*-------|--'---/*
X| '  /          | '  /
X|' /            |' /
X*/--------------*/
X
END_OF_FILE
if test 5733 -ne `wc -c <'tess.doc'`; then
    echo shar: \"'tess.doc'\" unpacked with wrong size!
fi
# end of 'tess.doc'
fi
echo shar: End of archive 2 \(of 2\).
cp /dev/null ark2isdone
MISSING=""
for I in 1 2 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked both archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0