Revision 17 (Original Source)

This commit is contained in:
historicalsource 2019-04-13 22:03:05 -04:00
commit 1dfe76cfc7
32 changed files with 29980 additions and 0 deletions

1
README.md Normal file
View file

@ -0,0 +1 @@
# zork3

1945
actions.zap Normal file

File diff suppressed because it is too large Load diff

1935
actions.zil Normal file

File diff suppressed because it is too large Load diff

60
clock.zap Normal file
View file

@ -0,0 +1,60 @@
.FUNCT DEMON,RTN,TICK,CINT
CALL INT,RTN,TRUE-VALUE >CINT
PUT CINT,C-TICK,TICK
RETURN CINT
.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 \?ELS5
SUB C-INTS,C-INTLEN >C-INTS
ZERO? DEMON /?ELS7
SUB C-DEMONS,C-INTLEN >C-DEMONS
?ELS7: ADD C-TABLE,C-INTS >INT
PUT INT,C-RTN,RTN
RETURN INT
?ELS5: 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 /?ELS9
PUSH C-INTS
JUMP ?CND5
?ELS9: PUSH C-DEMONS
?CND5: ADD C-TABLE,STACK >C
ADD C-TABLE,C-TABLELEN >E
?PRG13: EQUAL? C,E \?ELS17
RETURN FLG
?ELS17: GET C,C-ENABLED?
ZERO? STACK /?CND15
GET C,C-TICK >TICK
ZERO? TICK \?ELS22
JUMP ?CND15
?ELS22: SUB TICK,1
PUT C,C-TICK,STACK
GRTR? TICK,1 /?CND20
GET C,C-RTN
CALL STACK
ZERO? STACK /?CND20
SET 'FLG,TRUE-VALUE
?CND20:
?CND15: ADD C,C-INTLEN >C
JUMP ?PRG13
.ENDI

60
clock.zil Normal file
View file

@ -0,0 +1,60 @@
<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 DEMON (RTN TICK "AUX" CINT)
#DECL ((RTN) ATOM (TICK) FIX (CINT) <PRIMTYPE VECTOR>)
<PUT <SET CINT <INT .RTN T>> ,C-TICK .TICK>
.CINT>
<ROUTINE QUEUE (RTN TICK "AUX" CINT)
#DECL ((RTN) ATOM (TICK) FIX (CINT) <PRIMTYPE VECTOR>)
<PUT <SET CINT <INT .RTN>> ,C-TICK .TICK>
.CINT>
<ROUTINE INT (RTN "OPTIONAL" (DEMON <>) E C INT)
#DECL ((RTN) ATOM (DEMON) <OR ATOM FALSE> (E C INT) <PRIMTYPE
VECTOR>)
<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>)
(<==? <GET .C ,C-RTN> .RTN> <RETURN .C>)>
<SET C <REST .C ,C-INTLEN>>>>
<GLOBAL CLOCK-WAIT <>>
<ROUTINE CLOCKER ("AUX" C E TICK (FLG <>))
#DECL ((C E) <PRIMTYPE VECTOR> (TICK) FIX (FLG) <OR FALSE ATOM>)
<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> <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>>>>

58
demons.zap Normal file
View file

@ -0,0 +1,58 @@
.FUNCT I-SWORD,DEM,NG=0,P,T,L
CALL INT,I-SWORD >DEM
IN? SWORD,ADVENTURER \?ELS5
EQUAL? HERE,CLIFF \?ELS8
ZERO? MAN-GONE \?ELS8
SET 'NG,1
JUMP ?CND6
?ELS8: EQUAL? HERE,CLIFF-LEDGE \?ELS12
ZERO? MAN-FLAG /?ELS12
SET 'NG,1
JUMP ?CND6
?ELS12: CALL INFESTED?,HERE
ZERO? STACK /?ELS16
SET 'NG,2
JUMP ?CND6
?ELS16: SET 'P,0
?PRG19: NEXTP HERE,P >P
ZERO? P \?ELS23
JUMP ?CND6
?ELS23: LESS? P,LOW-DIRECTION /?PRG19
GETPT HERE,P >T
PTSIZE T >L
EQUAL? L,UEXIT,CEXIT,DEXIT \?PRG19
GETB T,0
CALL INFESTED?,STACK
ZERO? STACK /?PRG19
SET 'NG,1
?CND6: EQUAL? NG,SWORD-STATE /FALSE
EQUAL? NG,2 \?ELS36
PRINTI "Your sword has begun to glow very brightly."
CRLF
JUMP ?CND32
?ELS36: EQUAL? NG,1 \?ELS40
PRINTI "Your sword is glowing with a faint blue glow."
CRLF
JUMP ?CND32
?ELS40: ZERO? NG \?CND32
PRINTI "Your sword is no longer glowing."
CRLF
?CND32: SET 'SWORD-STATE,NG
RTRUE
?ELS5: PUT DEM,0,0
RFALSE
.FUNCT INFESTED?,R,F
FIRST? R >F /?KLU12
?KLU12:
?PRG1: ZERO? F /FALSE
FSET? F,VILLAIN \?ELS7
FSET? F,INVISIBLE /?ELS7
RETURN F
?ELS7: NEXT? F >F /?PRG1
RFALSE
.ENDI

41
demons.zil Normal file
View file

@ -0,0 +1,41 @@
"SWORD demon"
<ROUTINE I-SWORD ("AUX" (DEM <INT I-SWORD>) (NG 0) P T L)
<COND (<IN? ,SWORD ,ADVENTURER>
<COND (<AND <==? ,HERE ,CLIFF> <NOT ,MAN-GONE>> <SET NG 1>)
(<AND <==? ,HERE ,CLIFF-LEDGE> ,MAN-FLAG> <SET NG 1>)
(<INFESTED? ,HERE> <SET NG 2>)
(ELSE
<SET P 0>
<REPEAT ()
<COND (<0? <SET P <NEXTP ,HERE .P>>>
<RETURN>)
(<NOT <L? .P ,LOW-DIRECTION>>
<SET T <GETPT ,HERE .P>>
<SET L <PTSIZE .T>>
<COND (<EQUAL? .L ,UEXIT ,CEXIT ,DEXIT>
<COND (<INFESTED? <GETB .T 0>>
<SET NG 1>
<RETURN>)>)>)>>)>
<COND (<==? .NG ,SWORD-STATE> <RFALSE>)
(<==? .NG 2>
<TELL "Your sword has begun to glow very brightly." CR>)
(<1? .NG>
<TELL "Your sword is glowing with a faint blue glow."
CR>)
(<0? .NG>
<TELL "Your sword is no longer glowing." CR>)>
<SETG SWORD-STATE .NG>
<RTRUE>)
(ELSE <DISABLE .DEM> <RFALSE>)>>
<GLOBAL SWORD-STATE 0>
<ROUTINE INFESTED? (R "AUX" (F <FIRST? .R>))
<REPEAT ()
<COND (<NOT .F> <RETURN <>>)
(<AND <FSET? .F ,VILLAIN> <NOT <FSET? .F ,INVISIBLE>>>
<RETURN .F>)
(<NOT <SET F <NEXT? .F>>> <RETURN <>>)>>>

2
dungeon.zap Normal file
View file

@ -0,0 +1,2 @@
.ENDI

999
dungeon.zil Normal file
View file

