Revision 24 (Original Source)

This commit is contained in:
historicalsource 2019-04-13 20:33:25 -04:00
commit 826abeb339
28 changed files with 13347 additions and 0 deletions

1
README.md Normal file
View File

@ -0,0 +1 @@
# enchanter

1377
castle.zil Normal file

File diff suppressed because it is too large Load Diff

61
clock.zil Normal file
View File

@ -0,0 +1,61 @@
"CLOCK for
ENCHANTER
(c) Copyright 1983 Infocom, Inc. All Rights Reserved.
"
<CONSTANT C-TABLELEN 180>
<GLOBAL C-TABLE <ITABLE NONE 180>>
<GLOBAL C-DEMONS 180>
<GLOBAL C-INTS 180>
<CONSTANT C-INTLEN 6>
<CONSTANT C-ENABLED? 0>
<CONSTANT C-TICK 1>
<CONSTANT C-RTN 2>
<ROUTINE QUEUE (RTN TICK "AUX" CINT)
#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>)
(<EQUAL? <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>
<SETG MOVES <+ ,MOVES 1>>
<RETURN .FLG>)
(<NOT <0? <GET .C ,C-ENABLED?>>>
<SET TICK <GET .C ,C-TICK>>
<COND (<0? .TICK>)
(T
<PUT .C ,C-TICK <- .TICK 1>>
<COND (<AND <NOT <G? .TICK 1>>
<APPLY <GET .C ,C-RTN>>>
<SET FLG T>)>)>)>
<SET C <REST .C ,C-INTLEN>>>>

16
crufty.zil Normal file
View File

@ -0,0 +1,16 @@
"(c) Copyright 1983 Infocom, Inc. All Rights Reserved."
<ROUTINE THIS-IT? (OBJ TBL "AUX" SYNS)
<COND (<FSET? .OBJ ,INVISIBLE> <RFALSE>)
(<AND ,P-NAM
<NOT <ZMEMQ ,P-NAM
<SET SYNS <GETPT .OBJ ,P?SYNONYM>>
<- </ <PTSIZE .SYNS> 2> 1>>>>
<RFALSE>)
(<AND ,P-ADJ
<OR <NOT <SET SYNS <GETPT .OBJ ,P?ADJECTIVE>>>
<NOT <ZMEMQB ,P-ADJ .SYNS <- <PTSIZE .SYNS> 1>>>>>
<RFALSE>)
(<AND <NOT <0? ,P-GWIMBIT>> <NOT <FSET? .OBJ ,P-GWIMBIT>>>
<RFALSE>)>
<RTRUE>>

271
egg.zil Normal file
View File

