.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