minizork2-1988/dungeon.zil

679 lines
18 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"DUNGEON for
Mini-Zork II: The Wizard of Frobozz
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
<ROOM INSIDE-THE-BARROW
(IN ROOMS)
(DESC "Inside the Barrow")
(LDESC
"You are in an ancient barrow which opens to the southwest.")
(SW TO GREAT-CAVERN)
(FLAGS RLANDBIT ONBIT)>
<OBJECT LAMP
(IN INSIDE-THE-BARROW)
(DESC "lamp")
(FDESC "A familiar brass lantern is lying on the ground.")
(SYNONYM LAMP LANTERN LIGHT)
(ADJECTIVE BRASS)
(SIZE 15)
(FLAGS TAKEBIT LIGHTBIT)
(ACTION LAMP-F)>
<ROUTINE LAMP-F ()
<COND (<AND <VERB? THROW>
<PRSO? ,LAMP>>
<TELL "You'd break it!" CR>)
(<AND <VERB? EXAMINE LAMP-ON LAMP-OFF>
,LAMP-BURNED-OUT>
<TELL "The lamp has burned out." CR>)
(<VERB? LAMP-ON>
<ENABLE <INT I-LANTERN>>
<RFALSE>)
(<VERB? LAMP-OFF>
<DISABLE <INT I-LANTERN>>
<RFALSE>)
(<VERB? EXAMINE>
<TELL "The lamp is o">
<COND (<FSET? ,LAMP ,ONBIT>
<TELL "n">)
(T
<TELL "ff">)>
<TELL ,PERIOD-CR>)>>
<GLOBAL LAMP-BURNED-OUT <>>
<ROUTINE I-LANTERN ("AUX" TICK (TBL <VALUE LAMP-TABLE>))
<ENABLE <QUEUE I-LANTERN <SET TICK <GET .TBL 0>>>>
<COND (<0? .TICK>
<FCLEAR ,LAMP ,ONBIT>
<SETG LAMP-BURNED-OUT T>)>
<COND (<ACCESSIBLE? ,LAMP>
<COND (<0? .TICK>
<TELL
"You'd better have more light than from the " D ,LAMP ,PERIOD-CR>)
(T
<TELL <GET .TBL 1> CR>)>)>
<COND (<NOT <0? .TICK>>
<SETG LAMP-TABLE <REST .TBL 4>>)>>
<GLOBAL LAMP-TABLE
<TABLE 225 "The lamp appears a bit dimmer."
75 "The lamp is definitely dimmer now."
25 "The lamp is nearly out." 0>>
<ROOM GREAT-CAVERN
(IN ROOMS)
(DESC "Great Cavern")
(LDESC
"This is a huge limestone cavern, glowing with dim, phosphorescent light from
far above. Narrow paths wind south and northeast.")
(NE TO INSIDE-THE-BARROW)
(SOUTH TO SHALLOW-FORD)
(FLAGS RLANDBIT ONBIT)>
<ROOM SHALLOW-FORD
(IN ROOMS)
(DESC "Shallow Ford")
(LDESC
"You are ankle deep in a stream. To the southwest is a dark tunnel, and to the
north a dim cavern.")
(NORTH TO GREAT-CAVERN)
(SW TO DARK-TUNNEL)
(FLAGS RLANDBIT ONBIT)
(GLOBAL GLOBAL-WATER STREAM)>
<ROOM DARK-TUNNEL
(IN ROOMS)
(DESC "Dark Tunnel")
(LDESC
"This smooth-walled tunnel runs northeast to southwest. A faint whirring sound
comes from the latter direction. Another opening, choked with leaves, leads
southeast.")
(NE TO SHALLOW-FORD)
(SE TO FORMAL-GARDEN)
(SW TO CAROUSEL-ROOM)
(WEST TO DEEP-FORD IF SECRET-DOOR)
(FLAGS RLANDBIT)>
<OBJECT SWORD
(IN DARK-TUNNEL)
(DESC "elvish sword")
(LDESC "An Elvish sword of great antiquity is here.")
(SYNONYM SWORD BLADE)
(ADJECTIVE ELVISH OLD ANTIQUE)
(FLAGS TAKEBIT WEAPONBIT TRYTAKEBIT)
(SIZE 30)>
<GLOBAL SECRET-DOOR <>>
<ROOM DEEP-FORD
(IN ROOMS)
(DESC "Deep Ford")
(LDESC
"You are waist deep in a cold stream. On the northern bank, the walls rise
to a small ledge. A \"whir\" comes from an opening to the south.")
(NORTH TO LEDGE-IN-RAVINE)
(UP TO LEDGE-IN-RAVINE)
(SOUTH TO CAROUSEL-ROOM)
(EAST TO DARK-TUNNEL IF SECRET-DOOR)
(FLAGS RLANDBIT)
(GLOBAL GLOBAL-WATER STREAM)>
<ROOM CAROUSEL-ROOM
(IN ROOMS)
(DESC "Carousel Room")
(NORTH TO DEEP-FORD)
(NE TO DARK-TUNNEL)
(EAST TO TOPIARY)
(SE TO RIDDLE-ROOM)
(SOUTH TO MENHIR-ROOM)
(SW TO GUARDED-ROOM)
(WEST TO ROOM-8)
(NW TO COOL-ROOM)
(FLAGS RLANDBIT)
(ACTION CAROUSEL-ROOM-F)>
<ROUTINE CAROUSEL-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Eight identical passages leave this large circular room. The ceiling
is lost in gloom.">
<COND (,CAROUSEL-ON
<TELL
" A loud whirring sound comes from all around, and you feel disoriented.">)>
<CRLF>)
(<AND ,CAROUSEL-ON
<EQUAL? .RARG ,M-BEG>
<VERB? WALK>
<NOT <PRSO? ,P?UP ,P?DOWN>>>
<TELL
"You're not sure which direction is which..." CR CR>
<COND (<OR <EQUAL? ,PRSO ,P?WEST>
<PROB 80>>
<GOTO <PICK-ONE ,CAROUSEL-EXITS>>)
(T
<RFALSE>)>)>>
<GLOBAL CAROUSEL-EXITS
<TABLE
COOL-ROOM DARK-TUNNEL DEEP-FORD TOPIARY RIDDLE-ROOM MENHIR-ROOM GUARDED-ROOM>>
<OBJECT VIOLIN
(IN CAROUSEL-ROOM)
(DESC "fancy violin")
(LDESC "There is a Stradivarius here.")
(SYNONYM STRADIVARIUS VIOLIN TREASURE)
(ADJECTIVE FANCY)
(SIZE 10)
(VALUE 20)
(FLAGS INVISIBLE TAKEBIT)
(ACTION VIOLIN-F)>
<ROUTINE VIOLIN-F ()
<COND (<AND <VERB? PLAY>
<EQUAL? ,PRSO ,VIOLIN>>
<TELL "An offensive noise issues from the violin." CR>)>>
<ROOM ROOM-8
(IN ROOMS)
(DESC "Room 8")
(LDESC
"This is a small chamber carved from the western end of a short crawl. On
the wall is crudely chiseled the number \"8\".")
(EAST TO CAROUSEL-ROOM)
(FLAGS RLANDBIT)>
<OBJECT BILLS
(IN ROOM-8)
(DESC "stack of zorkmid bills")
(LDESC "On the floor is a neat stack of 200 zorkmid bills.")
(SYNONYM BILLS STACK MONEY TREASURE)
(ADJECTIVE NEAT ZORKMID)
(VALUE 25)
(SIZE 10)
(FLAGS READBIT TAKEBIT BURNBIT)
(TEXT
"Each bill is worth 100 zorkmids and bears the legend \"In Frobs We Trust\".")
(ACTION BILLS-F)>
<ROUTINE BILLS-F ()
<COND (<VERB? BURN>
<TELL "Nothing like having money to burn! ">
<RFALSE>)>>
<ROOM MENHIR-ROOM
(IN ROOMS)
(DESC "Menhir Room")
(NORTH TO CAROUSEL-ROOM)
(SW TO KENNEL IF MENHIR-POSITION ELSE
"You are trying to walk through an enormous rock.")
(SOUTH TO CERBERUS-ROOM)
(FLAGS RLANDBIT)
(GLOBAL MENHIR)
(ACTION MENHIR-ROOM-F)>
<ROUTINE MENHIR-ROOM-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-FLASH>
,MENHIR-POSITION>
<DESCRIBE-MENHIR>)
(<EQUAL? .RARG ,M-LOOK>
<TELL
"Large limestone chunks lie about this former quarry, which appears to have
produced menhirs (standing stones). Obvious passages lead north and south." CR>
<COND (<IN? ,MENHIR ,LOCAL-GLOBALS>
<DESCRIBE-MENHIR>)>
<RTRUE>)>>
<GLOBAL MENHIR-POSITION <>>
<ROUTINE DESCRIBE-MENHIR ()
<COND (<EQUAL? ,HERE ,MENHIR-ROOM>
<COND (<EQUAL? ,MENHIR-POSITION <>>
<TELL
"One large menhir blocks a dark opening leading southwest.">)
(<EQUAL? ,MENHIR-POSITION 1>
<TELL "A menhir lies near a southwest passage.">)
(<EQUAL? ,MENHIR-POSITION 2>
<TELL "A dark opening leads southwest.">)
(<EQUAL? ,MENHIR-POSITION 3>
<TELL "There is a huge menhir here.">)
(T
<TELL
"A huge menhir is floating in midair above a southwest passage.">)>
<CRLF>)
(T
<TELL "A dark opening leads southwest." CR>)>>
<OBJECT GLOBAL-MENHIR
(IN LOCAL-GLOBALS)
(DESC "enormous menhir")
(SYNONYM MENHIR ROCK STONE)
(ADJECTIVE HUGE HEAVY ENORMOUS)
(FLAGS NDESCBIT READBIT)
(ACTION GLOBAL-MENHIR-F)>
<ROUTINE GLOBAL-MENHIR-F ()
<TELL "It's not here." CR>>
<OBJECT MENHIR
(IN LOCAL-GLOBALS)
(DESC "enormous menhir")
(SYNONYM MENHIR ROCK STONE F)
(ADJECTIVE HUGE HEAVY ENORMOUS)
(FLAGS NDESCBIT READBIT)
(ACTION MENHIR-F)>
<ROUTINE MENHIR-F ()
<COND (<AND <VERB? LOOK-UNDER LOOK-BEHIND>
<NOT ,MENHIR-POSITION>>
<TELL "There's a dark passage beyond the menhir." CR>)
(<VERB? TAKE MOVE TURN>
<TELL "The menhir weighs many tons!" CR>)
(<VERB? READ>
<TELL "\"F\"" CR>)
(<VERB? EXAMINE>
<TELL "The menhir is carved with an ornate letter \"F\"." CR>)
(<AND <VERB? ENCHANT>
<EQUAL? ,SPELL-USED ,W?FLOAT>>
<SETG MENHIR-POSITION 3>
<TELL
"The menhir floats majestically into the air. The passage beyond
beckons invitingly." CR>)
(<AND <VERB? DISENCHANT>
<EQUAL? ,SPELL-USED ,W?FLOAT>>
<SETG MENHIR-POSITION <>>
<COND (<EQUAL? ,HERE ,MENHIR-ROOM ,KENNEL>
<TELL "The menhir sinks to the ground." CR>)>)>>
<ROOM KENNEL
(IN ROOMS)
(DESC "Kennel")
(LDESC
"This was once a kennel for a large dog (some of the bones would fit a
dinosaur). The only exit is northeast.")
(FLAGS RLANDBIT)
(NE TO MENHIR-ROOM IF MENHIR-POSITION ELSE
"You are trying to walk through an enormous rock.")
(OUT TO MENHIR-ROOM IF MENHIR-POSITION ELSE
"You are trying to walk through an enormous rock.")
(GLOBAL MENHIR)>
<OBJECT COLLAR
(IN KENNEL)
(SYNONYM COLLAR)
(ADJECTIVE HUGE GIANT DOG)
(FDESC "A gigantic dog collar lies amidst the dust.")
(DESC "gigantic dog collar")
(FLAGS TAKEBIT)
(VALUE 15)
(ACTION COLLAR-F)>
<ROUTINE COLLAR-F ()
<COND (<AND <VERB? TAKE>
,CERBERUS-LEASHED>
<JIGS-UP
"Bad idea. As you unfasten the collar, the monster rends you
into little doggy biscuits.">)
(<AND <VERB? ENCHANT>
<EQUAL? ,SPELL-USED ,W?FLOAT>>
<PERFORM ,V?ENCHANT ,CERBERUS>
<RTRUE>)>>
<ROOM CERBERUS-ROOM
(IN ROOMS)
(DESC "Cerberus Room")
(LDESC
"This is the entrance to a huge tomb. A passage leads north.")
(SOUTH TO CRYPT IF CERBERUS-LEASHED ELSE "The huge dog snaps at you.")
(IN TO CRYPT IF CERBERUS-LEASHED ELSE "The huge dog snaps at you.")
(NORTH TO MENHIR-ROOM)
(FLAGS RLANDBIT)
(PSEUDO "TOMB" TOMB-PSEUDO "CRYPT" TOMB-PSEUDO)>
<ROUTINE TOMB-PSEUDO ()
<COND (<VERB? ENTER>
<DO-WALK ,P?SOUTH>)>>
<OBJECT GLOBAL-CERBERUS
(IN LOCAL-GLOBALS)
(DESC "three-headed dog")
(SYNONYM CERBERUS DOG HOUND MONSTER)
(ADJECTIVE HUGE GIANT THREE HEADED)
(ACTION GLOBAL-CERBERUS-F)>
<ROUTINE GLOBAL-CERBERUS-F ()
<TELL "He's not here." CR>>
<OBJECT CERBERUS
(IN CERBERUS-ROOM)
(DESC "three-headed dog")
(LDESC
"A vicious-looking dog guards the entrance to the south. It's your
usual dog, except that it has three heads and is the size of an elephant.")
(SYNONYM CERBERUS DOG HOUND MONSTER)
(ADJECTIVE HUGE GIANT THREE HEADED)
(FLAGS ACTORBIT OPENBIT CONTBIT)
(ACTION CERBERUS-F)>
<GLOBAL CERBERUS-LEASHED <>>
<ROUTINE CERBERUS-F ()
<COND (<AND <VERB? WAVE RUB RAISE>
<EQUAL? ,PRSO ,WAND>>
<TELL "The dog looks puzzled." CR>
<RFALSE>)
(<AND ,WAND-ON
<VERB? SAY INCANT>>
<RFALSE>)
(<HELLO? ,CERBERUS>
<COND (,CERBERUS-LEASHED
<TELL "\"Arf! Arf!\"" CR>)
(T
<TELL "\"Grrrr!\"" CR>)>)
(<VERB? ATTACK MUNG>
<COND (,CERBERUS-LEASHED
<REMOVE ,CERBERUS>
<TELL
"With a quiet bark of disappointment, the creature expires into a small pile
of dust which blows away into nothing." CR>)
(T
<TELL
"The maddened dog-thing snaps at you viciously." CR>)>)
(<AND <VERB? PUT PUT-ON>
<EQUAL? ,PRSO ,COLLAR>>
<SETG CERBERUS-LEASHED T>
<MOVE ,COLLAR ,CERBERUS>
<FSET ,COLLAR ,NDESCBIT>
<FSET ,COLLAR ,TRYTAKEBIT>
<PUTP ,CERBERUS ,P?LDESC
"A grinning, three-headed dog, wearing a huge collar, wags its tail here.">
<TELL
"All three heads begin licking your face, and its huge tail wags
enthusiastically, almost blowing you over from the breeze it creates." CR>)
(<VERB? ENCHANT>
<COND (<EQUAL? ,SPELL-USED ,W?FLOAT>
<SETG SPELL-HANDLED? T>
<TELL
"The huge dog rises an inch off the ground, for a moment." CR>)
(<EQUAL? ,SPELL-USED ,W?FEEBLE>
<TELL
"What an effect! He now has the strength of just one elephant, rather
than ten!" CR>)>)
(<NOT ,CERBERUS-LEASHED>
<TELL "The three-headed dog snaps at you viciously!" CR>)
(<AND ,CERBERUS-LEASHED
<VERB? RUB>>
<TELL
"The dog slobbers and whines with uncontained joy." CR>)>>
<ROOM CRYPT
(IN ROOMS)
(DESC "Crypt")
(LDESC
"Before you are the earthly remains of the mighty Flatheads, twelve somewhat
flat heads mounted securely on poles. There is writing carved on the crypt.
To the north and south are dark doorways.")
(NORTH TO CERBERUS-ROOM)
(SOUTH TO ZORK3)
(VALUE 2)
(FLAGS RLANDBIT)>
<OBJECT HEADS
(IN CRYPT)
(DESC "set of poled heads")
(SYNONYM HEADS HEAD POLE POLES)
(FLAGS NDESCBIT TRYTAKEBIT)
(ACTION HEADS-F)>
<ROUTINE HEADS-F ()
<COND (<VERB? HELLO TELL>
<TELL "Dead Flatheads tell no tales." CR>)
(<VERB? KICK ATTACK RUB OPEN TAKE BURN>
<JIGS-UP
"The Flatheads foresaw that someone might tamper with their remains,
and took steps to punish such actions.">)>>
<OBJECT CRYPT-OBJECT
(IN CRYPT)
(DESC "marble crypt")
(SYNONYM TOMB CRYPT GRAVE)
(ADJECTIVE MARBLE)
(FLAGS NDESCBIT READBIT)
(TEXT
"\"Here lie the Flatheads, whose heads were placed on poles by the
Dungeon Master for amazing untastefulness.\"")
(ACTION CRYPT-OBJECT-F)>
<ROUTINE CRYPT-OBJECT-F ()
<COND (<VERB? OPEN>
<TELL "The crypt is sealed for all time." CR>)>>
<ROOM ZORK3
(IN ROOMS)
(DESC "Landing")
(FLAGS RLANDBIT ONBIT)
(ACTION ZORK3-F)>
<ROUTINE ZORK3-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL "A rough-hewn stair leads down into darkness. ">
<COND (<IN? ,WAND ,WINNER>
<TELL
"The wand vibrates and are compelled downward. There is a burst of light,
and you tumble down the staircase! At the bottom, a vast red-lit hall,
guarded by sinister statues, is visible far ahead.|
|
You have conquered the Wizard of Frobozz and become master of his domain,
but the final challenge awaits! (The Zork Trilogy concludes with \"Zork III:
The Dungeon Master\".)" CR CR>
<FINISH>)
(T
<JIGS-UP
"Strands of light vibrate toward you, as if searching for something.
One by one your possessions glow bright green. Finally, you are attacked
by these magical wardens, and destroyed!">)>)>>
\
;"blue palantir puzzle (the old mat-under-the-door trick)"
<GLOBAL MUD-FLAG <>>
<GLOBAL MATOBJ <>>
<GLOBAL PUNLOCK-FLAG <>>
<GLOBAL PLOOK-FLAG <>>
<ROOM LEDGE-IN-RAVINE
(IN ROOMS)
(DESC "Ledge in Ravine")
(SOUTH TO DEEP-FORD)
(DOWN TO DEEP-FORD)
(WEST TO DRAGON-ROOM)
(NORTH TO DREARY-ROOM IF PDOOR IS OPEN)
(IN TO DREARY-ROOM IF PDOOR IS OPEN)
(FLAGS RLANDBIT)
(GLOBAL CHASM PDOOR STREAM PWINDOW)
(ACTION LEDGE-IN-RAVINE-F)>
<ROUTINE LEDGE-IN-RAVINE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"To the south, a stream runs through a narrow ravine. It looks as if you
could scramble down to the stream. A smokey odor drifts in from the west. ">
<P-DOOR "north">)
(<NOT <VERB? LOOK>>
<PCHECK>
<RFALSE>)>>
<ROUTINE P-DOOR (STR)
<COND (,PLOOK-FLAG
<SETG PLOOK-FLAG <>>
<RFALSE>)>
<TELL
"On the " .STR " side of the room is an oak door with a small barred window
and a formidable lock (with keyhole).">
<COND (,MUD-FLAG
<TELL " " ,PLACE-MAT-VISIBLE>
<COND (,MATOBJ
<TELL " Lying on the place mat is a " D ,MATOBJ ".">)>)>
<CRLF>>
<ROUTINE PCHECK ()
<SETG PLOOK-FLAG <>>
<COND (<IN? ,KEY ,KEYHOLE-2>
<FSET ,KEY ,NDESCBIT>)
(T
<FCLEAR ,KEY ,NDESCBIT>)>
<COND (<HELD? ,PLACE-MAT>
<SETG MUD-FLAG <>>)> ;"HUH?"
<COND (,MUD-FLAG
<MOVE ,PLACE-MAT ,HERE>
<FSET ,PLACE-MAT ,NDESCBIT>)
(T
<FCLEAR ,PLACE-MAT ,NDESCBIT>)>>
<ROOM DREARY-ROOM
(IN ROOMS)
(DESC "Dreary Room")
(SOUTH TO LEDGE-IN-RAVINE IF PDOOR IS OPEN)
(OUT TO LEDGE-IN-RAVINE IF PDOOR IS OPEN)
(FLAGS RLANDBIT ONBIT)
(GLOBAL PDOOR PWINDOW)
(ACTION DREARY-ROOM-F)>
<ROUTINE DREARY-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"The room is eerily lit by a red glow emanating from a crack in one wall.
The light falls upon a dusty wooden table. ">
<P-DOOR "south">)
(T
<PCHECK>
<RFALSE>)>>
<OBJECT PDOOR
(IN LOCAL-GLOBALS)
(DESC "door of oak")
(SYNONYM DOOR)
(ADJECTIVE WOODEN OAK)
(FLAGS DOORBIT CONTBIT)
(ACTION PDOOR-F)>
<ROUTINE PDOOR-F ("AUX" K)
<COND (<AND <VERB? LOOK-UNDER>
,MUD-FLAG>
<TELL ,PLACE-MAT-VISIBLE CR>)
(<VERB? UNLOCK>
<COND (<EQUAL? ,PRSI ,KEY>
<SETG PUNLOCK-FLAG T>
<TELL "The door is now unlocked." CR>)
(<EQUAL? ,PRSI ,GOLD-KEY>
<TELL ,DOESNT-FIT-LOCK>)
(T
<TELL <PICK-ONE ,YUKS> CR>)>)
(<VERB? LOCK>
<COND (<EQUAL? ,PRSI ,KEY>
<SETG PUNLOCK-FLAG <>>
<TELL "The door is locked." CR>)
(<EQUAL? ,PRSI ,GOLD-KEY>
<TELL ,DOESNT-FIT-LOCK>)
(T
<TELL <PICK-ONE ,YUKS> CR>)>)
(<VERB? PUT-UNDER>
<COND (<EQUAL? ,PRSO ,ROBOT-LABEL>
<TELL "The tiny paper vanishes under the door." CR>
<MOVE ,PRSO <COND (<EQUAL? ,HERE ,LEDGE-IN-RAVINE>
,DREARY-ROOM)
(T
,LEDGE-IN-RAVINE)>>)
(<EQUAL? ,PRSO ,NEWSPAPER>
<TELL
"The newspaper crumples up and won't go under the door." CR>)>)
(<VERB? OPEN CLOSE>
<COND (,PUNLOCK-FLAG
<OPEN-CLOSE>)
(T
<TELL "The door is locked." CR>)>)>>
<OBJECT PWINDOW
(IN LOCAL-GLOBALS)
(DESC "barred window")
(SYNONYM WINDOW)
(ADJECTIVE BARRED)
(FLAGS DOORBIT)
(ACTION PWINDOW-F)>
<ROUTINE PWINDOW-F ()
<COND (<VERB? LOOK-INSIDE>
<SETG PLOOK-FLAG T>
<COND (<FSET? ,PDOOR ,OPENBIT>
<TELL "The door is open!" CR>)
(T
<GO&LOOK <COND (<EQUAL? ,HERE ,DREARY-ROOM>
,LEDGE-IN-RAVINE)
(T
,DREARY-ROOM)>>)>)
(<VERB? ENTER>
<TELL "Perhaps if you were diced...." CR>)>>
<OBJECT PTABLE
(IN DREARY-ROOM)
(DESC "table")
(SYNONYM TABLE)
(ADJECTIVE DUSTY WOODEN)
(CAPACITY 40)
(FLAGS NDESCBIT CONTBIT SURFACEBIT OPENBIT)>
<OBJECT PCRACK
(IN DREARY-ROOM)
(DESC "crack")
(SYNONYM CRACK)
(ADJECTIVE NARROW)
(FLAGS NDESCBIT)>
<OBJECT KEYHOLE-1
(IN LEDGE-IN-RAVINE)
(DESC "keyhole")
(SYNONYM KEYHOLE HOLE)
(FLAGS NDESCBIT)
(ACTION PKEYHOLE-F)>
<OBJECT KEYHOLE-2
(IN DREARY-ROOM)
(DESC "keyhole")
(SYNONYM KEYHOLE HOLE)
(FLAGS NDESCBIT)
(ACTION PKEYHOLE-F)>
<ROUTINE PKEYHOLE-F ()
<COND (<VERB? LOOK-INSIDE>
<TELL "You can">
<COND (<OR <IN? ,KEY ,KEYHOLE-2>
<NOT <LIT? <COND (<EQUAL? ,HERE ,DREARY-ROOM>
,LEDGE-IN-RAVINE)
(T
,DREARY-ROOM)>>>>
<TELL "'t">)>
<TELL " see light through the keyhole." CR>)
(<VERB? PUT>
<COND (<IN? ,KEY ,KEYHOLE-2>
<COND (<EQUAL? ,PRSO ,LETTER-OPENER>
<COND (,MUD-FLAG
<SETG MATOBJ ,KEY>)>
<MOVE ,KEY ,DREARY-ROOM>
<TELL
"There is a faint thud behind the door." CR>)
(T
<TELL "The " D ,PRSO " doesn't fit." CR>)>)
(T
<PERFORM ,V?UNLOCK ,PDOOR ,PRSO>
<RTRUE>)>)>>
<OBJECT KEY
(IN KEYHOLE-2)
(DESC "rusty iron key")
(SYNONYM KEY)
(ADJECTIVE IRON RUSTY)
(SIZE 2)
(FLAGS TAKEBIT NDESCBIT TOOLBIT)>