mirror of
https://github.com/historicalsource/minizork2-1988
synced 2024-04-25 21:49:47 +03:00
Final Revision
This commit is contained in:
commit
a24d33a0ad
132
alice.zabstr
Normal file
132
alice.zabstr
Normal 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
366
alice.zap
Normal 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
607
alice.zil
Normal 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
147
dungeon.zabstr
Normal 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
367
dungeon.zap
Normal 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
679
dungeon.zil
Normal 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
93
globals.zabstr
Normal 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
309
globals.zap
Normal 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
477
globals.zil
Normal 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
2
mini2.chart
Normal 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
25
mini2.errors
Normal 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
462
mini2.record
Normal 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
1
mini2.serial
Normal file
|
@ -0,0 +1 @@
|
|||
1
|
50
mini2.zap
Normal file
50
mini2.zap
Normal 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
35
mini2.zil
Normal 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>
|
8455
mini2dat.zap
Normal file
8455
mini2dat.zap
Normal file
File diff suppressed because it is too large
Load diff
200
mini2freq.xzap
Normal file
200
mini2freq.xzap
Normal 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
8
mini2pur.zap
Normal file
|
@ -0,0 +1,8 @@
|
|||
|
||||
|
||||
; PURE TABLES ARE DEFINED HERE
|
||||
|
||||
PURTBL::
|
||||
|
||||
PURTND::
|
||||
.ENDI
|
263
mini2str.zap
Normal file
263
mini2str.zap
Normal 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
77
misc.zabstr
Normal 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
318
misc.zap
Normal 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
535
misc.zil
Normal 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
151
parser.zabstr
Normal 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
1600
parser.zap
Normal file
File diff suppressed because it is too large
Load diff
1483
parser.zil
Normal file
1483
parser.zil
Normal file
File diff suppressed because it is too large
Load diff
126
princess.zabstr
Normal file
126
princess.zabstr
Normal 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
460
princess.zap
Normal 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
684
princess.zil
Normal 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
390
syntax.zil
Normal 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
158
verbs.zabstr
Normal 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>
|
131
volcano.zabstr
Normal file
131
volcano.zabstr
Normal 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
462
volcano.zap
Normal 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
686
volcano.zil
Normal 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
171
wizard.zabstr
Normal 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
870
wizard.zap
Normal 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
1220
wizard.zil
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue