Revision 24 (Original Source)
commit
826abeb339
File diff suppressed because it is too large
Load Diff
|
@ -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>>>>
|
|
@ -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>>
|
|
@ -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>)>>
|
|
@ -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>
|
||||
|
||||
|
Binary file not shown.
|
@ -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>)>>
|
|
@ -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 <>>
|
|
@ -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>)>>
|
|
@ -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>)>>
|
||||
|
||||
|
|
@ -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>
|
||||
|
||||
|
|
@ -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)>>
|
|
@ -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>)>>
|
||||
|
|
@ -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>
|
|
@ -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)>>
|
|
@ -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.">>
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -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>>
|
|
@ -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.">>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
|
@ -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>>
|
|
@ -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>)>>
|
|
@ -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>
|
||||
|
||||
|
Loading…
Reference in New Issue