@ -0,0 +1,271 @@
"EGG for
ENCHANTER
Copyright 1983 Infocom, Inc. All Rights Reserved.
"
;"Where, if the player messes up, he gets it all over his face."
<ROOM JEWEL-ROOM
(IN ROOMS)
(DESC "Jewel Room")
(LDESC
"This fabulous room commands a magnificent view of the Lonely Mountain
which lies to the north and west. The room itself is filled with
beautiful chests and cabinets which once contained precious jewels
and other objets d'art. These are empty. Winding stone stairs
lead down to the base of the tower.")
(DOWN TO NW-TOWER)
(FLAGS RLANDBIT ONBIT)
(TEXT "You can see the Lonely Mountain to the northwest.")
(GLOBAL STAIRS MOUNTAIN WINDOW)>
<OBJECT JEWEL-CHESTS
(IN JEWEL-ROOM)
(DESC "collection of chests and cabinets")
(SYNONYM CHEST CHESTS CABINET)
(ADJECTIVE BEAUTIFUL)
(FLAGS NDESCBIT CONTBIT)
(ACTION JEWEL-CHESTS-F)>
<ROUTINE JEWEL-CHESTS-F ()
<COND (<VERB? LOOK-INSIDE EXAMINE>
<TELL "There's nothing inside." CR>)
(<VERB? OPEN CLOSE>
<TELL "Don't bother. There's nothing inside anyway." CR>)
(<VERB? PUT>
<TELL
"A waste of time. You'd probably forget where you put it." CR>)>>
<OBJECT EGG
(IN JEWEL-ROOM)
(DESC "beautiful, ornamented egg")
(FDESC
"There is an ornamented egg here, both beautiful and complex. It is
carefully crafted and bears further examination.")
(SYNONYM EGG)
(ADJECTIVE BEAUTIFUL JEWELLED FABERGE ORNAME)
(FLAGS TAKEBIT CONTBIT TRANSBIT TREASURE)
(SIZE 8)
(CAPACITY 10)
(ACTION EGG-F)>
<OBJECT EGG-KNOB-1
(IN EGG)
(DESC "lapis handle")
(SYNONYM HANDLE)
(ADJECTIVE LAPIS)
(FLAGS NDESCBIT)
(TEXT "turned")
(ACTION EGG-KNOB-F)>
<OBJECT EGG-KNOB-2
(IN EGG)
(DESC "emerald knob")
(SYNONYM KNOB)
(ADJECTIVE EMERALD)
(FLAGS NDESCBIT VOWELBIT)
(TEXT "twisted")
(ACTION EGG-KNOB-F)>
<OBJECT EGG-KNOB-3
(IN EGG)
(DESC "silver slide")
(SYNONYM SLIDE)
(ADJECTIVE SILVER)
(FLAGS NDESCBIT)
(TEXT "shoved")
(ACTION EGG-KNOB-F)>
<OBJECT EGG-KNOB-4
(IN EGG)
(DESC "golden crank")
(SYNONYM CRANK)
(ADJECTIVE GOLDEN)
(FLAGS NDESCBIT)
(TEXT "wound")
(ACTION EGG-KNOB-F)>
<OBJECT EGG-KNOB-5
(IN EGG)
(DESC "diamond-studded button")
(SYNONYM BUTTON)
(ADJECTIVE DIAMOND)
(FLAGS NDESCBIT)
(TEXT "pushed")
(ACTION EGG-KNOB-F)>
<ROUTINE EGG-KNOB-STATE (KNOB "OPTIONAL" (VER? <>))
<COND (<OR .VER? <FSET? .KNOB ,OPENBIT>>
<TELL "The " D .KNOB>
<COND (<FSET? .KNOB ,OPENBIT>
<TELL " has been ">)
(.VER?
<TELL " has not yet been ">)>
<TELL <GETP .KNOB ,P?TEXT> ". ">)>>
<ROUTINE EGG-F ()
<COND (<AND <VERB? LOOK-INSIDE> <NOT <FSET? ,EGG ,OPENBIT>>>
<TELL "The egg isn't open!" CR>)
(<VERB? EXAMINE>
<TELL
"This ornamented egg is both beautiful and complex. The egg itself is
mother-of-pearl, but decorated with delicate gold traceries inlaid with
jewels and other precious metals. On the surface are a lapis handle, an
emerald knob, a silver slide, a golden crank, and a diamond-studded button
carefully and unobtrusively imbedded in the decorations. These various
protuberances are likely to be connected with some machinery inside." CR>
<EGG-KNOB-STATE ,EGG-KNOB-1>
<EGG-KNOB-STATE ,EGG-KNOB-2>
<EGG-KNOB-STATE ,EGG-KNOB-3>
<EGG-KNOB-STATE ,EGG-KNOB-4>
<EGG-KNOB-STATE ,EGG-KNOB-5>
<TELL "The " D ,PRSO " is ">
<COND (<FSET? ,PRSO ,OPENBIT> <TELL "open.">)
(ELSE <TELL "closed.">)>
<CRLF>
<RTRUE>)
(<AND <VERB? PUT> <==? ,PRSI ,EGG>>
<TELL
"You can't put the " D ,PRSO " inside the egg without damaging it." CR>)
(<AND <VERB? REZROV> <NOT <FSET? ,EGG ,OPENBIT>>>
<FSET ,EGG ,OPENBIT>
<SETG SCORE <+ ,SCORE ,EGG-POINT>>
<SETG EGG-POINT 0>
<TELL
"The egg seems to come to life and each piece slides effortlessly in the
correct pattern. The egg opens">
<COND (<IN? ,DAMAGED-SCROLL ,EGG>
<FCLEAR ,DAMAGED-SCROLL ,INVISIBLE>
<THIS-IS-IT ,DAMAGED-SCROLL>
<TELL ", revealing a shredded scroll inside,
nestled among a profusion of shredders, knives, and other sharp instruments,
cunningly connected to the knobs, buttons, etc. on the outside">)>
<TELL "." CR>)
(<AND <VERB? LOOK-INSIDE>
<FSET? ,PRSO ,OPENBIT>
<NOT <FIRST? ,PRSO>>>
<TELL
"On the inside of the egg are many complex cutting devices." CR>)
(<AND <VERB? OPEN> <NOT <FSET? ,EGG ,OPENBIT>>>
<TELL
"That seems to be the problem." CR>)
(<AND <VERB? CLOSE> <FSET? ,EGG ,OPENBIT>>
<FCLEAR ,EGG-KNOB-1 ,OPENBIT>
<FCLEAR ,EGG-KNOB-2 ,OPENBIT>
<FCLEAR ,EGG-KNOB-3 ,OPENBIT>
<FCLEAR ,EGG-KNOB-4 ,OPENBIT>
<FCLEAR ,EGG-KNOB-5 ,OPENBIT>
<TELL
"As you close the egg, all of the pieces slide back into place, locking
it shut." CR>
<FCLEAR ,EGG ,OPENBIT>)
(<VERB? MUNG>
<TELL
"The egg is smashed into little tiny pieces by the force of your blow.">
<COND (<IN? ,DAMAGED-SCROLL ,EGG>
<FCLEAR ,DAMAGED-SCROLL ,INVISIBLE>
<MOVE ,DAMAGED-SCROLL ,SCRAMBLED-EGG>
<TELL
" Inside the now broken egg are the remains of a small spell scroll,
damaged beyond hope of learning.">)>
<CRLF>
<MOVE ,SCRAMBLED-EGG <LOC ,EGG>>
<REMOVE ,EGG>)>>
<ROUTINE EGG-KNOB-F ()
<COND (<VERB? REZROV OPEN TURN MOVE PUSH>
<COND (<FSET? ,PRSO ,OPENBIT>
<TELL "It's already in the open position." CR>)
(ELSE
<FSET ,PRSO ,OPENBIT>
<COND (<VERB? REZROV>
<SETG SCORE <+ ,SCORE ,EGG-POINT>>
<SETG EGG-POINT 0>
<TELL
"The " D ,PRSO " vibrates, moving this way and that, becoming almost
plastic, and finally moves to the open position." CR>)
(<FSET? ,EGG ,OPENBIT>
<TELL
"The " D ,PRSO " moves, and a cunning and diabolically engineered set
of gears, knives, grinders, and slicers moves across the interior of the
egg." CR>
<COND (<IN? ,DAMAGED-SCROLL ,EGG>
<TELL
"The scroll resting there is now shredded beyond recognition." CR>)>
<RTRUE>)
(ELSE
<TELL
"The " D ,PRSO " moves to the open position, after some resistance and
a few odd noises from some machinery which resides inside the egg." CR>
<COND (<AND <FSET? ,EGG-KNOB-1 ,OPENBIT>
<FSET? ,EGG-KNOB-2 ,OPENBIT>
<FSET? ,EGG-KNOB-3 ,OPENBIT>
<FSET? ,EGG-KNOB-4 ,OPENBIT>
<FSET? ,EGG-KNOB-5 ,OPENBIT>>
<SETG SCORE <+ ,SCORE ,EGG-POINT>>
<SETG EGG-POINT 0>
<FSET ,EGG ,OPENBIT>
<TELL "The egg falls open">
<COND (<IN? ,DAMAGED-SCROLL ,EGG>
<FCLEAR ,DAMAGED-SCROLL ,INVISIBLE>
<THIS-IS-IT ,DAMAGED-SCROLL>
<TELL
", revealing a shredded scroll inside">)>
<TELL "." CR>)>
<RTRUE>)>)>)
(<VERB? TAKE>
<TELL
"The " D ,PRSO " is an integral part of the egg and thus cannot be taken." CR>)
(<VERB? EXAMINE>
<EGG-KNOB-STATE ,PRSO T>
<CRLF>)
(<VERB? CLOSE>
<COND (<FSET? ,PRSO ,OPENBIT>
<TELL
"The " D ,PRSO " closes easily, but more noises issue from the interior." CR>
<FCLEAR ,PRSO ,OPENBIT>)
(ELSE
<TELL "It's already closed." CR>)>)
(<VERB? MUNG>
<PERFORM ,V?MUNG ,EGG>
<RTRUE>)>>
<OBJECT SCRAMBLED-EGG
(DESC "scrambled egg")
(SYNONYM EGG)
(ADJECTIVE BROKEN SCRAMBLED)
(FLAGS TAKEBIT CONTBIT OPENBIT)
(ACTION SCRAMBLED-EGG-F)
(CAPACITY 10)>
<ROUTINE SCRAMBLED-EGG-F ("AUX" (L <LOC ,SCRAMBLED-EGG>) F)
<COND (<VERB? KREBF>
<COND (<SET F <FIRST? ,SCRAMBLED-EGG>>
<MOVE .F ,EGG>)>
<THIS-IS-IT ,EGG>
<REMOVE ,SCRAMBLED-EGG>
<MOVE ,EGG .L>
<TELL
"The egg is returned to its former pristine beauty!" CR>)>>
<OBJECT DAMAGED-SCROLL
(IN EGG)
(DESC "shredded scroll")
(SYNONYM SCROLL)
(ADJECTIVE SHREDDED)
(TEXT
"The scroll is damaged beyond readability. You can make out the word
\"summon,\" in the title, but that's all.")
(ACTION DAMAGED-SCROLL-F)
(FLAGS TAKEBIT READBIT INVISIBLE)>
<ROUTINE DAMAGED-SCROLL-F ("AUX" (L <LOC ,DAMAGED-SCROLL>))
<COND (<VERB? KREBF>
<REMOVE ,DAMAGED-SCROLL>
<MOVE ,SUMMON-SCROLL .L>
<THIS-IS-IT ,SUMMON-SCROLL>
<SETG SCORE <+ ,SCORE ,REPAIR-POINT>>
<SETG REPAIR-POINT 0>
<TELL
"The scroll reforms, its slices and cuts rejoining, until there is a
whole scroll, somewhat faded, in its place!" CR>)>>

54
enchanter.zil Normal file
View File

@ -0,0 +1,54 @@
"ENCHANTER for
ENCHANTER
(c) Copyright 1983 Infocom, Inc. All Rights Reserved.
"
<PRINC "
*** ENCHANTER: Interlogic Fantasy ***
">
<BLOAT 90000 0 0 3300 0 0 0 0 0 256>
<SNAME "ENCHANTER">
<SET REDEFINE T>
<CONSTANT SERIAL 0>
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<OR <GASSIGNED? INSERT-CRUFTY>
<DEFINE INSERT-CRUFTY (STR) <INSERT-FILE .STR T>>>
<COND (<GASSIGNED? PREDGEN>
<ID 0>)>
<INSERT-FILE "SYNTAX" T>
<INSERT-FILE "MACROS" T>
<INSERT-FILE "CLOCK" T>
<INSERT-FILE "MAIN" T>
<INSERT-FILE "PARSER" T>
<INSERT-CRUFTY "CRUFTY">
<INSERT-FILE "VERBS" T>
<INSERT-FILE "GLOBALS" T>
<INSERT-FILE "TERROR" T>
<INSERT-FILE "STAIR" T>
<INSERT-FILE "MAGIC" T>
<INSERT-FILE "KNOT" T>
<INSERT-FILE "PURLOINED" T>
<INSERT-FILE "CASTLE" T>
<INSERT-FILE "TEMPLE" T>
<INSERT-FILE "GALLERY" T>
<INSERT-FILE "EGG" T>
<INSERT-FILE "SLEEP" T>
<INSERT-FILE "GEARS" T>
<INSERT-FILE "OUTSIDE" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>

BIN
enchanter.zip Normal file

Binary file not shown.

225
gallery.zil Normal file
View File

@ -0,0 +1,225 @@
"GALLERY for
ENCHANTER
Copyright 1983 Infocom, Inc. All Rights Reserved.
"
<ROOM GALLERY
(IN ROOMS)
(DESC "Gallery")
(WEST TO DIM-DESCENT)
(EAST TO SOUTH-GATE)
(FLAGS RLANDBIT ONBIT)
(ADVFCN GALLERY-A)
(ACTION GALLERY-F)>
<GLOBAL PORTRAIT-COMMENT <>>
<ROUTINE GALLERY-A ()
<COND (<AND <IN? ,ADVENTURER ,HERE>
<NOT ,PORTRAIT-COMMENT>
<NOT <FSET? ,FLATHEAD-PORTRAIT ,INVISIBLE>>
,ADVENTURER-CHARMED>
<SETG PORTRAIT-COMMENT T>
<TELL
"The adventurer stops and stares at the portraits. \"I've met him!\" he
gasps, pointing at the Wizard of Frobozz. He doesn't appear eager to
meet him again, though. \"And there's old Flathead! What a sight!\" He
glances at the other portraits briefly and then re-checks his map." CR>)>>
<ROUTINE GALLERY-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<NOT <LIT? ,HERE <>>>>
<COND (<AND ,SUPER-BRIEF
<NOT <ZERO? ,GALLERY-POINT>>>
<DESCRIBE-PORTRAIT-GALLERY>)>
<FCLEAR ,HERE ,TOUCHBIT>)
(<EQUAL? .RARG ,M-LOOK>
<COND (<LIT? ,HERE <>>
<COND (<NOT <ZERO? ,GALLERY-POINT>>
<REMOVE ,LIGHTED-PORTRAIT>)>
<SETG VISITED-GALLERY? T>
<TELL
"The east-west corridor opens into a gallery. The walls are lined with
portraits, some of apparently great value. All of the eyes seem to follow
you as you pass, and the entire room is subtly disturbing." CR>
<COND (<IN? ,PORTRAIT-NICHE ,GALLERY>
<TELL
"A small niche can be seen in the wall behind the spot where a painting
had been hanging." CR>)>)
(<NOT <DESCRIBE-PORTRAIT-GALLERY>>
<TELL "It is pitch black." CR>)>)>>
<ROUTINE DESCRIBE-PORTRAIT-GALLERY ()
<COND (<AND <IN? ,ETERNAL-FLAME ,PORTRAIT-NICHE>
<FSET? ,ETERNAL-FLAME ,ONBIT>>
<COND (<NOT <ZERO? ,GALLERY-POINT>>
<MOVE ,LIGHTED-PORTRAIT ,HERE>)>
<COND (,VISITED-GALLERY?
<TELL
"An eerie orange glow casts a pale, flickering light on the portrait
gallery.">)
(T
<SETG VISITED-GALLERY? T>
<TELL
"The east-west corridor opens into a portrait gallery. The gallery is lit
by an eerie orange glow.">)>
<TELL
" The eyes of the figures portrayed on the canvases seem to be faintly
illuminated and follow your every movement. After a moment, the source of
light becomes clear: a single lighted portrait flickers as if a flame were
burning behind it." CR>)>>
<GLOBAL VISITED-GALLERY? <>>
<OBJECT PORTRAITS
(IN GALLERY)
(DESC "portraits of unknown persons")
(SYNONYM PORTRAIT PERSON CANVAS PAINTING)
(ADJECTIVE UNKNOWN)
(FLAGS NDESCBIT TRYTAKEBIT)
(ACTION PORTRAITS-F)>
<ROUTINE PORTRAITS-F ()
<COND (<VERB? TAKE MOVE>
<TELL
"The portraits are large and extremely heavy; they can be neither taken
nor moved." CR>)
(<VERB? LOOK-BEHIND LOOK-UNDER>
<TELL
"There are hundreds of canvases here; you look behind one or two at random
but find nothing of interest." CR>)
(<VERB? EXAMINE>
<TELL
"The portraits represent a wide cross-section of races. Elves, gnomes, dwarves,
wizards, warlocks, and just plain folk are all here. Some of them are known
to you, such as Lord Dimwit Flathead of the Great Underground Empire, depicted
here in excessive detail, and the Wizard of Frobozz, shown in a typical pose
of anguished bewilderment." CR>
<FCLEAR ,FLATHEAD-PORTRAIT ,INVISIBLE>
<FCLEAR ,FROBOZZ-PORTRAIT ,INVISIBLE>
<RTRUE>)>>
<OBJECT FLATHEAD-PORTRAIT
(IN GALLERY)
(SYNONYM PORTRAIT)
(ADJECTIVE FLATHEAD DIMWIT)
(DESC "Flathead portrait")
(FLAGS NDESCBIT INVISIBLE VILLAIN)
(ACTION FLATHEAD-PORTRAIT-F)>
<ROUTINE FLATHEAD-PORTRAIT-F ()
<COND (<VERB? ZIFMIA>
<TELL
"Poor Flathead, the years have not been kind to him. Just as well, probably."
CR>)
(<VERB? EXAMINE>
<TELL
"This rather dull man stumbled into royalty in the Great Underground Empire,
and much to everyone's chagrin. Named by his people Lord Dimwit Flathead the
Excessive, he was best known for his outrageousness in style, policy, and
engineering. His portrait captures him in the classic pose of imbecility,
astride his gaudy throne." CR>)>>
<OBJECT FROBOZZ-PORTRAIT
(IN GALLERY)
(SYNONYM PORTRAIT)
(ADJECTIVE WIZARD FROBOZZ)
(DESC "Frobozz portrait")
(FLAGS NDESCBIT INVISIBLE VILLAIN)
(ACTION FROBOZZ-PORTRAIT-F)>
<ROUTINE FROBOZZ-PORTRAIT-F ()
<COND (<VERB? ZIFMIA>
<TELL
"The Wizard doesn't seem to respond to the summons. Perhaps he is too busy
molesting adventurers in ZORK II." CR>)
(<VERB? EXAMINE>
<TELL
"The Wizard of Frobozz was a former member of the Circle of Enchanters, but
he was removed for forgetfulness bordering on senility. The lively wit of his
youth having been replaced by a semi-sadistic mischievousness coupled with
an inability to pronounce words beginning with other than the letter \"F\",
he was \"retired\" to a small, unoccupied corner of the Great Underground
Empire, hopefully out of harm's way." CR>)>>
<OBJECT LIGHTED-PORTRAIT
(DESC "lighted portrait")
(SYNONYM PORTRAIT CANVAS PAINTING)
(ADJECTIVE LIGHTED ILLUMINATED LIT)
(FLAGS NDESCBIT TAKEBIT)
(SIZE 60)
(ACTION LIGHTED-PORTRAIT-F)>
<ROUTINE LIGHTED-PORTRAIT-F ()
<COND (<AND <VERB? LOOK-BEHIND> <NOT <FSET? ,PRSO ,TOUCHBIT>>>
<SETG SCORE <+ ,SCORE ,GALLERY-POINT>>
<SETG GALLERY-POINT 0>
<MOVE ,PORTRAIT-NICHE ,HERE>
<FSET ,PRSO ,TOUCHBIT>
<TELL
"Behind the portrait is a small niche. You find that the portrait is much
lighter than the others and place it on the ground.">
<FCLEAR ,HERE ,ONBIT> ;"Added to make room dark hereafter."
<COND (<FIRST? ,PORTRAIT-NICHE>
<TELL " Sitting in the niche is ">
<PRINT-CONTENTS ,PORTRAIT-NICHE>
<TELL ".">)>
<CRLF>)
(<VERB? EXAMINE>
<COND (<NOT <FSET? ,PRSO ,TOUCHBIT>>
<TELL
"The portrait, of an obscure adventurer, is not notable except for the
fact that it is lighted from behind by a flickering orange light." CR>)
(T
<TELL
"The portrait, of some obscure personage carrying a brass lantern and
an elvish sword of great antiquity, is mediocre at best." CR>)>)
(<AND <VERB? MOVE TAKE>
<NOT <FSET? ,PRSO ,TOUCHBIT>>>
<FCLEAR ,PRSO ,NDESCBIT>
<FSET ,PRSO ,TOUCHBIT>
<SETG SCORE <+ ,SCORE ,GALLERY-POINT>>
<SETG GALLERY-POINT 0>
<MOVE ,PORTRAIT-NICHE ,HERE>
<TELL
"The portrait is quite light. You remove it from the wall and place it on
the ground, revealing a small niche in the wall">
<COND (<FIRST? ,PORTRAIT-NICHE>
<TELL ", in which sits
">
<PRINT-CONTENTS ,PORTRAIT-NICHE>)>
<TELL "." CR>)>>
<OBJECT PORTRAIT-NICHE
(DESC "niche")
(SYNONYM NICHE)
(ADJECTIVE SMALL)
(CAPACITY 30)
(FLAGS CONTBIT OPENBIT NDESCBIT)
(ACTION PORTRAIT-NICHE-F)>
<ROUTINE PORTRAIT-NICHE-F ()
<COND (<VERB? OPEN CLOSE>
<TELL "You can't do that." CR>)>>
<OBJECT ETERNAL-FLAME
(IN PORTRAIT-NICHE)
(DESC "black candle")
(SYNONYM CANDLE FLAME)
(ADJECTIVE BLACK)
(FLAGS TAKEBIT LIGHTBIT ONBIT)
(ACTION ETERNAL-FLAME-F)>
<ROUTINE ETERNAL-FLAME-F ()
<COND (<VERB? GONDAR KULCAD>
<TELL
"The flame flickers for a moment, then goes out." CR>
<FCLEAR ,ETERNAL-FLAME ,ONBIT>
<FCLEAR ,ETERNAL-FLAME ,LIGHTBIT>
<RTRUE>)
(<AND <VERB? LAMP-ON>
<NOT <FSET? ,ETERNAL-FLAME ,ONBIT>>>
<TELL "You can't relight the candles." CR>)
(<VERB? LAMP-OFF>
<TELL
"The flame cannot be extinguished, no matter how hard you try." CR>)>>

648
gears.zil Normal file
View File

@ -0,0 +1,648 @@
"GEARS for
ENCHANTER
(c) Copyright 1983 Infocom, Inc. All Rights Reserved.
"
;"The mills of the gods grind slowly, but they grind exceeding fine."
<ROOM ENGINE-ROOM
(IN ROOMS)
(DESC "Engine Room")
(DOWN TO SE-TOWER)
(SE PER CROSS-ENGINE-ROOM)
(FLAGS RLANDBIT ONBIT)
(ACTION ENGINE-ROOM-F)
(PSEUDO "HAMMER" HAMMER-F "SPEARS" HAMMER-F)
(GLOBAL MACHINERY VOICES)>
<OBJECT MACHINERY
(IN LOCAL-GLOBALS)
(DESC "machinery")
(SYNONYM MACHINE)
(ACTION MACHINERY-F)>
<ROUTINE MACHINERY-F ()
<COND (<VERB? EXAMINE>
<TELL
"The machinery is extremely noisy and complicated. Other than that, you
can't imagine of what use it is to anybody." CR>)
(<VERB? AVOID>
<HAMMER-F>
<RTRUE>)
(<VERB? EXEX>
<TELL
"The machinery may or may not have been sped up, the facts being hard to
determine." CR>)>>
<ROUTINE ENGINE-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"The room is filled with noise: crashing and smashing, gurgling of water,
grinding of gears, and horrible screeching of metal. Huge devices of obscure
purpose provide these effects. The most notable is a huge hammer that smashes
continually against the stone floor: it makes any crossing of the room a
dangerous enterprise. The whole construction brings to mind the words
\"Infernal Machine.\" Far off to the southeast is another room.">
<COND (<IN? ,DISPEL-SCROLL ,CLOSET>
<TELL "
You can barely make out something on the floor of that room. It might be a
scroll, but from here you can't tell for sure.">)>
<CRLF>
<COND (<IN? ,TURTLE ,CLOSET>
<TELL
"Across the room you can see the rainbow turtle, who frequently looks your
way." CR>)>
<RTRUE>)>>
<ROUTINE HAMMER-F ()
<COND (<VERB? AVOID WALK-AROUND>
<TELL
"It's hard to see how you'll avoid a painful experience." CR>)
(<VERB? EXEX>
<SETG HAMMER-EXEX T>
<TELL
"The crashing of the hammer has become more frequent." CR>)>>
<ROUTINE SE-TOWER-F ("OPTIONAL" (RARG <>))
<COND (<AND <==? .RARG ,M-BEG>
<VERB? WALK>>
<COND (<==? ,PRSO ,P?UP>
<ENABLE <QUEUE I-CRASH 2>>)
(ELSE <DISABLE <INT I-CRASH>>)>
<RFALSE>)>>
<ROOM CLOSET
(IN ROOMS)
(DESC "Control Room")
(LDESC
"This is the control room for all the machinery nearby. The controls are all
magical, of course. The walls are covered by blinking lights and shifting
displays, interspersed with arcane dials and glowing buttons. It's all very
mysterious looking. The exit, to the northwest, leads into a room with
machinery which would surely crush you if you were to attempt to enter it.")
(NW PER RECROSS-ENGINE-ROOM)
(FLAGS RLANDBIT ONBIT)
(PSEUDO "HAMMER" HAMMER-F "SPEARS" HAMMER-F)
(GLOBAL MACHINERY VOICES)>
<OBJECT LIGHTS
(IN CLOSET)
(DESC "blinking display")
(SYNONYM LIGHT LIGHTS DISPLAY)
(ADJECTIVE BLINKING SHIFTING)
(FLAGS NDESCBIT)
(ACTION LIGHTS-F)>
<ROUTINE LIGHTS-F ()
<COND (<VERB? READ EXAMINE>
<TELL
"The lights and displays hold no meaning for you. A random number generator
may be controlling the whole thing, for all you know." CR>)>>
<OBJECT SWITCHES
(IN CLOSET)
(DESC "glowing control")
(SYNONYM DIAL CONTROL BUTTON DIALS)
(ADJECTIVE ARCANE GLOWING)
(FLAGS NDESCBIT)
(ACTION LIGHTS-F)>
<GLOBAL FAST? <>>
<GLOBAL CRASH? <>>
<GLOBAL HAMMER-EXEX <>>
<ROUTINE I-CRASH ()
<COND (<NOT <EQUAL? <LOC ,PLAYER> ,ENGINE-ROOM ,CLOSET ,SE-TOWER>>
<DISABLE <INT I-CRASH>>
<RFALSE>)>
<SETG CRASH? <NOT ,CRASH?>>
<COND (<OR ,CRASH? ,HAMMER-EXEX>
<TELL
"\"Crash!\" A huge hammer smashes against the stone floor">
<COND (<IN? ,PLAYER ,CLOSET>
<TELL " outside">)>
<TELL "." CR>)>
<ENABLE <QUEUE I-CRASH <COND (<OR ,FAST? ,HAMMER-EXEX> 1) (ELSE 2)>>>>
<ROUTINE CROSS-ENGINE-ROOM ()
<COND (<==? ,HASTED? ,WINNER>
<SETG FAST? T>
<COND (<==? ,WINNER ,TURTLE>
<TELL
"As the turtle starts across, he seems to set off something, for the
machinery speeds up and the noise level becomes almost unbearable. Luckily,
he makes it to the other side safely!" CR>)
(ELSE
<TELL
"You zip across the room easily, but you must have touched something
dangerous along the way, because the machinery speeds up, going faster
and faster." CR>)>
,CLOSET)
(<==? ,WINNER ,TURTLE>
<DISABLE <INT I-TURTLE>>
<TELL
"The poor turtle starts, but he's just too slow. About halfway across the
room he is dispatched by the enormous hammer, leaving only a rainbow colored
smudge on the floor.">
<COND (<==? ,DEATH-CHEATED ,TURTLE>
<SETG DEATH-CHEATED <>>
<TELL CR CR
"But wait! Amazingly, the smudge reforms into a turtle again! The revived
turtle just has time to turn his head in wonderment when the hammer smashes
down again, remaking the rainbow smudge.">)>
<TELL
" Even that disappears at the next blow of the hammer." CR>
<JIGS-UP <> <>> ;"can't survive this one"
<RFALSE>)
(<OR ,FAST? ,CRASH?>
<TELL
"You start across the room, but less than halfway across, the huge hammer
crashes down, right on top of you!" CR>
<COND (<==? ,DEATH-CHEATED ,ME>
<TELL
"Startlingly, you revive from this fatal blow, but even more startlingly,
the first thing you see is the same huge hammer descending upon you!" CR>)>
<JIGS-UP <> <>>
<RFALSE>)
(ELSE
<SETG FAST? T>
<TELL
"You make it across the room, but just barely; just as you duck through the
door, a huge hammer crashes down behind, missing by an inch. Something
you stepped on along the way clicked as well, and with a horrible screeching
noise, the machinery speeds up, crashing faster and faster until it's
twice as fast as before." CR CR>
,CLOSET)>>
<ROUTINE RECROSS-ENGINE-ROOM ()
<COND (<EQUAL? ,WINNER ,TURTLE>
<COND (<==? ,HASTED? ,TURTLE>
<COND (<IN? ,DISPEL-SCROLL ,CLOSET>
<SETG TURTLE-REPORT? T>)>
<TELL
"The turtle fairly zips across the engine room, dodging the giant
hammers and gears. Suddenly he sets off a trap, and sharp spears fly
at him from all directions! But they bounce harmlessly off his shell! He
avoids one last crash of a huge hammer, but even at his speed, it's a
near thing! With one more burst of speed, he reaches "
<COND (<IN? ,PLAYER ,ENGINE-ROOM> "you")
(T "the other side")> " safely!" CR>
,ENGINE-ROOM)
(ELSE
<DISABLE <INT I-TURTLE>>
<TELL
"The turtle starts across the room, as hammers and gears slowly turn and
crash. Partway across the room, he sets off a trap! Spears fly at him
from all directions! They just bounce off his shell, and he is unhurt.
Unfortunately, at about this time, a enormous hammer smashes down. This
does not bounce off his shell, and the poor creature expires." CR>
<COND (<==? ,DEATH-CHEATED ,TURTLE>
<TELL
"Astoundingly, the turtle renews himself! Unfortunately, he makes it
no further, for the hammer is still too much for even his armor." CR>)>
<JIGS-UP <> <>>
<RFALSE>)>)
(ELSE
<COND (<IN? ,DISPEL-SCROLL ,WINNER>
<REMOVE ,DISPEL-SPELL>
<REMOVE ,DISPEL-SCROLL>)>
<COND (<==? ,HASTED? ,WINNER>
<TELL
"You rush across the engine room, your speed enabling you to avoid the
gigantic hammers and gears; at this speed they appear to move with great
deliberation. Unfortunately, you set off a trap, and many sharp spears
fly at you from all directions! They seem to move pretty fast. Too fast,
in fact. You can't dodge them, and you are severely skewered.">)
(ELSE
<TELL
"You run across the room, trying to dodge the crashing machinery, and
you are succeeding for a while until you set off a trap. A volley of sharp
spears, powered by cunning machinery, comes at you from all directions.
You are skewered! The huge hammer crashes down for the coup de grace.">)>
<COND (<==? ,DEATH-CHEATED ,ME>
<TELL CR
"In an astounding feat of magic, you are reassembled and revived.
In an even more astounding feat of trap design, you are dispatched again
almost before you can take a breath." CR>)>
<JIGS-UP <> <>>
<RFALSE>)>>
<ROOM MEADOW
(IN ROOMS)
(DESC "Meadow")
(LDESC
"This is a meadow near the sea. There is a smell of salt in the air. Only
heather and thistles grow here. To the north is a gate leading into the
castle. A narrow path to the southeast leads to the shore of the Sea.")
(SE TO BEACH)
(NORTH TO SOUTH-GATE IF RUSTY-GATE IS OPEN)
(SOUTH "There's no path there.")
(EAST "There's no path there.")
(WEST "There's no path there.")
(NE "There's no path there.")
(NW "There's no path there.")
(SW "There's no path there.")
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL RUSTY-GATE MEADOW-OBJ BEACH-OBJ SEA)>
<OBJECT HEATHER
(IN MEADOW)
(DESC "local vegetation")
(SYNONYM HEATHER THISTLE)
(FLAGS NDESCBIT)
(ACTION SEA-STUFF-F)>
<ROOM BEACH
(IN ROOMS)
(DESC "Beach")
(LDESC
"This is a rocky beach along a grey and lifeless sea. There is
dead seaweed covering many rocks, and listless waves barely stir
the flotsam and jetsam here. There are many shells, but all are
broken. A narrow path to the northwest leads into a meadow.")
(NW TO MEADOW)
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL MEADOW-OBJ BEACH-OBJ SEA GLOBAL-WATER)
(PSEUDO "WAVES" WAVES-F "ROCKS" SEA-STUFF-F)>
<ROUTINE WAVES-F ()
<COND (<VERB? SWIM THROUGH>
<TELL "Don't press your luck. You'd probably drown." CR>)>>
<OBJECT SEA-STUFF
(IN BEACH)
(DESC "flotsam")
(SYNONYM SEAWEED FLOTSAM SHELLS JETSAM)
(ADJECTIVE DEAD BROKEN)
(FLAGS NDESCBIT)
(ACTION SEA-STUFF-F)>
<ROUTINE SEA-STUFF-F ()
<COND (<VERB? EXAMINE>
<TELL "There's nothing much interesting to see." CR>)
(<VERB? TAKE>
<TELL "Why bother?" CR>)>>
<OBJECT TURTLE
(IN BEACH)
(DESC "rainbow turtle")
(FDESC
"Crawling slowly along the beach is an enormous turtle, his enamelled shell
shining with all the colors of the rainbow.")
(LDESC
"An enormous turtle is here, its enamelled shell shining with all the colors of
the rainbow.")
(SYNONYM TURTLE SHELL)
(ADJECTIVE RAINBOW ENAMELLED)
(FLAGS VICBIT VILLAIN CONTBIT OPENBIT)
(CAPACITY 6)
(ACTION TURTLE-F)>
<OBJECT GLOBAL-TURTLE
(IN GLOBAL-OBJECTS)
(DESC "rainbow turtle")
(SYNONYM TURTLE)
(ADJECTIVE RAINBOW)
(FLAGS VICBIT VILLAIN TAKEBIT)
(ACTION TURTLE-F)>
<ROUTINE NO-RESPONSE ()
<TELL
"You hear no response." CR>>
<ROUTINE TURTLE-F ("AUX" NEAR?)
<SET NEAR? <IN? ,TURTLE <LOC ,PLAYER>>>
<COND (<EQUAL? ,WINNER ,TURTLE>
<COND (,TURTLE-TIRED?
<COND (.NEAR?
<TELL
"The turtle is asleep and appears oblivious to your words." CR>)
(ELSE
<NO-RESPONSE>)>
<RTRUE>)>
<ENABLE <QUEUE I-TURTLE -1>>
<FSET ,TURTLE ,TOUCHBIT>
<COND (<NOT <EQUAL? ,TALK-TO-ANIMAL? ,TURTLE>>
<TELL
"The turtle looks at you quizzically. It's clear he would like to
understand you, but he doesn't. He responds, but it's only snaps, hisses,
and clicks to you." CR>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<RTRUE>)
(<VERB? WALK>
<SETG TURTLE-FOLLOWS <>>
<SETG TF-COUNT <+ ,TF-COUNT 1>>
<COND (<AND <IN? ,TURTLE ,INSIDE-GATE>
<EQUAL? ,PRSO ,P?WEST>>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<TELL
"\"Uh, no thanks. I prefer to stay near my beach. I don't see much
yummy seaweed out that way.\"" CR>)
(<AND <IN? ,TURTLE ,DIM-DESCENT>
<EQUAL? ,PRSO ,P?DOWN ,P?SOUTH>>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<TELL
"\"Uh, no thanks. It looks dark and scary down there, and I get a kind
of bad feeling about it, like you get when you eat old seaweed.\"" CR>)
(<AND <EQUAL? ,PRSO ,P?UP>
<GLOBAL-IN? ,STAIRS <LOC ,TURTLE>>>
<COND (.NEAR?
<TELL
"The turtle huffs and puffs up the stairs. \"Pretty steep stairs
for a turtle, friend....\"" CR>)>
<RFALSE>)
(<AND <EQUAL? ,PRSO ,P?DOWN>
<GLOBAL-IN? ,STAIRS <LOC ,TURTLE>>>
<COND (.NEAR?
<TELL
"\"Those stairs are pretty steep. I'll follow you down, but I'm not
going alone!\"" CR>)>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<RTRUE>)
(<AND <G? ,TF-COUNT 4>
<0? <MOD ,TF-COUNT 6>>>
<TURTLE-TIRES>
<RFALSE>)>)
(<VERB? WHO>
<COND (.NEAR?
<TELL "\"Never heard of him.\"" CR>)
(ELSE <NO-RESPONSE>)>)
(<VERB? THANK>
<TURTLE-THANKS .NEAR?>)
(<AND <VERB? STAY>
<EQUAL? ,PRSO ,GLOBAL-ROOM <>>>
<SETG TURTLE-FOLLOWS <>>
<COND (.NEAR?
<TELL
"The turtle hisses, \"Okay, I'll stay here for a while.\"" CR>)
(ELSE
<NO-RESPONSE>)>)
(<VERB? FOLLOW>
<COND (<EQUAL? ,PRSO ,ME <>>
<SETG TURTLE-FOLLOWS T>
<SETG TF-COUNT 0>
<SETG TURTLE-TIRED-TELL <>>
<COND (.NEAR?
<TELL
"The turtle hisses, \"I will follow you.\"" CR>)
(ELSE <NO-RESPONSE>)>)
(.NEAR?
<TELL
"The turtle hisses, \"I'd follow you, but not that!\"" CR>)
(ELSE <NO-RESPONSE>)>)
(<AND <VERB? TAKE BRING>
<NOT <IN? ,TURTLE <LOC ,PLAYER>>>>
<COND (<VERB? BRING>
<SETG PRSO ,PRSI>
<SETG PRSI <>>)>
<ITAKE <>>
<COND (<VERB? BRING>
<DO-WALK <COND (<EQUAL? ,HERE ,CLOSET> ,P?NW)
(T ,P?SE)>>
<RTRUE>)>
<COND (<AND <EQUAL? ,HERE ,CLOSET>
<IN? ,PLAYER ,ENGINE-ROOM>>
<TELL
"The turtle sticks his head through the door across the mechanical
wasteland.">
<COND (<IN? ,DISPEL-SCROLL ,TURTLE>
<TELL
" In his mouth is a scroll of some sort.">)>
<CRLF>)>
<RTRUE>)
(<VERB? TAKE>
<COND (<NOT <FSET? ,PRSO ,SCROLLBIT>>
<COND (.NEAR?
<TELL
"\"I don't think I can carry that too easily.\"" CR>)
(ELSE <NO-RESPONSE>)>)
(T <RFALSE>)>)
(<AND <VERB? OPEN> <FSET? ,PRSO ,DOORBIT>>
<COND (.NEAR?
<TELL
"\"I can't reach the latch. I'm a turtle, not an ostrich.\"" CR>)
(ELSE <NO-RESPONSE>)>)
(<VERB? HELLO>
<COND (.NEAR?
<TELL "\"" <PICK-ONE ,TURTLE-REMARKS> "\"" CR>)
(ELSE <NO-RESPONSE>)>)
(<OR <IN? ,TURTLE <LOC ,PLAYER>>
<IN? ,TURTLE <LOC <LOC ,PLAYER>>>>
<TELL
"\"I'm only a turtle, you know, even if I can talk!\"" CR>)
(ELSE
<NO-RESPONSE>
<RTRUE>)>)
(<AND <VERB? TELL>
<EQUAL? ,PRSO ,GLOBAL-TURTLE>>
<COND (,TURTLE-TIRED?
<TELL "The turtle remains asleep." CR>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<RFATAL>)
(<OPPOSITE-SIDES?>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<TELL
"The turtle seems to bend its head as if to listen, but with all this
noise it's not very likely that he hears you." CR>)
(T
<SETG P-MERGED T>
<GLOBAL-NOT-HERE-PRINT ,GLOBAL-TURTLE>
<RTRUE>)>)
(<AND <EQUAL? ,PRSO ,GLOBAL-TURTLE>
<VERB? WAVE-AT YELL>
<OPPOSITE-SIDES?>>
<TELL "The turtle takes notice, ">
<COND (<EQUAL? ,HERE ,CLOSET>
<TELL
"then glances at the rapidly pounding hammer. With a motion which
might correspond to a shrug of the shoulder, he turns away, embarrassed." CR>
<RTRUE>)
(T
<TELL
"nods his head, and starts in your direction." CR>)>
<SETG WINNER ,TURTLE>
<SETG HERE <LOC ,TURTLE>>
<DO-WALK <COND (<EQUAL? ,HERE ,CLOSET> ,P?NW)
(T ,P?SE)>>
<RTRUE>)
(<AND <EQUAL? ,PRSO ,GLOBAL-TURTLE>
<VERB? EXAMINE>
<OPPOSITE-SIDES?>>
<TELL "He is standing on the other side of the machinery." CR>)
(<EQUAL? ,PRSO ,GLOBAL-TURTLE>
<GLOBAL-NOT-HERE-PRINT ,GLOBAL-TURTLE>
<RTRUE>)
(<VERB? CLIMB-UP CLIMB-FOO THROUGH>
<TELL
"The turtle doesn't allow you to get on his back." CR>)
(<VERB? RUB>
<TELL
"The turtle seems to appreciate the attention." CR>)
(<VERB? CLEESH>
<TELL
"As he is already a reptile, the spell has little effect." CR>)
(<VERB? OPEN CLOSE>
<TELL "Come now, you can't do that!" CR>)
(<VERB? REZROV>
<TELL
"The turtle's shell pops off his back. Mortified, he retrieves it." CR>)
(<VERB? GUNCHO>
<COND (,TURTLE-TIRED?
<TELL
"The sleeping turtle seems to shrink to nothing, and vanishes!" CR>)
(T
<TELL
"The turtle barely has time to retract his head before he is consumed in
flame!" CR>)>
<REMOVE ,TURTLE>)
(<VERB? VAXUM>
<COND (,TURTLE-TIRED?
<TELL "The snoring sounds more friendly." CR>)
(T
<TELL
"The turtle seems to make a friendly gesture, but then again turtles are
pretty friendly anyway." CR>)>)
(<VERB? MUNG>
<TELL
"The turtle's shell is so thick and hard that your blow has no effect.
The lovely colors on his back are not even marred.">
<COND (,TURTLE-TIRED?
<TELL " He doesn't even wake up." CR>)
(T
<TELL " He does withdraw into his
shell briefly, but then emerges again." CR>)>)
(,TURTLE-TIRED?
<TELL "The turtle remains asleep." CR>
<SETG P-CONT <>>
<RFATAL>)
(<AND <VERB? THANK> <EQUAL? ,TALK-TO-ANIMAL? ,TURTLE>>
<TURTLE-THANKS T>)
(<AND <VERB? TAKE> <EQUAL? ,TURTLE ,PRSO>>
<TELL
"The turtle is much too large to take." CR>)
(<VERB? GIVE>
<TELL
"The turtle extends his head towards the " D ,PRSO ", but decides it's
not very interesting, and withdraws." CR>)
(<VERB? HELLO>
<TELL "\"" <PICK-ONE ,TURTLE-REMARKS> "\"" CR>)>>
<ROUTINE TURTLE-THANKS (NEAR?)
<COND (<==? ,TURTLE-POINT 0>
<MOVE ,TURTLE ,BEACH>
<COND (.NEAR?
<TELL
"\"Glad to be of help. I think I'll get back to the beach, now.\"
The turtle departs." CR>)
(ELSE
<TELL
"There is no response." CR>)>)
(.NEAR?
<TELL
"\"You're very welcome! It's nice to have someone to talk to for
a change.\"" CR>)
(ELSE <NO-RESPONSE>)>
<RTRUE>>
<ROUTINE OPPOSITE-SIDES? ()
<COND (<AND <EQUAL? ,HERE ,ENGINE-ROOM ,CLOSET>
<EQUAL? <LOC ,TURTLE> ,ENGINE-ROOM ,CLOSET>
<NOT <EQUAL? ,HERE <LOC ,TURTLE>>>>
<RTRUE>)>>
<GLOBAL TURTLE-FOLLOWS <>>
<GLOBAL TF-COUNT 0>
<GLOBAL TURTLE-REMARKS
<LTABLE 0
"Are you a magician? Are you going to do something about that annoying
Warlock, then?"
"How do you like my shell? A wizard did that to me about 75 years ago."
"It's nice to find a human who talks turtle. Not many do, you know. Most
people think turtles are boring, just because we talk slowly.">>
<GLOBAL TURTLE-REPORT? <>>
<ROUTINE I-TURTLE ("AUX" (LP <LOC ,PLAYER>))
<FSET ,TURTLE ,TOUCHBIT>
<COND (<AND ,TURTLE-FOLLOWS <NOT <IN? ,TURTLE .LP>>>
<SETG TF-COUNT <+ ,TF-COUNT 1>>
<COND (<EQUAL? .LP ,WEST-CASTLE ,DUNGEON ,BED>
<SETG TURTLE-FOLLOWS <>>
<TELL
"The turtle won't follow any further." CR>)
(<OR <AND <EQUAL? .LP ,CLOSET>
<IN? ,TURTLE ,ENGINE-ROOM>>
<AND <EQUAL? .LP ,ENGINE-ROOM>
<IN? ,TURTLE ,CLOSET>>>
<SETG TURTLE-FOLLOWS <>>
<TELL
"The turtle seems hesitant to follow you across the room. He looks at
you as if he wants an explicit order." CR>)
(ELSE
<MOVE ,TURTLE .LP>
<COND (<EQUAL? .LP ,ENDLESS-STAIR>
<TELL
"You notice that the turtle is no longer following you. In fact, he seems
to have vanished entirely." CR>
<REMOVE ,TURTLE>
<QUEUE I-TURTLE 0>
<SETG TURTLE-FOLLOWS <>>
<RTRUE>)
(<EQUAL? .LP ,ENGINE-ROOM>
<TELL
"\"Pretty steep stairs for a turtle, friend. But if you say so...\"" CR>)
(<EQUAL? ,HASTED? ,TURTLE>
<TELL
"The turtle, moving with terrific speed, follows you." CR>)
(<G? ,TF-COUNT 4>
<TURTLE-TIRES>)
(T
<TELL
"The turtle, at his own leisurely pace, follows you." CR>)>)>)
(<AND ,TURTLE-REPORT?
<IN? ,PLAYER <LOC ,TURTLE>>>
<SETG TURTLE-REPORT? <>>
<TELL
"The returned turtle reports that the door across the way opens into a room
with much magic in it: bright lights and other things he doesn't understand
too well. He says there is an object of rolled paper lying on the floor as
well." CR>)
(<AND <IN? ,DISPEL-SCROLL ,TURTLE>
<IN? ,TURTLE .LP>
<NOT <EQUAL? ,HERE ,CLOSET>>>
<MOVE ,DISPEL-SCROLL .LP>
<THIS-IS-IT ,DISPEL-SCROLL>
<SETG SCORE <+ ,SCORE ,TURTLE-POINT>>
<SETG TURTLE-POINT 0>
<TELL
"The turtle drops a brittle scroll at your feet. \"Not bad, huh?\"" CR>)>>
<GLOBAL TURTLE-TIRED? <>>
<ROUTINE TURTLE-TIRES ()
<COND (<NOT ,TURTLE-FOLLOWS> <RFALSE>)>
<COND (<G? ,TF-COUNT 20>
<SETG TURTLE-TIRED? T>
<SETG TURTLE-FOLLOWS <>>
<DISABLE <INT I-TURTLE>>
<TELL
"The turtle has closed his shell, and fallen asleep. A quiet snoring
sound issues from somewhere within." CR>)
(<NOT ,TURTLE-TIRED-TELL>
<SETG TURTLE-TIRED-TELL T>
<TELL
"\"How long do you expect me to follow you around, anyway? I'm getting
kind of tired, too. You would if you had a shell as heavy as mine. It's
all right for now, though.\"" CR>)
(T
<TELL
"The turtle, at his own leisurely pace, follows you." CR>)>>
<GLOBAL TURTLE-TIRED-TELL <>>

622
globals.zil Normal file
View File

@ -0,0 +1,622 @@
"GLOBALS for
ENCHANTER
(c) Copyright 1983 Infocom, Inc. All Rights Reserved.
"
<DIRECTIONS ;"Do not change the order of the first eight
without consulting MARC!"
NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
"SUBTITLE GLOBAL OBJECTS"
<OBJECT GLOBAL-OBJECTS
(FLAGS RMUNGBIT INVISIBLE TOUCHBIT SURFACEBIT TRYTAKEBIT
OPENBIT SEARCHBIT TRANSBIT ;WEARBIT VOWELBIT
ONBIT RLANDBIT)>
<OBJECT LOCAL-GLOBALS
(IN GLOBAL-OBJECTS)
(SYNONYM ZZMGCK)
(DESCFCN 0)
(GLOBAL GLOBAL-OBJECTS)
(ADVFCN 0)
(FDESC "F")
(LDESC "F")
(PSEUDO "FOOBAR" V-WALK)
(CONTFCN 0)
(SIZE 0)
(CAPACITY 0)>
;"Yes, this synonym for LOCAL-GLOBALS needs to exist... sigh"
<OBJECT ROOMS
(IN TO ROOMS)>
<OBJECT INTNUM
(IN GLOBAL-OBJECTS)
(SYNONYM INTNUM)
(DESC "number")>
<OBJECT PSEUDO-OBJECT
(DESC "pseudo")
(ACTION CRETIN)>
<OBJECT IT ;"was IT"
(IN GLOBAL-OBJECTS)
(SYNONYM IT THAT HER HIM)
(DESC "random object")
(FLAGS NDESCBIT TOUCHBIT)>
<OBJECT GROUND ;"was GROUND"
(IN GLOBAL-OBJECTS)
(SYNONYM FLOOR GROUND)
(ADJECTIVE STONE)
(DESC "floor")
(ACTION GROUND-F)>
<ROUTINE GROUND-F ()
<COND (<VERB? CLIMB-UP CLIMB-ON CLIMB-FOO BOARD>
<TELL "You've got better things to do." CR>)>>
<OBJECT CORRIDOR
(IN GLOBAL-OBJECTS)
(DESC "passage")
(SYNONYM PASSAGE CORRIDOR ENTRANCE)
(ACTION CORRIDOR-F)>
<ROUTINE CORRIDOR-F ()
<COND (<VERB? THROUGH WALK-TO>
<USE-DIRECTIONS>)>>
<OBJECT WALLS
(IN GLOBAL-OBJECTS)
(FLAGS NDESCBIT TOUCHBIT)
(DESC "castle wall")
(SYNONYM WALL WALLS CASTLE)
(ADJECTIVE TRANSLUCENT)
(ACTION WALLS-F)>
<ROUTINE WALLS-F ()
<COND (<AND <EQUAL? ,WALLS ,PRSO>
<EQUAL? ,HERE ,NORTH-CELL>>
<PERFORM ,PRSA ,STONE-WALL>)
(<FSET? ,HERE ,RMUNGBIT>
<COND (<VERB? EXAMINE>
<TELL
"The wall is stained and noisome." CR>)
(<VERB? LISTEN>
<TELL
"That's noisome, not noisy!" CR>)>)
(<VERB? LOOK-INSIDE>
<TELL
"They're translucent, not transparent!" CR>)>>
<OBJECT CEILING
(IN GLOBAL-OBJECTS)
(FLAGS NDESCBIT TOUCHBIT)
(DESC "ceiling")
(SYNONYM CEILIN)>
<OBJECT HANDS ;"was HANDS"
(IN GLOBAL-OBJECTS)
(SYNONYM HAND HANDS)
(ADJECTIVE BARE)
(DESC "bare hands of a novice enchanter")
(FLAGS NDESCBIT TOOLBIT TOUCHBIT)>
<OBJECT PLAYER ;"was ADVENTURER"
(SYNONYM ENCHANTER)
(DESC "cretin")
(FLAGS VILLAIN NDESCBIT INVISIBLE)
(ACTION 0)>
<OBJECT ME
(IN GLOBAL-OBJECTS)
(SYNONYM ME MYSELF SELF FACE)
(DESC "you")
(FLAGS VILLAIN TOUCHBIT)
(ACTION CRETIN)>
<ROUTINE CRETIN ()
<COND (<VERB? ESCAPE>
<TELL "There's no escaping yourself." CR>)
(<AND <VERB? PUT> <EQUAL? ,PRSO ,EGG>>
<TELL
"If you don't succeed, there will be plenty of egg on your face." CR>)
(<VERB? BURN>
<TELL "Ouch!" CR>)
(<VERB? LISTEN>
<TELL "Yes?" CR>)
(<VERB? ALARM>
<TELL "You are obviously awake already." CR>)
(<VERB? GUNCHO>
<TELL
"You vanish into oblivion where, to the relief of much of the Circle, you
will be unable to do much harm." CR>
<FINISH>)
(<VERB? FROTZ>
<FSET ,PLAYER ,ONBIT>
<SETG ALWAYS-LIT T>
<TELL
"You are bathed in a sickly yellow light, bright enough to read by." CR>)
(<VERB? BLORB>
<JIGS-UP
"You experience the most peculiar sensation of being simultaneously shrunken
and sucked into what might best be likened to a black hole. The effect is not
without its exhilarating aspect; as a way of life, however, it leaves much to
be desired." <>>
<RTRUE>)
(<VERB? KULCAD>
<TELL
"You seem real enough already." CR>)
(<VERB? EXAMINE>
<TELL "You are not a pretty sight." CR>)
(<VERB? GIVE>
<TELL "I think you're a little confused." CR>)
(<VERB? KILL MUNG ATTACK>
<TELL "You don't need my help to do that!" CR>)
(<VERB? FIND>
<TELL "You're right here!" CR>)
(<AND <VERB? CUT> <==? ,PRSI ,MAGIC-KNIFE>>
<TELL
"I should think one experience with that knife would be enough. I wouldn't
press my luck." CR>)>>
;"GLOBAL VARIABLES"
<GLOBAL HERE <>>
<GLOBAL LOAD-ALLOWED 100>
<GLOBAL LOAD-MAX 100>
<GLOBAL MOVES 0>
<GLOBAL SCORE 0>
<OBJECT WINDOW
(IN LOCAL-GLOBALS)
(DESC "window")
(SYNONYM WINDOW)
(ADJECTIVE BROKEN)
(ACTION WINDOW-F)>
<ROUTINE WINDOW-F ()
<COND (<VERB? LOOK-INSIDE>
<COND (<G? ,TOD ,NIGHTFALL>
<TELL "It's too dark to make out much of anything." CR>)
(T <TELL <GETP ,HERE ,P?TEXT> CR>)>)
(<VERB? OPEN>
<TELL "You can't open it." CR>)
(<VERB? CLOSE>
<TELL "It already is." CR>)>>
<OBJECT SEA
(IN LOCAL-GLOBALS)
(DESC "sea")
(SYNONYM OCEAN SEA)
(ADJECTIVE MISTY)
(ACTION SEA-F)>
<ROUTINE SEA-F ()
<COND (<NOT <EQUAL? ,HERE ,BEACH>>
<TELL
"The sea is off beyond the beach." CR>)
(<VERB? THROUGH>
<TELL "You would drown." CR>)
(<VERB? EXAMINE>
<TELL "The sea is very rough. I wouldn't go in." CR>)>>
<OBJECT FOREST
(IN LOCAL-GLOBALS)
(DESC "forest")
(SYNONYM FOREST)
(ACTION FOREST-F)>
<ROUTINE FOREST-F ()
<COND (<VERB? THROUGH>
<USE-DIRECTIONS>)>>
<OBJECT TEMPLE-OBJ
(IN LOCAL-GLOBALS)
(DESC "temple")
(SYNONYM TEMPLE)
(ACTION TEMPLE-OBJ-F)>
<ROUTINE TEMPLE-OBJ-F ()
<COND (<OR <EQUAL? ,HERE ,COURTYARD-2 ,COURTYARD-3>
<EQUAL? ,HERE ,COURTYARD-4 ,COURTYARD-7>>
<COND (<VERB? THROUGH>
<GOTO ,TEMPLE>
<RTRUE>)
(<VERB? LISTEN>
<TELL
"You can hear a howling chant coming from inside the temple." CR>)>)>>
<OBJECT COURTYARD
(IN LOCAL-GLOBALS)
(DESC "courtyard")
(SYNONYM COURTYARD LAWN LAWNS GRASS)
(ACTION COURTYARD-F)>
<ROUTINE COURTYARD-F ()
<COND (<AND <VERB? WALK-AROUND> <NOT <EQUAL? ,HERE ,INSIDE-GATE>>>
<COND (<EQUAL? ,HERE ,COURTYARD-7 ,COURTYARD-6 ,COURTYARD-4>
<DO-WALK ,P?WEST>)
(T <DO-WALK ,P?EAST>)>)
(<AND <VERB? THROUGH>
<EQUAL? ,HERE ,INSIDE-GATE>>
<DO-WALK ,P?EAST>)>>
<OBJECT TOWER
(IN LOCAL-GLOBALS)
(DESC "tower")
(SYNONYM TOWER)
(FLAGS CLIMBBIT)
(ACTION TOWER-F)>
<ROUTINE TOWER-F ()
<COND (<AND <VERB? CLIMB-UP CLIMB-FOO BOARD>
<OR <EQUAL? ,HERE ,PURLOINED-ROOM ,SE-TOWER>
<EQUAL? ,HERE ,NW-TOWER ,SW-TOWER>>>
<DO-WALK ,P?UP>)
(<AND <VERB? CLIMB-DOWN CLIMB-FOO>
<OR <EQUAL? ,HERE ,JEWEL-ROOM ,MAP-ROOM>
<EQUAL? ,HERE ,ENGINE-ROOM ,BEDROOM>>>
<DO-WALK ,P?DOWN>)
(<VERB? CLIMB-UP CLIMB-FOO>
<TELL
"They are a bit far away to climb from here, and anyway the walls would
be impossible to scale." CR>)>>
<OBJECT TURRET
(IN LOCAL-GLOBALS)
(DESC "turret")
(SYNONYM TURRET)>
<OBJECT LAWN
(IN LOCAL-GLOBALS)
(DESC "lawn")
(SYNONYM LAWN)>
<OBJECT MEADOW-OBJ
(IN LOCAL-GLOBALS)
(DESC "meadow")
(SYNONYM MEADOW)>
<OBJECT BEACH-OBJ
(IN LOCAL-GLOBALS)
(DESC "beach")
(SYNONYM BEACH)
(ADJECTIVE WHITE ROCKY)>
<OBJECT GLOBAL-WATER
(IN LOCAL-GLOBALS)
(SYNONYM WATER BROOK ;OCEAN POND)
(ADJECTIVE DELICIOUS SPRING)
(DESC "water")
(ACTION WATER-FUNCTION)>
<OBJECT WATER
(SYNONYM WATER QUANTITY)
(ADJECTIVE DELICIOUS SPRING)
(DESC "quantity of water")
(FLAGS TAKEBIT)
(ACTION WATER-FUNCTION)
(SIZE 4)>
<OBJECT JUG
(IN SHACK)
(SYNONYM JUG)
(ADJECTIVE POTTERY)
(DESC "jug")
(FLAGS TAKEBIT TRANSBIT CONTBIT OPENBIT)
(ACTION JUG-F)
(FDESC
"An empty jug lies in a corner of the room, against the overturned table.")
(CAPACITY 4)>
<ROUTINE JUG-F ("AUX" (E? <>))
<COND (<VERB? OPEN CLOSE>
<TELL
"The jug has no cover. It can't be opened or closed." CR>
<RTRUE>)
(<VERB? THROW MUNG>
<REMOVE ,PRSO>
<SET E? T>
<TELL "The jug shatters into innumerable pieces." CR>)
(<VERB? SHAKE>
<COND (<FSET? ,PRSO ,OPENBIT> <SET E? T>)>)>
<COND (<VERB? EXAMINE LOOK-INSIDE>
<TELL "The jug is ">
<COND (<NOT <IN? ,WATER ,PRSO>>
<TELL "empty." CR>)
(T
<TELL <GET ,JUG-AMTS <GETP ,WATER ,P?SIZE>> CR>)>)
(.E?
<COND (<IN? ,WATER ,PRSO>
<TELL
"The water spills to the ground and evaporates." CR>
<REMOVE ,WATER>)>
<RTRUE>)>>
<GLOBAL JUG-AMTS <TABLE
"foo"
"mostly empty."
"half full."
"nearly full."
"full.">>
<ROUTINE WATER-FUNCTION ("AUX" AV W PI?)
#DECL ((AV) <OR OBJECT FALSE> (W) OBJECT (PI?) <OR ATOM FALSE>)
<COND (<AND <VERB? EXAMINE> <EQUAL? ,PRSO ,GLOBAL-WATER>>
<COND (<EQUAL? ,HERE ,BEACH>
<TELL
"The ocean streches out as far as the eye can see to the south and
east." CR>)
(<EQUAL? ,HERE ,FOREST-2>
<TELL
"The water is dark and murky, and lily pads cover most of the surface.
I wouldn't drink the stuff." CR>)
(T
<TELL
"The brook runs slowly through thick vegetation." CR>)>
<RTRUE>)
(<AND <VERB? THROUGH> <EQUAL? ,PRSO ,GLOBAL-WATER>>
<TELL
"You have better things to do with your time than go swimming." CR>
<RTRUE>)
(<AND <VERB? DRINK-FROM> <EQUAL? ,PRSO ,GLOBAL-WATER>>
<V-DRINK-FROM>
<RTRUE>)
(<VERB? SGIVE> <RFALSE>)
(<VERB? THROUGH>
<TELL "Swimming here is fraught with peril." CR>
<RTRUE>)
(<VERB? FILL> ;"fill bottle with water =>"
<SET W ,PRSI> ;"put water in bottle"
<SETG PRSA ,V?PUT>
<SETG PRSI ,PRSO>
<SETG PRSO .W>
<SET PI? <>>)
(<EQUAL? ,PRSO ,GLOBAL-WATER ,WATER>
<SET W ,PRSO>
<SET PI? <>>)
(ELSE
<SET W ,PRSI>
<SET PI? T>)>
<COND (<==? .W ,GLOBAL-WATER>
<COND (<VERB? DRINK> <RFALSE>)>
<SET W ,WATER>
<COND (<VERB? TAKE PUT> <REMOVE .W>)>)>
<COND (.PI? <SETG PRSI .W>)
(T <SETG PRSO .W>)>
<SET AV <LOC ,WINNER>>
<COND (<AND <VERB? TAKE PUT> <NOT .PI?>>
<COND (<AND ,PRSI <NOT <==? ,PRSI ,JUG>>>
<COND (<EQUAL? ,PRSI ,SEA ,GLOBAL-WATER>
<TELL
"Ok, but there was plenty enough there already." CR>
<REMOVE .W>)
(<GETP ,PRSI ,P?CAPACITY>
<TELL
"The water leaks out of the " D ,PRSI " and evaporates immediately." CR>
<REMOVE .W>)
(T
<TELL
"The " D ,PRSI " isn't a very good container." CR>)>)
(<IN? ,JUG ,WINNER>
<COND (<NOT <FSET? ,JUG ,OPENBIT>>
<TELL "The jug is closed." CR>)
(<GLOBAL-IN? ,GLOBAL-WATER ,HERE>
<COND (<OR <NOT <IN? ,WATER ,JUG>>
<L? <GETP ,WATER ,P?SIZE> 4>>
<MOVE ,WATER ,JUG>
<PUTP ,WATER ,P?SIZE 4>
<TELL "The jug is now full of ">
<COND (<EQUAL? ,HERE ,BEACH>
<FSET ,WATER ,RMUNGBIT>
<TELL "sea">)
(<EQUAL? ,HERE ,FOREST-2>
<FSET ,WATER ,RMUNGBIT>
<TELL "foul algae-infested ">)
(T
<FCLEAR ,WATER ,RMUNGBIT>)>
<TELL "water." CR>)
(ELSE
<TELL "The jug is already full." CR>
<RTRUE>)>)
(T
<TELL "The only water here is in the jug." CR>)>)
(<AND <IN? ,PRSO ,JUG>
<VERB? TAKE>
<NOT ,PRSI>>
<SETG PRSO ,JUG>
<ITAKE>
<SETG PRSO .W>)
(T
<TELL "The water slips through your fingers." CR>)>)
(.PI? <TELL "Nice try." CR>)
(<VERB? DROP GIVE>
<REMOVE ,WATER>
<COND (<EQUAL? ,PRSI ,SEA ,GLOBAL-WATER>
<TELL
"Ok, but there was plenty enough there already." CR>)
(T
<TELL
"The water spills to the ground and evaporates." CR>)>)
(<VERB? POUR-ON>
<REMOVE ,WATER>
<TELL
"The water cascades off the " D ,PRSI " and onto the ground." CR>)
(<VERB? THROW>
<TELL
"The water splashes over everything and evaporates." CR>
<REMOVE ,WATER>)>>
<OBJECT SKY
(IN GLOBAL-OBJECTS)
(DESC "sky")
(SYNONYM SKY STARS)
(ACTION SKY-F)>
<ROUTINE SKY-F ("AUX" EL)
<COND (<AND <FSET? ,HERE ,ONBIT> <VERB? EXAMINE>>
<SET EL </ ,TOD 10>>
<TELL "It would be " <GET ,TIME-TABLE .EL> " now.">
<COND (<G? ,TOD ,NIGHTFALL>
<TELL " Bright stars shine down on the earth.">)>
<CRLF>)
(T <TELL "That would be difficult from here." CR>)>>
<OBJECT NOT-HERE-OBJECT
(DESC "such thing" ;"[not here]")
(ACTION NOT-HERE-OBJECT-F)>
<ROUTINE NOT-HERE-OBJECT-F ("AUX" TBL (PRSO? T) OBJ)
;"This COND is game independent (except the TELL)"
<COND (<AND <EQUAL? ,PRSO ,NOT-HERE-OBJECT>
<EQUAL? ,PRSI ,NOT-HERE-OBJECT>>
<TELL "Those things aren't here!" CR>
<RTRUE>)
(<EQUAL? ,PRSO ,NOT-HERE-OBJECT>
<SET TBL ,P-PRSO>)
(T
<SET TBL ,P-PRSI>
<SET PRSO? <>>)>
<COND (.PRSO?
<COND (<OR <VERB? ZIFMIA>
<AND <VERB? CAST>
<EQUAL? ,PRSO ,SUMMON-SPELL>>>
<COND (<SET OBJ <FIND-NOT-HERE .TBL .PRSO?>>
<COND (<NOT <==? .OBJ ,NOT-HERE-OBJECT>>
<RTRUE>)>)
(T
<RFALSE>)>)>)
;(T
<COND (<VERB? PUT-VERBS-HERE>
<COND (<SET OBJ <FIND-NOT-HERE .TBL .PRSO?>>
<COND (<NOT <==? .OBJ ,NOT-HERE-OBJECT>>
<RTRUE>)>)
(T
<RFALSE>)>)>)>
;"Here is the default 'cant see any' printer"
<COND (<EQUAL? ,WINNER ,PLAYER>
<TELL "You can't see any">
<NOT-HERE-PRINT .PRSO?>
<TELL " here!" CR>)
(T
<TELL "The " D ,WINNER " seems confused. \"I don't see any">
<NOT-HERE-PRINT .PRSO?>
<TELL " here!\"" CR>)>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<RTRUE>>
<ROUTINE FIND-NOT-HERE (TBL PRSO? "AUX" M-F OBJ)
;"Here is where special-case code goes. <MOBY-FIND .TBL> returns
number of matches. If 1, then P-MOBY-FOUND is it. One may treat
the 0 and >1 cases alike or different. It doesn't matter. Always
return RFALSE (not handled) if you have resolved the problem."
<SET M-F <MOBY-FIND .TBL>>
<COND (,DEBUG
<TELL "[Moby-found " N .M-F " objects" "]" CR>)>
<COND (<AND <G? .M-F 1>
<SET OBJ <GETP <GET .TBL 1> ,P?GLOBAL>>>
<SET M-F 1>
<SETG P-MOBY-FOUND .OBJ>)>
<COND (<==? 1 .M-F>
<COND (,DEBUG <TELL "[Namely: " D ,P-MOBY-FOUND "]" CR>)>
<COND (.PRSO? <SETG PRSO ,P-MOBY-FOUND>)
(T <SETG PRSI ,P-MOBY-FOUND>)>
<RFALSE>)
(<NOT .PRSO?>
<TELL "You wouldn't find any">
<NOT-HERE-PRINT .PRSO?>
<TELL " there." CR>
<RTRUE>)
(T ,NOT-HERE-OBJECT)>>
<ROUTINE GLOBAL-NOT-HERE-PRINT (OBJ)
;<COND (,P-MULT <SETG P-NOT-HERE <+ ,P-NOT-HERE 1>>)>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<TELL "You can't see">
<COND (<NOT <EQUAL? .OBJ ,GLOBAL-KRILL>>
<TELL " any">)>
<COND (<EQUAL? .OBJ ,PRSO> <PRSO-PRINT>)
(T <PRSI-PRINT>)>
<TELL " here." CR>>
<ROUTINE NOT-HERE-PRINT (PRSO?)
<COND (,P-OFLAG
<COND (,P-XADJ <TELL " "> <PRINTB ,P-XADJN>)>
<COND (,P-XNAM <TELL " "> <PRINTB ,P-XNAM>)>)
(.PRSO?
<BUFFER-PRINT <GET ,P-ITBL ,P-NC1> <GET ,P-ITBL ,P-NC1L> <>>)
(T
<BUFFER-PRINT <GET ,P-ITBL ,P-NC2> <GET ,P-ITBL ,P-NC2L> <>>)>>
<OBJECT BELBOZ
(IN GLOBAL-OBJECTS)
(DESC "Necromancer Belboz")
(SYNONYM BELBOZ NECROMANCER)
(ACTION BELBOZ-F)
(FLAGS VILLAIN)>
<ROUTINE BELBOZ-F ()
<COND (<VERB? ZIFMIA>
<TELL
"A vision of the great Belboz begins to take shape before you, but ">
<COND (<GETP ,HERE ,P?TMAZE>
<TELL
"as
soon as he realizes where you are, he disappears, a look of fear upon
his face." CR>)
(T
<TELL
"with
a curt word and a waggle of his finger, he disappears again, shaking his
head in disappointment." CR>)>)
(<VERB? EXAMINE WHO>
<TELL
"Belboz is, in effect, your boss, professor, patron, and ultimate superior.
He is the head of the Circle of Enchanters." CR>)>>
<OBJECT GLOBAL-ROOM
(IN GLOBAL-OBJECTS)
(DESC "room")
(SYNONYM ROOM PLACE AREA HERE)
(ACTION GLOBAL-ROOM-F)>
<ROUTINE GLOBAL-ROOM-F ()
<COND (<VERB? LOOK EXAMINE>
<PERFORM ,V?LOOK>
<RTRUE>)
(<VERB? WALK-AROUND>
<TELL
"Walking around the room reveals nothing else of interest. If you want to
move elsewhere, simply indicate the direction you wish to move in." CR>)>>
<OBJECT BRAMBLES
(IN GLOBAL-OBJECTS)
(SYNONYM BRAMBLE)
(DESC "bramble")
(ACTION BRAMBLES-F)>
<ROUTINE BRAMBLES-F ()
<COND (<NOT <OUTSIDE? ,HERE>>
<TELL "The only brambles here are in your head." CR>)
(<VERB? SEARCH LOOK-INSIDE>
<TELL
"There's nothing in the brambles now. Count your blessings." CR>)>>
<OBJECT GLOBAL-HOLE
(IN GLOBAL-OBJECTS)
(DESC "hole")
(SYNONYM HOLE)
(ACTION GLOBAL-HOLE-F)>
<ROUTINE GLOBAL-HOLE-F ()
<COND (<VERB? DIG>
<TELL "It's not worth the bother." CR>)
(T <GLOBAL-NOT-HERE-PRINT ,GLOBAL-HOLE>)>>

186
knot.zil Normal file
View File

@ -0,0 +1,186 @@
"KNOT for
ENCHANTER
(c) Copyright 1983 Infocom, Inc. All Rights Reserved.
"
;"Another knotty problem for our brave would-be magic user...."
<ROOM KNOT-ROOM
(IN ROOMS)
(DESC "Closet")
(LDESC
"This small room must have been a closet of some sort. To the north
is a passage leading out into a courtyard. Another exit is
to the south.")
(SOUTH TO DIM-DESCENT)
(NORTH TO COURTYARD-1)
(FLAGS RLANDBIT)>
<ROUTINE JEWELLED-BOX-A ()
<COND (<AND <IN? ,HERE ,JEWELLED-BOX>
<G? ,BOX-POINT 0>>
<COND (,ROPE-MAGIC?
<TELL
"The adventurer notes the box and tries to untie the rope from around it.
His frustration is evident by the words he uses to describe the rope." CR>)
(T
<PUTP ,JEWELLED-BOX ,P?LDESC
"A jewelled box, wrapped in a partly untied tangle of rope, is
on the ground.">
<TELL
"The adventurer walks up to the box and becomes quickly entangled in the
partly untied rope that is knotted around it. He looks like a cat who has
been playing with a ball of yarn." CR>)>)>
<RTRUE>>
<OBJECT JEWELLED-BOX
(IN KNOT-ROOM)
(SYNONYM BOX)
(ADJECTIVE JEWELLED)
(DESC "jewelled box")
(FDESC
"In the exact center of the room is a large, jewelled box. It is wrapped
in tight coils of thin rope. You try to follow the strands with your
eye, but become hopelessly lost in the jumble of thousands of loops and
knots.")
(LDESC
"A jewelled box, wrapped tightly in rope, is on the ground.")
(FLAGS TAKEBIT CONTBIT OPENBIT TREASURE)
(CAPACITY 40)
(SIZE 40)
(ADVFCN JEWELLED-BOX-A)
(ACTION JEWELLED-BOX-F)>
<ROUTINE JEWELLED-BOX-F ()
<COND (<IN? ,MAGIC-ROPE ,JEWELLED-BOX>
<COND (<VERB? SHAKE>
<TELL
"It seems that there's something inside, but it's not clear what." CR>)
(<VERB? UNLOCK>
<TELL
"Who said anything about its being locked?" CR>)
(<VERB? REZROV>
<COND (,ROPE-MAGIC?
<TELL
"The magic in the rope is strong enough to prevent the rezrov spell from
working." CR>)
(T
<TELL
"The rope dissolves and the jewelled box flies open!" CR>
<ROPE-DISSOLVES>
<FSET ,JEWELLED-BOX ,OPENBIT>)>)
(<VERB? OPEN LOOK-INSIDE>
<TELL
"With all that rope around it, you haven't a prayer." CR>)
(<VERB? EXAMINE>
<TELL
"It is closed and wrapped in tight coils of thin rope." CR>)
(<VERB? CLOSE>
<TELL
"It isn't open, which seems to be the problem at hand." CR>)
(<AND <VERB? PUT> <EQUAL? ,PRSI ,JEWELLED-BOX>>
<TELL
"That won't work until the box is open." CR>)>)
(<AND <VERB? OPEN>
<IN? ,PROTECTION-SCROLL ,JEWELLED-BOX>>
<THIS-IS-IT ,PROTECTION-SCROLL>
<RFALSE>)>>
<OBJECT MAGIC-ROPE
(IN JEWELLED-BOX)
(SYNONYM ROPE KNOT COIL COILS)
(ADJECTIVE TIGHT THIN STRAND)
(DESC "tangle of rope")
(FLAGS NDESCBIT VICBIT)
(ACTION MAGIC-ROPE-F)>
<GLOBAL ROPE-MAGIC? T>
<ROUTINE MAGIC-ROPE-F ()
<COND (<VERB? UNTIE>
<TELL
"After a few moments of reflection, you tackle the knots, one at a time.
Although you succeed with some regularity at untangling small areas of the
rope, you ">
<COND (,ROPE-MAGIC?
<TELL
"find that new knots seem to be forming as you watch, taunting you
into deep despair.">)
(ELSE
<PUTP ,JEWELLED-BOX ,P?LDESC
"A jewelled box, wrapped in a partly untied tangle of rope, is
on the ground.">
<TELL
"can't make any headway against the enormous tangle. It would take
forever to finish.">)>
<CRLF>)
(<VERB? GUNCHO>
<REMOVE ,MAGIC-ROPE>
<REMOVE ,JEWELLED-BOX>
<TELL
"The " D ,PRSO " disappears, but unfortunately the " D ,JEWELLED-BOX
" disappears as well." CR>)
(<VERB? REZROV>
<JEWELLED-BOX-F>
<RTRUE>)
(<VERB? TAKE>
<TELL
"The rope is so entangled around the box that the idea is ridiculous." CR>)
(<VERB? CUT MUNG>
<COND (<NOT ,PRSI>
<TELL "You can't hurt it with your bare hands." CR>)
(<EQUAL? ,PRSI ,MAGIC-KNIFE>
<ROPE-DISSOLVES>
<TELL
"At the mere touch of the magic knife, the rope gives way. Before your
eyes, the strands, now moving this way, now moving that way, untangle
themselves into a single strand which falls to the floor alongside the
box, where it dissolves into the air without a sound." CR>)
(<FSET? ,PRSI ,WEAPONBIT>
;"only other weapon is adventurer's sword?"
<COND (,ROPE-MAGIC?
<TELL
"The rope seems to be pretty strong stuff. You don't seem to be making
the least progress in breaking it." CR>)
(ELSE
<TELL
"The rope cuts cleanly, and falls to pieces on the floor. It must have
been pretty rotten." CR>)>)
(T <TELL
"You certainly won't get anywhere using the " D ,PRSI "!" CR>)>)
(<VERB? KULCAD>
<SETG ROPE-MAGIC? <>>
<TELL
"Nothing obvious happens, but when you examine the rope, it lacks a
certain something you saw in it before. It now looks sort of ordinary,
like a clothesline." CR>)
(<VERB? DROP>
<PERFORM ,V?DROP ,JEWELLED-BOX>
<RTRUE>)>>
<ROUTINE ROPE-DISSOLVES ()
<SETG ROPE-MAGIC? <>>
<SETG SCORE <+ ,SCORE ,BOX-POINT>>
<SETG BOX-POINT 0>
<REMOVE ,MAGIC-ROPE>
<MOVE ,PROTECTION-SCROLL ,JEWELLED-BOX>
<FCLEAR ,JEWELLED-BOX ,OPENBIT>
<FSET ,JEWELLED-BOX ,TOUCHBIT>
<PUTP ,JEWELLED-BOX ,P?LDESC
"A jewelled box is sitting on the ground.">>
<OBJECT MAGIC-KNIFE
(SYNONYM KNIFE DAGGER BLADE)
(ADJECTIVE MAGIC SACRIFICIAL)
(DESC "sacrificial dagger")
(FLAGS TAKEBIT TOUCHBIT WEAPONBIT TREASURE)
(SIZE 10)
(ACTION MAGIC-KNIFE-F)>
<ROUTINE MAGIC-KNIFE-F ()
<COND (<VERB? EXAMINE>
<TELL
"The dagger is inlaid with fine jewels. It would be a handsome addition
to anyone's weapon collection." CR>)>>

54
load.zil Normal file
View File

@ -0,0 +1,54 @@
"ENCHANTER for
ENCHANTER
(c) Copyright 1983 Infocom, Inc. All Rights Reserved.
"
<PRINC "
*** ENCHANTER: Interlogic Fantasy ***
">
<BLOAT 90000 0 0 3300 0 0 0 0 0 256>
<SNAME "ENCHANTER">
<SET REDEFINE T>
<GLOBAL BIGFIX 10000>
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<OR <GASSIGNED? INSERT-CRUFTY>
<DEFINE INSERT-CRUFTY (STR) <INSERT-FILE .STR T>>>
<COND (<GASSIGNED? PREDGEN>
<ID 0>)>
<INSERT-FILE "SYNTAX" T>
<INSERT-FILE "MACROS" T>
<INSERT-FILE "CLOCK" T>
<INSERT-FILE "MAIN" T>
<INSERT-FILE "PARSER" T>
<INSERT-CRUFTY "CRUFTY">
<INSERT-FILE "VERBS" T>
<INSERT-FILE "GLOBALS" T>
;<INSERT-FILE "TERROR" T>
;<INSERT-FILE "STAIR" T>
<INSERT-FILE "MAGIC" T>
;<INSERT-FILE "KNOT" T>
;<INSERT-FILE "PURLOINED" T>
<INSERT-FILE "CASTLE" T>
;<INSERT-FILE "TEMPLE" T>
;<INSERT-FILE "GALLERY" T>
;<INSERT-FILE "EGG" T>
<INSERT-FILE "SLEEP" T>
<INSERT-FILE "GEARS" T>
<INSERT-FILE "OUTSIDE" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>

162
macros.zil Normal file
View File

@ -0,0 +1,162 @@
"MACROS for
ENCHANTER
(c) Copyright 1983 Infocom, Inc. All Rights Reserved.
"
<SETG C-ENABLED? 0>
<SETG C-ENABLED 1>
<SETG C-DISABLED 0>
<DEFMAC TELL ("ARGS" A)
<FORM PROG ()
!<MAPF ,LIST
<FUNCTION ("AUX" E P O)
<COND (<EMPTY? .A> <MAPSTOP>)
(<SET E <NTH .A 1>>
<SET A <REST .A>>)>
<COND (<TYPE? .E ATOM>
<COND (<OR <=? <SET P <SPNAME .E>>
"CRLF">
<=? .P "CR">>
<MAPRET '<CRLF>>)
(<EMPTY? .A>
<ERROR INDICATOR-AT-END? .E>)
(ELSE
<SET O <NTH .A 1>>
<SET A <REST .A>>
<COND (<OR <=? <SET P <SPNAME .E>>
"DESC">
<=? .P "D">
<=? .P "OBJ">
<=? .P "O">>
<MAPRET <FORM PRINTD .O>>)
(<OR <=? .P "A">
<=? .P "AN">>
<MAPRET <FORM PRINTA .O>>)
(<OR <=? .P "NUM">
<=? .P "N">>
<MAPRET <FORM PRINTN .O>>)
(<OR <=? .P "CHAR">
<=? .P "CHR">
<=? .P "C">>
<MAPRET <FORM PRINTC .O>>)
(ELSE
<MAPRET
<FORM PRINT
<FORM GETP .O .E>>>)>)>)
(<TYPE? .E STRING>
<MAPRET <FORM PRINTI .E>>)
(<TYPE? .E FORM LVAL GVAL>
<MAPRET <FORM PRINT .E>>)
(ELSE <ERROR UNKNOWN-TYPE .E>)>>>>>
<ROUTINE PRINTA (O)
<TELL <COND (<FSET? .O ,VOWELBIT>
"an ")
(T "a ")>
D .O>>
<DEFMAC VERB? ("ARGS" ATMS)
<MULTIFROB PRSA .ATMS>>
<DEFMAC PRSO? ("ARGS" ATMS)
<MULTIFROB PRSO .ATMS>>
<DEFMAC PRSI? ("ARGS" ATMS)
<MULTIFROB PRSI .ATMS>>
<DEFMAC ROOM? ("ARGS" ATMS)
<MULTIFROB HERE .ATMS>>
<DEFINE MULTIFROB (X ATMS "AUX" (OO (OR)) (O .OO) (L ()) ATM)
<REPEAT ()
<COND (<EMPTY? .ATMS>
<RETURN!- <COND (<LENGTH? .OO 1> <ERROR .X>)
(<LENGTH? .OO 2> <NTH .OO 2>)
(ELSE <CHTYPE .OO FORM>)>>)>
<REPEAT ()
<COND (<EMPTY? .ATMS> <RETURN!->)>
<SET ATM <NTH .ATMS 1>>
<SET L
(<COND (<TYPE? .ATM ATOM>
<CHTYPE <COND (<==? .X PRSA>
<PARSE
<STRING "V?"
<SPNAME .ATM>>>)
(ELSE .ATM)>
GVAL>)
(ELSE .ATM)>
!.L)>
<SET ATMS <REST .ATMS>>
<COND (<==? <LENGTH .L> 3> <RETURN!->)>>
<SET O <REST <PUTREST .O (<FORM EQUAL? <CHTYPE .X GVAL> !.L>)>>>
<SET L ()>>>
<DEFMAC BSET ('OBJ "ARGS" BITS)
<MULTIBITS FSET .OBJ .BITS>>
<DEFMAC BCLEAR ('OBJ "ARGS" BITS)
<MULTIBITS FCLEAR .OBJ .BITS>>
<DEFMAC BSET? ('OBJ "ARGS" BITS)
<MULTIBITS FSET? .OBJ .BITS>>
<DEFINE MULTIBITS (X OBJ ATMS "AUX" (O ()) ATM)
<REPEAT ()
<COND (<EMPTY? .ATMS>
<RETURN!- <COND (<LENGTH? .O 1> <NTH .O 1>)
(<==? .X FSET?> <FORM OR !.O>)
(ELSE <FORM PROG () !.O>)>>)>
<SET ATM <NTH .ATMS 1>>
<SET ATMS <REST .ATMS>>
<SET O
(<FORM .X
.OBJ
<COND (<TYPE? .ATM FORM> .ATM)
(ELSE <CHTYPE .ATM GVAL>)>>
!.O)>>>
<DEFMAC RFATAL ()
'<PROG () <PUSH 2> <RSTACK>>>
<DEFMAC PROB ('BASE? "OPTIONAL" 'LOSER?)
<COND (<ASSIGNED? LOSER?> <FORM ZPROB .BASE?>)
(ELSE <FORM G? .BASE? '<RANDOM 100>>)>>
;<ROUTINE ZPROB
(BASE)
<COND (,LUCKY <G? .BASE <RANDOM 100>>)
(ELSE <G? .BASE <RANDOM 300>>)>>
<ROUTINE RANDOM-ELEMENT (FROB)
<GET .FROB <RANDOM <GET .FROB 0>>>>
<ROUTINE PICK-ONE (FROB
"AUX" (L <GET .FROB 0>) (CNT <GET .FROB 1>) RND MSG RFROB)
<SET L <- .L 1>>
<SET FROB <REST .FROB 2>>
<SET RFROB <REST .FROB <* .CNT 2>>>
<SET RND <RANDOM <- .L .CNT>>>
<SET MSG <GET .RFROB .RND>>
<PUT .RFROB .RND <GET .RFROB 1>>
<PUT .RFROB 1 .MSG>
<SET CNT <+ .CNT 1>>
<COND (<==? .CNT .L> <SET CNT 0>)>
<PUT .FROB 0 .CNT>
.MSG>
<DEFMAC ENABLE ('INT) <FORM PUT .INT ,C-ENABLED? 1>>
<DEFMAC DISABLE ('INT) <FORM PUT .INT ,C-ENABLED? 0>>
<DEFMAC FLAMING? ('OBJ)
<FORM AND <FORM FSET? .OBJ ',FLAMEBIT>
<FORM FSET? .OBJ ',ONBIT>>>
<DEFMAC OPENABLE? ('OBJ)
<FORM OR <FORM FSET? .OBJ ',DOORBIT>
<FORM FSET? .OBJ ',CONTBIT>>>
<DEFMAC ABS ('NUM)
<FORM COND (<FORM L? .NUM 0> <FORM - 0 .NUM>)
(T .NUM)>>

1140
magic.zil Normal file

File diff suppressed because it is too large Load Diff

391
main.zil Normal file
View File

@ -0,0 +1,391 @@
"MAIN for
ENCHANTER
Copyright 1983 Infocom, Inc. All Rights Reserved.
"
<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 <>>
<ROUTINE GO ()
<PUTB ,P-LEXV 0 59>
;"put interrupts on clock chain"
<ENABLE <QUEUE I-TIRED ,MOVES-PER-DAY>>
<ENABLE <QUEUE I-THIRST 41>>
<ENABLE <QUEUE I-HUNGER 67>>
<ENABLE <QUEUE I-TIME -1>>
<ENABLE <QUEUE I-SCURRY 5>>
<ENABLE <QUEUE I-MUNG-ROOM 50>>
;"make sure guards arrive messages happen before adventurer ones"
<ENABLE <QUEUE I-GUARDS-ARRIVE 0>>
<ENABLE <QUEUE I-ADVENTURER 0>>
;"clean up junk compiler can't do"
;"set up and go"
<SETG LIT T>
<SETG WINNER ,PLAYER>
<SETG HERE ,WEST-FORK>
<SETG P-IT-LOC ,HERE>
<SETG P-IT-OBJECT <>>
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
<TELL
"It must be the warlock Krill. The odd disappearances, the mysterious
dissolution of regions sacred to the Circle, the lessening of the Powers --
these could only be his handiwork. The Circle gathers and its leader, the
esteemed Belboz, reveals to them an ancient document which portends evil days
much like our own.|
|
\"Krill's evil must be unmade,\" he begins, \"but to send a powerful Enchanter
is ill-omened. It would be ruinous to reveal oversoon our full powers.\" A
ripple of concern spreads over the face of each Enchanter. Belboz pauses, and
collects his resolve. \"Have hope! This has been written by a hand far wiser
than mine!\"|
|
He recites a short spell and you appear. Belboz approaches, transfixing you
with his gaze, and hands you the document. The other Enchanters await his
decree. \"These words, written ages ago, can have only one meaning.
You, a novice Enchanter with but a few simple spells in your Book, must seek
out Krill, explore the Castle he has overthrown, and learn his secrets. Only
then may his vast evil be lessened or, with good fortune, destroyed.\"|
|
The Circle rises and intones a richly woven spell, whose many textures imbue
the small, darkened chamber with warmth and hope. There is a surge of power;
you are Sent." CR>
<CRLF>
<V-VERSION>
<CRLF>)>
<MOVE ,WINNER ,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 (<OR ,P-OFLAG ,P-MERGED>
<PRINTB <GET .TMP 0>>)
(T
<WORD-PRINT <GETB .TMP 2> <GETB .TMP 3>>)>
<TELL "!" 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
"I don't know what you're referring to." 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 (<VERB? MAKE-LINE ERASE-LINE> T)
(<OR <G? .NUM 1>
<EQUAL? <GET <GET ,P-ITBL ,P-NC1>
0>
,W?ALL>>
<COND (<EQUAL? .OBJ1
,NOT-HERE-OBJECT>
<SETG P-NOT-HERE
<+ ,P-NOT-HERE 1>>
<AGAIN>)
(<AND <EQUAL? ,P-GETFLAGS
,P-ALL>
<VERB? TAKE>
<NOT <EQUAL?
<LOC .OBJ1>
,WINNER
,HERE>>>
<AGAIN>)
(<AND <VERB? TAKE>
,PRSI
<EQUAL? <GET <GET ,P-ITBL
,P-NC1>
0>
,W?ALL>
<NOT <IN? ,PRSO ,PRSI>>>
<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 <>>)> ;"why is this done? -- pdl"
<COND (<LOC ,WINNER>
<SET V
<APPLY <GETP <LOC ,WINNER> ,P?ACTION>
,M-END>>)>)>
<COND (<VERB? AGAIN ;WALK SAVE RESTORE SCORE VERSION> 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
TIME 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)
#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 (<AND <EQUAL? ,NOT-HERE-OBJECT ,PRSO ,PRSI>
<SET V <NOT-HERE-OBJECT-F>>>
<SETG P-WON <>>
.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>>>
<SETG P-WON <>>
.V)
(T
<SET O ,PRSO>
<SET I ,PRSI>
<COND (<SET V <D-APPLY "Actor"
<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>
<SET V <D-APPLY "Container"
<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)>>
>)> ;"DON'T REMOVE"
<GLOBAL TOD 0>
<GLOBAL DAWN 0>
<GLOBAL SUNRISE 10>
<GLOBAL DUSK 81>
<GLOBAL NIGHTFALL 97>
<ROUTINE I-TIME ()
<COND (<AND <==? ,HASTED? ,ME>
<==? <MOD ,MOVES 2> 0>>
<RTRUE>)
(<G? <SETG TOD <+ ,TOD 1>> 127>
<SETG TOD 0>
<SETG NIGHTFALL <- ,NIGHTFALL 20>>
<SETG LOSSAGE <+ ,LOSSAGE 1>>
<SETG DUSK <- ,DUSK 20>>
<SETG MOLESTED <+ ,MOLESTED 5>>
<SETG MUNCHED <+ ,MUNCHED 5>>
<COND (<L? ,NIGHTFALL 0>
<TELL
"Belboz appears before you, in a magical sending. He speaks, his voice
soft and saddened. \"You have failed. Universal night has now fallen.
Krill and his creatures now may freely roam the earth. The power of the
Circle is diminished, if not broken. I go to prepare the last defense.\"
The sending vanishes." CR>
<FINISH>)>)>
<COND (<AND <EQUAL? ,TOD ,NIGHTFALL>
<FSET? <LOC ,PLAYER> ,ONBIT>>
<TELL
"The darkened sky is now full of bright stars. It is night." CR>
<COND (<L? ,NIGHTFALL 97>
<TELL
"Today seemed shorter than yesterday, somehow." CR>)>
<RTRUE>)
(<AND <EQUAL? ,TOD ,SUNRISE>
<FSET? <LOC ,PLAYER> ,ONBIT>>
<TELL
"The sun has now risen above the hills." CR>)
(<AND <EQUAL? ,TOD ,DUSK>
<FSET? <LOC ,PLAYER> ,ONBIT>>
<TELL
"The sun starts to set behind the Lonely Mountain in the west." CR>
<COND (<L? ,NIGHTFALL 97>
<TELL
"The day is coming to an end earlier than you would have expected." CR>)>
<RTRUE>)>>

66
nload.zil Normal file
View File

@ -0,0 +1,66 @@
"ENCHANTER for
ENCHANTER
(c) Copyright 1983 Infocom, Inc. All Rights Reserved.
"
<ZSTR-OFF>
<PRINC "
*** ENCHANTER I: The Warlock ***
">
<BLOAT 90000 0 0 3300 0 0 0 0 0 256>
<GC 0 T 4>
;<GC-MON T>
<SNAME "ENCHANTER">
<SET REDEFINE T>
<GLOBAL BIGFIX 10000>
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<OR <GASSIGNED? INSERT-CRUFTY>
<DEFINE INSERT-CRUFTY (STR) <INSERT-FILE <SPNAME .STR> T>>>
<DEFINE IFILE (A) <INSERT-FILE <SPNAME .A> T>>
<COND (<GASSIGNED? PREDGEN>
<ID 0>)>
<ZSTR-ON>
<IFILE SYNTAX>
<IFILE MACROS>
<IFILE CLOCK>
<IFILE MAIN>
<IFILE PARSER>
<INSERT-CRUFTY CRUFTY>
<IFILE VERBS>
<IFILE GLOBALS>
<IFILE TERROR>
;<IFILE STAIR>
<IFILE MAGIC>
;<IFILE KNOT>
<IFILE PURLOINED>
<IFILE CASTLE>
;<IFILE TEMPLE>
;<IFILE GALLERY>
;<IFILE EGG>
<IFILE SLEEP>
;<IFILE GEARS>
<IFILE OUTSIDE>
<ROUTINE I-MUNG-ROOM () <>>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>
<GC-MON>

176
nmacros.zil Normal file
View File

@ -0,0 +1,176 @@
"MACROS for
ENCHANTER
(c) Copyright 1983 Infocom, Inc. All Rights Reserved.
"
<SETG C-ENABLED? 0>
<SETG C-ENABLED 1>
<SETG C-DISABLED 0>
<DEFMAC TELL ("ARGS" A)
<FORM PROG ()
!<MAPF ,LIST
<FUNCTION ("AUX" E P O)
<COND (<EMPTY? .A> <MAPSTOP>)
(<SET E <NTH .A 1>>
<SET A <REST .A>>)>
<COND (<TYPE? .E ATOM>
<COND (<OR <=? <SET P <SPNAME .E>>
"CRLF">
<=? .P "CR">>
<MAPRET '<CRLF>>)
(<EMPTY? .A>
<ERROR INDICATOR-AT-END? .E>)
(ELSE
<SET O <NTH .A 1>>
<SET A <REST .A>>
<COND (<OR <=? <SET P <SPNAME .E>>
"DESC">
<=? .P "D">
<=? .P "OBJ">
<=? .P "O">>
<MAPRET <FORM PRINTD .O>>)
(<OR <=? .P "NUM">
<=? .P "N">>
<MAPRET <FORM PRINTN .O>>)
(<OR <=? .P "CHAR">
<=? .P "CHR">
<=? .P "C">>
<MAPRET <FORM PRINTC .O>>)
(ELSE
<MAPRET
<FORM PRINT
<FORM GETP .O .E>>>)>)>)
(<TYPE? .E STRING ZSTRING>
<MAPRET <FORM PRINTI .E>>)
(<TYPE? .E FORM>
<MAPRET <FORM PRINT .E>>)
(ELSE <ERROR UNKNOWN-TYPE .E>)>>>>>
<DEFMAC VERB? ("ARGS" ATMS)
<MULTIFROB PRSA .ATMS>>
<DEFMAC PRSO? ("ARGS" ATMS)
<MULTIFROB PRSO .ATMS>>
<DEFMAC PRSI? ("ARGS" ATMS)
<MULTIFROB PRSI .ATMS>>
<DEFMAC ROOM? ("ARGS" ATMS)
<MULTIFROB HERE .ATMS>>
<DEFINE MULTIFROB (X ATMS "AUX" (OO (OR)) (O .OO) (L ()) ATM)
<REPEAT ()
<COND (<EMPTY? .ATMS>
<RETURN!- <COND (<LENGTH? .OO 1> <ERROR .X>)
(<LENGTH? .OO 2> <NTH .OO 2>)
(ELSE <CHTYPE .OO FORM>)>>)>
<REPEAT ()
<COND (<EMPTY? .ATMS> <RETURN!->)>
<SET ATM <NTH .ATMS 1>>
<SET L
(<COND (<TYPE? .ATM ATOM>
<FORM GVAL
<COND (<==? .X PRSA>
<PARSE
<STRING "V?"
<SPNAME .ATM>>>)
(ELSE .ATM)>>)
(ELSE .ATM)>
!.L)>
<SET ATMS <REST .ATMS>>
<COND (<==? <LENGTH .L> 3> <RETURN!->)>>
<SET O <REST <PUTREST .O (<FORM EQUAL? <FORM GVAL .X> !.L>)>>>
<SET L ()>>>
<DEFMAC BSET ('OBJ "ARGS" BITS)
<MULTIBITS FSET .OBJ .BITS>>
<DEFMAC BCLEAR ('OBJ "ARGS" BITS)
<MULTIBITS FCLEAR .OBJ .BITS>>
<DEFMAC BSET? ('OBJ "ARGS" BITS)
<MULTIBITS FSET? .OBJ .BITS>>
<DEFINE MULTIBITS (X OBJ ATMS "AUX" (O ()) ATM)
<REPEAT ()
<COND (<EMPTY? .ATMS>
<RETURN!- <COND (<LENGTH? .O 1> <NTH .O 1>)
(<==? .X FSET?> <FORM OR !.O>)
(ELSE <FORM PROG () !.O>)>>)>
<SET ATM <NTH .ATMS 1>>
<SET ATMS <REST .ATMS>>
<SET O
(<FORM .X
.OBJ
<COND (<TYPE? .ATM FORM> .ATM)
(ELSE <FORM GVAL .ATM>)>>
!.O)>>>
<DEFMAC BLT ("ARGS" X "AUX" (TO <MEMQ TO .X>) (LL (())) (L .LL) ATM)
<COND (<AND .TO <1? <LENGTH <REST .TO>>>>
<SET DEST <NTH .TO 2>>)
(ELSE <SET DEST <>>)>
<REPEAT ()
<COND (<OR <EMPTY? .X> <==? <NTH .X 1> TO>>
<RETURN <COND (<LENGTH? .LL 1> <ERROR BLT>)
(<LENGTH? .LL 2> <NTH .LL 2>)
(ELSE
<FORM PROG !.LL>)>>)
(ELSE
<SET ATM <NTH .X 1>>
<COND (<TYPE? .ATM ATOM>
<SET ATM <FORM GVAL .ATM>>)>
<SET L
<REST
<PUTREST .L
(<COND (.DEST
<FORM MOVE .ATM .DEST>)
(ELSE
<FORM REMOVE .ATM>)>)>>>
<SET X <REST .X>>)>>>
<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 RANDOM-ELEMENT (FROB)
<GET .FROB <RANDOM <GET .FROB 0>>>>
<ROUTINE PICK-ONE (FROB
"AUX" (L <GET .FROB 0>) (CNT <GET .FROB 1>) RND MSG RFROB)
<SET L <- .L 1>>
<SET FROB <REST .FROB 2>>
<SET RFROB <REST .FROB <* .CNT 2>>>
<SET RND <RANDOM <- .L .CNT>>>
<SET MSG <GET .RFROB .RND>>
<PUT .RFROB .RND <GET .RFROB 1>>
<PUT .RFROB 1 .MSG>
<SET CNT <+ .CNT 1>>
<COND (<==? .CNT .L> <SET CNT 0>)>
<PUT .FROB 0 .CNT>
.MSG>
<DEFMAC ENABLE ('INT) <FORM PUT .INT ,C-ENABLED? 1>>
<DEFMAC DISABLE ('INT) <FORM PUT .INT ,C-ENABLED? 0>>
<DEFMAC FLAMING? ('OBJ)
<FORM AND <FORM FSET? .OBJ ',FLAMEBIT>
<FORM FSET? .OBJ ',ONBIT>>>
<DEFMAC OPENABLE? ('OBJ)
<FORM OR <FORM FSET? .OBJ ',DOORBIT>
<FORM FSET? .OBJ ',CONTBIT>>>
<DEFMAC ABS ('NUM)
<FORM COND (<FORM L? .NUM 0> <FORM - 0 .NUM>)
(T .NUM)>>

787
outside.zil Normal file
View File

@ -0,0 +1,787 @@
"OUTSIDE for
ENCHANTER
Copyright 1983 Infocom, Inc. All Rights Reserved.
"
"Various hacks you can perform outside the castle"
<ROOM WEST-CASTLE
(IN ROOMS)
(DESC "Outside Gate")
(EAST TO INSIDE-GATE
IF IRON-GATE IS OPEN ELSE "The iron gate is locked.")
(IN TO INSIDE-GATE
IF IRON-GATE IS OPEN ELSE "The iron gate is locked.")
(WEST TO WESTERN-ROAD)
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(ACTION WEST-CASTLE-F)
(GLOBAL IRON-GATE IRON-GATE-CHAINS)>
<ROUTINE WEST-CASTLE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You are outside the western entrance to the castle. To the east stands
an iron gate which is ">
<COND (<FSET? ,IRON-GATE ,OPENBIT>
<TELL "wide open">)
(T <TELL "closed and chained">)>
<TELL ". A winding road starts here and proceeds
to the west." CR>)>>
<ROOM WESTERN-ROAD
(IN ROOMS)
(DESC "Western Road")
(LDESC
"You are on an east-west road, which wends its way through
the dark, rolling hills of this land. To the west rises a high
mountain, to the east stands a high castle with dark towers.")
(EAST TO WEST-CASTLE)
(WEST TO EAST-FORK)
(NORTH
"You would become lost among the brambles. Better to stay on the road.")
(SOUTH
"You would become lost among the brambles. Better to stay on the road.")
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL HILLS MOUNTAIN DISTANT-CASTLE)>
<ROOM EAST-FORK
(IN ROOMS)
(DESC "Eastern Fork")
(LDESC
"You are at a fork in the road where paths to the northwest and southwest
girdle the base of the Lonely Mountain and a smaller path winds its way
to the east.")
(NW TO TRAIL-HEAD)
(SW TO VILLAGE-EAST)
(EAST TO WESTERN-ROAD)
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL HILLS MOUNTAIN)>
<ROOM TRAIL-HEAD
(IN ROOMS)
(DESC "Trail Head")
(LDESC
"You are on the northeast side of the Lonely Mountain, walking a narrow
path through rolling hills. On one side of the path is a sign and behind
that, to the northeast, a winding path through the thick undergrowth. The
trail continues to the southeast.")
(NE TO SHADY-BROOK)
(NW TO SHACK-EAST)
(SE TO EAST-FORK)
;(WEST "There is no trail up the mountain here.")
;(SOUTH "There is no trail up the mountain here.")
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL HILLS MOUNTAIN UNDERGROWTH)>
<OBJECT UNDERGROWTH
(IN LOCAL-GLOBALS)
(DESC "undergrowth")
(SYNONYM UNDERGROWTH)
(ADJECTIVE THICK)
(FLAGS VOWELBIT)
(ACTION UNDERGROWTH-F)>
<ROUTINE UNDERGROWTH-F ()
<COND (<VERB? EXAMINE>
<TELL
"The undergrowth is thick. You would never get through it." CR>)
(<VERB? CUT MUNG>
<TELL
"You could spend a few days doing this without much progress." CR>)>>
<OBJECT PATH-SIGN
(IN TRAIL-HEAD)
(DESC "sign")
(SYNONYM SIGN)
(FLAGS READBIT NDESCBIT)
(ACTION PATH-SIGN-F)>
<ROUTINE PATH-SIGN-F ()
<COND (<VERB? EXAMINE READ>
<FIXED-FONT-ON>
<TELL "|
- Shady Brook Trail -|
|
Old Lingolf House|
1000 feet|
">
<FIXED-FONT-OFF>
<RTRUE>)>>
<ROOM SHADY-BROOK
(IN ROOMS)
(DESC "Shady Brook")
(LDESC
"The trail ends here. A ruined stone foundation marks the site of the
Old Lingolf House, which presumably was a monument of some sort. The
trail head is off to the southwest, and a small brook flows slowly by.")
(SW TO TRAIL-HEAD)
;(NORTH "The only trail heads back to the southwest.")
;(EAST "The only trail heads back to the southwest.")
;(WEST "The only trail heads back to the southwest.")
;(SOUTH "The only trail heads back to the southwest.")
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL GLOBAL-WATER HILLS MOUNTAIN UNDERGROWTH)>
<OBJECT FOUNDATION
(IN SHADY-BROOK)
(DESC "foundation")
(SYNONYM FOUNDATION HOUSE)
(ADJECTIVE STONE RUINED LINGOLF OLD)
(FLAGS NDESCBIT)
(ACTION FOUNDATION-F)>
<ROUTINE FOUNDATION-F ()
<COND (<VERB? THROUGH> <TELL "No way." CR>)
(<VERB? WHO> <TELL "There's no way of knowing." CR>)
(<VERB? SEARCH LOOK-INSIDE>
<TELL
"There is nothing but stone there." CR>)>>
<OBJECT DISTANT-CASTLE
(IN LOCAL-GLOBALS)
(DESC "castle")
(SYNONYM CASTLE TOWER TOWERS TURRET)
(ADJECTIVE HIGH DARK GREAT)
(ACTION DISTANT-CASTLE-F)>
<ROUTINE DISTANT-CASTLE-F ()
<COND (<VERB? EXAMINE>
<TELL
"The castle is far to the east and flanked by dark towers. From this distance,
not much detail can be discerned." CR>)
(<VERB? WALK-TO>
<TELL
"There's no direct path from here, although roads lead there. Try specifying
a compass direction in order to move around." CR>)>>
<ROOM SHACK-EAST
(IN ROOMS)
(DESC "Trail")
(LDESC
"The trail turns a corner here, bending out of sight to the southeast and
southwest. The ground is higher here than to the south, allowing you to make
out the top of the Lonely Mountain, shrouded in clouds. No path from here
leads up the mountain, however.")
(SE TO TRAIL-HEAD)
(SW TO SHACK-ROOM)
;(UP "There is no trail up the mountain here.")
;(SOUTH "There is no trail up the mountain here.")
;(NORTH "There is no trail down the mountain here.")
;(DOWN "There is no trail down the mountain here.")
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL HILLS MOUNTAIN)>
<ROOM SHACK-ROOM
(IN ROOMS)
(DESC "Outside of Shack")
(LDESC
"You are south of an old wooden shack, apparently deserted.
The trail extends from northeast to southwest here, circling the Lonely
Mountain, which lies to the southeast.")
(NE TO SHACK-EAST)
(EAST TO SHACK-EAST)
(WEST TO WEST-FORK)
(SW TO WEST-FORK)
(NORTH TO SHACK)
(IN TO SHACK)
;(SOUTH "There is no trail up the mountain here.")
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL SHACK-OBJ HILLS MOUNTAIN)>
<OBJECT SHACK-OBJ
(IN LOCAL-GLOBALS)
(DESC "wooden shack")
(SYNONYM SHACK)
(ADJECTIVE OLD WOODEN)
(FLAGS NDESCBIT)
(ACTION SHACK-OBJ-F)>
<ROUTINE SHACK-OBJ-F ()
<COND (<AND <VERB? THROUGH> <EQUAL? ,HERE ,SHACK-ROOM>>
<GOTO ,SHACK>
<RTRUE>)
(<AND <VERB? DROP> <EQUAL? ,HERE ,SHACK>>
<GOTO ,SHACK-ROOM>
<RTRUE>)>>
<ROOM SHACK
(IN ROOMS)
(DESC "Inside Shack")
(LDESC
"The inside of the shack is a shambles. An overturned table and bench,
and a few broken windows remain. An oven is the only fixture
that's even recognizable. The door is to the south.")
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL SHACK-OBJ WINDOW)
(SOUTH TO SHACK-ROOM)
(OUT TO SHACK-ROOM)
(TEXT
"You can't see much except for scrubby vegetation.")
(PSEUDO "TABLE" SHACK-STUFF "BENCH" SHACK-STUFF)>
<OBJECT BATTERED-LANTERN
(IN SHACK)
(DESC "battered lantern")
(FDESC
"The top of a battered lantern is partially visible behind the overturned
table.")
(SYNONYM LANTERN LAMP)
(ADJECTIVE BATTERED)
(FLAGS TAKEBIT)
(ACTION BATTERED-LANTERN-F)>
<ROUTINE BATTERED-LANTERN-F ()
<COND (<VERB? ERASE-LINE>
<TELL "Aladdin you're not." CR>)
(<VERB? LAMP-ON>
<TELL
"The lamp seems to be broken, most likely beyond repair." CR>)
(<VERB? EXAMINE>
<TELL
"The lamp is made of brass and is old and battered. It doesn't seem
likely that any use can be made of it." CR>)
(<AND <VERB? LAMP-OFF> <NOT <FSET? ,PRSO ,ONBIT>>>
<TELL "It isn't on!" CR>)>>
<ROUTINE SHACK-STUFF ()
<COND (<AND <VERB? PUT> <EQUAL? ,PRSI ,PSEUDO-OBJECT>>
<TELL
"They are overturned and don't make good surfaces." CR>)>>
<OBJECT SHACK-OVEN
(IN SHACK)
(DESC "oven")
(SYNONYM OVEN FIXTURE)
(FLAGS NDESCBIT CONTBIT VOWELBIT)
(CAPACITY 20)
(ACTION SHACK-OVEN-F)>
<ROUTINE SHACK-OVEN-F ()
<COND (<VERB? LAMP-ON LAMP-OFF>
<TELL "It's not working." CR>)
(<VERB? EXAMINE>
<TELL
"Strangely, the oven is still slightly warm, as if it had been used
recently." CR>)>>
<OBJECT BREAD
(IN SHACK-OVEN)
(DESC "loaf of bread")
(SYNONYM LOAF BREAD FOOD)
(SIZE 8)
(FLAGS TAKEBIT)
(ACTION BREAD-F)>
<ROUTINE BREAD-F ("AUX" AMT S)
<COND (<VERB? EXAMINE>
<TELL "There's "
<GET ,BREAD-EXAMINES <GETP ,BREAD ,P?SIZE>>
" left." CR>)
(<VERB? EAT>
<SET S <GET <INT I-HUNGER> ,C-TICK>>
<COND (<G? .S 60>
<TELL "You aren't the least bit hungry." CR>
<RTRUE>)>
<PUTP ,BREAD ,P?SIZE <SET AMT <- <GETP ,BREAD ,P?SIZE> 1>>>
<SETG SCORE <+ ,SCORE ,EAT-POINT>>
<SETG EAT-POINT 0>
<TELL
"Mmm. That tasted great! ">
<TELL <GET ,BREAD-AMTS .AMT> CR>
<COND (<EQUAL? .AMT 0>
<REMOVE ,BREAD>)>
<QUEUE I-HUNGER <+ .S 47>>
<SETG HUNGER-COUNT 0>
<RTRUE>)
(<AND <VERB? BURN> <==? ,PRSI ,ETERNAL-FLAME>>
<TELL
"Toast without jam? What a silly idea!" CR>)
(<AND <VERB? CUT MUNG> <==? ,PRSI ,MAGIC-KNIFE>>
<TELL
"It seems silly to cut up your bread when it's more easily carried in
one piece. Besides, you might get crumbs all over your spell book." CR>)>>
<GLOBAL BREAD-EXAMINES <TABLE
0
"not much"
"only a small amount"
"a good deal"
"nearly half"
"about half"
"a lot"
"a whole lot"
"an entire loaf">>
<GLOBAL BREAD-AMTS <TABLE
"There's none left, though."
"There's not much left, though."
"There's only a small amount left, though."
"There's still a good deal left, too."
"There's nearly half of it left, too."
"There's still about half of it left, too."
"There's a lot of bread left, too."
"There's a whole lot of it left, too."
"There's a full loaf, too.">>
<ROOM WEST-FORK
(IN ROOMS)
(DESC "Fork")
(LDESC
"You stand at a point of decision on a road which makes a wide
fork to the northeast and southeast, circling the base of the Lonely Mountain,
which looms high overhead to the east. A very long and winding road starts
here and stretches out of sight to the west through low, smoky hills.")
(WEST TO LONG-ROAD)
(NE TO SHACK-ROOM)
(SE TO DUSTY-ROAD)
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL HILLS MOUNTAIN)>
<ROOM DUSTY-ROAD
(IN ROOMS)
(DESC "Dusty Trail")
(LDESC
"The trail here turns dry and dusty. To the northwest is the fork leading to
the Long Road, and the trail continues to the southeast.")
(NW TO WEST-FORK)
(SE TO HAIRPIN-LOOP)
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL HILLS MOUNTAIN)>
<ROOM HAIRPIN-LOOP
(IN ROOMS)
(DESC "Loop")
(LDESC
"The trail makes a hairpin turn here, swinging out to the northwest and
northeast, where it enters a small village. Low, smoky hills stretch
out to the west and south.")
(NE TO VILLAGE)
(NW TO DUSTY-ROAD)
;(NORTH "There is no trail up the mountain here.")
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL HILLS MOUNTAIN)>
<ROOM VILLAGE
(IN ROOMS)
(DESC "Deserted Village")
(LDESC
"This is the castle's village. Formerly, peasants lived here, going to
their farm plots each day. Merchants and artisans made it a center of
cultural activity. But now it's deserted. Or almost: there is smoke
rising from a particularly decrepit hovel to the south. A path travels
through the village from southwest to northeast, heading towards the
castle, and a less-used trail heads north up the mountain.")
(NE TO VILLAGE-EAST)
(SW TO HAIRPIN-LOOP)
(NORTH TO MOUNTAIN-TRAIL)
(UP TO MOUNTAIN-TRAIL)
(EAST
"You wander around in the village, find nothing of interest, and return to
the path.")
(WEST
"You wander around in the village, find nothing of interest, and return to
the path.")
(NW
"You wander around in the village, find nothing of interest, and return to
the path.")
(SE
"You wander around in the village, find nothing of interest, and return to
the path.")
(IN PER HOVEL-KLUDGE)
(SOUTH PER HOVEL-KLUDGE)
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL HOVEL HILLS MOUNTAIN)>
<ROOM MOUNTAIN-TRAIL
(IN ROOMS)
(DESC "Mountain Trail")
(LDESC
"This spot halfway up the Lonely Mountain is desolate of vegetation. Short,
stunted trees with branches empty surround you and the air is heavy and
smoke-filled.")
(DOWN TO VILLAGE)
(SOUTH TO VILLAGE)
(UP TO VISTA)
(NORTH TO VISTA)
(EAST "The trail is narrow and only heads up and down.")
(WEST "The trail is narrow and only heads up and down.")
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL HILLS MOUNTAIN TREES)>
<OBJECT TREES
(IN LOCAL-GLOBALS)
(DESC "tree")
(SYNONYM TREE TREES BRANCH)
(ADJECTIVE SHORT STUNTED)
(ACTION TREES-F)>
<ROUTINE TREES-F ()
<COND (<VERB? CLIMB-UP CLIMB-FOO>
<TELL
"The trees are not suitable for climbing." CR>)
(<VERB? EXAMINE>
<COND (<FSET? ,HERE ,RMUNGBIT>
<TELL
"The trees are short and stunted and covered in a thick, grey ash. The
roots themselves are blackened and foul-smelling." CR>)
(T
<TELL
"The trees are mostly short and stunted." CR>)>)>>
<ROOM VISTA
(IN ROOMS)
(DESC "Lonely Mountain")
(LDESC
"This is the top of the Lonely Mountain. In olden days, mariners had
named it Signal Mountain, for its glistening peak reflected the pale
moonlight, providing an unmistakable landmark on unclouded nights. The
bald mountain face is made of a shining substance whose nature is
unknown to you. Looking to the west, low hills stretch to the horizon,
and small pieces of the Long Road can be seen winding their way to
distant lands. To the east, far away, can be seen a great castle at the
edge of the Sea. Three turrets it has; two, old and still
majestic, lie on either side of a third, cold, black as night and squat
as a toad. An evil smoke seems to emanate from this tower, shrouding the
others in a darkening fog. A small mountain trail leaves the peak and descends
to the south into a small village far below.")
(DOWN TO MOUNTAIN-TRAIL)
(SOUTH TO MOUNTAIN-TRAIL)
(EAST
"At the last moment, you remember that you don't know a flying spell.")
(WEST
"At the last moment, you remember that you don't know a flying spell.")
(NORTH
"At the last moment, you remember that you don't know a flying spell.")
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL DISTANT-CASTLE HILLS MOUNTAIN)>
<OBJECT HOVEL
(IN LOCAL-GLOBALS)
(DESC "hovel")
(SYNONYM HOVEL)
(ADJECTIVE DECREPIT)
(ACTION HOVEL-F)>
<ROUTINE HOVEL-F ()
<COND (<AND <EQUAL? ,HERE ,VILLAGE> <VERB? THROUGH WALK-TO>>
<DO-WALK ,P?SOUTH>
<RTRUE>)>>
<ROUTINE HOVEL-KLUDGE ()
<TELL
"It is dark and smoky in here, but this is a place of great disorder,
and its odor is indescribable. A pile of rags sits near a small pot which
is bubbling and steaming over a tiny fire. The pile of rags sports a gnarled
hand which busies itself with the noisome stew. A closer look reveals a
withered crone at the other end of the hand." CR>
<COND (<EQUAL? ,CRONE-MOVE 0>
<TELL CR
"The creature looks you over keenly and speaks: \"I should have thought
they would send someone more ... more ...\" She laughs in an unsettling
way. \"They've all left! A great storm is brewing in the east, my friend,
and all have fled before it!\" She starts to chuckle. \"Take this and
begone!\" With a wave of her hand, you find yourself reeling out of the door
of the hovel, holding some sort of scroll in your hand." CR>
<MOVE ,OPEN-SCROLL ,WINNER>
<SETG CRONE-MOVE ,MOVES>)
(<L? <- ,MOVES ,CRONE-MOVE> 20>
<TELL
"As you enter the crone's hovel, she booms at you: \"Are you here again?
What a wizard!\" Her emphasis on the word \"wizard\" is filled with derision.
\"Make a small effort, would you, to make your Circle proud of you?\" The
same horrible emphasis on \"proud\" fills you with revulsion. \"Go!\" You
find yourself back in the village." CR>)
(T
<SETG CRONE-MOVE ,MOVES>
<TELL
"As you enter, the woman in rags wags her head slowly. \"You've
returned, have you? You need help perhaps? Well, I've given you all
the help in my meager store. You want more? Leave me!\" You find
yourself in the village." CR>)>
<RFALSE>>
<GLOBAL CRONE-MOVE 0>
<OBJECT GLOBAL-CRONE
(IN GLOBAL-OBJECTS)
(DESC "creature swathed in rags")
(SYNONYM CRONE)
(ACTION GLOBAL-CRONE-F)>
<ROUTINE GLOBAL-CRONE-F ()
<COND (<VERB? ZIFMIA>
<TELL
"Slowly, the old woman, swathed in rags, appears before you. She seems to be
staring through you and speaks slowly and sullenly: \"I thought I might see
you again, my friend! I gave you all the aid that I can. The rest is up to
you...\" She disappears." CR>)
(<VERB? EXAMINE>
<TELL
"The crone was presumably the village wise woman and its last remaining
inhabitant." CR>)
(T <TELL "The crone isn't here." CR>)>>
<ROOM VILLAGE-EAST
(IN ROOMS)
(DESC "Village Outskirts")
(LDESC
"You are on a road which enters a small village to the southwest and comes
to a fork to the northeast. The Lonely Mountain looms above but there is
no path from here which ascends the mountain.")
(SW TO VILLAGE)
(NE TO EAST-FORK)
(SOUTH "There is no road there.")
(NORTH "There is no road there.")
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL HILLS MOUNTAIN)>
<ROOM LONG-ROAD
(IN ROOMS)
(DESC "Long Road")
(EAST PER LONG-ROAD-EXIT-F)
(WEST PER LONG-ROAD-EXIT-F)
(ACTION LONG-ROAD-F)
(FLAGS RLANDBIT ONBIT LIGHTBIT)
(GLOBAL HILLS MOUNTAIN FOREST TREES)
(PSEUDO "FARM" FARM-PSEUDO)>
<ROUTINE LONG-ROAD-F (RARG)
<COND (<==? .RARG ,M-LOOK>
<TELL
"You are walking along the road. It wends its way through low hills, sparse
forests, and occasional subsistence farms. To the west, things seem lighter
and more pleasant. To the east they seem oppressive and dark. A worn sign
sits beside the road here.">
<COND (<==? ,ROAD-LOC ,ROAD-START>
<TELL " The deserted village is to the east.">)>
<CRLF>)>>
<ROUTINE FARM-PSEUDO ()
<COND (<VERB? EXAMINE THROUGH>
<TELL
"It's a poor, run-down farm, and not of interest." CR>)>>
<OBJECT LONG-ROAD-SIGN
(IN LONG-ROAD)
(DESC "sign")
(SYNONYM SIGN)
(ADJECTIVE WORN)
(FLAGS NDESCBIT)
(ACTION LONG-ROAD-SIGN-F)>
<ROUTINE LONG-ROAD-SIGN-F ()
<COND (<VERB? EXAMINE READ>
<COND (<G? <- ,ROAD-LOC ,ROAD-START> 11>
<TELL "The sign is too worn to be read." CR>)
(T
<TELL "\""
<GET ,SIGN-TBL <- ,ROAD-LOC ,ROAD-START>>
"\"" CR>)>)>>
<GLOBAL SIGN-TBL <TABLE
"Why"
"are"
"you"
"going"
"west"
"when"
"the"
"castle"
"is"
"east?"
"Burma"
"Shave">>
<ROUTINE LONG-ROAD-EXIT-F ()
<COND (<AND <==? ,ROAD-LOC ,ROAD-START>
<==? ,PRSO ,P?EAST>>
,WEST-FORK)
(ELSE
<FCLEAR ,LONG-ROAD ,TOUCHBIT>
<ROAD-TO-TABLE ,ROAD-LOC>
<COND (<==? ,PRSO ,P?WEST>
<SETG ROAD-LOC <+ ,ROAD-LOC 1>>)
(<==? ,PRSO ,P?EAST>
<SETG ROAD-LOC <- ,ROAD-LOC 1>>)>
<TABLE-TO-ROAD ,ROAD-LOC>
,LONG-ROAD)>>
<ROUTINE ROAD-TO-TABLE (SLOC
"AUX" TBL (CNT 0)
(F <FIRST? ,LONG-ROAD>) N)
<SET TBL ,ROAD-TABLE>
<REPEAT ()
<COND (.F <SET N <NEXT? .F>>)
(ELSE <RETURN>)>
<COND (<EQUAL? .F ,WINNER>)
(<FSET? .F ,TAKEBIT>
<REPEAT ()
<COND (<==? <GET .TBL .CNT> 0>
<PUT .TBL .CNT .SLOC>
<PUT .TBL <+ .CNT 1> .F>
<SET CNT <+ .CNT 2>>
<REMOVE .F>
<RETURN>)
(ELSE
<SET CNT <+ .CNT 2>>)>>)>
<SET F .N>>>
<ROUTINE TABLE-TO-ROAD (SLOC
"AUX" TBL (CNT 0))
<SET TBL ,ROAD-TABLE>
<REPEAT ()
<COND (<NOT <L? .CNT ,ROAD-TABLE-LENGTH>>
<RETURN>)
(<==? <GET .TBL .CNT> .SLOC>
<PUT .TBL .CNT 0>
<MOVE <GET .TBL <+ .CNT 1>> ,LONG-ROAD>)>
<SET CNT <+ .CNT 2>>>>
<GLOBAL ROAD-LOC 10000>
<CONSTANT ROAD-START 10000>
<CONSTANT ROAD-TABLE-LENGTH 80> ;"currently 33 objects with TAKEBIT"
<GLOBAL ROAD-TABLE ;"length should be 2*number of takeable objects"
<TABLE 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0>>
<OBJECT ROAD
(IN GLOBAL-OBJECTS)
(DESC "road")
(SYNONYM ROAD PATH TRAIL)
(ADJECTIVE WINDING LONG DUSTY DRY)
(ACTION ROAD-F)>
<ROUTINE ROAD-F ()
<COND (<VERB? FOLLOW TAKE>
<TELL
"You should supply a compass direction in which to follow the path." CR>)
(<VERB? DROP>
<COND (<OUTSIDE? ,HERE>
<TELL
"It's much safer to stay on the path, especially in these times." CR>)
(T
<TELL
"You'll have to give a direction." CR>)>)>>
<OBJECT HILLS
(IN LOCAL-GLOBALS)
(DESC "hills")
(SYNONYM HILL HILLS)
(ADJECTIVE LOW ROLLING SMOKY)
(ACTION HILLS-F)>
<ROUTINE HILLS-F ()
<COND (<VERB? EXAMINE>
<TELL
"The hills are mostly low and shrouded in a fine mist-like haze. They
stretch out mainly to the west." CR>)
(<VERB? CLIMB-UP CLIMB-FOO>
<PERFORM ,V?LEAVE ,ROAD>
<RTRUE>)>>
<OBJECT MOUNTAIN
(IN LOCAL-GLOBALS)
(DESC "mountain")
(SYNONYM MOUNTAIN PEAK)
(ADJECTIVE LONELY)
(ACTION MOUNTAIN-F)>
<ROUTINE MOUNTAIN-F ()
<COND (<AND <VERB? LEAP> <EQUAL? ,HERE ,VISTA>>
<JIGS-UP
"You execute a perfect swan-dive into the rocks below.">)
(<VERB? CLIMB-FOO CLIMB-UP>
<COND (<EQUAL? ,HERE ,VISTA>
<TELL "You are here!" CR>)
(<EQUAL? ,HERE ,VILLAGE ,MOUNTAIN-TRAIL>
<DO-WALK ,P?UP>)
(T
<TELL
"There's no way up the mountain from here." CR>)>)
(<VERB? EXAMINE>
<TELL
"The mountain is tall and proud, and its shining peak stands above
the low-hanging clouds." CR>)>>
<ROUTINE OUTSIDE? (RM)
<COND (<NOT <FSET? .RM ,LIGHTBIT>> <RFALSE>)
(<OR <EQUAL? .RM ,SHACK ,INSIDE-GATE>
<EQUAL? .RM ,PEBBLED-PATH ,COURTYARD-1>
<EQUAL? .RM ,COURTYARD-2 ,COURTYARD-3 ,COURTYARD-4>
<EQUAL? .RM ,COURTYARD-5 ,COURTYARD-6 ,COURTYARD-7>
<EQUAL? .RM ,SHACK-ROOM ,BEDROOM>>
<RFALSE>)
(ELSE <RTRUE>)>>
<ROUTINE I-SCURRY ()
<ENABLE <QUEUE I-SCURRY <+ 15 <RANDOM 20>>>>
<COND (<PROB 25>
<COND (<OUTSIDE? ,HERE>
<COND (<AND <L? ,NIGHTFALL 70> <PROB 50>>
<TELL
"You hear noises in the brambles. Snorting noises are followed by loud
crashing and finally a hideous squeal of triumph." CR>)
(ELSE
<TELL
"You hear a rustling in the brambles nearby, and you catch a glimpse of
something small and furry as it scurries away." CR>)>)
(<OR <EQUAL? ,HERE ,PIT ,REAL-STAIR ,PURLOINED-ROOM>
<EQUAL? ,HERE ,WARLOCK-TOWER>>
<RFALSE>)
(<GETP ,HERE ,P?TMAZE> <RFALSE>)
(<OR <EQUAL? <LOC ,WINNER>
,DUNGEON ,NORTH-CELL>
<EQUAL? <LOC ,WINNER>
,SECRET-PASSAGE>>
<TELL
"You hear, almost beyond your hearing, the soft rattle of chains, and
a cold wind blows over the back of your neck." CR>)
(<G? ,TOD ,NIGHTFALL>
<TELL <PICK-ONE ,NIGHT-GLIMPSES> CR>)
(ELSE
<TELL <PICK-ONE ,GLIMPSES> CR>)>)>>
<OBJECT GLIMPSE-1
(IN GLOBAL-OBJECTS)
(DESC "glimpse")
(SYNONYM DOG RAT BATS BAT)
(ADJECTIVE FERAL GAUNT)
(ACTION GLIMPSE-F)>
<OBJECT GLIMPSE-2
(IN GLOBAL-OBJECTS)
(DESC "glimpse")
(SYNONYM MIST OUTLINE BLUEBOTTLE FLY)
(ADJECTIVE THIN)
(ACTION GLIMPSE-F)>
<ROUTINE GLIMPSE-F ()
<COND (<G? ,MOVES 0>
<TELL "You can't see that anymore." CR>)
(ELSE
<TELL "You see no such thing." CR>)>>
<GLOBAL GLIMPSES <LTABLE 0
"A rat skitters across the floor, sees you, is startled, and rushes
back the way it came."
"Bluebottles buzz up to you, and then away."
"A gaunt, feral-looking dog carrying a well-chewed bone approaches,
is surprised by your presence, growls and then turns tail.">>
<GLOBAL NIGHT-GLIMPSES <LTABLE 0
"Bats flutter by, red eyes glowing."
;"Ahead, a thin mist forms into the ghostly outline of a man. He beckons,
but before you can approach, the outline wavers, the mist dissolves, and
all is as before."
"You hear noises in the darkness nearby."
"You sense something behind you, turn, and there is nothing there.">>

1188
parser.zil Normal file

File diff suppressed because it is too large Load Diff

1059
purloined.zil Normal file

File diff suppressed because it is too large Load Diff

30
record.zil Normal file
View File

@ -0,0 +1,30 @@
"RECORD for
MAGE
(c) Copyright 1985 Infocom, Inc. All Rights Reserved."
<SYNTAX \#RANDOM OBJECT = V-$RANDOM>
<SYNTAX \#COMMAND = V-$COMMAND>
<SYNTAX \#RECORD = V-$RECORD>
<SYNTAX \#UNRECORD = V-$UNRECORD>
<ROUTINE V-$COMMAND ()
<DIRIN 1>
<RTRUE>>
<ROUTINE V-$RANDOM ()
<COND (<NOT <EQUAL? ,PRSO ,INTNUM>>
<TELL "Illegal call to #RANDOM." CR>)
(T
<RANDOM <- 0 ,P-NUMBER>>
<RTRUE>)>>
<CONSTANT D-RECORD-ON 4>
<CONSTANT D-RECORD-OFF -4>
<ROUTINE V-$RECORD ()
<DIROUT ,D-RECORD-ON> ;"all READS and INPUTS get sent to command file"
<RTRUE>>
<ROUTINE V-$UNRECORD ()
<DIROUT ,D-RECORD-OFF>
<RTRUE>>

327
sleep.zil Normal file
View File

@ -0,0 +1,327 @@
"SLEEP for
ENCHANTER
Copyright 1983 Infocom, Inc. All Rights Reserved.
"
;"Not exactly Holiday Inn, much less the Ritz"
<GLOBAL LAST-SLEEP 0>
<CONSTANT MOVES-PER-DAY 86>
<CONSTANT MOVES-PER-SLEEP 42>
<ROUTINE V-TIME ("AUX" EL)
<SET EL </ ,TOD 10>>
<TELL "It would be " <GET ,TIME-TABLE .EL> " now." CR>>
<GLOBAL TIME-TABLE <TABLE
"just past dawn" ;"6am"
"early morning" ;"8am"
"mid-morning"
"around noon" ;"12n"
"early afternoon"
"mid-afternoon" ;"4pm"
"early evening"
"mid evening" ;"8pm"
"late evening"
"midnight" ;"12m"
"in the early hours"
"pre-dawn" ;"4am"
"dawn">>
<OBJECT GLOBAL-SLEEP
(IN GLOBAL-OBJECTS)
(DESC "sleep")
(SYNONYM SLEEP)
(ACTION GLOBAL-SLEEP-F)>
<ROUTINE GLOBAL-SLEEP-F ()
<COND (<VERB? WALK-TO TAKE>
<COND (<IN? ,WINNER ,BEDROOM>
<MOVE ,WINNER ,BED>)>
<PERFORM ,V?SLEEP>
<RTRUE>)
(<VERB? FIND> <TELL "Why not find a bed to sleep in?" CR>)>>
<GLOBAL THIRST-COUNT 0>
<ROUTINE I-THIRST ()
<COND (<G? <SETG THIRST-COUNT <+ ,THIRST-COUNT 1>> 5>
<SETG THIRST-COUNT 0>
<QUEUE I-THIRST 40>
<SETG WINNER ,PLAYER>
<JIGS-UP
"You pass out from lack of water and die." <>>)
(T
<TELL <GET ,THIRST-TABLE ,THIRST-COUNT> CR>
<QUEUE I-THIRST 10>)>>
<GLOBAL THIRST-TABLE <LTABLE
"Your mouth is getting rather dry."
"You are becoming quite thirsty."
"You are very thirsty now. You'd better have a drink soon."
"Your lips are parched. If you don't get a drink soon you will pass out."
"You are beginning to feel faint from lack of water."
"BUG">>
<GLOBAL HUNGER-COUNT 0>
<ROUTINE I-HUNGER ()
<COND (<G? <SETG HUNGER-COUNT <+ ,HUNGER-COUNT 1>> 5>
<SETG HUNGER-COUNT 0>
<QUEUE I-HUNGER 47>
<SETG WINNER ,PLAYER>
<JIGS-UP
"You pass out from lack of strength and die." <>>)
(T
<TELL <GET ,HUNGER-TABLE ,HUNGER-COUNT> CR>
<QUEUE I-HUNGER 10>)>>
<GLOBAL HUNGER-TABLE <LTABLE
"Your stomach is starting to grumble."
"You are becoming quite hungry."
"You are very hungry now. You'd better have something to eat."
"You're fairly starving. If you don't eat soon you will pass out."
"You are beginning to feel faint from lack of sustenance."
"BUG">>
<ROUTINE I-TIRED ("AUX" (FORG <>))
<COND (<IN? ,WINNER ,BED>
<TELL
"The bed sure is comfortable and you are becoming tired." CR>
<V-SLEEP T>
<RFATAL>)>
<COND (<G? ,LOAD-ALLOWED 10>
<SETG LOAD-ALLOWED <- ,LOAD-ALLOWED 10>>)>
<COND (<G? ,FUMBLE-NUMBER 1>
<SETG FUMBLE-NUMBER <- ,FUMBLE-NUMBER 1>>)>
<SETG FUMBLE-PROB <+ ,FUMBLE-PROB 1>>
<COND (<G? ,SPELL-MAX 1>
<SETG SPELL-MAX <- ,SPELL-MAX 1>>
<COND (<NOT <EQUAL? ,SPELL-ROOM 0>>
<SETG SPELL-ROOM <- ,SPELL-ROOM 1>>)>
<COND (<EQUAL? ,SPELL-ROOM 0>
<SET FORG T>
<FORGET-SPELL ,DISPEL-SPELL>)>)>
<ENABLE <QUEUE I-TIRED 10>>
<SETG AWAKE <+ ,AWAKE 1>>
<COND (<G? ,AWAKE 10>
<TELL
"You drop in your tracks from exhaustion." CR>
<CRLF>
<V-SLEEP>
<RFATAL>)
(ELSE
<TELL "You are " <GET ,TIRED-TELL ,AWAKE>>
<COND (.FORG
<TELL
" and the spells you've memorized are becoming confused">)>
<TELL "." CR>)>>
<GLOBAL AWAKE -1>
<ROUTINE V-DIAGNOSE ()
<COND (<L? ,AWAKE 0>
<TELL "You are wide awake">)
(T <TELL "You are " <GET ,TIRED-TELL ,AWAKE>>)>
<TELL ". You are ">
<TELL <GET ,THIRST-TELL ,THIRST-COUNT>>
<TELL " and ">
<TELL <GET ,HUNGER-TELL ,HUNGER-COUNT>>
<TELL "." CR>>
<GLOBAL HUNGER-TELL <TABLE
"well fed"
"a bit hungry"
"becoming quite hungry"
"very hungry"
"fairly starving"
"faint from lack of food"
"huoo">>
<GLOBAL THIRST-TELL <TABLE
"well hydrated"
"a bit thirsty"
"quite thirsty"
"very thirsty"
"extremely thirsty"
"faint from lack of water">>
<GLOBAL TIRED-TELL <TABLE
"beginning to tire"
"feeling tired"
"worn out"
"feeling wrung out and tired"
"getting more and more tired"
"dead on your feet"
"so tired you can barely put one foot in front of another"
"practically asleep"
"moving only on your last reserves of strength"
"barely able to move your arms"
"unable to keep your eyes open for more than a few moments
at a time">>
<GLOBAL BED-WARNING <>>
<ROUTINE V-SLEEP ("OPTIONAL" (TOLD? <>) "AUX" TILL-TIRED MUNGED?)
<SET TILL-TIRED <- ,MOVES-PER-DAY <- ,MOVES ,LAST-SLEEP>>>
<COND (<EQUAL? ,HERE ,REAL-STAIR ,PIT>
<TELL "To sleep here would be fatal!" CR>)
(<G? .TILL-TIRED 10>
<TELL
"You settle down to sleep, but you really aren't tired, so you
thrash around for a while and then give up." CR>)
(<EQUAL? ,HERE ,ENGINE-ROOM ,CLOSET ,SE-TOWER>
<TELL "You try to sleep but it's too noisy." CR>)
(<AND <EQUAL? ,HERE ,BEDROOM>
<NOT <IN? ,WINNER ,BED>>
<NOT ,BED-WARNING>>
<SETG BED-WARNING T>
<TELL
"You might try getting into the bed first. It would be more comfortable." CR>)
(ELSE
<COND (<AND <G? .TILL-TIRED 0>
<IN? ,WINNER ,BED>
<NOT .TOLD?>>
<TELL
"You're not all that tired, but the bed is very comfortable." CR>)>
<SETG REAL-SPELL-MAX <+ ,REAL-SPELL-MAX 1>>
<SETG SPELL-MAX ,REAL-SPELL-MAX>
<SETG SPELL-ROOM ,SPELL-MAX>
<SETG LAST-SLEEP ,MOVES>
<SETG MOVES <+ ,MOVES ,MOVES-PER-SLEEP>>
<SETG TOD <MOD <+ ,TOD ,MOVES-PER-SLEEP> 128>>
<SETG LOAD-ALLOWED ,LOAD-MAX>
<SETG FUMBLE-NUMBER 7>
<SETG FUMBLE-PROB 8>
<ENABLE <QUEUE I-TIRED ,MOVES-PER-DAY>>
<SETG AWAKE -1>
<FORGET-ALL>
<SET MUNGED? <FSET? ,HERE ,RMUNGBIT>>
<I-MUNG-ROOM <>>
<I-MUNG-ROOM <>>
<I-MUNG-ROOM <>>
<COND (<AND <NOT .MUNGED?>
<FSET? ,HERE ,RMUNGBIT>>
<TELL
"You fall asleep quickly and begin to dream. The dream turns into a
nightmare of decay and desolation, as your surroundings turn grey and
lifeless. You feel a great weight, like a pile of ashes, constricting
your movements, and then you bolt awake!" CR>
<RTRUE>)
(<AND <IN? ,WINNER ,BED>
<NOT <IN? ,BEDPOST-BUTTON ,BED>>
<G? ,CHARM-POINT 0>>
<MOVE ,BEDPOST-BUTTON ,BED>
<TELL
"You fall asleep quickly, the bed being so comfortable. You dream as
well, of this very room. A beautiful damsel, obviously noble, is
standing by the bed holding a scroll in one hand and resting the other
on the bedpost. Turning to block your view, she does something you can't
see. Then she gets in bed and turns out the light, but before she does
you can see she is no longer carrying the scroll... You wake." CR>
<RTRUE>)>
<TELL
"Ah, sleep! It's been a long day, indeed. The rest will do you good.
">
<COND (<IN? ,WINNER ,BED>
<TELL "You make yourself comfortable on the bed">)
(<OUTSIDE? ,HERE>
<TELL "You spread your cloak under the open sky">)
(T <TELL "You spread your cloak on the floor">)>
<TELL " and drift off, renewing your powers
and refreshing your mind ... Time passes as you snore blissfully." CR>
<CRLF>
<COND (<AND <OUTSIDE? ,HERE>
<NOT ,PROTECTED-FROM-EVIL>
<PROB ,MOLESTED>>
<COND (<PROB ,MUNCHED>
<JIGS-UP
"You sleep blissfully, unaware of the evil creatures lurking in the
darkness. Unaware, that is, until one of them sets upon you with nasty
sharp teeth.">
<RFATAL>)
(ELSE
<ROB ,WINNER>
<ROB ,HERE>
<TELL
"You don't sleep too well, and you awake at least once with the feeling
that something has jostled you in the dark." CR>)>)
(<AND <NOT <EQUAL? ,GALLERY-POINT 0>>
<NOT ,GALLERY-DREAM>>
<SETG GALLERY-DREAM T>
<TELL
"After a while, your sleep is disturbed by a strange dream. You are
wandering in a darkened place, for you have no light or other
possessions. You feel that you are being watched! You are surrounded by
faces, their eyes following you. They drift in and out, staring at you
with proud indifference. One face, brightly lit (unlike the rest), draws
you closer and closer. As you touch it, you wake." CR>)
(<AND <NOT <EQUAL? ,GALLERY-POINT 0>> <PROB 70>>
<TELL
"Your sleep is disturbed by the strange dream of an earlier night. You are
in the dark, with no light or other possessions. You are surrounded by
many faces, their eyes following you. The one brightly lit face beckons
you closer and closer. You wake, convinced that the dream holds a message
for you." CR>)
(<AND <NOT ,DOOR-KULCAD>
<NOT ,DOOR-DREAM>
<FSET? ,DOOR-REALITY ,INVISIBLE>>
<SETG DOOR-DREAM T>
<TELL
"You dream of a nondescript room in which a cartoonish figure casually opens
a simple wooden door and ascends the flight of stairs which lies behind. The
scene fades to black, but you awaken in a cold sweat." CR>)
(<AND ,DOOR-KULCAD <NOT ,DOOR-DREAM-2>>
<SETG DOOR-DREAM-2 T>
<TELL
"You dream of climbing in an unfamiliar place. You seem to climb forever,
beyond reason. A fleeting hope arises in you, and you search furiously in
your spell book and possessions for something. After a moment, you become
frantic as you realize that you don't have it! You bolt awake in a cold
sweat." CR>)
(<AND <NOT ,PROTECTED-FROM-EVIL>
<PROB 50>>
<ROB ,HERE ,WARLOCK-TOWER>
<COND (<PROB 50> <ROB ,WINNER ,WARLOCK-TOWER>)>
<COND (<NOT <==? ,HERE <LOC ,WINNER>>>
<ROB <LOC ,WINNER> ,WARLOCK-TOWER>)>
<TELL
"You sleep fitfully. At one point it seems that some evil presence is searching
nearby. The tense feeling passes, but it's replaced by one of foreboding." CR>)
(<PROB 50>
<TELL
"You sleep uneventfully, dreamlessly, and awake refreshed." CR>)
(ELSE
<TELL <PICK-ONE ,DREAMS>>
<TELL " You awaken." CR>)>)>>
<GLOBAL DOOR-DREAM-2 <>>
<GLOBAL DOOR-DREAM <>>
<GLOBAL GALLERY-DREAM <>>
<GLOBAL MOLESTED 20>
<GLOBAL MUNCHED 45>
<GLOBAL DREAMS <LTABLE 0
"You dream of being pursued through a dank cavern. Something is behind
you, something horrible that you can't turn to face. It gets closer and
closer, and you can feel its hot breath on your neck."
"You dream of an idyllic scene in the country, a picnic of wood-sprites
and dryads."
"You dream of Krill. He works feverishly in an evilly lit workroom. He
is working a conjuration of great complexity and power, and the room is
strewn with the noisome components of this horrific casting. Krill chants
words of awful power as he works."
"You dream of dancing penguins in formal dress. One has a particularly
nice tuxedo and a cane with a gold top."
"You dream of a river, slow and muddy. Great grey hippopotami sport there,
bellowing and splashing, and twitching their ears.">>

581
stair.zil Normal file
View File

@ -0,0 +1,581 @@
"STAIR for
ENCHANTER
(c) Copyright 1983 Infocom, Inc. All Rights Reserved.
"
<ROOM LANDING
(IN ROOMS)
(DESC "Landing")
(LDESC
"The wall is cylindrical here, with exits east and west. The eastern one
opens into a dark, enclosed space. The air is thick with acrid smoke, and
black, greasy ashes mar the floor. The mortar and stones of the walls
are stained and crumbly.")
(EAST PER LANDING-EXIT-F)
(WEST TO JUNCTION)
(FLAGS ONBIT RLANDBIT RMUNGBIT)
(PSEUDO "ASHES" ASHES-PSEUDO)>
<GLOBAL STAIR-SOLVED? <>>
<ROUTINE LANDING-EXIT-F ()
<COND (,STAIR-SOLVED?
<TELL
"There is no floor there, and the pit beneath you is of great, if not
infinite, depth. You fall forever.">
<FINISH>)
(ELSE ,ENDLESS-STAIR)>>
<ROOM ENDLESS-STAIR
(IN ROOMS)
(DESC "Winding Stair")
(UP PER ENDLESS-UP)
(DOWN PER ENDLESS-DOWN)
(WEST PER ENDLESS-EXIT-F)
(ACTION ENDLESS-STAIR-F)
(ADVFCN ADVENTURER-DROPS-OUT)
(FLAGS RLANDBIT)
(GLOBAL STAIRS)>
<ROUTINE ADVENTURER-DROPS-OUT ()
<TELL
"The adventurer seems to have dropped out of existence. In a voice that seems
to recede into the void, you hear his final word: \"Restore....\" You muse
about how a mere adventurer might come to possess a spell of such power." CR>
<REMOVE ,ADVENTURER>
<QUEUE I-ADVENTURER 0>
<RTRUE>>
<OBJECT STAIRS
(IN LOCAL-GLOBALS)
(SYNONYM STAIRS STEPS STAIR STAIRWAY)
(ADJECTIVE SPIRAL WINDING)
(DESC "stairs")
(FLAGS NDESCBIT CLIMBBIT TOUCHBIT)
(ACTION STAIRS-F)>
<ROUTINE STAIRS-F ()
<COND (<EQUAL? ,HERE ,JUNCTION>
<TELL
"The stairs are to the east. You'll have to go there to get a look." CR>)
(<AND <EQUAL? ,HERE ,ENDLESS-STAIR>
<VERB? KULCAD>>
<STAIR-DISPEL>)>>
<GLOBAL DROPPED-SOME? <>>
<ROUTINE STAIR-DISPEL ()
<QUEUE I-HUNGER 0>
<QUEUE I-THIRST 0>
<QUEUE I-TIRED 0>
<QUEUE I-TURTLE 0>
;"Stop hunger and thirst. The loser has enough on his mind now..."
<SETG STAIR-SOLVED? T>
<SETG SCORE <+ ,SCORE ,STAIR-POINT>>
<SETG STAIR-POINT 0>
<SETG DROPPED-SOME? <DESTROY-ALL ,WINNER ,REAL-STAIR>>
<MOVE ,FLY-SCROLL ,WINNER>
<TELL
"The stairway begins to dissolve before your eyes, leaving a circular area
with exits east and west, but remarkable mainly for its absence of a floor.
Indeed, you find yourself standing in midair above a deep pit with the
sort of comical look which is found mainly among duped cartoon characters.
Frantically, you grab for the solid bannister">
<COND (,DROPPED-SOME? <TELL ", dropping your heavier possessions
in your desire to save yourself">)>
<TELL "! But the bannister shifts and dissolves
as well, leaving you grasping what appears to be an ornate scroll." CR>
<THIS-IS-IT ,FLY-SCROLL>
<ENABLE <QUEUE I-FALL-FOREVER 5>>
<ENABLE <QUEUE I-FALL -1>>
<DISABLE <INT I-TIRED>>
<GOTO ,REAL-STAIR <>>
<RTRUE>>
<ROUTINE ENDLESS-UP ()
<ENDLESS-UP-DOWN T>
,ENDLESS-STAIR>
<ROUTINE ENDLESS-DOWN ()
<ENDLESS-UP-DOWN <>>
,ENDLESS-STAIR>
<ROUTINE ENDLESS-UP-DOWN (UP?)
<FCLEAR ,ENDLESS-STAIR ,TOUCHBIT>
<STAIR-TO-TABLE ,STAIR-LOC>
<TELL "You ">
<COND (.UP?
<TELL "climb">
<SETG STAIR-LOC <+ ,STAIR-LOC 1>>)
(T
<TELL "descend">
<SETG STAIR-LOC <- ,STAIR-LOC 1>>)>
<TELL " the stairs, making one circuit of the tower." CR>
<TABLE-TO-STAIR ,STAIR-LOC>>
<ROUTINE ENDLESS-STAIR-F (RARG)
<COND (<==? .RARG ,M-LOOK>
<TELL
"This is a winding stair, stretching up and down out of sight. The walls are
mossy and damp.">
<COND (<==? ,STAIR-LOC ,STAIR-START>
<TELL " An exit leads west to a landing.">)>
<CRLF>)
(<AND <EQUAL? .RARG ,M-ENTER>
<NOT <EQUAL? ,WINNER ,PLAYER>>
<NOT <IN? ,WINNER <LOC ,PLAYER>>>>
<REMOVE ,WINNER>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<RFALSE>)>>
<ROUTINE ENDLESS-EXIT-F ()
<COND (<==? ,STAIR-LOC ,STAIR-START> ,LANDING)
(T
<TELL "You can't go that way." CR>
<RFALSE>)>>
<ROUTINE STAIR-TO-TABLE (SLOC
"AUX" TBL (CNT 0)
(F <FIRST? ,ENDLESS-STAIR>) N)
<SET TBL ,STAIR-TABLE>
<REPEAT ()
<COND (.F <SET N <NEXT? .F>>)
(ELSE <RETURN>)>
<COND (<EQUAL? .F ,WINNER>)
(<FSET? .F ,TAKEBIT>
<REPEAT ()
<COND (<==? <GET .TBL .CNT> 0>
<PUT .TBL .CNT .SLOC>
<PUT .TBL <+ .CNT 1> .F>
<SET CNT <+ .CNT 2>>
<REMOVE .F>
<RETURN>)
(ELSE
<SET CNT <+ .CNT 2>>)>>)>
<SET F .N>>>
<ROUTINE TABLE-TO-STAIR (SLOC
"AUX" TBL (CNT 0))
<SET TBL ,STAIR-TABLE>
<REPEAT ()
<COND (<NOT <L? .CNT ,STAIR-TABLE-LENGTH>>
<RETURN>)
(<==? <GET .TBL .CNT> .SLOC>
<PUT .TBL .CNT 0>
<MOVE <GET .TBL <+ .CNT 1>> ,ENDLESS-STAIR>)>
<SET CNT <+ .CNT 2>>>>
<GLOBAL STAIR-LOC 10000>
<CONSTANT STAIR-START 10000>
<CONSTANT STAIR-TABLE-LENGTH 70> ;"currently 33 takeable objects"
<GLOBAL STAIR-TABLE ;"length should be 2*number of takeable objects"
<TABLE 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0>>
\
<ROOM REAL-STAIR
(IN ROOMS)
(DESC "Winding Stair")
(LDESC
"This is a circular room with no floor. There are exits east and west.
A crude drawing of stairsteps graces the ceiling. Downward is only
darkness.")
(WEST PER REAL-STAIR-EXIT-F) ;"LANDING"
(EAST PER REAL-STAIR-EXIT-F) ;"WARLOCK-TOWER"
(DOWN PER REAL-STAIR-EXIT-F) ;"PIT"
(FLAGS RLANDBIT)
(ACTION PIT-F)
(GLOBAL STAIRS)>
<ROUTINE REAL-STAIR-EXIT-F ()
<SETG FALL-COUNT 0>
<COND (,FLYING?
<TELL "Effortlessly, you float ">
<COND (<==? ,PRSO ,P?DOWN>
<SETG FALL-COUNT 1>
<TELL "downward." CR>
<DESTROY-ALL ,HERE ,PIT>
,PIT)
(<==? ,PRSO ,P?EAST>
<SETG SCORE <+ ,SCORE ,FLY-POINT>>
<SETG FLY-POINT 0>
<STOP-FLYING>
<TELL "eastward and settle to the ground." CR>
,WARLOCK-TOWER)
(<==? ,PRSO ,P?WEST>
<STOP-FLYING>
<TELL "westward and settle to the ground." CR>
,LANDING)>)
(ELSE ;"I'm not sure this can happen"
<TELL
"You must think you can fly." CR>
<RFALSE>)>>
<ROOM PIT
(IN ROOMS)
(DESC "Bottomless Pit")
(LDESC
"This is a circular pit of apparently infinite depth. The walls are of
crudely dressed stone. No floor is visible.")
(UP PER PIT-EXIT-F)
(DOWN PER PIT-EXIT-F)
(ACTION PIT-F)
(FLAGS RLANDBIT ONBIT)>
<ROUTINE PIT-EXIT-F ()
<COND (,FLYING?
<TELL "Effortlessly, you float ">
<COND (<==? ,PRSO ,P?DOWN>
<SETG FALL-COUNT <+ ,FALL-COUNT 1>>
<TELL "downward." CR>)
(T
<SETG FALL-COUNT <- ,FALL-COUNT 1>>
<TELL "upward." CR>)>
<COND (<==? ,FALL-COUNT 0>
<DESTROY-ALL ,HERE ,REAL-STAIR>
,REAL-STAIR)
(ELSE
<DESTROY-ALL ,HERE ,PIT>
<FCLEAR ,PIT ,TOUCHBIT>
,PIT)>)
(ELSE
<TELL
"You must think you can fly." CR>
<RFALSE>)>>
<ROUTINE PIT-F ("OPTIONAL" RARG)
<COND (<==? .RARG ,M-BEG>
<COND (<AND <VERB? DROP> <HELD? ,PRSO>>
<FSET ,PRSO ,NDESCBIT>
<FCLEAR ,PRSO ,TAKEBIT>
<TELL
"The " D ,PRSO " falls out of sight below you." CR>)
(<AND <VERB? TAKE EXAMINE> <NOT <HELD? ,PRSO>>>
<TELL
"The " D ,PRSO " is out of reach below you." CR>)>)>>
<GLOBAL FALL-COUNT 0>
<ROUTINE STOP-FLYING ()
<SETG FLYING? <>>
<QUEUE I-FALL 0>
<QUEUE I-FALL-FOREVER 0>
<QUEUE I-FLY 0>
<RTRUE>>
<ROUTINE I-FALL ()
<COND (,FLYING? <RTRUE>)>
<SETG FALL-COUNT <+ ,FALL-COUNT 1>>
<TELL
"You plummet downward, deeper into the pit, but the bottom is still not
visible.">
<COND (,DROPPED-SOME?
<TELL " Far ahead of you fall your former possessions." CR>)>
<RTRUE>>
<ROUTINE I-FALL-FOREVER ()
<TELL
"You plummet deeper and deeper into the pit! Oddly enough, you never
seem to hit bottom. After many years, only tattered remnants of you
remain, still falling." CR>
<FINISH>>
<ROUTINE DESTROY-ALL (WHO WHERE "AUX" N X (DEST? <>))
<SET X <FIRST? .WHO>>
<REPEAT ()
<COND (<NOT .X> <RETURN .DEST?>)>
<SET N <NEXT? .X>>
<COND (<AND <NOT <EQUAL? .X ,WINNER>>
<G? <GETP .X ,P?SIZE> 4>>
<REMOVE-ALL .X>
<MOVE .X .WHERE>
<FSET .X ,NDESCBIT>
<FCLEAR .X ,TAKEBIT>
<SET DEST? T>)>
<SET X .N>>>
<ROUTINE REMOVE-ALL (WHAT "AUX" N X)
<SET X <FIRST? .WHAT>>
<REPEAT ()
<COND (<NOT .X> <RETURN>)>
<SET N <NEXT? .X>>
<REMOVE .X>
<SET X .N>>>
\
<ROOM WARLOCK-TOWER
(IN ROOMS)
(DESC "Warlock's Tower")
(LDESC
"This is a room carved out of black basalt, eerily lit by flickering
fires and the dim glow of magic.")
(DOWN "The pit yawns before you, and the izyuk spell has worn off!")
(WEST "The pit yawns before you, and the izyuk spell has worn off!")
(FLAGS RLANDBIT ONBIT)
(ACTION WARLOCK-TOWER-F)>
<ROUTINE WARLOCK-TOWER-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<FSET ,WARLOCK-TOWER ,TOUCHBIT>
<TELL
"As you enter, you realize that this is Krill's secret chamber,
protected by powerful illusions now broken by your skills. Before you
stands Krill, engaged in the casting of some complex and horrific magic.
Krill turns to face you, surprised and annoyed by your intrusion. You
have seen him before: cloaked in black, he sacrificed you at the Altar
before his hoard. His yellow eyes glisten and he breathes deeply. In a
voice as deep as the great caverns of the earth, he speaks: \"Fool!
Parlor magician! You dare to defile my chamber with your worm-like
presence. I shall not waste words with you. Goodbye, spell-monger!\"">
<COND (<EQUAL? ,HASTED? ,PLAYER>
<TELL "
He pauses. \"Ah! You seem to be in a hurry, campfire-conjurer! Slow down
and enjoy the show!\" He waves his hand, and you are robbed of your energy.">)>
<TELL "
Krill snaps his fingers loudly, and a giant dragon appears, breathing gouts
of flame. He moves ever closer, red eyes bulging with malice!" CR CR>
<MOVE ,DRAGON ,HERE>
<ENABLE <QUEUE I-DRAGON 2>>)>>
<OBJECT KRILL
(IN WARLOCK-TOWER)
(DESC "warlock Krill")
(LDESC
"The warlock Krill, robed in black, stands before you, in eager anticipation
of your death.")
(SYNONYM KRILL WARLOCK)
(FLAGS VICBIT)
(ACTION KRILL-F)>
<OBJECT GLOBAL-KRILL
(IN GLOBAL-OBJECTS)
(DESC "warlock Krill")
(SYNONYM KRILL WARLOCK)
(ACTION GLOBAL-KRILL-F)>
<ROUTINE GLOBAL-KRILL-F ()
<COND (<VERB? GUNCHO HELLO>
<TELL
"Krill is not here, and lucky for you." CR>)
(<VERB? ZIFMIA>
<JIGS-UP
"The warlock Krill appears before you, staring in astonishment. \"Who is
it that disturbs my slumber? Oh, it is only you, secondary-school sorcerer!\"
He points a finger and chants a spell. You are cast into the endless void!"
<>>)
(<VERB? EXAMINE WHO>
<TELL
"Krill is an evil warlock who was banished from the Circle of Enchanters.
His malice was thought to be forever ended, his reign of terror a dim and
frightful memory. But he has returned, and his power must be destroyed lest
the Circle's great works be overthrown." CR>)
(T
<GLOBAL-NOT-HERE-PRINT ,GLOBAL-KRILL>
<RTRUE>)>>
<OBJECT DRAGON
(DESC "dragon")
(SYNONYM DRAGON FLAME FLAMES)
(LDESC
"A dragon, spouting flame, approaches!")
(FLAGS VICTIM)
(ACTION DRAGON-F)>
<ROUTINE DRAGON-F ()
<COND (<VERB? GONDAR>
<TELL
"The dragon's flame is doused in a torrent of water as you cast the
gondar spell! He disappears with a torturous scream.">
<REMOVE ,DRAGON>
<SECOND-ACT>)
(<VERB? VAXUM NITFOL>
<TELL
"The dragon pauses and roars out a benevolent greeting, which, to your
chagrin, fries you to a delicate crisp." CR>
<FINISH>)
(<VERB? GUNCHO>
<TELL
"Unfortunately, the dragon is practically on top of you, and before you
can finish saying the guncho spell he blasts you to beyond well-done." CR>
<FINISH>)
(<VERB? CLEESH>
<TELL
"The dragon, being reptilian himself, is unaffected." CR>)
(<VERB? KILL ATTACK MUNG>
<TELL
"Your strength isn't nearly enough to best the dragon!" CR>)>>
<ROUTINE SECOND-ACT ("OPTIONAL" (GUNCH <>))
<TELL CR
"Krill ">
<COND (.GUNCH <TELL "seems shaken, but regains his composure.">)
(T <TELL "seems to be somewhat amused.">)>
<TELL CR CR
"\"A fine spell, wizard-worm, but your luck has ended!\" With another snap
of his fingers, he summons a being whose essence is evil. It has a shape which
is masked by its blackness and exudes a foul, fetid odor. In its hand
is a large battle axe. At a signal from Krill, it advances!" CR>
<ENABLE <QUEUE I-SHAPE 2>>
<MOVE ,SHAPE ,HERE>>
<GLOBAL NO-LONGER-PROTECTED
"Krill looks your way and spits: \"You were fortunate, wizard-worm, to have
survived our last encounter. But your trivial spells of protection will not
save you now!\"">
<ROUTINE I-DRAGON ()
<COND (<IN? ,DRAGON ,HERE>
<COND (<OR <==? ,DEATH-CHEATED ,ME>
,PROTECTED-FROM-EVIL>
<TELL ,NO-LONGER-PROTECTED CR>)>
<TELL
"The dragon engulfs you in flame. As you perish, you can hear Krill's
mocking laughter." CR>
<FINISH>)>
<QUEUE I-DRAGON 0>
<RTRUE>>
<OBJECT SHAPE
(DESC "monster")
(SYNONYM MONSTER SHAPE BEING)
(ACTION SHAPE-F)>
<ROUTINE SHAPE-F ()
<COND (<VERB? VAXUM>
<TELL
"The monster hesitates, stops, smiles, and disappears." CR>
<THIRD-ACT>)
(<VERB? CLEESH>
<TELL
"The monster hesitates, trembles, then turns into a newt. Poor monster. Its
battle axe, now unsupported, falls on it, slicing it neatly in half." CR>
<THIRD-ACT>)
(<VERB? NITFOL>
<TELL
"\"Yum, yum!\" are the last words you hear." CR>
<FINISH>)
(<VERB? GUNCHO>
<TELL
"The monster pauses for a moment as you begin the guncho spell, then swiftly
cleaves you with its axe before you can finish!" CR>
<FINISH>)
(<VERB? KILL ATTACK MUNG>
<TELL
"Your effort is useless. It is still coming closer!" CR>)>>
<ROUTINE THIRD-ACT ()
<REMOVE ,SHAPE>
<TELL CR
"Krill seems to be losing patience.|
|
\"I am through playing games, carnival-clown! You shall return to your
Circle, but I am afraid that all the little pieces will prove hard to
reassemble!\" He laughs hideously and starts a guttural chant which
shakes the very tower." CR>
<SETG KRILL-KILL T>
<ENABLE <QUEUE I-BYE 2>>
<RTRUE>>
<GLOBAL KRILL-KILL <>>
<ROUTINE I-SHAPE ()
<COND (<IN? ,SHAPE ,HERE>
<COND (<OR <==? ,DEATH-CHEATED ,ME>
,PROTECTED-FROM-EVIL>
<TELL ,NO-LONGER-PROTECTED CR>)>
<TELL
"The monster hits you with its battle axe! You fall, dead, as the
laughter of Krill reaches a crescendo!" CR>
<FINISH>)>
<QUEUE I-SHAPE 0>
<RTRUE>>
<ROUTINE I-BYE ()
<COND (<EQUAL? ,HERE ,WARLOCK-TOWER>
<TELL CR
"Krill finishes his spell and his harsh laughter is all that remains!
You are in a void, without sight, sound, or sensation. You scream at the
top of your lungs, but nothing happens. You break into a cold sweat as you
ponder the infinite, beyond all help and hope!" CR>
<FINISH>)>>
<ROUTINE KRILL-F ()
<COND (<VERB? EXAMINE>
<TELL
"Krill is not a pretty sight! Enough said." CR>)
(<AND <VERB? GUNCHO> ,KRILL-KILL>
<TELL
"Krill recoils as he hears the first words of the guncho spell. For a few
seconds he continues with the spell he was casting, trying to finish before
you. He fumbles some syllables! Then he steps
back and, with his hands outstretched toward you, lets out a blood-curdling
scream. His face twisted, and his body vibrating with the effort of resisting
the enchantment, he utters a spell
of power, and is gone! After a quiet moment, a rumble begins deep in the
earth. It strengthens as the tower starts to sway. The floor gives way
beneath you and you tumble down towards the sea ... then you are surrounded
by a burst of light.|
|
You realize that you are with the Circle. The Eldest of the Circle, Belboz,
rises and speaks: \"The evil of Krill is ended this day. From beyond hope,
you have proved yourself great and worthy. Our hearts are gladdened at your
return.\" A chair appears at his right hand and he motions for you to
sit beside him. He smiles warmly. \"Join with us,\" he says, \"and tell us
of your quest!\"|
|
Here ends the first chapter of the Enchanter saga, in which, by virtue of your
skills, you have joined the Circle of Enchanters. Further adventures await you
as the Enchanter series continues." CR CR>
<SETG SCORE <+ ,SCORE ,WARLOCK-POINT>>
<USL>
<FINISH>)
(<VERB? CLEESH>
<TELL
"Krill shimmers for a moment, then laughs heartily. The laugh sounds
vaguely like a croak, but perhaps it is only your imagination." CR>)
(<VERB? VAXUM>
<TELL
"The spell seems to have no influence over Krill. You wouldn't much
like to see him smile, anyway." CR>)
(<VERB? GUNCHO>
<TELL
"The look of surprise on Krill's face as you recite the first few
syllables of the guncho spell is exceeded only by your look of disappointment
as you are "
<COND (<IN? ,SHAPE ,HERE> "sliced into bits by the monster!")
(T "incinerated by the dragon!")>
CR>
<FINISH>)
(<VERB? HELLO>
<TELL "Krill grins and the sight is ghastly." CR>)>>
<ROUTINE I-MUNG-ROOM ("OPTIONAL" (TELL? T) "AUX" RM TBL)
<ENABLE <QUEUE I-MUNG-ROOM 20>>
<SET TBL ,MUNG-ROOM-TABLE>
<REPEAT ()
<COND (<SET RM <GET .TBL 0>>
<COND (<NOT <FSET? .RM ,RMUNGBIT>>
<RETURN>)>
<SET TBL <REST .TBL 2>>)
(T <RETURN>)>>
<COND (.RM
<FSET .RM ,RMUNGBIT>
<FCLEAR .RM ,TOUCHBIT>
<COND (<AND .TELL? <==? .RM ,HERE>>
<TELL
"Suddenly, you sense a great wind of evil magic blowing around you. You
are weighed down by its power, and only your sorcerous training permits
you to withstand it. When you regain your composure, your surroundings
have changed." CR>)>)>
.RM>

738
syntax.zil Normal file
View File

@ -0,0 +1,738 @@
"SYNTAX for
ENCHANTER
(c) Copyright 1983 Infocom, Inc. All Rights Reserved.
"
"SUBTITLE VOCABULARY"
<BUZZ A AN THE IS AND OF THEN ALL ONE BUT EXCEPT \. \, \" YES NO Y
PRY PLEASE LINE LINES YOU SOME>
<SYNONYM BETWEEN GOING>
<SYNONYM WITH USING THROUGH THRU>
<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 $VERIFY OBJECT = 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) = V-ATTACK PRE-HIT>
<SYNTAX ATTACK
OBJECT (FIND VILLAIN) (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
= V-ATTACK PRE-HIT>
<SYNONYM ATTACK FIGHT HURT INJURE HIT>
<SYNTAX BACK = V-BACK>
<SYNTAX BOARD OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM)
= V-BOARD PRE-BOARD>
<SYNTAX BURN
OBJECT (FIND BURNBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH
OBJECT (FIND FLAMEBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE)
= V-BURN PRE-BURN>
<SYNTAX BURN
DOWN
OBJECT (FIND BURNBIT) (HELD CARRIED ON-GROUND IN-ROOM)
WITH
OBJECT (FIND FLAMEBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE)
= V-BURN PRE-BURN>
<SYNONYM BURN IGNITE>
<SYNTAX CLIMB ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
<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>
<SYNONYM CLIMB SIT SCALE>
<SYNTAX LIE DOWN OBJECT (FIND RLANDBIT) = V-LIE-DOWN>
<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>
<SYNTAX CUT WITH 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 WITH 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 (HELD CARRIED ON-GROUND IN-ROOM)
= V-DRINK>
<SYNTAX DRINK FROM OBJECT (HELD CARRIED) = V-DRINK-FROM>
<SYNONYM DRINK SIP 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 EXIT>
<SYNTAX LEAN ON OBJECT (HELD HAVE) = V-LEAN-ON>
<SYNTAX EAT
OBJECT (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 ESCAPE OBJECT = V-ESCAPE>
<SYNTAX ESCAPE FROM OBJECT = V-ESCAPE>
<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 INSPECT DESCRIBE WHAT WHATS>
<SYNTAX WHO OBJECT = V-WHO>
<SYNTAX EXORCISE OBJECT = V-EXORCISE>
<SYNTAX EXORCISE OUT OBJECT (FIND VILLAIN) = V-EXORCISE>
<SYNTAX EXORCISE AWAY OBJECT (FIND VILLAIN) = V-EXORCISE>
<SYNONYM EXORCISE BANISH 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 FILL OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
AT OBJECT = 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 FORGET OBJECT = V-FORGET>
<SYNONYM FORGET UNLEARN UNMEMORIZE>
<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>
<SYNTAX KILL OBJECT (FIND VILLAIN) (ON-GROUND IN-ROOM) = V-KILL PRE-HIT>
<SYNTAX KILL
OBJECT (FIND VILLAIN) (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
= V-KILL PRE-HIT>
<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 PRE-HIT>
<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)
= 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 RLANDBIT) = 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 OUT 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>
<SYNTAX LOOK OBJECT = V-CHASTISE>
<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 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) = V-MUNG>
<SYNTAX DESTROY
OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH
OBJECT (HELD CARRIED TAKE)
= V-MUNG>
<SYNTAX DESTROY
DOWN
OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
WITH
OBJECT (HELD CARRIED TAKE)
= V-MUNG>
<SYNONYM DESTROY DAMAGE BREAK HATCH CRACK 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 POINT AT OBJECT = V-POINT>
<SYNTAX POINT TO OBJECT = V-POINT>
<SYNONYM POINT GESTURE>
<SYNTAX POKE
OBJECT (FIND VILLAIN) (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
= V-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>
<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 LAY>
<SYNTAX HIDE = V-HIDE>
<SYNTAX HIDE OBJECT (HELD HAVE) = V-HIDE>
<SYNTAX HIDE OBJECT (HELD HAVE) FROM OBJECT = V-HIDE>
<SYNONYM HIDE CONCEAL>
<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 REACH IN OBJECT (ON-GROUND IN-ROOM) = V-REACH-IN>
<SYNTAX REPENT = V-REPENT>
<SYNTAX TOUCH OBJECT = V-RUB>
<SYNTAX TOUCH OBJECT WITH OBJECT = V-RUB>
<SYNONYM TOUCH FEEL PAT PET>
<SYNTAX SCRIPT = V-SCRIPT>
<SYNTAX UNSCRIPT = V-UNSCRIPT>
<SYNTAX SEND FOR OBJECT = V-SEND>
<SYNTAX SHAKE OBJECT = V-SHAKE>
<SYNTAX SLEEP = V-SLEEP>
<SYNTAX SLEEP IN OBJECT (IN-ROOM ON-GROUND) = V-BOARD>
<SYNTAX SLEEP ON OBJECT (IN-ROOM ON-GROUND) = V-BOARD>
<SYNONYM SLEEP NAP SNOOZE>
<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 RLANDBIT) = V-STAND>
<SYNTAX STAY = V-STAY>
<SYNTAX STAY OBJECT = V-STAY>
<SYNTAX STRIKE
OBJECT (FIND VICBIT) (ON-GROUND IN-ROOM)
WITH
OBJECT (FIND WEAPONBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE)
= V-ATTACK PRE-HIT>
<SYNTAX STRIKE
OBJECT (FIND VICBIT) (ON-GROUND IN-ROOM)
= V-ATTACK PRE-HIT ;*>
<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 OFF OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
<SYNTAX TAKE UP OBJECT (FIND RLANDBIT) = V-STAND>
<SYNTAX TAKE
OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY)
OUT
OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX TAKE
OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY)
OFF
OBJECT
= V-TAKE PRE-TAKE>
<SYNTAX TAKE
OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY)
FROM
OBJECT
= V-TAKE PRE-TAKE>
<SYNONYM TAKE GRAB GET HOLD CARRY REMOVE>
<SYNTAX TELL OBJECT (FIND VICBIT) (IN-ROOM) = V-TELL>
<SYNTAX BRING OBJECT OBJECT = V-BRING PRE-BRING>
<SYNTAX TAKE OBJECT OBJECT = V-BRING PRE-BRING>
<SYNTAX ASK OBJECT FOR OBJECT = V-ASK-FOR>
<SYNTAX SAY TO OBJECT (FIND VICBIT) (IN-ROOM) = V-TELL>
<SYNTAX SAY = V-SAY>
<SYNONYM SAY TALK CALL>
<SYNTAX THANK OBJECT = V-THANK>
<SYNTAX THANK = V-THANK>
<SYNONYM THANK THANKS>
<SYNTAX THROW
OBJECT (HELD CARRIED HAVE)
AT
OBJECT (ON-GROUND IN-ROOM)
= V-THROW ;*>
<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)
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 TO OBJECT = V-TURN>
<SYNTAX TURN OBJECT FOR OBJECT = V-TURN>
<SYNTAX TURN OBJECT = V-TURN>
<SYNTAX TURN
OBJECT ( HELD CARRIED ON-GROUND IN-ROOM)
WITH
OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE)
= V-TURN>
<SYNTAX TURN ON
OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= V-LAMP-ON>
<SYNTAX TURN OFF
OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
= 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>
<SYNTAX WAIT FOR OBJECT = V-WAIT-FOR>
<SYNONYM WAIT Z>
<SYNTAX WAKE OBJECT = V-ALARM ;*>
<SYNTAX WAKE UP OBJECT = 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 FLY OBJECT = V-WALK>
<SYNTAX WAVE OBJECT (HELD CARRIED) = V-WAVE>
<SYNTAX WAVE AT OBJECT = V-WAVE-AT>
<SYNTAX WAVE TO OBJECT = V-WAVE-AT>
<SYNTAX YELL AT OBJECT = V-WAVE-AT>
<SYNTAX WAVE OBJECT (HELD CARRIED) AT OBJECT = V-WAVE-AT>
<SYNONYM WAVE MOTION BRANDISH BECKON>
<SYNTAX WEAR OBJECT = V-WEAR>
<SYNTAX WIND OBJECT = V-WIND>
<SYNTAX WIND UP OBJECT = V-WIND>
<SYNTAX YELL = V-YELL>
<SYNONYM YELL SCREAM SHOUT>
<SYNTAX ZORK = V-ZORK>
<SYNTAX SHOW OBJECT TO OBJECT = V-SHOW>
<SYNTAX SHOW OBJECT OBJECT = V-SSHOW PRE-SSHOW>
<SYNTAX MAKE ON OBJECT = V-DRAW-ON>
<SYNTAX MAKE ON OBJECT WITH OBJECT = V-DRAW-ON>
<SYNTAX MAKE FROM OBJECT (MANY) = V-MAKE-LINE>
<SYNTAX MAKE FROM OBJECT (MANY) WITH OBJECT = V-MAKE-LINE>
<SYNTAX MAKE BETWEEN OBJECT (MANY) = V-MAKE-LINE>
<SYNTAX MAKE BETWEEN OBJECT (MANY) WITH OBJECT = V-MAKE-LINE>
<SYNTAX MAKE FROM OBJECT TO OBJECT = V-MAKE-LINE-TO>
<SYNTAX MAKE BETWEEN OBJECT TO OBJECT = V-MAKE-LINE-TO>
<SYNONYM MAKE DRAW>
<SYNTAX CONNECT OBJECT (MANY) = V-MAKE-LINE>
<SYNTAX CONNECT OBJECT (MANY) WITH OBJECT = V-MAKE-LINE>
<SYNTAX CONNECT OBJECT TO OBJECT = V-MAKE-LINE-TO>
<SYNTAX ERASE FROM OBJECT (MANY) = V-ERASE-LINE>
<SYNTAX ERASE FROM OBJECT (MANY) WITH OBJECT = V-ERASE-LINE>
<SYNTAX ERASE OUT OBJECT (MANY) = V-ERASE-LINE>
<SYNTAX ERASE OUT OBJECT (MANY) WITH OBJECT = V-ERASE-LINE>
<SYNTAX ERASE BETWEEN OBJECT (MANY) = V-ERASE-LINE>
<SYNTAX ERASE BETWEEN OBJECT (MANY) WITH OBJECT = V-ERASE-LINE>
<SYNTAX ERASE FROM OBJECT TO OBJECT = V-ERASE-LINE-TO>
<SYNTAX ERASE BETWEEN OBJECT TO OBJECT = V-ERASE-LINE-TO>
<SYNTAX ERASE OBJECT (MANY) = V-ERASE-LINE>
<SYNONYM ERASE DISCONNECT RUB>
;"Simple questions"
;"<SYNTAX WHAT ...> WHAT is a synonym of EXAMINE"
;"<SYNTAX WHERE ...> WHERE is a synonym of FIND"
"SPELL SYNTAXES"
<SYNTAX CAST OBJECT = V-CAST>
<SYNTAX CAST OBJECT ON OBJECT = V-CAST>
<SYNTAX CAST OBJECT AT OBJECT = V-CAST>
<SYNONYM CAST INCANT>
<SYNTAX LEARN OBJECT (MANY) = V-LEARN>
<SYNTAX MEMORIZE OBJECT (MANY) = V-MEMORIZE>
<SYNTAX SPELLS = V-SPELLS> ;"inventory of memorized spells"
<SYNTAX GONDAR OBJECT = V-GONDAR PRE-QUICK-CAST> ;"quench flame"
<SYNTAX GNUSTO OBJECT = V-GNUSTO PRE-QUICK-CAST> ;"write magic"
<SYNTAX FROTZ OBJECT = V-FROTZ PRE-QUICK-CAST> ;"light"
<SYNTAX OZMOO OBJECT = V-OZMOO PRE-QUICK-CAST> ;"resurrect"
<SYNTAX ZIFMIA OBJECT = V-ZIFMIA PRE-QUICK-CAST> ;"summon"
<SYNTAX VAXUM OBJECT = V-VAXUM PRE-QUICK-CAST> ;"charm"
<SYNTAX REZROV OBJECT = V-REZROV PRE-QUICK-CAST> ;"open"
<SYNTAX NITFOL OBJECT = V-NITFOL PRE-QUICK-CAST> ;"talk to animal"
<SYNTAX EXEX OBJECT = V-EXEX PRE-QUICK-CAST> ;"haste"
<SYNTAX KULCAD OBJECT = V-KULCAD PRE-QUICK-CAST> ;"dispel"
<SYNTAX MELBOR OBJECT = V-MELBOR PRE-QUICK-CAST> ;"protection"
<SYNTAX BLORB OBJECT = V-BLORB PRE-QUICK-CAST> ;"strong-box"
<SYNTAX GUNCHO OBJECT = V-GUNCHO PRE-QUICK-CAST> ;"banish"
<SYNTAX KREBF = V-KREBF PRE-QUICK-CAST> ;"repair damage"
<SYNTAX KREBF OBJECT = V-KREBF PRE-QUICK-CAST>
<SYNTAX CLEESH OBJECT = V-CLEESH PRE-QUICK-CAST> ;"change into newt"
<SYNTAX IZYUK OBJECT = V-IZYUK PRE-QUICK-CAST> ;"fly like a bird"
<SYNTAX FILFRE = V-FILFRE PRE-QUICK-CAST> ;"gratuitous fireworks"
<SYNTAX FILFRE OBJECT = V-FILFRE PRE-QUICK-CAST>
<SYNTAX TIME = V-TIME>
<SYNONYM TIME T>
<SYNTAX WRITE WITH OBJECT = V-WRITE-WITH>
<SYNTAX WRITE ON OBJECT = V-WRITE-ON>
<SYNTAX WRITE ON OBJECT WITH OBJECT = V-WRITE-ON>
<SYNTAX SHARPEN OBJECT WITH OBJECT (FIND TOOLBIT) (HAVE) = V-SHARPEN>
<SYNONYM SHARPEN HONE>
<SYNTAX AVOID OBJECT = V-AVOID>
<SYNTAX WALK UNDER OBJECT = V-AVOID>
<SYNTAX WALK BEHIND OBJECT = V-AVOID>
<SYNTAX GAG OBJECT WITH OBJECT = V-GAG>
<SYNTAX GROSS OUT OBJECT = V-GROSS-OUT>

368
temple.zil Normal file
View File

@ -0,0 +1,368 @@
"TEMPLE for
ENCHANTER
Copyright 1983 Infocom, Inc. All Rights Reserved.
"
<ROOM TEMPLE
(IN ROOMS)
(DESC "Temple")
(LDESC
"This is the interior of a huge temple of primitive construction. A few
flickering torches cast a sallow illumination over the altar, which, atop
a row of stairs, 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. Two open doorways lead out of the
temple to the east and west, while two wooden doors stand at the north and
south. A mass of hunched figures in the temple are chanting a haunting tune.
They don't seem interested in your presence.")
(NORTH TO TOWER-N IF TOWER-N-DOOR IS OPEN)
(SOUTH TO TOWER-S IF TOWER-S-DOOR IS OPEN)
(WEST TO COURTYARD-3)
(EAST TO COURTYARD-7)
(UP TO ALTAR)
(FLAGS RLANDBIT ONBIT)
(GLOBAL STAIRS TOWER-N-DOOR TOWER-S-DOOR STATUE TEMPLE-OBJ)
(ACTION TEMPLE-F)
(PSEUDO "ALTAR" ALTAR-PSEUDO)>
<ROUTINE ALTAR-PSEUDO ()
<COND (<VERB? EXAMINE>
<TELL
"A close examination of the altar nearly sickens you. It fairly screams with
the memory of the horrors it has seen since the coming of Krill. Its original
white marble has been crusted with blood and desecrated by the minions of the
evil Warlock." CR>)
(<AND <EQUAL? ,HERE ,TEMPLE>
<VERB? CLIMB-UP CLIMB-FOO CLIMB-ON WALK-TO>>
<DO-WALK ,P?UP>
<RTRUE>)
(<VERB? CLIMB-ON WALK-TO RUB CLIMB-UP CLIMB-FOO>
<TELL
"There is nothing you would like less than nearing the altar." CR>)>>
<OBJECT STATUE
(IN LOCAL-GLOBALS)
(DESC "statue")
(SYNONYM STATUE TALONS FANGS)
(ADJECTIVE RAZOR-SHARP DRIPPING ENORMOUS)
(FLAGS NDESCBIT)
(ACTION STATUE-F)>
<ROUTINE STATUE-F ()
<COND (<VERB? EXAMINE>
<TELL
"It is an enormous statue of a loathsome creature, dark and vile, with
dripping fangs and razor-sharp talons. It appears almost to be motioning
with its outstretched talons for you to approach." CR>)
(<VERB? RUB>
<TELL
"Your sensibilities are offended by the very idea." CR>)>>
<OBJECT GANG-OF-N
(IN TEMPLE)
(DESC "huddled mass, yearning to drink blood")
(SYNONYM MASS FIGURE SHAPES MEN)
(ADJECTIVE HUDDLED HAIRY)
(FLAGS NDESCBIT VICBIT)
(ACTION GANG-OF-N-F)>
<ROUTINE GANG-OF-N-F ()
<COND (<VERB? GUNCHO>
<TELL
"The majority of the mass of figures fades away into nothingness.
Enough remain, however, to continue the service (or whatever
it is)." CR>)
(<VERB? FROTZ>
<TELL
"A few select figures suddenly start to give off light, to the horror of
the remaining ones, who rip them to shreds in an instant." CR>)
(<VERB? VAXUM>
<TELL
"Nothing seems to have happened, although a few of the figures seem
to be chanting in a less guttural tone." CR>)
(<VERB? ZIFMIA>
<TELL
"Something appears to have snapped. The figures, who were so peacefully
ignoring you, now seem to have taken a different, and less pleasant, tack." CR>
<TAKE-TO-TOWER>)
(<VERB? CLEESH>
<TELL
"Some of the figures hunch down even more and scuttle off." CR>)>>
<ROOM ALTAR
(IN ROOMS)
(DESC "Sacrificial Altar")
(LDESC
"This is the altar of the temple. Acrid smoke fills the air, and a feeling
of lurking evil is all around. A low droning, just at the lowest end of
your perception, causes your hair to stand on end. Behind the altar is an
enormous statue of a demon which reaches toward you with dripping fangs
and razor-sharp talons. The fangs and talons are blood-red. In the
temple below is a mass of hunched figures, chanting in hideous tones.")
(DOWN TO TEMPLE)
(FLAGS RLANDBIT ONBIT RMUNGBIT)
(GLOBAL STAIRS STATUE VOICES)
(PSEUDO "ALTAR" ALTAR-PSEUDO)>
<ROOM TOWER-N
(IN ROOMS)
(DESC "Cell")
(LDESC
"This is a small prison cell in the north tower of the temple. Hideous shapes
can be seen through the iron-barred window in the prison door. From the temple,
a blood-curdling chant can be heard.")
(SOUTH TO TEMPLE IF TOWER-N-DOOR IS OPEN)
(FLAGS RLANDBIT ONBIT)
(TEXT
"Hideous shapes chanting in unison can be seen through the cell window.")
(GLOBAL TOWER-N-DOOR WINDOW GUARDS)
(PSEUDO "CELL" CELL-PSEUDO)>
<OBJECT GUARDS
(IN LOCAL-GLOBALS)
(DESC "guards")
(SYNONYM GUARD GUARDS SHAPE SHAPES)
(ADJECTIVE HIDEOUS HAIRY)
(FLAGS VICBIT)
(ACTION GUARDS-F)>
<ROUTINE GUARDS-F ()
<COND (<VERB? VAXUM>
<TELL
"The guards outside your cell cheer up a bit, upsetting a larger figure who
could well be their boss. They are dismissed and replaced by other guards
who don't seem to have the air of bonhomie shared by the others." CR>)
(<VERB? CLEESH>
<TELL
"A couple of the guards turn into newts, running this way and that. They
are quickly replaced, however, by others. Perhaps turning into a newt is
a commonplace around these parts." CR>)
(<VERB? GUNCHO>
<TELL
"A few guards disappear, seeming to vanish with distance while still
standing in front of you. They are replaced quite quickly
and efficiently by others. To judge by the reaction to your show of magical
prowess, you would think these things happen every day." CR>)
(<VERB? ZIFMIA>
<TELL
"Oh, no. You've done it now. The guards approach, and they don't look
very pleased." CR>
<QUEUE I-TAKE-TO-ALTAR 1>)
(<VERB? EXAMINE>
<TELL
"They are hunched and hairy shapes, but more detail cannot be discerned." CR>)
(<VERB? KILL ATTACK MUNG>
<TELL
"You can't reach them from in here, and you wouldn't have a prayer even
if you could." CR>)
(<VERB? LISTEN>
<TELL
"The guards make low, grumbling sounds that could pass for speech, but it
is incomprehensible to you." CR>)
(<VERB? TELL HELLO>
<TELL
"They go right on ignoring you. They don't seem to be much on conversation,
although from time to time they grumble in an unsettling sort of way." CR>)
(<AND <NOT ,GUARDS-HEARD> <VERB? NITFOL>>
<SETG GUARDS-HEARD T>
<TELL
"The guards are having a delightful conversation, after a fashion:|
Guard 1: \"Brgh! Last night, good bloodbath!\"|
Guard 2: \"Yes. Quite. Best in weeks. Have you seen the new sacrifice?\"|
Guard 1: \"Brggh! No! Just get here.\"|
Guard 2: \"It's a scrawny one. Not too much meat.\"|
Guard 1: \"Brrrgh! No meat! Not had good meal in many days!\"|
Guard 2: \"Perhaps tonight...\"|
Voice: \"Stop your yapping, both of you!\"|
The yapping stops abruptly." CR>)
(<VERB? NITFOL>
<TELL "The guards aren't speaking much." CR>)>>
<GLOBAL GUARDS-HEARD <>>
<OBJECT TOWER-N-DOOR
(IN LOCAL-GLOBALS)
(DESC "north cell door")
(SYNONYM DOOR)
(ADJECTIVE NORTH CELL PRISON)
(FLAGS CONTBIT DOORBIT)
(ACTION TOWER-DOOR-F)>
<OBJECT TOWER-S-DOOR
(IN LOCAL-GLOBALS)
(DESC "south cell door")
(SYNONYM DOOR)
(ADJECTIVE SOUTH CELL PRISON)
(FLAGS CONTBIT DOORBIT)
(ACTION TOWER-DOOR-F)>
<ROUTINE TOWER-DOOR-F ()
<COND (<AND <VERB? UNLOCK OPEN>
,LOCKED-IN-TOWER>
<TELL
"The door is locked from the outside.">
<COND (<NOT ,PROTECTED-FROM-EVIL>
<TELL " even if you could open it, the guards
would undoubtedly return you with little difficulty">)>
<TELL "." CR>)
(<VERB? KNOCK>
<TELL
"It would only get the attention of the guards." CR>)
(<VERB? REZROV>
<TELL
"The locked cell door opens with a powerful snap! Unfortunately, the
guards seem to have heard the snap and approach!" CR>
<FSET ,PRSO ,OPENBIT>
<SETG LOCKED-IN-TOWER <>>
<QUEUE I-TAKE-TO-ALTAR 1>
<RTRUE>)>>
<ROOM TOWER-S
(IN ROOMS)
(DESC "Cell")
(NORTH TO TEMPLE IF TOWER-S-DOOR IS OPEN)
(FLAGS RLANDBIT ONBIT)
(TEXT
"Hideous shapes chanting in unison can be seen through the cell window.")
(ACTION TOWER-S-F)
(GLOBAL TOWER-S-DOOR WINDOW)
(PSEUDO "CELL" CELL-PSEUDO)>
<ROUTINE TOWER-S-F (RARG)
<COND (<==? .RARG ,M-LOOK>
<COND (,SACRIFICED?
<TELL
"This prison cell is similar to the one in which you were held captive
prior to your sacrifice.">)
(ELSE
<TELL
"This is a small prison cell in the south tower of the temple.">)>
<TELL " A window in the cell door looks out on the
temple itself." CR>
<COND (<EQUAL? ,ANYTHING-TAKEN ,SCROLLS-TAKEN> <RTRUE>)
(<AND <G? ,ANYTHING-TAKEN 0> <G? ,SCROLLS-TAKEN 0>>
<TELL
"The guards must have brought your possessions here, but something is
definitely missing!" CR>)>
<RTRUE>)>>
<ROUTINE CELL-PSEUDO ()
<COND (<AND <VERB? ESCAPE>
,LOCKED-IN-TOWER>
<TELL
"That poses a difficult problem. There's only one way out, and that would
mean tackling a few hundred unpleasant creatures." CR>)
(<VERB? DROP>
<COND (<EQUAL? ,HERE ,TOWER-S>
<DO-WALK ,P?NORTH>)
(T <DO-WALK ,P?SOUTH>)>)
(<VERB? OPEN>
<COND (<EQUAL? ,HERE ,TOWER-S>
<PERFORM ,V?OPEN ,TOWER-S-DOOR>)
(T
<PERFORM ,V?OPEN ,TOWER-N-DOOR>)>
<RTRUE>)
(<VERB? SEARCH>
<PERFORM ,V?LOOK>
<RTRUE>)>>
<ROUTINE TEMPLE-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-END>
<IN? ,PLAYER ,TEMPLE>
<NOT ,PROTECTED-FROM-EVIL>
<NOT ,LETTER-OF-TRANSIT>>
<CRLF>
<TAKE-TO-TOWER>)>>
<GLOBAL LOCKED-IN-TOWER <>>
<ROUTINE TAKE-TO-TOWER ()
<SETG LOCKED-IN-TOWER T>
<SETG WINNER ,PLAYER>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<SETG ADVENTURER-CHARMED <>>
<QUEUE I-TURTLE 0>
<TELL
"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 vicious
dagger. The chant grows louder as the robed figure approaches the altar. As the
shapes grab you, the figure in black speaks: \"Take the victim to the tower.
I shall prepare for the sacrifice!\" The figures, whose form you can barely
guess, take you from here through the northern door and into a prison cell.
They ">
<COND (<SETG ANYTHING-TAKEN <BLT ,PLAYER ,TOWER-S>>
<TELL "take your possessions from you and ">)>
<TELL "close the door with a crash!" CR CR>
<SETG SCROLLS-TAKEN 0>
<GOTO ,TOWER-N>
<COND (<IN? ,DISPEL-SCROLL ,TOWER-S>
<REMOVE ,DISPEL-SCROLL>
<SETG SCROLLS-TAKEN 1>)>
<COND (<IN? ,BANISH-SCROLL ,TOWER-S>
<REMOVE ,BANISH-SCROLL>
<SETG SCROLLS-TAKEN <+ ,SCROLLS-TAKEN 1>>)>
<ENABLE <QUEUE I-TAKE-TO-ALTAR 4>>
<RTRUE>>
<GLOBAL ANYTHING-TAKEN <>>
<GLOBAL SCROLLS-TAKEN <>>
<GLOBAL SACRIFICED? <>>
<ROUTINE I-TAKE-TO-ALTAR ()
<COND (,PROTECTED-FROM-EVIL
<TELL
"A gang of hunched and hairy shapes appear, look around cursorily, and then
depart." CR>
<RTRUE>)>
<TELL CR
"A host of hunched and hairy shapes appear through the window. The cell door
opens and you are marched solemnly to the temple and, from there, up the steps
to the altar. The large, black figure approaches menacingly. He reaches into
his cloak and pulls out a ">
<COND (,DAGGER-SEEN <TELL "blood-drenched scimitar">)
(T <TELL "great, glowing dagger">)>
<TELL ". He pulls you onto the altar,
and with a murmur of approval from the throng, he plunges the blade into
your heart!" CR>
<SETG SACRIFICED? T>
<COND (<NOT <==? ,DEATH-CHEATED ,ME>>
<SETG WINNER ,PLAYER>
<JIGS-UP <> <>>)
(T
<SETG LOCKED-IN-TOWER <>>
<TELL CR
"You feel yourself filled with a strange warmth as your eyes slowly open.
You are lying on the altar">
<COND (<NOT ,DAGGER-SEEN>
<TELL ", a glowing dagger in your chest">)>
<TELL ". You are in no
pain, however. The large figure is gone, but the throng of shapes, taking
no notice of your movement, is chanting in the temple below.">
<COND (<NOT ,DAGGER-SEEN>
<TELL " You slowly remove
the dagger from your chest, but you are not harmed. The blade shines faintly
in the light of the flickering torches.">)>
<CRLF>
<CRLF>
<SETG SCORE <+ ,SCORE ,TEMPLE-POINT>>
<SETG TEMPLE-POINT 0>
<COND (<NOT ,DAGGER-SEEN>
<SETG DAGGER-SEEN T>
<MOVE ,MAGIC-KNIFE ,WINNER>)>
<ENABLE <QUEUE I-LETTER-OF-TRANSIT 10>>
<SETG LETTER-OF-TRANSIT T>
<GOTO ,ALTAR>)>>
<GLOBAL DAGGER-SEEN <>>
<GLOBAL LETTER-OF-TRANSIT <>>
<ROUTINE I-LETTER-OF-TRANSIT ()
<COND (<EQUAL? ,HERE ,TEMPLE> <QUEUE I-LETTER-OF-TRANSIT 3>)
(T
<SETG LETTER-OF-TRANSIT <>>)>
<RFALSE>>

873
terror.zil Normal file
View File

@ -0,0 +1,873 @@
"TERROR for
ENCHANTER
(c) Copyright 1983 Infocom, Inc. All Rights Reserved.
"
;"It even strikes fear in the hearts of implementers...."
<OBJECT TERROR
(IN T-I)
(DESC "lurking evil presence")
(SYNONYM TERROR PRESENCE FORCE)
(ADJECTIVE STALKING EVIL LURKING UNSEEN)
(FLAGS NDESCBIT)
(GLOBAL TERROR)
(ACTION TERROR-F)>
<ROUTINE TERROR-F ()
<COND (<VERB? ZIFMIA>
<TELL
"As you cast the zifmia spell, you are overpowered with such a sense of
malice that you cannot continue. All in all, a good thing probably." CR>)
(<VERB? VAXUM>
<TELL
"The terror may be friendlier, but with friends like that...." CR>)
(<VERB? GUNCHO>
<REMOVE ,TERROR>
<TELL
"The room fills with a horrible noise, darkens to pitch blackness, and
then lightens. The weight of fear lifts." CR>)>>
<OBJECT TMAP
(IN MAP-ROOM)
(DESC "map")
(FDESC
"Lying on the ground is an old parchment map.")
(SYNONYM MAP)
(ADJECTIVE OLD PARCHMENT)
(FLAGS TAKEBIT READBIT CONTBIT OPENBIT)
(CAPACITY 100)
(ACTION TMAP-F)>
<OBJECT PENCIL
(IN MAP-ROOM)
(DESC "badly worn pencil")
(FDESC
"In one corner of the room is a badly worn pencil, inscribed with runes.")
(SYNONYM PENCIL ERASER RUNES)
(ADJECTIVE BADLY WORN)
(FLAGS TAKEBIT READBIT)
(TEXT
"It says \"Frobozz Magic Pencil Company.\" Some sort of joke, probably.")
(ACTION PENCIL-F)>
<ROUTINE TMAP-F ()
<COND (<VERB? KULCAD>
<TELL
"At once, a maze of lines forms, connecting all of the spots on the map.
Suddenly, the world becomes still and cold." CR CR>
<END-OF-WORLD>
<RTRUE>)
(<VERB? OPEN CLOSE PUT>
<TELL "You can't do that." CR>)
(<VERB? DRAW-ON>
<COND (<IN? ,PENCIL ,WINNER>
<WRITE-HINT>
<RTRUE>)
(T
<TELL "You have nothing to draw with." CR>)>)
(<VERB? READ EXAMINE LOOK-INSIDE>
<TELL
"The map consists of a drawing with nine points, each represented by
a strange character, with interconnecting thin pencil lines. Using your
native alphabet, it looks like this:" CR>
<DRAW-TMAZE>)>>
<GLOBAL PENCIL-COUNT 2>
<GLOBAL ERASER-COUNT 2>
<GLOBAL PENCIL-TBL
<TABLE "gone" "very nearly gone" "nearly gone">>
<GLOBAL ERASER-TBL
<TABLE "not fit for use" "barely usable" "negligible">>
<ROUTINE PENCIL-F ()
<COND (<VERB? KULCAD>
<TELL
"As the pencil dissolves into nothingness, everything becomes still
and cold." CR CR>
<END-OF-WORLD>
<RTRUE>)
(<VERB? EXAMINE>
<TELL
"The pencil is very old and covered with finely inlaid runes. The point is
">
<TELL <GET ,PENCIL-TBL ,PENCIL-COUNT>
" and the attached eraser is "
<GET ,ERASER-TBL ,ERASER-COUNT>
"." CR>)>>
<OBJECT POINT-B
(IN TMAP)
(DESC "point B")
(SYNONYM B)
(ADJECTIVE POINT)
(FLAGS POINTBIT NDESCBIT)
(POINT 1)>
<OBJECT POINT-R
(IN TMAP)
(DESC "point R")
(SYNONYM R)
(ADJECTIVE POINT)
(FLAGS POINTBIT NDESCBIT)
(POINT 2)>
<OBJECT POINT-K
(IN TMAP)
(DESC "point K")
(SYNONYM K)
(ADJECTIVE POINT)
(FLAGS POINTBIT NDESCBIT)
(POINT 3)>
<OBJECT POINT-H
(IN TMAP)
(DESC "point H")
(SYNONYM H)
(ADJECTIVE POINT)
(FLAGS POINTBIT NDESCBIT)
(POINT 4)>
<OBJECT POINT-J
(IN TMAP)
(DESC "point J")
(SYNONYM J)
(ADJECTIVE POINT)
(FLAGS POINTBIT NDESCBIT)
(POINT 5)>
<OBJECT POINT-M
(IN TMAP)
(DESC "point M")
(SYNONYM M)
(ADJECTIVE POINT)
(FLAGS POINTBIT NDESCBIT)
(POINT 6)>
<OBJECT POINT-V
(IN TMAP)
(DESC "point V")
(SYNONYM V)
(ADJECTIVE POINT)
(FLAGS POINTBIT NDESCBIT)
(POINT 7)>
<OBJECT POINT-F
(IN TMAP)
(DESC "point F")
(SYNONYM F)
(ADJECTIVE POINT)
(FLAGS POINTBIT NDESCBIT)
(POINT 8)>
<OBJECT POINT-P
(IN TMAP)
(DESC "point P")
(SYNONYM P)
(ADJECTIVE POINT)
(FLAGS POINTBIT NDESCBIT)
(POINT 9)>
<CONSTANT T-NW 1>
<CONSTANT T-WEST 3>
<CONSTANT T-SW 5>
<CONSTANT T-SOUTH 7>
<CONSTANT T-SE 9>
<CONSTANT T-EAST 11>
<CONSTANT T-NE 13>
<CONSTANT T-NORTH 15>
<GLOBAL T-DIR-TABLE <TABLE 0 0 0 0 0 "/" 0 "!" 0 "\\">>
<ROOM T-A
(IN ROOMS)
(DESC "Translucent Room")
(FLAGS RLANDBIT)
(TMAZE <TABLE
;"NW" 0 0 ;"WEST" 0 0 ;"SW" 0 0 ;"SOUTH" T-B 1
;"SE" T-C 0 ;"EAST" T-E 0 ;"NE" 0 0 ;"NORTH" 0 0 -1>)
(CAPACITY 1)
(GLOBAL BLACK-PASSAGE)
(ACTION TMAZE-F)>
<ROOM T-B
(IN ROOMS)
(DESC "Translucent Room")
(FLAGS RLANDBIT)
(TMAZE <TABLE
;"NW" 0 0 ;"WEST" 0 0 ;"SW" 0 0 ;"SOUTH" 0 0
;"SE" T-D 1 ;"EAST" T-F 1 ;"NE" T-C 0 ;"NORTH" T-A 1 -1>)
(CAPACITY 2)
(GLOBAL BLACK-PASSAGE)
(ACTION TMAZE-F)>
<ROOM T-C
(IN ROOMS)
(DESC "Translucent Room")
(FLAGS RLANDBIT)
(TMAZE <TABLE
;"NW" T-A 0 ;"WEST" 0 0 ;"SW" T-B 0 ;"SOUTH" T-D 0
;"SE" T-F 0 ;"EAST" T-G 0 ;"NE" T-E 1 ;"NORTH" 0 0 -1>)
(CAPACITY 3)
(GLOBAL BLACK-PASSAGE)
(ACTION TMAZE-F)>
<ROOM T-D
(IN ROOMS)
(DESC "Translucent Room")
(FLAGS RLANDBIT)
(TMAZE <TABLE
;"NW" T-B 1 ;"WEST" 0 0 ;"SW" 0 0 ;"SOUTH" 0 0
;"SE" 0 0 ;"EAST" T-I 0 ;"NE" T-F 1 ;"NORTH" T-C 0 -1>)
(CAPACITY 4)
(GLOBAL BLACK-PASSAGE)
(ACTION TMAZE-F)>
<ROOM T-E
(IN ROOMS)
(DESC "Translucent Room")
(FLAGS RLANDBIT)
(TMAZE <TABLE
;"NW" 0 0 ;"WEST" T-A 0 ;"SW" T-C 1 ;"SOUTH" T-F 0
;"SE" T-G 1 ;"EAST" 0 0 ;"NE" 0 0 ;"NORTH" 0 0 -1>)
(CAPACITY 5)
(GLOBAL BLACK-PASSAGE)
(ACTION TMAZE-F)>
<ROOM T-F
(IN ROOMS)
(DESC "Translucent Room")
(FLAGS RLANDBIT)
(TMAZE <TABLE
;"NW" T-C 0 ;"WEST" T-B 1 ;"SW" T-D 1 ;"SOUTH" 0 0
;"SE" T-I 0 ;"EAST" T-H 0 ;"NE" T-G 1 ;"NORTH" T-E 0 -1>)
(CAPACITY 6)
(GLOBAL BLACK-PASSAGE)
(ACTION TMAZE-F)>
<ROOM T-G
(IN ROOMS)
(DESC "Translucent Room")
(FLAGS RLANDBIT)
(TMAZE <TABLE
;"NW" T-E 1 ;"WEST" T-C 0 ;"SW" T-F 1 ;"SOUTH" T-I 0
;"SE" T-H 1 ;"EAST" 0 0 ;"NE" 0 0 ;"NORTH" 0 0 -1>)
(CAPACITY 7)
(GLOBAL BLACK-PASSAGE)
(ACTION TMAZE-F)>
<ROOM T-H
(IN ROOMS)
(DESC "Translucent Room")
(FLAGS RLANDBIT)
(TMAZE <TABLE
;"NW" T-G 1 ;"WEST" T-F 0 ;"SW" T-I 0 ;"SOUTH" 0 0
;"SE" 0 0 ;"EAST" 0 0 ;"NE" 0 0 ;"NORTH" 0 0 -1>)
(CAPACITY 8)
(GLOBAL BLACK-PASSAGE)
(ACTION TMAZE-F)>
<ROOM T-I
(IN ROOMS)
(DESC "Translucent Room")
(FLAGS RLANDBIT)
(TMAZE <TABLE
;"NW" T-F 0 ;"WEST" T-D 0 ;"SW" 0 0 ;"SOUTH" 0 0
;"SE" 0 0 ;"EAST" 0 0 ;"NE" T-H 0 ;"NORTH" T-G 0 -1>)
(CAPACITY 9)
(GLOBAL BLACK-PASSAGE)
(ACTION TMAZE-F)>
<GLOBAL TMAZE-DIRS <TABLE "northwest" "west" "southwest" "south"
"southeast" "east" "northeast" "north">>
<OBJECT BLACK-PASSAGE
(IN LOCAL-GLOBALS)
(DESC "black passage")
(SYNONYM PASSAGE)
(ADJECTIVE BLACK)
(ACTION BLACK-PASSAGE-F)>
<ROUTINE BLACK-PASSAGE-F ()
<COND (<VERB? EXAMINE>
<TELL
"The passages are perfectly round and black; the walls seem to be made of
carbon." CR>)>>
<ROUTINE TMAZE-F (RARG "AUX" TBL (NEX 0) (FLG <>) (OFFS 0) (PLU <>))
<COND (<AND <IN? ,BANISH-SCROLL ,WINNER>
<EQUAL? ,HERE ,T-A>
,TERROR-TRAPPED
<G? ,TERROR-POINT 0>>
<TELL
"You hear a horrible anguished scream through the walls of the cavern as the
terror realizes that it is trapped and its scroll of power stolen!" CR CR>
<SETG SCORE <+ ,SCORE ,TERROR-POINT>>
<SETG TERROR-POINT 0>)>
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is a peculiar room, whose cream-colored walls are thin and
translucent." CR>
<SET TBL <GETP ,HERE ,P?TMAZE>>
<REPEAT ()
<COND (<EQUAL? <GET .TBL .OFFS> -1>
<RETURN>)
(<EQUAL? <GET .TBL <+ .OFFS 1>> 1>
<SET NEX <+ .NEX 1>>)>
<SET OFFS <+ .OFFS 2>>>
<COND (<EQUAL? .NEX 0>
<TELL
"There is not a single exit from this place." CR>
<RTRUE>)
(<EQUAL? .NEX 1>
<TELL
"An exit is">)
(T
<SET PLU T>
<TELL
"Passages go">)>
<TELL " to the ">
<SET OFFS 0>
<REPEAT ()
<COND (<EQUAL? <GET .TBL .OFFS> -1>
<RETURN>)
(<EQUAL? <GET .TBL <+ .OFFS 1>> 1>
<TELL <GET ,TMAZE-DIRS </ .OFFS 2>>>
<COND (<G? .NEX 2>
<SET FLG T>
<TELL ", ">)
(<EQUAL? .NEX 2>
<COND (.FLG <TELL ",">)>
<TELL " and ">)>
<SET NEX <- .NEX 1>>)>
<SET OFFS <+ .OFFS 2>>>
<TELL "
and ">
<COND (.PLU <TELL "they are">)
(T <TELL "it is">)>
<TELL
" very strange indeed, perfectly round and black as pitch." CR>)
(<EQUAL? .RARG ,M-BEG>
<COND (<IN? ,TERROR ,HERE>
<COND (<VERB? WALK>
<TELL
"Your feet are leaden with fear, and cold sweat runs down your back as you
make your way to the door, but you make no progress. Your mind tells you
you are running, but you aren't getting anywhere." CR>)>)
(<VERB? WALK>
<COND (<AND <EQUAL? ,HERE ,T-A>
<EQUAL? ,PRSO ,P?UP>>
<GOTO ,DUNGEON>
<RTRUE>)
(<AND <G? ,PRSO ,P?UP>
<EQUAL? <GET <SET TBL <GETP ,HERE ,P?TMAZE>>
<SET OFFS
<- <* <- ,PRSO
,P?UP>
2>
1>>>
1>>
<GOTO <GET .TBL <- .OFFS 1>>>
<COND (<IN? ,TERROR ,HERE>
<TELL
"An evil presence pervades the room, its source unseen. Fear seeps into
your mind, like fog. You look fearfully around. There is something
horrible here." CR>)
(<CONNECTED? ,HERE <LOC ,TERROR>>
<TELL
"You sense that near this place an evil presence lurks. It seems close by
and is moving." CR>)>
<RTRUE>)
(T
<TELL "You can't go that way." CR>)>)>)>>
<ROUTINE END-OF-WORLD ()
<TELL
"You suddenly feel weak and your knees buckle. Just as you collapse to the
ground, you find yourself in the presence of the Circle. They seem tense
and frightened and ask desperately about your recent doings. As you tell
your tale of the map and pencil, they recoil in horror. \"The Terror is
released!\" cries one. Belboz sinks into his throne. \"We are doomed!\"
he gasps. One by one, the wizards flee to prepare a hopeless defense." CR>
<SETG SCORE -10>
<FINISH>>
<ROUTINE DRAW-TMAZE ()
<FIXED-FONT-ON>
<TELL CR "B">
<ECN ,T-A ,T-H ;"Place holder">
<TELL "J" CR>
<CN ,T-A ,T-SOUTH>
<CN ,T-A ,T-SE>
<TELL " ">
<CN ,T-E ,T-SW>
<CN ,T-E ,T-SOUTH>
<CN ,T-E ,T-SE>
<CRLF>
<CN ,T-A ,T-SOUTH>
<TELL " ">
<CN ,T-A ,T-SE>
<TELL " ">
<CN ,T-E ,T-SW>
<TELL " ">
<CN ,T-E ,T-SOUTH>
<TELL " ">
<CN ,T-E ,T-SE>
<CRLF>
<CN ,T-A ,T-SOUTH>
<TELL " ">
<CN ,T-A ,T-SE>
<TELL " ">
<CN ,T-E ,T-SW>
<TELL " ">
<CN ,T-E ,T-SOUTH>
<TELL " ">
<CN ,T-E ,T-SE>
<CRLF>
<CN ,T-A ,T-SOUTH>
<TELL " K">
<ECN ,T-C ,T-E>
<TELL "V" CR>
<CN ,T-A ,T-SOUTH>
<TELL " ">
<CN ,T-C ,T-SW>
<CN ,T-C ,T-SOUTH>
<CN ,T-C ,T-SE>
<TELL " ">
<CN ,T-E ,T-SOUTH>
<TELL " ">
<CN ,T-G ,T-SW>
<CN ,T-G ,T-SOUTH>
<CN ,T-G ,T-SE>
<CRLF>
<CN ,T-A ,T-SOUTH>
<TELL " ">
<CN ,T-C ,T-SW>
<TELL " ">
<CN ,T-C ,T-SOUTH>
<TELL " ">
<CN ,T-C ,T-SE>
<TELL " ">
<CN ,T-E ,T-SOUTH>
<TELL " ">
<CN ,T-G ,T-SW>
<TELL " ">
<CN ,T-G ,T-SOUTH>
<TELL " ">
<CN ,T-G ,T-SE>
<CRLF>
<CN ,T-A ,T-SOUTH>
<CN ,T-C ,T-SW>
<TELL " ">
<CN ,T-C ,T-SOUTH>
<TELL " ">
<CN ,T-C ,T-SE>
<CN ,T-E ,T-SOUTH>
<CN ,T-G ,T-SW>
<TELL " ">
<CN ,T-G ,T-SOUTH>
<TELL " ">
<CN ,T-G ,T-SE>
<CRLF>
<TELL "R">
<ECN ,T-B ,T-C>
<TELL "M">
<ECN ,T-F ,T-G>
<TELL "F">
<TELL CR " ">
<CN ,T-B ,T-SE>
<TELL " ">
<CN ,T-C ,T-SOUTH>
<TELL " ">
<CN ,T-F ,T-SW>
<TELL " ">
<CN ,T-F ,T-SE>
<TELL " ">
<CN ,T-G ,T-SOUTH>
<TELL " ">
<CN ,T-H ,T-SW>
<TELL CR " ">
<CN ,T-B ,T-SE>
<TELL " ">
<CN ,T-C ,T-SOUTH>
<TELL " ">
<CN ,T-F ,T-SW>
<TELL " ">
<CN ,T-F ,T-SE>
<TELL " ">
<CN ,T-G ,T-SOUTH>
<TELL " ">
<CN ,T-H ,T-SW>
<TELL CR " ">
<CN ,T-B ,T-SE>
<CN ,T-C ,T-SOUTH>
<CN ,T-F ,T-SW>
<TELL " ">
<CN ,T-F ,T-SE>
<CN ,T-G ,T-SOUTH>
<CN ,T-H ,T-SW>
<TELL CR " H">
<ECN ,T-D ,T-H ;"Place holder">
<TELL "P" CR CR>
<FIXED-FONT-OFF>
<RTRUE>>
<ROUTINE FIXED-FONT-ON () <PUT 0 8 <BOR <GET 0 8> 2>>>
<ROUTINE FIXED-FONT-OFF() <PUT 0 8 <BAND <GET 0 8> -3>>>
<ROUTINE CN (L DIR)
<COND (<NOT <0? <GET <GETP .L ,P?TMAZE> .DIR>>>
<TELL <GET ,T-DIR-TABLE .DIR>>)
(T <TELL " ">)>>
<ROUTINE ECN (L DN "AUX" (FLG <>))
<COND (<NOT <0? <GET <GETP .L ,P?TMAZE> ,T-EAST>>>
<SET FLG T>
<TELL "---">)
(T <TELL " ">)>
<COND (<NOT <0? <GET <GETP .DN ,P?TMAZE> ,T-SOUTH>>>
<COND (.FLG <TELL "+">)
(T <TELL "!">)>)
(.FLG <TELL "-">)
(T <TELL " ">)>
<COND (.FLG <TELL "---">)
(T <TELL " ">)>>
<ROUTINE CONNECT (RM1 RM2 "OPTIONAL" (FLIP <>) "AUX" TBL RMX)
<SET TBL <GETP .RM1 ,P?TMAZE>>
<REPEAT ()
<COND (<EQUAL? <SET RMX <GET .TBL 0>> -1>
<TELL
"The pencil doesn't seem to allow that line to be drawn." CR>
<RTRUE>)
(<EQUAL? .RMX .RM2>
<COND (<0? <GET .TBL 1>>
<COND (<NOT .FLIP>
<CONNECT .RM2 .RM1 T>
<SETG PENCIL-COUNT
<- ,PENCIL-COUNT 1>>
<TELL
"A thin line now connects the two spots on the map, but the
pencil point is " <GET ,PENCIL-TBL ,PENCIL-COUNT> "." CR>
<COND (<EQUAL? ,HERE .RM1 .RM2>
<DESCRIBE-NEW-EXIT .RM1 .RM2>)>)>
<PUT .TBL 1 1>
<COND (<AND <LOC ,TERROR>
<TWALK <LOC ,TERROR>>>
<SETG TERROR-TRAPPED <>>
<ENABLE <QUEUE I-TERROR -1>>)>)
(T
<TELL
"There is already a line connecting those spots." CR>)>
<RTRUE>)>
<SET TBL <REST .TBL 4>>>>
<ROUTINE DISCONNECT (RM1 RM2 "OPTIONAL" (FLIP <>) "AUX" TBL RMX)
<SET TBL <GETP .RM1 ,P?TMAZE>>
<REPEAT ()
<COND (<EQUAL? <SET RMX <GET .TBL 0>> -1>
<TELL
"Those two spots aren't connected on the map." CR>
<RTRUE>)
(<EQUAL? .RMX .RM2>
<COND (<0? <GET .TBL 1>>
<TELL
"Those two spots aren't connected on the map." CR>)
(T
<COND (<NOT .FLIP>
<DISCONNECT .RM2 .RM1 T>
<SETG ERASER-COUNT
<- ,ERASER-COUNT 1>>
<TELL
"The line between the two spots is erased, leaving the eraser
" <GET ,ERASER-TBL ,ERASER-COUNT> "." CR>
<COND (<EQUAL? ,HERE .RM1 .RM2>
<DESCRIBE-NEW-EXIT .RM1
.RM2
<>>)>)>
<PUT .TBL 1 0>)>
<RTRUE>)>
<SET TBL <REST .TBL 4>>>>
<ROUTINE DESCRIBE-NEW-EXIT (RM1 RM2 "OPTIONAL" (MAKE? T)
"AUX" TMP TBL (OFFS 0))
<COND (<EQUAL? .RM2 ,HERE>
<SET TMP .RM1>
<SET RM1 .RM2>
<SET RM2 .TMP>)>
<SET TBL <GETP .RM1 ,P?TMAZE>>
<REPEAT ()
<COND (<EQUAL? <SET TMP <GET .TBL .OFFS>> .RM2>
<RETURN>)
(<EQUAL? .TMP -1>
<TELL "*ERROR* BAD-EXIT DESCRIBE-NEW-EXIT" CR>
<RETURN>)
(T
<SET OFFS <+ .OFFS 2>>)>>
<TELL "Suddenly, the ">
<COND (.MAKE? <TELL "wall">)
(T <TELL "black passage">)>
<TELL " to the ">
<TELL <GET ,TMAZE-DIRS </ .OFFS 2>>>
<COND (.MAKE?
<TELL " opens to form a perfectly round and black passage">)
(T
<TELL " closes off">)>
<TELL "!" CR>>
<ROUTINE CONNECTED? (RM1 RM2 "AUX" TBL RMX)
<SET TBL <GETP .RM1 ,P?TMAZE>>
<COND (<NOT .TBL> <RFALSE>)>
<REPEAT ()
<COND (<EQUAL? <SET RMX <GET .TBL 0>> -1>
<RFALSE>)
(<EQUAL? .RMX .RM2>
<COND (<0? <GET .TBL 1>>
<RFALSE>)
(T
<RTRUE>)>)>
<SET TBL <REST .TBL 4>>>>
;<GLOBAL TERROR-ROOM ,T-I>
<GLOBAL TWAIT 0>
<GLOBAL TERROR-ARRIVES
"An evil presence, borne on a cold blast of air, seems to move beside
you, weighing you down with emanations of malice and hatred. A cold fear
covers you like fog.">
<GLOBAL TERROR-MOVED <>>
<ROUTINE I-TERROR ("AUX" RM NRM (FLG <>))
<COND (,TERROR-TRAPPED
<SET RM <LOC ,TERROR>>
<COND (<CONNECTED? ,HERE .RM>
<MOVE ,TERROR ,HERE>
<TELL ,TERROR-ARRIVES CR>)>)
;(<PROB 5> <RFALSE>)
(<TWALK <SET RM <LOC ,TERROR>>>
<SETG TERROR-TRAPPED <>>
<SETG TWAIT 0>
<MOVE ,TERROR <SET NRM <GET ,TMAZE-ROOMS <GET ,PATH-TBL 2>>>>
<COND (<EQUAL? ,HERE .NRM>
<TELL ,TERROR-ARRIVES CR>
<SET FLG T>)
(<CONNECTED? ,HERE .NRM>
<TELL
"Somewhere near, an evil presence lurks, probing your mind. It
seems to be moving quickly." CR>
<SET FLG T>)
(<CONNECTED? ,HERE .RM>
<TELL
"You can no longer sense the evil presence nearby." CR>
<SET FLG T>)>
<COND (<NOT ,TERROR-MOVED>
<SETG TERROR-MOVED T>
<SETG LOSSAGE <+ ,LOSSAGE 1>>
<SET FLG T>
<TELL
"You feel that two powerful, evil forces are searching each other out.
As they meet, the air lightens. Belboz appears before you. \"Something
has disturbed the ancient Terror. Krill himself knows this and will try
to use it to his purposes. Already, they may have joined together. You
must not allow the Terror to escape, or we are all doomed!\" He fades into
the gloom." CR>)>
<COND (<EQUAL? .NRM ,T-A>
<END-OF-WORLD>
<COND (<EQUAL? ,HERE ,T-A>
<SET FLG T>
<TELL
"The presence seems to grow stronger each passing second,
beating you down with its awesome power." CR>)
(T
<SET FLG T>
<TELL
"At once, a strange and horrible feeling wells up inside of you.
An unseen yet awesomely powerful force, exuding pure evil, seems
to fill the very chamber." CR>)>)>
.FLG)
(<TNULL-F> <RTRUE>)
(<OR <G? <SETG TWAIT <+ ,TWAIT 1>> 6>
<NOT <SET RM <TWALK1>>>>
<RTRUE>)
(T
<SET NRM <LOC ,TERROR>>
<COND (<EQUAL? .NRM ,T-I> <RTRUE>)
(<CONNECTED? .NRM ,T-I>
<MOVE ,TERROR ,T-I>)
(<CONNECTED? .NRM ,T-F>
<MOVE ,TERROR ,T-F>)
;(T
<MOVE ,TERROR .RM>)>
<COND (<IN? ,TERROR ,HERE>
<TELL ,TERROR-ARRIVES CR>)
(T
<TELL
"From somewhere nearby, an unseen force probes you, and you are gripped
by a sickening feeling." CR>)>
<RTRUE>)>>
<GLOBAL TERROR-TRAPPED <>>
<GLOBAL TWALK-PATHS
<LTABLE ;A <LTABLE>
;B <LTABLE 1 3 4 6>
;C <LTABLE 1 2 5 6 7 4>
;D <LTABLE 2 3 6 9>
;E <LTABLE 1 3 6 7>
;F <LTABLE 3 5 2 4 7 8 9>
;G <LTABLE 5 3 6 8 9>
;H <LTABLE 6 7 9>
;I <LTABLE 4 6 7 8>>>
<GLOBAL TMAZE-ROOMS <LTABLE T-A T-B T-C T-D T-E T-F T-G T-H T-I>>
<ROUTINE TNULL-F ()
<SETG TERROR-TRAPPED T>
<RFALSE>>
<ROUTINE TWALK (RM)
<SETG TWALK-LEVEL 0>
<SETG TTRIES 0>
<SETG PSTART .RM>
<PATH-OUT? .RM>>
<GLOBAL TTRIES 0>
<GLOBAL PSTART <>>
<CONSTANT TWALK-MAX 5>
;<GLOBAL SLOW-TIMES <LTABLE
"You feel a passing wave of anger permeating the walls of the room."
"The feeling of anger from a moment before is greater now."
"An intense surge of anger fills the very air."
"This is a bug. Report it."
"This is a bug. Report it."
"This is a bug. Report it.">>
<GLOBAL PATH-TBL <TABLE 0 0 0 0 0 0 0>>
<GLOBAL TWALK-LEVEL 0>
<ROUTINE TWALK1 ("AUX" TBL RM NRM (OFFS 1) CNT)
<SET RM <LOC ,TERROR>>
<SET TBL <GET ,TWALK-PATHS <GETP .RM ,P?CAPACITY>>>
<SET CNT <GET .TBL 0>>
<REPEAT ()
<COND (<G? .OFFS .CNT>
<RFALSE>)
(<CONNECTED? .RM
<SET NRM <GET ,TMAZE-ROOMS
<GET .TBL .OFFS>>>>
<RETURN .NRM>)>
<SET OFFS <+ .OFFS 1>>>>
<ROUTINE PATH-OUT? (RM "AUX" (OFFS 1) TBL (CNT 0) NRM)
<SETG TTRIES <+ ,TTRIES 1>>
;<COND (<0? <MOD ,TTRIES 16>>
<TELL <GET ,SLOW-TIMES </ ,TTRIES 32>> CR>)>
<SETG TWALK-LEVEL <+ ,TWALK-LEVEL 1>>
<PUT ,PATH-TBL ,TWALK-LEVEL <GETP .RM ,P?CAPACITY>>
<COND (<EQUAL? .RM ,T-A>
<SETG TWALK-LEVEL <- ,TWALK-LEVEL 1>>
<RTRUE>)
(<G? ,TWALK-LEVEL ,TWALK-MAX>
<SETG TWALK-LEVEL <- ,TWALK-LEVEL 1>>
<RFALSE>)>
<SET TBL <GET ,TWALK-PATHS <GETP .RM ,P?CAPACITY>>>
<COND (<0? <SET CNT <GET .TBL 0>>>
<SETG TWALK-LEVEL <- ,TWALK-LEVEL 1>>
<RTRUE>)>
<REPEAT ()
<COND (<G? .OFFS .CNT>
<SETG TWALK-LEVEL <- ,TWALK-LEVEL 1>>
<RFALSE>)
(<AND <CONNECTED? .RM
<SET NRM <GET ,TMAZE-ROOMS
<GET .TBL .OFFS>>>>
<NOT <EQUAL? .NRM ,PSTART>>
<PATH-OUT? .NRM>>
<SETG TWALK-LEVEL <- ,TWALK-LEVEL 1>>
<RTRUE>)>
<SET OFFS <+ .OFFS 1>>>>
<OBJECT LEGEND-BOOK
(IN LIBRARY)
(DESC "dusty book")
(SYNONYM BOOK PAGE)
(ADJECTIVE OLD DUSTY FIRST LEGEND)
(FDESC
"Amid the tubes is an old and dusty book.")
(FLAGS TAKEBIT READBIT OPENBIT CONTBIT)
(SIZE 6)
(ACTION LEGEND-BOOK-F)>
<ROUTINE LEGEND-BOOK-F ()
<COND (<AND <VERB? CLOSE>
<FSET? ,PRSO ,OPENBIT>>
<FCLEAR ,PRSO ,OPENBIT>
<TELL
"Closed." CR>)
(<VERB? READ EXAMINE LOOK-INSIDE OPEN>
<FSET ,PRSO ,OPENBIT>
<TELL
"The first page of the book was the table of contents. Only two chapter names
can be read: The Legend of the Unseen Terror and The Legend of the Great
Implementers." CR>)
(<VERB? TURN>
<TELL
"Rather than turning pages, why don't you simply read the legends." CR>)>>
<OBJECT LEGEND-ONE
(IN LEGEND-BOOK)
(DESC "Legend of the Unseen Terror")
(SYNONYM LEGEND TERROR)
(ADJECTIVE UNSEEN)
(FLAGS READBIT NDESCBIT)
(GLOBAL TERROR)
(TEXT
"This legend, written in an ancient tongue, goes something like this:
At one time a shapeless and formless manifestation of evil was disturbed
from millenia of sleep. It was so powerful that it required the combined
wisdom of the leading enchanters of that age to conquer it. The legend tells
how the enchanters lured the Terror \"to a recess deep within the earth\" by
placing there a powerful spell scroll. When it had reached the scroll, the
enchanters trapped it there with a spell that encased it in the living
rock. The Terror was so horrible that none would dare speak of it. A comment
at the end of the narration indicates that the story is considered to be quite
fanciful; no other chronicles of the age mention the Terror in any form.")>
<OBJECT LEGEND-TWO
(IN LEGEND-BOOK)
(DESC "Legend of the Great Implementers" )
(SYNONYM LEGEND IMPLEMENTERS)
(ADJECTIVE GREAT)
(FLAGS READBIT NDESCBIT)
(TEXT
"This legend, written in an ancient tongue, speaks of the creation
of the world. A more absurd account can hardly be imagined. The universe,
it seems, was created by \"Implementers\" who directed the running of great
engines. These engines produced this world and others, strange and wondrous,
as a test or puzzle for others of their kind. It goes on to state that these
beings stand ready to aid those entrapped within their creation. The great
magician-philosopher Helfax notes that a creation of this kind is morally
and logically indefensible and discards the theory as \"colossal claptrap
and kludgery.\"")
(ACTION LEGEND-TWO-F)>
<ROUTINE LEGEND-TWO-F ()
<COND (<AND <VERB? ZIFMIA> <NOT ,IMP-SEEN>>
<SETG IMP-SEEN T>
<TELL
"The implementers of the world, Marc Blank and Dave Lebling, appear before
you, looking quite as confused as yourself. They speak:|
Dave: \"What's happening here?\"|
Marc: \"Uh, I dunno. YOU wrote this code, not me.\"|
Dave: \"Hmm. Another day, another bug. Let's see here...\"|
They disappear a moment later.|
Dave's voice: \"That should do it.\"" CR>)>>

1893
verbs.zil Normal file

File diff suppressed because it is too large Load Diff

53
z4.zil Normal file
View File

@ -0,0 +1,53 @@
"ENCHANTER for
ENCHANTER
(c) Copyright 1983 Infocom, Inc. All Rights Reserved.
"
<PRINC "
*** ENCHANTER: Interlogic Fantasy ***
">
<SNAME "ENCHANTER">
<SET REDEFINE T>
<CONSTANT SERIAL 0>
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<OR <GASSIGNED? INSERT-CRUFTY>
<DEFINE INSERT-CRUFTY (STR) <INSERT-FILE .STR T>>>
<COND (<GASSIGNED? PREDGEN>
<ID 0>)>
<INSERT-FILE "SYNTAX" T>
<INSERT-FILE "MACROS" T>
<INSERT-FILE "CLOCK" T>
<INSERT-FILE "MAIN" T>
<INSERT-FILE "PARSER" T>
<INSERT-CRUFTY "CRUFTY">
<INSERT-FILE "VERBS" T>
<INSERT-FILE "RECORD" T>
<INSERT-FILE "GLOBALS" T>
<INSERT-FILE "TERROR" T>
<INSERT-FILE "STAIR" T>
<INSERT-FILE "MAGIC" T>
<INSERT-FILE "KNOT" T>
<INSERT-FILE "PURLOINED" T>
<INSERT-FILE "CASTLE" T>
<INSERT-FILE "TEMPLE" T>
<INSERT-FILE "GALLERY" T>
<INSERT-FILE "EGG" T>
<INSERT-FILE "SLEEP" T>
<INSERT-FILE "GEARS" T>
<INSERT-FILE "OUTSIDE" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>