@ -0,0 +1,999 @@
"DUNGEON3 for
ZORK III: The Dungeon Master
The Great Underground Empire (Part 3)
(c) Copyright 1982 Infocom, Inc. All Rights Reserved.
"
<DIRECTIONS NORTH EAST WEST SOUTH NE NW SE SW UP DOWN IN OUT LAND CROSS>
"SUBTITLE GLOBAL OBJECTS"
<GLOBAL LOAD-MAX 100>
<GLOBAL LOAD-ALLOWED 100>
<OBJECT GLOBAL-OBJECTS
(FLAGS SEARCHBIT TRANSBIT RMUNGBIT INVISIBLE TOUCHBIT SURFACEBIT)>
<OBJECT LOCAL-GLOBALS
(IN GLOBAL-OBJECTS)
(SYNONYM MGCKJK)
(PSEUDO "FOOBAR" PATH-OBJECT)
(VTYPE 1)
(DESCFCN PATH-OBJECT)>
;"Yes, this synonym for LOCAL-GLOBALS needs to exist... sigh"
<OBJECT ROOMS>
<OBJECT PSEUDO-OBJECT
(IN LOCAL-GLOBALS)
(DESC "pseudo")
(ACTION PATH-OBJECT)>
<OBJECT IT ;"was IT"
(IN GLOBAL-OBJECTS)
(SYNONYM IT THAT THIS HIM)
(DESC "random object")
(FLAGS NDESCBIT)>
<OBJECT BLESSINGS
(IN GLOBAL-OBJECTS)
(SYNONYM BLESSINGS GRACES)
(DESC "blessings")
(FLAGS NDESCBIT)>
<OBJECT STAIRS
(IN LOCAL-GLOBALS)
(SYNONYM STAIRS STEPS STAIRCASE STAIR)
(ADJECTIVE STONE MARBLE STEEP)
(DESC "stairs")
(FLAGS NDESCBIT CLIMBBIT)>
<OBJECT RUBBLE
(IN LOCAL-GLOBALS)
(SYNONYM ROCK ROCKS BOULDER RUBBLE)
(DESC "rubble")
(FLAGS NDESCBIT)>
<OBJECT DEBRIS
(IN GLOBAL-OBJECTS)
(SYNONYM DUST DEBRIS)
(DESC "dust and debris")
(FLAGS NDESCBIT)>
<OBJECT CHASM
(IN LOCAL-GLOBALS)
(SYNONYM CHASM GORGE RAVINE)
(ADJECTIVE ROCKY DEEP)
(DESC "chasm")
(ACTION CHASM-FCN)
(FLAGS NDESCBIT)>
<OBJECT PATHOBJ
(IN GLOBAL-OBJECTS)
(SYNONYM EXIT PATH TRAIL)
(ADJECTIVE FOREST NARROW LONG WINDING)
(DESC "way")
(FLAGS NDESCBIT)
(ACTION PATH-OBJECT)>
<OBJECT TUNNEL
(IN GLOBAL-OBJECTS)
(SYNONYM PASSAGE CRAWLWAY)
(ADJECTIVE DARK SMOKY)
(DESC "tunnel")
(FLAGS NDESCBIT)
(ACTION TUNNEL-OBJECT)>
<OBJECT GROUND ;"was GROUND"
(IN GLOBAL-OBJECTS)
(SYNONYM GROUND EARTH SAND FLOOR)
(DESC "ground")
(ACTION GROUND-FCN)>
<OBJECT GRUE ;"was GRUE"
(IN GLOBAL-OBJECTS)
(SYNONYM GRUE)
(ADJECTIVE LURKING SINISTER HUNGRY SILENT)
(DESC "lurking grue")
(ACTION GRUE-FUNCTION)>
<OBJECT HANDS ;"was HANDS"
(IN GLOBAL-OBJECTS)
(SYNONYM PAIR HANDS)
(ADJECTIVE BARE)
(DESC "pair of hands")
(FLAGS NDESCBIT TOOLBIT)>
<OBJECT EAST-WALL ;"was EAST-WALL"
(IN GLOBAL-OBJECTS)
(SYNONYM WALL)
(ADJECTIVE EAST EASTERN)
(DESC "eastern wall")
(FLAGS NDESCBIT)
(ACTION RANDOM-WALL)>
<OBJECT SOUTH-WALL ;"was SOUTH-WALL"
(IN GLOBAL-OBJECTS)
(SYNONYM WALL)
(ADJECTIVE SOUTH SOUTHE) ;"only 6 chars count and southeast exists"
(DESC "southern wall")
(FLAGS NDESCBIT)
(ACTION RANDOM-WALL)>
<OBJECT WEST-WALL ;"was WEST-WALL"
(IN GLOBAL-OBJECTS)
(SYNONYM WALL)
(ADJECTIVE WEST WESTERN)
(DESC "western wall")
(FLAGS NDESCBIT)
(ACTION RANDOM-WALL)>
<OBJECT NORTH-WALL ;"was NORTH-WALL"
(IN GLOBAL-OBJECTS)
(SYNONYM WALL)
(ADJECTIVE NORTH NORTHE) ;"only six chars used..."
(DESC "northern wall")
(FLAGS NDESCBIT)
(ACTION RANDOM-WALL)>
<OBJECT GLOBAL-WATER ;"was GLOBAL-WATER"
(IN LOCAL-GLOBALS)
(SYNONYM WATER QUANTITY)
(DESC "water")
(FLAGS DRINKBIT)
(ACTION WATER-FCN)>
<OBJECT ADVENTURER ;"was ADVENTURER"
(IN CP-ANTE)
(SYNONYM ADVENTURER)
(DESC "cretin")
(FLAGS VILLAIN NDESCBIT INVISIBLE )
(STRENGTH 0)
(ACTION 0)>
<OBJECT ME
(IN GLOBAL-OBJECTS)
(SYNONYM ME MYSELF SELF CRETIN)
(DESC "you")
(FLAGS VILLAIN)
(ACTION CRETIN)>
<OBJECT BROKEN-LAMP ;"was BLAMP"
(SYNONYM LAMP LANTERN)
(ADJECTIVE BROKEN BRASS)
(DESC "broken brass lantern")
(FLAGS TAKEBIT)
(SIZE 15)>
<OBJECT LAMP ;"was LAMP"
(IN CP-ANTE)
(SYNONYM LAMP LANTERN)
(ADJECTIVE BRASS)
(DESC "lamp")
(FLAGS TAKEBIT LIGHTBIT)
(FDESC "Your old friend, the brass lantern, is at your feet.")
(ACTION LANTERN)
(SIZE 15)>
<OBJECT SWORD ;"was SWORD"
(IN STONE)
(SYNONYM SWORD ORCRIST GLAMDRING BLADE)
(ADJECTIVE ELVISH OLD ANTIQUE)
(DESC "sword")
(FLAGS TAKEBIT WEAPONBIT TRYTAKEBIT)
(ACTION SWORD-FCN)
(SIZE 25)
(VALUE 0)>
"CHINESE PUZZLE ROOMS/OBJECTS"
<ROOM CP-ANTE
(IN ROOMS)
(DESC "Royal Puzzle Entrance")
(WEST TO CP-OUT)
(NORTH TO MUSEUM-ENTRANCE)
(UP TO MUSEUM-ENTRANCE)
(DOWN PER CPENTER)
(FLAGS RLANDBIT ONBIT)
(ACTION CPANT-ROOM)
(GLOBAL STAIRS)>
<ROOM CP-OUT
(IN ROOMS)
(DESC "Side Room")
(NORTH TO CP-ANTE)
(UP TO CP-ANTE)
(EAST TO CP IF CP-FLAG ELSE "The steel door is closed.")
(FLAGS RLANDBIT ONBIT)
(ACTION CPOUT-ROOM)
(GLOBAL CPDOOR STAIRS)>
<ROOM CP
(IN ROOMS)
(DESC "Room in a Puzzle")
(NORTH PER CPEXIT)
(SOUTH PER CPEXIT)
(EAST PER CPEXIT)
(WEST PER CPEXIT)
(NE PER CPEXIT)
(NW PER CPEXIT)
(SE PER CPEXIT)
(UP PER CPEXIT)
(SW PER CPEXIT)
(ACTION CP-ROOM)
(FLAGS RLANDBIT ONBIT)
(GLOBAL CPLADDER CPDOOR CPEWL CPWWL CPNWL CPSWL)>
;"SUBTITLE CHINESE PUZZLE OBJECTS"
<OBJECT WARNING-NOTE
(IN CP-ANTE)
(DESC "warning note")
(SYNONYM NOTE WARNING TEXT)
(ADJECTIVE WARNING SMALL)
(FDESC "Lying on the ground is a small note of some kind.")
(FLAGS TAKEBIT READBIT BURNBIT)
(SIZE 2)
(TEXT
"Warning:|
The Royal Puzzle is quite dangerous and it is possible to become
trapped within its confines. Please do not enter the puzzle after hours
or when museum personnel are not present.|
The Management|")>
<OBJECT CP-SLOT
(SYNONYM CPSLT SLIT SLOT)
(ADJECTIVE SMALL)
(DESC "small slot")
(FLAGS NDESCBIT OPENBIT)
(ACTION CP-SLOT-FCN)
(CAPACITY 4)>
<OBJECT CPDOOR
(IN LOCAL-GLOBALS)
(SYNONYM DOOR)
(ADJECTIVE STEEL METAL)
(DESC "steel door")
(FLAGS NDESCBIT)
(ACTION CPDOOR-F)>
<OBJECT LORE-BOOK
(SYNONYM BOOK LORE TEXT)
(ADJECTIVE LORE OLD STRANGE)
(DESC "very ancient book")
(FLAGS TAKEBIT READBIT)
(LDESC
"There is an old book here.")
(FDESC
"Nestled inside the niche is an old and dusty book.")
(TEXT
"The book is written in a strong and elegant hand and is full of strange
and wondrous pictures. The text is in a tongue unknown to you and is penned
in many colours. Some of the words seem to change colour as you read them.
The book itself is very old and the pages dry and brittle.")
(SIZE 4)
(ACTION LORE-BOOK-F)>
<GLOBAL CP-FLAG <>>
<OBJECT CPEWL ;"defined CPWALL"
(IN LOCAL-GLOBALS)
(SYNONYM WALL)
(ADJECTIVE EAST EASTERN)
(DESC "eastern wall")
(FLAGS NDESCBIT)
(ACTION CPWALL-OBJECT)>
<OBJECT CPWWL ;"defined CPWALL"
(IN LOCAL-GLOBALS)
(SYNONYM WALL)
(ADJECTIVE WEST WESTERN)
(DESC "western wall")
(FLAGS NDESCBIT)
(ACTION CPWALL-OBJECT)>
<OBJECT CPSWL ;"defined CPWALL"
(IN LOCAL-GLOBALS)
(SYNONYM WALL)
(ADJECTIVE SOUTH)
(DESC "southern wall")
(FLAGS NDESCBIT)
(ACTION CPWALL-OBJECT)>
<OBJECT CPNWL ;"defined CPWALL"
(IN LOCAL-GLOBALS)
(SYNONYM WALL)
(ADJECTIVE NORTH)
(DESC "northern wall")
(FLAGS NDESCBIT)
(ACTION CPWALL-OBJECT)>
<OBJECT CPLADDER ;"defined CPLADDER"
(IN GLOBAL-OBJECTS)
(SYNONYM LADDER)
(DESC "ladder")
(ACTION CPLADDER-OBJECT)>
;"Objects/rooms for old end-game"
<OBJECT INTNUM
(IN GLOBAL-OBJECTS)
(SYNONYM INTNUM)
(FLAGS TOOLBIT)
(DESC "number")>
<OBJECT INTDIR
(IN GLOBAL-OBJECTS)
(SYNONYM INTDIR)
(FLAGS TOOLBIT)
(DESC "direction")>
<OBJECT GUARDIAN
(IN LOCAL-GLOBALS)
(DESC "Guardians of Zork")
(SYNONYM STATUE GUARDIAN GUARD GUARDS)
(FLAGS VILLAIN)
(ACTION GUARDIANS)>
<OBJECT ROSE
(IN LOCAL-GLOBALS)
(DESC "compass rose")
(SYNONYM ROSE)
(ADJECTIVE COMPASS)
(ACTION ROSE-F)>
<OBJECT MASTER
(IN LOCAL-GLOBALS)
(DESC "dungeon master")
(SYNONYM MASTER)
(ADJECTIVE DUNGEON)
(FLAGS VICBIT)
(ACTION MASTER-F)>
<OBJECT DUNGEON-MASTER
(IN BEHIND-DOOR)
(DESC "dungeon master")
(LDESC
"The dungeon master is quietly leaning on his staff here.")
(SYNONYM MASTER DUNGEON)
(ADJECTIVE DUNGEON)
(FLAGS VILLAIN VICBIT)
(ACTION DUNGEON-MASTER-F)>
<OBJECT MIRROR
(IN LOCAL-GLOBALS)
(DESC "mirror")
(SYNONYM MIRROR STRUCTURE)
(FLAGS VICBIT)
(ACTION MIRROR-FUNCTION)>
<OBJECT PANEL
(IN LOCAL-GLOBALS)
(DESC "panel")
(SYNONYM PANEL)
(ACTION PANEL-FUNCTION)>
<OBJECT CHANNEL
(IN LOCAL-GLOBALS)
(DESC "stone channel")
(SYNONYM CHANNEL HOLE)
(ADJECTIVE STONE)>
<ROOM MRD
(IN ROOMS)
(DESC "Hallway")
(LDESC " ")
(NORTH TO FRONT-DOOR)
(NE TO FRONT-DOOR)
(NW TO FRONT-DOOR)
(SOUTH PER MRGO)
(SE PER MRGO)
(SW PER MRGO)
(ACTION MRDF)
(FLAGS RLANDBIT ONBIT)
(GLOBAL ROSE CHANNEL GUARDIAN WOODEN-WALL)>
<ROOM MRG
(IN ROOMS)
(DESC "Hallway")
(LDESC " ")
(NORTH PER MRGO)
(NW PER MRGO)
(NE PER MRGO)
(ENTER PER MIRIN)
(SOUTH PER MRGO)
(SW PER MRGO)
(SE PER MRGO)
(ACTION GUARDIANS)
(FLAGS RLANDBIT ONBIT)
(GLOBAL GUARDIAN)>
<ROOM MRC
(IN ROOMS)
(DESC "Hallway")
(LDESC " ")
(NORTH PER MRGO)
(NW PER MRGO)
(NE PER MRGO)
(ENTER PER MIRIN)
(SOUTH PER MRGO)
(SW PER MRGO)
(SE PER MRGO)
(ACTION MRCF)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MIRROR PANEL ROSE CHANNEL GUARDIAN WOODEN-WALL)>
<ROOM MRB
(IN ROOMS)
(DESC "Hallway")
(LDESC " ")
(NORTH PER MRGO)
(NW PER MRGO)
(NE PER MRGO)
(ENTER PER MIRIN)
(SOUTH PER MRGO)
(SW PER MRGO)
(SE PER MRGO)
(ACTION MRBF)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MIRROR PANEL ROSE CHANNEL WOODEN-WALL)>
<ROOM MRA
(IN ROOMS)
(DESC "Hallway")
(LDESC " ")
(NORTH PER MRGO)
(NW PER MRGO)
(NE PER MRGO)
(ENTER PER MIRIN)
(SOUTH TO MREYE)
(ACTION MRAF)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MIRROR PANEL ROSE CHANNEL WOODEN-WALL)>
<ROOM MRDE
(IN ROOMS)
(DESC "Narrow Room")
(LDESC " ")
(ENTER PER MIRIN)
(WEST PER MIRIN)
(NORTH TO FRONT-DOOR)
(SOUTH TO MRG)
(ACTION MRDEW)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MIRROR PANEL GUARDIAN)>
<ROOM MRDW
(IN ROOMS)
(DESC "Narrow Room")
(LDESC " ")
(ENTER PER MIRIN)
(WEST PER MIRIN)
(NORTH TO FRONT-DOOR)
(SOUTH TO MRG)
(ACTION MRDEW)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MIRROR PANEL GUARDIAN)>
<ROOM MRGE
(IN ROOMS)
(DESC "Narrow Room")
(LDESC " ")
(ENTER PER MIRIN)
(WEST PER MIRIN)
(NORTH TO MRD)
(SOUTH TO MRC)
(ACTION GUARDIANS)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MIRROR PANEL GUARDIAN)>
<ROOM MRGW
(IN ROOMS)
(DESC "Narrow Room")
(LDESC " ")
(ENTER PER MIRIN)
(EAST PER MIRIN)
(NORTH TO MRD)
(SOUTH TO MRC)
(ACTION GUARDIANS)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MIRROR PANEL GUARDIAN)>
<ROOM MRCE
(IN ROOMS)
(DESC "Narrow Room")
(LDESC " ")
(ENTER PER MIRIN)
(WEST PER MIRIN)
(NORTH TO MRG)
(SOUTH TO MRB)
(ACTION MRCEW)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MIRROR PANEL GUARDIAN)>
<ROOM MRCW
(IN ROOMS)
(DESC "Narrow Room")
(LDESC " ")
(ENTER PER MIRIN)
(EAST PER MIRIN)
(NORTH TO MRG)
(SOUTH TO MRB)
(ACTION MRCEW)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MIRROR PANEL GUARDIAN)>
<ROOM MRBE
(IN ROOMS)
(DESC "Narrow Room")
(LDESC " ")
(ENTER PER MIRIN)
(WEST PER MIRIN)
(NORTH TO MRC)
(SOUTH TO MRA)
(ACTION MRBEW)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MIRROR PANEL GUARDIAN)>
<ROOM MRBW
(IN ROOMS)
(DESC "Narrow Room")
(LDESC " ")
(ENTER PER MIRIN)
(EAST PER MIRIN)
(NORTH TO MRC)
(SOUTH TO MRA)
(ACTION MRBEW)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MIRROR PANEL GUARDIAN)>
<ROOM MRAE
(IN ROOMS)
(DESC "Narrow Room")
(LDESC " ")
(ENTER PER MIRIN)
(WEST PER MIRIN)
(NORTH TO MRB)
(SOUTH TO MREYE)
(ACTION MRAEW)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MIRROR PANEL GUARDIAN)>
<ROOM MRAW
(IN ROOMS)
(DESC "Narrow Room")
(LDESC " ")
(ENTER PER MIRIN)
(EAST PER MIRIN)
(NORTH TO MRB)
(SOUTH TO MREYE)
(ACTION MRAEW)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MIRROR PANEL GUARDIAN)>
<ROOM IN-MIRROR
(IN ROOMS)
(DESC "Inside Mirror")
(LDESC " ")
(OUT PER MIROUT)
(NORTH PER MIROUT)
(SOUTH PER MIROUT)
(NW PER MIROUT)
(NE PER MIROUT)
(SE PER MIROUT)
(SW PER MIROUT)
(WEST PER MIROUT)
(EAST PER MIROUT)
(ACTION MAGIC-MIRROR)
(FLAGS RLANDBIT ONBIT)
(GLOBAL ROSE CHANNEL GUARDIAN)>
<ROOM MR-ANTE
(IN ROOMS)
(DESC "Button Room")
(LDESC
"You are standing at the southern end of a long, dimly lit hall. To the
south, stairs ascend into darkness. To the north the corridor is illuminated
by torches set high in the walls, out of reach. On one wall is a red
button.")
(SOUTH TO MSTAIRS IF SECRET-DOOR IS OPEN)
(UP TO MSTAIRS IF SECRET-DOOR IS OPEN)
(NORTH TO MREYE)
(FLAGS RLANDBIT ONBIT)
(GLOBAL SECRET-DOOR STAIRS)
(PSEUDO "TORCH" TORCH-PSEUDO "TORCHE" TORCH-PSEUDO)>
<ROOM MREYE
(IN ROOMS)
(DESC "Beam Room")
(LDESC " ")
(NORTH PER MRGO)
(NW PER MRGO)
(NE PER MRGO)
(SOUTH TO MR-ANTE)
(ACTION MREYE-ROOM)
(FLAGS RLANDBIT ONBIT)>
<ROOM MSTAIRS
(IN ROOMS)
(DESC "Engravings Room")
(NORTH TO MR-ANTE IF SECRET-DOOR IS OPEN ELSE "You can't go that way.")
(DOWN TO MR-ANTE IF SECRET-DOOR IS OPEN ELSE "You can't go that way.")
(SW TO DAMP-PASSAGE)
(SE TO DEAD-END)
(FLAGS RLANDBIT)
(ACTION MSTAIRS-F)
(GLOBAL SECRET-DOOR STAIRS)>
<ROOM DEAD-END
(IN ROOMS)
(DESC "Dead End")
(LDESC
"You have come to the end of two adjoining passages to the west and the
northwest.")
(WEST TO DAMP-PASSAGE)
(NW TO MSTAIRS)
(FLAGS RLANDBIT)>
<ROOM DAMP-PASSAGE
(IN ROOMS)
(DESC "Damp Passage")
(LDESC
"This is a particularly damp spot even by dungeon standards. You can see a
crossroads to the west, and two nearly identical passages lead east and
northeast. A stone channel, wide and deep, steeply descends into the room
from the south. It is covered with moss and lichen, and is far too slippery
to climb. The channel crosses the room, but the opening where it once
continued north is now blocked by rubble.")
(WEST TO JUNCTION)
(EAST TO DEAD-END)
(NE TO MSTAIRS)
(NORTH "The channel opening is blocked by tons of debris.")
(UP "The channel is too steep and the moss too slippery.")
(SOUTH "The channel is too steep and the moss too slippery.")
(FLAGS RLANDBIT)
(GLOBAL MOSS RUBBLE WATER-CHANNEL)>
<ROOM EAST-CORRIDOR
(IN ROOMS)
(DESC "East Corridor")
(LDESC
"This is a hall with polished marble walls. It widens slightly as it turns
west at its northern and southern ends.")
(NORTH TO NORTH-CORRIDOR)
(SOUTH TO SOUTH-CORRIDOR)
(FLAGS RLANDBIT ONBIT)>
<ROOM WEST-CORRIDOR
(IN ROOMS)
(DESC "West Corridor")
(LDESC
"This is a hall with polished marble walls. It widens slightly as it turns
east at its northern and southern ends.")
(NORTH TO NORTH-CORRIDOR)
(SOUTH TO SOUTH-CORRIDOR)
(FLAGS RLANDBIT ONBIT)>
<ROOM SOUTH-CORRIDOR
(IN ROOMS)
(DESC "South Corridor")
(LDESC " ")
(EAST TO EAST-CORRIDOR)
(WEST TO WEST-CORRIDOR)
(NORTH PER BRONZE-DOOR-EXIT)
(SOUTH TO BEHIND-DOOR)
(ACTION SOUTH-CORRIDOR-F)
(FLAGS RLANDBIT ONBIT)
(GLOBAL BRONZE-DOOR)>
<ROOM BEHIND-DOOR
(IN ROOMS)
(DESC "Narrow Corridor")
(LDESC " ")
(NORTH TO SOUTH-CORRIDOR)
(SOUTH TO FRONT-DOOR IF DUNGEON-DOOR IS OPEN)
(ACTION BEHIND-DOOR-F)
(FLAGS RLANDBIT ONBIT)
(GLOBAL DUNGEON-DOOR)>
<ROOM FRONT-DOOR
(IN ROOMS)
(DESC "Dungeon Entrance")
(LDESC " ")
(NORTH TO BEHIND-DOOR IF DUNGEON-DOOR IS OPEN)
(ENTER TO BEHIND-DOOR IF DUNGEON-DOOR IS OPEN)
(SOUTH PER MRGO)
(SE TO MRDE)
(SW TO MRDW)
(ACTION FRONT-DOOR-F)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MASTER DUNGEON-DOOR WOODEN-WALL)>
<OBJECT WOODEN-WALL
(IN LOCAL-GLOBALS)
(DESC "wooden wall")
(SYNONYM WALL)
(ADJECTIVE WOOD WOODEN)
(ACTION WOODEN-WALL-F)>
<ROOM NORTH-CORRIDOR
(IN ROOMS)
(DESC "North Corridor")
(LDESC " ")
(EAST TO EAST-CORRIDOR)
(WEST TO WEST-CORRIDOR)
(NORTH TO PARAPET)
(SOUTH TO CELL IF CELL-DOOR IS OPEN)
(ENTER TO CELL IF CELL-DOOR IS OPEN)
(ACTION NORTH-CORRIDOR-F)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MASTER CELL-DOOR PARAPET-OBJ FLAMING-PIT)>
<ROOM PARAPET
(IN ROOMS)
(DESC "Parapet")
(LDESC " ")
(SOUTH TO NORTH-CORRIDOR)
(NORTH "You would be burned to a crisp in no time.")
(ACTION PARAPET-F)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MASTER PARAPET-OBJ FLAMING-PIT)>
<ROOM CELL
(IN ROOMS)
(DESC "Prison Cell")
(LDESC " ")
(OUT TO NORTH-CORRIDOR IF CELL-DOOR IS OPEN)
(NORTH TO NORTH-CORRIDOR IF CELL-DOOR IS OPEN)
(ACTION CELL-ROOM)
(FLAGS RLANDBIT ONBIT)
(GLOBAL MASTER BRONZE-DOOR CELL-DOOR PARAPET-OBJ FLAMING-PIT)>
<ROOM PRISON-CELL
(IN ROOMS)
(DESC "Prison Cell")
(LDESC
"You are in a bare prison cell. Its wooden door is securely fastened, and
you can see only flames and smoke through its small window.")
(OUT "The door is securely fastened.")
(FLAGS RLANDBIT ONBIT)
(GLOBAL LOCKED-DOOR MASTER FLAMING-PIT)>
<ROOM GOOD-CELL
(IN ROOMS)
(DESC "Prison Cell")
(LDESC " ")
(OUT TO NIRVANA IF BRONZE-DOOR IS OPEN)
(SOUTH TO NIRVANA IF BRONZE-DOOR IS OPEN)
(ACTION NCELL-ROOM)
(FLAGS RLANDBIT ONBIT)
(GLOBAL GOOD-LOCKED-DOOR MASTER BRONZE-DOOR FLAMING-PIT)>
<ROOM NIRVANA
(IN ROOMS)
(DESC "Treasury of Zork")
(LDESC
"This is a large room, richly appointed in a style that bespeaks exquisite
taste. To judge from its contents, it is the ultimate storehouse of the
wealth of the Great Underground Empire.|
|
There are chests here containing precious jewels, mountains of
zorkmids, rare paintings, ancient statuary, and beguiling curios.|
|
On one wall is an annotated map of the Empire, showing the locations of
various troves of treasure, and of several superior scenic views.|
|
On a desk at the far end of the room may be found stock certificates
representing a controlling interest in FrobozzCo International, the
multinational conglomerate and parent company of
the Frobozz Magic Boat Co., etc.|
")
(ACTION NIRVANA-F)
(FLAGS RLANDBIT ONBIT)>
\
<OBJECT RUNES
(IN MSTAIRS)
(DESC "runes")
(SYNONYM ENGRAV TEXT WALL RUNES)
(ADJECTIVE CARVED)
(FLAGS NDESCBIT READBIT)
(ACTION RUNES-F)>
<OBJECT T-BAR
(IN IN-MIRROR)
(DESC "T-bar")
(SYNONYM T-BAR BAR)
(FLAGS NDESCBIT)
(ACTION T-BAR-F)>
<OBJECT BLACK-PANEL
(IN IN-MIRROR)
(DESC "black panel")
(SYNONYM WALL PANEL)
(ADJECTIVE BLACK)
(FLAGS NDESCBIT)
(ACTION MPANELS)>
<OBJECT BRONZE-DOOR
(IN LOCAL-GLOBALS)
(DESC "bronze door")
(SYNONYM DOOR)
(ADJECTIVE BRONZE)
(FLAGS CONTBIT DOORBIT INVISIBLE)
(ACTION BRONZE-DOOR-F)>
<OBJECT CELL-DOOR
(IN LOCAL-GLOBALS)
(DESC "cell door")
(SYNONYM DOOR)
(ADJECTIVE WOOD WOODEN CELL)
(FLAGS CONTBIT DOORBIT)
(ACTION CELL-DOOR-F)>
<OBJECT COMPASS-ARROW
(IN IN-MIRROR)
(DESC "compass arrow")
(SYNONYM ARROW)
(ADJECTIVE COMPASS)
(FLAGS NDESCBIT)>
<OBJECT DIAL-BUTTON
(IN PARAPET)
(DESC "large button")
(SYNONYM BUTTON)
(ADJECTIVE LARGE)
(FLAGS NDESCBIT)
(ACTION DIALBUTTON)>
<OBJECT GOOD-LOCKED-DOOR
(IN LOCAL-GLOBALS)
(DESC "cell door")
(SYNONYM DOOR)
(ADJECTIVE LOCKED WOOD WOODEN CELL)
(FLAGS NDESCBIT)
(ACTION LOCKED-DOOR-F)>
<OBJECT LOCKED-DOOR
(IN LOCAL-GLOBALS)
(DESC "cell door")
(SYNONYM DOOR)
(ADJECTIVE LOCKED WOOD WOODEN CELL)
(FLAGS NDESCBIT)
(ACTION LOCKED-DOOR-F)>
<OBJECT LONG-POLE
(IN IN-MIRROR)
(DESC "long pole")
(SYNONYM POLE)
(ADJECTIVE LONG CENTER)
(FLAGS NDESCBIT)>
<OBJECT MAHOGANY-PANEL
(IN IN-MIRROR)
(DESC "mahogany panel")
(SYNONYM WALL PANEL)
(ADJECTIVE MAHOGANY)
(FLAGS NDESCBIT)
(ACTION MENDS)>
<OBJECT FLAMING-PIT
(IN LOCAL-GLOBALS)
(DESC "flaming pit")
(SYNONYM PIT ABYSS)
(ADJECTIVE FIERY FLAMING)
(FLAGS NDESCBIT)
(ACTION FLAMING-PIT-F)>
<OBJECT PARAPET-OBJ
(IN LOCAL-GLOBALS)
(DESC "parapet")
(SYNONYM PARAPET)
(FLAGS NDESCBIT)
(ACTION PARAPET-OBJ-F)>
<OBJECT PINE-PANEL
(IN IN-MIRROR)
(DESC "pine panel")
(SYNONYM PANEL WALL)
(ADJECTIVE PINE)
(FLAGS NDESCBIT)
(ACTION MENDS)>
<OBJECT BEAM
(IN MREYE)
(DESC "red beam of light")
(SYNONYM BEAM LIGHT)
(ADJECTIVE RED)
(FLAGS NDESCBIT OPENBIT CONTBIT)
(CAPACITY 100)
(ACTION BEAM-FUNCTION)>
<OBJECT RED-BUTTON
(IN MR-ANTE)
(DESC "red button")
(SYNONYM BUTTON)
(ADJECTIVE RED)
(FLAGS NDESCBIT)
(ACTION MRSWITCH)>
<OBJECT RED-PANEL
(IN IN-MIRROR)
(DESC "red panel")
(SYNONYM PANEL WALL)
(ADJECTIVE RED)
(FLAGS NDESCBIT)
(ACTION MPANELS)>
<OBJECT SHORT-POLE
(IN IN-MIRROR)
(DESC "short pole")
(SYNONYM POLE POST HANDGRIP GRIP)
(ADJECTIVE SHORT SMALL HAND)
(FLAGS NDESCBIT)
(ACTION SHORT-POLE-F)>
<OBJECT SUNDIAL
(IN PARAPET)
(DESC "sundial")
(SYNONYM DIAL INDICATOR ARROW SUNDIAL)
(ADJECTIVE INDICATOR SUN)
(FLAGS NDESCBIT TURNBIT)
(ACTION DIAL)>
<OBJECT YELLOW-PANEL
(IN IN-MIRROR)
(DESC "yellow panel")
(SYNONYM PANEL WALL)
(ADJECTIVE YELLOW)
(FLAGS NDESCBIT)
(ACTION MPANELS)>
<OBJECT WHITE-PANEL
(IN IN-MIRROR)
(DESC "white panel")
(SYNONYM PANEL WALL)
(ADJECTIVE WHITE)
(FLAGS NDESCBIT)
(ACTION MPANELS)>
<OBJECT WOODEN-BAR
(IN IN-MIRROR)
(DESC "wooden bar")
(SYNONYM BAR)
(ADJECTIVE WOOD WOODEN)
(FLAGS NDESCBIT)>
<OBJECT DUNGEON-DOOR
(IN LOCAL-GLOBALS)
(DESC "wooden door")
(SYNONYM DOOR)
(ADJECTIVE WOOD WOODEN)
(FLAGS NDESCBIT DOORBIT CONTBIT)
(ACTION DUNGEON-DOOR-F)>
<OBJECT SECRET-DOOR
(IN LOCAL-GLOBALS)
(DESC "secret door")
(SYNONYM DOOR)
(ADJECTIVE SECRET)
(FLAGS DOORBIT CONTBIT INVISIBLE)
(ACTION SECRET-DOOR-F)>
<OBJECT OLD-MAN
(DESC "old man")
(SYNONYM MAN)
(ADJECTIVE OLD)
(FLAGS VICBIT VILLAIN)
(ACTION OLD-MAN-F)
(DESCFCN OLD-MAN-F)>
<OBJECT CP-HOLE
(IN CP-ANTE)
(DESC "hole")
(SYNONYM HOLE)
(ADJECTIVE ROUND)
(FLAGS NDESCBIT)
(ACTION CP-HOLE-F)>

380
gmain.cmp Normal file
View file

@ -0,0 +1,380 @@
;COMPARISON OF SS:<ZORK2>GMAIN.ZIL.28 AND SS:<ZORK3.R17>MAIN.ZIL.31
;OPTIONS ARE /S /9
**** FILE SS:<ZORK2>GMAIN.ZIL.28, 1-1 (0)
"Generic MAIN file for
The ZORK Trilogy
started on 7/28/83 by MARC"
<GLOBAL PLAYER <>>
<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>
<GLOBAL DEBUG <>>
;"GO now lives in SPECIAL.ZIL"
<ROUTINE MAIN-LOOP ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP)
**** FILE SS:<ZORK3.R17>MAIN.ZIL.31, 1-1 (0)
"MAIN3 for
Zork III: The Dungeon Master
Copyright 1982 Infocom, Inc. All Rights Reserved.
"
<GLOBAL PLAYER <>>
<GLOBAL P-WON <>>
<CONSTANT M-FATAL 2>
<CONSTANT M-HANDLED 1>
<CONSTANT M-NOT-HANDLED <>>
<CONSTANT M-BEG 1>
<CONSTANT M-END <>>
<CONSTANT M-ENTER 2>
<CONSTANT M-LOOK 3>
<CONSTANT M-FLASH 4>
<CONSTANT M-OBJDESC 5>
<ROUTINE GO ()
;"put interrupts on clock chain"
<QUEUE I-LANTERN 200>
;"clean up junk compiler can't do"
<SETG CURRENT-LAMP ,LAMP>
<PUT ,CPOBJS <* 8 21> 1>
<PUT ,CPOBJS <+ <* 8 21> 1> ,LORE-BOOK>
<PUT ,CPOBJS <* 8 32> 1>
<PUT ,CPOBJS <+ <* 8 32> 1> ,CP-SLOT>
;"set up and go"
<SETG LIT T>
<SETG WINNER ,ADVENTURER>
<SETG PLAYER ,WINNER>
<SETG MLOC ,MRB>
<SETG HERE ,ZORK2-STAIR>
<ENABLE <QUEUE I-CLEFT <+ 70 <RANDOM 70>>>>
<ENABLE <QUEUE I-VIEW-CHANGE 4>>
<SETG P-IT-LOC ,HERE>
<SETG P-IT-OBJECT <>>
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
<TELL
"As in a dream, you see yourself tumbling down a great, dark staircase.
All about you are shadowy images of struggles against fierce opponents
and diabolical traps. These give way to another round of images: of
imposing stone figures, a cool, clear lake, and, now, of an old, yet
oddly youthful man. He turns toward you slowly, his long, silver hair
dancing about him in a fresh breeze. \"You have reached the final test,
my friend! You are proved clever and powerful, but this is not yet
enough! Seek me when you feel yourself worthy!\" The dream dissolves
around you as his last words echo through the void...." CR>
<CRLF>
<V-VERSION>
<CRLF>)>
<MOVE ,WINNER ,HERE>
<MOVE ,LAMP ,HERE>
<V-LOOK>
<MAIN-LOOP>
<AGAIN>>
<ROUTINE MAIN-LOOP ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP)
#DECL ((CNT OCNT ICNT NUM) FIX (V) <OR 'T FIX FALSE> (OBJ) <OR FALSE OBJECT>
(OBJ1) OBJECT (TBL) TABLE (PTBL) <OR FALSE ATOM>)
***************
**** FILE SS:<ZORK2>GMAIN.ZIL.28, 2-31 (1342)
<TELL "It's not clear what you're referring to." CR>
<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 to take." CR>)>
<RETURN>)
(T
<COND (.PTBL <SET OBJ1 <GET ,P-PRSO .CNT>>)
(T <SET OBJ1 <GET ,P-PRSI .CNT>>)>
<SETG PRSO <COND (.PTBL .OBJ1) (T .OBJ)>>
<SETG PRSI <COND (.PTBL .OBJ) (T .OBJ1)>>
<COND (<OR <G? .NUM 1>
<EQUAL? <GET <GET ,P-ITBL ,P-NC1>
0>
,W?ALL>>
<SET V <LOC ,WINNER>>
<COND (<EQUAL? .OBJ1
,NOT-HERE-OBJECT>
<SETG P-NOT-HERE
<+ ,P-NOT-HERE 1>>
<AGAIN>)
(<AND <VERB? TAKE>
,PRSI
<EQUAL? <GET <GET ,P-ITBL
,P-NC1>
0>
,W?ALL>
<NOT <IN? ,PRSO ,PRSI>>>
<AGAIN>)
(<AND <EQUAL? ,P-GETFLAGS
,P-ALL>
<VERB? TAKE>
<OR <AND <NOT <EQUAL?
<LOC .OBJ1>
,WINNER
.V>>
<NOT <FSET?
<LOC .OBJ1>
,SURFACEBIT>>>
<NOT <OR <FSET? .OBJ1
,TAKEBIT>
<FSET? .OBJ1
,TRYTAKEBIT>>>>>
<AGAIN>)
(T
<COND (<EQUAL? .OBJ1 ,IT>
<PRINTD ,P-IT-OBJECT>)
(T <PRINTD .OBJ1>)>
<TELL ": ">)>)>
<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 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 L-PRSA <>>
<GLOBAL L-PRSO <>>
<GLOBAL L-PRSI <>>
<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>)>
**** FILE SS:<ZORK3.R17>MAIN.ZIL.31, 2-33 (2759)
<TELL "There isn't anything to ">
<SET TMP <GET ,P-ITBL ,P-VERBN>>
<COND (,P-OFLAG
<PRINTB <GET .TMP 0>>)
(T
<WORD-PRINT <GETB .TMP 2> <GETB .TMP 3>>)>
<TELL "!" CR>
<SET V <>>)>)
(T
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .NUM> <RETURN>)
(T
<COND (.PTBL <SET OBJ1 <GET ,P-PRSO .CNT>>)
(T <SET OBJ1 <GET ,P-PRSI .CNT>>)>
<COND (<G? .NUM 1>
<PRINTD .OBJ1>
<TELL ": ">)>
<SETG PRSO <COND (.PTBL .OBJ1) (T .OBJ)>>
<SETG PRSI <COND (.PTBL .OBJ) (T .OBJ1)>>
<SET V <PERFORM ,PRSA ,PRSO ,PRSI>>
<COND (<==? .V ,M-FATAL> <RETURN>)>)>>)>
<COND (<VERB? AGAIN WALK SAVE RESTORE SCORE VERSION WAIT> T)
(T
<SETG L-PRSA ,PRSA>
<SETG L-PRSO ,PRSO>
<SETG L-PRSI ,PRSI>)>
<SETG MOVES <+ ,MOVES 1>>
<COND (<==? .V ,M-FATAL> <SETG P-CONT <>>)>)
(T
<SETG P-CONT <>>)>
<COND (,P-WON
<COND (<VERB? TELL BRIEF SUPER-BRIEF VERBOSE SAVE VERSION> T)
(T <SET V <CLOCKER>>)>)>>>
<GLOBAL L-PRSA <>>
<GLOBAL L-PRSO <>>
<GLOBAL L-PRSI <>>
<ROUTINE PERFORM (A "OPTIONAL" (O <>) (I <>) "AUX" V OA OO OI)
#DECL ((A) FIX (O) <OR FALSE OBJECT FIX> (I) <OR FALSE OBJECT> (V) ANY)
***************
**** FILE SS:<ZORK2>GMAIN.ZIL.28, 3-25 (4793)
<COND (<AND ,PRSO <NOT <EQUAL? ,PRSI ,IT>> <NOT <VERB? WALK>>>
<SETG P-IT-OBJECT ,PRSO>
<SETG P-IT-LOC ,HERE>)>
<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)
#DECL ((A) FIX (O) <OR FALSE OBJECT FIX> (I) <OR FALSE OBJECT> (V) ANY)
<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 <EQUAL? ,P-IT-LOC ,HERE>>>
<TELL "I don't see what you are referring to." CR>
<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 P-IT-LOC ,HERE>)>
<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>>
>)>
**** FILE SS:<ZORK3.R17>MAIN.ZIL.31, 3-15 (4360)
<COND (<AND ,PRSO <NOT <VERB? WALK>>>
<SETG P-IT-OBJECT ,PRSO>
<SETG P-IT-LOC ,HERE>)>
<SETG PRSI .I>
<COND (<SET V <APPLY <GETP ,WINNER ,P?ACTION>>> .V)
(<SET V <APPLY <GETP <LOC ,WINNER> ,P?ACTION> ,M-BEG>> .V)
(<SET V <APPLY <GET ,PREACTIONS .A>>> .V)
(<AND .I <SET V <APPLY <GETP .I ,P?ACTION>>>> .V)
(<AND .O
<NOT <==? .A ,V?WALK>>
<SET V <APPLY <GETP .O ,P?ACTION>>>>
.V)
(<SET V <APPLY <GET ,ACTIONS .A>>> .V)>
<COND (<NOT <==? .V ,M-FATAL>>
<COND (<==? <LOC ,WINNER> ,PRSO>
<SETG PRSO <>>)>
<SET V <APPLY <GETP <LOC ,WINNER> ,P?ACTION> ,M-END>>)>
<SETG PRSA .OA>
<SETG PRSO .OO>
<SETG PRSI .OI>
.V>
***************

