Final Revision

This commit is contained in:
historicalsource 2019-04-14 00:07:10 -04:00
commit 02aee947e1
18 changed files with 8719 additions and 0 deletions

1
README.md Normal file
View file

@ -0,0 +1 @@
# minizork-1987

945
above-ground.zil Normal file
View file

@ -0,0 +1,945 @@
"ABOVE-GROUND for
Mini-Zork '87
(c) Copyright 1987 Infocom, Inc. All Rights Reserved"
;"outside the house"
<ROOM WEST-OF-HOUSE
(IN ROOMS)
(DESC "West of House")
(NORTH TO NORTH-OF-HOUSE)
(SOUTH TO SOUTH-OF-HOUSE)
(NE TO NORTH-OF-HOUSE)
(SE TO SOUTH-OF-HOUSE)
(EAST "The door is boarded and you can't remove the boards.")
(SW TO INSIDE-THE-BARROW IF WON-FLAG)
(FLAGS RLANDBIT ONBIT SACREDBIT)
(GLOBAL WHITE-HOUSE BOARD FOREST)
(ACTION WEST-OF-HOUSE-F)>
<ROUTINE WEST-OF-HOUSE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You are standing in an open field west of a white house, with a
boarded front door. ">
<COND (,WON-FLAG
<TELL
"A secret path leads southwest into the forest. ">)>
<TELL "You could circle the house to the north or south.">)>>
<OBJECT MAILBOX
(IN WEST-OF-HOUSE)
(DESC "small mailbox")
(SYNONYM MAILBOX BOX)
(ADJECTIVE SMALL MAIL)
(FLAGS CONTBIT TRYTAKEBIT SEARCHBIT)
(CAPACITY 10)
(ACTION MAILBOX-F)>
<ROUTINE MAILBOX-F ()
<COND (<AND <VERB? TAKE>
<PRSO? ,MAILBOX>>
<FASTENED ,MAILBOX "ground">)>>
<OBJECT LEAFLET
(IN MAILBOX)
(DESC "leaflet")
(SYNONYM LEAFLET MAIL)
(FLAGS READBIT TAKEBIT BURNBIT)
(SIZE 2)
(ACTION LEAFLET-F)>
<ROUTINE LEAFLET-F ()
<COND (<VERB? READ>
<TELL
"\"WELCOME TO ZORK, a game of adventure, danger, and low cunning. No computer
should be without one!\"|
|
Note: this \"mini-zork\" contains only a sub-set of the locations, puzzles,
and descriptions found" ,DISK-BASED>)>>
<OBJECT FRONT-DOOR
(IN WEST-OF-HOUSE)
(SYNONYM DOOR)
(ADJECTIVE FRONT BOARDED)
(DESC "door")
(FLAGS DOORBIT NDESCBIT)
(ACTION WOODEN-DOOR-F)>
<GLOBAL WON-FLAG <>>
<ROOM INSIDE-THE-BARROW
(IN ROOMS)
(DESC "Inside the Barrow")
(LDESC
"You have entered a stone barrow. The door closes behind you, leaving you in
darkness, but ahead is a brightly-lit cavern. Floating in the cavern is a large
sign: \"You have completed a great and perilous adventure which has tested
your wit and courage. You have mastered the first part of the ZORK trilogy.
Prepare yourself for an even greater test!\"|
|
The ZORK trilogy continues with \"ZORK II: The Wizard of Frobozz\" and
\"ZORK III: The Dungeon Master.\"")
(FLAGS RLANDBIT ONBIT SACREDBIT)
(ACTION INSIDE-THE-BARROW-F)>
<ROUTINE INSIDE-THE-BARROW-F (RARG)
<COND (<EQUAL? .RARG ,M-END>
<FINISH>)>>
<ROOM NORTH-OF-HOUSE
(IN ROOMS)
(LDESC
"You are facing the north side of a white house. There is no door here, and
all the windows are boarded up. A narrow path winds north through the trees.")
(DESC "North of House")
(SW TO WEST-OF-HOUSE)
(SE TO BEHIND-HOUSE)
(WEST TO WEST-OF-HOUSE)
(EAST TO BEHIND-HOUSE)
(NORTH TO FOREST-PATH)
(SOUTH "The windows are all boarded.")
(FLAGS RLANDBIT ONBIT SACREDBIT)
(GLOBAL BOARDED-WINDOW BOARD WHITE-HOUSE FOREST)>
<ROOM SOUTH-OF-HOUSE
(IN ROOMS)
(LDESC
"You are facing the south side of a white house. There is no door here,
and all the windows are boarded.")
(DESC "South of House")
(WEST TO WEST-OF-HOUSE)
(EAST TO BEHIND-HOUSE)
(NE TO BEHIND-HOUSE)
(NW TO WEST-OF-HOUSE)
(NORTH "The windows are all boarded.")
(FLAGS RLANDBIT ONBIT SACREDBIT)
(GLOBAL BOARDED-WINDOW BOARD WHITE-HOUSE FOREST)>
<ROOM BEHIND-HOUSE
(IN ROOMS)
(DESC "Behind House")
(NORTH TO NORTH-OF-HOUSE)
(SOUTH TO SOUTH-OF-HOUSE)
(SW TO SOUTH-OF-HOUSE)
(NW TO NORTH-OF-HOUSE)
(NE TO FOREST-NORTH)
(EAST TO FOREST-SOUTH)
(WEST TO KITCHEN IF KITCHEN-WINDOW IS OPEN)
(IN TO KITCHEN IF KITCHEN-WINDOW IS OPEN)
(ACTION BEHIND-HOUSE-F)
(FLAGS RLANDBIT ONBIT SACREDBIT)
(GLOBAL WHITE-HOUSE KITCHEN-WINDOW FOREST)>
<ROUTINE BEHIND-HOUSE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You are behind the white house. Paths lead into the forest to the east and
northeast. In one corner of the house">
<DESCRIBE-WINDOW>)>>
<ROUTINE DESCRIBE-WINDOW ()
<TELL " is a small window which is ">
<COND (<FSET? ,KITCHEN-WINDOW ,OPENBIT>
<TELL "open.">)
(T
<TELL "slightly ajar.">)>>
<OBJECT WHITE-HOUSE
(IN LOCAL-GLOBALS)
(SYNONYM HOUSE)
(ADJECTIVE WHITE BEAUTI)
(DESC "white house")
(FLAGS NDESCBIT)
(ACTION WHITE-HOUSE-F)>
<ROUTINE WHITE-HOUSE-F ()
<COND (<AND <EQUAL? ,HERE ,KITCHEN ,LIVING-ROOM ,ATTIC>
<VERB? FIND THROUGH>>
<TELL ,LOOK-AROUND>)
(<VERB? EXAMINE>
<TELL
"The house is a beautiful white colonial. The owners must have been
extremely wealthy." CR>)
(<VERB? THROUGH OPEN>
<DO-WALK ,P?IN>)
(<VERB? BURN>
<TELL "You must be joking." CR>)>>
<OBJECT BOARD
(IN LOCAL-GLOBALS)
(DESC "board")
(SYNONYM BOARDS BOARD)
(FLAGS NDESCBIT)
(ACTION BOARD-F)>
<ROUTINE BOARD-F ()
<COND (<VERB? TAKE EXAMINE>
<FASTENED ,BOARD "house">)>>
<OBJECT BOARDED-WINDOW
(IN LOCAL-GLOBALS)
(DESC "boarded window")
(SYNONYM WINDOW)
(ADJECTIVE BOARDED)
(FLAGS NDESCBIT)
(ACTION BOARDED-WINDOW-F)>
<ROUTINE BOARDED-WINDOW-F ()
<COND (<VERB? OPEN MUNG>
<TELL "The windows are boarded!" CR>)>>
<ROUTINE NAILS-PSEUDO ()
<COND (<VERB? TAKE>
<TELL "The nails are too deeply imbedded." CR>)>>
<OBJECT FOREST
(IN LOCAL-GLOBALS)
(DESC "forest")
(SYNONYM FOREST TREES)
(FLAGS NDESCBIT)
(ACTION FOREST-F)>
<ROUTINE FOREST-F ()
<COND (<VERB? EXIT>
<V-WALK-AROUND>)
(<VERB? FIND>
<TELL ,LOOK-AROUND>)>>
<OBJECT TREE
(IN LOCAL-GLOBALS)
(DESC "tree")
(SYNONYM TREE BRANCH)
(ADJECTIVE LARGE)
(FLAGS NDESCBIT CLIMBBIT)>
<ROOM FOREST-NORTH
(IN ROOMS)
(DESC "Forest")
(LDESC "This is a dimly lit forest, with large trees all around.")
(UP "There is no tree here suitable for climbing.")
(WEST TO FOREST-PATH)
(SW TO BEHIND-HOUSE)
(SE TO FOREST-EDGE)
(SOUTH TO FOREST-SOUTH)
(FLAGS RLANDBIT ONBIT SACREDBIT)
(GLOBAL TREE FOREST)>
<ROOM FOREST-SOUTH
(IN ROOMS)
(DESC "Forest")
(LDESC "This is a dimly lit forest, with large trees all around.")
(UP "There is no tree here suitable for climbing.")
(EAST TO FOREST-EDGE)
(WEST TO BEHIND-HOUSE)
(NORTH TO FOREST-NORTH)
(FLAGS RLANDBIT ONBIT SACREDBIT)
(GLOBAL TREE FOREST)>
<ROOM FOREST-PATH
(IN ROOMS)
(DESC "Forest Path")
(UP TO UP-A-TREE)
(EAST TO FOREST-NORTH)
(SOUTH TO NORTH-OF-HOUSE)
(DOWN PER GRATING-EXIT)
(FLAGS RLANDBIT ONBIT SACREDBIT)
(GLOBAL GRATE TREE FOREST)
(ACTION FOREST-PATH-F)>
<ROUTINE FOREST-PATH-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<NOT ,GRATE-REVEALED>>
<FSET ,GRATE ,INVISIBLE>)
(<EQUAL? .RARG ,M-LOOK>
<TELL
"This is a path through a dimly lit forest, curving from south to east.
A large tree with low branches stands by the edge of the path.">
<COND (<FSET? ,GRATE ,OPENBIT>
<TELL
" There is an open grating, descending into darkness.">)
(,GRATE-REVEALED
<TELL
" There is a grating securely fastened into the ground.">)>)>>
<ROUTINE GRATING-EXIT ()
<COND (,GRATE-REVEALED
<COND (<FSET? ,GRATE ,OPENBIT>
,GRATING-ROOM)
(T
<TELL "The grating is closed!" CR>
<SETG P-IT-OBJECT ,GRATE>
<RFALSE>)>)
(T
<TELL ,CANT-GO>
<RFALSE>)>>
<ROOM UP-A-TREE
(IN ROOMS)
(DESC "Up a Tree")
(DOWN TO FOREST-PATH)
(UP "You cannot climb any higher.")
(FLAGS RLANDBIT ONBIT SACREDBIT)
(GLOBAL TREE FOREST)
(ACTION UP-A-TREE-F)>
<ROUTINE UP-A-TREE-F (RARG "AUX" F)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You are ten feet above the ground, nestled among large branches.">)
(<EQUAL? .RARG ,M-BEG>
<COND (<AND <VERB? CLIMB-DOWN>
<PRSO? ,TREE ,ROOMS>>
<DO-WALK ,P?DOWN>)
(<VERB? DROP>
<COND (<NOT <IDROP>>
<RTRUE>)
(<NOT <PRSO? ,WINNER ,TREE>>
<MOVE ,PRSO ,FOREST-PATH>
<TELL "The " D ,PRSO " falls to the ground." CR>)
(<VERB? LEAP>
<JIGS-UP
"You should have looked before you leaped.">)>)>)>>
<OBJECT NEST
(IN UP-A-TREE)
(DESC "bird's nest")
(FDESC "Beside you on the branch is a small bird's nest.")
(SYNONYM NEST)
(ADJECTIVE BIRDS)
(FLAGS TAKEBIT BURNBIT CONTBIT OPENBIT SEARCHBIT)
(CAPACITY 20)
(ACTION NEST-F)>
<ROUTINE NEST-F ()
<COND (<VERB? TAKE>
<SCORE-OBJ ,EGG>
<RFALSE>)>>
<OBJECT EGG
(IN NEST)
(DESC "jeweled egg")
(FDESC
"In the bird's nest is a large egg encrusted with precious jewels, apparently
scavenged by a childless songbird.")
(SYNONYM EGG TREASURE)
(ADJECTIVE JEWELED)
(FLAGS TREASUREBIT TAKEBIT)
(VALUE 6)
(ACTION EGG-F)>
<ROUTINE EGG-F ()
<COND (<AND <VERB? OPEN HATCH>
<PRSO? ,EGG>>
<TELL "This egg only opens" ,DISK-BASED>)>>
<OBJECT LEAVES
(IN FOREST-PATH)
(DESC "pile of leaves")
(LDESC "On the ground is a pile of leaves.")
(SYNONYM LEAVES LEAF PILE)
(FLAGS TAKEBIT BURNBIT TRYTAKEBIT)
(SIZE 25)
(ACTION LEAVES-F)>
<ROUTINE LEAVES-F ()
<COND (<VERB? COUNT>
<TELL "69,105." CR>)
(<VERB? BURN>
<GRATING-APPEARS>
<TELL "The leaves burn">
<COND (<HELD? ,LEAVES>
<JIGS-UP ", and so do you.">)
(T
<TELL ,PERIOD-CR>)>
<REMOVE-CAREFULLY ,PRSO>)
(<VERB? CUT>
<GRATING-APPEARS>
<TELL "The leaves seem to be too soggy to cut." CR>)
(<AND <VERB? MOVE>
<GRATING-APPEARS>>
<CRLF>)
(<VERB? TAKE>
<GRATING-APPEARS>
<RFALSE>)
(<AND <VERB? LOOK-UNDER>
<NOT ,GRATE-REVEALED>>
<PEEK-UNDER ,LEAVES ,GRATE>)>>
<ROUTINE GRATING-APPEARS ()
<COND (<AND <NOT <FSET? ,GRATE ,OPENBIT>>
<NOT ,GRATE-REVEALED>>
<FCLEAR ,GRATE ,INVISIBLE>
<SETG GRATE-REVEALED T>
<TELL "In disturbing the leaves, a grating is revealed. ">
<RTRUE>)
(T
<RFALSE>)>>
<ROOM FOREST-EDGE
(IN ROOMS)
(DESC "Forest Edge")
(LDESC
"Paths lead into the forest to the west and northwest. Also, a well-marked
path extends east.")
(UP "There is no tree here suitable for climbing.")
(EAST TO CANYON-VIEW)
(NW TO FOREST-NORTH)
(WEST TO FOREST-SOUTH)
(FLAGS RLANDBIT ONBIT SACREDBIT)
(GLOBAL TREE FOREST)>
<ROOM CANYON-VIEW
(IN ROOMS)
(DESC "Canyon View")
(LDESC
"You are atop the west wall of a great canyon, offering a marvelous view of the
mighty Frigid River below. Across the canyon, the walls of the White Cliffs
join the mighty ramparts of the Flathead Mountains. To the north, Aragain
Falls may be seen, complete with rainbow. Even further upstream, the river
flows out of a great dark cavern. To the west is an immense forest, stretching
for miles. It seems possible to climb down into the canyon from here.")
(EAST TO CANYON-BOTTOM)
(DOWN TO CANYON-BOTTOM)
(WEST TO FOREST-EDGE)
(FLAGS RLANDBIT ONBIT SACREDBIT)
(GLOBAL CLIMBABLE-CLIFF RIVER RAINBOW)
(ACTION CANYON-VIEW-F)>
<ROUTINE CANYON-VIEW-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-BEG>
<VERB? LEAP>
<NOT ,PRSO>>
<JIGS-UP "You should have looked before you leaped.">)>>
<OBJECT CLIMBABLE-CLIFF
(IN LOCAL-GLOBALS)
(DESC "cliff")
(SYNONYM CLIFF)
(FLAGS NDESCBIT CLIMBBIT)
(ACTION CLIFF-F)>
<ROUTINE CLIFF-F ()
<COND (<OR <VERB? LEAP>
<AND <VERB? PUT>
<PRSO? ,ME>>>
<JIGS-UP "You should have looked before you leaped.">)
(<AND <VERB? PUT THROW-OFF>
<PRSI? ,CLIMBABLE-CLIFF>>
<TELL "The " D ,PRSO " is now lost in the river." CR>
<REMOVE-CAREFULLY ,PRSO>)>>
<ROOM CANYON-BOTTOM
(IN ROOMS)
(DESC "Canyon Bottom")
(LDESC
"The walls of the river canyon may be climbable here. To the northeast is a
narrow path.")
(UP TO CANYON-VIEW)
(WEST TO CANYON-VIEW)
(NE TO END-OF-RAINBOW)
(FLAGS RLANDBIT ONBIT SACREDBIT)
(GLOBAL GLOBAL-WATER CLIMBABLE-CLIFF RIVER)>
<ROOM END-OF-RAINBOW
(IN ROOMS)
(DESC "End of Rainbow")
(LDESC
"You are on a small, rocky beach by the Frigid River, below the falls. A
rainbow crosses over the falls to the east and a narrow path continues to
the southwest.")
(UP TO ARAGAIN-FALLS IF RAINBOW-FLAG ELSE
"Can you walk on water vapor?")
(EAST TO ARAGAIN-FALLS IF RAINBOW-FLAG ELSE
"Can you walk on water vapor?")
(SW TO CANYON-BOTTOM)
(FLAGS RLANDBIT ONBIT)
(GLOBAL STAIRS GLOBAL-WATER RAINBOW RIVER)>
<GLOBAL RAINBOW-FLAG <>>
<OBJECT RAINBOW
(IN LOCAL-GLOBALS)
(DESC "rainbow")
(SYNONYM RAINBOW)
(FLAGS NDESCBIT CLIMBBIT)
(ACTION RAINBOW-F)>
<ROUTINE RAINBOW-F ()
<COND (<VERB? CROSS THROUGH>
<COND (<EQUAL? ,HERE ,CANYON-VIEW>
<V-WALK-AROUND>)
(T
<DO-WALK ,P?UP>)>)
(<VERB? LOOK-UNDER>
<TELL "The Frigid River flows under the rainbow." CR>)>>
<OBJECT POT-OF-GOLD
(IN END-OF-RAINBOW)
(DESC "pot of gold")
(FDESC "At the end of the rainbow is a pot of gold.")
(SYNONYM POT GOLD TREASURE)
(ADJECTIVE GOLD)
(FLAGS TREASUREBIT TAKEBIT INVISIBLE)
(SIZE 15)
(VALUE 19)>
\
;"inside the house"
<OBJECT KITCHEN-WINDOW
(IN LOCAL-GLOBALS)
(DESC "window")
(SYNONYM WINDOW)
(ADJECTIVE SMALL)
(FLAGS DOORBIT NDESCBIT)
(ACTION KITCHEN-WINDOW-F)>
<ROUTINE KITCHEN-WINDOW-F ()
<COND (<VERB? OPEN CLOSE>
<OPEN-CLOSE ,KITCHEN-WINDOW
"With great effort, you open the window enough to allow entry."
"The window closes (more easily than it opened).">)
(<AND <VERB? EXAMINE>
<NOT <FSET? ,KITCHEN ,OPENBIT>>>
<TELL
"The window is slightly ajar, but not enough to allow entry." CR>)
(<VERB? WALK BOARD THROUGH>
<DO-WALK <COND (<EQUAL? ,HERE ,KITCHEN> ,P?EAST)
(T ,P?WEST)>>)
(<VERB? LOOK-INSIDE>
<TELL "You can see a ">
<COND (<EQUAL? ,HERE ,KITCHEN>
<TELL "forest clearing." CR>)
(T
<TELL "kitchen." CR>)>)>>
<ROOM KITCHEN
(IN ROOMS)
(DESC "Kitchen")
(EAST TO BEHIND-HOUSE IF KITCHEN-WINDOW IS OPEN)
(WEST TO LIVING-ROOM)
(OUT TO BEHIND-HOUSE IF KITCHEN-WINDOW IS OPEN)
(UP TO ATTIC)
(DOWN "Only Santa Claus climbs down chimneys.")
(VALUE 10)
(FLAGS RLANDBIT ONBIT SACREDBIT)
(GLOBAL KITCHEN-WINDOW CHIMNEY STAIRS)
(ACTION KITCHEN-F)>
<ROUTINE KITCHEN-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You are in the kitchen of the white house. A table has been used recently
for the preparation of food. A passage leads west and a dark staircase leads
upward. A chimney leads down and to the east">
<DESCRIBE-WINDOW>)>>
<OBJECT KITCHEN-TABLE
(IN KITCHEN)
(DESC "table")
(SYNONYM TABLE)
(FLAGS NDESCBIT CONTBIT SEARCHBIT OPENBIT SURFACEBIT)
(CAPACITY 50)>
<OBJECT SANDWICH-BAG
(IN KITCHEN-TABLE)
(DESC "brown sack")
(SYNONYM BAG SACK)
(ADJECTIVE BROWN)
(FLAGS TAKEBIT CONTBIT BURNBIT SEARCHBIT)
(FDESC
"On the table is an elongated brown sack, smelling of hot peppers.")
(CAPACITY 9)
(SIZE 9)
(ACTION SANDWICH-BAG-F)>
<ROUTINE SANDWICH-BAG-F ()
<COND (<AND <VERB? SMELL>
<IN? ,LUNCH ,PRSO>>
<TELL "Hot peppers!" CR>)>>
<OBJECT LUNCH
(IN SANDWICH-BAG)
(DESC "lunch")
(LDESC "A hot pepper sandwich is here.")
(SYNONYM FOOD SANDWICH LUNCH)
(ADJECTIVE HOT PEPPER)
(FLAGS TAKEBIT FOODBIT)>
<OBJECT GARLIC
(IN SANDWICH-BAG)
(DESC "clove of garlic")
(SYNONYM GARLIC CLOVE)
(FLAGS TAKEBIT FOODBIT)
(SIZE 4)
(ACTION GARLIC-F)>
<ROUTINE GARLIC-F ()
<COND (<VERB? EAT>
<REMOVE ,PRSO>
<TELL
"You won't make friends this way, but nobody around here is too friendly
anyhow. Gulp!" CR>)>>
<OBJECT BOTTLE
(IN KITCHEN-TABLE)
(DESC "glass bottle")
(FDESC "A bottle is sitting on the table.")
(SYNONYM BOTTLE)
(ADJECTIVE GLASS)
(CAPACITY 4)
(FLAGS TAKEBIT TRANSBIT CONTBIT)
(ACTION BOTTLE-F)>
<ROUTINE BOTTLE-F ()
<COND (<AND <VERB? THROW MUNG>
<PRSO? ,BOTTLE>>
<TELL "The bottle shatters.">
<COND (<IN? ,WATER ,PRSO>
<REMOVE-CAREFULLY ,WATER>
<TELL " " ,WATER-EVAPORATES>)
(T
<CRLF>)>
<REMOVE-CAREFULLY ,PRSO>)
(<AND <VERB? SHAKE>
<FSET? ,PRSO ,OPENBIT>
<IN? ,WATER ,PRSO>>
<REMOVE-CAREFULLY ,WATER>
<TELL ,WATER-EVAPORATES>)>>
<OBJECT WATER
(IN BOTTLE)
(DESC "quantity of water")
(SYNONYM WATER QUANTITY)
(FLAGS TRYTAKEBIT TAKEBIT DRINKBIT)
(SIZE 4)
(ACTION WATER-F)>
<ROUTINE WATER-F ()
<COND (<VERB? THROUGH BOARD>
<TELL ,YOU-CANT "swim in the dungeon." CR>
<RTRUE>)
(<VERB? FILL>
<PERFORM ,V?PUT ,PRSI ,PRSO>
<RTRUE>)
(<AND <VERB? TAKE>
<IN? ,PRSO ,BOTTLE>
<NOT ,PRSI>>
<PERFORM ,V?TAKE ,BOTTLE>
<RTRUE>)
(<AND <VERB? TAKE PUT>
<PRSO? ,WATER ,GLOBAL-WATER>>
<COND (<NOT ,PRSI>
<COND (<HELD? ,BOTTLE>
<SETG PRSI ,BOTTLE>)
(T
<SETG PRSI ,HANDS>)>)>
<COND (<PRSI? ,HANDS>
<TELL "The water slips through your fingers." CR>)
(<NOT <HELD? ,PRSI>>
<TELL ,YNH "the " D ,PRSI ,PERIOD-CR>)
(<NOT <PRSI? ,BOTTLE>>
<COND (<PRSO? ,WATER> ;"might be GLOBAL-WATER"
<REMOVE-CAREFULLY ,WATER>)>
<TELL
"The water leaks out of the " D ,PRSI " and evaporates immediately." CR>)
(<NOT <FSET? ,BOTTLE ,OPENBIT>>
<SETG P-IT-OBJECT ,BOTTLE>
<TELL "The bottle is closed." CR>)
(<NOT <FIRST? ,BOTTLE>>
<MOVE ,WATER ,BOTTLE>
<TELL "The bottle is now full of water." CR>)>)
(<AND <VERB? PUT>
<PRSI? ,WATER ,GLOBAL-WATER>
<GLOBAL-IN? ,RIVER>>
<PERFORM ,V?PUT ,PRSO ,RIVER>
<RTRUE>)
(<AND <VERB? DROP GIVE THROW>
<IN? ,WATER ,BOTTLE>>
<COND (<NOT <FSET? ,BOTTLE ,OPENBIT>>
<TELL "The bottle is closed." CR>)
(T
<REMOVE-CAREFULLY ,WATER>
<TELL ,WATER-EVAPORATES>)>)>>
<ROOM ATTIC
(IN ROOMS)
(DESC "Attic")
(LDESC "This is the attic. The only exit is the stairway down.")
(DOWN TO KITCHEN)
(FLAGS RLANDBIT SACREDBIT)
(GLOBAL STAIRS)>
<OBJECT KNIFE
(IN ATTIC)
(DESC "nasty knife")
(SYNONYM KNIVES KNIFE BLADE)
(ADJECTIVE NASTY UNRUSTY)
(FLAGS TAKEBIT WEAPONBIT TRYTAKEBIT)>
<OBJECT ROPE
(IN ATTIC)
(DESC "rope")
(FDESC "A large coil of rope is lying in the corner.")
(SYNONYM ROPE COIL)
(ADJECTIVE LARGE)
(FLAGS TAKEBIT SACREDBIT)
(SIZE 10)
(ACTION ROPE-F)>
<ROUTINE ROPE-F ()
<COND (<VERB? TIE>
<COND (<PRSI? ,RAILING>
<COND (,DOME-FLAG
<TELL ,ALREADY>)
(T
<SETG DOME-FLAG T>
<FSET ,ROPE ,NDESCBIT>
<FSET ,ROPE ,TRYTAKEBIT>
<FSET ,ROPE ,CLIMBBIT>
<MOVE ,ROPE ,HERE>
<TELL
"The rope drops over the side and comes within ten feet of the floor." CR>)>)
(T
<TELL ,YOU-CANT "tie the rope to that." CR>)>)
(<AND <VERB? TIE-UP>
<PRSI? ,ROPE>>
<TELL
"The " D ,PRSO " struggles and you cannot tie him up." CR>)
(<VERB? UNTIE>
<COND (,DOME-FLAG
<SETG DOME-FLAG <>>
<FCLEAR ,ROPE ,NDESCBIT>
<FCLEAR ,ROPE ,TRYTAKEBIT>
<FCLEAR ,ROPE ,CLIMBBIT>
<TELL "The rope is now untied." CR>)
(T
<TELL "It is not tied to anything." CR>)>)
(<AND <VERB? TAKE>
,DOME-FLAG>
<TELL "The rope is tied to the railing." CR>)>>
<ROOM LIVING-ROOM
(IN ROOMS)
(DESC "Living Room")
(EAST TO KITCHEN)
(WEST TO CYCLOPS-ROOM IF MAGIC-FLAG ELSE "The door is nailed shut.")
(DOWN PER TRAP-DOOR-EXIT)
(FLAGS RLANDBIT ONBIT SACREDBIT)
(GLOBAL STAIRS)
(PSEUDO "NAILS" NAILS-PSEUDO "NAIL" NAILS-PSEUDO)
(ACTION LIVING-ROOM-F)>
<ROUTINE TRAP-DOOR-EXIT ()
<COND (,RUG-MOVED
<COND (<FSET? ,TRAP-DOOR ,OPENBIT>
<RETURN ,CELLAR>)
(T
<SETG P-IT-OBJECT ,TRAP-DOOR>
<TELL "The trap door is closed." CR>
<RFALSE>)>)
(T
<TELL ,CANT-GO>
<RFALSE>)>>
<ROUTINE LIVING-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL "The living room opens to the east. To the west is a">
<COND (,MAGIC-FLAG
<TELL " cyclops-shaped opening in a">)>
<TELL " wooden door, above which is strange gothic lettering. ">
<COND (<NOT ,MAGIC-FLAG>
<TELL "The door is nailed shut. ">)>
<TELL "There is a trophy case here, and a">
<COND (,RUG-MOVED
<TELL " rug lying beside a">
<COND (<FSET? ,TRAP-DOOR ,OPENBIT>
<TELL "n open">)
(T
<TELL " closed">)>
<TELL " trap door">)
(T
<TELL " large oriental rug in the center of the room">)>
<TELL ".">)
(<AND <EQUAL? .RARG ,M-END>
<VERB? PUT>
<PRSI? ,TROPHY-CASE>
<EQUAL? <COUNT-TREASURES ,TROPHY-CASE> 15>
<EQUAL? ,SCORE 325>
<NOT ,WON-FLAG>>
<SETG WON-FLAG T>
<SETG SCORE 350>
<FCLEAR ,MAP ,INVISIBLE>
<FCLEAR ,WEST-OF-HOUSE ,TOUCHBIT>
<TELL
"A voice whispers, \"Look to your treasures for the final secret.\"" CR>)>>
<ROUTINE COUNT-TREASURES (OBJ "AUX" (X <FIRST? .OBJ>) (CNT 0))
<REPEAT ()
<COND (<NOT .X>
<RETURN>)>
<COND (<FSET? .X ,TREASUREBIT>
<SET CNT <+ .CNT 1>>)>
<SET CNT <+ .CNT <COUNT-TREASURES .X>>>
<SET X <NEXT? .X>>>
.CNT>
<OBJECT TROPHY-CASE ;"first obj so L.R. desc looks right."
(IN LIVING-ROOM)
(DESC "trophy case")
(SYNONYM CASE)
(ADJECTIVE TROPHY)
(FLAGS TRANSBIT CONTBIT NDESCBIT TRYTAKEBIT SEARCHBIT)
(CAPACITY 10000)
(ACTION TROPHY-CASE-F)>
<ROUTINE TROPHY-CASE-F ()
<COND (<AND <VERB? TAKE>
<PRSO? ,TROPHY-CASE>>
<FASTENED ,TROPHY-CASE "wall">)>>
<OBJECT MAP
(IN TROPHY-CASE)
(DESC "parchment map")
(FDESC "In the trophy case is an ancient parchment map.")
(SYNONYM MAP)
(ADJECTIVE OLD PARCHMENT ANCIENT)
(FLAGS INVISIBLE READBIT TAKEBIT)
(SIZE 2)
(TEXT
"The map shows a house in a forest clearing. Several paths leave the
clearing; one, leading southwest, is marked \"To Stone Barrow\".")>
<OBJECT SWORD
(IN LIVING-ROOM)
(DESC "sword")
(FDESC
"Above the trophy case hangs an elvish sword of great antiquity.")
(SYNONYM SWORD BLADE)
(ADJECTIVE ELVISH OLD)
(FLAGS TAKEBIT WEAPONBIT)
(SIZE 30)>
<OBJECT LAMP
(IN LIVING-ROOM)
(DESC "brass lantern")
(FDESC "A battery-powered brass lantern is on the trophy case.")
(LDESC "There is a brass lantern (battery-powered) here.")
(SYNONYM LAMP LANTERN LIGHT)
(ADJECTIVE BRASS)
(FLAGS TAKEBIT LIGHTBIT)
(SIZE 15)
(ACTION LAMP-F)>
<ROUTINE LAMP-F ()
<COND (<VERB? THROW>
<TELL "You might break it!" CR>)
(<AND <VERB? LAMP-ON LAMP-OFF EXAMINE>
<FSET? ,LAMP ,RMUNGBIT>>
<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>)>>
<ROUTINE I-LANTERN ("AUX" TICK (TBL <VALUE LAMP-TABLE>))
<ENABLE <QUEUE I-LANTERN <SET TICK <GET .TBL 0>>>>
<LIGHT-INT ,LAMP .TBL .TICK>
<COND (<NOT <0? .TICK>>
<SETG LAMP-TABLE <REST .TBL 4>>)>>
<GLOBAL LAMP-TABLE
<TABLE (PURE)
75 "The lamp appears dimmer."
50 "The lamp is definitely dimmer now."
15 "The lamp is nearly out." 0>>
<OBJECT WOODEN-DOOR
(IN LIVING-ROOM)
(DESC "wooden door")
(SYNONYM DOOR LETTERING WRITING)
(ADJECTIVE WOODEN GOTHIC STRANGE WEST)
(FLAGS READBIT DOORBIT NDESCBIT TRANSBIT)
(TEXT
"The engravings translate to \"This space intentionally left blank.\"")
(ACTION WOODEN-DOOR-F)>
<ROUTINE WOODEN-DOOR-F ()
<COND (<VERB? OPEN LOOK-BEHIND>
<TELL "It won't open." CR>)
(<VERB? BURN MUNG>
<TELL "Nice try." CR>)>>
<GLOBAL RUG-MOVED <>>
<OBJECT RUG
(IN LIVING-ROOM)
(DESC "carpet")
(SYNONYM RUG CARPET)
(ADJECTIVE LARGE ORIENTAL)
(FLAGS NDESCBIT TRYTAKEBIT)
(ACTION RUG-F)>
<ROUTINE RUG-F ()
<COND (<VERB? RAISE TAKE>
<TELL "The rug is too heavy to lift">
<COND (<NOT ,RUG-MOVED>
<TELL ", but you noticed an irregularity beneath it">)>
<TELL ,PERIOD-CR>)
(<VERB? MOVE PUSH>
<COND (,RUG-MOVED
<TELL ,ALREADY>)
(T
<FCLEAR ,TRAP-DOOR ,INVISIBLE>
<SETG P-IT-OBJECT ,TRAP-DOOR>
<SETG RUG-MOVED T>
<TELL
"You drag the rug to one side of the room, revealing a
closed trap door." CR>)>)
(<AND <VERB? LOOK-UNDER>
<NOT ,RUG-MOVED>>
<PEEK-UNDER ,RUG ,TRAP-DOOR>)
(<VERB? CLIMB-ON>
<COND (<NOT ,RUG-MOVED>
<TELL
"As you try to sit, you notice an irregularity beneath the rug." CR>)
(T
<TELL "It's not a magic carpet." CR>)>)>>
<OBJECT TRAP-DOOR
(IN LIVING-ROOM)
(DESC "trap door")
(SYNONYM DOOR TRAPDOOR TRAP-DOOR)
(ADJECTIVE TRAP DUSTY)
(FLAGS DOORBIT NDESCBIT INVISIBLE)
(ACTION TRAP-DOOR-F)>
<ROUTINE TRAP-DOOR-F ()
<COND (<OR <VERB? RAISE>
<AND <VERB? LOOK-UNDER>
<EQUAL? ,HERE ,LIVING-ROOM>>>
<PERFORM ,V?OPEN ,TRAP-DOOR>
<RTRUE>)
(<AND <VERB? OPEN CLOSE>
<EQUAL? ,HERE ,LIVING-ROOM>>
<OPEN-CLOSE ,PRSO
"The door reluctantly opens to reveal a rickety staircase descending into
darkness."
"The door swings shut.">)
(<EQUAL? ,HERE ,CELLAR>
<COND (<AND <VERB? OPEN UNLOCK>
<NOT <FSET? ,TRAP-DOOR ,OPENBIT>>>
<TELL "It's latched from above." CR>)
(<AND <VERB? CLOSE>
<FSET? ,TRAP-DOOR ,OPENBIT>>
<FCLEAR ,TRAP-DOOR ,OPENBIT>
<TELL "The door latches shut." CR>)>)>>

489
globals.zil Normal file
View file

@ -0,0 +1,489 @@
"GLOBALS for
Mini-Zork '87
(c) Copyright 1987 Infocom, Inc. All Rights Reserved"
<DIRECTIONS NORTH EAST WEST SOUTH NE NW SE SW UP DOWN IN OUT LAND>
<OBJECT GLOBAL-OBJECTS
(FLAGS RMUNGBIT INVISIBLE TOUCHBIT SURFACEBIT TRYTAKEBIT OPENBIT
SEARCHBIT TRANSBIT ONBIT RLANDBIT)>
<OBJECT LOCAL-GLOBALS
(IN GLOBAL-OBJECTS)
(DESC "it")>
<OBJECT ROOMS
(IN TO ROOMS)>
<OBJECT PSEUDO-OBJECT
(IN LOCAL-GLOBALS)
(DESC "pseudo")
(ACTION ME-F)>
<OBJECT IT
(IN GLOBAL-OBJECTS)
(SYNONYM IT THEM HER HIM)
(DESC "thing")
(FLAGS NDESCBIT TOUCHBIT)>
<OBJECT INTNUM
(IN GLOBAL-OBJECTS)
(FLAGS TOOLBIT)
(SYNONYM INTNUM)
(DESC "number")>
<OBJECT NOT-HERE-OBJECT
(DESC "thing")
(ACTION NOT-HERE-OBJECT-F)>
<ROUTINE NOT-HERE-OBJECT-F ("AUX" TBL (PRSO? T) OBJ)
<COND (<AND <EQUAL? ,PRSO ,NOT-HERE-OBJECT>
<EQUAL? ,PRSI ,NOT-HERE-OBJECT>>
<TELL "Those things aren't here!" CR>
<RTRUE>)
(<EQUAL? ,PRSO ,NOT-HERE-OBJECT>
<SET TBL ,P-PRSO>)
(T
<SET TBL ,P-PRSI>
<SET PRSO? <>>)>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<COND (<EQUAL? ,WINNER ,ADVENTURER>
<TELL ,YOU-CANT "see any ">
<NOT-HERE-PRINT .PRSO?>
<TELL " here!" CR>)
(T
<TELL "The " D ,WINNER " seems confused. \"I don't see any ">
<NOT-HERE-PRINT .PRSO?>
<TELL " here!\"" CR>)>
<RTRUE>>
<ROUTINE NOT-HERE-PRINT (PRSO?)
<COND (,P-OFLAG
<COND (,P-XADJ
<PRINTB ,P-XADJN>)>
<COND (,P-XNAM
<PRINTB ,P-XNAM>)>)
(.PRSO?
<BUFFER-PRINT <GET ,P-ITBL ,P-NC1> <GET ,P-ITBL ,P-NC1L> <>>)
(T
<BUFFER-PRINT <GET ,P-ITBL ,P-NC2> <GET ,P-ITBL ,P-NC2L> <>>)>>
<OBJECT GLOBAL-WATER
(IN LOCAL-GLOBALS)
(DESC "water")
(SYNONYM WATER)
(FLAGS DRINKBIT)
(ACTION WATER-F)>
<OBJECT WALL
(IN GLOBAL-OBJECTS)
(DESC "wall")
(SYNONYM WALL WALLS)>
<OBJECT STAIRS
(IN LOCAL-GLOBALS)
(DESC "stairway")
(SYNONYM STAIR STEPS STAIRCASE STAIRWAY)
(ADJECTIVE STONE DARK FORBIDDING)
(FLAGS NDESCBIT CLIMBBIT)
(ACTION STAIRS-F)>
<ROUTINE STAIRS-F ()
<COND (<VERB? THROUGH>
<TELL "Up? Down?" CR>)>>
<OBJECT SAILOR
(IN GLOBAL-OBJECTS)
(DESC "sailor")
(SYNONYM SAILOR)
(FLAGS NDESCBIT)
(ACTION SAILOR-F)>
<GLOBAL HS 0> ;"counts occurences of HELLO, SAILOR"
<ROUTINE SAILOR-F ()
<COND (<VERB? TELL>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<TELL ,YOU-CANT "talk to the sailor that way." CR>)
(<VERB? EXAMINE>
<TELL "There is no sailor to be seen." CR>)
(<VERB? HELLO>
<SETG HS <+ ,HS 1>>
<COND (<0? <MOD ,HS 12>>
<TELL "You seem to be repeating yourself." CR>)
(T
<TELL "Nothing happens here." CR>)>)>>
<OBJECT GROUND
(IN GLOBAL-OBJECTS)
(DESC "ground")
(SYNONYM GROUND SAND DIRT FLOOR)
(ACTION GROUND-F)>
<ROUTINE GROUND-F ()
<COND (<AND <VERB? PUT PUT-ON>
<EQUAL? ,PRSI ,GROUND>>
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)
(<EQUAL? ,HERE ,SANDY-CAVE>
<SAND-F>)
(<VERB? DIG>
<TELL "The ground is too ">
<COND (<EQUAL? ,HERE ,RESERVOIR>
<TELL "muddy">)
(T
<TELL "hard">)>
<TELL " here." CR>)>>
<OBJECT GRUE
(IN GLOBAL-OBJECTS)
(DESC "lurking grue")
(SYNONYM GRUE)
(ADJECTIVE LURKING)
(ACTION GRUE-F)>
<ROUTINE GRUE-F ()
<COND (<VERB? EXAMINE>
<TELL
"The grue is a sinister, lurking presence in the dark places of the earth.
Its favorite diet is adventurers, but its insatiable appetite is tempered
by its fear of light." CR>)
(<VERB? FIND>
<TELL
"One is probably lurking in the dark nearby. Don't let your light
go out!" CR>)>>
<OBJECT LUNGS
(IN GLOBAL-OBJECTS)
(DESC "blast of air")
(SYNONYM LUNGS AIR MOUTH BREATH)
(FLAGS NDESCBIT)>
<OBJECT ME
(IN GLOBAL-OBJECTS)
(DESC "brave adventurer")
(SYNONYM ME MYSELF SELF ADVENTURER)
(ADJECTIVE BRAVE)
(FLAGS ACTORBIT)
(ACTION ME-F)>
<ROUTINE ME-F ()
<COND (<VERB? TELL>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<TELL ,MENTAL-COLLAPSE>)
(<AND <VERB? GIVE>
<EQUAL? ,PRSI ,ME>>
<PERFORM ,V?TAKE ,PRSO>
<RTRUE>)
(<VERB? EAT>
<TELL "Auto-cannibalism is not the answer." CR>)
(<AND <VERB? ATTACK MUNG>
<PRSO? ,ME>>
<JIGS-UP "Poof, you're dead!">)
(<VERB? TAKE>
<TELL "How romantic!" CR>)
(<VERB? EXAMINE>
<COND (<EQUAL? ,HERE ,MIRROR-ROOM-NORTH ,MIRROR-ROOM-SOUTH>
<TELL "Your image in the mirror looks tired." CR>)
(T
<TELL "Are your eyes prehensile?" CR>)>)>>
<OBJECT ADVENTURER
(DESC "you")
(SYNONYM ADVENTURER)
(FLAGS NDESCBIT INVISIBLE SACREDBIT ACTORBIT)
(STRENGTH 6)
(ACTION 0)>
<OBJECT PATH-OBJECT
(IN GLOBAL-OBJECTS)
(DESC "passage")
(SYNONYM TRAIL PATH PASSAGE TUNNEL)
(ADJECTIVE FOREST NARROW LONG WINDING)
(FLAGS NDESCBIT)
(ACTION PATH-OBJECT-F)>
<ROUTINE PATH-OBJECT-F ()
<COND (<VERB? TAKE FOLLOW>
<V-WALK-AROUND>)
(<VERB? DIG>
<TELL "Not a chance." CR>)>>
<OBJECT HANDS
(IN GLOBAL-OBJECTS)
(DESC "pair of hands")
(SYNONYM PAIR HANDS HAND)
(ADJECTIVE BARE)
(FLAGS NDESCBIT TOOLBIT)>
\
;"stuff that belongs in more than one geographical area"
<ROUTINE MIRROR-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL "You are in a square room with tall ceilings. A ">
<COND (<EQUAL? ,MIRROR-MUNG ,HERE ,MIRROR>
<TELL "demolished">)
(T
<TELL "huge">)>
<TELL
" mirror fills the south wall. There are exits east and northeast.">)>>
<OBJECT MIRROR
(IN LOCAL-GLOBALS)
(DESC "mirror")
(SYNONYM REFLECTION MIRROR)
(FLAGS TRYTAKEBIT NDESCBIT)
(ACTION MIRROR-F)>
<GLOBAL MIRROR-MUNG <>> ;"if both mirrors are broken, SETG this to MIRROR"
<GLOBAL LUCKY T>
<ROUTINE MIRROR-F ("AUX" OTHER-ROOM)
<COND (<AND <VERB? RUB>
<NOT ,MIRROR-MUNG>>
<COND (<EQUAL? ,HERE ,MIRROR-ROOM-NORTH>
<SET OTHER-ROOM ,MIRROR-ROOM-SOUTH>)
(T
<SET OTHER-ROOM ,MIRROR-ROOM-NORTH>)>
<ROB ,HERE ,MIRROR <>>
<ROB .OTHER-ROOM ,HERE <>>
<ROB ,MIRROR .OTHER-ROOM <>>
<GOTO .OTHER-ROOM <>>
<TELL "There is a rumble from deep within the earth." CR>)
(<VERB? LOOK-INSIDE EXAMINE>
<COND (<EQUAL? ,MIRROR-MUNG ,HERE ,MIRROR>
<TELL "The mirror is shattered.">)
(T
<TELL "An ugly person stares back at you.">)>
<CRLF>)
(<VERB? TAKE>
<FASTENED ,MIRROR "wall">)
(<VERB? MUNG THROW ATTACK>
<COND (<EQUAL? ,MIRROR-MUNG ,HERE ,MIRROR>
<TELL "You've done enough damage already." CR>)
(T
<COND (,MIRROR-MUNG ;"you've already broken the other"
<SETG MIRROR-MUNG ,MIRROR>)
(T
<SETG MIRROR-MUNG ,HERE>)>
<SETG LUCKY <>>
<TELL
"The mirror breaks. I hope you have a seven year supply of good luck
handy." CR>)>)>>
<OBJECT CHIMNEY
(IN LOCAL-GLOBALS)
(DESC "chimney")
(SYNONYM CHIMNEY)
(ADJECTIVE DARK NARROW)
(FLAGS CLIMBBIT NDESCBIT)
(ACTION CHIMNEY-F)>
<ROUTINE CHIMNEY-F ()
<COND (<VERB? EXAMINE>
<TELL "The chimney leads ">
<COND (<EQUAL? ,HERE ,KITCHEN>
<TELL "down">)
(T
<TELL "up, and looks climbable">)>
<TELL ,PERIOD-CR>)>>
\
;"utility routines and shared stuff"
<ROUTINE LIGHT-INT (OBJ TBL TICK)
<COND (<0? .TICK>
<FCLEAR .OBJ ,ONBIT>
<FSET .OBJ ,RMUNGBIT>)>
<COND (<OR <HELD? .OBJ>
<IN? .OBJ ,HERE>>
<COND (<0? .TICK>
<TELL "The " D .OBJ " fizzles and dies." CR>
<NOW-DARK?>)
(T
<TELL <GET .TBL 1> CR>)>)>>
<ROUTINE GLOBAL-IN? (OBJ "AUX" TX)
<COND (<SET TX <GETPT ,HERE ,P?GLOBAL>>
<ZMEMQB .OBJ .TX <- <PTSIZE .TX> 1>>)>>
<ROUTINE FIND-IN (WHERE WHAT "AUX" W)
<SET W <FIRST? .WHERE>>
<COND (<NOT .W>
<RFALSE>)>
<REPEAT ()
<COND (<AND <FSET? .W .WHAT>
<NOT <EQUAL? .W ,ADVENTURER>>>
<RETURN .W>)
(<NOT <SET W <NEXT? .W>>>
<RETURN <>>)>>>
<ROUTINE ACCESSIBLE? (OBJ "AUX" (L <LOC .OBJ>))
<COND (<FSET? .OBJ ,INVISIBLE>
<RFALSE>)
(<NOT .L>
<RFALSE>)
(<EQUAL? .L ,GLOBAL-OBJECTS>
<RTRUE>)
(<AND <EQUAL? .L ,LOCAL-GLOBALS>
<GLOBAL-IN? .OBJ>>
<RTRUE>)
(<NOT <EQUAL? <META-LOC .OBJ> ,HERE <LOC ,WINNER>>>
<RFALSE>)
(<EQUAL? .L ,WINNER ,HERE <LOC ,WINNER>>
<RTRUE>)
(<AND <FSET? .L ,OPENBIT>
<ACCESSIBLE? .L>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE META-LOC (OBJ)
<REPEAT ()
<COND (<NOT .OBJ>
<RFALSE>)
(<IN? .OBJ ,GLOBAL-OBJECTS>
<RETURN ,GLOBAL-OBJECTS>)>
<COND (<IN? .OBJ ,ROOMS>
<RETURN .OBJ>)
(T
<SET OBJ <LOC .OBJ>>)>>>
<ROUTINE HELD? (CAN)
<REPEAT ()
<SET CAN <LOC .CAN>>
<COND (<NOT .CAN>
<RFALSE>)
(<EQUAL? .CAN ,WINNER>
<RTRUE>)>>>
<ROUTINE OTHER-SIDE (DOBJ "AUX" (P 0) TX) ;"finds room beyond given door"
<REPEAT ()
<COND (<L? <SET P <NEXTP ,HERE .P>> ,LOW-DIRECTION>
<RETURN <>>)
(T
<SET TX <GETPT ,HERE .P>>
<COND (<AND <EQUAL? <PTSIZE .TX> ,DEXIT>
<EQUAL? <GETB .TX ,DEXITOBJ> .DOBJ>>
<RETURN .P>)>)>>>
<ROUTINE REMOVE-CAREFULLY (OBJ)
<COND (<EQUAL? .OBJ ,P-IT-OBJECT>
<SETG P-IT-OBJECT <>>)>
<REMOVE .OBJ>
<NOW-DARK?>>
<ROUTINE NOW-DARK? ()
<COND (<AND ,LIT
<NOT <LIT? ,HERE>>>
<SETG LIT <>>
<TELL "It is now pitch black." CR>)>
<RTRUE>>
<ROUTINE STUPID-CONTAINER (OBJ STR)
<COND (<VERB? CLOSE>
<TELL "It is!" CR>)
(<VERB? LOOK-INSIDE EXAMINE OPEN>
<TELL "Lots of " .STR ,PERIOD-CR>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI .OBJ>>
<TELL "Then it wouldn't be a " D .OBJ " anymore!" CR>)>>
<ROUTINE PEEK-UNDER (OBJ1 OBJ2)
<TELL
"Underneath the " D .OBJ1 " is a " D .OBJ2 ". As you release the " D .OBJ1
", the " D .OBJ2 " is once again concealed from view." CR>>
<ROUTINE FASTENED (OBJ STRING)
<TELL
"The " D .OBJ " is securely fastened to the " .STRING ,PERIOD-CR>>
<ROUTINE OPEN-CLOSE (OBJ STROPN STRCLS)
<COND (<VERB? OPEN>
<COND (<FSET? .OBJ ,OPENBIT>
<TELL ,LOOK-AROUND>)
(T
<FSET .OBJ ,OPENBIT>
<TELL .STROPN CR>)>)
(<VERB? CLOSE>
<COND (<FSET? .OBJ ,OPENBIT>
<FCLEAR .OBJ ,OPENBIT>
<TELL .STRCLS CR>)
(T
<TELL ,LOOK-AROUND>)>)>>
<ROUTINE HACK-HACK (STR)
<TELL .STR D ,PRSO <PICK-ONE ,HO-HUM> ,PERIOD-CR>>
<GLOBAL HO-HUM
<LTABLE
0
" doesn't seem to work"
" isn't notably helpful"
" has no effect">>
<GLOBAL YUKS
<LTABLE
0
"A valiant attempt."
"You can't be serious."
"Not bloody likely."
"What a concept!">>
<GLOBAL PERIOD-CR ".|">
<GLOBAL LOOK-AROUND "Look around you.|">
<GLOBAL FORMERLY-A-LAKE
"what was formerly a lake. However, with the water level lowered, there is
merely a shallow stream, easily">
<GLOBAL MENTAL-COLLAPSE
"Talking to yourself is said to be a sign of impending mental collapse.|">
<GLOBAL CANT-GO "You can't go that way.|">
<GLOBAL REFERRING "It's not clear what you're referring to.|">
<GLOBAL NOTHING-TO-FILL-WITH "There is nothing to fill it with.|">
<GLOBAL GOOD-TRICK "That would be a good trick.|">
<GLOBAL TOO-DARK "It's too dark to see.|">
<GLOBAL GUE-NAME "The Great Underground Empire">
<GLOBAL INTEGRAL-PART "It is an integral part of the control panel.|">
<GLOBAL PERFORM-CEREMONY "You must perform the ceremony.|">
<GLOBAL FAILED "Failed.|">
<GLOBAL THIEF-LEFT-DISGUSTED
"Finding nothing of value, the thief left, looking disgusted.|">
<GLOBAL YOU-CANT "You can't ">
<GLOBAL YNH "You're not holding ">
<GLOBAL THERES-NOTHING "There is nothing ">
<GLOBAL CANDLES-ARE "The candles are ">
<GLOBAL ALREADY "You already did that!|">
<GLOBAL WATER-EVAPORATES
"The water spills to the floor and evaporates immediately.|">
<GLOBAL BEG-PARDON "[I beg your pardon?]|">
<GLOBAL NOTHING-HAPPENS "Nothing happens.|">
<GLOBAL NOUN-MISSING "[There seems to be a noun missing in that sentence!]|">
<GLOBAL CYCLOPS-IS "The cyclops is">
<GLOBAL DISK-BASED " in the larger, disk-based version of Zork I.|">

439
maze.zil Normal file
View file

@ -0,0 +1,439 @@
"MAZE for
Mini-Zork '87
(c) Copyright 1987 Infocom, Inc. All Rights Reserved"
<ROOM MAZE-1
(IN ROOMS)
(DESC "Maze")
(LDESC "This is part of a maze of twisty little passages, all alike.")
(EAST TO TROLL-ROOM)
(WEST TO MAZE-3)
(NW TO MAZE-2)
(NE TO MAZE-1)
(FLAGS RLANDBIT MAZEBIT)>
<ROOM MAZE-2
(IN ROOMS)
(DESC "Maze")
(LDESC "This is part of a maze of twisty little passages, all alike.")
(NORTH TO MAZE-1)
(WEST TO MAZE-2)
(SE TO MAZE-3)
(DOWN TO MAZE-5)
(FLAGS RLANDBIT MAZEBIT)>
<ROOM MAZE-3
(IN ROOMS)
(DESC "Maze")
(LDESC "This is part of a maze of twisty little passages, all alike.")
(WEST TO MAZE-2)
(NORTH TO MAZE-1)
(UP TO MAZE-5)
(FLAGS RLANDBIT MAZEBIT)>
<ROOM MAZE-4
(IN ROOMS)
(DESC "Maze")
(LDESC "This is part of a maze of twisty little passages, all alike.")
(EAST TO MAZE-8)
(DOWN TO MAZE-5)
(SE TO MAZE-7)
(SOUTH TO MAZE-10)
(UP TO MAZE-6)
(FLAGS RLANDBIT MAZEBIT)>
<ROOM MAZE-5
(IN ROOMS)
(DESC "Maze")
(LDESC "This is part of a maze of twisty little passages, all alike.")
(NORTH TO MAZE-3)
(SW TO MAZE-4)
(NW TO MAZE-2)
(FLAGS RLANDBIT MAZEBIT)>
<OBJECT BURNED-OUT-LANTERN
(IN MAZE-5)
(DESC "burned-out lantern")
(FDESC "The deceased adventurer's useless lantern is here.")
(SYNONYM LANTERN LAMP)
(ADJECTIVE RUSTY BURNED DEAD USELESS)
(FLAGS TAKEBIT)
(SIZE 20)>
<OBJECT BAG-OF-COINS
(IN MAZE-5)
(DESC "leather bag of coins")
(LDESC "An old leather bag, bulging with coins, is here.")
(SYNONYM BAG COINS TREASURE)
(ADJECTIVE OLD LEATHER)
(FLAGS TAKEBIT TREASUREBIT)
(SIZE 15)
(VALUE 11)
(ACTION BAG-OF-COINS-F)>
<ROUTINE BAG-OF-COINS-F ()
<STUPID-CONTAINER ,BAG-OF-COINS "coins">>
<OBJECT RUSTY-KNIFE
(IN MAZE-5)
(DESC "rusty knife")
(FDESC "Beside the skeleton is a rusty knife.")
(SYNONYM KNIVES KNIFE)
(ADJECTIVE RUSTY)
(FLAGS TAKEBIT TRYTAKEBIT WEAPONBIT TOOLBIT)
(SIZE 20)
(ACTION RUSTY-KNIFE-F)>
<ROUTINE RUSTY-KNIFE-F ()
<COND (<AND <VERB? TAKE>
<IN? ,SWORD ,WINNER>>
<TELL
"As you touch the rusty knife, your sword gives a single pulse of
blinding blue light." CR>
<RFALSE>)
(<OR <AND <PRSI? ,RUSTY-KNIFE>
<VERB? ATTACK>>
<AND <VERB? SWING>
<PRSO? ,RUSTY-KNIFE>
,PRSI>>
<REMOVE ,RUSTY-KNIFE>
<JIGS-UP
"The knife, moving with its own force, slowly turns your hand, until the
blade is at your neck. The knife seems to sing as it savagely slits your
throat.">)>>
<OBJECT KEYS
(IN MAZE-5)
(DESC "skeleton key")
(SYNONYM KEY)
(ADJECTIVE SKELETON)
(FLAGS TAKEBIT TOOLBIT)
(SIZE 10)>
<OBJECT SKELETON
(IN MAZE-5)
(DESC "skeleton")
(LDESC
"A skeleton, probably the remains of a luckless adventurer, lies here.")
(SYNONYM BONES SKELETON BODY)
(FLAGS TRYTAKEBIT NDESCBIT)
(ACTION SKELETON-F)>
<ROUTINE SKELETON-F ()
<COND (<VERB? TAKE RUB MOVE PUSH RAISE LOWER ATTACK KICK KISS>
<ROB ,HERE ,HADES T>
<ROB ,ADVENTURER ,HADES T>
<TELL
"A ghost appears, appalled at your desecration of the remains of a fellow
adventurer. He curses your valuables and banishes them to Hades. The ghost
leaves, muttering obscenities." CR>)>>
<ROOM MAZE-6
(IN ROOMS)
(DESC "Maze")
(LDESC "This is part of a maze of twisty little passages, all alike.")
(DOWN TO MAZE-2)
(SOUTH TO MAZE-6)
(SE TO MAZE-4)
(NE TO GRATING-ROOM)
(FLAGS RLANDBIT MAZEBIT)>
<ROOM MAZE-7
(IN ROOMS)
(DESC "Maze")
(LDESC "This is part of a maze of twisty little passages, all alike.")
(UP TO MAZE-10)
(WEST TO MAZE-4)
(DOWN TO MAZE-5)
(SW TO MAZE-7)
(FLAGS RLANDBIT MAZEBIT)>
<ROOM MAZE-8
(IN ROOMS)
(DESC "Maze")
(LDESC "This is part of a maze of twisty little passages, all alike.")
(NORTH TO MAZE-8)
(EAST TO MAZE-9)
(SE TO MAZE-10)
(UP TO MAZE-4)
(FLAGS RLANDBIT MAZEBIT)>
<ROOM MAZE-9
(IN ROOMS)
(DESC "Maze")
(LDESC "This is part of a maze of twisty little passages, all alike.")
(NORTH TO MAZE-8)
(SOUTH TO MAZE-10)
(SE TO CYCLOPS-ROOM)
(FLAGS RLANDBIT MAZEBIT)>
<ROOM MAZE-10
(IN ROOMS)
(DESC "Maze")
(LDESC "This is part of a maze of twisty little passages, all alike.")
(SOUTH TO MAZE-9)
(NE TO MAZE-8)
(NW TO MAZE-7)
(SW TO MAZE-4)
(FLAGS RLANDBIT MAZEBIT)>
<ROOM GRATING-ROOM
(IN ROOMS)
(DESC "Grating Room")
(SW TO MAZE-6)
(UP TO FOREST-PATH IF GRATE IS OPEN ELSE "The grating is closed.")
(GLOBAL GRATE)
(FLAGS RLANDBIT)
(ACTION GRATING-ROOM-F)>
<GLOBAL GRATE-REVEALED <>>
<GLOBAL GRUNLOCK <>>
<ROUTINE GRATING-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<FCLEAR ,GRATE ,INVISIBLE>)
(<EQUAL? .RARG ,M-LOOK>
<TELL
"You are in a room off the maze, which lies to the southwest. Above you is a">
<COND (<FSET? ,GRATE ,OPENBIT>
<TELL "n open grating with sunlight pouring in.">)
(,GRUNLOCK
<TELL " grating.">)
(T
<TELL
" grating locked with a skull-and-crossbones lock.">)>)>>
<OBJECT GRATE
(IN LOCAL-GLOBALS)
(DESC "grating")
(SYNONYM GRATE GRATING)
(FLAGS DOORBIT NDESCBIT INVISIBLE)
(ACTION GRATE-F)>
<ROUTINE GRATE-F ()
<COND (<AND <VERB? OPEN>
<PRSI? ,KEYS>>
<PERFORM ,V?UNLOCK ,GRATE ,KEYS>
<RTRUE>)
(<AND <VERB? LOCK UNLOCK>
<EQUAL? ,HERE ,FOREST-PATH>>
<TELL ,YOU-CANT "from this side." CR>)
(<VERB? LOCK>
<SETG GRUNLOCK <>>
<TELL "Locked." CR>)
(<AND <VERB? UNLOCK>
<PRSO? ,GRATE>>
<COND (<PRSI? ,KEYS>
<SETG GRUNLOCK T>
<TELL "Unlocked." CR>)
(T
<TELL "With a " D ,PRSI "!?!" CR>)>)
(<VERB? PICK>
<TELL "You haven't the skill." CR>)
(<VERB? OPEN CLOSE>
<COND (,GRUNLOCK
<OPEN-CLOSE ,GRATE "The grating opens."
"The grating closes.">
<COND (<FSET? ,GRATE ,OPENBIT>
<FSET ,GRATING-ROOM ,ONBIT>
<COND (<AND <NOT <EQUAL? ,HERE ,FOREST-PATH>>
<NOT ,GRATE-REVEALED>>
<SETG GRATE-REVEALED T>
<MOVE ,LEAVES ,HERE>
<TELL
"A pile of leaves falls onto your head and to the ground." CR>)>)
(T
<FCLEAR ,GRATING-ROOM ,ONBIT>)>
<RTRUE>)
(T
<TELL "The grating is locked." CR>)>)
(<AND <VERB? PUT>
<PRSI? ,GRATE>>
<TELL "It won't fit through the grating." CR>)>>
<ROOM CYCLOPS-ROOM
(IN ROOMS)
(DESC "Cyclops Room")
(NW TO MAZE-9)
(EAST TO LIVING-ROOM IF MAGIC-FLAG)
(UP TO THIEFS-LAIR IF CYCLOPS-FLAG ELSE
"The cyclops won't let you past.")
(FLAGS RLANDBIT)
(GLOBAL STAIRS)
(ACTION CYCLOPS-ROOM-F)>
<GLOBAL CYCLOWRATH 0>
<GLOBAL CYCLOPS-FLAG <>>
<GLOBAL MAGIC-FLAG <>>
<ROUTINE CYCLOPS-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This room has a northwest exit and a staircase leading up. ">
<D-CYCLOPS>)
(<EQUAL? .RARG ,M-ENTER>
<OR <0? ,CYCLOWRATH> <ENABLE <INT I-CYCLOPS>>>)>>
<OBJECT CYCLOPS
(IN CYCLOPS-ROOM)
(DESC "cyclops")
(SYNONYM CYCLOPS EYE)
(ADJECTIVE HUNGRY GIANT)
(FLAGS ACTORBIT NDESCBIT TRYTAKEBIT)
(ACTION CYCLOPS-F)>
<ROUTINE CYCLOPS-F ()
<COND (<EQUAL? ,WINNER ,CYCLOPS>
<COND (,CYCLOPS-FLAG
<TELL "He's fast asleep." CR>)
(<VERB? ODYSSEUS>
<SETG WINNER ,ADVENTURER>
<PERFORM ,V?ODYSSEUS>
<RTRUE>)
(T
<TELL "He's not much of a conversationalist." CR>)>)
(<VERB? EXAMINE>
<D-CYCLOPS>
<CRLF>)
(,CYCLOPS-FLAG
<COND (<OR <VERB? ALARM KICK ATTACK BURN MUNG>
<AND <VERB? TIE-UP>
<PRSI? ,ROPE>>>
<TELL
"The cyclops yawns and stares at the thing that woke him up." CR>
<SETG CYCLOPS-FLAG <>>
<COND (<L? ,CYCLOWRATH 0>
<SETG CYCLOWRATH <- ,CYCLOWRATH>>)>)>)
(<AND <VERB? GIVE>
<PRSI? ,CYCLOPS>>
<COND (<PRSO? ,LUNCH>
<ENABLE <QUEUE I-CYCLOPS -1>>
<COND (<G? ,CYCLOWRATH -1>
<REMOVE ,LUNCH>
<SETG CYCLOWRATH
<COND (<L? -1 <- ,CYCLOWRATH>> -1)
(T <- ,CYCLOWRATH>)>>
<TELL
"The cyclops says, \"Yum, that made me thirsty. Perhaps I could drink the
blood of that thing.\" It appears that YOU are \"that thing.\"" CR>)>)
(<OR <PRSO? ,WATER>
<AND <PRSO? ,BOTTLE>
<IN? ,WATER ,BOTTLE>>>
<COND (<L? ,CYCLOWRATH 0>
<REMOVE-CAREFULLY ,WATER>
<MOVE ,BOTTLE ,HERE>
<FSET ,BOTTLE ,OPENBIT>
<SETG CYCLOPS-FLAG T>
<TELL
"The cyclops empties the bottle, yawns, and falls fast asleep. (What did
you put in that drink, anyway?)" CR>)
(T
<TELL
,CYCLOPS-IS "n't thirsty and refuses your offer." CR>)>)
(<PRSO? ,GARLIC>
<TELL ,CYCLOPS-IS "n't THAT hungry." CR>)
(T
<TELL "The cyclops won't eat THAT!" CR>)>)
(<VERB? THROW ATTACK MUNG>
<ENABLE <QUEUE I-CYCLOPS -1>>
<COND (<VERB? MUNG>
<TELL
"\"Do you think I'm as stupid as my father was?\", he says, dodging." CR>)
(T
<COND (<VERB? THROW>
<MOVE ,PRSO ,HERE>)>
<TELL "The cyclops ignores your pitiful attempt." CR>)>)
(<VERB? TIE>
<TELL "You cannot tie him, though he is fit to be tied." CR>)
(<VERB? LISTEN>
<TELL "You can hear his stomach rumbling." CR>)>>
<ROUTINE D-CYCLOPS ()
<COND (,MAGIC-FLAG
<TELL "The east wall has a cyclops-sized opening in it.">)
(,CYCLOPS-FLAG
<TELL
"The cyclops sleeps blissfully at the foot of the stairs.">)
(<0? ,CYCLOWRATH>
<TELL
"A hungry cyclops blocks the staircase. From the bloodstains on the walls,
you gather that he is not very friendly, though he likes people.">)
(<G? ,CYCLOWRATH 0>
<TELL
,CYCLOPS-IS " eyeing you closely. I don't think he likes you very much.
He looks extremely hungry, even for a cyclops.">)
(<L? ,CYCLOWRATH 0>
<TELL
"The cyclops, having eaten the hot peppers, appears to be gasping.
His enflamed tongue protrudes from his man-sized mouth.">)>>
<ROUTINE I-CYCLOPS ()
<COND (<OR ,CYCLOPS-FLAG
,DEAD>
<RTRUE>)
(<NOT <EQUAL? ,HERE ,CYCLOPS-ROOM>>
<DISABLE <INT I-CYCLOPS>>)
(<G? <ABS ,CYCLOWRATH> 5>
<DISABLE <INT I-CYCLOPS>>
<JIGS-UP
"The cyclops, tired of your trickery, grabs you firmly. \"Mmm. Just like Mom
used to make 'em.\"">)
(T
<COND (<L? ,CYCLOWRATH 0>
<SETG CYCLOWRATH <- ,CYCLOWRATH 1>>)
(T
<SETG CYCLOWRATH <+ ,CYCLOWRATH 1>>)>
<COND (<NOT ,CYCLOPS-FLAG>
<TELL
,CYCLOPS-IS <NTH ,CYCLOMAD <- <ABS ,CYCLOWRATH> 1>> CR>)>)>>
<GLOBAL CYCLOMAD
<TABLE (PURE)
" agitated."
" getting more agitated."
" looking for something."
" now holding salt and pepper. Condiments for an upcoming snack?"
" looking at you and drooling."
" approaching in an unfriendly manner. You can: 1. Leave 2. Become dinner.">>
<ROOM THIEFS-LAIR
(IN ROOMS)
(DESC "Thief's Lair")
(LDESC "The only visible exit is down a staircase.")
(DOWN TO CYCLOPS-ROOM)
(FLAGS RLANDBIT ;"can't have onbit")
(VALUE 20)
(GLOBAL STAIRS)
(ACTION THIEFS-LAIR-F)>
<ROUTINE THIEFS-LAIR-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<1? <GET <INT I-THIEF> ,C-ENABLED?>>
<NOT ,DEAD>>
<FCLEAR ,THIEF ,INVISIBLE>
<COND (<NOT <IN? ,THIEF ,HERE>>
<MOVE ,THIEF ,HERE>
<ENABLE <QUEUE I-FIGHT -1>>
<TELL
"You hear a scream of anguish as the robber rushes
to defend his hideaway." CR>)>)>>
<OBJECT CHALICE
(IN THIEFS-LAIR)
(DESC "chalice")
(LDESC "There is an intricate silver chalice here.")
(SYNONYM CHALICE CUP TREASURE)
(ADJECTIVE SILVER INTRICATE)
(FLAGS TREASUREBIT TAKEBIT TRYTAKEBIT CONTBIT SEARCHBIT)
(CAPACITY 5)
(SIZE 10)
(VALUE 20)
(ACTION CHALICE-F)>
<ROUTINE CHALICE-F ()
<COND (<VERB? OPEN CLOSE>
<TELL "Huh?" CR>)>>

2
mini.chart Normal file
View file

@ -0,0 +1,2 @@
-date- -rel- -size- -pre- -obj- -glo- -voc-
11/24 34 52216 14089 179 137 536

25
mini.errors Normal file
View file

@ -0,0 +1,25 @@
Assembling MINI.ZAP.1 on Tuesday, November 24, 1987 17:37:02
Release: 34
64 Inserting MINIFREQ.XZAP.2 (628 bytes)
692 Inserting MINIDAT.ZAP.1 (13397 bytes)
14089 Inserting MINIPUR.ZAP.1 (102 bytes)
14191 Inserting MISC.ZAP.1 (1141 bytes)
15332 Inserting PARSER.ZAP.1 (6478 bytes)
21810 Inserting VERBS.ZAP.1 (8354 bytes)
30164 Inserting GLOBALS.ZAP.1 (1618 bytes)
31782 Inserting THIEF.ZAP.1 (2297 bytes)
34079 Inserting ABOVE-GROUND.ZAP.1 (2930 bytes)
37009 Inserting SOUTH-OF-RES.ZAP.1 (4652 bytes)
41661 Inserting NORTH-OF-RES.ZAP.1 (1357 bytes)
43018 Inserting MAZE.ZAP.1 (1760 bytes)
44778 Inserting MINISTR.ZAP.1 (7438 bytes)
179 objects.
137 globals.
536 word vocabulary.
52216 bytes (51K).
14089 bytes of preload.
8583 bytes of impure.
Outputting symbol tables

474
mini.record Normal file
View file

@ -0,0 +1,474 @@
Combined ZIL Compiler Ver 2.0 (MIM)
-----------------------------------
Incremental compilation disabled, because top-level ZIL file changed.
Input file: SS:<ZORK1.MINI>MINI.ZIL.13
Compiling routine: ZPROB
Compiling routine: PICK-ONE
Compiling routine: GO
Compiling routine: MAIN-LOOP
Compiling routine: MAIN-LOOP-1
Compiling routine: PERFORM
Compiling routine: QUEUE
Compiling routine: INT
Compiling routine: CLOCKER
Compiling routine: PARSER
Compiling routine: STUFF
Compiling routine: INBUF-STUFF
Compiling routine: INBUF-ADD
Compiling routine: WT?
Compiling routine: CLAUSE
Compiling routine: NUMBER?
Compiling routine: ORPHAN-MERGE
Compiling routine: ACLAUSE-WIN
Compiling routine: NCLAUSE-WIN
Compiling routine: WORD-PRINT
Compiling routine: UNKNOWN-WORD
Compiling routine: CANT-USE
Compiling routine: GET-PREP
Compiling routine: SYNTAX-CHECK
Compiling routine: CANT-ORPHAN
Compiling routine: ORPHAN
Compiling routine: THING-PRINT
Compiling routine: BUFFER-PRINT
Compiling routine: PREP-PRINT
Compiling routine: CLAUSE-COPY
Compiling routine: CLAUSE-ADD
Compiling routine: PREP-FIND
Compiling routine: SYNTAX-FOUND
Compiling routine: GWIM
Compiling routine: SNARF-OBJECTS
Compiling routine: BUT-MERGE
Compiling routine: SNARFEM
Compiling routine: GET-OBJECT
Compiling routine: WHICH-PRINT
Compiling routine: GLOBAL-CHECK
Compiling routine: DO-SL
Compiling routine: SEARCH-LIST
Compiling routine: OBJ-FOUND
Compiling routine: TAKE-CHECK
Compiling routine: ITAKE-CHECK
Compiling routine: MANY-CHECK
Compiling routine: ZMEMQ
Compiling routine: ZMEMQB
Compiling routine: LIT?
Compiling routine: THIS-IT?
Compiling routine: V-VERBOSE
Compiling routine: V-BRIEF
Compiling routine: V-SUPER-BRIEF
Compiling routine: V-DIAGNOSE
Compiling routine: V-INVENTORY
Compiling routine: FINISH
Compiling routine: V-QUIT
Compiling routine: V-RESTART
Compiling routine: DO-YOU-WISH
Compiling routine: YES?
Compiling routine: V-RESTORE
Compiling routine: V-SAVE
Compiling routine: V-SCORE
Compiling routine: SCORE-OBJ
Compiling routine: V-SCRIPT
Compiling routine: V-UNSCRIPT
Compiling routine: TRANSCRIPT-MESSAGE
Compiling routine: V-VERSION
Compiling routine: V-VERIFY
Compiling routine: V-COMMAND-FILE
Compiling routine: V-RANDOM
Compiling routine: V-RECORD
Compiling routine: V-UNRECORD
Compiling routine: V-ALARM
Compiling routine: V-ATTACK
Compiling routine: SUICIDAL
Compiling routine: PRE-BOARD
Compiling routine: V-BOARD
Compiling routine: V-BREATHE
Compiling routine: PRE-BURN
Compiling routine: V-BURN
Compiling routine: V-CLIMB
Compiling routine: V-CLIMB-DOWN
Compiling routine: V-CLIMB-ON
Compiling routine: V-CLOSE
Compiling routine: V-COUNT
Compiling routine: V-CROSS
Compiling routine: V-CURSES
Compiling routine: V-CUT
Compiling routine: V-DEFLATE
Compiling routine: V-DIG
Compiling routine: V-DRINK
Compiling routine: V-DRINK-FROM
Compiling routine: PRE-DROP
Compiling routine: V-DROP
Compiling routine: V-EAT
Compiling routine: HIT-SPOT
Compiling routine: V-ENTER
Compiling routine: V-EXAMINE
Compiling routine: V-EXIT
Compiling routine: V-EXORCISE
Compiling routine: PRE-FILL
Compiling routine: V-FILL
Compiling routine: V-FIND
Compiling routine: V-FOLLOW
Compiling routine: PRE-GIVE
Compiling routine: V-GIVE
Compiling routine: V-HATCH
Compiling routine: V-HELLO
Compiling routine: V-INFLATE
Compiling routine: V-KICK
Compiling routine: V-KISS
Compiling routine: V-KNOCK
Compiling routine: V-LAMP-OFF
Compiling routine: V-LAMP-ON
Compiling routine: V-LAUNCH
Compiling routine: V-LEAP
Compiling routine: V-LISTEN
Compiling routine: V-LOCK
Compiling routine: V-LOOK
Compiling routine: V-LOOK-BEHIND
Compiling routine: V-LOOK-INSIDE
Compiling routine: V-LOOK-UNDER
Compiling routine: V-LOWER
Compiling routine: V-MAKE
Compiling routine: PRE-MOVE
Compiling routine: V-MOVE
Compiling routine: PRE-MUNG
Compiling routine: V-MUNG
Compiling routine: V-ODYSSEUS
Compiling routine: V-OPEN
Compiling routine: V-PICK
Compiling routine: V-POUR-ON
Compiling routine: V-PRAY
Compiling routine: V-PUMP
Compiling routine: V-PUSH
Compiling routine: PRE-PUT
Compiling routine: V-PUT
Compiling routine: V-PUT-ON
Compiling routine: V-RAISE
Compiling routine: PRE-READ
Compiling routine: V-READ
Compiling routine: V-READ-PAGE
Compiling routine: V-REPENT
Compiling routine: V-RING
Compiling routine: V-RUB
Compiling routine: V-SAY
Compiling routine: V-SEARCH
Compiling routine: V-SGIVE
Compiling routine: V-SHAKE
Compiling routine: V-SKIP
Compiling routine: V-SMELL
Compiling routine: V-STAB
Compiling routine: V-STRIKE
Compiling routine: V-SWIM
Compiling routine: V-SWING
Compiling routine: PRE-TAKE
Compiling routine: V-TAKE
Compiling routine: V-TELL
Compiling routine: V-THROUGH
Compiling routine: V-THROW
Compiling routine: V-THROW-OFF
Compiling routine: V-TIE
Compiling routine: V-TIE-UP
Compiling routine: PRE-TURN
Compiling routine: V-TURN
Compiling routine: V-UNLOCK
Compiling routine: V-UNTIE
Compiling routine: V-WAIT
Compiling routine: V-WALK
Compiling routine: V-WALK-AROUND
Compiling routine: V-WAVE
Compiling routine: V-YELL
Compiling routine: V-ZORK
Compiling routine: DESCRIBE-ROOM
Compiling routine: DESCRIBE-OBJECTS
Compiling routine: DESCRIBE-OBJECT
Compiling routine: PRINT-CONTENTS
Compiling routine: PRINT-CONT
Compiling routine: FIRSTER
Compiling routine: SEE-INSIDE?
Compiling routine: JIGS-UP
** Note: Atomic argument to routine assumed constant - DEAD-FUNCTION
Compiling routine: RANDOMIZE-OBJECTS
Compiling routine: KILL-INTERRUPTS
Compiling routine: DEAD-FUNCTION
Compiling routine: ITAKE
Compiling routine: IDROP
Compiling routine: CCOUNT
Compiling routine: WEIGHT
Compiling routine: GOTO
Compiling routine: DO-WALK
Compiling routine: NOT-HERE-OBJECT-F
Compiling routine: NOT-HERE-PRINT
Compiling routine: STAIRS-F
Compiling routine: SAILOR-F
Compiling routine: GROUND-F
Compiling routine: GRUE-F
Compiling routine: ME-F
Compiling routine: PATH-OBJECT-F
Compiling routine: MIRROR-ROOM-F
Compiling routine: MIRROR-F
Compiling routine: CHIMNEY-F
Compiling routine: LIGHT-INT
Compiling routine: GLOBAL-IN?
Compiling routine: FIND-IN
Compiling routine: ACCESSIBLE?
Compiling routine: META-LOC
Compiling routine: HELD?
Compiling routine: OTHER-SIDE
Compiling routine: REMOVE-CAREFULLY
Compiling routine: NOW-DARK?
Compiling routine: STUPID-CONTAINER
Compiling routine: PEEK-UNDER
Compiling routine: FASTENED
Compiling routine: OPEN-CLOSE
Compiling routine: HACK-HACK
Compiling routine: THIEF-F
Compiling routine: I-THIEF
Compiling routine: DROP-JUNK
Compiling routine: STEAL-JUNK
Compiling routine: ROB
Compiling routine: LARGE-BAG-F
Compiling routine: THIEF-VS-ADVENTURER
Compiling routine: THIEF-ROBBED-AND-LEFT
Compiling routine: DEPOSIT-BOOTY
Compiling routine: ROB-MAZE
Compiling routine: HERO-BLOW
Compiling routine: KILL-VILLAIN
Compiling routine: I-FIGHT
Compiling routine: I-CURE
Compiling routine: WEST-OF-HOUSE-F
Compiling routine: MAILBOX-F
Compiling routine: LEAFLET-F
Compiling routine: INSIDE-THE-BARROW-F
Compiling routine: BEHIND-HOUSE-F
Compiling routine: DESCRIBE-WINDOW
Compiling routine: WHITE-HOUSE-F
Compiling routine: BOARD-F
Compiling routine: BOARDED-WINDOW-F
Compiling routine: NAILS-PSEUDO
Compiling routine: FOREST-F
Compiling routine: FOREST-PATH-F
Compiling routine: GRATING-EXIT
Compiling routine: UP-A-TREE-F
Compiling routine: NEST-F
Compiling routine: EGG-F
Compiling routine: LEAVES-F
Compiling routine: GRATING-APPEARS
Compiling routine: CANYON-VIEW-F
Compiling routine: CLIFF-F
Compiling routine: RAINBOW-F
Compiling routine: KITCHEN-WINDOW-F
Compiling routine: KITCHEN-F
Compiling routine: SANDWICH-BAG-F
Compiling routine: GARLIC-F
Compiling routine: BOTTLE-F
Compiling routine: WATER-F
Compiling routine: ROPE-F
Compiling routine: TRAP-DOOR-EXIT
Compiling routine: LIVING-ROOM-F
Compiling routine: COUNT-TREASURES
Compiling routine: TROPHY-CASE-F
Compiling routine: LAMP-F
Compiling routine: I-LANTERN
Compiling routine: WOODEN-DOOR-F
Compiling routine: RUG-F
Compiling routine: TRAP-DOOR-F
Compiling routine: CELLAR-F
Compiling routine: UP-CHIMNEY-F
Compiling routine: PAINT-PSEUDO
Compiling routine: PAINTING-F
Compiling routine: TROLL-ROOM-F
Compiling routine: TROLL-F
Compiling routine: RESERVOIR-SOUTH-F
Compiling routine: DAM-F
Compiling routine: MATCH-F
Compiling routine: I-MATCH
Compiling routine: BOLT-F
Compiling routine: BUBBLE-F
Compiling routine: DAM-OBJECT-F
Compiling routine: BUTTON-F
Compiling routine: INFLATABLE-BOAT-F
Compiling routine: INFLATED-BOAT-F
Compiling routine: MUST-BE-ON-GROUND
Compiling routine: WHITE-CLIFF-F
Compiling routine: DOME-ROOM-F
Compiling routine: DOME-PSEUDO
Compiling routine: TEMPLE-F
Compiling routine: TORCH-F
Compiling routine: BELL-F
Compiling routine: SCEPTRE-F
Compiling routine: ALTAR-F
Compiling routine: BLACK-BOOK-F
Compiling routine: CANDLES-F
Compiling routine: WINDY-CAVE-F
Compiling routine: I-CANDLES
Compiling routine: ENTRANCE-TO-HADES-F
Compiling routine: GATE-PSEUDO
Compiling routine: GHOSTS-F
Compiling routine: I-XB
Compiling routine: I-XC
Compiling routine: BODIES-F
Compiling routine: BUOY-F
Compiling routine: SAND-F
Compiling routine: ARAGAIN-FALLS-F
Compiling routine: RIVER-F
Compiling routine: I-RIVER
Compiling routine: GO-NEXT
Compiling routine: LKP
Compiling routine: RESERVOIR-F
Compiling routine: STREAM-PSEUDO
Compiling routine: LAKE-PSEUDO
Compiling routine: TRUNK-F
Compiling routine: RESERVOIR-NORTH-F
Compiling routine: SLIDE-F
Compiling routine: BAT-ROOM-F
Compiling routine: BAT-D
Compiling routine: BAT-F
Compiling routine: FLY-ME
Compiling routine: FWEEP
Compiling routine: BASKET-F
** Warning: Possible bad 1st arg to PERFORM: <COND (,BASKET-RAISED ,V?LOWER) (
T ,V?RAISE)>!
Compiling routine: CHAIN-PSEUDO
Compiling routine: GAS-ROOM-F
Compiling routine: GAS-PSEUDO
Compiling routine: LADDER-PSEUDO
Compiling routine: NO-OBJECT-ROOM-F
Compiling routine: MACHINE-ROOM-F
Compiling routine: MACHINE-F
Compiling routine: MACHINE-SWITCH-F
Compiling routine: SLAG-F
Compiling routine: BAG-OF-COINS-F
Compiling routine: RUSTY-KNIFE-F
Compiling routine: SKELETON-F
Compiling routine: GRATING-ROOM-F
Compiling routine: GRATE-F
Compiling routine: CYCLOPS-ROOM-F
Compiling routine: CYCLOPS-F
Compiling routine: D-CYCLOPS
Compiling routine: I-CYCLOPS
Compiling routine: THIEFS-LAIR-F
Compiling routine: CHALICE-F
Warnings: 1
** Note: OBJECT has no properties: LOCAL-GLOBALS
** Note: OBJECT has no properties: GLOBAL-OBJECTS
Vocabulary: 536
Prepositions: 18
ABOUT AROUND AWAY DOWN FROM OFF OUT TO UP
ACROSS AT BEHIND FOR IN ON OVER UNDER WITH
Real globals: 130
ABOVE-GROUND-ROOMS LOOK-AROUND P-OVTBL
AGAIN-DIR LOW-TIDE P-PRSI
AGAIN-LEXV LUCKY P-PRSO
ALREADY MAGIC-FLAG P-SLOCBITS
ALTAR-SCORE MATCH-COUNT P-SYNTAX
BASKET-RAISED MENTAL-COLLAPSE P-TABLE
BAT-DROPS MIRROR-MUNG P-VTBL
BDIGS NOTHING-HAPPENS P-WALK-DIR
BEACH-DIG NOTHING-TO-FILL-WITH P-WON
BEG-PARDON NOUN-MISSING P-XADJ
C-DEMONS OOPS-INBUF P-XADJN
C-INTS OOPS-TABLE P-XNAM
C-TABLE P-AADJ PERFORM-CEREMONY
CANDLE-TABLE P-ACLAUSE PERIOD-CR
CANDLES-ARE P-ACT PRSA
CANT-GO P-ADJ PRSI
CLOCK-WAIT P-ADJN PRSO
COFFIN-CURE P-ADVERB QUOTE-FLAG
CURE-COUNT P-ANAM RAINBOW-FLAG
CYCLOMAD P-AND REFERRING
CYCLOPS-FLAG P-BUTS RESERVE-LEXV
CYCLOPS-IS P-CCTBL RESERVE-PTR
CYCLOWRATH P-CONT RIVER-LAUNCH
DEAD P-DIR RIVER-NEXT
DEATHS P-END-ON-PREP RIVER-SPEEDS
DESC-OBJECT P-GETFLAGS RUG-MOVED
DISK-BASED P-GWIMBIT THERES-NOTHING
DOME-FLAG P-INBUF THIEF-HERE
DRAFTY-ROOM-SCORE P-IT-OBJECT THIEF-LEFT-DISGUSTED
EMPTY-HANDED P-ITBL THIEF-MELEE
FAILED P-LEN TOO-DARK
FORMERLY-A-LAKE P-LEXV TROLL-FLAG
GATE-FLAG P-MATCHLEN TROLL-MELEE
GOOD-TRICK P-MERGE VERBOSITY
GRATE-REVEALED P-MERGED WATER-EVAPORATES
GRUNLOCK P-MULT WINNER
GUE-NAME P-NAM WON-FLAG
HADES-FLAG P-NCN XB
HO-HUM P-NOT-HERE XC
HS P-NUMBER YNH
INDENTS P-OCLAUSE YOU-CANT
INTEGRAL-PART P-OFLAG YUKS
LAMP-TABLE P-ONEOBJ
LIT P-OTBL
Objects: 179
ADVENTURER DRAFTY-ROOM MACHINE-ROOM RUSTY-KNIFE
ALTAR EGG MACHINE-SWITCH SAILOR
ALTAR-OBJECT EGYPTIAN-ROOM MAILBOX SAND
ARAGAIN-FALLS EMERALD MAINTENANCE-ROOM SANDWICH-BAG
ATTIC END-OF-RAINBOW MAP SANDY-BEACH
AXE ENTRANCE-TO-HADES MATCH SANDY-CAVE
BAG-OF-COINS FOREST MAZE-1 SCARAB
BASKET FOREST-EDGE MAZE-10 SCEPTRE
BAT FOREST-NORTH MAZE-2 SCREWDRIVER
BAT-ROOM FOREST-PATH MAZE-3 SHAFT-ROOM
BEHIND-HOUSE FOREST-SOUTH MAZE-4 SHOVEL
BELL FRONT-DOOR MAZE-5 SKELETON
BLACK-BOOK GARLIC MAZE-6 SKULL
BOARD GAS-ROOM MAZE-7 SLAG
BOARDED-WINDOW GHOSTS MAZE-8 SLIDE
BOAT-LABEL GLOBAL-OBJECTS MAZE-9 SLIDE-ROOM
BODIES GLOBAL-WATER ME SOUTH-OF-HOUSE
BOLT GRATE MINE-ENTRANCE STAIRS
BOTTLE GRATING-ROOM MIRROR STILETTO
BRACELET GROUND MIRROR-ROOM-NORTH STUDIO
BROWN-BUTTON GRUE MIRROR-ROOM-SOUTH SWORD
BUBBLE GUIDE NEST TEMPLE
BUOY HADES NORTH-OF-HOUSE THIEF
BURNED-OUT-LANTERN HANDS NOT-HERE-OBJECT THIEFS-LAIR
CANDLES INFLATABLE-BOAT PAINTING TORCH
CANYON-BOTTOM INFLATED-BOAT PATH-OBJECT TRAP-DOOR
CANYON-VIEW INSIDE-THE-BARROW PEDESTAL TREE
CELLAR INTNUM POT-OF-GOLD TROLL
CHALICE IT PRAYER TROLL-ROOM
CHIMNEY JADE PSEUDO-OBJECT TROPHY-CASE
CLIMBABLE-CLIFF KEYS PUMP TRUNK
COAL KITCHEN RAILING TWISTING-PASSAGE
COAL-MINE-1 KITCHEN-TABLE RAINBOW UP-A-TREE
COAL-MINE-2 KITCHEN-WINDOW RED-BUTTON WALL
COAL-MINE-3 KNIFE RESERVOIR WATER
COFFIN LADDER-ROOM RESERVOIR-NORTH WEST-OF-HOUSE
CONTROL-PANEL LAMP RESERVOIR-SOUTH WHITE-CLIFF
CYCLOPS LARGE-BAG RIVER WHITE-CLIFFS-BEACH
CYCLOPS-ROOM LEAFLET RIVER-1 WHITE-HOUSE
DAM LEAVES RIVER-2 WINDING-PASSAGE
DAM-BASE LIVING-ROOM RIVER-3 WINDY-CAVE
DAM-OBJECT LOCAL-GLOBALS ROOMS WOODEN-DOOR
DIAMOND LUNCH ROPE WRENCH
DOME-ROOM LUNGS ROUND-ROOM YELLOW-BUTTON
DRAFTY-CAVE MACHINE RUG
Properties: 26
P?ACTION P?EAST P?LDESC P?PSEUDO P?SW P?WEST
P?ADJECTIVE P?FDESC P?NE P?SE P?SYNONYM
P?CAPACITY P?GLOBAL P?NORTH P?SIZE P?TEXT
P?DESCFCN P?IN P?NW P?SOUTH P?UP
P?DOWN P?LAND P?OUT P?STRENGTH P?VALUE
Flags: 30
ACTORBIT DRINKBIT MAZEBIT READBIT SURFACEBIT TREASUREBIT
BURNBIT FLAMEBIT NDESCBIT RLANDBIT TAKEBIT TRYTAKEBIT
CLIMBBIT FOODBIT NONLANDBIT RMUNGBIT TOOLBIT TURNBIT
CONTBIT INVISIBLE ONBIT SACREDBIT TOUCHBIT VEHBIT
DOORBIT LIGHTBIT OPENBIT SEARCHBIT TRANSBIT WEAPONBIT

1
mini.serial Normal file
View file

@ -0,0 +1 @@
1

35
mini.zil Normal file
View file

@ -0,0 +1,35 @@
"ZORK1 for
Mini-Zork '87
(c) Copyright 1987 Infocom, Inc. All Rights Reserved"
<VERSION ZIP>
<SET REDEFINE T>
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<PRINC "Mini-Zork '87
">
<COND (<GASSIGNED? PREDGEN>
<ID 0>)>
<SETG COMPACT-SYNTAXES? T>
<FREQUENT-WORDS?>
<INSERT-FILE "MISC" T>
<INSERT-FILE "PARSER" T>
<INSERT-FILE "SYNTAX" T>
<INSERT-FILE "VERBS" T>
<INSERT-FILE "GLOBALS" T>
<INSERT-FILE "THIEF" T>
<INSERT-FILE "ABOVE-GROUND" T>
<INSERT-FILE "SOUTH-OF-RES" T>
<INSERT-FILE "NORTH-OF-RES" T>
<INSERT-FILE "MAZE" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>
<PROPDEF VALUE 0>

BIN
mini.zip Normal file

Binary file not shown.

200
minifreq.xzap Normal file
View file

@ -0,0 +1,200 @@
.FSTR FSTR?1,"the " ;736 369
.FSTR FSTR?2,"The " ;624 209
.FSTR FSTR?3,"You " ;294 99
.FSTR FSTR?4,", " ;240 241
.FSTR FSTR?5,"your " ;210 71
.FSTR FSTR?6,"is " ;208 209
.FSTR FSTR?7,"and " ;192 97
.FSTR FSTR?8,"There " ;165 34
.FSTR FSTR?9,"you " ;156 79
.FSTR FSTR?10,"of " ;150 151
.FSTR FSTR?11,". " ;150 151
.FSTR FSTR?12,"with " ;150 51
.FSTR FSTR?13,"to " ;135 136
.FSTR FSTR?14,"are " ;120 61
.FSTR FSTR?15,"large " ;108 28
.FSTR FSTR?16,"This " ;108 28
.FSTR FSTR?17,"cyclops " ;90 16
.FSTR FSTR?18,"that " ;87 30
.FSTR FSTR?19,"from " ;87 30
.FSTR FSTR?20,"have " ;81 28
.FSTR FSTR?21,"through " ;78 14
.FSTR FSTR?22,"here" ;76 39
.FSTR FSTR?23,"in " ;73 74
.FSTR FSTR?24,"It's " ;70 15
.FSTR FSTR?25,"which " ;68 18
.FSTR FSTR?26,"small " ;60 16
.FSTR FSTR?27,"room " ;54 19
.FSTR FSTR?28,"closed" ;52 14
.FSTR FSTR?29,"A " ;50 51
.FSTR FSTR?30,"can't " ;50 11
.FSTR FSTR?31,"You're " ;49 8
.FSTR FSTR?32,"into " ;48 17
.FSTR FSTR?33,"Room" ;48 17
.FSTR FSTR?34,"Your " ;48 13
.FSTR FSTR?35,"grating " ;48 9
.FSTR FSTR?36,"already " ;48 9
.FSTR FSTR?37,"Frigid " ;48 9
.FSTR FSTR?38,"isn't " ;45 10
.FSTR FSTR?39,"It " ;44 23
.FSTR FSTR?40,"thief " ;44 12
.FSTR FSTR?41,"be " ;43 44
.FSTR FSTR?42,"that" ;42 22
.FSTR FSTR?43,"for " ;40 21
.FSTR FSTR?44,"water " ;40 11
.FSTR FSTR?45,"leads " ;40 11
.FSTR FSTR?46,"won't " ;40 9
.FSTR FSTR?47,"narrow " ;40 9
.FSTR FSTR?48,"cannot " ;40 9
.FSTR FSTR?49,"but " ;38 20
.FSTR FSTR?50,"not " ;36 19
.FSTR FSTR?51,"this " ;36 13
.FSTR FSTR?52,"south " ;36 10
.FSTR FSTR?53,"seems " ;36 10
.FSTR FSTR?54,"ground" ;36 10
.FSTR FSTR?55,"about " ;36 10
.FSTR FSTR?56,"passage " ;36 7
.FSTR FSTR?57,"appears " ;36 7
.FSTR FSTR?58,"don't " ;35 8
.FSTR FSTR?59,"southwest" ;35 6
.FSTR FSTR?60,"on " ;33 34
.FSTR FSTR?61,"west " ;33 12
.FSTR FSTR?62,"north " ;32 9
.FSTR FSTR?63,"There's " ;32 5
.FSTR FSTR?64,"his " ;30 16
.FSTR FSTR?65,"feet " ;30 11
.FSTR FSTR?66,"east " ;30 11
.FSTR FSTR?67,"door " ;30 11
.FSTR FSTR?68,"cyclops" ;30 7
.FSTR FSTR?69,"can " ;28 15
.FSTR FSTR?70,"white " ;28 8
.FSTR FSTR?71,"That " ;28 8
.FSTR FSTR?72,"probably " ;28 5
.FSTR FSTR?73,"Maze" ;27 10
.FSTR FSTR?74,"an " ;26 27
.FSTR FSTR?75,"too " ;26 14
.FSTR FSTR?76,"has " ;26 14
.FSTR FSTR?77,"wooden " ;25 6
.FSTR FSTR?78,"In " ;24 13
.FSTR FSTR?79,"south" ;24 9
.FSTR FSTR?80,"north" ;24 9
.FSTR FSTR?81,"How " ;24 9
.FSTR FSTR?82,"would " ;24 7
.FSTR FSTR?83,"With " ;24 7
.FSTR FSTR?84,"sentence" ;24 5
.FSTR FSTR?85,"rainbow " ;24 5
.FSTR FSTR?86,"lurking " ;24 5
.FSTR FSTR?87,"looking " ;24 5
.FSTR FSTR?88,"leading " ;24 5
.FSTR FSTR?89,"darkness" ;24 5
.FSTR FSTR?90,"candles " ;24 5
.FSTR FSTR?91,"against " ;24 5
.FSTR FSTR?92,"treasures " ;24 4
.FSTR FSTR?93,"staircase " ;24 4
.FSTR FSTR?94,"northeast " ;24 4
.FSTR FSTR?95,"one " ;22 12
.FSTR FSTR?96,"now " ;22 12
;word frequency table of 96 most common words
WORDS:: .TABLE
FSTR?1
FSTR?2
FSTR?3
FSTR?4
FSTR?5
FSTR?6
FSTR?7
FSTR?8
FSTR?9
FSTR?10
FSTR?11
FSTR?12
FSTR?13
FSTR?14
FSTR?15
FSTR?16
FSTR?17
FSTR?18
FSTR?19
FSTR?20
FSTR?21
FSTR?22
FSTR?23
FSTR?24
FSTR?25
FSTR?26
FSTR?27
FSTR?28
FSTR?29
FSTR?30
FSTR?31
FSTR?32
FSTR?33
FSTR?34
FSTR?35
FSTR?36
FSTR?37
FSTR?38
FSTR?39
FSTR?40
FSTR?41
FSTR?42
FSTR?43
FSTR?44
FSTR?45
FSTR?46
FSTR?47
FSTR?48
FSTR?49
FSTR?50
FSTR?51
FSTR?52
FSTR?53
FSTR?54
FSTR?55
FSTR?56
FSTR?57
FSTR?58
FSTR?59
FSTR?60
FSTR?61
FSTR?62
FSTR?63
FSTR?64
FSTR?65
FSTR?66
FSTR?67
FSTR?68
FSTR?69
FSTR?70
FSTR?71
FSTR?72
FSTR?73
FSTR?74
FSTR?75
FSTR?76
FSTR?77
FSTR?78
FSTR?79
FSTR?80
FSTR?81
FSTR?82
FSTR?83
FSTR?84
FSTR?85
FSTR?86
FSTR?87
FSTR?88
FSTR?89
FSTR?90
FSTR?91
FSTR?92
FSTR?93
FSTR?94
FSTR?95
FSTR?96
.ENDT
.ENDI

510
misc.zil Normal file
View file

@ -0,0 +1,510 @@
"MISC for
Mini-Zork '87
(c) Copyright 1987 Infocom, Inc. All Rights Reserved"
<SETG C-ENABLED? 0>
<SETG C-ENABLED 1>
<SETG C-DISABLED 0>
<DEFMAC TELL ("ARGS" A)
<FORM PROG ()
!<MAPF ,LIST
<FUNCTION ("AUX" E P O)
<COND (<EMPTY? .A> <MAPSTOP>)
(<SET E <NTH .A 1>>
<SET A <REST .A>>)>
<COND (<TYPE? .E ATOM>
<COND (<OR <=? <SET P <SPNAME .E>>
"CRLF">
<=? .P "CR">>
<MAPRET '<CRLF>>)
(<EMPTY? .A>
<ERROR INDICATOR-AT-END? .E>)
(ELSE
<SET O <NTH .A 1>>
<SET A <REST .A>>
<COND (<OR <=? <SET P <SPNAME .E>>
"DESC">
<=? .P "D">
<=? .P "OBJ">
<=? .P "O">>
<MAPRET <FORM PRINTD .O>>)
(<OR <=? .P "A">
<=? .P "AN">>
<MAPRET <FORM PRINTA .O>>)
(<OR <=? .P "NUM">
<=? .P "N">>
<MAPRET <FORM PRINTN .O>>)
(<OR <=? .P "CHAR">
<=? .P "CHR">
<=? .P "C">>
<MAPRET <FORM PRINTC .O>>)
(ELSE
<MAPRET
<FORM PRINT
<FORM GETP .O .E>>>)>)>)
(<TYPE? .E STRING ZSTRING>
<MAPRET <FORM PRINTI .E>>)
(<TYPE? .E FORM LVAL GVAL>
<MAPRET <FORM PRINT .E>>)
(ELSE <ERROR UNKNOWN-TYPE .E>)>>>>>
;<ROUTINE PRINTA (O)
<TELL "a " D .O>>
<DEFMAC VERB? ("ARGS" ATMS)
<MULTIFROB PRSA .ATMS>>
<DEFMAC PRSO? ("ARGS" ATMS)
<MULTIFROB PRSO .ATMS>>
<DEFMAC PRSI? ("ARGS" ATMS)
<MULTIFROB PRSI .ATMS>>
<DEFMAC ROOM? ("ARGS" ATMS)
<MULTIFROB HERE .ATMS>>
<DEFINE MULTIFROB (X ATMS "AUX" (OO (OR)) (O .OO) (L ()) ATM)
<REPEAT ()
<COND (<EMPTY? .ATMS>
<RETURN!- <COND (<LENGTH? .OO 1> <ERROR .X>)
(<LENGTH? .OO 2> <NTH .OO 2>)
(ELSE <CHTYPE .OO FORM>)>>)>
<REPEAT ()
<COND (<EMPTY? .ATMS> <RETURN!->)>
<SET ATM <NTH .ATMS 1>>
<SET L
(<COND (<TYPE? .ATM ATOM>
<FORM GVAL
<COND (<==? .X PRSA>
<PARSE
<STRING "V?"
<SPNAME .ATM>>>)
(ELSE .ATM)>>)
(ELSE .ATM)>
!.L)>
<SET ATMS <REST .ATMS>>
<COND (<==? <LENGTH .L> 3> <RETURN!->)>>
<SET O <REST <PUTREST .O (<FORM EQUAL? <FORM GVAL .X> !.L>)>>>
<SET L ()>>>
<DEFMAC BSET ('OBJ "ARGS" BITS)
<MULTIBITS FSET .OBJ .BITS>>
<DEFMAC BCLEAR ('OBJ "ARGS" BITS)
<MULTIBITS FCLEAR .OBJ .BITS>>
<DEFMAC BSET? ('OBJ "ARGS" BITS)
<MULTIBITS FSET? .OBJ .BITS>>
<DEFINE MULTIBITS (X OBJ ATMS "AUX" (O ()) ATM)
<REPEAT ()
<COND (<EMPTY? .ATMS>
<RETURN!- <COND (<LENGTH? .O 1> <NTH .O 1>)
(<==? .X FSET?> <FORM OR !.O>)
(ELSE <FORM PROG () !.O>)>>)>
<SET ATM <NTH .ATMS 1>>
<SET ATMS <REST .ATMS>>
<SET O
(<FORM .X
.OBJ
<COND (<TYPE? .ATM FORM> .ATM)
(ELSE <FORM GVAL .ATM>)>>
!.O)>>>
<DEFMAC RFATAL ()
'<PROG () <PUSH 2> <RSTACK>>>
<DEFMAC PROB ('BASE? "OPTIONAL" 'LOSER?)
<COND (<ASSIGNED? LOSER?> <FORM ZPROB .BASE?>)
(ELSE <FORM G? .BASE? '<RANDOM 100>>)>>
<ROUTINE ZPROB
(BASE)
<COND (,LUCKY <G? .BASE <RANDOM 100>>)
(ELSE <G? .BASE <RANDOM 300>>)>>
<ROUTINE PICK-ONE (FROB
"AUX" (L <GET .FROB 0>) (CNT <GET .FROB 1>) RND MSG RFROB)
<SET L <- .L 1>>
<SET FROB <REST .FROB 2>>
<SET RFROB <REST .FROB <* .CNT 2>>>
<SET RND <RANDOM <- .L .CNT>>>
<SET MSG <GET .RFROB .RND>>
<PUT .RFROB .RND <GET .RFROB 1>>
<PUT .RFROB 1 .MSG>
<SET CNT <+ .CNT 1>>
<COND (<==? .CNT .L> <SET CNT 0>)>
<PUT .FROB 0 .CNT>
.MSG>
<DEFMAC ENABLE ('INT) <FORM PUT .INT ,C-ENABLED? 1>>
<DEFMAC DISABLE ('INT) <FORM PUT .INT ,C-ENABLED? 0>>
<DEFMAC FLAMING? ('OBJ)
<FORM AND <FORM FSET? .OBJ ',FLAMEBIT>
<FORM FSET? .OBJ ',ONBIT>>>
<DEFMAC OPENABLE? ('OBJ)
<FORM OR <FORM FSET? .OBJ ',DOORBIT>
<FORM FSET? .OBJ ',CONTBIT>>>
<DEFMAC ABS ('NUM)
<FORM COND (<FORM L? .NUM 0> <FORM - 0 .NUM>)
(T .NUM)>>
\
; "taa 11/7/87 Macro to return number of objects needed by syntax
in compact format"
<DEFMAC P-SONUMS ('SYN)
<FORM / <FORM GETB .SYN ',P-SPREP1> 64>>
\
;"former MAIN stuff"
<CONSTANT SERIAL 0>
<GLOBAL P-WON <>>
<CONSTANT M-FATAL 2>
<CONSTANT M-HANDLED 1>
<CONSTANT M-NOT-HANDLED <>>
<CONSTANT M-OBJECT <>>
<CONSTANT M-BEG 1>
<CONSTANT M-ENTER 2>
<CONSTANT M-LOOK 3>
<CONSTANT M-OBJDESC 5>
<CONSTANT M-END 6>
<ROUTINE GO ()
<ENABLE <QUEUE I-THIEF -1>>
<QUEUE I-CANDLES 40>
<QUEUE I-LANTERN 150>
<SETG HERE ,WEST-OF-HOUSE>
<SETG P-IT-OBJECT ,MAILBOX>
<SETG LIT T>
<SETG WINNER ,ADVENTURER>
<MOVE ,WINNER ,HERE>
<V-VERSION>
<CRLF>
<V-LOOK>
<MAIN-LOOP>
<AGAIN>>
<ROUTINE MAIN-LOOP ("AUX" TRASH)
<REPEAT ()
<SET TRASH <MAIN-LOOP-1>>>>
<ROUTINE MAIN-LOOP-1 ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP O I)
<SET CNT 0>
<SET OBJ <>>
<SET PTBL T>
<COND (<SETG P-WON <PARSER>>
<SET ICNT <GET ,P-PRSI ,P-MATCHLEN>>
<SET OCNT <GET ,P-PRSO ,P-MATCHLEN>>
<COND (<AND ,P-IT-OBJECT <ACCESSIBLE? ,P-IT-OBJECT>>
<SET TMP <>>
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .ICNT>
<RETURN>)
(T
<COND (<EQUAL? <GET ,P-PRSI .CNT> ,IT>
<PUT ,P-PRSI .CNT ,P-IT-OBJECT>
<SET TMP T>
<RETURN>)>)>>
<COND (<NOT .TMP>
<SET CNT 0>
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .OCNT>
<RETURN>)
(T
<COND (<EQUAL? <GET ,P-PRSO .CNT> ,IT>
<PUT ,P-PRSO .CNT ,P-IT-OBJECT>
<RETURN>)>)>>)>
<SET CNT 0>)>
<SET NUM
<COND (<0? .OCNT> .OCNT)
(<G? .OCNT 1>
<SET TBL ,P-PRSO>
<COND (<0? .ICNT> <SET OBJ <>>)
(T <SET OBJ <GET ,P-PRSI 1>>)>
.OCNT)
(<G? .ICNT 1>
<SET PTBL <>>
<SET TBL ,P-PRSI>
<SET OBJ <GET ,P-PRSO 1>>
.ICNT)
(T 1)>>
<COND (<AND <NOT .OBJ> <1? .ICNT>> <SET OBJ <GET ,P-PRSI 1>>)>
<COND (<AND <==? ,PRSA ,V?WALK>
<NOT <ZERO? ,P-WALK-DIR>>>
<SET V <PERFORM ,PRSA ,PRSO>>)
(<0? .NUM>
<COND (<0? <P-SONUMS ,P-SYNTAX>
;<BAND <GETB ,P-SYNTAX ,P-SBITS> ,P-SONUMS>>
<SET V <PERFORM ,PRSA>>
<SETG PRSO <>>)
(<NOT ,LIT>
<TELL ,TOO-DARK>)
(T
<TELL ,REFERRING>
<SET V <>>)>)
(T
<SETG P-NOT-HERE 0>
<SETG P-MULT <>>
<COND (<G? .NUM 1> <SETG P-MULT T>)>
<SET TMP <>>
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .NUM>
<COND (<G? ,P-NOT-HERE 0>
<TELL "The ">
<COND (<NOT <EQUAL? ,P-NOT-HERE .NUM>>
<TELL "other ">)>
<TELL "object">
<COND (<NOT <EQUAL? ,P-NOT-HERE 1>>
<TELL "s">)>
<TELL " that you mentioned ">
<COND (<NOT <EQUAL? ,P-NOT-HERE 1>>
<TELL "are">)
(T <TELL "is">)>
<TELL "n't here." CR>)
(<NOT .TMP>
<TELL
,THERES-NOTHING "here you can take." CR>)>
<RETURN>)
(T
<COND (.PTBL <SET OBJ1 <GET ,P-PRSO .CNT>>)
(T <SET OBJ1 <GET ,P-PRSI .CNT>>)>
<SET O <COND (.PTBL .OBJ1) (T .OBJ)>>
<SET I <COND (.PTBL .OBJ) (T .OBJ1)>>
;"multiple exceptions"
<COND (<OR <G? .NUM 1>
<EQUAL? <GET <GET ,P-ITBL ,P-NC1> 0> ,W?ALL>>
<SET V <LOC ,WINNER>>
<COND (<EQUAL? .O ,NOT-HERE-OBJECT>
<SETG P-NOT-HERE <+ ,P-NOT-HERE 1>>
<AGAIN>)
(<AND <VERB? TAKE>
.I
<EQUAL? <GET <GET ,P-ITBL ,P-NC1> 0> ,W?ALL>
<NOT <IN? .O .I>>>
<AGAIN>)
(<AND <EQUAL? ,P-GETFLAGS ,P-ALL>
<VERB? TAKE>
<OR <AND <NOT <EQUAL? <LOC .O> ,WINNER ,HERE .V>>
<NOT <EQUAL? <LOC .O> .I>>
<NOT <FSET? <LOC .O> ,SURFACEBIT>>>
<NOT <OR <FSET? .O ,TAKEBIT>
<FSET? .O ,TRYTAKEBIT>>>>>
<AGAIN>)
(ELSE
<COND (<EQUAL? .OBJ1 ,IT>
<PRINTD ,P-IT-OBJECT>)
(T <PRINTD .OBJ1>)>
<TELL ": ">)>)>
;"end multiple exceptions"
<SETG PRSO .O>
<SETG PRSI .I>
<SET TMP T>
<SET V <PERFORM ,PRSA ,PRSO ,PRSI>>
<COND (<==? .V ,M-FATAL> <RETURN>)>)>>)>
<COND (<NOT <==? .V ,M-FATAL>>
;<COND (<==? <LOC ,WINNER> ,PRSO>
<SETG PRSO <>>)>
<SET V <APPLY <GETP <LOC ,WINNER> ,P?ACTION> ,M-END>>)>
;<COND (<VERB? ;AGAIN ;"WALK -- why was this here?"
SAVE RESTORE ;SCORE ;VERSION ;WAIT> T)
(T
<SETG L-PRSA ,PRSA>
<SETG L-PRSO ,PRSO>
<SETG L-PRSI ,PRSI>)>
<COND (<==? .V ,M-FATAL> <SETG P-CONT <>>)>)
(T
<SETG P-CONT <>>)>
<COND (,P-WON
<COND (<VERB? TELL BRIEF SUPER-BRIEF VERBOSE SAVE VERSION
QUIT RESTART SCORE SCRIPT UNSCRIPT RESTORE> T)
(T <SET V <CLOCKER>>)>)>>
<GLOBAL P-MULT <>>
<GLOBAL P-NOT-HERE 0>
\
%<COND (<GASSIGNED? PREDGEN>
'<ROUTINE PERFORM (A "OPTIONAL" (O <>) (I <>) "AUX" V OA OO OI)
;<COND (,DEBUG
<TELL "[Perform: ">
%<COND (<GASSIGNED? PREDGEN> '<TELL N .A>)
(T '<PRINC <NTH ,ACTIONS <+ <* .A 2> 1>>>)>
<COND (<AND .O <NOT <==? .A ,V?WALK>>>
<TELL "/" D .O>)>
<COND (.I <TELL "/" D .I>)>
<TELL "]" CR>)>
<SET OA ,PRSA>
<SET OO ,PRSO>
<SET OI ,PRSI>
<COND (<AND <EQUAL? ,IT .I .O>
<NOT <ACCESSIBLE? ,P-IT-OBJECT>>>
<TELL ,REFERRING>
<RFATAL>)>
<COND (<==? .O ,IT> <SET O ,P-IT-OBJECT>)>
<COND (<==? .I ,IT> <SET I ,P-IT-OBJECT>)>
<SETG PRSA .A>
<SETG PRSO .O>
<COND (<AND ,PRSO <NOT <EQUAL? ,PRSI ,IT>> <NOT <VERB? WALK>>>
<SETG P-IT-OBJECT ,PRSO>)>
<SETG PRSI .I>
<COND (<AND <EQUAL? ,NOT-HERE-OBJECT ,PRSO ,PRSI>
<SET V <NOT-HERE-OBJECT-F>>> .V)
(T
<SET O ,PRSO>
<SET I ,PRSI>
<COND
(<SET V <APPLY <GETP ,WINNER ,P?ACTION>>> .V)
(<SET V <APPLY <GETP <LOC ,WINNER> ,P?ACTION> ,M-BEG>> .V)
(<SET V <APPLY <GET ,PREACTIONS .A>>> .V)
(<AND .I <SET V <APPLY <GETP .I ,P?ACTION>>>> .V)
(<AND .O
<NOT <==? .A ,V?WALK>>
<SET V <APPLY <GETP .O ,P?ACTION>>>>
.V)
(<SET V <APPLY <GET ,ACTIONS .A>>> .V)>)>
<SETG PRSA .OA>
<SETG PRSO .OO>
<SETG PRSI .OI>
.V>)
(T
'<PROG ()
<SETG DEBUG <>>
<ROUTINE PERFORM (A "OPTIONAL" (O <>) (I <>) "AUX" V OA OO OI)
<COND (,DEBUG
<TELL "** PERFORM: PRSA = ">
<PRINC <NTH ,ACTIONS <+ <* .A 2> 1>>>
<COND (<AND .O <NOT <==? .A ,V?WALK>>>
<TELL " | PRSO = " D .O>)>
<COND (.I <TELL " | PRSI = " D .I>)>)>
<SET OA ,PRSA>
<SET OO ,PRSO>
<SET OI ,PRSI>
<COND (<AND <EQUAL? ,IT .I .O>
<OR <NOT ,P-IT-OBJECT>
<NOT <ACCESSIBLE? ,P-IT-OBJECT>>>>
<TELL ,REFERRING>
<RFATAL>)>
<COND (<==? .O ,IT> <SET O ,P-IT-OBJECT>)>
<COND (<==? .I ,IT> <SET I ,P-IT-OBJECT>)>
<SETG PRSA .A>
<SETG PRSO .O>
<COND (<AND ,PRSO <NOT <VERB? WALK>>>
<SETG P-IT-OBJECT ,PRSO>)>
<SETG PRSI .I>
<COND (<AND <EQUAL? ,NOT-HERE-OBJECT ,PRSO ,PRSI>
<SET V <D-APPLY "Not Here" ,NOT-HERE-OBJECT-F>>> .V)
(T
<SET O ,PRSO>
<SET I ,PRSI>
<COND (<SET V <DD-APPLY "Actor" ,WINNER
<GETP ,WINNER ,P?ACTION>>> .V)
(<SET V <D-APPLY "Room (M-BEG)"
<GETP <LOC ,WINNER> ,P?ACTION>
,M-BEG>> .V)
(<SET V <D-APPLY "Preaction"
<GET ,PREACTIONS .A>>> .V)
(<AND .I <SET V <D-APPLY "PRSI"
<GETP .I ,P?ACTION>>>> .V)
(<AND .O
<NOT <==? .A ,V?WALK>>
<SET V <D-APPLY "PRSO"
<GETP .O ,P?ACTION>>>>
.V)
(<SET V <D-APPLY <>
<GET ,ACTIONS .A>>> .V)>)>
<SETG PRSA .OA>
<SETG PRSO .OO>
<SETG PRSI .OI>
.V>
<DEFINE D-APPLY (STR FCN "OPTIONAL" FOO "AUX" RES)
<COND (<NOT .FCN> <>)
(T
<COND (,DEBUG
<COND (<NOT .STR>
<TELL CR " Default ->" CR>)
(T <TELL CR " " .STR " -> ">)>)>
<SET RES
<COND (<ASSIGNED? FOO>
<APPLY .FCN .FOO>)
(T <APPLY .FCN>)>>
<COND (<AND ,DEBUG .STR>
<COND (<==? .RES 2>
<TELL "Fatal" CR>)
(<NOT .RES>
<TELL "Not handled">)
(T <TELL "Handled" CR>)>)>
.RES)>>
<ROUTINE DD-APPLY (STR OBJ FCN "OPTIONAL" (FOO <>))
<COND (,DEBUG <TELL "[" D .OBJ "=]">)>
<D-APPLY .STR .FCN .FOO>>
>)>
\
;"former CLOCKER stuff"
<CONSTANT C-TABLELEN 180>
<GLOBAL C-TABLE <ITABLE NONE 180>>
<GLOBAL C-DEMONS 180>
<GLOBAL C-INTS 180>
<CONSTANT C-INTLEN 6>
<CONSTANT C-ENABLED? 0>
<CONSTANT C-TICK 1>
<CONSTANT C-RTN 2>
<ROUTINE QUEUE (RTN TICK "AUX" CINT)
<PUT <SET CINT <INT .RTN>> ,C-TICK .TICK>
.CINT>
<ROUTINE INT (RTN "OPTIONAL" (DEMON <>) E C INT)
<SET E <REST ,C-TABLE ,C-TABLELEN>>
<SET C <REST ,C-TABLE ,C-INTS>>
<REPEAT ()
<COND (<==? .C .E>
<SETG C-INTS <- ,C-INTS ,C-INTLEN>>
<AND .DEMON <SETG C-DEMONS <- ,C-DEMONS ,C-INTLEN>>>
<SET INT <REST ,C-TABLE ,C-INTS>>
<PUT .INT ,C-RTN .RTN>
<RETURN .INT>)
(<EQUAL? <GET .C ,C-RTN> .RTN> <RETURN .C>)>
<SET C <REST .C ,C-INTLEN>>>>
<GLOBAL CLOCK-WAIT <>>
<ROUTINE CLOCKER ("AUX" C E TICK (FLG <>))
<COND (,CLOCK-WAIT <SETG CLOCK-WAIT <>> <RFALSE>)>
<SET C <REST ,C-TABLE <COND (,P-WON ,C-INTS) (T ,C-DEMONS)>>>
<SET E <REST ,C-TABLE ,C-TABLELEN>>
<REPEAT ()
<COND (<==? .C .E>
<SETG MOVES <+ ,MOVES 1>>
<RETURN .FLG>)
(<NOT <0? <GET .C ,C-ENABLED?>>>
<SET TICK <GET .C ,C-TICK>>
<COND (<0? .TICK>)
(T
<PUT .C ,C-TICK <- .TICK 1>>
<COND (<AND <NOT <G? .TICK 1>>
<APPLY <GET .C ,C-RTN>>>
<SET FLG T>)>)>)>
<SET C <REST .C ,C-INTLEN>>>>

512
north-of-res.zil Normal file
View file

@ -0,0 +1,512 @@
"NORTH-OF-RESERVOIR for
Mini-Zork '87
(c) Copyright 1987 Infocom, Inc. All Rights Reserved"
<ROOM RESERVOIR
(IN ROOMS)
(DESC "Reservoir")
(NORTH TO RESERVOIR-NORTH)
(SOUTH TO RESERVOIR-SOUTH)
(DOWN "The dam blocks your way.")
(EAST "The dam blocks your way.")
(FLAGS NONLANDBIT)
(PSEUDO "STREAM" STREAM-PSEUDO)
(GLOBAL GLOBAL-WATER DAM-OBJECT)
(ACTION RESERVOIR-F)>
<ROUTINE RESERVOIR-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<COND (,LOW-TIDE
<TELL
"You are on what used to be a large lake, but which is now a large
mud pile. There are \"shores\" to the north and south.">)
(T
<TELL
"You are on the lake with beaches to the north and south and
a dam to the east.">)>)>>
<ROUTINE STREAM-PSEUDO ()
<COND (<VERB? SWIM THROUGH>
<PERFORM ,V?BOARD ,WATER>
<RTRUE>)
(<VERB? CROSS>
<V-WALK-AROUND>)>>
<ROUTINE LAKE-PSEUDO ()
<COND (,LOW-TIDE
<TELL "The lake's gone..." CR>)
(<VERB? CROSS THROUGH>
<PERFORM ,V?BOARD ,WATER>
<RTRUE>)>>
<OBJECT TRUNK
(IN RESERVOIR)
(DESC "trunk of jewels")
(FDESC "Half-buried in the mud is an old trunk, bulging with jewels.")
(LDESC "There is an old trunk here, bulging with assorted jewels.")
(SYNONYM TRUNK CHEST JEWELS TREASURE)
(ADJECTIVE OLD)
(FLAGS TREASUREBIT TAKEBIT INVISIBLE)
(SIZE 35)
(VALUE 15)
(ACTION TRUNK-F)>
<ROUTINE TRUNK-F ()
<STUPID-CONTAINER ,TRUNK "jewels">>
<ROOM RESERVOIR-NORTH
(IN ROOMS)
(DESC "Reservoir North")
(UP TO DRAFTY-CAVE)
(NORTH TO DRAFTY-CAVE)
(SOUTH TO RESERVOIR IF LOW-TIDE ELSE "You would drown.")
(FLAGS RLANDBIT)
(GLOBAL GLOBAL-WATER STAIRS)
(PSEUDO "LAKE" LAKE-PSEUDO)
(ACTION RESERVOIR-NORTH-F)>
<ROUTINE RESERVOIR-NORTH-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL "You are in cavern to the north of ">
<COND (,LOW-TIDE
<TELL ,FORMERLY-A-LAKE>)
(T
<TELL "a large lake">)>
<TELL ". A slimy stairway climbs to the north.">)>>
<OBJECT PUMP
(IN RESERVOIR-NORTH)
(SYNONYM PUMP AIR-PUMP)
(ADJECTIVE HAND-HELD AIR)
(DESC "hand-held air pump")
(FLAGS TAKEBIT TOOLBIT)>
<ROOM DRAFTY-CAVE
(IN ROOMS)
(DESC "Drafty Cave")
(LDESC
"This is a tiny cave with entrances west and north, and a dark, forbidding
staircase leading down.")
(NORTH TO WINDING-PASSAGE)
(WEST TO MIRROR-ROOM-NORTH)
(DOWN TO RESERVOIR-NORTH)
(SOUTH TO RESERVOIR-NORTH)
(FLAGS RLANDBIT)
(GLOBAL STAIRS)
(ACTION WINDY-CAVE-F)>
<ROOM MIRROR-ROOM-NORTH
(IN ROOMS)
(DESC "Mirror Room")
(NE TO WINDING-PASSAGE)
(EAST TO DRAFTY-CAVE)
(FLAGS RLANDBIT)
(GLOBAL MIRROR)
(ACTION MIRROR-ROOM-F)>
<ROOM WINDING-PASSAGE
(IN ROOMS)
(DESC "Winding Passage")
(LDESC
"This is a crooked corridor from the north, with forks to the southwest
and south.")
(SOUTH TO DRAFTY-CAVE)
(SW TO MIRROR-ROOM-NORTH)
(NORTH TO SLIDE-ROOM)
(FLAGS RLANDBIT)>
<ROOM SLIDE-ROOM
(IN ROOMS)
(DESC "Slide Room")
(LDESC
"This small chamber appears to have been part of a coal mine. To the west
and south are passages, and a steep metal slide twists downward.")
(WEST TO MINE-ENTRANCE)
(DOWN TO CELLAR)
(SOUTH TO WINDING-PASSAGE)
(FLAGS RLANDBIT)
(GLOBAL SLIDE)>
<OBJECT SLIDE
(IN LOCAL-GLOBALS)
(DESC "chute")
(SYNONYM CHUTE RAMP SLIDE)
(ADJECTIVE STEEP METAL TWISTING)
(FLAGS CLIMBBIT)
(ACTION SLIDE-F)>
<ROUTINE SLIDE-F ()
<COND (<OR <VERB? THROUGH CLIMB-DOWN CLIMB>
<AND <VERB? PUT>
<EQUAL? ,PRSO ,ME>>>
<DO-WALK <COND (<EQUAL? ,HERE ,CELLAR> ,P?WEST)
(T ,P?DOWN)>>)
(<AND <VERB? PUT>
<PRSI? ,SLIDE>
<FSET? ,PRSO ,TAKEBIT>>
<TELL "The " D ,PRSO " disappears into the slide." CR>
<COND (<EQUAL? ,PRSO ,WATER>
<REMOVE-CAREFULLY ,WATER>)
(T
<MOVE ,PRSO ,CELLAR>)>)>>
<ROOM MINE-ENTRANCE
(IN ROOMS)
(DESC "Mine Entrance")
(LDESC
"You are at the entrance of an abandoned coal mine. Strange squeaky sounds
come from the passage at the north end. You may also escape to the east.")
(NORTH TO BAT-ROOM)
(IN TO BAT-ROOM)
(EAST TO SLIDE-ROOM)
(FLAGS RLANDBIT)>
<ROOM BAT-ROOM
(IN ROOMS)
(DESC "Bat Room")
(SOUTH TO MINE-ENTRANCE)
(EAST TO SHAFT-ROOM)
(FLAGS RLANDBIT SACREDBIT)
(ACTION BAT-ROOM-F)>
<ROUTINE BAT-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You are in a small room with exits to the east and south.">)
(<AND <EQUAL? .RARG ,M-END>
<NOT ,DEAD>
<NOT <EQUAL? <LOC ,GARLIC> ,WINNER ,HERE>>>
<CRLF>
<FLY-ME>)>>
<OBJECT BAT
(IN BAT-ROOM)
(DESC "bat")
(SYNONYM BAT)
(ADJECTIVE VAMPIRE)
(FLAGS ACTORBIT TRYTAKEBIT)
(DESCFCN BAT-D)
(ACTION BAT-F)>
<ROUTINE BAT-D ("OPTIONAL" FOO)
<COND (<EQUAL? <LOC ,GARLIC> ,WINNER ,HERE>
<TELL
"In the corner of the ceiling, a large vampire bat is holding his nose." CR>)
(T
<TELL "A large vampire bat swoops down at you!" CR>)>>
<ROUTINE BAT-F ()
<COND (<VERB? TELL>
<FWEEP 6>
<SETG P-CONT <>>)
(<VERB? TAKE ATTACK MUNG>
<COND (<EQUAL? <LOC ,GARLIC> ,WINNER ,HERE>
<TELL ,YOU-CANT "reach him; he's on the ceiling." CR>)
(T
<FLY-ME>)>)>>
<ROUTINE FLY-ME ()
<FWEEP 4>
<TELL "The bat grabs you and lifts you away..." CR CR>
<GOTO <PICK-ONE ,BAT-DROPS>>>
<ROUTINE FWEEP (N)
<REPEAT ()
<COND (<L? <SET N <- .N 1>> 1>
<RETURN>)
(T
<TELL " Fweep!" CR>)>>
<CRLF>>
<GLOBAL BAT-DROPS
<LTABLE 0
COAL-MINE-1
COAL-MINE-2
COAL-MINE-3
LADDER-ROOM
SHAFT-ROOM
MINE-ENTRANCE>>
<OBJECT JADE
(IN BAT-ROOM)
(DESC "jade figurine")
(LDESC "There is an exquisite jade figurine here.")
(SYNONYM FIGURINE TREASURE)
(ADJECTIVE EXQUISITE JADE)
(FLAGS TAKEBIT TREASUREBIT)
(SIZE 10)
(VALUE 13)>
<ROOM SHAFT-ROOM
(IN ROOMS)
(DESC "Shaft Room")
(LDESC
"In the middle this room a small shaft descends into darkness below. Above the
shaft is a metal framework to which a heavy iron chain is attached. There are
exits to the west and north. A foul odor can be detected from the latter
direction.")
(DOWN "The shaft is too small for you.")
(WEST TO BAT-ROOM)
(NORTH TO GAS-ROOM)
(FLAGS RLANDBIT)
(PSEUDO "CHAIN" CHAIN-PSEUDO)>
<OBJECT BASKET
(IN SHAFT-ROOM)
(DESC "basket")
(LDESC "From the chain is suspended a basket.")
(SYNONYM BASKET)
(FLAGS TRYTAKEBIT CONTBIT OPENBIT SEARCHBIT)
(CAPACITY 50)
(ACTION BASKET-F)>
<GLOBAL BASKET-RAISED T>
<ROUTINE BASKET-F ()
<COND (<VERB? MOVE>
<PERFORM <COND (,BASKET-RAISED ,V?LOWER)
(T ,V?RAISE)> ,BASKET>
<RTRUE>)
(<VERB? RAISE>
<COND (,BASKET-RAISED
<TELL ,LOOK-AROUND>)
(T
<MOVE ,BASKET ,SHAFT-ROOM>
<SETG BASKET-RAISED T>
<TELL
"The basket is raised to the top of the shaft." CR>
<NOW-DARK?>)>)
(<VERB? LOWER>
<COND (<NOT ,BASKET-RAISED>
<TELL ,LOOK-AROUND>)
(T
<MOVE ,BASKET ,DRAFTY-ROOM>
<SETG BASKET-RAISED <>>
<TELL
"The basket is lowered to the bottom of the shaft." CR>
<NOW-DARK?>)>)
(<AND <VERB? TAKE>
<EQUAL? ,PRSO ,BASKET>>
<FASTENED ,BASKET "chain">)>>
<ROUTINE CHAIN-PSEUDO ()
<COND (<VERB? TAKE>
<TELL "The chain is secure." CR>)
(<VERB? RAISE LOWER MOVE>
<PERFORM ,PRSA ,BASKET>
<RTRUE>)
(<AND <VERB? EXAMINE>
<IN? ,BASKET ,HERE>>
<TELL <GETP ,BASKET ,P?LDESC> CR>)>>
<ROOM GAS-ROOM
(IN ROOMS)
(DESC "Gas Room")
(LDESC
"This room smells strongly of coal gas. Narrow tunnels lead lead
east and south.")
(SOUTH TO SHAFT-ROOM)
(EAST TO COAL-MINE-1)
(FLAGS RLANDBIT SACREDBIT)
(PSEUDO "GAS" GAS-PSEUDO "ODOR" GAS-PSEUDO)
(ACTION GAS-ROOM-F)>
<ROUTINE GAS-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-END>
<COND (<OR <AND <HELD? ,CANDLES>
<FSET? ,CANDLES ,ONBIT>>
<AND <HELD? ,TORCH>
<FSET? ,TORCH ,ONBIT>>
<AND <HELD? ,MATCH>
<FSET? ,MATCH ,ONBIT>>>
<JIGS-UP
"Oh dear. That smell was coal gas. I would have thought twice about
carrying flaming objects in here.|
|
Booooooom!!!">)>)>>
<ROUTINE GAS-PSEUDO ()
<COND (<VERB? BREATHE> ;"REALLY BLOW"
<TELL "There is too much gas to blow away." CR>)
(<VERB? SMELL>
<TELL "It smells like coal gas in here." CR>)>>
<OBJECT BRACELET
(IN GAS-ROOM)
(DESC "sapphire-encrusted bracelet")
(SYNONYM BRACELET JEWEL SAPPHIRE TREASURE)
(ADJECTIVE SAPPHIRE)
(FLAGS TAKEBIT TREASUREBIT)
(SIZE 10)
(VALUE 10)>
<ROOM COAL-MINE-1
(IN ROOMS)
(DESC "Coal Mine")
(LDESC "This is a nondescript part of a coal mine.")
(WEST TO GAS-ROOM)
(NORTH TO COAL-MINE-2)
(SOUTH TO COAL-MINE-1)
(FLAGS RLANDBIT)>
<ROOM COAL-MINE-2
(IN ROOMS)
(DESC "Coal Mine")
(LDESC "This is a nondescript part of a coal mine.")
(NE TO COAL-MINE-2)
(NW TO COAL-MINE-1)
(SOUTH TO COAL-MINE-3)
(UP TO COAL-MINE-2)
(FLAGS RLANDBIT)>
<ROOM COAL-MINE-3
(IN ROOMS)
(DESC "Coal Mine")
(LDESC "This is a nondescript part of a coal mine.")
(EAST TO COAL-MINE-2)
(WEST TO COAL-MINE-3)
(DOWN TO LADDER-ROOM)
(FLAGS RLANDBIT)>
<ROOM LADDER-ROOM
(IN ROOMS)
(DESC "Ladder Room")
(LDESC
"At the east end of this narrow passage, a ladder leads upward. There's a
strong draft from the west, where the passage narrows even further.")
(UP TO COAL-MINE-3)
(WEST TO DRAFTY-ROOM IF EMPTY-HANDED ELSE
"You can't fit through with that load.")
(FLAGS RLANDBIT SACREDBIT)
(ACTION NO-OBJECT-ROOM-F)
(PSEUDO "LADDER" LADDER-PSEUDO)>
<OBJECT COAL
(IN LADDER-ROOM)
(DESC "small pile of coal")
(SYNONYM COAL PILE)
(ADJECTIVE SMALL)
(FLAGS TAKEBIT BURNBIT)
(SIZE 20)>
<ROUTINE LADDER-PSEUDO ()
<COND (<VERB? CLIMB>
<DO-WALK ,P?UP>)>>
<GLOBAL EMPTY-HANDED <>>
<ROUTINE NO-OBJECT-ROOM-F (RARG "AUX" F)
<COND (<EQUAL? .RARG ,M-BEG>
<SET F <FIRST? ,WINNER>>
<SETG EMPTY-HANDED T>
<REPEAT ()
<COND (<NOT .F> <RETURN>)
(<G? <WEIGHT .F> 4>
<SETG EMPTY-HANDED <>>
<RETURN>)>
<SET F <NEXT? .F>>>
<COND (<AND <EQUAL? ,HERE ,DRAFTY-ROOM>
,LIT
<NOT ,DRAFTY-ROOM-SCORE>>
<SETG DRAFTY-ROOM-SCORE T>
<SETG SCORE <+ ,SCORE 10>>)>
<RFALSE>)>>
<GLOBAL DRAFTY-ROOM-SCORE <>>
<ROOM DRAFTY-ROOM
(IN ROOMS)
(DESC "Drafty Room")
(LDESC
"This is a small room at the bottom of a long shaft. A heavy iron chain hangs
down the shaft. To the south is a passageway and to the east a very narrow
passage.")
(SOUTH TO MACHINE-ROOM)
(OUT TO LADDER-ROOM IF EMPTY-HANDED ELSE
"You can't fit through with that load.")
(EAST TO LADDER-ROOM IF EMPTY-HANDED ELSE
"You can't fit through with that load.")
(FLAGS RLANDBIT SACREDBIT)
(PSEUDO "CHAIN" CHAIN-PSEUDO)
(ACTION NO-OBJECT-ROOM-F)>
<ROOM MACHINE-ROOM
(IN ROOMS)
(DESC "Machine Room")
(NORTH TO DRAFTY-ROOM)
(OUT TO DRAFTY-ROOM)
(FLAGS RLANDBIT)
(ACTION MACHINE-ROOM-F)>
<ROUTINE MACHINE-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is a chilly room whose sole exit is to the north. In one corner is a
machine, reminiscent of a clothes dryer, with a switch labelled \"START\".
The switch does not appear to be manipulable by any human hand (unless the
fingers are about 1/16 by 1/4 inch). The machine has a large lid, which is ">
<COND (<FSET? ,MACHINE ,OPENBIT>
<TELL "open.">)
(T
<TELL "closed.">)>)>>
<OBJECT MACHINE
(IN MACHINE-ROOM)
(DESC "machine")
(SYNONYM MACHINE DRYER LID)
(FLAGS CONTBIT SEARCHBIT NDESCBIT TRYTAKEBIT)
(CAPACITY 50)
(ACTION MACHINE-F)>
<ROUTINE MACHINE-F ()
<COND (<VERB? LAMP-ON>
<COND (<NOT ,PRSI>
<TELL ,YOU-CANT "do it with your bare hands." CR>)
(T
<PERFORM ,V?TURN ,MACHINE-SWITCH ,PRSI>
<RTRUE>)>)>>
<OBJECT MACHINE-SWITCH
(IN MACHINE-ROOM)
(DESC "switch")
(SYNONYM SWITCH)
(FLAGS NDESCBIT TURNBIT)
(ACTION MACHINE-SWITCH-F)>
<ROUTINE MACHINE-SWITCH-F ("AUX" SLAG?)
<COND (<VERB? TURN>
<COND (<EQUAL? ,PRSI ,SCREWDRIVER>
<COND (<FSET? ,MACHINE ,OPENBIT>
<TELL ,NOTHING-HAPPENS>)
(T
<SET SLAG? <FIRST? ,MACHINE>>
<ROB ,MACHINE ,MACHINE-SWITCH <>>
<COND (<IN? ,COAL ,MACHINE-SWITCH>
<MOVE ,DIAMOND ,MACHINE>)
(.SLAG?
<MOVE ,SLAG ,MACHINE>)>
<TELL
"The machine produces a dazzling display of colored lights and
bizarre noises. A moment later, the excitement abates." CR>)>)
(T
<TELL "It seems that a " D ,PRSI " won't do." CR>)>)>>
<OBJECT SLAG
(DESC "small piece of vitreous slag")
(SYNONYM PIECE SLAG)
(ADJECTIVE SMALL VITREOUS)
(FLAGS TAKEBIT TRYTAKEBIT)
(SIZE 10)
(ACTION SLAG-F)>
<ROUTINE SLAG-F ()
<REMOVE ,SLAG>
<TELL "The insubstantial slag crumbles at your touch." CR>>
<OBJECT DIAMOND
(DESC "huge diamond")
(LDESC "There is an enormous diamond (perfectly cut) here.")
(SYNONYM DIAMOND TREASURE)
(ADJECTIVE HUGE ENORMOUS)
(FLAGS TAKEBIT TREASUREBIT)
(VALUE 25)>

1449
parser.zil Normal file

File diff suppressed because it is too large Load diff

1283
south-of-res.zil Normal file

File diff suppressed because it is too large Load diff

432
syntax.zil Normal file
View file

@ -0,0 +1,432 @@
"SYNTAX for
Mini-Zork '87
(c) Copyright 1987 Infocom, Inc. All Rights Reserved"
<BUZZ AGAIN G OOPS A AN THE IS AND OF THEN ALL ONE BUT EXCEPT \. \, \"
YES NO Y HERE>
<SYNONYM WITH USING THROUGH THRU>
<SYNONYM IN INSIDE INTO>
<SYNONYM ON ONTO>
<SYNONYM UNDER UNDERNEATH BENEATH BELOW>
<SYNONYM NORTH N>
<SYNONYM SOUTH S>
<SYNONYM EAST E>
<SYNONYM WEST W>
<SYNONYM DOWN D>
<SYNONYM UP U>
<SYNONYM NW NORTHWEST>
<SYNONYM NE NORTHE>
<SYNONYM SW SOUTHWEST>
<SYNONYM SE SOUTHE>
^L
"Game Commands"
<SYNTAX VERBOSE = V-VERBOSE>
<SYNTAX BRIEF = V-BRIEF>
<SYNTAX SUPER = V-SUPER-BRIEF>
<SYNONYM SUPER SUPERBRIEF>
<SYNTAX DIAGNOSE = V-DIAGNOSE>
<SYNTAX INVENTORY = V-INVENTORY>
<SYNONYM INVENTORY I>
<SYNTAX QUIT = V-QUIT>
<SYNONYM QUIT Q>
<SYNTAX RESTART = V-RESTART>
<SYNTAX RESTORE = V-RESTORE>
<SYNTAX SAVE = V-SAVE>
<SYNTAX SCORE = V-SCORE>
<SYNTAX SCRIPT = V-SCRIPT>
<SYNTAX UNSCRIPT = V-UNSCRIPT>
<SYNTAX VERSION = V-VERSION>
<SYNTAX $VERIFY = V-VERIFY>
<SYNTAX \#RANDOM OBJECT = V-RANDOM>
<SYNTAX \#COMMAND = V-COMMAND-FILE>
<SYNTAX \#RECORD = V-RECORD>
<SYNTAX \#UNRECORD = V-UNRECORD>
^L
"Real Verbs"
<SYNTAX ACTIVATE OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-LAMP-ON>
<SYNTAX APPLY OBJECT TO OBJECT = V-PUT PRE-PUT>
<SYNTAX ATTACK OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-ATTACK>
<SYNONYM ATTACK FIGHT HURT INJURE HIT>
<SYNTAX BLOW OUT OBJECT = V-LAMP-OFF>
<SYNTAX BLOW UP OBJECT WITH
OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED) = V-INFLATE>
<SYNTAX BLOW UP OBJECT = V-INFLATE>
<SYNTAX BLOW IN OBJECT = V-BREATHE>
<SYNTAX BOARD OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNTAX BURN OBJECT (FIND BURNBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT (FIND FLAMEBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE)
= V-BURN PRE-BURN>
<SYNTAX BURN DOWN OBJECT (FIND BURNBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT (FIND FLAMEBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE)
= V-BURN PRE-BURN>
<SYNONYM BURN INCINERATE IGNITE>
<SYNTAX CLIMB UP OBJECT (FIND RMUNGBIT) = V-CLIMB>
<SYNTAX CLIMB DOWN OBJECT (FIND RMUNGBIT) = V-CLIMB-DOWN>
<SYNTAX CLIMB OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB>
<SYNTAX CLIMB IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNTAX CLIMB ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX CLIMB WITH OBJECT = V-THROUGH>
<SYNONYM CLIMB SIT>
<SYNTAX CLOSE OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM) = V-CLOSE>
<SYNTAX COUNT OBJECT = V-COUNT>
<SYNTAX CROSS OBJECT = V-CROSS>
<SYNONYM CROSS FORD>
<SYNTAX CUT OBJECT WITH OBJECT (FIND WEAPONBIT) (CARRIED HELD) = V-CUT>
<SYNONYM CUT SLICE PIERCE>
<SYNTAX CURSE = V-CURSES>
<SYNTAX CURSE OBJECT (FIND ACTORBIT) = V-CURSES>
<SYNONYM CURSE SHIT FUCK DAMN>
<SYNTAX DEFLATE OBJECT = V-DEFLATE>
<SYNTAX DESTROY OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH OBJECT (HELD CARRIED TAKE) = V-MUNG PRE-MUNG>
<SYNTAX DESTROY DOWN OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH OBJECT (HELD CARRIED TAKE) = V-MUNG PRE-MUNG>
<SYNTAX DESTROY IN OBJECT (ON-GROUND IN-ROOM HELD CARRIED) = V-OPEN>
<SYNONYM DESTROY DAMAGE BREAK BLOCK SMASH>
<SYNTAX DIG IN OBJECT (ON-GROUND IN-ROOM) = V-DIG>
<SYNTAX DIG IN OBJECT (ON-GROUND IN-ROOM)
WITH OBJECT (FIND TOOLBIT) (HELD CARRIED HAVE) = V-DIG>
<SYNTAX DIG OBJECT (ON-GROUND IN-ROOM)
WITH OBJECT (FIND TOOLBIT) (HELD CARRIED HAVE) = V-DIG>
<SYNTAX DRINK OBJECT (FIND DRINKBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-DRINK>
<SYNTAX DRINK FROM OBJECT (HELD CARRIED) = V-DRINK-FROM>
<SYNONYM DRINK IMBIBE SWALLOW>
<SYNTAX DROP OBJECT (HELD MANY HAVE) = V-DROP PRE-DROP>
<SYNTAX DROP OBJECT (HELD MANY HAVE) DOWN OBJECT = V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD MANY HAVE) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX DROP OBJECT (HELD MANY HAVE) ON OBJECT = V-PUT-ON PRE-PUT>
;<SYNONYM DROP RELEASE>
<SYNTAX EAT OBJECT (FIND FOODBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-EAT>
<SYNONYM EAT CONSUME TASTE BITE>
<SYNTAX ENTER = V-ENTER>
<SYNTAX ENTER OBJECT = V-THROUGH>
<SYNTAX EXIT = V-EXIT>
<SYNTAX EXIT OBJECT (ON-GROUND IN-ROOM) = V-EXIT>
<SYNTAX EXIT UP OBJECT (FIND RMUNGBIT) = V-EXIT>
<SYNONYM EXIT DISEMBARK STAND>
<SYNTAX EXAMINE OBJECT (MANY) = V-EXAMINE>
<SYNTAX EXAMINE IN OBJECT (HELD CARRIED IN-ROOM ON-GROUND MANY)
= V-LOOK-INSIDE>
<SYNTAX EXAMINE ON OBJECT (HELD CARRIED IN-ROOM ON-GROUND MANY)
= V-LOOK-INSIDE>
<SYNONYM EXAMINE DESCRIBE WHAT WHATS>
<SYNTAX EXORCISE OBJECT = V-EXORCISE>
<SYNTAX EXORCISE OUT OBJECT (FIND ACTORBIT) = V-EXORCISE>
<SYNTAX EXORCISE AWAY OBJECT (FIND ACTORBIT) = V-EXORCISE>
<SYNONYM EXORCISE BANISH CAST DRIVE>
<SYNTAX EXTINGUISH OBJECT (FIND ONBIT)
(HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE) = V-LAMP-OFF>
<SYNONYM EXTINGUISH DOUSE>
<SYNTAX FILL OBJECT (FIND CONTBIT) = V-FILL PRE-FILL>
<SYNTAX FILL OBJECT (FIND CONTBIT) WITH OBJECT = V-FILL PRE-FILL>
<SYNTAX FIND OBJECT = V-FIND>
<SYNONYM FIND WHERE SEEK SEE>
<SYNTAX FOLLOW = V-FOLLOW>
<SYNTAX FOLLOW OBJECT = V-FOLLOW>
<SYNONYM FOLLOW PURSUE CHASE>
<SYNTAX GIVE OBJECT (MANY HELD HAVE) TO OBJECT (FIND ACTORBIT) (ON-GROUND)
= V-GIVE PRE-GIVE>
<SYNTAX GIVE OBJECT (FIND ACTORBIT) (ON-GROUND) OBJECT (MANY HELD HAVE)
= V-SGIVE>
<SYNONYM GIVE HAND DONATE OFFER FEED>
<SYNTAX HATCH OBJECT = V-HATCH>
<SYNTAX HELLO = V-HELLO>
<SYNTAX HELLO OBJECT = V-HELLO>
<SYNONYM HELLO HI>
<SYNTAX INFLAT OBJECT WITH
OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED) = V-INFLATE>
<SYNTAX JUMP = V-LEAP>
<SYNTAX JUMP OVER OBJECT = V-LEAP>
<SYNTAX JUMP ACROSS OBJECT = V-LEAP>
<SYNTAX JUMP IN OBJECT = V-LEAP>
<SYNTAX JUMP FROM OBJECT = V-LEAP>
<SYNTAX JUMP OFF OBJECT = V-LEAP>
<SYNONYM JUMP LEAP DIVE>
<SYNTAX KICK OBJECT = V-KICK>
<SYNTAX KILL OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-ATTACK>
<SYNONYM KILL MURDER SLAY>
<SYNTAX STAB OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-STAB>
<SYNTAX STAB OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-ATTACK>
<SYNTAX KISS OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-KISS>
<SYNTAX KNOCK AT OBJECT = V-KNOCK>
<SYNTAX KNOCK ON OBJECT = V-KNOCK>
<SYNTAX KNOCK DOWN OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-ATTACK>
<SYNONYM KNOCK RAP>
<SYNTAX LAUNCH OBJECT (FIND VEHBIT) = V-LAUNCH>
<SYNTAX LEAVE = V-EXIT>
<SYNTAX LEAVE OBJECT = V-DROP PRE-DROP>
<SYNTAX LIGHT OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE)
= V-LAMP-ON>
<SYNTAX LIGHT OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT (FIND FLAMEBIT) (HELD CARRIED TAKE HAVE) = V-BURN PRE-BURN>
<SYNTAX LISTEN TO OBJECT = V-LISTEN>
<SYNTAX LISTEN FOR OBJECT = V-LISTEN>
<SYNTAX LOCK OBJECT (ON-GROUND IN-ROOM) WITH
OBJECT (FIND TOOLBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE) = V-LOCK>
<SYNTAX LOOK = V-LOOK>
<SYNTAX LOOK AROUND OBJECT (FIND RMUNGBIT) = V-LOOK>
<SYNTAX LOOK UP OBJECT (FIND RMUNGBIT) = V-LOOK>
<SYNTAX LOOK DOWN OBJECT (FIND RMUNGBIT) = V-LOOK>
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) = V-EXAMINE>
<SYNTAX LOOK ON OBJECT = V-LOOK-INSIDE>
<SYNTAX LOOK WITH OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) = V-LOOK-INSIDE>
<SYNTAX LOOK UNDER OBJECT = V-LOOK-UNDER>
<SYNTAX LOOK BEHIND OBJECT = V-LOOK-BEHIND>
<SYNTAX LOOK IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) = V-LOOK-INSIDE>
<SYNTAX LOOK FOR OBJECT = V-FIND>
<SYNONYM LOOK L>
<SYNTAX LOWER OBJECT = V-LOWER>
<SYNTAX MAKE OBJECT = V-MAKE>
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
<SYNTAX MOVE OBJECT (HELD MANY HAVE) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX MOVE OBJECT WITH OBJECT (FIND TOOLBIT) = V-TURN PRE-TURN>
<SYNTAX ROLL UP OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
<SYNTAX ROLL OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
<SYNTAX ODYSSEUS = V-ODYSSEUS>
<SYNONYM ODYSSEUS ULYSSES>
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM) = V-OPEN>
<SYNTAX OPEN UP OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-OPEN>
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM) WITH
OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE) = V-OPEN>
<SYNTAX PICK OBJECT = V-PICK>
<SYNTAX PICK OBJECT WITH OBJECT = V-PICK>
<SYNTAX PICK UP OBJECT (FIND TAKEBIT) (ON-GROUND MANY) = V-TAKE PRE-TAKE>
<SYNTAX POKE OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-MUNG PRE-MUNG>
<SYNTAX POUR OBJECT (HELD CARRIED) = V-DROP PRE-DROP>
<SYNTAX POUR OBJECT (HELD CARRIED) IN OBJECT = V-DROP PRE-DROP>
<SYNTAX POUR OBJECT (HELD CARRIED) ON OBJECT = V-POUR-ON>
<SYNTAX POUR OBJECT (HELD CARRIED) FROM OBJECT = V-DROP PRE-DROP>
<SYNONYM POUR SPILL>
<SYNTAX PRAY = V-PRAY>
<SYNTAX PULL OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
<SYNTAX PULL ON OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
<SYNTAX PULL UP OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
<SYNONYM PULL TUG YANK>
<SYNTAX PUMP UP OBJECT = V-PUMP>
<SYNTAX PUMP UP OBJECT WITH OBJECT = V-PUMP>
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND MANY) = V-PUSH>
<SYNTAX PUSH ON OBJECT (IN-ROOM ON-GROUND MANY) = V-PUSH>
<SYNTAX PUSH OBJECT WITH OBJECT (FIND TOOLBIT) = V-TURN PRE-TURN>
<SYNONYM PUSH PRESS>
<SYNTAX PUT OBJECT (HELD MANY HAVE) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX PUT OBJECT (HELD MANY HAVE) ON OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX PUT DOWN OBJECT (HELD MANY) = V-DROP PRE-DROP>
<SYNTAX PUT OUT OBJECT (FIND ONBIT)
(HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE) = V-LAMP-OFF>
<SYNONYM PUT STUFF INSERT PLACE>
<SYNTAX RAISE OBJECT = V-RAISE>
<SYNTAX RAISE UP OBJECT = V-RAISE>
<SYNONYM RAISE LIFT>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-READ PRE-READ>
<SYNTAX READ FROM OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-READ PRE-READ>
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
OBJECT = V-READ-PAGE>
<SYNONYM READ SKIM>
<SYNTAX REPENT = V-REPENT>
<SYNTAX RING OBJECT (TAKE) = V-RING>
<SYNONYM RING PEAL>
<SYNTAX RUB OBJECT = V-RUB>
<SYNTAX RUB OBJECT WITH OBJECT = V-RUB>
<SYNONYM RUB TOUCH FEEL PAT PET>
<SYNTAX TALK TO OBJECT (FIND ACTORBIT) (IN-ROOM) = V-TELL>
<SYNTAX SAY = V-SAY>
<SYNONYM SAY ANSWER REPLY INCANT CHANT>
<SYNTAX SEARCH OBJECT = V-SEARCH>
<SYNTAX SEARCH IN OBJECT = V-SEARCH>
<SYNTAX SEARCH FOR OBJECT = V-FIND>
<SYNTAX SHAKE OBJECT (HAVE) = V-SHAKE>
<SYNTAX SKIP = V-SKIP>
<SYNONYM SKIP HOP>
<SYNTAX SMELL OBJECT = V-SMELL>
<SYNONYM SMELL SNIFF>
<SYNTAX STRIKE OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) WITH OBJECT
(FIND WEAPONBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE) = V-ATTACK>
<SYNTAX STRIKE OBJECT (ON-GROUND IN-ROOM HELD CARRIED) = V-STRIKE>
<SYNTAX SWIM = V-SWIM>
<SYNTAX SWIM IN OBJECT = V-SWIM>
<SYNTAX SWIM ACROSS OBJECT = V-SWIM>
<SYNONYM SWIM BATHE WADE>
<SYNTAX SWING OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-SWING>
<SYNTAX SWING OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
AT OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-SWING>
<SYNONYM SWING THRUST>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY) = V-TAKE PRE-TAKE>
<SYNTAX TAKE IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNTAX TAKE OUT OBJECT (FIND RMUNGBIT) (ON-GROUND IN-ROOM) = V-EXIT>
<SYNTAX TAKE ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX TAKE UP OBJECT (FIND RMUNGBIT) = V-EXIT>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY) OUT OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY) OFF OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY) FROM OBJECT
= V-TAKE PRE-TAKE>
<SYNONYM TAKE GET HOLD CARRY REMOVE GRAB CATCH>
<SYNTAX TELL OBJECT (FIND ACTORBIT) (IN-ROOM) = V-TELL>
<SYNTAX TELL OBJECT (FIND ACTORBIT) (IN-ROOM) ABOUT OBJECT = V-TELL>
<SYNONYM TELL ASK>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE)
AT OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-THROW>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE)
WITH OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-THROW>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) ON OBJECT = V-PUT-ON PRE-PUT>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) OFF OBJECT = V-THROW-OFF>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) OVER OBJECT = V-THROW-OFF>
<SYNONYM THROW HURL CHUCK TOSS>
<SYNTAX TIE OBJECT TO OBJECT = V-TIE>
<SYNTAX TIE UP OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) WITH OBJECT
(FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE) = V-TIE-UP>
<SYNONYM TIE FASTEN SECURE ATTACH>
<SYNTAX TURN OBJECT (FIND TURNBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH OBJECT (FIND RMUNGBIT) = V-TURN PRE-TURN>
<SYNTAX TURN ON OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-LAMP-ON>
<SYNTAX TURN ON OBJECT WITH OBJECT (HAVE) = V-LAMP-ON>
<SYNTAX TURN OFF OBJECT (FIND ONBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE)
= V-LAMP-OFF>
<SYNTAX TURN OBJECT (FIND TURNBIT) TO OBJECT = V-TURN PRE-TURN>
<SYNTAX TURN OBJECT (FIND TURNBIT) FOR OBJECT = V-TURN PRE-TURN>
;<SYNTAX TURN OBJECT (FIND TURNBIT) = V-TURN PRE-TURN>
<SYNONYM TURN SET FLIP SHUT>
<SYNTAX UNLOCK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT
(FIND TOOLBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE) = V-UNLOCK>
<SYNTAX UNTIE OBJECT (ON-GROUND IN-ROOM HELD CARRIED) = V-UNTIE>
<SYNTAX UNTIE OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
FROM OBJECT = V-UNTIE>
<SYNONYM UNTIE FREE RELEASE UNFASTEN UNATTACH>
<SYNTAX WAIT = V-WAIT>
<SYNONYM WAIT Z>
<SYNTAX WAKE OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-ALARM>
<SYNTAX WAKE UP OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-ALARM>
<SYNONYM WAKE AWAKE SURPRISE STARTLE>
<SYNTAX WALK = V-WALK-AROUND>
<SYNTAX WALK OBJECT = V-WALK>
<SYNTAX WALK AWAY OBJECT = V-WALK>
<SYNTAX WALK IN OBJECT = V-THROUGH>
<SYNTAX WALK WITH OBJECT = V-THROUGH>
<SYNTAX WALK ON OBJECT = V-THROUGH>
<SYNTAX WALK OVER OBJECT = V-LEAP>
<SYNTAX WALK TO OBJECT = V-WALK-AROUND>
<SYNTAX WALK AROUND OBJECT = V-WALK-AROUND>
<SYNTAX WALK UP OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB>
<SYNTAX WALK DOWN OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNONYM WALK GO RUN PROCEED STEP>
<SYNTAX WAVE OBJECT (HELD CARRIED TAKE HAVE) = V-WAVE>
<SYNTAX WAVE OBJECT (HELD CARRIED TAKE HAVE) AT OBJECT = V-WAVE>
<SYNTAX WAVE AT OBJECT = V-WAVE>
<SYNONYM WAVE BRANDISH>
<SYNTAX YELL = V-YELL>
<SYNONYM YELL SCREAM SHOUT>
<SYNTAX ZORK = V-ZORK>

434
thief.zil Normal file
View file

@ -0,0 +1,434 @@
"THIEF for
Mini-Zork '87
(c) Copyright 1987 Infocom, Inc. All Rights Reserved"
<OBJECT THIEF
(IN ROUND-ROOM)
(DESC "thief")
(LDESC
"There is a suspicious-looking individual, holding a large bag, leaning
against one wall. He is armed with a deadly stiletto.")
(SYNONYM THIEF ROBBER MAN PERSON)
(ADJECTIVE SUSPICIOUS)
(FLAGS ACTORBIT INVISIBLE CONTBIT SEARCHBIT OPENBIT)
(STRENGTH 5)
(ACTION THIEF-F)>
<ROUTINE THIEF-F ()
<COND (<VERB? TELL LISTEN>
<SETG P-CONT <>>
<TELL "The thief is a strong, silent type." CR>)
(<AND <VERB? THROW>
<FSET? ,PRSO ,WEAPONBIT>>
<MOVE ,PRSO ,HERE>
<TELL
"You missed hitting the thief, but you suceeded in angering him." CR>)
(<AND <VERB? THROW GIVE>
<EQUAL? ,PRSI ,THIEF>>
<MOVE ,PRSO ,THIEF>
<TELL "The thief ">
<COND (<FSET? ,PRSO ,TREASUREBIT>
<TELL
"is taken aback by your unexpected generosity, but ">)>
<TELL
"puts the " D ,PRSO " in his bag and thanks you politely." CR>)
(<VERB? EXAMINE LOOK-INSIDE>
<TELL
"The thief carries a large bag and a vicious stiletto, whose blade is aimed
menacingly in your direction." CR>)>>
<ROUTINE I-THIEF ("AUX" X (THIEF-LOC <LOC ,THIEF>)
ROBJ HERE? (ONCE <>) (FLG <>))
<PROG ()
<COND (<SET HERE? <NOT <FSET? ,THIEF ,INVISIBLE>>>
<SET THIEF-LOC <LOC ,THIEF>>)>
<COND
(<AND <EQUAL? .THIEF-LOC ,THIEFS-LAIR>
<NOT <EQUAL? .THIEF-LOC ,HERE>>>
<DEPOSIT-BOOTY ,THIEFS-LAIR> ;"silent"
<COND (.HERE?
<FSET ,THIEF ,INVISIBLE>
<SET X <FIRST? ,THIEFS-LAIR>>
<REPEAT ()
<COND (<NOT .X>
<RETURN>)
(T
<FCLEAR .X ,INVISIBLE>)>
<SET X <NEXT? .X>>>
<SET HERE? <>>)>)
(<AND <EQUAL? .THIEF-LOC ,HERE>
<NOT <FSET? .THIEF-LOC ,ONBIT>>
<NOT <IN? ,TROLL ,HERE>>>
<COND (<THIEF-VS-ADVENTURER .HERE?>
<RTRUE>)>
<COND (<FSET? ,THIEF ,INVISIBLE>
<SET HERE? <>>)>)
(T
<COND (<AND <IN? ,THIEF .THIEF-LOC>
<NOT <FSET? ,THIEF ,INVISIBLE>>> ;"Leave if victim left"
<FSET ,THIEF ,INVISIBLE>
<SET HERE? <>>)>
<COND (<FSET? .THIEF-LOC ,TOUCHBIT> ;"Hack the adventurer's belongings"
<ROB .THIEF-LOC ,THIEF T>
<SET FLG <COND (<AND <FSET? .THIEF-LOC ,MAZEBIT>
<FSET? ,HERE ,MAZEBIT>>
<ROB-MAZE .THIEF-LOC>)
(T
<STEAL-JUNK .THIEF-LOC>)>>)>)>
<COND (<AND <SET ONCE <NOT .ONCE>>
<NOT .HERE?>> ;"Move to next room, and hack."
<REPEAT ()
<COND (<AND .THIEF-LOC
<SET .THIEF-LOC <NEXT? .THIEF-LOC>>>)
(T
<SET THIEF-LOC <FIRST? ,ROOMS>>)>
<COND (<AND <NOT <FSET? .THIEF-LOC ,SACREDBIT>>
<FSET? .THIEF-LOC ,RLANDBIT>>
<MOVE ,THIEF .THIEF-LOC>
<FSET ,THIEF ,INVISIBLE>
<SETG THIEF-HERE <>>
<RETURN>)>>
<AGAIN>)>>
<COND (<NOT <EQUAL? .THIEF-LOC ,THIEFS-LAIR>>
<DROP-JUNK .THIEF-LOC>)>
.FLG>
<ROUTINE DROP-JUNK (RM "AUX" X N (FLG <>))
<SET X <FIRST? ,THIEF>>
<REPEAT ()
<COND (<NOT .X>
<RETURN .FLG>)>
<SET N <NEXT? .X>>
<COND (<AND <NOT <FSET? .X ,TREASUREBIT>>
<NOT <EQUAL? .X ,STILETTO ,LARGE-BAG>>
<PROB 30 T>>
<FCLEAR .X ,INVISIBLE>
<MOVE .X .RM>
<COND (<AND <NOT .FLG>
<EQUAL? .RM ,HERE>>
<TELL
"The robber rummages through his bag and drops a few valueless items." CR>
<SET FLG T>)>)>
<SET X .N>>>
<ROUTINE STEAL-JUNK (RM "AUX" X N)
<SET X <FIRST? .RM>>
<REPEAT ()
<COND (<NOT .X>
<RFALSE>)>
<SET N <NEXT? .X>>
<COND (<AND <FSET? .X ,TREASUREBIT>
<FSET? .X ,TAKEBIT>
<NOT <FSET? .X ,SACREDBIT>>
<NOT <FSET? .X ,INVISIBLE>>
<PROB 10 T>>
<MOVE .X ,THIEF>
<FSET .X ,TOUCHBIT>
<FSET .X ,INVISIBLE>
<COND (<EQUAL? .X ,ROPE>
<SETG DOME-FLAG <>>)>
<COND (<EQUAL? .RM ,HERE>
<TELL "The " D .X " has vanished!" CR>
<RTRUE>)
(T
<RFALSE>)>)>
<SET X .N>>>
<ROUTINE ROB (WHAT WHERE JUST-TREASURES "AUX" N X (ROBBED <>))
<SET X <FIRST? .WHAT>>
<REPEAT ()
<COND (<NOT .X>
<RETURN>)>
<SET N <NEXT? .X>>
<COND (<FSET? .X ,INVISIBLE>
T)
(<AND .JUST-TREASURES
<OR <FSET? .X ,SACREDBIT>
<NOT <FSET? .X ,TREASUREBIT>>>>
T)
(T
<MOVE .X .WHERE>
<FSET .X ,TOUCHBIT>
<SET ROBBED T>
<COND (<EQUAL? .WHERE ,THIEF>
<FSET .X ,INVISIBLE>)>)>
<SET X .N>>
<RETURN .ROBBED>>
<OBJECT LARGE-BAG
(IN THIEF)
(DESC "large bag")
(SYNONYM BAG)
(ADJECTIVE LARGE THIEFS)
(FLAGS TRYTAKEBIT NDESCBIT)
(ACTION LARGE-BAG-F)>
<ROUTINE LARGE-BAG-F ()
<COND (<VERB? TAKE EXAMINE>
<TELL "It will be taken over the thief's dead body." CR>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,LARGE-BAG>>
<TELL ,GOOD-TRICK>)
(<VERB? OPEN CLOSE LOOK-INSIDE>
<TELL ,GOOD-TRICK>)>>
<OBJECT STILETTO
(IN THIEF)
(DESC "stiletto")
(SYNONYM STILETTO)
(ADJECTIVE VICIOUS)
(FLAGS NDESCBIT)
(SIZE 10)>
<GLOBAL THIEF-HERE <>>
"INTERACTION WITH ADVENTURER -- RETURNS T IF THIEF FINISHED."
<ROUTINE THIEF-VS-ADVENTURER (HERE? "AUX" ROBBED? (WINNER-ROBBED? <>))
<COND (<AND <NOT ,DEAD>
<EQUAL? ,HERE ,THIEFS-LAIR>>)
(<NOT ,THIEF-HERE>
<COND (<AND <NOT ,DEAD>
<NOT .HERE?>
<PROB 30>>
<FCLEAR ,THIEF ,INVISIBLE>
<SETG THIEF-HERE T>
<ENABLE <QUEUE I-FIGHT 2>>
<TELL
"Someone carrying a large bag is casually leaning against the wall. It is
clear that the bag will be taken only over his dead body." CR>
<RTRUE>)
(<AND .HERE?
<PROB 30>>
<FSET ,THIEF ,INVISIBLE>
<TELL ,THIEF-LEFT-DISGUSTED>
<RTRUE>)
(<PROB 70>
<RFALSE>)
(<NOT ,DEAD>
<COND (<ROB ,HERE ,THIEF T>
<SET ROBBED? ,HERE>)
(<ROB ,WINNER ,THIEF T>
<SET ROBBED? ,ADVENTURER>)>
<SETG THIEF-HERE T>
<COND (<AND .ROBBED?
<NOT .HERE?>>
<TELL
"A suspicious-looking individual with a large bag just wandered through and
quietly abstracted some valuables from ">
<COND (<EQUAL? .ROBBED? ,HERE>
<TELL "the room">)
(T
<TELL "your possession">)>
<TELL ,PERIOD-CR>
<NOW-DARK?>)
(.HERE?
<FSET ,THIEF ,INVISIBLE>
<SET HERE? <>>
<THIEF-ROBBED-AND-LEFT .ROBBED?>
<RTRUE>)
(T
<TELL
"A \"lean and hungry\" gentleman just wandered through, carrying a
large bag. " ,THIEF-LEFT-DISGUSTED>
<RTRUE>)>)>)
(.HERE? ;"Here, already announced."
<COND (<PROB 30>
<COND (<ROB ,HERE ,THIEF T>
<SET ROBBED? ,HERE>)
(<ROB ,WINNER ,THIEF T>
<SET ROBBED? ,ADVENTURER>)>
<FSET ,THIEF ,INVISIBLE>
<SET HERE? <>>
<THIEF-ROBBED-AND-LEFT .ROBBED?>)>)>
<RFALSE>>
<ROUTINE THIEF-ROBBED-AND-LEFT (ROBBED?)
<COND (.ROBBED?
<TELL "The thief just left. You may not have noticed that he ">
<COND (<EQUAL? .ROBBED? ,ADVENTURER>
<TELL "robbed you blind first">)
(T
<TELL "appropriated the valuables in the room">)>
<TELL ,PERIOD-CR>
<NOW-DARK?>)
(T
<TELL ,THIEF-LEFT-DISGUSTED>)>>
<ROUTINE DEPOSIT-BOOTY (RM "AUX" X N (DROPPED-A-TREASURE <>))
<SET X <FIRST? ,THIEF>>
<REPEAT ()
<COND (<NOT .X>
<RETURN>)>
<SET N <NEXT? .X>>
<COND (<FSET? .X ,TREASUREBIT>
<MOVE .X .RM>
<FCLEAR .X ,INVISIBLE>
<SET DROPPED-A-TREASURE T>)>
<SET X .N>>
.DROPPED-A-TREASURE>
<ROUTINE ROB-MAZE (RM "AUX" X N)
<SET X <FIRST? .RM>>
<REPEAT ()
<COND (<NOT .X>
<RFALSE>)>
<SET N <NEXT? .X>>
<COND (<AND <FSET? .X ,TAKEBIT>
<NOT <FSET? .X ,INVISIBLE>>
<PROB 40>>
<TELL
"In the distance, someone says, \"My, I wonder what this
fine " D .X " is doing here.\"" CR>
<COND (<PROB 60 80>
<MOVE .X ,THIEF>
<FSET .X ,TOUCHBIT>
<FSET .X ,INVISIBLE>)>
<RETURN>)>
<SET X .N>>>
\
;"fighting"
<ROUTINE HERO-BLOW ("AUX" VIL-STR HIT-PROB)
<SET VIL-STR <GETP ,PRSO ,P?STRENGTH>>
<COND (<PRSO? ,TROLL>
<SET HIT-PROB 45>)
(T
<SET HIT-PROB <+ 15 </ ,SCORE 4>>>)>
<COND (<PROB .HIT-PROB>
<COND (<PROB 50> ;"serious blow"
<SET VIL-STR <- .VIL-STR 2>>
<COND (<L? .VIL-STR 0>
<KILL-VILLAIN>)
(<PROB 50>
<TELL
"The " D ,PRSO " receives a deep gash in his side." CR>)
(T
<TELL
"Slash! Your " D ,PRSI " connects! This could be serious!" CR>)>)
(T ;"light blow"
<SET VIL-STR <- .VIL-STR 1>>
<COND (<L? .VIL-STR 0>
<KILL-VILLAIN>)
(<PROB 50>
<TELL
"The " D ,PRSO " is struck on the arm; blood begins to trickle down." CR>)
(T
<TELL
"The blow lands, making a shallow gash in the " D ,PRSO "'s arm!" CR>)>)>
<PUTP ,PRSO ,P?STRENGTH .VIL-STR>)
(<PROB 50>
<TELL
"A good slash, but it misses the " D ,PRSO " by a mile." CR>)
(T
<TELL
"You charge, but the " D ,PRSO " jumps nimbly aside." CR>)>>
<ROUTINE KILL-VILLAIN ("AUX" X)
<TELL
"The fatal blow strikes the " D ,PRSO " square in the heart: He dies. As the "
D ,PRSO " breathes his last breath, a cloud of sinister black fog envelops
him; when it lifts, the carcass is gone." CR>
<REMOVE ,PRSO>
<COND (<PRSO? ,TROLL>
<PUTP ,TROLL ,P?STRENGTH 2> ;"to stop I-CURE"
<MOVE ,AXE ,HERE>
<FCLEAR ,AXE ,NDESCBIT>
<FSET ,AXE ,WEAPONBIT>
<FSET ,AXE ,TAKEBIT>
<SETG TROLL-FLAG T>
<SETG SCORE <+ ,SCORE 10>>)
(T
<PUTP ,THIEF ,P?STRENGTH 5> ;"to stop I-CURE"
<MOVE ,STILETTO ,HERE>
<FCLEAR ,STILETTO ,NDESCBIT>
<FSET ,STILETTO ,TAKEBIT>
<FSET ,STILETTO ,WEAPONBIT>
<DISABLE <INT I-THIEF>>
<COND (<DEPOSIT-BOOTY ,HERE>
<COND (<EQUAL? ,HERE ,THIEFS-LAIR>
<TELL
"As the thief dies, his treasures reappear.">)
(T
<TELL "His booty remains.">)>
<CRLF> <CRLF>
<V-LOOK>)>)>>
<ROUTINE I-FIGHT ("AUX" ADV-STR TBL HIT-PROB)
<ENABLE <QUEUE I-FIGHT -1>>
<SET ADV-STR <GETP ,ADVENTURER ,P?STRENGTH>>
<COND (<IN? ,TROLL ,HERE>
<SET HIT-PROB 55>
<SET TBL ,TROLL-MELEE>)
(<IN? ,THIEF ,HERE>
<SET HIT-PROB 60>
<SET TBL ,THIEF-MELEE>)
(T
<DISABLE <INT I-FIGHT>>
<ENABLE <QUEUE I-CURE -1>>
<RFALSE>)>
<COND (<PROB .HIT-PROB>
<COND (<PROB 50> ;"serious blow"
<SET ADV-STR <- .ADV-STR 2>>
<COND (<L? .ADV-STR 0>
<JIGS-UP <GET .TBL 6>>)
(<PROB 50>
<TELL <GET .TBL 5> CR>)
(T
<TELL <GET .TBL 4> CR>)>)
(T ;"light blow"
<SET ADV-STR <- .ADV-STR 1>>
<COND (<L? .ADV-STR 0>
<JIGS-UP <GET .TBL 6>>)
(<PROB 50>
<TELL <GET .TBL 3> CR>)
(T
<TELL <GET .TBL 2> CR>)>)>
<PUTP ,ADVENTURER ,P?STRENGTH .ADV-STR>)
(<PROB 50>
<TELL <GET .TBL 1> CR>)
(T
<TELL <GET .TBL 0> CR>)>>
<GLOBAL TROLL-MELEE
<TABLE
;0 "The troll's axe barely misses your ear."
;1 "The axe crashes against the rock, throwing sparks!"
;2 "The axe blade nicks your side. Ouch!"
;3 "The flat of the troll's axe skins across your forearm."
;4 "The troll charges, and his axe slashes you on your arm."
;5 "An axe stroke makes a deep wound in your leg."
;6 "The troll neatly removes your head.">>
<GLOBAL THIEF-MELEE
<TABLE
;0 "The thief stabs nonchalantly with his stiletto and misses."
;1 "You dodge as the thief comes in low."
;2 "The thief draws blood, raking his stiletto across your arm."
;3 "The stiletto flashes, and blood wells from your leg."
;4 "The stiletto gashes your forehead, and blood obscures your vision."
;5 "The thief slashes your wrist, leaving your grip slippery with blood."
;6 "The thief, forgetting his genteel upbringing, cuts your throat.">>
<GLOBAL CURE-COUNT 10>
<ROUTINE I-CURE ("AUX" ADV-STR TROLL-STR THIEF-STR)
<SET ADV-STR <GETP ,ADVENTURER ,P?STRENGTH>>
<SET TROLL-STR <GETP ,TROLL ,P?STRENGTH>>
<SET THIEF-STR <GETP ,THIEF ,P?STRENGTH>>
<COND (<AND <EQUAL? .ADV-STR 6>
<EQUAL? .TROLL-STR 2>
<EQUAL? .THIEF-STR 5>>
<DISABLE <INT I-CURE>>
<SETG CURE-COUNT 10>
<RFALSE>)>
<SETG CURE-COUNT <- ,CURE-COUNT 1>>
<COND (<EQUAL? ,CURE-COUNT 0>
<COND (<L? .ADV-STR 6>
<PUTP ,ADVENTURER ,P?STRENGTH <+ .ADV-STR 1>>)>
<COND (<L? .TROLL-STR 2>
<PUTP ,TROLL ,P?STRENGTH <+ .TROLL-STR 1>>)>
<COND (<L? .THIEF-STR 5>
<PUTP ,THIEF ,P?STRENGTH <+ .THIEF-STR 1>>)>
<SETG CURE-COUNT 10>)>
<RFALSE>>

1488
verbs.zil Normal file

File diff suppressed because it is too large Load diff