mirror of
https://github.com/historicalsource/arthur
synced 2024-04-26 06:09:31 +03:00
1037 lines
22 KiB
Plaintext
1037 lines
22 KiB
Plaintext
;"***************************************************************************"
|
|
; "game : Arthur"
|
|
; "file : LEPRCHAN.ZIL"
|
|
; "auth : $Author: DEB $"
|
|
; "date : $Date: 16 May 1989 1:18:10 $"
|
|
; "revs : $Revision: 1.96 $"
|
|
; "vers : 1.0"
|
|
;"---------------------------------------------------------------------------"
|
|
; "Leprechaun"
|
|
; "Copyright (C) 1989 Infocom, Inc. All rights reserved."
|
|
;"***************************************************************************"
|
|
|
|
<INCLUDE "PDEFS"> ; "Because PARSE-ACTION used in this file."
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-GLADE"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-GLADE
|
|
(LOC ROOMS)
|
|
(DESC "glade")
|
|
(FLAGS FL-LIGHTED)
|
|
(SYNONYM GLADE CLEARING)
|
|
(ADJECTIVE LEAFY FOREST)
|
|
(NORTH PER RT-UNDERGROWTH)
|
|
(NE PER RT-UNDERGROWTH)
|
|
(EAST PER RT-UNDERGROWTH)
|
|
(SE PER RT-UNDERGROWTH)
|
|
(SOUTH TO RM-CHESTNUT-PATH)
|
|
(SW PER RT-UNDERGROWTH)
|
|
(WEST PER RT-BEHIND-ROCK)
|
|
(NW PER RT-UNDERGROWTH)
|
|
(UP PER RT-FLY-UP)
|
|
(GLOBAL LG-ENCHANTED-TREES LG-FOREST RM-CHESTNUT-PATH)
|
|
(ACTION RT-RM-GLADE)
|
|
(THINGS
|
|
FOOT (TRACKS FOOTPRINTS PRINTS) RT-PS-TRACKS
|
|
<> (BUSH BUSHES UNDERGROWTH) RT-PS-UNDERGROWTH
|
|
)
|
|
>
|
|
|
|
<ROUTINE RT-RM-GLADE ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "You are ">
|
|
<COND
|
|
(<IN? ,CH-PLAYER ,TH-BEHIND-ROCK>
|
|
<COND
|
|
(<EQUAL? ,GL-HIDING ,TH-ROCK>
|
|
<TELL "hiding">
|
|
)
|
|
(T
|
|
<TELL "standing">
|
|
)
|
|
>
|
|
<TELL " behind" the ,TH-ROCK>
|
|
)
|
|
(T
|
|
<TELL "standing">
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<TELL "The track ends">
|
|
)
|
|
>
|
|
<TELL
|
|
" in a leafy glade that is ringed by dense undergrowth. A well-worn path
|
|
of tiny footprints emerges from the bushes on one side of the clearing and
|
|
disappears into the undergrowth on the other side"
|
|
>
|
|
<COND
|
|
(<NOT <EQUAL? ,GL-HIDING ,TH-ROCK>>
|
|
<FSET ,TH-ROCK ,FL-SEEN>
|
|
<TELL
|
|
", passing near a large rock that sits at the glade's westernmost edge"
|
|
>
|
|
)
|
|
>
|
|
<TELL ". The track leading back into the forest lies to the south.|">
|
|
<RFALSE>
|
|
)
|
|
(<MC-CONTEXT? ,M-ENTER>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-GLADE>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<MC-CONTEXT? ,M-ENTERED>
|
|
<COND
|
|
(<NOT <FSET? ,CH-LEPRECHAUN ,FL-LOCKED>>
|
|
<FCLEAR ,TH-ROCK ,FL-LOCKED>
|
|
<RT-QUEUE ,RT-I-LEP-3 <+ ,GL-MOVES 2>>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-EXIT>
|
|
<RT-DEQUEUE ,RT-I-LEP-1>
|
|
<RT-DEQUEUE ,RT-I-LEP-2>
|
|
<RT-DEQUEUE ,RT-I-LEP-3>
|
|
<RT-DEQUEUE ,RT-I-LEP-4>
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-PS-TRACKS ("OPT" (CONTEXT <>) (ART <>) (CAP? <>))
|
|
<FSET ,PSEUDO-OBJECT ,FL-PLURAL>
|
|
<FCLEAR ,PSEUDO-OBJECT ,FL-VOWEL>
|
|
<COND
|
|
(<MC-CONTEXT? ,M-OBJDESC>
|
|
<COND
|
|
(.ART
|
|
<PRINT-ARTICLE ,PSEUDO-OBJECT .ART .CAP?>
|
|
)
|
|
>
|
|
<COND
|
|
(<EQUAL? .ART <> ,K-ART-THE ,K-ART-A ,K-ART-ANY>
|
|
<COND
|
|
(.ART
|
|
<TELL " ">
|
|
)
|
|
>
|
|
<TELL "footprints">
|
|
)
|
|
>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<THIS-IS-IT ,PSEUDO-OBJECT>
|
|
<TELL "They look like footprints from tiny shoes." CR>
|
|
)
|
|
; (<VERB? FOLLOW>
|
|
<THIS-IS-IT ,PSEUDO-OBJECT>
|
|
<TELL
|
|
"The tracks disappear into the dense undergrowth. You can't follow them." CR
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-PS-UNDERGROWTH ("OPT" (CONTEXT <>) (ART <>) (CAP? <>))
|
|
<FCLEAR ,PSEUDO-OBJECT ,FL-PLURAL>
|
|
<FSET ,PSEUDO-OBJECT ,FL-VOWEL>
|
|
<COND
|
|
(<MC-CONTEXT? ,M-OBJDESC>
|
|
<COND
|
|
(.ART
|
|
<PRINT-ARTICLE ,PSEUDO-OBJECT .ART .CAP?>
|
|
)
|
|
>
|
|
<COND
|
|
(<EQUAL? .ART <> ,K-ART-THE ,K-ART-A ,K-ART-ANY>
|
|
<COND
|
|
(.ART
|
|
<TELL " ">
|
|
)
|
|
>
|
|
<TELL "undergrowth">
|
|
)
|
|
>
|
|
)
|
|
(<VERB? EXAMINE LOOK-IN>
|
|
<THIS-IS-IT ,PSEUDO-OBJECT>
|
|
<TELL
|
|
"You peer into the undergrowth, but it's so dense that you can't see much." CR
|
|
>
|
|
)
|
|
(<VERB? ENTER>
|
|
<THIS-IS-IT ,PSEUDO-OBJECT>
|
|
<RT-UNDERGROWTH>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-UNDERGROWTH ("OPT" (QUIET <>))
|
|
<COND
|
|
(<NOT .QUIET>
|
|
<TELL "The undergrowth is too thick to pass through." CR>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "CH-LEPRECHAUN"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT CH-LEPRECHAUN
|
|
(FLAGS FL-ALIVE FL-HAS-SDESC FL-TRY-TAKE FL-OPEN FL-PERSON FL-SEARCH)
|
|
(SYNONYM LEPRECHAUN SPRITE MAN PERSON)
|
|
(ADJECTIVE LITTLE SMALL)
|
|
(ACTION RT-CH-LEPRECHAUN)
|
|
>
|
|
|
|
; "CH-LEPRECHAUN flags:"
|
|
; " FL-LOCKED - Leprechaun has gotten spices and stays home."
|
|
|
|
<CONSTANT K-DISAPPEARS-MSG " disappears into the undergrowth.">
|
|
|
|
<GLOBAL GL-VOICE?:FLAG <> <> BYTE>
|
|
|
|
<ROUTINE RT-CH-LEPRECHAUN ("OPT" (CONTEXT <>) (ART <>) (CAP? <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-OBJDESC>
|
|
<COND
|
|
(.ART
|
|
<PRINT-ARTICLE ,CH-LEPRECHAUN .ART .CAP?>
|
|
)
|
|
>
|
|
<COND
|
|
(<EQUAL? .ART <> ,K-ART-THE ,K-ART-A ,K-ART-ANY>
|
|
<COND
|
|
(.ART
|
|
<TELL " ">
|
|
)
|
|
>
|
|
<COND
|
|
(<MC-PROB? 50>
|
|
<TELL "leprechaun">
|
|
)
|
|
(T
|
|
<TELL "small person">
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-WINNER>
|
|
<RT-L-STARTLED-MSG>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,CH-LEPRECHAUN ,FL-SEEN>
|
|
<TELL The ,CH-LEPRECHAUN " is dressed all in green." CR>
|
|
)
|
|
(<VERB? TAKE CLIMB-ON>
|
|
<RT-JUMP-L-MSG>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-JUMP-L-MSG ()
|
|
<MOVE ,CH-PLAYER ,RM-GLADE>
|
|
<SETG GL-HIDING <>>
|
|
<TELL "You">
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-ARTHUR>
|
|
<TELL " leap">
|
|
)
|
|
(T
|
|
<TELL walk>
|
|
)
|
|
>
|
|
<TELL " out from behind the stone">
|
|
<COND
|
|
(<NOT <MC-FORM? ,K-FORM-ARTHUR>>
|
|
<RT-DEQUEUE ,RT-I-LEP-4>
|
|
<RT-DEQUEUE ,RT-I-LEP-5>
|
|
<REMOVE ,CH-LEPRECHAUN>
|
|
<RT-QUEUE ,RT-I-LEP-1 <+ ,GL-MOVES 3>>
|
|
<TELL ". Startled by your sudden movement," the ,CH-LEPRECHAUN>
|
|
<COND
|
|
(<IN? ,TH-SPICE-BOTTLE ,CH-LEPRECHAUN>
|
|
<MOVE ,TH-SPICE-BOTTLE ,RM-GLADE>
|
|
<TELL " drops the bottle and">
|
|
)
|
|
>
|
|
<TELL " dives into the undergrowth saying," ,K-SPRITE-MSG CR>
|
|
)
|
|
(<IN? ,TH-SPICE-BOTTLE ,CH-LEPRECHAUN>
|
|
<RT-DEQUEUE ,RT-I-LEP-4>
|
|
<RT-DEQUEUE ,RT-I-LEP-5>
|
|
<REMOVE ,CH-LEPRECHAUN>
|
|
<FSET ,CH-LEPRECHAUN ,FL-LOCKED>
|
|
<TELL
|
|
" and grab the leprechaun. He struggles to get free, but you hold on tight and
|
|
after a while he gives up. \"Ye caught me fair n' square, laddie,\" he says.
|
|
\"Now I'm beholden t'give ye something special. I regret t'tell ye that
|
|
the tales of the leprechaun's crock of gold are truly nought but a crock
|
|
themselves. But what I can give ye is this jug of home-brewed whisky, which
|
|
to any drinkin' man is worth more than gold itself.\" He produces a jug
|
|
and gives it to you. As you take it from him, he wriggles free
|
|
and" ,K-DISAPPEARS-MSG CR
|
|
>
|
|
<COND
|
|
(<RT-DO-TAKE ,TH-WHISKY-JUG T>
|
|
<RT-SCORE-MSG 0 3 0 1>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<TELL " and make a dive for the little man. ">
|
|
<RT-L-STARTLED-MSG>
|
|
)
|
|
>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-GLADE>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-DESC>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
>
|
|
|
|
<CONSTANT K-SPRITE-MSG
|
|
" \"Try, try, as hard as ye might. Ye won't catch me, I'm too fast a sprite.\""
|
|
>
|
|
|
|
<ROUTINE RT-L-STARTLED-MSG ()
|
|
<REMOVE ,CH-LEPRECHAUN>
|
|
<RT-DEQUEUE ,RT-I-LEP-4>
|
|
<RT-DEQUEUE ,RT-I-LEP-5>
|
|
<RT-QUEUE ,RT-I-LEP-1 <+ ,GL-MOVES 3>>
|
|
<COND
|
|
(<VERB? TRANSFORM>
|
|
<TELL
|
|
"The leprechaun catches sight of you before you can crouch down. "
|
|
>
|
|
)
|
|
>
|
|
<TELL "Momentarily startled, ">
|
|
<COND
|
|
(<VERB? TRANSFORM>
|
|
<TELL "he">
|
|
)
|
|
(T
|
|
<TELL "the leprechaun">
|
|
)
|
|
>
|
|
<TELL
|
|
" quickly recovers his composure and leaps into the bushes at the edge of the
|
|
clearing. As he disappears, his tiny voice trails after him in triumph,"
|
|
,K-SPRITE-MSG CR
|
|
>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
>
|
|
|
|
<ROUTINE RT-I-LEP-1 ()
|
|
<COND
|
|
(<FSET? ,CH-PLAYER ,FL-ASLEEP>
|
|
<RT-QUEUE ,RT-I-LEP-1 <+ <RT-IS-QUEUED? ,RT-I-SLEEP> 3>>
|
|
<RFALSE>
|
|
)
|
|
(<MC-HERE? ,RM-GLADE>
|
|
<RT-QUEUE ,RT-I-LEP-2 <+ ,GL-MOVES 1>>
|
|
<SETG GL-VOICE? T>
|
|
<COND
|
|
(<EQUAL? ,GL-HIDING ,TH-ROCK>
|
|
<TELL
|
|
"|You hear a strange murmuring coming from beneath" the ,TH-ROCK "." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-I-LEP-2 ()
|
|
<COND
|
|
(<MC-HERE? ,RM-GLADE>
|
|
<RT-QUEUE ,RT-I-LEP-3 <+ ,GL-MOVES 2>>
|
|
<SETG GL-VOICE? <>>
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-I-LEP-3 ()
|
|
<COND
|
|
(<FSET? ,CH-PLAYER ,FL-ASLEEP>
|
|
<RT-QUEUE ,RT-I-LEP-1 <+ <RT-IS-QUEUED? ,RT-I-SLEEP> 3>>
|
|
<RFALSE>
|
|
)
|
|
(<MC-HERE? ,RM-GLADE>
|
|
<TELL "|You ">
|
|
<COND
|
|
(<EQUAL? ,GL-HIDING ,TH-ROCK>
|
|
<COND
|
|
(<FSET? ,TH-HEAD ,FL-LOCKED>
|
|
<FCLEAR ,TH-HEAD ,FL-LOCKED>
|
|
<TELL
|
|
"hear a noise and decide to poke your head out for a look. You "
|
|
>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<FSET ,CH-LEPRECHAUN ,FL-SEEN>
|
|
<TELL
|
|
"see a leprechaun dressed all in green emerge from one side of"
|
|
the ,RM-GLADE "."
|
|
>
|
|
<COND
|
|
(<IN? ,TH-SPICE-BOTTLE ,RM-GLADE>
|
|
<TELL
|
|
" In the middle of" the ,RM-GLADE "," the ,CH-LEPRECHAUN " sees"
|
|
the ,TH-SPICE-BOTTLE ". He picks it up and says, \"Faith and it's just what
|
|
I've been lookin' for. A fine bottle of spices from the east.\" He "
|
|
>
|
|
<COND
|
|
(<IN? ,TH-SPICE ,TH-SPICE-BOTTLE>
|
|
<RT-QUEUE ,RT-I-LEP-4 <+ ,GL-MOVES 1>>
|
|
<MOVE ,CH-LEPRECHAUN ,RM-GLADE>
|
|
<MOVE ,TH-SPICE-BOTTLE ,CH-LEPRECHAUN>
|
|
<TELL "examines the label intently." CR>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<RT-QUEUE ,RT-I-LEP-1 <+ ,GL-MOVES 3>>
|
|
<REMOVE ,CH-LEPRECHAUN>
|
|
<TELL
|
|
"peers into the bottle and exclaims, \"Bah! Empty.\" He drops the bottle and
|
|
looks around saying, \"Now what silly ass has been littering the forest with
|
|
empty bottles?\" He spies you hiding behind the rock, dives into the
|
|
undergrowth, and cries out," ,K-SPRITE-MSG CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<CRLF>
|
|
<RT-QUEUE ,RT-I-LEP-4 <+ ,GL-MOVES 1>>
|
|
<MOVE ,CH-LEPRECHAUN ,RM-GLADE>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(T
|
|
<RT-QUEUE ,RT-I-LEP-1 <+ ,GL-MOVES 3>>
|
|
<TELL
|
|
"hear a rustling in the undergrowth, as if something had approached"
|
|
the ,RM-GLADE ", but decided not to cross upon seeing you there." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-I-LEP-4 ()
|
|
<COND
|
|
(<FSET? ,CH-PLAYER ,FL-ASLEEP>
|
|
<REMOVE ,CH-LEPRECHAUN>
|
|
<COND
|
|
(<IN? ,TH-SPICE-BOTTLE ,CH-LEPRECHAUN>
|
|
<FSET ,CH-LEPRECHAUN ,FL-LOCKED>
|
|
)
|
|
(T
|
|
<RT-QUEUE ,RT-I-LEP-1 <+ <RT-IS-QUEUED? ,RT-I-SLEEP> 3>>
|
|
)
|
|
>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<MC-HERE? ,RM-GLADE>
|
|
<COND
|
|
(<IN? ,CH-LEPRECHAUN ,RM-GLADE>
|
|
<COND
|
|
(<IN? ,TH-SPICE-BOTTLE ,CH-LEPRECHAUN>
|
|
<RT-QUEUE ,RT-I-LEP-5 <+ ,GL-MOVES 1>>
|
|
<TELL CR The ,CH-LEPRECHAUN " finishes reading the label." CR>
|
|
)
|
|
(T
|
|
<RT-QUEUE ,RT-I-LEP-1 <+ ,GL-MOVES 2>>
|
|
<REMOVE ,CH-LEPRECHAUN>
|
|
<TELL CR The ,CH-LEPRECHAUN ,K-DISAPPEARS-MSG CR>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-I-LEP-5 ()
|
|
<COND
|
|
(<AND <MC-HERE? ,RM-GLADE>
|
|
<IN? ,CH-LEPRECHAUN ,RM-GLADE>
|
|
>
|
|
<REMOVE ,CH-LEPRECHAUN>
|
|
<FSET ,CH-LEPRECHAUN ,FL-LOCKED>
|
|
<TELL CR The ,CH-LEPRECHAUN ,K-DISAPPEARS-MSG CR>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-ROCK"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-ROCK
|
|
(LOC RM-GLADE)
|
|
(DESC "rock")
|
|
(FLAGS FL-NO-DESC)
|
|
(SYNONYM ROCK STONE MURMUR MURMURING MURMURRING VOICE SOUND)
|
|
(ADJECTIVE LARGE)
|
|
(ACTION RT-TH-ROCK)
|
|
>
|
|
|
|
; "TH-ROCK flags:"
|
|
; " FL-BROKEN - Player has heard murmuring"
|
|
; " FL-LOCKED - Leprechaun loop shouldn't be reset when hide behind rock."
|
|
|
|
<ROUTINE RT-TH-ROCK ("OPT" (CONTEXT <>))
|
|
<COND
|
|
; (<AND <VERB? LISTEN>
|
|
<RT-IS-QUEUED? ,RT-I-LEP-2>
|
|
>
|
|
<SETG GL-VOICE? T>
|
|
)
|
|
(<VERB? HIDE-BEHIND>
|
|
<RT-BEHIND-ROCK>
|
|
<RTRUE>
|
|
)
|
|
(<VERB? LOOK-BEHIND>
|
|
<COND
|
|
(<SEE-ANYTHING-IN? ,TH-BEHIND-ROCK>
|
|
<TELL "You see">
|
|
<PRINT-CONTENTS ,TH-BEHIND-ROCK>
|
|
<TELL " behind" the ,TH-ROCK "." CR>
|
|
)
|
|
>
|
|
)
|
|
(<AND <VERB? EXIT>
|
|
<IN? ,CH-PLAYER ,TH-BEHIND-ROCK>
|
|
>
|
|
<RT-DO-WALK ,P?EAST>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-BEHIND-ROCK"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-BEHIND-ROCK
|
|
(LOC RM-GLADE)
|
|
(DESC "behind the rock")
|
|
(FLAGS FL-CONTAINER FL-NO-ARTICLE FL-NO-DESC FL-OPEN FL-SEARCH)
|
|
(NORTH PER RT-UNDERGROWTH)
|
|
(EAST PER RT-LEAVE-ROCK)
|
|
(SOUTH PER RT-UNDERGROWTH)
|
|
(WEST PER RT-UNDERGROWTH)
|
|
(OUT PER RT-LEAVE-ROCK)
|
|
(CAPACITY K-CAP-MAX)
|
|
(ACTION RT-TH-BEHIND-ROCK)
|
|
>
|
|
|
|
<ROUTINE RT-TH-BEHIND-ROCK ("OPT" (CONTEXT <>) "AUX" L)
|
|
<COND
|
|
(<MC-CONTEXT? ,M-BEG>
|
|
<COND
|
|
(<VERB? LISTEN>
|
|
<COND
|
|
(<MC-PRSO? <> ,ROOMS ,TH-GROUND ,TH-ROCK>
|
|
<COND
|
|
(,GL-VOICE?
|
|
<FSET ,TH-ROCK ,FL-BROKEN>
|
|
<TELL
|
|
"A tiny voice floats up from somewhere below" the ,TH-ROCK ". \"'Tis no good
|
|
t'all. There's no taste to't. 'Tis flat as an Englishman's head. I'll cook it
|
|
a while longer and then try't again.\"" CR
|
|
>
|
|
)
|
|
(<FSET? ,TH-ROCK ,FL-BROKEN>
|
|
<TELL "The murmuring has stopped." CR>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<AND <VERB? TELL>
|
|
,P-CONT
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<AND <VERB? TAKE CLIMB-ON>
|
|
<MC-PRSO? ,CH-LEPRECHAUN>
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<VERB? WALK>
|
|
<RFALSE>
|
|
)
|
|
(<OR <AND
|
|
<VERB? PUT-IN>
|
|
<MC-PRSI? ,RM-GLADE>
|
|
>
|
|
<AND
|
|
<VERB? THROW>
|
|
<IN? ,PRSI ,RM-GLADE>
|
|
>
|
|
>
|
|
<COND
|
|
(<OR <PRE-PUT>
|
|
<NOT <IDROP>>
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(<IN? ,CH-LEPRECHAUN ,RM-GLADE>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-INVT ,K-UPD-OBJS>>
|
|
<MOVE ,PRSO ,RM-GLADE>
|
|
<RT-L-STARTLED-MSG>
|
|
)
|
|
(T
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-INVT ,K-UPD-OBJS>>
|
|
<MOVE ,PRSO ,RM-GLADE>
|
|
<TELL
|
|
The+verb ,WINNER "toss" the ,PRSO " into" the ,RM-GLADE "." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<AND <IN? ,CH-LEPRECHAUN ,RM-GLADE>
|
|
<UNHIDE-VERB?>
|
|
>
|
|
<RT-L-STARTLED-MSG>
|
|
<RTRUE>
|
|
)
|
|
(<TOUCH-VERB?>
|
|
<SET L <LOC ,CH-PLAYER>>
|
|
<COND
|
|
(,PRSO
|
|
<COND
|
|
(<OR <MC-PRSO? ,ROOMS>
|
|
<EQUAL? <LOC ,PRSO> ,GLOBAL-OBJECTS ,GENERIC-OBJECTS>
|
|
>
|
|
)
|
|
(<NOT <RT-META-IN? ,PRSO .L>>
|
|
<COND
|
|
(<MC-PRSO? ,TH-ROCK>
|
|
<>
|
|
)
|
|
(T
|
|
<RT-CANT-REACH-MSG ,PRSO .L>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<COND
|
|
(,PRSI
|
|
<COND
|
|
(<OR <MC-PRSI? ,ROOMS>
|
|
<EQUAL? <LOC ,PRSI> ,GLOBAL-OBJECTS ,GENERIC-OBJECTS>
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<NOT <RT-META-IN? ,PRSI .L>>
|
|
<COND
|
|
(<MC-PRSI? ,TH-ROCK>
|
|
<RFALSE>
|
|
)
|
|
(T
|
|
<RT-CANT-REACH-MSG ,PRSI .L>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-END>
|
|
<COND
|
|
(<AND <IN? ,CH-LEPRECHAUN ,RM-GLADE>
|
|
<VERB? TRANSFORM>
|
|
<NOT <MC-FORM? ,GL-OLD-FORM>>
|
|
<MC-FORM? ,K-FORM-ARTHUR>
|
|
>
|
|
<RT-L-STARTLED-MSG>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-BEHIND-ROCK ("OPT" (QUIET <>))
|
|
<COND
|
|
(.QUIET
|
|
<RFALSE>
|
|
)
|
|
(<EQUAL? ,GL-HIDING ,TH-ROCK>
|
|
<RT-ALREADY-MSG ,WINNER "behind the rock">
|
|
)
|
|
(<AND <MC-FORM? ,K-FORM-TURTLE>
|
|
<PRE-WALK>
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(T
|
|
<MOVE ,WINNER ,TH-BEHIND-ROCK>
|
|
<SETG GL-HIDING ,TH-ROCK>
|
|
<TELL
|
|
The+verb ,WINNER "hide" " behind" the ,TH-ROCK ". You peer around it and
|
|
discover that your hiding place affords an excellent view of the
|
|
clearing." CR
|
|
>
|
|
<COND
|
|
(<NOT <FSET? ,CH-LEPRECHAUN ,FL-LOCKED>>
|
|
<COND
|
|
(<NOT <FSET? ,TH-ROCK ,FL-LOCKED>>
|
|
<FSET ,TH-ROCK ,FL-LOCKED>
|
|
<RT-DEQUEUE ,RT-I-LEP-1>
|
|
<RT-DEQUEUE ,RT-I-LEP-2>
|
|
<RT-DEQUEUE ,RT-I-LEP-3>
|
|
<RT-DEQUEUE ,RT-I-LEP-4>
|
|
<RT-QUEUE ,RT-I-LEP-1 ,GL-MOVES>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-GLADE-ROCK>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-DESC>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
>
|
|
|
|
<ROUTINE RT-LEAVE-ROCK ("OPT" (QUIET <>))
|
|
<COND
|
|
(.QUIET
|
|
<RETURN ,RM-GLADE>
|
|
)
|
|
(<EQUAL? ,GL-HIDING ,TH-ROCK>
|
|
<MOVE ,WINNER ,RM-GLADE>
|
|
<SETG GL-HIDING <>>
|
|
<COND
|
|
(<IN? ,CH-LEPRECHAUN ,RM-GLADE>
|
|
<RT-JUMP-L-MSG>
|
|
)
|
|
(T
|
|
<TELL The+verb ,WINNER "emerge" " from">
|
|
<COND
|
|
(<EQUAL? ,GL-HIDING ,TH-ROCK>
|
|
<TELL " hiding">
|
|
)
|
|
>
|
|
<TELL
|
|
the ,TH-BEHIND-ROCK " and" verb ,WINNER "are" " now in" the ,RM-GLADE "." CR
|
|
>
|
|
)
|
|
>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-GLADE>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-DESC>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(T
|
|
<RT-UNDERGROWTH>
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-WHISKY-JUG"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-WHISKY-JUG
|
|
(DESC "whisky jug")
|
|
(FLAGS FL-CONTAINER FL-OPEN FL-SEARCH FL-TAKEABLE)
|
|
(SYNONYM JUG WHISKY WHISKEY NECK)
|
|
(ADJECTIVE WHISKY WHISKEY)
|
|
(OWNER TH-WHISKY-JUG) ;"for JUG'S NECK"
|
|
(SIZE 5 CAPACITY 1)
|
|
(GENERIC RT-GN-WHISKY)
|
|
(ACTION RT-TH-WHISKY-JUG)
|
|
>
|
|
|
|
<CONSTANT K-EVAPORATES-MSG " It quickly evaporates.">
|
|
|
|
<ROUTINE RT-TH-WHISKY-JUG ("OPT" (CONTEXT <>) "AUX" N TBL OBJ)
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(,NOW-PRSI
|
|
<COND
|
|
(<VERB? PUT-IN EMPTY>
|
|
<THIS-IS-IT ,TH-WHISKY-JUG>
|
|
<TELL "The jug's neck is too narrow." CR>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? DRINK-FROM>
|
|
<COND
|
|
(<IN? ,TH-WHISKY ,TH-WHISKY-JUG>
|
|
<PERFORM ,V?DRINK ,TH-WHISKY>
|
|
<RTRUE>
|
|
)
|
|
(<IN? ,TH-WATER ,TH-WHISKY-JUG>
|
|
<PERFORM ,V?DRINK ,TH-WATER>
|
|
<RTRUE>
|
|
)
|
|
(T
|
|
<TELL "There is nothing to drink in" the ,TH-WHISKY-JUG "." CR>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? EXAMINE READ>
|
|
<FSET ,TH-WHISKY-JUG ,FL-SEEN>
|
|
<RT-CENTER-STRING "XXX">
|
|
<RT-CENTER-STRING "MOTHER MACREE'S IRISH WHISKY">
|
|
)
|
|
(<VERB? FILL>
|
|
<COND
|
|
(<AND <MC-PRSI? ,TH-BARREL>
|
|
<NOT <IN? ,TH-BARREL-WATER ,TH-BARREL>>
|
|
>
|
|
<TELL "There isn't any water in" the ,TH-BARREL "." CR>
|
|
)
|
|
(<MC-PRSI? ,LG-LAKE ,RM-SHALLOWS ,LG-RIVER ,RM-FORD ,TH-BARREL-WATER ,TH-BARREL>
|
|
<COND
|
|
(<OR <IN? ,TH-WHISKY ,TH-WHISKY-JUG>
|
|
<IN? ,TH-WATER ,TH-WHISKY-JUG>
|
|
>
|
|
<TELL
|
|
The ,TH-WHISKY-JUG " is already filled with " D <FIRST? ,TH-WHISKY-JUG> "." CR
|
|
>
|
|
)
|
|
(T
|
|
<MOVE ,TH-WATER ,TH-WHISKY-JUG>
|
|
<TELL
|
|
The+verb ,WINNER "fill" the ,TH-WHISKY-JUG " with " D ,TH-WATER "." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? EMPTY>
|
|
<COND
|
|
(<OR <IN? ,TH-WHISKY ,TH-WHISKY-JUG>
|
|
<IN? ,TH-WATER ,TH-WHISKY-JUG>
|
|
>
|
|
<SET OBJ <FIRST? ,TH-WHISKY-JUG>>
|
|
<REMOVE .OBJ>
|
|
<TELL
|
|
The+verb ,WINNER "pour" the .OBJ " out of" the ,TH-WHISKY-JUG "."
|
|
>
|
|
<COND
|
|
(<AND <EQUAL? .OBJ ,TH-WHISKY>
|
|
<MC-PRSI? ,TH-COTTAGE-FIRE ,TH-TAVERN-FIRE ,TH-CASTLE-FIRE>
|
|
>
|
|
<TELL
|
|
" As soon as the first drop of the incredibly potent brew hits" the ,PRSI
|
|
", a powerful explosion rips through" the ,HERE ", levelling everything in
|
|
it, including you." CR
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
(<FSET? ,HERE ,FL-WATER>
|
|
<TELL " It disappears into the water.">
|
|
)
|
|
(T
|
|
<TELL ,K-EVAPORATES-MSG>
|
|
)
|
|
>
|
|
<CRLF>
|
|
<COND
|
|
(<EQUAL? .OBJ ,TH-WHISKY>
|
|
<RT-SCORE-MSG 0 -1 0 0>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? OPEN>
|
|
<RT-ALREADY-MSG ,TH-WHISKY-JUG "open">
|
|
)
|
|
(<VERB? BREAK>
|
|
<REMOVE ,TH-WHISKY-JUG>
|
|
<TELL "You smash" the ,TH-WHISKY-JUG ", and it shatters into a thousand pieces." CR>
|
|
<RT-SCORE-MSG 0 -3 0 0>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-GN-WHISKY (TBL FINDER)
|
|
<COND
|
|
(<EQUAL? <PARSE-ACTION ,PARSE-RESULT> ,V?DRINK ,V?EAT ,V?ASK-ABOUT>
|
|
<RETURN ,TH-WHISKY>
|
|
)
|
|
(T
|
|
<TELL "[" The ,TH-WHISKY-JUG "]" CR>
|
|
<RETURN ,TH-WHISKY-JUG>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-PUT-WHISKY-IN-FIRE-MSG (FIRE)
|
|
<TELL
|
|
"You toss the jug" in .FIRE "to" the .FIRE ". Seconds later, a powerful
|
|
explosion rips through" the ,HERE ", levelling everything in it, including
|
|
you." CR
|
|
>
|
|
<RT-END-OF-GAME>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-WHISKY"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-WHISKY
|
|
(LOC TH-WHISKY-JUG)
|
|
(DESC "whisky")
|
|
(FLAGS FL-COLLECTIVE FL-PLURAL FL-WATER)
|
|
(SYNONYM WHISKY WHISKEY ELIXIR)
|
|
(ADJECTIVE GOLDEN)
|
|
(SIZE 1)
|
|
(GENERIC RT-GN-WHISKY)
|
|
(ACTION RT-TH-WHISKY)
|
|
>
|
|
|
|
<GLOBAL GL-WHISKY-DRINK 0 <> BYTE>
|
|
|
|
<ROUTINE RT-TH-WHISKY ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(<VERB? DRINK EAT>
|
|
<INC GL-WHISKY-DRINK>
|
|
<COND
|
|
(<L? ,GL-WHISKY-DRINK 4>
|
|
<TELL "You take a few sips. ">
|
|
<COND
|
|
(<EQUAL? ,GL-WHISKY-DRINK 1>
|
|
<TELL
|
|
"Unaccustomed as you are to alcohol, your head soon starts to spin and you
|
|
realize that it would be unwise to drink any more." CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL "Your head spins." CR>
|
|
<RT-SCORE-MSG 0 -3 0 0>
|
|
<COND
|
|
(<EQUAL? ,GL-WHISKY-DRINK 3>
|
|
<RT-AUTHOR-MSG "Lush.">
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"You drain the bottle and pass out. You sleep for a long time, awakened
|
|
finally by the noise of the celebration of Lot's coronation.|"
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,TH-WHISKY ,FL-SEEN>
|
|
<TELL "It has a deep, amber colour." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"***************************************************************************"
|
|
; "end of file"
|
|
;"***************************************************************************"
|
|
|