mirror of
https://github.com/historicalsource/arthur
synced 2024-07-16 22:14:20 +03:00
1654 lines
36 KiB
Plaintext
1654 lines
36 KiB
Plaintext
;"***************************************************************************"
|
|
; "game : Arthur"
|
|
; "file : JOUST.ZIL"
|
|
; "auth : $Author: DEB $"
|
|
; "date : $Date: 16 May 1989 1:20:38 $"
|
|
; "revs : $Revision: 1.99 $"
|
|
; "vers : 1.0"
|
|
;"---------------------------------------------------------------------------"
|
|
; "Joust"
|
|
; "Copyright (C) 1989 Infocom, Inc. All rights reserved."
|
|
;"***************************************************************************"
|
|
|
|
<INCLUDE "PDEFS"> ; "Because PARSE-ACTION used in this file."
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-EDGE-OF-WOODS"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-EDGE-OF-WOODS
|
|
(LOC ROOMS)
|
|
(DESC "edge of woods")
|
|
(FLAGS FL-LIGHTED)
|
|
(NORTH TO RM-ENCHANTED-FOREST)
|
|
(SOUTH TO RM-ROAD)
|
|
(IN PER RT-ENTER-BLUE-PAVILION)
|
|
(UP PER RT-FLY-UP)
|
|
(GLOBAL LG-ENCHANTED-TREES LG-FOREST RM-ROAD)
|
|
(ACTION RT-RM-EDGE-OF-WOODS)
|
|
>
|
|
|
|
<ROUTINE RT-RM-EDGE-OF-WOODS ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-BEG>
|
|
<COND
|
|
(<AND <VERB? CLIMB-ON>
|
|
<MC-PRSO? ,ROOMS>
|
|
>
|
|
<PERFORM ,V?CLIMB-ON ,TH-HORSE>
|
|
<RTRUE>
|
|
)
|
|
(<AND <VERB? TAKE>
|
|
<MC-PRSO? ,ROOMS>
|
|
>
|
|
<SETUP-ORPHAN-NP "take lance" ,TH-RED-LANCE ,TH-GREEN-LANCE>
|
|
<TELL
|
|
"The knight slaps you on the wrist and says, \"Musn't be greedy. "
|
|
,K-WHICH-LANCE-MSG
|
|
>
|
|
<RFATAL>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<TELL "You ">
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "are">
|
|
<COND
|
|
(<IN? ,CH-PLAYER ,TH-HORSE>
|
|
<TELL " riding a horse">
|
|
)
|
|
(T
|
|
<TELL standing>
|
|
)
|
|
>
|
|
<TELL " at">
|
|
)
|
|
(T
|
|
<TELL "come to">
|
|
)
|
|
>
|
|
<FSET ,TH-BLUE-PAVILION ,FL-SEEN>
|
|
<FSET ,TH-HORN ,FL-SEEN>
|
|
<FSET ,TH-TREE ,FL-SEEN>
|
|
<FSET ,TH-HORSE ,FL-SEEN>
|
|
<TELL
|
|
" the edge of the woods, where you see a knight's pavilion decked out in
|
|
blue. A curved horn is hanging from the branches of one of the trees, and a
|
|
large horse is tied to another. The path continues north into the woods,
|
|
and south towards the town.|"
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<MC-CONTEXT? ,M-END>
|
|
<COND
|
|
(<AND <VERB? TRANSFORM>
|
|
<IN? ,CH-BLUE-KNIGHT ,RM-EDGE-OF-WOODS>
|
|
>
|
|
<COND
|
|
(<NOT <MC-FORM? ,GL-OLD-FORM>>
|
|
<TELL
|
|
"|The knight looks at you curiously, says \"Damned odd,\" and runs you
|
|
through with his lance.|"
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
(,GL-FORM-ABORT
|
|
<TELL
|
|
"|Fortunately, it all happened so quickly that" the ,CH-BLUE-KNIGHT " didn't
|
|
notice." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-ENTER>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-EDGE-OF-WOODS>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<MC-CONTEXT? ,M-ENTERED>
|
|
<SETG GL-HORN-CNT 0>
|
|
<SETG GL-HORSE-CNT 0>
|
|
)
|
|
(<MC-CONTEXT? ,M-EXIT>
|
|
<COND
|
|
(<IN? ,CH-BLUE-KNIGHT ,RM-EDGE-OF-WOODS>
|
|
<MOVE ,TH-RED-LANCE ,CH-BLUE-KNIGHT>
|
|
<MOVE ,TH-GREEN-LANCE ,CH-BLUE-KNIGHT>
|
|
<REMOVE ,CH-BLUE-KNIGHT>
|
|
<REMOVE ,TH-BLUE-HORSE>
|
|
<RFALSE>
|
|
)
|
|
>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-RED-LANCE"
|
|
; "TH-GREEN-LANCE"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-RED-LANCE
|
|
(LOC CH-BLUE-KNIGHT)
|
|
(DESC "red lance")
|
|
(FLAGS FL-TAKEABLE FL-WEAPON)
|
|
(SYNONYM RED LANCE LANCES)
|
|
(ADJECTIVE RED)
|
|
(SIZE 15)
|
|
(GENERIC RT-GN-LANCE)
|
|
(ACTION RT-TH-LANCE)
|
|
>
|
|
|
|
<OBJECT TH-GREEN-LANCE
|
|
(LOC CH-BLUE-KNIGHT)
|
|
(DESC "green lance")
|
|
(FLAGS FL-TAKEABLE FL-WEAPON)
|
|
(SYNONYM GREEN LANCE)
|
|
(ADJECTIVE GREEN)
|
|
(SIZE 15)
|
|
(GENERIC RT-GN-LANCE)
|
|
(ACTION RT-TH-LANCE)
|
|
>
|
|
|
|
<ROUTINE RT-GN-LANCE (TBL FINDER)
|
|
<COND
|
|
(<EQUAL? <PARSE-ACTION ,PARSE-RESULT> ,V?ASK-ABOUT>
|
|
<RETURN ,TH-RED-LANCE>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-TH-LANCE ("OPT" (CONTEXT <>) "AUX" OTHER)
|
|
<COND
|
|
(<MC-PRSO? ,TH-RED-LANCE>
|
|
<SET OTHER ,TH-GREEN-LANCE>
|
|
)
|
|
(T
|
|
<SET OTHER ,TH-RED-LANCE>
|
|
)
|
|
>
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? TAKE>
|
|
<RT-TAKE-LANCE ,PRSO>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,PRSO ,FL-SEEN>
|
|
<COND
|
|
(<NOUN-USED? ,TH-RED-LANCE ,W?LANCES>
|
|
<TELL "They both look the same, except for the colour." CR>
|
|
)
|
|
(T
|
|
<TELL "It looks just the same as the other lance." CR>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-TAKE-LANCE (LANCE)
|
|
<COND
|
|
(<NOT <IN? ,CH-PLAYER ,TH-HORSE>>
|
|
<TELL
|
|
"The knight moves the lance beyond your reach and says, \"Haven't you read
|
|
Hoyle, lad? First you mount up, then you choose your lance.\"" CR
|
|
>
|
|
)
|
|
(T
|
|
<COND
|
|
(<RT-DO-TAKE .LANCE>
|
|
<RT-JOUST .LANCE>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
>
|
|
|
|
<GLOBAL GL-SH 0 <> BYTE>
|
|
<GLOBAL GL-LN 0 <> BYTE>
|
|
<GLOBAL GL-K-SH 0 <> BYTE>
|
|
<GLOBAL GL-K-LN 0 <> BYTE>
|
|
|
|
<ROUTINE RT-JOUST (LANCE "AUX" S L KS KL)
|
|
<TELL "You take" the .LANCE ". The knight keeps the ">
|
|
<COND
|
|
(<EQUAL? .LANCE ,TH-RED-LANCE>
|
|
<TELL "green">
|
|
)
|
|
(T
|
|
<TELL "red">
|
|
)
|
|
>
|
|
<TELL " one">
|
|
<COND
|
|
(<FSET? ,TH-HORSE ,FL-LOCKED>
|
|
<FCLEAR ,TH-HORSE ,FL-LOCKED>
|
|
<MOVE ,TH-BLUE-HORSE ,HERE>
|
|
<TELL
|
|
"and fetches his horse from behind the pavilion. He unties your horse, which"
|
|
>
|
|
)
|
|
(T
|
|
<TELL ". Your horse">
|
|
)
|
|
>
|
|
<TELL
|
|
" canters a little distance away and then turns to face the blue knight.
|
|
After a moment's hesitation the two well-trained horses start to gallop
|
|
towards one another.||"
|
|
>
|
|
|
|
<SETG GL-PICTURE-NUM ,K-PIC-JOUST>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
|
|
<SET KS <RANDOM 3>>
|
|
<SET KL <RANDOM 4>>
|
|
<REPEAT ()
|
|
<TELL "The knight">
|
|
<RT-JOUST-STATUS-MSG ,CH-BLUE-KNIGHT ,CH-PLAYER .KS .KL>
|
|
<CRLF>
|
|
<CRLF>
|
|
<SETG GL-K-SH .KS>
|
|
<SETG GL-K-LN .KL>
|
|
<REPEAT ()
|
|
<SET S <RT-JOUST-READ <>>>
|
|
<COND
|
|
(<EQUAL? .S -1>
|
|
<V-UNDO>
|
|
)
|
|
(T
|
|
<RETURN>
|
|
)
|
|
>
|
|
>
|
|
<REPEAT ()
|
|
<SET L <RT-JOUST-READ T>>
|
|
<COND
|
|
(<EQUAL? .L -1>
|
|
<V-UNDO>
|
|
)
|
|
(T
|
|
<RETURN>
|
|
)
|
|
>
|
|
>
|
|
<TELL The ,CH-PLAYER>
|
|
<RT-JOUST-STATUS-MSG ,CH-PLAYER ,CH-BLUE-KNIGHT .S .L>
|
|
<SETG GL-SH .S>
|
|
<SETG GL-LN .L>
|
|
<SET KS <RANDOM 3>>
|
|
<SET KL <RANDOM 4>>
|
|
<TELL " ">
|
|
<SETG P-CAN-UNDO <ISAVE>>
|
|
<COND
|
|
(<EQUAL? ,P-CAN-UNDO 2>
|
|
<SETG P-CONT -1>
|
|
<V-$REFRESH>
|
|
)
|
|
>
|
|
<TELL
|
|
"The two horses thunder toward each other. You are about to clash when you
|
|
see that the knight"
|
|
>
|
|
<RT-JOUST-STATUS-MSG ,CH-BLUE-KNIGHT ,CH-PLAYER .KS .KL>
|
|
<CRLF>
|
|
<CRLF>
|
|
<SETG GL-K-SH .KS>
|
|
<SETG GL-K-LN .KL>
|
|
<COND
|
|
(<OR <EQUAL? <SET S <RT-JOUST-READ <>>> -1>
|
|
<EQUAL? <SET L <RT-JOUST-READ T>> -1>
|
|
>
|
|
<SETG P-CAN-UNDO <>>
|
|
<TELL
|
|
"After a moment's hesitation the two well-trained horses start to gallop
|
|
towards one another.||"
|
|
>
|
|
<AGAIN>
|
|
)
|
|
(T
|
|
<RETURN>
|
|
)
|
|
>
|
|
>
|
|
<TELL The ,CH-PLAYER>
|
|
<RT-JOUST-STATUS-MSG ,CH-PLAYER ,CH-BLUE-KNIGHT .S .L>
|
|
<MOVE ,CH-PLAYER ,HERE>
|
|
<MOVE .LANCE ,CH-BLUE-KNIGHT>
|
|
<COND
|
|
(<EQUAL? .L 4>
|
|
<REMOVE ,CH-BLUE-KNIGHT>
|
|
<REMOVE ,TH-BLUE-HORSE>
|
|
<FSET ,TH-HORSE ,FL-LOCKED>
|
|
<TELL
|
|
" The knight pulls up short to prevent you from injuring his horse. He knocks
|
|
you from your horse, and says, \"That's no way for a gentleman to fight.\" He
|
|
collects your lance, ties" the ,TH-HORSE " to" the ,TH-TREE " and disappears
|
|
into his pavilion saying, \"Come back when you're ready to joust properly.\"" CR
|
|
>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-OBJS>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<SET KS .L>
|
|
<SET KL 2>
|
|
<TELL " The knight">
|
|
<RT-JOUST-STATUS-MSG ,CH-BLUE-KNIGHT ,CH-PLAYER .KS .KL>
|
|
)
|
|
>
|
|
<COND
|
|
(<AND <EQUAL? .S 2>
|
|
<EQUAL? .L 2>
|
|
>
|
|
<FSET ,CH-BLUE-KNIGHT ,FL-BROKEN>
|
|
<REMOVE ,CH-BLUE-KNIGHT>
|
|
<REMOVE ,TH-BLUE-HORSE>
|
|
<FSET ,TH-HORSE ,FL-LOCKED>
|
|
<SETG WINNER ,CH-PLAYER>
|
|
<RT-DO-TAKE ,TH-IVORY-KEY T>
|
|
<SETG GL-QUESTION 1>
|
|
<TELL
|
|
" The blue knight crashes to the turf. You try to stay upright on the horse,
|
|
but seconds later you, too, hit the ground. \"Well struck, lad!\" the knight
|
|
cries out. \"And by virtue of the fact that I was the first to be unseated,
|
|
you are declared the winner.\" After a few moments he staggers to his feet
|
|
and disappears into the pavilion. He emerges moments later with an ivory key,
|
|
which he hands to you." CR CR
|
|
|
|
"\"Congratulations, old chap. Spoils of war, what?\"" CR CR
|
|
|
|
"The knight stumbles around the clearing, cleaning up after the joust. He
|
|
ties the horse to the tree, collects the lances and disappears into the
|
|
pavilion." CR
|
|
>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-OBJS>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
>
|
|
<RT-SCORE-MSG 10 5 7 4>
|
|
)
|
|
(<NOT <EQUAL? .L 4>>
|
|
<TELL " The knight deals you a stunning blow on your ">
|
|
<COND
|
|
(<EQUAL? .S 2>
|
|
<TELL "shield">
|
|
)
|
|
(T
|
|
<TELL "chest">
|
|
)
|
|
>
|
|
<TELL
|
|
", knocking you from the horse. He took the blow from your lance on his
|
|
shield, and stayed on his horse."
|
|
>
|
|
<COND
|
|
(<NOT <EQUAL? .L 2>>
|
|
<TELL
|
|
" He cuffs you on the head as he rides by and says, \"And that's for not
|
|
jousting like a gentleman.\""
|
|
>
|
|
)
|
|
; (T
|
|
<TELL
|
|
" He cuffs you on the head as he rides by and says, \"And that's for thinking
|
|
that I would not joust like a gentleman.\""
|
|
>
|
|
)
|
|
>
|
|
<TELL
|
|
"||Your horse stands next to you. The knight says, \"Tough luck, old
|
|
bean. Care to try again?\"|"
|
|
>
|
|
<UPDATE-STATUS-LINE>
|
|
<COND
|
|
(<YES? T>
|
|
<TELL "\"Mount up, then.\"|">
|
|
)
|
|
(T
|
|
<REMOVE ,CH-BLUE-KNIGHT>
|
|
<REMOVE ,TH-BLUE-HORSE>
|
|
<FSET ,TH-HORSE ,FL-LOCKED>
|
|
<TELL
|
|
"\"Pity. I'll be running along then. Cheerio!\" The knight ties the horse to
|
|
the tree, collects the lances and disappears into the pavilion." CR
|
|
>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-OBJS>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
|
|
<SETG GL-PICTURE-NUM ,K-PIC-EDGE-OF-WOODS>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
|
|
<RTRUE>
|
|
>
|
|
|
|
<ROUTINE RT-JOUST-STATUS-MSG (ATT DEF S L)
|
|
<TELL verb .ATT "shield" his .ATT " ">
|
|
<RT-TARGET-MSG .S>
|
|
<TELL " and" verb .ATT "aim" his .ATT " lance at" his .DEF " ">
|
|
<RT-TARGET-MSG .L>
|
|
<TELL ".">
|
|
>
|
|
|
|
<ROUTINE RT-TARGET-MSG (T)
|
|
<COND
|
|
(<EQUAL? .T 1>
|
|
<TELL "head">
|
|
)
|
|
(<EQUAL? .T 2>
|
|
<TELL "body">
|
|
)
|
|
(<EQUAL? .T 3>
|
|
<TELL "leg">
|
|
)
|
|
(<EQUAL? .T 4>
|
|
<TELL "horse">
|
|
)
|
|
>
|
|
>
|
|
|
|
<VOC "HEAD" NOUN>
|
|
<VOC "BODY" NOUN>
|
|
<VOC "LEG" NOUN>
|
|
<VOC "LEGS" NOUN>
|
|
<VOC "HORSE" NOUN>
|
|
|
|
<ROUTINE RT-JOUST-READ (LANCE? "AUX" VAL WORD)
|
|
<REPEAT ()
|
|
<PUTB ,P-INBUF 1 0>
|
|
<TELL "Do you want to ">
|
|
<COND
|
|
(.LANCE?
|
|
<SET VAL 4>
|
|
<TELL "aim your lance at his">
|
|
)
|
|
(T
|
|
<SET VAL 3>
|
|
<TELL "shield your">
|
|
)
|
|
>
|
|
<REPEAT ((I 1))
|
|
<TELL " (" N .I ") ">
|
|
<RT-TARGET-MSG .I>
|
|
<COND
|
|
(<IGRTR? .I .VAL>
|
|
<RETURN>
|
|
)
|
|
(T
|
|
<TELL ",">
|
|
<COND
|
|
(<EQUAL? .I .VAL>
|
|
<TELL " or">
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
<TELL "?" CR ">">
|
|
<REPEAT ()
|
|
<SET VAL <ZREAD ,P-INBUF ,P-LEXV>>
|
|
<COND
|
|
(<EQUAL? .VAL 10 13>
|
|
<RETURN>
|
|
)
|
|
(T
|
|
<RT-HOT-KEY .VAL>
|
|
)
|
|
>
|
|
>
|
|
<VERSION?
|
|
(YZIP
|
|
<RT-SCRIPT-INBUF>
|
|
)
|
|
>
|
|
<SET WORD <ZGET ,P-LEXV ,P-LEXSTART>>
|
|
<SET VAL 0>
|
|
<COND
|
|
(<EQUAL? .WORD ,W?HEAD>
|
|
<SET VAL 1>
|
|
)
|
|
(<EQUAL? .WORD ,W?BODY>
|
|
<SET VAL 2>
|
|
)
|
|
(<EQUAL? .WORD ,W?LEG ,W?LEGS>
|
|
<SET VAL 3>
|
|
)
|
|
(<AND .LANCE?
|
|
<EQUAL? .WORD ,W?HORSE>
|
|
>
|
|
<SET VAL 4>
|
|
)
|
|
(<AND ,P-CAN-UNDO
|
|
<EQUAL? .WORD ,W?UNDO>
|
|
>
|
|
; <V-UNDO>
|
|
<SET VAL -1>
|
|
)
|
|
(<EQUAL? .WORD ,W?RESTART>
|
|
<V-RESTART>
|
|
)
|
|
(<EQUAL? .WORD ,W?RESTORE>
|
|
<V-RESTORE>
|
|
)
|
|
(<EQUAL? .WORD ,W?QUIT ,W?Q>
|
|
<V-QUIT>
|
|
)
|
|
(<NUMBER? <ZREST ,P-LEXV <* ,P-LEXSTART 2>>>
|
|
<COND
|
|
(<OR <EQUAL? ,P-NUMBER 1 2 3>
|
|
<AND .LANCE? <EQUAL? ,P-NUMBER 4>>
|
|
>
|
|
<SET VAL ,P-NUMBER>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<COND
|
|
(<NOT <ZERO? .VAL>>
|
|
<RETURN>
|
|
)
|
|
>
|
|
>
|
|
<RETURN .VAL>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-TREE"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-TREE
|
|
(LOC RM-EDGE-OF-WOODS)
|
|
(DESC "tree")
|
|
(FLAGS FL-NO-DESC FL-SURFACE FL-SEARCH)
|
|
(SYNONYM TREE BRANCH BRANCHES)
|
|
(ACTION RT-TH-TREE)
|
|
>
|
|
|
|
<ROUTINE RT-TH-TREE ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,TH-TREE ,FL-SEEN>
|
|
<FSET ,TH-HORN ,FL-SEEN>
|
|
<TELL
|
|
"It's a large shade tree that has a horn hanging from one of its lower
|
|
branches." CR
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-HORN"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-HORN
|
|
(LOC TH-HORN-CHAIN)
|
|
(DESC "horn")
|
|
(FLAGS FL-NO-LIST FL-TRY-TAKE)
|
|
(SYNONYM HORN)
|
|
(ACTION RT-TH-HORN)
|
|
>
|
|
|
|
; "TH-HORN flags:"
|
|
; " FL-LOCKED - Horn has been blown"
|
|
|
|
<GLOBAL GL-HORN-CNT 0 <> BYTE>
|
|
|
|
<ROUTINE RT-TH-HORN ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(,NOW-PRSI
|
|
<RFALSE>
|
|
)
|
|
(<VERB? BLOW>
|
|
<THIS-IS-IT ,TH-HORN>
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-ARTHUR>
|
|
<FSET ,TH-HORN ,FL-LOCKED>
|
|
<INC GL-HORN-CNT>
|
|
<COND
|
|
(<EQUAL? ,GL-HORN-CNT 1>
|
|
<COND
|
|
(<IN? ,CH-BLUE-KNIGHT ,HERE>
|
|
<TELL "The knight">
|
|
)
|
|
(T
|
|
<TELL "The door to the pavilion opens and ">
|
|
<COND
|
|
(<FSET? ,CH-BLUE-KNIGHT ,FL-SEEN>
|
|
<TELL "the knight">
|
|
)
|
|
(T
|
|
<FSET ,CH-BLUE-KNIGHT ,FL-SEEN>
|
|
<TELL
|
|
"a knight with a bushy white mustache and splendid side-whiskers"
|
|
>
|
|
)
|
|
>
|
|
<TELL " pokes his head out and">
|
|
)
|
|
>
|
|
<TELL
|
|
" splutters, \"I say, I say. I mean, after all... What the deuce has happened
|
|
to manners? Doesn't anyone knock anymore? It's not my fault that some damned
|
|
fool hung that horn there. Why don't you knock on the door like a proper
|
|
person?\""
|
|
>
|
|
)
|
|
(<EQUAL? ,GL-HORN-CNT 2>
|
|
<COND
|
|
(<IN? ,CH-BLUE-KNIGHT ,HERE>
|
|
<TELL "The">
|
|
)
|
|
(T
|
|
<TELL "The door swings open again and the">
|
|
)
|
|
>
|
|
<TELL
|
|
" knight says, \"I really must insist that you cease blowing that infernal
|
|
horn. Otherwise I shall smite you.\""
|
|
>
|
|
)
|
|
(T
|
|
<TELL "The knight">
|
|
<COND
|
|
(<NOT <IN? ,CH-BLUE-KNIGHT ,HERE>>
|
|
<TELL " emerges from the pavilion and">
|
|
)
|
|
>
|
|
<TELL
|
|
" says, \"I'm sorry to have to do this, old chap. But you leave
|
|
me no choice.\" He deals you a mighty blow that puts a dent in his mailed
|
|
fist and has the unfortunate side-effect of killing you.|"
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
>
|
|
<COND
|
|
(<NOT <IN? ,CH-BLUE-KNIGHT ,HERE>>
|
|
<TELL ,K-RETREATS-INSIDE-MSG>
|
|
)
|
|
>
|
|
<CRLF>
|
|
)
|
|
(T
|
|
<TELL "You can't reach the horn. You're" aform "." CR>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? TAKE MOVE>
|
|
<THIS-IS-IT ,TH-HORN>
|
|
<TELL "You can't. The horn is chained to the tree." CR>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,TH-HORN ,FL-SEEN>
|
|
<THIS-IS-IT ,TH-HORN>
|
|
<TELL "It is the kind of curved horn used in hunting." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-HORN-CHAIN"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-HORN-CHAIN
|
|
(LOC TH-TREE)
|
|
(DESC "chains")
|
|
(FLAGS FL-NO-LIST FL-PLURAL FL-SURFACE FL-SEARCH FL-TRY-TAKE)
|
|
(SYNONYM CHAIN CHAINS)
|
|
(ACTION RT-TH-HORN-CHAIN)
|
|
>
|
|
|
|
<ROUTINE RT-TH-HORN-CHAIN ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(,NOW-PRSI
|
|
<RFALSE>
|
|
)
|
|
(<VERB? TAKE MOVE>
|
|
<FSET ,TH-TREE ,FL-SEEN>
|
|
<TELL "The chains are firmly attached to the tree." CR>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,TH-TREE ,FL-SEEN>
|
|
<TELL "The chains firmly attach the horn to the tree." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-BLUE-HORSE"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-BLUE-HORSE
|
|
(DESC "blue knight's horse")
|
|
(FLAGS FL-ALIVE FL-NO-LIST FL-SEARCH FL-SURFACE FL-VEHICLE FL-TRY-TAKE)
|
|
(SYNONYM HORSE HORSES)
|
|
(ADJECTIVE BLUE)
|
|
(OWNER CH-BLUE-KNIGHT)
|
|
(GENERIC RT-GN-HORSE)
|
|
(ACTION RT-TH-BLUE-HORSE)
|
|
>
|
|
|
|
<ROUTINE RT-TH-BLUE-HORSE ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-WINNER>
|
|
<TELL "The horse doesn't seem to understand you." CR>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? CLIMB-ON>
|
|
<TELL "The blue knight is already on the horse." CR>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<COND
|
|
(<NOUN-USED? ,TH-BLUE-HORSE ,W?HORSES>
|
|
<SETG P-THEM-OBJECT <>>
|
|
<FCLEAR ,THEM ,FL-TOUCHED>
|
|
<TELL "The horses look evenly matched." CR>
|
|
)
|
|
(T
|
|
<FSET ,TH-BLUE-HORSE ,FL-SEEN>
|
|
<TELL "It is a sturdy creature, obviously bred for jousting." CR>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-HORSE"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-HORSE
|
|
(LOC RM-EDGE-OF-WOODS)
|
|
(DESC "white horse")
|
|
(FLAGS FL-ALIVE FL-LOCKED FL-NO-LIST FL-SEARCH FL-SURFACE FL-VEHICLE FL-TRY-TAKE)
|
|
(SYNONYM HORSE)
|
|
(ADJECTIVE WHITE)
|
|
(NORTH PER RT-HORSE-TIED)
|
|
(SOUTH PER RT-HORSE-TIED)
|
|
(EAST PER RT-HORSE-TIED)
|
|
(WEST PER RT-HORSE-TIED)
|
|
(NE PER RT-HORSE-TIED)
|
|
(NW PER RT-HORSE-TIED)
|
|
(SE PER RT-HORSE-TIED)
|
|
(SW PER RT-HORSE-TIED)
|
|
(GENERIC RT-GN-HORSE)
|
|
(ACTION RT-TH-HORSE)
|
|
>
|
|
|
|
<GLOBAL GL-HORSE-CNT 0 <> BYTE>
|
|
|
|
<CONSTANT K-WHICH-LANCE-MSG
|
|
"Which lance would you like, the red one or the green one?\"|">
|
|
|
|
<ROUTINE RT-TH-HORSE ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-WINNER>
|
|
<TELL "The horse doesn't seem to understand you." CR>
|
|
)
|
|
(<MC-CONTEXT? ,M-BEG>
|
|
<COND
|
|
(<OR <AND <VERB? WALK> <EQUAL? ,P-WALK-DIR ,P?DOWN>>
|
|
<AND <VERB? WALK-TO CLIMB-DOWN CLIMB-ON> <MC-PRSO? ,TH-GROUND>>
|
|
<AND <VERB? CLIMB-DOWN> <MC-PRSO? ,TH-HORSE>>
|
|
>
|
|
<MOVE ,WINNER ,HERE>
|
|
<TELL The+verb ,WINNER "are" " back on" the ,TH-GROUND "." CR>
|
|
)
|
|
>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? CLIMB-ON>
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-ARTHUR>
|
|
<COND
|
|
(<IN? ,CH-PLAYER ,TH-HORSE>
|
|
<TELL "You are already on the horse." CR>
|
|
)
|
|
(T
|
|
<MOVE ,WINNER ,TH-HORSE>
|
|
<TELL The+verb ,WINNER "are" " now on the horse.">
|
|
<COND
|
|
(<IN? ,CH-BLUE-KNIGHT ,RM-EDGE-OF-WOODS>
|
|
<SETUP-ORPHAN-NP "take lance" ,TH-RED-LANCE ,TH-GREEN-LANCE>
|
|
<TELL
|
|
" \"Jolly good,\" says the knight. \"" ,K-WHICH-LANCE-MSG
|
|
>
|
|
)
|
|
(T
|
|
<CRLF>
|
|
)
|
|
>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-DESC>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<TELL "The horse shies away from you." CR>
|
|
)
|
|
>
|
|
)
|
|
(<AND <VERB? DISMOUNT>
|
|
<IN? ,CH-PLAYER ,TH-HORSE>
|
|
>
|
|
<MOVE ,WINNER ,HERE>
|
|
<TELL The+verb ,WINNER "are" " back on" the ,TH-GROUND "." CR>
|
|
)
|
|
(<VERB? UNTIE RELEASE TAKE>
|
|
<COND
|
|
(<NOT <MC-FORM? ,K-FORM-ARTHUR>>
|
|
<RT-ANIMAL-CANT-MSG "untie" ,TH-HORSE>
|
|
)
|
|
(<IN? ,WINNER ,TH-HORSE>
|
|
<TELL
|
|
The ,WINNER " can't do that while you are on the horse." CR
|
|
>
|
|
)
|
|
(T
|
|
<INC GL-HORSE-CNT>
|
|
<COND
|
|
(<EQUAL? ,GL-HORSE-CNT 1>
|
|
<TELL "As you start to untie the horse, ">
|
|
<COND
|
|
(<IN? ,CH-BLUE-KNIGHT ,RM-EDGE-OF-WOODS>
|
|
<TELL "the knight">
|
|
)
|
|
(T
|
|
<TELL
|
|
"a knight pokes his head out of the door of the pavilion and"
|
|
>
|
|
)
|
|
>
|
|
<TELL
|
|
" says, \"I'm awfully sorry, old chap. But if you steal that horse I shall be
|
|
forced to kill you.\""
|
|
>
|
|
<COND
|
|
(<NOT <IN? ,CH-BLUE-KNIGHT ,RM-EDGE-OF-WOODS>>
|
|
<TELL ,K-RETREATS-INSIDE-MSG>
|
|
)
|
|
>
|
|
<CRLF>
|
|
)
|
|
(<EQUAL? ,GL-HORSE-CNT 2>
|
|
<TELL "The knight ">
|
|
<COND
|
|
(<NOT <IN? ,CH-BLUE-KNIGHT ,RM-EDGE-OF-WOODS>>
|
|
<TELL
|
|
"pokes his head out of the door long enough to say"
|
|
>
|
|
)
|
|
(T
|
|
<TELL "says">
|
|
)
|
|
>
|
|
<TELL
|
|
", \"I'm not joking, you know. If you persist in trying to steal that
|
|
horse, I shall smite you.\"" CR
|
|
>
|
|
)
|
|
(<EQUAL? ,GL-HORSE-CNT 3>
|
|
<TELL "The knight ">
|
|
<COND
|
|
(<NOT <IN? ,CH-BLUE-KNIGHT ,RM-EDGE-OF-WOODS>>
|
|
<TELL "comes out of the pavilion and ">
|
|
)
|
|
>
|
|
<TELL
|
|
"smites you. You are now smitten. You are also dead.|"
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,TH-HORSE ,FL-SEEN>
|
|
<TELL "It is a sturdy creature, obviously bred for jousting." CR>
|
|
)
|
|
(<AND <VERB? ATTACK>
|
|
<VERB-WORD? ,W?KICK>
|
|
<IN? ,WINNER ,TH-HORSE>
|
|
>
|
|
<RT-HORSE-TIED>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-HORSE-TIED ("OPT" (QUIET <>))
|
|
<COND
|
|
(.QUIET
|
|
<RFALSE>
|
|
)
|
|
(<IN? ,CH-BLUE-KNIGHT ,RM-EDGE-OF-WOODS>
|
|
<TELL "The knight cuts you off and says, \"That's my horse, lad.\"|">
|
|
)
|
|
(T
|
|
<TELL
|
|
"The horse isn't going anywhere while it's tied to that tree.|">
|
|
)
|
|
>
|
|
<RFALSE>
|
|
>
|
|
|
|
<ROUTINE RT-GN-HORSE (TBL FINDER)
|
|
<RETURN ,TH-HORSE>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "CH-BLUE-KNIGHT"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT CH-BLUE-KNIGHT
|
|
(DESC "blue knight")
|
|
(FLAGS FL-ALIVE FL-OPEN FL-PERSON FL-SEARCH)
|
|
(SYNONYM KNIGHT MAN PERSON)
|
|
(ADJECTIVE BLUE OLD)
|
|
(GENERIC RT-GN-OLD-MAN)
|
|
(ACTION RT-CH-BLUE-KNIGHT)
|
|
>
|
|
|
|
; "CH-BLUE-KNIGHT flags:"
|
|
; " FL-LOCKED - Knight has made comment about horn"
|
|
; " FL-BROKEN - Knight has lost joust"
|
|
|
|
<ROUTINE RT-CH-BLUE-KNIGHT ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(<AND <MC-CONTEXT? <> ,M-WINNER>
|
|
<VERB? HELLO GOODBYE>
|
|
>
|
|
<COND
|
|
(<VERB? HELLO>
|
|
<TELL "\"Greetings, lad.\"" CR>
|
|
)
|
|
(<VERB? GOODBYE>
|
|
<TELL
|
|
"\"Leaving so soon? Perhaps it's just as well. Come back when you've learned
|
|
to joust like a gentleman.\"" CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-WINNER>
|
|
<COND
|
|
(<AND <VERB? TELL-ABOUT>
|
|
<MC-PRSO? ,CH-PLAYER>
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<VERB? WHO WHAT>
|
|
<RFALSE>
|
|
)
|
|
(<VERB? JOUST>
|
|
<TELL "\"I'd love to. ">
|
|
<COND
|
|
(<NOT <IN? ,CH-PLAYER ,TH-HORSE>>
|
|
<TELL "Mount up">
|
|
)
|
|
(T
|
|
<TELL "Take a lance">
|
|
)
|
|
>
|
|
<TELL ", lad.\"" CR>
|
|
)
|
|
(<AND <VERB? GIVE>
|
|
<MC-PRSI? ,CH-PLAYER>
|
|
>
|
|
<COND
|
|
(<MC-PRSO? ,TH-RED-LANCE ,TH-GREEN-LANCE>
|
|
<RT-TAKE-LANCE ,PRSO>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"The knight looks at you and says, \"Not now, old chap. Let's joust.\"" CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(,NOW-PRSI
|
|
<RFALSE>
|
|
)
|
|
(<AND <VERB? TELL>
|
|
,P-CONT
|
|
>
|
|
; "Message and RFATAL if don't want knight to become winner"
|
|
<RFALSE>
|
|
)
|
|
(<VERB? ASK-ABOUT>
|
|
<COND
|
|
(<MC-PRSI? ,TH-RED-LANCE ,TH-GREEN-LANCE>
|
|
<TELL
|
|
"\"They're both the same, old bean. Knight's honour and all that.\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,CH-BLUE-KNIGHT>
|
|
<TELL
|
|
"\"Oh, I'm just an old campaigner who enjoys a sportsmanlike joust every now
|
|
and again.\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,TH-HORSE ,TH-BLUE-HORSE>
|
|
<COND
|
|
(<NOUN-USED? ,PRSI ,W?HORSES>
|
|
<TELL
|
|
"\"You'll not find two better trained, more evenly matched jousting horses
|
|
in the country.\"" CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"\"He's one of the best-trained jousting horses in the county.\"" CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<MC-PRSI? ,CH-MERLIN>
|
|
<TELL
|
|
"\"I've never heard of him. What team does he joust for?\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,CH-LOT>
|
|
<TELL
|
|
"The knight snorts in derision. \"Nasty piece of business, there. I'd steer
|
|
clear of him if I were you, lad.\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,TH-HORN>
|
|
<TELL
|
|
"\"Some blasted fool hung it up there while I was away on holiday and I
|
|
haven't been able to get it down since.\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,TH-JOUST>
|
|
<TELL
|
|
"\"Jolly good question. King of sports, don't you know? Flower of chivalry
|
|
and all that, what?\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,TH-EXCALIBUR>
|
|
<TELL
|
|
"\"Sorry - jousting's my sport. I leave swordplay to the younger set.\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,TH-CHIVALRY>
|
|
<TELL
|
|
"\"It's all quite simple, you know. 'Do unto others,' and all that.\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,TH-BLUE-PAVILION>
|
|
<TELL
|
|
"\"They say an Englishman's home is his castle. But you'll notice they
|
|
keep their mouths shut about these bloody cheap pavilions.\"" CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"\"Afraid I don't know too much about that, old fellow. Sorry.\"" CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? ATTACK>
|
|
<MOVE ,TH-RED-LANCE ,CH-BLUE-KNIGHT>
|
|
<MOVE ,TH-GREEN-LANCE ,CH-BLUE-KNIGHT>
|
|
<REMOVE ,CH-BLUE-KNIGHT>
|
|
<REMOVE ,TH-BLUE-HORSE>
|
|
<TELL
|
|
"The knight easily avoids your awkward attempt to " vw " him and cuffs you on
|
|
the head. \"That's no way for a gentleman to fight,\" he says, disappearing
|
|
into his pavilion. \"Come back when you're ready to joust.\"" CR
|
|
>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-OBJS>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,CH-BLUE-KNIGHT ,FL-SEEN>
|
|
<TELL
|
|
"The knight is an elderly gentleman with a bushy white mustache and splendid
|
|
side-whiskers." CR
|
|
>
|
|
)
|
|
(<VERB? ASK-FOR>
|
|
<COND
|
|
(<MC-PRSI? ,TH-RED-LANCE ,TH-GREEN-LANCE>
|
|
<RT-TAKE-LANCE ,PRSI>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-BLUE-PAVILION"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-BLUE-PAVILION
|
|
(LOC RM-EDGE-OF-WOODS)
|
|
(DESC "pavilion")
|
|
(FLAGS FL-NO-DESC)
|
|
(SYNONYM PAVILION PAVILLION DOOR TENT)
|
|
(ACTION RT-TH-BLUE-PAVILION)
|
|
>
|
|
|
|
<CONSTANT K-RETREATS-INSIDE-MSG " He retreats inside the pavilion and closes the door.">
|
|
|
|
<ROUTINE RT-TH-BLUE-PAVILION ("OPT" (CONTEXT <>) "AUX" (J <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<AND <TOUCH-VERB?>
|
|
<IN? ,CH-PLAYER ,TH-HORSE>
|
|
>
|
|
<TELL The ,WINNER " can't reach">
|
|
<COND
|
|
(<NOUN-USED? ,TH-BLUE-PAVILION ,W?DOOR>
|
|
<TELL " the door">
|
|
)
|
|
(T
|
|
<TELL the ,TH-BLUE-PAVILION>
|
|
)
|
|
>
|
|
<TELL " while you're on the horse." CR>
|
|
)
|
|
(<VERB? KNOCK SCRATCH>
|
|
<COND
|
|
(<IN? ,CH-BLUE-KNIGHT ,HERE>
|
|
<TELL
|
|
"The knight says, \"Have ye gone daft, lad? I'm already here.\"" CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL "The door to the pavilion opens and ">
|
|
<COND
|
|
(<FSET? ,CH-BLUE-KNIGHT ,FL-SEEN>
|
|
<TELL "the knight">
|
|
)
|
|
(T
|
|
<FSET ,CH-BLUE-KNIGHT ,FL-SEEN>
|
|
<TELL
|
|
"a knight with a bushy white mustache and splendid side-whiskers"
|
|
>
|
|
)
|
|
>
|
|
<TELL " emerges. ">
|
|
<COND
|
|
(<NOT <MC-FORM? ,K-FORM-ARTHUR>>
|
|
<TELL
|
|
"He looks around, says \"Damn teenagers,\" and retreats inside." CR
|
|
>
|
|
)
|
|
(<FSET? ,CH-BLUE-KNIGHT ,FL-BROKEN>
|
|
<TELL
|
|
"\"You again? You've beaten me once already. Go away.\"" ,K-RETREATS-INSIDE-MSG CR
|
|
>
|
|
)
|
|
(T
|
|
<COND
|
|
(<NOT <FSET? ,CH-BLUE-KNIGHT ,FL-LOCKED>>
|
|
<FSET ,CH-BLUE-KNIGHT ,FL-LOCKED>
|
|
<COND
|
|
(<FSET? ,TH-HORN ,FL-LOCKED>
|
|
<TELL
|
|
"\"That's better,\" he fusses. \"Don't know what the world's coming to. "
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"\"I say, frightfully kind of you to knock. Most people just start to blow
|
|
away on that beastly horn. "
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<TELL
|
|
"I suppose you're here to joust?\" He looks you up and down. "
|
|
>
|
|
<COND
|
|
(<NOT <IN? ,TH-ARMOUR ,CH-PLAYER>>
|
|
<TELL
|
|
"\"I see you have no armour. A man without armour is no nobleman, therefore I
|
|
cannot joust with you.\"" ,K-RETREATS-INSIDE-MSG CR
|
|
>
|
|
)
|
|
(<NOT <IN? ,TH-SHIELD ,CH-PLAYER>>
|
|
<TELL
|
|
"\"I see you have no shield. I can't joust with a man who has no shield. It
|
|
wouldn't be cricket - although I don't suppose that's been invented yet.
|
|
Still, if it had, it wouldn't be, if you see what I mean. Sorry.\""
|
|
,K-RETREATS-INSIDE-MSG CR
|
|
>
|
|
)
|
|
(<FSET? ,TH-SHIELD ,FL-BROKEN>
|
|
<TELL
|
|
"\"I see your shield is tarnished. Can't joust with a man with a tarnished
|
|
shield. It's just not done. Knight in shining armour and all that, don't you
|
|
know. Sorry.\"" ,K-RETREATS-INSIDE-MSG CR
|
|
>
|
|
)
|
|
(T
|
|
<MOVE ,CH-BLUE-KNIGHT ,RM-EDGE-OF-WOODS>
|
|
<FSET ,TH-RED-LANCE ,FL-SEEN>
|
|
<FSET ,TH-GREEN-LANCE ,FL-SEEN>
|
|
<TELL
|
|
"\"Splendid. I see you are a gentleman and prefer to joust without a helmet.
|
|
Let's have at it then.\"" CR CR
|
|
|
|
"The knight disappears into the pavilion for a moment and then emerges
|
|
carrying two lances that are identical save that one is red and one is green.
|
|
\"Mount up, lad,\" says the knight, \"And I shall give you your choice of
|
|
lances.\"" CR
|
|
>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-OBJS>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? ENTER>
|
|
<TELL "The door is closed." CR>
|
|
)
|
|
(<NOUN-USED? ,TH-BLUE-PAVILION ,W?DOOR>
|
|
<COND
|
|
(<VERB? OPEN UNLOCK>
|
|
<TELL "The door is locked from the inside." CR>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? LOOK-BEHIND>
|
|
<TELL "It's not polite to look in other people's back yard." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-ENTER-BLUE-PAVILION ("OPT" (QUIET <>))
|
|
<COND
|
|
(<NOT .QUIET>
|
|
<TELL "The door is closed." CR>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-SHIELD"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-SHIELD
|
|
(LOC RM-ARMOURY)
|
|
(DESC "shield")
|
|
(FLAGS FL-BROKEN FL-TAKEABLE FL-NO-DESC)
|
|
(SYNONYM SHIELD)
|
|
(SCORE <LSH 1 ,K-QUEST-SHIFT>)
|
|
(SIZE 10)
|
|
(ACTION RT-TH-SHIELD)
|
|
>
|
|
|
|
; "TH-SHIELD flags:"
|
|
; " FL-BROKEN - Shield is tarnished"
|
|
|
|
<ROUTINE RT-TH-SHIELD ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(,NOW-PRSI
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE LOOK-IN>
|
|
<FSET ,TH-SHIELD ,FL-SEEN>
|
|
<COND
|
|
(<FSET? ,TH-SHIELD ,FL-BROKEN>
|
|
<TELL
|
|
The ,TH-SHIELD " looks old and tarnished, but serviceable." CR
|
|
>
|
|
)
|
|
(T
|
|
<FSET ,TH-SHIELD ,FL-SEEN>
|
|
<TELL
|
|
The+verb ,WINNER "see" " an amazingly clear reflection of yourself in"
|
|
the ,TH-SHIELD "." CR
|
|
>
|
|
<RT-AUTHOR-MSG "Not a pretty sight.">
|
|
)
|
|
>
|
|
)
|
|
(<VERB? POLISH>
|
|
<COND
|
|
(<FSET? ,TH-SHIELD ,FL-BROKEN>
|
|
<COND
|
|
(<NOT <MC-FORM? ,K-FORM-ARTHUR>>
|
|
<RT-ANIMAL-CANT-MSG>
|
|
)
|
|
(<MC-PRSI? ,TH-PUMICE>
|
|
<FCLEAR ,TH-SHIELD ,FL-BROKEN>
|
|
<TELL
|
|
"A few minutes work puts a mirror-like shine on" the ,TH-SHIELD "." CR
|
|
>
|
|
<RT-SCORE-MSG 0 2 0 0>
|
|
)
|
|
(T
|
|
<TELL
|
|
The ,WINNER " can't shine" the ,TH-SHIELD " with" the ,PRSI "." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? POINT>
|
|
<COND
|
|
(<AND <MC-PRSI? ,CH-BASILISK>
|
|
<FSET? ,CH-BASILISK ,FL-ALIVE>
|
|
<NOT <FSET? ,TH-SHIELD ,FL-BROKEN>>
|
|
>
|
|
<RT-KILL-BASILISK>
|
|
)
|
|
(<OR <FSET? ,TH-SHIELD ,FL-BROKEN>
|
|
<NOT <FSET? ,PRSI ,FL-ALIVE>>
|
|
<FSET? ,PRSI ,FL-ASLEEP>
|
|
>
|
|
<TELL
|
|
"You point" the ,TH-SHIELD " at" the ,PRSI ", but nothing happens." CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
The+verb ,PRSI "glance" " at" his ,PRSI " reflection, but then" verb ,PRSI
|
|
"ignore" " it." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<AND <VERB? HIDE-BEHIND RAISE>
|
|
<MC-HERE? ,RM-BAS-LAIR>
|
|
<FSET? ,CH-BASILISK ,FL-ALIVE>
|
|
<NOT <FSET? ,TH-SHIELD ,FL-BROKEN>>
|
|
>
|
|
<RT-KILL-BASILISK>
|
|
)
|
|
(<AND <VERB? HIDE-BEHIND RAISE>
|
|
<MC-HERE? ,RM-NORTH-OF-CHASM>
|
|
<FSET? ,TH-BOAR ,FL-ALIVE>
|
|
>
|
|
; "Duane - have the boar run right through the shield & kill Arthur."
|
|
<COND
|
|
(<IN? ,TH-SHIELD ,CH-PLAYER>
|
|
<TELL
|
|
"The boar crashes through the shield as if it were made of paper. "
|
|
>
|
|
<RT-I-BOAR T>
|
|
)
|
|
(T
|
|
<TELL "You're not holding the shield." CR>
|
|
<SETG CLOCK-WAIT T>
|
|
<RFATAL>
|
|
)
|
|
>
|
|
)
|
|
(<AND <VERB? SHOW>
|
|
<MC-PRSI? ,CH-BASILISK>
|
|
<FSET? ,CH-BASILISK ,FL-ALIVE>
|
|
<NOT <FSET? ,TH-SHIELD ,FL-BROKEN>>
|
|
>
|
|
<RT-KILL-BASILISK>
|
|
)
|
|
(<VERB? HIDE-BEHIND>
|
|
<TELL The ,TH-SHIELD " is too small to hide behind." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-ARMOUR"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-ARMOUR
|
|
(LOC RM-ARMOURY)
|
|
(DESC "armour")
|
|
(FLAGS FL-CLOTHING FL-COLLECTIVE FL-PLURAL FL-TAKEABLE FL-VOWEL FL-NO-DESC)
|
|
(SYNONYM ARMOUR ARMOR MAIL COAT)
|
|
(ADJECTIVE CHAIN)
|
|
(OWNER TH-ARMOUR) ;"coat of armour"
|
|
(SIZE 50)
|
|
(SCORE <LSH 1 ,K-QUEST-SHIFT>)
|
|
(GENERIC RT-GN-ARMOUR)
|
|
(ACTION RT-TH-ARMOUR)
|
|
>
|
|
|
|
<ROUTINE RT-TH-ARMOUR ("OPT" (CONTEXT <>) "AUX" (CR? <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? WEAR>
|
|
<COND
|
|
(<FSET? ,TH-ARMOUR ,FL-WORN>
|
|
<RT-ALREADY-MSG ,WINNER "wearing the armour">
|
|
)
|
|
(<NOT <MC-FORM? ,K-FORM-ARTHUR>>
|
|
<RT-ANIMAL-CANT-MSG>
|
|
)
|
|
(T
|
|
<COND
|
|
(<IN? ,TH-ARMOUR ,WINNER>
|
|
<TELL
|
|
The+verb ,WINNER "slide" " the chain mail on over" the ,TH-TUNIC "."
|
|
>
|
|
)
|
|
(T
|
|
<RT-DO-TAKE ,TH-ARMOUR T>
|
|
<SET CR? T>
|
|
<TELL
|
|
"You stick your head into the chain mail, work it down over your tunic,
|
|
and then manage to straighten up." CR
|
|
>
|
|
<RT-SCORE-OBJ ,TH-ARMOUR>
|
|
)
|
|
>
|
|
<FSET ,TH-ARMOUR ,FL-WORN>
|
|
<COND
|
|
; (<IN? ,CH-PRISONER ,HERE>
|
|
<COND
|
|
(.CR?
|
|
<CRLF>
|
|
)
|
|
(T
|
|
<TELL " ">
|
|
)
|
|
>
|
|
<TELL
|
|
"\"A knight in shining armour,\" says the prisoner, looking you up and down."
|
|
>
|
|
<COND
|
|
(<AND <FSET? ,TH-SHIELD ,FL-BROKEN>
|
|
<VISIBLE? ,TH-SHIELD>
|
|
>
|
|
<TELL
|
|
" Then he glances at your tarnished shield and adds, \"Almost.\""
|
|
>
|
|
)
|
|
>
|
|
<CRLF>
|
|
)
|
|
(<NOT .CR?>
|
|
<CRLF>
|
|
)
|
|
>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-INVT>>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? UNWEAR>
|
|
<COND
|
|
(<OR <NOT <FSET? ,TH-ARMOUR ,FL-WORN>>
|
|
<NOT <IN? ,TH-ARMOUR ,WINNER>>
|
|
>
|
|
<RT-AUTHOR-ON>
|
|
<TELL The+verb ,WINNER "are" "n't wearing" the ,TH-ARMOUR ".">
|
|
<RT-AUTHOR-OFF>
|
|
)
|
|
(<AND <IN? ,CH-KRAKEN ,HERE>
|
|
<FSET? ,CH-KRAKEN ,FL-LOCKED>
|
|
>
|
|
<TELL
|
|
The ,WINNER " can't remove" the ,TH-ARMOUR " while that kraken is holding on
|
|
to" him ,WINNER "." CR
|
|
>
|
|
)
|
|
(T
|
|
<MOVE ,TH-ARMOUR ,HERE>
|
|
<FCLEAR ,TH-ARMOUR ,FL-WORN>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-INVT>>
|
|
<TELL
|
|
The+verb ,WINNER "wriggle" " out of the chain mail, and it falls to"
|
|
the ,TH-GROUND "." CR
|
|
>
|
|
<COND
|
|
(<MC-HERE? ,RM-BOG>
|
|
<CRLF>
|
|
<RT-DROP-IN-BOG ,TH-ARMOUR>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,TH-ARMOUR ,FL-SEEN>
|
|
<TELL The ,TH-ARMOUR " is a brightly polished coat of chain mail." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-GN-ARMOUR (TBL FINDER)
|
|
<RETURN ,TH-ARMOUR>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-ABOVE-EDGE-OF-WOODS"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-ABOVE-EDGE-OF-WOODS
|
|
(LOC ROOMS)
|
|
(DESC "above edge of the woods")
|
|
(FLAGS FL-AIR FL-LIGHTED)
|
|
(DOWN PER RT-FLY-DOWN)
|
|
(NORTH TO RM-ABOVE-FOREST)
|
|
(SOUTH TO RM-ABOVE-MEADOW)
|
|
(WEST TO RM-ABOVE-MERCAVE)
|
|
(EAST TO RM-ABOVE-MOOR)
|
|
(SE TO RM-ABOVE-TOWN)
|
|
(UP SORRY K-NO-HIGHER-MSG)
|
|
(ACTION RT-RM-ABOVE-EDGE-OF-WOODS)
|
|
>
|
|
|
|
<ROUTINE RT-RM-ABOVE-EDGE-OF-WOODS ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<FSET ,LG-FOREST ,FL-SEEN>
|
|
<FSET ,RM-MEADOW ,FL-SEEN>
|
|
<FSET ,RM-MOOR ,FL-SEEN>
|
|
<TELL
|
|
"You are hovering over the edge of the woods. The depths of the forest lie to
|
|
the north, while to the south you can see the openness of the meadow. Merlin's
|
|
hollow hill lies to the west, and to the east you see the desolate moor.|"
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<MC-CONTEXT? ,M-ENTER>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-AIR-SCENE>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"***************************************************************************"
|
|
; "end of file"
|
|
;"***************************************************************************"
|
|
|