*        Define vaious constants.
*
NOISE    AND,THE,A,IT,AN,THAT,THIS,TO,AT,WITH,THEM,ROOM
*
*        Bit flags set for the STATUS variable
*
FLAGS    VARIABLE
         MOVED         {set by interpreter whenever we move}
         QUICKIE       {BRIEF output mode in effect}
         FASTMODE      {FAST output mode in effect}
         FULLDISPLAY   {Display full place description}
         DETAILDISPLAY {Display detailed place/object description}
         PLS.CLARIFY   {Signals missing object or verb}
         JUGGLED       {set by interpreter whenever we move an object}
         TICKED        {The main clock (CLOCK4) has just ticked}
*
*        Next, the flag set for places
*
FLAGS    PLACE
         LIT           {Place is self-illuminated}
         BEEN.HERE     {We've been here at least once}
         NO.DWARF      {Dwarves can't go here}
         NO.BACK       {Can't use BACK to go to/from this place}
         NOT.IN.CAVE   {This place is not in the cave}
         HINTABLE      {There may be a hint for this place}
         H20.HERE      {Water is available here}
         IN.MAZE       {This room is in one of the mazes}
         ONE.EXIT      {Only one exit out of room}
         TRANSIT       {Objects thrown here generally wind up elsewhere}
         IN.SEWER      {A sewer location}
         SMARTASS      {He has refused spontaneous hint here}
         DAMP          {the ground is damp here - either from oil or water}
*
*        Next, the objects flag set
*
FLAGS    OBJECT
         PORTABLE       {Object can be carried}
         SEEN           {We've seen the object}
         VALUED         {It's a treasure - must be left in the building}
         SCHIZOID       {It's schizoid - in 2 places at once}
         UNSTABLE       {Unstable objects get kicked from state 0}
*                       {into state 1 the first time they're picked
*                       {up - applies only to objects that aren't
*                       {special-cased anywhere in the code.}
         MORTAL         {This is a killable entity}
         OPENABLE       {Object can be opened/unlocked}
         FEATURE        {Object is a feature of this location}
         PLURAL         {Object should be referred to in plural}
         FREEBIE        {Object is effectively weightless}
         SPECIAL1       {Special control bit 1}
         SPECIAL2       {Special control bit 2}
         BIG            {Set for objects}
         WEARABLE       {Object can be worn - in principle!}
*
*        The usage of SPECIAL1 and SPECIAL2 is currently as
*        follows:
*
*        Dwarf       #1 set if the dwarf who just appeared hasn't
*                    thrown his first knife (which always misses)
*                    yet.  #2 set if the dwarf is angry (you tried
*                    to feed him, threw food at him, or doused him
*                    with water or oil).
*
*        Pirate      #1 set if the pirate is chasing you.
*
*        Djinn       #1 set if you released the djinn from the
*                    pentagram (he's grateful).  #2 set if he has
*                    given you a hint as a reward for doing so.
*
*        Safe        #1 set if you have successfully opened the safe
*                    at least once and have not come to a sticky end
*                    inside it.
*
*        Quicksand   #1 set if you have drowned in the quicksand at
*                    least once.
*
*        Troll       #1 set if you have stolen the eggs back from the
*                    troll.
*
*        Shadow      #1 set if player just waved; #2 set on next move
*                    if shadow about to wave back.
*
*        Grate       #1 set if you tried to get out through the grate
*                    during closure.
*
*        Eggs        #1 set if eggs in troll's possession.
*                    #2 set if eggs gone for good.
*
*        Sword       #1 set on reading the pattern on the rock.
*
*        Chalice     #1 set if chalice full, #2 set if just filled.
*
*        Starstone   #1 set if failed to pick it up.
*
*        Fissure     #1 set if crossed once
*
*        Crown       #1 set if whispering crown just incremented.
*                    #2 set if crown worn at least once.
*
*        Rats        #1 set if can go down into sewers.
*                    #2 he can leave the stream maze
*                    the FREEBIE flag is also used as a special, to
*                        to avoid long message repetition.
*
*        Giant       #1 set if the HUNGRY.GIANT message printed
*                    #2 if pushed player out of ravine at least once
*
*        All non-big objects  #2 used in dwarves choosing objects to pick up.
*
*        During the end-game all special bits are cleared, except for
*        #1 being set for any objects 'piled up' in NE repository and
*        #2 similarly indicating SW repository and the unicorn, whose special
*        bits are used (but only after the blast!) to time the warning in
*        the Dark Hole.
*
*        Define a flag set for the ADMIN variable
*
FLAGS    VARIABLE
*         DEMO           {Demonstration game}
         TICKER         {Call TICK label after each move, if set.}
         CAMEO.TRIED    {We have tried to do a cameo}
         NOMAGIC        {Magic words are being suppressed}
         PANICKED       {He panicked during closure}
         OLORIN         {He's a wizard}
         RANOUT         {His lamp just died.}
         NICHE.USED     {He had something valued by the niche}
         QUIPPED        {Dwarf died in a strange manner}
         EDISON         {He has just said NOSIDE}
         CHALICE.GONE   {He has drank the pure waters}
*
*        Define bit flags for special hint processing. (Variable HINTS).
*
FLAGS    VARIABLE
         SNAKE.PENDING   {The first snake hint delivered}
         STATUE.PENDING  {The first Minotaur gorge hint delivered}
         WITT.HELP       {He's just got the hint at Witt's end}
         HELPED.HIM      {Gave him vanilla "HELP" message once}
         SIMPLE.RULE     {Referred to 'simple rule' at Nowhere}
         DEATH.IS.SIMPLE {Advised him how to die}
         PICKING.UP.RUGS {Told him to ponder}
         UNROLLING.RUGS  {Told him to drop it}
*
*        Define administrative control parameters
*
CONSTANT 10,  MIN.TIME    {# of minutes you must wait after SAVE}
         20,  HINT.COST   {what each hint costs you}
         5,   HASTE.COST  {cost of restoring game too soon}
         1999,MAX.GAME    {maximum # of moves in real games}
*
*        Define bottle/flask states
*
STATE    IN.PENTAGRAM {flask only}
         SEALED       {flask only}
         EMPTIED
         FULL.OF.WATER
         FULL.OF.OIL
*
*        Define lamp states
*
STATE    SWITCHED.OFF
         SWITCHED.ON
*
*        Define door/portcullis states
*
STATE    RUSTY
         OILED
*
*        Define grate/chain/safe states.
*
STATE    LOCKED
         UNLOCKED
         LOCKED.EMPTY, FUSED
*
*        Define orb visions
*
CONSTANT VANILLA.VISION
         PLANT.VISION
         GIANT.VISION
         SPIDER.VISION
         SWORD.VISION
         OGRE.VISION
         RING.VISION
         GORGE.VISION
         STATUE.VISION
         SKELETON.VISION
         CROWN.VISION
         OUT.OF.VISIONS
*
*        Define orc mutters
*
CONSTANT CHALICE.MUTTER
         EGGS.MUTTER
         LAVA.MUTTER
         PENTAGRAM.MUTTER
         ORB.MUTTER
         NO.MUTTER
         STARSTONE.MUTTER
         CATACOMBS.MUTTER
         NOSIDE.MUTTER
         SWORD.MUTTER
         KEYS.MUTTER
         PLOVER.MUTTER
         SEWERS.MUTTER
*
*        Define special mushroom states
*
STATE    2,  EATEN
             DIGESTED
*
*        Define dragon states
*
STATE    ON.RUG
         DEAD.BODY
         ROTTING.CARCASS
*
*        Define basilisk states
*
STATE    SNORING
         TWITCHING
         PETRIFIED
         PETRIFIED.TO.SOUTH
*
*        Define the 'shiny' state of the plate
*
STATE    2,  SHINY        {Plate "unstable" so can't use 1}
*
*        Define chasm states
*
STATE    BRIDGED
         BRIDGE.WRECKED
         BRIDGE.BURNED
*
*        Define troll states
*
STATE    WANTS.TREASURE
         BOUGHT.OFF
         WILL.BE.BACK
         SCARED.OFF
         GONE.FOR.GOOD
*
*        Define starstone states
*
STATE    1,  QUIESCENT
             DARKENED
             IRIDESCENT
*
*        Define battery states. (Note, state 2 MUST be dummy).
*
STATE    1,  FRESH
         3,  WORNOUT
*
*        Define rags' "very dirty" state.
*
STATE    2,  VERY.DIRTY         {RAGS being "unstable", can't use 1!}
*
*        Define bird states.
*
STATE    FREED
         CAGED
*
*        Define bear states.
*
STATE    CHAINED.FEROCIOUS
         CHAINED.GENTLE
         UNCHAINED
*
*        Define axe states.
*
STATE    AN.ZICH
         BY.BEAR
         BY.SPIDER
*
*        Define web states.
*
STATE    WITH.SPIDER
         WITH.DOCUMENTS
         IN.SHREDS
*
*        Define giant states.
*
STATE    RESTING
         GETTING.READY
         BLISSFUL
         HURT
         PICNICKING
         STILL.PICNICKING
*
*        Define statue states.
*
STATE    SOLID.WALL
         WALL.GONE
*
*        Define the sword 'in the stone' state.
*
STATE    IN.STONE
*
*        Define beanstalk states.
*
STATE    STUNTED
         GROWN
         GIGANTIC
*
*        Define spoon and notice states.
*
STATE    UNREAD
         EXAMINED, EPNS.NOTED
         BRILLIGED, EPNS.WORTHLESS
*
*        Define some of the crown states.
*
STATE    1,  DORMANT
             ACTIVATED
             WHISPERING
         7,  INCOMPREHENSIBLE
         9,  SPEAKING
         12, CHANTING
         17, ROARING
         19, KILLING
*
*        Define rug states.
*
STATE    UNROLLED
         ROLLED.UP
*
*        Define threshold for wearable objects. Note that this is set to
*        take into account "unstable" objects. Hence on removing stable
*        objects will give them state 1, which they mostly don't have.
*        Not that it matters - the highest existing description will
*        be printed in such a case.
*
STATE    1,  NOT.WORN
             WORN
*
*        Define dwarf sentry states.
*
STATE    DOZING
         WATCHFUL
         WELCOMING.COMMETTEE
*
*        Define the states for STEPS at MISTS and PIT.
*
STATE    STEPS.PRESENT
         STEPS.GONE
*
*        Define status values returned by IS.IT.DARK?
*
CONSTANT IT.IS.NOT.DARK
         IT.IS.DARK
*
*        Define values passed by interpreter for "unrecognized word"
*
* CONSTANT 9998, AMBIGWORD
*                BADWORD
*
*        The phases of cave closure are as follows:
*
CONSTANT STILL.OPEN          {Cave open and operating normally}
         CLOSING.SOON        {All treasures are in well-house}
         EXITS.BARRED        {Cave closing soon}
         IN.REPOSITORY       {In repository}
         MIDDLE.OF.NOWHERE   {At misty nowhere}
         MIRROR.WORLD        {Back outside cave}
         VICTORY!            {Wins game!}
*
CONSTANT 16, CLOSURE.CREDIT       {Points per stage of closure}
*
*        One special bit flag for the CLOSURE variable
*
FLAGS    VARIABLE
         CONFUSION      {has got confused once in closure stage 5}
#
constant none
         q.input       # Mandatory
         q.restored    # Mandatory
         q.intro
         q.expansions
         q.wizard
         q.prove.it
         q.quit
         q.kill.dragon
         q.kill.dwarf
         q.kill.ogre
         q.kill.giant
         q.whirlpool
         q.resurrect
         q.need.hint
         q.want.hint
         q.save.what
         q.wait
         q.continue
         q.overwrite
         q.restore.what
         q.keep.it
         q.explode
         q.more
         q.want.out
         q.gate
         q.unicorn
         q.suicide
         q.tower
         q.oyster
         q.see.rest
         q.good.news.1
         q.good.news.2
         q.phuggg
#
###############################################################
