sherlock/things1.zap

249 lines
7.6 KiB
Plaintext

.FUNCT RT-IDENTIFY-FLOOR?,WD,OBJ,NAM
GETP TH-FLOOR-ETC,P?OBJ-NOUN >NAM
ZERO? OBJ /?CND1
EQUAL? OBJ,TH-FLOOR-ETC \FALSE
?CND1: EQUAL? WD,W?FLOOR \?CCL7
EQUAL? NAM,W?FLOOR /TRUE
RFALSE
?CCL7: EQUAL? WD,W?CEILING \?CCL11
EQUAL? NAM,W?CEILING /TRUE
RFALSE
?CCL11: EQUAL? WD,W?SKY \?CCL15
EQUAL? NAM,W?SKY,W?CLOUD,W?CLOUDS /TRUE
EQUAL? NAM,W?FOG /TRUE
RFALSE
?CCL15: EQUAL? WD,W?GROUND \FALSE
EQUAL? NAM,W?SURFACE,W?GROUND /TRUE
RFALSE
.FUNCT TELL-THE-FLOOR
PRINTI "the floor"
RTRUE
.FUNCT TELL-THE-GROUND
PRINTI "the ground"
RTRUE
.FUNCT RT-AC-TH-FLOOR-ETC,CONTEXT,INDOORS?,UP?,OBJ,NXT,NAM,THING,TOD
SET 'THING,TH-FLOOR-ETC
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
GETP TH-FLOOR-ETC,P?OBJ-NOUN
EQUAL? STACK,W?CEILING \FALSE
EQUAL? GL-PLACE-CUR,RM-HENRY-VII-CHAPEL \FALSE
PRINT K-BREATH-TAKING-MSG
CRLF
RTRUE
?CCL3: EQUAL? CONTEXT,K-M-SDESC \?CCL10
GETP THING,P?OBJ-NOUN
PRINTB STACK
RTRUE
?CCL10: ZERO? CONTEXT \FALSE
GETP THING,P?OBJ-NOUN >NAM
EQUAL? NAM,W?FLOOR,W?CEILING \?CND1
SET 'INDOORS?,TRUE-VALUE
?CND1: CALL2 RT-IDENTIFY-FLOOR?,W?CEILING
ZERO? STACK \?CCL15
CALL2 RT-IDENTIFY-FLOOR?,W?SKY
ZERO? STACK /?CND14
?CCL15: SET 'UP?,TRUE-VALUE
?CND14: FSET? GL-PLACE-CUR,FL-INDOORS /?PRD22
PUSH 1
JUMP ?PEN21
?PRD22: PUSH 0
?PEN21: EQUAL? INDOORS?,STACK \?CCL20
ICALL2 RT-CANT-SEE-ANY-MSG,THING
RETURN 2
?CCL20: ZERO? GL-NOW-PRSI? /?CCL25
EQUAL? GL-PRSA,V?PUT-ON,V?PUT,V?THROW /?CCL28
EQUAL? GL-PRSA,V?THROW-OVER,V?EMPTY-INTO \FALSE
?CCL28: ZERO? UP? \?CCL33
CALL RT-PERFORM,V?DROP,GL-PRSO
RSTACK
?CCL33: PRINTI "Despite your best efforts, "
ICALL1 RT-THEO-PRINT
PRINTR " just won't stay up."
?CCL25: ZERO? UP? \?CCL35
ZERO? GL-NOW-PRSI? \?CCL35
EQUAL? GL-PRSA,V?CROSS \?CCL40
CALL1 V-WALK-AROUND
RSTACK
?CCL40: EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-ON,V?SEARCH \FALSE
FSET? THING,FL-HAS-DESCFCN \?CND43
GETP THING,P?ACTION
CALL STACK,K-M-DESCFCN
ZERO? STACK \TRUE
?CND43: ICALL2 RT-REMOVE-ALL,TH-X-OBJECT
FIRST? GL-PLACE-CUR >OBJ /?PRG48
?PRG48: ZERO? OBJ /?REP49
NEXT? OBJ >NXT /?BOGUS53
?BOGUS53: FSET? OBJ,FL-NODESC /?CCL55
FSET? OBJ,FL-ALIVE \?PRD58
FSET? OBJ,FL-ASLEEP \?CCL55
?PRD58: FSET? OBJ,FL-TAKEABLE /?CND54
FSET? OBJ,FL-TRYTAKE /?CND54
?CCL55: MOVE OBJ,TH-X-OBJECT
?CND54: SET 'OBJ,NXT
JUMP ?PRG48
?REP49: FIRST? GL-PLACE-CUR \?CCL65
ICALL RT-CYOU-MSG,STR?665,STR?666
ICALL2 RT-PRINT-CONTENTS-2,GL-PLACE-CUR
JUMP ?CND63
?CCL65: PRINTI "There is nothing very "
CALL2 RT-PICK-NEXT,GL-BORING-TXT
PRINT STACK
?CND63: PRINTI " on "
ICALL2 RT-THEO-PRINT,THING
PRINTC 46
CRLF
CALL RT-MOVE-ALL,TH-X-OBJECT,GL-PLACE-CUR
RSTACK
?CCL35: ZERO? GL-NOW-PRSI? \FALSE
EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-INSIDE,V?SEARCH \?CCL70
EQUAL? GL-PLACE-CUR,RM-HENRY-VII-CHAPEL \?CCL73
ICALL2 RT-CTHEO-PRINT,THING
PRINTR " is breathtakingly beautiful."
?CCL73: FSET? GL-PLACE-CUR,FL-INDOORS \?CCL75
ICALL2 RT-CTHEO-PRINT,THING
PRINTR " is high above you."
?CCL75: ICALL2 RT-CTHEO-PRINT,THING
CALL1 RT-TIME-OF-DAY >TOD
ZERO? TOD \?CCL78
PRINTR " is dark and foggy."
?CCL78: EQUAL? TOD,1 \?CCL80
PRINTR " is foggy, but at least there's enough light to see."
?CCL80: EQUAL? TOD,2 \?CCL82
PRINTR " is pretty light."
?CCL82: EQUAL? TOD,3 \FALSE
PRINTR " is getting darker."
?CCL70: EQUAL? GL-PRSA,V?SHOOT \FALSE
FSET? GL-PLACE-CUR,FL-INDOORS /FALSE
PRINTR "The bullet disappears into the air."
.FUNCT RT-AC-TH-WALL,CONTEXT,OBJ,NAM,ADJ
SET 'OBJ,TH-WALL
GETP OBJ,P?OBJ-NOUN >NAM
GETP OBJ,P?OBJ-ADJ >ADJ
EQUAL? CONTEXT,K-M-SDESC \?CCL3
GETP OBJ,P?OBJ-ADJ
ZERO? STACK /?CND4
PRINTB OBJ
PRINTC 32
?CND4: GETP OBJ,P?OBJ-NOUN
PRINTB STACK
RTRUE
?CCL3: ZERO? CONTEXT \FALSE
EQUAL? NAM,W?WALLS \?CCL9
FSET? GL-PLACE-CUR,FL-INDOORS \?CCL12
EQUAL? GL-PRSA,V?SHOOT \?CCL15
PUTP OBJ,P?OBJ-NOUN,W?WALL
PUTP OBJ,P?OBJ-ADJ,W?SOUTH
RFALSE
?CCL15: EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-ON \FALSE
EQUAL? GL-PLACE-CUR,RM-HOLMES-STUDY \FALSE
PRINTI "The walls are covered with pictures."
RTRUE
?CCL12: EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-ON \?CCL22
EQUAL? GL-PLACE-CUR,RM-INSIDE-TRAITORS-GATE \FALSE
PRINTI "There are some ravens perched on the wall."
RTRUE
?CCL22: EQUAL? GL-PLACE-CUR,RM-TOTTENHAM-COURT-RD,RM-OXFORD-ST,RM-VICTORIA-SQUARE /FALSE
EQUAL? GL-PLACE-CUR,RM-VICTORIA-STREET,RM-PARLIAMENT-SQUARE,RM-QUEENS-GARDENS /FALSE
EQUAL? GL-PLACE-CUR,RM-BUCKINGHAM-PALACE,RM-DRAWBRIDGE,RM-BYWARD-TOWER /FALSE
EQUAL? GL-PLACE-CUR,RM-OUTER-WARD,RM-TOWER-GREEN,RM-OUTSIDE-TRAITORS-GATE /FALSE
PRINT K-NOT-SEE-HERE-MSG
CRLF
RTRUE
?CCL9: EQUAL? ADJ,W?NORTH \?CCL33
EQUAL? GL-PLACE-CUR,RM-MARYLEBONE-RD,RM-GREAT-RUSSELL-ST,RM-THREADNEEDLE-ST /?CTR32
EQUAL? GL-PLACE-CUR,RM-MONUMENT,RM-OUTSIDE-TRAITORS-GATE \?CCL33
?CTR32: EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-ON \FALSE
EQUAL? GL-PLACE-CUR,RM-GREAT-RUSSELL-ST,RM-THREADNEEDLE-ST,RM-MONUMENT \FALSE
PRINT K-SIGN-HERE-MSG
RTRUE
?CCL33: EQUAL? ADJ,W?EAST \?CCL45
EQUAL? GL-PLACE-CUR,RM-BROAD-SANCTUARY,RM-WHITEHALL \?CCL45
EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-ON \FALSE
EQUAL? GL-PLACE-CUR,RM-BROAD-SANCTUARY \FALSE
PRINT K-SIGN-HERE-MSG
RTRUE
?CCL45: EQUAL? ADJ,W?WEST \?CCL55
EQUAL? GL-PLACE-CUR,RM-221B-BAKER-ST,RM-TRAFALGAR-SQUARE,RM-PINCHIN-LANE /?CTR54
EQUAL? GL-PLACE-CUR,RM-SWAN-LANE \?CCL55
?CTR54: EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-ON \FALSE
EQUAL? GL-PLACE-CUR,RM-SWAN-LANE \FALSE
PRINT K-SIGN-HERE-MSG
RTRUE
?CCL55: ZERO? ADJ \?CND66
RANDOM 4 >ADJ
EQUAL? ADJ,1 \?CCL70
SET 'ADJ,W?NORTH
JUMP ?CND66
?CCL70: EQUAL? ADJ,2 \?CCL72
SET 'ADJ,W?SOUTH
JUMP ?CND66
?CCL72: EQUAL? ADJ,3 \?CCL74
SET 'ADJ,W?EAST
JUMP ?CND66
?CCL74: SET 'ADJ,W?WEST
?CND66: FSET? GL-PLACE-CUR,FL-INDOORS \?CCL77
EQUAL? ADJ,W?NORTH \?CCL80
EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-ON \FALSE
EQUAL? GL-PLACE-CUR,RM-HOLMES-STUDY \FALSE
PRINTI "There is a large fireplace set into the north wall."
RTRUE
?CCL80: EQUAL? ADJ,W?SOUTH \FALSE
EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-ON \FALSE
EQUAL? GL-PLACE-CUR,RM-HOLMES-STUDY \FALSE
PRINTR "There is a patriotic ""V.R."" spelled out in bullet marks on the south wall."
?CCL77: PRINT K-NOT-SEE-HERE-MSG
CRLF
RTRUE
.FUNCT RT-AC-TH-CROWDS,CONTEXT
FSET? GL-PLACE-CUR,FL-INDOORS \?PRD4
EQUAL? GL-PLACE-CUR,RM-BRITISH-MUSEUM \?CCL2
?PRD4: FSET? GL-PLACE-CUR,FL-NO-CROWDS \?CND1
?CCL2: PRINTR "At last you've found some respite from the crowds."
?CND1: EQUAL? CONTEXT,K-M-DESCFCN \?CCL9
EQUAL? GL-PLACE-CUR,RM-FLEET-STREET \?CCL12
CALL1 RT-TIME-OF-DAY
ZERO? STACK \?CCL15
PRINTR "They're all inside, hard at work."
?CCL15: PRINTR "They hurry past you, intent on getting to their offices."
?CCL12: CALL1 RT-TIME-OF-DAY
ZERO? STACK \?CCL17
PRINTR "There are no crowds here. They're all asleep."
?CCL17: EQUAL? GL-PLACE-CUR,RM-TOTTENHAM-COURT-RD,RM-OXFORD-ST \?CCL19
PRINTI "The shoppers don't appear happy that the shops are closed."
RTRUE
?CCL19: EQUAL? GL-PLACE-CUR,RM-TRAFALGAR-SQUARE \?CCL21
PRINTR "The people are happily feeding the pigeons."
?CCL21: EQUAL? GL-PLACE-CUR,RM-GROSVENOR-PLACE \?CCL23
PRINTR "The people are anxiously consulting their sight-seeing maps."
?CCL23: EQUAL? GL-PLACE-CUR,RM-THE-STRAND \?CCL25
CALL1 RT-TIME-OF-DAY
EQUAL? STACK,3 \?CCL28
PRINTR "The theatre goers are happily discussing the evening's entertainment."
?CCL28: PRINTR "The crowds are trying to select a show to attend this evening."
?CCL25: CALL1 RT-TIME-OF-DAY
EQUAL? STACK,2 \?CCL31
PRINTR "They surge around you, excited about the sight-seeing they have planned for today."
?CCL31: CALL1 RT-TIME-OF-DAY
EQUAL? STACK,3 \?CCL33
PRINTR "They nearly trample you in their eagerness to get back to their hotels before darkness falls."
?CCL33: CALL1 RT-TIME-OF-DAY
EQUAL? STACK,1 \TRUE
PRINTR "They surge around you, intent on their sight-seeing."
?CCL9: CALL1 RT-TIME-OF-DAY
ZERO? STACK \FALSE
PRINTR "There are no tourists here. They're all asleep."
.ENDI