mirror of
https://github.com/historicalsource/arthur
synced 2024-07-16 22:14:20 +03:00
2087 lines
44 KiB
Plaintext
2087 lines
44 KiB
Plaintext
;"***************************************************************************"
|
|
; "game : Arthur"
|
|
; "file : CELL.ZIL"
|
|
; "auth : $Author: DEB $"
|
|
; "date : $Date: 16 May 1989 1:23:12 $"
|
|
; "revs : $Revision: 1.104 $"
|
|
; "vers : 1.0"
|
|
;"---------------------------------------------------------------------------"
|
|
; "Cell puzzle"
|
|
; "Copyright (C) 1989 Infocom, Inc. All rights reserved."
|
|
;"***************************************************************************"
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-CELL"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-CELL
|
|
(LOC ROOMS)
|
|
(DESC "cell")
|
|
(FLAGS FL-INDOORS FL-LIGHTED)
|
|
(SYNONYM CELL DUNGEON)
|
|
(NORTH TO RM-HALL IF LG-CELL-DOOR IS OPEN)
|
|
(OUT PER RT-CELL-OUT)
|
|
(WEST PER RT-ENTER-HOLE)
|
|
(IN PER RT-ENTER-HOLE)
|
|
(SCORE <ORB <LSH 2 ,K-WISD-SHIFT> <LSH 2 ,K-QUEST-SHIFT>>)
|
|
(ADJACENT <TABLE (LENGTH BYTE) RM-HALL <>>)
|
|
(GLOBAL LG-CELL-DOOR LG-WALL RM-HALL RM-HOLE ;RM-BADGER-TUNNEL)
|
|
(ACTION RT-RM-CELL)
|
|
>
|
|
|
|
<ROUTINE RT-RM-CELL ("OPT" (CONTEXT <>) "AUX" N)
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<TELL "You ">
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "are">
|
|
)
|
|
(<MC-CONTEXT? ,M-F-LOOK>
|
|
<TELL
|
|
"crawl through the hole in the wall and plop to the ground on the other side.
|
|
You find yourself"
|
|
>
|
|
)
|
|
(T
|
|
<TELL "find yourself">
|
|
)
|
|
>
|
|
<FSET ,LG-CELL-DOOR ,FL-SEEN>
|
|
<TELL
|
|
" in a dank, cramped cell far below Lot's castle. The room was originally
|
|
used by the Romans for food storage, but someone converted it into a miserable
|
|
dungeon by bolting chains to the clammy stone walls." CR CR
|
|
|
|
"There is a cell door of stout wood to the north"
|
|
>
|
|
<COND
|
|
(<NOT <FSET? ,TH-CELL-STONE ,FL-LOCKED>>
|
|
<TELL
|
|
", and a hole in the wall to the west where a stone has been pushed out"
|
|
>
|
|
)
|
|
>
|
|
<TELL ".">
|
|
<COND
|
|
(<FSET? ,CH-PRISONER ,FL-LOCKED>
|
|
<FSET ,CH-PRISONER ,FL-SEEN>
|
|
<TELL " " A ,CH-PRISONER " is chained to the wall.">
|
|
)
|
|
>
|
|
<COND
|
|
(<AND <IN? ,CH-CELL-GUARD ,RM-CELL>
|
|
<FSET? ,CH-CELL-GUARD ,FL-ASLEEP>
|
|
>
|
|
<TELL " " A ,CH-CELL-GUARD " is lying unconscious on the floor.">
|
|
)
|
|
>
|
|
<CRLF>
|
|
<RFALSE>
|
|
)
|
|
(<MC-CONTEXT? ,M-BEG>
|
|
<COND
|
|
(<VERB? YELL>
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-ARTHUR>
|
|
<RT-CALL-GUARD>
|
|
)
|
|
>
|
|
)
|
|
(<AND <VERB? PUT-IN>
|
|
<MC-PRSI? ,LG-WALL>
|
|
<NOT <FSET? ,TH-CELL-STONE ,FL-LOCKED>>
|
|
>
|
|
<PERFORM ,PRSA ,PRSO ,RM-HOLE>
|
|
<RTRUE>
|
|
)
|
|
(<AND <VERB? WAIT>
|
|
<MC-PRSO? ,CH-CELL-GUARD>
|
|
>
|
|
<COND
|
|
(<SET N <RT-IS-QUEUED? ,RT-I-ALARM>>
|
|
<SET N <- .N GL-MOVES>>
|
|
)
|
|
(T
|
|
<SET N <- 182 <MOD ,GL-MOVES 180>>>
|
|
)
|
|
>
|
|
<COND
|
|
(<G? .N 0>
|
|
<SETG GL-MOVES <+ ,GL-MOVES <- .N 1>>>
|
|
<TELL ,K-TIME-PASSES-MSG CR>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-ENTER>
|
|
<COND
|
|
(<AND <IN? ,CH-PRISONER ,RM-CELL>
|
|
<FSET? ,CH-PRISONER ,FL-LOCKED>
|
|
>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-CELL-PRISONER>
|
|
)
|
|
(T
|
|
<SETG GL-PICTURE-NUM ,K-PIC-CELL>
|
|
)
|
|
>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<MC-CONTEXT? ,M-ENTERED>
|
|
<COND
|
|
(<AND <IN? ,CH-PRISONER ,RM-CELL>
|
|
<NOT <FSET? ,CH-PRISONER ,FL-LOCKED>>
|
|
>
|
|
<RT-SET-PUPPY ,CH-PRISONER>
|
|
)
|
|
>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? OPEN>
|
|
<PERFORM ,PRSA ,LG-CELL-DOOR>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-CELL-OUT ("OPT" (QUIET <>))
|
|
<COND
|
|
(.QUIET
|
|
<RETURN ,RM-HALL>
|
|
)
|
|
(<EQUAL? ,GL-HIDING ,LG-CELL-DOOR>
|
|
<SETG GL-HIDING <>>
|
|
<TELL The+verb ,WINNER "step" " out from behind" the ,LG-CELL-DOOR "." CR>
|
|
<RFALSE>
|
|
)
|
|
(<FSET? ,LG-CELL-DOOR ,FL-OPEN>
|
|
<RETURN ,RM-HALL>
|
|
)
|
|
(T
|
|
<THIS-IS-IT ,LG-CELL-DOOR>
|
|
<TELL The+verb ,LG-CELL-DOOR "are" "n't open.|">
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-BEHIND-DOOR"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-BEHIND-DOOR
|
|
(LOC RM-CELL)
|
|
(DESC "behind the door")
|
|
(FLAGS FL-CONTAINER FL-NO-ARTICLE FL-NO-DESC FL-OPEN FL-SEARCH)
|
|
(SOUTH PER RT-LEAVE-DOOR)
|
|
(OUT PER RT-LEAVE-DOOR)
|
|
(GLOBAL LG-CELL-DOOR LG-WALL RM-CELL)
|
|
(CAPACITY K-CAP-MAX)
|
|
(ACTION RT-TH-BEHIND-DOOR)
|
|
>
|
|
|
|
<ROUTINE RT-TH-BEHIND-DOOR ("OPT" (CONTEXT <>) "AUX" L)
|
|
<COND
|
|
(<MC-CONTEXT? ,M-BEG>
|
|
<COND
|
|
; (<AND <VERB? TELL>
|
|
,P-CONT
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<AND <VERB? ATTACK BREAK>
|
|
<MC-PRSO? ,CH-CELL-GUARD>
|
|
<NOT <FSET? ,CH-CELL-GUARD ,FL-ASLEEP>>
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<AND <IN? ,CH-CELL-GUARD ,RM-CELL>
|
|
<NOT <FSET? ,CH-CELL-GUARD ,FL-ASLEEP>>
|
|
<UNHIDE-VERB?>
|
|
>
|
|
<RT-SEIZE-MSG ,CH-CELL-GUARD>
|
|
)
|
|
(<OR <AND
|
|
<VERB? PUT-IN>
|
|
<MC-PRSI? ,RM-CELL>
|
|
>
|
|
<AND
|
|
<VERB? THROW>
|
|
<IN? ,PRSI ,RM-CELL>
|
|
>
|
|
>
|
|
<COND
|
|
(<OR <PRE-PUT>
|
|
<NOT <IDROP>>
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(T
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-INVT ,K-UPD-OBJS>>
|
|
<MOVE ,PRSO ,RM-CELL>
|
|
<TELL
|
|
The+verb ,WINNER "toss" the ,PRSO " into" the ,RM-CELL "." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<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? ,LG-CELL-DOOR>
|
|
<>
|
|
)
|
|
(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? ,LG-CELL-DOOR>
|
|
<RFALSE>
|
|
)
|
|
(T
|
|
<RT-CANT-REACH-MSG ,PRSI .L>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-END>
|
|
<COND
|
|
(<AND <IN? ,CH-CELL-GUARD ,RM-CELL>
|
|
<NOT <FSET? ,CH-CELL-GUARD ,FL-ASLEEP>>
|
|
<VERB? TRANSFORM>
|
|
<NOT <MC-FORM? ,GL-OLD-FORM>>
|
|
<MC-FORM? ,K-FORM-ARTHUR>
|
|
>
|
|
<RT-SEIZE-MSG ,CH-CELL-GUARD>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-BEHIND-DOOR ("OPT" (QUIET <>) "AUX" (HIDE <>))
|
|
<COND
|
|
(.QUIET
|
|
<RFALSE>
|
|
)
|
|
(<IN? ,WINNER ,TH-BEHIND-DOOR>
|
|
<RT-ALREADY-MSG ,WINNER "behind the cell door">
|
|
)
|
|
(T
|
|
<MOVE ,WINNER ,TH-BEHIND-DOOR>
|
|
<SETG GL-HIDING ,LG-CELL-DOOR>
|
|
<TELL "You flatten yourself up against the cold stone wall">
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-ARTHUR>
|
|
<TELL ".">
|
|
)
|
|
(T
|
|
<TELL ", as much as" aform " can flatten itself.">
|
|
)
|
|
>
|
|
<CRLF>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
>
|
|
|
|
<ROUTINE RT-LEAVE-DOOR ("OPT" (QUIET <>))
|
|
<COND
|
|
(.QUIET
|
|
<RETURN ,RM-CELL>
|
|
)
|
|
(<IN? ,WINNER ,TH-BEHIND-DOOR>
|
|
<SETG GL-HIDING <>>
|
|
<MOVE ,WINNER ,RM-CELL>
|
|
<TELL
|
|
The+verb ,WINNER "step" " out from behind" the ,LG-CELL-DOOR "." CR
|
|
>
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "CH-PRISONER"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT CH-PRISONER
|
|
(LOC RM-CELL)
|
|
(DESC "prisoner")
|
|
(FLAGS FL-ALIVE FL-LOCKED FL-OPEN FL-PERSON FL-SEARCH FL-NO-LIST)
|
|
(SYNONYM PRISONER MAN PERSON SMITH BLACKSMITH CRAFTSMAN CASSO)
|
|
(ADJECTIVE DIRTY TIRED CHAINED CAPTIVE)
|
|
(ACTION RT-CH-PRISONER)
|
|
(CONTFCN RT-CH-PRISONER)
|
|
>
|
|
|
|
; "CH-PRISONER flags:"
|
|
; " FL-AIR - Player has brought prisoner out of kitchen"
|
|
; " FL-BROKEN - Slave has made comment re xformation"
|
|
; " FL-LOCKED - Slave is chained to wall in cell"
|
|
|
|
<CONSTANT K-TAKE-SMITH-HELMET-MSG
|
|
" says, \"If I give it to you, someone might recognize me.\"|">
|
|
|
|
<ROUTINE RT-CH-PRISONER ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(<AND <VERB? HELLO GOODBYE THANK>
|
|
<MC-CONTEXT? ,M-WINNER <>>
|
|
>
|
|
<COND
|
|
(<VERB? HELLO>
|
|
<TELL "\"Hello, enchanted one.\"" CR>
|
|
)
|
|
(<VERB? GOODBYE>
|
|
<TELL
|
|
"\"Please don't leave me here. They are sure to kill me.\"" CR
|
|
>
|
|
)
|
|
(<VERB? THANK>
|
|
<TELL
|
|
"\"I've done nothing to earn your thanks, sir. But you're welcome just the
|
|
same.\"|"
|
|
>
|
|
<COND
|
|
(<NOT <FSET? ,CH-PLAYER ,FL-AIR>>
|
|
<FSET ,CH-PLAYER ,FL-AIR>
|
|
<RT-SCORE-MSG 10 0 0 0>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-WINNER>
|
|
<COND
|
|
(<AND <VERB? TELL-ABOUT>
|
|
<MC-PRSO? ,CH-PLAYER>
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<VERB? WHO WHAT>
|
|
<RFALSE>
|
|
)
|
|
(<AND <MC-HERE?
|
|
,RM-CELL
|
|
,RM-BOTTOM-OF-STAIRS
|
|
,RM-HALL
|
|
,RM-END-OF-HALL
|
|
,RM-SMALL-CHAMBER
|
|
>
|
|
<OR
|
|
<VERB? YELL>
|
|
<AND
|
|
<VERB? CALL>
|
|
<MC-PRSO? ,CH-CELL-GUARD ,CH-SOLDIERS>
|
|
>
|
|
>
|
|
>
|
|
<RT-CALL-GUARD>
|
|
)
|
|
(<AND <VERB? TAKE WEAR>
|
|
<MC-PRSO? ,TH-HELMET>
|
|
>
|
|
<RT-SMITH-HELMET-MSG>
|
|
)
|
|
(<AND <IN? ,TH-HELMET ,CH-PRISONER>
|
|
<VERB? GIVE GIVE-SWP>
|
|
<EQUAL? ,TH-HELMET ,PRSO ,PRSI>
|
|
<EQUAL? ,CH-PLAYER ,PRSO ,PRSI>
|
|
>
|
|
<TELL "The smith" ,K-TAKE-SMITH-HELMET-MSG>
|
|
)
|
|
(T
|
|
<TELL
|
|
"The man is so much in awe of you that he gets tongue-tied and can't answer.|"
|
|
>
|
|
<RFATAL>
|
|
)
|
|
>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(,NOW-PRSI
|
|
<COND
|
|
(<VERB? SHOW GIVE>
|
|
<COND
|
|
(<MC-PRSO? ,TH-MASTER-KEY>
|
|
<COND
|
|
(<FSET? ,CH-PRISONER ,FL-LOCKED>
|
|
<TELL
|
|
The ,CH-PRISONER " can't use" the ,TH-MASTER-KEY ". " His ,CH-PRISONER
|
|
" hands are shackled." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<OR <MC-PRSO? ,TH-SHIELD ,TH-ARMOUR ,TH-BROKEN-DAGGER>
|
|
<AND
|
|
<MC-PRSO? ,PSEUDO-OBJECT>
|
|
<EQUAL? ,LAST-PSEUDO-LOC ,RM-ARMOURY>
|
|
>
|
|
>
|
|
<RT-SMITH-EVALUATE-MSG ,PRSO>
|
|
)
|
|
(<MC-PRSO? ,TH-HELMET>
|
|
<RT-SMITH-HELMET-MSG>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<AND <VERB? TELL>
|
|
,P-CONT
|
|
>
|
|
; "Message and RFATAL if don't want prisoner to become winner"
|
|
<RFALSE>
|
|
)
|
|
(<VERB? ASK-ABOUT>
|
|
<COND
|
|
(<AND <MC-PRSI? ,TH-TIME>
|
|
<NOUN-USED? ,PRSI ,W?CHRISTMAS ,W?XMAS>
|
|
>
|
|
<TELL
|
|
"\"I really enjoying decking the halls, but I'm not too wild about the gay
|
|
apparel.\"" CR
|
|
>
|
|
)
|
|
(<OR <AND <MC-PRSI? ,GLOBAL-HERE> <MC-HERE? ,RM-CELL>>
|
|
<MC-PRSI? ,RM-CELL ,CH-SOLDIERS ,CH-CELL-GUARD
|
|
,LG-CELL-DOOR ,TH-TIME ,TH-MASTER-KEY
|
|
>
|
|
<NOUN-USED? ,PRSI ,W?FOOD>
|
|
>
|
|
<COND
|
|
(<NOT <FSET? ,CH-PRISONER ,FL-LOCKED>>
|
|
<TELL
|
|
"\"I was blindfolded when they arrested me. I cannot tell you anything
|
|
more.\"" CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"\"A guard comes to look at me when the bells ring. Or if I shout, sometimes
|
|
he will come.\"" CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<MC-PRSI? ,CH-LOT ,TH-SWORD ,TH-EXCALIBUR>
|
|
<TELL
|
|
"\"King Lot came to me and asked me to fashion a sword in the likeness of the
|
|
famous sword in the stone. He told me it was to be a gift to the new High
|
|
King, whoever that may be. But when I completed it, he imprisoned me in this
|
|
cell.\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,CH-PRISONER>
|
|
<TELL "\"I am but a humble craftsman.\"" CR>
|
|
)
|
|
(<MC-PRSI? ,RM-SMITHY>
|
|
<TELL
|
|
"\"It must have become abandoned since I was imprisoned.\"" CR
|
|
>
|
|
)
|
|
(<OR <MC-PRSI? ,TH-SHIELD ,TH-ARMOUR ,TH-BROKEN-DAGGER>
|
|
<AND
|
|
<MC-PRSI? ,PSEUDO-OBJECT>
|
|
<EQUAL? ,LAST-PSEUDO-LOC ,RM-ARMOURY>
|
|
>
|
|
>
|
|
<RT-SMITH-EVALUATE-MSG ,PRSI>
|
|
)
|
|
(<MC-PRSI? ,CH-MERLIN>
|
|
<TELL
|
|
"\"In the town, they say he has made a pact with the devil. But I have never
|
|
heard of him doing evil.\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,TH-NAME>
|
|
<TELL "\"My name is Casso.\"" CR>
|
|
)
|
|
(<MC-PRSI? ,TH-MASTER>
|
|
<TELL "\"I have no master.\"" CR>
|
|
)
|
|
(<MC-PRSI? ,TH-CHAINS ,TH-PADLOCK>
|
|
<COND
|
|
(<FSET? ,CH-PRISONER ,FL-LOCKED>
|
|
<TELL
|
|
"His head droops in despair. \"Finest quality,\" he mumbles. \"Cannot be
|
|
broken.\"" CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"The prisoner shudders and says, \"Now that you have freed me, I don't
|
|
even want to think about such things.\"" CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<MC-PRSI? ,TH-PUMICE>
|
|
<TELL
|
|
"\"I use pumice all the time. There's nothing like it to make an old weapon
|
|
look like new.\"" CR
|
|
>
|
|
)
|
|
(<MC-PRSI? ,TH-HELMET>
|
|
<TELL
|
|
"\"It's a perfect disguise. No one will recognize me.\"" CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL "\"I know nothing about">
|
|
<COND
|
|
(<FSET? ,PRSI ,FL-PERSON>
|
|
<TELL him ,PRSI>
|
|
)
|
|
(T
|
|
<TELL " that">
|
|
)
|
|
>
|
|
<TELL ".\"" CR>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? ASK-FOR>
|
|
<COND
|
|
(<AND <MC-PRSI? ,TH-HELMET>
|
|
<IN? ,TH-HELMET ,CH-PRISONER>
|
|
>
|
|
<TELL "The smith" ,K-TAKE-SMITH-HELMET-MSG>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,CH-PRISONER ,FL-SEEN>
|
|
<COND
|
|
(<FSET? ,CH-PRISONER ,FL-LOCKED>
|
|
<TELL
|
|
"The prisoner's wrists are crossed and bound together by a chain. The chain is
|
|
fastened with a large padlock." CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
The+verb ,CH-PRISONER "look" " grateful that you have freed him, but worried
|
|
about how you will manage your escape from the castle." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? RELEASE>
|
|
<COND
|
|
(<NOT <FSET? ,CH-PRISONER ,FL-LOCKED>>
|
|
<RFALSE>
|
|
)
|
|
(<IN? ,TH-MASTER-KEY ,WINNER>
|
|
<RT-FREE-PRISONER-MSG>
|
|
)
|
|
(T
|
|
<SETG CLOCK-WAIT T>
|
|
<RT-AUTHOR-MSG ,K-HOW-INTEND-MSG>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? UNLOCK>
|
|
<COND
|
|
(<AND <FSET? ,CH-PRISONER ,FL-LOCKED>
|
|
<MC-PRSI? ,TH-MASTER-KEY>
|
|
>
|
|
<RT-FREE-PRISONER-MSG>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? KNEEL>
|
|
<TELL "The prisoner bows in return." CR>
|
|
)
|
|
(<VERB? TALK-TO>
|
|
<TELL "The prisoner babbles a few incoherent words in response." CR>
|
|
)
|
|
(<VERB? ATTACK>
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-ARTHUR>
|
|
<TELL "You launch an attack against the prisoner, but">
|
|
<COND
|
|
(<FSET? ,CH-PRISONER ,FL-LOCKED>
|
|
<TELL " even though he is chained,">
|
|
)
|
|
>
|
|
<TELL " you are no match for his superior strength. He">
|
|
<COND
|
|
(<FSET? ,CH-PRISONER ,FL-LOCKED>
|
|
<TELL " wraps a chain around your throat and">
|
|
)
|
|
>
|
|
<TELL " strangles you to death." CR>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-FREE-PRISONER-MSG ()
|
|
<FCLEAR ,TH-CHAINS ,FL-LOCKED>
|
|
<FCLEAR ,TH-PADLOCK ,FL-LOCKED>
|
|
<FSET ,TH-CHAINS ,FL-OPEN>
|
|
<FSET ,TH-PADLOCK ,FL-OPEN>
|
|
<FCLEAR ,CH-PRISONER ,FL-LOCKED>
|
|
<RT-SET-PUPPY ,CH-PRISONER>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-CELL>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-DESC>>
|
|
<TELL
|
|
"You unlock the padlock. The prisoner struggles to his feet and looks
|
|
at you gratefully. \"Thank you, kind sir,\" he says. \"Let us escape from
|
|
here together.\"|"
|
|
>
|
|
<RT-SCORE-MSG 10 0 0 0>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
>
|
|
|
|
<ROUTINE RT-SMITH-EVALUATE-MSG (OBJ)
|
|
<COND
|
|
(<VISIBLE? .OBJ>
|
|
<TELL
|
|
"The smith eyes" the .OBJ " professionally and says, "
|
|
>
|
|
)
|
|
>
|
|
<COND
|
|
(<EQUAL? .OBJ ,PSEUDO-OBJECT>
|
|
<COND
|
|
(<NOUN-USED? ,PSEUDO-OBJECT ,W?SHIELD ,W?SHIELDS>
|
|
<TELL
|
|
"\"They're not top quality, but I suppose they're good enough for government
|
|
work.\"" CR
|
|
>
|
|
)
|
|
(T ;"Pikestaffs"
|
|
<TELL
|
|
"\"They're imported from Gaul. You can tell by the inferior workmanship along
|
|
the shafts.\"" CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<EQUAL? .OBJ ,TH-SHIELD>
|
|
<TELL
|
|
"\"It's a perfectly good shield. They just haven't taken very good care of
|
|
it.\"" CR
|
|
>
|
|
)
|
|
(<EQUAL? .OBJ ,TH-ARMOUR>
|
|
<TELL
|
|
"\"The chap it was made for must be awfully small - about your size, I'd
|
|
say.\"" CR
|
|
>
|
|
)
|
|
(<EQUAL? .OBJ ,TH-BROKEN-DAGGER>
|
|
<TELL
|
|
"\"It's beyond repair. Even I couldn't fix it.\"" CR
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-SMITH-HELMET-MSG ()
|
|
<MOVE ,TH-HELMET ,CH-PRISONER>
|
|
<FSET ,TH-HELMET ,FL-WORN>
|
|
<TELL
|
|
"The smith puts on the helmet. It covers enough of his face to make a
|
|
suitable disguise." CR
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-CELL-STONE"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-CELL-STONE
|
|
(LOC RM-CELL)
|
|
(DESC "building stone")
|
|
(FLAGS FL-TAKEABLE FL-LOCKED FL-NO-DESC)
|
|
(SYNONYM STONE ROCK)
|
|
(ADJECTIVE OLD BUILDING)
|
|
(SIZE 5)
|
|
(GENERIC RT-GN-STONE)
|
|
(ACTION RT-TH-CELL-STONE)
|
|
>
|
|
|
|
; "TH-CELL-STONE flags:"
|
|
; " FL-LOCKED - Stone is in wall"
|
|
|
|
<ROUTINE RT-TH-CELL-STONE ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(,NOW-PRSI
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,TH-CELL-STONE ,FL-SEEN>
|
|
<TELL
|
|
"It's an old building stone whose corners are rounded with age." CR
|
|
>
|
|
)
|
|
(<OR <VERB? TAKE>
|
|
<AND <VERB? MOVE> <VERB-WORD? ,W?PULL>>
|
|
>
|
|
<COND
|
|
(<AND <FSET? ,TH-CELL-STONE ,FL-LOCKED>
|
|
<MC-HERE? ,RM-CELL>
|
|
>
|
|
<COND
|
|
(<NOT <MC-FORM? ,K-FORM-ARTHUR>>
|
|
<RT-ANIMAL-CANT-MSG>
|
|
)
|
|
(<RT-DO-TAKE ,TH-CELL-STONE>
|
|
<FCLEAR ,TH-CELL-STONE ,FL-LOCKED>
|
|
<TELL "You pull the loose stone out of the wall.|">
|
|
<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? MOVE EXTEND>
|
|
<COND
|
|
(<AND <MC-HERE? ,RM-CELL>
|
|
<FSET? ,TH-CELL-STONE ,FL-LOCKED>
|
|
>
|
|
<TELL
|
|
"You push on the stone, but you can't seem to move it from this side." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? CLIMB-ON>
|
|
<RT-WASTE-OF-TIME-MSG>
|
|
)
|
|
(<VERB? PUT>
|
|
<COND
|
|
(<VERB-WORD? ,W?DROP ,W?THROW ,W?HURL>
|
|
<PERFORM ,V?BREAK ,PRSI ,PRSO>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "LG-CELL-DOOR"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT LG-CELL-DOOR
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "cell door")
|
|
(FLAGS FL-AUTO-OPEN FL-DOOR FL-OPENABLE FL-LOCKED FL-NO-DESC)
|
|
(SYNONYM DOOR LOCK KEYHOLE)
|
|
(ADJECTIVE WOOD WOODEN CELL)
|
|
(ACTION RT-LG-CELL-DOOR)
|
|
>
|
|
|
|
<ROUTINE RT-LG-CELL-DOOR ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,LG-CELL-DOOR ,FL-SEEN>
|
|
<TELL "It is a massive wooden door that is ">
|
|
<COND
|
|
(<FSET? ,LG-CELL-DOOR ,FL-OPEN>
|
|
<TELL "standing open">
|
|
)
|
|
(T
|
|
<TELL "firmly closed">
|
|
)
|
|
>
|
|
<TELL "." CR>
|
|
)
|
|
(<AND <VERB? HIDE-BEHIND>
|
|
<MC-HERE? ,RM-CELL>
|
|
>
|
|
<RT-BEHIND-DOOR>
|
|
<RTRUE>
|
|
)
|
|
(<VERB? ATTACK BREAK>
|
|
<TELL The ,WINNER " can't break down the door." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-CHAINS"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-CHAINS
|
|
(LOC RM-CELL)
|
|
(DESC "chains")
|
|
(FLAGS FL-LOCKED FL-OPENABLE FL-PLURAL FL-TRY-TAKE FL-NO-DESC)
|
|
(SYNONYM CHAIN CHAINS)
|
|
(ADJECTIVE IRON)
|
|
(OWNER CH-PRISONER)
|
|
(ACTION RT-TH-CHAINS)
|
|
>
|
|
|
|
<ROUTINE RT-TH-CHAINS ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? TAKE MOVE>
|
|
<THIS-IS-IT ,LG-WALL>
|
|
<THIS-IS-IT ,TH-CHAINS>
|
|
<TELL The ,TH-CHAINS " are firmly attached to the wall." CR>
|
|
)
|
|
(<AND <VERB? OPEN>
|
|
<NOT <FSET? ,TH-CHAINS ,FL-LOCKED>>
|
|
<FSET? ,CH-PRISONER ,FL-LOCKED>
|
|
>
|
|
<RT-FREE-PRISONER-MSG>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,TH-CHAINS ,FL-SEEN>
|
|
<THIS-IS-IT ,TH-CHAINS>
|
|
<TELL "The chains are forged of the strongest iron." CR>
|
|
)
|
|
(<VERB? BREAK ATTACK>
|
|
<THIS-IS-IT ,TH-CHAINS>
|
|
<TELL The ,WINNER " can't break the chains." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-PADLOCK"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-PADLOCK
|
|
(LOC RM-CELL)
|
|
(DESC "padlock")
|
|
(FLAGS FL-LOCKED FL-OPENABLE FL-TRY-TAKE FL-NO-DESC)
|
|
(SYNONYM LOCK PADLOCK KEYHOLE)
|
|
(ADJECTIVE PAD IRON)
|
|
(OWNER CH-PRISONER)
|
|
(ACTION RT-TH-PADLOCK)
|
|
>
|
|
|
|
<ROUTINE RT-TH-PADLOCK ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? TAKE MOVE>
|
|
<FSET ,TH-PADLOCK ,FL-SEEN>
|
|
<THIS-IS-IT ,TH-CHAINS>
|
|
<THIS-IS-IT ,TH-PADLOCK>
|
|
<TELL The ,TH-PADLOCK " is firmly attached to" the ,TH-CHAINS "." CR>
|
|
)
|
|
(<AND <VERB? OPEN>
|
|
<NOT <FSET? ,TH-CHAINS ,FL-LOCKED>>
|
|
<FSET? ,CH-PRISONER ,FL-LOCKED>
|
|
>
|
|
<RT-FREE-PRISONER-MSG>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,TH-CHAINS ,FL-SEEN>
|
|
<THIS-IS-IT ,TH-PADLOCK>
|
|
<TELL The ,TH-PADLOCK " is forged of the strongest iron." CR>
|
|
)
|
|
(<VERB? BREAK ATTACK>
|
|
<FSET ,TH-CHAINS ,FL-SEEN>
|
|
<THIS-IS-IT ,TH-PADLOCK>
|
|
<TELL The ,WINNER " can't break" the ,TH-PADLOCK "." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-HELMET"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-HELMET
|
|
(LOC CH-CELL-GUARD)
|
|
(DESC "helmet")
|
|
(FLAGS FL-NO-LIST FL-TAKEABLE FL-WORN)
|
|
(SYNONYM HELMET DENT)
|
|
(ADJECTIVE DENTED)
|
|
(OWNER CH-CELL-GUARD)
|
|
(ACTION RT-TH-HELMET)
|
|
>
|
|
|
|
; "TH-HELMET flags:"
|
|
; " FL-BROKEN = Helmet is dented."
|
|
|
|
<ROUTINE RT-TH-HELMET ("OPT" (CONTEXT <>) "AUX" L)
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(,NOW-PRSI
|
|
<COND
|
|
(<VERB? PUT-IN EMPTY>
|
|
<RT-WASTE-OF-TIME-MSG>
|
|
)
|
|
>
|
|
)
|
|
(<AND <VERB? ATTACK BREAK>
|
|
<FSET? ,TH-HELMET ,FL-WORN>
|
|
<SET L <LOC ,TH-HELMET>>
|
|
<FSET? .L ,FL-PERSON>
|
|
>
|
|
<PERFORM ,PRSA .L ,PRSI>
|
|
)
|
|
(<VERB? WEAR>
|
|
<TELL "The helmet is much too big for you." CR>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<TELL "It's a rather large helmet">
|
|
<COND
|
|
(<FSET? ,TH-HELMET ,FL-BROKEN>
|
|
<TELL ", with a dent in it">
|
|
)
|
|
>
|
|
<TELL "." CR>
|
|
)
|
|
(<AND <VERB? TAKE>
|
|
<IN? ,TH-HELMET ,CH-PRISONER>
|
|
>
|
|
<TELL "The smith stops you and" ,K-TAKE-SMITH-HELMET-MSG>
|
|
)
|
|
(<VERB? FILL>
|
|
<RT-WASTE-OF-TIME-MSG>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-GUARD-CLOTHES"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-GUARD-CLOTHES
|
|
(LOC CH-CELL-GUARD)
|
|
(DESC "clothes")
|
|
(FLAGS FL-NO-DESC FL-TRY-TAKE FL-WORN)
|
|
(SYNONYM CLOTHES CLOTHING PANTS SHIRT)
|
|
(OWNER CH-CELL-GUARD)
|
|
(ACTION RT-TH-GUARD-CLOTHES)
|
|
>
|
|
|
|
<ROUTINE RT-TH-GUARD-CLOTHES ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? WEAR TAKE EXAMINE>
|
|
<TELL ,K-UNDRESS-GUARD-MSG>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "CH-CELL-GUARD"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT CH-CELL-GUARD
|
|
(DESC "guard")
|
|
(FLAGS FL-ALIVE FL-OPEN FL-PERSON FL-SEARCH)
|
|
(SYNONYM GUARD MAN SOLDIER PERSON)
|
|
(ADJECTIVE CELL DUNGEON)
|
|
(OWNER CH-LOT)
|
|
(GENERIC RT-GN-GUARD)
|
|
(ACTION RT-CH-CELL-GUARD)
|
|
>
|
|
|
|
<CONSTANT K-UNDRESS-GUARD-MSG
|
|
"It looks like the guard's clothes are too big for you, yet too small for the
|
|
muscular blacksmith.|">
|
|
|
|
<ROUTINE RT-CH-CELL-GUARD ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-WINNER>
|
|
<COND
|
|
(<OR <MC-HERE? ,RM-BOTTOM-OF-STAIRS>
|
|
<NOT <FSET? ,CH-CELL-GUARD ,FL-ASLEEP>>
|
|
>
|
|
<RT-SEIZE-MSG ,CH-CELL-GUARD>
|
|
)
|
|
(T
|
|
<RT-NO-RESPONSE-MSG ,CH-CELL-GUARD>
|
|
)
|
|
>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(,NOW-PRSI
|
|
<RFALSE>
|
|
)
|
|
(<VERB? ATTACK BREAK>
|
|
<RT-KNOCK-OUT-GUARD>
|
|
)
|
|
(<AND <VERB? CALL>
|
|
<MC-HERE? ,RM-CELL ,RM-BOTTOM-OF-STAIRS ,RM-HALL ,RM-END-OF-HALL ,RM-SMALL-CHAMBER>
|
|
>
|
|
<RT-CALL-GUARD>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,CH-CELL-GUARD ,FL-SEEN>
|
|
<COND
|
|
(<OR <MC-HERE? ,RM-BOTTOM-OF-STAIRS>
|
|
<NOT <FSET? ,CH-CELL-GUARD ,FL-ASLEEP>>
|
|
>
|
|
<TELL
|
|
"It's hard to tell what he looks like. His back is turned towards you." CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"The guard is lying on the floor, unconscious. It doesn't look as if he will
|
|
recover anytime soon."
|
|
>
|
|
<COND
|
|
(<IN? ,TH-HELMET ,CH-CELL-GUARD>
|
|
<TELL " He is wearing a helmet.">
|
|
)
|
|
>
|
|
<CRLF>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? UNDRESS>
|
|
<COND
|
|
(<OR <MC-HERE? ,RM-BOTTOM-OF-STAIRS>
|
|
<NOT <FSET? ,CH-CELL-GUARD ,FL-ASLEEP>>
|
|
>
|
|
<RT-SEIZE-MSG ,CH-CELL-GUARD>
|
|
)
|
|
(T
|
|
; <RT-WASTE-OF-TIME-MSG>
|
|
<TELL ,K-UNDRESS-GUARD-MSG>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-GN-GUARD (TBL FINDER "AUX" PTR N)
|
|
<SET PTR <REST-TO-SLOT .TBL FIND-RES-OBJ1>>
|
|
<SET N <FIND-RES-COUNT .TBL>>
|
|
<COND
|
|
(<INTBL? ,P-HIM-OBJECT .PTR .N>
|
|
<RETURN ,P-HIM-OBJECT>
|
|
)
|
|
(T
|
|
<RETURN ,CH-CELL-GUARD>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-KNOCK-OUT-GUARD ()
|
|
<COND
|
|
(<AND <IN? ,CH-CELL-GUARD ,HERE>
|
|
<FSET? ,CH-CELL-GUARD ,FL-ASLEEP>
|
|
>
|
|
<TELL
|
|
"He's already unconscious. There's no need to hit him again." CR
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(<AND <IN? ,CH-CELL-GUARD ,HERE>
|
|
<MC-PRSI? ,TH-CELL-STONE>
|
|
>
|
|
<FSET ,TH-HELMET ,FL-BROKEN>
|
|
<FSET ,CH-CELL-GUARD ,FL-ASLEEP>
|
|
<FSET ,CH-CELL-GUARD ,FL-NO-LIST>
|
|
<RT-MOVE-ALL ,CH-CELL-GUARD ,HERE>
|
|
<RT-QUEUE ,RT-I-ALARM
|
|
<+ <- ,GL-MOVES <MOD ,GL-MOVES 180>> 225>
|
|
T
|
|
>
|
|
<TELL The ,WINNER>
|
|
<COND
|
|
(<EQUAL? ,GL-HIDING ,LG-CELL-DOOR>
|
|
<MOVE ,WINNER ,RM-CELL>
|
|
<SETG GL-HIDING <>>
|
|
<TELL
|
|
verb ,WINNER "step" " out from behind" the ,LG-CELL-DOOR " and"
|
|
>
|
|
)
|
|
>
|
|
<THIS-IS-IT ,CH-CELL-GUARD>
|
|
<THIS-IS-IT ,TH-MASTER-KEY>
|
|
; "Bob"
|
|
<TELL
|
|
verb ,WINNER "bean" " the guard with the stone. It puts a dent in his helmet
|
|
and he slumps to the floor, unconscious. As he falls, you notice a key
|
|
dangling at his side.|"
|
|
>
|
|
<RT-SCORE-MSG 0 3 3 2>
|
|
<RTRUE>
|
|
)
|
|
(T
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-ARTHUR>
|
|
<TELL "You hit the guard">
|
|
<COND
|
|
(<NOT <MC-PRSI? ,TH-HANDS>>
|
|
<TELL " with" the ,PRSI>
|
|
)
|
|
>
|
|
; <TELL
|
|
", but only manage to stun him for a moment. He quickly recovers and" ,K-GUARDS-COME-MSG
|
|
>
|
|
; "Bob"
|
|
<TELL
|
|
", but the blow glances off his helmet. He quickly recovers and" ,K-GUARDS-COME-MSG
|
|
>
|
|
<RT-OVERPOWER-MSG>
|
|
)
|
|
(T
|
|
<TELL
|
|
"You leave your hiding place, but before you can carry out your plan of
|
|
attack, the guard says," ,K-LOVERLY-MSG form ,K-SKEWER-MSG
|
|
>
|
|
)
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
>
|
|
>
|
|
|
|
<GLOBAL GL-GUARD-CNT:NUMBER 0>
|
|
<GLOBAL GL-CALLED-GUARD? <>>
|
|
|
|
<CONSTANT K-GUARDS-COME-MSG " calls out for help. Other guards come">
|
|
<CONSTANT K-LOVERLY-MSG " \"Ooo. What a loverly">
|
|
<CONSTANT K-SKEWER-MSG ".\" He skewers you with his sword.|">
|
|
<CONSTANT K-FOOTSTEPS-MSG " hear footsteps in the hall outside the door.|">
|
|
|
|
<ROUTINE RT-CALL-GUARD ()
|
|
<INC GL-GUARD-CNT>
|
|
<SETG GL-CALLED-GUARD? T>
|
|
<TELL The+verb ,WINNER "call" " out.">
|
|
<COND
|
|
(<FSET? ,CH-CELL-GUARD ,FL-ASLEEP>
|
|
<CRLF>
|
|
<CRLF>
|
|
<RT-DEQUEUE ,RT-I-ALARM>
|
|
<RT-I-ALARM>
|
|
)
|
|
(<OR <RT-IS-QUEUED? ,RT-I-GUARD-1>
|
|
<RT-IS-QUEUED? ,RT-I-GUARD-2>
|
|
>
|
|
<CRLF>
|
|
)
|
|
(T
|
|
<RT-QUEUE ,RT-I-GUARD-2 <+ ,GL-MOVES 1>>
|
|
<TELL " Moments later, you" ,K-FOOTSTEPS-MSG>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-I-GUARD-1 ()
|
|
<RT-QUEUE ,RT-I-GUARD-2 <+ ,GL-MOVES 1>>
|
|
<SETG GL-CALLED-GUARD? <>>
|
|
<COND
|
|
(<MC-HERE? ,RM-CELL>
|
|
<TELL "|You" ,K-FOOTSTEPS-MSG>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-I-GUARD-2 ("AUX" OBJ)
|
|
<RT-QUEUE ,RT-I-GUARD-3 <+ ,GL-MOVES 1>>
|
|
<COND
|
|
(<OR <MC-HERE? ,RM-CELL>
|
|
<AND
|
|
<MC-HERE? ,RM-HOLE>
|
|
<NOT <FSET? ,TH-CELL-STONE ,FL-LOCKED>>
|
|
>
|
|
>
|
|
<MOVE ,CH-CELL-GUARD ,RM-CELL>
|
|
<FSET ,CH-CELL-GUARD ,FL-SEEN>
|
|
<FCLEAR ,LG-CELL-DOOR ,FL-LOCKED>
|
|
<FSET ,LG-CELL-DOOR ,FL-OPEN>
|
|
<RT-CHECK-ADJ ,LG-CELL-DOOR>
|
|
<TELL
|
|
"|You hear keys fumbling in the lock, and then the door swings back and a
|
|
guard steps into the cell. He "
|
|
>
|
|
<COND
|
|
(<MC-HERE? ,RM-HOLE>
|
|
<MOVE ,TH-CELL-STONE ,RM-CELL>
|
|
<FSET ,TH-CELL-STONE ,FL-LOCKED>
|
|
<TELL "sees the stone and replaces it in the hole.|">
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-DESC>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(<EQUAL? ,GL-HIDING ,LG-CELL-DOOR>
|
|
<SET OBJ <FIRST? ,RM-CELL>>
|
|
<REPEAT ()
|
|
<COND
|
|
(<NOT .OBJ>
|
|
<RETURN>
|
|
)
|
|
(<AND <NOT <EQUAL? .OBJ ,TH-CELL-STONE>>
|
|
<FSET? .OBJ ,FL-TAKEABLE>
|
|
>
|
|
<TELL
|
|
"sees" the .OBJ " and says, \"Hmmm. Never noticed this before.\" He looks
|
|
around the room. When he "
|
|
>
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-ARTHUR>
|
|
<TELL "sees you he" ,K-GUARDS-COME-MSG>
|
|
<RT-OVERPOWER-MSG>
|
|
)
|
|
(T
|
|
<TELL
|
|
"notices you he says," ,K-LOVERLY-MSG form ,K-SKEWER-MSG
|
|
>
|
|
)
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
>
|
|
<SET OBJ <NEXT? .OBJ>>
|
|
>
|
|
<COND
|
|
(<AND <NOT <FSET? ,TH-CELL-STONE ,FL-LOCKED>>
|
|
<IN? ,TH-CELL-STONE ,RM-CELL>
|
|
>
|
|
<FSET ,TH-CELL-STONE ,FL-LOCKED>
|
|
<FSET ,TH-CELL-STONE ,FL-NO-DESC>
|
|
<TELL
|
|
"sees the stone, replaces it in the hole and then "
|
|
>
|
|
)
|
|
>
|
|
<COND
|
|
(<AND ,GL-CALLED-GUARD?
|
|
<G? ,GL-GUARD-CNT 2>
|
|
>
|
|
<COND
|
|
(<EQUAL? ,GL-GUARD-CNT 3>
|
|
<TELL
|
|
"says, \"Right, mate. That's it! One more scream out of you and the dogs will
|
|
be eating prisoner casserole for tomorrow's dinner.\" He "
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"hauls the prisoner away to a fate so gruesome, so bloody, so terrifyingly
|
|
horrible, that you feel compelled to die also." CR
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<TELL
|
|
"stands for a moment with his back to you, looking at the prisoner.|"
|
|
>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-OBJS>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-MAP>
|
|
<RT-UPDATE-MAP-WINDOW>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
(<MC-FORM? ,K-FORM-ARTHUR>
|
|
<TELL "sees you immediately and" ,K-GUARDS-COME-MSG>
|
|
<RT-OVERPOWER-MSG>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
(T
|
|
<COND
|
|
(<NOT <FSET? ,TH-CELL-STONE ,FL-LOCKED>>
|
|
<TELL "sees the stone, and ">
|
|
)
|
|
>
|
|
<TELL
|
|
"looks around the room. When he notices you he says," ,K-LOVERLY-MSG form
|
|
,K-SKEWER-MSG
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
>
|
|
)
|
|
(<NOT <FSET? ,TH-CELL-STONE ,FL-LOCKED>>
|
|
<MOVE ,CH-CELL-GUARD ,RM-CELL>
|
|
<FCLEAR ,LG-CELL-DOOR ,FL-LOCKED>
|
|
<FSET ,LG-CELL-DOOR ,FL-OPEN>
|
|
<RT-CHECK-ADJ ,LG-CELL-DOOR>
|
|
; <MOVE ,TH-CELL-STONE ,RM-HOLE>
|
|
<FSET ,TH-CELL-STONE ,FL-LOCKED>
|
|
<FSET ,TH-CELL-STONE ,FL-NO-DESC>
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-I-GUARD-3 ()
|
|
<COND
|
|
(<NOT <FSET? ,CH-CELL-GUARD ,FL-ASLEEP>>
|
|
<REMOVE ,CH-CELL-GUARD>
|
|
<FSET ,LG-CELL-DOOR ,FL-LOCKED>
|
|
<FCLEAR ,LG-CELL-DOOR ,FL-OPEN>
|
|
<RT-CHECK-ADJ ,LG-CELL-DOOR>
|
|
<COND
|
|
(<MC-HERE? ,RM-CELL>
|
|
<TELL "|The guard leaves the cell and relocks the door.|">
|
|
; <RT-MOVE-ALL ,CH-CELL-GUARD>
|
|
; <MOVE ,TH-MASTER-KEY ,CH-CELL-GUARD>
|
|
<SETG GL-UPDATE-WINDOW <BOR ,GL-UPDATE-WINDOW ,K-UPD-OBJS>>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-DESC>
|
|
<RT-UPDATE-DESC-WINDOW>
|
|
)
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-MAP>
|
|
<RT-UPDATE-MAP-WINDOW>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RT-I-ALARM"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<CONSTANT K-SHOUT-FOOTSTEP-MSG "|In the distance you hear shouts and running footsteps. ">
|
|
<CONSTANT K-REMOVE-PRISONER-MSG "remove the prisoner to another cell.">
|
|
|
|
<ROUTINE RT-ESCAPE-MSG ()
|
|
<TELL " \"There's been an escape">
|
|
<COND
|
|
(<FSET? ,CH-PRISONER ,FL-LOCKED>
|
|
<TELL " attempt">
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-OVERPOWER-MSG ()
|
|
<TELL " and ">
|
|
<COND
|
|
(<MC-HERE? ,RM-CELL>
|
|
<TELL "overpower">
|
|
)
|
|
(T
|
|
<TELL "arrest both of">
|
|
)
|
|
>
|
|
<TELL " you, leaving you to rot in another cell.|">
|
|
<RT-END-OF-GAME>
|
|
>
|
|
|
|
<ROUTINE RT-ARREST-PRISONER-MSG ()
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-ARTHUR>
|
|
<COND
|
|
(,GL-HIDING
|
|
<TELL ", find you hiding behind" the ,GL-HIDING ",">
|
|
)
|
|
>
|
|
<RT-OVERPOWER-MSG>
|
|
)
|
|
(T
|
|
<TELL
|
|
" " ,K-REMOVE-PRISONER-MSG " In the process, one of them notices you and
|
|
says," ,K-LOVERLY-MSG form ,K-SKEWER-MSG
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-I-ALARM ("AUX" (CAP? <>) (CALL? <>))
|
|
<COND
|
|
(<AND <MC-HERE? ,RM-HOLE>
|
|
<NOT <FSET? ,TH-CELL-STONE ,FL-LOCKED>>
|
|
>
|
|
<TELL "Inside" the ,RM-CELL ",">
|
|
<COND
|
|
(<NOT <FSET? ,LG-CELL-DOOR ,FL-OPEN>>
|
|
<FSET ,LG-CELL-DOOR ,FL-OPEN>
|
|
<TELL the ,LG-CELL-DOOR " swings open and you see">
|
|
)
|
|
>
|
|
<TELL " a">
|
|
<COND
|
|
(<IN? ,CH-CELL-GUARD ,RM-CELL>
|
|
<TELL "nother">
|
|
)
|
|
>
|
|
<TELL " guard enters. He sees ">
|
|
<COND
|
|
(<IN? ,CH-CELL-GUARD ,RM-CELL>
|
|
<TELL "the unconscious guard">
|
|
)
|
|
(<AND <IN? ,CH-PRISONER ,RM-CELL>
|
|
<NOT <FSET? ,CH-PRISONER ,FL-LOCKED>>
|
|
>
|
|
<TELL "the freed prisoner">
|
|
)
|
|
(T
|
|
<TELL "that the prisoner has escaped">
|
|
)
|
|
>
|
|
<TELL " and immediately" ,K-GUARDS-COME-MSG>
|
|
<COND
|
|
(<IN? ,CH-PRISONER ,RM-CELL>
|
|
<REMOVE ,CH-PRISONER>
|
|
<TELL " and " ,K-REMOVE-PRISONER-MSG CR>
|
|
)
|
|
(<IN? ,CH-CELL-GUARD ,RM-CELL>
|
|
<TELL " and they remove the unconscious guard.|">
|
|
)
|
|
(T
|
|
<TELL ", search the cell briefly, and then leave.|">
|
|
)
|
|
>
|
|
)
|
|
(<MC-HERE? ,RM-CELL>
|
|
<COND
|
|
(,GL-CLK-RUN
|
|
<CRLF>
|
|
)
|
|
>
|
|
<SET CAP? T>
|
|
<COND
|
|
(<NOT <FSET? ,LG-CELL-DOOR ,FL-OPEN>>
|
|
<RT-PRINT-OBJ ,LG-CELL-DOOR ,K-ART-THE .CAP?>
|
|
<SET CAP? <>>
|
|
<FSET ,LG-CELL-DOOR ,FL-OPEN>
|
|
<TELL " swings open and">
|
|
)
|
|
>
|
|
<COND
|
|
(.CAP?
|
|
<TELL "A">
|
|
)
|
|
(T
|
|
<TELL " a">
|
|
)
|
|
>
|
|
<COND
|
|
(<IN? ,CH-CELL-GUARD ,RM-CELL>
|
|
<TELL "nother">
|
|
)
|
|
>
|
|
<TELL " guard enters the cell. He sees ">
|
|
<COND
|
|
(<AND <IN? ,CH-PRISONER ,RM-CELL>
|
|
<NOT <FSET? ,CH-PRISONER ,FL-LOCKED>>
|
|
>
|
|
<TELL "the freed prisoner">
|
|
)
|
|
(<IN? ,CH-CELL-GUARD ,RM-CELL>
|
|
<TELL "the unconscious guard">
|
|
)
|
|
(T
|
|
<TELL "you">
|
|
<COND
|
|
(,GL-HIDING
|
|
<TELL " behind" the ,GL-HIDING>
|
|
)
|
|
>
|
|
<COND
|
|
(<NOT <MC-FORM? ,K-FORM-ARTHUR>>
|
|
<TELL " and says," ,K-LOVERLY-MSG form ,K-SKEWER-MSG>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<TELL " and immediately" ,K-GUARDS-COME-MSG>
|
|
<COND
|
|
(<IN? ,CH-PRISONER ,RM-CELL>
|
|
<RT-ARREST-PRISONER-MSG>
|
|
)
|
|
(<NOT <MC-FORM? ,K-FORM-ARTHUR>>
|
|
<TELL
|
|
". One of them sees you and says," ,K-LOVERLY-MSG form ,K-SKEWER-MSG
|
|
>
|
|
<RT-END-OF-GAME>
|
|
)
|
|
(T
|
|
<RT-OVERPOWER-MSG>
|
|
)
|
|
>
|
|
)
|
|
(<MC-HERE? ,RM-BOTTOM-OF-STAIRS ,RM-HALL ,RM-END-OF-HALL>
|
|
<COND
|
|
(,GL-CLK-RUN
|
|
<CRLF>
|
|
)
|
|
>
|
|
<TELL
|
|
"Another guard comes down the corridor, gives you a curious glance and enters
|
|
the cell. "
|
|
>
|
|
<COND
|
|
(<OR <IN? ,CH-PRISONER ,HERE> <IN? ,CH-PRISONER ,RM-CELL>>
|
|
<TELL
|
|
"Seconds later he bursts out again and" ,K-GUARDS-COME-MSG
|
|
>
|
|
<COND
|
|
(<IN? ,CH-PRISONER ,HERE>
|
|
<RT-ARREST-PRISONER-MSG>
|
|
)
|
|
(T
|
|
<REMOVE ,CH-PRISONER>
|
|
<TELL " and " ,K-REMOVE-PRISONER-MSG CR>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"Moments later he emerges again and disappears down the hall." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<AND <MC-HERE? ,RM-SMALL-CHAMBER>
|
|
,GL-CALLED-GUARD?
|
|
<NOT ,GL-CLK-RUN>
|
|
>
|
|
<TELL
|
|
"Another guard comes down the corridor, gives you a curious glance, and then
|
|
disappears again." CR
|
|
>
|
|
)
|
|
(<MC-HERE? ,RM-GREAT-HALL>
|
|
<TELL
|
|
,K-SHOUT-FOOTSTEP-MSG "A soldier bursts into the hall and cries,"
|
|
>
|
|
<RT-ESCAPE-MSG>
|
|
<TELL
|
|
".\" Lot calls out, \"Find the prisoner. He must not be allowed to leave the
|
|
castle.\" The soldier rushes out again." CR
|
|
>
|
|
)
|
|
(<AND <MC-HERE?
|
|
,RM-SMALL-CHAMBER ,RM-ARMOURY ,RM-CAS-KITCHEN
|
|
,RM-PARADE-AREA ,RM-PASSAGE-1 ,RM-PASSAGE-2 ,RM-PASSAGE-3
|
|
,RM-BEHIND-THRONE ,RM-BEHIND-FIRE
|
|
>
|
|
<NOT <FSET? ,CH-SOLDIERS ,FL-BROKEN>>
|
|
>
|
|
<TELL ,K-SHOUT-FOOTSTEP-MSG "Someone calls out">
|
|
<RT-ESCAPE-MSG>
|
|
<TELL "\"">
|
|
<COND
|
|
(<MC-HERE? ,RM-SMALL-CHAMBER ,RM-ARMOURY ,RM-CAS-KITCHEN ,RM-PARADE-AREA>
|
|
<TELL " Moments later some guards burst into the ">
|
|
<COND
|
|
(<MC-HERE? ,RM-PARADE-AREA>
|
|
<TELL "area">
|
|
)
|
|
(T
|
|
<TELL "room">
|
|
)
|
|
>
|
|
<COND
|
|
(<IN? ,CH-PRISONER ,HERE>
|
|
<TELL ", see the prisoner,">
|
|
<RT-ARREST-PRISONER-MSG>
|
|
)
|
|
(T
|
|
<TELL
|
|
", give you a curious glance, and then leave the way they came."
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<CRLF>
|
|
)
|
|
>
|
|
<FSET ,CH-SOLDIERS ,FL-BROKEN>
|
|
<REMOVE ,CH-CELL-GUARD>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "TH-MASTER-KEY"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<OBJECT TH-MASTER-KEY
|
|
(LOC CH-CELL-GUARD)
|
|
(DESC "cell key")
|
|
(FLAGS FL-KEY FL-TAKEABLE)
|
|
(SYNONYM KEY)
|
|
(ADJECTIVE CELL)
|
|
(SIZE 1)
|
|
(GENERIC RT-GN-KEY)
|
|
(ACTION RT-TH-MASTER-KEY)
|
|
>
|
|
|
|
<ROUTINE RT-TH-MASTER-KEY ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<AND <VERB? UNLOCK>
|
|
,NOW-PRSI
|
|
<MC-PRSO? ,TH-CHAINS ,TH-PADLOCK>
|
|
<FSET? ,TH-CHAINS ,FL-LOCKED>
|
|
<FSET? ,CH-PRISONER ,FL-LOCKED>
|
|
>
|
|
<RT-FREE-PRISONER-MSG>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"---------------------------------------------------------------------------"
|
|
; "RM-HOLE"
|
|
;"---------------------------------------------------------------------------"
|
|
|
|
<ROOM RM-HOLE
|
|
(LOC ROOMS)
|
|
(DESC "den")
|
|
(FLAGS FL-LIGHTED FL-CONTAINER FL-OPEN FL-SEARCH)
|
|
(SYNONYM HOLE DEN TUNNEL)
|
|
(ADJECTIVE BADGER EARTH DIRT)
|
|
(EAST PER RT-EXIT-HOLE)
|
|
(UP TO RM-SMITHY)
|
|
(OUT TO RM-SMITHY)
|
|
(SOUTH TO RM-BADGER-TUNNEL)
|
|
(IN PER RT-EXIT-HOLE)
|
|
(GLOBAL LG-WALL RM-SMITHY RM-CELL)
|
|
(ACTION RT-RM-HOLE)
|
|
(THINGS
|
|
(OLD CRUMBLY CRUMBLING) MORTAR RT-PS-MORTAR
|
|
(OLD BUILDING) (STONE STONES ROCK ROCKS) RT-PS-STONES
|
|
)
|
|
>
|
|
|
|
<ROUTINE RT-RM-HOLE ("OPT" (CONTEXT <>))
|
|
<COND
|
|
(<MC-CONTEXT? ,M-F-LOOK ,M-V-LOOK ,M-LOOK>
|
|
<COND
|
|
(<MC-CONTEXT? ,M-LOOK>
|
|
<TELL "You are huddled up in">
|
|
)
|
|
(T
|
|
<COND
|
|
(<EQUAL? ,OHERE ,RM-SMITHY>
|
|
<TELL
|
|
"You burrow down into the cold earth. After a while, the tunnel broadens
|
|
out into"
|
|
>
|
|
)
|
|
(<EQUAL? ,OHERE ,RM-CELL>
|
|
<TELL "You crawl into the hole and find yourself in">
|
|
)
|
|
(T
|
|
<TELL "You emerge into">
|
|
)
|
|
>
|
|
)
|
|
>
|
|
<TELL
|
|
" a comfortable badger's den that nestles up against the castle wall to the
|
|
east. The stones in the wall look very old"
|
|
>
|
|
<COND
|
|
(<FSET? ,TH-CELL-STONE ,FL-LOCKED>
|
|
<TELL
|
|
", and the mortar around one in particular is cracked and crumbling"
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
", and there is a hole in the wall where one has been pushed out"
|
|
>
|
|
)
|
|
>
|
|
<TELL ". Some ">
|
|
<COND
|
|
(<RT-TIME-OF-DAY? ,K-NIGHT>
|
|
<TELL "moon">
|
|
)
|
|
(T
|
|
<TELL "sun">
|
|
)
|
|
>
|
|
<FSET ,RM-BADGER-TUNNEL ,FL-SEEN>
|
|
<TELL
|
|
"light filters down from the opening over your head, and another tunnel leads
|
|
away to the south."
|
|
>
|
|
<COND
|
|
(<GETB ,K-TUNNEL-CNT-TBL ,GL-TUNNEL-NUM>
|
|
<TELL " ">
|
|
<RT-NUM-MARKS-MSG>
|
|
)
|
|
(T
|
|
<CRLF>
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(<MC-CONTEXT? ,M-BEG>
|
|
<COND
|
|
(<AND <VERB? DIG SCRATCH>
|
|
<MC-PRSO? <> ,ROOMS ,TH-GROUND ,TH-SKY ,HERE ,GLOBAL-HERE ,LG-WALL>
|
|
>
|
|
<RT-MAKE-MARK <GETB ,K-TUNNEL-CNT-TBL ,GL-TUNNEL-NUM>>
|
|
)
|
|
>
|
|
)
|
|
(<MC-CONTEXT? ,M-ENTER>
|
|
<SETG GL-PICTURE-NUM ,K-PIC-HOLE>
|
|
<COND
|
|
(<EQUAL? ,GL-WINDOW-TYPE ,K-WIN-PICT>
|
|
<RT-UPDATE-PICT-WINDOW>
|
|
)
|
|
>
|
|
<SETG GL-TUNNEL-NUM 0>
|
|
<RFALSE>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<AND <MC-HERE? ,RM-CELL>
|
|
<FSET? ,TH-CELL-STONE ,FL-LOCKED>
|
|
<NOT <EVERYWHERE-VERB? <COND (,NOW-PRSI 2) (T 1)>>>
|
|
>
|
|
; "Bob - This is for >LOOK AT HOLE when the hole is blocked."
|
|
<THIS-IS-IT ,TH-CELL-STONE>
|
|
<TELL "The hole is blocked by a stone." CR>
|
|
)
|
|
(,NOW-PRSI
|
|
<COND
|
|
(<AND <VERB? PUT-IN>
|
|
<MC-HERE? ,RM-CELL>
|
|
<MC-PRSO? ,TH-CELL-STONE>
|
|
<IN? ,TH-CELL-STONE ,WINNER>
|
|
>
|
|
<MOVE ,TH-CELL-STONE ,HERE>
|
|
<FSET ,TH-CELL-STONE ,FL-LOCKED>
|
|
<FSET ,TH-CELL-STONE ,FL-NO-DESC>
|
|
<TELL
|
|
The+verb ,WINNER "slide" the ,TH-CELL-STONE " back into the hole.|"
|
|
>
|
|
<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? DROP PUT PUT-IN>
|
|
<COND
|
|
(<NOT <MC-HERE? ,RM-HOLE>>
|
|
<RT-WASTE-OF-TIME-MSG>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<FSET ,RM-HOLE ,FL-SEEN>
|
|
<COND
|
|
(<MC-HERE? ,RM-SMITHY>
|
|
<TELL "It looks like a badger tunnel leading underground." CR>
|
|
)
|
|
(<MC-HERE? ,RM-CELL>
|
|
<TELL
|
|
"There is a hole in the wall, leading into the badger tunnel." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? LOOK-DOWN LOOK-IN>
|
|
<TELL "You peer">
|
|
<COND
|
|
(<MC-HERE? ,RM-SMITHY>
|
|
<TELL " down">
|
|
)
|
|
>
|
|
<TELL " into the hole, but can't see very far." CR>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-PS-MORTAR ("OPT" (CONTEXT <>) (ART <>) (CAP? <>))
|
|
<FCLEAR ,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 "mortar">
|
|
)
|
|
>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<THIS-IS-IT ,PSEUDO-OBJECT>
|
|
<TELL
|
|
"The mortar is cracked and crumbling. It barely holds the stones together." CR
|
|
>
|
|
)
|
|
(<VERB? TAKE>
|
|
<THIS-IS-IT ,PSEUDO-OBJECT>
|
|
<TELL
|
|
"You scratch at the mortar, but you can't seem to remove it." CR
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-PS-STONES ("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 "stones">
|
|
)
|
|
>
|
|
)
|
|
(.CONTEXT
|
|
<RFALSE>
|
|
)
|
|
(<VERB? EXAMINE>
|
|
<THIS-IS-IT ,PSEUDO-OBJECT>
|
|
<COND
|
|
(<AND <FSET? ,TH-CELL-STONE ,FL-LOCKED>
|
|
<NOUN-USED? ,PSEUDO-OBJECT ,W?STONE ,W?ROCK>
|
|
>
|
|
<FSET ,TH-CELL-STONE ,FL-SEEN>
|
|
<THIS-IS-IT ,TH-CELL-STONE>
|
|
<TELL
|
|
"It's an old building stone whose corners are rounded with age." CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL "The stones look very old, and ">
|
|
<COND
|
|
(<FSET? ,TH-CELL-STONE ,FL-LOCKED>
|
|
<THIS-IS-IT ,TH-CELL-STONE>
|
|
<TELL
|
|
"the mortar around one in particular is cracked and crumbling." CR
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
"there is a hole in the wall where one has been pushed out." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
)
|
|
(<VERB? MOVE EXTEND SCRATCH>
|
|
<COND
|
|
(<MC-FORM? ,K-FORM-BADGER>
|
|
<COND
|
|
(<NOT <FSET? ,TH-CELL-STONE ,FL-LOCKED>>
|
|
<THIS-IS-IT ,PSEUDO-OBJECT>
|
|
<TELL "You ">
|
|
<COND
|
|
(<OR <VERB? SCRATCH>
|
|
<VERB-WORD? ,W?PULL>
|
|
>
|
|
<TELL "claw at">
|
|
)
|
|
(T
|
|
<TELL "push on">
|
|
)
|
|
>
|
|
<TELL
|
|
" the remaining stones, but none of them are loose." CR
|
|
>
|
|
)
|
|
(T
|
|
; <MOVE ,TH-CELL-STONE ,RM-CELL>
|
|
<FCLEAR ,TH-CELL-STONE ,FL-LOCKED>
|
|
<FCLEAR ,TH-CELL-STONE ,FL-NO-DESC>
|
|
<TELL "You ">
|
|
<COND
|
|
(<OR <VERB? SCRATCH>
|
|
<VERB-WORD? ,W?PULL>
|
|
>
|
|
<TELL "claw at">
|
|
)
|
|
(T
|
|
<TELL "push on">
|
|
)
|
|
>
|
|
<TELL " the stone. It wobbles. You give it a">
|
|
<COND
|
|
(<AND <NOT <VERB? SCRATCH>>
|
|
<NOT <VERB-WORD? ,W?PULL>>
|
|
>
|
|
<TELL "nother">
|
|
)
|
|
>
|
|
<TELL " push and it falls into the room beyond!|">
|
|
<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-MAP>
|
|
<RT-UPDATE-MAP-WINDOW>
|
|
)
|
|
>
|
|
<RTRUE>
|
|
)
|
|
>
|
|
)
|
|
(T
|
|
<TELL
|
|
Aform " isn't nearly strong enough to move such a stone." CR
|
|
>
|
|
)
|
|
>
|
|
)
|
|
>
|
|
>
|
|
|
|
<CONSTANT K-TOO-BIG-MSG "You are too big to fit in the hole.|">
|
|
|
|
<ROUTINE RT-ENTER-HOLE ("OPT" (QUIET <>))
|
|
<COND
|
|
(<AND <MC-HERE? ,RM-CELL>
|
|
<FSET? ,TH-CELL-STONE ,FL-LOCKED>
|
|
>
|
|
<COND
|
|
(<NOT .QUIET>
|
|
<TELL "A large stone blocks your path.|">
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(.QUIET
|
|
<RETURN ,RM-HOLE>
|
|
)
|
|
(<MC-FORM? ,K-FORM-BADGER ,K-FORM-SALAMANDER>
|
|
<RT-CLEAR-PUPPY>
|
|
<RETURN ,RM-HOLE>
|
|
)
|
|
(T
|
|
<TELL ,K-TOO-BIG-MSG>
|
|
<RFALSE>
|
|
)
|
|
>
|
|
>
|
|
|
|
<ROUTINE RT-EXIT-HOLE ("OPT" (QUIET <>))
|
|
<COND
|
|
(<FSET? ,TH-CELL-STONE ,FL-LOCKED>
|
|
<COND
|
|
(<NOT .QUIET>
|
|
<TELL "A large stone blocks your path.|">
|
|
)
|
|
>
|
|
<RFALSE>
|
|
)
|
|
(T
|
|
<RETURN ,RM-CELL>
|
|
)
|
|
>
|
|
>
|
|
|
|
;"***************************************************************************"
|
|
; "end of file"
|
|
;"***************************************************************************"
|
|
|