mirror of
https://github.com/historicalsource/wishbringer
synced 2024-05-19 09:18:37 +03:00
1547 lines
37 KiB
Plaintext
1547 lines
37 KiB
Plaintext
"TOWER for WISHBRINGER: (C)1985 Infocom, Inc. All rights reserved."
|
|
|
|
<OBJECT TOWER
|
|
(IN LOCAL-GLOBALS)
|
|
(DESC "tower")
|
|
(SYNONYM TOWER)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION TOWER-F)>
|
|
|
|
<ROUTINE TOWER-F ()
|
|
<COND (<OR <NOT ,SKEWED?>
|
|
,SUCCESS?>
|
|
<CANT-SEE-ANY ,TOWER>
|
|
<RFATAL>)
|
|
(<OR <ENTER-FROM? ,HILLTOP>
|
|
<ENTER-FROM? ,VESTIBULE ,ROUND-CHAMBER ,TOWER>>
|
|
<RTRUE>)
|
|
(<VERB? EXAMINE>
|
|
<COND (<IN-TOWER?>
|
|
<V-LOOK>)
|
|
(T
|
|
<TELL "Its lonely outline fills you with dread." CR>)>
|
|
<RTRUE>)
|
|
|
|
(<VERB? LOOK-INSIDE>
|
|
<COND (<IN-TOWER?>
|
|
<V-LOOK>
|
|
<RTRUE>)>
|
|
<COND (<EQUAL? ,HERE ,HILLTOP>
|
|
<COND (<FSET? ,DRAWBRIDGE ,OPENBIT>
|
|
<GO-INSIDE>)
|
|
(T
|
|
<ITS-CLOSED ,DRAWBRIDGE>)>)
|
|
(T
|
|
<TELL ,CANT ". ">
|
|
<TOO-FAR-AWAY ,TOWER>)>
|
|
<RTRUE>)
|
|
|
|
(<VERB? LOOK-UNDER LOOK-BEHIND LOOK-UNDER LOOK-DOWN>
|
|
<HOW?>
|
|
<RTRUE>)
|
|
|
|
(<VERB? CLIMB-ON CLIMB-UP>
|
|
<COND (<IN-TOWER?>
|
|
<DO-WALK ,P?UP>)
|
|
(T
|
|
<HOW?>)>
|
|
<RTRUE>)
|
|
|
|
(<VERB? EXIT>
|
|
<COND (<IN-TOWER?>
|
|
<DO-WALK ,P?OUT>)
|
|
(T
|
|
<GET-IN-FIRST>)>
|
|
<RTRUE>)
|
|
|
|
(<VERB? CLIMB-DOWN>
|
|
<COND (<IN-TOWER?>
|
|
<DO-WALK ,P?DOWN>)
|
|
(T
|
|
<HOW?>)>
|
|
<RTRUE>)
|
|
|
|
(<AND <VERB? THROW>
|
|
<EQUAL? ,PRSI ,TOWER>>
|
|
<PERFORM ,V?PUT ,PRSO ,MOAT>
|
|
<RTRUE>)
|
|
|
|
(<AND <TOUCHING? ,TOWER>
|
|
<NOT <IN-TOWER?>>>
|
|
<TOO-FAR-AWAY ,TOWER>
|
|
<RTRUE>)
|
|
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE IN-TOWER? ()
|
|
<COND (<OR <EQUAL? ,HERE
|
|
,ROUND-CHAMBER
|
|
,TORTURE-CHAMBER
|
|
,VESTIBULE>
|
|
<EQUAL? ,HERE ,LABORATORY>>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE GET-IN-FIRST ()
|
|
<TELL "(You'll have to get inside the " D ,TOWER " first.)" CR>>
|
|
|
|
<OBJECT DRAWBRIDGE
|
|
(IN LOCAL-GLOBALS)
|
|
(DESC "drawbridge")
|
|
(SYNONYM DRAWBRIDGE BRIDGE WALKWAY)
|
|
(FLAGS NDESCBIT DOORBIT)
|
|
(ACTION DRAWBRIDGE-F)>
|
|
|
|
; "RMUNGBIT = magic spell used"
|
|
|
|
<ROUTINE DRAWBRIDGE-F ("AUX" (BOPEN? <>))
|
|
<COND (<NOT ,SKEWED?>
|
|
<CANT-SEE-ANY ,DRAWBRIDGE>
|
|
<RFATAL>)
|
|
(<FSET? ,DRAWBRIDGE ,OPENBIT>
|
|
<SET BOPEN? T>)>
|
|
<THIS-IS-IT ,DRAWBRIDGE>
|
|
<COND (<VERB? EXAMINE>
|
|
<SAY-THE ,DRAWBRIDGE>
|
|
<TELL " is ">
|
|
<COND (.BOPEN?
|
|
<TELL
|
|
"open, providing a walkway across the moat and into">)
|
|
(T
|
|
<TELL "closed against the wall of">)>
|
|
<TELL " the " D ,TOWER "." CR>
|
|
<RTRUE>)
|
|
(<VERB? OPEN LOWER>
|
|
<COND (.BOPEN?
|
|
<ITS-ALREADY "lowered">)
|
|
(T
|
|
<HIDDEN-MECH>)>
|
|
<RTRUE>)
|
|
(<VERB? CLOSE RAISE>
|
|
<COND (.BOPEN?
|
|
<HIDDEN-MECH>)
|
|
(T
|
|
<ITS-ALREADY "raised">)>
|
|
<RTRUE>)
|
|
(<VERB? WALK-TO CROSS WALK-AROUND ENTER THROUGH
|
|
EXIT CLIMB-ON>
|
|
<COND (<EQUAL? ,HERE ,HILLTOP>
|
|
<DO-WALK ,P?IN>)
|
|
(T
|
|
<DO-WALK ,P?OUT>)>
|
|
<RTRUE>)
|
|
(<VERB? SIT STAND-ON LIE-DOWN>
|
|
<COND (.BOPEN?
|
|
<WASTE-OF-TIME>)
|
|
(T
|
|
<ITS-CLOSED ,DRAWBRIDGE>)>
|
|
<RTRUE>)
|
|
; (<VERB? PUSH MOVE>
|
|
<HIDDEN-MECH>
|
|
<RTRUE>)
|
|
(<AND <TOUCHING? ,DRAWBRIDGE>
|
|
<EQUAL? ,HERE ,HILLTOP>
|
|
<NOT .BOPEN?>>
|
|
<TOO-FAR-AWAY ,DRAWBRIDGE>
|
|
<RTRUE>)
|
|
(<AND <VERB? LOOK-UNDER>
|
|
<EQUAL? ,HERE ,HILLTOP>>
|
|
<PERFORM ,V?EXAMINE ,MOAT>
|
|
<RTRUE>)
|
|
(<AND <VERB? THROW>
|
|
<EQUAL? ,PRSI ,DRAWBRIDGE>>
|
|
<PERFORM ,V?PUT ,PRSO ,MOAT>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE HIDDEN-MECH ()
|
|
<TELL ,CANT ". The mechanism that controls the "
|
|
D ,DRAWBRIDGE " is">
|
|
<COND (<IN? ,CRANK ,ROUND-CHAMBER>
|
|
<TELL "n't here">)
|
|
(T
|
|
<TELL " hidden">)>
|
|
<TELL "." CR>>
|
|
|
|
<OBJECT MOAT
|
|
(DESC "moat")
|
|
(SYNONYM MOAT WATER)
|
|
(ADJECTIVE DEEP)
|
|
(FLAGS NDESCBIT CONTBIT OPENBIT TRANSBIT)
|
|
(CAPACITY 200)
|
|
(ACTION MOAT-F)>
|
|
|
|
<ROUTINE MOAT-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<SAY-THE ,MOAT>
|
|
<TELL
|
|
" is 20 feet wide and filled with black, oily water." CR>
|
|
<RTRUE>)
|
|
(<VERB? CROSS>
|
|
<PERFORM ,V?CROSS ,DRAWBRIDGE>
|
|
<RTRUE>)
|
|
(<HANDLE-WATER?>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
"*** ROUND CHAMBER ***"
|
|
|
|
<OBJECT STAIRWAY
|
|
(IN LOCAL-GLOBALS)
|
|
(DESC "stairway")
|
|
(SYNONYM STAIRWAY STAIRS STAIR STEPS)
|
|
(ADJECTIVE DAMP)
|
|
(FLAGS NDESCBIT SURFACEBIT)
|
|
(CAPACITY 100)
|
|
(ACTION STAIRWAY-F)>
|
|
|
|
<ROUTINE STAIRWAY-F ()
|
|
<COND (<VERB? CLIMB-ON CLIMB-UP>
|
|
<COND (<EQUAL? ,HERE ,ROUND-CHAMBER>
|
|
<DO-WALK ,P?UP>)
|
|
(T
|
|
<ALREADY-AT ,STAIRWAY T>)>
|
|
<RTRUE>)
|
|
(<VERB? CLIMB-DOWN>
|
|
<COND (<EQUAL? ,HERE ,LABORATORY>
|
|
<DO-WALK ,P?DOWN>)
|
|
(T
|
|
<ALREADY-AT ,STAIRWAY>)>
|
|
<RTRUE>)
|
|
(<AND <VERB? PUT PUT-ON THROW>
|
|
<EQUAL? ,PRSI ,STAIRWAY>>
|
|
<TELL "Don't leave ">
|
|
<ARTICLE ,PRSO T>
|
|
<TELL D ,PRSO
|
|
" on the " D ,STAIRWAY "! Somebody might trip on it and get hurt." CR>
|
|
<RTRUE>)
|
|
|
|
(<VERB? OPEN CLOSE>
|
|
<TELL <PICK-ONE ,YUKS> CR>
|
|
<RTRUE>)
|
|
(<VERB? SIT STAND-ON LIE-DOWN>
|
|
<LOITERING-ON ,STAIRWAY>
|
|
<RTRUE>)
|
|
(<VERB? EXAMINE LOOK-DOWN>
|
|
<TELL "The damp, narrow " D ,STAIRWAY " circles ">
|
|
<COND (<EQUAL? ,HERE ,ROUND-CHAMBER>
|
|
<TELL "up">)
|
|
(T
|
|
<TELL "down">)>
|
|
<TELL "ward into the " D ,TOWER "." CR>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<OBJECT ROUND-CHAMBER
|
|
(IN ROOMS)
|
|
(DESC "Round Chamber")
|
|
(GLOBAL TOWER CORRIDOR STAIRWAY HATCH LADDER)
|
|
(FLAGS ONBIT RLANDBIT INDOORSBIT NARTICLEBIT)
|
|
(NORTH TO VESTIBULE)
|
|
(UP PER ENTER-LAB)
|
|
(DOWN PER DOWN-LADDER?)
|
|
(OUT TO VESTIBULE)
|
|
(ACTION ROUND-CHAMBER-F)
|
|
(PSEUDO "CHAMBER" HERE-F)>
|
|
|
|
<ROUTINE ROUND-CHAMBER-F (CONTEXT)
|
|
<COND (<EQUAL? .CONTEXT ,M-LOOK>
|
|
<TELL
|
|
"You're in a round chamber at the very heart of the " D ,TOWER ". The clammy stone walls are hung with a " D ,ART ", all the same size and identically framed. Years of neglect have blackened the art almost beyond recognition.">
|
|
<COND (<IN? ,CRANK ,ROUND-CHAMBER>
|
|
<MENTION-CRANK>)>
|
|
<TELL CR CR "In the " D ,CORNER " is a">
|
|
<OPEN-CLOSED ,HATCH T>
|
|
<TELL D ,HATCH ".">
|
|
<COND (<FSET? ,HATCH ,OPENBIT>
|
|
<TELL
|
|
" Peering downward, you see a " D ,LADDER " descending into gloom.">)>
|
|
<TELL CR CR
|
|
"A " D ,CORRIDOR " disappears " <TO-N> ", and a damp " D ,STAIRWAY " winds upward into the " D ,TOWER "." CR>)>>
|
|
|
|
<ROUTINE ENTER-LAB ()
|
|
<SETG FUZZY-FROM ,LABORATORY>
|
|
<SETG FUZZY? T>
|
|
<RETURN ,FUZZY>>
|
|
|
|
<ROUTINE DOWN-LADDER? ()
|
|
<COND (<NOT <FSET? ,HATCH ,OPENBIT>>
|
|
<ITS-CLOSED ,HATCH>
|
|
<RFALSE>)
|
|
(T
|
|
<COND (,CLAMPED?
|
|
<FCLEAR ,TORTURE-CHAMBER ,TOUCHBIT>
|
|
<TELL
|
|
"\"Saved at last!\" mews a familiar voice as you descend." CR CR>)>
|
|
<RETURN ,TORTURE-CHAMBER>)>>
|
|
|
|
<OBJECT ART
|
|
(IN ROUND-CHAMBER)
|
|
(DESC "series of paintings")
|
|
(SYNONYM PAINTING PICTUR SERIES SEQUENCE)
|
|
(ADJECTIVE ART PRINCESS QUEEN)
|
|
(FLAGS NDESCBIT TRYTAKEBIT)
|
|
(ACTION ART-F)>
|
|
|
|
<ROUTINE ART-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<COUNT-ART>
|
|
<TELL " It seems to be a tragic sequence involving a beautiful princess and a wicked queen.">
|
|
<COND (<IN? ,CRANK ,ROUND-CHAMBER>
|
|
<MENTION-CRANK>)>
|
|
<CRLF>
|
|
<RTRUE>)
|
|
(<VERB? LOOK-BEHIND LOOK-UNDER>
|
|
<COND (<IN? ,CRANK ,ROUND-CHAMBER>
|
|
<THIS-IS-IT ,CRANK>
|
|
<TELL "Aside from the " D ,CRANK
|
|
", you see nothing " <PICK-ONE ,YAWNS> "." CR>)
|
|
(T
|
|
<SHOW-CRANK>)>
|
|
<RTRUE>)
|
|
(<AND <VERB? TAKE>
|
|
<EQUAL? ,PRSO ,ART>>
|
|
<TELL ,CANT " take the " D ,ART "." CR>
|
|
<RTRUE>)
|
|
(<MOVING? ,ART>
|
|
<COND (<IN? ,CRANK ,ROUND-CHAMBER>
|
|
<HACK-HACK "Further meddling with">)
|
|
(T
|
|
<SHOW-CRANK>)>
|
|
<RTRUE>)
|
|
(<HURT? ,ART>
|
|
<SAY-THE ,ART>
|
|
<TELL " is already in pretty bad shape." CR>
|
|
<RTRUE>)
|
|
(<VERB? COUNT>
|
|
<COUNT-ART>
|
|
<CRLF>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE COUNT-ART ()
|
|
<TELL "There are 13 paintings in the series.">>
|
|
|
|
<ROUTINE SHOW-CRANK ()
|
|
<MOVE ,CRANK ,ROUND-CHAMBER>
|
|
<THIS-IS-IT ,CRANK>
|
|
<TELL "Moving aside one of the paintings reveals">
|
|
<SAY-CRANK>
|
|
<CRLF>>
|
|
|
|
<ROUTINE MENTION-CRANK ()
|
|
<TELL " One of the paintings has been moved to reveal">
|
|
<SAY-CRANK>>
|
|
|
|
<ROUTINE SAY-CRANK ()
|
|
<TELL " a " D ,CRANK " attached to the wall.">>
|
|
|
|
<OBJECT CRANK
|
|
(DESC "metal crank")
|
|
(SYNONYM CRANK)
|
|
(ADJECTIVE METAL)
|
|
(FLAGS TRYTAKEBIT NDESCBIT RMUNGBIT)
|
|
(ACTION CRANK-F)>
|
|
|
|
; "RMUNGBIT = crank not yet turned"
|
|
|
|
<ROUTINE CRANK-F ()
|
|
<COND (<AND <VERB? TURN SPIN USE>
|
|
<EQUAL? ,PRSO ,CRANK>>
|
|
<TELL "As you turn the " D ,CRANK " you ">
|
|
<HEAR-BRIDGE>
|
|
<COND (<FSET? ,CRANK ,RMUNGBIT>
|
|
<FCLEAR ,CRANK ,RMUNGBIT>
|
|
<CRLF>
|
|
<UPDATE-SCORE 1>)>
|
|
<RTRUE>)
|
|
(<VERB? EXAMINE>
|
|
<FIRMLY-ATTACHED>
|
|
<RTRUE>)
|
|
(<OR <HURT? ,CRANK>
|
|
<VERB? PULL PUSH>>
|
|
<FIRMLY-ATTACHED T>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE FIRMLY-ATTACHED ("OPTIONAL" (STILL? <>))
|
|
<SAY-THE ,CRANK>
|
|
<TELL " is">
|
|
<COND (.STILL?
|
|
<TELL " still">)>
|
|
<TELL " firmly attached to the wall." CR>>
|
|
|
|
<ROUTINE HEAR-BRIDGE ()
|
|
<FCLEAR ,VESTIBULE ,TOUCHBIT>
|
|
<TELL "hear the distant rattle of the " D ,DRAWBRIDGE>
|
|
<COND (<FSET? ,DRAWBRIDGE ,OPENBIT>
|
|
<FCLEAR ,DRAWBRIDGE ,OPENBIT>
|
|
<TELL " closing">)
|
|
(T
|
|
<FSET ,DRAWBRIDGE ,OPENBIT>
|
|
<TELL " opening">)>
|
|
<TELL "." CR>>
|
|
|
|
"*** VESTIBULE ***"
|
|
|
|
<OBJECT CORRIDOR
|
|
(IN LOCAL-GLOBALS)
|
|
(DESC "corridor")
|
|
(SYNONYM HALL HALLWAY CORRIDOR ENTRANCE)
|
|
(ADJECTIVE SHORT DARK)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION CORRIDOR-F)>
|
|
|
|
<ROUTINE CORRIDOR-F ()
|
|
<COND (<VERB? FOLLOW WALK-TO ENTER THROUGH USE EXIT>
|
|
<COND (<EQUAL? ,HERE ,LOBBY ,VESTIBULE>
|
|
<DO-WALK ,P?IN>)
|
|
(T
|
|
<DO-WALK ,P?OUT>)>)
|
|
(<VERB? EXAMINE LOOK-INSIDE LOOK-DOWN>
|
|
<SAY-THE ,CORRIDOR>
|
|
<TELL " leads ">
|
|
<COND (<EQUAL? ,HERE ,LOBBY ,VESTIBULE>
|
|
<TELL "in">)
|
|
(T
|
|
<TELL "out">)>
|
|
<TELL "side." CR>)
|
|
(<VERB? LISTEN>
|
|
<PERFORM ,V?LISTEN ,SOUND>)
|
|
(T
|
|
<YOU-DONT-NEED ,CORRIDOR>
|
|
<RFATAL>)>
|
|
<RTRUE>>
|
|
|
|
<OBJECT VESTIBULE
|
|
(IN ROOMS)
|
|
(DESC "Vestibule")
|
|
(GLOBAL TOWER DRAWBRIDGE CORRIDOR)
|
|
(NORTH PER EXIT-TOWER?)
|
|
(SOUTH PER INTO-ROUND-CHAMBER)
|
|
(IN PER INTO-ROUND-CHAMBER)
|
|
(OUT PER EXIT-TOWER?)
|
|
(FLAGS ONBIT RLANDBIT INDOORSBIT WETBIT)
|
|
(ACTION VESTIBULE-F)
|
|
(PSEUDO "VESTIBULE" HERE-F)>
|
|
|
|
<ROUTINE EXIT-TOWER? ()
|
|
<COND (<ESCAPING-CRISP?>
|
|
<RFALSE>)
|
|
(<FSET? ,DRAWBRIDGE ,OPENBIT>
|
|
<ENABLE <QUEUE I-SLAM-BRIDGE -1>>
|
|
<RETURN ,HILLTOP>)
|
|
(T
|
|
<ITS-CLOSED ,DRAWBRIDGE>
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE I-SLAM-BRIDGE ()
|
|
<DISABLE <INT I-SLAM-BRIDGE>>
|
|
<FCLEAR ,DRAWBRIDGE ,OPENBIT>
|
|
<START-BUZZ 6>
|
|
; <MOVE ,SCOPE ,HILLTOP>
|
|
<TELL CR "The moment you take your foot off the " D ,DRAWBRIDGE
|
|
" it swings up over the " D ,MOAT " and closes with a mighty thud." CR>>
|
|
|
|
<ROUTINE ESCAPING-CRISP? ()
|
|
<COND (<ENABLED? ,I-CRISP-CAPTURE>
|
|
<TELL "Uh-oh! Somebody's closing the " D ,DRAWBRIDGE "!" CR>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE INTO-ROUND-CHAMBER ()
|
|
<COND (<ESCAPING-CRISP?>
|
|
<RFALSE>)
|
|
(T
|
|
<RETURN ,ROUND-CHAMBER>)>>
|
|
|
|
<ROUTINE VESTIBULE-F (CONTEXT)
|
|
<COND (<EQUAL? .CONTEXT ,M-LOOK>
|
|
<STANDING>
|
|
<TELL
|
|
"in a dimly-lit vestibule just inside the " D ,TOWER "'s " D ,ENTRANCE ". ">
|
|
<SAY-THE ,DRAWBRIDGE>
|
|
<TELL " is ">
|
|
<COND (<FSET? ,DRAWBRIDGE ,OPENBIT>
|
|
<TELL "opened across the moat " <TO-N> >)
|
|
(T
|
|
<TELL "closed against the north wall">)>
|
|
<TELL
|
|
". A short " D ,CORRIDOR " leads south, into the " D ,TOWER "." CR>)>>
|
|
|
|
"*** TORTURE CHAMBER ***"
|
|
|
|
<ROUTINE CHAIN-PROOF? (OBJ)
|
|
<COND (<OR <NOT ,CHAINED?>
|
|
<TALKING-TO? .OBJ>
|
|
<VERB? EXAMINE LOOK-UNDER LOOK-THRU LOOK-INSIDE LOOK-ON
|
|
LOOK-DOWN LOOK-BEHIND LISTEN READ YELL>>
|
|
<RFALSE>)
|
|
(T
|
|
<TELL ,CANT " reach ">
|
|
<ARTICLE .OBJ T>
|
|
<PRINTD .OBJ>
|
|
<WHILE-CHAINED>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE WHILE-CHAINED ()
|
|
<TELL " while you're chained up." CR>>
|
|
|
|
<OBJECT HATCH
|
|
(IN LOCAL-GLOBALS)
|
|
(DESC "hatch")
|
|
(SYNONYM HATCH HATCHWAY DOOR)
|
|
(ADJECTIVE MASSIVE OAK)
|
|
(FLAGS NDESCBIT DOORBIT OPENBIT)
|
|
(ACTION HATCH-F)>
|
|
|
|
<ROUTINE HATCH-F ("AUX" OPEN?)
|
|
<THIS-IS-IT ,HATCH>
|
|
<SET OPEN? <FSET? ,HATCH ,OPENBIT>>
|
|
<COND (<CHAIN-PROOF? ,HATCH>
|
|
<RTRUE>)
|
|
(<VERB? EXAMINE LOOK-INSIDE>
|
|
<COND (.OPEN?
|
|
<SAY-THE ,HATCH>
|
|
<TELL " leads ">
|
|
<COND (<EQUAL? ,HERE ,ROUND-CHAMBER>
|
|
<TELL "downward into gloom">)
|
|
(T
|
|
<TELL "up into the " D ,TOWER>)>
|
|
<TELL "." CR>)
|
|
(T
|
|
<ITS-CLOSED ,HATCH>)>
|
|
<RTRUE>)
|
|
(<VERB? OPEN RAISE>
|
|
<COND (.OPEN?
|
|
<ALREADY-OPEN>)
|
|
(T
|
|
<FSET ,HATCH ,OPENBIT>
|
|
<TELL "The heavy " D ,HATCH " opens reluctantly." CR>)>
|
|
<RTRUE>)
|
|
(<VERB? CLOSE LOWER>
|
|
<COND (.OPEN?
|
|
<FCLEAR ,HATCH ,OPENBIT>
|
|
<SAY-THE ,HATCH>
|
|
<TELL " closes with a heavy thud." CR>)
|
|
(T
|
|
<ALREADY-CLOSED>)>
|
|
<RTRUE>)
|
|
(<VERB? PUSH>
|
|
<COND (<EQUAL? ,HERE ,ROUND-CHAMBER>
|
|
<PERFORM ,V?CLOSE ,HATCH>)
|
|
(T
|
|
<PERFORM ,V?OPEN ,HATCH>)>
|
|
<RTRUE>)
|
|
(<VERB? MOVE PULL>
|
|
<COND (<EQUAL? ,HERE ,TORTURE-CHAMBER>
|
|
<PERFORM ,V?CLOSE ,HATCH>)
|
|
(T
|
|
<PERFORM ,V?OPEN ,HATCH>)>
|
|
<RTRUE>)
|
|
(<VERB? ENTER THROUGH WALK-TO>
|
|
<COND (<EQUAL? ,HERE ,ROUND-CHAMBER>
|
|
<DO-WALK ,P?DOWN>)
|
|
(T
|
|
<DO-WALK ,P?UP>)>
|
|
<RTRUE>)
|
|
(<VERB? CLIMB-DOWN>
|
|
<DO-WALK ,P?DOWN>
|
|
<RTRUE>)
|
|
(<VERB? CLIMB-UP>
|
|
<DO-WALK ,P?UP>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<OBJECT LADDER
|
|
(IN LOCAL-GLOBALS)
|
|
(DESC "ladder")
|
|
(SYNONYM LADDER)
|
|
(ADJECTIVE WOOD WOODEN)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION LADDER-F)>
|
|
|
|
<ROUTINE LADDER-F ()
|
|
<COND (<AND <NOT <FSET? ,HATCH ,OPENBIT>>
|
|
<EQUAL? ,HERE ,ROUND-CHAMBER>>
|
|
<CANT-SEE-ANY ,LADDER>
|
|
<RFATAL>)
|
|
(<VERB? CLIMB-ON USE>
|
|
<COND (<FSET? ,HATCH ,OPENBIT>
|
|
<COND (<EQUAL? ,HERE ,TORTURE-CHAMBER>
|
|
<DO-WALK ,P?UP>)
|
|
(T
|
|
<DO-WALK ,P?DOWN>)>)
|
|
(T
|
|
<ITS-CLOSED ,HATCH>)>
|
|
<RTRUE>)
|
|
(<VERB? CLIMB-DOWN>
|
|
<COND (<EQUAL? ,HERE ,ROUND-CHAMBER>
|
|
<DO-WALK ,P?DOWN>)
|
|
(T
|
|
<ALREADY-AT ,LADDER>)>
|
|
<RTRUE>)
|
|
(<VERB? CLIMB-UP>
|
|
<COND (<EQUAL? ,HERE ,TORTURE-CHAMBER>
|
|
<PERFORM ,V?CLIMB-ON ,LADDER>)
|
|
(T
|
|
<ALREADY-AT ,LADDER T>)>
|
|
<RTRUE>)
|
|
(<VERB? SIT STAND-ON LIE-DOWN>
|
|
<LOITERING-ON ,LADDER>
|
|
<RTRUE>)
|
|
(<VERB? THROUGH>
|
|
<COND (<NOT <EQUAL? ,HERE ,TORTURE-CHAMBER>>
|
|
<TELL ,CANT " do that here." CR>)
|
|
(,CHAINED?
|
|
<NOT-GOING-ANYWHERE>)
|
|
(T
|
|
<TELL ,OKAY
|
|
"you just walked under the " D ,LADDER "." CR>
|
|
<BAD-LUCK "walk under a ladder">)>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<OBJECT TORTURE-CHAMBER
|
|
(IN ROOMS)
|
|
(DESC "Torture Chamber")
|
|
(FLAGS ONBIT RLANDBIT INDOORSBIT)
|
|
(GLOBAL TOWER HATCH LADDER)
|
|
(UP PER EXIT-TORTURE?)
|
|
(OUT PER EXIT-TORTURE?)
|
|
(PSEUDO "CHAMBER" HERE-F)
|
|
(ACTION TORTURE-CHAMBER-F)>
|
|
|
|
<ROUTINE EXIT-TORTURE? ()
|
|
<COND (,CHAINED?
|
|
<NOT-GOING-ANYWHERE>
|
|
<RFALSE>)
|
|
(<FSET? ,HATCH ,OPENBIT>
|
|
<COND (,CLAMPED?
|
|
<TELL
|
|
"\"Don't leave me here to die!\" mews " D ,PRINCESS "." CR CR>)>
|
|
<RETURN ,ROUND-CHAMBER>)
|
|
(T
|
|
<ITS-CLOSED ,HATCH>
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE NOT-GOING-ANYWHERE ()
|
|
<TELL "You're not going anywhere">
|
|
<WHILE-CHAINED>>
|
|
|
|
<ROUTINE TORTURE-CHAMBER-F (CONTEXT)
|
|
<COND (<EQUAL? .CONTEXT ,M-LOOK>
|
|
<TELL "You're ">
|
|
<COND (,CHAINED?
|
|
<TELL "chained up in the " D ,CORNER " of">)
|
|
(T
|
|
<TELL "in">)>
|
|
<TELL
|
|
" a dim, stuffy chamber, deep within the bowels of the " D ,TOWER ". The walls gleam with obscure " D ,INSTRUMENTS "s, and a diabolical " D ,TMACHINE " occupies most of the opposite " D ,CORNER "." CR CR>
|
|
<COND (<IN? ,PRINCESS ,TORTURE-CHAMBER>
|
|
<TELL D ,PRINCESS " is ">
|
|
<COND (,CLAMPED?
|
|
<TELL "clamped into the " D ,TMACHINE "!">)
|
|
(T
|
|
<TELL "waddling around the chamber.">)>
|
|
<TELL CR CR>)>
|
|
<TELL "A " D ,LADDER " rises to meet a">
|
|
<OPEN-CLOSED ,HATCH T>
|
|
<TELL D ,HATCH " in the middle of the ceiling." CR>
|
|
<COND (<IN? ,CRISP ,TORTURE-CHAMBER>
|
|
<TELL CR D ,CRISP " is " <PICK-ONE ,STROLLS>
|
|
"." CR>)>)>>
|
|
|
|
<GLOBAL STROLLS
|
|
<LTABLE 0
|
|
"strolling around dusting off the instruments"
|
|
"fondling the instruments, one by one"
|
|
"gently polishing the diabolical machine">>
|
|
|
|
<OBJECT INSTRUMENTS
|
|
(IN TORTURE-CHAMBER)
|
|
(DESC "medical instrument")
|
|
(SYNONYM INSTRUMENTS)
|
|
(ADJECTIVE OBSCURE MEDICAL TORTURE)
|
|
(FLAGS NDESCBIT TRYTAKEBIT READBIT)
|
|
(ACTION INSTRUMENTS-F)>
|
|
|
|
<ROUTINE INSTRUMENTS-F ()
|
|
<COND (<CHAIN-PROOF? ,INSTRUMENTS>
|
|
<RTRUE>)
|
|
(<VERB? EXAMINE LOOK-ON READ>
|
|
<TELL "One of the " D ,INSTRUMENTS "s is labeled, \"">
|
|
<FROBOZZ "Truth Extractor">
|
|
<TELL ".\" Gulp!" CR>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "Better keep away from the " D ,INSTRUMENTS
|
|
"s. You might hurt somebody." CR>
|
|
<RFATAL>)>>
|
|
|
|
<OBJECT CHAINS
|
|
(IN VESTIBULE)
|
|
(DESC "chain")
|
|
(SYNONYM CHAIN CHAINS SHACKLES BONDS)
|
|
(ADJECTIVE HEAVY)
|
|
(FLAGS NDESCBIT TRYTAKEBIT DOORBIT LOCKEDBIT)
|
|
(ACTION CHAINS-F)>
|
|
|
|
<GLOBAL CHAINED? <>>
|
|
|
|
<ROUTINE CHAINS-F ()
|
|
<THIS-IS-IT ,CHAINS>
|
|
<COND (<EQUAL? ,HERE ,VESTIBULE>
|
|
<TAKE-MIND-OFF ,CHAINS>
|
|
<RTRUE>)
|
|
(<AND <VERB? CLOSE LOCK>
|
|
<EQUAL? ,PRSO ,CHAINS>
|
|
<NOT ,CHAINED?>>
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>)
|
|
|
|
(<AND <VERB? OPEN UNLOCK RELEASE>
|
|
<EQUAL? ,PRSO ,CHAINS>>
|
|
<COND (<NOT ,CHAINED?>
|
|
<ALREADY-OPEN>)
|
|
(<NOT ,PRSI>
|
|
<TELL "(with " D ,HANDS ")" CR>
|
|
<THING-WONT-LOCK ,HANDS ,PRSO T>)
|
|
(<NOT <EQUAL? ,PRSI ,KEY>>
|
|
<THING-WONT-LOCK ,PRSI ,PRSO T>)
|
|
(<NOT <IN? ,KEY ,PROTAGONIST>>
|
|
<YOUD-HAVE-TO "be holding" ,KEY>)
|
|
(T
|
|
<OPEN-TORTURE-CHAINS>
|
|
<SAY-CHAIN-OPEN>
|
|
<CRLF>
|
|
<UPDATE-SCORE 1>)>
|
|
<RTRUE>)
|
|
(<OR <HURT? ,CHAINS>
|
|
<MOVING? ,CHAINS>
|
|
<VERB? PICK EXAMINE LOOK-ON>>
|
|
<TELL "The">
|
|
<OPEN-CLOSED ,CHAINS>
|
|
<TELL D ,CHAINS " is securely bolted into the floor." CR>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE OPEN-TORTURE-CHAINS ("AUX" OBJ)
|
|
<SETG CHAINED? <>>
|
|
<FSET ,CHAINS ,OPENBIT>
|
|
<FCLEAR ,CHAINS ,LOCKEDBIT>
|
|
<SET OBJ <FIRST? ,TORTURE-CHAMBER>>
|
|
<REPEAT ()
|
|
<COND (.OBJ
|
|
<FCLEAR .OBJ ,THROWNBIT>
|
|
<SET OBJ <NEXT? .OBJ>>)
|
|
(T
|
|
<RETURN>)>>>
|
|
|
|
<ROUTINE SAY-CHAIN-OPEN ()
|
|
<TELL ,OKAY "the " D ,CHAINS " is now unlocked and open." CR>>
|
|
|
|
<GLOBAL COAT-WORN? T>
|
|
|
|
<OBJECT COAT
|
|
(IN TORTURE-CHAMBER)
|
|
(DESC "white lab coat")
|
|
(SYNONYM COAT JACKET SMOCK)
|
|
(ADJECTIVE WHITE POCKET LAB LABORA DIRTY COLLAR)
|
|
(FLAGS NDESCBIT TAKEBIT WEARBIT CONTBIT OPENBIT)
|
|
(VALUE 0)
|
|
(SIZE 5)
|
|
(CAPACITY 2)
|
|
(ACTION COAT-F)
|
|
(CONTFCN IN-COAT)>
|
|
|
|
<ROUTINE IN-COAT (CONTEXT)
|
|
<COND (<EQUAL? .CONTEXT ,M-CONT>
|
|
<COND (<AND <VERB? ASK-FOR ASK-ABOUT>
|
|
,COAT-WORN?>
|
|
<NOT-LIKELY ,CRISP "would respond">
|
|
<RFATAL>)
|
|
(<SEE-VERB?>
|
|
<YOU-CANT-SEE>
|
|
<ARTICLE ,PRSO T>
|
|
<TELL D ,PRSO "." CR>
|
|
<RTRUE>)
|
|
(,COAT-WORN?
|
|
<CRISP-WEARING>
|
|
<RTRUE>)
|
|
(<NOT <IN? ,COAT ,PROTAGONIST>>
|
|
<YOUD-HAVE-TO "pick up" ,COAT>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>)>>
|
|
|
|
<ROUTINE COAT-F ("AUX" OBJ NXT)
|
|
<THIS-IS-IT ,COAT>
|
|
<COND (<VERB? EXAMINE>
|
|
<SAY-THE ,COAT>
|
|
<TELL " isn't as clean as the one your doctor wears." CR>
|
|
<RTRUE>)
|
|
(,COAT-WORN?
|
|
<CRISP-WEARING>
|
|
<RTRUE>)
|
|
(<AND <VERB? LOOK-INSIDE SEARCH LOOK-DOWN>
|
|
<NOT <IN? ,COAT ,PROTAGONIST>>>
|
|
<YOUD-HAVE-TO "be holding" ,COAT>
|
|
<RTRUE>)
|
|
(<AND <VERB? TAKE>
|
|
<EQUAL? ,PRSO ,COAT>
|
|
,CHAINED?
|
|
<NOT <FSET? ,COAT ,TOUCHBIT>>>
|
|
<COND (<ITAKE>
|
|
<SAY-THE ,CHAINS>
|
|
<TELL
|
|
"s cut painfully into your wrist as you strain to grasp the " D ,COAT ". Your fingertips brush against the collar... There! You got it!" CR>)>
|
|
<RTRUE>)
|
|
(<VERB? OPEN CLOSE>
|
|
<TELL "You don't need to do that." CR>
|
|
<RTRUE>)
|
|
(<AND <VERB? STAND-ON SIT LIE-DOWN CROSS>
|
|
<EQUAL? ,PRSO ,COAT>>
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>)
|
|
(<AND <VERB? COVER PUT-ON PUT-UNDER>
|
|
<EQUAL? ,PRSI ,COAT>>
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE CRISP-WEARING ()
|
|
<TELL ,CANT " do that while " D ,CRISP
|
|
" is wearing the coat!" CR>>
|
|
|
|
<OBJECT KEY
|
|
(IN COAT)
|
|
(DESC "rusty key")
|
|
(SYNONYM KEY)
|
|
(ADJECTIVE RUSTY RUSTED)
|
|
(FLAGS NDESCBIT TAKEBIT TOOLBIT)
|
|
(VALUE 3)
|
|
(SIZE 1)
|
|
(ACTION KEY-F)>
|
|
|
|
<ROUTINE KEY-F ()
|
|
<COND (<AND <VERB? EXAMINE>
|
|
<EQUAL? ,HERE ,TORTURE-CHAMBER ,LABORATORY>>
|
|
<SAY-THE ,KEY>
|
|
<TELL
|
|
" looks as if it would fit into the " D ,CHAINS "." CR>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<OBJECT TMACHINE
|
|
(IN TORTURE-CHAMBER)
|
|
(DESC "torture machine")
|
|
(SYNONYM MACHINE MECHANISM CLAMP CLAMPS)
|
|
(ADJECTIVE TORTURE DIABOLICAL)
|
|
(FLAGS TRYTAKEBIT NDESCBIT CONTBIT OPENBIT)
|
|
(CAPACITY 20)
|
|
(ACTION TMACHINE-F)>
|
|
|
|
<ROUTINE TMACHINE-F ()
|
|
<COND (<VERB? EXAMINE LOOK-ON LOOK-INSIDE>
|
|
<SAY-THE ,TMACHINE>
|
|
<TELL " has a " D ,LEVER " that">
|
|
<DESCRIBE-LEVER>
|
|
<TELL " ">
|
|
<COND (,CLAMPED?
|
|
<TELL D ,PRINCESS " is clamped">)
|
|
(T
|
|
<TELL ,YOU-SEE>
|
|
<PRINT-CONTENTS ,TMACHINE>)>
|
|
<TELL " inside." CR>
|
|
<RTRUE>)
|
|
(<AND <VERB? PUT PUT-ON>
|
|
<EQUAL? ,PRSI ,TMACHINE>
|
|
<EQUAL? ,PRSO ,KITTY>
|
|
,CLAMPED?>
|
|
<TELL D ,PRINCESS " stops you. \"I don't like animals!\"" CR>
|
|
<RTRUE>)
|
|
(<MOVING? ,TMACHINE>
|
|
<TOO-LARGE ,TMACHINE>
|
|
<RTRUE>)
|
|
(<VERB? CLOSE>
|
|
<HOW?>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<OBJECT LEVER
|
|
(IN TORTURE-CHAMBER)
|
|
(DESC "lever")
|
|
(SYNONYM LEVER)
|
|
(FLAGS NDESCBIT TRYTAKEBIT)
|
|
(ACTION LEVER-F)>
|
|
|
|
<ROUTINE LEVER-F ()
|
|
<COND (<CHAIN-PROOF? ,LEVER>
|
|
<RTRUE>)
|
|
(<VERB? EXAMINE>
|
|
<SAY-THE ,LEVER>
|
|
<TELL
|
|
" is attached to the " D ,TMACHINE " in which " D ,PRINCESS " ">
|
|
<COND (,CLAMPED?
|
|
<TELL "i">)
|
|
(T
|
|
<TELL "wa">)>
|
|
<TELL "s clamped. It">
|
|
<DESCRIBE-LEVER>
|
|
<CRLF>
|
|
<RTRUE>)
|
|
(<VERB? PUSH RAISE>
|
|
<COND (,CLAMPED?
|
|
<TELL "\"No!\" screams " D ,PRINCESS "." CR CR>)>
|
|
<SAY-THE ,TMACHINE>
|
|
<TELL
|
|
" emits a dreadful grinding noise and goes through a series of complicated gyrations. ">
|
|
<COND (,CLAMPED?
|
|
<PRINCESS-POOF>
|
|
<TORTURE ,PRINCESS>)
|
|
(<IN? ,KITTY ,TMACHINE>
|
|
<DISABLE <INT ,I-FRISKY>>
|
|
<TORTURE ,KITTY>)
|
|
(<FIRST? ,TMACHINE>
|
|
<MOVE-ALL ,TMACHINE ,STEEP-TRAIL>
|
|
<TELL
|
|
"When the grinding stops, the mechanism is empty.">)
|
|
(T
|
|
<TELL
|
|
"Good thing " D ,PRINCESS " wasn't clamped into that awful thing!">)>
|
|
<CRLF>
|
|
<RTRUE>)
|
|
(<VERB? PULL LOWER>
|
|
<TELL "The clamps on the " D ,TMACHINE " retract">
|
|
<COND (,CLAMPED?
|
|
<PRINCESS-POOF>
|
|
<TELL
|
|
", and " D ,PRINCESS " leaps off. She's free!|
|
|
|
|
|
\"Again you spare my unworthy life" ,ADVENTURER ".\" The " D ,PLATYPUS
|
|
" humbly licks your shoe, to your considerable embarrassment. \"My father, "
|
|
D ,KING ", does not forget such kindness.\"|
|
|
|
|
|
The little creature produces a " D ,WHISTLE " from her gown and blows into it gently. ">
|
|
<WHISTLE-SOUND>
|
|
<TELL CR
|
|
"\"Your journey is not yet ended,\" she warns as a whirlpool of colored light envelops her. \"But even if you fail, your deeds shall live forever in our legends. Have faith!\"|
|
|
|
|
|
When the colors fade, " D ,PRINCESS " is gone">)>
|
|
<TELL "." CR>
|
|
<RTRUE>)
|
|
(<VERB? USE MOVE>
|
|
<SAY-THE ,LEVER>
|
|
<DESCRIBE-LEVER>
|
|
<CRLF>
|
|
<RTRUE>)
|
|
(<AND <VERB? TAKE MUNG>
|
|
<EQUAL? ,PRSO ,LEVER>>
|
|
<SAY-THE ,LEVER>
|
|
<TELL " is firmly attached to the " D ,TMACHINE "." CR>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE DESCRIBE-LEVER ()
|
|
<TELL " can be pushed up or pulled down.">>
|
|
|
|
<ROUTINE PRINCESS-POOF ()
|
|
<SETG CLAMPED? <>>
|
|
<MOVE ,PRINCESS ,THRONE-ROOM>
|
|
<DISABLE <INT I-PRINCESS-CALLS>>>
|
|
|
|
<ROUTINE TORTURE (THING)
|
|
<MOVE-ALL ,TMACHINE ,STEEP-TRAIL>
|
|
<TELL "Mewling piteously, ">
|
|
<ARTICLE .THING T>
|
|
<TELL D .THING
|
|
" disappears into the whirling mass of gears. There's not a bone to be seen when the machine stops." CR CR>
|
|
<UPDATE-SCORE -10>
|
|
<TELL CR
|
|
"(You ought to be ashamed of yourself!)">>
|
|
|
|
"*** FUZZY ***"
|
|
|
|
<OBJECT FUZZY
|
|
(IN ROOMS)
|
|
(DESC "Fuzziness")
|
|
(FLAGS ONBIT RLANDBIT)
|
|
(NORTH PER TOO-FUZZY)
|
|
(SOUTH PER TOO-FUZZY)
|
|
(EAST PER TOO-FUZZY)
|
|
(WEST PER TOO-FUZZY)
|
|
(UP PER TOO-FUZZY)
|
|
(DOWN PER TOO-FUZZY)
|
|
(IN PER TOO-FUZZY)
|
|
(OUT PER TOO-FUZZY)
|
|
(ACTION FUZZY-F)>
|
|
|
|
<GLOBAL FUZZY-FROM LOBBY>
|
|
<GLOBAL FUZZY? <>>
|
|
|
|
<ROUTINE FUZZY-F (CONTEXT "AUX" F S)
|
|
<COND (<EQUAL? .CONTEXT ,M-BEG>
|
|
<COND (<SEE-VERB?>
|
|
<TELL ,CANT ". ">
|
|
<ALL-FUZZY>
|
|
<RFATAL>)
|
|
(T
|
|
<RFALSE>)>)
|
|
(<EQUAL? .CONTEXT ,M-LOOK>
|
|
<SET F <PICK-ONE ,BLURS>>
|
|
<REPEAT ()
|
|
<SET S <PICK-ONE ,BLURS>>
|
|
<COND (<NOT <EQUAL? .S .F>>
|
|
<RETURN>)>>
|
|
<TELL "Everything around you appears " .F " and " .S "." CR>
|
|
<FCLEAR ,FUZZY ,TOUCHBIT>)>>
|
|
|
|
<ROUTINE TOO-FUZZY ()
|
|
<TELL "It's too " <PICK-ONE ,BLURS> " in that direction." CR>
|
|
<RFALSE>>
|
|
|
|
<GLOBAL BLURS <LTABLE 0 "blurred" "fuzzy" "blurry">>
|
|
|
|
<ROUTINE ALL-FUZZY ()
|
|
<TELL "Everything is too " <PICK-ONE ,BLURS> "!" CR>>
|
|
|
|
<OBJECT LABORATORY
|
|
(IN ROOMS)
|
|
(DESC "Laboratory")
|
|
(FLAGS ONBIT RLANDBIT INDOORSBIT)
|
|
(GLOBAL TOWER STAIRWAY WINDOW FESTERON)
|
|
(NORTH "The only north exit is through the window.")
|
|
(OUT PER EXIT-LAB)
|
|
(DOWN PER EXIT-LAB)
|
|
(ACTION LABORATORY-F)
|
|
(PSEUDO "LABORA" HERE-F "LAB" HERE-F)>
|
|
|
|
<ROUTINE LABORATORY-F (CONTEXT)
|
|
<COND (<EQUAL? .CONTEXT ,M-LOOK>
|
|
<TELL "The highest room in the " D ,TOWER
|
|
" is a laboratory, complete with bubbling " D ,CHEMICALS
|
|
" and foul odors. An " D ,SCOPE " is mounted near an open " D ,WINDOW " "
|
|
<TO-N> ", and a " D ,PANEL " occupies most of the south wall.|
|
|
|
|
|
The only exit is a damp " D ,STAIRWAY " leading downward." CR>)>>
|
|
|
|
<ROUTINE EXIT-LAB ()
|
|
<SETG FUZZY? T>
|
|
<SETG FUZZY-FROM ,ROUND-CHAMBER>
|
|
<FCLEAR ,FUZZY ,TOUCHBIT>
|
|
<RETURN ,FUZZY>>
|
|
|
|
<OBJECT SCOPE
|
|
(IN LABORATORY)
|
|
(DESC "antique telescope")
|
|
(SYNONYM TELESCOPE SCOPE)
|
|
(ADJECTIVE ANTIQUE)
|
|
(FLAGS NDESCBIT TRYTAKEBIT VOWELBIT)
|
|
(ACTION SCOPE-F)>
|
|
|
|
<ROUTINE SCOPE-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<SAY-THE ,SCOPE>
|
|
<TELL " is pointing out the " D ,WINDOW "." CR>
|
|
<RTRUE>)
|
|
; (<EQUAL? ,HERE ,HILLTOP>
|
|
<TOO-FAR-AWAY ,SCOPE>
|
|
<RTRUE>)
|
|
(<IMAGE? ,SCOPE>
|
|
<RFATAL>)
|
|
(<VERB? LOOK-INSIDE LOOK-THRU USE LOOK-DOWN>
|
|
<TELL
|
|
"Peering through the " D ,SCOPE " makes everything appear much closer." CR>
|
|
<RTRUE>)
|
|
(<MOVING? ,SCOPE>
|
|
<SAY-THE ,SCOPE>
|
|
<TELL " is bolted securely in place." CR>
|
|
<RTRUE>)
|
|
(<HURT? ,SCOPE>
|
|
<RUIN ,SCOPE>
|
|
<RTRUE>)
|
|
(T
|
|
<YOU-DONT-NEED ,SCOPE>
|
|
<RFATAL>)>>
|
|
|
|
<ROUTINE IMAGE? (THING)
|
|
<COND (<EQUAL? ,HERE ,INSIDE-THEATER>
|
|
<COND (<AND <VERB? THROW>
|
|
<EQUAL? ,PRSI .THING>>
|
|
<PERFORM ,V?THROW ,PRSO ,SCREEN>)
|
|
(T
|
|
<TELL ,CANT>
|
|
<DO-TO>
|
|
<TELL "a movie image!" CR>)>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<OBJECT WINDOW
|
|
(IN LOCAL-GLOBALS)
|
|
(DESC "window")
|
|
(SYNONYM WINDOW)
|
|
(ADJECTIVE DARK)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION WINDOW-F)>
|
|
|
|
<ROUTINE WINDOW-F ()
|
|
<COND (<EQUAL? ,HERE ,ROTARY-NORTH ,INSIDE-CHURCH>
|
|
<COND (<CHURCH-WINDOWS-F>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>)
|
|
(<NOT ,SKEWED?>
|
|
<CANT-SEE-ANY ,WINDOW>
|
|
<RFATAL>)
|
|
(<VERB? EXAMINE>
|
|
<TELL "It's wide open, ">
|
|
<COND (<EQUAL? ,HERE ,HILLTOP>
|
|
<TELL
|
|
"and located a hundred feet above the moat">)
|
|
(T
|
|
<TELL
|
|
"affording a fine view of the " D ,FESTERON>)>
|
|
<TELL "." CR>
|
|
<RTRUE>)
|
|
(<EQUAL? ,HERE ,HILLTOP>
|
|
<TOO-FAR-AWAY ,WINDOW>
|
|
<RTRUE>)
|
|
(<VERB? EXIT LEAP ENTER THROUGH>
|
|
<PERFORM ,V?KILL ,ME>
|
|
<RTRUE>)
|
|
(<VERB? LOOK-INSIDE LOOK-BEHIND USE LOOK-THRU>
|
|
<EXCELLENT-VIEW ,WINDOW>
|
|
<RTRUE>)
|
|
(<VERB? OPEN>
|
|
<ALREADY-OPEN>
|
|
<RTRUE>)
|
|
(<VERB? CLOSE>
|
|
<TELL "It's not that kind of " D ,WINDOW "." CR>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<OBJECT KITTY
|
|
(IN LABORATORY)
|
|
(DESC "black cat")
|
|
(SYNONYM CAT KITTY KITTEN)
|
|
(ADJECTIVE BLACK SLEEPING)
|
|
(FLAGS ACTORBIT TAKEBIT RMUNGBIT)
|
|
(VALUE 0)
|
|
(SIZE 10)
|
|
(ACTION KITTY-F)
|
|
(DESCFCN DESCRIBE-KITTY)>
|
|
|
|
; "RMUNGBIT = CAT SLEEPING"
|
|
|
|
<ROUTINE DESCRIBE-KITTY (CONTEXT)
|
|
<COND (<EQUAL? .CONTEXT ,M-OBJDESC>
|
|
<TELL "A " D ,KITTY " is ">
|
|
<COND (<FSET? ,KITTY ,RMUNGBIT>
|
|
<TELL "sound asleep in the " D ,CORNER>)
|
|
(T
|
|
<TELL "playing around your feet">)>
|
|
<TELL ".">)>>
|
|
|
|
<ROUTINE KITTY-F ("OPTIONAL" (CONTEXT <>))
|
|
<THIS-IS-IT ,KITTY>
|
|
<COND (<VERB? EXAMINE>
|
|
<DESCRIBE-CHAOS>
|
|
<TELL ", and ">
|
|
<COND (<FSET? ,KITTY ,RMUNGBIT>
|
|
<TELL "sound asleep">)
|
|
(<IN? ,KITTY ,PROTAGONIST>
|
|
<TELL "squirming in your arms">)
|
|
(T
|
|
<TELL "playing around your feet">)>
|
|
<TELL "." CR>
|
|
<RTRUE>)
|
|
(<IMAGE? ,KITTY>
|
|
<RFATAL>)
|
|
(<AND <VERB? TAKE>
|
|
<EQUAL? ,PRSO ,KITTY>>
|
|
<COND (<V-TAKE>
|
|
<CRLF>
|
|
<TOUCH-WAKE>)>
|
|
<RTRUE>)
|
|
(<OR <TALKING-TO? ,KITTY>
|
|
<VERB? YELL>>
|
|
<SAY-THE ,KITTY>
|
|
<COND (<FSET? ,KITTY ,RMUNGBIT>
|
|
<WAKE-KITTY>
|
|
<TELL " wakes">)
|
|
(T
|
|
<TELL " perks up its ears">)>
|
|
<TELL " at the sound of your voice." CR>
|
|
<RFATAL>)
|
|
(<VERB? RUB KISS SQUEEZE PLAY>
|
|
<TOUCH-WAKE>
|
|
<RTRUE>)
|
|
(<HURT? ,KITTY>
|
|
<V-RAPE>
|
|
<RTRUE>)
|
|
(<VERB? LISTEN>
|
|
<TELL "\"Purrrrr...\"" CR>
|
|
<RTRUE>)
|
|
(<AND <VERB? GIVE>
|
|
<EQUAL? ,PRSI ,KITTY>>
|
|
<COND (<EQUAL? ,PRSO ,KITTY>
|
|
<TELL <PICK-ONE ,YUKS> CR>)
|
|
(<FSET? ,KITTY ,RMUNGBIT>
|
|
<BUT-THE ,KITTY>
|
|
<TELL "is asleep!" CR>)
|
|
(<AND <EQUAL? ,PRSO ,MILK>
|
|
<NOT ,FUZZY?>
|
|
<NOT ,ECLIPSE?>>
|
|
<READY-MILK>
|
|
<GIVE-MILK-TO-CAT ,KITTY>)
|
|
(T
|
|
<NOT-LIKELY ,KITTY "would be interested">)>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE TOUCH-WAKE ()
|
|
<SAY-THE ,KITTY>
|
|
<TELL " ">
|
|
<COND (<FSET? ,KITTY ,RMUNGBIT>
|
|
<WAKE-KITTY>
|
|
<TELL "awakens at your touch and ">)>
|
|
<TELL <PICK-ONE ,NICES> "." CR>>
|
|
|
|
<ROUTINE WAKE-KITTY ()
|
|
<FCLEAR ,KITTY ,RMUNGBIT>
|
|
<SETG HORSE-SCRIPT 5>
|
|
<ENABLE <QUEUE I-FRISKY -1>>>
|
|
|
|
<ROUTINE READY-MILK ()
|
|
<REMOVE ,MILK>
|
|
<TELL "(">
|
|
<COND (<NOT <FSET? ,BOTTLE ,OPENBIT>>
|
|
<FSET ,BOTTLE ,OPENBIT>
|
|
<TELL "opening the " D ,BOTTLE " and ">)>
|
|
<TELL "pouring out the " D ,MILK " first)" CR CR>>
|
|
|
|
<ROUTINE GIVE-MILK-TO-CAT (CAT)
|
|
<SAY-THE ,KITTY>
|
|
<COND (<IN? .CAT ,PROTAGONIST>
|
|
<TELL " leaps from your arms and">)>
|
|
<TELL " eagerly laps the milk off the ">
|
|
<GROUND-OR-FLOOR>
|
|
<TELL ". Its eyes turn red. Jets of brown steam issue from its ears, and it">
|
|
<SUBWAY>
|
|
<TELL " Then it runs away, yowling with anguish." CR>
|
|
<REMOVE .CAT>
|
|
<COND (<EQUAL? .CAT ,CHAOS>
|
|
<CRLF>
|
|
<UPDATE-SCORE -10>)
|
|
(T
|
|
<DISABLE <INT I-FRISKY>>)>>
|
|
|
|
<ROUTINE I-FRISKY ()
|
|
<COND (<VISIBLE? ,KITTY>
|
|
<SETG HORSE-SCRIPT <- ,HORSE-SCRIPT 1>>)
|
|
(T
|
|
<RTRUE>)>
|
|
<COND (<AND <EQUAL? ,HERE ,OUTSIDE-COTTAGE>
|
|
<IN? ,KITTY ,PROTAGONIST>>
|
|
<CRLF>
|
|
<SAY-THE ,KITTY>
|
|
<TELL " scrambles out of your arms and scoots away at the sight of the enormous " D ,HELLHOUND ".">
|
|
<GONE-WITHOUT-A-TRACE>)
|
|
(<ZERO? ,HORSE-SCRIPT>
|
|
; <COND (<AND <EQUAL? ,HERE ,JAIL-CELL>
|
|
<FSET? ,HIDDEN-HATCH ,RMUNGBIT>
|
|
<NOT <IN? ,KITTY ,PROTAGONIST>>>
|
|
<SETG HORSE-SCRIPT 3>
|
|
<RTRUE>)>
|
|
<CRLF>
|
|
<SAY-THE ,KITTY>
|
|
<COND (<IN? ,KITTY ,PROTAGONIST>
|
|
<SETG HORSE-SCRIPT 3>
|
|
<TELL " squirms out of your arms">
|
|
<AND-DROPS-OUT ,KITTY>)
|
|
(T
|
|
<COND (<IN? ,KITTY ,TMACHINE>
|
|
<TELL " jumps out of the " D ,TMACHINE " and">)>
|
|
<TELL " scampers away behind your back.">
|
|
<GONE-WITHOUT-A-TRACE>)>)
|
|
(<EQUAL? ,HORSE-SCRIPT 2>
|
|
<CRLF>
|
|
<COND (<IN? ,KITTY ,PROTAGONIST>
|
|
<TELL "It's hard to hold the squirming cat!">)
|
|
(T
|
|
<SAY-THE ,KITTY>
|
|
<COND (<IN? ,KITTY ,TMACHINE>
|
|
<TELL " eagerly explores the " D ,TMACHINE>)
|
|
(T
|
|
<TELL " scampers restlessly around">)>
|
|
<TELL ".">)>
|
|
<CRLF>)>>
|
|
|
|
<ROUTINE GONE-WITHOUT-A-TRACE ()
|
|
<TELL " You turn to catch it, but it's gone">
|
|
<NO-TRACE>
|
|
<DISABLE <INT I-FRISKY>>
|
|
<MOVE ,KITTY ,STEEP-TRAIL>>
|
|
|
|
<ROUTINE NO-TRACE ()
|
|
<TELL " without a trace!" CR>>
|
|
|
|
<GLOBAL NICES
|
|
<LTABLE 0
|
|
"rubs itself lovingly against you"
|
|
"purrs agreeably"
|
|
"mews affectionately">>
|
|
|
|
<OBJECT CHEMICALS
|
|
(IN LABORATORY)
|
|
(DESC "chemicals")
|
|
(SYNONYM CHEMICALS ICE WATER)
|
|
(ADJECTIVE BUBBLING FLOATING DRY WARM)
|
|
(FLAGS NDESCBIT TRYTAKEBIT)
|
|
(ACTION CHEMICALS-F)>
|
|
|
|
<ROUTINE CHEMICALS-F ()
|
|
<COND (<VERB? EXAMINE LOOK-INSIDE LOOK-DOWN>
|
|
<SAY-THE ,CHEMICALS>
|
|
<TELL " look dangerous.">
|
|
<COND (<EQUAL? ,HERE ,LABORATORY>
|
|
<LEAVE-THEM-ALONE>)>
|
|
<CRLF>)
|
|
(<IMAGE? ,CHEMICALS>
|
|
<RFATAL>)
|
|
(<MOVING? ,CHEMICALS>
|
|
<CHEM-WARN "Fooling around with">)
|
|
(<HURT? ,CHEMICALS>
|
|
<PERFORM ,V?TAKE ,CHEMICALS>
|
|
<RTRUE>)
|
|
(<VERB? DRINK TASTE KISS>
|
|
<CHEM-WARN "Tasting">)
|
|
(<VERB? SMELL>
|
|
<TELL "The odor is like old socks and burning rubber." CR>)
|
|
(<VERB? EAT>
|
|
<NOT-SOLID>)
|
|
(T
|
|
<YOU-DONT-NEED ,CHEMICALS>
|
|
<RFATAL>)>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE CHEM-WARN (STR)
|
|
<TELL .STR " strange " D ,CHEMICALS " is asking for trouble.">
|
|
<LEAVE-THEM-ALONE>
|
|
<CRLF>>
|
|
|
|
<OBJECT PANEL
|
|
(IN LABORATORY)
|
|
(DESC "control panel")
|
|
(SYNONYM PANEL)
|
|
(ADJECTIVE CONTROL)
|
|
(FLAGS NDESCBIT TRYTAKEBIT)
|
|
(ACTION PANEL-F)>
|
|
|
|
<ROUTINE PANEL-F ()
|
|
<COND (<VERB? EXAMINE LOOK-INSIDE LOOK-ON>
|
|
<SAY-THE ,PANEL>
|
|
<TELL " is equipped with two large power switches." CR>
|
|
<RTRUE>)
|
|
(<IMAGE? ,PANEL>
|
|
<RFATAL>)
|
|
(<AND <VERB? TAKE MUNG KICK>
|
|
<EQUAL? ,PRSO ,PANEL>>
|
|
<SAY-THE ,PANEL>
|
|
<TELL " is firmly attached to the wall." CR>)
|
|
(T
|
|
<YOU-DONT-NEED ,PANEL>
|
|
<RFATAL>)>
|
|
<RTRUE>>
|
|
|
|
<OBJECT SW2
|
|
(IN LABORATORY)
|
|
(DESC "second switch")
|
|
(SYNONYM SWITCH)
|
|
(ADJECTIVE SECOND LARGE SECURITY)
|
|
(FLAGS NDESCBIT TRYTAKEBIT READBIT RMUNGBIT)
|
|
(ACTION SW2-F)>
|
|
|
|
; "RMUNGBIT = Switch not yet opened"
|
|
|
|
<ROUTINE SW2-F ()
|
|
<COND (<EXAM-SWITCH? ,SW2 "Security">
|
|
<RTRUE>)
|
|
(<IMAGE? ,SW2>
|
|
<RFATAL>)
|
|
(<VERB? LAMP-OFF OPEN>
|
|
<COND (<OFF-SWITCH? ,SW2>
|
|
<SAY-SWITCH ,SW2>
|
|
<COND (<FSET? ,SW2 ,RMUNGBIT>
|
|
<FCLEAR ,SW2 ,RMUNGBIT>
|
|
<CRLF>
|
|
<UPDATE-SCORE 3>)>)>
|
|
<RTRUE>)
|
|
(<VERB? LAMP-ON CLOSE>
|
|
<COND (<ON-SWITCH? ,SW2>
|
|
<SAY-SWITCH ,SW2>)>
|
|
<RTRUE>)
|
|
(<GENERIC-SWITCH? ,SW2>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<OBJECT SW1
|
|
(IN LABORATORY)
|
|
(DESC "first switch")
|
|
(SYNONYM SWITCH)
|
|
(ADJECTIVE FIRST LARGE PALACE THEATER)
|
|
(FLAGS NDESCBIT TRYTAKEBIT READBIT)
|
|
(ACTION SW1-F)>
|
|
|
|
<ROUTINE SW1-F ()
|
|
<COND (<EXAM-SWITCH? ,SW1 "Palace Theater">
|
|
<RTRUE>)
|
|
(<IMAGE? ,SW1>
|
|
<RFATAL>)
|
|
(<VERB? LAMP-OFF OPEN>
|
|
<COND (<OFF-SWITCH? ,SW1>
|
|
<SAY-SWITCH ,SW1>)>
|
|
<RTRUE>)
|
|
(<VERB? LAMP-ON CLOSE>
|
|
<COND (<ON-SWITCH? ,SW1>
|
|
<SAY-SWITCH ,SW1>)>
|
|
<RTRUE>)
|
|
(<GENERIC-SWITCH? ,SW1>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE EXAM-SWITCH? (SW STR)
|
|
<COND (<VERB? EXAMINE LOOK-INSIDE LOOK-ON READ>
|
|
<SAY-THE .SW>
|
|
<TELL " is labeled, \"" .STR ",\" and">
|
|
<ON-OR-OFF .SW>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE SAY-SWITCH (SW)
|
|
<TELL ,OKAY "the " D .SW>
|
|
<ON-OR-OFF .SW>>
|
|
|
|
<ROUTINE ON-OR-OFF (SW)
|
|
<TELL " is turned ">
|
|
<COND (<FSET? .SW ,OPENBIT>
|
|
<TELL "off">)
|
|
(T
|
|
<TELL "on">)>
|
|
<TELL "." CR>>
|
|
|
|
<ROUTINE OFF-SWITCH? (SW)
|
|
<COND (<FSET? .SW ,OPENBIT>
|
|
<BUT-THE .SW>
|
|
<TELL "is already off!" CR>
|
|
<RFALSE>)
|
|
(T
|
|
<FSET .SW ,OPENBIT>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE ON-SWITCH? (SW)
|
|
<COND (<FSET? .SW ,OPENBIT>
|
|
<FCLEAR .SW ,OPENBIT>
|
|
<RTRUE>)
|
|
(T
|
|
<BUT-THE .SW>
|
|
<TELL "is already on!" CR>
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE GENERIC-SWITCH? (SW)
|
|
<COND (<OR <HURT? .SW>
|
|
<VERB? TAKE>>
|
|
<TELL "The switches are firmly attached to the "
|
|
D ,PANEL "." CR>
|
|
<RTRUE>)
|
|
(<AND <VERB? TURN MOVE PULL PUSH>
|
|
<EQUAL? ,PRSO .SW>>
|
|
<COND (<FSET? .SW ,OPENBIT>
|
|
<PERFORM ,V?CLOSE .SW>)
|
|
(T
|
|
<PERFORM ,V?OPEN .SW>)>
|
|
<RTRUE>)
|
|
(<VERB? COUNT>
|
|
<PERFORM ,V?EXAMINE ,PANEL>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<OBJECT BROOM
|
|
(IN LABORATORY)
|
|
(DESC "broom")
|
|
(SYNONYM BROOM BROOMSTICK)
|
|
(FLAGS TAKEBIT)
|
|
(VALUE 0)
|
|
(SIZE 20)
|
|
(CAPACITY 10)
|
|
(ACTION BROOM-F)>
|
|
|
|
<GLOBAL BROOM-SIT? <>>
|
|
|
|
<ROUTINE BROOM-F ()
|
|
<COND (<VERB? SIT CLIMB-ON ENTER RIDE>
|
|
<COND (,BROOM-SIT?
|
|
<TELL "But you're already">)
|
|
(<NOT <IN? ,BROOM ,PROTAGONIST>>
|
|
<YOUD-HAVE-TO "be holding" ,BROOM>
|
|
<RTRUE>)
|
|
(T
|
|
<SETG BROOM-SIT? T>
|
|
<TELL ,OKAY "you're now">)>
|
|
<SITTING-ON-BROOM>
|
|
<RTRUE>)
|
|
(<VERB? TAKE-OFF EXIT CLIMB-DOWN>
|
|
<COND (,BROOM-SIT?
|
|
<SETG BROOM-SIT? <>>
|
|
<TELL ,OKAY "you're no longer">)
|
|
(T
|
|
<TELL "But you're not">)>
|
|
<SITTING-ON-BROOM>
|
|
<RTRUE>)
|
|
(<HURT? ,BROOM>
|
|
<WASTE-OF-TIME>
|
|
<RTRUE>)
|
|
(<AND <VERB? PUT PUT-ON>
|
|
<EQUAL? ,PRSI ,BROOM>>
|
|
<COND (<EQUAL? ,PRSO ,BROOM>
|
|
<TELL <PICK-ONE ,YUKS> CR>)
|
|
(T
|
|
<SAY-THE ,PRSO>
|
|
<TELL " topples off the narrow broomstick">
|
|
<AND-DROPS-OUT ,PRSO>)>
|
|
<RTRUE>)
|
|
(<AND <VERB? EXAMINE LOOK-ON>
|
|
,BROOM-SIT?>
|
|
<TELL "You're">
|
|
<SITTING-ON-BROOM>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE SITTING-ON-BROOM ()
|
|
<TELL " sitting on the " D ,BROOM "." CR>>
|
|
|