67 #LIT, F 4 / Literals. Too many cause ST overflow
148 TENTE, TEXT +ENTE + /344
149 TPOUR, TEXT +POUR + /347
150 TWEST, TEXT +WEST + /352
151 TQUES, TEXT +?@ + /355
152 TQDOT, TEXT +".@ + /360
153 TYES, TEXT +YES + /363
325 / Statement functions - called with JSA to save space
327 / TOTING(OBJ)=PLACE(OBJ).EQ.-1
335 / AT(OBJ)=PLACE(OBJ).EQ.LOC.OR.FIXED(OBJ).EQ.LOC
346 / FORCED(LOC)=COND(LOC).EQ.2
354 / HERE(OBJ) = PLACE(OBJ).EQ.LOC .OR. TOTING(OBJ)
366 / DARK(DUMMY)=MOD(COND(LOC),2).EQ.0.AND.(PROP(LAMP).EQ.0.OR.
370 / .OR. .NOT. HERE(LAMP)
374 / .OR. PROP(LAMP) EQ 0
379 / MOD(COND(LOC),2) .EQ. 0
380 NOTHR, FLDA LOC / Either prop or not here
382 FLDA COND-3,4 / COND(LOC)
383 FDIV TWO / Divided by two
387 FLDA COND-3,4 / Get back COND(LOC)
388 FSUB #TMP+14 / Now have mod
389 JNE NOTDRK / If not zero, not dark
395 / LIQ2(PBOTL)=(1-PBOTL)*WATER+(PBOTL/2)*(WATER+OIL)
398 FSUB PBOTL / 1 - PBOTL
399 FMUL WATER / (1-PBOTL)*WATER
400 FSTA #TMP+14 / Store first term
407 FMUL #TMP+6 / (PBOTL/2)*(WATER+OIL)
411 / LIQ(DUMMY)=LIQ2(MAX0(PROP(BOTTLE),-1-PROP(BOTTLE)))
416 FLDA PROP-3,5 / PROP(BOTTLE)
419 FSUB PBOTL /-1-PROP(BOTTLE)
421 FLDA PBOTL / Find larger
423 JGT .+4 / already larger, now PBOTL
425 FSTA PBOTL / This is PBOTL
426 JSA LIQ2 / Call LIQ2 with this
429 / LIQLOC(LOC)=LIQ2((MOD(COND(LOC)/2*2,8)-5)*MOD(COND(LOC)/4,2)+1)
431 FLDA LOC / Always called with LOC as arg
433 FLDA COND-3,2 / COND(LOC)
434 FSTA #TMP+11 / Save that
436 JSA #FIX / COND(LOC)/2
437 FMUL TWO / COND(LOC)/2*2
439 FDIV #LIT+11 / Modulo 8
444 FSUB #TMP+22 / MOD(...)
446 FSTA #TMP+25 / First Term
447 FLDA #TMP+11 / COND(LOC)
448 FDIV #LIT / COND(LOC)/4
457 FMUL #TMP+25 / Multiply
459 FSTA PBOTL / Finally got the term
460 JSA LIQ2 / Send to LIQ2
463 / Main routine entry point
471 / HINTED(3)=YES(65,1,0)
488 / IF(HINTED(3))LIMIT=1000
493 /2 IF(NEWLOC.GE.9.OR.NEWLOC.EQ.0.OR..NOT.CLOSNG)GOTO 71
508 / IF(.NOT.PANIC)CLOCK2=15
517 /C SEE IF A DWARF HAS SEEN HIM AND HAS COME FROM WHERE HE WANTS TO GO. IF SO,
518 /C THE DWARF'S BLOCKING HIS WAY. IF COMING FROM PLACE FORBIDDEN TO PIRATE
519 /C (DWARVES ROOTED IN PLACE) LET HIM GET OUT (AND ATTACKED).
521 /71 IF(NEWLOC.EQ.LOC.OR.FORCED(LOC).OR.BITSET(LOC,3))GOTO 74
537 / IF(ODLOC(I).NE.NEWLOC.OR..NOT.DSEEN(I))GOTO 73
564 /C DWARF STUFF. SEE EARLIER COMMENTS FOR DESCRIPTION OF VARIABLES. REMEMBER
565 /C SIXTH DWARF IS PIRATE AND IS THUS VERY DIFFERENT EXCEPT FOR MOTION RULES.
567 /C FIRST OFF, DON'T LET THE DWARVES FOLLOW HIM INTO A PIT OR A WALL. ACTIVATE
568 /C THE WHOLE MESS THE FIRST TIME HE GETS AS FAR AS THE HALL OF MISTS (LOC 15).
569 /C IF NEWLOC IS FORBIDDEN TO PIRATE (IN PARTICULAR, IF IT'S BEYOND THE TROLL
570 /C BRIDGE), BYPASS DWARF STUFF. THAT WAY PIRATE CAN'T STEAL RETURN TOLL, AND
571 /C DWARVES CAN'T MEET THE BEAR. ALSO MEANS DWARVES WON'T FOLLOW HIM INTO DEAD
572 /C END IN MAZE, BUT C'EST LA VIE. THEY'LL WAIT FOR HIM OUTSIDE THE DEAD END.
574 / IF(LOC.EQ.0.OR.FORCED(LOC).OR.BITSET(NEWLOC,3))GOTO 2000
584 / IF(DFLAG.NE.0)GOTO 6000
587 / IF(LOC.GE.15)DFLAG=1
597 /C WHEN WE ENCOUNTER THE FIRST DWARF, WE KILL 0, 1, OR 2 OF THE 5 DWARVES. IF
598 /C ANY OF THE SURVIVORS IS AT LOC, REPLACE HIM WITH THE ALTERNATE.
600 /6000 IF(DFLAG.NE.1)GOTO 6010
604 / IF(LOC.LT.15.OR.PCT(95))GOTO 2000
626 /6001 IF(PCT(50))DLOC(J)=0
644 / IF(DLOC(I).EQ.LOC)DLOC(I)=DALTLC
652 /6002 ODLOC(I)=DLOC(I)
674 /C THINGS ARE IN FULL SWING. MOVE EACH DWARF AT RANDOM, EXCEPT IF HE'S SEEN US
675 /C HE STICKS WITH US. DWARVES NEVER GO TO LOCS <15. IF WANDERING AT RANDOM,
676 /C THEY DON'T BACK UP UNLESS THERE'S NO ALTERNATIVE. IF THEY DON'T HAVE TO
677 /C MOVE, THEY ATTACK. AND, OF COURSE, DEAD DWARVES DON'T DO MUCH OF ANYTHING.
689 / IF (DLOC(I).EQ.0)GOTO 6030
704 / IF(KK.EQ.0)GOTO 6016
707 /6012 NEWLOC=TRVLOC(KK)
714 / IF(NEWLOC.GT.300.OR.NEWLOC.LT.15.OR.NEWLOC.EQ.ODLOC(I)
715 / 1 .OR.(J.GT.1.AND.NEWLOC.EQ.TK(J-1)).OR.J.GE.20
716 / 2 .OR.NEWLOC.EQ.DLOC(I).OR.FORCED(NEWLOC)
717 / 3 .OR.(I.EQ.6.AND.BITSET(NEWLOC,3))
718 / 4 .OR.TRVCON(KK).EQ.100)GOTO 6014
775 / IF(TRAVEL(KK-1).GE.0)GOTO 6012
811 / DSEEN(I)=(DSEEN(I).AND.LOC.GE.15)
812 / 1 .OR.(DLOC(I).EQ.LOC.OR.ODLOC(I).EQ.LOC)
828 / IF(.NOT.DSEEN(I))GOTO 6030
833 / IF(I.NE.6)GOTO 6027
838 /C THE PIRATE'S SPOTTED HIM. HE LEAVES HIM ALONE ONCE WE'VE FOUND CHEST.
839 /C K COUNTS IF A TREASURE IS HERE. IF NOT, AND TALLY=TALLY2 PLUS ONE FOR
840 /C AN UNSEEN CHEST, LET THE PIRATE BE SPOTTED.
842 / IF(LOC.EQ.CHLOC.OR.PROP(CHEST).GE.0)GOTO 6030
854 / DO 6020 J=50,MAXTRS
858 /C PIRATE WON'T TAKE PYRAMID FROM PLOVER ROOM OR DARK ROOM (TOO EASY!).
860 / IF(J.EQ.PYRAM.AND.(LOC.EQ.PLAC(PYRAM)
861 / 1 .OR.LOC.EQ.PLAC(EMRALD)))GOTO 6020
875 / IF(TOTING(J))GOTO 6022
891 / IF(TALLY.EQ.TALLY2+1.AND.K.EQ.0.AND.PLACE(CHEST).EQ.0
892 / 1 .AND.HERE(LAMP).AND.PROP(LAMP).EQ.1)GOTO 6025
911 / IF(ODLOC(6).NE.DLOC(6).AND.PCT(20))CALL RSPEAK(127)
926 /6022 CALL RSPEAK(128)
931 /C DON'T STEAL CHEST BACK FROM TROLL!
933 / IF(PLACE(MESSAG).EQ.0)CALL MOVE(CHEST,CHLOC)
942 / CALL MOVE(MESSAG,CHLOC2)
947 / DO 6023 J=50,MAXTRS
951 / IF(J.EQ.PYRAM.AND.(LOC.EQ.PLAC(PYRAM)
952 / 1 .OR.LOC.EQ.PLAC(EMRALD)))GOTO 6023
966 / IF(AT(J).AND.FIXED(J).EQ.0)CALL CARRY(J,LOC)
978 / IF(TOTING(J))CALL DROP(J,CHLOC)
1007 /6025 CALL RSPEAK(186)
1012 / CALL MOVE(CHEST,CHLOC)
1017 / CALL MOVE(MESSAG,CHLOC2)
1025 /C THIS THREATENING LITTLE DWARF IS IN THE ROOM WITH HIM!
1027 /6027 DTOTAL=DTOTAL+1
1030 / IF(ODLOC(I).NE.DLOC(I))GOTO 6030
1039 / IF(KNFLOC.GE.0)KNFLOC=LOC
1044 / IF(RND(1000).LT.95*(DFLAG-2))STICK=STICK+1
1063 /C NOW WE KNOW WHAT'S HAPPENING. LET'S TELL THE POOR SUCKER ABOUT IT.
1065 / IF(DTOTAL.EQ.0)GOTO 2000
1068 / IF(DTOTAL.EQ.1)GOTO 75
1072 /67 FORMAT(' There are ',I1,' threatening little dwarves in the'
1073 / 1 ,' room with you.')
1100 /77 IF(ATTACK.EQ.0)GOTO 2000
1103 / IF(DFLAG.EQ.2)DFLAG=3
1109 / IF(ATTACK.EQ.1)GOTO 79
1114 /78 FORMAT(' ',I1,' of them throw knives at you!')
1130 /82 IF(STICK.GT.1)GOTO 83
1134 / CALL RSPEAK(K+STICK)
1141 / IF(STICK.EQ.0)GOTO 2000
1155 /68 FORMAT(' ',I1,' of them get you!')
1179 /C DESCRIBE THE CURRENT LOCATION AND (MAYBE) GET NEXT COMMAND.
1181 /C PRINT TEXT FOR CURRENT LOC.
1183 /2000 IF(LOC.EQ.0)GOTO 99
1194 / IF (ABBNUM.NE.0) KENT=MOD(ABB(LOC),ABBNUM)
1211 / IF (KENT.EQ.0.OR.KK.EQ.0) KK=LTEXT(LOC)
1220 / IF(FORCED(LOC).OR..NOT.DARK(0))GOTO 2001
1226 / IF(WZDARK.AND.PCT(35))GOTO 90
1237 /2001 IF(TOTING(BEAR))CALL RSPEAK(141)
1251 / IF(FORCED(LOC))GOTO 8
1255 / IF(LOC.EQ.33.AND.PCT(25).AND..NOT.CLOSNG)CALL RSPEAK(8)
1270 /C PRINT OUT DESCRIPTIONS OF OBJECTS AT THIS LOCATION. IF NOT CLOSING AND
1271 /C PROPERTY VALUE IS NEGATIVE, TALLY OFF ANOTHER TREASURE. RUG IS SPECIAL
1272 /C CASE; ONCE SEEN, ITS PROP IS 1 (DRAGON ON IT) TILL DRAGON IS KILLED.
1273 /C SIMILARLY FOR CHAIN; PROP IS INITIALLY 1 (LOCKED TO BEAR). THESE HACKS
1274 /C ARE BECAUSE PROP=0 IS NEEDED TO GET FULL SCORE.
1276 / IF(DARK(0))GOTO 2012
1279 / ABB(LOC)=ABB(LOC)+1
1289 /2004 IF(I.EQ.0)GOTO 2012
1294 / IF(OBJ.GT.100)OBJ=OBJ-100
1300 / IF(OBJ.EQ.STEPS.AND.TOTING(NUGGET))GOTO 2008
1307 / IF(PROP(OBJ).GE.0)GOTO 2006
1312 / IF(CLOSED)GOTO 2008
1318 / IF(OBJ.EQ.RUG.OR.OBJ.EQ.CHAIN)PROP(OBJ)=1
1331 /C IF REMAINING TREASURES TOO ELUSIVE, ZAP HIS LAMP.
1332 / IF(TALLY.EQ.TALLY2.AND.TALLY.NE.0)LIMIT=MIN0(35,LIMIT)
1346 / IF(OBJ.EQ.STEPS.AND.LOC.EQ.FIXED(STEPS))KK=1
1357 / CALL PSPEAK(OBJ,KK)
1372 #2009, FLDA #LIT+113
1378 /2011 CALL RSPEAK(SPK)
1390 /C CHECK IF THIS LOC IS ELIGIBLE FOR ANY HINTS. IF BEEN HERE LONG ENOUGH,
1391 /C BRANCH TO HELP SECTION (ON LATER PAGE). HINTS ALL COME BACK HERE EVENTUALLY
1392 /C TO FINISH THE LOOP. IGNORE "HINTS" < 4 (SPECIAL STUFF, SEE DATABASE NOTES).
1394 /2600 DO 2602 HINT=4,HNTMAX
1398 / IF(HINTED(HINT))GOTO 2602
1403 / IF(.NOT.BITSET(LOC,HINT))HINTLC(HINT)=-1
1411 / HINTLC(HINT)=HINTLC(HINT)+1
1414 / IF(HINTLC(HINT).GE.HINTS(HINT,1))GOTO 40000
1429 /C KICK THE RANDOM NUMBER GENERATOR JUST TO ADD VARIETY TO THE CHASE. ALSO,
1430 /C IF CLOSING TIME, CHECK FOR ANY OBJECTS BEING TOTED WITH PROP < 0 AND SET
1431 /C THE PROP TO -1-PROP. THIS WAY OBJECTS WON'T BE DESCRIBED UNTIL THEY'VE
1432 /C BEEN PICKED UP AND PUT DOWN SEPARATE FROM THEIR RESPECTIVE PILES. DON'T
1433 /C TICK CLOCK1 UNLESS WELL INTO CAVE (AND NOT AT Y2).
1435 / IF(.NOT.CLOSED)GOTO 2605
1438 / IF(PROP(OYSTER).LT.0.AND.TOTING(OYSTER))
1439 / 1 CALL PSPEAK(OYSTER,1)
1456 /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
1525 / IF(CLOCK1.EQ.0)GOTO 10000
1528 / IF(CLOCK1.LT.0)CLOCK2=CLOCK2-1
1533 / IF(CLOCK2.EQ.0)GOTO 11000
1536 / IF(PROP(LAMP).EQ.1)LIMIT=LIMIT-1
1544 / IF(LIMIT.LE.30.AND.HERE(BATTER).AND.PROP(BATTER).EQ.0
1545 / 1 .AND.HERE(LAMP))GOTO 12000
1559 / IF(LIMIT.EQ.0)GOTO 12400
1562 / IF(LIMIT.LT.0.AND.LOC.LE.8)GOTO 12600
1568 / IF(LIMIT.LE.30)GOTO 12200
1574 #19999, LDX 53,0 /43
1577 / IF(LIQLOC(LOC).EQ.WATER)K=70
1585 /C DO PRELIMINARY ANALYSIS OF SENTENCE TO FIND CERTAIN SPECIAL
1588 /C ENTER <WATER,STREAM>
1590 /C <WATER,OIL> <PLANT,DOOR>
1592 / CALL VOCAB(WD1,WD1A,-1,I)
1598 / CALL VOCAB(WD2,WD2A,-1,J)
1604 / IF(WD1.NE.'ENTE') GO TO 2609
1608 / IF(J .EQ. (WATER+1000)
1609 / 1 .OR. J .EQ. STREAM) GO TO 2010
1617 / IF(WD2 .NE. 0) GO TO 2800
1621 /2609 IF((I .NE. (WATER+1000) .AND. I .NE. (OIL+1000))
1622 / 1 .OR. (J .NE. (PLANT+1000) .AND. J .NE. (DOOR+1000)))
1644 /2610 IF(WD1 .EQ. 'WEST' .AND. PCT(10))
1657 /2630 CALL VOCAB(WD1,-1,I)
1663 / IF(I.EQ.-1)GOTO 3000
1678 / GOTO (8,5000,4000,2010)KQ
1695 /C GET SECOND WORD FOR ANALYSIS.
1712 /C GEE, I DON'T UNDERSTAND.
1742 /C ANALYSE A VERB. REMEMBER WHAT IT WAS, GO BACK FOR OBJECT IF SECOND WORD
1743 /C UNLESS VERB IS "SAY", WHICH SNARFS ARBITRARY SECOND WORD.
1752 / IF(WD2.NE.0.AND.VERB.NE.SAY)GOTO 2800
1758 / IF(VERB.EQ.SAY)OBJ=WD2
1764 / IF(OBJ.NE.0)GOTO 4090
1770 /C ANALYSE AN INTRANSITIVE VERB (IE, NO OBJECT GIVEN YET).
1772 /4080 GOTO(8010,8000,8000,8040,2009,8040,9070,9080,8000,8000,
1773 / 1 2011,9120,9130,8140,9150,8000,8000,8180,8000,8200,
1774 / 2 8000,9220,9230,8240,8250,8260,8270,8000,8000,8300,
1776 /C TAKE DROP SAY OPEN NOTH LOCK ON OFF WAVE CALM
1777 /C WALK KILL POUR EAT DRNK RUB TOSS QUIT FIND INVN
1778 /C FEED FILL BLST SCOR FOO BRF READ BREK WAKE SUSP
1824 /C ANALYSE A TRANSITIVE VERB.
1826 /4090 GOTO(9010,9020,9030,9040,2009,9040,9070,9080,9090,2011,
1827 / 1 2011,9120,9130,9140,9150,9160,9170,2011,9190,9190,
1828 / 2 9210,9220,9230,2011,2011,2011,9270,9280,9290,2011,
1830 /C TAKE DROP SAY OPEN NOTH LOCK ON OFF WAVE CALM
1831 /C WALK KILL POUR EAT DRNK RUB TOSS QUIT FIND INVN
1832 /C FEED FILL BLST SCOR FOO BRF READ BREK WAKE SUSP
1879 /C ANALYSE AN OBJECT WORD. SEE IF THE THING IS HERE, WHETHER WE'VE GOT A VERB
1880 /C YET, AND SO ON. OBJECT MUST BE HERE UNLESS VERB IS "FIND" OR "INVENT(ORY)"
1881 /C (AND NO NEW VERB YET TO BE ANALYSED). WATER AND OIL ARE ALSO FUNNY, SINCE
1882 /C THEY ARE NEVER ACTUALLY DROPPED AT ANY LOCATION, BUT MIGHT BE HERE INSIDE
1883 /C THE BOTTLE OR AS A FEATURE OF THE LOCATION.
1888 / IF(FIXED(K).NE.LOC.AND..NOT.HERE(K))GOTO 5100
1898 /5010 IF(WD2.NE.0)GOTO 2800
1901 / IF(VERB.NE.0)GOTO 4090
1905 /5015 FORMAT(' What do you want to do with the ',$)
1912 / CALL A5TOA1(WD1,WD1A,WD1X,'?')
1927 /5100 IF(K.NE.GRATE)GOTO 5110
1931 / IF(LOC.EQ.1.OR.LOC.EQ.4.OR.LOC.EQ.7)K=DPRSSN
1941 / IF(LOC.GT.9.AND.LOC.LT.15)K=ENTRNC
1950 / IF(K.NE.GRATE)GOTO 8
1955 /5110 IF(K.NE.DWARF)GOTO 5120
1963 / IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 5010
1979 /5120 IF((LIQ(0).EQ.K.AND.HERE(BOTTLE)).OR.K.EQ.LIQLOC(LOC))GOTO 5010
1989 / IF(OBJ.NE.PLANT.OR..NOT.AT(PLANT2).OR.PROP(PLANT2).EQ.0)GOTO 5130
2006 /5130 IF(OBJ.NE.KNIFE.OR.KNFLOC.NE.LOC)GOTO 5140
2022 /5140 IF(OBJ.NE.ROD.OR..NOT.HERE(ROD2))GOTO 5190
2035 /5190 IF((VERB.EQ.FIND.OR.VERB.EQ.INVENT).AND.WD2.EQ.0)GOTO 5010
2051 /5199 FORMAT(' I don''t see any ',$)
2053 / CALL A5TOA1(WD1,WD1A,WD1X,'.')
2061 /C FIGURE OUT THE NEW LOCATION
2063 /C GIVEN THE CURRENT LOCATION IN "LOC", AND A MOTION VERB NUMBER IN "K", PUT
2064 /C THE NEW LOCATION IN "NEWLOC". THE CURRENT LOC IS SAVED IN "OLDLOC" IN CASE
2065 /C HE WANTS TO RETREAT. THE CURRENT OLDLOC IS SAVED IN OLDLC2, IN CASE HE
2066 /C DIES. (IF HE DOES, NEWLOC WILL BE LIMBO, AND OLDLOC WILL BE WHAT KILLED
2067 /C HIM, SO WE NEED OLDLC2, WHICH IS THE LAST PLACE HE WAS SAFE.)
2077 / IF(KK.EQ.0)CALL BUG(26)
2083 / IF(K.EQ.NULL)GOTO 2
2087 / IF(K.EQ.BACK)GOTO 20
2091 / IF(K.EQ.LOOK)GOTO 30
2095 / IF(K.EQ.CAVE)GOTO 40
2106 /9 LL=IABS(TRAVEL(KK))
2117 / IF(LL.EQ.1 .OR. LL.EQ.K)GOTO 10
2123 / IF(TRAVEL(KK).LT.0)GOTO 50
2137 /10 NEWLOC=TRVCON(KK)
2150 / IF(NEWLOC.LE.300)GOTO 13
2154 / IF(PROP(K).NE.NEWLOC/100-3)GOTO 16
2164 /C TRY NEXT ENTRY IN TRAVEL TABLE
2166 /12 IF(TRAVEL(KK).LT.0)CALL BUG(25)
2182 /C MAKE SURE HE DOESN'T GO THROUGH SAME TEST AGAIN
2184 / IF(TRVCON(KK-1).EQ.TRVCON(KK) .AND. TRVLOC(KK-1).EQ.TRVLOC(KK))
2216 /13 IF(NEWLOC.LE.100)GOTO 14
2220 / IF(TOTING(K).OR.(NEWLOC.GT.200.AND.AT(K)))GOTO 16
2235 /14 IF(NEWLOC.NE.0.AND..NOT.PCT(NEWLOC))GOTO 12
2243 /16 NEWLOC=TRVLOC(KK)
2250 / IF(NEWLOC.LE.300)GOTO 2
2253 / IF(NEWLOC.LE.500)GOTO 30000
2257 / CALL RSPEAK(NEWLOC-500)
2271 /C SPECIAL MOTIONS COME HERE. LABELLING CONVENTION: STATEMENT NUMBERS NNNXX
2272 /C (XX=00-99) ARE USED FOR SPECIAL CASE NUMBER NNN (NNN=301-500).
2274 /30000 NEWLOC=NEWLOC-300
2278 / GOTO (30100,30200,30300)NEWLOC
2294 /C TRAVEL 301. PLOVER-ALCOVE PASSAGE. CAN CARRY ONLY EMERALD. NOTE: TRAVEL
2295 /C TABLE MUST INCLUDE "USELESS" ENTRIES GOING THROUGH PASSAGE, WHICH CAN NEVER
2296 /C BE USED FOR ACTUAL MOTION, BUT CAN BE SPOTTED BY "GO BACK".
2298 /30100 NEWLOC=99+100-LOC
2299 #30100, FLDA #LIT+300 /199
2302 / IF(HOLDNG.EQ.0.OR.(HOLDNG.EQ.1.AND.TOTING(EMRALD)))GOTO 2
2320 /C TRAVEL 302. PLOVER TRANSPORT. DROP THE EMERALD (ONLY USE SPECIAL TRAVEL IF
2321 /C TOTING IT), SO HE'S FORCED TO USE THE PLOVER-PASSAGE TO GET IT OUT. HAVING
2322 /C DROPPED IT, GO BACK AND PRETEND HE WASN'T CARRYING IT AFTER ALL.
2324 /30200 CALL DROP(EMRALD,LOC)
2332 /C TRAVEL 303. TROLL BRIDGE. MUST BE DONE ONLY AS SPECIAL MOTION SO THAT
2333 /C DWARVES WON'T WANDER ACROSS AND ENCOUNTER THE BEAR. (THEY WON'T FOLLOW THE
2334 /C PLAYER THERE BECAUSE THAT REGION IS FORBIDDEN TO THE PIRATE.) IF
2335 /C PROP(TROLL)=1, HE'S CROSSED SINCE PAYING, SO STEP OUT AND BLOCK HIM.
2336 /C (STANDARD TRAVEL ENTRIES CHECK FOR PROP(TROLL)=0.) SPECIAL STUFF FOR BEAR.
2338 /30300 IF(PROP(TROLL).NE.1)GOTO 30310
2344 / CALL PSPEAK(TROLL,1)
2352 / CALL MOVE(TROLL2,0)
2357 / CALL MOVE(TROLL2+100,0)
2365 / CALL MOVE(TROLL,PLAC(TROLL))
2379 / CALL MOVE(TROLL+100,FIXD(TROLL))
2396 / CALL JUGGLE(CHASM)
2407 /30310 NEWLOC=PLAC(TROLL)+FIXD(TROLL)-LOC
2414 / IF(PROP(TROLL).EQ.0)PROP(TROLL)=1
2419 / IF(.NOT.TOTING(BEAR))GOTO 2
2437 / CALL DROP(BEAR,NEWLOC)
2450 / IF(PROP(SPICES).LT.0)TALLY2=TALLY2+1
2467 /C HANDLE "GO BACK". LOOK FOR VERB WHICH GOES FROM LOC TO OLDLOC, OR TO OLDLC2
2468 /C IF OLDLOC HAS FORCED-MOTION. K2 SAVES ENTRY -> FORCED LOC -> PREVIOUS LOC.
2473 / IF(FORCED(K))K=OLDLC2
2488 / IF(K.NE.LOC)GOTO 21
2506 / IF(LL.EQ.K)GOTO 25
2509 / IF(LL.GT.300)GOTO 22
2518 / IF(FORCED(LL).AND.TRVLOC(KK).EQ.K)K2=KK
2531 /22 IF(TRAVEL(KK).LT.0)GOTO 23
2548 / IF(KK.NE.0)GOTO 25
2557 /25 K=IABS(TRAVEL(KK))
2577 /C LOOK. CAN'T GIVE MORE DETAIL. PRETEND IT WASN'T DARK (THOUGH IT MAY "NOW"
2578 /C BE DARK) SO HE WON'T FALL INTO A PIT WHILE STARING INTO THE GLOOM.
2580 /30 IF(DETAIL.LT.3)CALL RSPEAK(15)
2602 /C CAVE. DIFFERENT MESSAGES DEPENDING ON WHETHER ABOVE GROUND.
2604 /40 IF(LOC.LT.8)CALL RSPEAK(57)
2611 / IF(LOC.GE.8)CALL RSPEAK(58)
2618 /C NON-APPLICABLE MOTION. VARIOUS MESSAGES DEPENDING ON WORD GIVEN.
2623 / IF(K.GE.43.AND.K.LE.50)SPK=9
2631 / IF(K.EQ.29.OR.K.EQ.30)SPK=9
2642 / IF(K.EQ.7.OR.K.EQ.36.OR.K.EQ.37)SPK=10
2656 / IF(K.EQ.11.OR.K.EQ.19)SPK=11
2668 / IF(VERB.EQ.FIND.OR.VERB.EQ.INVENT)SPK=59
2678 / IF(K.EQ.62.OR.K.EQ.65)SPK=42
2700 /C "YOU'RE DEAD, JIM."
2702 /C IF THE CURRENT LOC IS ZERO, IT MEANS THE CLOWN GOT HIMSELF KILLED. WE'LL
2703 /C ALLOW THIS MAXDIE TIMES. MAXDIE IS AUTOMATICALLY SET BASED ON THE NUMBER OF
2704 /C SNIDE MESSAGES AVAILABLE. EACH DEATH RESULTS IN A MESSAGE (81, 83, ETC.)
2705 /C WHICH OFFERS REINCARNATION; IF ACCEPTED, THIS RESULTS IN MESSAGE 82, 84,
2706 /C ETC. THE LAST TIME, IF HE WANTS ANOTHER CHANCE, HE GETS A SNIDE REMARK AS
2707 /C WE EXIT. WHEN REINCARNATED, ALL OBJECTS BEING CARRIED GET DROPPED AT OLDLC2
2708 /C (PRESUMABLY THE LAST PLACE PRIOR TO BEING KILLED) WITHOUT CHANGE OF PROPS.
2709 /C THE LOOP RUNS BACKWARDS TO ASSURE THAT THE BIRD IS DROPPED BEFORE THE CAGE.
2710 /C (THIS KLUGE COULD BE CHANGED ONCE WE'RE SURE ALL REFERENCES TO BIRD AND CAGE
2711 /C ARE DONE BY KEYWORDS.) THE LAMP IS A SPECIAL CASE (IT WOULDN'T DO TO LEAVE
2712 /C IT IN THE CAVE). IT IS TURNED OFF AND LEFT OUTSIDE THE BUILDING (ONLY IF HE
2713 /C WAS CARRYING IT, OF COURSE). HE HIMSELF IS LEFT INSIDE THE BUILDING (AND
2714 /C HEAVEN HELP HIM IF HE TRIES TO XYZZY BACK INTO THE CAVE WITHOUT THE LAMP!).
2715 /C OLDLOC IS ZAPPED SO HE CAN'T JUST "RETREAT".
2717 /C THE EASIEST WAY TO GET KILLED IS TO FALL INTO A PIT IN PITCH DARKNESS.
2727 /C OKAY, HE'S DEAD. LET'S GET ON WITH IT.
2729 /99 IF(CLOSNG)GOTO 95
2732 / 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
2778 #G0150, LDX 145,0 /101
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").
2842 /8002 FORMAT(' I don''t understand "',$)
2843 / CALL A5TOA1(WD1,WD1A,WD1X,'".')
2860 /C CARRY, NO OBJECT GIVEN YET. OK IF ONLY ONE OBJECT PRESENT.
2862 /8010 IF(ATLOC(LOC).EQ.0.OR.LINK(ATLOC(LOC)).NE.0)GOTO 8000
2874 / IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 8000
2897 /C CARRY AN OBJECT. SPECIAL CASES FOR BIRD AND CAGE (IF BIRD IN CAGE, CAN'T
2898 /C TAKE ONE WITHOUT THE OTHER. LIQUIDS ALSO SPECIAL, SINCE THEY DEPEND ON
2899 /C STATUS OF BOTTLE. ALSO VARIOUS SIDE EFFECTS, ETC.
2901 /9010 IF(TOTING(OBJ))GOTO 2011
2908 / IF(OBJ.EQ.PLANT.AND.PROP(PLANT).LE.0)SPK=115
2918 / IF(OBJ.EQ.BEAR.AND.PROP(BEAR).EQ.1)SPK=169
2930 / IF(OBJ.EQ.CHAIN.AND.PROP(BEAR).NE.0)SPK=170
2941 / IF(FIXED(OBJ).NE.0)GOTO 2011
2946 / IF(OBJ.NE.WATER.AND.OBJ.NE.OIL)GOTO 9017
2953 / IF(HERE(BOTTLE).AND.LIQ(0).EQ.OBJ)GOTO 9018
2963 / IF(TOTING(BOTTLE).AND.PROP(BOTTLE).EQ.1)GOTO 9220
2973 / IF(PROP(BOTTLE).NE.1)SPK=105
2981 / IF(.NOT.TOTING(BOTTLE))SPK=104
2995 /9017 IF(HOLDNG.LT.7)GOTO 9016
3006 /9016 IF(OBJ.NE.BIRD)GOTO 9014
3010 / IF(PROP(BIRD).NE.0)GOTO 9014
3015 / IF(.NOT.TOTING(ROD))GOTO 9013
3025 /9013 IF(TOTING(CAGE))GOTO 9015
3041 /9014 IF((OBJ.EQ.BIRD.OR.OBJ.EQ.CAGE).AND.PROP(BIRD).NE.0)
3042 / 1 CALL CARRY(BIRD+CAGE-OBJ,LOC)
3061 / CALL CARRY(OBJ,LOC)
3069 / IF(OBJ.EQ.BOTTLE.AND.K.NE.0)PLACE(K)=-1
3079 #2009A, FLDA #LIT+135 /RHM - "Taken" message
3084 /C DISCARD OBJECT. "THROW" ALSO COMES HERE FOR MOST OBJECTS. SPECIAL CASES FOR
3085 /C BIRD (MIGHT ATTACK SNAKE OR DRAGON) AND CAGE (MIGHT CONTAIN BIRD) AND VASE.
3086 /C DROP COINS AT VENDING MACHINE FOR EXTRA BATTERIES.
3088 /9020 IF(TOTING(ROD2).AND.OBJ.EQ.ROD.AND..NOT.TOTING(ROD))OBJ=ROD2
3100 / IF(.NOT.TOTING(OBJ))GOTO 2011
3104 / IF(OBJ.NE.BIRD.OR..NOT.HERE(SNAKE))GOTO 9024
3115 / IF(CLOSED)GOTO 19000
3118 / CALL DSTROY(SNAKE)
3123 /C SET PROP FOR USE BY TRAVEL OPTIONS
3134 / IF(K.EQ.OBJ)OBJ=BOTTLE
3139 / IF(OBJ.EQ.BOTTLE.AND.K.NE.0)PLACE(K)=0
3148 / IF(OBJ.EQ.CAGE.AND.PROP(BIRD).NE.0)CALL DROP(BIRD,LOC)
3160 / IF(OBJ.EQ.BIRD)PROP(BIRD)=0
3168 / CALL DROP(OBJ,LOC)
3177 /9024 IF(OBJ.NE.COINS.OR..NOT.HERE(VEND))GOTO 9025
3184 / CALL DSTROY(COINS)
3188 / CALL DROP(BATTER,LOC)
3193 / CALL PSPEAK(BATTER,0)
3202 /9025 IF(OBJ.NE.BIRD.OR..NOT.AT(DRAGON).OR.PROP(DRAGON).NE.0)GOTO 9026
3226 / IF(PLACE(SNAKE).EQ.PLAC(SNAKE))TALLY2=TALLY2+1
3239 /9026 IF(OBJ.NE.BEAR.OR..NOT.AT(TROLL))GOTO 9027
3250 / CALL MOVE(TROLL,0)
3255 / CALL MOVE(TROLL+100,0)
3263 / CALL MOVE(TROLL2,PLAC(TROLL))
3277 / CALL MOVE(TROLL2+100,FIXD(TROLL))
3294 / CALL JUGGLE(CHASM)
3307 /9027 IF(OBJ.EQ.VASE.AND.LOC.NE.PLAC(PILLOW))GOTO 9028
3328 / IF(AT(PILLOW))PROP(VASE)=0
3336 / CALL PSPEAK(VASE,PROP(VASE)+1)
3346 / IF(PROP(VASE).NE.0)FIXED(VASE)=-1
3357 /C SAY. ECHO WD2 (OR WD1 IF NO WD2 (SAY WHAT?, ETC.).) MAGIC WORDS OVERRIDE.
3359 /9030 IF(WD2.EQ.0)GOTO 9031
3369 /9031 CALL VOCAB(WD1,WD1A,-1,I)
3375 / IF(I.EQ.62.OR.I.EQ.65.OR.I.EQ.71.OR.I.EQ.2025)GOTO 9035
3392 /9032 FORMAT(' Okay, "',$)
3393 / CALL A5TOA1(WD1,WD1A,WD1X,'".')
3411 /C LOCK, UNLOCK, NO OBJECT GIVEN. ASSUME VARIOUS THINGS IF PRESENT.
3417 / IF(HERE(CLAM))OBJ=CLAM
3423 / IF(HERE(OYSTER))OBJ=OYSTER
3429 / IF(AT(DOOR))OBJ=DOOR
3435 / IF(AT(GRATE))OBJ=GRATE
3441 / IF(OBJ.NE.0.AND.HERE(CHAIN))GOTO 8000
3447 / IF(HERE(CHAIN))OBJ=CHAIN
3453 / IF(OBJ.EQ.0)GOTO 2011
3458 /C LOCK, UNLOCK OBJECT. SPECIAL STUFF FOR OPENING CLAM/OYSTER AND FOR CHAIN.
3460 /9040 IF(OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER)GOTO 9046
3467 / IF(OBJ.EQ.DOOR)SPK=111
3474 / IF(OBJ.EQ.DOOR.AND.PROP(DOOR).EQ.1)SPK=54
3486 / IF(OBJ.EQ.CAGE)SPK=32
3493 / IF(OBJ.EQ.KEYS)SPK=55
3500 / IF(OBJ.EQ.GRATE.OR.OBJ.EQ.CHAIN)SPK=31
3510 / IF(SPK.NE.31.OR..NOT.HERE(KEYS))GOTO 2011
3518 / IF(OBJ.EQ.CHAIN)GOTO 9048
3522 / IF(.NOT.CLOSNG)GOTO 9043
3528 / IF(.NOT.PANIC)CLOCK2=15
3540 /9043 K=34+PROP(GRATE)
3547 / IF(VERB.EQ.LOCK)PROP(GRATE)=0
3575 / IF(OBJ.EQ.OYSTER)K=1
3586 / IF(TOTING(OBJ))SPK=120+K
3594 / IF(.NOT.TOTING(TRIDNT))SPK=122+K
3602 / IF(VERB.EQ.LOCK)SPK=61
3609 / IF(SPK.NE.124)GOTO 2011
3618 / CALL DROP(OYSTER,LOC)
3623 / CALL DROP(PEARL,105)
3633 /9048 IF(VERB.EQ.LOCK)GOTO 9049
3641 / IF(PROP(BEAR).EQ.0)SPK=41
3649 / IF(PROP(CHAIN).EQ.0)SPK=37
3656 / IF(SPK.NE.171)GOTO 2011
3666 / IF(PROP(BEAR).NE.3)PROP(BEAR)=2
3674 / FIXED(BEAR)=2-PROP(BEAR)
3683 #9049, LDX 254,0 /172
3686 / IF(PROP(CHAIN).NE.0)SPK=34
3694 / IF(LOC.NE.PLAC(CHAIN))SPK=173
3701 / IF(SPK.NE.172)GOTO 2011
3709 / IF(TOTING(CHAIN))CALL DROP(CHAIN,LOC)
3726 /9070 IF(.NOT.HERE(LAMP))GOTO 2011
3733 / IF(LIMIT.LT.0)GOTO 2011
3745 / IF(WZDARK)GOTO 2000
3754 /9080 IF(.NOT.HERE(LAMP))GOTO 2011
3767 / IF(DARK(0))CALL RSPEAK(16)
3776 /C WAVE. NO EFFECT UNLESS WAVING ROD AT FISSURE.
3778 /9090 IF((.NOT.TOTING(OBJ)).AND.(OBJ.NE.ROD.OR..NOT.TOTING(ROD2)))
3791 / IF(OBJ.NE.ROD.OR..NOT.AT(FISSUR).OR..NOT.TOTING(OBJ)
3792 / 1 .OR.CLOSNG)GOTO 2011
3804 / PROP(FISSUR)=1-PROP(FISSUR)
3810 / CALL PSPEAK(FISSUR,2-PROP(FISSUR))
3823 /C ATTACK. ASSUME TARGET IF UNAMBIGUOUS. "THROW" ALSO LINKS HERE. ATTACKABLE
3824 /C OBJECTS FALL INTO TWO CATEGORIES: ENEMIES (SNAKE, DWARF, ETC.) AND OTHERS
3825 /C (BIRD, CLAM). AMBIGUOUS IF TWO ENEMIES, OR IF NO ENEMIES BUT TWO OTHERS.
3833 / IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 9122
3851 /9122 IF(OBJ.NE.0)GOTO 9124
3854 / IF(I.NE.0)OBJ=DWARF
3859 / IF(HERE(SNAKE))OBJ=OBJ*100+SNAKE
3867 / IF(AT(DRAGON).AND.PROP(DRAGON).EQ.0)OBJ=OBJ*100+DRAGON
3879 / IF(AT(TROLL))OBJ=OBJ*100+TROLL
3887 / IF(HERE(BEAR).AND.PROP(BEAR).EQ.0)OBJ=OBJ*100+BEAR
3899 / IF(OBJ.GT.100)GOTO 8000
3903 / IF(OBJ.NE.0)GOTO 9124
3907 /C CAN'T ATTACK BIRD BY THROWING AXE.
3909 / IF(HERE(BIRD).AND.VERB.NE.THROW)OBJ=BIRD
3919 /C CLAM AND OYSTER BOTH TREATED AS CLAM FOR INTRANSITIVE CASE; NO HARM DONE.
3921 / IF(HERE(CLAM).OR.HERE(OYSTER))OBJ=100*OBJ+CLAM
3932 / IF(OBJ.GT.100)GOTO 8000
3937 /9124 IF(OBJ.NE.BIRD)GOTO 9125
3945 / IF(CLOSED)GOTO 2011
3957 / IF(PLACE(SNAKE).EQ.PLAC(SNAKE))TALLY2=TALLY2+1
3970 /9125 IF(OBJ.EQ.0)SPK=44
3976 / IF(OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER)SPK=150
3986 / IF(OBJ.EQ.SNAKE)SPK=46
3993 / IF(OBJ.EQ.DWARF)SPK=49
3999 / IF(OBJ.EQ.DWARF.AND.CLOSED)GOTO 19000
4005 / IF(OBJ.EQ.DRAGON)SPK=167
4012 / IF(OBJ.EQ.TROLL)SPK=157
4019 / IF(OBJ.EQ.BEAR)SPK=165+(PROP(BEAR)+1)/2
4031 / IF(OBJ.NE.DRAGON.OR.PROP(DRAGON).NE.0)GOTO 2011
4040 /C FUN STUFF FOR DRAGON. IF HE INSISTS ON ATTACKING IT, WIN! SET PROP TO DEAD,
4041 /C MOVE DRAGON TO CENTRAL LOC (STILL FIXED), MOVE RUG THERE (NOT FIXED), AND
4042 /C MOVE HIM THERE, TOO. THEN DO A NULL MOTION TO GET NEW DESCRIPTION.
4053 / CALL GETIN(WD1,WD1A,WD1X,WD2,WD2A,WD2X)
4060 / IF(WD1.NE.'YE'.AND.WD1.NE.'Y')GOTO 2608
4070 / CALL PSPEAK(DRAGON,1)
4085 / K=(PLAC(DRAGON)+FIXD(DRAGON))/2
4093 / CALL MOVE(DRAGON+100,-1)
4101 / CALL MOVE(RUG+100,0)
4109 / CALL MOVE(DRAGON,K)
4123 / IF(PLACE(OBJ).EQ.PLAC(DRAGON).OR.PLACE(OBJ).EQ.FIXD(DRAGON))
4124 / 1 CALL MOVE(OBJ,K)
4155 /C POUR. IF NO OBJECT, OR OBJECT IS BOTTLE, ASSUME CONTENTS OF BOTTLE.
4156 /C SPECIAL TESTS FOR POURING WATER OR OIL ON PLANT OR RUSTY DOOR.
4158 /9130 IF(OBJ.EQ.BOTTLE.OR.OBJ.EQ.0)OBJ=LIQ(0)
4166 / IF(OBJ.EQ.0)GOTO 8000
4169 / IF(.NOT.TOTING(OBJ))GOTO 2011
4177 / IF(OBJ.NE.OIL.AND.OBJ.NE.WATER)GOTO 2011
4198 / IF(.NOT.(AT(PLANT).OR.AT(DOOR)))GOTO 2011
4206 / IF(AT(DOOR))GOTO 9132
4214 / IF(OBJ.NE.WATER)GOTO 2011
4218 / CALL PSPEAK(PLANT,PROP(PLANT)+1)
4228 / PROP(PLANT)=MOD(PROP(PLANT)+2,6)
4239 / PROP(PLANT2)=PROP(PLANT)/2
4260 / IF(OBJ.EQ.OIL)PROP(DOOR)=1
4268 / SPK=113+PROP(DOOR)
4279 /C EAT. INTRANSITIVE: ASSUME FOOD IF PRESENT, ELSE ASK WHAT. TRANSITIVE: FOOD
4280 /C OK, SOME THINGS LOSE APPETITE, REST ARE RIDICULOUS.
4282 /8140 IF(.NOT.HERE(FOOD))GOTO 8000
4287 /8142 CALL DSTROY(FOOD)
4298 /9140 IF(OBJ.EQ.FOOD)GOTO 8142
4302 / IF(OBJ.EQ.BIRD.OR.OBJ.EQ.SNAKE.OR.OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER
4303 / 1 .OR.OBJ.EQ.DWARF.OR.OBJ.EQ.DRAGON.OR.OBJ.EQ.TROLL
4304 / 2 .OR.OBJ.EQ.BEAR)SPK=71
4336 /C DRINK. IF NO OBJECT, ASSUME WATER AND LOOK FOR IT HERE. IF WATER IS IN
4337 /C THE BOTTLE, DRINK THAT, ELSE MUST BE AT A WATER LOC, SO DRINK STREAM.
4339 /9150 IF(OBJ.EQ.0.AND.LIQLOC(LOC).NE.WATER.AND.(LIQ(0).NE.WATER
4340 / 1 .OR..NOT.HERE(BOTTLE)))GOTO 8000
4352 / IF(OBJ.NE.0.AND.OBJ.NE.WATER)SPK=110
4360 / IF(SPK.EQ.110.OR.LIQ(0).NE.WATER.OR..NOT.HERE(BOTTLE))GOTO 2011
4388 /C RUB. YIELDS VARIOUS SNIDE REMARKS.
4390 /9160 IF(OBJ.NE.LAMP)SPK=76
4401 /C THROW. SAME AS DISCARD UNLESS AXE. THEN SAME AS ATTACK EXCEPT IGNORE BIRD,
4402 /C AND IF DWARF IS PRESENT THEN ONE MIGHT BE KILLED. (ONLY WAY TO DO SO!)
4403 /C AXE ALSO SPECIAL FOR DRAGON, BEAR, AND TROLL. TREASURES SPECIAL FOR TROLL.
4405 /9170 IF(TOTING(ROD2).AND.OBJ.EQ.ROD.AND..NOT.TOTING(ROD))OBJ=ROD2
4417 / IF(.NOT.TOTING(OBJ))GOTO 2011
4421 / IF(OBJ.GE.50.AND.OBJ.LE.MAXTRS.AND.AT(TROLL))GOTO 9178
4431 / IF(OBJ.EQ.FOOD.AND.HERE(BEAR))GOTO 9177
4438 / IF(OBJ.NE.AXE)GOTO 9020
4447 /C NEEDN'T CHECK DFLAG IF AXE IS HERE.
4449 / IF(DLOC(I).EQ.LOC)GOTO 9172
4466 / IF(AT(DRAGON).AND.PROP(DRAGON).EQ.0)GOTO 9175
4475 #M84, LDX 236,0 /158
4478 / IF(AT(TROLL))GOTO 9175
4482 / IF(HERE(BEAR).AND.PROP(BEAR).EQ.0)GOTO 9176
4501 / IF(RND(3).EQ.0)GOTO 9175
4520 / IF(DKILL.EQ.1)SPK=149
4526 /9175 CALL RSPEAK(SPK)
4530 / CALL DROP(AXE,LOC)
4542 /C THIS'LL TEACH HIM TO THROW THE AXE AT THE BEAR!
4545 #9176, LDX 244,0 /164
4548 / CALL DROP(AXE,LOC)
4568 /C BUT THROWING FOOD IS ANOTHER STORY.
4577 /C SNARF A TREASURE FOR THE TROLL.
4580 #9178, LDX 237,0 /159
4588 / CALL MOVE(TROLL,0)
4593 / CALL MOVE(TROLL+100,0)
4601 / CALL DROP(TROLL2,PLAC(TROLL))
4615 / CALL DROP(TROLL2+100,FIXD(TROLL))
4632 / CALL JUGGLE(CHASM)
4640 /C QUIT. INTRANSITIVE ONLY. VERIFY INTENT AND EXIT IF THAT'S WHAT HE WANTS.
4642 /8180 GAVEUP=YES(22,54,54)
4650 /8185 IF(GAVEUP)GOTO 20000
4656 /C FIND. MIGHT BE CARRYING IT, OR IT MIGHT BE HERE. ELSE GIVE CAVEAT.
4658 /9190 IF(AT(OBJ).OR.(LIQ(0).EQ.OBJ.AND.AT(BOTTLE))
4659 / 1 .OR.K.EQ.LIQLOC(LOC))SPK=94
4678 /9192 IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2.AND.OBJ.EQ.DWARF)SPK=94
4704 / IF(TOTING(OBJ))SPK=24
4714 /C INVENTORY. IF OBJECT, TREAT SAME AS FIND. ELSE REPORT ON CURRENT BURDEN.
4717 #8200, LDX 142,0 /98
4724 / IF(I.EQ.BEAR.OR..NOT.TOTING(I))GOTO 8201
4731 / IF(SPK.EQ.98)CALL RSPEAK(99)
4754 / IF(TOTING(BEAR))SPK=141
4764 /C FEED. IF BIRD, NO SEED. SNAKE, DRAGON, TROLL: QUIP. IF DWARF, MAKE HIM
4765 /C MAD. BEAR, SPECIAL.
4767 /9210 IF(OBJ.NE.BIRD)GOTO 9212
4778 /9212 IF(OBJ.NE.SNAKE.AND.OBJ.NE.DRAGON.AND.OBJ.NE.TROLL)GOTO 9213
4789 #M89, LDX 146,0 /102
4792 / IF(OBJ.EQ.DRAGON.AND.PROP(DRAGON).NE.0)SPK=110
4802 / IF(OBJ.EQ.TROLL)SPK=182
4809 / IF(OBJ.NE.SNAKE.OR.CLOSED.OR..NOT.HERE(BIRD))GOTO 2011
4839 /9213 IF(OBJ.NE.DWARF)GOTO 9214
4843 / IF(.NOT.HERE(FOOD))GOTO 2011
4858 /9214 IF(OBJ.NE.BEAR)GOTO 9215
4862 / IF(PROP(BEAR).EQ.0)SPK=102
4870 / IF(PROP(BEAR).EQ.3)SPK=110
4876 / IF(.NOT.HERE(FOOD))GOTO 2011
4910 /C FILL. BOTTLE MUST BE EMPTY, AND SOME LIQUID AVAILABLE. (VASE IS NASTY.)
4912 /9220 IF(OBJ.EQ.VASE)GOTO 9222
4916 / IF(OBJ.NE.0.AND.OBJ.NE.BOTTLE)GOTO 2011
4922 / IF(OBJ.EQ.0.AND..NOT.HERE(BOTTLE))GOTO 8000
4929 #M92, LDX 153,0 /107
4932 / IF(LIQLOC(LOC).EQ.0)SPK=106
4938 / IF(LIQ(0).NE.0)SPK=105
4943 / IF(SPK.NE.107)GOTO 2011
4948 / PROP(BOTTLE)=MOD(COND(LOC),4)/2*2
4971 / IF(TOTING(BOTTLE))PLACE(K)=-1
4979 / IF(K.EQ.OIL)SPK=108
4994 / IF(LIQLOC(LOC).EQ.0)SPK=144
5000 / IF(LIQLOC(LOC).EQ.0.OR..NOT.TOTING(VASE))GOTO 2011
5022 /C BLAST. NO EFFECT UNLESS YOU'VE GOT DYNAMITE, WHICH IS A NEAT TRICK!
5024 /9230 IF(PROP(ROD2).LT.0.OR..NOT.CLOSED)GOTO 2011
5035 / IF(LOC.EQ.115)BONUS=134
5042 / IF(HERE(ROD2))BONUS=135
5049 / CALL RSPEAK(BONUS)
5057 /C SCORE. GO TO SCORING SECTION, WHICH WILL RETURN TO 8241 IF SCORNG IS TRUE.
5066 /8241 SCORNG=.FALSE.
5069 / TYPE 8243,SCORE,MXSCOR
5102 /8243 FORMAT(' If you were to quit now, you would score',I4
5103 / 1 ,' out of a possible',I4,'.')
5104 / GAVEUP=YES(143,54,54)
5115 /C FEE FIE FOE FOO (AND FUM). ADVANCE TO NEXT STATE IF GIVEN IN PROPER ORDER.
5116 /C LOOK UP WD1 IN SECTION 3 OF VOCAB TO DETERMINE WHICH WORD WE'VE GOT. LAST
5117 /C WORD ZIPS THE EGGS BACK TO THE GIANT ROOM (UNLESS ALREADY THERE).
5119 /8250 CALL VOCAB(WD1,WD1A,3,K)
5129 / IF(FOOBAR.EQ.1-K)GOTO 8252
5134 / IF(FOOBAR.NE.0)SPK=151
5147 / IF(K.NE.4)GOTO 2009
5153 / IF(PLACE(EGGS).EQ.PLAC(EGGS)
5154 / 1 .OR.(TOTING(EGGS).AND.LOC.EQ.PLAC(EGGS)))GOTO 2011
5167 /C BRING BACK TROLL IF WE STEAL THE EGGS BACK FROM HIM BEFORE CROSSING.
5169 / IF(PLACE(EGGS).EQ.0.AND.PLACE(TROLL).EQ.0.AND.PROP(TROLL).EQ.0)
5171 #M93, FLDA PLACE-3,7
5190 / IF(LOC.EQ.PLAC(EGGS))K=0
5196 / CALL MOVE(EGGS,PLAC(EGGS))
5208 / CALL PSPEAK(EGGS,K)
5217 /C BRIEF. INTRANSITIVE ONLY. SUPPRESS LONG DESCRIPTIONS AFTER FIRST TIME.
5220 #8260, LDX 234,0 /156
5233 /C READ. MAGAZINES IN DWARVISH, MESSAGE WE'VE SEEN, AND . . . OYSTER?
5235 /8270 IF(HERE(MAGZIN))OBJ=MAGZIN
5241 / IF(HERE(TABLET))OBJ=OBJ*100+TABLET
5249 / IF(HERE(MESSAG))OBJ=OBJ*100+MESSAG
5257 / IF(CLOSED.AND.TOTING(OYSTER))OBJ=OYSTER
5264 / IF(OBJ.GT.100.OR.OBJ.EQ.0.OR.DARK(0))GOTO 8000
5274 /9270 IF(DARK(0))GOTO 5190
5277 / IF(OBJ.EQ.MAGZIN)SPK=190
5284 / IF(OBJ.EQ.TABLET)SPK=196
5291 / IF(OBJ.EQ.MESSAG)SPK=191
5298 / IF(OBJ.EQ.OYSTER.AND.HINTED(2).AND.TOTING(OYSTER))SPK=194
5312 / IF(OBJ.NE.OYSTER.OR.HINTED(2).OR..NOT.TOTING(OYSTER)
5313 / 1 .OR..NOT.CLOSED)GOTO 2011
5324 / HINTED(2)=YES(192,193,54)
5337 /C BREAK. ONLY WORKS FOR MIRROR IN REPOSITORY AND, OF COURSE, THE VASE.
5339 /9280 IF(OBJ.EQ.MIRROR)SPK=148
5346 / IF(OBJ.EQ.VASE.AND.PROP(VASE).EQ.0)GOTO 9282
5354 / IF(OBJ.NE.MIRROR.OR..NOT.CLOSED)GOTO 2011
5368 #9282, LDX 306,0 /198
5371 / IF(TOTING(VASE))CALL DROP(VASE,LOC)
5391 /C WAKE. ONLY USE IS TO DISTURB THE DWARVES.
5393 /9290 IF(OBJ.NE.DWARF.OR..NOT.CLOSED)GOTO 2011
5406 /C SUSPEND. SAVE THE WORLD.
5408 /8300 CALL SAVEGM(.TRUE.,I)
5416 /C HOURS. JUST A JOKE.
5418 /8310 CALL RSPEAK(201)
5425 /C RESUME. RESTORE THE WORLD.
5427 /8320 CALL RSTRGM(.TRUE.,I)
5438 /C COME HERE IF HE'S BEEN LONG ENOUGH AT REQUIRED LOC(S) FOR SOME UNUSED HINT.
5439 /C HINT NUMBER IS IN VARIABLE "HINT". BRANCH TO QUICK TEST FOR ADDITIONAL
5440 /C CONDITIONS, THEN COME BACK TO DO NEAT STUFF. GOTO 40010 IF CONDITIONS ARE
5441 /C MET AND WE WANT TO OFFER THE HINT. GOTO 40020 TO CLEAR HINTLC BACK TO ZERO,
5442 /C 40030 TO TAKE NO ACTION YET.
5444 /40000 GOTO (40400,40500,40600,40700,40800,40900)(HINT-3)
5445 /C CAVE BIRD SNAKE MAZE DARK WITT
5464 /40010 HINTLC(HINT)=0
5469 / IF(.NOT.YES(HINTS(HINT,3),0,54))GOTO 2602
5486 / TYPE 40012,HINTS(HINT,2)
5509 /40012 FORMAT(' I am prepared to give you a hint, but it will cost you',
5512 / HINTED(HINT)=YES(175,HINTS(HINT,4),54)
5532 / IF(HINTED(HINT).AND.LIMIT.GT.30)LIMIT=LIMIT+30*HINTS(HINT,2)
5545 /40020 HINTLC(HINT)=0
5554 /C NOW FOR THE QUICK TESTS. SEE DATABASE DESCRIPTION FOR ONE-LINE NOTES.
5556 /40400 IF(PROP(GRATE).EQ.0.AND..NOT.HERE(KEYS))GOTO 40010
5567 /40500 IF(HERE(BIRD).AND.TOTING(ROD).AND.OBJ.EQ.BIRD)GOTO 40010
5582 /40600 IF(HERE(SNAKE).AND..NOT.HERE(BIRD))GOTO 40010
5593 /40700 IF(ATLOC(LOC).EQ.0.AND.ATLOC(OLDLOC).EQ.0
5594 / 1 .AND.ATLOC(OLDLC2).EQ.0.AND.HOLDNG.GT.1)GOTO 40010
5614 /40800 IF(PROP(EMRALD).NE.-1.AND.PROP(PYRAM).EQ.-1)GOTO 40010
5632 /C CAVE CLOSING AND SCORING
5635 /C THESE SECTIONS HANDLE THE CLOSING OF THE CAVE. THE CAVE CLOSES "CLOCK1"
5636 /C TURNS AFTER THE LAST TREASURE HAS BEEN LOCATED (INCLUDING THE PIRATE'S
5637 /C CHEST, WHICH MAY OF COURSE NEVER SHOW UP). NOTE THAT THE TREASURES NEED NOT
5638 /C HAVE BEEN TAKEN YET, JUST LOCATED. HENCE CLOCK1 MUST BE LARGE ENOUGH TO GET
5639 /C OUT OF THE CAVE (IT ONLY TICKS WHILE INSIDE THE CAVE). WHEN IT HITS ZERO,
5640 /C WE BRANCH TO 10000 TO START CLOSING THE CAVE, AND THEN SIT BACK AND WAIT FOR
5641 /C HIM TO TRY TO GET OUT. IF HE DOESN'T WITHIN CLOCK2 TURNS, WE CLOSE THE
5642 /C CAVE; IF HE DOES TRY, WE ASSUME HE PANICS, AND GIVE HIM A FEW ADDITIONAL
5643 /C TURNS TO GET FRANTIC BEFORE WE CLOSE. WHEN CLOCK2 HITS ZERO, WE BRANCH TO
5644 /C 11000 TO TRANSPORT HIM INTO THE FINAL PUZZLE. NOTE THAT THE PUZZLE DEPENDS
5645 /C UPON ALL SORTS OF RANDOM THINGS. FOR INSTANCE, THERE MUST BE NO WATER OR
5646 /C OIL, SINCE THERE ARE BEANSTALKS WHICH WE DON'T WANT TO BE ABLE TO WATER,
5647 /C SINCE THE CODE CAN'T HANDLE IT. ALSO, WE CAN HAVE NO KEYS, SINCE THERE IS A
5648 /C GRATE (HAVING MOVED THE FIXED OBJECT!) THERE SEPARATING HIM FROM ALL THE
5649 /C TREASURES. MOST OF THESE PROBLEMS ARISE FROM THE USE OF NEGATIVE PROP
5650 /C NUMBERS TO SUPPRESS THE OBJECT DESCRIPTIONS UNTIL HE'S ACTUALLY MOVED THE
5653 /C WHEN THE FIRST WARNING COMES, WE LOCK THE GRATE, DESTROY THE BRIDGE, KILL
5654 /C ALL THE DWARVES (AND THE PIRATE), REMOVE THE TROLL AND BEAR (UNLESS DEAD),
5655 /C AND SET "CLOSNG" TO TRUE. LEAVE THE DRAGON; TOO MUCH TROUBLE TO MOVE IT.
5656 /C FROM NOW UNTIL CLOCK2 RUNS OUT, HE CANNOT UNLOCK THE GRATE, MOVE TO ANY
5657 /C LOCATION OUTSIDE THE CAVE (LOC<9), OR CREATE THE BRIDGE. NOR CAN HE BE
5658 /C RESURRECTED IF HE DIES. NOTE THAT THE SNAKE IS ALREADY GONE, SINCE HE GOT
5659 /C TO THE TREASURE ACCESSIBLE ONLY VIA THE HALL OF THE MT. KING. ALSO, HE'S
5660 /C BEEN IN GIANT ROOM (TO GET EGGS), SO WE CAN REFER TO IT. ALSO ALSO, HE'S
5661 /C GOTTEN THE PEARL, SO WE KNOW THE BIVALVE IS AN OYSTER. *AND*, THE DWARVES
5662 /C MUST HAVE BEEN ACTIVATED, SINCE WE'VE FOUND CHEST.
5664 /10000 PROP(GRATE)=0
5693 / CALL MOVE(TROLL,0)
5698 / CALL MOVE(TROLL+100,0)
5706 / CALL MOVE(TROLL2,PLAC(TROLL))
5720 / CALL MOVE(TROLL2+100,FIXD(TROLL))
5737 / CALL JUGGLE(CHASM)
5741 / IF(PROP(BEAR).NE.3)CALL DSTROY(BEAR)
5777 /C ONCE HE'S PANICKED, AND CLOCK2 HAS RUN OUT, WE COME HERE TO SET UP THE
5778 /C STORAGE ROOM. THE ROOM HAS TWO LOCS, HARDWIRED AS 115 (NE) AND 116 (SW).
5779 /C AT THE NE END, WE PLACE EMPTY BOTTLES, A NURSERY OF PLANTS, A BED OF
5780 /C OYSTERS, A PILE OF LAMPS, RODS WITH STARS, SLEEPING DWARVES, AND HIM. AND
5781 /C THE SW END WE PLACE GRATE OVER TREASURES, SNAKE PIT, COVEY OF CAGED BIRDS,
5782 /C MORE RODS, AND PILLOWS. A MIRROR STRETCHES ACROSS ONE WALL. MANY OF THE
5783 /C OBJECTS COME FROM KNOWN LOCATIONS AND/OR STATES (E.G. THE SNAKE IS KNOWN TO
5784 /C HAVE BEEN DESTROYED AND NEEDN'T BE CARRIED AWAY FROM ITS OLD "PLACE"),
5785 /C MAKING THE VARIOUS OBJECTS BE HANDLED DIFFERENTLY. WE ALSO DROP ALL OTHER
5786 /C OBJECTS HE MIGHT BE CARRYING (LEST HE HAVE SOME WHICH COULD CAUSE TROUBLE,
5787 /C SUCH AS THE KEYS). WE DESCRIBE THE FLASH OF LIGHT AND TRUNDLE BACK.
5789 /11000 PROP(BOTTLE)=PUT(BOTTLE,115,1)
5798 / PROP(PLANT)=PUT(PLANT,115,0)
5807 / PROP(OYSTER)=PUT(OYSTER,115,0)
5816 / PROP(LAMP)=PUT(LAMP,115,0)
5825 / PROP(ROD)=PUT(ROD,115,0)
5834 / PROP(DWARF)=PUT(DWARF,115,0)
5851 /C LEAVE THE GRATE WITH NORMAL (NON-NEGATIVE PROPERTY).
5853 / I=PUT(GRATE,116,0)
5860 / PROP(SNAKE)=PUT(SNAKE,116,1)
5869 / PROP(BIRD)=PUT(BIRD,116,1)
5878 / PROP(CAGE)=PUT(CAGE,116,0)
5887 / PROP(ROD2)=PUT(ROD2,116,0)
5896 / PROP(PILLOW)=PUT(PILLOW,116,0)
5906 / PROP(MIRROR)=PUT(MIRROR,115,0)
5923 /11010 IF(TOTING(I))CALL DSTROY(I)
5947 /C ANOTHER WAY WE CAN FORCE AN END TO THINGS IS BY HAVING THE LAMP GIVE OUT.
5948 /C WHEN IT GETS CLOSE, WE COME HERE TO WARN HIM. WE GO TO 12000 IF THE LAMP
5949 /C AND FRESH BATTERIES ARE HERE, IN WHICH CASE WE REPLACE THE BATTERIES AND
5950 /C CONTINUE. 12200 IS FOR OTHER CASES OF LAMP DYING.12400 IS WHEN IT GOES
5951 /C OUT, AND 12600 IS IF HE'S WANDERED OUTSIDE AND THE LAMP IS USED UP, IN WHICH
5952 /C CASE WE FORCE HIM TO GIVE UP.
5954 /12000 CALL RSPEAK(188)
5963 / IF(TOTING(BATTER))CALL DROP(BATTER,LOC)
5981 /12200 IF(LMWARN.OR..NOT.HERE(LAMP))GOTO 19999
5994 / IF(PLACE(BATTER).EQ.0)SPK=183
6002 / IF(PROP(BATTER).EQ.1)SPK=189
6024 / IF(HERE(LAMP))CALL RSPEAK(184)
6034 /12600 CALL RSPEAK(185)
6046 /C OH DEAR, HE'S DISTURBED THE DWARVES.
6048 /19000 CALL RSPEAK(136)
6054 /C EXIT CODE. WILL EVENTUALLY INCLUDE SCORING. FOR NOW, HOWEVER, ...
6056 /C THE PRESENT SCORING ALGORITHM IS AS FOLLOWS:
6057 /C OBJECTIVE: POINTS: PRESENT TOTAL POSSIBLE:
6058 /C GETTING WELL INTO CAVE 25 25
6059 /C EACH TREASURE < CHEST 12 60
6060 /C TREASURE CHEST ITSELF 14 14
6061 /C EACH TREASURE > CHEST 16 144
6062 /C SURVIVING (MAX-NUM)*10 30
6064 /C REACHING "CLOSNG" 25 25
6065 /C "CLOSED": QUIT/KILLED 10
6069 /C CAME TO WITT'S END 1 1
6070 /C ROUND OUT THE TOTAL 2 2
6078 /C FIRST TALLY UP THE TREASURES. MUST BE IN BUILDING AND NOT BROKEN.
6079 /C GIVE THE POOR GUY 2 POINTS JUST FOR FINDING EACH TREASURE.
6081 / DO 20010 I=50,MAXTRS
6085 / IF(PTEXT(I).EQ.0)GOTO 20010
6093 / IF(I.EQ.CHEST)K=14
6100 / IF(I.GT.CHEST)K=16
6106 / IF(PROP(I).GE.0)SCORE=SCORE+2
6111 / IF(PLACE(I).EQ.3.AND.PROP(I).EQ.0)SCORE=SCORE+K-2
6132 /C NOW LOOK AT HOW HE FINISHED AND HOW FAR HE GOT. MAXDIE AND NUMDIE TELL US
6133 /C HOW WELL HE SURVIVED. GAVEUP SAYS WHETHER HE EXITED VIA QUIT. DFLAG WILL
6134 /C TELL US IF HE EVER GOT SUITABLY DEEP INTO THE CAVE. CLOSNG STILL INDICATES
6135 /C WHETHER HE REACHED THE ENDGAME. AND IF HE GOT AS FAR AS "CAVE CLOSED"
6136 /C (INDICATED BY "CLOSED"), THEN BONUS IS ZERO FOR MUNDANE EXITS OR 133, 134,
6137 /C 135 IF HE BLEW IT (SO TO SPEAK).
6139 / SCORE=SCORE+(MAXDIE-NUMDIE)*10
6144 / MXSCOR=MXSCOR+MAXDIE*10
6148 / IF(.NOT.(SCORNG.OR.GAVEUP))SCORE=SCORE+4
6158 / IF(DFLAG.NE.0)SCORE=SCORE+25
6166 / IF(CLOSNG)SCORE=SCORE+25
6174 / IF(.NOT.CLOSED)GOTO 20020
6177 / IF(BONUS.EQ.0)SCORE=SCORE+10
6182 / IF(BONUS.EQ.135)SCORE=SCORE+25
6189 / IF(BONUS.EQ.134)SCORE=SCORE+30
6196 / IF(BONUS.EQ.133)SCORE=SCORE+45
6203 /20020 MXSCOR=MXSCOR+45
6204 #20020, FLDA #LIT+102
6207 /C DID HE COME TO WITT'S END AS HE SHOULD?
6209 / IF(PLACE(MAGZIN).EQ.108)SCORE=SCORE+1
6230 /C DEDUCT POINTS FOR HINTS. HINTS < 4 ARE SPECIAL; SEE DATABASE DESCRIPTION.
6232 / DO 20030 I=1,HNTMAX
6236 /20030 IF(HINTED(I))SCORE=SCORE-HINTS(I,2)
6255 /C RETURN TO SCORE COMMAND IF THAT'S WHERE WE CAME FROM.
6257 / IF(SCORNG)GOTO 8241
6261 /C THAT SHOULD BE GOOD ENOUGH. LET'S TELL HIM ALL ABOUT IT.
6263 / TYPE 20100,SCORE,MXSCOR,TURNS
6310 /20100 FORMAT(/' You scored',I4,' out of a possible',I4,
6311 / 1 ', using',I5,' turns.')
6313 / DO 20200 I=1,CLSSES
6317 / IF(CVAL(I).GE.SCORE)GOTO 20210
6337 /20202 FORMAT(' You just went off my scale!!'/)
6341 /20210 CALL SPEAK(CTEXT(I))
6344 FLDA CTEXT-3,7 /GET CLASS MESSAGE
6349 / IF(I.EQ.CLSSES-1)GOTO 20220
6381 /20212 FORMAT(' To achieve the next higher rating, you need',I3,
6382 / 1 ' more point',$)
6383 / IF(K.EQ.1) TYPE 20213
6393 / IF(K.NE.1) TYPE 20214
6399 /20213 FORMAT('+.'/)
6401 /20214 FORMAT('+s.'/)
6417 /20222 FORMAT(' To achieve the next higher rating ',
6418 / 1 'would be a neat trick!'/' Congratulations!!'/)
6424 #67A, TEXT %T]HERE ARE @%
6425 #67, TEXT %('+',I1,$)%
6426 #67B, TEXT % T]HREATENING LITTLE DWARVES IN THE ROOM WITH YOU.@%
6428 #78, TEXT %(1X,I1,$)%
6429 #78B, TEXT % ]OF THEM THROW KNIVES AT YOU!@%
6430 #68B, TEXT % ]OF THEM GET YOU!@%
6431 #5015, TEXT %W]HAT DO YOU WANT TO DO WITH THE @%
6432 #5199, TEXT %I] DON'T SEE ANY "@%
6433 #8002, TEXT %I ]DON'T UNDERSTAND "@%
6434 #9032, TEXT %O]KAY, "@%
6435 #8243, TEXT %I]F YOU WERE TO QUIT NOW, YOU WOULD SCORE @%
6437 #8243A, TEXT %('+',I4,$)%
6438 #8243B, TEXT % ]OUT OF A POSSIBLE @%
6441 #40012, TEXT %I] AM PREPARED TO GIVE YOU A HINT, BUT IT WILL COST YOU @%
6442 #4001A, TEXT %('+',I2,$)%
6443 #4001B, TEXT % ]POINTS.@%
6444 #20100, TEXT %Y]OU SCORED @%
6445 #2010B, TEXT % ]OUT OF A POSSIBLE @%
6446 #2010C, TEXT % ]USING @%
6447 #2010D, TEXT %('+',I5,$)%
6448 #2010E, TEXT % ]TURNS.@%
6449 #20202, TEXT %Y]OU JUST WENT OFF MY SCALE!!@%
6450 #20212, TEXT %T]O ACHIEVE THE NEXT HIGHER RATING, YOU NEED @%
6451 #2021A, TEXT %('+',I3,$)%
6452 #2021B, TEXT % ]MORE POINT@%
6454 #20222, TEXT %T]O ACHIEVE THE NEXT HIGHER RATING WOULD BE A NEAT TRICK!@%
6455 #20223, TEXT %C]ONGRATULATIONS!!@%