19
macros.zap Normal file
View file

@ -0,0 +1,19 @@
.FUNCT ZPROB,BASE
ZERO? LUCKY /?ELS5
RANDOM 100
GRTR? BASE,STACK /TRUE
RFALSE
?ELS5: RANDOM 300
GRTR? BASE,STACK /TRUE
RFALSE
.FUNCT PICK-ONE,FROB
GET FROB,0
RANDOM STACK
GET FROB,STACK
RSTACK
.ENDI

94
macros.zil Normal file
View file

@ -0,0 +1,94 @@
<ZSTR-OFF>
<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 "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>
<MAPRET <FORM PRINTI .E>>)
(<TYPE? .E FORM LVAL GVAL>
<MAPRET <FORM PRINT .E>>)
(ELSE <ERROR UNKNOWN-TYPE .E>)>>>>>
<DEFMAC VERB? ("TUPLE" ATMS "AUX" (O ()) (L ()))
<REPEAT ()
<COND (<EMPTY? .ATMS>
<RETURN!- <COND (<LENGTH? .O 1> <NTH .O 1>)
(ELSE <FORM OR !.O>)>>)>
<REPEAT ()
<COND (<EMPTY? .ATMS> <RETURN!->)>
<SET ATM <NTH .ATMS 1>>
<SET L
(<FORM GVAL <PARSE <STRING "V?" <SPNAME .ATM>>>>
!.L)>
<SET ATMS <REST .ATMS>>
<COND (<==? <LENGTH .L> 3> <RETURN!->)>>
<SET O (<FORM EQUAL? ',PRSA !.L> !.O)>
<SET L ()>>>
<DEFMAC RFATAL ()
'<PROG () <PUSH 2> <RSTACK>>>
<DEFMAC PROB ('BASE? "OPTIONAL" 'LOSER?)
<COND (<ASSIGNED? LOSER?> <FORM ZPROB .BASE?>)
(ELSE <FORM G? .BASE? '<RANDOM 100>>)>>
<ROUTINE ZPROB
(BASE)
<COND (,LUCKY <G? .BASE <RANDOM 100>>)
(ELSE <G? .BASE <RANDOM 300>>)>>
<ROUTINE PICK-ONE (FROB)
<GET .FROB <RANDOM <GET .FROB 0>>>>
<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)>>
<ZSTR-ON>

204
main.zap Normal file
View file

@ -0,0 +1,204 @@
.FUNCT GO
START::
?FCN: CALL QUEUE,I-LANTERN,200
SET 'CURRENT-LAMP,LAMP
MUL 8,21
PUT CPOBJS,STACK,1
MUL 8,21
ADD STACK,1
PUT CPOBJS,STACK,LORE-BOOK
MUL 8,32
PUT CPOBJS,STACK,1
MUL 8,32
ADD STACK,1
PUT CPOBJS,STACK,CP-SLOT
SET 'LIT,TRUE-VALUE
SET 'WINNER,ADVENTURER
SET 'PLAYER,WINNER
SET 'MLOC,MRB
SET 'HERE,ZORK2-STAIR
RANDOM 70
ADD 70,STACK
CALL QUEUE,I-CLEFT,STACK
PUT STACK,0,1
CALL QUEUE,I-VIEW-CHANGE,4
PUT STACK,0,1
SET 'P-IT-LOC,HERE
SET 'P-IT-OBJECT,FALSE-VALUE
FSET? HERE,TOUCHBIT /?CND1
PRINTI "As in a dream, you see yourself tumbling down a great, dark staircase. All about you are shadowy images of struggles against fierce opponents and diabolical traps. These give way to another round of images: of imposing stone figures, a cool, clear lake, and, now, of an old, yet oddly youthful man. He turns toward you slowly, his long, silver hair dancing about him in a fresh breeze. ""You have reached the final test, my friend! You are proved clever and powerful, but this is not yet enough! Seek me when you feel yourself worthy!"" The dream dissolves around you as his last words echo through the void...."
CRLF
CRLF
CALL V-VERSION
CRLF
?CND1: MOVE WINNER,HERE
MOVE LAMP,HERE
CALL V-LOOK
CALL MAIN-LOOP
JUMP ?FCN
.FUNCT MAIN-LOOP,ICNT,OCNT,NUM,CNT,OBJ,TBL,V,PTBL,OBJ1,TMP,?TMP1
?PRG1: SET 'CNT,0
SET 'OBJ,FALSE-VALUE
SET 'PTBL,TRUE-VALUE
CALL PARSER >P-WON
ZERO? P-WON /?ELS5
GET P-PRSI,P-MATCHLEN >ICNT
GET P-PRSO,P-MATCHLEN >OCNT
ZERO? OCNT \?ELS10
PUSH OCNT
JUMP ?CND6
?ELS10: GRTR? OCNT,1 \?ELS12
SET 'TBL,P-PRSO
ZERO? ICNT \?ELS15
SET 'OBJ,FALSE-VALUE
JUMP ?CND13
?ELS15: GET P-PRSI,1 >OBJ
?CND13: PUSH OCNT
JUMP ?CND6
?ELS12: GRTR? ICNT,1 \?ELS19
SET 'PTBL,FALSE-VALUE
SET 'TBL,P-PRSI
GET P-PRSO,1 >OBJ
PUSH ICNT
JUMP ?CND6
?ELS19: PUSH 1
?CND6: SET 'NUM,STACK
ZERO? OBJ \?CND22
EQUAL? ICNT,1 \?CND22
GET P-PRSI,1 >OBJ
?CND22: EQUAL? PRSA,V?WALK \?ELS29
CALL PERFORM,PRSA,PRSO >V
JUMP ?CND27
?ELS29: ZERO? NUM \?ELS31
GETB P-SYNTAX,P-SBITS
BAND STACK,P-SONUMS
ZERO? STACK \?ELS34
CALL PERFORM,PRSA >V
SET 'PRSO,FALSE-VALUE
JUMP ?CND27
?ELS34: ZERO? LIT \?ELS36
PRINTI "It's too dark to see."
CRLF
JUMP ?CND27
?ELS36: PRINTI "There isn't anything to "
GET P-ITBL,P-VERBN >TMP
ZERO? P-OFLAG /?ELS45
GET TMP,0
PRINTB STACK
JUMP ?CND43
?ELS45: GETB TMP,2 >?TMP1
GETB TMP,3
CALL WORD-PRINT,?TMP1,STACK
?CND43: PRINTI "!"
CRLF
SET 'V,FALSE-VALUE
JUMP ?CND27
?ELS31:
?PRG53: IGRTR? 'CNT,NUM \?ELS57
JUMP ?CND27
?ELS57: ZERO? PTBL /?ELS62
GET P-PRSO,CNT >OBJ1
JUMP ?CND60
?ELS62: GET P-PRSI,CNT >OBJ1
?CND60: GRTR? NUM,1 \?CND66
PRINTD OBJ1
PRINTI ": "
?CND66: ZERO? PTBL /?ELS75
PUSH OBJ1
JUMP ?CND71
?ELS75: PUSH OBJ
?CND71: SET 'PRSO,STACK
ZERO? PTBL /?ELS83
PUSH OBJ
JUMP ?CND79
?ELS83: PUSH OBJ1
?CND79: SET 'PRSI,STACK
CALL PERFORM,PRSA,PRSO,PRSI >V
EQUAL? V,M-FATAL \?PRG53
?CND27: EQUAL? PRSA,V?WAIT /?CND90
EQUAL? PRSA,V?VERSION,V?SCORE,V?RESTORE /?CND90
EQUAL? PRSA,V?SAVE,V?WALK,V?AGAIN \?ELS92
JUMP ?CND90
?ELS92: SET 'L-PRSA,PRSA
SET 'L-PRSO,PRSO
SET 'L-PRSI,PRSI
?CND90: EQUAL? V,M-FATAL \?CND3
SET 'P-CONT,FALSE-VALUE
JUMP ?CND3
?ELS5: SET 'P-CONT,FALSE-VALUE
?CND3: ZERO? P-WON /?PRG1
EQUAL? PRSA,V?RESTORE,V?UNSCRIPT,V?SCRIPT /?PRG1
EQUAL? PRSA,V?SCORE,V?RESTART,V?QUIT /?PRG1
EQUAL? PRSA,V?VERSION,V?SAVE,V?VERBOSE /?PRG1
EQUAL? PRSA,V?SUPER-BRIEF,V?BRIEF,V?TELL \?ELS108
JUMP ?PRG1
?ELS108: INC 'MOVES
CALL CLOCKER >V
JUMP ?PRG1
.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
EQUAL? P-IT-LOC,HERE /?CND1
PRINTI "I don't see what you are referring to."
CRLF
RETURN 2
?CND1: EQUAL? O,IT \?CND10
SET 'O,P-IT-OBJECT
?CND10: EQUAL? I,IT \?CND13
SET 'I,P-IT-OBJECT
?CND13: SET 'PRSA,A
SET 'PRSO,O
ZERO? PRSO /?CND16
EQUAL? PRSA,V?WALK /?CND16
SET 'P-IT-OBJECT,PRSO
SET 'P-IT-LOC,HERE
?CND16: SET 'PRSI,I
GETP WINNER,P?ACTION
CALL STACK >V
ZERO? V /?ELS23
JUMP ?CND21
?ELS23: LOC WINNER
GETP STACK,P?ACTION
CALL STACK,M-BEG >V
ZERO? V /?ELS25
JUMP ?CND21
?ELS25: GET PREACTIONS,A
CALL STACK >V
ZERO? V /?ELS27
JUMP ?CND21
?ELS27: ZERO? I /?ELS29
GETP I,P?ACTION
CALL STACK >V
ZERO? V /?ELS29
JUMP ?CND21
?ELS29: ZERO? O /?ELS33
EQUAL? A,V?WALK /?ELS33
GETP O,P?ACTION
CALL STACK >V
ZERO? V /?ELS33
JUMP ?CND21
?ELS33: GET ACTIONS,A
CALL STACK >V
ZERO? V /?CND21
?CND21: EQUAL? V,M-FATAL /?CND38
LOC WINNER
EQUAL? STACK,PRSO \?CND41
SET 'PRSO,FALSE-VALUE
?CND41: LOC WINNER
GETP STACK,P?ACTION
CALL STACK,M-END >V
?CND38: SET 'PRSA,OA
SET 'PRSO,OO
SET 'PRSI,OI
RETURN V
.ENDI

175
main.zil Normal file
View file

@ -0,0 +1,175 @@
"MAIN3 for
Zork III: The Dungeon Master
Copyright 1982 Infocom, Inc. All Rights Reserved.
"
<GLOBAL PLAYER <>>
<GLOBAL P-WON <>>
<CONSTANT M-FATAL 2>
<CONSTANT M-HANDLED 1>
<CONSTANT M-NOT-HANDLED <>>
<CONSTANT M-BEG 1>
<CONSTANT M-END <>>
<CONSTANT M-ENTER 2>
<CONSTANT M-LOOK 3>
<CONSTANT M-FLASH 4>
<CONSTANT M-OBJDESC 5>
<ROUTINE GO ()
;"put interrupts on clock chain"
<QUEUE I-LANTERN 200>
;"clean up junk compiler can't do"
<SETG CURRENT-LAMP ,LAMP>
<PUT ,CPOBJS <* 8 21> 1>
<PUT ,CPOBJS <+ <* 8 21> 1> ,LORE-BOOK>
<PUT ,CPOBJS <* 8 32> 1>
<PUT ,CPOBJS <+ <* 8 32> 1> ,CP-SLOT>
;"set up and go"
<SETG LIT T>
<SETG WINNER ,ADVENTURER>
<SETG PLAYER ,WINNER>
<SETG MLOC ,MRB>
<SETG HERE ,ZORK2-STAIR>
<ENABLE <QUEUE I-CLEFT <+ 70 <RANDOM 70>>>>
<ENABLE <QUEUE I-VIEW-CHANGE 4>>
<SETG P-IT-LOC ,HERE>
<SETG P-IT-OBJECT <>>
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
<TELL
"As in a dream, you see yourself tumbling down a great, dark staircase.
All about you are shadowy images of struggles against fierce opponents
and diabolical traps. These give way to another round of images: of
imposing stone figures, a cool, clear lake, and, now, of an old, yet
oddly youthful man. He turns toward you slowly, his long, silver hair
dancing about him in a fresh breeze. \"You have reached the final test,
my friend! You are proved clever and powerful, but this is not yet
enough! Seek me when you feel yourself worthy!\" The dream dissolves
around you as his last words echo through the void...." CR>
<CRLF>
<V-VERSION>
<CRLF>)>
<MOVE ,WINNER ,HERE>
<MOVE ,LAMP ,HERE>
<V-LOOK>
<MAIN-LOOP>
<AGAIN>>
<ROUTINE MAIN-LOOP ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP)
#DECL ((CNT OCNT ICNT NUM) FIX (V) <OR 'T FIX FALSE> (OBJ) <OR FALSE OBJECT>
(OBJ1) OBJECT (TBL) TABLE (PTBL) <OR FALSE ATOM>)
<REPEAT ()
<SET CNT 0>
<SET OBJ <>>
<SET PTBL T>
<COND (<SETG P-WON <PARSER>>
<SET ICNT <GET ,P-PRSI ,P-MATCHLEN>>
<SET NUM
<COND (<0? <SET OCNT <GET ,P-PRSO ,P-MATCHLEN>>> .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 (<==? ,PRSA ,V?WALK> <SET V <PERFORM ,PRSA ,PRSO>>)
(<0? .NUM>
<COND (<0? <BAND <GETB ,P-SYNTAX ,P-SBITS> ,P-SONUMS>>
<SET V <PERFORM ,PRSA>>
<SETG PRSO <>>)
(<NOT ,LIT>
<TELL "It's too dark to see." CR>)
(T
<TELL "There isn't anything to ">
<SET TMP <GET ,P-ITBL ,P-VERBN>>
<COND (,P-OFLAG
<PRINTB <GET .TMP 0>>)
(T
<WORD-PRINT <GETB .TMP 2> <GETB .TMP 3>>)>
<TELL "!" CR>
<SET V <>>)>)
(T
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .NUM> <RETURN>)
(T
<COND (.PTBL <SET OBJ1 <GET ,P-PRSO .CNT>>)
(T <SET OBJ1 <GET ,P-PRSI .CNT>>)>
<COND (<G? .NUM 1>
<PRINTD .OBJ1>
<TELL ": ">)>
<SETG PRSO <COND (.PTBL .OBJ1) (T .OBJ)>>
<SETG PRSI <COND (.PTBL .OBJ) (T .OBJ1)>>
<SET V <PERFORM ,PRSA ,PRSO ,PRSI>>
<COND (<==? .V ,M-FATAL> <RETURN>)>)>>)>
<COND (<VERB? AGAIN WALK 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
<SETG MOVES <+ ,MOVES 1>>
<SET V <CLOCKER>>)>)>>>
<GLOBAL L-PRSA <>>
<GLOBAL L-PRSO <>>
<GLOBAL L-PRSI <>>
<ROUTINE PERFORM (A "OPTIONAL" (O <>) (I <>) "AUX" V OA OO OI)
#DECL ((A) FIX (O) <OR FALSE OBJECT FIX> (I) <OR FALSE OBJECT> (V) ANY)
<SET OA ,PRSA>
<SET OO ,PRSO>
<SET OI ,PRSI>
<COND (<AND <EQUAL? ,IT .I .O>
<NOT <EQUAL? ,P-IT-LOC ,HERE>>>
<TELL "I don't see what you are referring to." CR>
<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 P-IT-LOC ,HERE>)>
<SETG PRSI .I>
<COND (<SET V <APPLY <GETP ,WINNER ,P?ACTION>>> .V)
(<SET V <APPLY <GETP <LOC ,WINNER> ,P?ACTION> ,M-BEG>> .V)
(<SET V <APPLY <GET ,PREACTIONS .A>>> .V)
(<AND .I <SET V <APPLY <GETP .I ,P?ACTION>>>> .V)
(<AND .O
<NOT <==? .A ,V?WALK>>
<SET V <APPLY <GETP .O ,P?ACTION>>>>
.V)
(<SET V <APPLY <GET ,ACTIONS .A>>> .V)>
<COND (<NOT <==? .V ,M-FATAL>>
<COND (<==? <LOC ,WINNER> ,PRSO>
<SETG PRSO <>>)>
<SET V <APPLY <GETP <LOC ,WINNER> ,P?ACTION> ,M-END>>)>
<SETG PRSA .OA>
<SETG PRSO .OO>
<SETG PRSI .OI>
.V>

