1206 lines
27 KiB
Plaintext
1206 lines
27 KiB
Plaintext
;"***************************************************************************"
|
|
; "game : Arthur"
|
|
; "file : DEMON.ZIL"
|
|
; "auth : $Author: DEB $"
|
|
; "date : $Date: 12 May 1989 0:41:38 $"
|
|
; "revs : $Revision: 1.76 $"
|
|
; "vers : 1.0"
|
|
;"---------------------------------------------------------------------------"
|
|
; "Hall of Demon"
|
|
; "Copyright (C) 1989 Infocom, Inc. All rights reserved."
|
|
;"***************************************************************************"
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-DEMON-HALL"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-DEMON-HALL
|
|
(LOC ROOMS)
|
|
(DESC "hall")
|
|
(FLAGS FL-LIGHTED FL-INDOORS)
|
|
(SYNONYM HALL)
|
|
(ADJECTIVE DEMON)
|
|
(OWNER CH-DEMON)
|
|
(SOUTH TO RM-HOT-ROOM IF LG-HOT-DOOR IS OPEN)
|
|
(OUT TO RM-HOT-ROOM IF LG-HOT-DOOR IS OPEN)
|
|
(SCORE <ORB <LSH 5 ,K-WISD-SHIFT> <LSH 3 ,K-QUEST-SHIFT>>)
|
|
(GLOBAL LG-HOT-DOOR LG-WALL)
|
|
(ACTION RT-RM-DEMON-HALL)
|
|
(THINGS
|
|
<> (SHIELD SHIELDS) RT-PS-DEMON-SHIELDS
|
|
)
|
|
>
|
|
|
|
<ROUTINE RT-RM-DEMON-HALL ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<FSET ,CH-DEMON ,FL-SEEN>
|
|
<FSET ,TH-DEMON-THRONE ,FL-SEEN>
|
|
<FSET ,TH-LEFT-MANACLE ,FL-SEEN>
|
|
<FSET ,TH-RIGHT-MANACLE ,FL-SEEN>
|
|
<FSET ,TH-MANACLES ,FL-SEEN>
|
|
<FSET ,TH-FLEECE ,FL-SEEN>
|
|
<FSET ,TH-GOLD-KEY ,FL-SEEN>
|
|
<TELL "You ">
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "are" standing " in">
|
|
)
|
|
(T
|
|
<TELL "have entered">
|
|
)
|
|
>
|
|
<TELL
|
|
" a long, narrow banqueting hall that is panelled in dark walnut. High above
|
|
you, the walls are lined with the shields of vanquished knights. At the
|
|
far end "
|
|
>
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK>
|
|
<TELL
|
|
"is a golden throne, upon which sits a beautiful girl. As you walk the length
|
|
of the hall, you see that the girl's wrists are manacled to the throne, and
|
|
that she is sitting on a Golden Fleece."
|
|
>
|
|
)
|
|
(T
|
|
<TELL "of the hall, a ">
|
|
<COND
|
|
(<FSET? ,CH-DEMON ,FL-LOCKED>
|
|
<TELL "beautiful girl">
|
|
)
|
|
(T
|
|
<TELL "hideous demon">
|
|
)
|
|
>
|
|
<TELL " is sitting on">
|
|
<COND
|
|
(<IN? ,TH-FLEECE ,TH-DEMON-THRONE>
|
|
<TELL a ,TH-FLEECE ", which covers">
|
|
)
|
|
>
|
|
<TELL " ">
|
|
<COND
|
|
(<FSET? ,CH-DEMON ,FL-LOCKED>
|
|
<TELL "her">
|
|
)
|
|
(T
|
|
<TELL "his">
|
|
)
|
|
>
|
|
<TELL " throne. ">
|
|
<COND
|
|
(<FSET? ,CH-DEMON ,FL-LOCKED>
|
|
<TELL "Her">
|
|
)
|
|
(T
|
|
<TELL "His">
|
|
)
|
|
>
|
|
<TELL " ">
|
|
<COND
|
|
(<OR <FSET? ,TH-LEFT-MANACLE ,FL-OPEN>
|
|
<FSET? ,TH-RIGHT-MANACLE ,FL-OPEN>
|
|
>
|
|
<COND
|
|
(<FSET? ,TH-LEFT-MANACLE ,FL-OPEN>
|
|
<TELL "right ">
|
|
)
|
|
(T
|
|
<TELL "left ">
|
|
)
|
|
>
|
|
<TELL "hand is">
|
|
)
|
|
(T
|
|
<TELL "hands are">
|
|
)
|
|
>
|
|
<TELL " manacled to" the ,TH-DEMON-THRONE ".">
|
|
<COND
|
|
(<OR <IN? ,TH-GOLD-KEY ,CH-GIRL>
|
|
<IN? ,TH-GOLD-KEY ,CH-DEMON>
|
|
>
|
|
<TELL " A golden key hangs around ">
|
|
<COND
|
|
(<FSET? ,CH-DEMON ,FL-LOCKED>
|
|
<TELL "her">
|
|
)
|
|
(T
|
|
<TELL "his">
|
|
)
|
|
>
|
|
<TELL " neck.">
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<CRLF>
|
|
<RFALSE>
|
|
)
|
|
(<MC-CONTEXT? ,M-ENTER>
|
|
<COND
|
|
(<FSET? ,CH-DEMON ,FL-LOCKED>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-GIRL>
|
|
)
|
|
(T
|
|
<SETG GL-PICTURE-NUM ,K-PIC-DEMON>
|
|
)
|
|
>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<MC-CONTEXT? ,M-ENTERED>
|
|
<COND
|
|
(<FSET? ,CH-DEMON ,FL-LOCKED>
|
|
<COND
|
|
(<FSET? ,CH-GIRL ,FL-LOCKED>
|
|
<FCLEAR ,CH-GIRL ,FL-LOCKED>
|
|
<TELL
|
|
"|The girl's image seems to shimmer for a second, and then she says, \"Oh
|
|
kind sir, I have been imprisoned by the evil demon who rules this place. But
|
|
if you release me, I will keep you by my side evermore.\"" CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"|The girl smiles at you demurely and says, \"Thank goodness you've returned!
|
|
Won't you please remove these unmaidenly manacles so that we might be
|
|
together for always?\"" CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<RT-DEMON-OFFER-MSG>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-EXIT>
|
|
<COND
|
|
(<FSET? ,CH-DEMON ,FL-LOCKED>
|
|
<COND
|
|
(<IN? ,TH-GOLD-KEY ,CH-PLAYER>
|
|
<RT-DEMON-OFFER-MSG T>
|
|
<RTRUE>
|
|
)
|
|
(T
|
|
<TELL
|
|
"The girl calls out after you, \"Oh prithee, sir! Please do not abandon me
|
|
to this cruel fate!\"||"
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<COND
|
|
(<FSET? ,LG-HOT-DOOR ,FL-OPEN>
|
|
<FCLEAR ,LG-HOT-DOOR ,FL-OPEN>
|
|
<TELL
|
|
The ,LG-HOT-DOOR " swings shut behind you with an ominous \"clank.\"||"
|
|
>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-PS-DEMON-SHIELDS ("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 "shields">
|
|
)
|
|
>
|
|
)
|
|
(<VERB? EXAMINE LOOK-IN LOOK-ON>
|
|
<THIS-IS-IT ,PSEUDO-OBJECT>
|
|
<TELL "The shields are trophies of the demon's past conquests." CR>
|
|
)
|
|
(<TOUCH-VERB?>
|
|
<THIS-IS-IT ,PSEUDO-OBJECT>
|
|
<TELL "The shields are too high to reach." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "CH-GIRL"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT CH-GIRL
|
|
(DESC "girl")
|
|
(LOC TH-DEMON-THRONE)
|
|
(FLAGS FL-ALIVE FL-FEMALE FL-LOCKED FL-NO-DESC FL-OPEN FL-PERSON FL-SEARCH)
|
|
(SYNONYM GIRL WOMAN PERSON)
|
|
(ADJECTIVE BEAUTIFUL FEMALE)
|
|
(GENERIC RT-GN-BEAUTIFUL-WOMAN)
|
|
(ACTION RT-CH-GIRL)
|
|
>
|
|
|
|
; "CH-GIRL flags:"
|
|
; " FL-LOCKED - Girl has not given first speech."
|
|
|
|
<ROUTINE RT-CH-GIRL ("OPT" (CONTEXT <>) (ART <>) (CAP? <>))
|
|
<COND
|
|
(<AND <MC-CONTEXT? ,M-WINNER <>>
|
|
<VERB? HELLO>
|
|
>
|
|
<TELL
|
|
"The girl flutters her eyelashes demurely. \"Greetings, kind sir.\"" CR
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-WINNER>
|
|
<COND
|
|
(<AND <VERB? TELL-ABOUT>
|
|
<MC-PRSO? ,CH-PLAYER>
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<VERB? WHO WHAT>
|
|
<RFALSE>
|
|
)
|
|
(T
|
|
<TELL
|
|
"\"If you will but release me from these cruel manacles, I shall do whatever
|
|
you wish.\"" CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(,NOW-PRSI
|
|
<COND
|
|
(<AND <VERB? SHOW>
|
|
<MC-PRSO? ,TH-GOLD-KEY>
|
|
>
|
|
<TELL
|
|
"The girl inclines her head towards the manacles and says, \"If you would be
|
|
so kind....\"" CR
|
|
>
|
|
)
|
|
(<AND <VERB? GIVE>
|
|
<MC-PRSO? ,TH-GOLD-KEY>
|
|
>
|
|
<COND
|
|
(<OR <FSET? ,TH-LEFT-MANACLE ,FL-OPEN>
|
|
<FSET? ,TH-RIGHT-MANACLE ,FL-OPEN>
|
|
>
|
|
<RT-FREE-DEMON-MSG T>
|
|
)
|
|
(T
|
|
<TELL
|
|
"The girl refuses your offer and cries, \"Oh why do you torment me so? To put
|
|
a key into a hand that is manacled is surely the cruelest of jests.\"" CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<AND <VERB? TELL>
|
|
,P-CONT
|
|
>
|
|
; "Message and RFATAL if don't want the demon to become winner"
|
|
<RFALSE>
|
|
)
|
|
(<VERB? ASK-ABOUT>
|
|
<COND
|
|
(<NOUN-USED? ,PRSI ,W?TEETH>
|
|
<RT-DEMON-OFFER-MSG>
|
|
)
|
|
(<MC-PRSI? ,CH-DEMON>
|
|
<TELL "\"He hath imprisoned me most cruelly.\"" CR>
|
|
)
|
|
(<MC-PRSI? ,TH-GOLD-KEY>
|
|
<TELL "\"It is the key that will unlock these cruel manacles.\"" CR>
|
|
)
|
|
(<MC-PRSI? ,CH-MERLIN>
|
|
<SETG GL-QUESTION 1>
|
|
<TELL
|
|
"The girl's eyes flash with anger. \"Are you going to help me or not?\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,CH-LOT>
|
|
<TELL
|
|
"\"I have not met him.\" She lowers her eyes demurely and continues, \"But
|
|
surely he cannot be as handsome as you.\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,TH-EXCALIBUR>
|
|
<TELL
|
|
"\"I've heard it is a mighty sword, but even Excalibur would be powerless
|
|
against these manacles.\"" CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"She looks at you imploringly and says, \"If you would but release me, I
|
|
will tell you all I know.\"" CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? ASK-FOR>
|
|
<TELL
|
|
"She looks at you imploringly and says, \"I will give you whatever you wish,
|
|
if you would only unlock these cruel manacles.\"" CR
|
|
>
|
|
)
|
|
(<VERB? ATTACK>
|
|
<RT-DEMON-OFFER-MSG>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,CH-GIRL ,FL-SEEN>
|
|
<TELL "The girl is sitting on">
|
|
<COND
|
|
(<IN? ,TH-FLEECE ,TH-DEMON-THRONE>
|
|
<TELL a ,TH-FLEECE ", which covers">
|
|
)
|
|
>
|
|
<TELL " her throne. Her ">
|
|
<COND
|
|
(<FSET? ,TH-LEFT-MANACLE ,FL-OPEN>
|
|
<TELL "left hand is">
|
|
)
|
|
(<FSET? ,TH-RIGHT-MANACLE ,FL-OPEN>
|
|
<TELL "right hand is">
|
|
)
|
|
(T
|
|
<TELL "hands are">
|
|
)
|
|
>
|
|
<TELL " manacled to the arms of the throne.">
|
|
<COND
|
|
(<IN? ,TH-GOLD-KEY ,CH-GIRL>
|
|
<TELL " A golden key hangs around her neck.">
|
|
)
|
|
>
|
|
<TELL
|
|
"||As you look at her, her image seems to shimmer slightly." CR
|
|
>
|
|
)
|
|
(<VERB? KISS>
|
|
<TELL
|
|
"As you approach, her lips part to meet yours and you see that her teeth are
|
|
pointed. At the last second, you pull away." CR
|
|
>
|
|
)
|
|
(<VERB? RELEASE>
|
|
<COND
|
|
(<IN? ,TH-GOLD-KEY ,WINNER>
|
|
<RT-FREE-DEMON-MSG>
|
|
)
|
|
(T
|
|
<SETG CLOCK-WAIT T>
|
|
<RT-AUTHOR-MSG ,K-HOW-INTEND-MSG>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "CH-DEMON"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT CH-DEMON
|
|
(DESC "demon")
|
|
(LOC TH-DEMON-THRONE)
|
|
(FLAGS FL-ALIVE FL-NO-DESC FL-LOCKED FL-OPEN FL-PERSON FL-SEARCH)
|
|
(SYNONYM DEMON NUDD TEETH PERSON)
|
|
(ADJECTIVE UGLY)
|
|
(ACTION RT-CH-DEMON)
|
|
>
|
|
|
|
; "CH-DEMON flags:"
|
|
; " FL-BROKEN - Demon has been foiled, will not stop player from leaving."
|
|
; " FL-LOCKED - Demon is disguised."
|
|
|
|
<ROUTINE RT-CH-DEMON ("OPT" (CONTEXT <>) (ART <>) (CAP? <>))
|
|
<COND
|
|
(<AND <MC-CONTEXT? ,M-WINNER <>>
|
|
<VERB? HELLO>
|
|
>
|
|
<COND
|
|
(<FSET? ,CH-DEMON ,FL-LOCKED>
|
|
<RT-DEMON-OFFER-MSG>
|
|
)
|
|
(T
|
|
<TELL
|
|
"\"Hello yourself!\" the demon roars. \"Now open these manacles!\"" CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-WINNER>
|
|
<COND
|
|
(<FSET? ,CH-DEMON ,FL-LOCKED>
|
|
<RT-DEMON-OFFER-MSG>
|
|
)
|
|
(<AND <VERB? TELL-ABOUT>
|
|
<MC-PRSO? ,CH-PLAYER>
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<VERB? WHO WHAT>
|
|
<RFALSE>
|
|
)
|
|
(T
|
|
<TELL
|
|
"\"Open these manacles and I'll do whatever you want.\"" CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<AND <FSET? ,CH-DEMON ,FL-LOCKED>
|
|
<MC-HERE? ,RM-DEMON-HALL>
|
|
<NOT <EVERYWHERE-VERB? <COND (,NOW-PRSI 2) (T 1)>>>
|
|
>
|
|
<RT-DEMON-OFFER-MSG>
|
|
<COND
|
|
(<AND <VERB? TELL>
|
|
,P-CONT
|
|
>
|
|
<RFATAL>
|
|
)
|
|
(T
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(,NOW-PRSI
|
|
<COND
|
|
(<AND <VERB? SHOW>
|
|
<MC-PRSO? ,TH-GOLD-KEY>
|
|
>
|
|
<TELL
|
|
"The demon roars in anguish, \"Stop tormenting me and open these damnable
|
|
manacles!\"" CR
|
|
>
|
|
)
|
|
(<AND <VERB? GIVE>
|
|
<MC-PRSO? ,TH-GOLD-KEY>
|
|
>
|
|
<COND
|
|
(<OR <FSET? ,TH-LEFT-MANACLE ,FL-OPEN>
|
|
<FSET? ,TH-RIGHT-MANACLE ,FL-OPEN>
|
|
>
|
|
<RT-FREE-DEMON-MSG T>
|
|
)
|
|
(T
|
|
<TELL
|
|
"The demon screams at you. \"Idiot! What good does the key do me when my
|
|
hands are manacled? Unlock the manacles, moron!\"" CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<AND <VERB? TELL>
|
|
,P-CONT
|
|
>
|
|
; "Message and RFATAL if don't want the demon to become winner"
|
|
<RFALSE>
|
|
)
|
|
(<VERB? ASK-ABOUT>
|
|
<COND
|
|
(<MC-PRSI? ,CH-DEMON>
|
|
<TELL
|
|
"\"I am the glorious epitome of all that is evil.\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,TH-GOLD-KEY>
|
|
<TELL
|
|
"\"It is the key that will unlock these accursed manacles.\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,TH-LEFT-MANACLE ,TH-RIGHT-MANACLE ,TH-MANACLES>
|
|
<TELL
|
|
"\"They were fastened upon me by Merlin's gods. Then they hung that damned
|
|
key about my neck to further torment me.\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,TH-FLEECE>
|
|
<TELL
|
|
"\"I have already given you the fleece. Now release me!\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,CH-MERLIN>
|
|
<TELL
|
|
"\"He is nothing but a third rate conjurer. His days are numbered.\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,CH-LOT>
|
|
<TELL
|
|
"\"Yes, yes. I'll kill him for you. I'll chain him to a rock and have rats
|
|
gnaw at his liver; or perhaps I'll roast him slowly on a spit over red-hot
|
|
coals. But first you must release me.\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,TH-EXCALIBUR>
|
|
<TELL
|
|
"\"Fancy swords will do you no good in here, boy.\"" CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL "\"Enough of this chatter. Release me!\"" CR>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? ATTACK>
|
|
<TELL
|
|
"You feel a jolt of electricity pass through your body and the demon cackles,
|
|
\"Fool! You can't hurt me!\"" CR
|
|
>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,CH-DEMON ,FL-SEEN>
|
|
<TELL "The hideously ugly demon is sitting on">
|
|
<COND
|
|
(<IN? ,TH-FLEECE ,TH-DEMON-THRONE>
|
|
<TELL a ,TH-FLEECE ", which covers">
|
|
)
|
|
>
|
|
<TELL " his throne. His ">
|
|
<COND
|
|
(<FSET? ,TH-LEFT-MANACLE ,FL-OPEN>
|
|
<TELL "left hand is">
|
|
)
|
|
(<FSET? ,TH-RIGHT-MANACLE ,FL-OPEN>
|
|
<TELL "right hand is">
|
|
)
|
|
(T
|
|
<TELL "hands are">
|
|
)
|
|
>
|
|
<TELL " manacled to the arms of the throne.">
|
|
<COND
|
|
(<IN? ,TH-GOLD-KEY ,CH-DEMON>
|
|
<TELL " A golden key hangs around his neck.">
|
|
)
|
|
>
|
|
<TELL " He leers at you through his obscene red eyes." CR>
|
|
)
|
|
(<VERB? KISS>
|
|
<TELL "Ugh.|">
|
|
<RT-AUTHOR-MSG "You're even sicker than I thought.">
|
|
)
|
|
(<VERB? RELEASE>
|
|
<COND
|
|
(<IN? ,TH-GOLD-KEY ,WINNER>
|
|
<RT-FREE-DEMON-MSG>
|
|
)
|
|
(T
|
|
<SETG CLOCK-WAIT T>
|
|
<RT-AUTHOR-MSG ,K-HOW-INTEND-MSG>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<CONSTANT K-DEMON-SCREAMS-MSG
|
|
"The word comes at you in a explosion of incredible force that blasts you
|
|
out of the hall, through the outer rooms, and dumps you on the ledge next to
|
|
the slumbering dragon.">
|
|
|
|
<ROUTINE RT-DEMON-OFFER-MSG ("OPT" (KEY? <>))
|
|
<COND
|
|
(<FSET? ,CH-DEMON ,FL-LOCKED>
|
|
<FCLEAR ,CH-DEMON ,FL-LOCKED>
|
|
<COND
|
|
(<IN? ,TH-GOLD-KEY ,CH-GIRL>
|
|
<MOVE ,TH-GOLD-KEY ,CH-DEMON>
|
|
)
|
|
>
|
|
<REMOVE ,CH-GIRL>
|
|
<TELL
|
|
"The girl's shimmering features dissolve into those of a hideously ugly demon
|
|
who leers at you through obscene, red eyes. "
|
|
>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-DEMON>
|
|
<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>
|
|
)
|
|
>
|
|
<COND
|
|
(<FSET? ,LG-HOT-DOOR ,FL-OPEN>
|
|
<FCLEAR ,LG-HOT-DOOR ,FL-OPEN>
|
|
<TELL
|
|
The ,LG-HOT-DOOR " slams shut behind you with an ominous \"clank.\" "
|
|
>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-MAP>
|
|
<RT-UPDATE-MAP-WINDOW>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<TELL "\"So, Arthur, you ">
|
|
<COND
|
|
(.KEY?
|
|
<TELL
|
|
"really didn't think I'd let you leave with that key, did you?"
|
|
>
|
|
)
|
|
(T
|
|
<TELL "have seen through my little disguise.">
|
|
)
|
|
>
|
|
<TELL
|
|
" But as I am feeling generous, I shall make you a bargain. We each have
|
|
something the other wants. I have" the ,TH-FLEECE ", without which you cannot
|
|
claim your kingdom. You have the power to free me. I propose a
|
|
trade.\"||\"Heed closely the words of my offer, for I will fulfill them to
|
|
the letter. If you agree to unlock my "
|
|
>
|
|
<COND
|
|
(<OR <FSET? ,TH-LEFT-MANACLE ,FL-OPEN>
|
|
<FSET? ,TH-RIGHT-MANACLE ,FL-OPEN>
|
|
>
|
|
<TELL "other manacle">
|
|
)
|
|
(T
|
|
<TELL "manacles">
|
|
)
|
|
>
|
|
<TELL
|
|
", I will give you" the ,TH-FLEECE " and allow you to finish your quest
|
|
unmolested.\"||\"Remember. If you agree, we will each be bound to the terms
|
|
of the contract. If you accept my offer, and then fail to honour the contract
|
|
to the letter, you will die a horribly painful death.\"||\"Do you accept my
|
|
offer?\"|"
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"|The demon says, \"I see that you have returned. Do you accept my offer?\"|"
|
|
>
|
|
)
|
|
>
|
|
<COND
|
|
(<YES? T>
|
|
<MOVE ,TH-FLEECE ,HERE>
|
|
<FCLEAR ,TH-FLEECE ,FL-NO-DESC>
|
|
<TELL
|
|
"The demon smiles with pleasure. He allows the fleece to slide onto"
|
|
the ,TH-GROUND ". \"Proceed, then.\"|"
|
|
>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-DESC>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"The demon's face contorts in fury and he screams maniacally, \"Then
|
|
BEGONE!\" " ,K-DEMON-SCREAMS-MSG CR CR
|
|
>
|
|
<COND
|
|
(<IN? ,TH-GOLD-KEY ,CH-PLAYER>
|
|
<MOVE ,TH-GOLD-KEY ,RM-DEMON-HALL>
|
|
)
|
|
>
|
|
<REPEAT ((OBJ <FIRST? ,RM-DEMON-HALL>) NXT)
|
|
<COND
|
|
(<NOT .OBJ>
|
|
<RETURN>
|
|
)
|
|
(T
|
|
<SET NXT <NEXT? .OBJ>>
|
|
<COND
|
|
(<NOT <EQUAL? .OBJ ,TH-DEMON-THRONE ,CH-PLAYER>>
|
|
<MOVE .OBJ ,RM-LEDGE>
|
|
)
|
|
>
|
|
<SET OBJ .NXT>
|
|
)
|
|
>
|
|
>
|
|
<RT-GOTO ,RM-LEDGE T>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
>
|
|
|
|
<ROUTINE RT-FREE-DEMON-MSG ("OPT" (DEMON? <>))
|
|
<COND
|
|
(.DEMON?
|
|
<COND
|
|
(<FSET? ,CH-DEMON ,FL-LOCKED>
|
|
<TELL The ,CH-GIRL>
|
|
)
|
|
(T
|
|
<TELL The ,CH-DEMON>
|
|
)
|
|
>
|
|
<TELL " takes the key and unlocks the other manacle. ">
|
|
)
|
|
>
|
|
<COND
|
|
(<NOT <IN? ,TH-FLEECE ,TH-DEMON-THRONE>>
|
|
<COND
|
|
(.DEMON?
|
|
<TELL "He">
|
|
)
|
|
(T
|
|
<TELL "The demon">
|
|
)
|
|
>
|
|
<TELL
|
|
" rises up and screams with crazed, triumphant laughter, \"Keep the fleece,
|
|
you fool! Finish your ridiculous quest if you like. It will do you no good.
|
|
For now I shall finally defeat those so-called gods of righteousness and
|
|
their feeble prophet, Merlin.\"||The demon suddenly dissolves into a cloud of
|
|
grey smoke and streams out of the hall, leaving behind only the echo of his
|
|
maniacal laughter. You are free to go, but when you realize the enormity of
|
|
the evil you have unleashed on the world, you collapse to the floor, bereft
|
|
of the will to move.|"
|
|
>
|
|
)
|
|
(T
|
|
<TELL "As soon as the manacles are open, the ">
|
|
<COND
|
|
(<FSET? ,CH-DEMON ,FL-LOCKED>
|
|
<TELL
|
|
"girl's features dissolve into those of a hideously evil demon who"
|
|
>
|
|
)
|
|
(T
|
|
<TELL "demon">
|
|
)
|
|
>
|
|
<TELL
|
|
" rises up and rubs his wrists, saying, \"Free at last!.\" He stretches and
|
|
then glances down, as if surprised to still see you there. \"Ah yes!\" he
|
|
cackles, \"There is that small matter of the promise I made you. Let me see -
|
|
I said I would keep you by my side for evermore. Well, I always keep my
|
|
word.\" He laughs and points at you. Electricity crackles from his fingertips
|
|
and suddenly you find yourself stretched out on the floor next to him, in the
|
|
form of a dog.|"
|
|
>
|
|
)
|
|
>
|
|
<RT-END-OF-GAME>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-GOLD-KEY"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-GOLD-KEY
|
|
(LOC CH-GIRL)
|
|
(DESC "gold key")
|
|
(FLAGS FL-NO-DESC FL-KEY FL-TAKEABLE FL-WORN)
|
|
(SYNONYM KEY)
|
|
(ADJECTIVE GOLD GOLDEN)
|
|
(SIZE 1)
|
|
(GENERIC RT-GN-KEY)
|
|
(ACTION RT-TH-GOLD-KEY)
|
|
>
|
|
|
|
<ROUTINE RT-TH-GOLD-KEY ("OPT" (CONTEXT <>) "AUX" L)
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<AND <VERB? TAKE>
|
|
<EQUAL? <SET L <LOC ,TH-GOLD-KEY>> ,CH-DEMON ,CH-GIRL>
|
|
>
|
|
<COND
|
|
(<RT-DO-TAKE ,TH-GOLD-KEY>
|
|
<THIS-IS-IT ,TH-GOLD-KEY>
|
|
<TELL "You remove the key from" the .L "'s neck." CR>
|
|
<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>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-LEFT-MANACLE"
|
|
; "TH-RIGHT-MANACLE"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-LEFT-MANACLE
|
|
(LOC TH-DEMON-THRONE)
|
|
(DESC "left manacle")
|
|
(FLAGS FL-LOCKED FL-NO-DESC FL-OPENABLE)
|
|
(SYNONYM MANACLE)
|
|
(ADJECTIVE LEFT GOLD GOLDEN)
|
|
(ACTION RT-TH-MANACLE)
|
|
>
|
|
|
|
; "TH-LEFT-MANACLE flags:"
|
|
; " FL-BROKEN - Manacle has been opened and closed again."
|
|
|
|
<OBJECT TH-RIGHT-MANACLE
|
|
(LOC TH-DEMON-THRONE)
|
|
(DESC "right manacle")
|
|
(FLAGS FL-LOCKED FL-NO-DESC FL-OPENABLE)
|
|
(SYNONYM MANACLE)
|
|
(ADJECTIVE RIGHT GOLD GOLDEN)
|
|
(ACTION RT-TH-MANACLE)
|
|
>
|
|
|
|
; "TH-RIGHT-MANACLE flags:"
|
|
; " FL-BROKEN - Manacle has been opened and closed again."
|
|
|
|
<ROUTINE RT-TH-MANACLE ("OPT" (CONTEXT <>) "AUX" OTHER)
|
|
<COND
|
|
(<MC-PRSO? ,TH-LEFT-MANACLE>
|
|
<SET OTHER ,TH-RIGHT-MANACLE>
|
|
)
|
|
(T
|
|
<SET OTHER ,TH-LEFT-MANACLE>
|
|
)
|
|
>
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? OPEN UNLOCK>
|
|
<COND
|
|
(<AND <MC-PRSI? <> ,TH-GOLD-KEY>
|
|
<IN? ,TH-GOLD-KEY ,WINNER>
|
|
>
|
|
<COND
|
|
(<FSET? ,PRSO ,FL-OPEN>
|
|
<RT-ALREADY-MSG ,PRSO "open">
|
|
)
|
|
(<FSET? .OTHER ,FL-OPEN>
|
|
<RT-FREE-DEMON-MSG>
|
|
)
|
|
(T
|
|
<FCLEAR ,PRSO ,FL-LOCKED>
|
|
<FSET ,PRSO ,FL-OPEN>
|
|
<COND
|
|
(<AND <NOT <FSET? ,CH-DEMON ,FL-LOCKED>>
|
|
<FSET? .OTHER ,FL-BROKEN>
|
|
>
|
|
<FSET ,CH-DEMON ,FL-BROKEN>
|
|
<REMOVE ,TH-GHOSTS>
|
|
<TELL
|
|
"You open" the ,PRSO ". The demon catches on to your plan and screams at you
|
|
in fury. \"Trapped! Trapped by my own words. You have won this round, Arthur,
|
|
but the final victory shall yet be mine, for I now lay a triple curse upon
|
|
your head.\"||\"You may gain the throne of England, but you shall gain no
|
|
solace from it. Your wife shall be barren, you shall be betrayed by your best
|
|
friend, and you shall die at the hand of your own son. Thus have I thrice
|
|
cursed you.\"||\"Now BEGONE!\""
|
|
>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<CRLF>
|
|
<INPUT 1 300 ,RT-STOP-READ>
|
|
<SCREEN 7>
|
|
<CLEAR 7>
|
|
<RT-CENTER-PIC ,K-PIC-ANGRY-DEMON>
|
|
<CURSET -1> ;"Make cursor go away."
|
|
<INPUT 1 100 ,RT-STOP-READ>
|
|
<CURSET -2> ;"Make cursor come back."
|
|
<SCREEN 0>
|
|
; "This is done so that the refresh doesn't
|
|
show the picture of the demon again."
|
|
<SETG GL-PICTURE-NUM ,K-PIC-DRAGON-OUT>
|
|
<V-REFRESH <>>
|
|
)
|
|
(T
|
|
<TELL " ">
|
|
)
|
|
>
|
|
<TELL
|
|
,K-DEMON-SCREAMS-MSG " The force of the blast dislodges the stones on the
|
|
mountainside above the cave entrance, and they fall down and seal off the
|
|
mouth of the cave.||"
|
|
>
|
|
<REPEAT ((OBJ <FIRST? ,RM-DEMON-HALL>) NXT)
|
|
<COND
|
|
(<NOT .OBJ>
|
|
<RETURN>
|
|
)
|
|
(T
|
|
<SET NXT <NEXT? .OBJ>>
|
|
<COND
|
|
(<NOT <EQUAL? .OBJ ,TH-DEMON-THRONE ,CH-PLAYER>>
|
|
<MOVE .OBJ ,RM-LEDGE>
|
|
)
|
|
>
|
|
<SET OBJ .NXT>
|
|
)
|
|
>
|
|
>
|
|
<RT-GOTO ,RM-LEDGE T>
|
|
<RT-SCORE-MSG 0 7 10 5>
|
|
)
|
|
(T
|
|
<TELL "You open" the ,PRSO ". The ">
|
|
<COND
|
|
(<FSET? ,CH-DEMON ,FL-LOCKED>
|
|
<TELL "girl">
|
|
)
|
|
(T
|
|
<TELL "demon">
|
|
)
|
|
>
|
|
<TELL " smiles.|">
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-DESC>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? CLOSE LOCK>
|
|
<COND
|
|
(<AND <MC-PRSI? <> ,TH-GOLD-KEY>
|
|
<IN? ,TH-GOLD-KEY ,WINNER>
|
|
>
|
|
<COND
|
|
(<NOT <FSET? ,PRSO ,FL-OPEN>>
|
|
<RT-ALREADY-MSG ,PRSO "closed">
|
|
)
|
|
(T
|
|
<FCLEAR ,PRSO ,FL-OPEN>
|
|
<FSET ,PRSO ,FL-LOCKED>
|
|
<COND
|
|
(<NOT <FSET? ,CH-DEMON ,FL-LOCKED>>
|
|
<FSET ,PRSO ,FL-BROKEN>
|
|
)
|
|
>
|
|
<TELL
|
|
"You snap" the ,PRSO " shut. The smile vanishes from the "
|
|
>
|
|
<COND
|
|
(<FSET? ,CH-DEMON ,FL-LOCKED>
|
|
<TELL "girl">
|
|
)
|
|
(T
|
|
<TELL "demon">
|
|
)
|
|
>
|
|
<TELL "'s face.|">
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-DESC>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,PRSO ,FL-SEEN>
|
|
<TELL The ,PRSO " is made of pure gold and is" open ,PRSO "." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-MANACLES"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-MANACLES
|
|
(LOC TH-DEMON-THRONE)
|
|
(DESC "manacles")
|
|
(FLAGS FL-LOCKED FL-NO-DESC FL-OPENABLE FL-PLURAL)
|
|
(SYNONYM MANACLES)
|
|
(ADJECTIVE GOLD GOLDEN)
|
|
(ACTION RT-TH-MANACLES)
|
|
>
|
|
|
|
<ROUTINE RT-TH-MANACLES ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,TH-MANACLES ,FL-SEEN>
|
|
<FSET ,TH-LEFT-MANACLE ,FL-SEEN>
|
|
<FSET ,TH-RIGHT-MANACLE ,FL-SEEN>
|
|
<TELL The+verb ,TH-MANACLES "are" " made of pure gold.">
|
|
<COND
|
|
(<FSET? ,TH-LEFT-MANACLE ,FL-OPEN>
|
|
<THIS-IS-IT ,TH-LEFT-MANACLE>
|
|
<TELL " The left one is open.">
|
|
)
|
|
(<FSET? ,TH-RIGHT-MANACLE ,FL-OPEN>
|
|
<THIS-IS-IT ,TH-RIGHT-MANACLE>
|
|
<TELL " The right one is open.">
|
|
)
|
|
>
|
|
<CRLF>
|
|
)
|
|
(<VERB? OPEN UNLOCK>
|
|
<COND
|
|
(<AND <MC-PRSI? <> ,TH-GOLD-KEY>
|
|
<IN? ,TH-GOLD-KEY ,WINNER>
|
|
>
|
|
<RT-FREE-DEMON-MSG>
|
|
)
|
|
(T
|
|
<SETG CLOCK-WAIT T>
|
|
<RT-AUTHOR-MSG ,K-HOW-INTEND-MSG>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? CLOSE LOCK>
|
|
; "The following is based on the assumption that both manacles can't be open
|
|
at the same time."
|
|
<COND
|
|
(<FSET? ,TH-LEFT-MANACLE ,FL-OPEN>
|
|
<RT-ALREADY-MSG ,TH-RIGHT-MANACLE "closed">
|
|
)
|
|
(<FSET? ,TH-RIGHT-MANACLE ,FL-OPEN>
|
|
<RT-ALREADY-MSG ,TH-LEFT-MANACLE "closed">
|
|
)
|
|
(T
|
|
<RT-ALREADY-MSG ,TH-MANACLES "closed">
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-FLEECE"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-FLEECE
|
|
(LOC TH-DEMON-THRONE)
|
|
(DESC "Golden Fleece")
|
|
(FLAGS FL-BURNABLE FL-NO-DESC FL-TAKEABLE)
|
|
(SYNONYM FLEECE)
|
|
(ADJECTIVE GOLD GOLDEN)
|
|
(SCORE <ORB <LSH 2 ,K-WISD-SHIFT> <LSH 1 ,K-QUEST-SHIFT>>)
|
|
(SIZE 5)
|
|
(ACTION RT-TH-FLEECE)
|
|
>
|
|
|
|
<ROUTINE RT-TH-FLEECE ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<AND <VERB? TAKE>
|
|
<IN? ,TH-FLEECE ,TH-DEMON-THRONE>
|
|
<FSET? ,CH-DEMON ,FL-LOCKED>
|
|
>
|
|
<TELL
|
|
"The girl looks at you with a tear in her eye. \"If you would only free me,\"
|
|
she pleads, \"the fleece shall be yours.\"" CR
|
|
>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<TELL "The legendary fleece shimmers with a golden glow." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-DEMON-THRONE"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-DEMON-THRONE
|
|
(LOC RM-DEMON-HALL)
|
|
(DESC "throne")
|
|
(FLAGS FL-NO-DESC FL-SEARCH FL-SURFACE)
|
|
(ADJECTIVE GOLD GOLDEN)
|
|
(SYNONYM THRONE CHAIR ARM ARMS)
|
|
(ACTION RT-TH-DEMON-THRONE)
|
|
>
|
|
|
|
<ROUTINE RT-TH-DEMON-THRONE ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,TH-DEMON-THRONE ,FL-SEEN>
|
|
<TELL "It's a throne with">
|
|
<COND
|
|
(<FSET? ,CH-DEMON ,FL-LOCKED>
|
|
<TELL a ,CH-GIRL>
|
|
)
|
|
(T
|
|
<TELL a ,CH-DEMON>
|
|
)
|
|
>
|
|
<TELL " manacled to it." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
<CONSTANT K-DEMON-DOMAIN-TBL
|
|
<TABLE (PURE BYTE LENGTH)
|
|
RM-EAST-OF-FORD
|
|
RM-FOOT-OF-MOUNTAIN
|
|
RM-LEDGE
|
|
RM-CAVE
|
|
RM-ICE-ROOM
|
|
RM-BAS-LAIR
|
|
RM-HOT-ROOM
|
|
RM-DEMON-HALL
|
|
>
|
|
>
|
|
|
|
;"***************************************************************************"
|
|
; "end of file"
|
|
;"***************************************************************************"
|
|
|