69 #LIT, F 4 / Literals. Too many cause ST overflow
316 / Statement functions - called with JSA to save space
318 / TOTING(OBJ)=PLACE(OBJ).EQ.-1
326 / AT(OBJ)=PLACE(OBJ).EQ.LOC.OR.FIXED(OBJ).EQ.LOC
337 / FORCED(LOC)=COND(LOC).EQ.2
345 / HERE(OBJ) = PLACE(OBJ).EQ.LOC .OR. TOTING(OBJ)
357 / DARK(DUMMY)=MOD(COND(LOC),2).EQ.0.AND.(PROP(LAMP).EQ.0.OR.
361 / .OR. .NOT. HERE(LAMP)
365 / .OR. PROP(LAMP) EQ 0
368 / MOD(COND(LOC),2) .EQ. 0
369 NOTHR, FLDA LOC / Either prop or not here
371 FLDA COND-3,4 / COND(LOC)
372 FDIV TWO / Divided by two
376 FLDA COND-3,4 / Get back COND(LOC)
377 FSUB #TMP+14 / Now have mod
378 JNE NOTDRK / If not zero, not dark
384 / LIQ2(PBOTL)=(1-PBOTL)*WATER+(PBOTL/2)*(WATER+OIL)
387 FSUB PBOTL / 1 - PBOTL
388 FMUL WATER / (1-PBOTL)*WATER
389 FSTA #TMP+14 / Store first term
396 FMUL #TMP+6 / (PBOTL/2)*(WATER+OIL)
400 / LIQ(DUMMY)=LIQ2(MAX0(PROP(BOTTLE),-1-PROP(BOTTLE)))
405 FLDA PROP-3,5 / PROP(BOTTLE)
408 FSUB PBOTL /-1-PROP(BOTTLE)
410 FLDA PBOTL / Find larger
412 JGT .+4 / already larger, now PBOTL
414 FSTA PBOTL / This is PBOTL
415 JSA LIQ2 / Call LIQ2 with this
418 / LIQLOC(LOC)=LIQ2((MOD(COND(LOC)/2*2,8)-5)*MOD(COND(LOC)/4,2)+1)
420 FLDA LOC / Always called with LOC as arg
422 FLDA COND-3,2 / COND(LOC)
423 FSTA #TMP+11 / Save that
425 JSA #FIX / COND(LOC)/2
426 FMUL TWO / COND(LOC)/2*2
428 FDIV #LIT+11 / Modulo 8
433 FSUB #TMP+22 / MOD(...)
435 FSTA #TMP+25 / First Term
436 FLDA #TMP+11 / COND(LOC)
437 FDIV #LIT / COND(LOC)/4
446 FMUL #TMP+25 / Multiply
448 FSTA PBOTL / Finally got the term
449 JSA LIQ2 / Send to LIQ2
452 / Read the property field - object passed in FAC
465 FSTA IND /Indirect pointer
470 FLDA D4 /Add four to skip arguments
480 / Main routine entry point
488 / HINTED(3)=YES(65,1,0)
494 FSTA HINTED+6 /HINTED(3)
506 / IF(HINTED(3))LIMIT=1000
507 FLDA HINTED+6 /HINTED(3)
511 /2 IF(NEWLOC.GE.9.OR.NEWLOC.EQ.0.OR..NOT.CLOSNG)GOTO 71
526 / IF(.NOT.PANIC)CLOCK2=15
535 /C SEE IF A DWARF HAS SEEN HIM AND HAS COME FROM WHERE HE WANTS TO GO. IF SO,
536 /C THE DWARF'S BLOCKING HIS WAY. IF COMING FROM PLACE FORBIDDEN TO PIRATE
537 /C (DWARVES ROOTED IN PLACE) LET HIM GET OUT (AND ATTACKED).
539 /71 IF(NEWLOC.EQ.LOC.OR.FORCED(LOC).OR.BITSET(LOC,3))GOTO 74
555 / IF(ODLOC(I).NE.NEWLOC.OR..NOT.DSEEN(I))GOTO 73
582 /C DWARF STUFF. SEE EARLIER COMMENTS FOR DESCRIPTION OF VARIABLES. REMEMBER
583 /C SIXTH DWARF IS PIRATE AND IS THUS VERY DIFFERENT EXCEPT FOR MOTION RULES.
585 /C FIRST OFF, DON'T LET THE DWARVES FOLLOW HIM INTO A PIT OR A WALL. ACTIVATE
586 /C THE WHOLE MESS THE FIRST TIME HE GETS AS FAR AS THE HALL OF MISTS (LOC 15).
587 /C IF NEWLOC IS FORBIDDEN TO PIRATE (IN PARTICULAR, IF IT'S BEYOND THE TROLL
588 /C BRIDGE), BYPASS DWARF STUFF. THAT WAY PIRATE CAN'T STEAL RETURN TOLL, AND
589 /C DWARVES CAN'T MEET THE BEAR. ALSO MEANS DWARVES WON'T FOLLOW HIM INTO DEAD
590 /C END IN MAZE, BUT C'EST LA VIE. THEY'LL WAIT FOR HIM OUTSIDE THE DEAD END.
592 / IF(LOC.EQ.0.OR.FORCED(LOC).OR.BITSET(NEWLOC,3))GOTO 2000
603 / IF(DFLAG.NE.0)GOTO 6000
606 / IF(LOC.GE.15)DFLAG=1
616 /C WHEN WE ENCOUNTER THE FIRST DWARF, WE KILL 0, 1, OR 2 OF THE 5 DWARVES. IF
617 /C ANY OF THE SURVIVORS IS AT LOC, REPLACE HIM WITH THE ALTERNATE.
619 /6000 IF(DFLAG.NE.1)GOTO 6010
623 / IF(LOC.LT.15.OR.PCT(95))GOTO 2000
645 /6001 IF(PCT(50))DLOC(J)=0
663 / IF(DLOC(I).EQ.LOC)DLOC(I)=DALTLC
671 /6002 ODLOC(I)=DLOC(I)
693 /C THINGS ARE IN FULL SWING. MOVE EACH DWARF AT RANDOM, EXCEPT IF HE'S SEEN US
694 /C HE STICKS WITH US. DWARVES NEVER GO TO LOCS <15. IF WANDERING AT RANDOM,
695 /C THEY DON'T BACK UP UNLESS THERE'S NO ALTERNATIVE. IF THEY DON'T HAVE TO
696 /C MOVE, THEY ATTACK. AND, OF COURSE, DEAD DWARVES DON'T DO MUCH OF ANYTHING.
708 / IF (DLOC(I).EQ.0)GOTO 6030
723 / IF(KK.EQ.0)GOTO 6016
726 /6012 NEWLOC=TRVLOC(KK)
733 / IF(NEWLOC.GT.300.OR.NEWLOC.LT.15.OR.NEWLOC.EQ.ODLOC(I)
734 / 1 .OR.(J.GT.1.AND.NEWLOC.EQ.TK(J-1)).OR.J.GE.20
735 / 2 .OR.NEWLOC.EQ.DLOC(I).OR.FORCED(NEWLOC)
736 / 3 .OR.(I.EQ.6.AND.BITSET(NEWLOC,3))
737 / 4 .OR.TRVCON(KK).EQ.100)GOTO 6014
794 / IF(TRAVEL(KK-1).GE.0)GOTO 6012
830 / DSEEN(I)=(DSEEN(I).AND.LOC.GE.15)
831 / 1 .OR.(DLOC(I).EQ.LOC.OR.ODLOC(I).EQ.LOC)
847 / IF(.NOT.DSEEN(I))GOTO 6030
852 / IF(I.NE.6)GOTO 6027
857 /C THE PIRATE'S SPOTTED HIM. HE LEAVES HIM ALONE ONCE WE'VE FOUND CHEST.
858 /C K COUNTS IF A TREASURE IS HERE. IF NOT, AND TALLY=TALLY2 PLUS ONE FOR
859 /C AN UNSEEN CHEST, LET THE PIRATE BE SPOTTED.
861 / IF(LOC.EQ.CHLOC.OR.PROP(CHEST).GE.0)GOTO 6030
872 / DO 6020 J=50,MAXTRS
876 /C PIRATE WON'T TAKE PYRAMID FROM PLOVER ROOM OR DARK ROOM (TOO EASY!).
878 / IF(J.EQ.PYRAM.AND.(LOC.EQ.PLAC(PYRAM)
879 / 1 .OR.LOC.EQ.PLAC(EMRALD)))GOTO 6020
893 / IF(TOTING(J))GOTO 6022
909 / IF(TALLY.EQ.TALLY2+1.AND.K.EQ.0.AND.PLACE(CHEST).EQ.0
910 / 1 .AND.HERE(LAMP).AND.PROP(LAMP).EQ.1)GOTO 6025
927 / IF(ODLOC(6).NE.DLOC(6).AND.PCT(20))CALL RSPEAK(127)
928 #M4, FLDA ODLOC+17 /ODLOC(6)
929 FSUB DLOC+17 /DLOC(6)
940 /6022 CALL RSPEAK(128)
945 /C DON'T STEAL CHEST BACK FROM TROLL!
947 / IF(PLACE(MESSAG).EQ.0)CALL MOVE(CHEST,CHLOC)
956 / CALL MOVE(MESSAG,CHLOC2)
961 / DO 6023 J=50,MAXTRS
965 / IF(J.EQ.PYRAM.AND.(LOC.EQ.PLAC(PYRAM)
966 / 1 .OR.LOC.EQ.PLAC(EMRALD)))GOTO 6023
980 / IF(AT(J).AND.FIXED(J).EQ.0)CALL CARRY(J,LOC)
992 / IF(TOTING(J))CALL DROP(J,CHLOC)
1021 /6025 CALL RSPEAK(186)
1026 / CALL MOVE(CHEST,CHLOC)
1031 / CALL MOVE(MESSAG,CHLOC2)
1039 /C THIS THREATENING LITTLE DWARF IS IN THE ROOM WITH HIM!
1041 /6027 DTOTAL=DTOTAL+1
1044 / IF(ODLOC(I).NE.DLOC(I))GOTO 6030
1053 / IF(KNFLOC.GE.0)KNFLOC=LOC
1058 / IF(RND(1000).LT.95*(DFLAG-2))STICK=STICK+1
1077 /C NOW WE KNOW WHAT'S HAPPENING. LET'S TELL THE POOR SUCKER ABOUT IT.
1079 / IF(DTOTAL.EQ.0)GOTO 2000
1082 / IF(DTOTAL.EQ.1)GOTO 75
1086 /67 FORMAT(' There are ',I1,' threatening little dwarves in the'
1087 / 1 ,' room with you.')
1111 /77 IF(ATTACK.EQ.0)GOTO 2000
1114 / IF(DFLAG.EQ.2)DFLAG=3
1120 / IF(ATTACK.EQ.1)GOTO 79
1125 /78 FORMAT(' ',I1,' of them throw knives at you!')
1139 /82 IF(STICK.GT.1)GOTO 83
1143 / CALL RSPEAK(K+STICK)
1150 / IF(STICK.EQ.0)GOTO 2000
1164 /68 FORMAT(' ',I1,' of them get you!')
1188 /C DESCRIBE THE CURRENT LOCATION AND (MAYBE) GET NEXT COMMAND.
1190 /C PRINT TEXT FOR CURRENT LOC.
1192 /2000 IF(LOC.EQ.0)GOTO 99
1203 / IF (ABBNUM.NE.0) KENT=MOD(ABB(LOC),ABBNUM)
1215 / IF (KENT.EQ.0.OR.KK.EQ.0) KK=LTEXT(LOC)
1224 / IF(FORCED(LOC).OR..NOT.DARK(0))GOTO 2001
1230 / IF(WZDARK.AND.PCT(35))GOTO 90
1241 /2001 IF(TOTING(BEAR))CALL RSPEAK(141)
1255 / IF(FORCED(LOC))GOTO 8
1259 / IF(LOC.EQ.33.AND.PCT(25).AND..NOT.CLOSNG)CALL RSPEAK(8)
1276 /C PRINT OUT DESCRIPTIONS OF OBJECTS AT THIS LOCATION. IF NOT CLOSING AND
1277 /C PROPERTY VALUE IS NEGATIVE, TALLY OFF ANOTHER TREASURE. RUG IS SPECIAL
1278 /C CASE; ONCE SEEN, ITS PROP IS 1 (DRAGON ON IT) TILL DRAGON IS KILLED.
1279 /C SIMILARLY FOR CHAIN; PROP IS INITIALLY 1 (LOCKED TO BEAR). THESE HACKS
1280 /C ARE BECAUSE PROP=0 IS NEEDED TO GET FULL SCORE.
1282 / IF(DARK(0))GOTO 2012
1285 / ABB(LOC)=ABB(LOC)+1
1294 /2004 IF(I.EQ.0)GOTO 2012
1299 / IF(OBJ.GT.100)OBJ=OBJ-100
1305 / IF(OBJ.EQ.STEPS.AND.TOTING(NUGGET))GOTO 2008
1312 / IF(PROP(OBJ).GE.0)GOTO 2006
1316 / IF(CLOSED)GOTO 2008
1322 / IF(OBJ.EQ.RUG.OR.OBJ.EQ.CHAIN)PROP(OBJ)=1
1335 /C IF REMAINING TREASURES TOO ELUSIVE, ZAP HIS LAMP.
1336 / IF(TALLY.EQ.TALLY2.AND.TALLY.NE.0)LIMIT=MIN0(35,LIMIT)
1349 / IF(OBJ.EQ.STEPS.AND.LOC.EQ.FIXED(STEPS))KK=1
1360 / CALL PSPEAK(OBJ,KK)
1375 #2009, FLDA #LIT+113
1381 /2011 CALL RSPEAK(SPK)
1393 /C CHECK IF THIS LOC IS ELIGIBLE FOR ANY HINTS. IF BEEN HERE LONG ENOUGH,
1394 /C BRANCH TO HELP SECTION (ON LATER PAGE). HINTS ALL COME BACK HERE EVENTUALLY
1395 /C TO FINISH THE LOOP. IGNORE "HINTS" < 4 (SPECIAL STUFF, SEE DATABASE NOTES).
1397 /2600 DO 2602 HINT=4,HNTMAX
1401 / IF(HINTED(HINT))GOTO 2602
1406 / IF(.NOT.BITSET(LOC,HINT))HINTLC(HINT)=-1
1414 / HINTLC(HINT)=HINTLC(HINT)+1
1417 / IF(HINTLC(HINT).GE.HINTS(HINT,1))GOTO 40000
1432 /C KICK THE RANDOM NUMBER GENERATOR JUST TO ADD VARIETY TO THE CHASE. ALSO,
1433 /C IF CLOSING TIME, CHECK FOR ANY OBJECTS BEING TOTED WITH PROP < 0 AND SET
1434 /C THE PROP TO -1-PROP. THIS WAY OBJECTS WON'T BE DESCRIBED UNTIL THEY'VE
1435 /C BEEN PICKED UP AND PUT DOWN SEPARATE FROM THEIR RESPECTIVE PILES. DON'T
1436 /C TICK CLOCK1 UNLESS WELL INTO CAVE (AND NOT AT Y2).
1438 / IF(.NOT.CLOSED)GOTO 2605
1441 / IF(PROP(OYSTER).LT.0.AND.TOTING(OYSTER))
1442 / 1 CALL PSPEAK(OYSTER,1)
1457 /2604 IF(TOTING(I).AND.PROP(I).LT.0)PROP(I)=-1-PROP(I)
1472 /2605 WZDARK=DARK(0)
1475 / IF(KNFLOC.GT.0.AND.KNFLOC.NE.LOC)KNFLOC=0
1486 / CALL GETIN(WD1,WD1X,WD2,WD2X)
1495 /C EVERY INPUT, CHECK "FOOBAR" FLAG. IF ZERO, NOTHING'S GOING ON. IF POS,
1496 /C MAKE NEG. IF NEG, HE SKIPPED A WORD, SO MAKE IT ZERO.
1498 /2608 FOOBAR=MIN0(0,-FOOBAR)
1510 /C IF(VERB.EQ.SAY.AND.WD2.NE.0)VERB=0
1511 /C IF(VERB.EQ.SAY)GOTO 4090
1512 / IF(TALLY.EQ.0.AND.LOC.GE.15.AND.LOC.NE.33)CLOCK1=CLOCK1-1
1527 / IF(CLOCK1.EQ.0)GOTO 10000
1530 / IF(CLOCK1.LT.0)CLOCK2=CLOCK2-1
1535 / IF(CLOCK2.EQ.0)GOTO 11000
1538 / IF(PROP(LAMP).EQ.1)LIMIT=LIMIT-1
1545 / IF(LIMIT.LE.30.AND.HERE(BATTER).AND.PROP(BATTER).EQ.0
1546 / 1 .AND.HERE(LAMP))GOTO 12000
1558 / IF(LIMIT.EQ.0)GOTO 12400
1561 / IF(LIMIT.LT.0.AND.LOC.LE.8)GOTO 12600
1567 / IF(LIMIT.LE.30)GOTO 12200
1578 / IF(LIQLOC(LOC).EQ.WATER)K=70
1588 /C DO PRELIMINARY ANALYSIS OF SENTENCE TO FIND CERTAIN SPECIAL
1591 /C ENTER <WATER,STREAM>
1593 /C <WATER,OIL> <PLANT,DOOR>
1595 / CALL VOCAB(WD1,WD1A,-1,I)
1601 / CALL VOCAB(WD2,WD2A,-1,J)
1607 / IF(WD1.NE.'ENTE') GO TO 2609
1611 / IF(J .EQ. (WATER+1000)
1612 / 1 .OR. J .EQ. STREAM) GO TO 2010
1620 / IF(WD2 .NE. 0) GO TO 2800
1624 /2609 IF((I .NE. (WATER+1000) .AND. I .NE. (OIL+1000))
1625 / 1 .OR. (J .NE. (PLANT+1000) .AND. J .NE. (DOOR+1000)))
1647 /2610 IF(WD1 .EQ. 'WEST' .AND. PCT(10))
1660 /2630 CALL VOCAB(WD1,-1,I)
1666 / IF(I.EQ.-1)GOTO 3000
1681 / GOTO (8,5000,4000,2010)KQ
1698 /C GET SECOND WORD FOR ANALYSIS.
1715 /C GEE, I DON'T UNDERSTAND.
1718 #3000, FLDA #LIT+330
1748 /C ANALYSE A VERB. REMEMBER WHAT IT WAS, GO BACK FOR OBJECT IF SECOND WORD
1749 /C UNLESS VERB IS "SAY", WHICH SNARFS ARBITRARY SECOND WORD.
1758 / IF(WD2.NE.0.AND.VERB.NE.SAY)GOTO 2800
1764 / IF(VERB.EQ.SAY)OBJ=WD2
1770 / IF(OBJ.NE.0)GOTO 4090
1776 /C ANALYSE AN INTRANSITIVE VERB (IE, NO OBJECT GIVEN YET).
1778 /4080 GOTO(8010,8000,8000,8040,2009,8040,9070,9080,8000,8000,
1779 / 1 2011,9120,9130,8140,9150,8000,8000,8180,8000,8200,
1780 / 2 8000,9220,9230,8240,8250,8260,8270,8000,8000,8300,
1782 /C TAKE DROP SAY OPEN NOTH LOCK ON OFF WAVE CALM
1783 /C WALK KILL POUR EAT DRNK RUB TOSS QUIT FIND INVN
1784 /C FEED FILL BLST SCOR FOO BRF READ BREK WAKE SUSP
1830 /C ANALYSE A TRANSITIVE VERB.
1832 /4090 GOTO(9010,9020,9030,9040,2009,9040,9070,9080,9090,2011,
1833 / 1 2011,9120,9130,9140,9150,9160,9170,2011,9190,9190,
1834 / 2 9210,9220,9230,2011,2011,2011,9270,9280,9290,2011,
1836 /C TAKE DROP SAY OPEN NOTH LOCK ON OFF WAVE CALM
1837 /C WALK KILL POUR EAT DRNK RUB TOSS QUIT FIND INVN
1838 /C FEED FILL BLST SCOR FOO BRF READ BREK WAKE SUSP
1885 /C ANALYSE AN OBJECT WORD. SEE IF THE THING IS HERE, WHETHER WE'VE GOT A VERB
1886 /C YET, AND SO ON. OBJECT MUST BE HERE UNLESS VERB IS "FIND" OR "INVENT(ORY)"
1887 /C (AND NO NEW VERB YET TO BE ANALYSED). WATER AND OIL ARE ALSO FUNNY, SINCE
1888 /C THEY ARE NEVER ACTUALLY DROPPED AT ANY LOCATION, BUT MIGHT BE HERE INSIDE
1889 /C THE BOTTLE OR AS A FEATURE OF THE LOCATION.
1894 / IF(FIXED(K).NE.LOC.AND..NOT.HERE(K))GOTO 5100
1904 /5010 IF(WD2.NE.0)GOTO 2800
1907 / IF(VERB.NE.0)GOTO 4090
1911 /5015 FORMAT(' What do you want to do with the ',$)
1916 / CALL A5TOA1(WD1,WD1A,WD1X,'?')
1931 /5100 IF(K.NE.GRATE)GOTO 5110
1935 / IF(LOC.EQ.1.OR.LOC.EQ.4.OR.LOC.EQ.7)K=DPRSSN
1945 / IF(LOC.GT.9.AND.LOC.LT.15)K=ENTRNC
1954 / IF(K.NE.GRATE)GOTO 8
1959 /5110 IF(K.NE.DWARF)GOTO 5120
1967 / IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 5010
1983 /5120 IF((LIQ(0).EQ.K.AND.HERE(BOTTLE)).OR.K.EQ.LIQLOC(LOC))GOTO 5010
1993 / IF(OBJ.NE.PLANT.OR..NOT.AT(PLANT2).OR.PROP(PLANT2).EQ.0)GOTO 5130
2010 /5130 IF(OBJ.NE.KNIFE.OR.KNFLOC.NE.LOC)GOTO 5140
2026 /5140 IF(OBJ.NE.ROD.OR..NOT.HERE(ROD2))GOTO 5190
2039 /5190 IF((VERB.EQ.FIND.OR.VERB.EQ.INVENT).AND.WD2.EQ.0)GOTO 5010
2053 /5199 FORMAT(' I don''t see any ',$)
2055 / CALL A5TOA1(WD1,WD1A,WD1X,'.')
2063 /C FIGURE OUT THE NEW LOCATION
2065 /C GIVEN THE CURRENT LOCATION IN "LOC", AND A MOTION VERB NUMBER IN "K", PUT
2066 /C THE NEW LOCATION IN "NEWLOC". THE CURRENT LOC IS SAVED IN "OLDLOC" IN CASE
2067 /C HE WANTS TO RETREAT. THE CURRENT OLDLOC IS SAVED IN OLDLC2, IN CASE HE
2068 /C DIES. (IF HE DOES, NEWLOC WILL BE LIMBO, AND OLDLOC WILL BE WHAT KILLED
2069 /C HIM, SO WE NEED OLDLC2, WHICH IS THE LAST PLACE HE WAS SAFE.)
2079 / IF(KK.EQ.0)CALL BUG(26)
2085 / IF(K.EQ.NULL)GOTO 2
2089 / IF(K.EQ.BACK)GOTO 20
2093 / IF(K.EQ.LOOK)GOTO 30
2097 / IF(K.EQ.CAVE)GOTO 40
2108 /9 LL=IABS(TRAVEL(KK))
2119 / IF(LL.EQ.1 .OR. LL.EQ.K)GOTO 10
2125 / IF(TRAVEL(KK).LT.0)GOTO 50
2139 /10 NEWLOC=TRVCON(KK)
2152 / IF(NEWLOC.LE.300)GOTO 13
2156 / IF(PROP(K).NE.NEWLOC/100-3)GOTO 16
2166 /C TRY NEXT ENTRY IN TRAVEL TABLE
2168 /12 IF(TRAVEL(KK).LT.0)CALL BUG(25)
2184 /C MAKE SURE HE DOESN'T GO THROUGH SAME TEST AGAIN
2186 / IF(TRVCON(KK-1).EQ.TRVCON(KK) .AND. TRVLOC(KK-1).EQ.TRVLOC(KK))
2218 /13 IF(NEWLOC.LE.100)GOTO 14
2222 / IF(TOTING(K).OR.(NEWLOC.GT.200.AND.AT(K)))GOTO 16
2239 /14 IF(NEWLOC.NE.0.AND..NOT.PCT(NEWLOC))GOTO 12
2247 /16 NEWLOC=TRVLOC(KK)
2254 / IF(NEWLOC.LE.300)GOTO 2
2257 / IF(NEWLOC.LE.500)GOTO 30000
2261 / CALL RSPEAK(NEWLOC-500)
2275 /C SPECIAL MOTIONS COME HERE. LABELLING CONVENTION: STATEMENT NUMBERS NNNXX
2276 /C (XX=00-99) ARE USED FOR SPECIAL CASE NUMBER NNN (NNN=301-500).
2278 /30000 NEWLOC=NEWLOC-300
2282 / GOTO (30100,30200,30300)NEWLOC
2298 /C TRAVEL 301. PLOVER-ALCOVE PASSAGE. CAN CARRY ONLY EMERALD. NOTE: TRAVEL
2299 /C TABLE MUST INCLUDE "USELESS" ENTRIES GOING THROUGH PASSAGE, WHICH CAN NEVER
2300 /C BE USED FOR ACTUAL MOTION, BUT CAN BE SPOTTED BY "GO BACK".
2302 /30100 NEWLOC=99+100-LOC
2303 #30100, FLDA #LIT+300 /199
2306 / IF(HOLDNG.EQ.0.OR.(HOLDNG.EQ.1.AND.TOTING(EMRALD)))GOTO 2
2324 /C TRAVEL 302. PLOVER TRANSPORT. DROP THE EMERALD (ONLY USE SPECIAL TRAVEL IF
2325 /C TOTING IT), SO HE'S FORCED TO USE THE PLOVER-PASSAGE TO GET IT OUT. HAVING
2326 /C DROPPED IT, GO BACK AND PRETEND HE WASN'T CARRYING IT AFTER ALL.
2328 /30200 CALL DROP(EMRALD,LOC)
2336 /C TRAVEL 303. TROLL BRIDGE. MUST BE DONE ONLY AS SPECIAL MOTION SO THAT
2337 /C DWARVES WON'T WANDER ACROSS AND ENCOUNTER THE BEAR. (THEY WON'T FOLLOW THE
2338 /C PLAYER THERE BECAUSE THAT REGION IS FORBIDDEN TO THE PIRATE.) IF
2339 /C PROP(TROLL)=1, HE'S CROSSED SINCE PAYING, SO STEP OUT AND BLOCK HIM.
2340 /C (STANDARD TRAVEL ENTRIES CHECK FOR PROP(TROLL)=0.) SPECIAL STUFF FOR BEAR.
2342 /30300 IF(PROP(TROLL).NE.1)GOTO 30310
2347 / CALL PSPEAK(TROLL,1)
2355 / CALL MOVE(TROLL2,0)
2360 / CALL MOVE(TROLL2+100,0)
2368 / CALL MOVE(TROLL,PLAC(TROLL))
2377 / CALL MOVE(TROLL+100,FIXD(TROLL))
2388 / CALL JUGGLE(CHASM)
2398 /30310 NEWLOC=PLAC(TROLL)+FIXD(TROLL)-LOC
2405 / IF(PROP(TROLL).EQ.0)PROP(TROLL)=1
2410 / IF(.NOT.TOTING(BEAR))GOTO 2
2428 / CALL DROP(BEAR,NEWLOC)
2441 / IF(PROP(SPICES).LT.0)TALLY2=TALLY2+1
2457 /C HANDLE "GO BACK". LOOK FOR VERB WHICH GOES FROM LOC TO OLDLOC, OR TO OLDLC2
2458 /C IF OLDLOC HAS FORCED-MOTION. K2 SAVES ENTRY -> FORCED LOC -> PREVIOUS LOC.
2463 / IF(FORCED(K))K=OLDLC2
2478 / IF(K.NE.LOC)GOTO 21
2496 / IF(LL.EQ.K)GOTO 25
2499 / IF(LL.GT.300)GOTO 22
2508 / IF(FORCED(LL).AND.TRVLOC(KK).EQ.K)K2=KK
2521 /22 IF(TRAVEL(KK).LT.0)GOTO 23
2538 / IF(KK.NE.0)GOTO 25
2547 /25 K=IABS(TRAVEL(KK))
2567 /C LOOK. CAN'T GIVE MORE DETAIL. PRETEND IT WASN'T DARK (THOUGH IT MAY "NOW"
2568 /C BE DARK) SO HE WON'T FALL INTO A PIT WHILE STARING INTO THE GLOOM.
2570 /30 IF(DETAIL.LT.3)CALL RSPEAK(15)
2592 /C CAVE. DIFFERENT MESSAGES DEPENDING ON WHETHER ABOVE GROUND.
2594 /40 IF(LOC.LT.8)CALL RSPEAK(57)
2601 / IF(LOC.GE.8)CALL RSPEAK(58)
2608 /C NON-APPLICABLE MOTION. VARIOUS MESSAGES DEPENDING ON WORD GIVEN.
2613 / IF(K.GE.43.AND.K.LE.50)SPK=9
2623 / IF(K.EQ.29.OR.K.EQ.30)SPK=9
2632 / IF(K.EQ.7.OR.K.EQ.36.OR.K.EQ.37)SPK=10
2648 / IF(K.EQ.11.OR.K.EQ.19)SPK=11
2666 / IF(VERB.EQ.FIND.OR.VERB.EQ.INVENT)SPK=59
2678 / IF(K.EQ.62.OR.K.EQ.65)SPK=42
2701 /C "YOU'RE DEAD, JIM."
2703 /C IF THE CURRENT LOC IS ZERO, IT MEANS THE CLOWN GOT HIMSELF KILLED. WE'LL
2704 /C ALLOW THIS MAXDIE TIMES. MAXDIE IS AUTOMATICALLY SET BASED ON THE NUMBER OF
2705 /C SNIDE MESSAGES AVAILABLE. EACH DEATH RESULTS IN A MESSAGE (81, 83, ETC.)
2706 /C WHICH OFFERS REINCARNATION; IF ACCEPTED, THIS RESULTS IN MESSAGE 82, 84,
2707 /C ETC. THE LAST TIME, IF HE WANTS ANOTHER CHANCE, HE GETS A SNIDE REMARK AS
2708 /C WE EXIT. WHEN REINCARNATED, ALL OBJECTS BEING CARRIED GET DROPPED AT OLDLC2
2709 /C (PRESUMABLY THE LAST PLACE PRIOR TO BEING KILLED) WITHOUT CHANGE OF PROPS.
2710 /C THE LOOP RUNS BACKWARDS TO ASSURE THAT THE BIRD IS DROPPED BEFORE THE CAGE.
2711 /C (THIS KLUGE COULD BE CHANGED ONCE WE'RE SURE ALL REFERENCES TO BIRD AND CAGE
2712 /C ARE DONE BY KEYWORDS.) THE LAMP IS A SPECIAL CASE (IT WOULDN'T DO TO LEAVE
2713 /C IT IN THE CAVE). IT IS TURNED OFF AND LEFT OUTSIDE THE BUILDING (ONLY IF HE
2714 /C WAS CARRYING IT, OF COURSE). HE HIMSELF IS LEFT INSIDE THE BUILDING (AND
2715 /C HEAVEN HELP HIM IF HE TRIES TO XYZZY BACK INTO THE CAVE WITHOUT THE LAMP!).
2716 /C OLDLOC IS ZAPPED SO HE CAN'T JUST "RETREAT".
2718 /C THE EASIEST WAY TO GET KILLED IS TO FALL INTO A PIT IN PITCH DARKNESS.
2728 /C OKAY, HE'S DEAD. LET'S GET ON WITH IT.
2730 /99 IF(CLOSNG)GOTO 95
2733 / YEA=YES(81+NUMDIE*2,82+NUMDIE*2,54)
2750 / IF(NUMDIE.EQ.MAXDIE.OR..NOT.YEA)GOTO 20000
2765 / IF(TOTING(LAMP))PROP(LAMP)=0
2782 / IF(.NOT.TOTING(I))GOTO 98
2815 /C HE DIED DURING CLOSING TIME. NO RESURRECTION. TALLY UP A DEATH AND EXIT.
2817 /95 CALL RSPEAK(131)
2827 /C ROUTINES FOR PERFORMING THE VARIOUS ACTION VERBS
2829 /C STATEMENT NUMBERS IN THIS SECTION ARE 8000 FOR INTRANSITIVE VERBS, 9000 FOR
2830 /C TRANSITIVE, PLUS TEN TIMES THE VERB NUMBER. MANY INTRANSITIVE VERBS USE THE
2831 /C TRANSITIVE CODE, AND SOME VERBS USE CODE FOR OTHER VERBS, AS NOTED BELOW.
2833 /C RANDOM INTRANSITIVE VERBS COME HERE. CLEAR OBJ JUST IN CASE (SEE "ATTACK").
2840 /8002 FORMAT(' I don''t understand "',$)
2841 / CALL A5TOA1(WD1,WD1A,WD1X,'".')
2858 /C CARRY, NO OBJECT GIVEN YET. OK IF ONLY ONE OBJECT PRESENT.
2860 /8010 IF(ATLOC(LOC).EQ.0.OR.LINK(ATLOC(LOC)).NE.0)GOTO 8000
2872 / IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 8000
2895 /C CARRY AN OBJECT. SPECIAL CASES FOR BIRD AND CAGE (IF BIRD IN CAGE, CAN'T
2896 /C TAKE ONE WITHOUT THE OTHER. LIQUIDS ALSO SPECIAL, SINCE THEY DEPEND ON
2897 /C STATUS OF BOTTLE. ALSO VARIOUS SIDE EFFECTS, ETC.
2899 /9010 IF(TOTING(OBJ))GOTO 2011
2906 / IF(OBJ.EQ.PLANT.AND.PROP(PLANT).LE.0)SPK=115
2915 / IF(OBJ.EQ.BEAR.AND.PROP(BEAR).EQ.1)SPK=169
2928 / IF(OBJ.EQ.CHAIN.AND.PROP(BEAR).NE.0)SPK=170
2940 / IF(FIXED(OBJ).NE.0)GOTO 2011
2945 / IF(OBJ.NE.WATER.AND.OBJ.NE.OIL)GOTO 9017
2952 / IF(HERE(BOTTLE).AND.LIQ(0).EQ.OBJ)GOTO 9018
2962 / IF(TOTING(BOTTLE).AND.PROP(BOTTLE).EQ.1)GOTO 9220
2970 / IF(PROP(BOTTLE).NE.1)SPK=105
2976 / IF(.NOT.TOTING(BOTTLE))SPK=104
2992 /9017 IF(HOLDNG.LT.7)GOTO 9016
3003 /9016 IF(OBJ.NE.BIRD)GOTO 9014
3007 / IF(PROP(BIRD).NE.0)GOTO 9014
3011 / IF(.NOT.TOTING(ROD))GOTO 9013
3021 /9013 IF(TOTING(CAGE))GOTO 9015
3037 /9014 IF((OBJ.EQ.BIRD.OR.OBJ.EQ.CAGE).AND.PROP(BIRD).NE.0)
3038 / 1 CALL CARRY(BIRD+CAGE-OBJ,LOC)
3056 / CALL CARRY(OBJ,LOC)
3064 / IF(OBJ.EQ.BOTTLE.AND.K.NE.0)PLACE(K)=-1
3078 FSTA K /RHM - "Taken" message
3082 /C DISCARD OBJECT. "THROW" ALSO COMES HERE FOR MOST OBJECTS. SPECIAL CASES FOR
3083 /C BIRD (MIGHT ATTACK SNAKE OR DRAGON) AND CAGE (MIGHT CONTAIN BIRD) AND VASE.
3084 /C DROP COINS AT VENDING MACHINE FOR EXTRA BATTERIES.
3086 /9020 IF(TOTING(ROD2).AND.OBJ.EQ.ROD.AND..NOT.TOTING(ROD))OBJ=ROD2
3098 / IF(.NOT.TOTING(OBJ))GOTO 2011
3102 / IF(OBJ.NE.BIRD.OR..NOT.HERE(SNAKE))GOTO 9024
3113 / IF(CLOSED)GOTO 19000
3116 / CALL DSTROY(SNAKE)
3120 /C SET PROP FOR USE BY TRAVEL OPTIONS
3131 / IF(K.EQ.OBJ)OBJ=BOTTLE
3136 / IF(OBJ.EQ.BOTTLE.AND.K.NE.0)PLACE(K)=0
3145 / IF(OBJ.EQ.CAGE.AND.PROP(BIRD).NE.0)CALL DROP(BIRD,LOC)
3156 / IF(OBJ.EQ.BIRD)PROP(BIRD)=0
3164 / CALL DROP(OBJ,LOC)
3173 /9024 IF(OBJ.NE.COINS.OR..NOT.HERE(VEND))GOTO 9025
3180 / CALL DSTROY(COINS)
3183 / CALL DROP(BATTER,LOC)
3188 / CALL PSPEAK(BATTER,0)
3197 /9025 IF(OBJ.NE.BIRD.OR..NOT.AT(DRAGON).OR.PROP(DRAGON).NE.0)GOTO 9026
3220 / IF(PLACE(SNAKE).EQ.PLAC(SNAKE))TALLY2=TALLY2+1
3233 /9026 IF(OBJ.NE.BEAR.OR..NOT.AT(TROLL))GOTO 9027
3244 / CALL MOVE(TROLL,0)
3249 / CALL MOVE(TROLL+100,0)
3257 / CALL MOVE(TROLL2,PLAC(TROLL))
3266 / CALL MOVE(TROLL2+100,FIXD(TROLL))
3278 / CALL JUGGLE(CHASM)
3290 /9027 IF(OBJ.EQ.VASE.AND.LOC.NE.PLAC(PILLOW))GOTO 9028
3311 / IF(AT(PILLOW))PROP(VASE)=0
3319 / CALL PSPEAK(VASE,PROP(VASE)+1)
3328 / IF(PROP(VASE).NE.0)FIXED(VASE)=-1
3339 /C SAY. ECHO WD2 (OR WD1 IF NO WD2 (SAY WHAT?, ETC.).) MAGIC WORDS OVERRIDE.
3341 /9030 IF(WD2.EQ.0)GOTO 9031
3351 /9031 CALL VOCAB(WD1,WD1A,-1,I)
3357 / IF(I.EQ.62.OR.I.EQ.65.OR.I.EQ.71.OR.I.EQ.2025)GOTO 9035
3374 /9032 FORMAT(' Okay, "',$)
3375 / CALL A5TOA1(WD1,WD1A,WD1X,'".')
3393 /C LOCK, UNLOCK, NO OBJECT GIVEN. ASSUME VARIOUS THINGS IF PRESENT.
3401 / IF(HERE(CLAM))OBJ=CLAM
3407 / IF(HERE(OYSTER))OBJ=OYSTER
3413 / IF(AT(DOOR))OBJ=DOOR
3419 / IF(AT(GRATE))OBJ=GRATE
3425 / IF(OBJ.NE.0.AND.HERE(CHAIN))GOTO 8000
3431 / IF(HERE(CHAIN))OBJ=CHAIN
3437 / IF(OBJ.EQ.0)GOTO 2011
3442 /C LOCK, UNLOCK OBJECT. SPECIAL STUFF FOR OPENING CLAM/OYSTER AND FOR CHAIN.
3444 /9040 IF(OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER)GOTO 9046
3451 / IF(OBJ.EQ.DOOR)SPK=111
3460 / IF(OBJ.EQ.DOOR.AND.PROP(DOOR).EQ.1)SPK=54
3470 / IF(OBJ.EQ.CAGE)SPK=32
3479 / IF(OBJ.EQ.KEYS)SPK=55
3488 / IF(OBJ.EQ.GRATE.OR.OBJ.EQ.CHAIN)SPK=31
3500 / IF(SPK.NE.31.OR..NOT.HERE(KEYS))GOTO 2011
3510 / IF(OBJ.EQ.CHAIN)GOTO 9048
3514 / IF(.NOT.CLOSNG)GOTO 9043
3520 / IF(.NOT.PANIC)CLOCK2=15
3532 /9043 K=34+PROP(GRATE)
3541 / IF(VERB.EQ.LOCK)PROP(GRATE)=0
3547 / FCLA / already zero
3563 / IF(OBJ.EQ.OYSTER)K=1
3576 / IF(TOTING(OBJ))SPK=120+K
3586 / IF(.NOT.TOTING(TRIDNT))SPK=122+K
3596 / IF(VERB.EQ.LOCK)SPK=61
3605 / IF(SPK.NE.124)GOTO 2011
3615 / CALL DROP(OYSTER,LOC)
3620 / CALL DROP(PEARL,105)
3630 /9048 IF(VERB.EQ.LOCK)GOTO 9049
3640 / IF(PROP(BEAR).EQ.0)SPK=41
3649 / IF(PROP(CHAIN).EQ.0)SPK=37
3655 / IF(SPK.NE.171)GOTO 2011
3667 / IF(PROP(BEAR).NE.3)PROP(BEAR)=2
3674 / FIXED(BEAR)=2-PROP(BEAR)
3688 / IF(PROP(CHAIN).NE.0)SPK=34
3697 / IF(LOC.NE.PLAC(CHAIN))SPK=173
3706 / IF(SPK.NE.172)GOTO 2011
3716 / IF(TOTING(CHAIN))CALL DROP(CHAIN,LOC)
3733 /9070 IF(.NOT.HERE(LAMP))GOTO 2011
3740 / IF(LIMIT.LT.0)GOTO 2011
3752 / IF(WZDARK)GOTO 2000
3761 /9080 IF(.NOT.HERE(LAMP))GOTO 2011
3773 / IF(DARK(0))CALL RSPEAK(16)
3782 /C WAVE. NO EFFECT UNLESS WAVING ROD AT FISSURE.
3784 /9090 IF((.NOT.TOTING(OBJ)).AND.(OBJ.NE.ROD.OR..NOT.TOTING(ROD2)))
3797 / IF(OBJ.NE.ROD.OR..NOT.AT(FISSUR).OR..NOT.TOTING(OBJ)
3798 / 1 .OR.CLOSNG)GOTO 2011
3810 / PROP(FISSUR)=1-PROP(FISSUR)
3816 / CALL PSPEAK(FISSUR,2-PROP(FISSUR))
3829 /C ATTACK. ASSUME TARGET IF UNAMBIGUOUS. "THROW" ALSO LINKS HERE. ATTACKABLE
3830 /C OBJECTS FALL INTO TWO CATEGORIES: ENEMIES (SNAKE, DWARF, ETC.) AND OTHERS
3831 /C (BIRD, CLAM). AMBIGUOUS IF TWO ENEMIES, OR IF NO ENEMIES BUT TWO OTHERS.
3839 / IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 9122
3857 /9122 IF(OBJ.NE.0)GOTO 9124
3860 / IF(I.NE.0)OBJ=DWARF
3865 / IF(HERE(SNAKE))OBJ=OBJ*100+SNAKE
3873 / IF(AT(DRAGON).AND.PROP(DRAGON).EQ.0)OBJ=OBJ*100+DRAGON
3885 / IF(AT(TROLL))OBJ=OBJ*100+TROLL
3893 / IF(HERE(BEAR).AND.PROP(BEAR).EQ.0)OBJ=OBJ*100+BEAR
3903 / IF(OBJ.GT.100)GOTO 8000
3907 / IF(OBJ.NE.0)GOTO 9124
3911 /C CAN'T ATTACK BIRD BY THROWING AXE.
3913 / IF(HERE(BIRD).AND.VERB.NE.THROW)OBJ=BIRD
3923 /C CLAM AND OYSTER BOTH TREATED AS CLAM FOR INTRANSITIVE CASE; NO HARM DONE.
3925 / IF(HERE(CLAM).OR.HERE(OYSTER))OBJ=100*OBJ+CLAM
3936 / IF(OBJ.GT.100)GOTO 8000
3941 /9124 IF(OBJ.NE.BIRD)GOTO 9125
3951 / IF(CLOSED)GOTO 2011
3962 / IF(PLACE(SNAKE).EQ.PLAC(SNAKE))TALLY2=TALLY2+1
3975 /9125 IF(OBJ.EQ.0)SPK=44
3983 / IF(OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER)SPK=150
3995 / IF(OBJ.EQ.SNAKE)SPK=46
4004 / IF(OBJ.EQ.DWARF)SPK=49
4010 / IF(OBJ.EQ.DWARF.AND.CLOSED)GOTO 19000
4016 / IF(OBJ.EQ.DRAGON)SPK=167
4025 / IF(OBJ.EQ.TROLL)SPK=157
4034 / IF(OBJ.EQ.BEAR)SPK=165+(PROP(BEAR)+1)/2
4045 / IF(OBJ.NE.DRAGON.OR.PROP(DRAGON).NE.0)GOTO 2011
4053 /C FUN STUFF FOR DRAGON. IF HE INSISTS ON ATTACKING IT, WIN! SET PROP TO DEAD,
4054 /C MOVE DRAGON TO CENTRAL LOC (STILL FIXED), MOVE RUG THERE (NOT FIXED), AND
4055 /C MOVE HIM THERE, TOO. THEN DO A NULL MOTION TO GET NEW DESCRIPTION.
4066 / CALL GETIN(WD1,WD1A,WD1X,WD2,WD2A,WD2X)
4073 / IF(WD1.NE.'YE'.AND.WD1.NE.'Y')GOTO 2608
4083 / CALL PSPEAK(DRAGON,1)
4098 / K=(PLAC(DRAGON)+FIXD(DRAGON))/2
4106 / CALL MOVE(DRAGON+100,-1)
4114 / CALL MOVE(RUG+100,0)
4122 / CALL MOVE(DRAGON,K)
4136 / IF(PLACE(OBJ).EQ.PLAC(DRAGON).OR.PLACE(OBJ).EQ.FIXD(DRAGON))
4137 / 1 CALL MOVE(OBJ,K)
4168 /C POUR. IF NO OBJECT, OR OBJECT IS BOTTLE, ASSUME CONTENTS OF BOTTLE.
4169 /C SPECIAL TESTS FOR POURING WATER OR OIL ON PLANT OR RUSTY DOOR.
4171 /9130 IF(OBJ.EQ.BOTTLE.OR.OBJ.EQ.0)OBJ=LIQ(0)
4179 / IF(OBJ.EQ.0)GOTO 8000
4182 / IF(.NOT.TOTING(OBJ))GOTO 2011
4192 / IF(OBJ.NE.OIL.AND.OBJ.NE.WATER)GOTO 2011
4215 / IF(.NOT.(AT(PLANT).OR.AT(DOOR)))GOTO 2011
4223 / IF(AT(DOOR))GOTO 9132
4233 / IF(OBJ.NE.WATER)GOTO 2011
4237 / CALL PSPEAK(PLANT,PROP(PLANT)+1)
4246 / PROP(PLANT)=MOD(PROP(PLANT)+2,6)
4256 / PROP(PLANT2)=PROP(PLANT)/2
4276 / IF(OBJ.EQ.OIL)PROP(DOOR)=1
4284 / SPK=113+PROP(DOOR)
4297 /C EAT. INTRANSITIVE: ASSUME FOOD IF PRESENT, ELSE ASK WHAT. TRANSITIVE: FOOD
4298 /C OK, SOME THINGS LOSE APPETITE, REST ARE RIDICULOUS.
4300 /8140 IF(.NOT.HERE(FOOD))GOTO 8000
4305 /8142 CALL DSTROY(FOOD)
4317 /9140 IF(OBJ.EQ.FOOD)GOTO 8142
4321 / IF(OBJ.EQ.BIRD.OR.OBJ.EQ.SNAKE.OR.OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER
4322 / 1 .OR.OBJ.EQ.DWARF.OR.OBJ.EQ.DRAGON.OR.OBJ.EQ.TROLL
4323 / 2 .OR.OBJ.EQ.BEAR)SPK=71
4357 /C DRINK. IF NO OBJECT, ASSUME WATER AND LOOK FOR IT HERE. IF WATER IS IN
4358 /C THE BOTTLE, DRINK THAT, ELSE MUST BE AT A WATER LOC, SO DRINK STREAM.
4360 /9150 IF(OBJ.EQ.0.AND.LIQLOC(LOC).NE.WATER.AND.(LIQ(0).NE.WATER
4361 / 1 .OR..NOT.HERE(BOTTLE)))GOTO 8000
4373 / IF(OBJ.NE.0.AND.OBJ.NE.WATER)SPK=110
4381 / IF(SPK.EQ.110.OR.LIQ(0).NE.WATER.OR..NOT.HERE(BOTTLE))GOTO 2011
4409 /C RUB. YIELDS VARIOUS SNIDE REMARKS.
4411 /9160 IF(OBJ.NE.LAMP)SPK=76
4424 /C THROW. SAME AS DISCARD UNLESS AXE. THEN SAME AS ATTACK EXCEPT IGNORE BIRD,
4425 /C AND IF DWARF IS PRESENT THEN ONE MIGHT BE KILLED. (ONLY WAY TO DO SO!)
4426 /C AXE ALSO SPECIAL FOR DRAGON, BEAR, AND TROLL. TREASURES SPECIAL FOR TROLL.
4428 /9170 IF(TOTING(ROD2).AND.OBJ.EQ.ROD.AND..NOT.TOTING(ROD))OBJ=ROD2
4440 / IF(.NOT.TOTING(OBJ))GOTO 2011
4444 / IF(OBJ.GE.50.AND.OBJ.LE.MAXTRS.AND.AT(TROLL))GOTO 9178
4454 / IF(OBJ.EQ.FOOD.AND.HERE(BEAR))GOTO 9177
4461 / IF(OBJ.NE.AXE)GOTO 9020
4470 /C NEEDN'T CHECK DFLAG IF AXE IS HERE.
4472 / IF(DLOC(I).EQ.LOC)GOTO 9172
4491 / IF(AT(DRAGON).AND.PROP(DRAGON).EQ.0)GOTO 9175
4505 / IF(AT(TROLL))GOTO 9175
4509 / IF(HERE(BEAR).AND.PROP(BEAR).EQ.0)GOTO 9176
4528 / IF(RND(3).EQ.0)GOTO 9175
4549 / IF(DKILL.EQ.1)SPK=149
4557 /9175 CALL RSPEAK(SPK)
4561 / CALL DROP(AXE,LOC)
4573 /C THIS'LL TEACH HIM TO THROW THE AXE AT THE BEAR!
4581 / CALL DROP(AXE,LOC)
4601 /C BUT THROWING FOOD IS ANOTHER STORY.
4610 /C SNARF A TREASURE FOR THE TROLL.
4623 / CALL MOVE(TROLL,0)
4628 / CALL MOVE(TROLL+100,0)
4636 / CALL DROP(TROLL2,PLAC(TROLL))
4645 / CALL DROP(TROLL2+100,FIXD(TROLL))
4657 / CALL JUGGLE(CHASM)
4664 /C QUIT. INTRANSITIVE ONLY. VERIFY INTENT AND EXIT IF THAT'S WHAT HE WANTS.
4666 /8180 GAVEUP=YES(22,54,54)
4674 /8185 IF(GAVEUP)GOTO 20000
4680 /C FIND. MIGHT BE CARRYING IT, OR IT MIGHT BE HERE. ELSE GIVE CAVEAT.
4682 /9190 IF(AT(OBJ).OR.(LIQ(0).EQ.OBJ.AND.AT(BOTTLE))
4683 / 1 .OR.K.EQ.LIQLOC(LOC))SPK=94
4704 /9192 IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2.AND.OBJ.EQ.DWARF)SPK=94
4734 / IF(TOTING(OBJ))SPK=24
4744 /C INVENTORY. IF OBJECT, TREAT SAME AS FIND. ELSE REPORT ON CURRENT BURDEN.
4756 / IF(I.EQ.BEAR.OR..NOT.TOTING(I))GOTO 8201
4763 / IF(SPK.EQ.98)CALL RSPEAK(99)
4788 / IF(TOTING(BEAR))SPK=141
4798 /C FEED. IF BIRD, NO SEED. SNAKE, DRAGON, TROLL: QUIP. IF DWARF, MAKE HIM
4799 /C MAD. BEAR, SPECIAL.
4801 /9210 IF(OBJ.NE.BIRD)GOTO 9212
4812 /9212 IF(OBJ.NE.SNAKE.AND.OBJ.NE.DRAGON.AND.OBJ.NE.TROLL)GOTO 9213
4828 / IF(OBJ.EQ.DRAGON.AND.PROP(DRAGON).NE.0)SPK=110
4837 / IF(OBJ.EQ.TROLL)SPK=182
4846 / IF(OBJ.NE.SNAKE.OR.CLOSED.OR..NOT.HERE(BIRD))GOTO 2011
4877 /9213 IF(OBJ.NE.DWARF)GOTO 9214
4881 / IF(.NOT.HERE(FOOD))GOTO 2011
4898 /9214 IF(OBJ.NE.BEAR)GOTO 9215
4902 / IF(PROP(BEAR).EQ.0)SPK=102
4911 / IF(PROP(BEAR).EQ.3)SPK=110
4917 / IF(.NOT.HERE(FOOD))GOTO 2011
4954 /C FILL. BOTTLE MUST BE EMPTY, AND SOME LIQUID AVAILABLE. (VASE IS NASTY.)
4956 /9220 IF(OBJ.EQ.VASE)GOTO 9222
4960 / IF(OBJ.NE.0.AND.OBJ.NE.BOTTLE)GOTO 2011
4966 / IF(OBJ.EQ.0.AND..NOT.HERE(BOTTLE))GOTO 8000
4978 / IF(LIQLOC(LOC).EQ.0)SPK=106
4986 / IF(LIQ(0).NE.0)SPK=105
4991 / IF(SPK.NE.107)GOTO 2011
4998 / PROP(BOTTLE)=MOD(COND(LOC),4)/2*2
5016 / IF(TOTING(BOTTLE))PLACE(K)=-1
5024 / IF(K.EQ.OIL)SPK=108
5038 #9222, FLDA #LIT+135
5040 / IF(LIQLOC(LOC).EQ.0)SPK=144
5048 / IF(LIQLOC(LOC).EQ.0.OR..NOT.TOTING(VASE))GOTO 2011
5070 /C BLAST. NO EFFECT UNLESS YOU'VE GOT DYNAMITE, WHICH IS A NEAT TRICK!
5072 /9230 IF(PROP(ROD2).LT.0.OR..NOT.CLOSED)GOTO 2011
5084 / IF(LOC.EQ.115)BONUS=134
5093 / IF(HERE(ROD2))BONUS=135
5102 / CALL RSPEAK(BONUS)
5110 /C SCORE. GO TO SCORING SECTION, WHICH WILL RETURN TO 8241 IF SCORNG IS TRUE.
5119 /8241 SCORNG=.FALSE.
5122 / TYPE 8243,SCORE,MXSCOR
5149 /8243 FORMAT(' If you were to quit now, you would score',I4
5150 / 1 ,' out of a possible',I4,'.')
5151 / GAVEUP=YES(143,54,54)
5162 /C FEE FIE FOE FOO (AND FUM). ADVANCE TO NEXT STATE IF GIVEN IN PROPER ORDER.
5163 /C LOOK UP WD1 IN SECTION 3 OF VOCAB TO DETERMINE WHICH WORD WE'VE GOT. LAST
5164 /C WORD ZIPS THE EGGS BACK TO THE GIANT ROOM (UNLESS ALREADY THERE).
5166 /8250 CALL VOCAB(WD1,WD1A,3,K)
5178 / IF(FOOBAR.EQ.1-K)GOTO 8252
5183 / IF(FOOBAR.NE.0)SPK=151
5198 / IF(K.NE.4)GOTO 2009
5204 / IF(PLACE(EGGS).EQ.PLAC(EGGS)
5205 / 1 .OR.(TOTING(EGGS).AND.LOC.EQ.PLAC(EGGS)))GOTO 2011
5218 /C BRING BACK TROLL IF WE STEAL THE EGGS BACK FROM HIM BEFORE CROSSING.
5220 / IF(PLACE(EGGS).EQ.0.AND.PLACE(TROLL).EQ.0.AND.PROP(TROLL).EQ.0)
5222 #M93, FLDA PLACE-3,7
5241 / IF(LOC.EQ.PLAC(EGGS))K=0
5247 / CALL MOVE(EGGS,PLAC(EGGS))
5254 / CALL PSPEAK(EGGS,K)
5263 /C BRIEF. INTRANSITIVE ONLY. SUPPRESS LONG DESCRIPTIONS AFTER FIRST TIME.
5281 /C READ. MAGAZINES IN DWARVISH, MESSAGE WE'VE SEEN, AND . . . OYSTER?
5283 /8270 IF(HERE(MAGZIN))OBJ=MAGZIN
5289 / IF(HERE(TABLET))OBJ=OBJ*100+TABLET
5297 / IF(HERE(MESSAG))OBJ=OBJ*100+MESSAG
5305 / IF(CLOSED.AND.TOTING(OYSTER))OBJ=OYSTER
5312 / IF(OBJ.GT.100.OR.OBJ.EQ.0.OR.DARK(0))GOTO 8000
5322 /9270 IF(DARK(0))GOTO 5190
5325 / IF(OBJ.EQ.MAGZIN)SPK=190
5334 / IF(OBJ.EQ.TABLET)SPK=196
5343 / IF(OBJ.EQ.MESSAG)SPK=191
5352 / IF(OBJ.EQ.OYSTER.AND.HINTED(2).AND.TOTING(OYSTER))SPK=194
5356 FLDA HINTED+3 / HINTED(2)
5366 / IF(OBJ.NE.OYSTER.OR.HINTED(2).OR..NOT.TOTING(OYSTER)
5367 / 1 .OR..NOT.CLOSED)GOTO 2011
5378 / HINTED(2)=YES(192,193,54)
5384 FSTA HINTED+3 /HINTED(2)
5389 /C BREAK. ONLY WORKS FOR MIRROR IN REPOSITORY AND, OF COURSE, THE VASE.
5391 /9280 IF(OBJ.EQ.MIRROR)SPK=148
5400 / IF(OBJ.EQ.VASE.AND.PROP(VASE).EQ.0)GOTO 9282
5407 / IF(OBJ.NE.MIRROR.OR..NOT.CLOSED)GOTO 2011
5426 / IF(TOTING(VASE))CALL DROP(VASE,LOC)
5444 /C WAKE. ONLY USE IS TO DISTURB THE DWARVES.
5446 /9290 IF(OBJ.NE.DWARF.OR..NOT.CLOSED)GOTO 2011
5459 /C SUSPEND. SAVE THE WORLD.
5461 /8300 CALL SAVEGM(.TRUE.,I)
5469 /C HOURS. JUST A JOKE.
5471 /8310 CALL RSPEAK(201)
5478 /C RESUME. RESTORE THE WORLD.
5480 /8320 CALL RSTRGM(.TRUE.,I)
5491 /C COME HERE IF HE'S BEEN LONG ENOUGH AT REQUIRED LOC(S) FOR SOME UNUSED HINT.
5492 /C HINT NUMBER IS IN VARIABLE "HINT". BRANCH TO QUICK TEST FOR ADDITIONAL
5493 /C CONDITIONS, THEN COME BACK TO DO NEAT STUFF. GOTO 40010 IF CONDITIONS ARE
5494 /C MET AND WE WANT TO OFFER THE HINT. GOTO 40020 TO CLEAR HINTLC BACK TO ZERO,
5495 /C 40030 TO TAKE NO ACTION YET.
5497 /40000 GOTO (40400,40500,40600,40700,40800,40900)(HINT-3)
5498 /C CAVE BIRD SNAKE MAZE DARK WITT
5517 /40010 HINTLC(HINT)=0
5522 / IF(.NOT.YES(HINTS(HINT,3),0,54))GOTO 2602
5523 FLDA #LIT+330 / 60 (index 3)
5534 / TYPE 40012,HINTS(HINT,2)
5552 /40012 FORMAT(' I am prepared to give you a hint, but it will cost you',
5555 / HINTED(HINT)=YES(175,HINTS(HINT,4),54)
5558 FADD #LIT+325 / 80: HINT,4
5568 / IF(HINTED(HINT).AND.LIMIT.GT.30)LIMIT=LIMIT+30*HINTS(HINT,2)
5580 /40020 HINTLC(HINT)=0
5589 /C NOW FOR THE QUICK TESTS. SEE DATABASE DESCRIPTION FOR ONE-LINE NOTES.
5591 /40400 IF(PROP(GRATE).EQ.0.AND..NOT.HERE(KEYS))GOTO 40010
5601 /40500 IF(HERE(BIRD).AND.TOTING(ROD).AND.OBJ.EQ.BIRD)GOTO 40010
5616 /40600 IF(HERE(SNAKE).AND..NOT.HERE(BIRD))GOTO 40010
5627 /40700 IF(ATLOC(LOC).EQ.0.AND.ATLOC(OLDLOC).EQ.0
5628 / 1 .AND.ATLOC(OLDLC2).EQ.0.AND.HOLDNG.GT.1)GOTO 40010
5648 /40800 IF(PROP(EMRALD).NE.-1.AND.PROP(PYRAM).EQ.-1)GOTO 40010
5666 /C CAVE CLOSING AND SCORING
5669 /C THESE SECTIONS HANDLE THE CLOSING OF THE CAVE. THE CAVE CLOSES "CLOCK1"
5670 /C TURNS AFTER THE LAST TREASURE HAS BEEN LOCATED (INCLUDING THE PIRATE'S
5671 /C CHEST, WHICH MAY OF COURSE NEVER SHOW UP). NOTE THAT THE TREASURES NEED NOT
5672 /C HAVE BEEN TAKEN YET, JUST LOCATED. HENCE CLOCK1 MUST BE LARGE ENOUGH TO GET
5673 /C OUT OF THE CAVE (IT ONLY TICKS WHILE INSIDE THE CAVE). WHEN IT HITS ZERO,
5674 /C WE BRANCH TO 10000 TO START CLOSING THE CAVE, AND THEN SIT BACK AND WAIT FOR
5675 /C HIM TO TRY TO GET OUT. IF HE DOESN'T WITHIN CLOCK2 TURNS, WE CLOSE THE
5676 /C CAVE; IF HE DOES TRY, WE ASSUME HE PANICS, AND GIVE HIM A FEW ADDITIONAL
5677 /C TURNS TO GET FRANTIC BEFORE WE CLOSE. WHEN CLOCK2 HITS ZERO, WE BRANCH TO
5678 /C 11000 TO TRANSPORT HIM INTO THE FINAL PUZZLE. NOTE THAT THE PUZZLE DEPENDS
5679 /C UPON ALL SORTS OF RANDOM THINGS. FOR INSTANCE, THERE MUST BE NO WATER OR
5680 /C OIL, SINCE THERE ARE BEANSTALKS WHICH WE DON'T WANT TO BE ABLE TO WATER,
5681 /C SINCE THE CODE CAN'T HANDLE IT. ALSO, WE CAN HAVE NO KEYS, SINCE THERE IS A
5682 /C GRATE (HAVING MOVED THE FIXED OBJECT!) THERE SEPARATING HIM FROM ALL THE
5683 /C TREASURES. MOST OF THESE PROBLEMS ARISE FROM THE USE OF NEGATIVE PROP
5684 /C NUMBERS TO SUPPRESS THE OBJECT DESCRIPTIONS UNTIL HE'S ACTUALLY MOVED THE
5687 /C WHEN THE FIRST WARNING COMES, WE LOCK THE GRATE, DESTROY THE BRIDGE, KILL
5688 /C ALL THE DWARVES (AND THE PIRATE), REMOVE THE TROLL AND BEAR (UNLESS DEAD),
5689 /C AND SET "CLOSNG" TO TRUE. LEAVE THE DRAGON; TOO MUCH TROUBLE TO MOVE IT.
5690 /C FROM NOW UNTIL CLOCK2 RUNS OUT, HE CANNOT UNLOCK THE GRATE, MOVE TO ANY
5691 /C LOCATION OUTSIDE THE CAVE (LOC<9), OR CREATE THE BRIDGE. NOR CAN HE BE
5692 /C RESURRECTED IF HE DIES. NOTE THAT THE SNAKE IS ALREADY GONE, SINCE HE GOT
5693 /C TO THE TREASURE ACCESSIBLE ONLY VIA THE HALL OF THE MT. KING. ALSO, HE'S
5694 /C BEEN IN GIANT ROOM (TO GET EGGS), SO WE CAN REFER TO IT. ALSO ALSO, HE'S
5695 /C GOTTEN THE PEARL, SO WE KNOW THE BIVALVE IS AN OYSTER. *AND*, THE DWARVES
5696 /C MUST HAVE BEEN ACTIVATED, SINCE WE'VE FOUND CHEST.
5698 /10000 PROP(GRATE)=0
5727 / CALL MOVE(TROLL,0)
5732 / CALL MOVE(TROLL+100,0)
5741 / CALL MOVE(TROLL2,PLAC(TROLL))
5750 / CALL MOVE(TROLL2+100,FIXD(TROLL))
5762 / CALL JUGGLE(CHASM)
5765 / IF(PROP(BEAR).NE.3)CALL DSTROY(BEAR)
5799 /C ONCE HE'S PANICKED, AND CLOCK2 HAS RUN OUT, WE COME HERE TO SET UP THE
5800 /C STORAGE ROOM. THE ROOM HAS TWO LOCS, HARDWIRED AS 115 (NE) AND 116 (SW).
5801 /C AT THE NE END, WE PLACE EMPTY BOTTLES, A NURSERY OF PLANTS, A BED OF
5802 /C OYSTERS, A PILE OF LAMPS, RODS WITH STARS, SLEEPING DWARVES, AND HIM. AND
5803 /C THE SW END WE PLACE GRATE OVER TREASURES, SNAKE PIT, COVEY OF CAGED BIRDS,
5804 /C MORE RODS, AND PILLOWS. A MIRROR STRETCHES ACROSS ONE WALL. MANY OF THE
5805 /C OBJECTS COME FROM KNOWN LOCATIONS AND/OR STATES (E.G. THE SNAKE IS KNOWN TO
5806 /C HAVE BEEN DESTROYED AND NEEDN'T BE CARRIED AWAY FROM ITS OLD "PLACE"),
5807 /C MAKING THE VARIOUS OBJECTS BE HANDLED DIFFERENTLY. WE ALSO DROP ALL OTHER
5808 /C OBJECTS HE MIGHT BE CARRYING (LEST HE HAVE SOME WHICH COULD CAUSE TROUBLE,
5809 /C SUCH AS THE KEYS). WE DESCRIBE THE FLASH OF LIGHT AND TRUNDLE BACK.
5811 /11000 PROP(BOTTLE)=PUT(BOTTLE,115,1)
5820 / PROP(PLANT)=PUT(PLANT,115,0)
5829 / PROP(OYSTER)=PUT(OYSTER,115,0)
5838 / PROP(LAMP)=PUT(LAMP,115,0)
5847 / PROP(ROD)=PUT(ROD,115,0)
5856 / PROP(DWARF)=PUT(DWARF,115,0)
5873 /C LEAVE THE GRATE WITH NORMAL (NON-NEGATIVE PROPERTY).
5875 / I=PUT(GRATE,116,0)
5882 / PROP(SNAKE)=PUT(SNAKE,116,1)
5891 / PROP(BIRD)=PUT(BIRD,116,1)
5900 / PROP(CAGE)=PUT(CAGE,116,0)
5909 / PROP(ROD2)=PUT(ROD2,116,0)
5918 / PROP(PILLOW)=PUT(PILLOW,116,0)
5928 / PROP(MIRROR)=PUT(MIRROR,115,0)
5945 /11010 IF(TOTING(I))CALL DSTROY(I)
5968 /C ANOTHER WAY WE CAN FORCE AN END TO THINGS IS BY HAVING THE LAMP GIVE OUT.
5969 /C WHEN IT GETS CLOSE, WE COME HERE TO WARN HIM. WE GO TO 12000 IF THE LAMP
5970 /C AND FRESH BATTERIES ARE HERE, IN WHICH CASE WE REPLACE THE BATTERIES AND
5971 /C CONTINUE. 12200 IS FOR OTHER CASES OF LAMP DYING.12400 IS WHEN IT GOES
5972 /C OUT, AND 12600 IS IF HE'S WANDERED OUTSIDE AND THE LAMP IS USED UP, IN WHICH
5973 /C CASE WE FORCE HIM TO GIVE UP.
5975 /12000 CALL RSPEAK(188)
5984 / IF(TOTING(BATTER))CALL DROP(BATTER,LOC)
6002 /12200 IF(LMWARN.OR..NOT.HERE(LAMP))GOTO 19999
6017 / IF(PLACE(BATTER).EQ.0)SPK=183
6027 / IF(PROP(BATTER).EQ.1)SPK=189
6051 / IF(HERE(LAMP))CALL RSPEAK(184)
6061 /12600 CALL RSPEAK(185)
6073 /C OH DEAR, HE'S DISTURBED THE DWARVES.
6075 /19000 CALL RSPEAK(136)
6081 /C EXIT CODE. WILL EVENTUALLY INCLUDE SCORING. FOR NOW, HOWEVER, ...
6083 /C THE PRESENT SCORING ALGORITHM IS AS FOLLOWS:
6084 /C OBJECTIVE: POINTS: PRESENT TOTAL POSSIBLE:
6085 /C GETTING WELL INTO CAVE 25 25
6086 /C EACH TREASURE < CHEST 12 60
6087 /C TREASURE CHEST ITSELF 14 14
6088 /C EACH TREASURE > CHEST 16 144
6089 /C SURVIVING (MAX-NUM)*10 30
6091 /C REACHING "CLOSNG" 25 25
6092 /C "CLOSED": QUIT/KILLED 10
6096 /C CAME TO WITT'S END 1 1
6097 /C ROUND OUT THE TOTAL 2 2
6105 /C FIRST TALLY UP THE TREASURES. MUST BE IN BUILDING AND NOT BROKEN.
6106 /C GIVE THE POOR GUY 2 POINTS JUST FOR FINDING EACH TREASURE.
6108 / DO 20010 I=50,MAXTRS
6112 / IF(PTEXT(I).EQ.0)GOTO 20010
6120 / IF(I.EQ.CHEST)K=14
6129 / IF(I.GT.CHEST)K=16
6135 / IF(PROP(I).GE.0)SCORE=SCORE+2
6140 / IF(PLACE(I).EQ.3.AND.PROP(I).EQ.0)SCORE=SCORE+K-2
6161 /C NOW LOOK AT HOW HE FINISHED AND HOW FAR HE GOT. MAXDIE AND NUMDIE TELL US
6162 /C HOW WELL HE SURVIVED. GAVEUP SAYS WHETHER HE EXITED VIA QUIT. DFLAG WILL
6163 /C TELL US IF HE EVER GOT SUITABLY DEEP INTO THE CAVE. CLOSNG STILL INDICATES
6164 /C WHETHER HE REACHED THE ENDGAME. AND IF HE GOT AS FAR AS "CAVE CLOSED"
6165 /C (INDICATED BY "CLOSED"), THEN BONUS IS ZERO FOR MUNDANE EXITS OR 133, 134,
6166 /C 135 IF HE BLEW IT (SO TO SPEAK).
6168 / SCORE=SCORE+(MAXDIE-NUMDIE)*10
6173 / MXSCOR=MXSCOR+MAXDIE*10
6177 / IF(.NOT.(SCORNG.OR.GAVEUP))SCORE=SCORE+4
6187 / IF(DFLAG.NE.0)SCORE=SCORE+25
6195 / IF(CLOSNG)SCORE=SCORE+25
6203 / IF(.NOT.CLOSED)GOTO 20020
6206 / IF(BONUS.EQ.0)SCORE=SCORE+10
6211 / IF(BONUS.EQ.135)SCORE=SCORE+25
6220 / IF(BONUS.EQ.134)SCORE=SCORE+30
6229 / IF(BONUS.EQ.133)SCORE=SCORE+45
6238 /20020 MXSCOR=MXSCOR+45
6239 #20020, FLDA #LIT+102
6242 /C DID HE COME TO WITT'S END AS HE SHOULD?
6244 / IF(PLACE(MAGZIN).EQ.108)SCORE=SCORE+1
6267 /C DEDUCT POINTS FOR HINTS. HINTS < 4 ARE SPECIAL; SEE DATABASE DESCRIPTION.
6269 / DO 20030 I=1,HNTMAX
6273 /20030 IF(HINTED(I))SCORE=SCORE-HINTS(I,2)
6291 /C RETURN TO SCORE COMMAND IF THAT'S WHERE WE CAME FROM.
6293 / IF(SCORNG)GOTO 8241
6297 /C THAT SHOULD BE GOOD ENOUGH. LET'S TELL HIM ALL ABOUT IT.
6299 / TYPE 20100,SCORE,MXSCOR,TURNS
6338 /20100 FORMAT(/' You scored',I4,' out of a possible',I4,
6339 / 1 ', using',I5,' turns.')
6341 / DO 20200 I=1,CLSSES
6345 / IF(CVAL(I).GE.SCORE)GOTO 20210
6363 /20202 FORMAT(' You just went off my scale!!'/)
6368 /20210 CALL SPEAK(CTEXT(I))
6371 FLDA CTEXT-3,7 /GET CLASS MESSAGE
6376 / IF(I.EQ.CLSSES-1)GOTO 20220
6408 /20212 FORMAT(' To achieve the next higher rating, you need',I3,
6409 / 1 ' more point',$)
6410 / IF(K.EQ.1) TYPE 20213
6419 / IF(K.NE.1) TYPE 20214
6423 /20213 FORMAT('+.'/)
6425 /20214 FORMAT('+s.'/)
6441 /20222 FORMAT(' To achieve the next higher rating ',
6442 / 1 'would be a neat trick!'/' Congratulations!!'/)
6449 #67A, TEXT %T]HERE ARE @%
6450 #67, TEXT %('+',I1,$)%
6451 #67B, TEXT % T]HREATENING LITTLE DWARVES IN THE ROOM WITH YOU.@%
6453 #78, TEXT %(1X,I1,$)%
6454 #78B, TEXT % ]OF THEM THROW KNIVES AT YOU!@%
6455 #68B, TEXT % ]OF THEM GET YOU!@%
6456 #5015, TEXT %W]HAT DO YOU WANT TO DO WITH THE @%
6457 #5199, TEXT %I] DON'T SEE ANY "@%
6458 #8002, TEXT %I ]DON'T UNDERSTAND "@%
6459 #9032, TEXT %O]KAY, "@%
6460 #8243, TEXT %I]F YOU WERE TO QUIT NOW, YOU WOULD SCORE @%
6463 #8243A, TEXT %('+',I3,$)%
6465 #8243B, TEXT % ]OUT OF A POSSIBLE @%
6468 #40012, TEXT %I] AM PREPARED TO GIVE YOU A HINT, BUT IT WILL COST YOU @%
6469 #4001A, TEXT %('+',I2,$)%
6470 #4001B, TEXT % ]POINTS.@%
6471 #20100, TEXT %Y]OU SCORED @%
6472 #2010C, TEXT % ]USING @%
6473 #2010D, TEXT %('+',I5,$)%
6474 #2010E, TEXT % ]TURNS.@%
6475 #20202, TEXT %Y]OU JUST WENT OFF MY SCALE!!@%
6476 #20212, TEXT %T]O ACHIEVE THE NEXT HIGHER RATING@%
6477 #2021A, TEXT %, ]YOU NEED @%
6478 #2021C, TEXT % ]MORE POINT@%
6480 #20222, TEXT %] WOULD BE A NEAT TRICK!@%
6481 #20223, TEXT %C]ONGRATULATIONS!!@%