316 lines
10 KiB
Plaintext
316 lines
10 KiB
Plaintext
|
|
|
|
.FUNCT RT-EX-RM-EXIT-BYWARD-TOWER
|
|
EQUAL? GL-PRSO,P?EAST,P?IN \?CCL3
|
|
ZERO? ALLOW-IN-TOWER /?CND4
|
|
PRINTI "The guard nods as you pass."
|
|
CRLF
|
|
RETURN RM-OUTER-WARD
|
|
?CND4: PRINTI "The guard steps into your path and says, ""I am sorry but you cannot go in unless you can tell me the password."""
|
|
CRLF
|
|
RFALSE
|
|
?CCL3: EQUAL? GL-PRSO,P?WEST,P?OUT \FALSE
|
|
EQUAL? GL-PLACE-PRV,RM-DRAWBRIDGE \?CCL10
|
|
RETURN RM-DRAWBRIDGE
|
|
?CCL10: PRINTI "The guard blocks your path and says, ""I am sorry, but I am under strict orders not to allow anyone to leave the Tower."""
|
|
CRLF
|
|
RFALSE
|
|
|
|
|
|
.FUNCT RT-AC-CH-TOWER-GUARD,CONTEXT
|
|
EQUAL? CONTEXT,K-M-WINNER \?CCL3
|
|
EQUAL? GL-PRSA,V?BOLEYN,V?CLEVES,V?HOWARD /FALSE
|
|
EQUAL? GL-PRSA,V?PARR,V?ARAGON,V?SEYMOUR /FALSE
|
|
EQUAL? GL-PRSA,V?PASSWORD /FALSE
|
|
PRINTR "The guard stares at you impassively."
|
|
?CCL3: ZERO? GL-NOW-PRSI? \FALSE
|
|
ZERO? GL-NOW-PRSI? /FALSE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT RT-AC-TH-MALMSEY
|
|
ZERO? GL-NOW-PRSI? \?CND1
|
|
SET 'GL-P-IT-OBJECT,TH-MALMSEY
|
|
?CND1: ZERO? GL-NOW-PRSI? \FALSE
|
|
ZERO? GL-NOW-PRSI? \FALSE
|
|
EQUAL? GL-PRSA,V?DRINK,V?DRINK-FROM,V?EAT /?CTR9
|
|
EQUAL? GL-PRSA,V?DRINK \?CCL10
|
|
?CTR9: PRINT K-TIPSY-MSG
|
|
CRLF
|
|
RTRUE
|
|
?CCL10: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
|
PRINT K-BULLET-MSG
|
|
CALL1 RT-EMPTY-BUTT-MSG
|
|
RSTACK
|
|
|
|
|
|
.FUNCT RT-AC-TH-MALMSEY-POOL
|
|
ZERO? GL-NOW-PRSI? \FALSE
|
|
ZERO? GL-NOW-PRSI? \FALSE
|
|
EQUAL? GL-PRSA,V?DRINK,V?DRINK-FROM,V?EAT /?CTR7
|
|
EQUAL? GL-PRSA,V?TASTE \?CCL8
|
|
?CTR7: PRINTR "You get down on all fours and lap up some of the wine. Yuch!"
|
|
?CCL8: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
|
CALL1 RT-WHY-SHOOT-MSG
|
|
RSTACK
|
|
|
|
|
|
.FUNCT RT-AC-TH-BUTT-OF-MALMSEY,CONTEXT
|
|
EQUAL? CONTEXT,K-M-SDESC \?CCL3
|
|
FSET? TH-BUTT-OF-MALMSEY,FL-BROKEN \?CND4
|
|
PRINTI "empty "
|
|
?CND4: PRINTI "butt of malmsey"
|
|
RTRUE
|
|
?CCL3: EQUAL? CONTEXT,K-M-DESCFCN \?CND1
|
|
FSET? TH-BUTT-OF-MALMSEY,FL-BROKEN /FALSE
|
|
PRINTR "It's an old wooden keg that's brimming over with malmsey and covered with stains where the wine has spilled down the sides and leaked through the bung."
|
|
?CND1: FSET? TH-BUTT-OF-MALMSEY,FL-BROKEN \?CCL12
|
|
CALL1 RT-AC-TH-EMPTY-BUTT-OF-MALMSEY
|
|
RSTACK
|
|
?CCL12: ZERO? GL-NOW-PRSI? \FALSE
|
|
ZERO? GL-NOW-PRSI? \FALSE
|
|
EQUAL? GL-PRSA,V?DRINK \?CCL19
|
|
PRINT K-TIPSY-MSG
|
|
CRLF
|
|
RTRUE
|
|
?CCL19: EQUAL? GL-PRSA,V?DRINK-FROM \?CCL21
|
|
PRINTR "You take a sip. It tastes like Malmsey."
|
|
?CCL21: EQUAL? GL-PRSA,V?FLIP,V?PUSH,V?TIP /?CTR22
|
|
EQUAL? GL-PRSA,V?PUSH-TO,V?LOOSEN \?CCL23
|
|
?CTR22: ICALL1 RT-CTHEO-PRINT
|
|
PRINTR " is much too heavy to move."
|
|
?CCL23: EQUAL? GL-PRSA,V?SHOOT \?CCL27
|
|
PRINT K-BULLET-MSG
|
|
CALL1 RT-EMPTY-BUTT-MSG
|
|
RSTACK
|
|
?CCL27: EQUAL? GL-PRSA,V?REACH-IN \FALSE
|
|
ICALL RT-CYOU-MSG,STR?798,STR?799
|
|
PRINTI "an arm down into the malmsey, but"
|
|
ICALL RT-YOU-MSG,STR?800,STR?801,TRUE-VALUE
|
|
PRINTR "up empty."
|
|
|
|
|
|
.FUNCT RT-AC-TH-EMPTY-BUTT-OF-MALMSEY
|
|
ZERO? GL-NOW-PRSI? \FALSE
|
|
ZERO? GL-NOW-PRSI? \FALSE
|
|
EQUAL? GL-PRSA,V?DRINK,V?DRINK-FROM \?CCL8
|
|
PRINTR "Too bad. All gone."
|
|
?CCL8: EQUAL? GL-PRSA,V?FLIP \FALSE
|
|
PRINTI "That would"
|
|
CALL1 RT-WASTE-OF-TIME-MSG
|
|
RSTACK
|
|
|
|
|
|
.FUNCT RT-EMPTY-BUTT-MSG
|
|
REMOVE TH-MALMSEY
|
|
MOVE TH-GARNET,TH-BUTT-OF-MALMSEY
|
|
MOVE TH-MALMSEY-POOL,RM-BOWYER-TOWER
|
|
FSET TH-BUTT-OF-MALMSEY,FL-BROKEN
|
|
MOVE TH-BUNG,RM-BOWYER-TOWER
|
|
PRINTI " flies across the room and lands in the corner. "
|
|
ICALL2 RT-CTHEO-PRINT,TH-MALMSEY
|
|
PRINTR " streams out of the butt and across the floor. Soon the keg is completely empty, and there's wine all over the floor."
|
|
|
|
|
|
.FUNCT RT-AC-TH-BUNG
|
|
ZERO? GL-NOW-PRSI? \FALSE
|
|
ZERO? GL-NOW-PRSI? \FALSE
|
|
EQUAL? GL-PRSA,V?TAKE,V?PULL,V?LOOSEN /?CTR7
|
|
EQUAL? GL-PRSA,V?UNPLUG,V?RELEASE \?CCL8
|
|
?CTR7: IN? TH-BUNG,TH-BUTT-OF-MALMSEY \FALSE
|
|
PRINTR "You can't. It's jammed in too tight."
|
|
?CCL8: EQUAL? GL-PRSA,V?PUT \?CCL15
|
|
EQUAL? GL-PRSI,TH-BUTT-OF-MALMSEY \FALSE
|
|
FSET? GL-PRSI,FL-BROKEN \FALSE
|
|
PRINTR "Don't you think it's pretty pointless to try to stopper up an empty keg?"
|
|
?CCL15: EQUAL? GL-PRSA,V?HIT \?CCL22
|
|
IN? TH-BUNG,TH-BUTT-OF-MALMSEY \FALSE
|
|
EQUAL? GL-PRSI,TH-HANDS \?CCL28
|
|
PRINTR "Your hands aren't nearly strong enough to remove the stopper by themselves."
|
|
?CCL28: EQUAL? GL-PRSI,TH-MACE \FALSE
|
|
ICALL2 RT-CTHEO-PRINT,TH-BUNG
|
|
CALL1 RT-EMPTY-BUTT-MSG
|
|
RSTACK
|
|
?CCL22: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
|
IN? TH-BUNG,TH-BUTT-OF-MALMSEY \FALSE
|
|
PRINT K-BULLET-MSG
|
|
CALL1 RT-EMPTY-BUTT-MSG
|
|
RSTACK
|
|
|
|
|
|
.FUNCT RT-AC-TH-GARNET,CONTEXT
|
|
GETP TH-GARNET,P?OBJ-NOUN
|
|
EQUAL? STACK,W?SCRATCH \?CCL3
|
|
CALL RT-HANDLE-SCRATCH,TH-GARNET,CONTEXT
|
|
RSTACK
|
|
?CCL3: EQUAL? CONTEXT,K-M-SDESC \?CCL6
|
|
PRINTI "garnet"
|
|
RTRUE
|
|
?CCL6: EQUAL? CONTEXT,K-M-DESCFCN \?CCL8
|
|
ICALL2 RT-EXAMINE-GEM,TH-GARNET
|
|
RTRUE
|
|
?CCL8: ZERO? CONTEXT \FALSE
|
|
ZERO? GL-NOW-PRSI? \FALSE
|
|
ZERO? GL-NOW-PRSI? \FALSE
|
|
CALL2 RT-EXAMINE-GEM,TH-GARNET
|
|
ZERO? STACK \TRUE
|
|
EQUAL? GL-PRSA,V?TAKE \FALSE
|
|
IN? TH-GARNET,TH-BUTT-OF-MALMSEY \FALSE
|
|
PRINTR "You can't. Your shoulders are too broad, and your arms are too short for you to reach to the bottom of the butt."
|
|
|
|
|
|
.FUNCT RT-AC-TH-MACE,CONTEXT
|
|
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
|
PRINTR "It's a huge, medieval mace that some medieval knight probably used for knocking other knights off horses."
|
|
?CCL3: ZERO? GL-NOW-PRSI? /?CCL5
|
|
EQUAL? GL-PRSO,CH-WIGGINS \?CCL8
|
|
FSET? GL-PRSO,FL-ASLEEP \?CND9
|
|
PRINTR "If he could, Wiggins would dance nimbly out of harm's way and cry ""'Ere! Steady on, mate!"" Assault and battery on your friends is probably not the way to go."
|
|
?CND9: PRINTR "Wiggins dances nimbly out of harm's way and cries, ""'Ere! Steady on, mate!"""
|
|
?CCL8: EQUAL? GL-PRSO,TH-SUIT-OF-ARMOUR \FALSE
|
|
FSET? TH-SUIT-OF-ARMOUR,FL-WORN /FALSE
|
|
PRINTR "Did you really think beating up on an empty suit of armour was going to get you anywhere?"
|
|
?CCL5: ZERO? GL-NOW-PRSI? \FALSE
|
|
EQUAL? GL-PRSA,V?SHOOT \FALSE
|
|
PRINT K-RICOCHET-MSG
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT RT-AC-TH-PORTCULLIS-CHAIN,CONTEXT
|
|
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
|
PRINTR "The chain is hanging just within reach."
|
|
?CCL3: ZERO? GL-NOW-PRSI? \FALSE
|
|
ZERO? GL-NOW-PRSI? \FALSE
|
|
EQUAL? GL-PRSA,V?PULL,V?LOWER,V?LOOSEN /?CTR9
|
|
EQUAL? GL-PRSA,V?PUSH-TO \?CCL10
|
|
?CTR9: FSET? LG-PORTCULLIS-DOOR,FL-OPENED \?CCL15
|
|
PRINTR "The gate is already up."
|
|
?CCL15: FSET? TH-SUIT-OF-ARMOUR,FL-WORN /?CCL18
|
|
PRINTR "You pull on the chain but the portcullis doesn't budge."
|
|
?CCL18: FSET LG-PORTCULLIS-DOOR,FL-OPENED
|
|
FSET LG-PORTCULLIS-DOOR,FL-LOCKED
|
|
ICALL2 SOUNDS,S-ARMOR
|
|
PRINTI "You grab the chain and lift your feet off the ground. The portcullis' ancient mechanism creaks, but then it rises up and locks into place. When you release the chain, the massive gate remains open."
|
|
CRLF
|
|
ICALL2 RT-UPDATE-SCORE,1
|
|
RTRUE
|
|
?CCL10: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
|
PRINT K-RICOCHET-MSG
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT RT-AC-TH-SUIT-OF-ARMOUR,CONTEXT
|
|
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
|
PRINTR "The suit of armour was made for Henry VIII."
|
|
?CCL3: ZERO? GL-NOW-PRSI? /?CCL5
|
|
EQUAL? GL-PRSA,V?PUT \?CCL8
|
|
PRINTI "That would"
|
|
CALL1 RT-WASTE-OF-TIME-MSG
|
|
RSTACK
|
|
?CCL8: EQUAL? GL-PRSA,V?TAKE \FALSE
|
|
FSET? TH-SUIT-OF-ARMOUR,FL-WORN \FALSE
|
|
ICALL1 RT-CYOU-MSG
|
|
ICALL RT-WOULD-HAVE-TO-MSG,STR?682,TH-SUIT-OF-ARMOUR
|
|
PRINTR " first."
|
|
?CCL5: ZERO? GL-NOW-PRSI? \FALSE
|
|
EQUAL? GL-PRSA,V?TAKE \?CCL17
|
|
EQUAL? GL-WINNER,CH-WIGGINS \?CND18
|
|
PRINTC 34
|
|
?CND18: PRINTI "Ooof! It's too heavy to carry."
|
|
EQUAL? GL-WINNER,CH-WIGGINS \?CND20
|
|
PRINTR """"
|
|
?CND20: CRLF
|
|
RTRUE
|
|
?CCL17: EQUAL? GL-PRSA,V?WEAR \?CCL23
|
|
FSET? TH-SUIT-OF-ARMOUR,FL-WORN /?CCL26
|
|
MOVE TH-SUIT-OF-ARMOUR,CH-PLAYER
|
|
FSET TH-SUIT-OF-ARMOUR,FL-WORN
|
|
ICALL2 SOUNDS,S-ARMOR
|
|
PRINTR "You put on the suit of armour."
|
|
?CCL26: PRINTR "You're already wearing it."
|
|
?CCL23: EQUAL? GL-PRSA,V?TAKE-OFF,V?EXIT \?CCL28
|
|
FSET? TH-SUIT-OF-ARMOUR,FL-WORN \?CCL31
|
|
MOVE TH-SUIT-OF-ARMOUR,GL-PLACE-CUR
|
|
FCLEAR TH-SUIT-OF-ARMOUR,FL-WORN
|
|
ICALL2 SOUNDS,S-ARMOR
|
|
PRINTI "You take off the suit of armour and leave it "
|
|
EQUAL? GL-PLACE-CUR,RM-THAMES-ONE,RM-THAMES-TWO,RM-THAMES-THREE /?CTR33
|
|
EQUAL? GL-PLACE-CUR,RM-THAMES-FOUR,RM-THAMES-FIVE \?CCL34
|
|
?CTR33: MOVE TH-SUIT-OF-ARMOUR,TH-BOAT
|
|
PRINTI "in the boat"
|
|
JUMP ?CND32
|
|
?CCL34: PRINTI "on "
|
|
FSET? GL-PLACE-CUR,FL-INDOORS \?CCL39
|
|
ICALL1 TELL-THE-FLOOR
|
|
JUMP ?CND32
|
|
?CCL39: ICALL1 TELL-THE-GROUND
|
|
?CND32: PRINTR "."
|
|
?CCL31: EQUAL? GL-P-PRSA-WORD,W?LEAVE /FALSE
|
|
PRINTR "You're not wearing it."
|
|
?CCL28: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
|
PRINT K-RICOCHET-MSG
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT RT-AC-LG-PORTCULLIS-DOOR
|
|
ZERO? GL-NOW-PRSI? \?CCL3
|
|
EQUAL? GL-PRSA,V?RAISE,V?OPEN,V?LOOSEN \?CCL6
|
|
FSET? LG-PORTCULLIS-DOOR,FL-OPENED \?CCL9
|
|
PRINTR "The gate is already up."
|
|
?CCL9: PRINTR "Oomph. The portcullis is too heavy to lift."
|
|
?CCL6: EQUAL? GL-PRSA,V?LOOK-INSIDE,V?SEARCH \?CCL11
|
|
PRINTI "You look through the gate."
|
|
CRLF
|
|
EQUAL? GL-PLACE-CUR,RM-INSIDE-TRAITORS-GATE \?CCL14
|
|
CALL2 RT-DESCRIBE-PLACE-CONTENTS,RM-OUTSIDE-TRAITORS-GATE
|
|
RSTACK
|
|
?CCL14: EQUAL? GL-PLACE-CUR,RM-OUTSIDE-TRAITORS-GATE \FALSE
|
|
CALL2 RT-DESCRIBE-PLACE-CONTENTS,RM-INSIDE-TRAITORS-GATE
|
|
RSTACK
|
|
?CCL11: EQUAL? GL-PRSA,V?ENTER,V?THROUGH \?CCL18
|
|
EQUAL? GL-PLACE-CUR,RM-INSIDE-TRAITORS-GATE \?CCL21
|
|
CALL2 RT-DO-WALK,P?SOUTH
|
|
RSTACK
|
|
?CCL21: EQUAL? GL-PLACE-CUR,RM-OUTSIDE-TRAITORS-GATE \FALSE
|
|
CALL2 RT-DO-WALK,P?NORTH
|
|
RSTACK
|
|
?CCL18: EQUAL? GL-PRSA,V?CLOSE,V?LOWER \?CCL25
|
|
FSET? LG-PORTCULLIS-DOOR,FL-OPENED \FALSE
|
|
PRINTR "It's jammed open."
|
|
?CCL25: EQUAL? GL-PRSA,V?SHOOT \?CCL30
|
|
PRINT K-RICOCHET-MSG
|
|
CRLF
|
|
RTRUE
|
|
?CCL30: EQUAL? GL-PRSA,V?REACH-IN \FALSE
|
|
FSET? LG-PORTCULLIS-DOOR,FL-OPENED \?CCL35
|
|
PRINTI "Why don't you just walk through the gate? "
|
|
ICALL2 RT-CTHEO-PRINT,LG-PORTCULLIS-DOOR
|
|
PRINTR " is open."
|
|
?CCL35: ICALL RT-CYOU-MSG,STR?769,STR?770
|
|
PRINTI "through "
|
|
ICALL1 RT-THEO-PRINT
|
|
PRINTR ", but can't touch anything on the other side."
|
|
?CCL3: ZERO? GL-NOW-PRSI? /FALSE
|
|
EQUAL? GL-PRSA,V?THROW \?CCL40
|
|
EQUAL? GL-P-PRSA-WORD,W?PUT \?CCL40
|
|
EQUAL? GL-PRSO,TH-HANDS,TH-FEET \?CCL40
|
|
FSET? LG-PORTCULLIS-DOOR,FL-OPENED \?CCL46
|
|
PRINTI "Why don't you just walk through the gate? "
|
|
ICALL2 RT-CTHEO-PRINT,LG-PORTCULLIS-DOOR
|
|
PRINTR " is open."
|
|
?CCL46: ICALL RT-CYOU-MSG,STR?685,STR?686
|
|
ICALL1 RT-THEO-PRINT
|
|
PRINTI " through "
|
|
ICALL1 RT-THEI-PRINT
|
|
PRINTR ", but can't reach anything on the other side."
|
|
?CCL40: EQUAL? GL-PRSA,V?THROW,V?PUT \FALSE
|
|
FSET? LG-PORTCULLIS-DOOR,FL-OPENED \FALSE
|
|
PRINTI "Why bother? "
|
|
ICALL2 RT-CTHEO-PRINT,LG-PORTCULLIS-DOOR
|
|
PRINTR " is open."
|
|
|
|
.ENDI
|