sherlock/tower.zap
historicalsource d327e7626d Release Version
2019-04-16 09:16:28 -04:00

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