1220
parser.zap Normal file

File diff suppressed because it is too large Load diff

1135
parser.zil Normal file

File diff suppressed because it is too large Load diff

1219
shadow.zap Normal file

File diff suppressed because it is too large Load diff

2236
shadow.zil Normal file

File diff suppressed because it is too large Load diff

2
syntax.zap Normal file
View file

@ -0,0 +1,2 @@
.ENDI

610
syntax.zil Normal file
View file

@ -0,0 +1,610 @@
"SYNTAX2 for
Zork: The Wizard of Frobozz
The Great Underground Empire (Part 2)
(c) Copyright 1981 Infocom, Inc. All Rights Reserved.
"
"SUBTITLE VOCABULARY"
<BUZZ A AN THE IS AND OF THEN ALL ONE BUT EXCEPT \. \, \" YES NO Y FROTZ OZMOO
HERE>
<SYNONYM WITH USING THROUGH>
<SYNONYM ON ONTO>
<SYNONYM IN INSIDE INTO>
<SYNONYM UNDER BELOW BENEATH UNDERNEATH>
<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>
\
"ZORK game commands"
<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 $VERIFY = V-$VERIFY>
<SYNTAX VERSION = V-VERSION>
<SYNTAX VERBOSE = V-VERBOSE>
\
"SUBTITLE REAL VERBS"
<SYNTAX AGAIN = V-AGAIN>
<SYNONYM AGAIN G>
<SYNTAX ANSWER = V-ANSWER>
<SYNTAX ANSWER OBJECT = V-REPLY>
<SYNONYM ANSWER REPLY>
<SYNTAX APPLY OBJECT TO OBJECT = V-PUT PRE-PUT>
<SYNTAX ATTACK
OBJECT (FIND VILLAIN) (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
= V-ATTACK>
<SYNONYM ATTACK FIGHT HURT INJURE HIT>
<SYNTAX BACK = V-BACK>
<SYNTAX BLAST = V-BLAST>
<SYNTAX BOARD OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM)
= V-BOARD PRE-BOARD>
<SYNTAX BUG = V-BUG>
<SYNTAX BURN
OBJECT (FIND BURNBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH
OBJECT (FIND FLAMEBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE)
= V-BURN PRE-BURN>
<SYNTAX BURN
DOWN
OBJECT (FIND BURNBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH
OBJECT (FIND FLAMEBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE)
= V-BURN PRE-BURN>
<SYNONYM BURN INCINERATE IGNITE>
<SYNTAX CHOMP = V-CHOMP>
<SYNONYM CHOMP LOSE BARF>
<SYNTAX CLIMB UP OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-UP>
<SYNTAX CLIMB DOWN OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX CLIMB OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-FOO>
<SYNTAX CLIMB IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNTAX CLIMB ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNONYM CLIMB SIT>
<SYNTAX CLOSE
OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-CLOSE>
<SYNTAX COUNT OBJECT = V-COUNT>
<SYNONYM COUNT>
<SYNTAX CROSS OBJECT = V-CROSS>
<SYNONYM CROSS FORD>
<SYNTAX CUT OBJECT WITH OBJECT (FIND WEAPONBIT) (CARRIED HELD) = V-CUT>
<SYNONYM CUT SLICE PIERCE>
<SYNTAX CURSE = V-CURSES>
<SYNTAX CURSE OBJECT (FIND VILLAIN) = V-CURSES>
<SYNONYM CURSE DAMN>
<SYNTAX DEFLATE OBJECT = V-DEFLATE>
<SYNTAX DIG IN OBJECT = V-DIG PRE-DIG>
<SYNTAX DIG
OBJECT ;(FIND DIGBIT) (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND TOOLBIT) (HELD CARRIED HAVE)
= V-DIG PRE-DIG ;*>
<SYNTAX DIG
IN
OBJECT ;(FIND DIGBIT) (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND TOOLBIT) (HELD CARRIED HAVE)
= V-DIG PRE-DIG>
<SYNTAX DISEMBARK OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM)
= V-DISEMBARK>
<SYNTAX DRINK
OBJECT (FIND DRINKBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-DRINK>
<SYNTAX DRINK FROM OBJECT (HELD CARRIED) = V-DRINK-FROM>
<SYNONYM DRINK IMBIBE SWALLOW>
<SYNTAX DROP OBJECT (HELD MANY HAVE) = V-DROP ;*>
<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 PRE-PUT>
<SYNONYM DROP RELEASE>
<SYNTAX LEAN ON OBJECT (HELD HAVE) = V-LEAN-ON>
<SYNTAX EAT
OBJECT (FIND FOODBIT) (HELD CARRIED ON-GROUND IN-ROOM MANY)
= V-EAT>
<SYNONYM EAT CONSUME TASTE>
<SYNTAX ENTER = V-ENTER>
<SYNTAX ENTER OBJECT = V-THROUGH>
<SYNTAX EXIT = V-EXIT>
<SYNTAX EXIT OBJECT = V-EXIT>
<SYNTAX EXAMINE OBJECT = V-EXAMINE>
<SYNTAX EXAMINE IN OBJECT (HELD CARRIED IN-ROOM ON-GROUND MANY)
= V-LOOK-INSIDE>
<SYNTAX EXAMINE ON OBJECT (HELD CARRIED IN-ROOM ON-GROUND MANY)
= V-LOOK-INSIDE>
<SYNONYM EXAMINE DESCRIBE WHAT WHATS>
<SYNTAX EXORCISE OBJECT = V-EXORCISE>
<SYNTAX EXORCISE OUT OBJECT (FIND VILLAIN) = V-EXORCISE>
<SYNTAX EXORCISE AWAY OBJECT (FIND VILLAIN) = V-EXORCISE>
<SYNONYM EXORCISE BANISH CAST DRIVE BEGONE>
<SYNTAX EXTINGUISH
OBJECT (FIND LIGHTBIT) (MANY HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE)
= V-LAMP-OFF>
<SYNONYM EXTINGUISH DOUSE>
<SYNTAX FILL
OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH
OBJECT
= V-FILL>
<SYNTAX FILL
OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-FILL>
<SYNTAX FIND OBJECT
= V-FIND>
<SYNONYM FIND WHERE SEEK SEE>
<SYNTAX FOLLOW = V-FOLLOW>
<SYNTAX FOLLOW OBJECT = V-FOLLOW>
<SYNONYM FOLLOW PURSUE CHASE COME>
<SYNTAX GIVE
OBJECT (MANY HELD HAVE ;CARRIED ;ON-GROUND ;IN-ROOM)
TO
OBJECT (FIND VICBIT) (ON-GROUND)
= V-GIVE PRE-GIVE>
<SYNTAX GIVE
OBJECT (FIND VICBIT) (ON-GROUND)
OBJECT (MANY HELD HAVE)
= V-SGIVE PRE-SGIVE>
<SYNONYM GIVE HAND DONATE OFFER FEED>
<SYNTAX HELLO = V-HELLO ;*>
<SYNTAX HELLO OBJECT = V-HELLO>
<SYNONYM HELLO HI>
<SYNTAX BLOW OUT OBJECT = V-LAMP-OFF>
<SYNTAX BLOW UP
OBJECT
WITH
OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED)
= V-INFLATE ;*>
<SYNTAX BLOW UP OBJECT = V-BLAST>
<SYNTAX INFLAT
OBJECT
WITH
OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED)
= V-INFLATE>
<SYNTAX JUMP = V-LEAP>
<SYNTAX JUMP OVER OBJECT = V-LEAP>
<SYNTAX JUMP ACROSS OBJECT = V-LEAP>
<SYNTAX JUMP IN OBJECT = V-LEAP>
<SYNTAX JUMP FROM OBJECT = V-LEAP>
<SYNTAX JUMP OFF OBJECT = V-LEAP>
<SYNONYM JUMP LEAP DIVE>
<SYNTAX KICK OBJECT = V-KICK>
<SYNONYM KICK BITE TAUNT>
<SYNTAX KILL
OBJECT (FIND VILLAIN) (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
= V-KILL>
<SYNONYM KILL MURDER SLAY DISPATCH STAB>
<SYNTAX KISS OBJECT (FIND VILLAIN) (ON-GROUND IN-ROOM) = V-KISS>
<SYNTAX KNOCK AT OBJECT = V-KNOCK ;*>
<SYNTAX KNOCK ON OBJECT = V-KNOCK>
<SYNTAX KNOCK DOWN OBJECT (FIND VICBIT) (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>
<SYNTAX LIGHT
OBJECT (FIND LIGHTBIT)
(HELD CARRIED ON-GROUND IN-ROOM HAVE)
= V-LAMP-ON ;*>
<SYNTAX LIGHT
OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH
OBJECT (FIND FLAMEBIT) (HELD CARRIED HAVE)
= V-BURN PRE-BURN>
<SYNTAX LISTEN TO OBJECT = V-LISTEN>
<SYNTAX LISTEN FOR OBJECT = V-LISTEN>
<SYNTAX LOCK
OBJECT (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND TOOLBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-LOCK>
<SYNTAX LOOK = V-LOOK>
<SYNTAX LOOK AROUND OBJECT (FIND RMUNGBIT) = V-LOOK>
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) = V-EXAMINE>
<SYNTAX LOOK WITH OBJECT = V-LOOK-INSIDE>
<SYNTAX LOOK THROUGH OBJECT = V-LOOK-INSIDE>
<SYNTAX LOOK UNDER OBJECT = V-LOOK-UNDER>
<SYNTAX LOOK BEHIND OBJECT = V-LOOK-BEHIND>
<SYNTAX LOOK IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) = V-LOOK-INSIDE>
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) WITH OBJECT = V-READ PRE-READ>
<SYNTAX LOOK FOR OBJECT = V-FIND>
<SYNONYM LOOK L STARE GAZE>
<SYNTAX SEARCH OBJECT = V-SEARCH>
<SYNTAX SEARCH IN OBJECT = V-SEARCH>
<SYNTAX SEARCH FOR OBJECT = V-FIND>
<SYNTAX LOWER OBJECT = V-LOWER>
<SYNTAX MAKE OBJECT = V-MAKE>
<SYNTAX MELT
OBJECT
WITH
OBJECT (FIND FLAMEBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-MELT>
<SYNONYM MELT LIQUIFY>
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
<SYNTAX ROLL UP OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
<SYNTAX PLAY OBJECT = V-PLAY>
<SYNTAX PULL OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE ; *>
<SYNTAX PULL ON OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
<SYNONYM PULL TUG>
<SYNTAX MUMBLE = V-MUMBLE>
<SYNONYM MUMBLE SIGH>
<SYNTAX DESTROY
OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH
OBJECT (HELD CARRIED TAKE)
= V-MUNG PRE-MUNG>
<SYNTAX DESTROY
DOWN
OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH
OBJECT (HELD CARRIED TAKE)
= V-MUNG PRE-MUNG>
<SYNONYM DESTROY DAMAGE BREAK BLOCK SMASH>
<SYNTAX LUBRICATE OBJECT WITH OBJECT (HELD CARRIED) = V-OIL PRE-OIL>
<SYNONYM LUBRICATE OIL GREASE>
<SYNTAX OPEN
OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-OPEN ;*>
<SYNTAX OPEN
UP
OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-OPEN ;*>
<SYNTAX OPEN
OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH
OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE)
= V-OPEN>
<SYNTAX PICK OBJECT = V-PICK>
<SYNTAX PICK OBJECT WITH OBJECT = V-PICK>
<SYNTAX PICK UP
OBJECT (FIND TAKEBIT)
(ON-GROUND MANY)
= V-TAKE PRE-TAKE>
<SYNTAX PLUG OBJECT WITH OBJECT = V-PLUG>
<SYNONYM PLUG GLUE PATCH REPAIR FIX>
<SYNTAX PLUGH = V-ADVENT>
<SYNONYM PLUGH XYZZY>
<SYNTAX POKE
OBJECT (FIND VILLAIN) (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
= V-MUNG PRE-MUNG>
<SYNONYM POKE JAB BLIND>
<SYNTAX POUR OBJECT (HELD CARRIED) = V-DROP ;*>
<SYNTAX POUR OBJECT (HELD CARRIED) IN OBJECT = V-DROP>
<SYNTAX POUR OBJECT (HELD CARRIED) ON OBJECT = V-POUR-ON PRE-POUR-ON>
<SYNTAX POUR OBJECT (HELD CARRIED) FROM OBJECT = V-DROP>
<SYNONYM POUR SPILL>
<SYNTAX PRAY = V-PRAY>
<SYNTAX PUMP UP OBJECT = V-PUMP>
<SYNTAX PUMP UP OBJECT WITH OBJECT = V-PUMP>
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND MANY) = V-PUSH>
<SYNTAX PUSH ON OBJECT (IN-ROOM ON-GROUND MANY) = V-PUSH>
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND) OBJECT = V-PUSH-TO>
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND) TO OBJECT = V-PUSH-TO>
<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>
<SYNTAX PUT OBJECT (HELD MANY HAVE) UNDER OBJECT = V-PUT-UNDER>
<SYNTAX PUT ON OBJECT (IN-ROOM ON-GROUND CARRIED MANY) = V-WEAR>
<SYNTAX PUT OBJECT (HELD MANY HAVE) BEHIND OBJECT = V-PUT-BEHIND>
<SYNONYM PUT STUFF INSERT PLACE HIDE>
<SYNTAX RAISE OBJECT = V-RAISE ;*>
<SYNTAX RAISE UP OBJECT = V-RAISE>
<SYNONYM RAISE LIFT>
<SYNTAX RAPE OBJECT (FIND VICBIT) = V-RAPE>
<SYNONYM RAPE MOLEST>
<SYNTAX READ
OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM)
= V-READ PRE-READ ; *>
<SYNTAX READ
OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH
OBJECT
= V-READ PRE-READ>
<SYNONYM READ SKIM>
<SYNTAX REPENT = V-REPENT>
<SYNTAX RUB OBJECT = V-RUB>
<SYNTAX RUB OBJECT WITH OBJECT = V-RUB>
<SYNONYM RUB TOUCH FEEL PAT PET>
<SYNTAX SCRIPT = V-SCRIPT>
<SYNTAX UNSCRIPT = V-UNSCRIPT>
<SYNTAX SEND FOR OBJECT = V-SEND>
<SYNTAX SHAKE OBJECT = V-SHAKE>
<SYNTAX SLIDE OBJECT = V-PUSH>
<SYNTAX SLIDE OBJECT UNDER OBJECT = V-PUT-UNDER>
<SYNTAX SLIDE OBJECT (IN-ROOM ON-GROUND) OBJECT = V-PUSH-TO>
<SYNTAX SLIDE OBJECT (IN-ROOM ON-GROUND) TO OBJECT = V-PUSH-TO>
<SYNTAX SKIP = V-SKIP>
<SYNONYM SKIP HOP>
<SYNTAX SMELL OBJECT = V-SMELL>
<SYNONYM SMELL SNIFF>
<SYNTAX SPIN OBJECT = V-SPIN>
<SYNTAX SPRAY OBJECT ON OBJECT = V-SPRAY>
<SYNTAX SPRAY OBJECT WITH OBJECT = V-SSPRAY>
<SYNTAX SQUEEZE OBJECT = V-SQUEEZE>
<SYNTAX SQUEEZE OBJECT ON OBJECT = V-PUT PRE-PUT>
<SYNTAX STAND = V-STAND>
<SYNTAX STAND UP OBJECT (FIND RMUNGBIT) = V-STAND>
<SYNTAX STAY = V-STAY>
<SYNTAX STRIKE
OBJECT (FIND VICBIT) (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND WEAPONBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE)
= V-ATTACK>
<SYNTAX STRIKE
OBJECT (FIND VICBIT) (ON-GROUND IN-ROOM)
= V-ATTACK ;*>
<SYNTAX STRIKE OBJECT (ON-GROUND IN-ROOM HELD CARRIED) = V-LAMP-ON>
<SYNTAX SWIM = V-SWIM>
<SYNTAX SWIM IN OBJECT = V-SWIM>
<SYNONYM SWIM BATHE WADE>
<SYNTAX SWING
OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
= V-SWING>
<SYNTAX SWING
OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
AT
OBJECT (FIND VILLAIN) (ON-GROUND IN-ROOM)
= V-SWING>
<SYNONYM SWING THRUST>
<SYNTAX TAKE
OBJECT (FIND TAKEBIT)
(ON-GROUND IN-ROOM MANY)
= V-TAKE PRE-TAKE ;*>
<SYNTAX TAKE IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
<SYNTAX TAKE OUT OBJECT (FIND VEHBIT) (ON-GROUND) = V-DISEMBARK>
<SYNTAX TAKE ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<SYNTAX TAKE UP OBJECT (FIND RMUNGBIT) = 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 GRAB GET HOLD CARRY REMOVE>
<SYNTAX TELL OBJECT (FIND VICBIT) (IN-ROOM) = V-TELL>
<SYNONYM TELL ASK>
<SYNTAX SAY TO OBJECT (FIND VICBIT) (IN-ROOM) = V-TELL>
<SYNTAX SAY = V-SAY>
<SYNONYM SAY TALK>
<SYNTAX INCANT = V-INCANT>
<SYNONYM INCANT CHANT>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) OFF OBJECT = V-THROW-OFF>
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) OVER OBJECT = V-THROW-OFF>
<SYNTAX THROW
OBJECT (HELD CARRIED HAVE)
AT
OBJECT (ON-GROUND IN-ROOM)
= V-THROW ;*>
<SYNTAX THROW
OBJECT (HELD CARRIED HAVE)
WITH
OBJECT (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 PRE-PUT>
<SYNONYM THROW HURL CHUCK TOSS>
<SYNTAX TIE OBJECT TO OBJECT = V-TIE PRE-TIE>
<SYNTAX TIE UP
OBJECT (FIND VICBIT) (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE)
= V-TIE-UP>
<SYNONYM TIE FASTEN SECURE ATTACH>
<SYNTAX TURN OBJECT (FIND TURNBIT) TO OBJECT = V-TURN PRE-TURN>
<SYNTAX TURN OBJECT (FIND TURNBIT) FOR OBJECT = V-TURN PRE-TURN>
<SYNTAX TURN OBJECT (FIND TURNBIT) = V-TURN PRE-TURN>
<SYNTAX TURN
OBJECT (FIND TURNBIT) ( HELD CARRIED ON-GROUND IN-ROOM)
WITH
OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE)
= V-TURN PRE-TURN ;*>
<SYNTAX TURN ON
OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE)
= V-LAMP-ON>
<SYNTAX TURN OFF
OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE)
= V-LAMP-OFF>
<SYNONYM TURN FLIP SHUT SET>
<SYNTAX UNLOCK
OBJECT (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND TOOLBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-UNLOCK>
<SYNTAX UNTIE
OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
= V-UNTIE ;*>
<SYNTAX UNTIE
OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
FROM
OBJECT
= V-UNTIE>
<SYNONYM UNTIE FREE UNFASTEN UNATTACH UNHOOK>
<SYNTAX WAIT = V-WAIT>
<SYNONYM WAIT Z>
"<SYNTAX $WAIT OBJECT = V-$WAIT>"
<SYNTAX WAKE OBJECT (FIND VICBIT) (ON-GROUND IN-ROOM) = V-ALARM ;*>
<SYNTAX WAKE UP OBJECT (FIND VICBIT) (ON-GROUND IN-ROOM) = V-ALARM>
<SYNONYM WAKE AWAKE SURPRISE STARTLE>
<SYNTAX WALK OBJECT = V-WALK>
<SYNTAX WALK IN OBJECT = V-THROUGH>
<SYNTAX WALK ON OBJECT = V-THROUGH>
<SYNTAX WALK OVER OBJECT = V-LEAP>
<SYNTAX WALK WITH OBJECT = V-THROUGH>
<SYNTAX WALK AROUND OBJECT = V-WALK-AROUND>
<SYNTAX WALK UP OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-UP>
<SYNTAX WALK DOWN OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
<SYNTAX WALK TO OBJECT = V-WALK-TO>
<SYNONYM WALK GO RUN PROCEED STEP>
<SYNTAX WAVE OBJECT (HELD CARRIED) = V-WAVE>
<SYNTAX WAVE OBJECT (HELD CARRIED) AT OBJECT = V-WAVE>
<SYNONYM WAVE BRANDISH>
<SYNTAX WEAR OBJECT = V-WEAR>
<SYNTAX WIN = V-WIN>
<SYNONYM WIN WINNAGE>
<SYNTAX WIND OBJECT = V-WIND>
<SYNTAX WIND UP OBJECT = V-WIND>
<SYNTAX YELL = V-YELL>
<SYNONYM YELL SCREAM SHOUT>
<SYNTAX ZORK = V-ZORK>
;"Simple questions"
;"<SYNTAX WHAT ...> WHAT is a synonym of EXAMINE"
;"<SYNTAX WHERE ...> WHERE is a synonym of FIND"
<SYNTAX IS OBJECT IN OBJECT = V-IS-IN>
<SYNTAX IS OBJECT ON OBJECT = V-IS-IN>

646
tm.zap Normal file
View file

@ -0,0 +1,646 @@
.FUNCT IRON-DOOR-F
EQUAL? PRSA,V?THROUGH,V?UNLOCK,V?OPEN \FALSE
LESS? YEAR,YEAR-PRESENT \?ELS10
PRINTR "The iron door appears to be locked from the outside."
?ELS10: PRINTR "The iron door is rusted shut and cannot be opened."
.FUNCT I-CLEFT
EQUAL? HERE,ZORK-IV,ROOM-8,TIMBER-ROOM /?THN4
EQUAL? HERE,LOWER-SHAFT,LADDER-BOTTOM,LADDER-TOP \?ELS3
?THN4: PRINTI "You feel a mild tremor from within the earth which passes quickly."
CRLF
JUMP ?CND1
?ELS3: PRINTI "There is a great tremor from within the earth. The entire dungeon shakes violently and loose debris starts to fall from above you."
CRLF
?CND1: EQUAL? HERE,MUSEUM-ANTE \?ELS14
PRINTI "To the east, to the right of the great iron door, a large cleft opens up, revealing an open area behind!"
CRLF
JUMP ?CND12
?ELS14: EQUAL? HERE,AQ-VIEW \?ELS18
PRINTI "One of the giant pillars supporting the aqueduct collapses in a pile of smoke and rubble!"
CRLF
JUMP ?CND12
?ELS18: EQUAL? HERE,AQ-2,AQ-3 \?CND12
PRINTI "The channel beneath your feet trembles. At once, the channel directly to the "
EQUAL? HERE,AQ-2 \?ELS27
PRINTI "north"
JUMP ?CND25
?ELS27: PRINTI "south"
?CND25: PRINTI " of you collapses with its supporting pillar and falls into the chasm!"
CRLF
?CND12: SET 'CLEFT-FLAG,TRUE-VALUE
FCLEAR CLEFT,INVISIBLE
SET 'AQ-FLAG,FALSE-VALUE
RTRUE
.FUNCT CLEFT-F
EQUAL? YEAR,YEAR-PRESENT /FALSE
PRINTR "There is no cleft here."
.FUNCT MUSEUM-ANTE-F,RARG
EQUAL? RARG,M-LOOK \FALSE
ZERO? CLEFT-FLAG /?ELS10
PRINTR "This is the south end of a monumental hall, full of dust and debris from a recent earthquake. To the east is a great iron door, rusted shut. To its right, however, is a gaping cleft in the rock and behind, a cleared area."
?ELS10: PRINTR "You are in the southern half of a monumental hall. To the east lies a tremendous iron door which appears to be rusted shut."
.FUNCT DDESC,STR1,DOOR,STR2
PRINT STR1
FSET? DOOR,OPENBIT \?ELS5
PRINTI "open"
JUMP ?CND3
?ELS5: PRINTI "closed"
?CND3: PRINT STR2
CRLF
RTRUE
.FUNCT MUSEUM-ENTRANCE-F,RARG
EQUAL? RARG,M-LOOK \FALSE
FSET? CAGE,INVISIBLE \?ELS10
PRINTR "This seems to be an entrance hall of some sort, judging by the grand iron door to the west, and the ornate stone and wooden doors which lead to the east and north, respectively. A few wide steps lead south."
?ELS10: PRINTI "This is the entrance to the Royal Museum, the finest and grandest in the Great Underground Empire. To the south, down a few steps, is the entrance to the Royal Puzzle and to the east, through a stone door, is the Royal Jewel Collection. A wooden door to the north is "
FSET? WOODEN-DOOR,OPENBIT \?ELS23
PUSH STR?110
JUMP ?CND19
?ELS23: PUSH STR?111
?CND19: PRINT STACK
PRINTI " and leads to the Museum of Technology. "
EQUAL? YEAR,YEAR-PRESENT \?ELS30
PRINTR "To the west is a great iron door, rusted shut. To its left, however, is a cleft in the rock providing a western route away from the museum."
?ELS30: LESS? YEAR,YEAR-PRESENT \?ELS34
PRINTR "To the west is a great iron door, which is rusted shut."
?ELS34: PRINTR "To the west is a great iron door, rusted shut. The cleft in the rock, present when you started, has filled in with rubble."
.FUNCT TIME-MACHINE-F,RARG=0
EQUAL? RARG,M-OBJDESC \?ELS5
PRINTI "Directly in front of you is a large golden machine, which has a seat with a console in front. On the console is a single button and a dial connected to a three-digit display which reads "
PRINTN TM-YEAR
PRINTR ". The machine is suprisingly shiny and shows few signs of age."
?ELS5: EQUAL? RARG,M-END \?ELS9
EQUAL? PRSA,V?PUT \?ELS9
EQUAL? PRSI,TIME-MACHINE \?ELS9
PRINTR "You can't put anything on or inside the machine itself."
?ELS9: EQUAL? RARG,M-BEG \?ELS15
EQUAL? PRSA,V?MOVE \?ELS15
PRINTR "You might be able to move the machine by pushing it."
?ELS15: EQUAL? RARG,M-BEG \?ELS21
EQUAL? PRSA,V?PUSH-TO \?ELS21
EQUAL? PRSO,TIME-MACHINE \?ELS21
PRINTR "That would be a good trick from inside it."
?ELS21: EQUAL? RARG,M-END \?ELS27
EQUAL? PRSO,TIME-MACHINE \?ELS27
EQUAL? PRSA,V?EXAMINE \?ELS34
PRINTI "The machine consists of a seat and a console containing one small button and a dial connected to a display which reads "
PRINTN TM-YEAR
PRINTR "."
?ELS34: EQUAL? PRSA,V?BOARD \?ELS38
FIRST? TM-SEAT \?ELS38
PRINTR "That will be somewhat uncomfortable!"
?ELS38: EQUAL? PRSA,V?RAISE,V?TAKE \?ELS44
PRINTR "The machine must weigh hundreds of pounds and cannot be carried."
?ELS44: EQUAL? PRSA,V?PUSH \?ELS48
PRINTR "You should specify in which direction to push the machine."
?ELS48: EQUAL? PRSA,V?PUSH-TO \FALSE
CALL DO-WALK,P-DIRECTION
EQUAL? STACK,M-FATAL /TRUE
PRINTI "With some effort, you push the machine into the room with you."
CRLF
EQUAL? HERE,CP-ANTE,MID-CP-ANTE \?ELS60
PRINTI "However, the machine seems to have sustained some damage as a result of going over the stairs."
CRLF
SET 'MACHINE-DAMAGED,TRUE-VALUE
JUMP ?CND58
?ELS60: EQUAL? HERE,MUSEUM-ANTE \?CND58
PRINTI "Pushing the machine through the cleft seems to have damaged it."
CRLF
SET 'MACHINE-DAMAGED,TRUE-VALUE
?CND58: MOVE TIME-MACHINE,HERE
RTRUE
?ELS27: EQUAL? RARG,M-BEG \FALSE
EQUAL? PRSA,V?WALK \?ELS70
PRINTR "You're not going anywhere in this heap."
?ELS70: EQUAL? PRSA,V?CLOSE,V?OPEN,V?PUSH /?THN77
EQUAL? PRSA,V?MOVE,V?PUT,V?TAKE \FALSE
?THN77: CALL HELD?,PRSO
ZERO? STACK \FALSE
IN? PRSO,TIME-MACHINE /FALSE
PRINTR "You can't do that from inside the machine."
.FUNCT TM-SEAT-F
EQUAL? PRSA,V?BOARD,V?CLIMB-ON \?ELS5
CALL PERFORM,V?BOARD,TIME-MACHINE
RTRUE
?ELS5: EQUAL? PRSA,V?PUT-BEHIND,V?PUT-UNDER \?ELS7
EQUAL? PRSI,TM-SEAT \?ELS7
EQUAL? PRSO,RING \?ELS14
PRINTI "The ring is concealed underneath the seat."
CRLF
SET 'RING-CONCEALED,TRUE-VALUE
REMOVE RING
RTRUE
?ELS14: PRINTR "It's too big to hide under the seat."
?ELS7: EQUAL? PRSA,V?RUB \?ELS22
PRINTR "There's nothing odd about the feel of the seat."
?ELS22: EQUAL? PRSA,V?MOVE,V?RAISE,V?LOOK-UNDER \FALSE
ZERO? RING-CONCEALED /?ELS31
PRINTI "You find the ring under the seat and put it on your finger."
CRLF
MOVE RING,WINNER
SET 'RING-CONCEALED,FALSE-VALUE
RTRUE
?ELS31: PRINTR "You notice a small hollow area under the seat."
.FUNCT TM-DIAL-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTI "The dial is set to "
PRINTN TM-YEAR
PRINTR "."
?ELS5: EQUAL? PRSA,V?TURN \FALSE
EQUAL? PRSI,INTNUM \?ELS14
GRTR? P-NUMBER,999 \?ELS19
PRINTR "You can't set it beyond 999."
?ELS19: SET 'TM-YEAR,P-NUMBER
PRINTI "The dial is set to "
PRINTN TM-YEAR
PRINTR "."
?ELS14: ZERO? PRSI \?ELS27
PRINTR "You have to say what to turn it to!"
?ELS27: PRINTR "You can't do that!"
.FUNCT TM-BUTTON-F
EQUAL? PRSA,V?PUSH \FALSE
EQUAL? TM-YEAR,YEAR-BUILT \?CND6
ZERO? TM-POINT \?CND6
INC 'SCORE
SET 'TM-POINT,TRUE-VALUE
?CND6: ZERO? MACHINE-DAMAGED \?THN16
IN? WINNER,TIME-MACHINE /?ELS15
?THN16: PRINTR "Nothing seems to have happened."
?ELS15: LESS? TM-YEAR,YEAR-BUILT \?ELS21
CALL REALLY-DEAD,STR?112
RSTACK
?ELS21: EQUAL? YEAR,TM-YEAR \?ELS23
PRINTR "Nothing seems to have happened."
?ELS23: LESS? TM-YEAR,YEAR-CLOSED \?ELS27
PRINTI "You experience a brief period of disorientation. When your vision returns,"
EQUAL? HERE,MUSEUM-ENTRANCE,MID-MUSEUM-ENTRANCE,OLD-MUSEUM-ENTRANCE \?ELS34
EQUAL? TM-YEAR,YEAR-CAGED \?ELS39
PRINTI " you are surrounded by a number of heavily armed guards, the dress and speech of which seem strange and unfamiliar. A commotion starts at a door to the east and a person with a flat head, wearing a gaudy crown and a purple robe, bursts into the room."
CRLF
CALL FLATHEAD-SENTENCE
RSTACK
?ELS39: CALL GUARDS-KILL
RSTACK
?ELS34: EQUAL? HERE,JEWEL-ROOM,MID-JEWEL-ROOM,OLD-JEWEL-ROOM \?ELS45
EQUAL? TM-YEAR,YEAR-CAGED \?ELS50
PRINTI " you find yourself in the middle of some kind of ceremony, with a strange flat-headed man wearing royal vestments about to break a bottle on the bars of an iron cage containing magnificent jewels. He appears somewhat pleased by your presence. "
CALL FLATHEAD-SENTENCE
RSTACK
?ELS50: GRTR? TM-YEAR,YEAR-CAGED \?ELS54
CALL GUARDS-KILL
RSTACK
?ELS54: PRINTI " your surroundings appear to have changed. From outside the door you hear the sounds of guards talking."
CRLF
CALL TGOTO,OLD-JEWEL-ROOM
RSTACK
?ELS45: EQUAL? HERE,TECH-MUSEUM,MID-TECH-MUSEUM,OLD-TECH-MUSEUM \FALSE
EQUAL? TM-YEAR,YEAR-BUILT /?ELS65
CALL GUARDS-KILL
RSTACK
?ELS65: PRINTI " your surroundings appear to have changed. From outside the door you hear the sounds of guards talking."
CRLF
CALL TGOTO,OLD-TECH-MUSEUM
RSTACK
?ELS27: CALL HAPPY-NEW-YEAR
RSTACK
.FUNCT HAPPY-NEW-YEAR
PRINTI "You experience a brief period of disorientation. When your vision returns, your surroundings appear somewhat altered."
CRLF
EQUAL? HERE,OLD-JEWEL-ROOM,MID-JEWEL-ROOM,JEWEL-ROOM \?ELS7
LESS? TM-YEAR,YEAR-PRESENT \?ELS12
CALL TGOTO,MID-JEWEL-ROOM
RSTACK
?ELS12: CALL TGOTO,JEWEL-ROOM
RSTACK
?ELS7: EQUAL? HERE,OLD-TECH-MUSEUM,MID-TECH-MUSEUM,TECH-MUSEUM \?ELS16
LESS? TM-YEAR,YEAR-PRESENT \?ELS21
CALL TGOTO,MID-TECH-MUSEUM
RSTACK
?ELS21: CALL TGOTO,TECH-MUSEUM
RSTACK
?ELS16: LESS? TM-YEAR,YEAR-PRESENT \?ELS25
CALL TGOTO,MID-MUSEUM-ENTRANCE
RSTACK
?ELS25: CALL TGOTO,MUSEUM-ENTRANCE
RSTACK
.FUNCT I-SNAP
EQUAL? YEAR,YEAR-PRESENT /FALSE
SET 'TM-YEAR,YEAR-PRESENT
PRINTI "You start to feel light-headed and, before you can even think, you become completely disoriented. When you regain your faculties, you realize that your surroundings have changed."
CRLF
CALL TGOTO,SNAP-LOC,TRUE-VALUE
RSTACK
.FUNCT MOVE-JEWELS
ZERO? RING-STOLEN \TRUE
EQUAL? TM-YEAR,YEAR-BUILT \?ELS7
MOVE PEDESTAL,OLD-JEWEL-ROOM
JUMP ?CND5
?ELS7: LESS? TM-YEAR,YEAR-PRESENT \?ELS9
MOVE PEDESTAL,MID-JEWEL-ROOM
JUMP ?CND5
?ELS9: MOVE PEDESTAL,JEWEL-ROOM
?CND5: MOVE SCEPTRE,PEDESTAL
FSET SCEPTRE,NDESCBIT
MOVE JEWELLED-KNIFE,PEDESTAL
FSET JEWELLED-KNIFE,NDESCBIT
ZERO? RING-CONCEALED \FALSE
MOVE RING,PEDESTAL
FSET RING,NDESCBIT
RTRUE
.FUNCT TGOTO,RM=0,SNAP=0
INC 'MOVES
CALL QUEUE,I-GUARDS-LEAVE,0
SET 'INVIS,FALSE-VALUE
GRTR? YEAR,YEAR-BUILT \?CND1
SET 'GUARDS-PRESENT,TRUE-VALUE
?CND1: EQUAL? YEAR,YEAR-PRESENT \?CND4
SET 'SNAP-LOC,HERE
CALL QUEUE,I-SNAP,40
PUT STACK,0,1
?CND4: EQUAL? TM-YEAR,YEAR-PRESENT \?ELS9
SET 'CLEFT-FLAG,TRUE-VALUE
JUMP ?CND7
?ELS9: SET 'CLEFT-FLAG,FALSE-VALUE
?CND7: FCLEAR JEWEL-DOOR,OPENBIT
FCLEAR WOODEN-DOOR,OPENBIT
FCLEAR IRON-DOOR,OPENBIT
EQUAL? YEAR,YEAR-BUILT \?CND12
ZERO? RING-CONCEALED /?ELS17
IN? TIME-MACHINE,OLD-TECH-MUSEUM \?ELS17
IN? SCEPTRE,PEDESTAL \?ELS17
IN? JEWELLED-KNIFE,PEDESTAL \?ELS17
SET 'RING-STOLEN,TRUE-VALUE
FSET CAGE,INVISIBLE
FSET PEDESTAL,INVISIBLE
REMOVE SCEPTRE
REMOVE JEWELLED-KNIFE
JUMP ?CND12
?ELS17: IN? TIME-MACHINE,OLD-TECH-MUSEUM \?THN22
ZERO? RING-CONCEALED /?ELS21
?THN22: SET 'CLUMSY-ROBBERY,TRUE-VALUE
REMOVE TIME-MACHINE
JUMP ?CND12
?ELS21: IN? RING,PEDESTAL \?THN26
IN? SCEPTRE,PEDESTAL \?THN26
IN? JEWELLED-KNIFE,PEDESTAL /?CND12
?THN26: SET 'MYSTERY,TRUE-VALUE
?CND12: EQUAL? TM-YEAR,YEAR-BUILT \?CND28
SET 'MYSTERY,FALSE-VALUE
SET 'CLUMSY-ROBBERY,FALSE-VALUE
?CND28: SET 'YEAR,TM-YEAR
CALL MOVE-TM-OBJECTS
CALL MOVE-JEWELS
MOVE WINNER,HERE
CALL GOTO,RM,FALSE-VALUE
EQUAL? YEAR,YEAR-BUILT \?ELS33
MOVE TIME-MACHINE,OLD-TECH-MUSEUM
MOVE SPINNER,OLD-TECH-MUSEUM
MOVE PRESSURIZER,OLD-TECH-MUSEUM
MOVE TECH-PLAQUE,OLD-TECH-MUSEUM
JUMP ?CND31
?ELS33: LESS? YEAR,YEAR-PRESENT \?ELS35
ZERO? CLUMSY-ROBBERY \?CND36
MOVE TIME-MACHINE,MID-TECH-MUSEUM
?CND36: MOVE SPINNER,MID-TECH-MUSEUM
MOVE PRESSURIZER,MID-TECH-MUSEUM
MOVE TECH-PLAQUE,MID-TECH-MUSEUM
MOVE CAGE,MID-JEWEL-ROOM
JUMP ?CND31
?ELS35: MOVE TIME-MACHINE,TECH-MUSEUM
MOVE SPINNER,TECH-MUSEUM
MOVE PRESSURIZER,TECH-MUSEUM
MOVE TECH-PLAQUE,TECH-MUSEUM
MOVE CAGE,JEWEL-ROOM
?CND31: ZERO? CLUMSY-ROBBERY \?THN44
EQUAL? HERE,TECH-MUSEUM,MID-TECH-MUSEUM,OLD-TECH-MUSEUM /?ELS43
?THN44: ZERO? SNAP \?CND41
PRINTI "You notice that the golden machine has disappeared!"
CRLF
JUMP ?CND41
?ELS43: MOVE WINNER,TIME-MACHINE
?CND41: ZERO? CLUMSY-ROBBERY /TRUE
REMOVE TIME-MACHINE
RTRUE
.FUNCT MOVE-TM-OBJECTS,F,MFLG=0,WFLG=0,N
FIRST? TIME-MACHINE >F /?KLU53
?KLU53: ZERO? F /?CND1
?PRG5: EQUAL? F,TM-DIAL,TM-SEAT,TM-BUTTON /?CND7
EQUAL? F,PLAYER \?ELS9
JUMP ?CND7
?ELS9: ZERO? MFLG \?CND7
SET 'MFLG,TRUE-VALUE
PRINTI "You notice that everything in the machine is gone"
?CND7: NEXT? F >N /?KLU54
?KLU54: EQUAL? F,TM-DIAL,TM-SEAT,TM-BUTTON /?CND16
MOVE F,HERE
?CND16: SET 'F,N
ZERO? F \?PRG5
?CND1: FIRST? WINNER >F /?KLU55
?KLU55: ZERO? F /?CND22
?PRG26: ZERO? WFLG \?CND28
SET 'WFLG,TRUE-VALUE
ZERO? MFLG /?ELS33
PRINTI ": come to mention it, everything you were holding has vanished too"
JUMP ?CND28
?ELS33: PRINTI "You notice that everything you were holding is gone"
?CND28: NEXT? F >N /?KLU56
?KLU56: MOVE F,HERE
SET 'F,N
ZERO? F \?PRG26
?CND22: ZERO? MFLG \?THN49
ZERO? WFLG /FALSE
?THN49: PRINTR "!"
.FUNCT GUARDS-KILL
CALL PICK-ONE,GUARD-KILLERS
PRINT STACK
CRLF
CALL REALLY-DEAD,STR?9
RSTACK
.FUNCT FLATHEAD-SENTENCE
CALL REALLY-DEAD,STR?116
RSTACK
.FUNCT REALLY-DEAD,STR
PRINT STR
CRLF
PRINTI "
** You have died **
"
QUIT
RTRUE
.FUNCT HEAR-FLATHEAD
SET 'FLATHEAD-HEARD,TRUE-VALUE
PRINTR "One particularly loud and grating voice can now be heard above the others outside the room. ""Very nice! Very nice! Not enough security, but very nice! Now, Lord Feepness, pay attention! I've been thinking and what we need is a dam, a tremendous dam to control the Frigid River, with thousands of gates. Yes! I can see it now. We shall call it ... Flood Control Dam #2. No, not quite right. Aha! It will be Flood Control Dam #3."" ""Pardon me, my Lord, but wouldn't that be just a tad excessive?"" ""Nonsense! Now, let me tell you my idea for hollowing out volcanoes..."" With that, the voices trail out into nothingness."
.FUNCT OLD-TECH-MUSEUM-F,RARG
EQUAL? RARG,M-LOOK \?ELS5
EQUAL? HERE,OLD-JEWEL-ROOM \?ELS5
PRINTI "You are in a high-ceilinged chamber, in the center of which is a pedestal which "
ZERO? RING-STOLEN \?ELS12
PRINTI "is the intended home of the Crown Jewels of the Great Underground Empire: a jewelled knife, a golden ring, and the royal sceptre."
IN? SCEPTRE,PEDESTAL \?THN18
IN? RING,PEDESTAL \?THN18
IN? JEWELLED-KNIFE,PEDESTAL /?CND10
?THN18: PRINTI " Not all of the jewels are in place, however."
JUMP ?CND10
?ELS12: PRINTI "is bare."
?CND10: PRINTI " The room is, by appearances, unfinished."
CRLF
ZERO? GUARDS-PRESENT /TRUE
PRINTR "Through the door you can hear voices which, from their sound, belong to military or police personnel."
?ELS5: EQUAL? RARG,M-LOOK \?ELS35
EQUAL? HERE,OLD-TECH-MUSEUM \?ELS38
PRINTI "You are in a large, unfinished room, probably intended to be a part of the Royal Museum."
CRLF
JUMP ?CND36
?ELS38: PRINTI "This appears to be an unfinished entranceway to the Royal Museum. There are doors to the east and north, and a blind stairway to the south. A heavy iron door to the west is closed and locked."
CRLF
?CND36: ZERO? GUARDS-PRESENT /TRUE
PRINTR "Through the door you can hear voices which, from their sound, belong to military or police personnel."
?ELS35: EQUAL? RARG,M-END \?ELS52
ZERO? FLATHEAD-HEARD \?ELS52
ZERO? GUARDS-PRESENT /?ELS52
RANDOM 100
GRTR? 6,STACK \?ELS52
CALL HEAR-FLATHEAD
RSTACK
?ELS52: EQUAL? RARG,M-ENTER \?ELS56
ZERO? GUARDS-PRESENT /?ELS56
RANDOM 12
ADD 3,STACK
CALL QUEUE,I-GUARDS-LEAVE,STACK
PUT STACK,0,1
RTRUE
?ELS56: EQUAL? RARG,M-BEG \?ELS60
EQUAL? PRSA,V?OPEN \?ELS60
EQUAL? PRSO,WOODEN-DOOR,JEWEL-DOOR \?ELS60
ZERO? GUARDS-PRESENT /?ELS60
PRINTR "You open the door ever so slightly and see dozens of armed officials. You shut the door quickly and quietly, realizing that you would be killed in an instant if you left the room."
?ELS60: EQUAL? RARG,M-BEG \FALSE
ZERO? GUARDS-PRESENT /FALSE
RANDOM 100
GRTR? 3,STACK \FALSE
CALL GUARD-CAUGHT
RSTACK
.FUNCT I-GUARDS-LEAVE
SET 'GUARDS-PRESENT,FALSE-VALUE
PRINTR "You hear, from outside the door, guards marching away, their voices fading. After a few moments, a booming crash signals the close of what must be a tremendous door. Then there is silence."
.FUNCT GUARD-CAUGHT
CALL REALLY-DEAD,STR?117
RSTACK
.FUNCT ROBOT-F
EQUAL? PRSA,V?FOLLOW \?ELS5
PRINTR "It moved very quickly and left the door closed."
?ELS5: PRINTR "There is no robot here."
.FUNCT JEWEL-ROOM-F,RARG
EQUAL? RARG,M-END \?ELS5
IN? TIME-MACHINE,HERE \?ELS5
RANDOM 100
GRTR? 4,STACK \?ELS5
PRINTI "An odd robot-like device glides into the room, dusting the floor as it moves. Its head gyrates briefly as it scans the machine. ""Shame. Shame,"" it says, rather tinnily. ""Someone has been tampering with the machines again."" Six beady mechanical eyes focus on you as the robot picks up the gold machine. ""Hands off, adventurer!"" are its last words as it leaves the room, closing the door behind it."
CRLF
FCLEAR JEWEL-DOOR,OPENBIT
FCLEAR WOODEN-DOOR,OPENBIT
MOVE TIME-MACHINE,TECH-MUSEUM
RTRUE
?ELS5: EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are in a high-ceilinged chamber"
FSET? CAGE,INVISIBLE /?ELS18
PRINTR " in the middle of which sits a tall, round steel cage, which is securely locked. In the middle of the cage is a pedestal on which sit the Crown Jewels of the Great Underground Empire: a sceptre, a jewelled knife, and a golden ring. A small bronze plaque, now tarnished, is on the cage."
?ELS18: PRINTR " in the middle of which is a bare pedestal. The room is unfinished with no indication of its purpose. A small plaque is fastened to a wall."
.FUNCT CROWN-JEWELS-F
EQUAL? PRSA,V?TAKE \?ELS5
CALL HELD?,PRSO
ZERO? STACK \FALSE
EQUAL? YEAR,YEAR-BUILT /?THN13
FSET? CAGE,INVISIBLE \?ELS12
?THN13: FCLEAR PRSO,NDESCBIT
RFALSE
?ELS12: PRINTR "The jewels are inside a locked cage."
?ELS5: EQUAL? PRSA,V?PUT \?ELS20
EQUAL? PRSI,PEDESTAL \?ELS20
IN? PRSO,WINNER \?ELS20
PRINTI "The "
PRINTD PRSO
PRINTI " is now resting on the pedestal."
CRLF
MOVE PRSO,PEDESTAL
FSET PRSO,NDESCBIT
RTRUE
?ELS20: EQUAL? PRSA,V?PUT \FALSE
CALL HELD?,PRSO
ZERO? STACK \FALSE
PRINTI "You don't have the "
PRINTD PRSO
PRINTR "."
.FUNCT TECH-MUSEUM-F,RARG
EQUAL? RARG,M-LOOK \FALSE
FSET? CAGE,INVISIBLE \?ELS10
CALL DDESC,STR?118,WOODEN-DOOR,STR?119
RSTACK
?ELS10: CALL DDESC,STR?120,WOODEN-DOOR,STR?119
RSTACK
.FUNCT PLAQUE-F
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
ZERO? RING-STOLEN /?CND6
PRINTR "The plaque explains that this room was to be the home of the Crown Jewels of the Great Underground Empire. However, following the unexplained disappearance of a priceless ring during the final stages of construction, Lord Flathead decided to place the remaining jewels in a safer location. Interestingly enough, he distrusted museum security enough to place his prized possesion, an incredibly gaudy crown, within a locked safe in a volcano specifically hollowed out for that purpose."
?CND6: GET 0,8
BOR STACK,2
PUT 0,8,STACK
PRINTI "
Crown Jewels
Presented To The Royal Museum
By His Gracious Lord
DIMWIT FLATHEAD
Dedicated
* 777 GUE *
"
GET 0,8
BAND STACK,-3
PUT 0,8,STACK
ZERO? CLUMSY-ROBBERY /?ELS16
PRINTR "Underneath the plaque, in small lettering, is a description of a clumsy attempt to steal the jewels using a time travel device from the Technological Museum which the curators were surprised to discover was not a non-working model. After the attempt, the machine was removed from the exhibit."
?ELS16: ZERO? MYSTERY /TRUE
PRINTR "Underneath the plaque, in small lettering, is a description of a mysterious happening during the final stages of construction of the Museum, in which some of the crown jewels were found displaced from their proper positions. Fortunately, nothing was missing. The mystery was never solved and the museum was opened despite the objections of Lord Flathead that security was too lax."
.FUNCT WOODEN-DOOR-F
EQUAL? PRSA,V?LISTEN \?ELS5
ZERO? GUARDS-PRESENT /?ELS5
CALL PERFORM,V?LISTEN,VOICES
RTRUE
?ELS5: EQUAL? PRSA,V?KNOCK \FALSE
ZERO? GUARDS-PRESENT /FALSE
PRINTR "You realize that calling attention to yourself would be fatal."
.FUNCT JEWEL-DOOR-F
EQUAL? PRSA,V?KNOCK \?ELS5
ZERO? GUARDS-PRESENT /?ELS5
CALL PERFORM,V?KNOCK,WOODEN-DOOR
RTRUE
?ELS5: EQUAL? PRSA,V?UNLOCK,V?OPEN \FALSE
FSET? JEWEL-DOOR,OPENBIT \?ELS14
PRINTR "It is already open."
?ELS14: EQUAL? YEAR,YEAR-BUILT \?ELS18
EQUAL? HERE,OLD-MUSEUM-ENTRANCE \?ELS18
PRINTR "The door is locked, probably by the guards on their way out."
?ELS18: PRINTI "The door is now open."
CRLF
FSET JEWEL-DOOR,OPENBIT
RTRUE
.FUNCT CAGE-F
EQUAL? PRSA,V?OPEN \?ELS5
PRINTR "The cage is locked."
?ELS5: EQUAL? PRSA,V?CLOSE \FALSE
PRINTR "The cage is already closed."
.FUNCT VOICES-F
ZERO? GUARDS-PRESENT /?ELS5
EQUAL? YEAR,YEAR-BUILT \?ELS5
PRINTI "The voices are muffled by the door which (fortunately for you) separates you. They seem to be in heated debate on the topic of "
CALL PICK-ONE,BLATHER
PRINT STACK
PRINTR "."
?ELS5: PRINTR "Are you hearing things now?"
.FUNCT MUSEUM-PIECES,RARG=0
EQUAL? RARG,M-OBJDESC \?ELS5
EQUAL? DESC-OBJECT,SPINNER /TRUE
PRINTI "A strange grey machine, shaped somewhat like a clothes dryer, is on one side of the room. On the other side of the hall is a powerful-looking black machine, a tight tangle of wires, pipes, and motors.
A plaque is mounted near the door."
LESS? YEAR,YEAR-CLOSED \?ELS15
PRINTR " The grey machine, it turns out, is a Frobozz Magic Pressurizer, used in the coal mines of the Empire. The black machine is a Frobozz Magic Room Spinner. The golden machine is referred to as a Temporizer. All are non-working models donated by Frobozzco president John D. Flathead."
?ELS15: PRINTR " The writing is faded, however, and cannot be made out clearly. The two machines seem to be in bad shape, rusting in many spots."
?ELS5: EQUAL? PRSA,V?MOVE,V?TAKE \?ELS23
PRINTR "It's massive and cannot even be moved."
?ELS23: EQUAL? PRSA,V?PUSH-TO,V?PUSH \?ELS27
PRINTR "It's too heavy to be pushed."
?ELS27: EQUAL? PRSA,V?MUNG \?ELS31
PRINTR "It seems quite indestructible."
?ELS31: EQUAL? PRSA,V?PUT \FALSE
EQUAL? PRSI,SPINNER,PRESSURIZER \FALSE
PRINTR "There's no good place to put anything there."
.FUNCT TECH-PLAQUE-F
EQUAL? PRSA,V?TAKE \?ELS5
PRINTR "It's bolted to the wall."
?ELS5: EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
LESS? YEAR,YEAR-CLOSED \?ELS14
PRINTR "The plaque merely identifies the machines and names their donor. They are non-working models of existing state-of-the-art machinery."
?ELS14: PRINTR "The words cannot be made out."
.FUNCT PEDESTAL-F
EQUAL? PRSA,V?EXAMINE \?ELS5
FIRST? PEDESTAL \FALSE
PRINTR "The Royal Jewels are on the pedestal."
?ELS5: EQUAL? PRSA,V?TAKE,V?PUT-ON,V?PUT \FALSE
FSET? CAGE,INVISIBLE /FALSE
PRINTR "You can't reach it through the cage."
.ENDI

1068
tm.zil Normal file

File diff suppressed because it is too large Load diff

1991
verbs.zap Normal file

File diff suppressed because it is too large Load diff

1550
verbs.zil Normal file

File diff suppressed because it is too large Load diff

22
zork3.errors Normal file
View file

@ -0,0 +1,22 @@
Assembling ZORK3.XZAP.6
Inserting ZORK3FREQ.XZAP.2 ( 622 bytes)
Inserting ZORK3DAT.ZAP.1 (17815 bytes)
Inserting DUNGEON.ZAP.1 ( 0 bytes)
Inserting SYNTAX.ZAP.1 ( 0 bytes)
Inserting MACROS.ZAP.1 ( 43 bytes)
Inserting CLOCK.ZAP.1 ( 197 bytes)
Inserting MAIN.ZAP.2 ( 1127 bytes)
Inserting PARSER.ZAP.1 ( 4864 bytes)
Inserting DEMONS.ZAP.1 ( 250 bytes)
Inserting VERBS.ZAP.1 ( 9396 bytes)
Inserting ACTIONS.ZAP.1 (16227 bytes)
Inserting TM.ZAP.1 ( 7613 bytes)
Inserting SHADOW.ZAP.1 (12014 bytes)
Inserting ZORK3STR.ZAP.1 (12482 bytes)
18501 bytes of preload.
82714 bytes (81K).
222 objects.
192 globals.

41
zork3.xzap Normal file
View file

@ -0,0 +1,41 @@
.INSERT "ZORK3FREQ"
.INSERT "ZORK3DAT" ; DATA IS IN THIS FILE
.INSERT "DUNGEON"
.INSERT "SYNTAX"
.INSERT "MACROS"
.INSERT "CLOCK"
.INSERT "MAIN"
.INSERT "PARSER"
.INSERT "DEMONS"
.INSERT "VERBS"
.INSERT "ACTIONS"
.INSERT "TM"
.INSERT "SHADOW"
.INSERT "ZORK3STR"
.END

40
zork3.zap Normal file
View file

@ -0,0 +1,40 @@
.INSERT "ZORK3DAT" ; DATA IS IN THIS FILE
.INSERT "DUNGEON"
.INSERT "SYNTAX"
.INSERT "MACROS"
.INSERT "CLOCK"
.INSERT "MAIN"
.INSERT "PARSER"
.INSERT "DEMONS"
.INSERT "VERBS"
.INSERT "ACTIONS"
.INSERT "TM"
.INSERT "SHADOW"
.INSERT "ZORK3STR"
.END

52
zork3.zil Normal file
View file

@ -0,0 +1,52 @@
"ZORK3 for
Zork III: The Dungeon Master
The Great Underground Empire (Part 3)
(c) Copyright 1982 Infocom, Inc. All Rights Reserved.
"
<BLOAT 70000 0 0 2700 0 0 0 0 0 256>
;<SNAME "ZORK3">
<SET REDEFINE T>
<GLOBAL BIGFIX 10000>
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<DEFINE IFILE (STR "OPTIONAL" (FLOAD? <>) "AUX" (TIM <TIME>))
<INSERT-FILE .STR .FLOAD?>>
<PRINC "Loader/ ZORK III: The Dungeon Master
">
<COND (<GASSIGNED? PREDGEN>
<SETG ZSTR-ON <SETG ZSTR-OFF ,TIME>>
<ID 0>)>
<IFILE "DUNGEON" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>
<PROPDEF VALUE 0>
<IFILE "SYNTAX" T>
<ENDLOAD>
<IFILE "MACROS" T>
<IFILE "CLOCK" T>
<IFILE "MAIN" T>
<IFILE "PARSER" T>
<IFILE "DEMONS" T>
<IFILE "VERBS" T>
<IFILE "ACTIONS" T>
<IFILE "TM" T>
<IFILE "SHADOW" T>
<GC 0 T>

BIN
zork3.zip Normal file

Binary file not shown.

11704
zork3dat.zap Normal file

File diff suppressed because it is too large Load diff

200
zork3freq.xzap Normal file
View file

@ -0,0 +1,200 @@
.FSTR FSTR?1,"the " ;1950 975
.FSTR FSTR?2,"The " ;1119 373
.FSTR FSTR?3,"You " ;756 252
.FSTR FSTR?4,"and " ;710 355
.FSTR FSTR?5,", " ;629 629
.FSTR FSTR?6,"you " ;484 242
.FSTR FSTR?7,"is " ;436 436
.FSTR FSTR?8,". " ;419 419
.FSTR FSTR?9,"to " ;396 396
.FSTR FSTR?10,"of " ;386 386
.FSTR FSTR?11,"can't " ;375 75
.FSTR FSTR?12,"your " ;351 117
.FSTR FSTR?13,"are " ;308 154
.FSTR FSTR?14,"from " ;273 91
.FSTR FSTR?15,"which " ;272 68
.FSTR FSTR?16,"that " ;255 85
.FSTR FSTR?17,"There " ;245 49
.FSTR FSTR?18,"with " ;228 76
.FSTR FSTR?19,"have " ;222 74
.FSTR FSTR?20,"in " ;218 218
.FSTR FSTR?21,"door " ;189 63
.FSTR FSTR?22,"into " ;174 58
.FSTR FSTR?23,"stone " ;172 43
.FSTR FSTR?24,"through " ;156 26
.FSTR FSTR?25,"wooden " ;155 31
.FSTR FSTR?26,"hooded " ;150 30
.FSTR FSTR?27,"seems " ;140 35
.FSTR FSTR?28,"already " ;132 22
.FSTR FSTR?29,"Underground " ;132 12
.FSTR FSTR?30,"This " ;128 32
.FSTR FSTR?31,"channel " ;126 21
.FSTR FSTR?32,"would " ;124 31
.FSTR FSTR?33,"small " ;124 31
.FSTR FSTR?34,"figure " ;120 24
.FSTR FSTR?35,"cannot " ;120 24
.FSTR FSTR?36,"appears " ;114 19
.FSTR FSTR?37,"structure " ;112 14
.FSTR FSTR?38,"his " ;110 55
.FSTR FSTR?39,"large " ;108 27
.FSTR FSTR?40,"wall " ;105 35
.FSTR FSTR?41,"don't " ;105 21
.FSTR FSTR?42,"south " ;104 26
.FSTR FSTR?43,"be " ;102 102
.FSTR FSTR?44,"not " ;102 51
.FSTR FSTR?45,"but " ;102 51
.FSTR FSTR?46,"He " ;102 51
.FSTR FSTR?47,"nothing " ;102 17
.FSTR FSTR?48,"dungeon " ;102 17
.FSTR FSTR?49,"north " ;100 25
.FSTR FSTR?50,"above " ;100 25
.FSTR FSTR?51,"mirror " ;100 20
.FSTR FSTR?52,"doesn't " ;98 14
.FSTR FSTR?53,"corridor " ;98 14
.FSTR FSTR?54,"here" ;96 48
.FSTR FSTR?55,"very " ;96 32
.FSTR FSTR?56,"around " ;95 19
.FSTR FSTR?57,"has " ;94 47
.FSTR FSTR?58,"west " ;93 31
.FSTR FSTR?59,"It " ;92 46
.FSTR FSTR?60,"yourself " ;91 13
.FSTR FSTR?61,"can " ;90 45
.FSTR FSTR?62,"south" ;90 30
.FSTR FSTR?63,"I " ;88 88
.FSTR FSTR?64,"room " ;87 29
.FSTR FSTR?65,"see " ;86 43
.FSTR FSTR?66,"for " ;86 43
.FSTR FSTR?67,"out " ;84 42
.FSTR FSTR?68,"this " ;84 28
.FSTR FSTR?69,"passage " ;84 14
.FSTR FSTR?70,"on " ;82 82
.FSTR FSTR?71,"narrow " ;80 16
.FSTR FSTR?72,"standing " ;77 11
.FSTR FSTR?73,"anything " ;77 11
.FSTR FSTR?74,"To " ;76 38
.FSTR FSTR?75,"panel " ;76 19
.FSTR FSTR?76,"great " ;76 19
.FSTR FSTR?77,"some " ;75 25
.FSTR FSTR?78,"east " ;75 25
.FSTR FSTR?79,"been " ;75 25
.FSTR FSTR?80,"ground " ;75 15
.FSTR FSTR?81,"Royal " ;75 15
.FSTR FSTR?82,"Empire" ;75 15
.FSTR FSTR?83,"at " ;72 72
.FSTR FSTR?84,"Your " ;72 18
.FSTR FSTR?85,"something " ;72 9
.FSTR FSTR?86,"you" ;70 70
.FSTR FSTR?87,"A " ;70 70
.FSTR FSTR?88,"isn't " ;70 14
.FSTR FSTR?89,"before " ;70 14
.FSTR FSTR?90,"southern " ;70 10
.FSTR FSTR?91,"Room" ;69 23
.FSTR FSTR?92,"it " ;66 66
.FSTR FSTR?93,"north" ;66 22
.FSTR FSTR?94,"here " ;66 22
.FSTR FSTR?95,"back " ;66 22
.FSTR FSTR?96,"strange " ;66 11
;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

271
zork3str.zap Normal file
View file

@ -0,0 +1,271 @@
; STRINGS ARE DEFINED HERE
.GSTR STR?1,"Your old friend, the brass lantern, is at your feet."
.GSTR STR?2,"The steel door is closed."
.GSTR STR?3,"Lying on the ground is a small note of some kind."
.GSTR STR?4,"Warning:
The Royal Puzzle is quite dangerous and it is possible to become trapped within its confines. Please do not enter the puzzle after hours or when museum personnel are not present.
The Management
"
.GSTR STR?5,"There is an old book here."
.GSTR STR?6,"Nestled inside the niche is an old and dusty book."
.GSTR STR?7,"The book is written in a strong and elegant hand and is full of strange and wondrous pictures. The text is in a tongue unknown to you and is penned in many colours. Some of the words seem to change colour as you read them. The book itself is very old and the pages dry and brittle."
.GSTR STR?8,"The dungeon master is quietly leaning on his staff here."
.GSTR STR?9," "
.GSTR STR?10,"You are standing at the southern end of a long, dimly lit hall. To the south, stairs ascend into darkness. To the north the corridor is illuminated by torches set high in the walls, out of reach. On one wall is a red button."
.GSTR STR?11,"You can't go that way."
.GSTR STR?12,"You have come to the end of two adjoining passages to the west and the northwest."
.GSTR STR?13,"This is a particularly damp spot even by dungeon standards. You can see a crossroads to the west, and two nearly identical passages lead east and northeast. A stone channel, wide and deep, steeply descends into the room from the south. It is covered with moss and lichen, and is far too slippery to climb. The channel crosses the room, but the opening where it once continued north is now blocked by rubble."
.GSTR STR?14,"The channel opening is blocked by tons of debris."
.GSTR STR?15,"The channel is too steep and the moss too slippery."
.GSTR STR?16,"This is a hall with polished marble walls. It widens slightly as it turns west at its northern and southern ends."
.GSTR STR?17,"This is a hall with polished marble walls. It widens slightly as it turns east at its northern and southern ends."
.GSTR STR?18,"You would be burned to a crisp in no time."
.GSTR STR?19,"You are in a bare prison cell. Its wooden door is securely fastened, and you can see only flames and smoke through its small window."
.GSTR STR?20,"The door is securely fastened."
.GSTR STR?21,"This is a large room, richly appointed in a style that bespeaks exquisite taste. To judge from its contents, it is the ultimate storehouse of the wealth of the Great Underground Empire.
There are chests here containing precious jewels, mountains of zorkmids, rare paintings, ancient statuary, and beguiling curios.
On one wall is an annotated map of the Empire, showing the locations of various troves of treasure, and of several superior scenic views.
On a desk at the far end of the room may be found stock certificates representing a controlling interest in FrobozzCo International, the multinational conglomerate and parent company of the Frobozz Magic Boat Co., etc.
"
.GSTR STR?22,"Oh, no! You have walked into a den of hungry grues and it's dinner time!"
.GSTR STR?23,"Oh, no! You have walked into the slavering fangs of a lurking grue!"
.GSTR STR?24," "
.GSTR STR?25," "
.GSTR STR?26," "
.GSTR STR?27," "
.GSTR STR?28," "
.GSTR STR?29," a transcript of interaction with ZORK III.
ZORK is a trademark of Infocom, Inc.
Copyright (c) 1982 Infocom, Inc. All rights reserved.
"
.GSTR STR?30,"Oh, no! A dozen or more lurking grues attack at once and devour you! From the look of things, I would guess that you had interrupted a grue convention!"
.GSTR STR?31,"Oh, no! A lurking grue slithered into the room and devoured you!"
.GSTR STR?32,"Hello."
.GSTR STR?33,"Good day."
.GSTR STR?34,"Nice weather we've been having lately."
.GSTR STR?35,"Goodbye."
.GSTR STR?36,"Very good. Now you can go to the second grade."
.GSTR STR?37,"Have you tried hopping around the dungeon, too?"
.GSTR STR?38,"Are you enjoying yourself?"
.GSTR STR?39,"Wheeeeeeeeee!!!!!"
.GSTR STR?40,"Do you expect me to applaud?"
.GSTR STR?41,"You should have looked before you leaped."
.GSTR STR?42,"I'm afraid that leap was a bit much for your weak frame."
.GSTR STR?43,"In the movies, your life would be passing in front of your eyes."
.GSTR STR?44,"Geronimo....."
.GSTR STR?45,"Unfortunately, you were holding it at the time."
.GSTR STR?46,"kill"
.GSTR STR?47,"attack"
.GSTR STR?48,"Kicking the "
.GSTR STR?49,"Waving the "
.GSTR STR?50,"Playing in this way with the "
.GSTR STR?51,"Fiddling with the "
.GSTR STR?52,"Pushing the "
.GSTR STR?53,"Trying to destroy the "
.GSTR STR?54," doesn't seem to work."
.GSTR STR?55," isn't notably helpful."
.GSTR STR?56," doesn't work."
.GSTR STR?57," has no effect."
.GSTR STR?58,"A valiant attempt."
.GSTR STR?59,"You can't be serious."
.GSTR STR?60,"An interesting idea..."
.GSTR STR?61,"What a concept!"
.GSTR STR?62,"The lamp appears a bit dimmer."
.GSTR STR?63,"The lamp is definitely dimmer now."
.GSTR STR?64,"The lamp is nearly out."
.GSTR STR?65,"If you insist.... Poof, you're dead!"
.GSTR STR?66,"west"
.GSTR STR?67,"east"
.GSTR STR?68,"mirror."
.GSTR STR?69,"wooden panel which once contained a mirror."
.GSTR STR?70,"The mirror is mounted on a panel which has been opened outward."
.GSTR STR?71,"The panel has been opened outward."
.GSTR STR?72,", identical stone statues face each other from pedestals on opposite sides of the corridor. The statues represent Guardians of Zork, a military order of ancient lineage. They are portrayed as heavily armored warriors standing at ease, hands clasped around formidable bludgeons."
.GSTR STR?73,"nor"
.GSTR STR?74,"sou"
.GSTR STR?75,"A large mirror fills the "
.GSTR STR?76,"A large panel fills the "
.GSTR STR?77,"The Guardians awake, and in perfect unison, utterly destroy you with their stone bludgeons. Satisfied, they resume their posts."
.GSTR STR?78,"The mirror is mounted on a wooden panel which moves slightly inward as you push, and back out when you let go. The mirror feels fragile."
.GSTR STR?79,"The mirror is unyielding, but seems rather fragile."
.GSTR STR?80,"The wooden panel moves slightly inward as you push, and back out when you let go."
.GSTR STR?81,"The panel is unyielding."
.GSTR STR?82,"north"
.GSTR STR?83,"northeast"
.GSTR STR?84,"southeast"
.GSTR STR?85,"south"
.GSTR STR?86,"southwest"
.GSTR STR?87,"northwest"
.GSTR STR?88,"All at once, two immense stone bludgeons come through the top of the structure, crushing you."
.GSTR STR?89,"The structure sways unsteadily "
.GSTR STR?90,"The structure slides "
.GSTR STR?91,"Suddenly the Guardians realize someone is trying to sneak by them in the structure. They awake and, in perfect unison, hammer the contents of the box (in other words you) to pulp. They then resume their posts, satisfied."
.GSTR STR?92,"Suddenly, two identical stone hands holding tremendous bludgeons come through the top of the structure and hammer the contents of the box to pulp. That includes you."
.GSTR STR?93,"The dungeon master is taken momentarily by surprise. He dodges your blow, and then, with a disappointed expression on his face, he raises his staff, and traces a complicated pattern in the air. As it completes you crumble into dust."
.GSTR STR?94,"but I fear my waiting may be in vain. I must not give up hope!"
.GSTR STR?95,"but you have far to go before you are ready."
.GSTR STR?96,"and you seem to have made some progress, albeit slight."
.GSTR STR?97,"and your journey is half complete. Be of good cheer!"
.GSTR STR?98,"and you are coming nearer the end of your long quest!"
.GSTR STR?99,"and it will not be long yet before you are ready!"
.GSTR STR?100,"and you are nearly ready for the last test!"
.GSTR STR?101,"Beyond the once-secret door are dark, forbidding stairs that lead down to a passage below. Dim light, as from torches, can be seen in the passage."
.GSTR STR?102,"This is a very low and narrow passage leading east to west."
.GSTR STR?103,"This is a chamber of breathtaking beauty. Mighty stalagmites form structured shapes of rock, encrusted with crystalline formations. Phosphorescent mosses, fed by a trickle of water from some unseen source above, make the crystals glow and sparkle with every color of the rainbow. There is an opening to the west, and a man-made passage heads south."
.GSTR STR?104,"This is the north end of a large hall with a vaulted ceiling. A long, tiled hallway leads north through a tall arch. Although the origin or purpose of this room is unclear, there is a large rendering of the Royal Seal of Lord Dimwit Flathead carved on the wall."
.GSTR STR?105,"The Seal is vintage Flathead, with signs of excess nearly everywhere. It consists of a curiously flat-headed figure wearing a gaudy crown, surrounded by the Crown Jewels of the Empire."
.GSTR STR?106,"The great iron door is rusted shut."
.GSTR STR?107,"The iron door is rusted shut."
.GSTR STR?108,"The guards locked the iron door behind them."
.GSTR STR?109,"The stairs end blindly to the south."
.GSTR STR?110,"open"
.GSTR STR?111,"closed"
.GSTR STR?112,"You experience a brief period of disorientation. The area around you seems to be solidifying! Rock formations close in on you and before you can react you are engulfed in stone!"
.GSTR STR?113," you are surrounded by heavily armed guards who seem awed by your presence. One, whose IQ could not possibly be above 15, aims a strange waffle-like instrument in your direction and all goes black."
.GSTR STR?114," you are confronted with a goodly number of particularly stupid-looking people dressed in peculiar uniform and pointing waffle-like objects in your general direction. One twists his waffle and you slump to the ground, dead."
.GSTR STR?115," you see before you a row of military people who, if appearances do not deceive, have the cumulative intelligence of a not yet ripe grapefruit. One of them aims a waffle-shaped implement in your direction and you become numb and then paralyzed and then dead."
.GSTR STR?116,"He speaks very loudly, nearly deafening the poor civil servant whose duty it is to see that his wishes are carried out. ""Aha! A thief! Didn't I tell you that we needed more security! But, no! You all said my idea to build the museum under two miles of mountain and surrounded by five hundred feet of steel was impractical! Now, what to do with this ... intruder? I have it! We'll build a tremendous fortress on the highest mountain peak, with one narrow ladder stretching thousands of feet to the pinnacle. There he will stay for the rest of his life!"" His brow-beaten assistant hesitates. ""Don't you think, Your Lordship, that your plan is a bit, well, a bit much?"" Flathead gives it a second's thought. ""No, not really."" he says, and you are led away. A few years later, your prison is finished. You are taken there, and spend the rest of your life in misery."
.GSTR STR?117,"A particularly vicious-looking guard enters the room and eyes you. He grinds his teeth in a most unpleasant way, pulls a waffle out of his garment, and vaporizes you with a flick of his finger."
.GSTR STR?118,"This is an exhibit of Empire technology. A wooden door to the south is "
.GSTR STR?119,"."
.GSTR STR?120,"This is a large hall which hosted the technological exhibits of the Great Underground Empire. A door to the south is "
.GSTR STR?121,"wage scales for guards"
.GSTR STR?122,"the excessive nature of the Royal Government"
.GSTR STR?123,"the soon to be constructed Royal Puzzle"
.GSTR STR?124,"the proper way to execute trespassers"
.GSTR STR?125,"torture as the preferred punishment for thieves"
.GSTR STR?126,"the banishment of the Wizard of Frobozz"
.GSTR STR?127,"You are in a dark and quite creepy crawlway with passages leaving to the north, east, south, and southwest."
.GSTR STR?128,"You are at the eastern end of a dark, featureless landscape of shallow hills. Paths to the east and southeast re-enter the rock."
.GSTR STR?129,"Towering walls of rock bar your way."
.GSTR STR?130,"You are in a shadowy land of low, rolling hills stretching out to the west and south. The land is bordered to the north by a massive stone wall. Ancient and weathered, the wall has crumbled enough at one point to permit passage."
.GSTR STR?131,"A stone wall blocks the way."
.GSTR STR?132,"You are in a dark and shadowy land. All around you are gentle hills and eerie shadows. Far above, shrouded in mist, you can barely make out the ceiling of the enormous cavern that spans this entire land."
.GSTR STR?133,"You are in an ominously dark land of rolling hills. The ground becomes softer to the south."
.GSTR STR?134,"The ground becomes too soft to walk on in that direction."
.GSTR STR?135,"You are at the southern end of a shadowy land. The ground here is quite soft, and the area is surrounded by quicksand on most sides. North of here is a terrain of shallow hills."
.GSTR STR?136,"The quicksand prevents movement in that direction."
.GSTR STR?137,"You are near the southern end of the land of shadow. The ground here is soft and spongy, and it becomes quicksand to the south. North and east of here are gentle, rolling hills. A gentle sea breeze wafts over a steeply sloping path to the west."
.GSTR STR?138,"You are in a land of dark shadows and shallow hills, which stretch out in all directions. To the west, the land dips sharply."
.GSTR STR?139,"You are standing atop a steep cliff, looking west over a vast ocean. Far below, the surf pounds at a sandy beach. To the south and east are rolling hills filled with eerie shadows. A path cut into the face of the cliff descends toward the beach. To the north is a tall stone wall, which ends at the cliff edge. It was obviously built long ago, and directly north is a spot where you could climb over the rubble of the decaying wall."
.GSTR STR?140,"Between the rocks, wind, and waves, you wouldn't last a minute."
.GSTR STR?141,"The quicksand prevents movement here."
.GSTR STR?142,"stairs"
.GSTR STR?143,"?"
.GSTR STR?144," appears to be badly hurt and defenseless."
.GSTR STR?145," is hurt, and its strength appears to be fading."
.GSTR STR?146," has some wounds and is probably not capable of hindering your movement."
.GSTR STR?147," has a light wound which hasn't affected its seemingly great strength."
.GSTR STR?148," has a great deal of strength, perhaps matching your own."
.GSTR STR?149,"A good parry! Your sword wounds the hooded figure!"
.GSTR STR?150,"A quick stroke catches the hooded figure off guard! Blood trickles down the figure's arm!"
.GSTR STR?151,"The hooded figure is hit with a quick slash!"
.GSTR STR?152,"Your move was not quick enough and misses the mark."
.GSTR STR?153,"A quick stroke, but the hooded figure is on guard."
.GSTR STR?154,"A good stroke, but it's too slow."
.GSTR STR?155,"A good slash, but it misses by a mile."
.GSTR STR?156,"You charge, but the hooded figure jumps nimbly aside."
.GSTR STR?157,"The hooded figure catches you off guard and wounds you!"
.GSTR STR?158,"You are wounded by a lightning thrust!"
.GSTR STR?159,"Your quick reflexes cannot stop the hooded figure's stroke! You are hit!"
.GSTR STR?160,"In your wounded state, you cannot defend yourself against your still-quick opponent. Slowly and carefully, the figure starts to remove its hood as you fall to the ground, dead."
.GSTR STR?161,"The hooded figure stabs nonchalantly with its sword and misses."
.GSTR STR?162,"You dodge as the hooded figure comes in low."
.GSTR STR?163,"The hooded figure tries to sneak past your guard, but you twist away."
.GSTR STR?164,"The hooded figure thrusts, but you fight back and send it flying to the ground!"
.GSTR STR?165,"You are dead."
.GSTR STR?166,"You are very seriously wounded. One more wound would very likely do you in."
.GSTR STR?167,"You are hurt quite badly. One major wound would probably kill you."
.GSTR STR?168,"You have a few wounds, which do not seriously impair your strength."
.GSTR STR?169,"You are wounded lightly. You have a good deal of strength in reserve."
.GSTR STR?170,"You are in perfect health."
.GSTR STR?171,"You are at the bottom of a seemingly endless stair, winding its way upward beyond your vision. An eerie light, coming from all around you, casts strange shadows on the walls. To the south is a dark and winding trail."
.GSTR STR?172,"The stairs are endless."
.GSTR STR?173,"You are at the junction of a north-south passage and an east-west passage. To the north, you can make out the bottom of a stairway. The ways to the east and south are relatively cramped, but a wider trail leads to the west."
.GSTR STR?174,"You are west of the junction, where the rock-bound passage widens out into a large, flat area. Although the land here is barren, you can see vegetation to the west. South of here is a mighty wall of stone, ancient and crumbling. To the southwest the wall has decayed enough to form an opening, through which seeps a thin mist. A trail dips sharply into rocky terrain to the northwest."
.GSTR STR?175,"A stone wall blocks your way."
.GSTR STR?176,"You are at a sharp turn on a narrow and steeply sloping path, strewn with boulders of various sizes. The path climbs sharply toward a desolate plain to the southeast. Southwest of here the path winds down to the base of a cliff."
.GSTR STR?177,"You are at the base of a steep cliff. Directly above you is a wide ledge and far above that some natural sunlight can be seen. To the northeast is a steeply climbing path and the ground becomes sandy toward the south."
.GSTR STR?178,"You can't get up the rock face."
.GSTR STR?179,"The drop would kill you."
.GSTR STR?180,"There's no tree here suitable for climbing."
.GSTR STR?181,"You attempt the climb but slide back down."
.GSTR STR?182,"You are in a dank passage filled with a wispy fog. A spooky passageway leads north and a wider path heads off to the south. To the west, the path leaves the rock and enters an eerie, shadowy land."
.GSTR STR?183,"You are in a wide cavern on the north shore of a small lake. Some polished stone steps lead to the southeast and a sheer rock face prevents any movement around the lake to the southwest. The cavern is dimly lit from above."
.GSTR STR?184,"If you really want to enter the lake, you should say so."
.GSTR STR?185,"The sheer rock face prevents movement along the lake shore."
.GSTR STR?186,"This is a small balcony carved into a near-vertical cliff. To the east, stretching from north to south, stands a monumental aqueduct supported by mighty stone pillars, some of which are starting to crumble from age. You feel a sense of loss and sadness as you ponder this once-proud structure and the failure of the Empire which created this and other engineering marvels. Some stone steps lead up to the northwest."
.GSTR STR?187,"The drop would be fatal."
.GSTR STR?188,"You are floating on the surface of the lake. The water is ice cold and your ability to survive here for long is very questionable. A swim north puts you at your starting point. Conditions to the east are poor where the lake turns into swamp. The west and south shores are suitable for walking, however."
.GSTR STR?189,"The swamp is impassable."
.GSTR STR?190,"You are below the surface of the lake. It turns out that the lake is quite shallow and the bottom is only a few feet below you. Considering the frigid temperature of the water, you should probably not plan an extended stay. The lake bottom is sandy and a few hearty plants and algae live there."
.GSTR STR?191,"You are already at the bottom of the lake."
.GSTR STR?192,"You are on the western shore of the lake. The ground here is quite hard, but a few sickly reeds manage to grow near the water's edge. The only path leads into the rock to the south."
.GSTR STR?193,"If you want to enter the lake, you should say so."
.GSTR STR?194,"Mounted on one wall is a flaming torch, which fills the room with a flickering light."
.GSTR STR?195,"A piece of bread is on the ground here."
.GSTR STR?196,"It seems as if somebody has been here recently, as there is some fresh bread lying beneath one of the other trees."
.GSTR STR?197,"The staff is instantly consumed in a ball of flame. You along with it."
.GSTR STR?198,"A large chest, closed and locked, is lying among the boulders."
.GSTR STR?199,"The man appears to be getting somewhat impatient."
.GSTR STR?200,"Your friend at the cliff top has started pacing nervously around."
.GSTR STR?201,"""Yoo hoo!"" calls the man at the brink of the cliff. ""Remember me?"""
.GSTR STR?202,"The man on the cliff waves at you. ""It would just take a moment to tie that rope to the chest. I'd be much obliged, and there might even be something in it for you!"""
.GSTR STR?203,"A few small stones fall near your feet. You look up and see your friend waving. ""I haven't got all day, fella. Be a pal and pass up the chest!"""
.GSTR STR?204,"The man on the cliff clears his throat loudly. ""I don't mean to be rushing you, but I do have some pressing engagements...."""
.GSTR STR?205,"Oh, no! A tremendous fish just swallowed you whole!"
.GSTR STR?206,"Your strength gives out, and you drown in the frigid waters."
.GSTR STR?207,"The roc snatches you in its jaws and has you for lunch."
.GSTR STR?208,"I"
.GSTR STR?209,"II"
.GSTR STR?210,"III"
.GSTR STR?211,"IV"
.GSTR STR?212,"You see a passage cluttered with broken timbers. An extremely narrow opening can be seen at the end of the room."
.GSTR STR?213,"You see a tiny room with rough walls. Chiseled crudely on one wall is the number ""8"". The only apparent exit seems to be a blur."
.GSTR STR?214,"You see a wide room with two nearly identical passages leading east and northeast. A wide channel descends steeply into the room and seems to be blocked by rubble."
.GSTR STR?215,"You see the interior of a huge temple rudely constructed of basalt blocks. Flickering torches cast a sallow illumination over an altar still wet with the blood of human sacrifice, its velvet covers stained and encrusted with gore."
.GSTR STR?216,"Smokey the Bear puts out both the fire and you."
.GSTR STR?217,"This is a very small room. In the corner is a rickety wooden ladder, leading downward. It might be safe to descend. There is also a staircase leading upward."
.GSTR STR?218,"This is a rather wide room. On one side is the bottom of a narrow wooden ladder. To the west and the south are passages leaving the room."
.GSTR STR?219,"You have come to a dead end in the mine.
There is a small pile of coal here."
.GSTR STR?220,"This is a long and narrow passage, which is cluttered with broken timbers. A wide passage comes from the east and turns at the west end of the room into a very narrow passageway. From the west comes a strong draft."
.GSTR STR?221,"You cannot fit through this passage with that load."
.GSTR STR?222,"This is a small chamber carved out of the rock at the end of a short crawl. On the wall is crudely chiseled the number ""8"". The only apparent exit, to the east, seems to be a blur and a loud, whirring sound resounds through the rock."
.GSTR STR?223,"You are repelled from the exit by a fierce wind."
.GSTR STR?224,"A spray can is in the corner. In large type is the legend ""Frobozz Magic Grue Repellent."""
.GSTR STR?225,"!!! FROBOZZ MAGIC GRUE REPELLENT !!!
Instructions for use: Apply liberally to creature to be protected. Duration of effect is unpredictable. Use only in place of death!
(No warranty expressed or implied)"
.GSTR STR?226,"The can explodes and you die a horribly smelly death."
.GSTR STR?227,"Sacrificial Altar
This is the interior of a huge temple of primitive construction. A few flickering torches cast a sallow illumination over the altar, which is still drenched with the blood of human sacrifice. Behind the altar is an enormous statue of a demon which seems to reach towards you with dripping fangs and razor-sharp talons. A low noise begins behind you, and you turn to see hundreds of hunched and hairy shapes. A guttural chant issues from their throats. Near you stands a figure draped in a robe of deepest black, brandishing a huge sword. The chant grows louder as the robed figure approaches the altar. The large figure spots you and approaches menacingly. He reaches into his cloak and pulls out a great, glowing dagger. He pulls you onto the altar, and with a murmur of approval from the throng, he slices you neatly across your abdomen."
.GSTR STR?228,"You are on the south shore of the lake. Rock formations prevent movement to the west and thickening swamp to the east makes the going all but impossible. To the south, where the beach meets a rock formation, you can make out a dark passage sloping steeply upward into the rock."
.GSTR STR?229,"The swamp is too thick."
.GSTR STR?230,"If you want to go into the lake, you should say so."
.GSTR STR?231,"You can't walk through a piece of metal."
.GSTR STR?232,"The hole is too far above your head."
.GSTR STR?233,"You are in a wide stone channel, part of the water supply system for the Great Underground Empire. The source of water was a waterfall to the south, which has long since dried up. Water flowed along the aqueduct to the north. This region is lit from above, although the source of light is not apparent."
.GSTR STR?234,"You can't climb the dried-up waterfall."
.GSTR STR?235,"The arch before you is broken."
.GSTR STR?236,"It's a long way down...."
.GSTR STR?237,"The arch to the south is broken."
.GSTR STR?238,"You execute a perfect swan dive into the rocks below!"
.GSTR STR?239,"The light from above seems to be focused in the center of the room, where a single key is lying in the dust."
.GSTR STR?240,"The key is a long and heavy skeleton key."
.GSTR STR?241,"The key is short and stubby, shaped like no lock you have ever seen."
.GSTR STR?242,"The key is round and thin, more like a pencil than a key."
.GSTR STR?243,"The key is shiny with many prongs."
.GSTR STR?244,"The key is sharp as an awl, and rusted badly."
.GSTR STR?245,"One of the stone figures (or maybe both, it's hard to tell) suddenly springs to life and crushes you with his stone bludgeon."
.GSTR STR?246,"You enter the quicksand and slowly sink to a new low in adventuring."
.ENDI