Final Revision

This commit is contained in:
historicalsource 2019-04-13 21:54:32 -04:00
commit a24d33a0ad
40 changed files with 25407 additions and 0 deletions

1
README.md Normal file
View file

@ -0,0 +1 @@
# minizork2-1988

132
alice.zabstr Normal file
View file

@ -0,0 +1,132 @@
<ROOM RIDDLE-ROOM (IN ROOMS) (DESC "Riddle Room") (NW TO CAROUSEL-ROOM) (EAST
TO CIRCULAR-ROOM IF RIDDLE-DOOR IS OPEN) (FLAGS RLANDBIT) (ACTION RIDDLE-ROOM-F
) (PSEUDO "RIDDLE" RIDDLE-PSEUDO)>
<DEFINE-ROUTINE RIDDLE-ROOM-F>
<DEFINE-ROUTINE RIDDLE-PSEUDO>
<OBJECT RIDDLE-DOOR (IN RIDDLE-ROOM) (DESC "stone door") (SYNONYM DOOR) (
ADJECTIVE GREAT STONE) (FLAGS DOORBIT CONTBIT NDESCBIT) (ACTION RIDDLE-DOOR-F)>
<DEFINE-ROUTINE RIDDLE-DOOR-F>
<ROOM CIRCULAR-ROOM (IN ROOMS) (DESC "Circular Room") (LDESC
"This is a tall, damp room with brick walls. There are some etchings on
the walls. A passage leads west.") (WEST TO RIDDLE-ROOM) (UP
"The walls cannot be climbed.") (FLAGS RLANDBIT NONLANDBIT) (GLOBAL WELL)>
<OBJECT BOTTOM-ETCHINGS (IN CIRCULAR-ROOM) (DESC "wall with etchings") (SYNONYM
ETCHINGS WALL) (FLAGS READBIT NDESCBIT) (TEXT
" o b o|
|
A G I|
|
E L|
|
m p a")>
<OBJECT PEARL-NECKLACE (IN CIRCULAR-ROOM) (DESC "pearl necklace") (SYNONYM
NECKLACE TREASURE) (ADJECTIVE PEARL) (SIZE 10) (VALUE 15) (FLAGS TAKEBIT)>
<OBJECT BUCKET (IN CIRCULAR-ROOM) (DESC "wooden bucket") (LDESC
"There is a wooden bucket here, 3 feet in diameter and 3 feet high.") (SYNONYM
BUCKET) (ADJECTIVE WOODEN) (CAPACITY 100) (SIZE 100) (VTYPE 0) (FLAGS VEHBIT
OPENBIT CONTBIT) (CONTFCN BUCKET-CONT) (ACTION BUCKET-F)>
<DEFINE-ROUTINE BUCKET-CONT>
<DEFINE-ROUTINE BUCKET-F>
<DEFINE-ROUTINE PASS-THE-BUCKET>
<GLOBAL BUCKET-TOP-FLAG <>>
<GLOBAL EVAPORATED <>>
<DEFINE-ROUTINE I-BUCKET>
<OBJECT WELL (IN LOCAL-GLOBALS) (DESC "well") (SYNONYM WELL) (ADJECTIVE MAGIC)
(FLAGS NDESCBIT) (ACTION WELL-F)>
<DEFINE-ROUTINE WELL-F>
<ROOM TOP-OF-WELL (IN ROOMS) (DESC "Top of Well") (LDESC
"You have made it to the top. Well done. There are etchings on the well. A
crack runs across the floor at the doorway to the east, but it can be crossed
easily. Another doorway leads northeast.") (EAST TO TEA-ROOM) (NE TO
MACHINE-ROOM) (DOWN "It's a long way down!") (VALUE 10) (FLAGS RLANDBIT
NONLANDBIT) (GLOBAL WELL) (PSEUDO "CRACK" CRACK-PSEUDO)>
<DEFINE-ROUTINE CRACK-PSEUDO>
<OBJECT TOP-ETCHINGS (IN TOP-OF-WELL) (DESC "wall with etchings") (SYNONYM
ETCHINGS WALL) (FLAGS READBIT NDESCBIT) (TEXT
" o b o|
r z|
f M A G I C z|
|
c W E L L y|
o n|
m p a")>
<OBJECT ROBOT (IN TOP-OF-WELL) (DESC "robot") (SYNONYM ROBOT) (FLAGS ACTORBIT
CONTBIT OPENBIT) (ACTION ROBOT-F)>
<DEFINE-ROUTINE ROBOT-F>
<OBJECT ROBOT-LABEL (IN TOP-OF-WELL) (DESC "green piece of paper") (SYNONYM
PAPER PIECE) (ADJECTIVE GREEN) (SIZE 3) (FLAGS READBIT TAKEBIT BURNBIT) (TEXT
"This robot was trained at GUE Tech to perform simple household functions. To
activate, say:|
>ROBOT, <thing to do>|
A product of the Frobozz Magic Robot Company.")>
<ROOM MACHINE-ROOM (IN ROOMS) (DESC "Machine Room") (LDESC
"This room is full of assorted machinery, whirring noisily. On one wall is a
triangular button labelled, \"DANGER -- HIGH VOLTAGE.\" There are exits to the
south and southwest.") (SOUTH TO DINGY-CLOSET) (SW TO TOP-OF-WELL) (FLAGS
RLANDBIT ONBIT)>
<OBJECT TRIANGULAR-BUTTON (IN MACHINE-ROOM) (DESC "triangular button") (SYNONYM
BUTTON) (ADJECTIVE TRIANGULAR) (FLAGS NDESCBIT) (ACTION TRIANGULAR-BUTTON-F)>
<GLOBAL CAROUSEL-ON T>
<DEFINE-ROUTINE TRIANGULAR-BUTTON-F>
<ROOM DINGY-CLOSET (IN ROOMS) (DESC "Dingy Closet") (LDESC
"This is a former broom closet. A larger room lies to the north. Chiselled
on the wall are the words \"Protected by the Frobozz Magic Alarm Company.\"") (
OUT TO MACHINE-ROOM) (NORTH TO MACHINE-ROOM) (FLAGS ONBIT RLANDBIT)>
<OBJECT CAGE-OBJECT (IN DINGY-CLOSET) (DESC "solid steel cage") (SYNONYM CAGE)
(ADJECTIVE STEEL SOLID) (FLAGS INVISIBLE)>
<ROOM CAGE (IN ROOMS) (DESC "Cage") (LDESC
"You are trapped in a solid steel cage.") (FLAGS RLANDBIT NWALLBIT ONBIT) (
ACTION CAGE-F)>
<GLOBAL CAGE-SOLVE-FLAG <>>
<DEFINE-ROUTINE CAGE-F>
<DEFINE-ROUTINE I-CAGE-DEATH>
<ROOM TEA-ROOM (IN ROOMS) (DESC "Tea Room") (LDESC
"An oblong table here is set for afternoon tea. It is clear that the users
were indeed mad. To the east is a small hole (perhaps four inches high). A
doorway leads west.") (EAST "Only a mouse could fit.") (WEST TO TOP-OF-WELL) (
FLAGS RLANDBIT ONBIT) (PSEUDO "HOLE" ALICE-HOLE)>
<DEFINE-ROUTINE ALICE-HOLE>
<OBJECT PORTRAIT (IN TEA-ROOM) (DESC "portrait of J. Pierpont Flathead") (FDESC
"A rare portrait of J. Pierpont Flathead hangs on the wall.") (SYNONYM PORTRAIT
PAINTING TREASURE) (ADJECTIVE RARE FLATHEAD) (SIZE 25) (VALUE 20) (FLAGS
TAKEBIT BURNBIT)>
<OBJECT ALICE-TABLE (IN TEA-ROOM) (DESC "table") (SYNONYM TABLE) (ADJECTIVE
OBLONG) (CAPACITY 50) (FLAGS CONTBIT SURFACEBIT OPENBIT)>
<OBJECT GREEN-CAKE (SIZE 4) (IN ALICE-TABLE) (DESC
"cake frosted with green letters") (SYNONYM CAKE ICING CAKES LETTER) (ADJECTIVE
GREEN FROSTED) (FLAGS READBIT TAKEBIT FOODBIT) (TEXT
"The icing spells, \"Eat Me.\"") (ACTION GREEN-CAKE-F)>
<DEFINE-ROUTINE GREEN-CAKE-F>
<OBJECT BLUE-CAKE (IN ALICE-TABLE) (DESC "cake frosted with blue letters") (
SYNONYM CAKE ICING CAKES LETTER) (ADJECTIVE BLUE FROSTED) (SIZE 4) (FLAGS
READBIT TAKEBIT FOODBIT) (ACTION CAKE-F)>
<OBJECT ORANGE-CAKE (IN ALICE-TABLE) (DESC "cake frosted with orange letters")
(SYNONYM CAKE CAKES ICING LETTER) (ADJECTIVE ORANGE FROSTED) (SIZE 4) (FLAGS
READBIT TAKEBIT FOODBIT) (ACTION CAKE-F)>
<OBJECT RED-CAKE (IN ALICE-TABLE) (DESC "cake frosted with red letters") (
SYNONYM CAKE CAKES ICING LETTER) (ADJECTIVE RED FROSTED) (SIZE 4) (FLAGS
READBIT TAKEBIT FOODBIT) (ACTION CAKE-F)>
<DEFINE-ROUTINE CAKE-F>
<DEFINE-ROUTINE CAKE-CRUMBLE>
<ROOM POSTS-ROOM (IN ROOMS) (DESC "Posts Room") (LDESC
"In the center of this enormous room, four wooden posts support a huge
oblong roof. To the east is a large hole; to the west a gaping chasm.") (EAST
TO POOL-ROOM) (WEST "A chasm blocks your way.") (FLAGS RLANDBIT ONBIT) (VALUE
10) (GLOBAL CHASM) (ACTION POSTS-ROOM-F)>
<DEFINE-ROUTINE POSTS-ROOM-F>
<OBJECT POSTS (IN POSTS-ROOM) (DESC "group of wooden posts") (SYNONYM POSTS
POST) (ADJECTIVE WOODEN) (FLAGS NDESCBIT)>
<ROOM POOL-ROOM (IN ROOMS) (DESC "Pool Room") (LDESC
"The far half of this room is depressed. The only exit is west.") (OUT TO
POSTS-ROOM) (WEST TO POSTS-ROOM) (FLAGS RLANDBIT)>
<OBJECT POOL (IN POOL-ROOM) (DESC "pool") (LDESC
"The depressed area is filled with water. There is something hazy at the
deepest part of the pool.") (SYNONYM POOL) (ACTION POOL-F)>
<DEFINE-ROUTINE POOL-F>
<OBJECT CANDY (IN POOL-ROOM) (DESC "package of candy") (LDESC
"There is a package of candied insects here.") (SYNONYM PACKAGE CANDY INSECTS)
(ADJECTIVE CANDIED RARE) (SIZE 8) (VALUE 15) (FLAGS FOODBIT TAKEBIT INVISIBLE
READBIT) (ACTION CANDY-F)>
<DEFINE-ROUTINE CANDY-F>

366
alice.zap Normal file
View file

@ -0,0 +1,366 @@
.FUNCT RIDDLE-ROOM-F,RARG
EQUAL? RARG,M-LOOK \?CCL3
PRINTI "This bare room has an exit in the northwest corner. To the east is a great "
FSET? RIDDLE-DOOR,OPENBIT \?PRG11
PRINTI "open"
JUMP ?PRG13
?PRG11: PRINTI "closed"
?PRG13: PRINTI " door of stone. Above it is written: ""No one shall pass without solving this riddle:"
CRLF
CRLF
PRINT RIDDLE-TEXT
RTRUE
?CCL3: EQUAL? RARG,M-BEG \FALSE
EQUAL? PRSA,V?SAY \FALSE
FSET? RIDDLE-DOOR,OPENBIT /FALSE
GET P-LEXV,P-CONT
EQUAL? STACK,W?WELL /?CTR23
ADD P-CONT,2
GET P-LEXV,STACK
EQUAL? STACK,W?WELL \?PRG29
?CTR23: ADD SCORE,5 >SCORE
FSET RIDDLE-DOOR,OPENBIT
PRINTI "With a deafening clap of thunder, the door opens."
CRLF
JUMP ?CND20
?PRG29: PRINTI "A hollow laugh comes from the door."
CRLF
?CND20: SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
RTRUE
.FUNCT RIDDLE-PSEUDO
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
PRINT RIDDLE-TEXT
RTRUE
.FUNCT RIDDLE-DOOR-F
EQUAL? PRSA,V?OPEN \?PRD5
FSET? RIDDLE-DOOR,OPENBIT \?PRG10
?PRD5: EQUAL? PRSA,V?CLOSE \FALSE
FSET? RIDDLE-DOOR,OPENBIT \FALSE
?PRG10: PRINTR "It won't budge."
.FUNCT BUCKET-CONT
EQUAL? PRSA,V?TAKE \FALSE
IN? WINNER,BUCKET /FALSE
PRINTR "You must get in the bucket to reach it."
.FUNCT BUCKET-F,RARG=M-BEG
EQUAL? RARG,M-BEG \?CCL3
EQUAL? PRSA,V?BURN \?CCL6
EQUAL? PRSO,BUCKET \?CCL6
PRINTR "The bucket appears to be fireproof."
?CCL6: EQUAL? PRSA,V?PUT,V?DROP \?CCL12
EQUAL? PRSO,WATER \?CCL12
EQUAL? PRSI,BUCKET \?CCL12
IN? BUCKET,CIRCULAR-ROOM \?CCL12
IN? WINNER,BUCKET /?CCL12
MOVE BUCKET,TOP-OF-WELL
MOVE WATER,BUCKET
SET 'BUCKET-TOP-FLAG,TRUE-VALUE
CALL QUEUE,I-BUCKET,100
PUT STACK,0,1
PRINTR "The bucket swiftly rises up, and is gone."
?CCL12: EQUAL? PRSA,V?KICK \FALSE
CALL JIGS-UP,STR?172
RSTACK
?CCL3: EQUAL? RARG,M-END \?CCL23
IN? WATER,BUCKET \?CCL26
ZERO? BUCKET-TOP-FLAG \?CCL26
SET 'BUCKET-TOP-FLAG,TRUE-VALUE
SET 'EVAPORATED,FALSE-VALUE
CALL PASS-THE-BUCKET,TOP-OF-WELL
CALL QUEUE,I-BUCKET,100
PUT STACK,0,1
PRINTI "The bucket rises and"
PRINT STOPS
RTRUE
?CCL26: ZERO? BUCKET-TOP-FLAG /FALSE
IN? WATER,BUCKET /FALSE
ZERO? EVAPORATED /?PRG40
PRINTI "The last of the water evaporates, and the bucket descends."
CRLF
CRLF
JUMP ?CND35
?PRG40: PRINTI "The bucket descends and"
PRINT STOPS
?CND35: SET 'BUCKET-TOP-FLAG,FALSE-VALUE
CALL PASS-THE-BUCKET,CIRCULAR-ROOM
RSTACK
?CCL23: EQUAL? PRSA,V?CLIMB-ON \FALSE
CALL PERFORM,V?ENTER,PRSO
RTRUE
.FUNCT PASS-THE-BUCKET,R
MOVE BUCKET,R
IN? WINNER,BUCKET \FALSE
CALL GOTO,R
RSTACK
.FUNCT I-BUCKET
IN? WATER,BUCKET \FALSE
SET 'EVAPORATED,TRUE-VALUE
REMOVE WATER
RFALSE
.FUNCT WELL-F
EQUAL? PRSA,V?DROP,V?PUT,V?THROW \?CCL3
FSET? PRSO,TAKEBIT \?CCL3
MOVE PRSO,CIRCULAR-ROOM
PRINTI "The "
PRINTD PRSO
PRINTR " is now at the bottom of the well."
?CCL3: EQUAL? PRSA,V?CLIMB-DOWN,V?CLIMB \FALSE
PRINTR "You can't climb the well."
.FUNCT CRACK-PSEUDO
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "It's a small, uninteresting crack."
.FUNCT ROBOT-F,RARG=M-OBJECT
EQUAL? WINNER,ROBOT \?CCL3
EQUAL? PRSA,V?SGIVE /FALSE
EQUAL? PRSA,V?FOLLOW \?CCL8
PRINTR """I'm too primitive. I can walk in any direction you order, though."""
?CCL8: EQUAL? PRSA,V?MOVE,V?TAKE,V?RAISE \?CCL12
EQUAL? PRSO,CAGE-OBJECT \?CCL12
PRINTI "The robots pulverizes the cage to dust."
CRLF
CRLF
CALL INT,I-CAGE-DEATH
PUT STACK,0,0
SET 'WINNER,ADVENTURER
FCLEAR ROBOT,NDESCBIT
FSET PALANTIR-1,TAKEBIT
MOVE ROBOT,DINGY-CLOSET
SET 'CAGE-SOLVE-FLAG,TRUE-VALUE
CALL GOTO,DINGY-CLOSET
RSTACK
?CCL12: EQUAL? PRSA,V?THROW,V?PUT,V?DROP \?CCL18
CALL ACCESSIBLE?,ROBOT
ZERO? STACK /FALSE
PRINT B-W-C
IN? PRSO,ROBOT \?PRG29
PRINTC 34
CRLF
RFALSE
?PRG29: PRINTR " I don't have that!"""
?CCL18: EQUAL? PRSA,V?WALK /?CTR31
EQUAL? PRSA,V?PUSH,V?TAKE \?CCL32
FSET? PRSO,ACTORBIT /?CCL32
?CTR31: CALL ACCESSIBLE?,ROBOT
ZERO? STACK /FALSE
PRINT B-W-C
PRINTC 34
CRLF
RFALSE
?CCL32: CALL ACCESSIBLE?,ROBOT
ZERO? STACK /TRUE
PRINTR """My programming is insufficient for that task."""
?CCL3: EQUAL? PRSA,V?CLOSE,V?LOOK-INSIDE,V?OPEN \?CCL47
PRINTR "The robot has no access panel."
?CCL47: EQUAL? PRSA,V?GIVE \?CCL51
EQUAL? PRSI,ROBOT \?CCL51
MOVE PRSO,ROBOT
PRINTI "The robot accepts the "
PRINTD PRSO
PRINT PERIOD-CR
RTRUE
?CCL51: EQUAL? PRSA,V?MUNG,V?THROW \FALSE
PRINTI "The robot (being of shoddy construction) disintegrates before your eyes."
CRLF
EQUAL? PRSA,V?THROW \?CCL62
PUSH PRSI
JUMP ?CND60
?CCL62: PUSH PRSO
?CND60: REMOVE STACK
RTRUE
.FUNCT TRIANGULAR-BUTTON-F
EQUAL? PRSA,V?PUSH \FALSE
EQUAL? WINNER,ADVENTURER \?CCL6
CALL JIGS-UP,STR?178
RSTACK
?CCL6: ZERO? CAROUSEL-ON /?PRT7
SET 'CAROUSEL-ON,0
JUMP ?PRE9
?PRT7: SET 'CAROUSEL-ON,1
?PRE9: FSET? VIOLIN,INVISIBLE \?PRG15
FCLEAR VIOLIN,INVISIBLE
FCLEAR CAROUSEL-ROOM,TOUCHBIT
PRINTR "You hear a distant thump."
?PRG15: PRINTR "Click."
.FUNCT CAGE-F,RARG
ZERO? CAGE-SOLVE-FLAG /FALSE
SET 'HERE,DINGY-CLOSET
RETURN HERE
.FUNCT I-CAGE-DEATH
EQUAL? HERE,DINGY-CLOSET,CAGE \FALSE
FSET PALANTIR-1,INVISIBLE
CALL JIGS-UP,STR?181
RSTACK
.FUNCT ALICE-HOLE
EQUAL? PRSA,V?EXAMINE,V?ENTER \?CCL3
CALL DO-WALK,P?EAST
RSTACK
?CCL3: EQUAL? PRSA,V?LOOK-INSIDE \?CCL5
PRINT ONLY-DARKNESS
RTRUE
?CCL5: EQUAL? PRSA,V?PUT \FALSE
EQUAL? PRSI,PSEUDO-OBJECT \FALSE
PRINTR "It doesn't fit."
.FUNCT GREEN-CAKE-F,F,N
EQUAL? PRSA,V?EAT \?CCL3
EQUAL? PRSO,GREEN-CAKE \?CCL3
EQUAL? HERE,TEA-ROOM \?CCL3
REMOVE GREEN-CAKE
FSET ALICE-TABLE,INVISIBLE
FSET ROBOT,INVISIBLE
FIRST? HERE >F /?PRG8
?PRG8: ZERO? F /?PRG17
NEXT? F >N /?BOGUS12
?BOGUS12: EQUAL? F,ADVENTURER /?CND13
FSET? F,TAKEBIT \?CND13
FSET F,NONLANDBIT
FSET F,TRYTAKEBIT
MOVE F,POSTS-ROOM
?CND13: SET 'F,N
JUMP ?PRG8
?PRG17: PRINTI "Suddenly, the room becomes huge (although your possessions retain their normal size)."
CRLF
CRLF
CALL GOTO,POSTS-ROOM
RSTACK
?CCL3: CALL CAKE-CRUMBLE
RSTACK
.FUNCT CAKE-F,F,N
EQUAL? PRSA,V?READ \?CCL3
FSET? PRSO,NONLANDBIT \?PRG9
PRINTR "The cake is now too tall to read."
?PRG9: PRINTI "The letters are tiny; all you can make out is ""E"
EQUAL? PRSO,RED-CAKE \?CCL13
PRINTI "VA"
JUMP ?PRG22
?CCL13: EQUAL? PRSO,ORANGE-CAKE \?PRG20
PRINTI "XP"
JUMP ?PRG22
?PRG20: PRINTI "NL"
?PRG22: PRINTR """."
?CCL3: EQUAL? PRSA,V?EAT \?CCL25
EQUAL? HERE,TEA-ROOM,POSTS-ROOM,POOL-ROOM \?CCL25
EQUAL? PRSO,ORANGE-CAKE \?CCL30
REMOVE PRSO
CALL JIGS-UP,STR?186
RSTACK
?CCL30: EQUAL? PRSO,RED-CAKE \?CCL32
REMOVE PRSO
CALL JIGS-UP,STR?187
RSTACK
?CCL32: EQUAL? PRSO,BLUE-CAKE \FALSE
REMOVE PRSO
PRINTI "The room shrinks."
CRLF
CRLF
EQUAL? HERE,POSTS-ROOM \?CCL39
FCLEAR ROBOT,INVISIBLE
FCLEAR ALICE-TABLE,INVISIBLE
FSET POSTS,INVISIBLE
FIRST? HERE >F /?PRG41
?PRG41: ZERO? F /?REP42
NEXT? F >N /?BOGUS45
?BOGUS45: EQUAL? F,ADVENTURER /?CND46
FSET? F,TAKEBIT \?CND46
FCLEAR F,NONLANDBIT
FCLEAR F,TRYTAKEBIT
MOVE F,TEA-ROOM
?CND46: SET 'F,N
JUMP ?PRG41
?REP42: CALL GOTO,TEA-ROOM
RSTACK
?CCL39: CALL JIGS-UP,STR?188
RSTACK
?CCL25: EQUAL? PRSA,V?PUT,V?THROW \?CCL51
EQUAL? PRSO,ORANGE-CAKE \?CCL51
EQUAL? HERE,TEA-ROOM,POSTS-ROOM,POOL-ROOM \?CCL51
REMOVE PRSO
CALL JIGS-UP,STR?186
RSTACK
?CCL51: EQUAL? PRSA,V?PUT,V?THROW \?CCL56
EQUAL? PRSI,POOL \?CCL56
EQUAL? PRSO,BLUE-CAKE,ORANGE-CAKE \?CND59
PRINTI """Splash!"""
CRLF
REMOVE PRSO
RTRUE
?CND59: MOVE PRSO,HERE
REMOVE PRSI
FCLEAR CANDY,INVISIBLE
PRINTR "The pool evaporates, leaving a damp (but still valuable) package of rare candies."
?CCL56: CALL CAKE-CRUMBLE
RSTACK
.FUNCT CAKE-CRUMBLE,CAKE
FSET? PRSO,FOODBIT \?CCL3
SET 'CAKE,PRSO
JUMP ?CND1
?CCL3: SET 'CAKE,PRSI
?CND1: EQUAL? HERE,TEA-ROOM,POSTS-ROOM,POOL-ROOM /FALSE
EQUAL? HERE,MACHINE-ROOM,DINGY-CLOSET,TOP-OF-WELL /FALSE
EQUAL? HERE,CAGE /FALSE
REMOVE CAKE
PRINTI "The "
PRINTD CAKE
PRINTR " crumbles to dust."
.FUNCT POSTS-ROOM-F,RARG
EQUAL? RARG,M-BEG \FALSE
EQUAL? PRSA,V?TAKE \FALSE
FSET? PRSO,NONLANDBIT \FALSE
PRINTI "The "
PRINTD PRSO
PRINTR " is now huge. You have no hope of taking it."
.FUNCT POOL-F
EQUAL? PRSA,V?DRINK \?CCL3
CALL PERFORM,V?DRINK,WATER
RTRUE
?CCL3: EQUAL? PRSA,V?LOOK-UNDER \?CCL5
PRINTR "You can't make out what's below the surface."
?CCL5: EQUAL? PRSA,V?ENTER \FALSE
CALL V-SWIM
RSTACK
.FUNCT CANDY-F
EQUAL? PRSA,V?READ,V?EXAMINE \?CCL3
PRINTR """Frobozz Magic Candy Company -- Special Assortment! Candied Grasshoppers, Chocolated Ants, and Worms Glacee!"""
?CCL3: EQUAL? PRSA,V?OPEN,V?EAT \FALSE
PRINTR "It's too rich for your tastes."
.ENDI

607
alice.zil Normal file
View file

@ -0,0 +1,607 @@
"ALICE for
Mini-Zork II: The Wizard of Frobozz
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
<ROOM RIDDLE-ROOM
(IN ROOMS)
(DESC "Riddle Room")
(NW TO CAROUSEL-ROOM)
(EAST TO CIRCULAR-ROOM IF RIDDLE-DOOR IS OPEN)
(FLAGS RLANDBIT)
(ACTION RIDDLE-ROOM-F)
(PSEUDO "RIDDLE" RIDDLE-PSEUDO)>
<ROUTINE RIDDLE-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This bare room has an exit in the northwest corner. To the east is a great ">
<COND (<FSET? ,RIDDLE-DOOR ,OPENBIT>
<TELL "open">)
(T
<TELL "closed">)>
<TELL
" door of stone. Above it is written: \"No one shall pass without solving
this riddle:" CR CR ,RIDDLE-TEXT>)
(<EQUAL? .RARG ,M-BEG>
<COND (<VERB? SAY>
<COND (<FSET? ,RIDDLE-DOOR ,OPENBIT>
<RFALSE>)
(<OR <EQUAL? <GET ,P-LEXV ,P-CONT> ,W?WELL>
<EQUAL? <GET ,P-LEXV <+ ,P-CONT 2>> ,W?WELL>>
<SETG SCORE <+ ,SCORE 5>>
<FSET ,RIDDLE-DOOR ,OPENBIT>
<TELL
"With a deafening clap of thunder, the door opens." CR>)
(T
<TELL "A hollow laugh comes from the door." CR>)>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<RTRUE>)>)>>
<ROUTINE RIDDLE-PSEUDO ()
<COND (<VERB? EXAMINE READ>
<TELL ,RIDDLE-TEXT>)>>
<OBJECT RIDDLE-DOOR
(IN RIDDLE-ROOM)
(DESC "stone door")
(SYNONYM DOOR)
(ADJECTIVE GREAT STONE)
(FLAGS DOORBIT CONTBIT NDESCBIT)
(ACTION RIDDLE-DOOR-F)>
<ROUTINE RIDDLE-DOOR-F ()
<COND (<OR <AND <VERB? OPEN>
<NOT <FSET? ,RIDDLE-DOOR ,OPENBIT>>>
<AND <VERB? CLOSE>
<FSET? ,RIDDLE-DOOR ,OPENBIT>>>
<TELL "It won't budge." CR>)>>
<ROOM CIRCULAR-ROOM
(IN ROOMS)
(DESC "Circular Room")
(LDESC
"This is a tall, damp room with brick walls. There are some etchings on
the walls. A passage leads west.")
(WEST TO RIDDLE-ROOM)
(UP "The walls cannot be climbed.")
(FLAGS RLANDBIT NONLANDBIT)
(GLOBAL WELL)>
<OBJECT BOTTOM-ETCHINGS
(IN CIRCULAR-ROOM)
(DESC "wall with etchings")
(SYNONYM ETCHINGS WALL)
(FLAGS READBIT NDESCBIT)
(TEXT
" o b o|
|
A G I|
|
E L|
|
m p a")>
<OBJECT PEARL-NECKLACE
(IN CIRCULAR-ROOM)
(DESC "pearl necklace")
(SYNONYM NECKLACE TREASURE)
(ADJECTIVE PEARL)
(SIZE 10)
(VALUE 15)
(FLAGS TAKEBIT)>
<OBJECT BUCKET
(IN CIRCULAR-ROOM)
(DESC "wooden bucket")
(LDESC
"There is a wooden bucket here, 3 feet in diameter and 3 feet high.")
(SYNONYM BUCKET)
(ADJECTIVE WOODEN)
(CAPACITY 100)
(SIZE 100)
(VTYPE 0)
(FLAGS VEHBIT OPENBIT CONTBIT)
(CONTFCN BUCKET-CONT)
(ACTION BUCKET-F)>
<ROUTINE BUCKET-CONT ()
<COND (<AND <VERB? TAKE>
<NOT <IN? ,WINNER ,BUCKET>>>
<TELL "You must get in the bucket to reach it." CR>)>>
<ROUTINE BUCKET-F ("OPTIONAL" (RARG ,M-BEG))
<COND (<EQUAL? .RARG ,M-BEG>
<COND (<AND <VERB? BURN>
<EQUAL? ,PRSO ,BUCKET>>
<TELL "The bucket appears to be fireproof." CR>)
(<AND <VERB? DROP PUT>
<EQUAL? ,PRSO ,WATER>
<EQUAL? ,PRSI ,BUCKET>
<IN? ,BUCKET ,CIRCULAR-ROOM>
<NOT <IN? ,WINNER ,BUCKET>>>
<MOVE ,BUCKET ,TOP-OF-WELL>
<MOVE ,WATER ,BUCKET>
<SETG BUCKET-TOP-FLAG T>
<ENABLE <QUEUE I-BUCKET 100>>
<TELL "The bucket swiftly rises up, and is gone." CR>)
(<VERB? KICK>
<JIGS-UP "If you insist.">)>)
(<EQUAL? .RARG ,M-END>
<COND (<AND <IN? ,WATER ,BUCKET>
<NOT ,BUCKET-TOP-FLAG>>
<SETG BUCKET-TOP-FLAG T>
<SETG EVAPORATED <>>
<PASS-THE-BUCKET ,TOP-OF-WELL>
<ENABLE <QUEUE I-BUCKET 100>>
<TELL "The bucket rises and" ,STOPS>)
(<AND ,BUCKET-TOP-FLAG
<NOT <IN? ,WATER ,BUCKET>>>
<COND (,EVAPORATED
<TELL
"The last of the water evaporates, and the bucket descends." CR CR>)
(T
<TELL "The bucket descends and" ,STOPS>)>
<SETG BUCKET-TOP-FLAG <>>
<PASS-THE-BUCKET ,CIRCULAR-ROOM>)>)
(<VERB? CLIMB-ON>
<PERFORM ,V?ENTER ,PRSO>
<RTRUE>)>>
<ROUTINE PASS-THE-BUCKET (R)
<MOVE ,BUCKET .R>
<COND (<IN? ,WINNER ,BUCKET>
<GOTO .R>)>>
<GLOBAL BUCKET-TOP-FLAG <>>
<GLOBAL EVAPORATED <>>
<ROUTINE I-BUCKET ()
<COND (<IN? ,WATER ,BUCKET>
<SETG EVAPORATED T>
<REMOVE ,WATER>)>
<RFALSE>>
<OBJECT WELL
(IN LOCAL-GLOBALS)
(DESC "well")
(SYNONYM WELL)
(ADJECTIVE MAGIC)
(FLAGS NDESCBIT)
(ACTION WELL-F)>
<ROUTINE WELL-F ()
<COND (<AND <VERB? THROW PUT DROP>
<FSET? ,PRSO ,TAKEBIT>>
<MOVE ,PRSO ,CIRCULAR-ROOM>
<TELL "The " D ,PRSO " is now at the bottom of the well." CR>)
(<VERB? CLIMB CLIMB-DOWN>
<TELL "You can't climb the well." CR>)>>
<ROOM TOP-OF-WELL
(IN ROOMS)
(DESC "Top of Well")
(LDESC
"You have made it to the top. Well done. There are etchings on the well. A
crack runs across the floor at the doorway to the east, but it can be crossed
easily. Another doorway leads northeast.")
(EAST TO TEA-ROOM)
(NE TO MACHINE-ROOM)
(DOWN "It's a long way down!")
(VALUE 10)
(FLAGS RLANDBIT NONLANDBIT)
(GLOBAL WELL)
(PSEUDO "CRACK" CRACK-PSEUDO)>
<ROUTINE CRACK-PSEUDO ()
<COND (<VERB? EXAMINE>
<TELL "It's a small, uninteresting crack." CR>)>>
<OBJECT TOP-ETCHINGS
(IN TOP-OF-WELL)
(DESC "wall with etchings")
(SYNONYM ETCHINGS WALL)
(FLAGS READBIT NDESCBIT)
(TEXT
" o b o|
r z|
f M A G I C z|
|
c W E L L y|
o n|
m p a")>
<OBJECT ROBOT
(IN TOP-OF-WELL)
(DESC "robot")
(SYNONYM ROBOT)
(FLAGS ACTORBIT CONTBIT OPENBIT)
(ACTION ROBOT-F)>
<ROUTINE ROBOT-F ("OPTIONAL" (RARG ,M-OBJECT)) ;"RARG necesary?"
<COND (<EQUAL? ,WINNER ,ROBOT>
<COND (<VERB? SGIVE>
<RFALSE>)
(<VERB? FOLLOW>
<TELL
"\"I'm too primitive. I can walk in any direction you order, though.\"" CR>)
(<AND <VERB? RAISE TAKE MOVE>
<EQUAL? ,PRSO ,CAGE-OBJECT>>
<TELL "The robots pulverizes the cage to dust." CR CR>
<DISABLE <INT I-CAGE-DEATH>>
<SETG WINNER ,ADVENTURER>
<FCLEAR ,ROBOT ,NDESCBIT>
<FSET ,PALANTIR-1 ,TAKEBIT>
<MOVE ,ROBOT ,DINGY-CLOSET>
<SETG CAGE-SOLVE-FLAG T>
<GOTO ,DINGY-CLOSET>)
(<VERB? DROP PUT THROW>
<COND (<NOT <ACCESSIBLE? ,ROBOT>>
<RFALSE>)
(T
<TELL ,B-W-C>
<COND (<IN? ,PRSO ,ROBOT>
<TELL "\"" CR>
<RFALSE>)
(T
<TELL " I don't have that!\"" CR>)>)>)
(<OR <VERB? WALK>
<AND <VERB? TAKE PUSH>
<NOT <FSET? ,PRSO ,ACTORBIT>>>>
<COND (<NOT <ACCESSIBLE? ,ROBOT>>
<RFALSE>)
(T
<TELL ,B-W-C "\"" CR>)>
<RFALSE>)
(T
<COND (<ACCESSIBLE? ,ROBOT>
<TELL
"\"My programming is insufficient for that task.\"" CR>)>
<RTRUE>)>)
(<VERB? OPEN LOOK-INSIDE CLOSE>
<TELL "The robot has no access panel." CR>)
(<AND <VERB? GIVE>
<EQUAL? ,PRSI ,ROBOT>>
<MOVE ,PRSO ,ROBOT>
<TELL "The robot accepts the " D ,PRSO ,PERIOD-CR>)
(<VERB? THROW MUNG>
<TELL
"The robot (being of shoddy construction) disintegrates before your eyes." CR>
<REMOVE <COND (<VERB? THROW> ,PRSI)
(T ,PRSO)>>)>>
<OBJECT ROBOT-LABEL
(IN TOP-OF-WELL)
(DESC "green piece of paper")
(SYNONYM PAPER PIECE)
(ADJECTIVE GREEN)
(SIZE 3)
(FLAGS READBIT TAKEBIT BURNBIT)
(TEXT
"This robot was trained at GUE Tech to perform simple household functions. To
activate, say:|
>ROBOT, <thing to do>|
A product of the Frobozz Magic Robot Company.")>
<ROOM MACHINE-ROOM
(IN ROOMS)
(DESC "Machine Room")
(LDESC
"This room is full of assorted machinery, whirring noisily. On one wall is a
triangular button labelled, \"DANGER -- HIGH VOLTAGE.\" There are exits to the
south and southwest.")
(SOUTH TO DINGY-CLOSET)
(SW TO TOP-OF-WELL)
(FLAGS RLANDBIT ONBIT)>
<OBJECT TRIANGULAR-BUTTON
(IN MACHINE-ROOM)
(DESC "triangular button")
(SYNONYM BUTTON)
(ADJECTIVE TRIANGULAR)
(FLAGS NDESCBIT)
(ACTION TRIANGULAR-BUTTON-F)>
<GLOBAL CAROUSEL-ON T>
<ROUTINE TRIANGULAR-BUTTON-F ()
<COND (<VERB? PUSH>
<COND (<EQUAL? ,WINNER ,ADVENTURER>
<JIGS-UP "You are instantly electrocuted.">)
(T
<SETG CAROUSEL-ON <NOT ,CAROUSEL-ON>>
<COND (<FSET? ,VIOLIN ,INVISIBLE>
<FCLEAR ,VIOLIN ,INVISIBLE>
<FCLEAR ,CAROUSEL-ROOM ,TOUCHBIT>
<TELL "You hear a distant thump." CR>)
(T
<TELL "Click." CR>)>)>)>>
<ROOM DINGY-CLOSET
(IN ROOMS)
(DESC "Dingy Closet")
(LDESC
"This is a former broom closet. A larger room lies to the north. Chiselled
on the wall are the words \"Protected by the Frobozz Magic Alarm Company.\"")
(OUT TO MACHINE-ROOM)
(NORTH TO MACHINE-ROOM)
(FLAGS ONBIT RLANDBIT)>
<OBJECT CAGE-OBJECT
(IN DINGY-CLOSET)
(DESC "solid steel cage")
(SYNONYM CAGE)
(ADJECTIVE STEEL SOLID)
(FLAGS INVISIBLE)>
<ROOM CAGE
(IN ROOMS)
(DESC "Cage")
(LDESC "You are trapped in a solid steel cage.")
(FLAGS RLANDBIT NWALLBIT ONBIT)
(ACTION CAGE-F)>
<GLOBAL CAGE-SOLVE-FLAG <>>
<ROUTINE CAGE-F (RARG)
<COND (,CAGE-SOLVE-FLAG
<SETG HERE ,DINGY-CLOSET>)>>
<ROUTINE I-CAGE-DEATH ()
<COND (<EQUAL? ,HERE ,DINGY-CLOSET ,CAGE>
<FSET ,PALANTIR-1 ,INVISIBLE>
<JIGS-UP "The poison gas takes effect.">)>>
<ROOM TEA-ROOM
(IN ROOMS)
(DESC "Tea Room")
(LDESC
"An oblong table here is set for afternoon tea. It is clear that the users
were indeed mad. To the east is a small hole (perhaps four inches high). A
doorway leads west.")
(EAST "Only a mouse could fit.")
(WEST TO TOP-OF-WELL)
(FLAGS RLANDBIT ONBIT)
(PSEUDO "HOLE" ALICE-HOLE)>
<ROUTINE ALICE-HOLE ()
<COND (<VERB? ENTER EXAMINE>
<DO-WALK ,P?EAST>)
(<VERB? LOOK-INSIDE>
<TELL ,ONLY-DARKNESS>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,PSEUDO-OBJECT>>
<TELL "It doesn't fit." CR>)>>
<OBJECT PORTRAIT
(IN TEA-ROOM)
(DESC "portrait of J. Pierpont Flathead")
(FDESC "A rare portrait of J. Pierpont Flathead hangs on the wall.")
(SYNONYM PORTRAIT PAINTING TREASURE)
(ADJECTIVE RARE FLATHEAD)
(SIZE 25)
(VALUE 20)
(FLAGS TAKEBIT BURNBIT)>
<OBJECT ALICE-TABLE
(IN TEA-ROOM)
(DESC "table")
(SYNONYM TABLE)
(ADJECTIVE OBLONG)
(CAPACITY 50)
(FLAGS CONTBIT SURFACEBIT OPENBIT)>
<OBJECT GREEN-CAKE
(SIZE 4)
(IN ALICE-TABLE)
(DESC "cake frosted with green letters")
(SYNONYM CAKE ICING CAKES LETTER)
(ADJECTIVE GREEN FROSTED)
(FLAGS READBIT TAKEBIT FOODBIT)
(TEXT "The icing spells, \"Eat Me.\"")
(ACTION GREEN-CAKE-F)>
<ROUTINE GREEN-CAKE-F ("AUX" F N)
<COND (<AND <VERB? EAT>
<EQUAL? ,PRSO ,GREEN-CAKE>
<EQUAL? ,HERE ,TEA-ROOM>>
<REMOVE ,GREEN-CAKE>
<FSET ,ALICE-TABLE ,INVISIBLE>
<FSET ,ROBOT ,INVISIBLE>
<SET F <FIRST? ,HERE>>
<REPEAT ()
<COND (<NOT .F>
<RETURN>)>
<SET N <NEXT? .F>>
<COND (<AND <NOT <EQUAL? .F ,ADVENTURER>>
<FSET? .F ,TAKEBIT>>
<FSET .F ,NONLANDBIT>
<FSET .F ,TRYTAKEBIT>
<MOVE .F ,POSTS-ROOM>)>
<SET F .N>>
<TELL
"Suddenly, the room becomes huge (although your possessions retain their
normal size)." CR CR>
<GOTO ,POSTS-ROOM>)
(T
<CAKE-CRUMBLE>)>>
<OBJECT BLUE-CAKE
(IN ALICE-TABLE)
(DESC "cake frosted with blue letters")
(SYNONYM CAKE ICING CAKES LETTER)
(ADJECTIVE BLUE FROSTED)
(SIZE 4)
(FLAGS READBIT TAKEBIT FOODBIT)
(ACTION CAKE-F)>
<OBJECT ORANGE-CAKE
(IN ALICE-TABLE)
(DESC "cake frosted with orange letters")
(SYNONYM CAKE CAKES ICING LETTER)
(ADJECTIVE ORANGE FROSTED)
(SIZE 4)
(FLAGS READBIT TAKEBIT FOODBIT)
(ACTION CAKE-F)>
<OBJECT RED-CAKE
(IN ALICE-TABLE)
(DESC "cake frosted with red letters")
(SYNONYM CAKE CAKES ICING LETTER)
(ADJECTIVE RED FROSTED)
(SIZE 4)
(FLAGS READBIT TAKEBIT FOODBIT)
(ACTION CAKE-F)>
<ROUTINE CAKE-F ("AUX" F N)
<COND (<VERB? READ>
<COND (<FSET? ,PRSO ,NONLANDBIT>
<TELL "The cake is now too tall to read." CR>)
(T
<TELL
"The letters are tiny; all you can make out is \"E">
<COND (<EQUAL? ,PRSO ,RED-CAKE>
<TELL "VA">)
(<EQUAL? ,PRSO ,ORANGE-CAKE>
<TELL "XP">)
(T
<TELL "NL">)>
<TELL "\"." CR>)>)
(<AND <VERB? EAT>
<EQUAL? ,HERE ,TEA-ROOM ,POSTS-ROOM ,POOL-ROOM>>
<COND (<EQUAL? ,PRSO ,ORANGE-CAKE>
<REMOVE ,PRSO>
<JIGS-UP
"You are blasted to smithereens (wherever they are).">)
(<EQUAL? ,PRSO ,RED-CAKE>
<REMOVE ,PRSO>
<JIGS-UP "Taste: yum. Effect: massive dehydration.">)
(<EQUAL? ,PRSO ,BLUE-CAKE>
<REMOVE ,PRSO>
<TELL "The room shrinks." CR CR>
<COND (<EQUAL? ,HERE ,POSTS-ROOM>
<FCLEAR ,ROBOT ,INVISIBLE>
<FCLEAR ,ALICE-TABLE ,INVISIBLE>
<FSET ,POSTS ,INVISIBLE>
<SET F <FIRST? ,HERE>>
<REPEAT ()
<COND (<NOT .F>
<RETURN>)>
<SET N <NEXT? .F>>
<COND (<AND <NOT <EQUAL? .F ,ADVENTURER>>
<FSET? .F ,TAKEBIT>>
<FCLEAR .F ,NONLANDBIT>
<FCLEAR .F ,TRYTAKEBIT>
<MOVE .F ,TEA-ROOM>)>
<SET F .N>>
<GOTO ,TEA-ROOM>)
(T
<JIGS-UP
"The room is now too small to hold you, and the walls are tougher
than your body." >)>)>)
(<AND <VERB? THROW PUT>
<EQUAL? ,PRSO ,ORANGE-CAKE>
<EQUAL? ,HERE ,TEA-ROOM ,POSTS-ROOM ,POOL-ROOM>>
<REMOVE ,PRSO>
<JIGS-UP
"You are blasted to smithereens (wherever they are).">)
(<AND <VERB? THROW PUT>
<EQUAL? ,PRSI ,POOL>>
<COND (<EQUAL? ,PRSO ,BLUE-CAKE ,ORANGE-CAKE>
<TELL "\"Splash!\"" CR>
<REMOVE ,PRSO>
<RTRUE>)>
<MOVE ,PRSO ,HERE>
<REMOVE ,PRSI>
<FCLEAR ,CANDY ,INVISIBLE>
<TELL
"The pool evaporates, leaving a damp (but still valuable) package of
rare candies." CR>)
(T
<CAKE-CRUMBLE>)>>
<ROUTINE CAKE-CRUMBLE ("AUX" CAKE)
<COND (<FSET? ,PRSO ,FOODBIT>
<SET CAKE ,PRSO>)
(T
<SET CAKE ,PRSI>)>
<COND (<OR <EQUAL? ,HERE ,TEA-ROOM ,POSTS-ROOM ,POOL-ROOM>
<EQUAL? ,HERE ,MACHINE-ROOM ,DINGY-CLOSET ,TOP-OF-WELL>
<EQUAL? ,HERE ,CAGE>>
<RFALSE>)
(T
<REMOVE .CAKE>
<TELL "The " D .CAKE " crumbles to dust." CR>)>>
<ROOM POSTS-ROOM
(IN ROOMS)
(DESC "Posts Room")
(LDESC
"In the center of this enormous room, four wooden posts support a huge
oblong roof. To the east is a large hole; to the west a gaping chasm.")
(EAST TO POOL-ROOM)
(WEST "A chasm blocks your way.")
(FLAGS RLANDBIT ONBIT)
(VALUE 10)
(GLOBAL CHASM)
(ACTION POSTS-ROOM-F)>
<ROUTINE POSTS-ROOM-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-BEG>
<VERB? TAKE>
<FSET? ,PRSO ,NONLANDBIT>>
<TELL
"The " D ,PRSO " is now huge. You have no hope of taking it." CR>)>>
<OBJECT POSTS
(IN POSTS-ROOM)
(DESC "group of wooden posts")
(SYNONYM POSTS POST)
(ADJECTIVE WOODEN)
(FLAGS NDESCBIT)>
<ROOM POOL-ROOM
(IN ROOMS)
(DESC "Pool Room")
(LDESC "The far half of this room is depressed. The only exit is west.")
(OUT TO POSTS-ROOM)
(WEST TO POSTS-ROOM)
(FLAGS RLANDBIT)>
<OBJECT POOL
(IN POOL-ROOM)
(DESC "pool")
(LDESC
"The depressed area is filled with water. There is something hazy at the
deepest part of the pool.")
(SYNONYM POOL)
(ACTION POOL-F)>
<ROUTINE POOL-F ()
<COND (<VERB? DRINK>
<PERFORM ,V?DRINK ,WATER>
<RTRUE>)
(<VERB? LOOK-UNDER>
<TELL "You can't make out what's below the surface." CR>)
(<VERB? ENTER>
<V-SWIM>)>>
<OBJECT CANDY
(IN POOL-ROOM)
(DESC "package of candy")
(LDESC "There is a package of candied insects here.")
(SYNONYM PACKAGE CANDY INSECTS)
(ADJECTIVE CANDIED RARE)
(SIZE 8)
(VALUE 15)
(FLAGS FOODBIT TAKEBIT INVISIBLE READBIT)
(ACTION CANDY-F)>
<ROUTINE CANDY-F ()
<COND (<VERB? EXAMINE READ>
<TELL
"\"Frobozz Magic Candy Company -- Special Assortment! Candied Grasshoppers,
Chocolated Ants, and Worms Glacee!\"" CR>)
(<VERB? EAT OPEN>
<TELL "It's too rich for your tastes." CR>)>>

147
dungeon.zabstr Normal file
View file

@ -0,0 +1,147 @@
<ROOM INSIDE-THE-BARROW (IN ROOMS) (DESC "Inside the Barrow") (LDESC
"You are in an ancient barrow which opens to the southwest.") (SW TO
GREAT-CAVERN) (FLAGS RLANDBIT ONBIT)>
<OBJECT LAMP (IN INSIDE-THE-BARROW) (DESC "lamp") (FDESC
"A familiar brass lantern is lying on the ground.") (SYNONYM LAMP LANTERN LIGHT
) (ADJECTIVE BRASS) (SIZE 15) (FLAGS TAKEBIT LIGHTBIT) (ACTION LAMP-F)>
<DEFINE-ROUTINE LAMP-F>
<GLOBAL LAMP-BURNED-OUT <>>
<DEFINE-ROUTINE I-LANTERN>
<GLOBAL LAMP-TABLE <TABLE 225 "The lamp appears a bit dimmer." 75
"The lamp is definitely dimmer now." 25 "The lamp is nearly out." 0>>
<ROOM GREAT-CAVERN (IN ROOMS) (DESC "Great Cavern") (LDESC
"This is a huge limestone cavern, glowing with dim, phosphorescent light from
far above. Narrow paths wind south and northeast.") (NE TO INSIDE-THE-BARROW) (
SOUTH TO SHALLOW-FORD) (FLAGS RLANDBIT ONBIT)>
<ROOM SHALLOW-FORD (IN ROOMS) (DESC "Shallow Ford") (LDESC
"You are ankle deep in a stream. To the southwest is a dark tunnel, and to the
north a dim cavern.") (NORTH TO GREAT-CAVERN) (SW TO DARK-TUNNEL) (FLAGS
RLANDBIT ONBIT) (GLOBAL GLOBAL-WATER STREAM)>
<ROOM DARK-TUNNEL (IN ROOMS) (DESC "Dark Tunnel") (LDESC
"This smooth-walled tunnel runs northeast to southwest. A faint whirring sound
comes from the latter direction. Another opening, choked with leaves, leads
southeast.") (NE TO SHALLOW-FORD) (SE TO FORMAL-GARDEN) (SW TO CAROUSEL-ROOM) (
WEST TO DEEP-FORD IF SECRET-DOOR) (FLAGS RLANDBIT)>
<OBJECT SWORD (IN DARK-TUNNEL) (DESC "elvish sword") (LDESC
"An Elvish sword of great antiquity is here.") (SYNONYM SWORD BLADE) (ADJECTIVE
ELVISH OLD ANTIQUE) (FLAGS TAKEBIT WEAPONBIT TRYTAKEBIT) (SIZE 30)>
<GLOBAL SECRET-DOOR <>>
<ROOM DEEP-FORD (IN ROOMS) (DESC "Deep Ford") (LDESC
"You are waist deep in a cold stream. On the northern bank, the walls rise
to a small ledge. A \"whir\" comes from an opening to the south.") (NORTH TO
LEDGE-IN-RAVINE) (UP TO LEDGE-IN-RAVINE) (SOUTH TO CAROUSEL-ROOM) (EAST TO
DARK-TUNNEL IF SECRET-DOOR) (FLAGS RLANDBIT) (GLOBAL GLOBAL-WATER STREAM)>
<ROOM CAROUSEL-ROOM (IN ROOMS) (DESC "Carousel Room") (NORTH TO DEEP-FORD) (NE
TO DARK-TUNNEL) (EAST TO TOPIARY) (SE TO RIDDLE-ROOM) (SOUTH TO MENHIR-ROOM) (
SW TO GUARDED-ROOM) (WEST TO ROOM-8) (NW TO COOL-ROOM) (FLAGS RLANDBIT) (ACTION
CAROUSEL-ROOM-F)>
<DEFINE-ROUTINE CAROUSEL-ROOM-F>
<GLOBAL CAROUSEL-EXITS <TABLE COOL-ROOM DARK-TUNNEL DEEP-FORD TOPIARY
RIDDLE-ROOM MENHIR-ROOM GUARDED-ROOM>>
<OBJECT VIOLIN (IN CAROUSEL-ROOM) (DESC "fancy violin") (LDESC
"There is a Stradivarius here.") (SYNONYM STRADIVARIUS VIOLIN TREASURE) (
ADJECTIVE FANCY) (SIZE 10) (VALUE 20) (FLAGS INVISIBLE TAKEBIT) (ACTION
VIOLIN-F)>
<DEFINE-ROUTINE VIOLIN-F>
<ROOM ROOM-8 (IN ROOMS) (DESC "Room 8") (LDESC
"This is a small chamber carved from the western end of a short crawl. On
the wall is crudely chiseled the number \"8\".") (EAST TO CAROUSEL-ROOM) (FLAGS
RLANDBIT)>
<OBJECT BILLS (IN ROOM-8) (DESC "stack of zorkmid bills") (LDESC
"On the floor is a neat stack of 200 zorkmid bills.") (SYNONYM BILLS STACK
MONEY TREASURE) (ADJECTIVE NEAT ZORKMID) (VALUE 25) (SIZE 10) (FLAGS READBIT
TAKEBIT BURNBIT) (TEXT
"Each bill is worth 100 zorkmids and bears the legend \"In Frobs We Trust\".")
(ACTION BILLS-F)>
<DEFINE-ROUTINE BILLS-F>
<ROOM MENHIR-ROOM (IN ROOMS) (DESC "Menhir Room") (NORTH TO CAROUSEL-ROOM) (SW
TO KENNEL IF MENHIR-POSITION ELSE
"You are trying to walk through an enormous rock.") (SOUTH TO CERBERUS-ROOM) (
FLAGS RLANDBIT) (GLOBAL MENHIR) (ACTION MENHIR-ROOM-F)>
<DEFINE-ROUTINE MENHIR-ROOM-F>
<GLOBAL MENHIR-POSITION <>>
<DEFINE-ROUTINE DESCRIBE-MENHIR>
<OBJECT GLOBAL-MENHIR (IN LOCAL-GLOBALS) (DESC "enormous menhir") (SYNONYM
MENHIR ROCK STONE) (ADJECTIVE HUGE HEAVY ENORMOUS) (FLAGS NDESCBIT READBIT) (
ACTION GLOBAL-MENHIR-F)>
<DEFINE-ROUTINE GLOBAL-MENHIR-F>
<OBJECT MENHIR (IN LOCAL-GLOBALS) (DESC "enormous menhir") (SYNONYM MENHIR ROCK
STONE F) (ADJECTIVE HUGE HEAVY ENORMOUS) (FLAGS NDESCBIT READBIT) (ACTION
MENHIR-F)>
<DEFINE-ROUTINE MENHIR-F>
<ROOM KENNEL (IN ROOMS) (DESC "Kennel") (LDESC
"This was once a kennel for a large dog (some of the bones would fit a
dinosaur). The only exit is northeast.") (FLAGS RLANDBIT) (NE TO MENHIR-ROOM IF
MENHIR-POSITION ELSE "You are trying to walk through an enormous rock.") (OUT
TO MENHIR-ROOM IF MENHIR-POSITION ELSE
"You are trying to walk through an enormous rock.") (GLOBAL MENHIR)>
<OBJECT COLLAR (IN KENNEL) (SYNONYM COLLAR) (ADJECTIVE HUGE GIANT DOG) (FDESC
"A gigantic dog collar lies amidst the dust.") (DESC "gigantic dog collar") (
FLAGS TAKEBIT) (VALUE 15) (ACTION COLLAR-F)>
<DEFINE-ROUTINE COLLAR-F>
<ROOM CERBERUS-ROOM (IN ROOMS) (DESC "Cerberus Room") (LDESC
"This is the entrance to a huge tomb. A passage leads north.") (SOUTH TO CRYPT
IF CERBERUS-LEASHED ELSE "The huge dog snaps at you.") (IN TO CRYPT IF
CERBERUS-LEASHED ELSE "The huge dog snaps at you.") (NORTH TO MENHIR-ROOM) (
FLAGS RLANDBIT) (PSEUDO "TOMB" TOMB-PSEUDO "CRYPT" TOMB-PSEUDO)>
<DEFINE-ROUTINE TOMB-PSEUDO>
<OBJECT GLOBAL-CERBERUS (IN LOCAL-GLOBALS) (DESC "three-headed dog") (SYNONYM
CERBERUS DOG HOUND MONSTER) (ADJECTIVE HUGE GIANT THREE HEADED) (ACTION
GLOBAL-CERBERUS-F)>
<DEFINE-ROUTINE GLOBAL-CERBERUS-F>
<OBJECT CERBERUS (IN CERBERUS-ROOM) (DESC "three-headed dog") (LDESC
"A vicious-looking dog guards the entrance to the south. It's your
usual dog, except that it has three heads and is the size of an elephant.") (
SYNONYM CERBERUS DOG HOUND MONSTER) (ADJECTIVE HUGE GIANT THREE HEADED) (FLAGS
ACTORBIT OPENBIT CONTBIT) (ACTION CERBERUS-F)>
<GLOBAL CERBERUS-LEASHED <>>
<DEFINE-ROUTINE CERBERUS-F>
<ROOM CRYPT (IN ROOMS) (DESC "Crypt") (LDESC
"Before you are the earthly remains of the mighty Flatheads, twelve somewhat
flat heads mounted securely on poles. There is writing carved on the crypt.
To the north and south are dark doorways.") (NORTH TO CERBERUS-ROOM) (SOUTH TO
ZORK3) (VALUE 2) (FLAGS RLANDBIT)>
<OBJECT HEADS (IN CRYPT) (DESC "set of poled heads") (SYNONYM HEADS HEAD POLE
POLES) (FLAGS NDESCBIT TRYTAKEBIT) (ACTION HEADS-F)>
<DEFINE-ROUTINE HEADS-F>
<OBJECT CRYPT-OBJECT (IN CRYPT) (DESC "marble crypt") (SYNONYM TOMB CRYPT GRAVE
) (ADJECTIVE MARBLE) (FLAGS NDESCBIT READBIT) (TEXT
"\"Here lie the Flatheads, whose heads were placed on poles by the
Dungeon Master for amazing untastefulness.\"") (ACTION CRYPT-OBJECT-F)>
<DEFINE-ROUTINE CRYPT-OBJECT-F>
<ROOM ZORK3 (IN ROOMS) (DESC "Landing") (FLAGS RLANDBIT ONBIT) (ACTION ZORK3-F)
>
<DEFINE-ROUTINE ZORK3-F>
<GLOBAL MUD-FLAG <>>
<GLOBAL MATOBJ <>>
<GLOBAL PUNLOCK-FLAG <>>
<GLOBAL PLOOK-FLAG <>>
<ROOM LEDGE-IN-RAVINE (IN ROOMS) (DESC "Ledge in Ravine") (SOUTH TO DEEP-FORD)
(DOWN TO DEEP-FORD) (WEST TO DRAGON-ROOM) (NORTH TO DREARY-ROOM IF PDOOR IS
OPEN) (IN TO DREARY-ROOM IF PDOOR IS OPEN) (FLAGS RLANDBIT) (GLOBAL CHASM PDOOR
STREAM PWINDOW) (ACTION LEDGE-IN-RAVINE-F)>
<DEFINE-ROUTINE LEDGE-IN-RAVINE-F>
<DEFINE-ROUTINE P-DOOR>
<DEFINE-ROUTINE PCHECK>
<ROOM DREARY-ROOM (IN ROOMS) (DESC "Dreary Room") (SOUTH TO LEDGE-IN-RAVINE IF
PDOOR IS OPEN) (OUT TO LEDGE-IN-RAVINE IF PDOOR IS OPEN) (FLAGS RLANDBIT ONBIT)
(GLOBAL PDOOR PWINDOW) (ACTION DREARY-ROOM-F)>
<DEFINE-ROUTINE DREARY-ROOM-F>
<OBJECT PDOOR (IN LOCAL-GLOBALS) (DESC "door of oak") (SYNONYM DOOR) (ADJECTIVE
WOODEN OAK) (FLAGS DOORBIT CONTBIT) (ACTION PDOOR-F)>
<DEFINE-ROUTINE PDOOR-F>
<OBJECT PWINDOW (IN LOCAL-GLOBALS) (DESC "barred window") (SYNONYM WINDOW) (
ADJECTIVE BARRED) (FLAGS DOORBIT) (ACTION PWINDOW-F)>
<DEFINE-ROUTINE PWINDOW-F>
<OBJECT PTABLE (IN DREARY-ROOM) (DESC "table") (SYNONYM TABLE) (ADJECTIVE DUSTY
WOODEN) (CAPACITY 40) (FLAGS NDESCBIT CONTBIT SURFACEBIT OPENBIT)>
<OBJECT PCRACK (IN DREARY-ROOM) (DESC "crack") (SYNONYM CRACK) (ADJECTIVE
NARROW) (FLAGS NDESCBIT)>
<OBJECT KEYHOLE-1 (IN LEDGE-IN-RAVINE) (DESC "keyhole") (SYNONYM KEYHOLE HOLE)
(FLAGS NDESCBIT) (ACTION PKEYHOLE-F)>
<OBJECT KEYHOLE-2 (IN DREARY-ROOM) (DESC "keyhole") (SYNONYM KEYHOLE HOLE) (
FLAGS NDESCBIT) (ACTION PKEYHOLE-F)>
<DEFINE-ROUTINE PKEYHOLE-F>
<OBJECT KEY (IN KEYHOLE-2) (DESC "rusty iron key") (SYNONYM KEY) (ADJECTIVE
IRON RUSTY) (SIZE 2) (FLAGS TAKEBIT NDESCBIT TOOLBIT)>

367
dungeon.zap Normal file
View file

@ -0,0 +1,367 @@
.FUNCT LAMP-F
EQUAL? PRSA,V?THROW \?CCL3
EQUAL? PRSO,LAMP \?CCL3
PRINTR "You'd break it!"
?CCL3: EQUAL? PRSA,V?LAMP-OFF,V?LAMP-ON,V?EXAMINE \?CCL9
ZERO? LAMP-BURNED-OUT /?CCL9
PRINTR "The lamp has burned out."
?CCL9: EQUAL? PRSA,V?LAMP-ON \?CCL15
CALL INT,I-LANTERN
PUT STACK,0,1
RFALSE
?CCL15: EQUAL? PRSA,V?LAMP-OFF \?CCL17
CALL INT,I-LANTERN
PUT STACK,0,0
RFALSE
?CCL17: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTI "The lamp is o"
FSET? LAMP,ONBIT \?PRG27
PRINTC 110
JUMP ?PRG29
?PRG27: PRINTI "ff"
?PRG29: PRINT PERIOD-CR
RTRUE
.FUNCT I-LANTERN,TICK,TBL
VALUE 'LAMP-TABLE >TBL
GET TBL,0 >TICK
CALL QUEUE,I-LANTERN,TICK
PUT STACK,0,1
ZERO? TICK \?CND1
FCLEAR LAMP,ONBIT
SET 'LAMP-BURNED-OUT,TRUE-VALUE
?CND1: CALL ACCESSIBLE?,LAMP
ZERO? STACK /?CND3
ZERO? TICK \?PRG10
PRINTI "You'd better have more light than from the "
PRINTD LAMP
PRINT PERIOD-CR
JUMP ?CND3
?PRG10: GET TBL,1
PRINT STACK
CRLF
?CND3: ZERO? TICK /FALSE
ADD TBL,4 >LAMP-TABLE
RETURN LAMP-TABLE
.FUNCT CAROUSEL-ROOM-F,RARG
EQUAL? RARG,M-LOOK \?CCL3
PRINTI "Eight identical passages leave this large circular room. The ceiling is lost in gloom."
ZERO? CAROUSEL-ON /?CND6
PRINTR " A loud whirring sound comes from all around, and you feel disoriented."
?CND6: CRLF
RTRUE
?CCL3: ZERO? CAROUSEL-ON /FALSE
EQUAL? RARG,M-BEG \FALSE
EQUAL? PRSA,V?WALK \FALSE
EQUAL? PRSO,P?DOWN,P?UP /FALSE
PRINTI "You're not sure which direction is which..."
CRLF
CRLF
EQUAL? PRSO,P?WEST /?CTR19
RANDOM 100
GRTR? 80,STACK \FALSE
?CTR19: CALL PICK-ONE,CAROUSEL-EXITS
CALL GOTO,STACK
RSTACK
.FUNCT VIOLIN-F
EQUAL? PRSA,V?PLAY \FALSE
EQUAL? PRSO,VIOLIN \FALSE
PRINTR "An offensive noise issues from the violin."
.FUNCT BILLS-F
EQUAL? PRSA,V?BURN \FALSE
PRINTI "Nothing like having money to burn! "
RFALSE
.FUNCT MENHIR-ROOM-F,RARG
EQUAL? RARG,M-FLASH \?CCL3
ZERO? MENHIR-POSITION /?CCL3
CALL DESCRIBE-MENHIR
RSTACK
?CCL3: EQUAL? RARG,M-LOOK \FALSE
PRINTI "Large limestone chunks lie about this former quarry, which appears to have produced menhirs (standing stones). Obvious passages lead north and south."
CRLF
IN? MENHIR,LOCAL-GLOBALS \TRUE
CALL DESCRIBE-MENHIR
RTRUE
.FUNCT DESCRIBE-MENHIR
EQUAL? HERE,MENHIR-ROOM \?PRG23
EQUAL? MENHIR-POSITION,FALSE-VALUE \?CCL6
PRINTR "One large menhir blocks a dark opening leading southwest."
?CCL6: EQUAL? MENHIR-POSITION,1 \?CCL10
PRINTR "A menhir lies near a southwest passage."
?CCL10: EQUAL? MENHIR-POSITION,2 \?CCL14
PRINTR "A dark opening leads southwest."
?CCL14: EQUAL? MENHIR-POSITION,3 \?PRG21
PRINTR "There is a huge menhir here."
?PRG21: PRINTR "A huge menhir is floating in midair above a southwest passage."
?PRG23: PRINTR "A dark opening leads southwest."
.FUNCT GLOBAL-MENHIR-F
PRINTR "It's not here."
.FUNCT MENHIR-F
EQUAL? PRSA,V?LOOK-BEHIND,V?LOOK-UNDER \?CCL3
ZERO? MENHIR-POSITION \?CCL3
PRINTR "There's a dark passage beyond the menhir."
?CCL3: EQUAL? PRSA,V?TURN,V?MOVE,V?TAKE \?CCL9
PRINTR "The menhir weighs many tons!"
?CCL9: EQUAL? PRSA,V?READ \?CCL13
PRINTR """F"""
?CCL13: EQUAL? PRSA,V?EXAMINE \?CCL17
PRINTR "The menhir is carved with an ornate letter ""F""."
?CCL17: EQUAL? PRSA,V?ENCHANT \?CCL21
EQUAL? SPELL-USED,W?FLOAT \?CCL21
SET 'MENHIR-POSITION,3
PRINTR "The menhir floats majestically into the air. The passage beyond beckons invitingly."
?CCL21: EQUAL? PRSA,V?DISENCHANT \FALSE
EQUAL? SPELL-USED,W?FLOAT \FALSE
SET 'MENHIR-POSITION,FALSE-VALUE
EQUAL? HERE,MENHIR-ROOM,KENNEL \FALSE
PRINTR "The menhir sinks to the ground."
.FUNCT COLLAR-F
EQUAL? PRSA,V?TAKE \?CCL3
ZERO? CERBERUS-LEASHED /?CCL3
CALL JIGS-UP,STR?127
RSTACK
?CCL3: EQUAL? PRSA,V?ENCHANT \FALSE
EQUAL? SPELL-USED,W?FLOAT \FALSE
CALL PERFORM,V?ENCHANT,CERBERUS
RTRUE
.FUNCT TOMB-PSEUDO
EQUAL? PRSA,V?ENTER \FALSE
CALL DO-WALK,P?SOUTH
RSTACK
.FUNCT GLOBAL-CERBERUS-F
PRINTR "He's not here."
.FUNCT CERBERUS-F
EQUAL? PRSA,V?RAISE,V?RUB,V?WAVE \?CCL3
EQUAL? PRSO,WAND \?CCL3
PRINTI "The dog looks puzzled."
CRLF
RFALSE
?CCL3: ZERO? WAND-ON /?CCL9
EQUAL? PRSA,V?INCANT,V?SAY /FALSE
?CCL9: CALL HELLO?,CERBERUS
ZERO? STACK /?CCL13
ZERO? CERBERUS-LEASHED /?PRG19
PRINTR """Arf! Arf!"""
?PRG19: PRINTR """Grrrr!"""
?CCL13: EQUAL? PRSA,V?MUNG,V?ATTACK \?CCL22
ZERO? CERBERUS-LEASHED /?PRG28
REMOVE CERBERUS
PRINTR "With a quiet bark of disappointment, the creature expires into a small pile of dust which blows away into nothing."
?PRG28: PRINTR "The maddened dog-thing snaps at you viciously."
?CCL22: EQUAL? PRSA,V?PUT-ON,V?PUT \?CCL31
EQUAL? PRSO,COLLAR \?CCL31
SET 'CERBERUS-LEASHED,TRUE-VALUE
MOVE COLLAR,CERBERUS
FSET COLLAR,NDESCBIT
FSET COLLAR,TRYTAKEBIT
PUTP CERBERUS,P?LDESC,STR?131
PRINTR "All three heads begin licking your face, and its huge tail wags enthusiastically, almost blowing you over from the breeze it creates."
?CCL31: EQUAL? PRSA,V?ENCHANT \?CCL37
EQUAL? SPELL-USED,W?FLOAT \?CCL40
SET 'SPELL-HANDLED?,TRUE-VALUE
PRINTR "The huge dog rises an inch off the ground, for a moment."
?CCL40: EQUAL? SPELL-USED,W?FEEBLE \FALSE
PRINTR "What an effect! He now has the strength of just one elephant, rather than ten!"
?CCL37: ZERO? CERBERUS-LEASHED \?CCL48
PRINTR "The three-headed dog snaps at you viciously!"
?CCL48: ZERO? CERBERUS-LEASHED /FALSE
EQUAL? PRSA,V?RUB \FALSE
PRINTR "The dog slobbers and whines with uncontained joy."
.FUNCT HEADS-F
EQUAL? PRSA,V?TELL,V?HELLO \?CCL3
PRINTR "Dead Flatheads tell no tales."
?CCL3: EQUAL? PRSA,V?RUB,V?ATTACK,V?KICK /?CCL7
EQUAL? PRSA,V?BURN,V?TAKE,V?OPEN \FALSE
?CCL7: CALL JIGS-UP,STR?133
RSTACK
.FUNCT CRYPT-OBJECT-F
EQUAL? PRSA,V?OPEN \FALSE
PRINTR "The crypt is sealed for all time."
.FUNCT ZORK3-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "A rough-hewn stair leads down into darkness. "
IN? WAND,WINNER \?CCL8
PRINTI "The wand vibrates and are compelled downward. There is a burst of light, and you tumble down the staircase! At the bottom, a vast red-lit hall, guarded by sinister statues, is visible far ahead.
You have conquered the Wizard of Frobozz and become master of his domain, but the final challenge awaits! (The Zork Trilogy concludes with ""Zork III: The Dungeon Master"".)"
CRLF
CRLF
CALL FINISH
RSTACK
?CCL8: CALL JIGS-UP,STR?135
RSTACK
.FUNCT LEDGE-IN-RAVINE-F,RARG
EQUAL? RARG,M-LOOK \?CCL3
PRINTI "To the south, a stream runs through a narrow ravine. It looks as if you could scramble down to the stream. A smokey odor drifts in from the west. "
CALL P-DOOR,STR?136
RSTACK
?CCL3: EQUAL? PRSA,V?LOOK /FALSE
CALL PCHECK
RFALSE
.FUNCT P-DOOR,STR
ZERO? PLOOK-FLAG /?PRG3
SET 'PLOOK-FLAG,FALSE-VALUE
RFALSE
?PRG3: PRINTI "On the "
PRINT STR
PRINTI " side of the room is an oak door with a small barred window and a formidable lock (with keyhole)."
ZERO? MUD-FLAG /?CND5
PRINTC 32
PRINT PLACE-MAT-VISIBLE
ZERO? MATOBJ /?CND5
PRINTI " Lying on the place mat is a "
PRINTD MATOBJ
PRINTR "."
?CND5: CRLF
RTRUE
.FUNCT PCHECK
SET 'PLOOK-FLAG,FALSE-VALUE
IN? KEY,KEYHOLE-2 \?CCL3
FSET KEY,NDESCBIT
JUMP ?CND1
?CCL3: FCLEAR KEY,NDESCBIT
?CND1: CALL HELD?,PLACE-MAT
ZERO? STACK /?CND4
SET 'MUD-FLAG,FALSE-VALUE
?CND4: ZERO? MUD-FLAG /?CCL8
MOVE PLACE-MAT,HERE
FSET PLACE-MAT,NDESCBIT
RTRUE
?CCL8: FCLEAR PLACE-MAT,NDESCBIT
RTRUE
.FUNCT DREARY-ROOM-F,RARG
EQUAL? RARG,M-LOOK \?CCL3
PRINTI "The room is eerily lit by a red glow emanating from a crack in one wall. The light falls upon a dusty wooden table. "
CALL P-DOOR,STR?137
RSTACK
?CCL3: CALL PCHECK
RFALSE
.FUNCT PDOOR-F,K
EQUAL? PRSA,V?LOOK-UNDER \?CCL3
ZERO? MUD-FLAG /?CCL3
PRINT PLACE-MAT-VISIBLE
CRLF
RTRUE
?CCL3: EQUAL? PRSA,V?UNLOCK \?CCL9
EQUAL? PRSI,KEY \?CCL12
SET 'PUNLOCK-FLAG,TRUE-VALUE
PRINTR "The door is now unlocked."
?CCL12: EQUAL? PRSI,GOLD-KEY \?PRG19
PRINT DOESNT-FIT-LOCK
RTRUE
?PRG19: CALL PICK-ONE,YUKS
PRINT STACK
CRLF
RTRUE
?CCL9: EQUAL? PRSA,V?LOCK \?CCL22
EQUAL? PRSI,KEY \?CCL25
SET 'PUNLOCK-FLAG,FALSE-VALUE
PRINTR "The door is locked."
?CCL25: EQUAL? PRSI,GOLD-KEY \?PRG32
PRINT DOESNT-FIT-LOCK
RTRUE
?PRG32: CALL PICK-ONE,YUKS
PRINT STACK
CRLF
RTRUE
?CCL22: EQUAL? PRSA,V?PUT-UNDER \?CCL35
EQUAL? PRSO,ROBOT-LABEL \?CCL38
PRINTI "The tiny paper vanishes under the door."
CRLF
EQUAL? HERE,LEDGE-IN-RAVINE \?CCL43
PUSH DREARY-ROOM
JUMP ?CND41
?CCL43: PUSH LEDGE-IN-RAVINE
?CND41: MOVE PRSO,STACK
RTRUE
?CCL38: EQUAL? PRSO,NEWSPAPER \FALSE
PRINTR "The newspaper crumples up and won't go under the door."
?CCL35: EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE
ZERO? PUNLOCK-FLAG /?PRG53
CALL OPEN-CLOSE
RSTACK
?PRG53: PRINTR "The door is locked."
.FUNCT PWINDOW-F
EQUAL? PRSA,V?LOOK-INSIDE \?CCL3
SET 'PLOOK-FLAG,TRUE-VALUE
FSET? PDOOR,OPENBIT \?CCL6
PRINTR "The door is open!"
?CCL6: EQUAL? HERE,DREARY-ROOM \?CCL11
PUSH LEDGE-IN-RAVINE
JUMP ?CND9
?CCL11: PUSH DREARY-ROOM
?CND9: CALL GO&LOOK,STACK
RSTACK
?CCL3: EQUAL? PRSA,V?ENTER \FALSE
PRINTR "Perhaps if you were diced...."
.FUNCT PKEYHOLE-F
EQUAL? PRSA,V?LOOK-INSIDE \?CCL3
PRINTI "You can"
IN? KEY,KEYHOLE-2 /?PRG13
EQUAL? HERE,DREARY-ROOM \?CCL12
PUSH LEDGE-IN-RAVINE
JUMP ?CND10
?CCL12: PUSH DREARY-ROOM
?CND10: CALL LIT?,STACK
ZERO? STACK \?PRG15
?PRG13: PRINTI "'t"
?PRG15: PRINTR " see light through the keyhole."
?CCL3: EQUAL? PRSA,V?PUT \FALSE
IN? KEY,KEYHOLE-2 \?CCL21
EQUAL? PRSO,LETTER-OPENER \?PRG29
ZERO? MUD-FLAG /?CND25
SET 'MATOBJ,KEY
?CND25: MOVE KEY,DREARY-ROOM
PRINTR "There is a faint thud behind the door."
?PRG29: PRINTI "The "
PRINTD PRSO
PRINTR " doesn't fit."
?CCL21: CALL PERFORM,V?UNLOCK,PDOOR,PRSO
RTRUE
.ENDI

679
dungeon.zil Normal file
View file

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

93
globals.zabstr Normal file
View file

@ -0,0 +1,93 @@
<DIRECTIONS NORTH EAST WEST SOUTH NE NW SE SW UP DOWN IN OUT LAND>
<OBJECT GLOBAL-OBJECTS (FLAGS INVISIBLE TOUCHBIT SURFACEBIT TRYTAKEBIT OPENBIT
SEARCHBIT TRANSBIT ONBIT RLANDBIT)>
<OBJECT LOCAL-GLOBALS (IN GLOBAL-OBJECTS) (SYNONYM ZZMGCK)>
<OBJECT ROOMS (IN TO ROOMS)>
<OBJECT INTNUM (IN GLOBAL-OBJECTS) (DESC "number") (SYNONYM INTNUM) (FLAGS
TOOLBIT)>
<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 NOT-HERE-OBJECT (DESC "thing") (ACTION NOT-HERE-OBJECT-F)>
<DEFINE-ROUTINE NOT-HERE-OBJECT-F>
<DEFINE-ROUTINE NOT-HERE-PRINT>
<OBJECT GROUND (IN GLOBAL-OBJECTS) (DESC "ground") (SYNONYM GROUND DIRT FLOOR)
(ACTION GROUND-F)>
<DEFINE-ROUTINE GROUND-F>
<OBJECT WATER (DESC "quantity of water") (LDESC "There is some water here.") (
SYNONYM WATER LIQUID) (SIZE 4) (FLAGS TAKEBIT DRINKBIT) (ACTION WATER-F)>
<OBJECT GLOBAL-WATER (IN LOCAL-GLOBALS) (DESC "water") (SYNONYM WATER) (FLAGS
DRINKBIT) (ACTION WATER-F)>
<DEFINE-ROUTINE WATER-F>
<DEFINE-ROUTINE PUDDLE>
<OBJECT GRUE (IN GLOBAL-OBJECTS) (DESC "lurking grue") (SYNONYM GRUE) (
ADJECTIVE LURKING) (ACTION GRUE-F)>
<DEFINE-ROUTINE GRUE-F>
<OBJECT ME (IN GLOBAL-OBJECTS) (DESC "brave adventurer") (SYNONYM ME MYSELF
SELF) (FLAGS ACTORBIT) (ACTION ME-F)>
<DEFINE-ROUTINE ME-F>
<OBJECT ADVENTURER (IN INSIDE-THE-BARROW) (DESC "thing") (SYNONYM ADVENTURER) (
STRENGTH 0) (FLAGS NDESCBIT INVISIBLE SACREDBIT ACTORBIT) (ACTION 0)>
<OBJECT PATH-OBJECT (IN GLOBAL-OBJECTS) (DESC "passage") (SYNONYM PATH PASSAGE
TUNNEL) (ADJECTIVE DARK DAMP SMOKEY SCORCHED NARROW) (FLAGS NDESCBIT) (ACTION
PATH-OBJECT-F)>
<DEFINE-ROUTINE PATH-OBJECT-F>
<OBJECT ZORKMID (IN GLOBAL-OBJECTS) (DESC "zorkmid") (SYNONYM ZORKMID) (ACTION
ZORKMID-F)>
<DEFINE-ROUTINE ZORKMID-F>
<OBJECT HANDS (IN GLOBAL-OBJECTS) (DESC "pair of hands") (SYNONYM PAIR HANDS
HAND) (ADJECTIVE BARE) (FLAGS NDESCBIT TOOLBIT)>
<OBJECT STREAM (IN LOCAL-GLOBALS) (DESC "stream") (SYNONYM STREAM) (ADJECTIVE
COLD) (FLAGS NDESCBIT) (ACTION STREAM-F)>
<DEFINE-ROUTINE STREAM-F>
<OBJECT CHASM (IN LOCAL-GLOBALS) (DESC "chasm") (SYNONYM CHASM RAVINE) (
ADJECTIVE DEEP) (FLAGS NDESCBIT) (ACTION CHASM-F)>
<DEFINE-ROUTINE CHASM-F>
<OBJECT BRIDGE (IN LOCAL-GLOBALS) (DESC "bridge") (SYNONYM BRIDGE) (ADJECTIVE
STONE) (FLAGS NDESCBIT) (ACTION BRIDGE-F)>
<DEFINE-ROUTINE BRIDGE-F>
<OBJECT WALL (IN GLOBAL-OBJECTS) (DESC "wall") (SYNONYM WALL) (ADJECTIVE EAST
EASTERN WEST WESTERN SOUTH SOUTHE NORTH NORTHE)>
<DEFINE-ROUTINE OPEN-CLOSE>
<DEFINE-ROUTINE HELLO?>
<DEFINE-ROUTINE FIND-TARGET>
<DEFINE-ROUTINE NOW-DARK?>
<DEFINE-ROUTINE DO-WALK>
<DEFINE-ROUTINE GLOBAL-IN?>
<DEFINE-ROUTINE FIND-IN>
<DEFINE-ROUTINE HELD?>
<DEFINE-ROUTINE OTHER-SIDE>
<DEFINE-ROUTINE HACK-HACK>
<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." "An interesting idea..." "What a concept!">>
<GLOBAL RIDDLE-TEXT
"What's tall as a house,|
round as a cup,|
and all the king's horses|
can't draw it up?\"|">
<GLOBAL PERIOD-CR ".|">
<GLOBAL DEMON-GONE "The demon is gone for a moment. ">
<GLOBAL MOVED-IN-DARK "You feel a rush of air as something moved nearby.|">
<GLOBAL STRANGE-VISION
"As you peer into the sphere, a strange vision takes shape">
<GLOBAL LOOK-AROUND "Look around you.|">
<GLOBAL TOO-DARK "It's too dark to see.">
<GLOBAL ONLY-DARKNESS "You see only darkness.|">
<GLOBAL ALREADY "It already is!|">
<GLOBAL WAND-STOPS-GLOWING
"The wand stops glowing, but there is no other apparent effect.|">
<GLOBAL CANT-GO "You can't go that way.|">
<GLOBAL PLACE-MAT-VISIBLE "The edge of a place mat is visible under the door.">
<GLOBAL DOESNT-FIT-LOCK "It doesn't fit the lock.|">
<GLOBAL GUE-NAME " the Great Underground Empire">
<GLOBAL REFERRING "It's not clear what you're referring to.|">
<GLOBAL STOPS " comes to a stop.||">
<GLOBAL B-W-C "\"Buzz, whirr, click!">
<GLOBAL WAVES-WAND "The Wizard waves his wand ">
<GLOBAL INVISIBLE-HAND
", almost as though an invisible hand had tipped it over.|">
<GLOBAL GREEDILY-DEVOURS "The guardian greedily devours ">

309
globals.zap Normal file
View file

@ -0,0 +1,309 @@
.FUNCT NOT-HERE-OBJECT-F,TBL,PRSO?=1,OBJ
EQUAL? PRSO,NOT-HERE-OBJECT \?CCL3
EQUAL? PRSI,NOT-HERE-OBJECT \?CCL3
PRINTR "Those things aren't here!"
?CCL3: EQUAL? PRSO,NOT-HERE-OBJECT \?CCL9
SET 'TBL,P-PRSO
JUMP ?CND1
?CCL9: SET 'TBL,P-PRSI
SET 'PRSO?,FALSE-VALUE
?CND1: SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
EQUAL? WINNER,ADVENTURER \?PRG17
PRINTI "You can't see any "
CALL NOT-HERE-PRINT,PRSO?
PRINTR " here!"
?PRG17: PRINTI "The "
PRINTD WINNER
PRINTI " seems confused. ""I don't see any "
CALL NOT-HERE-PRINT,PRSO?
PRINTR " here!"""
.FUNCT NOT-HERE-PRINT,PRSO?,?TMP1
ZERO? P-OFLAG /?CCL3
ZERO? P-XADJ /?CND4
PRINTB P-XADJN
?CND4: ZERO? P-XNAM /FALSE
PRINTB P-XNAM
RTRUE
?CCL3: ZERO? PRSO? /?CCL10
GET P-ITBL,P-NC1 >?TMP1
GET P-ITBL,P-NC1L
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
RSTACK
?CCL10: GET P-ITBL,P-NC2 >?TMP1
GET P-ITBL,P-NC2L
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
RSTACK
.FUNCT GROUND-F
EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE
EQUAL? PRSI,GROUND \FALSE
CALL PERFORM,V?DROP,PRSO
RTRUE
.FUNCT WATER-F,AV,W,PI?
EQUAL? PRSA,V?SGIVE /FALSE
EQUAL? PRSA,V?ENTER \?CCL5
CALL PERFORM,V?SWIM,PRSO
RTRUE
?CCL5: EQUAL? PRSA,V?FILL \?CCL7
SET 'W,PRSI
SET 'PRSA,V?PUT
SET 'PRSI,PRSO
SET 'PRSO,W
SET 'PI?,FALSE-VALUE
JUMP ?CND1
?CCL7: EQUAL? PRSO,GLOBAL-WATER,WATER \?CCL9
SET 'W,PRSO
SET 'PI?,FALSE-VALUE
JUMP ?CND1
?CCL9: ZERO? PRSI /?CND1
SET 'W,PRSI
SET 'PI?,TRUE-VALUE
?CND1: EQUAL? W,GLOBAL-WATER \?CND11
SET 'W,WATER
EQUAL? PRSA,V?PUT,V?TAKE \?CND11
REMOVE W
?CND11: ZERO? PI? /?CCL17
SET 'PRSI,W
JUMP ?CND15
?CCL17: SET 'PRSO,W
?CND15: LOC WINNER >AV
FSET? AV,VEHBIT /?CND18
SET 'AV,FALSE-VALUE
?CND18: EQUAL? PRSA,V?PUT,V?TAKE \?CCL22
ZERO? PI? \?CCL22
ZERO? AV /?CCL27
EQUAL? AV,PRSI \?CCL27
CALL PUDDLE,AV
RSTACK
?CCL27: ZERO? AV /?CCL31
ZERO? PRSI \?CCL31
IN? W,AV /?CCL31
CALL PUDDLE,AV
RSTACK
?CCL31: ZERO? PRSI /?CCL36
EQUAL? PRSI,TEAPOT /?CCL36
PRINTI "The water leaks out of the "
PRINTD PRSI
PRINTI " and evaporates immediately."
CRLF
REMOVE W
RTRUE
?CCL36: IN? TEAPOT,WINNER \?CCL42
FIRST? TEAPOT /?PRG48
MOVE WATER,TEAPOT
PRINTR "The teapot is now full of water."
?PRG48: PRINTR "The teapot isn't currently empty."
?CCL42: IN? PRSO,TEAPOT \?PRG55
EQUAL? PRSA,V?TAKE \?PRG55
ZERO? PRSI \?PRG55
SET 'PRSO,TEAPOT
CALL ITAKE
SET 'PRSO,W
RETURN PRSO
?PRG55: PRINTR "The water slips through your fingers."
?CCL22: ZERO? PI? /?CCL58
PRINTR "Nice try."
?CCL58: EQUAL? PRSA,V?GIVE,V?DROP \?CCL62
EQUAL? PRSO,WATER \?CND63
CALL HELD?,WATER
ZERO? STACK \?CND63
PRINTR "You don't have any water."
?CND63: REMOVE WATER
ZERO? AV /?PRG72
CALL PUDDLE,AV
RSTACK
?PRG72: PRINTI "The water spills to the floor and evaporates."
CRLF
REMOVE WATER
RTRUE
?CCL62: EQUAL? PRSA,V?THROW \FALSE
PRINTI "The water splashes on the walls and evaporates."
CRLF
REMOVE WATER
RTRUE
.FUNCT PUDDLE,AV
PRINTI "There is now a puddle in the bottom of the "
PRINTD AV
PRINT PERIOD-CR
MOVE PRSO,AV
RTRUE
.FUNCT GRUE-F
EQUAL? PRSA,V?EXAMINE \?CCL3
PRINTR "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."
?CCL3: EQUAL? PRSA,V?FIND \FALSE
PRINTR "There's probably one lurking in the darkness nearby. Don't let your light go out!"
.FUNCT ME-F
EQUAL? PRSA,V?TELL \?CCL3
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
PRINTR "Talking to yourself is a sign of impending mental collapse."
?CCL3: EQUAL? PRSA,V?GIVE \?CCL7
EQUAL? PRSI,ME \?CCL7
CALL PERFORM,V?TAKE,PRSO
RTRUE
?CCL7: EQUAL? PRSA,V?EAT \?CCL11
PRINTR "Auto-cannibalism is not the answer."
?CCL11: EQUAL? PRSA,V?MUNG,V?ATTACK \?CCL15
CALL JIGS-UP,STR?22
RSTACK
?CCL15: EQUAL? PRSA,V?TAKE \?CCL17
PRINTR "How romantic!"
?CCL17: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "Difficult, unless your eyes are prehensile."
.FUNCT PATH-OBJECT-F
EQUAL? PRSA,V?FOLLOW,V?TAKE \FALSE
CALL V-WALK-AROUND
RSTACK
.FUNCT ZORKMID-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTI "The zorkmid is the unit of currency of"
PRINT GUE-NAME
PRINT PERIOD-CR
RTRUE
.FUNCT STREAM-F
EQUAL? PRSA,V?ENTER \FALSE
CALL V-SWIM
RSTACK
.FUNCT CHASM-F
EQUAL? PRSA,V?LEAP /?CTR2
EQUAL? PRSA,V?PUT \?CCL3
EQUAL? PRSO,ME \?CCL3
?CTR2: CALL JIGS-UP,STR?7
RSTACK
?CCL3: EQUAL? PRSA,V?PUT \FALSE
EQUAL? PRSI,PSEUDO-OBJECT \FALSE
REMOVE PRSO
PRINTI "The "
PRINTD PRSO
PRINTR " disappears into the chasm."
.FUNCT BRIDGE-F
EQUAL? PRSA,V?LEAP \FALSE
CALL JIGS-UP,STR?7
RSTACK
.FUNCT OPEN-CLOSE
EQUAL? PRSA,V?OPEN \?CCL3
FSET? PRSO,OPENBIT \?CCL6
PRINT LOOK-AROUND
RTRUE
?CCL6: FSET PRSO,OPENBIT
PRINTI "The "
PRINTD PRSO
PRINTR " is now open."
?CCL3: FSET? PRSO,OPENBIT \?PRG15
FCLEAR PRSO,OPENBIT
PRINTI "The "
PRINTD PRSO
PRINTR " is now closed."
?PRG15: PRINT LOOK-AROUND
RTRUE
.FUNCT HELLO?,WHO
EQUAL? WINNER,WHO /?CCL3
EQUAL? PRSA,V?HELLO,V?SAY,V?TELL /?CCL3
EQUAL? PRSA,V?INCANT \FALSE
?CCL3: EQUAL? PRSA,V?INCANT,V?SAY,V?TELL \TRUE
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
RTRUE
.FUNCT FIND-TARGET,TARGET,P,TX,L,ROOM
IN? TARGET,HERE \?CCL3
RETURN HERE
?CCL3: SET 'P,0
?PRG4: NEXTP HERE,P >P
ZERO? P /FALSE
LESS? P,LOW-DIRECTION /?PRG4
GETPT HERE,P >TX
PTSIZE TX >L
EQUAL? L,UEXIT,CEXIT,DEXIT \?PRG4
GETB TX,0 >ROOM
IN? TARGET,ROOM \?PRG4
RETURN ROOM
.FUNCT NOW-DARK?
CALL LIT?,HERE >LIT
ZERO? LIT \TRUE
PRINTR "It is now pitch black."
.FUNCT DO-WALK,DIR
SET 'P-WALK-DIR,DIR
CALL PERFORM,V?WALK,DIR
RSTACK
.FUNCT GLOBAL-IN?,OBJ1,OBJ2,TX
GETPT OBJ2,P?GLOBAL >TX
ZERO? TX /FALSE
PTSIZE TX
SUB STACK,1
CALL ZMEMQB,OBJ1,TX,STACK
RSTACK
.FUNCT FIND-IN,WHERE,WHAT,W
FIRST? WHERE >W /?BOGUS1
?BOGUS1: ZERO? W /FALSE
?PRG4: FSET? W,WHAT \?CCL8
EQUAL? W,ADVENTURER /?CCL8
RETURN W
?CCL8: NEXT? W >W /?PRG4
RFALSE
.FUNCT HELD?,CAN
?PRG1: LOC CAN >CAN
ZERO? CAN /FALSE
EQUAL? CAN,WINNER \?PRG1
RTRUE
.FUNCT OTHER-SIDE,DOBJ,P=0,TX
?PRG1: NEXTP HERE,P >P
LESS? P,LOW-DIRECTION /FALSE
GETPT HERE,P >TX
PTSIZE TX
EQUAL? STACK,DEXIT \?PRG1
GETB TX,DEXITOBJ
EQUAL? STACK,DOBJ \?PRG1
RETURN P
.FUNCT HACK-HACK,STR
PRINT STR
PRINTD PRSO
CALL PICK-ONE,HO-HUM
PRINT STACK
CRLF
RTRUE
.ENDI

477
globals.zil Normal file
View file

@ -0,0 +1,477 @@
"GLOBALS for
Mini-Zork II: The Wizard of Frobozz
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
<DIRECTIONS NORTH EAST WEST SOUTH NE NW SE SW UP DOWN IN OUT LAND>
<OBJECT GLOBAL-OBJECTS
(FLAGS INVISIBLE TOUCHBIT SURFACEBIT TRYTAKEBIT
OPENBIT SEARCHBIT TRANSBIT ONBIT RLANDBIT)>
<OBJECT LOCAL-GLOBALS
(IN GLOBAL-OBJECTS)
(SYNONYM ZZMGCK) ;"Yes, this synonym needs to exist... sigh">
<OBJECT ROOMS
(IN TO ROOMS)>
<OBJECT INTNUM
(IN GLOBAL-OBJECTS)
(DESC "number")
(SYNONYM INTNUM)
(FLAGS TOOLBIT)>
<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 NOT-HERE-OBJECT
(DESC "thing")
(ACTION NOT-HERE-OBJECT-F)>
<ROUTINE NOT-HERE-OBJECT-F ("AUX" TBL (PRSO? T) OBJ)
;"This COND is game independent (except the TELL)"
<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? <>>)>
;"Here is the default 'cant see any' printer"
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<COND (<EQUAL? ,WINNER ,ADVENTURER>
<TELL "You can't 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 FIND-NOT-HERE (TBL PRSO? "AUX" M-F OBJ)
;"Here is where special-case code goes. <MOBY-FIND .TBL> returns
number of matches. If 1, then P-MOBY-FOUND is it. One may treat
the 0 and >1 cases alike or different. It doesn't matter. Always
return RFALSE (not handled) if you have resolved the problem."
<SET M-F <MOBY-FIND .TBL>>
;<COND (,DEBUG
<TELL "[Moby-found " N .M-F " objects" "]" CR>)>
<COND (<AND <G? .M-F 1>
<SET OBJ <GETP <GET .TBL 1> ,P?GLOBAL>>>
<SET M-F 1>
<SETG P-MOBY-FOUND .OBJ>)>
<COND (<==? 1 .M-F>
;<COND (,DEBUG <TELL "[Namely: " D ,P-MOBY-FOUND "]" CR>)>
<COND (.PRSO? <SETG PRSO ,P-MOBY-FOUND>)
(T <SETG PRSI ,P-MOBY-FOUND>)>
<RFALSE>)
(<NOT .PRSO?>
<TELL "You wouldn't find any ">
<NOT-HERE-PRINT .PRSO?>
<TELL " there." CR>
<RTRUE>)
(T ,NOT-HERE-OBJECT)>>
;<ROUTINE GLOBAL-NOT-HERE-PRINT (OBJ)
;<COND (,P-MULT <SETG P-NOT-HERE <+ ,P-NOT-HERE 1>>)>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<TELL "You can't see any">
<COND (<EQUAL? .OBJ ,PRSO> <PRSO-PRINT>)
(T <PRSI-PRINT>)>
<TELL " here." CR>>
<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 GROUND
(IN GLOBAL-OBJECTS)
(DESC "ground")
(SYNONYM GROUND DIRT FLOOR)
(ACTION GROUND-F)>
<ROUTINE GROUND-F ()
<COND (<AND <VERB? PUT PUT-ON>
<EQUAL? ,PRSI ,GROUND>>
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)>>
<OBJECT WATER
(DESC "quantity of water")
(LDESC "There is some water here.")
(SYNONYM WATER LIQUID)
(SIZE 4)
(FLAGS TAKEBIT DRINKBIT)
(ACTION WATER-F)>
<OBJECT GLOBAL-WATER
(IN LOCAL-GLOBALS)
(DESC "water")
(SYNONYM WATER)
(FLAGS DRINKBIT)
(ACTION WATER-F)>
<ROUTINE WATER-F ("AUX" AV W PI?)
<COND (<VERB? SGIVE>
<RFALSE>)
(<VERB? ENTER>
<PERFORM ,V?SWIM ,PRSO>
<RTRUE>)
(<VERB? FILL> ;"fill bottle with water =>"
<SET W ,PRSI> ;"put water in bottle"
<SETG PRSA ,V?PUT>
<SETG PRSI ,PRSO>
<SETG PRSO .W>
<SET PI? <>>)
(<EQUAL? ,PRSO ,GLOBAL-WATER ,WATER>
<SET W ,PRSO>
<SET PI? <>>)
(,PRSI
<SET W ,PRSI>
<SET PI? T>)>
<COND (<EQUAL? .W ,GLOBAL-WATER>
<SET W ,WATER>
<COND (<VERB? TAKE PUT> <REMOVE .W>)>)>
<COND (.PI? <SETG PRSI .W>)
(T <SETG PRSO .W>)>
<SET AV <LOC ,WINNER>>
<COND (<NOT <FSET? .AV ,VEHBIT>> <SET AV <>>)>
<COND (<AND <VERB? TAKE PUT> <NOT .PI?>>
<COND (<AND .AV <EQUAL? .AV ,PRSI>>
<PUDDLE .AV>)
(<AND .AV <NOT ,PRSI> <NOT <IN? .W .AV>>>
<PUDDLE .AV>)
(<AND ,PRSI <NOT <EQUAL? ,PRSI ,TEAPOT>>>
<TELL "The water leaks out of the " D ,PRSI
" and evaporates immediately." CR>
<REMOVE .W>)
(<IN? ,TEAPOT ,WINNER>
<COND (<NOT <FIRST? ,TEAPOT>>
<MOVE ,WATER ,TEAPOT>
<TELL "The teapot is now full of water." CR>)
(T
<TELL "The teapot isn't currently empty." CR>
<RTRUE>)>)
(<AND <IN? ,PRSO ,TEAPOT>
<VERB? TAKE>
<NOT ,PRSI>>
<SETG PRSO ,TEAPOT>
<ITAKE>
<SETG PRSO .W>)
(T
<TELL "The water slips through your fingers." CR>)>)
(.PI?
<TELL "Nice try." CR>)
(<VERB? DROP GIVE>
<COND (<AND <EQUAL? ,PRSO ,WATER>
<NOT <HELD? ,WATER>>>
<TELL "You don't have any water." CR>
<RTRUE>)>
<REMOVE ,WATER>
<COND (.AV
<PUDDLE .AV>)
(T
<TELL
"The water spills to the floor and evaporates." CR>
<REMOVE ,WATER>)>)
(<VERB? THROW>
<TELL
"The water splashes on the walls and evaporates." CR>
<REMOVE ,WATER>)>>
<ROUTINE PUDDLE (AV)
<TELL "There is now a puddle in the bottom of the " D .AV ,PERIOD-CR>
<MOVE ,PRSO .AV>>
<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
"There's probably one lurking in the darkness nearby. Don't let your light
go out!" CR>)>>
<OBJECT ME
(IN GLOBAL-OBJECTS)
(DESC "brave adventurer")
(SYNONYM ME MYSELF SELF)
(FLAGS ACTORBIT)
(ACTION ME-F)>
<ROUTINE ME-F ()
<COND (<VERB? TELL>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<TELL
"Talking to yourself is a sign of impending mental collapse." CR>)
(<AND <VERB? GIVE>
<EQUAL? ,PRSI ,ME>>
<PERFORM ,V?TAKE ,PRSO>
<RTRUE>)
(<VERB? EAT>
<TELL "Auto-cannibalism is not the answer." CR>)
(<VERB? ATTACK MUNG>
<JIGS-UP "Poof, you're dead!">)
(<VERB? TAKE>
<TELL "How romantic!" CR>)
(<VERB? EXAMINE>
<TELL "Difficult, unless your eyes are prehensile." CR>)>>
<OBJECT ADVENTURER
(IN INSIDE-THE-BARROW)
(DESC "thing")
(SYNONYM ADVENTURER)
(STRENGTH 0)
(FLAGS NDESCBIT INVISIBLE SACREDBIT ACTORBIT)
(ACTION 0)>
<OBJECT PATH-OBJECT
(IN GLOBAL-OBJECTS)
(DESC "passage")
(SYNONYM PATH PASSAGE TUNNEL)
(ADJECTIVE DARK DAMP SMOKEY SCORCHED NARROW)
(FLAGS NDESCBIT)
(ACTION PATH-OBJECT-F)>
<ROUTINE PATH-OBJECT-F ()
<COND (<VERB? TAKE FOLLOW>
<V-WALK-AROUND>)>>
<OBJECT ZORKMID
(IN GLOBAL-OBJECTS)
(DESC "zorkmid")
(SYNONYM ZORKMID)
(ACTION ZORKMID-F)>
<ROUTINE ZORKMID-F ()
<COND (<VERB? EXAMINE>
<TELL
"The zorkmid is the unit of currency of" ,GUE-NAME ,PERIOD-CR>)>>
<OBJECT HANDS
(IN GLOBAL-OBJECTS)
(DESC "pair of hands")
(SYNONYM PAIR HANDS HAND)
(ADJECTIVE BARE)
(FLAGS NDESCBIT TOOLBIT)>
<OBJECT STREAM
(IN LOCAL-GLOBALS)
(DESC "stream")
(SYNONYM STREAM)
(ADJECTIVE COLD)
(FLAGS NDESCBIT)
(ACTION STREAM-F)>
<ROUTINE STREAM-F ()
<COND (<VERB? ENTER>
<V-SWIM>)>>
<OBJECT CHASM
(IN LOCAL-GLOBALS)
(DESC "chasm")
(SYNONYM CHASM RAVINE)
(ADJECTIVE DEEP)
(FLAGS NDESCBIT)
(ACTION CHASM-F)>
<ROUTINE CHASM-F ()
<COND (<OR <VERB? LEAP>
<AND <VERB? PUT>
<EQUAL? ,PRSO ,ME>>>
<JIGS-UP "You should have looked before you leaped.">)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,PSEUDO-OBJECT>>
<REMOVE ,PRSO>
<TELL "The " D ,PRSO " disappears into the chasm." CR>)>>
<OBJECT BRIDGE
(IN LOCAL-GLOBALS)
(DESC "bridge")
(SYNONYM BRIDGE)
(ADJECTIVE STONE)
(FLAGS NDESCBIT)
(ACTION BRIDGE-F)>
<ROUTINE BRIDGE-F ()
<COND (<VERB? LEAP>
<JIGS-UP "You should have looked before you leaped.">)>>
<OBJECT WALL
(IN GLOBAL-OBJECTS)
(DESC "wall")
(SYNONYM WALL)
(ADJECTIVE EAST EASTERN WEST WESTERN SOUTH SOUTHE NORTH NORTHE)>
<ROUTINE OPEN-CLOSE ()
<COND (<VERB? OPEN>
<COND (<FSET? ,PRSO ,OPENBIT>
<TELL ,LOOK-AROUND>)
(T
<FSET ,PRSO ,OPENBIT>
<TELL "The " D ,PRSO " is now open." CR>)>)
(<FSET? ,PRSO ,OPENBIT>
<FCLEAR ,PRSO ,OPENBIT>
<TELL "The " D ,PRSO " is now closed." CR>)
(T
<TELL ,LOOK-AROUND>)>>
<ROUTINE HELLO? (WHO)
<COND (<OR <EQUAL? ,WINNER .WHO>
<VERB? TELL SAY HELLO INCANT>>
<COND (<VERB? TELL SAY INCANT>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>)>
<RTRUE>)>>
<ROUTINE FIND-TARGET (TARGET "AUX" P TX L ROOM)
<COND (<IN? .TARGET ,HERE> ,HERE)
(T
<SET P 0>
<REPEAT ()
<COND (<0? <SET P <NEXTP ,HERE .P>>>
<RETURN <>>)
(<NOT <L? .P ,LOW-DIRECTION>>
<SET TX <GETPT ,HERE .P>>
<SET L <PTSIZE .TX>>
<COND (<EQUAL? .L ,UEXIT ,CEXIT ,DEXIT>
<SET ROOM <GETB .TX 0>>
<COND (<IN? .TARGET .ROOM>
<RETURN .ROOM>)>)>)>>)>>
<ROUTINE NOW-DARK? ()
<SETG LIT <LIT? ,HERE>>
<COND (<NOT ,LIT>
<TELL "It is now pitch black." CR>)>
<RTRUE>>
<ROUTINE DO-WALK (DIR)
<SETG P-WALK-DIR .DIR>
<PERFORM ,V?WALK .DIR>>
<ROUTINE GLOBAL-IN? (OBJ1 OBJ2 "AUX" TX)
<COND (<SET TX <GETPT .OBJ2 ,P?GLOBAL>>
<ZMEMQB .OBJ1 .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 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 HACK-HACK (STR)
<TELL .STR D ,PRSO <PICK-ONE ,HO-HUM> 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."
"An interesting idea..."
"What a concept!">>
<GLOBAL RIDDLE-TEXT
"What's tall as a house,|
round as a cup,|
and all the king's horses|
can't draw it up?\"|">
<GLOBAL PERIOD-CR ".|">
<GLOBAL DEMON-GONE "The demon is gone for a moment. ">
<GLOBAL MOVED-IN-DARK "You feel a rush of air as something moved nearby.|">
<GLOBAL STRANGE-VISION
"As you peer into the sphere, a strange vision takes shape">
<GLOBAL LOOK-AROUND "Look around you.|">
<GLOBAL TOO-DARK "It's too dark to see.">
<GLOBAL ONLY-DARKNESS "You see only darkness.|">
<GLOBAL ALREADY "It already is!|">
<GLOBAL WAND-STOPS-GLOWING
"The wand stops glowing, but there is no other apparent effect.|">
<GLOBAL CANT-GO "You can't go that way.|">
<GLOBAL PLACE-MAT-VISIBLE "The edge of a place mat is visible under the door.">
<GLOBAL DOESNT-FIT-LOCK "It doesn't fit the lock.|">
<GLOBAL GUE-NAME " the Great Underground Empire">
<GLOBAL REFERRING "It's not clear what you're referring to.|">
<GLOBAL STOPS " comes to a stop.||">
<GLOBAL B-W-C "\"Buzz, whirr, click!">
<GLOBAL WAVES-WAND "The Wizard waves his wand ">
<GLOBAL INVISIBLE-HAND
", almost as though an invisible hand had tipped it over.|">
<GLOBAL GREEDILY-DEVOURS "The guardian greedily devours ">

2
mini2.chart Normal file
View file

@ -0,0 +1,2 @@
-date- -rel- -size- -pre- -obj- -glo- -voc-
11/23 2 55690 13518 163 148 501

25
mini2.errors Normal file
View file

@ -0,0 +1,25 @@
Assembling MINI2.ZAP.1 on Monday, November 23, 1987 16:29:54
Release: 2
64 Inserting MINI2FREQ.XZAP.1 (616 bytes)
680 Inserting MINI2DAT.ZAP.1 (12838 bytes)
13518 Inserting MINI2PUR.ZAP.1 (0 bytes)
13518 Inserting MISC.ZAP.1 (1166 bytes)
14684 Inserting PARSER.ZAP.1 (6616 bytes)
21300 Inserting VERBS.ZAP.1 (7467 bytes)
28767 Inserting GLOBALS.ZAP.1 (1396 bytes)
30163 Inserting WIZARD.ZAP.1 (7558 bytes)
37721 Inserting DUNGEON.ZAP.1 (2520 bytes)
40241 Inserting PRINCESS.ZAP.1 (3527 bytes)
43768 Inserting ALICE.ZAP.1 (1920 bytes)
45688 Inserting VOLCANO.ZAP.1 (2678 bytes)
48366 Inserting MINI2STR.ZAP.1 (7324 bytes)
163 objects.
148 globals.
501 word vocabulary.
55690 bytes (55K).
13518 bytes of preload.
8349 bytes of impure.
Outputting symbol tables

462
mini2.record Normal file
View file

@ -0,0 +1,462 @@
Combined ZIL Compiler Ver 2.0 (MIM)
-----------------------------------
Incremental compilation disabled, because top-level ZIL file changed.
Input file: SS:<ZORK2.MINI2>MINI2.ZIL.10
Compiling routine: RANDOM-ELEMENT
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: ACCESSIBLE?
Compiling routine: META-LOC
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: INTERACTION
Compiling routine: V-UNSCRIPT
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: V-BLAST
Compiling routine: PRE-BURN
Compiling routine: V-BURN
Compiling routine: V-CLIMB-DOWN
Compiling routine: V-CLIMB
Compiling routine: V-CLIMB-ON
Compiling routine: V-CLOSE
Compiling routine: V-COMMAND
Compiling routine: V-COUNT
Compiling routine: V-CURSES
Compiling routine: V-CUT
Compiling routine: V-DEFLATE
Compiling routine: V-DISEMBARK
Compiling routine: V-DISENCHANT
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-ENCHANT
Compiling routine: REMOVE-CAREFULLY
Compiling routine: PRE-ENTER
Compiling routine: V-ENTER
Compiling routine: V-EXAMINE
Compiling routine: V-EXIT
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-HELLO
Compiling routine: V-INCANT
Compiling routine: I-SPELL
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-LEAVE
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-MELT
Compiling routine: V-MOVE
Compiling routine: PRE-MUNG
Compiling routine: V-MUNG
Compiling routine: V-OPEN
Compiling routine: V-PICK
Compiling routine: V-PLAY
Compiling routine: V-POUR-ON
Compiling routine: V-PUSH
Compiling routine: PRE-PUT
Compiling routine: V-PUT
Compiling routine: V-PUT-ON
Compiling routine: V-PUT-UNDER
Compiling routine: V-RAISE
Compiling routine: V-RAPE
Compiling routine: PRE-READ
Compiling routine: V-READ
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-STAND
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-THROW
Compiling routine: V-THROW-OFF
Compiling routine: V-TIE
Compiling routine: V-TIE-UP
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-WALK-TO
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
Compiling routine: NO-GO-TELL
Compiling routine: GOTO
Compiling routine: ITAKE
Compiling routine: IDROP
Compiling routine: CCOUNT
Compiling routine: WEIGHT
Compiling routine: NOT-HERE-OBJECT-F
Compiling routine: NOT-HERE-PRINT
Compiling routine: GROUND-F
Compiling routine: WATER-F
Compiling routine: PUDDLE
Compiling routine: GRUE-F
Compiling routine: ME-F
Compiling routine: PATH-OBJECT-F
Compiling routine: ZORKMID-F
Compiling routine: STREAM-F
Compiling routine: CHASM-F
Compiling routine: BRIDGE-F
Compiling routine: OPEN-CLOSE
Compiling routine: HELLO?
Compiling routine: FIND-TARGET
Compiling routine: NOW-DARK?
Compiling routine: DO-WALK
Compiling routine: GLOBAL-IN?
Compiling routine: FIND-IN
Compiling routine: HELD?
Compiling routine: OTHER-SIDE
Compiling routine: HACK-HACK
Compiling routine: WIZARD-F
** Note: Atomic argument to routine assumed constant - MAGIC-ACTOR
Compiling routine: I-WIZARD
** Note: Atomic argument to routine assumed constant - MAGIC-ACTOR
Compiling routine: MAGIC-ACTOR
Compiling routine: RANDOM-WALK
Compiling routine: WAND-F
Compiling routine: I-WAND
Compiling routine: GUARDED-ROOM-F
Compiling routine: WIZ-DOOR-F
Compiling routine: DOOR-KEEPER-F
Compiling routine: TROPHY-ROOM-F
Compiling routine: TROPHY-PSEUDO
Compiling routine: STAND-F
Compiling routine: PENTAGRAM-F
Compiling routine: DEMON-F
Compiling routine: DEMON-LEAVES
Compiling routine: AQUARIUM-F
Compiling routine: SERPENT-F
Compiling routine: DEAD-SERPENT-F
Compiling routine: MURKY-ROOM-F
Compiling routine: WIZARD-QUARTERS-F
Compiling routine: SPHERE-F
Compiling routine: PALANTIR-LOOK
Compiling routine: GO&LOOK
Compiling routine: DEAD-PALANTIR-F
Compiling routine: GLOBAL-PALANTIR-F
Compiling routine: LAMP-F
Compiling routine: I-LANTERN
Compiling routine: CAROUSEL-ROOM-F
Compiling routine: VIOLIN-F
Compiling routine: BILLS-F
Compiling routine: MENHIR-ROOM-F
Compiling routine: DESCRIBE-MENHIR
Compiling routine: GLOBAL-MENHIR-F
Compiling routine: MENHIR-F
Compiling routine: COLLAR-F
Compiling routine: TOMB-PSEUDO
Compiling routine: GLOBAL-CERBERUS-F
Compiling routine: CERBERUS-F
Compiling routine: HEADS-F
Compiling routine: CRYPT-OBJECT-F
Compiling routine: ZORK3-F
Compiling routine: LEDGE-IN-RAVINE-F
Compiling routine: P-DOOR
Compiling routine: PCHECK
Compiling routine: DREARY-ROOM-F
Compiling routine: PDOOR-F
Compiling routine: PWINDOW-F
Compiling routine: PKEYHOLE-F
Compiling routine: FORMAL-GARDEN-F
Compiling routine: I-GARDEN
Compiling routine: UNICORN-F
Compiling routine: GAZEBO-OBJECT-F
Compiling routine: NEWSPAPER-F
Compiling routine: PLACE-MAT-F
Compiling routine: TEAPOT-F
Compiling routine: MATCH-F
Compiling routine: I-MATCH
Compiling routine: TOPIARY-F
Compiling routine: I-TOPIARY
Compiling routine: HEDGES-F
Compiling routine: DRAGON-F
Compiling routine: DRAGON-LEAVES
Compiling routine: I-DRAGON
Compiling routine: CHEST-F
Compiling routine: PRINCESS-F
Compiling routine: I-PRINCESS
Compiling routine: I-UNICORN
Compiling routine: ICE-ROOM-F
Compiling routine: ICE-F
Compiling routine: RIDDLE-ROOM-F
Compiling routine: RIDDLE-PSEUDO
Compiling routine: RIDDLE-DOOR-F
Compiling routine: BUCKET-CONT
Compiling routine: BUCKET-F
Compiling routine: PASS-THE-BUCKET
Compiling routine: I-BUCKET
Compiling routine: WELL-F
Compiling routine: CRACK-PSEUDO
Compiling routine: ROBOT-F
Compiling routine: TRIANGULAR-BUTTON-F
Compiling routine: CAGE-F
Compiling routine: I-CAGE-DEATH
Compiling routine: ALICE-HOLE
Compiling routine: GREEN-CAKE-F
Compiling routine: CAKE-F
Compiling routine: CAKE-CRUMBLE
Compiling routine: POSTS-ROOM-F
Compiling routine: POOL-F
Compiling routine: CANDY-F
Compiling routine: BALLOON-F
Compiling routine: I-BALLOON
Compiling routine: BALLOON-BURN
Compiling routine: PUT-BALLOON
Compiling routine: RISE-AND-SHINE
Compiling routine: DECLINE-AND-FALL
Compiling routine: LKP
Compiling routine: I-BURNUP
Compiling routine: BRAIDED-WIRE-F
Compiling routine: BCONTENTS
Compiling routine: VOLCANO-BY-LEDGE-F
Compiling routine: RANDOM-BOOK-F
Compiling routine: PURPLE-BOOK-F
Compiling routine: LEDGE-F
Compiling routine: DUSTY-ROOM-F
Compiling routine: SAFE-F
Compiling routine: SAFE-HOLE-F
Compiling routine: BRICK-F
Compiling routine: FUSE-F
Compiling routine: I-FUSE
Compiling routine: BOMB?
Compiling routine: I-SAFE
** Note: OBJECT has no properties: GLOBAL-OBJECTS
Vocabulary: 501
Prepositions: 18
ABOUT AROUND AWAY DOWN FROM OFF OUT TO UP
ACROSS AT BEHIND FOR IN ON OVER UNDER WITH
Real globals: 141
AGAIN-DIR LOAD-ALLOWED P-SLOCBITS
AGAIN-LEXV LOOK-AROUND P-SYNTAX
ALREADY MATCH-COUNT P-TABLE
ALWAYS-LIT MATOBJ P-VTBL
B-W-C MENHIR-POSITION P-WALK-DIR
BALLOON-DOWNS MOVED-IN-DARK P-WON
BALLOON-FLOATS MUD-FLAG P-XADJ
BALLOON-INFLATED OLD-HERE P-XADJN
BALLOON-LOC ONLY-DARKNESS P-XNAM
BALLOON-TIED OOPS-INBUF PERIOD-CR
BALLOON-UPS OOPS-TABLE PLACE-MAT-VISIBLE
BUCKET-TOP-FLAG OTHER-PROPERTIES PLOOK-FLAG
C-DEMONS P-AADJ PRCOUNT
C-INTS P-ACLAUSE PRDIRS
C-TABLE P-ACT PRFOLLOW
CAGE-SOLVE-FLAG P-ADJ PRINCESS-AWAKE
CANT-GO P-ADJN PRSA
CAROUSEL-EXITS P-ADVERB PRSI
CAROUSEL-ON P-ANAM PRSO
CERBERUS-LEASHED P-AND PUNLOCK-FLAG
CLOCK-WAIT P-BUTS QUOTE-FLAG
DEAD P-CCTBL REFERRING
DEATHS P-CONT RESERVE-LEXV
DEMON-GONE P-DIR RESERVE-PTR
DEMON-HOARD P-END-ON-PREP RIDDLE-TEXT
DEMON-PAID P-GETFLAGS SECRET-DOOR
DEMON-THANKS P-GWIMBIT SPELL-HANDLED?
DESC-OBJECT P-INBUF SPELL-HINTS
DOESNT-FIT-LOCK P-IT-OBJECT SPELL-NAMES
DRAGON-ANGER P-ITBL SPELL-STOPS
DRAGON-ATTACKS P-LEN SPELL-USED
DUSTY-ROOM-COLLAPSED P-LEXV SPELL-VICTIM
EVAPORATED P-MATCHLEN SPELL?
FANTASIES P-MERGE STOPS
FUMBLE-NUMBER P-MERGED STRANGE-VISION
FUMBLE-PROB P-MULT TOO-DARK
GREEDILY-DEVOURS P-NAM TOPIARY-COUNTER
GUARDIAN-FED P-NCN UNICORN-FRIGHTENED
GUE-NAME P-NOT-HERE VERBOSITY
HO-HUM P-NUMBER WAND-ON
ICE-MELTED P-OCLAUSE WAND-ON-LOC
INDENTS P-OFLAG WAND-STOPS-GLOWING
INVISIBLE-HAND P-ONEOBJ WAVES-WAND
LABEL-REVEALED P-OTBL WINNER
LAMP-BURNED-OUT P-OVTBL WIZ-DOOR-FLAG
LAMP-TABLE P-PRSI WIZQDESCS
LIT P-PRSO YUKS
Objects: 163
ADVENTURER GLOBAL-OBJECTS PTABLE
ALICE-TABLE GLOBAL-PALANTIR PURPLE-BOOK
AQUARIUM GLOBAL-WATER PWINDOW
AQUARIUM-ROOM GOLD-KEY RECEPTACLE
BALLOON GREAT-CAVERN RED-CAKE
BALLOON-LABEL GREEN-CAKE RIBBON
BILLS GROUND RIDDLE-DOOR
BLUE-BOOK GRUE RIDDLE-ROOM
BLUE-CAKE GUARDED-ROOM ROBOT
BOTTOM-ETCHINGS HANDS ROBOT-LABEL
BRAIDED-WIRE HEADS ROOM-8
BRICK HEDGES ROOMS
BRIDGE HOOK RUBY
BUCKET ICE SAFE
CAGE ICE-ROOM SAFE-HOLE
CAGE-OBJECT INSIDE-THE-BARROW SERPENT
CANDY INTNUM SHALLOW-FORD
CARD IT STAMP
CAROUSEL-ROOM KENNEL STAND-1
CERBERUS KEY STAND-2
CERBERUS-ROOM KEYHOLE-1 STAND-3
CHASM KEYHOLE-2 STAND-4
CHEST LAMP STATUETTE
CIRCULAR-ROOM LEDGE-IN-RAVINE STONE-BRIDGE
CLOTH-BAG LETTER-OPENER STREAM
COIN LIBRARY SWORD
COLLAR LOCAL-GLOBALS TEA-ROOM
COOL-ROOM MACHINE-ROOM TEAPOT
CROWN MATCH TOP-ETCHINGS
CRYPT ME TOP-OF-WELL
CRYPT-OBJECT MENHIR TOPIARY
DARK-TUNNEL MENHIR-ROOM TRIANGULAR-BUTTON
DEAD-PALANTIR-1 MURKY-ROOM TROPHY-ROOM
DEAD-PALANTIR-2 NARROW-LEDGE UNICORN
DEAD-PALANTIR-3 NEWSPAPER VIOLIN
DEAD-PALANTIR-4 NOT-HERE-OBJECT VOLCANO-BOTTOM
DEAD-SERPENT ORANGE-CAKE VOLCANO-BY-SMALL-LEDGE
DEEP-FORD PALANTIR-1 VOLCANO-BY-WIDE-LEDGE
DEGREE PALANTIR-2 VOLCANO-CORE
DEMON PALANTIR-3 WALL
DINGY-CLOSET PALANTIR-4 WAND
DOOR-KEEPER PATH-OBJECT WANDS
DRAGON PCRACK WATER
DRAGON-LAIR PDOOR WELL
DRAGON-ROOM PEARL-NECKLACE WHITE-BOOK
DREARY-ROOM PENTAGRAM WIDE-LEDGE
DUSTY-ROOM PENTAGRAM-ROOM WIZ-DOOR
EXPLOSION PLACE-MAT WIZARD
FORMAL-GARDEN POOL WIZARDS-QUARTERS
FUSE POOL-ROOM WIZARDS-WORKSHOP
GAZEBO PORTRAIT WORKBENCH
GAZEBO-OBJECT POSTS ZORK3
GAZEBO-TABLE POSTS-ROOM ZORKMID
GLOBAL-CERBERUS PRINCESS
GLOBAL-MENHIR PSEUDO-OBJECT
Properties: 28
P?ACTION P?DOWN P?LAND P?OUT P?STRENGTH P?VALUE
P?ADJECTIVE P?EAST P?LDESC P?PSEUDO P?SW P?VTYPE
P?CAPACITY P?FDESC P?NE P?SE P?SYNONYM P?WEST
P?CONTFCN P?GLOBAL P?NORTH P?SIZE P?TEXT
P?DESCFCN P?IN P?NW P?SOUTH P?UP
Flags: 28
ACTORBIT DRINKBIT NDESCBIT READBIT TAKEBIT TRYTAKEBIT
BURNBIT FLAMEBIT NONLANDBIT RLANDBIT TOOLBIT VEHBIT
CLIMBBIT FOODBIT NWALLBIT SACREDBIT TOUCHBIT WEAPONBIT
CONTBIT INVISIBLE ONBIT SEARCHBIT TRANSBIT
DOORBIT LIGHTBIT OPENBIT SURFACEBIT TREASUREBIT

1
mini2.serial Normal file
View file

@ -0,0 +1 @@
1

50
mini2.zap Normal file
View file

@ -0,0 +1,50 @@
; Low core locations
%ZVERSION:: .BYTE 0
.BYTE FLAGS
%ZORKID:: ZORKID
%ENDLOD:: ENDLOD
%START:: START
%VOCAB:: VOCAB
%OBJECT:: OBJECT
%GLOBAL:: GLOBAL
%PURBOT:: IMPURE
%FLAGS:: .WORD 0
%SERIAL:: .WORD 0
%SERI1:: .WORD 0
%SERI2:: .WORD 0
%FWORDS:: WORDS
%PLENTH:: .WORD 0
%PCHKSM:: .WORD 0
%INTWRD:: .WORD 0
%SCRWRD:: .WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.WORD 0
.INSERT "SS:<ZORK2.MINI2>MINI2FREQ" ;Frequent word table
.INSERT "SS:<ZORK2.MINI2>MINI2DAT" ; Data file
.INSERT "SS:<ZORK2.MINI2>MINI2PUR"
.INSERT "SS:<ZORK2.MINI2>MISC"
.INSERT "SS:<ZORK2.MINI2>PARSER"
.INSERT "SS:<ZORK2.MINI2>VERBS"
.INSERT "SS:<ZORK2.MINI2>GLOBALS"
.INSERT "SS:<ZORK2.MINI2>WIZARD"
.INSERT "SS:<ZORK2.MINI2>DUNGEON"
.INSERT "SS:<ZORK2.MINI2>PRINCESS"
.INSERT "SS:<ZORK2.MINI2>ALICE"
.INSERT "SS:<ZORK2.MINI2>VOLCANO"
.INSERT "SS:<ZORK2.MINI2>MINI2STR"
.END

35
mini2.zil Normal file
View file

@ -0,0 +1,35 @@
"MINI2 for
Mini-Zork II: The Wizard of Frobozz
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
ON!-INITIAL
OFF!-INITIAL
<SET REDEFINE T>
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<PRINC "Mini-Zork II
">
<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 "WIZARD" T>
<INSERT-FILE "DUNGEON" T>
<INSERT-FILE "PRINCESS" T>
<INSERT-FILE "ALICE" T>
<INSERT-FILE "VOLCANO" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>

BIN
mini2.zip Normal file

Binary file not shown.

8455
mini2dat.zap Normal file

File diff suppressed because it is too large Load diff

200
mini2freq.xzap Normal file
View file

@ -0,0 +1,200 @@
.FSTR FSTR?1,"the " ;894 448
.FSTR FSTR?2,"The " ;828 277
.FSTR FSTR?3,"You " ;465 156
.FSTR FSTR?4,", " ;302 303
.FSTR FSTR?5,"and " ;286 144
.FSTR FSTR?6,"is " ;264 265
.FSTR FSTR?7,"you " ;250 126
.FSTR FSTR?8,"can't " ;225 46
.FSTR FSTR?9,"There " ;220 45
.FSTR FSTR?10,". " ;218 219
.FSTR FSTR?11,"to " ;185 186
.FSTR FSTR?12,"with " ;171 58
.FSTR FSTR?13,"of " ;167 168
.FSTR FSTR?14,"your " ;159 54
.FSTR FSTR?15,"from " ;150 51
.FSTR FSTR?16,"have " ;144 49
.FSTR FSTR?17,"Wizard " ;138 24
.FSTR FSTR?18,"This " ;128 33
.FSTR FSTR?19,"that " ;117 40
.FSTR FSTR?20,"are " ;114 58
.FSTR FSTR?21,"dragon " ;100 21
.FSTR FSTR?22,"in " ;97 98
.FSTR FSTR?23,"don't " ;90 19
.FSTR FSTR?24,"room " ;84 29
.FSTR FSTR?25,"into " ;84 29
.FSTR FSTR?26,"princess " ;84 13
.FSTR FSTR?27,"It " ;80 41
.FSTR FSTR?28,"It's " ;80 17
.FSTR FSTR?29,"huge " ;78 27
.FSTR FSTR?30,"balloon " ;78 14
.FSTR FSTR?31,"seems " ;72 19
.FSTR FSTR?32,"already " ;72 13
.FSTR FSTR?33,"here" ;70 36
.FSTR FSTR?34,"but " ;70 36
.FSTR FSTR?35,"this " ;69 24
.FSTR FSTR?36,"A " ;68 69
.FSTR FSTR?37,"Wizard's " ;63 8
.FSTR FSTR?38,"his " ;62 32
.FSTR FSTR?39,"appears " ;60 11
.FSTR FSTR?40,"for " ;54 28
.FSTR FSTR?41,"Room" ;54 19
.FSTR FSTR?42,"nothing " ;54 10
.FSTR FSTR?43,"that" ;52 27
.FSTR FSTR?44,"not " ;52 27
.FSTR FSTR?45,"which " ;52 14
.FSTR FSTR?46,"sphere" ;52 14
.FSTR FSTR?47,"closed" ;52 14
.FSTR FSTR?48,"out " ;50 26
.FSTR FSTR?49,"has " ;50 26
.FSTR FSTR?50,"enormous " ;49 8
.FSTR FSTR?51,"doesn't " ;49 8
.FSTR FSTR?52,"You're " ;49 8
.FSTR FSTR?53,"Frobozz " ;49 8
.FSTR FSTR?54,"He " ;48 25
.FSTR FSTR?55,"demon " ;48 13
.FSTR FSTR?56,"crystal " ;48 9
.FSTR FSTR?57,"There's " ;48 7
.FSTR FSTR?58,"on " ;47 48
.FSTR FSTR?59,"wand " ;45 16
.FSTR FSTR?60,"door " ;45 16
.FSTR FSTR?61,"isn't " ;45 10
.FSTR FSTR?62,"would " ;44 12
.FSTR FSTR?63,"small " ;44 12
.FSTR FSTR?64,"you're " ;42 8
.FSTR FSTR?65,"through " ;42 8
.FSTR FSTR?66,"passage " ;42 8
.FSTR FSTR?67,"direction" ;42 7
.FSTR FSTR?68,"Nothing " ;42 7
.FSTR FSTR?69,"light " ;40 11
.FSTR FSTR?70,"leads " ;40 11
.FSTR FSTR?71,"ground" ;40 11
.FSTR FSTR?72,"Your " ;40 11
.FSTR FSTR?73,"That " ;40 11
.FSTR FSTR?74,"menhir " ;40 9
.FSTR FSTR?75,"cannot " ;40 9
.FSTR FSTR?76,"before " ;40 9
.FSTR FSTR?77,"something " ;40 6
.FSTR FSTR?78,"I " ;39 40
.FSTR FSTR?79,"one " ;38 20
.FSTR FSTR?80,"you" ;37 38
.FSTR FSTR?81,"be " ;37 38
.FSTR FSTR?82,"! " ;37 38
.FSTR FSTR?83,"as " ;36 37
.FSTR FSTR?84,"an " ;36 37
.FSTR FSTR?85,"only " ;36 13
.FSTR FSTR?86,"been " ;36 13
.FSTR FSTR?87,"takes " ;36 10
.FSTR FSTR?88,"south " ;36 10
.FSTR FSTR?89,"looks " ;36 10
.FSTR FSTR?90,"large " ;36 10
.FSTR FSTR?91,"unicorn " ;36 7
.FSTR FSTR?92,"wooden " ;35 8
.FSTR FSTR?93,"southwest" ;35 6
.FSTR FSTR?94,"You'll " ;35 6
.FSTR FSTR?95,"it " ;34 35
.FSTR FSTR?96,"now " ;34 18
;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

8
mini2pur.zap Normal file
View file

@ -0,0 +1,8 @@
; PURE TABLES ARE DEFINED HERE
PURTBL::
PURTND::
.ENDI

263
mini2str.zap Normal file
View file

@ -0,0 +1,263 @@
; STRINGS ARE DEFINED HERE
STRBEG::
.GSTR STR?14,""
.GSTR STR?25," has no effect."
.GSTR STR?61,"Float"
.GSTR STR?76,"yellow sphere"
.GSTR STR?77,"grue"
.GSTR STR?155,"An old wooden chest sits in the corner."
.GSTR STR?173,"You have made it to the top. Well done. There are etchings on the well. A crack runs across the floor at the doorway to the east, but it can be crossed easily. Another doorway leads northeast."
.GSTR STR?32,".
"
.GSTR STR?218,"Lord Dimwit's crown is here."
.GSTR STR?12,"Oh, no! You have walked into the slavering fangs of a lurking grue!"
.GSTR STR?16," "
.GSTR STR?106,"a dim cave, its floor piled with furs and old bones"
.GSTR STR?107,"On the table sits a blue crystal sphere."
.GSTR STR?122,"On the floor is a neat stack of 200 zorkmid bills."
.GSTR STR?149,"Dragon hide is tough as steel, but you have annoyed him a bit. He looks as if deciding whether or not to eat you."
.GSTR STR?195,"On the floor lies a moby ruby."
.GSTR STR?206,"On the floor is a priceless gold zorkmid (a valuable collector's item)."
.GSTR STR?222,"Now you've done it. It seems that the brick is an explosive and you have been blown to bits."
.GSTR STR?43,"It doesn't fit the lock.
"
.GSTR STR?59,"Fall"
.GSTR STR?20," and devoured you!"
.GSTR STR?44," the Great Underground Empire"
.GSTR STR?150,"That captured his interest. He stares at you balefully."
.GSTR STR?152,"That did no damage, but he turns his smoky yellow eyes in your direction."
.GSTR STR?165,"The air is cool and damp. A path from the southeast splits here; north toward a stone bridge, and west into a narrow tunnel. It is from the latter that the chill originates."
.GSTR STR?72,"pile of jewels"
.GSTR STR?196,"The balloon floats majestically out of the volcano, revealing a breathtaking view of a forest clearing with a white house. High winds carry you into the snow-capped (and jagged) cliffs of the Flathead Mountains!"
.GSTR STR?201,"descends."
.GSTR STR?212,"The book details the use of the so-called ""magic wand"". Apparently, these work by pointing them at the object to be ensorcelled, and then chanting the appropriate magic word. (Amazing how credulous these ancients were.)"
.GSTR STR?3,"begin"
.GSTR STR?30,"What a concept!"
.GSTR STR?52,"You plunge down the well."
.GSTR STR?53,"You plunge down the volcano."
.GSTR STR?94,"Filling the northern half of the room is a huge aquarium."
.GSTR STR?115,"This is a huge limestone cavern, glowing with dim, phosphorescent light from far above. Narrow paths wind south and northeast."
.GSTR STR?117,"This smooth-walled tunnel runs northeast to southwest. A faint whirring sound comes from the latter direction. Another opening, choked with leaves, leads southeast."
.GSTR STR?121,"This is a small chamber carved from the western end of a short crawl. On the wall is crudely chiseled the number ""8""."
.GSTR STR?125,"This was once a kennel for a large dog (some of the bones would fit a dinosaur). The only exit is northeast."
.GSTR STR?128,"This is the entrance to a huge tomb. A passage leads north."
.GSTR STR?140,"This is a gazebo in the midst of a formal garden. It is cool and restful here. A tea table adorns the center of the gazebo."
.GSTR STR?143,"This is the southern end of a garden, where fantastically shaped hedges are arrayed with geometric precision. Though recently untended, the bushes have clearly been shaped: There is a dragon, a unicorn, a great serpent, a huge misshapen dog, and several human figures. To the west is a tunnel."
.GSTR STR?168,"This is a tall, damp room with brick walls. There are some etchings on the walls. A passage leads west."
.GSTR STR?176,"This robot was trained at GUE Tech to perform simple household functions. To activate, say:
>ROBOT, <thing to do>
A product of the Frobozz Magic Robot Company."
.GSTR STR?177,"This room is full of assorted machinery, whirring noisily. On one wall is a triangular button labelled, ""DANGER -- HIGH VOLTAGE."" There are exits to the south and southwest."
.GSTR STR?179,"This is a former broom closet. A larger room lies to the north. Chiselled on the wall are the words ""Protected by the Frobozz Magic Alarm Company."""
.GSTR STR?207,"This octagonal coin reads ""1000 Zorkmids"" and ""In Frobs We Trust""."
.GSTR STR?208,"This must have been a large library, probably for the royal family. All of the shelves have been gnawed to pieces by unfriendly gnomes. To the north is an exit."
.GSTR STR?210,"This book is written in an unfamiliar tongue."
.GSTR STR?214,"This three zorkmid stamp portrays Lord Dimwit Flathead the Excessive."
.GSTR STR?26,"A valiant attempt."
.GSTR STR?33,"The demon is gone for a moment. "
.GSTR STR?46," comes to a stop.
"
.GSTR STR?85,"The demon crushes you with his enormous hand."
.GSTR STR?146,"The dragon hisses and blocks your way."
.GSTR STR?151,"The dragon is surprised and interested (for the moment)."
.GSTR STR?192,"The depressed area is filled with water. There is something hazy at the deepest part of the pool."
.GSTR STR?42,"The edge of a place mat is visible under the door."
.GSTR STR?132,"Before you are the earthly remains of the mighty Flatheads, twelve somewhat flat heads mounted securely on poles. There is writing carved on the crypt. To the north and south are dark doorways."
.GSTR STR?134,"""Here lie the Flatheads, whose heads were placed on poles by the Dungeon Master for amazing untastefulness."""
.GSTR STR?147,"A huge red dragon is lying on the rocks, watching."
.GSTR STR?148,"A huge red dragon is blocking the north exit. Smoke curls from his nostrils."
.GSTR STR?160,"west"
.GSTR STR?217,"The excessively gaudy crown of Lord Dimwit Flathead sits in the safe."
.GSTR STR?7,"You should have looked before you leaped."
.GSTR STR?38,"You see only darkness.
"
.GSTR STR?71,"You sink quietly down again."
.GSTR STR?95,"A shattered aquarium fills the northern half of the room."
.GSTR STR?159,"east"
.GSTR STR?162,"out"
.GSTR STR?191,"The far half of this room is depressed. The only exit is west."
.GSTR STR?50,"The guardian greedily devours "
.GSTR STR?54,"You trip on something and fall over the edge of the bridge."
.GSTR STR?74,"basilisk"
.GSTR STR?129,"The huge dog snaps at you."
.GSTR STR?136,"north"
.GSTR STR?36,"Look around you.
"
.GSTR STR?101,"almost monkish in its austerity"
.GSTR STR?161,"in"
.GSTR STR?185,"The icing spells, ""Eat Me."""
.GSTR STR?9,"Pushing the "
.GSTR STR?31,"What's tall as a house,
round as a cup,
and all the king's horses
can't draw it up?""
"
.GSTR STR?55,"and the resulting fall does you in."
.GSTR STR?86,"A dejected and fearful Wizard watches from the corner."
.GSTR STR?109,""""
.GSTR STR?211,"Beside the purple book is a white one."
.GSTR STR?83,"Inscribed on the floor is a great pentagram drawn with black chalk. In its center is a black circle."
.GSTR STR?49,", almost as though an invisible hand had tipped it over.
"
.GSTR STR?60,"Ferment"
.GSTR STR?112,"The lamp appears a bit dimmer."
.GSTR STR?113,"The lamp is definitely dimmer now."
.GSTR STR?114,"The lamp is nearly out."
.GSTR STR?47,"""Buzz, whirr, click!"
.GSTR STR?65,"All at once you feel very tired."
.GSTR STR?37,"It's too dark to see."
.GSTR STR?45,"It's not clear what you're referring to.
"
.GSTR STR?164,"It's a long way down."
.GSTR STR?174,"It's a long way down!"
.GSTR STR?183,"Only a mouse could fit."
.GSTR STR?105,"a suburban bedroom out of the 1950's, complete with bunk beds"
.GSTR STR?181,"The poison gas takes effect."
.GSTR STR?88,"Very nice, but not enough!"
.GSTR STR?93,"Here a dark hallway turns a corner. To the south is a dark room, to the east is fitful light."
.GSTR STR?137,"south"
.GSTR STR?142,"""Visit Exotic ZORK I! Consult the Frobozz Magic Travel Agency, or visit your local computer store for details."""
.GSTR STR?199,"lifts off."
.GSTR STR?6,"Kicking the "
.GSTR STR?131,"A grinning, three-headed dog, wearing a huge collar, wags its tail here."
.GSTR STR?154,"The rock walls are scarred by flame, and a blackened doorway leads south."
.GSTR STR?188,"The room is now too small to hold you, and the walls are tougher than your body."
.GSTR STR?209,"In one corner sits a blue book."
.GSTR STR?221,"The room is cluttered with debris from an explosion. The walls seem ready to collapse."
.GSTR STR?223,"The room trembles and 5000 tons of rock fall on you."
.GSTR STR?24," isn't notably helpful."
.GSTR STR?90,"Almost halfway there, oh worthy one!"
.GSTR STR?21,"There is some water here."
.GSTR STR?80,"The text is in an obscure tongue."
.GSTR STR?82,"There is a strange black sphere here."
.GSTR STR?84,"There is a demon floating in midair here."
.GSTR STR?97,"There is a baby sea serpent swimming in the aquarium."
.GSTR STR?108,"There is a clear crystal sphere lying in the sand."
.GSTR STR?120,"There is a Stradivarius here."
.GSTR STR?141,"There is a matchbook saying ""Visit ZORK I"" here."
.GSTR STR?144,"The topiary animals attack! You are crushed by their branches and clawed by their thorns."
.GSTR STR?171,"There is a wooden bucket here, 3 feet in diameter and 3 feet high."
.GSTR STR?187,"Taste: yum. Effect: massive dehydration."
.GSTR STR?193,"There is a package of candied insects here."
.GSTR STR?202,"There is a blue label here."
.GSTR STR?203,"""FROBOZZ MAGIC BALLOON COMPANY! Hello, Aviator!
To land your balloon, say LAND. Otherwise, you're on your own! (No warranty expressed or implied.)"""
.GSTR STR?215,"There is a card with writing on it here."
.GSTR STR?219,"There is a square brick here which feels like clay."
.GSTR STR?220,"There is a coil of black, braided string here."
.GSTR STR?104,"overhung with palm-trees and lianas. The only furniture is a hammock"
.GSTR STR?133,"The Flatheads foresaw that someone might tamper with their remains, and took steps to punish such actions."
.GSTR STR?135,"Strands of light vibrate toward you, as if searching for something. One by one your possessions glow bright green. Finally, you are attacked by these magical wardens, and destroyed!"
.GSTR STR?205,"I wouldn't jump from here."
.GSTR STR?35,"As you peer into the sphere, a strange vision takes shape"
.GSTR STR?103,"decorated in the Louis XIV style"
.GSTR STR?8,"Playing in this way with the "
.GSTR STR?13,"Waving the "
.GSTR STR?40,"The wand stops glowing, but there is no other apparent effect.
"
.GSTR STR?58,"Freeze"
.GSTR STR?145,"The walls of this large cavern are scorched and a sooty dry smell is very strong here. A stone bridge leads the south, and a smokey tunnel opens to the north. To the east is a small opening."
.GSTR STR?169,"The walls cannot be climbed."
.GSTR STR?1,"leave the game"
.GSTR STR?118,"An Elvish sword of great antiquity is here."
.GSTR STR?153,", but you barely feel the heat. The dragon is puzzled, but not too puzzled to crush you in his jaws."
.GSTR STR?156,"Nestled in the chest is a gold statuette of a dragon."
.GSTR STR?200,"lands."
.GSTR STR?89,"Ah, truly magnificent! Keep them coming."
.GSTR STR?123,"Each bill is worth 100 zorkmids and bears the legend ""In Frobs We Trust""."
.GSTR STR?22,"Poof, you're dead!"
.GSTR STR?57,"Fumble"
.GSTR STR?127,"Bad idea. As you unfasten the collar, the monster rends you into little doggy biscuits."
.GSTR STR?10,"Fiddling with the "
.GSTR STR?75,"bulging chest"
.GSTR STR?79,"copy of ZORK I"
.GSTR STR?111,"A familiar brass lantern is lying on the ground."
.GSTR STR?29,"An interesting idea..."
.GSTR STR?81,"Halls lead west and south. The Wizard's workbench dominates the room. It is stained from years of use, and is deeply gouged as though some huge clawed animal was imprisoned on it. In the center of the bench, three stands - ruby, sapphire, and diamond - form a triangle."
.GSTR STR?172,"If you insist."
.GSTR STR?190,"A chasm blocks your way."
.GSTR STR?96,"rends you limb from limb before he drowns in the air."
.GSTR STR?216,"Warning: This room was constructed near weak rock strata. Detonation of explosives here is strictly prohibited!"
.GSTR STR?63,"Fence"
.GSTR STR?28,"Not bloody likely."
.GSTR STR?66,"Your limbs suddenly feel like stone. You can't move a muscle."
.GSTR STR?69,"Your little finger begins to twitch, and then your whole body is free again."
.GSTR STR?70,"Your head is clearer now."
.GSTR STR?78,"convention of wizards"
.GSTR STR?91,"Your generosity overwhelms me!"
.GSTR STR?130,"A vicious-looking dog guards the entrance to the south. It's your usual dog, except that it has three heads and is the size of an elephant."
.GSTR STR?138,"A path of crushed white stone winds among bushes and flower beds of this garden from south to north. Almost hidden by the shrubbery is a small white gazebo."
.GSTR STR?182,"An oblong table here is set for afternoon tea. It is clear that the users were indeed mad. To the east is a small hole (perhaps four inches high). A doorway leads west."
.GSTR STR?197,"ascends."
.GSTR STR?198,"floats, ascending due to its light load."
.GSTR STR?56,"Feeble"
.GSTR STR?15," "
.GSTR STR?62,"Fireproof"
.GSTR STR?73,"gold ingot"
.GSTR STR?158,". ""Fry!"" he intones, and a bolt of lightning reduces you to a pile of ash. (Serves you right, too, if you ask me.)"
.GSTR STR?17," "
.GSTR STR?18," "
.GSTR STR?19," "
.GSTR STR?39,"It already is!
"
.GSTR STR?98,"He takes you instead. ""Uurrp!"""
.GSTR STR?110,"You are in an ancient barrow which opens to the southwest."
.GSTR STR?116,"You are ankle deep in a stream. To the southwest is a dark tunnel, and to the north a dim cavern."
.GSTR STR?119,"You are waist deep in a cold stream. On the northern bank, the walls rise to a small ledge. A ""whir"" comes from an opening to the south."
.GSTR STR?124,"You are trying to walk through an enormous rock."
.GSTR STR?163,"You are on a north-south bridge spanning a deep ravine. Water flows far beneath."
.GSTR STR?170," o b o
A G I
E L
m p a"
.GSTR STR?175," o b o
r z
f M A G I C z
c W E L L y
o n
m p a"
.GSTR STR?178,"You are instantly electrocuted."
.GSTR STR?180,"You are trapped in a solid steel cage."
.GSTR STR?186,"You are blasted to smithereens (wherever they are)."
.GSTR STR?194,"You are at the base of a dormant volcano. High above, light enters the cone of the volcano. The only exit is east."
.GSTR STR?204,"You are about one hundred feet above the bottom of the volcano."
.GSTR STR?4,"end"
.GSTR STR?67,"You begin to feel lightheaded."
.GSTR STR?87,"Most fine, master! But 'tis not enough. I will do a great service, and are not great services bought at great price?"
.GSTR STR?92,"Wondrous fine, master! But one treasure is yet to be given!"
.GSTR STR?102,"an opulently furnished seraglio out of an Arabian folktale"
.GSTR STR?2,"restart"
.GSTR STR?27,"You can't be serious."
.GSTR STR?41,"You can't go that way.
"
.GSTR STR?100,"You cut yourself severely on the broken glass."
.GSTR STR?5," it at the time."
.GSTR STR?48,"The Wizard waves his wand "
.GSTR STR?51,"The Wizard of Frobozz is here, eyeing you warily."
.GSTR STR?99,"You drop into the aquarium with a splash, which attracts the serpent. Being a hungry baby, he greedily eats you."
.GSTR STR?166,"You don't even have an ice-pick."
.GSTR STR?64,"Fantasize"
.GSTR STR?126,"A gigantic dog collar lies amidst the dust."
.GSTR STR?139,"A beautiful unicorn is munching grass here."
.GSTR STR?157,"A beautiful princess sits on a rock in the corner. Her hair is unkempt and she appears to be in a trance."
.GSTR STR?184,"A rare portrait of J. Pierpont Flathead hangs on the wall."
.GSTR STR?23," doesn't seem to work."
.GSTR STR?34,"You feel a rush of air as something moved nearby.
"
.GSTR STR?68,"You feel more energetic now."
.GSTR STR?213,"Lying in the dust, covered with mold, is a purple book."
.GSTR STR?11,"."
.GSTR STR?167,"A mass of ice fills the western half of the room."
.GSTR STR?189,"In the center of this enormous room, four wooden posts support a huge oblong roof. To the east is a large hole; to the west a gaping chasm."
.ENDI

77
misc.zabstr Normal file
View file

@ -0,0 +1,77 @@
<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>)>>!>>>
<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?) <FORM G? .BASE? '<RANDOM 100>>>
<DEFINE-ROUTINE RANDOM-ELEMENT>
<DEFINE-ROUTINE PICK-ONE>
<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)>>
<DEFMAC P-SONUMS ('SYN) <FORM / <FORM GETB .SYN ',P-SPREP1> 64>>
<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-END 6>
<CONSTANT M-ENTER 2>
<CONSTANT M-LOOK 3>
<CONSTANT M-FLASH 4>
<CONSTANT M-OBJDESC 5>
<DEFINE-ROUTINE GO>
<DEFINE-ROUTINE MAIN-LOOP>
<DEFINE-ROUTINE MAIN-LOOP-1>
<GLOBAL P-MULT <>>
<GLOBAL P-NOT-HERE 0>
<DEFINE-ROUTINE PERFORM>
<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>
<DEFINE-ROUTINE QUEUE>
<DEFINE-ROUTINE INT>
<GLOBAL CLOCK-WAIT <>>
<GLOBAL MOVES 0>
<DEFINE-ROUTINE CLOCKER>

318
misc.zap Normal file
View file

@ -0,0 +1,318 @@
.FUNCT RANDOM-ELEMENT,FROB
GET FROB,0
RANDOM STACK
GET FROB,STACK
RSTACK
.FUNCT PICK-ONE,FROB,L,CNT,RND,MSG,RFROB
GET FROB,0 >L
GET FROB,1 >CNT
DEC 'L
ADD FROB,2 >FROB
MUL CNT,2
ADD FROB,STACK >RFROB
SUB L,CNT
RANDOM STACK >RND
GET RFROB,RND >MSG
GET RFROB,1
PUT RFROB,RND,STACK
PUT RFROB,1,MSG
INC 'CNT
EQUAL? CNT,L \?CND1
SET 'CNT,0
?CND1: PUT FROB,0,CNT
RETURN MSG
.FUNCT GO
START::
?FCN: PUTB P-LEXV,0,59
CALL QUEUE,I-WIZARD,4
PUT STACK,0,1
CALL QUEUE,I-LANTERN,200
PUTP BALLOON,P?VTYPE,NONLANDBIT
PUTP BUCKET,P?VTYPE,NONLANDBIT
SET 'LIT,TRUE-VALUE
SET 'WINNER,ADVENTURER
SET 'HERE,INSIDE-THE-BARROW
SET 'P-IT-OBJECT,FALSE-VALUE
FSET? HERE,TOUCHBIT /?CND1
CALL V-VERSION
CRLF
?CND1: CALL V-LOOK
CALL MAIN-LOOP
JUMP ?FCN
.FUNCT MAIN-LOOP,TRASH
?PRG1: CALL MAIN-LOOP-1 >TRASH
JUMP ?PRG1
.FUNCT MAIN-LOOP-1,ICNT,OCNT,NUM,CNT,OBJ,TBL,V,PTBL,OBJ1,TMP,O,I
SET 'CNT,0
SET 'OBJ,FALSE-VALUE
SET 'PTBL,TRUE-VALUE
CALL PARSER >P-WON
ZERO? P-WON /?CCL3
GET P-PRSI,P-MATCHLEN >ICNT
GET P-PRSO,P-MATCHLEN >OCNT
ZERO? P-IT-OBJECT /?CND4
CALL ACCESSIBLE?,P-IT-OBJECT
ZERO? STACK /?CND4
SET 'TMP,FALSE-VALUE
?PRG8: IGRTR? 'CNT,ICNT /?REP9
GET P-PRSI,CNT
EQUAL? STACK,IT \?PRG8
PUT P-PRSI,CNT,P-IT-OBJECT
SET 'TMP,TRUE-VALUE
?REP9: ZERO? TMP \?CND15
SET 'CNT,0
?PRG17: IGRTR? 'CNT,OCNT /?CND15
GET P-PRSO,CNT
EQUAL? STACK,IT \?PRG17
PUT P-PRSO,CNT,P-IT-OBJECT
?CND15: SET 'CNT,0
?CND4: ZERO? OCNT \?CCL26
SET 'NUM,OCNT
JUMP ?CND24
?CCL26: GRTR? OCNT,1 \?CCL28
SET 'TBL,P-PRSO
ZERO? ICNT \?CCL31
SET 'OBJ,FALSE-VALUE
JUMP ?CND29
?CCL31: GET P-PRSI,1 >OBJ
?CND29: SET 'NUM,OCNT
JUMP ?CND24
?CCL28: GRTR? ICNT,1 \?CCL33
SET 'PTBL,FALSE-VALUE
SET 'TBL,P-PRSI
GET P-PRSO,1 >OBJ
SET 'NUM,ICNT
JUMP ?CND24
?CCL33: SET 'NUM,1
?CND24: ZERO? OBJ \?CND34
EQUAL? ICNT,1 \?CND34
GET P-PRSI,1 >OBJ
?CND34: EQUAL? PRSA,V?WALK \?CCL40
ZERO? P-WALK-DIR /?CCL40
CALL PERFORM,PRSA,PRSO >V
JUMP ?CND38
?CCL40: ZERO? NUM \?CCL44
GETB P-SYNTAX,P-SPREP1
DIV STACK,64
ZERO? STACK \?CCL47
CALL PERFORM,PRSA >V
SET 'PRSO,FALSE-VALUE
JUMP ?CND38
?CCL47: ZERO? LIT \?PRG52
PRINT TOO-DARK
CRLF
JUMP ?CND38
?PRG52: PRINT REFERRING
SET 'V,FALSE-VALUE
JUMP ?CND38
?CCL44: SET 'P-NOT-HERE,0
SET 'P-MULT,FALSE-VALUE
GRTR? NUM,1 \?CND54
SET 'P-MULT,TRUE-VALUE
?CND54: SET 'TMP,FALSE-VALUE
?PRG56: IGRTR? 'CNT,NUM \?CCL60
GRTR? P-NOT-HERE,0 \?CCL63
PRINTI "The "
EQUAL? P-NOT-HERE,NUM /?PRG70
PRINTI "other "
?PRG70: PRINTI "object"
EQUAL? P-NOT-HERE,1 /?PRG76
PRINTC 115
?PRG76: PRINTI " that you mentioned "
EQUAL? P-NOT-HERE,1 /?PRG83
PRINTI "are"
JUMP ?PRG85
?PRG83: PRINTI "is"
?PRG85: PRINTI "n't here."
CRLF
JUMP ?CND38
?CCL63: ZERO? TMP \?CND38
PRINTI "There's nothing here you can take."
CRLF
JUMP ?CND38
?CCL60: ZERO? PTBL /?CCL92
GET P-PRSO,CNT >OBJ1
JUMP ?CND90
?CCL92: GET P-PRSI,CNT >OBJ1
?CND90: ZERO? PTBL /?CCL95
SET 'O,OBJ1
JUMP ?CND93
?CCL95: SET 'O,OBJ
?CND93: ZERO? PTBL /?CCL98
SET 'I,OBJ
JUMP ?CND96
?CCL98: SET 'I,OBJ1
?CND96: GRTR? NUM,1 /?CCL100
GET P-ITBL,P-NC1
GET STACK,0
EQUAL? STACK,W?ALL \?CND99
?CCL100: LOC WINNER >V
EQUAL? O,NOT-HERE-OBJECT \?CCL105
INC 'P-NOT-HERE
JUMP ?PRG56
?CCL105: EQUAL? PRSA,V?TAKE \?CCL107
ZERO? I /?CCL107
GET P-ITBL,P-NC1
GET STACK,0
EQUAL? STACK,W?ALL \?CCL107
IN? O,I \?PRG56
?CCL107: EQUAL? P-GETFLAGS,P-ALL \?CCL113
EQUAL? PRSA,V?TAKE \?CCL113
LOC O
EQUAL? STACK,WINNER,HERE,V /?PRD118
LOC O
EQUAL? STACK,I /?PRD118
LOC O
FSET? STACK,SURFACEBIT \?PRG56
?PRD118: FSET? O,TAKEBIT /?CCL113
FSET? O,TRYTAKEBIT \?PRG56
?CCL113: EQUAL? OBJ1,IT \?CCL126
PRINTD P-IT-OBJECT
JUMP ?PRG127
?CCL126: PRINTD OBJ1
?PRG127: PRINTI ": "
?CND99: SET 'PRSO,O
SET 'PRSI,I
SET 'TMP,TRUE-VALUE
CALL PERFORM,PRSA,PRSO,PRSI >V
EQUAL? V,M-FATAL \?PRG56
?CND38: EQUAL? V,M-FATAL /?CND131
LOC WINNER
GETP STACK,P?ACTION
CALL STACK,M-END >V
?CND131: EQUAL? V,M-FATAL \?CND1
SET 'P-CONT,FALSE-VALUE
JUMP ?CND1
?CCL3: SET 'P-CONT,FALSE-VALUE
?CND1: ZERO? P-WON /FALSE
EQUAL? PRSA,V?SUPER-BRIEF,V?BRIEF,V?TELL /TRUE
EQUAL? PRSA,V?VERSION,V?SAVE,V?VERBOSE /TRUE
EQUAL? PRSA,V?SCORE,V?RESTART,V?QUIT /TRUE
EQUAL? PRSA,V?RESTORE,V?UNSCRIPT,V?SCRIPT /TRUE
CALL CLOCKER >V
RETURN V
.FUNCT PERFORM,A,O=0,I=0,V,OA,OO,OI
SET 'OA,PRSA
SET 'OO,PRSO
SET 'OI,PRSI
EQUAL? IT,I,O \?CND1
CALL ACCESSIBLE?,P-IT-OBJECT
ZERO? STACK \?CND1
PRINT REFERRING
RETURN 2
?CND1: EQUAL? O,IT \?CND9
SET 'O,P-IT-OBJECT
?CND9: EQUAL? I,IT \?CND11
SET 'I,P-IT-OBJECT
?CND11: SET 'PRSA,A
SET 'PRSO,O
ZERO? PRSO /?CND13
EQUAL? PRSI,IT /?CND13
EQUAL? PRSA,V?WALK /?CND13
SET 'P-IT-OBJECT,PRSO
?CND13: SET 'PRSI,I
EQUAL? NOT-HERE-OBJECT,PRSO,PRSI \?CCL20
CALL NOT-HERE-OBJECT-F >V
ZERO? V \?CND18
?CCL20: SET 'O,PRSO
SET 'I,PRSI
GETP WINNER,P?ACTION
CALL STACK >V
ZERO? V \?CND18
LOC WINNER
GETP STACK,P?ACTION
CALL STACK,M-BEG >V
ZERO? V \?CND18
GET PREACTIONS,A
CALL STACK >V
ZERO? V \?CND18
ZERO? I /?CCL31
GETP I,P?ACTION
CALL STACK >V
ZERO? V \?CND18
?CCL31: ZERO? O /?CCL35
EQUAL? A,V?WALK /?CCL35
LOC O
ZERO? STACK /?CCL35
LOC O
GETP STACK,P?CONTFCN
CALL STACK >V
ZERO? V \?CND18
?CCL35: ZERO? O /?CCL41
EQUAL? A,V?WALK /?CCL41
GETP O,P?ACTION
CALL STACK >V
ZERO? V \?CND18
?CCL41: GET ACTIONS,A
CALL STACK >V
ZERO? V /?CND18
?CND18: SET 'PRSA,OA
SET 'PRSO,OO
SET 'PRSI,OI
RETURN V
.FUNCT QUEUE,RTN,TICK,CINT
CALL INT,RTN >CINT
PUT CINT,C-TICK,TICK
RETURN CINT
.FUNCT INT,RTN,DEMON=0,E,C,INT
ADD C-TABLE,C-TABLELEN >E
ADD C-TABLE,C-INTS >C
?PRG1: EQUAL? C,E \?CCL5
SUB C-INTS,C-INTLEN >C-INTS
ZERO? DEMON /?PEN6
SUB C-DEMONS,C-INTLEN >C-DEMONS
?PEN6: ADD C-TABLE,C-INTS >INT
PUT INT,C-RTN,RTN
RETURN INT
?CCL5: GET C,C-RTN
EQUAL? STACK,RTN \?CND3
RETURN C
?CND3: ADD C,C-INTLEN >C
JUMP ?PRG1
.FUNCT CLOCKER,C,E,TICK,FLG=0
ZERO? CLOCK-WAIT /?CND1
SET 'CLOCK-WAIT,FALSE-VALUE
RFALSE
?CND1: ZERO? P-WON /?CCL5
PUSH C-INTS
JUMP ?CND3
?CCL5: PUSH C-DEMONS
?CND3: ADD C-TABLE,STACK >C
ADD C-TABLE,C-TABLELEN >E
?PRG6: EQUAL? C,E \?CCL10
INC 'MOVES
RETURN FLG
?CCL10: GET C,C-ENABLED?
ZERO? STACK /?CND8
GET C,C-TICK >TICK
ZERO? TICK /?CND8
SUB TICK,1
PUT C,C-TICK,STACK
GRTR? TICK,1 /?CND8
GET C,C-RTN
CALL STACK
ZERO? STACK /?CND8
SET 'FLG,TRUE-VALUE
?CND8: ADD C,C-INTLEN >C
JUMP ?PRG6
.ENDI

535
misc.zil Normal file
View file

@ -0,0 +1,535 @@
"MISC for
Mini-Zork II: The Wizard of Frobozz
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
;"former MACROS stuff"
<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?)
<FORM G? .BASE? '<RANDOM 100>>>
<ROUTINE RANDOM-ELEMENT (FROB)
<GET .FROB <RANDOM <GET .FROB 0>>>>
<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-END 6>
<CONSTANT M-ENTER 2>
<CONSTANT M-LOOK 3>
<CONSTANT M-FLASH 4>
<CONSTANT M-OBJDESC 5>
<ROUTINE GO ()
<PUTB ,P-LEXV 0 59>
<ENABLE <QUEUE I-WIZARD 4>>
<QUEUE I-LANTERN 200>
<PUTP ,BALLOON ,P?VTYPE ,NONLANDBIT>
<PUTP ,BUCKET ,P?VTYPE ,NONLANDBIT>
<SETG LIT T>
<SETG WINNER ,ADVENTURER>
<SETG HERE ,INSIDE-THE-BARROW>
<SETG P-IT-OBJECT <>>
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
<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 CR>)
(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
"There's 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>>
<LOC .O>
<SET V <APPLY <GETP <LOC .O> ,P?CONTFCN>>>>
.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>
<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>>
<LOC .O>
<GETP <LOC .O> ,P?CONTFCN>
<SET V <DD-APPLY "Container" <LOC .O>
<GETP <LOC .O> ,P?CONTFCN>>>>
.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 CLOCK 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 <>>
<GLOBAL MOVES 0>
<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>>>>

151
parser.zabstr Normal file
View file

@ -0,0 +1,151 @@
<SETG SIBREAKS ".,\"">
<GLOBAL PRSA <>>
<GLOBAL PRSI <>>
<GLOBAL PRSO <>>
<GLOBAL P-TABLE 0>
<GLOBAL P-ONEOBJ 0>
<GLOBAL P-SYNTAX 0>
<GLOBAL P-CCTBL <TABLE 0 0 0 0>>
<CONSTANT CC-SBPTR 0>
<CONSTANT CC-SEPTR 1>
<CONSTANT CC-DBPTR 2>
<CONSTANT CC-DEPTR 3>
<GLOBAL P-LEN 0>
<GLOBAL P-DIR 0>
<GLOBAL HERE 0>
<GLOBAL WINNER 0>
<GLOBAL P-LEXV <ITABLE 59 (LEXV) 0 #BYTE *000000000000* #BYTE *000000000000*>>
<GLOBAL AGAIN-LEXV <ITABLE 59 (LEXV) 0 #BYTE *000000000000* #BYTE
*000000000000*>>
<GLOBAL RESERVE-LEXV <ITABLE 59 (LEXV) 0 #BYTE *000000000000* #BYTE
*000000000000*>>
<GLOBAL RESERVE-PTR <>>
<GLOBAL P-INBUF <ITABLE 120 (BYTE LENGTH) 0>>
<GLOBAL OOPS-INBUF <ITABLE 120 (BYTE LENGTH) 0>>
<GLOBAL OOPS-TABLE <TABLE <> <> <> <>>>
<CONSTANT O-PTR 0>
<CONSTANT O-START 1>
<CONSTANT O-LENGTH 2>
<CONSTANT O-END 3>
<GLOBAL P-CONT <>>
<GLOBAL P-IT-OBJECT <>>
<GLOBAL P-OFLAG <>>
<GLOBAL P-MERGED <>>
<GLOBAL P-ACLAUSE <>>
<GLOBAL P-ANAM <>>
<GLOBAL P-AADJ <>>
<CONSTANT P-LEXWORDS 1>
<CONSTANT P-LEXSTART 1>
<CONSTANT P-LEXELEN 2>
<CONSTANT P-WORDLEN 4>
<CONSTANT P-PSOFF 4>
<CONSTANT P-P1OFF 5>
<CONSTANT P-P1BITS 3>
<CONSTANT P-ITBLLEN 9>
<GLOBAL P-ITBL <TABLE 0 0 0 0 0 0 0 0 0 0>>
<GLOBAL P-OTBL <TABLE 0 0 0 0 0 0 0 0 0 0>>
<GLOBAL P-VTBL <TABLE 0 0 0 0>>
<GLOBAL P-OVTBL <TABLE 0 #BYTE *000000000000* #BYTE *000000000000*>>
<GLOBAL P-NCN 0>
<CONSTANT P-VERB 0>
<CONSTANT P-VERBN 1>
<CONSTANT P-PREP1 2>
<CONSTANT P-PREP1N 3>
<CONSTANT P-PREP2 4>
<CONSTANT P-PREP2N 5>
<CONSTANT P-NC1 6>
<CONSTANT P-NC1L 7>
<CONSTANT P-NC2 8>
<CONSTANT P-NC2L 9>
<GLOBAL QUOTE-FLAG <>>
<GLOBAL P-END-ON-PREP <>>
<DEFINE-ROUTINE PARSER>
<GLOBAL P-ACT <>>
<GLOBAL P-WALK-DIR <>>
<GLOBAL AGAIN-DIR <>>
<DEFINE-ROUTINE STUFF>
<DEFINE-ROUTINE INBUF-STUFF>
<DEFINE-ROUTINE INBUF-ADD>
<DEFINE-ROUTINE WT?>
<DEFINE-ROUTINE CLAUSE>
<DEFINE-ROUTINE NUMBER?>
<GLOBAL P-NUMBER 0>
<DEFINE-ROUTINE ORPHAN-MERGE>
<DEFINE-ROUTINE ACLAUSE-WIN>
<DEFINE-ROUTINE NCLAUSE-WIN>
<DEFINE-ROUTINE WORD-PRINT>
<DEFINE-ROUTINE UNKNOWN-WORD>
<DEFINE-ROUTINE CANT-USE>
<GLOBAL P-SLOCBITS 0>
<CONSTANT P-SYNLEN 8>
<CONSTANT P-SPREP1 0>
<CONSTANT P-SACTION 1>
<CONSTANT P-SFWIM1 2>
<CONSTANT P-SLOC1 3>
<CONSTANT P-SPREP2 4>
<CONSTANT P-SFWIM2 5>
<CONSTANT P-SLOC2 6>
<CONSTANT P-SYNLEN-0 2>
<CONSTANT P-SYNLEN-1 4>
<CONSTANT P-SYNLEN-2 7>
<DEFINE-ROUTINE GET-PREP>
<DEFINE-ROUTINE SYNTAX-CHECK>
<DEFINE-ROUTINE CANT-ORPHAN>
<DEFINE-ROUTINE ORPHAN>
<DEFINE-ROUTINE THING-PRINT>
<DEFINE-ROUTINE BUFFER-PRINT>
<DEFINE-ROUTINE PREP-PRINT>
<DEFINE-ROUTINE CLAUSE-COPY>
<DEFINE-ROUTINE CLAUSE-ADD>
<DEFINE-ROUTINE PREP-FIND>
<DEFINE-ROUTINE SYNTAX-FOUND>
<GLOBAL P-GWIMBIT 0>
<DEFINE-ROUTINE GWIM>
<DEFINE-ROUTINE SNARF-OBJECTS>
<DEFINE-ROUTINE BUT-MERGE>
<GLOBAL P-NAM <>>
<GLOBAL P-ADJ <>>
<GLOBAL P-ADVERB <>>
<GLOBAL P-ADJN <>>
<GLOBAL P-PRSO <ITABLE NONE 50>>
<GLOBAL P-PRSI <ITABLE NONE 50>>
<GLOBAL P-BUTS <ITABLE NONE 50>>
<GLOBAL P-MERGE <ITABLE NONE 50>>
<GLOBAL P-OCLAUSE <ITABLE NONE 100>>
<GLOBAL P-MATCHLEN 0>
<GLOBAL P-GETFLAGS 0>
<CONSTANT P-ALL 1>
<CONSTANT P-ONE 2>
<CONSTANT P-INHIBIT 4>
<GLOBAL P-AND <>>
<DEFINE-ROUTINE SNARFEM>
<CONSTANT SH 128>
<CONSTANT SC 64>
<CONSTANT SIR 32>
<CONSTANT SOG 16>
<CONSTANT STAKE 8>
<CONSTANT SMANY 4>
<CONSTANT SHAVE 2>
<DEFINE-ROUTINE GET-OBJECT>
<GLOBAL P-XNAM <>>
<GLOBAL P-XADJ <>>
<GLOBAL P-XADJN <>>
<DEFINE-ROUTINE WHICH-PRINT>
<DEFINE-ROUTINE GLOBAL-CHECK>
<DEFINE-ROUTINE DO-SL>
<CONSTANT P-SRCBOT 2>
<CONSTANT P-SRCTOP 0>
<CONSTANT P-SRCALL 1>
<DEFINE-ROUTINE SEARCH-LIST>
<DEFINE-ROUTINE OBJ-FOUND>
<DEFINE-ROUTINE TAKE-CHECK>
<DEFINE-ROUTINE ITAKE-CHECK>
<DEFINE-ROUTINE MANY-CHECK>
<DEFINE-ROUTINE ZMEMQ>
<DEFINE-ROUTINE ZMEMQB>
<GLOBAL ALWAYS-LIT <>>
<DEFINE-ROUTINE LIT?>
<DEFINE-ROUTINE THIS-IT?>
<DEFINE-ROUTINE ACCESSIBLE?>
<DEFINE-ROUTINE META-LOC>

1600
parser.zap Normal file

File diff suppressed because it is too large Load diff

1483
parser.zil Normal file

File diff suppressed because it is too large Load diff

126
princess.zabstr Normal file
View file

@ -0,0 +1,126 @@
<ROOM FORMAL-GARDEN (IN ROOMS) (DESC "Formal Garden") (LDESC
"A path of crushed white stone winds among bushes and flower beds of this
garden from south to north. Almost hidden by the shrubbery is a small white
gazebo.") (IN TO GAZEBO) (NORTH TO DARK-TUNNEL) (SOUTH TO TOPIARY) (FLAGS
RLANDBIT) (GLOBAL GAZEBO-OBJECT) (ACTION FORMAL-GARDEN-F)>
<DEFINE-ROUTINE FORMAL-GARDEN-F>
<DEFINE-ROUTINE I-GARDEN>
<OBJECT UNICORN (DESC "unicorn") (LDESC
"A beautiful unicorn is munching grass here.") (SYNONYM UNICORN ANIMAL) (
ADJECTIVE BEAUTIFUL WHITE) (FLAGS ACTORBIT TRYTAKEBIT OPENBIT CONTBIT) (ACTION
UNICORN-F)>
<GLOBAL UNICORN-FRIGHTENED <>>
<DEFINE-ROUTINE UNICORN-F>
<OBJECT GOLD-KEY (IN UNICORN) (DESC "delicate gold key") (SYNONYM KEY TREASURE)
(ADJECTIVE DELICATE GOLD) (VALUE 15) (SIZE 3) (FLAGS NDESCBIT TAKEBIT
TRYTAKEBIT TOOLBIT) (ACTION UNICORN-F)>
<OBJECT RIBBON (IN UNICORN) (DESC "ribbon") (SYNONYM RIBBON) (ADJECTIVE VELVET
SATIN) (FLAGS NDESCBIT) (ACTION UNICORN-F)>
<ROOM GAZEBO (IN ROOMS) (DESC "Gazebo") (LDESC
"This is a gazebo in the midst of a formal garden. It is cool and restful
here. A tea table adorns the center of the gazebo.") (OUT TO FORMAL-GARDEN) (
FLAGS RLANDBIT ONBIT) (GLOBAL GAZEBO-OBJECT)>
<OBJECT GAZEBO-OBJECT (IN LOCAL-GLOBALS) (DESC "gazebo") (SYNONYM GAZEBO) (
ADJECTIVE WOODEN) (FLAGS NDESCBIT) (ACTION GAZEBO-OBJECT-F)>
<DEFINE-ROUTINE GAZEBO-OBJECT-F>
<OBJECT GAZEBO-TABLE (IN GAZEBO) (DESC "table") (SYNONYM TABLE) (CAPACITY 100)
(FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT)>
<OBJECT NEWSPAPER (IN GAZEBO-TABLE) (DESC "newspaper") (SYNONYM PAPER NEWSPAPER
) (ADJECTIVE NEWS NEWSPAPER) (FLAGS TAKEBIT BURNBIT READBIT) (ACTION
NEWSPAPER-F)>
<DEFINE-ROUTINE NEWSPAPER-F>
<OBJECT PLACE-MAT (IN GAZEBO-TABLE) (DESC "place mat") (SYNONYM MAT PLACEM) (
ADJECTIVE PLACE) (SIZE 12) (CAPACITY 20) (FLAGS TAKEBIT SURFACEBIT CONTBIT
OPENBIT) (ACTION PLACE-MAT-F)>
<DEFINE-ROUTINE PLACE-MAT-F>
<OBJECT TEAPOT (IN GAZEBO-TABLE) (DESC "china teapot") (SYNONYM TEAPOT POT) (
ADJECTIVE CHINA TEA) (CAPACITY 4) (FLAGS TAKEBIT TRANSBIT CONTBIT OPENBIT) (
ACTION TEAPOT-F)>
<DEFINE-ROUTINE TEAPOT-F>
<OBJECT LETTER-OPENER (IN GAZEBO-TABLE) (DESC "letter opener") (SYNONYM OPENER)
(ADJECTIVE LETTER) (SIZE 2) (FLAGS TAKEBIT TOOLBIT)>
<OBJECT MATCH (IN GAZEBO-TABLE) (DESC "matchbook") (LDESC
"There is a matchbook saying \"Visit ZORK I\" here.") (SYNONYM MATCH MATCHES
MATCHBOOK) (SIZE 2) (FLAGS READBIT TAKEBIT) (TEXT
"\"Visit Exotic ZORK I! Consult the Frobozz Magic Travel Agency, or visit
your local computer store for details.\"") (ACTION MATCH-F)>
<GLOBAL MATCH-COUNT 6>
<DEFINE-ROUTINE MATCH-F>
<DEFINE-ROUTINE I-MATCH>
<ROOM TOPIARY (IN ROOMS) (DESC "Topiary") (LDESC
"This is the southern end of a garden, where fantastically shaped hedges are
arrayed with geometric precision. Though recently untended, the bushes have
clearly been shaped: There is a dragon, a unicorn, a great serpent, a huge
misshapen dog, and several human figures. To the west is a tunnel.") (WEST TO
CAROUSEL-ROOM) (NORTH TO FORMAL-GARDEN) (FLAGS RLANDBIT) (ACTION TOPIARY-F)>
<DEFINE-ROUTINE TOPIARY-F>
<GLOBAL TOPIARY-COUNTER 0>
<DEFINE-ROUTINE I-TOPIARY>
<OBJECT HEDGES (IN TOPIARY) (DESC "hedge") (SYNONYM HEDGE HEDGES) (FLAGS
NDESCBIT) (ACTION HEDGES-F)>
<DEFINE-ROUTINE HEDGES-F>
<ROOM DRAGON-ROOM (IN ROOMS) (DESC "Dragon Room") (LDESC
"The walls of this large cavern are scorched and a sooty dry smell is very
strong here. A stone bridge leads the south, and a smokey tunnel opens to
the north. To the east is a small opening.") (EAST TO LEDGE-IN-RAVINE) (NORTH
TO DRAGON-LAIR IF ICE-MELTED ELSE "The dragon hisses and blocks your way.") (IN
TO DRAGON-LAIR IF ICE-MELTED ELSE "The dragon hisses and blocks your way.") (
SOUTH TO STONE-BRIDGE) (FLAGS RLANDBIT) (GLOBAL BRIDGE)>
<OBJECT DRAGON (IN DRAGON-ROOM) (DESC "huge red dragon") (SYNONYM DRAGON) (
ADJECTIVE RED HUGE) (LDESC "A huge red dragon is lying on the rocks, watching."
) (FDESC "A huge red dragon is blocking the north exit. Smoke curls from his nostrils."
) (FLAGS ACTORBIT) (ACTION DRAGON-F)>
<DEFINE-ROUTINE DRAGON-F>
<GLOBAL DRAGON-ATTACKS <LTABLE
"Dragon hide is tough as steel, but you have annoyed him a bit. He looks
as if deciding whether or not to eat you."
"That captured his interest. He stares at you balefully."
"The dragon is surprised and interested (for the moment)."
"That did no damage, but he turns his smoky yellow eyes in your direction.">>
<GLOBAL DRAGON-ANGER 0>
<GLOBAL ICE-MELTED <>>
<GLOBAL OLD-HERE DRAGON-ROOM>
<DEFINE-ROUTINE DRAGON-LEAVES>
<DEFINE-ROUTINE I-DRAGON>
<ROOM DRAGON-LAIR (IN ROOMS) (DESC "Dragon's Lair") (LDESC
"The rock walls are scarred by flame, and a blackened doorway leads south.") (
SOUTH TO DRAGON-ROOM) (OUT TO DRAGON-ROOM) (FLAGS RLANDBIT)>
<OBJECT CHEST (IN DRAGON-LAIR) (DESC "wooden chest") (FDESC
"An old wooden chest sits in the corner.") (SYNONYM CHEST TRUNK) (ADJECTIVE
WOODEN OLD) (FLAGS CONTBIT TAKEBIT) (CAPACITY 40) (SIZE 40) (ACTION CHEST-F)>
<DEFINE-ROUTINE CHEST-F>
<OBJECT STATUETTE (IN CHEST) (DESC "golden dragon statuette") (FDESC
"Nestled in the chest is a gold statuette of a dragon.") (SYNONYM TREASURE
STATUE DRAGON) (ADJECTIVE GOLD) (FLAGS TREASUREBIT TAKEBIT) (VALUE 20)>
<OBJECT PRINCESS (IN DRAGON-LAIR) (DESC "beautiful princess") (FDESC
"A beautiful princess sits on a rock in the corner. Her hair is unkempt
and she appears to be in a trance.") (SYNONYM PRINCESS WOMAN LADY) (ADJECTIVE
BEAUTIFUL YOUNG) (FLAGS ACTORBIT) (ACTION PRINCESS-F)>
<GLOBAL PRINCESS-AWAKE <>>
<DEFINE-ROUTINE PRINCESS-F>
<DEFINE-ROUTINE I-PRINCESS>
<GLOBAL PRCOUNT 0>
<GLOBAL PRFOLLOW <>>
<GLOBAL PRDIRS <TABLE "south" DRAGON-ROOM "north" P?SOUTH "east"
LEDGE-IN-RAVINE "west" P?EAST "south" DEEP-FORD "north" P?SOUTH "east"
DARK-TUNNEL "west" P?EAST "south" FORMAL-GARDEN "north" P?SOUTH "in" GAZEBO
"out" P?IN>>
<DEFINE-ROUTINE I-UNICORN>
<ROOM STONE-BRIDGE (IN ROOMS) (DESC "Stone Bridge") (LDESC
"You are on a north-south bridge spanning a deep ravine. Water flows
far beneath.") (NORTH TO DRAGON-ROOM) (SOUTH TO COOL-ROOM) (DOWN
"It's a long way down.") (FLAGS RLANDBIT) (GLOBAL BRIDGE CHASM)>
<ROOM COOL-ROOM (IN ROOMS) (DESC "Cool Room") (LDESC
"The air is cool and damp. A path from the southeast splits here; north toward
a stone bridge, and west into a narrow tunnel. It is from the latter that the
chill originates.") (SE TO CAROUSEL-ROOM) (NORTH TO STONE-BRIDGE) (WEST TO
ICE-ROOM) (FLAGS RLANDBIT) (GLOBAL BRIDGE)>
<ROOM ICE-ROOM (IN ROOMS) (DESC "Ice Room") (EAST TO COOL-ROOM) (WEST TO
VOLCANO-BOTTOM IF ICE-MELTED ELSE "You don't even have an ice-pick.") (SOUTH TO
GUARDED-ROOM) (FLAGS RLANDBIT) (ACTION ICE-ROOM-F)>
<DEFINE-ROUTINE ICE-ROOM-F>
<OBJECT ICE (IN ICE-ROOM) (DESC "glacier") (LDESC
"A mass of ice fills the western half of the room.") (SYNONYM ICE MASS GLACIER)
(ADJECTIVE COLD ICY) (ACTION ICE-F)>
<DEFINE-ROUTINE ICE-F>

460
princess.zap Normal file
View file

@ -0,0 +1,460 @@
.FUNCT FORMAL-GARDEN-F,RARG
EQUAL? RARG,M-ENTER \FALSE
CALL QUEUE,I-GARDEN,-1
PUT STACK,0,1
RTRUE
.FUNCT I-GARDEN
EQUAL? HERE,FORMAL-GARDEN \?CCL3
IN? UNICORN,FORMAL-GARDEN \?CCL6
RANDOM 100
GRTR? 33,STACK \?CCL6
REMOVE UNICORN
PRINTR "The unicorn bounds lightly away."
?CCL6: IN? PRINCESS,DRAGON-LAIR \FALSE
IN? UNICORN,FORMAL-GARDEN /FALSE
RANDOM 100
GRTR? 25,STACK \FALSE
ZERO? UNICORN-FRIGHTENED /?CND16
SET 'UNICORN-FRIGHTENED,FALSE-VALUE
RFALSE
?CND16: MOVE UNICORN,FORMAL-GARDEN
PRINTI "A beautiful unicorn is peacefully cropping grass across the garden. A gold key hangs from a red satin ribbon around its neck."
RTRUE
?CCL3: REMOVE UNICORN
CALL INT,I-GARDEN
PUT STACK,0,0
RFALSE
.FUNCT UNICORN-F
CALL HELLO?,UNICORN
ZERO? STACK /?CCL3
PRINTR "The unicorn continues cropping grass."
?CCL3: EQUAL? PRSA,V?FOLLOW \?CCL7
PRINTR "The unicorn shies away as you near."
?CCL7: EQUAL? PRSA,V?RUB,V?PUT,V?TAKE /?CCL11
EQUAL? PRSA,V?ATTACK,V?MUNG \FALSE
?CCL11: REMOVE UNICORN
SET 'UNICORN-FRIGHTENED,TRUE-VALUE
PRINTR "The unicorn, unsurprised to discover that you are indeed the uncouth sort it suspected you were, melts into the hedges and is gone."
.FUNCT GAZEBO-OBJECT-F
EQUAL? PRSA,V?ENTER \?CCL3
EQUAL? HERE,FORMAL-GARDEN \?PRG7
CALL DO-WALK,P?IN
RSTACK
?PRG7: PRINT LOOK-AROUND
RTRUE
?CCL3: EQUAL? HERE,GAZEBO \FALSE
EQUAL? PRSA,V?EXIT,V?LEAVE \FALSE
CALL DO-WALK,P?OUT
RSTACK
.FUNCT NEWSPAPER-F
EQUAL? PRSA,V?READ \FALSE
PRINTI "Famed Adventurer to Explore"
PRINT GUE-NAME
PRINTI "! A world-famous and battle-hardened adventurer has been seen in the vicinity of"
PRINT GUE-NAME
PRINTR ". Local grues have been reported sharpening their (slavering) fangs..."
.FUNCT PLACE-MAT-F
EQUAL? PRSA,V?PUT-UNDER \?CCL3
EQUAL? PRSI,PDOOR \?CCL6
MOVE PRSO,HERE
SET 'MUD-FLAG,TRUE-VALUE
PRINTR "The mat slies under the door."
?CCL6: EQUAL? PRSI,WIZ-DOOR,RIDDLE-DOOR \FALSE
PRINTR "There's not enough room."
?CCL3: EQUAL? PRSA,V?MOVE,V?TAKE \FALSE
ZERO? MATOBJ /FALSE
MOVE MATOBJ,HERE
SET 'MATOBJ,FALSE-VALUE
SET 'MUD-FLAG,FALSE-VALUE
PRINTI "As the place mat is moved, a "
PRINTD MATOBJ
PRINTR " falls from it to the floor."
.FUNCT TEAPOT-F
EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE
PRINTR "The teapot has no lid."
.FUNCT MATCH-F,CNT
EQUAL? PRSA,V?BURN,V?LAMP-ON \?CCL3
EQUAL? PRSO,MATCH \?CCL3
GRTR? MATCH-COUNT,0 \?CND6
DEC 'MATCH-COUNT
?CND6: GRTR? MATCH-COUNT,0 /?CCL10
PRINTR "You've run out of matches."
?CCL10: FSET MATCH,FLAMEBIT
FSET MATCH,ONBIT
CALL QUEUE,I-MATCH,2
PUT STACK,0,1
PRINTR "A match starts to burn."
?CCL3: EQUAL? PRSA,V?LAMP-OFF \?CCL16
FSET? MATCH,FLAMEBIT \?CCL16
FCLEAR MATCH,FLAMEBIT
FCLEAR MATCH,ONBIT
CALL QUEUE,I-MATCH,0
PRINTR "The match is out."
?CCL16: EQUAL? PRSA,V?COUNT \?CCL22
PRINTI "You have "
SUB MATCH-COUNT,1 >CNT
PRINTN CNT
PRINTI " match"
EQUAL? CNT,1 /?PRG31
PRINTI "es"
?PRG31: PRINT PERIOD-CR
RTRUE
?CCL22: EQUAL? PRSA,V?EXAMINE \FALSE
FSET? MATCH,ONBIT \?PRG40
PRINTC 65
JUMP ?PRG42
?PRG40: PRINTI "No"
?PRG42: PRINTR " match is burning."
.FUNCT I-MATCH
FCLEAR MATCH,FLAMEBIT
FCLEAR MATCH,ONBIT
PRINTR "The match has gone out."
.FUNCT TOPIARY-F,RARG
EQUAL? RARG,M-ENTER \FALSE
CALL QUEUE,I-TOPIARY,-1
PUT STACK,0,1
RTRUE
.FUNCT I-TOPIARY
EQUAL? HERE,TOPIARY \?CCL3
ZERO? TOPIARY-COUNTER \?CCL6
RANDOM 100
GRTR? 12,STACK \?CCL6
SET 'TOPIARY-COUNTER,1
PRINTR "Strangely, the topiary animals seem to have shifted position a bit."
?CCL6: ZERO? TOPIARY-COUNTER \?CCL12
RANDOM 100
GRTR? 8,STACK \?CCL12
SET 'TOPIARY-COUNTER,2
PRINTR "You turn, and the topiary animals seem to have closed in on you."
?CCL12: ZERO? TOPIARY-COUNTER \FALSE
RANDOM 100
GRTR? 4,STACK \FALSE
SET 'TOPIARY-COUNTER,0
CALL JIGS-UP,STR?144
RSTACK
?CCL3: CALL INT,I-TOPIARY
PUT STACK,0,0
RFALSE
.FUNCT HEDGES-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The hedges are shaped like various animals: dogs, serpents, dragons..."
.FUNCT DRAGON-F
CALL QUEUE,I-DRAGON,-1
PUT STACK,0,1
CALL HELLO?,DRAGON
ZERO? STACK /?CCL3
ADD DRAGON-ANGER,2 >DRAGON-ANGER
PRINTR "The dragon looks amused."
?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL7
INC 'DRAGON-ANGER
PRINTR "He looks back at you, his cat's eyes yellow in the gloom. You start to feel weak, and quickly turn away."
?CCL7: EQUAL? PRSA,V?KICK,V?MUNG,V?ATTACK /?CTR10
EQUAL? PRSA,V?LAMP-ON \?CCL11
?CTR10: ADD DRAGON-ANGER,4 >DRAGON-ANGER
EQUAL? PRSA,V?LAMP-ON /?PRG21
EQUAL? PRSA,V?ATTACK \?PRG23
ZERO? PRSI \?PRG23
?PRG21: PRINTR "With your bare hands? I doubt the dragon even noticed."
?PRG23: CALL RANDOM-ELEMENT,DRAGON-ATTACKS
PRINT STACK
CRLF
RTRUE
?CCL11: EQUAL? PRSA,V?GIVE \?CCL26
EQUAL? PRSI,DRAGON \?CCL26
INC 'DRAGON-ANGER
FSET? PRSO,TREASUREBIT \?CCL31
MOVE PRSO,CHEST
PRINTI "The dragon excuses himself for a moment and returns without the "
PRINTD PRSO
PRINT PERIOD-CR
RTRUE
?CCL31: CALL BOMB?,PRSO
ZERO? STACK /?PRG38
ADD DRAGON-ANGER,2 >DRAGON-ANGER
REMOVE BRICK
PRINTR "The politely swallows the bomb. A moment later, he belches and smoke curls from his nostrils."
?PRG38: PRINTR "The dragon refuses it."
?CCL26: EQUAL? PRSA,V?WALK \FALSE
EQUAL? HERE,DRAGON-ROOM \FALSE
EQUAL? PRSO,P?NORTH \FALSE
ADD DRAGON-ANGER,3 >DRAGON-ANGER
PRINTR "The dragon puts out a claw and blocks your way."
.FUNCT DRAGON-LEAVES
MOVE DRAGON,DRAGON-ROOM
SET 'DRAGON-ANGER,0
CALL INT,I-DRAGON
PUT STACK,0,0
RTRUE
.FUNCT I-DRAGON,ROOM
GRTR? DRAGON-ANGER,6 \?CCL3
PRINTI "With an almost bored yawn, the dragon opens his mouth and blasts you with a gout of white-hot flame"
EQUAL? SPELL?,S-FIREPROOF \?CCL8
PRINTI ", but it washes over you harmlessly."
CRLF
JUMP ?CND1
?CCL8: CALL DRAGON-LEAVES
CALL JIGS-UP,STR?11
JUMP ?CND1
?CCL3: EQUAL? HERE,DRAGON-ROOM \?CCL12
IN? DRAGON,DRAGON-ROOM /?CCL12
MOVE DRAGON,DRAGON-ROOM
PRINTI "The dragon charges in, maddened by your attempt to sneak past him. His eyes glow with anger. He opens his mouth, and a huge ball of flame engulfs you"
EQUAL? SPELL?,S-FIREPROOF \?CCL19
CALL JIGS-UP,STR?153
JUMP ?CND1
?CCL19: CALL JIGS-UP,STR?11
JUMP ?CND1
?CCL12: GRTR? DRAGON-ANGER,0 /?CCL21
RANDOM 100
GRTR? 50,STACK \?CCL24
IN? DRAGON,HERE \?CCL24
PRINTI "The dragon looks bored."
CRLF
JUMP ?CND1
?CCL24: CALL DRAGON-LEAVES
EQUAL? HERE,OLD-HERE \?CND1
PRINTI "The dragon seems to have lost interest in you."
EQUAL? OLD-HERE,DRAGON-ROOM \?PRG36
CRLF
JUMP ?CND1
?PRG36: PRINTI " He wanders off."
CRLF
JUMP ?CND1
?CCL21: CALL FIND-TARGET,WINNER >ROOM
ZERO? ROOM \?CCL40
RANDOM 100
GRTR? 25,STACK \?CND1
CALL DRAGON-LEAVES
JUMP ?CND1
?CCL40: EQUAL? ROOM,CAROUSEL-ROOM,DREARY-ROOM,LEDGE-IN-RAVINE \?CCL44
RANDOM 100
GRTR? 25,STACK \?PRG47
CALL DRAGON-LEAVES
?PRG47: PRINTI "The dragon follows no further."
CRLF
JUMP ?CND1
?CCL44: EQUAL? ROOM,ICE-ROOM \?CCL50
REMOVE DRAGON
REMOVE ICE
CALL INT,I-DRAGON
PUT STACK,0,0
ADD SCORE,5 >SCORE
SET 'ICE-MELTED,TRUE-VALUE
CRLF
PRINTI "The dragon enters and spies his reflection on the icy surface of the glacier. Thinking that another dragon has invaded his territory, he rears up to his full height and roars a challenge! The intruder responds! The dragon takes a deep breath and expels a massive gout of flame. It washes over the ice, which melts rapidly, sending out huge cloud of steam! When the steam dissipates, the glacier is gone, and so is the dragon.
With the ice gone, you notice a passage leading west."
CRLF
JUMP ?CND1
?CCL50: EQUAL? ROOM,OLD-HERE /?PRG58
MOVE DRAGON,ROOM
PRINTI "The dragon follows you, out of mingled curiosity and anger."
CRLF
JUMP ?CND53
?PRG58: PRINTI "The dragon continues to watch you carefully."
CRLF
?CND53: GRTR? DRAGON-ANGER,0 /?CND1
SET 'DRAGON-ANGER,0
CALL INT,I-DRAGON
PUT STACK,0,0
?CND1: LOC DRAGON >OLD-HERE
SUB DRAGON-ANGER,2 >DRAGON-ANGER
LESS? DRAGON-ANGER,0 \TRUE
SET 'DRAGON-ANGER,0
RTRUE
.FUNCT CHEST-F
EQUAL? PRSA,V?OPEN \FALSE
IN? PRINCESS,HERE \?PRG12
ZERO? PRINCESS-AWAKE \?PRG12
RANDOM 100
GRTR? 25,STACK \?PRG12
CALL V-OPEN
PRINTI "The squeaky lid startles the young woman."
CRLF
JUMP ?CND4
?PRG12: PRINTI "The rusty hinges almost give. It would probably open if you tried again."
IN? PRINCESS,HERE \?CND14
ZERO? PRINCESS-AWAKE \?CND14
PRINTI " The commotion has startled the young woman."
?CND14: CRLF
?CND4: PUTP CHEST,P?ACTION,0
IN? PRINCESS,HERE \TRUE
ZERO? PRINCESS-AWAKE \TRUE
CALL PERFORM,V?ALARM,PRINCESS
RTRUE
.FUNCT PRINCESS-F,DEM
CALL INT,I-PRINCESS >DEM
EQUAL? PRSA,V?FOLLOW \?CCL3
ZERO? PRFOLLOW /?PRG7
CALL DO-WALK,PRFOLLOW
RSTACK
?PRG7: PRINTR "You've lost track of her."
?CCL3: EQUAL? PRSA,V?RAPE,V?MUNG,V?ATTACK \?CCL10
REMOVE PRINCESS
PRINTI "The princess screams, ""Won't someone deliver me from this awful fate?"" The Wizard of Frobozz "
IN? WIZARD,HERE \?PRG18
PRINTI "turns toward you"
JUMP ?CND13
?PRG18: PRINTI "appears"
?CND13: CALL JIGS-UP,STR?158
RSTACK
?CCL10: CALL HELLO?,PRINCESS
ZERO? STACK \?CTR20
EQUAL? PRSA,V?EXAMINE,V?KISS,V?ALARM /?CTR20
EQUAL? PRSA,V?RUB \?CCL21
?CTR20: IN? PRINCESS,DRAGON-LAIR \?PRG32
GET DEM,C-ENABLED?
ZERO? STACK \?PRG32
CALL QUEUE,I-PRINCESS,2
PUT STACK,0,1
SET 'PRINCESS-AWAKE,TRUE-VALUE
PRINTR "The princess shakes herself awake, notices you, and smiles. ""Thank you for rescuing me from that horrid worm, but I must depart."" She rises, looking purposefully out of the lair."
?PRG32: PRINTI "The princess ignores you; her eyes fix on the "
EQUAL? HERE,GAZEBO \?CCL36
PRINTI "garden"
JUMP ?PRG49
?CCL36: EQUAL? HERE,FORMAL-GARDEN \?CCL40
PRINTI "gazebo"
JUMP ?PRG49
?CCL40: EQUAL? HERE,LEDGE-IN-RAVINE \?PRG47
PRINTI "ledge"
JUMP ?PRG49
?PRG47: MUL PRCOUNT,4
GET PRDIRS,STACK
PRINT STACK
?PRG49: PRINT PERIOD-CR
RTRUE
?CCL21: ZERO? PRINCESS-AWAKE \FALSE
PRINTR "She's in a trance!"
.FUNCT I-PRINCESS,DEM,OLDP,PC
CALL INT,I-PRINCESS >DEM
LOC PRINCESS >OLDP
MUL PRCOUNT,4 >PC
ADD PC,1
GET PRDIRS,STACK
MOVE PRINCESS,STACK
SET 'PRFOLLOW,FALSE-VALUE
IN? PRINCESS,DARK-TUNNEL \?CCL3
IN? ADVENTURER,DEEP-FORD \?CCL3
PRINTI "The princess touches the ravine wall and a section slides away, revealing a passage to the east. She enters it."
CRLF
IN? WINNER,OLDP \?CND8
ADD PC,3
GET PRDIRS,STACK >PRFOLLOW
?CND8: SET 'SECRET-DOOR,TRUE-VALUE
JUMP ?CND1
?CCL3: IN? PRINCESS,DARK-TUNNEL \?CCL11
IN? WINNER,DARK-TUNNEL \?CCL11
SET 'SECRET-DOOR,TRUE-VALUE
PRINTI "The princess appears from behind some rocks, as though she had walked through a wall."
CRLF
JUMP ?CND1
?CCL11: IN? WINNER,OLDP \?CCL17
ADD PC,3
GET PRDIRS,STACK >PRFOLLOW
EQUAL? OLDP,FORMAL-GARDEN \?CCL20
PRINTI "The princess enters the gazebo."
CRLF
JUMP ?CND1
?CCL20: EQUAL? OLDP,LEDGE-IN-RAVINE \?PRG27
PRINTI "The princess climbs daintily down the rock face."
CRLF
JUMP ?CND1
?PRG27: PRINTI "The princess walks "
GET PRDIRS,PC
PRINT STACK
PRINTI ". She glances back at you as she goes."
CRLF
JUMP ?CND1
?CCL17: IN? PRINCESS,HERE \?CND1
EQUAL? HERE,GAZEBO \?CCL36
PRINTI "The princess joins you in the gazebo."
CRLF
JUMP ?CND1
?CCL36: EQUAL? HERE,DEEP-FORD \?PRG43
PRINTI "The princess clambers down from the ledge."
CRLF
JUMP ?CND1
?PRG43: PRINTI "The princess enters from the "
ADD 2,PC
GET PRDIRS,STACK
PRINT STACK
PRINTI ". She seems surprised to see you."
CRLF
?CND1: IN? PRINCESS,GAZEBO \?CCL51
PUT DEM,0,0
CALL QUEUE,I-UNICORN,6
PUT STACK,0,1
RTRUE
?CCL51: INC 'PRCOUNT
RANDOM 100
GRTR? 75,STACK \?CCL54
PUSH 1
JUMP ?CND52
?CCL54: PUSH 2
?CND52: CALL QUEUE,I-PRINCESS,STACK
PUT STACK,0,1
RTRUE
.FUNCT I-UNICORN
EQUAL? HERE,GAZEBO,FORMAL-GARDEN \?CCL3
FCLEAR GOLD-KEY,NDESCBIT
MOVE GOLD-KEY,WINNER
CALL SCORE-OBJ,GOLD-KEY
PUTP GOLD-KEY,P?ACTION,0
REMOVE PRINCESS
PRINTR "Shyly, a unicorn peeks out of the hedges and approaches the princess. Around its neck hangs a gold key. The princess takes the key and, smiling, hands it to you. ""It is the least I can do for one who rescued me from a fate I dare not contemplate."" With that, she mounts the unicorn and rides away."
?CCL3: REMOVE PRINCESS
RFALSE
.FUNCT ICE-ROOM-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "This is a large hall of ancient lava, worn smooth by a glacier. Tunnels lead east and south."
ZERO? ICE-MELTED /?CND6
PRINTR " A damp, scorched passage leads west."
?CND6: CRLF
RTRUE
.FUNCT ICE-F
EQUAL? PRSA,V?MELT \FALSE
PRINTR "This is a big glacier; you'll need lots of heat."
.ENDI

684
princess.zil Normal file
View file

@ -0,0 +1,684 @@
"PRINCESS for
Mini-Zork II: The Wizard of Frobozz
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
<ROOM FORMAL-GARDEN
(IN ROOMS)
(DESC "Formal Garden")
(LDESC
"A path of crushed white stone winds among bushes and flower beds of this
garden from south to north. Almost hidden by the shrubbery is a small white
gazebo.")
(IN TO GAZEBO)
(NORTH TO DARK-TUNNEL)
(SOUTH TO TOPIARY)
(FLAGS RLANDBIT)
(GLOBAL GAZEBO-OBJECT)
(ACTION FORMAL-GARDEN-F)>
<ROUTINE FORMAL-GARDEN-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<ENABLE <QUEUE I-GARDEN -1>>)>>
<ROUTINE I-GARDEN ()
<COND (<EQUAL? ,HERE ,FORMAL-GARDEN>
<COND (<AND <IN? ,UNICORN ,FORMAL-GARDEN>
<PROB 33>>
<REMOVE ,UNICORN>
<TELL "The unicorn bounds lightly away." CR>)
(<AND <IN? ,PRINCESS ,DRAGON-LAIR>
<NOT <IN? ,UNICORN ,FORMAL-GARDEN>>
<PROB 25>>
<COND (,UNICORN-FRIGHTENED
<SETG UNICORN-FRIGHTENED <>>
<RFALSE>)>
<MOVE ,UNICORN ,FORMAL-GARDEN>
<TELL
"A beautiful unicorn is peacefully cropping grass across the garden. A gold
key hangs from a red satin ribbon around its neck.">)>)
(T
<REMOVE ,UNICORN>
<DISABLE <INT I-GARDEN>>
<RFALSE>)>>
<OBJECT UNICORN
(DESC "unicorn")
(LDESC "A beautiful unicorn is munching grass here.")
(SYNONYM UNICORN ANIMAL)
(ADJECTIVE BEAUTIFUL WHITE)
(FLAGS ACTORBIT TRYTAKEBIT OPENBIT CONTBIT)
(ACTION UNICORN-F)>
<GLOBAL UNICORN-FRIGHTENED <>>
<ROUTINE UNICORN-F ()
<COND (<HELLO? ,UNICORN>
<TELL "The unicorn continues cropping grass." CR>)
(<VERB? FOLLOW>
<TELL "The unicorn shies away as you near." CR>)
(<VERB? TAKE PUT RUB MUNG ATTACK>
<REMOVE ,UNICORN>
<SETG UNICORN-FRIGHTENED T>
<TELL
"The unicorn, unsurprised to discover that you are indeed the uncouth sort
it suspected you were, melts into the hedges and is gone." CR>)>>
<OBJECT GOLD-KEY
(IN UNICORN)
(DESC "delicate gold key")
(SYNONYM KEY TREASURE)
(ADJECTIVE DELICATE GOLD)
(VALUE 15)
(SIZE 3)
(FLAGS NDESCBIT TAKEBIT TRYTAKEBIT TOOLBIT)
(ACTION UNICORN-F)>
<OBJECT RIBBON
(IN UNICORN)
(DESC "ribbon")
(SYNONYM RIBBON)
(ADJECTIVE VELVET SATIN)
(FLAGS NDESCBIT)
(ACTION UNICORN-F)>
<ROOM GAZEBO
(IN ROOMS)
(DESC "Gazebo")
(LDESC
"This is a gazebo in the midst of a formal garden. It is cool and restful
here. A tea table adorns the center of the gazebo.")
(OUT TO FORMAL-GARDEN)
(FLAGS RLANDBIT ONBIT)
(GLOBAL GAZEBO-OBJECT)>
<OBJECT GAZEBO-OBJECT
(IN LOCAL-GLOBALS)
(DESC "gazebo")
(SYNONYM GAZEBO)
(ADJECTIVE WOODEN)
(FLAGS NDESCBIT)
(ACTION GAZEBO-OBJECT-F)>
<ROUTINE GAZEBO-OBJECT-F ()
<COND (<VERB? ENTER>
<COND (<EQUAL? ,HERE ,FORMAL-GARDEN>
<DO-WALK ,P?IN>)
(T
<TELL ,LOOK-AROUND>)>)
(<AND <EQUAL? ,HERE ,GAZEBO>
<VERB? LEAVE EXIT>>
<DO-WALK ,P?OUT>)>>
<OBJECT GAZEBO-TABLE
(IN GAZEBO)
(DESC "table")
(SYNONYM TABLE)
(CAPACITY 100)
(FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT)>
<OBJECT NEWSPAPER
(IN GAZEBO-TABLE)
(DESC "newspaper")
(SYNONYM PAPER NEWSPAPER)
(ADJECTIVE NEWS NEWSPAPER)
(FLAGS TAKEBIT BURNBIT READBIT)
(ACTION NEWSPAPER-F)>
<ROUTINE NEWSPAPER-F ()
<COND (<VERB? READ>
<TELL
"Famed Adventurer to Explore" ,GUE-NAME "! A world-famous and battle-hardened
adventurer has been seen in the vicinity of" ,GUE-NAME ". Local grues have
been reported sharpening their (slavering) fangs..." CR>)>>
<OBJECT PLACE-MAT
(IN GAZEBO-TABLE)
(DESC "place mat")
(SYNONYM MAT PLACEM)
(ADJECTIVE PLACE)
(SIZE 12)
(CAPACITY 20)
(FLAGS TAKEBIT SURFACEBIT CONTBIT OPENBIT)
(ACTION PLACE-MAT-F)>
<ROUTINE PLACE-MAT-F ()
<COND (<VERB? PUT-UNDER>
<COND (<EQUAL? ,PRSI ,PDOOR>
<MOVE ,PRSO ,HERE>
<SETG MUD-FLAG T>
<TELL "The mat slies under the door." CR>)
(<EQUAL? ,PRSI ,WIZ-DOOR ,RIDDLE-DOOR>
<TELL "There's not enough room." CR>)>)
(<AND <VERB? TAKE MOVE> ,MATOBJ>
<MOVE ,MATOBJ ,HERE>
<SETG MATOBJ <>>
<SETG MUD-FLAG <>>
<TELL
"As the place mat is moved, a " D ,MATOBJ " falls from it to the floor." CR>)>>
<OBJECT TEAPOT
(IN GAZEBO-TABLE)
(DESC "china teapot")
(SYNONYM TEAPOT POT)
(ADJECTIVE CHINA TEA)
(CAPACITY 4)
(FLAGS TAKEBIT TRANSBIT CONTBIT OPENBIT)
(ACTION TEAPOT-F)>
<ROUTINE TEAPOT-F ()
<COND (<VERB? OPEN CLOSE>
<TELL "The teapot has no lid." CR>)>>
<OBJECT LETTER-OPENER
(IN GAZEBO-TABLE)
(DESC "letter opener")
(SYNONYM OPENER)
(ADJECTIVE LETTER)
(SIZE 2)
(FLAGS TAKEBIT TOOLBIT)>
<OBJECT MATCH
(IN GAZEBO-TABLE)
(DESC "matchbook")
(LDESC "There is a matchbook saying \"Visit ZORK I\" here.")
(SYNONYM MATCH MATCHES MATCHBOOK)
(SIZE 2)
(FLAGS READBIT TAKEBIT)
(TEXT
"\"Visit Exotic ZORK I! Consult the Frobozz Magic Travel Agency, or visit
your local computer store for details.\"")
(ACTION MATCH-F)>
<GLOBAL MATCH-COUNT 6>
<ROUTINE MATCH-F ("AUX" CNT)
<COND (<AND <VERB? LAMP-ON BURN>
<EQUAL? ,PRSO ,MATCH>>
<COND (<G? ,MATCH-COUNT 0>
<SETG MATCH-COUNT <- ,MATCH-COUNT 1>>)>
<COND (<NOT <G? ,MATCH-COUNT 0>>
<TELL "You've run out of matches." CR>)
(T
<FSET ,MATCH ,FLAMEBIT>
<FSET ,MATCH ,ONBIT>
<ENABLE <QUEUE I-MATCH 2>>
<TELL "A match starts to burn." CR>)>)
(<AND <VERB? LAMP-OFF>
<FSET? ,MATCH ,FLAMEBIT>>
<FCLEAR ,MATCH ,FLAMEBIT>
<FCLEAR ,MATCH ,ONBIT>
<QUEUE I-MATCH 0>
<TELL "The match is out." CR>)
(<VERB? COUNT>
<TELL "You have ">
<SET CNT <- ,MATCH-COUNT 1>>
<TELL N .CNT " match">
<COND (<NOT <1? .CNT>>
<TELL "es">)>
<TELL ,PERIOD-CR>)
(<VERB? EXAMINE>
<COND (<FSET? ,MATCH ,ONBIT>
<TELL "A">)
(T
<TELL "No">)>
<TELL " match is burning." CR>)>>
<ROUTINE I-MATCH ()
<FCLEAR ,MATCH ,FLAMEBIT>
<FCLEAR ,MATCH ,ONBIT>
<TELL "The match has gone out." CR>>
<ROOM TOPIARY
(IN ROOMS)
(DESC "Topiary")
(LDESC
"This is the southern end of a garden, where fantastically shaped hedges are
arrayed with geometric precision. Though recently untended, the bushes have
clearly been shaped: There is a dragon, a unicorn, a great serpent, a huge
misshapen dog, and several human figures. To the west is a tunnel.")
(WEST TO CAROUSEL-ROOM)
(NORTH TO FORMAL-GARDEN)
(FLAGS RLANDBIT)
(ACTION TOPIARY-F)>
<ROUTINE TOPIARY-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<ENABLE <QUEUE I-TOPIARY -1>>)>>
<GLOBAL TOPIARY-COUNTER 0>
<ROUTINE I-TOPIARY ()
<COND (<EQUAL? ,HERE ,TOPIARY>
<COND (<AND <EQUAL? ,TOPIARY-COUNTER 0>
<PROB 12>>
<SETG TOPIARY-COUNTER 1>
<TELL
"Strangely, the topiary animals seem to have shifted position a bit." CR>)
(<AND <EQUAL? ,TOPIARY-COUNTER 0>
<PROB 8>>
<SETG TOPIARY-COUNTER 2>
<TELL
"You turn, and the topiary animals seem to have closed in on you." CR>)
(<AND <EQUAL? ,TOPIARY-COUNTER 0>
<PROB 4>>
<SETG TOPIARY-COUNTER 0>
<JIGS-UP
"The topiary animals attack! You are crushed by their branches and clawed
by their thorns.">)>)
(T
<DISABLE <INT I-TOPIARY>>
<RFALSE>)>>
<OBJECT HEDGES
(IN TOPIARY)
(DESC "hedge")
(SYNONYM HEDGE HEDGES)
(FLAGS NDESCBIT)
(ACTION HEDGES-F)>
<ROUTINE HEDGES-F ()
<COND (<VERB? EXAMINE>
<TELL
"The hedges are shaped like various animals: dogs, serpents, dragons..." CR>)>>
<ROOM DRAGON-ROOM
(IN ROOMS)
(DESC "Dragon Room")
(LDESC
"The walls of this large cavern are scorched and a sooty dry smell is very
strong here. A stone bridge leads the south, and a smokey tunnel opens to
the north. To the east is a small opening.")
(EAST TO LEDGE-IN-RAVINE)
(NORTH TO DRAGON-LAIR IF ICE-MELTED ELSE
"The dragon hisses and blocks your way.")
(IN TO DRAGON-LAIR IF ICE-MELTED ELSE
"The dragon hisses and blocks your way.")
(SOUTH TO STONE-BRIDGE)
(FLAGS RLANDBIT)
(GLOBAL BRIDGE)>
<OBJECT DRAGON
(IN DRAGON-ROOM)
(DESC "huge red dragon")
(SYNONYM DRAGON)
(ADJECTIVE RED HUGE)
(LDESC "A huge red dragon is lying on the rocks, watching.")
(FDESC
"A huge red dragon is blocking the north exit. Smoke curls from his nostrils.")
(FLAGS ACTORBIT)
(ACTION DRAGON-F)>
<ROUTINE DRAGON-F ()
<ENABLE <QUEUE I-DRAGON -1>>
<COND (<HELLO? ,DRAGON>
<SETG DRAGON-ANGER <+ ,DRAGON-ANGER 2>>
<TELL "The dragon looks amused." CR>)
(<VERB? EXAMINE>
<SETG DRAGON-ANGER <+ ,DRAGON-ANGER 1>>
<TELL
"He looks back at you, his cat's eyes yellow in the gloom. You start to
feel weak, and quickly turn away." CR>)
(<VERB? ATTACK MUNG KICK LAMP-ON>
<SETG DRAGON-ANGER <+ ,DRAGON-ANGER 4>>
<COND (<OR <VERB? LAMP-ON>
<AND <VERB? ATTACK>
<NOT ,PRSI>>>
<TELL
"With your bare hands? I doubt the dragon even noticed." CR>)
(T
<TELL <RANDOM-ELEMENT ,DRAGON-ATTACKS> CR>)>)
(<AND <VERB? GIVE>
<EQUAL? ,PRSI ,DRAGON>>
<SETG DRAGON-ANGER <+ ,DRAGON-ANGER 1>>
<COND (<FSET? ,PRSO ,TREASUREBIT>
<MOVE ,PRSO ,CHEST>
<TELL
"The dragon excuses himself for a moment and
returns without the " D ,PRSO ,PERIOD-CR>)
(<BOMB? ,PRSO>
<SETG DRAGON-ANGER <+ ,DRAGON-ANGER 2>>
<REMOVE ,BRICK>
<TELL
"The politely swallows the bomb. A moment later, he belches and smoke curls
from his nostrils." CR>)
(T
<TELL "The dragon refuses it." CR>)>)
(<AND <VERB? WALK>
<EQUAL? ,HERE ,DRAGON-ROOM>
<EQUAL? ,PRSO ,P?NORTH>>
<SETG DRAGON-ANGER <+ ,DRAGON-ANGER 3>>
<TELL
"The dragon puts out a claw and blocks your way." CR>)>>
<GLOBAL DRAGON-ATTACKS
<LTABLE
"Dragon hide is tough as steel, but you have annoyed him a bit. He looks
as if deciding whether or not to eat you."
"That captured his interest. He stares at you balefully."
"The dragon is surprised and interested (for the moment)."
"That did no damage, but he turns his smoky yellow eyes in your direction.">>
<GLOBAL DRAGON-ANGER 0>
<GLOBAL ICE-MELTED <>>
<GLOBAL OLD-HERE DRAGON-ROOM>
<ROUTINE DRAGON-LEAVES ()
<MOVE ,DRAGON ,DRAGON-ROOM>
<SETG DRAGON-ANGER 0>
<DISABLE <INT I-DRAGON>>>
<ROUTINE I-DRAGON ("AUX" ROOM)
<COND (<G? ,DRAGON-ANGER 6>
<TELL
"With an almost bored yawn, the dragon opens his mouth and blasts you with
a gout of white-hot flame">
<COND (<EQUAL? ,SPELL? ,S-FIREPROOF>
<TELL ", but it washes over you harmlessly." CR>)
(T
<DRAGON-LEAVES>
<JIGS-UP ".">)>)
(<AND <EQUAL? ,HERE ,DRAGON-ROOM>
<NOT <IN? ,DRAGON ,DRAGON-ROOM>>>
<MOVE ,DRAGON ,DRAGON-ROOM>
<TELL
"The dragon charges in, maddened by your attempt to sneak past him. His eyes
glow with anger. He opens his mouth, and a huge ball of flame engulfs you">
<COND (<EQUAL? ,SPELL? ,S-FIREPROOF>
<JIGS-UP
", but you barely feel the heat. The dragon is puzzled, but not too
puzzled to crush you in his jaws.">)
(T
<JIGS-UP ".">)>)
(<NOT <G? ,DRAGON-ANGER 0>>
<COND (<AND <PROB 50>
<IN? ,DRAGON ,HERE>>
<TELL "The dragon looks bored." CR>)
(T
<DRAGON-LEAVES>
<COND (<EQUAL? ,HERE ,OLD-HERE>
<TELL
"The dragon seems to have lost interest in you.">
<COND (<EQUAL? ,OLD-HERE ,DRAGON-ROOM>
<CRLF>)
(T
<TELL " He wanders off." CR>)>)>)>)
(T
<SET ROOM <FIND-TARGET ,WINNER>>
<COND (<NOT .ROOM>
<COND (<PROB 25>
<DRAGON-LEAVES>)>)
(<EQUAL? .ROOM ,CAROUSEL-ROOM
,DREARY-ROOM ,LEDGE-IN-RAVINE>
<COND (<PROB 25>
<DRAGON-LEAVES>)>
<TELL "The dragon follows no further." CR>)
(<EQUAL? .ROOM ,ICE-ROOM>
<REMOVE ,DRAGON>
<REMOVE ,ICE>
<DISABLE <INT I-DRAGON>>
<SETG SCORE <+ ,SCORE 5>>
<SETG ICE-MELTED T>
<TELL CR
"The dragon enters and spies his reflection on the icy surface of the
glacier. Thinking that another dragon has invaded his territory, he rears
up to his full height and roars a challenge! The intruder responds! The
dragon takes a deep breath and expels a massive gout of flame. It washes
over the ice, which melts rapidly, sending out huge cloud of steam! When
the steam dissipates, the glacier is gone, and so is the dragon.
|
With the ice gone, you notice a passage leading west." CR>)
(T
<COND (<NOT <EQUAL? .ROOM ,OLD-HERE>>
<MOVE ,DRAGON .ROOM>
<TELL
"The dragon follows you, out of mingled curiosity and anger." CR>)
(T
<TELL
"The dragon continues to watch you carefully." CR>)>
<COND (<NOT <G? ,DRAGON-ANGER 0>>
<SETG DRAGON-ANGER 0>
<DISABLE <INT I-DRAGON>>)>)>)>
<SETG OLD-HERE <LOC ,DRAGON>>
<SETG DRAGON-ANGER <- ,DRAGON-ANGER 2>>
<COND (<L? ,DRAGON-ANGER 0>
<SETG DRAGON-ANGER 0>)>
<RTRUE>>
<ROOM DRAGON-LAIR
(IN ROOMS)
(DESC "Dragon's Lair")
(LDESC
"The rock walls are scarred by flame, and a blackened doorway leads south.")
(SOUTH TO DRAGON-ROOM)
(OUT TO DRAGON-ROOM)
(FLAGS RLANDBIT)>
<OBJECT CHEST
(IN DRAGON-LAIR)
(DESC "wooden chest")
(FDESC "An old wooden chest sits in the corner.")
(SYNONYM CHEST TRUNK)
(ADJECTIVE WOODEN OLD)
(FLAGS CONTBIT TAKEBIT)
(CAPACITY 40)
(SIZE 40)
(ACTION CHEST-F)>
<ROUTINE CHEST-F ()
<COND (<VERB? OPEN>
<COND (<AND <IN? ,PRINCESS ,HERE>
<NOT ,PRINCESS-AWAKE>
<PROB 25>>
<V-OPEN>
<TELL "The squeaky lid startles the young woman." CR>)
(T
<TELL
"The rusty hinges almost give. It would probably open if you tried again.">
<COND (<AND <IN? ,PRINCESS ,HERE>
<NOT ,PRINCESS-AWAKE>>
<TELL
" The commotion has startled the young woman.">)>
<CRLF>)>
<PUTP ,CHEST ,P?ACTION 0>
<COND (<AND <IN? ,PRINCESS ,HERE>
<NOT ,PRINCESS-AWAKE>>
<PERFORM ,V?ALARM ,PRINCESS>)>
<RTRUE>)>>
<OBJECT STATUETTE
(IN CHEST)
(DESC "golden dragon statuette")
(FDESC "Nestled in the chest is a gold statuette of a dragon.")
(SYNONYM TREASURE STATUE DRAGON)
(ADJECTIVE GOLD)
(FLAGS TREASUREBIT TAKEBIT)
(VALUE 20)>
<OBJECT PRINCESS
(IN DRAGON-LAIR)
(DESC "beautiful princess")
(FDESC
"A beautiful princess sits on a rock in the corner. Her hair is unkempt
and she appears to be in a trance.")
(SYNONYM PRINCESS WOMAN LADY)
(ADJECTIVE BEAUTIFUL YOUNG)
(FLAGS ACTORBIT)
(ACTION PRINCESS-F)>
<GLOBAL PRINCESS-AWAKE <>>
<ROUTINE PRINCESS-F ("AUX" (DEM <INT I-PRINCESS>))
<COND (<VERB? FOLLOW>
<COND (,PRFOLLOW
<DO-WALK ,PRFOLLOW>)
(T
<TELL "You've lost track of her." CR>)>)
(<VERB? ATTACK MUNG RAPE>
<REMOVE ,PRINCESS>
<TELL
"The princess screams, \"Won't someone deliver me from this awful fate?\"
The Wizard of Frobozz ">
<COND (<IN? ,WIZARD ,HERE>
<TELL "turns toward you">)
(ELSE
<TELL "appears">)>
<JIGS-UP
". \"Fry!\" he intones, and a bolt of lightning reduces you to a pile of ash.
(Serves you right, too, if you ask me.)">)
(<OR <HELLO? ,PRINCESS>
<VERB? ALARM KISS EXAMINE RUB>>
<COND (<AND <IN? ,PRINCESS ,DRAGON-LAIR>
<EQUAL? <GET .DEM ,C-ENABLED?> 0>>
<ENABLE <QUEUE I-PRINCESS 2>>
<SETG PRINCESS-AWAKE T>
<TELL
"The princess shakes herself awake, notices you, and smiles. \"Thank you for
rescuing me from that horrid worm, but I must depart.\" She rises, looking
purposefully out of the lair." CR>)
(T
<TELL
"The princess ignores you; her eyes fix on the ">
<COND (<EQUAL? ,HERE ,GAZEBO>
<TELL "garden">)
(<EQUAL? ,HERE ,FORMAL-GARDEN>
<TELL "gazebo">)
(<EQUAL? ,HERE ,LEDGE-IN-RAVINE>
<TELL "ledge">)
(T
<TELL <GET ,PRDIRS <* ,PRCOUNT 4>>>)>
<TELL ,PERIOD-CR>)>)
(<NOT ,PRINCESS-AWAKE>
<TELL "She's in a trance!" CR>)>>
<ROUTINE I-PRINCESS ("AUX" (DEM <INT I-PRINCESS>) (OLDP <LOC ,PRINCESS>)
(PC <* ,PRCOUNT 4>))
<MOVE ,PRINCESS <GET ,PRDIRS <+ .PC 1>>>
<SETG PRFOLLOW <>>
<COND (<AND <IN? ,PRINCESS ,DARK-TUNNEL>
<IN? ,ADVENTURER ,DEEP-FORD>>
<TELL
"The princess touches the ravine wall and a section slides away, revealing
a passage to the east. She enters it." CR>
<COND (<IN? ,WINNER .OLDP>
<SETG PRFOLLOW <GET ,PRDIRS <+ .PC 3>>>)>
<SETG SECRET-DOOR T>)
(<AND <IN? ,PRINCESS ,DARK-TUNNEL>
<IN? ,WINNER ,DARK-TUNNEL>>
<SETG SECRET-DOOR T>
<TELL
"The princess appears from behind some rocks, as though she had walked
through a wall." CR>)
(<IN? ,WINNER .OLDP>
<SETG PRFOLLOW <GET ,PRDIRS <+ .PC 3>>>
<COND (<EQUAL? .OLDP ,FORMAL-GARDEN>
<TELL "The princess enters the gazebo." CR>)
(<EQUAL? .OLDP ,LEDGE-IN-RAVINE>
<TELL
"The princess climbs daintily down the rock face." CR>)
(T
<TELL "The princess walks ">
<TELL <GET ,PRDIRS .PC>>
<TELL ". She glances back at you as she goes." CR>)>)
(<IN? ,PRINCESS ,HERE>
<COND (<EQUAL? ,HERE ,GAZEBO>
<TELL "The princess joins you in the gazebo." CR>)
(<EQUAL? ,HERE ,DEEP-FORD>
<TELL "The princess clambers down from the ledge." CR>)
(T
<TELL "The princess enters from the ">
<TELL <GET ,PRDIRS <+ 2 .PC>>>
<TELL ". She seems surprised to see you." CR>)>)>
<COND (<IN? ,PRINCESS ,GAZEBO>
<DISABLE .DEM>
<ENABLE <QUEUE I-UNICORN 6>>)
(T
<SETG PRCOUNT <+ ,PRCOUNT 1>>
<ENABLE <QUEUE I-PRINCESS <COND (<PROB 75> 1)
(T 2)>>>)>
<RTRUE>>
<GLOBAL PRCOUNT 0>
<GLOBAL PRFOLLOW <>>
<GLOBAL PRDIRS
<TABLE "south" DRAGON-ROOM "north" P?SOUTH
"east" LEDGE-IN-RAVINE "west" P?EAST
"south" DEEP-FORD "north" P?SOUTH
"east" DARK-TUNNEL "west" P?EAST
"south" FORMAL-GARDEN "north" P?SOUTH
"in" GAZEBO "out" P?IN>>
<ROUTINE I-UNICORN ()
<COND (<EQUAL? ,HERE ,GAZEBO ,FORMAL-GARDEN>
<FCLEAR ,GOLD-KEY ,NDESCBIT>
<MOVE ,GOLD-KEY ,WINNER>
<SCORE-OBJ ,GOLD-KEY>
<PUTP ,GOLD-KEY ,P?ACTION 0>
<REMOVE ,PRINCESS>
<TELL
"Shyly, a unicorn peeks out of the hedges and approaches the princess. Around
its neck hangs a gold key. The princess takes the key and, smiling, hands it
to you. \"It is the least I can do for one who rescued me from a fate I dare
not contemplate.\" With that, she mounts the unicorn and rides away." CR>)
(T
<REMOVE ,PRINCESS>
<RFALSE>)>>
<ROOM STONE-BRIDGE
(IN ROOMS)
(DESC "Stone Bridge")
(LDESC
"You are on a north-south bridge spanning a deep ravine. Water flows
far beneath.")
(NORTH TO DRAGON-ROOM)
(SOUTH TO COOL-ROOM)
(DOWN "It's a long way down.")
(FLAGS RLANDBIT)
(GLOBAL BRIDGE CHASM)>
<ROOM COOL-ROOM
(IN ROOMS)
(DESC "Cool Room")
(LDESC
"The air is cool and damp. A path from the southeast splits here; north toward
a stone bridge, and west into a narrow tunnel. It is from the latter that the
chill originates.")
(SE TO CAROUSEL-ROOM)
(NORTH TO STONE-BRIDGE)
(WEST TO ICE-ROOM)
(FLAGS RLANDBIT)
(GLOBAL BRIDGE)>
<ROOM ICE-ROOM
(IN ROOMS)
(DESC "Ice Room")
(EAST TO COOL-ROOM)
(WEST TO VOLCANO-BOTTOM IF ICE-MELTED ELSE
"You don't even have an ice-pick.")
(SOUTH TO GUARDED-ROOM)
(FLAGS RLANDBIT)
(ACTION ICE-ROOM-F)>
<ROUTINE ICE-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is a large hall of ancient lava, worn smooth by a glacier. Tunnels
lead east and south.">
<COND (,ICE-MELTED
<TELL " A damp, scorched passage leads west.">)>
<CRLF>)>>
<OBJECT ICE
(IN ICE-ROOM)
(DESC "glacier")
(LDESC "A mass of ice fills the western half of the room.")
(SYNONYM ICE MASS GLACIER)
(ADJECTIVE COLD ICY)
(ACTION ICE-F)>
<ROUTINE ICE-F ()
<COND (<VERB? MELT>
<TELL "This is a big glacier; you'll need lots of heat." CR>)>>

390
syntax.zil Normal file
View file

@ -0,0 +1,390 @@
"SYNTAX for
Mini-Zork II: The Wizard of Frobozz
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
"Buzzwords, Prepositions and Directions"
<BUZZ A AN THE IS AND OF THEN ALL ONE BUT EXCEPT \. \, \" YES NO Y HERE
FEEBLE FUMBLE FREEZE FALL FRY FLUORESCE FERMENT FLOAT FIREPROOF
FENCE FUDGE FANTASIZE AGAIN G OOPS>
<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>
;<SYNTAX DEBUG = V-DEBUG>
\^L
"Real Verbs"
<SYNTAX ATTACK OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-ATTACK>
<SYNTAX ATTACK OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) WITH OBJECT
(HELD CARRIED HAVE) = V-ATTACK>
<SYNONYM ATTACK FIGHT HIT KILL MURDER SLAY STAB>
<SYNTAX BLOW OBJECT = V-BLAST>
<SYNTAX BLOW OUT OBJECT = V-LAMP-OFF>
<SYNTAX BLOW UP OBJECT WITH OBJECT (FIND TOOLBIT) = V-INFLATE>
<SYNTAX BLOW UP OBJECT = V-BLAST>
<SYNONYM BLOW BLAST>
<SYNTAX BURN OBJECT (FIND BURNBIT) WITH OBJECT (FIND FLAMEBIT) (HAVE)
= V-BURN PRE-BURN>
<SYNTAX BURN DOWN OBJECT (FIND BURNBIT) WITH OBJECT (FIND FLAMEBIT) (HAVE)
= V-BURN PRE-BURN>
<SYNONYM BURN IGNITE>
<SYNTAX CLIMB UP OBJECT (FIND RLANDBIT) = V-CLIMB>
<SYNTAX CLIMB DOWN OBJECT (FIND RLANDBIT) = 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-ENTER PRE-ENTER>
<SYNTAX CLIMB ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNONYM CLIMB SIT>
<SYNTAX CLOSE OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM) = V-CLOSE>
<SYNTAX COMMAND OBJECT (FIND ACTORBIT) = V-COMMAND>
<SYNTAX COUNT OBJECT = V-COUNT>
<SYNTAX CROSS OBJECT = V-WALK-AROUND>
<SYNONYM CROSS FORD>
<SYNTAX CUT OBJECT WITH OBJECT (FIND WEAPONBIT) (CARRIED HELD) = V-CUT>
<SYNONYM CUT SLICE>
<SYNTAX CURSE = V-CURSES>
<SYNTAX CURSE OBJECT (FIND ACTORBIT) = V-CURSES>
<SYNONYM CURSE SHIT FUCK DAMN>
<SYNTAX DEFLATE OBJECT = V-DEFLATE>
<SYNTAX DESTROY OBJECT WITH OBJECT (HELD CARRIED TAKE) = V-MUNG PRE-MUNG>
<SYNTAX DESTROY DOWN OBJECT WITH OBJECT (HELD CARRIED TAKE) = V-MUNG PRE-MUNG>
<SYNONYM DESTROY BREAK SMASH>
<SYNTAX DISEMBARK OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX DISENCHANT OBJECT = V-DISENCHANT>
<SYNTAX DRINK OBJECT (FIND DRINKBIT) = V-DRINK>
<SYNTAX DRINK FROM OBJECT (HELD CARRIED) = V-DRINK-FROM>
<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>
<SYNTAX EAT OBJECT (FIND FOODBIT) (HAVE TAKE) = V-EAT>
<SYNONYM EAT TASTE BITE>
<SYNTAX ENCHANT OBJECT (ON-GROUND IN-ROOM) = V-ENCHANT>
<SYNTAX ENTER = V-ENTER PRE-ENTER>
<SYNTAX ENTER OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-ENTER PRE-ENTER>
<SYNONYM ENTER BOARD>
<SYNTAX EXAMINE OBJECT (MANY) = V-EXAMINE>
<SYNTAX EXAMINE IN OBJECT (MANY) = V-LOOK-INSIDE>
<SYNTAX EXAMINE ON OBJECT (MANY) = V-LOOK-INSIDE>
<SYNONYM EXAMINE DESCRIBE WHAT WHATS>
<SYNTAX EXIT = V-EXIT>
<SYNTAX EXIT OBJECT = V-EXIT>
<SYNTAX EXTINGUISH OBJECT (FIND ONBIT) (TAKE HAVE) = V-LAMP-OFF>
<SYNONYM EXTINGUISH DOUSE>
<SYNTAX FILL OBJECT (FIND CONTBIT) WITH OBJECT = V-FILL PRE-FILL>
<SYNTAX FILL OBJECT (FIND CONTBIT) = V-FILL PRE-FILL>
<SYNTAX FIND OBJECT = V-FIND>
<SYNONYM FIND WHERE>
<SYNTAX FOLLOW = V-FOLLOW>
<SYNTAX FOLLOW OBJECT = V-FOLLOW>
<SYNONYM FOLLOW 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 OFFER FEED>
<SYNTAX HELLO = V-HELLO>
<SYNTAX HELLO OBJECT = V-HELLO>
<SYNONYM HELLO HI>
<SYNTAX INCANT = V-INCANT>
<SYNONYM INCANT CHANT>
<SYNTAX INFLAT OBJECT WITH OBJECT (FIND TOOLBIT) = 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 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-LEAVE>
<SYNTAX LEAVE OBJECT = V-DROP PRE-DROP>
<SYNTAX LIGHT OBJECT (FIND LIGHTBIT) (TAKE HAVE) = V-LAMP-ON>
<SYNTAX LIGHT OBJECT (FIND LIGHTBIT) WITH OBJECT (FIND FLAMEBIT)
(HELD CARRIED TAKE HAVE) = V-BURN PRE-BURN>
<SYNTAX LISTEN TO OBJECT = V-LISTEN>
<SYNTAX LOCK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT (FIND TOOLBIT) (TAKE)
= V-LOCK>
<SYNTAX LOOK = V-LOOK>
<SYNTAX LOOK AROUND OBJECT (FIND RLANDBIT) = V-LOOK>
<SYNTAX LOOK UP OBJECT (FIND RLANDBIT) = V-LOOK>
<SYNTAX LOOK DOWN OBJECT (FIND RLANDBIT) = V-LOOK>
<SYNTAX LOOK AT OBJECT (MANY) = V-EXAMINE>
<SYNTAX LOOK ON OBJECT = V-LOOK-INSIDE>
<SYNTAX LOOK WITH OBJECT (MANY) = V-LOOK-INSIDE>
<SYNTAX LOOK UNDER OBJECT = V-LOOK-UNDER>
<SYNTAX LOOK BEHIND OBJECT = V-LOOK-BEHIND>
<SYNTAX LOOK IN OBJECT (MANY) = V-LOOK-INSIDE>
<SYNTAX LOOK FOR OBJECT = V-FIND>
<SYNONYM LOOK L>
<SYNTAX LOWER OBJECT = V-LOWER>
<SYNTAX MELT OBJECT WITH OBJECT (FIND FLAMEBIT) = V-MELT>
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) = V-MOVE>
<SYNTAX MOVE OBJECT (HELD MANY HAVE) IN OBJECT = V-PUT PRE-PUT>
<SYNTAX MOVE OBJECT WITH OBJECT (FIND TOOLBIT) = V-TURN>
<SYNONYM MOVE ROLL>
<SYNTAX OPEN OBJECT (FIND DOORBIT) = V-OPEN>
<SYNTAX OPEN UP OBJECT (FIND DOORBIT) = V-OPEN>
<SYNTAX OPEN OBJECT (FIND DOORBIT) WITH OBJECT (FIND TOOLBIT) (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 PLAY OBJECT = V-PLAY>
<SYNTAX POKE OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-MUNG PRE-MUNG>
<SYNONYM POKE PUNCTURE>
<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 PULL OBJECT (ON-GROUND IN-ROOM) = V-MOVE>
<SYNTAX PULL ON OBJECT (ON-GROUND IN-ROOM) = V-MOVE>
<SYNTAX PULL UP OBJECT (ON-GROUND IN-ROOM) = V-MOVE>
<SYNONYM PULL TUG YANK>
<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>
<SYNTAX PUSH OBJECT UNDER OBJECT = V-PUT-UNDER>
<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 OBJECT (HELD HAVE) UNDER OBJECT = V-PUT-UNDER>
<SYNTAX PUT OUT OBJECT (FIND ONBIT) (TAKE HAVE) = V-LAMP-OFF>
<SYNONYM PUT INSERT PLACE HIDE>
<SYNTAX RAISE OBJECT = V-RAISE>
<SYNTAX RAISE UP OBJECT = V-RAISE>
<SYNONYM RAISE LIFT>
<SYNTAX RAPE OBJECT (FIND ACTORBIT) = V-RAPE>
<SYNONYM RAPE MOLEST>
<SYNTAX READ OBJECT (FIND READBIT) (TAKE) = V-READ PRE-READ>
<SYNTAX READ FROM OBJECT (FIND READBIT) (TAKE) = V-READ PRE-READ>
<SYNONYM READ SKIM>
<SYNTAX RUB OBJECT = V-RUB>
<SYNTAX RUB OBJECT WITH OBJECT = V-RUB>
<SYNONYM RUB TOUCH FEEL PAT PET>
<SYNTAX SAY = V-SAY>
<SYNTAX SAY OBJECT = V-SAY>
<SYNONYM SAY ANSWER REPLY>
<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 SLIDE OBJECT UNDER OBJECT = V-PUT-UNDER>
<SYNTAX SMELL OBJECT = V-SMELL>
<SYNTAX STAND = V-STAND>
<SYNTAX STAND UP OBJECT (FIND RLANDBIT) = V-STAND>
<SYNTAX STRIKE OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) WITH OBJECT
(FIND WEAPONBIT) (HAVE) = V-ATTACK>
<SYNTAX STRIKE OBJECT = V-STRIKE>
<SYNTAX SWIM = V-SWIM>
<SYNTAX SWIM IN OBJECT = V-SWIM>
<SYNTAX SWIM ACROSS OBJECT = V-SWIM>
<SYNONYM SWIM 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-ENTER PRE-ENTER>
<SYNTAX TAKE OUT OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX TAKE ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX TAKE UP OBJECT (FIND RLANDBIT) = V-STAND>
<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 TALK TO OBJECT (FIND ACTORBIT) (IN-ROOM) = V-TELL>
<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 TOSS>
<SYNTAX TIE OBJECT TO OBJECT = V-TIE>
<SYNTAX TIE UP OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) WITH OBJECT
(FIND TOOLBIT) (HAVE) = V-TIE-UP>
<SYNONYM TIE FASTEN SECURE ATTACH>
<SYNTAX TURN OBJECT WITH OBJECT = V-TURN>
<SYNTAX TURN ON OBJECT (FIND LIGHTBIT) = V-LAMP-ON>
<SYNTAX TURN ON OBJECT WITH OBJECT (HAVE) = V-LAMP-ON>
<SYNTAX TURN OFF OBJECT (FIND ONBIT) (TAKE HAVE) = V-LAMP-OFF>
<SYNONYM TURN SHUT>
<SYNTAX UNLOCK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT (FIND TOOLBIT) (TAKE)
= V-UNLOCK>
<SYNTAX UNTIE OBJECT = V-UNTIE>
<SYNTAX UNTIE OBJECT FROM OBJECT = V-UNTIE>
<SYNONYM UNTIE FREE RELEASE UNFASTEN UNATTACH UNHOOK>
<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>
<SYNTAX WALK = V-WALK-AROUND>
<SYNTAX WALK OBJECT = V-WALK>
<SYNTAX WALK AWAY OBJECT = V-WALK>
<SYNTAX WALK IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-ENTER PRE-ENTER>
<SYNTAX WALK WITH OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-ENTER PRE-ENTER>
<SYNTAX WALK ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-ENTER PRE-ENTER>
<SYNTAX WALK OVER OBJECT = V-LEAP>
<SYNTAX WALK TO OBJECT = V-WALK-TO>
<SYNTAX WALK AROUND OBJECT (FIND RLANDBIT) = 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 POINT>
<SYNTAX YELL = V-YELL>
<SYNONYM YELL SCREAM SHOUT>
<SYNTAX ZORK = V-ZORK>

158
verbs.zabstr Normal file
View file

@ -0,0 +1,158 @@
<GLOBAL VERBOSITY 1>
<DEFINE-ROUTINE V-VERBOSE>
<DEFINE-ROUTINE V-BRIEF>
<DEFINE-ROUTINE V-SUPER-BRIEF>
<DEFINE-ROUTINE V-DIAGNOSE>
<DEFINE-ROUTINE V-INVENTORY>
<DEFINE-ROUTINE FINISH>
<DEFINE-ROUTINE V-QUIT>
<DEFINE-ROUTINE V-RESTART>
<DEFINE-ROUTINE DO-YOU-WISH>
<DEFINE-ROUTINE YES?>
<DEFINE-ROUTINE V-RESTORE>
<DEFINE-ROUTINE V-SAVE>
<DEFINE-ROUTINE V-SCORE>
<GLOBAL SCORE 0>
<DEFINE-ROUTINE SCORE-OBJ>
<DEFINE-ROUTINE V-SCRIPT>
<DEFINE-ROUTINE INTERACTION>
<DEFINE-ROUTINE V-UNSCRIPT>
<DEFINE-ROUTINE V-VERSION>
<DEFINE-ROUTINE V-VERIFY>
<DEFINE-ROUTINE V-COMMAND-FILE>
<DEFINE-ROUTINE V-RANDOM>
<DEFINE-ROUTINE V-RECORD>
<DEFINE-ROUTINE V-UNRECORD>
<DEFINE-ROUTINE V-ALARM>
<DEFINE-ROUTINE V-ATTACK>
<DEFINE-ROUTINE V-BLAST>
<DEFINE-ROUTINE PRE-BURN>
<DEFINE-ROUTINE V-BURN>
<DEFINE-ROUTINE V-CLIMB-DOWN>
<DEFINE-ROUTINE V-CLIMB>
<DEFINE-ROUTINE V-CLIMB-ON>
<DEFINE-ROUTINE V-CLOSE>
<DEFINE-ROUTINE V-COMMAND>
<DEFINE-ROUTINE V-COUNT>
<DEFINE-ROUTINE V-CURSES>
<DEFINE-ROUTINE V-CUT>
<DEFINE-ROUTINE V-DEFLATE>
<DEFINE-ROUTINE V-DISEMBARK>
<DEFINE-ROUTINE V-DISENCHANT>
<DEFINE-ROUTINE V-DRINK>
<DEFINE-ROUTINE V-DRINK-FROM>
<DEFINE-ROUTINE PRE-DROP>
<DEFINE-ROUTINE V-DROP>
<DEFINE-ROUTINE V-EAT>
<DEFINE-ROUTINE HIT-SPOT>
<DEFINE-ROUTINE V-ENCHANT>
<DEFINE-ROUTINE REMOVE-CAREFULLY>
<DEFINE-ROUTINE PRE-ENTER>
<DEFINE-ROUTINE V-ENTER>
<DEFINE-ROUTINE V-EXAMINE>
<DEFINE-ROUTINE V-EXIT>
<DEFINE-ROUTINE PRE-FILL>
<DEFINE-ROUTINE V-FILL>
<DEFINE-ROUTINE V-FIND>
<DEFINE-ROUTINE V-FOLLOW>
<DEFINE-ROUTINE PRE-GIVE>
<DEFINE-ROUTINE V-GIVE>
<DEFINE-ROUTINE V-HELLO>
<DEFINE-ROUTINE V-INCANT>
<DEFINE-ROUTINE I-SPELL>
<DEFINE-ROUTINE V-INFLATE>
<DEFINE-ROUTINE V-KICK>
<DEFINE-ROUTINE V-KISS>
<DEFINE-ROUTINE V-KNOCK>
<DEFINE-ROUTINE V-LAMP-OFF>
<DEFINE-ROUTINE V-LAMP-ON>
<DEFINE-ROUTINE V-LAUNCH>
<DEFINE-ROUTINE V-LEAP>
<DEFINE-ROUTINE V-LEAVE>
<DEFINE-ROUTINE V-LISTEN>
<DEFINE-ROUTINE V-LOCK>
<DEFINE-ROUTINE V-LOOK>
<DEFINE-ROUTINE V-LOOK-BEHIND>
<DEFINE-ROUTINE V-LOOK-INSIDE>
<DEFINE-ROUTINE V-LOOK-UNDER>
<DEFINE-ROUTINE V-LOWER>
<DEFINE-ROUTINE V-MELT>
<DEFINE-ROUTINE V-MOVE>
<DEFINE-ROUTINE PRE-MUNG>
<DEFINE-ROUTINE V-MUNG>
<DEFINE-ROUTINE V-OPEN>
<DEFINE-ROUTINE V-PICK>
<DEFINE-ROUTINE V-PLAY>
<DEFINE-ROUTINE V-POUR-ON>
<DEFINE-ROUTINE V-PUSH>
<DEFINE-ROUTINE PRE-PUT>
<DEFINE-ROUTINE V-PUT>
<DEFINE-ROUTINE V-PUT-ON>
<DEFINE-ROUTINE V-PUT-UNDER>
<DEFINE-ROUTINE V-RAISE>
<DEFINE-ROUTINE V-RAPE>
<DEFINE-ROUTINE PRE-READ>
<DEFINE-ROUTINE V-READ>
<DEFINE-ROUTINE V-RUB>
<DEFINE-ROUTINE V-SAY>
<DEFINE-ROUTINE V-SEARCH>
<DEFINE-ROUTINE V-SGIVE>
<DEFINE-ROUTINE V-SHAKE>
<DEFINE-ROUTINE V-SKIP>
<DEFINE-ROUTINE V-SMELL>
<DEFINE-ROUTINE V-STAND>
<DEFINE-ROUTINE V-STRIKE>
<DEFINE-ROUTINE V-SWIM>
<DEFINE-ROUTINE V-SWING>
<DEFINE-ROUTINE PRE-TAKE>
<DEFINE-ROUTINE V-TAKE>
<DEFINE-ROUTINE V-TELL>
<DEFINE-ROUTINE V-THROW>
<DEFINE-ROUTINE V-THROW-OFF>
<DEFINE-ROUTINE V-TIE>
<DEFINE-ROUTINE V-TIE-UP>
<DEFINE-ROUTINE V-TURN>
<DEFINE-ROUTINE V-UNLOCK>
<DEFINE-ROUTINE V-UNTIE>
<DEFINE-ROUTINE V-WAIT>
<DEFINE-ROUTINE V-WALK>
<DEFINE-ROUTINE V-WALK-AROUND>
<DEFINE-ROUTINE V-WALK-TO>
<DEFINE-ROUTINE V-WAVE>
<DEFINE-ROUTINE V-YELL>
<DEFINE-ROUTINE V-ZORK>
<GLOBAL INDENTS <TABLE "" " " " " " " " " " ">>
<GLOBAL LIT <>>
<DEFINE-ROUTINE DESCRIBE-ROOM>
<DEFINE-ROUTINE DESCRIBE-OBJECTS>
<GLOBAL DESC-OBJECT <>>
<DEFINE-ROUTINE DESCRIBE-OBJECT>
<DEFINE-ROUTINE PRINT-CONTENTS>
<DEFINE-ROUTINE PRINT-CONT>
<DEFINE-ROUTINE FIRSTER>
<DEFINE-ROUTINE SEE-INSIDE?>
<GLOBAL DEAD <>>
<GLOBAL DEATHS 0>
<DEFINE-ROUTINE JIGS-UP>
<CONSTANT REXIT 0>
<CONSTANT UEXIT 1>
<CONSTANT NEXIT 2>
<CONSTANT FEXIT 3>
<CONSTANT CEXIT 4>
<CONSTANT DEXIT 5>
<CONSTANT NEXITSTR 0>
<CONSTANT FEXITFCN 0>
<CONSTANT CEXITFLAG 1>
<CONSTANT CEXITSTR 1>
<CONSTANT DEXITOBJ 1>
<CONSTANT DEXITSTR 1>
<DEFINE-ROUTINE NO-GO-TELL>
<DEFINE-ROUTINE GOTO>
<GLOBAL FUMBLE-NUMBER 7>
<GLOBAL FUMBLE-PROB 8>
<GLOBAL LOAD-ALLOWED 100>
<DEFINE-ROUTINE ITAKE>
<DEFINE-ROUTINE IDROP>
<DEFINE-ROUTINE CCOUNT>
<DEFINE-ROUTINE WEIGHT>

1818
verbs.zap Normal file

File diff suppressed because it is too large Load diff

1388
verbs.zil Normal file

File diff suppressed because it is too large Load diff

131
volcano.zabstr Normal file
View file

@ -0,0 +1,131 @@
<GLOBAL BALLOON-TIED <>>
<GLOBAL BALLOON-INFLATED <>>
<GLOBAL LABEL-REVEALED <>>
<ROOM VOLCANO-BOTTOM (IN ROOMS) (DESC "Volcano Bottom") (LDESC
"You are at the base of a dormant volcano. High above, light enters the
cone of the volcano. The only exit is east.") (EAST TO ICE-ROOM) (FLAGS
RLANDBIT NONLANDBIT)>
<OBJECT RUBY (IN VOLCANO-BOTTOM) (DESC "ruby") (LDESC
"On the floor lies a moby ruby.") (SYNONYM RUBY TREASURE) (ADJECTIVE MOBY) (
VALUE 15) (FLAGS TAKEBIT)>
<GLOBAL BALLOON-LOC VOLCANO-BOTTOM>
<OBJECT BALLOON (IN VOLCANO-BOTTOM) (DESC "basket") (SYNONYM BALLOON BASKET) (
ADJECTIVE WICKER) (CAPACITY 100) (SIZE 70) (VTYPE 0) (FLAGS VEHBIT OPENBIT) (
DESCFCN BALLOON-F) (ACTION BALLOON-F)>
<DEFINE-ROUTINE BALLOON-F>
<DEFINE-ROUTINE I-BALLOON>
<DEFINE-ROUTINE BALLOON-BURN>
<DEFINE-ROUTINE PUT-BALLOON>
<GLOBAL BALLOON-UPS <LTABLE VOLCANO-CORE VOLCANO-BY-SMALL-LEDGE
VOLCANO-BY-WIDE-LEDGE>>
<GLOBAL BALLOON-FLOATS <LTABLE NARROW-LEDGE VOLCANO-BY-SMALL-LEDGE WIDE-LEDGE
VOLCANO-BY-WIDE-LEDGE>>
<GLOBAL BALLOON-DOWNS <LTABLE VOLCANO-BY-WIDE-LEDGE VOLCANO-BY-SMALL-LEDGE
VOLCANO-CORE>>
<DEFINE-ROUTINE RISE-AND-SHINE>
<DEFINE-ROUTINE DECLINE-AND-FALL>
<DEFINE-ROUTINE LKP>
<DEFINE-ROUTINE I-BURNUP>
<OBJECT BALLOON-LABEL (DESC "blue label") (LDESC "There is a blue label here.")
(SYNONYM LABEL) (ADJECTIVE BLUE) (FLAGS READBIT TAKEBIT BURNBIT) (SIZE 1) (TEXT
"\"FROBOZZ MAGIC BALLOON COMPANY! Hello, Aviator!|
|
To land your balloon, say LAND. Otherwise, you're on your own! (No warranty
expressed or implied.)\"")>
<OBJECT BRAIDED-WIRE (IN BALLOON) (DESC "braided wire") (SYNONYM ROPE WIRE) (
ADJECTIVE BRAIDED) (FLAGS NDESCBIT) (ACTION BRAIDED-WIRE-F)>
<DEFINE-ROUTINE BRAIDED-WIRE-F>
<OBJECT CLOTH-BAG (IN BALLOON) (DESC "cloth bag") (SYNONYM BAG) (ADJECTIVE
CLOTH) (FLAGS NDESCBIT) (ACTION BCONTENTS)>
<OBJECT RECEPTACLE (IN BALLOON) (DESC "receptacle") (SYNONYM RECEPTACLE) (
ADJECTIVE METAL) (CAPACITY 6) (FLAGS CONTBIT SEARCHBIT NDESCBIT) (ACTION
BCONTENTS)>
<DEFINE-ROUTINE BCONTENTS>
<ROOM VOLCANO-CORE (IN ROOMS) (DESC "Volcano Core") (LDESC
"You are about one hundred feet above the bottom of the volcano.") (FLAGS
NONLANDBIT NWALLBIT)>
<ROOM VOLCANO-BY-SMALL-LEDGE (IN ROOMS) (DESC "Volcano By Small Ledge") (EAST
TO NARROW-LEDGE) (LAND TO NARROW-LEDGE) (FLAGS NONLANDBIT NWALLBIT) (ACTION
VOLCANO-BY-LEDGE-F)>
<ROOM VOLCANO-BY-WIDE-LEDGE (IN ROOMS) (DESC "Volcano By Wide Ledge") (LAND TO
WIDE-LEDGE) (WEST TO WIDE-LEDGE) (FLAGS NONLANDBIT NWALLBIT) (ACTION
VOLCANO-BY-LEDGE-F)>
<DEFINE-ROUTINE VOLCANO-BY-LEDGE-F>
<ROOM NARROW-LEDGE (IN ROOMS) (DESC "Narrow Ledge") (DOWN
"I wouldn't jump from here.") (SOUTH TO LIBRARY) (IN TO LIBRARY) (FLAGS
RLANDBIT NONLANDBIT) (GLOBAL HOOK) (ACTION LEDGE-F)>
<OBJECT COIN (IN NARROW-LEDGE) (DESC "priceless zorkmid") (FDESC
"On the floor is a priceless gold zorkmid (a valuable collector's item).") (
SYNONYM COIN ZORKMID GOLD TREASURE) (ADJECTIVE GOLD PRICELESS) (FLAGS READBIT
TAKEBIT) (SIZE 10) (VALUE 20) (TEXT
"This octagonal coin reads \"1000 Zorkmids\" and \"In Frobs We Trust\".")>
<ROOM LIBRARY (IN ROOMS) (DESC "Library") (LDESC
"This must have been a large library, probably for the royal family. All
of the shelves have been gnawed to pieces by unfriendly gnomes. To the
north is an exit.") (NORTH TO NARROW-LEDGE) (OUT TO NARROW-LEDGE) (FLAGS
RLANDBIT)>
<OBJECT BLUE-BOOK (IN LIBRARY) (DESC "blue book") (FDESC
"In one corner sits a blue book.") (SYNONYM BOOK BOOKS) (ADJECTIVE BLUE) (
CAPACITY 2) (SIZE 10) (TEXT "This book is written in an unfamiliar tongue.") (
FLAGS READBIT TAKEBIT CONTBIT BURNBIT) (ACTION RANDOM-BOOK-F)>
<OBJECT WHITE-BOOK (IN LIBRARY) (DESC "white book") (FDESC
"Beside the purple book is a white one.") (SYNONYM BOOK BOOKS) (ADJECTIVE WHITE
) (CAPACITY 2) (SIZE 5) (FLAGS READBIT TAKEBIT CONTBIT BURNBIT) (TEXT
"The book details the use of the so-called \"magic wand\". Apparently, these
work by pointing them at the object to be ensorcelled, and then chanting the
appropriate magic word. (Amazing how credulous these ancients were.)") (ACTION
RANDOM-BOOK-F)>
<DEFINE-ROUTINE RANDOM-BOOK-F>
<OBJECT PURPLE-BOOK (IN LIBRARY) (DESC "purple book") (FDESC
"Lying in the dust, covered with mold, is a purple book.") (SYNONYM BOOK BOOKS)
(ADJECTIVE PURPLE) (CAPACITY 2) (SIZE 10) (FLAGS READBIT TAKEBIT CONTBIT
SEARCHBIT BURNBIT) (TEXT "This book is written in an unfamiliar tongue.") (
ACTION PURPLE-BOOK-F)>
<DEFINE-ROUTINE PURPLE-BOOK-F>
<OBJECT STAMP (IN PURPLE-BOOK) (DESC "Flathead stamp") (SYNONYM STAMP TREASURE)
(ADJECTIVE FLATHEAD) (SIZE 1) (VALUE 10) (FLAGS READBIT TAKEBIT BURNBIT) (TEXT
"This three zorkmid stamp portrays Lord Dimwit Flathead the Excessive.")>
<OBJECT HOOK (IN LOCAL-GLOBALS) (DESC "hook") (SYNONYM HOOK) (ADJECTIVE SMALL)>
<DEFINE-ROUTINE LEDGE-F>
<ROOM WIDE-LEDGE (IN ROOMS) (DESC "Wide Ledge") (DOWN "It's a long way down.")
(SOUTH TO DUSTY-ROOM) (IN TO DUSTY-ROOM) (FLAGS RLANDBIT NONLANDBIT) (GLOBAL
HOOK) (ACTION LEDGE-F)>
<ROOM DUSTY-ROOM (IN ROOMS) (DESC "Dusty Room") (NORTH TO WIDE-LEDGE) (OUT TO
WIDE-LEDGE) (FLAGS RLANDBIT ONBIT) (ACTION DUSTY-ROOM-F)>
<DEFINE-ROUTINE DUSTY-ROOM-F>
<OBJECT SAFE (IN DUSTY-ROOM) (DESC "box") (SYNONYM SAFE BOX) (ADJECTIVE STEEL
RUSTY) (FLAGS CONTBIT NDESCBIT) (CAPACITY 15) (ACTION SAFE-F)>
<DEFINE-ROUTINE SAFE-F>
<OBJECT SAFE-HOLE (IN DUSTY-ROOM) (DESC "hole") (SYNONYM SLOT HOLE) (CAPACITY
10) (FLAGS OPENBIT NDESCBIT) (ACTION SAFE-HOLE-F)>
<DEFINE-ROUTINE SAFE-HOLE-F>
<OBJECT CARD (IN SAFE) (DESC "card") (LDESC
"There is a card with writing on it here.") (SYNONYM CARD NOTE) (SIZE 1) (FLAGS
READBIT TAKEBIT BURNBIT) (TEXT
"Warning: This room was constructed near weak rock strata. Detonation
of explosives here is strictly prohibited!")>
<OBJECT CROWN (IN SAFE) (DESC "gaudy crown") (FDESC
"The excessively gaudy crown of Lord Dimwit Flathead sits in the safe.") (LDESC
"Lord Dimwit's crown is here.") (SYNONYM CROWN TREASURE) (ADJECTIVE GAUDY) (
SIZE 10) (VALUE 20) (FLAGS TAKEBIT)>
<OBJECT BRICK (IN STONE-BRIDGE) (DESC "brick") (LDESC
"There is a square brick here which feels like clay.") (SYNONYM BRICK) (
ADJECTIVE SQUARE CLAY) (FLAGS TAKEBIT BURNBIT OPENBIT SEARCHBIT) (CAPACITY 2) (
SIZE 9) (ACTION BRICK-F)>
<DEFINE-ROUTINE BRICK-F>
<OBJECT FUSE (IN RIDDLE-ROOM) (DESC "black string") (LDESC
"There is a coil of black, braided string here.") (SYNONYM FUSE STRING COIL) (
ADJECTIVE BLACK THIN) (SIZE 1) (FLAGS TAKEBIT BURNBIT) (ACTION FUSE-F)>
<DEFINE-ROUTINE FUSE-F>
<DEFINE-ROUTINE I-FUSE>
<DEFINE-ROUTINE BOMB?>
<OBJECT EXPLOSION (DESC "debris from an explosion") (LDESC
"The room is cluttered with debris from an explosion. The walls seem ready
to collapse.") (SYNONYM KREBF)>
<GLOBAL OTHER-PROPERTIES
"Now you've done it. It seems that the brick is an explosive and you have been
blown to bits.">
<GLOBAL DUSTY-ROOM-COLLAPSED <>>
<DEFINE-ROUTINE I-SAFE>

462
volcano.zap Normal file
View file

@ -0,0 +1,462 @@
.FUNCT BALLOON-F,RARG=0,M,R,RC
EQUAL? RARG,M-LOOK \?CCL3
ZERO? BALLOON-INFLATED /?PRG18
PRINTI "The cloth bag is inflated and "
FSET? RECEPTACLE,OPENBIT \?PRG14
PRINTI "a "
PRINTD BALLOON-INFLATED
PRINTI " is burning in the"
JUMP ?PRG16
?PRG14: PRINTI "smoke leaks out of the closed"
?PRG16: PRINTI " receptacle."
JUMP ?CND4
?PRG18: PRINTI "The cloth bag is draped over the side of the basket. In the middle of the basket is a metal receptacle which is "
FSET? RECEPTACLE,OPENBIT \?PRG39
PRINTI "open"
FIRST? RECEPTACLE >RC /?BOGUS25
?BOGUS25: ZERO? RC /?PRG41
PRINTI ". A "
PRINTD RC
PRINTI " is "
EQUAL? BALLOON-INFLATED,RC \?PRG35
PRINTI "burning"
JUMP ?PRG37
?PRG35: PRINTI "nestled"
?PRG37: PRINTI " inside"
JUMP ?PRG41
?PRG39: PRINTI "closed"
?PRG41: PRINTI ". A braided wire "
?CND4: ZERO? BALLOON-TIED /?PRG48
PRINTI "connects the balloon to the hook."
JUMP ?PRG50
?PRG48: PRINTI "dangles from the basket."
?PRG50: PRINT PERIOD-CR
RTRUE
?CCL3: EQUAL? RARG,M-OBJDESC \?CCL53
PRINTI "There is a large heavy wicker basket here. A huge cloth bag is attached to the basket and "
ZERO? BALLOON-INFLATED /?PRG61
PRINTI "inflated"
JUMP ?PRG63
?PRG61: PRINTI "and draped over the side"
?PRG63: PRINTI ". A metal receptacle is fastened to the center of the basket"
ZERO? BALLOON-INFLATED /?PRG74
FSET? RECEPTACLE,OPENBIT \?PRG72
PRINTI ". In it is a burning "
PRINTD BALLOON-INFLATED
JUMP ?PRG74
?PRG72: PRINTI ". Smoke leaks from its closed lid"
?PRG74: PRINTI ". A piece of braided wire "
ZERO? BALLOON-TIED /?PRG81
PRINTR "tied to the hook holds the balloon in place."
?PRG81: PRINTR "dangles from the basket."
?CCL53: EQUAL? RARG,M-BEG \FALSE
EQUAL? PRSA,V?WALK \?CCL87
GETPT HERE,PRSO >M
ZERO? M /?PRG98
ZERO? BALLOON-TIED /?CCL93
PRINTR "You are tied to the ledge."
?CCL93: PTSIZE M
EQUAL? STACK,1 \?PEN96
SET 'BALLOON-LOC,R
?PEN96: CALL QUEUE,I-BALLOON,3
PUT STACK,0,1
RFALSE
?PRG98: PRINTR "You can't control the balloon this way."
?CCL87: EQUAL? PRSA,V?OPEN \?CCL101
ZERO? BALLOON-INFLATED /?CCL101
EQUAL? PRSO,RECEPTACLE \?CCL101
FIRST? RECEPTACLE \?CCL101
FSET RECEPTACLE,OPENBIT
PRINTI "Opening it reveals a burning "
PRINTD BALLOON-INFLATED
PRINT PERIOD-CR
RTRUE
?CCL101: EQUAL? PRSA,V?TAKE \?CCL109
EQUAL? BALLOON-INFLATED,PRSO \?CCL109
PRINTI "You don't really want to hold a burning "
PRINTD PRSO
PRINT PERIOD-CR
RTRUE
?CCL109: EQUAL? PRSA,V?PUT \?CCL115
EQUAL? PRSI,RECEPTACLE \?CCL115
FIRST? RECEPTACLE \?CCL115
PRINTR "The receptacle is already occupied."
?CCL115: EQUAL? PRSA,V?PUT \?CCL122
EQUAL? PRSI,RECEPTACLE \?CCL122
FSET PRSO,NDESCBIT
RFALSE
?CCL122: EQUAL? PRSA,V?INFLATE \FALSE
PRINTR "It takes more than words to inflate a balloon."
.FUNCT I-BALLOON
FSET? RECEPTACLE,OPENBIT \?CCL3
ZERO? BALLOON-INFLATED /?CCL3
CALL RISE-AND-SHINE
RSTACK
?CCL3: EQUAL? HERE,NARROW-LEDGE,WIDE-LEDGE \?CCL7
CALL RISE-AND-SHINE
RSTACK
?CCL7: CALL DECLINE-AND-FALL
RSTACK
.FUNCT BALLOON-BURN
PRINTI "The "
PRINTD PRSO
PRINTI " burns inside the receptacle."
CRLF
GETP PRSO,P?SIZE
MUL STACK,20
CALL QUEUE,I-BURNUP,STACK
PUT STACK,0,1
FSET PRSO,FLAMEBIT
FSET PRSO,ONBIT
FCLEAR PRSO,TAKEBIT
FCLEAR PRSO,READBIT
ZERO? BALLOON-INFLATED \TRUE
PRINTI "The cloth bag inflates as it fills with hot air."
CRLF
ZERO? LABEL-REVEALED \?CND8
MOVE BALLOON-LABEL,BALLOON
PRINTI "A label drops from the bag into the basket."
CRLF
?CND8: SET 'LABEL-REVEALED,TRUE-VALUE
SET 'BALLOON-INFLATED,PRSO
CALL QUEUE,I-BALLOON,3
PUT STACK,0,1
RTRUE
.FUNCT PUT-BALLOON,THERE,STR
EQUAL? HERE,NARROW-LEDGE,WIDE-LEDGE,VOLCANO-BOTTOM \?CND1
PRINTI "You watch as the balloon slowly "
PRINT STR
CRLF
?CND1: MOVE BALLOON,THERE
SET 'BALLOON-LOC,THERE
RETURN BALLOON-LOC
.FUNCT RISE-AND-SHINE,IN,R
IN? WINNER,BALLOON /?PRD1
PUSH 0
JUMP ?PRD2
?PRD1: PUSH 1
?PRD2: SET 'IN,STACK
CALL QUEUE,I-BALLOON,3
PUT STACK,0,1
EQUAL? BALLOON-LOC,VOLCANO-BY-WIDE-LEDGE \?CCL5
CALL INT,I-BURNUP
PUT STACK,0,0
CALL INT,I-BALLOON
PUT STACK,0,0
REMOVE BALLOON
ZERO? IN /?CCL8
CALL JIGS-UP,STR?196
JUMP ?CND6
?CCL8: EQUAL? HERE,NARROW-LEDGE,WIDE-LEDGE,VOLCANO-BOTTOM \?CND6
PRINTI "You watch the balloon drift over the rim and away on the wind."
CRLF
?CND6: SET 'BALLOON-LOC,VOLCANO-BOTTOM
RETURN BALLOON-LOC
?CCL5: CALL LKP,BALLOON-LOC,BALLOON-UPS >R
ZERO? R /?CCL13
ZERO? IN /?CCL16
PRINTI "The balloon ascends."
CRLF
CRLF
SET 'BALLOON-LOC,R
CALL GOTO,R
RSTACK
?CCL16: CALL PUT-BALLOON,R,STR?197
RSTACK
?CCL13: CALL LKP,BALLOON-LOC,BALLOON-FLOATS >R
ZERO? R /?CCL20
ZERO? IN /?CCL23
PRINTI "The balloon leaves the ledge."
CRLF
CRLF
SET 'BALLOON-LOC,R
CALL GOTO,R
RSTACK
?CCL23: CALL PUT-BALLOON,R,STR?198
FSET RECEPTACLE,OPENBIT
RTRUE
?CCL20: ZERO? IN /?CCL27
SET 'BALLOON-LOC,VOLCANO-CORE
PRINTI "The balloon rises slowly from the ground."
CRLF
CRLF
CALL GOTO,VOLCANO-CORE
RSTACK
?CCL27: CALL PUT-BALLOON,VOLCANO-CORE,STR?199
RSTACK
.FUNCT DECLINE-AND-FALL,IN,R
IN? WINNER,BALLOON /?PRD1
PUSH 0
JUMP ?PRD2
?PRD1: PUSH 1
?PRD2: SET 'IN,STACK
CALL QUEUE,I-BALLOON,3
PUT STACK,0,1
EQUAL? BALLOON-LOC,VOLCANO-CORE \?CCL5
ZERO? IN /?CCL8
SET 'BALLOON-LOC,VOLCANO-BOTTOM
ZERO? BALLOON-INFLATED /?CCL11
PRINTI "The balloon has landed."
CRLF
CRLF
CALL GOTO,VOLCANO-BOTTOM
RSTACK
?CCL11: REMOVE BALLOON
MOVE ADVENTURER,HERE
CALL INT,I-BALLOON
PUT STACK,0,0
PRINTI "The balloon smashes into dust against the volcano floor. You, miraculously, survive."
CRLF
CRLF
CALL GOTO,VOLCANO-BOTTOM
RSTACK
?CCL8: CALL PUT-BALLOON,VOLCANO-BOTTOM,STR?200
RSTACK
?CCL5: CALL LKP,BALLOON-LOC,BALLOON-DOWNS >R
ZERO? R /FALSE
ZERO? IN /?CCL20
PRINTI "The balloon descends."
CRLF
CRLF
SET 'BALLOON-LOC,R
CALL GOTO,R
RSTACK
?CCL20: CALL PUT-BALLOON,R,STR?201
RSTACK
.FUNCT LKP,ITM,TBL,CNT=0,LEN
GET TBL,0 >LEN
?PRG1: IGRTR? 'CNT,LEN /FALSE
GET TBL,CNT
EQUAL? STACK,ITM \?PRG1
EQUAL? CNT,LEN /FALSE
ADD CNT,1
GET TBL,STACK
RSTACK
.FUNCT I-BURNUP,OBJ
FIRST? RECEPTACLE >OBJ /?BOGUS1
?BOGUS1: EQUAL? HERE,BALLOON-LOC \?CND2
PRINTI "The "
PRINTD OBJ
PRINTI " has now burned out, and the cloth bag starts to deflate."
CRLF
?CND2: REMOVE OBJ
SET 'BALLOON-INFLATED,FALSE-VALUE
RTRUE
.FUNCT BRAIDED-WIRE-F
EQUAL? PRSA,V?EXAMINE,V?FIND,V?TAKE \?CCL3
CALL BCONTENTS
RSTACK
?CCL3: EQUAL? PRSA,V?TIE \?CCL5
EQUAL? PRSO,BRAIDED-WIRE \?CCL5
EQUAL? PRSI,HOOK \?CCL5
SET 'BALLOON-TIED,PRSI
CALL INT,I-BALLOON
PUT STACK,0,0
PRINTR "The balloon is fastened to the hook."
?CCL5: EQUAL? PRSA,V?UNTIE \FALSE
EQUAL? PRSO,BRAIDED-WIRE \FALSE
PRINTI "The wire is no"
ZERO? BALLOON-TIED /?PRG22
CALL QUEUE,I-BALLOON,3
PUT STACK,0,1
SET 'BALLOON-TIED,FALSE-VALUE
PRINTR "w unhooked."
?PRG22: PRINTR "t tied to anything."
.FUNCT BCONTENTS
EQUAL? PRSA,V?TAKE \?CCL3
PRINTI "The "
PRINTD PRSO
PRINTI " is an integral part of the basket and cannot be removed."
EQUAL? PRSO,BRAIDED-WIRE \?CND6
PRINTR " It might be tied, though."
?CND6: CRLF
RTRUE
?CCL3: EQUAL? PRSA,V?OPEN \?CCL11
PRINTR "The bag is enormous. You can't open it by hand."
?CCL11: EQUAL? PRSA,V?LOOK-INSIDE \?CCL15
PRINTR "It seems empty."
?CCL15: EQUAL? PRSA,V?EXAMINE \?CCL19
EQUAL? PRSO,RECEPTACLE \?CCL19
PRINTI "The receptacle is "
FSET? PRSO,OPENBIT \?PRG29
PRINTR "open."
?PRG29: PRINTR "closed."
?CCL19: EQUAL? PRSA,V?EXAMINE,V?FIND \FALSE
PRINTI "The "
PRINTD PRSO
PRINTR " is part of the basket. It may be manipulated within the basket but cannot be removed."
.FUNCT VOLCANO-BY-LEDGE-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are about "
EQUAL? HERE,VOLCANO-BY-SMALL-LEDGE \?PRG11
PRINTI "15"
JUMP ?PRG13
?PRG11: PRINTI "20"
?PRG13: PRINTI "0 feet up, "
EQUAL? HERE,VOLCANO-BY-WIDE-LEDGE \?PRG19
PRINTI "very "
?PRG19: PRINTI "near the rim of the volcano. To the "
EQUAL? HERE,VOLCANO-BY-SMALL-LEDGE \?PRG26
PRINTI "east is a narrow"
JUMP ?PRG28
?PRG26: PRINTI "west is a wide"
?PRG28: PRINTR "ledge."
.FUNCT RANDOM-BOOK-F
EQUAL? PRSA,V?PUT,V?MOVE,V?TAKE \FALSE
FSET WHITE-BOOK,TOUCHBIT
FSET PURPLE-BOOK,TOUCHBIT
FSET BLUE-BOOK,TOUCHBIT
RFALSE
.FUNCT PURPLE-BOOK-F
EQUAL? PRSA,V?READ \?CCL3
IN? STAMP,PURPLE-BOOK \?CCL3
FSET? PURPLE-BOOK,OPENBIT /?CCL3
GETP PURPLE-BOOK,P?TEXT
PRINT STACK
CRLF
CALL PERFORM,V?OPEN,PURPLE-BOOK
RTRUE
?CCL3: CALL RANDOM-BOOK-F
RSTACK
.FUNCT LEDGE-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are on a "
EQUAL? HERE,NARROW-LEDGE \?PRG11
PRINTI "small"
JUMP ?PRG13
?PRG11: PRINTI "large"
?PRG13: PRINTI " ledge high in the volcano. There is a small opening to the south"
ZERO? DUSTY-ROOM-COLLAPSED /?PRG21
EQUAL? HERE,WIDE-LEDGE \?PRG21
PRINTI " which is blocked by rubble"
?PRG21: PRINTR ". Imbedded in the rock is a small hook."
.FUNCT DUSTY-ROOM-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are in a featureless room with an exit on the north side. Imbedded in the far wall is a rusty box"
FSET? SAFE,OPENBIT /?PRG11
PRINTI ". An oblong hole has been chipped out of the front of it"
JUMP ?PRG13
?PRG11: PRINTI " whose door has been blown off"
?PRG13: PRINT PERIOD-CR
RTRUE
.FUNCT SAFE-F
EQUAL? PRSA,V?TAKE \?CCL3
EQUAL? PRSO,SAFE \?CCL3
PRINTR "The box is imbedded in the wall."
?CCL3: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL9
FSET? SAFE,OPENBIT \?CCL9
PRINTR "The box has no door!"
?CCL9: EQUAL? PRSA,V?OPEN \?CCL15
PRINTR "The box is rusted shut."
?CCL15: EQUAL? PRSA,V?CLOSE \FALSE
PRINTR "The box isn't open!"
.FUNCT SAFE-HOLE-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The hole was someone's failed attempt to chip their way into the box."
.FUNCT BRICK-F
EQUAL? PRSA,V?BURN \FALSE
REMOVE BRICK
CALL JIGS-UP,OTHER-PROPERTIES
RSTACK
.FUNCT FUSE-F
EQUAL? PRSA,V?BURN /?PRG9
EQUAL? PRSA,V?LAMP-ON \FALSE
IN? MATCH,WINNER \FALSE
FSET? MATCH,ONBIT \FALSE
?PRG9: PRINTI "The string starts to burn."
CRLF
CALL QUEUE,I-FUSE,2
PUT STACK,0,1
RTRUE
.FUNCT I-FUSE,BRICK-ROOM,F
LOC BRICK >BRICK-ROOM
IN? FUSE,BRICK \?CCL3
?PRG4: ZERO? BRICK-ROOM /FALSE
IN? BRICK-ROOM,ROOMS /?REP5
LOC BRICK-ROOM >BRICK-ROOM
JUMP ?PRG4
?REP5: MOVE EXPLOSION,BRICK-ROOM
FCLEAR BRICK-ROOM,TOUCHBIT
EQUAL? BRICK-ROOM,HERE \?CCL13
CALL JIGS-UP,OTHER-PROPERTIES
JUMP ?CND11
?CCL13: IN? BRICK,SAFE-HOLE \?PRG16
FSET SAFE-HOLE,INVISIBLE
FSET SAFE,OPENBIT
FCLEAR DUSTY-ROOM,TOUCHBIT
CALL QUEUE,I-SAFE,5
PUT STACK,0,1
?PRG16: PRINTI "There is an explosion nearby."
CRLF
FIRST? BRICK-ROOM >F \?CND11
?PRG20: FSET? F,TAKEBIT \?CND22
FSET F,INVISIBLE
?CND22: NEXT? F >F /?PRG20
?CND11: REMOVE BRICK
JUMP ?CND1
?CCL3: LOC FUSE
EQUAL? STACK,WINNER,HERE \?CND1
PRINTI "The string burns into nothingness."
CRLF
?CND1: REMOVE FUSE
RTRUE
.FUNCT BOMB?,O
EQUAL? O,BRICK \FALSE
IN? FUSE,BRICK \FALSE
CALL INT,I-FUSE
GET STACK,C-ENABLED?
ZERO? STACK /FALSE
RTRUE
.FUNCT I-SAFE
SET 'DUSTY-ROOM-COLLAPSED,TRUE-VALUE
EQUAL? HERE,DUSTY-ROOM \?CCL3
CALL JIGS-UP,STR?223
RSTACK
?CCL3: ZERO? DEAD \FALSE
PRINTR "Probably as a result of that recent explosion, an ominous rumbling indicates that a nearby room has collapsed."
.ENDI

686
volcano.zil Normal file
View file

@ -0,0 +1,686 @@
"VOLCANO for
Mini-Zork II: The Wizard of Frobozz
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
<GLOBAL BALLOON-TIED <>>
<GLOBAL BALLOON-INFLATED <>>
<GLOBAL LABEL-REVEALED <>>
<ROOM VOLCANO-BOTTOM
(IN ROOMS)
(DESC "Volcano Bottom")
(LDESC
"You are at the base of a dormant volcano. High above, light enters the
cone of the volcano. The only exit is east.")
(EAST TO ICE-ROOM)
(FLAGS RLANDBIT NONLANDBIT)>
<OBJECT RUBY
(IN VOLCANO-BOTTOM)
(DESC "ruby")
(LDESC "On the floor lies a moby ruby.")
(SYNONYM RUBY TREASURE)
(ADJECTIVE MOBY)
(VALUE 15)
(FLAGS TAKEBIT)>
<GLOBAL BALLOON-LOC VOLCANO-BOTTOM> ;"balloon location"
<OBJECT BALLOON
(IN VOLCANO-BOTTOM)
(DESC "basket")
(SYNONYM BALLOON BASKET)
(ADJECTIVE WICKER)
(CAPACITY 100)
(SIZE 70)
(VTYPE 0)
(FLAGS VEHBIT OPENBIT)
(DESCFCN BALLOON-F)
(ACTION BALLOON-F)>
<ROUTINE BALLOON-F ("OPTIONAL" (RARG <>) "AUX" M R RC)
<COND (<EQUAL? .RARG ,M-LOOK>
<COND (,BALLOON-INFLATED
<TELL "The cloth bag is inflated and ">
<COND (<FSET? ,RECEPTACLE ,OPENBIT>
<TELL
"a " D ,BALLOON-INFLATED " is burning in the">)
(T
<TELL "smoke leaks out of the closed">)>
<TELL " receptacle.">)
(T
<TELL
"The cloth bag is draped over the side of the basket. In the middle of the
basket is a metal receptacle which is ">
<COND (<FSET? ,RECEPTACLE ,OPENBIT>
<TELL "open">
<SET RC <FIRST? ,RECEPTACLE>>
<COND (.RC
<TELL ". A " D .RC " is ">
<COND (<EQUAL? ,BALLOON-INFLATED .RC>
<TELL "burning">)
(T
<TELL "nestled">)>
<TELL " inside">)>)
(T
<TELL "closed">)>
<TELL ". A braided wire ">)>
<COND (,BALLOON-TIED
<TELL "connects the balloon to the hook.">)
(T
<TELL "dangles from the basket.">)>
<TELL ,PERIOD-CR>)
(<EQUAL? .RARG ,M-OBJDESC>
<TELL
"There is a large heavy wicker basket here. A huge cloth bag is
attached to the basket and ">
<COND (,BALLOON-INFLATED
<TELL "inflated">)
(T
<TELL "and draped over the side">)>
<TELL
". A metal receptacle is fastened to the center of the basket">
<COND (,BALLOON-INFLATED
<COND (<FSET? ,RECEPTACLE ,OPENBIT>
<TELL
". In it is a burning " D ,BALLOON-INFLATED>)
(T
<TELL ". Smoke leaks from its closed lid">)>)>
<TELL ". A piece of braided wire ">
<COND (,BALLOON-TIED
<TELL
"tied to the hook holds the balloon in place." CR>)
(T
<TELL "dangles from the basket." CR>)>)
(<EQUAL? .RARG ,M-BEG>
<COND (<VERB? WALK>
<COND (<SET M <GETPT ,HERE ,PRSO>>
<COND (,BALLOON-TIED
<TELL "You are tied to the ledge." CR>
<RTRUE>)
(T
<AND <EQUAL? <PTSIZE .M> 1>
<SETG BALLOON-LOC .R>>
<ENABLE <QUEUE I-BALLOON 3>>
<RFALSE>)>)
(T
<TELL
"You can't control the balloon this way." CR>
<RTRUE>)>)
(<AND <VERB? OPEN>
,BALLOON-INFLATED
<EQUAL? ,PRSO ,RECEPTACLE>
<FIRST? ,RECEPTACLE>>
<FSET ,RECEPTACLE ,OPENBIT>
<TELL
"Opening it reveals a burning " D ,BALLOON-INFLATED ,PERIOD-CR>
<RTRUE>)
(<AND <VERB? TAKE>
<EQUAL? ,BALLOON-INFLATED ,PRSO>>
<TELL
"You don't really want to hold a burning " D ,PRSO ,PERIOD-CR>
<RTRUE>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,RECEPTACLE>
<FIRST? ,RECEPTACLE>>
<TELL "The receptacle is already occupied." CR>
<RTRUE>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,RECEPTACLE>>
<FSET ,PRSO ,NDESCBIT>
<RFALSE>)
(<VERB? INFLATE>
<TELL
"It takes more than words to inflate a balloon." CR>)>)>>
<ROUTINE I-BALLOON ()
<COND (<AND <FSET? ,RECEPTACLE ,OPENBIT>
,BALLOON-INFLATED>
<RISE-AND-SHINE>)
(<EQUAL? ,HERE ,NARROW-LEDGE ,WIDE-LEDGE>
<RISE-AND-SHINE>)
(T
<DECLINE-AND-FALL>)>>
<ROUTINE BALLOON-BURN ()
<TELL "The " D ,PRSO " burns inside the receptacle." CR>
<ENABLE <QUEUE I-BURNUP <* <GETP ,PRSO ,P?SIZE> 20>>>
<FSET ,PRSO ,FLAMEBIT>
<FSET ,PRSO ,ONBIT>
<FCLEAR ,PRSO ,TAKEBIT>
<FCLEAR ,PRSO ,READBIT>
<COND (,BALLOON-INFLATED
<RTRUE>)
(T
<TELL "The cloth bag inflates as it fills with hot air." CR>
<COND (<NOT ,LABEL-REVEALED>
<MOVE ,BALLOON-LABEL ,BALLOON>
<TELL "A label drops from the bag into the basket." CR>)>
<SETG LABEL-REVEALED T>
<SETG BALLOON-INFLATED ,PRSO>
<ENABLE <QUEUE I-BALLOON 3>>)>>
<ROUTINE PUT-BALLOON (THERE STR)
<COND (<EQUAL? ,HERE ,NARROW-LEDGE ,WIDE-LEDGE ,VOLCANO-BOTTOM>
<TELL "You watch as the balloon slowly " .STR CR>)>
<MOVE ,BALLOON .THERE>
<SETG BALLOON-LOC .THERE>>
<GLOBAL BALLOON-UPS
<LTABLE VOLCANO-CORE VOLCANO-BY-SMALL-LEDGE VOLCANO-BY-WIDE-LEDGE>>
<GLOBAL BALLOON-FLOATS
<LTABLE NARROW-LEDGE VOLCANO-BY-SMALL-LEDGE
WIDE-LEDGE VOLCANO-BY-WIDE-LEDGE>>
<GLOBAL BALLOON-DOWNS
<LTABLE VOLCANO-BY-WIDE-LEDGE VOLCANO-BY-SMALL-LEDGE VOLCANO-CORE>>
<ROUTINE RISE-AND-SHINE ("AUX" (IN <IN? ,WINNER ,BALLOON>) R)
<ENABLE <QUEUE I-BALLOON 3>>
<COND (<EQUAL? ,BALLOON-LOC ,VOLCANO-BY-WIDE-LEDGE>
<DISABLE <INT I-BURNUP>>
<DISABLE <INT I-BALLOON>>
<REMOVE ,BALLOON>
<COND (.IN
<JIGS-UP
"The balloon floats majestically out of the volcano, revealing a breathtaking
view of a forest clearing with a white house. High winds carry you into the
snow-capped (and jagged) cliffs of the Flathead Mountains!">)
(<EQUAL? ,HERE ,NARROW-LEDGE ,WIDE-LEDGE ,VOLCANO-BOTTOM>
<TELL
"You watch the balloon drift over the rim and away on the wind." CR>)>
<SETG BALLOON-LOC ,VOLCANO-BOTTOM>)
(<SET R <LKP ,BALLOON-LOC ,BALLOON-UPS>>
<COND (.IN
<TELL "The balloon ascends." CR CR>
<SETG BALLOON-LOC .R>
<GOTO .R>)
(T
<PUT-BALLOON .R "ascends.">)>)
(<SET R <LKP ,BALLOON-LOC ,BALLOON-FLOATS>>
<COND (.IN
<TELL "The balloon leaves the ledge." CR CR>
<SETG BALLOON-LOC .R>
<GOTO .R>)
(T
<PUT-BALLOON .R
"floats, ascending due to its light load.">
<FSET ,RECEPTACLE ,OPENBIT>)>)
(.IN
<SETG BALLOON-LOC ,VOLCANO-CORE>
<TELL "The balloon rises slowly from the ground." CR CR>
<GOTO ,VOLCANO-CORE>)
(T
<PUT-BALLOON ,VOLCANO-CORE "lifts off.">)>>
<ROUTINE DECLINE-AND-FALL ("AUX" (IN <IN? ,WINNER ,BALLOON>) R)
<ENABLE <QUEUE I-BALLOON 3>>
<COND (<EQUAL? ,BALLOON-LOC ,VOLCANO-CORE>
<COND (.IN
<SETG BALLOON-LOC ,VOLCANO-BOTTOM>
<COND (,BALLOON-INFLATED
<TELL "The balloon has landed." CR CR>
<GOTO ,VOLCANO-BOTTOM>)
(T
<REMOVE ,BALLOON>
<MOVE ,ADVENTURER ,HERE>
<DISABLE <INT I-BALLOON>>
<TELL
"The balloon smashes into dust against the volcano floor.
You, miraculously, survive." CR CR>
<GOTO ,VOLCANO-BOTTOM>)>)
(T
<PUT-BALLOON ,VOLCANO-BOTTOM "lands.">)>)
(<SET R <LKP ,BALLOON-LOC ,BALLOON-DOWNS>>
<COND (.IN
<TELL "The balloon descends." CR CR>
<SETG BALLOON-LOC .R>
<GOTO .R>)
(T
<PUT-BALLOON .R "descends.">)>)>>
<ROUTINE LKP (ITM TBL "AUX" (CNT 0) (LEN <GET .TBL 0>))
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .LEN>
<RFALSE>)
(<EQUAL? <GET .TBL .CNT> .ITM>
<COND (<EQUAL? .CNT .LEN> <RFALSE>)
(T
<RETURN <GET .TBL <+ .CNT 1>>>)>)>>>
<ROUTINE I-BURNUP ("AUX" (OBJ <FIRST? ,RECEPTACLE>))
<COND (<EQUAL? ,HERE ,BALLOON-LOC>
<TELL
"The " D .OBJ " has now burned out, and the cloth bag starts to deflate." CR>)>
<REMOVE .OBJ>
<SETG BALLOON-INFLATED <>>
<RTRUE>>
<OBJECT BALLOON-LABEL
(DESC "blue label")
(LDESC "There is a blue label here.")
(SYNONYM LABEL)
(ADJECTIVE BLUE)
(FLAGS READBIT TAKEBIT BURNBIT)
(SIZE 1)
(TEXT
"\"FROBOZZ MAGIC BALLOON COMPANY! Hello, Aviator!|
|
To land your balloon, say LAND. Otherwise, you're on your own! (No warranty
expressed or implied.)\"")>
<OBJECT BRAIDED-WIRE
(IN BALLOON)
(DESC "braided wire")
(SYNONYM ROPE WIRE)
(ADJECTIVE BRAIDED)
(FLAGS NDESCBIT)
(ACTION BRAIDED-WIRE-F)>
<ROUTINE BRAIDED-WIRE-F ()
<COND (<VERB? TAKE FIND EXAMINE>
<BCONTENTS>)
(<AND <VERB? TIE>
<EQUAL? ,PRSO ,BRAIDED-WIRE>
<EQUAL? ,PRSI ,HOOK>>
<SETG BALLOON-TIED ,PRSI>
<DISABLE <INT I-BALLOON>>
<TELL "The balloon is fastened to the hook." CR>)
(<AND <VERB? UNTIE>
<EQUAL? ,PRSO ,BRAIDED-WIRE>>
<TELL "The wire is no">
<COND (,BALLOON-TIED
<ENABLE <QUEUE I-BALLOON 3>>
<SETG BALLOON-TIED <>>
<TELL "w unhooked." CR>)
(T
<TELL "t tied to anything." CR>)>)>>
<OBJECT CLOTH-BAG
(IN BALLOON)
(DESC "cloth bag")
(SYNONYM BAG)
(ADJECTIVE CLOTH)
(FLAGS NDESCBIT)
(ACTION BCONTENTS)>
<OBJECT RECEPTACLE
(IN BALLOON)
(DESC "receptacle")
(SYNONYM RECEPTACLE)
(ADJECTIVE METAL)
(CAPACITY 6)
(FLAGS CONTBIT SEARCHBIT NDESCBIT)
(ACTION BCONTENTS)>
<ROUTINE BCONTENTS ()
<COND (<VERB? TAKE>
<TELL
"The " D ,PRSO " is an integral part of the basket and cannot be removed.">
<COND (<EQUAL? ,PRSO ,BRAIDED-WIRE>
<TELL " It might be tied, though.">)>
<CRLF>)
(<VERB? OPEN>
<TELL "The bag is enormous. You can't open it by hand." CR>)
(<VERB? LOOK-INSIDE>
<TELL "It seems empty." CR>)
(<AND <VERB? EXAMINE>
<EQUAL? ,PRSO ,RECEPTACLE>>
<TELL "The receptacle is ">
<COND (<FSET? ,PRSO ,OPENBIT>
<TELL "open." CR>)
(T
<TELL "closed." CR>)>)
(<VERB? FIND EXAMINE>
<TELL
"The " D ,PRSO " is part of the basket. It may be manipulated
within the basket but cannot be removed." CR>)>>
<ROOM VOLCANO-CORE
(IN ROOMS)
(DESC "Volcano Core")
(LDESC
"You are about one hundred feet above the bottom of the volcano.")
(FLAGS NONLANDBIT NWALLBIT)>
<ROOM VOLCANO-BY-SMALL-LEDGE
(IN ROOMS)
(DESC "Volcano By Small Ledge")
(EAST TO NARROW-LEDGE)
(LAND TO NARROW-LEDGE)
(FLAGS NONLANDBIT NWALLBIT)
(ACTION VOLCANO-BY-LEDGE-F)>
<ROOM VOLCANO-BY-WIDE-LEDGE
(IN ROOMS)
(DESC "Volcano By Wide Ledge")
(LAND TO WIDE-LEDGE)
(WEST TO WIDE-LEDGE)
(FLAGS NONLANDBIT NWALLBIT)
(ACTION VOLCANO-BY-LEDGE-F)>
<ROUTINE VOLCANO-BY-LEDGE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL "You are about ">
<COND (<EQUAL? ,HERE ,VOLCANO-BY-SMALL-LEDGE>
<TELL "15">)
(T
<TELL "20">)>
<TELL "0 feet up, ">
<COND (<EQUAL? ,HERE ,VOLCANO-BY-WIDE-LEDGE>
<TELL "very ">)>
<TELL "near the rim of the volcano. To the ">
<COND (<EQUAL? ,HERE ,VOLCANO-BY-SMALL-LEDGE>
<TELL "east is a narrow">)
(T
<TELL "west is a wide">)>
<TELL "ledge." CR>)>>
<ROOM NARROW-LEDGE
(IN ROOMS)
(DESC "Narrow Ledge")
(DOWN "I wouldn't jump from here.")
(SOUTH TO LIBRARY)
(IN TO LIBRARY)
(FLAGS RLANDBIT NONLANDBIT)
(GLOBAL HOOK)
(ACTION LEDGE-F)>
<OBJECT COIN
(IN NARROW-LEDGE)
(DESC "priceless zorkmid")
(FDESC
"On the floor is a priceless gold zorkmid (a valuable collector's item).")
(SYNONYM COIN ZORKMID GOLD TREASURE)
(ADJECTIVE GOLD PRICELESS)
(FLAGS READBIT TAKEBIT)
(SIZE 10)
(VALUE 20)
(TEXT
"This octagonal coin reads \"1000 Zorkmids\" and \"In Frobs We Trust\".")>
<ROOM LIBRARY
(IN ROOMS)
(DESC "Library")
(LDESC
"This must have been a large library, probably for the royal family. All
of the shelves have been gnawed to pieces by unfriendly gnomes. To the
north is an exit.")
(NORTH TO NARROW-LEDGE)
(OUT TO NARROW-LEDGE)
(FLAGS RLANDBIT)>
<OBJECT BLUE-BOOK
(IN LIBRARY)
(DESC "blue book")
(FDESC "In one corner sits a blue book.")
(SYNONYM BOOK BOOKS)
(ADJECTIVE BLUE)
(CAPACITY 2)
(SIZE 10)
(TEXT "This book is written in an unfamiliar tongue.")
(FLAGS READBIT TAKEBIT CONTBIT BURNBIT)
(ACTION RANDOM-BOOK-F)>
<OBJECT WHITE-BOOK
(IN LIBRARY)
(DESC "white book")
(FDESC "Beside the purple book is a white one.")
(SYNONYM BOOK BOOKS)
(ADJECTIVE WHITE)
(CAPACITY 2)
(SIZE 5)
(FLAGS READBIT TAKEBIT CONTBIT BURNBIT)
(TEXT
"The book details the use of the so-called \"magic wand\". Apparently, these
work by pointing them at the object to be ensorcelled, and then chanting the
appropriate magic word. (Amazing how credulous these ancients were.)")
(ACTION RANDOM-BOOK-F)>
<ROUTINE RANDOM-BOOK-F ()
<COND (<VERB? TAKE MOVE PUT>
<FSET ,WHITE-BOOK ,TOUCHBIT>
<FSET ,PURPLE-BOOK ,TOUCHBIT>
<FSET ,BLUE-BOOK ,TOUCHBIT>
<RFALSE>)>>
<OBJECT PURPLE-BOOK
(IN LIBRARY)
(DESC "purple book")
(FDESC "Lying in the dust, covered with mold, is a purple book.")
(SYNONYM BOOK BOOKS)
(ADJECTIVE PURPLE)
(CAPACITY 2)
(SIZE 10)
(FLAGS READBIT TAKEBIT CONTBIT SEARCHBIT BURNBIT)
(TEXT "This book is written in an unfamiliar tongue.")
(ACTION PURPLE-BOOK-F)>
<ROUTINE PURPLE-BOOK-F ()
<COND (<AND <VERB? READ>
<IN? ,STAMP ,PURPLE-BOOK>
<NOT <FSET? ,PURPLE-BOOK ,OPENBIT>>>
<TELL <GETP ,PURPLE-BOOK ,P?TEXT> CR>
<PERFORM ,V?OPEN ,PURPLE-BOOK>
<RTRUE>)
(T
<RANDOM-BOOK-F>)>>
<OBJECT STAMP
(IN PURPLE-BOOK)
(DESC "Flathead stamp")
(SYNONYM STAMP TREASURE)
(ADJECTIVE FLATHEAD)
(SIZE 1)
(VALUE 10)
(FLAGS READBIT TAKEBIT BURNBIT)
(TEXT
"This three zorkmid stamp portrays Lord Dimwit Flathead the Excessive.")>
<OBJECT HOOK
(IN LOCAL-GLOBALS)
(DESC "hook")
(SYNONYM HOOK)
(ADJECTIVE SMALL)>
<ROUTINE LEDGE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL "You are on a ">
<COND (<EQUAL? ,HERE ,NARROW-LEDGE>
<TELL "small">)
(T
<TELL "large">)>
<TELL
" ledge high in the volcano. There is a small opening to the south">
<COND (<AND ,DUSTY-ROOM-COLLAPSED
<EQUAL? ,HERE ,WIDE-LEDGE>>
<TELL " which is blocked by rubble">)>
<TELL ". Imbedded in the rock is a small hook." CR>)>>
<ROOM WIDE-LEDGE
(IN ROOMS)
(DESC "Wide Ledge")
(DOWN "It's a long way down.")
(SOUTH TO DUSTY-ROOM)
(IN TO DUSTY-ROOM)
(FLAGS RLANDBIT NONLANDBIT)
(GLOBAL HOOK)
(ACTION LEDGE-F)>
<ROOM DUSTY-ROOM
(IN ROOMS)
(DESC "Dusty Room")
(NORTH TO WIDE-LEDGE)
(OUT TO WIDE-LEDGE)
(FLAGS RLANDBIT ONBIT)
(ACTION DUSTY-ROOM-F)>
<ROUTINE DUSTY-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You are in a featureless room with an exit on the north side. Imbedded in the
far wall is a rusty box">
<COND (<NOT <FSET? ,SAFE ,OPENBIT>>
<TELL
". An oblong hole has been chipped out of the front of it">)
(T
<TELL " whose door has been blown off">)>
<TELL ,PERIOD-CR>)>>
<OBJECT SAFE
(IN DUSTY-ROOM)
(DESC "box")
(SYNONYM SAFE BOX)
(ADJECTIVE STEEL RUSTY)
(FLAGS CONTBIT NDESCBIT)
(CAPACITY 15)
(ACTION SAFE-F)>
<ROUTINE SAFE-F ()
<COND (<AND <VERB? TAKE>
<EQUAL? ,PRSO ,SAFE>>
<TELL "The box is imbedded in the wall." CR>)
(<AND <VERB? OPEN CLOSE>
<FSET? ,SAFE ,OPENBIT>>
<TELL "The box has no door!" CR>)
(<VERB? OPEN>
<TELL "The box is rusted shut." CR>)
(<VERB? CLOSE>
<TELL "The box isn't open!" CR>)>>
<OBJECT SAFE-HOLE
(IN DUSTY-ROOM)
(DESC "hole")
(SYNONYM SLOT HOLE)
(CAPACITY 10)
(FLAGS OPENBIT NDESCBIT)
(ACTION SAFE-HOLE-F)>
<ROUTINE SAFE-HOLE-F ()
<COND (<VERB? EXAMINE>
<TELL
"The hole was someone's failed attempt to chip their way into the box." CR>)>>
<OBJECT CARD
(IN SAFE)
(DESC "card")
(LDESC "There is a card with writing on it here.")
(SYNONYM CARD NOTE)
(SIZE 1)
(FLAGS READBIT TAKEBIT BURNBIT)
(TEXT
"Warning: This room was constructed near weak rock strata. Detonation
of explosives here is strictly prohibited!")>
<OBJECT CROWN
(IN SAFE)
(DESC "gaudy crown")
(FDESC
"The excessively gaudy crown of Lord Dimwit Flathead sits in the safe.")
(LDESC "Lord Dimwit's crown is here.")
(SYNONYM CROWN TREASURE)
(ADJECTIVE GAUDY)
(SIZE 10)
(VALUE 20)
(FLAGS TAKEBIT)>
\
;"bomb"
<OBJECT BRICK
(IN STONE-BRIDGE)
(DESC "brick")
(LDESC "There is a square brick here which feels like clay.")
(SYNONYM BRICK)
(ADJECTIVE SQUARE CLAY)
(FLAGS TAKEBIT BURNBIT OPENBIT SEARCHBIT)
(CAPACITY 2)
(SIZE 9)
(ACTION BRICK-F)>
<ROUTINE BRICK-F ()
<COND (<VERB? BURN>
<REMOVE ,BRICK>
<JIGS-UP ,OTHER-PROPERTIES>)>>
<OBJECT FUSE
(IN RIDDLE-ROOM)
(DESC "black string")
(LDESC "There is a coil of black, braided string here.")
(SYNONYM FUSE STRING COIL)
(ADJECTIVE BLACK THIN)
(SIZE 1)
(FLAGS TAKEBIT BURNBIT)
(ACTION FUSE-F)>
<ROUTINE FUSE-F ()
<COND (<OR <VERB? BURN>
<AND <VERB? LAMP-ON>
<IN? ,MATCH ,WINNER>
<FSET? ,MATCH ,ONBIT>>>
<TELL "The string starts to burn." CR>
<ENABLE <QUEUE I-FUSE 2>>)>>
<ROUTINE I-FUSE ("AUX" (BRICK-ROOM <LOC ,BRICK>) F)
<COND (<IN? ,FUSE ,BRICK>
<REPEAT ()
<COND (<NOT .BRICK-ROOM>
<RFALSE>)
(<IN? .BRICK-ROOM ,ROOMS>
<RETURN>)
(T
<SET BRICK-ROOM <LOC .BRICK-ROOM>>)>>
<MOVE ,EXPLOSION .BRICK-ROOM>
<FCLEAR .BRICK-ROOM ,TOUCHBIT>
<COND (<EQUAL? .BRICK-ROOM ,HERE>
<JIGS-UP ,OTHER-PROPERTIES>)
(T
<COND (<IN? ,BRICK ,SAFE-HOLE>
<FSET ,SAFE-HOLE ,INVISIBLE>
<FSET ,SAFE ,OPENBIT>
<FCLEAR ,DUSTY-ROOM ,TOUCHBIT>
<ENABLE <QUEUE I-SAFE 5>>)>
<TELL "There is an explosion nearby." CR>
<COND (<SET F <FIRST? .BRICK-ROOM>>
<REPEAT ()
<COND (<FSET? .F ,TAKEBIT>
<FSET .F ,INVISIBLE>)>
<COND (<NOT <SET F <NEXT? .F>>>
<RETURN>)>>)>)>
<REMOVE ,BRICK>)
(<EQUAL? <LOC ,FUSE> ,WINNER ,HERE>
<TELL "The string burns into nothingness." CR>)>
<REMOVE ,FUSE>>
<ROUTINE BOMB? (O)
<COND (<AND <EQUAL? .O ,BRICK>
<IN? ,FUSE ,BRICK>
<NOT <0? <GET <INT I-FUSE> ,C-ENABLED?>>>>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT EXPLOSION
(DESC "debris from an explosion")
(LDESC
"The room is cluttered with debris from an explosion. The walls seem ready
to collapse.")
(SYNONYM KREBF)>
<GLOBAL OTHER-PROPERTIES
"Now you've done it. It seems that the brick is an explosive and you have been
blown to bits.">
<GLOBAL DUSTY-ROOM-COLLAPSED <>>
<ROUTINE I-SAFE ()
<SETG DUSTY-ROOM-COLLAPSED T>
<COND (<EQUAL? ,HERE ,DUSTY-ROOM>
<JIGS-UP
"The room trembles and 5000 tons of rock fall on you.">)
(<NOT ,DEAD>
<TELL
"Probably as a result of that recent explosion, an ominous rumbling
indicates that a nearby room has collapsed." CR>)>>

171
wizard.zabstr Normal file
View file

@ -0,0 +1,171 @@
<OBJECT WIZARD (DESC "Wizard of Frobozz") (LDESC
"The Wizard of Frobozz is here, eyeing you warily.") (SYNONYM WIZARD MAN) (
ADJECTIVE LITTLE FROBOZZ OLD) (FLAGS ACTORBIT CONTBIT OPENBIT) (ACTION WIZARD-F
)>
<DEFINE-ROUTINE WIZARD-F>
<DEFINE-ROUTINE I-WIZARD>
<DEFINE-ROUTINE MAGIC-ACTOR>
<DEFINE-ROUTINE RANDOM-WALK>
<GLOBAL SPELL-HANDLED? <>>
<GLOBAL WAND-ON <>>
<GLOBAL SPELL-USED <>>
<GLOBAL SPELL-VICTIM <>>
<GLOBAL SPELL? <>>
<CONSTANT SPELLS 9>
<CONSTANT S-FEEBLE 1>
<CONSTANT S-FUMBLE 2>
<CONSTANT S-FREEZE 3>
<CONSTANT S-FALL 4>
<CONSTANT S-FERMENT 5>
<CONSTANT S-FLOAT 6>
<CONSTANT S-FIREPROOF 7>
<CONSTANT S-FENCE 8>
<CONSTANT S-FANTASIZE 9>
<GLOBAL SPELL-NAMES <LTABLE "Feeble" "Fumble" "Freeze" "Fall" "Ferment" "Float"
"Fireproof" "Fence" "Fantasize">>
<GLOBAL SPELL-HINTS <LTABLE "All at once you feel very tired." <>
"Your limbs suddenly feel like stone. You can't move a muscle." <>
"You begin to feel lightheaded." <> <> <> <>>>
<GLOBAL SPELL-STOPS <LTABLE "You feel more energetic now." <>
"Your little finger begins to twitch, and then your whole body is free
again." <> "Your head is clearer now." "You sink quietly down again." <> <> <>>
>
<GLOBAL FANTASIES <LTABLE "pile of jewels" "gold ingot" "basilisk"
"bulging chest" "yellow sphere" "grue" "convention of wizards" "copy of ZORK I"
>>
<OBJECT WAND (IN WIZARD) (DESC "magic wand") (SYNONYM WAND) (ADJECTIVE MAGIC) (
VALUE 30) (FLAGS NDESCBIT TAKEBIT TRYTAKEBIT) (ACTION WAND-F)>
<DEFINE-ROUTINE WAND-F>
<GLOBAL WAND-ON-LOC <>>
<DEFINE-ROUTINE I-WAND>
<ROOM GUARDED-ROOM (IN ROOMS) (DESC "Guarded Room") (NORTH TO ICE-ROOM) (SOUTH
TO TROPHY-ROOM IF WIZ-DOOR IS OPEN) (IN TO TROPHY-ROOM IF WIZ-DOOR IS OPEN) (
FLAGS RLANDBIT) (GLOBAL WIZ-DOOR) (ACTION GUARDED-ROOM-F)>
<DEFINE-ROUTINE GUARDED-ROOM-F>
<OBJECT WIZ-DOOR (IN LOCAL-GLOBALS) (DESC "door") (SYNONYM DOOR) (ADJECTIVE
BATTERED) (FLAGS DOORBIT CONTBIT) (ACTION WIZ-DOOR-F)>
<DEFINE-ROUTINE WIZ-DOOR-F>
<GLOBAL WIZ-DOOR-FLAG <>>
<GLOBAL GUARDIAN-FED <>>
<OBJECT DOOR-KEEPER (IN GUARDED-ROOM) (DESC "lizard") (SYNONYM GUARDIAN LIZARD
HEAD) (ADJECTIVE NASTY) (FLAGS NDESCBIT) (ACTION DOOR-KEEPER-F)>
<DEFINE-ROUTINE DOOR-KEEPER-F>
<ROOM TROPHY-ROOM (IN ROOMS) (DESC "Trophy Room") (FLAGS RLANDBIT) (NORTH TO
GUARDED-ROOM IF WIZ-DOOR IS OPEN) (OUT TO GUARDED-ROOM IF WIZ-DOOR IS OPEN) (
WEST TO AQUARIUM-ROOM) (EAST TO WIZARDS-WORKSHOP) (VALUE 10) (GLOBAL WIZ-DOOR)
(PSEUDO "OWL" TROPHY-PSEUDO) (ACTION TROPHY-ROOM-F)>
<DEFINE-ROUTINE TROPHY-ROOM-F>
<DEFINE-ROUTINE TROPHY-PSEUDO>
<OBJECT DEGREE (IN TROPHY-ROOM) (DESC "degree") (SYNONYM DEGREE DIPLOMA) (FLAGS
NDESCBIT TRYTAKEBIT READBIT) (TEXT "The text is in an obscure tongue.") (ACTION
TROPHY-PSEUDO)>
<OBJECT WANDS (IN TROPHY-ROOM) (DESC "set of used wands") (SYNONYM WANDS WAND
RACK SET) (ADJECTIVE WORN USED) (FLAGS NDESCBIT TRYTAKEBIT) (ACTION
TROPHY-PSEUDO)>
<ROOM WIZARDS-WORKSHOP (IN ROOMS) (DESC "Wizard's Workshop") (LDESC
"Halls lead west and south. The Wizard's workbench dominates the room. It is
stained from years of use, and is deeply gouged as though some huge clawed
animal was imprisoned on it. In the center of the bench, three stands - ruby,
sapphire, and diamond - form a triangle.") (WEST TO TROPHY-ROOM) (SOUTH TO
PENTAGRAM-ROOM) (FLAGS RLANDBIT ONBIT)>
<OBJECT WORKBENCH (IN WIZARDS-WORKSHOP) (DESC "Wizard's workbench") (SYNONYM
WORKBENCH BENCH TABLE) (ADJECTIVE WORK WIZARD) (CAPACITY 200) (FLAGS NDESCBIT
SURFACEBIT CONTBIT OPENBIT)>
<OBJECT STAND-1 (IN WORKBENCH) (DESC "ruby stand") (SYNONYM STAND STANDS) (
ADJECTIVE CRYSTAL RUBY) (FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT) (CAPACITY
10) (ACTION STAND-F)>
<OBJECT STAND-2 (IN WORKBENCH) (DESC "sapphire stand") (SYNONYM STAND STANDS) (
ADJECTIVE CRYSTAL SAPPHIRE) (FLAGS NDESCBIT SURFACEBIT OPENBIT CONTBIT) (
CAPACITY 10) (ACTION STAND-F)>
<OBJECT STAND-3 (IN WORKBENCH) (DESC "diamond stand") (SYNONYM STAND STANDS) (
ADJECTIVE DIAMOND CRYSTAL) (FLAGS NDESCBIT SURFACEBIT OPENBIT CONTBIT) (
CAPACITY 10) (ACTION STAND-F)>
<OBJECT STAND-4 (DESC "black obsidian stand") (SYNONYM STAND STANDS) (ADJECTIVE
OBSIDIAN BLACK CRYSTAL STRANGE) (FLAGS SURFACEBIT CONTBIT OPENBIT) (SIZE 5) (
CAPACITY 10) (ACTION STAND-F)>
<DEFINE-ROUTINE STAND-F>
<OBJECT PALANTIR-4 (IN STAND-4) (DESC "black crystal sphere") (LDESC
"There is a strange black sphere here.") (SYNONYM SPHERE) (ADJECTIVE CRYSTAL
STRANGE BLACK) (FLAGS TAKEBIT TRANSBIT) (VALUE 30) (SIZE 10) (ACTION SPHERE-F)>
<ROOM PENTAGRAM-ROOM (IN ROOMS) (DESC "Pentagram Room") (LDESC
"Inscribed on the floor is a great pentagram drawn with black chalk.
In its center is a black circle.") (NORTH TO WIZARDS-WORKSHOP) (FLAGS RLANDBIT
ONBIT) (GLOBAL GLOBAL-MENHIR GLOBAL-CERBERUS)>
<OBJECT PENTAGRAM (IN PENTAGRAM-ROOM) (DESC "pentagram") (SYNONYM PENTAGRAM
STAR CIRCLE) (ADJECTIVE GREAT BLACK) (FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT
) (CAPACITY 200) (ACTION PENTAGRAM-F)>
<DEFINE-ROUTINE PENTAGRAM-F>
<OBJECT DEMON (SYNONYM DEVIL DEMON GENIE) (DESC "demon") (LDESC
"There is a demon floating in midair here.") (FLAGS ACTORBIT INVISIBLE) (ACTION
DEMON-F)>
<DEFINE-ROUTINE DEMON-F>
<DEFINE-ROUTINE DEMON-LEAVES>
<GLOBAL DEMON-PAID <>>
<GLOBAL DEMON-HOARD 0>
<CONSTANT TREASURES-MAX 10>
<GLOBAL DEMON-THANKS <LTABLE
"Most fine, master! But 'tis not enough. I will do a great service,
and are not great services bought at great price?" "Very nice, but not enough!"
"Ah, truly magnificent! Keep them coming."
"Almost halfway there, oh worthy one!" "Your generosity overwhelms me!"
"Very nice, but not enough!" "Ah, truly magnificent! Keep them coming."
"Your generosity overwhelms me!"
"Wondrous fine, master! But one treasure is yet to be given!">>
<ROOM AQUARIUM-ROOM (IN ROOMS) (DESC "Aquarium Room") (LDESC
"Here a dark hallway turns a corner. To the south is a dark room, to
the east is fitful light.") (EAST TO TROPHY-ROOM) (IN TO MURKY-ROOM) (SOUTH TO
WIZARDS-QUARTERS) (FLAGS RLANDBIT ONBIT)>
<OBJECT AQUARIUM (IN AQUARIUM-ROOM) (DESC "aquarium") (LDESC
"Filling the northern half of the room is a huge aquarium.") (SYNONYM AQUARIUM
GLASS) (ADJECTIVE HUGE) (FLAGS OPENBIT CONTBIT) (CAPACITY 200) (ACTION
AQUARIUM-F)>
<DEFINE-ROUTINE AQUARIUM-F>
<OBJECT SERPENT (IN AQUARIUM) (DESC "baby sea serpent") (LDESC
"There is a baby sea serpent swimming in the aquarium.") (SYNONYM SERPENT SNAKE
) (ADJECTIVE BABY SEA) (FLAGS ACTORBIT) (ACTION SERPENT-F)>
<DEFINE-ROUTINE SERPENT-F>
<OBJECT DEAD-SERPENT (DESC "dead sea serpent") (SYNONYM SERPENT SNAKE) (
ADJECTIVE DEAD BABY SEA) (FLAGS TAKEBIT) (SIZE 400) (ACTION DEAD-SERPENT-F)>
<DEFINE-ROUTINE DEAD-SERPENT-F>
<ROOM MURKY-ROOM (IN ROOMS) (DESC "Murky Room") (OUT TO AQUARIUM-ROOM) (FLAGS
RLANDBIT ONBIT) (ACTION MURKY-ROOM-F)>
<DEFINE-ROUTINE MURKY-ROOM-F>
<ROOM WIZARDS-QUARTERS (IN ROOMS) (DESC "Wizard's Quarters") (NORTH TO
AQUARIUM-ROOM) (FLAGS RLANDBIT) (ACTION WIZARD-QUARTERS-F)>
<DEFINE-ROUTINE WIZARD-QUARTERS-F>
<GLOBAL WIZQDESCS <LTABLE "almost monkish in its austerity"
"an opulently furnished seraglio out of an Arabian folktale"
"decorated in the Louis XIV style"
"overhung with palm-trees and lianas. The only furniture is a hammock"
"a suburban bedroom out of the 1950's, complete with bunk beds"
"a dim cave, its floor piled with furs and old bones">>
<OBJECT PALANTIR-1 (IN DINGY-CLOSET) (DESC "red crystal sphere") (SYNONYM
SPHERE) (ADJECTIVE CRYSTAL RED) (SIZE 10) (VALUE 20) (FLAGS TAKEBIT TRANSBIT
TRYTAKEBIT) (ACTION SPHERE-F)>
<OBJECT PALANTIR-2 (IN DREARY-ROOM) (DESC "blue crystal sphere") (FDESC
"On the table sits a blue crystal sphere.") (SYNONYM SPHERE) (ADJECTIVE CRYSTAL
BLUE) (VALUE 20) (FLAGS TAKEBIT TRANSBIT) (ACTION SPHERE-F)>
<OBJECT PALANTIR-3 (IN MURKY-ROOM) (DESC "clear crystal sphere") (FDESC
"There is a clear crystal sphere lying in the sand.") (SYNONYM SPHERE) (
ADJECTIVE CRYSTAL WHITE CLEAR) (FLAGS TAKEBIT NDESCBIT TRANSBIT) (VALUE 20) (
ACTION SPHERE-F)>
<DEFINE-ROUTINE SPHERE-F>
<DEFINE-ROUTINE PALANTIR-LOOK>
<DEFINE-ROUTINE GO&LOOK>
<ROOM DEAD-PALANTIR-1 (IN ROOMS) (DESC "Room of Red Mist") (WEST TO
DEAD-PALANTIR-2) (FLAGS RLANDBIT ONBIT) (GLOBAL GLOBAL-PALANTIR) (ACTION
DEAD-PALANTIR-F)>
<ROOM DEAD-PALANTIR-2 (IN ROOMS) (DESC "Room of Blue Mist") (WEST TO
DEAD-PALANTIR-3) (FLAGS RLANDBIT ONBIT) (GLOBAL GLOBAL-PALANTIR) (ACTION
DEAD-PALANTIR-F)>
<ROOM DEAD-PALANTIR-3 (IN ROOMS) (DESC "Room of White Mist") (WEST TO
DEAD-PALANTIR-4) (FLAGS RLANDBIT ONBIT) (GLOBAL GLOBAL-PALANTIR) (ACTION
DEAD-PALANTIR-F)>
<ROOM DEAD-PALANTIR-4 (IN ROOMS) (DESC "Room of Black Mist") (FLAGS RLANDBIT
ONBIT) (ACTION DEAD-PALANTIR-F)>
<DEFINE-ROUTINE DEAD-PALANTIR-F>
<OBJECT GLOBAL-PALANTIR (IN LOCAL-GLOBALS) (DESC "sphere") (SYNONYM SPHERE) (
ADJECTIVE RED BLUE WHITE CRYSTAL) (FLAGS NDESCBIT) (ACTION GLOBAL-PALANTIR-F)>
<DEFINE-ROUTINE GLOBAL-PALANTIR-F>

870
wizard.zap Normal file
View file

@ -0,0 +1,870 @@
.FUNCT WIZARD-F,RARG=M-OBJECT
EQUAL? WINNER,WIZARD /?PRG6
CALL HELLO?,WIZARD
ZERO? STACK /?CCL3
?PRG6: PRINTR "The Wizard seems surprised, much as you might be if a dog talked."
?CCL3: EQUAL? PRSA,V?GIVE \?CCL9
EQUAL? PRSI,WIZARD \?CCL9
CALL REMOVE-CAREFULLY,PRSO
CALL BOMB?,PRSO
ZERO? STACK /?PRG22
IN? DEMON,PENTAGRAM-ROOM \?CCL17
MOVE PRSO,HERE
PRINTR "The wizard accepts this final folly resignedly."
?CCL17: REMOVE WIZARD
PRINT WAVES-WAND
PRINTR "and says, ""Flower!"" Indeed, the bomb becomes a lovely bouquet. Both Wizard and flowers disappear."
?PRG22: PRINTI "He places the "
PRINTD PRSO
PRINTI " under his robe."
CRLF
CALL NOW-DARK?
RSTACK
?CCL9: EQUAL? PRSA,V?MUNG,V?ATTACK \FALSE
REMOVE WIZARD
IN? WAND,WIZARD \?CND26
PRINT WAVES-WAND
PRINTI "and chants, ""Freeze!"""
?CND26: FSET? DEMON,INVISIBLE /?CCL32
PRINTR " Nothing happens! Terrified, the wizard dashes from the room."
?CCL32: SET 'SPELL?,S-FREEZE
PUTP ADVENTURER,P?ACTION,MAGIC-ACTOR
CALL QUEUE,I-WIZARD,10
PUT STACK,0,1
PRINTR " You suddenly cannot move."
.FUNCT I-WIZARD,CAST-PROB,PCNT=0,F,WLOC
LOC WINNER >WLOC
CALL QUEUE,I-WIZARD,4
PUT STACK,0,1
ZERO? DEAD \FALSE
ZERO? SPELL? /?CND1
EQUAL? SPELL?,S-FLOAT \?CCL7
EQUAL? HERE,TOP-OF-WELL \?CCL10
CALL JIGS-UP,STR?52
RTRUE
?CCL10: FSET? HERE,NONLANDBIT \?CND5
EQUAL? HERE,CIRCULAR-ROOM,VOLCANO-BOTTOM /?CND5
CALL JIGS-UP,STR?53
RTRUE
?CCL7: EQUAL? SPELL?,S-FEEBLE \?CCL15
SET 'LOAD-ALLOWED,100
JUMP ?CND5
?CCL15: EQUAL? SPELL?,S-FUMBLE \?CND5
SET 'FUMBLE-NUMBER,7
SET 'FUMBLE-PROB,8
?CND5: GET SPELL-STOPS,SPELL?
ZERO? STACK /?CND17
GET SPELL-STOPS,SPELL?
PRINT STACK
CRLF
?CND17: PUTP ADVENTURER,P?ACTION,0
SET 'SPELL?,FALSE-VALUE
RTRUE
?CND1: IN? DEMON,PENTAGRAM-ROOM \?CND21
CALL INT,I-WIZARD
PUT STACK,0,0
IN? WIZARD,PENTAGRAM-ROOM /TRUE
MOVE WIZARD,PENTAGRAM-ROOM
IN? WINNER,PENTAGRAM-ROOM \TRUE
PRINTR "The Wizard appears, astonished to see his servant conversing with a common adventurer! He waves his wand frantically. ""Frobizz! Frobozzle! Frobnoid!"" The demon guffaws. ""You no longer control the Black Crystal, hedge-wizard! Your wand is powerless! Your doom is sealed!"" The demon turns to you, expectantly."
?CND21: ZERO? LIT \?CND29
ZERO? LAMP-BURNED-OUT /?CND29
GRTR? SCORE,200 \?CND29
SET 'ALWAYS-LIT,TRUE-VALUE
SET 'LIT,TRUE-VALUE
PRINTR "You hear the Wizard. ""Dear me, you're in a Fix."" Chuckling, he incants, ""Fluoresce!"" It is no longer dark."
?CND29: LOC WIZARD
ZERO? STACK /?CND36
RANDOM 100
GRTR? 80,STACK \?CND36
ZERO? LIT /?CND40
IN? WIZARD,HERE \?CND40
PRINTI "The Wizard vanishes."
CRLF
?CND40: REMOVE WIZARD
RTRUE
?CND36: RANDOM 100
GRTR? 10,STACK \FALSE
EQUAL? HERE,POSTS-ROOM,POOL-ROOM /FALSE
ZERO? LIT \?CCL53
PRINT MOVED-IN-DARK
JUMP ?CND51
?CCL53: FSET? HERE,NONLANDBIT \?PRG60
PRINTI "The Wizard appears, floating nonchalantly in the air beside you."
CRLF
JUMP ?CND51
?PRG60: PRINTI "An old, robed man appears suddenly. He is wearing a pointed hat with astrological signs, and has a long, unkempt beard."
CRLF
?CND51: IN? PALANTIR-4,ADVENTURER \?CCL64
REMOVE WIZARD
ZERO? LIT /?PRG70
PRINTR "The Wizard notices the Black Crystal, and hastily vanishes."
?PRG70: PRINT MOVED-IN-DARK
RTRUE
?CCL64: RANDOM 100
GRTR? 20,STACK \?CND62
REMOVE WIZARD
ZERO? LIT /?PRG78
PRINTR "He mutters something (muffled by his beard) and disappears as suddenly as he came."
?PRG78: PRINTR "You hear low, confused muttering."
?CND62: IN? PALANTIR-1,ADVENTURER \?CND80
INC 'PCNT
?CND80: IN? PALANTIR-2,ADVENTURER \?CND82
INC 'PCNT
?CND82: IN? PALANTIR-3,ADVENTURER \?CND84
INC 'PCNT
?CND84: MUL PCNT,20
SUB 80,STACK >CAST-PROB
ZERO? LIT /?PRG91
PRINTI "The Wizard draws forth his wand and waves it in your direction. It begins to glow with a faint blue glow."
CRLF
JUMP ?CND86
?PRG91: PRINTI "You spot the Wizard, illuminated by the faint blue glow of a magic wand, pointed at you!"
CRLF
?CND86: RANDOM 100
GRTR? CAST-PROB,STACK \?CCL95
MOVE WIZARD,HERE
RANDOM SPELLS >SPELL?
PUTP ADVENTURER,P?ACTION,MAGIC-ACTOR
MUL 5,PCNT
SUB 30,STACK
RANDOM STACK
ADD 5,STACK
CALL QUEUE,I-WIZARD,STACK
PUT STACK,0,1
RANDOM 100
GRTR? 75,STACK \?PRG101
PRINTI "The Wizard, in a deep and resonant voice, speaks the word """
GET SPELL-NAMES,SPELL?
PRINT STACK
PRINTI "!"" He then vanishes, cackling gleefully."
CRLF
JUMP ?CND96
?PRG101: PRINTI "The Wizard whispers a word beginning with ""F,"" and disappears."
CRLF
?CND96: REMOVE WIZARD
GET SPELL-HINTS,SPELL?
ZERO? STACK /?CND103
GET SPELL-HINTS,SPELL?
PRINT STACK
CRLF
?CND103: EQUAL? SPELL?,S-FALL \?CCL109
FSET? WLOC,VEHBIT \TRUE
PRINTI "You suddenly fall out of the "
PRINTD WLOC
PRINT INVISIBLE-HAND
EQUAL? HERE,TOP-OF-WELL \?CCL116
CALL JIGS-UP,STR?52
RTRUE
?CCL116: FSET? HERE,NONLANDBIT \?CCL118
EQUAL? HERE,VOLCANO-BOTTOM,CIRCULAR-ROOM /?CCL118
CALL JIGS-UP,STR?53
RTRUE
?CCL118: MOVE WINNER,HERE
RTRUE
?CCL109: EQUAL? SPELL?,S-FLOAT \?CCL122
PRINTI "You slowly rise into the air"
FSET? WLOC,VEHBIT \?PRG129
MOVE WINNER,HERE
PRINTI ", leaving the "
PRINTD WLOC
?PRG129: PRINTR ", stopping about five feet up."
?CCL122: EQUAL? SPELL?,S-FEEBLE \?CCL132
SET 'LOAD-ALLOWED,50
FIRST? WINNER >F \TRUE
PRINTI "You feel so weak, you drop the "
PRINTD F
PRINT PERIOD-CR
MOVE F,WLOC
RTRUE
?CCL132: EQUAL? SPELL?,S-FUMBLE \TRUE
SET 'FUMBLE-NUMBER,3
SET 'FUMBLE-PROB,25
FIRST? ADVENTURER >F \TRUE
PRINTI "Oops! You dropped the "
PRINTD F
PRINT PERIOD-CR
MOVE F,WLOC
RTRUE
?CCL95: RANDOM 100
GRTR? 50,STACK \?CCL143
REMOVE WIZARD
PRINTR "There is a crackling noise. Blue smoke curls from the Wizard's sleeve. He sighs and disappears."
?CCL143: RANDOM 100
GRTR? 50,STACK \?CCL147
REMOVE WIZARD
PRINTI "The Wizard incants """
CALL RANDOM-ELEMENT,SPELL-NAMES
PRINT STACK
PRINTR "!"" but nothing happens. With an embarrassed glance in your direction, he vanishes."
?CCL147: MOVE WIZARD,HERE
PRINTR "The Wizard seems about to say something, but thinks better of it, and peers at you from under his bushy eyebrows."
.FUNCT MAGIC-ACTOR,V
ZERO? SPELL? /FALSE
EQUAL? SPELL?,S-FALL \?CCL6
EQUAL? PRSA,V?CLIMB-DOWN,V?CLIMB /?CTR8
EQUAL? PRSA,V?WALK \?CCL9
GETPT HERE,P?DOWN
ZERO? STACK /?CCL9
?CTR8: GETPT HERE,P?GLOBAL >V
PTSIZE V
CALL ZMEMQB,BRIDGE,V,STACK
ZERO? STACK /?PRG17
CALL JIGS-UP,STR?54
RSTACK
?PRG17: PRINTI "You trip on your own feet, "
RANDOM 100
GRTR? 25,STACK \?PRG22
CALL JIGS-UP,STR?55
RSTACK
?PRG22: PRINTR "but regain your balance and avoid a fatal fall."
?CCL9: EQUAL? PRSA,V?ENTER \FALSE
PRINTI "You get in the "
PRINTD PRSO
PRINTI " but you fall out again"
PRINT INVISIBLE-HAND
RTRUE
?CCL6: EQUAL? SPELL?,S-FLOAT \?CCL29
EQUAL? PRSA,V?WAIT,V?DIAGNOSE /FALSE
EQUAL? PRSA,V?WALK \?CCL34
PRINTR "Your feet are nowhere near the ground."
?CCL34: EQUAL? PRSA,V?DROP \?CCL38
MOVE PRSO,HERE
PRINTI "The "
PRINTD PRSO
PRINTR " drops to the ground."
?CCL38: EQUAL? PRSA,V?TAKE \FALSE
IN? PRSO,HERE \FALSE
PRINTR "You're floating and can't reach it."
?CCL29: EQUAL? SPELL?,S-FREEZE \?CCL48
EQUAL? PRSA,V?WAIT,V?DIAGNOSE /FALSE
PRINTR "You are frozen solid. You might as well wait it out, because you can't do anything else in this state."
?CCL48: EQUAL? SPELL?,S-FENCE \?CCL55
EQUAL? PRSA,V?WALK \?CCL55
PRINTR "An invisible force bars your way."
?CCL55: EQUAL? SPELL?,S-FERMENT \FALSE
EQUAL? PRSA,V?WALK \FALSE
IN? WINNER,HERE \FALSE
PRINTI "Oops, you seem a little unsteady... I'm not sure you got where you intended going."
CRLF
CRLF
CALL RANDOM-WALK
RSTACK
.FUNCT RANDOM-WALK,P,TX,L,S,D=0
SET 'P,0
?PRG1: NEXTP HERE,P >P
LESS? P,LOW-DIRECTION \?CCL5
ZERO? D /TRUE
SET 'S,SPELL?
SET 'SPELL?,FALSE-VALUE
SET 'WINNER,ADVENTURER
MOVE WINNER,HERE
CALL DO-WALK,D
SET 'SPELL?,S
RTRUE
?CCL5: GETPT HERE,P >TX
PTSIZE TX >L
EQUAL? L,UEXIT /?CCL9
EQUAL? L,CEXIT \?PRD12
GETB TX,CEXITFLAG
VALUE STACK
ZERO? STACK \?CCL9
?PRD12: EQUAL? L,DEXIT \?PRG1
GETB TX,DEXITOBJ
FSET? STACK,OPENBIT \?PRG1
?CCL9: ZERO? D \?CCL19
SET 'D,P
JUMP ?PRG1
?CCL19: RANDOM 100
GRTR? 50,STACK \?PRG1
SET 'D,P
JUMP ?PRG1
.FUNCT WAND-F
EQUAL? PRSA,V?GIVE,V?PUT,V?TAKE \?CCL3
IN? WAND,WIZARD \?CCL3
PRINTR "The Wizard snatches it away."
?CCL3: EQUAL? PRSA,V?WAVE \?CCL9
EQUAL? PRSI,GRUE \?CCL9
PRINTR "A gurgling hiss issues from the darkness."
?CCL9: EQUAL? PRSA,V?RAISE,V?RUB,V?WAVE \FALSE
EQUAL? PRSO,WAND \?CCL18
IN? WAND,WINNER /?CCL18
PRINTR "You don't have the wand!"
?CCL18: ZERO? WAND-ON \?PRG28
ZERO? SPELL-USED \?PRG28
ZERO? SPELL-VICTIM /?CCL24
?PRG28: PRINTR "A magic wand must recharge after use!"
?CCL24: EQUAL? PRSA,V?WAVE \?CCL31
EQUAL? PRSO,WAND \?PRG37
ZERO? PRSI /?PRG37
SET 'WAND-ON,PRSI
SET 'WAND-ON-LOC,HERE
JUMP ?CND16
?PRG37: PRINTR "At what?"
?CCL31: EQUAL? PRSA,V?RUB \?CCL40
EQUAL? PRSI,WAND \?PRG44
SET 'WAND-ON,PRSO
?CND16: ZERO? WAND-ON /TRUE
SET 'SPELL-USED,FALSE-VALUE
SET 'SPELL-VICTIM,FALSE-VALUE
EQUAL? WAND-ON,ME,WAND \?PRG56
SET 'WAND-ON,FALSE-VALUE
PRINTI "A safety interlock prevents this."
CRLF
JUMP ?CND51
?PRG44: PRINTR "Touch what?"
?CCL40: EQUAL? PRSA,V?RAISE \?CND16
PRINTR "The wand grows warm and seems to vibrate."
?PRG56: PRINTI "The wand grows warm, the "
PRINTD WAND-ON
PRINTI " glows with magical essences, and you feel suffused with power."
CRLF
?CND51: CALL QUEUE,I-WAND,2
PUT STACK,0,1
RTRUE
.FUNCT I-WAND
ZERO? WAND-ON /?CCL3
EQUAL? WAND-ON-LOC,HERE /?CTR2
IN? WAND-ON,WINNER \?CCL3
?CTR2: SET 'WAND-ON,FALSE-VALUE
PRINTI "The "
PRINTD WAND-ON
PRINTR " stops glowing and the power within you weakens."
?CCL3: SET 'WAND-ON,FALSE-VALUE
RFALSE
.FUNCT GUARDED-ROOM-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "This room is cobwebby and musty, but tracks in the dust indicate recent visitors. To the south is a"
FSET? WIZ-DOOR,OPENBIT \?PRG11
PRINTI "n open"
JUMP ?PRG13
?PRG11: PRINTI "battered (but very strong-looking)"
?PRG13: PRINTI " door. Mounted on the door is a "
ZERO? GUARDIAN-FED \?PRG20
PRINTI "nast"
JUMP ?PRG22
?PRG20: PRINTI "sleep"
?PRG22: PRINTI "y-looking lizard head, with sharp teeth and beady eyes. "
IN? CANDY,WINNER \?CCL26
PRINTI "The lizard is sniffing at you. "
JUMP ?PRG32
?CCL26: ZERO? GUARDIAN-FED \?PRG32
PRINTI "The eyes follow your approach. "
?PRG32: PRINTR "To the north and northeast, corridors exit."
.FUNCT WIZ-DOOR-F
ZERO? GUARDIAN-FED \?CCL3
EQUAL? PRSA,V?UNLOCK,V?OPEN \?CCL3
PRINTR "The lizard snaps at you as you reach for the door."
?CCL3: EQUAL? PRSA,V?UNLOCK \?CCL9
ZERO? WIZ-DOOR-FLAG /?CCL12
PRINT ALREADY
RTRUE
?CCL12: EQUAL? PRSI,GOLD-KEY \?PRG19
SET 'WIZ-DOOR-FLAG,TRUE-VALUE
PRINTR "The door is unlocked."
?PRG19: PRINT DOESNT-FIT-LOCK
RTRUE
?CCL9: EQUAL? PRSA,V?LOCK \?CCL22
ZERO? WIZ-DOOR-FLAG \?CCL25
PRINT ALREADY
RTRUE
?CCL25: EQUAL? PRSI,GOLD-KEY \?PRG32
SET 'WIZ-DOOR-FLAG,FALSE-VALUE
PRINTR "The door is now locked."
?PRG32: PRINT DOESNT-FIT-LOCK
RTRUE
?CCL22: EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE
ZERO? WIZ-DOOR-FLAG /?CCL38
CALL OPEN-CLOSE
RSTACK
?CCL38: EQUAL? PRSA,V?OPEN \FALSE
PRINTR "The door is locked!"
.FUNCT DOOR-KEEPER-F
EQUAL? PRSA,V?ALARM \?CCL3
ZERO? GUARDIAN-FED /?CCL3
PRINTR "You can't wake it."
?CCL3: EQUAL? PRSA,V?GIVE \?CCL9
EQUAL? PRSI,DOOR-KEEPER \?CCL9
ZERO? GUARDIAN-FED /?CCL14
PRINTR "You can't wake it."
?CCL14: EQUAL? PRSO,CANDY \?CCL18
SET 'GUARDIAN-FED,TRUE-VALUE
REMOVE CANDY
PRINT GREEDILY-DEVOURS
PRINTR "the candy, package and all, and then its eyes close. (Lizards are known to sleep a long time while digesting meals.)"
?CCL18: CALL BOMB?,PRSO
ZERO? STACK /?CCL22
REMOVE PRSO
PRINT GREEDILY-DEVOURS
PRINTR "it. After a while, you hear a pop and the guardian's eyes bulge out. It hisses angrily."
?CCL22: EQUAL? PRSO,PALANTIR-1,PALANTIR-2,PALANTIR-3 \?CCL26
MOVE PRSO,HERE
PRINT GREEDILY-DEVOURS
PRINTR "the sphere but then spits it out."
?CCL26: REMOVE PRSO
PRINT GREEDILY-DEVOURS
PRINTI "the "
PRINTD PRSO
PRINT PERIOD-CR
RTRUE
?CCL9: EQUAL? PRSA,V?MUNG,V?ATTACK \FALSE
PRINTR "The guardian seems impervious."
.FUNCT TROPHY-ROOM-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "The Wizard's trophy room is filled with various memorabilia. On one wall is the Wizard's D. T. (Doctor of Thaumaturgy) degree from GUE Tech. Several old magic wands are mounted on a wand rack. There is a stuffed owl on a perch. Corridors lead east and west; a door to the north is "
FSET? WIZ-DOOR,OPENBIT \?PRG11
PRINTI "open"
JUMP ?PRG13
?PRG11: PRINTI "closed"
?PRG13: PRINT PERIOD-CR
RTRUE
.FUNCT TROPHY-PSEUDO
EQUAL? PRSA,V?RUB,V?TAKE \FALSE
PRINTR "As you near it, you get a nasty (but fortunately unfatal) shock."
.FUNCT STAND-F
EQUAL? PRSA,V?TAKE \?CCL3
PRINTI "The "
PRINTD PRSO
PRINTR " is firmly attached to the bench."
?CCL3: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE
EQUAL? PRSO,PALANTIR-1,PALANTIR-2,PALANTIR-3 \FALSE
EQUAL? PRSI,STAND-1,STAND-2,STAND-3 \FALSE
CALL V-PUT
IN? PALANTIR-1,STAND-1 \TRUE
IN? PALANTIR-2,STAND-2 \TRUE
IN? PALANTIR-3,STAND-3 \TRUE
REMOVE PALANTIR-1
REMOVE PALANTIR-2
REMOVE PALANTIR-3
MOVE STAND-4,WORKBENCH
PRINTR "Instantly, a hum begins, and the hairs on the back of your neck stand up. Suddenly, the spheres are gone! But amidst the three empty stands, there is now a black stand of obsidian in which rests a strange black sphere."
.FUNCT PENTAGRAM-F,RARG=M-BEG
EQUAL? RARG,M-BEG \FALSE
EQUAL? PRSA,V?ENTER \?CCL6
PRINTR "You are forced back by an invisible power."
?CCL6: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE
EQUAL? PRSO,PALANTIR-4 \FALSE
REMOVE PALANTIR-4
FCLEAR DEMON,INVISIBLE
MOVE DEMON,PENTAGRAM-ROOM
PRINTR "A chill wind blasts from the pentagram as a dim shape appears and resolves into a formidable-looking demon. He tests the walls of the pentagram experimentally, then sees you! ""Greetings, oh new master! Wouldst desire a service? For a pittance of wealth, I will gratify thy desires to the utmost limit of my powers!"" He grins vilely."
.FUNCT DEMON-F,RARG=M-OBJECT,V
EQUAL? PRSA,V?HELLO \?CCL3
PRINTR "The genie grins demonically."
?CCL3: EQUAL? WINNER,DEMON \?CCL7
ZERO? DEMON-PAID \?CCL10
PRINTI """My fee is not paid! I perform no tasks for free! We demons have a strong union these days."""
CRLF
RETURN 2
?CCL10: EQUAL? PRSA,V?SGIVE /FALSE
GET P-PRSO,0
GRTR? STACK,1 /?PRG21
GET P-PRSI,0
GRTR? STACK,1 \?CCL18
?PRG21: PRINTI """I will do one thing only, master!"""
CRLF
RETURN 2
?CCL18: EQUAL? PRSA,V?MOVE \?CCL26
EQUAL? PRSO,GLOBAL-MENHIR \?CCL26
SET 'MENHIR-POSITION,1
PRINT DEMON-GONE
PRINTI """A trifle... My little finger alone was enough."""
CRLF
CALL DEMON-LEAVES
RSTACK
?CCL26: EQUAL? PRSA,V?TAKE \?CCL32
EQUAL? PRSO,GLOBAL-MENHIR \?CCL35
REMOVE MENHIR
SET 'MENHIR-POSITION,2
PRINT DEMON-GONE
PRINTI """Perhaps I can use it as a toothpick..."""
CRLF
CALL DEMON-LEAVES
RSTACK
?CCL35: EQUAL? PRSO,WAND \?CCL39
REMOVE WAND
PRINTI """Gladly, oh fool!"" Cackling, the demon snatches the wand and points it at himself. ""Free!"" he commands, as the demon and wand vanish forever."
CRLF
CALL DEMON-LEAVES,FALSE-VALUE
RSTACK
?CCL39: FSET? PRSO,TAKEBIT \?PRG46
CALL DEMON-LEAVES,FALSE-VALUE
REMOVE PRSO
PRINTI "The demon snaps his fingers; the "
PRINTD PRSO
PRINTR " and he both depart."
?PRG46: PRINTR """I fear that I cannot take that."""
?CCL32: EQUAL? PRSA,V?GIVE \?CCL49
EQUAL? PRSI,ME \?CCL49
EQUAL? PRSO,WAND \?CCL54
REMOVE WIZARD
CALL DEMON-LEAVES,FALSE-VALUE
FCLEAR WAND,NDESCBIT
MOVE WAND,HERE
PRINTR """I hear and obey!"" says the demon. The Wizard cries ""Fudge!"" but aside from a strong odor of chocolate, there is no effect. The demon plucks the wand out of his hand and lays it before you. He vanishes as the wizard runs from the room in terror."
?CCL54: EQUAL? PRSO,GLOBAL-MENHIR \?CCL58
MOVE MENHIR,PENTAGRAM-ROOM
FCLEAR MENHIR,NDESCBIT
FCLEAR MENHIR,TAKEBIT
SET 'MENHIR-POSITION,3
PRINTI "He gestures, and the menhir appears at your feet."
CRLF
CALL DEMON-LEAVES
RSTACK
?CCL58: FSET? PRSO,TAKEBIT \?PRG65
MOVE PRSO,PENTAGRAM-ROOM
PRINTI "The "
PRINTD PRSO
PRINTI " appears before you and settles to the ground."
CRLF
CALL DEMON-LEAVES
RSTACK
?PRG65: PRINTR """If only it were possible..."""
?CCL49: EQUAL? PRSA,V?ATTACK \?CCL68
EQUAL? PRSO,GLOBAL-CERBERUS \?CCL71
PRINTI """This may prove taxing..."" "
PRINT DEMON-GONE
PRINTR "He looks rather gnawed and scratched. He winces. ""Never did like dogs anyway... Any other orders, oh beneficent one?"""
?CCL71: EQUAL? PRSO,WIZARD \?CCL75
REMOVE WIZARD
FCLEAR WAND,NDESCBIT
MOVE WAND,HERE
PRINTI "The demon grins hideously. ""This has been my desire e'er since this charlatan bent me to his service!"" "
PRINT WAVES-WAND
PRINTI "fruitlessly as the demon forms himself into a smoky cloud which envelops the Wizard. A horrible scream is heard, and the smoke clears, leaving no trace of the Wizard but his wand."
CRLF
CALL DEMON-LEAVES
RSTACK
?CCL75: EQUAL? PRSO,ME \?PRG80
CALL DEMON-LEAVES,FALSE-VALUE
SET 'WINNER,ADVENTURER
CALL JIGS-UP,STR?85
RSTACK
?PRG80: PRINTI """I know no way to kill a "
PRINTD PRSO
PRINTR "."""
?CCL68: EQUAL? PRSA,V?EXAMINE,V?FIND \?PRG95
PRINTI """I am not permitted to "
EQUAL? PRSA,V?FIND \?PRG91
PRINTI "answer questions"
JUMP ?PRG93
?PRG91: PRINTI "perform such menial tasks"
?PRG93: PRINTR ". The terms of my contract are explicit, and the penalty clauses are ... hmm ... devilish."""
?PRG95: PRINTR """Apologies, oh master, but even for such a one as I this is not possible."" He seems chagrined to have to admit this."
?CCL7: EQUAL? PRSA,V?MUNG,V?ATTACK \?CCL98
PRINTR "The demon laughs uproariously."
?CCL98: EQUAL? PRSA,V?GIVE \FALSE
EQUAL? PRSI,DEMON \FALSE
GETPT PRSO,P?VALUE
ZERO? STACK /?CCL107
EQUAL? PRSO,SWORD /?CCL107
CALL REMOVE-CAREFULLY,PRSO
INC 'DEMON-HOARD
ADD SCORE,2 >SCORE
LESS? DEMON-HOARD,TREASURES-MAX /?PRG115
SET 'DEMON-PAID,TRUE-VALUE
PUTP WIZARD,P?LDESC,STR?86
PRINTR """This paltry hoard will suffice for my fee."""
?PRG115: PRINTC 34
GET DEMON-THANKS,DEMON-HOARD
PRINT STACK
PRINTC 34
CRLF
EQUAL? DEMON-HOARD,8 \TRUE
PRINTR "The Wizard tears his bears and looks at you as if you are a madman."
?CCL107: CALL BOMB?,PRSO
ZERO? STACK /?CCL122
CALL DEMON-LEAVES,FALSE-VALUE
PRINTR """This violates my contract, oh fool. Thus, I am free to depart."""
?CCL122: CALL REMOVE-CAREFULLY,PRSO
PRINTI "The demon takes the "
PRINTD PRSO
PRINTR " and smiles balefully, revealing enormous fangs."
.FUNCT DEMON-LEAVES,NOISY?=1
FSET DEMON,INVISIBLE
ZERO? NOISY? /?CND1
PRINTI "The genie departs, his agreement fulfilled."
CRLF
?CND1: SET 'P-CONT,FALSE-VALUE
RETURN 2
.FUNCT AQUARIUM-F,OBJ
EQUAL? PRSA,V?ENTER \?CCL3
CALL DO-WALK,P?IN
RSTACK
?CCL3: EQUAL? PRSA,V?LOOK-INSIDE \?CCL5
IN? SERPENT,AQUARIUM \?CCL5
PRINTR "A baby serpent in the aquarium eyes you suspiciously."
?CCL5: EQUAL? PRSA,V?ATTACK,V?MUNG \?PRD13
EQUAL? PRSO,AQUARIUM /?CCL11
?PRD13: EQUAL? PRSA,V?THROW \FALSE
EQUAL? PRSI,AQUARIUM \FALSE
?CCL11: EQUAL? PRSO,AQUARIUM \?CCL20
ZERO? PRSI /FALSE
SET 'OBJ,PRSI
JUMP ?CND18
?CCL20: SET 'OBJ,PRSO
?CND18: MOVE OBJ,HERE
IN? DEAD-SERPENT,HERE \?CCL26
PRINTR "The aquarium is already broken!"
?CCL26: CALL BOMB?,OBJ
ZERO? STACK /?CCL30
CALL INT,I-FUSE
PUT STACK,0,0
RTRUE
?CCL30: FSET? OBJ,WEAPONBIT /?CTR31
GETP OBJ,P?SIZE
GRTR? STACK,10 \?PRG42
?CTR31: REMOVE SERPENT
MOVE DEAD-SERPENT,HERE
MOVE PALANTIR-3,AQUARIUM
FCLEAR PALANTIR-3,NDESCBIT
PUTP AQUARIUM,P?LDESC,STR?95
PRINTI "The "
PRINTD OBJ
PRINTI " shatters the aquarium, spilling salt water, wet sand, and an extremely annoyed sea serpent. He is having difficulty breathing, and he seems to hold you responsible. He "
EQUAL? PRSA,V?MUNG \?PRG40
CALL JIGS-UP,STR?96
RSTACK
?PRG40: PRINTR "slithers toward you, but expires mere inches away. A clear crystal sphere sits amid the sand and broken glass in the aquarium."
?PRG42: PRINTI "The "
PRINTD OBJ
PRINTR " bounces harmlessly off the glass."
.FUNCT SERPENT-F
EQUAL? SERPENT,WINNER \?CCL3
PRINTR "The serpent only stares hungrily at you."
?CCL3: EQUAL? PRSA,V?MUNG,V?ATTACK \?CCL7
PRINTR "He swims towards you, his dagger-like teeth dripping. Fortunately, he doesn't want to crash into the aquarium wall, and contents himself with splashing you with water."
?CCL7: EQUAL? PRSA,V?PUT \?CCL11
EQUAL? PRSO,SERPENT \?CCL11
PRINTR "Impossible!"
?CCL11: EQUAL? PRSA,V?GIVE,V?TAKE \FALSE
CALL JIGS-UP,STR?98
RSTACK
.FUNCT DEAD-SERPENT-F
EQUAL? PRSA,V?TAKE \FALSE
PRINTR "This may be a baby, but it's as big as a whale."
.FUNCT MURKY-ROOM-F,RARG
EQUAL? RARG,M-LOOK \?CCL3
PRINTI " The floor is sandy, and your vision seems blurred."
IN? SERPENT,AQUARIUM \?CND6
RANDOM 100
GRTR? 20,STACK \?CND6
PRINTR " A shadow seems to swim by overhead."
?CND6: CRLF
RTRUE
?CCL3: EQUAL? RARG,M-ENTER \FALSE
IN? SERPENT,AQUARIUM \?CCL16
CALL JIGS-UP,STR?99
RSTACK
?CCL16: CALL JIGS-UP,STR?100
RSTACK
.FUNCT WIZARD-QUARTERS-F,RARG,PICK,L
EQUAL? RARG,M-LOOK,M-FLASH \FALSE
PRINTI "This is where the Wizard of Frobozz lives. The room is "
CALL PICK-ONE,WIZQDESCS
PRINT STACK
PRINT PERIOD-CR
RTRUE
.FUNCT SPHERE-F
EQUAL? PRSA,V?PUT,V?MOVE,V?TAKE \?CCL3
EQUAL? PRSO,PALANTIR-1 \?CCL3
ZERO? CAGE-SOLVE-FLAG \?CCL3
EQUAL? ADVENTURER,WINNER \?CCL9
PRINTI "As you reach for the sphere, a solid steel cage falls to entrap you. Worse, poisonous gas begins seeping in."
CRLF
CRLF
IN? ROBOT,HERE \?CND12
MOVE ROBOT,CAGE
FSET ROBOT,NDESCBIT
?CND12: CALL GOTO,CAGE
FSET CAGE-OBJECT,NDESCBIT
FCLEAR CAGE-OBJECT,INVISIBLE
CALL QUEUE,I-CAGE-DEATH,6
PUT STACK,0,1
MOVE CAGE-OBJECT,HERE
RTRUE
?CCL9: FSET PALANTIR-1,INVISIBLE
REMOVE ROBOT
FSET PRSO,INVISIBLE
MOVE CAGE-OBJECT,DINGY-CLOSET
FCLEAR CAGE-OBJECT,INVISIBLE
PRINTI "As the robot touches the sphere, a solid steel cage falls from the ceiling, trapping him. You can faintly hear his last words: "
PRINT B-W-C
CALL JIGS-UP,STR?109
RSTACK
?CCL3: EQUAL? PRSA,V?LOOK-INSIDE \?CCL17
EQUAL? PRSO,PALANTIR-1 \?CCL20
PUSH PALANTIR-2
JUMP ?CND18
?CCL20: EQUAL? PRSO,PALANTIR-2 \?CCL22
PUSH PALANTIR-3
JUMP ?CND18
?CCL22: EQUAL? PRSO,PALANTIR-3 \?CCL24
PUSH PALANTIR-1
JUMP ?CND18
?CCL24: PUSH PALANTIR-4
?CND18: CALL PALANTIR-LOOK,STACK
RSTACK
?CCL17: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "There is something misty in the sphere. Perhaps if you were to look into it..."
.FUNCT PALANTIR-LOOK,OBJ,RM,L
EQUAL? OBJ,PALANTIR-4 \?CND1
PRINT STRANGE-VISION
PRINTR " a huge and fearful face which peers at you expectantly."
?CND1: CALL META-LOC,OBJ >RM
LOC OBJ >L
ZERO? L /?PRG10
CALL LIT?,RM
ZERO? STACK \?CCL7
?PRG10: PRINT ONLY-DARKNESS
RTRUE
?CCL7: IN? L,ROOMS /?CCL13
FSET? L,OPENBIT \?PRG19
PRINTI "You see the inside of a "
PRINTD L
PRINT PERIOD-CR
RTRUE
?PRG19: PRINT ONLY-DARKNESS
RTRUE
?CCL13: ZERO? DEAD /?PRG26
PRINTI "As you peer through the mist, a strangely colored vision of a huge room takes shape"
JUMP ?PRG28
?PRG26: PRINT STRANGE-VISION
PRINTI " of a distant room, which can be described clearly"
?PRG28: PRINTI "..."
CRLF
CRLF
FSET OBJ,INVISIBLE
CALL GO&LOOK,RM
EQUAL? HERE,RM \?CND30
PRINTI "An astonished adventurer is staring into a crystal sphere."
CRLF
?CND30: FCLEAR OBJ,INVISIBLE
ZERO? DEAD \TRUE
PRINTR "The vision fades, revealing only an ordinary crystal sphere."
.FUNCT GO&LOOK,RM,OHERE,OLIT,OSEEN=0
SET 'OHERE,HERE
FSET? OHERE,TOUCHBIT \?CND1
SET 'OSEEN,TRUE-VALUE
?CND1: SET 'OLIT,LIT
SET 'HERE,RM
CALL LIT?,RM >LIT
CALL V-LOOK
ZERO? OSEEN \?CND3
FCLEAR OHERE,TOUCHBIT
?CND3: SET 'HERE,OHERE
SET 'LIT,OLIT
RETURN LIT
.FUNCT DEAD-PALANTIR-F,RARG,P
EQUAL? RARG,M-LOOK \?CCL3
PRINTI "You are in a huge crystalline sphere filled with thin "
EQUAL? HERE,DEAD-PALANTIR-1 \?CCL8
SET 'P,PALANTIR-1
PRINTI "red"
JUMP ?PRG17
?CCL8: EQUAL? HERE,DEAD-PALANTIR-2 \?CCL12
SET 'P,PALANTIR-2
PRINTI "blue"
JUMP ?PRG17
?CCL12: SET 'P,PALANTIR-3
PRINTI "white"
?PRG17: PRINTI " mist. The mist becomes "
EQUAL? HERE,DEAD-PALANTIR-1 \?CCL21
PRINTI "blue"
JUMP ?PRG30
?CCL21: EQUAL? HERE,DEAD-PALANTIR-2 \?PRG28
PRINTI "white"
JUMP ?PRG30
?PRG28: PRINTI "black"
?PRG30: PRINTI " to the west. You strain to look out through the mist..."
CRLF
CRLF
FSET? P,TOUCHBIT \?CCL34
CALL PALANTIR-LOOK,P
JUMP ?CND32
?CCL34: EQUAL? P,PALANTIR-1 \?CCL36
PRINTR "You see a small room with a sign, too blurry to read."
?CCL36: EQUAL? P,PALANTIR-2 \?CCL40
PRINTR "You see a dreary room with an oak door and a huge table. There is an odd glow to the mist."
?CCL40: EQUAL? P,PALANTIR-3 \?CND32
PRINTI "A watery room is barely visible."
IN? SERPENT,AQUARIUM \?CND32
RANDOM 100
GRTR? 25,STACK \?CND32
PRINTR " A shadow swims by as you look."
?CND32: CRLF
RTRUE
?CCL3: EQUAL? RARG,M-ENTER \FALSE
EQUAL? HERE,DEAD-PALANTIR-4 \FALSE
IN? DEMON,PENTAGRAM-ROOM \?PRG60
PRINTI "The room is empty. A huge face looks down from outside and laughs sardonically. It doesn't look like you're getting out of this predicament!"
CRLF
CALL FINISH
?PRG60: PRINTI "A huge and horrible face materializes out of the mist. """
LESS? DEATHS,3 /?PRG66
PRINTI "You again! You'll obviously be no help to me."" The face disappears and everything goes black."
CRLF
CALL FINISH
?PRG66: PRINTI "Perhaps you may be of use in gaining my freedom from this place. I return you to your foolish quest! Mayhap you will repay this favor in kind someday."" The mist swirls, and you are returned to the world of life."
CRLF
SET 'DEAD,FALSE-VALUE
CALL GOTO,INSIDE-THE-BARROW
RSTACK
.FUNCT GLOBAL-PALANTIR-F
EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \?CCL3
CALL DEAD-PALANTIR-F,M-LOOK
RSTACK
?CCL3: EQUAL? PRSA,V?MUNG \FALSE
PRINTR "The sphere is unbreakable."
.ENDI

1220
wizard.zil Normal file

File diff suppressed because it is too large Load diff