Source:The Beginners Cave (ProDOS)
		
		
		
		Jump to navigation
		Jump to search
		
| This page is a verbatim reproduction of original source material and should not be edited except for maintenance. | |
| Description | 
 The source code of the ProDOS version of the Eamon adventure The Beginners Cave, written in Applesoft BASIC.  | 
|---|---|
| Source | 
 Disk image provided by Eamon Adventurer's Guild Online  | 
| Date | 
 Original adventure written circa late 1979; ProDOS version last updated 6 June 1991  | 
| Author | |
| License | 
 The use of this item is permitted on the grounds that it's free or in the public domain.  | 
| Other versions |   Source:The Beginners Cave (DOS 3.3)  | 
| Next item | |
2  REM  TEXT ADDED 5/11/91
10  HOME : PRINT "     TIPS FOR NEW EAMON PLAYERS:"
20  PRINT : PRINT "THIS ADVENTURE, 'BEGINNERS.CAVE' IS AN": INVERSE : PRINT "EXTREMELY";: NORMAL : PRINT " SIMPLE ADVENTURE THAT IS ONLY MEANT TO GIVE YOU AN EASY INTRODUCTION  TO EAMON ADVENTURING."
30  PRINT : PRINT "THIS ADVENTURE IS IN 40-COL. UPPER-CASE TEXT.  HOWEVER, EAMON ADVENTURES ARE    AVAILABLE IN 3 FLAVORS:"
40  PRINT : PRINT "  DOS 3.3 40-COL. UPPER-CASE TEXT": PRINT : PRINT "  PRODOS 40-COL. UPPER-CASE TEXT": PRINT : PRINT "  PRODOS 80-COL. MIXED-CASE TEXT": PRINT "    (LOWER-CASE WITH CAPITALIZATION)"
50  GOSUB 500
60  PRINT "YOU WILL FIND THAT YOUR NEW CHARACTER ISPRETTY WEAK WHEN YOU VENTURE OUT INTO   REAL EAMON ADVENTURING. I SUGGEST THAT  YOU PUMP HIM UP TO APPROXIMATELY THESE  LEVELS:"
70  PRINT : PRINT "HARDINESS = 22": PRINT "AGILITY = 22": PRINT "CHARISMA = 22": PRINT "SPELL ABILITIES = 100 (HEAL = 200)": PRINT "WEAPON ABILITIES = 60": PRINT "ARMOR EXPERTISE = 25"
80  PRINT : PRINT "AND GIVE YOURSELF AT LEAST ONE WEAPON OF   2D10 OR BETTER."
90  PRINT : PRINT "THERE IS ALREADY A CHARACTER AT THESE   LEVELS IN THE CHARACTERS FILE.": PRINT "   HIS NAME IS SAM."
100  GOSUB 500
110  PRINT "VARIOUS EAMONS COME WITH A WIDE VARIETY OF FEATURES AND CAPABILITIES, DEPENDING ON HOW OLD IT IS AND HOW TALENTED THE   AUTHOR IS."
120  PRINT : PRINT "EAMON ADVENTURES HAVE THE CAPABILITY OF 'CONCEALING' DOORS AND ARTIFACTS SO THATTHEY WON'T SHOW UP UNTIL YOU 'LOOK'     AROUND THE ROOM."
130  PRINT : PRINT "MORE ADVANCED EAMONS CAN ALSO CONCEAL   ARTIFACTS AND DOORS IN A SECOND MANNER  THAT WON'T SHOW UP WHEN YOU 'LOOK'.     (THESE ARE CALLED 'EMBEDDED ARTIFACTS')"
140  GOSUB 500: PRINT "HOWEVER, THIS SECOND TYPE WILL ALWAYS BEMENTIONED IN THE ROOM DESCRIPTION.  FOR EXAMPLE, A ROOM DESC. MAY MENTION THAT ATORCH IS SET IN A SCONCE ON THE WALL."
150  PRINT "THAT TORCH MAY OR MAY NOT BE AN ACTUAL  ARTIFACT. YOU CAN FIND OUT BY ATTEMPTINGTO EXAMINE IT BY NAME (EG: 'EXAMINE     TORCH')"
180  PRINT : PRINT "MANY ADVANCED EAMONS PERMIT TRUNCATION  OF VERB AND NOUN NAMES WHEN TYPING      COMMANDS (EG: 'AT MON' WILL WORK FOR    'ATTACK MONSTER').  HOWEVER, NEARLY ALL EAMONS REQUIRE THAT YOU TYPE THE"
190  PRINT "COMPLETE NAME WHEN EXAMINING POSSIBLE   EMBEDDED ARTIFACTS (EG: 'EXAMINE TOR'   WON'T WORK--YOU MUST TYPE OUT 'EXAMINE  TORCH')"
200  GOSUB 500: PRINT "THERE IS AN UNDOCUMENTED WAY TO RESTART A SAVED GAME IF YOU ARE KILLED."
210  PRINT : PRINT "WHEN YOU ARE INSTRUCTED TO:             (INSERT THE EAMON MASTER AND TYPE 'C'), LEAVE THE ADVENTURE DISK IN THE DRIVE   AND TYPE <CONTROL-C> INSTEAD, THEN TYPE"
215  PRINT "'RUN'. YOU WILL BE ASKED IF YOU WANT TO RESUME THE SAVED GAME."
220  PRINT : PRINT "NOTE THAT THIS WORKS ->ONLY<- IF YOU    HAVE SAVED THE GAME PREVIOUSLY."
230  PRINT : PRINT "IF YOU DO NOT RESUME A SAVED GAME, IT ISDELETED AND A NEW GAME IS INITIALIZED."
300  GOSUB 500: PRINT : PRINT "FEEL FREE TO DROP US A LINE WITH          QUESTIONS OR COMMENTS:"
310  PRINT : PRINT : PRINT "   TOM ZUCHOWSKI": PRINT "   EAMON ADVENTURER'S GUILD": PRINT "   7625 HAWKHAVEN DR.": PRINT "   CLEMMONS, NC 27012"
320  GOSUB 500
400  PRINT  CHR$ (4)"RUN MAIN.PGM"
499  END
500  VTAB 22: PRINT "     HIT ANY KEY TO CONTINUE: ";: POKE  - 16368,0: GET A$: PRINT A$: HOME : RETURN
1  REM    EAMON ADVENTURE #1
2  REM -> THE BEGINNERS CAVE <-
3  REM 
4  REM     BY DONALD BROWN
5  REM 
7  REM 
EAMON ADVENTURER'S GUILD
7625 HAWKHAVEN DR.
CLEMMONS, NC 27012
(919)766-7490
8  REM PRODOS CONVERSION 1/12/90 TJZ
9  REM LAST UPDATE 9/19/90
40  HOME : VTAB 10: PRINT "PLEASE WAIT A SHORT WHILE": PRINT : PRINT "    (WAKING UP THE MONSTERS)"
50 DK$ =  CHR$ (4): GOTO 22000
100  REM ///GIVE ROOM DESC IF NEVER
105  REM ///HERE, THEN GET COMMAND
110  PRINT 
115  IF SPD THEN SPD = SPD - 1: IF  NOT SPD THEN MD%(0,2) = MD%(0,2) / 2:MD%(0,10) = MD%(0,10) - 2 * MD%(0,2)
120  IF V%(ROOM) THEN  PRINT DK$;"READ EAMON.ROOM.NAME,R";ROOM: INPUT A$: PRINT DK$: PRINT "YOU ARE STANDING IN": PRINT "  ";A$: PRINT 
125  IF  NOT V%(ROOM) THEN  PRINT DK$;"READ EAMON.DESC,R";ROOM: INPUT A$: PRINT DK$: PRINT A$: PRINT 
130  FOR M = 1 TO NM: IF MD%(M,5) = ROOM AND MD%(M,15) THEN  PRINT MN$(M);" IS HERE."
135  IF MD%(M,5) = ROOM AND  NOT MD%(M,15) THEN  PRINT DK$;"READ EAMON.DESC,R";M + 300: INPUT A$: PRINT DK$: PRINT A$:MD%(M,15) = 1: IF M = 10 THEN  PRINT DK$;"READ EAMON.DESC,R202": INPUT A$: PRINT DK$: PRINT : PRINT A$: PRINT 
140  NEXT M: FOR A = 1 TO NA - 1: IF AD%(A,4) = ROOM AND (A < NA) AND  NOT V%(ROOM) THEN  PRINT DK$;"READ EAMON.DESC,R";A + 100: INPUT A$: PRINT DK$: PRINT A$
145  IF AD%(A,4) = ROOM AND (A < NA) AND V%(ROOM) THEN  PRINT "YOU SEE ";AN$(A)
150  NEXT A: IF AD%(NA,4) = ROOM THEN  PRINT "YOUR ";AN$(A);" IS HERE."
155 V%(ROOM) = 1
160  PRINT : INPUT "  YOUR COMMAND?";A$
165  IF  LEFT$ (A$,1) = " " THEN A$ =  MID$ (A$,2): GOTO 165
170  IF A$ = "" THEN A$ = CZ$: VTAB  PEEK (37): HTAB 17: PRINT A$
175 CZ$ = A$: FOR A = 2 TO  LEN (A$): IF  MID$ (A$,A,1) <  > " " THEN  NEXT 
180 V$ =  LEFT$ (A$,A - 1):S$ =  MID$ (A$,A + 1)
185  IF  LEFT$ (S$,1) = " " THEN S$ =  MID$ (S$,2): GOTO 185
190  FOR C = 1 TO NC: IF C$(C) <  > V$ AND C$(C) <  > S$ THEN  NEXT : PRINT : PRINT "HUH? I ONLY UNDERSTAND THESE COMMANDS--     ";: FOR C = 1 TO NC: PRINT C$(C); SPC( 20 -  LEN (C$(C)));: NEXT : PRINT : PRINT : GOTO 160
195  IF C$(C) = S$ THEN S$ = V$:V$ = C$(C)
200  ON C GOTO 1000,1000,2000,3000,4000,4000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,6000,7000,8000,10000,11000,12000,13000,14000,15000,16000,17000,17000,17000,18000,18000,19000,20000,21000
300  REM ///COMMANDS RETURN TO HERE
310  IF  NOT NBTL THEN 440
320  FOR M = 1 TO NM: IF MD%(M,5) <  > ROOM THEN 430
330 MR = FD%(MD%(M,14)) / TD%(MD%(M,14)) - FD%( NOT MD%(M,14)) / TD%( NOT MD%(M,14)) / 5 +  INT (41 *  RND (1) - 20)
340  IF MD%(M,4) < MR THEN  PRINT : PRINT MN$(M);" FLEES OUT AN EXIT.": PRINT : GOSUB 17500:MD%(M,5) = R2:TD%(MD%(M,14)) = TD%(MD%(M,14)) - MD%(M,1):FD%(MD%(M,14)) = FD%(MD%(M,14)) - MD%(M,13): GOTO 430
350  IF MD%(M,14) THEN 390
360 OF = M: IF TD%(1) = MD%(0,1) THEN DF = 0: GOSUB 3500: GOTO 430
370  FOR M2 = 1 TO NM: IF MD%(M2,5) = ROOM AND MD%(M2,14) AND  RND (1) < .25 THEN DF = M2: GOSUB 3500:M2 = 200: NEXT M2: GOTO 430
380  NEXT M2:DF = 0: GOSUB 3500: GOTO 430
390 OF = M
400  FOR M2 = 1 TO NM: IF MD%(M2,5) = ROOM AND  NOT MD%(M2,14) THEN DF = M2: GOSUB 3500:M2 = 200: NEXT M2: GOTO 430
410  NEXT M2: GOTO 400
420  REM 
430 NBTL = (FD%(0) < TD%(0)): IF NBTL THEN  NEXT M
440  REM 
450  GOTO 100
1000  REM ///GET COMMAND
1010  GOSUB 1950
1020  IF S$ = "TORCH" THEN  PRINT : PRINT "ALL TORCHES ARE BOLTED TO THE WALL AND": PRINT "CANNOT BE REMOVED.": PRINT : GOTO 300
1030  IF S$ = "ALL" THEN 1120
1040  IF S$ <  > "RAT" THEN 1070
1050  FOR A = 14 TO 16: IF AD%(A,4) = ROOM THEN S$ = AN$(A)
1060  NEXT 
1070  IF S$ = "GOLD" OR S$ = "COINS" THEN S$ = AN$(5)
1080  FOR A = 1 TO NA: IF AN$(A) <  > S$ OR AD%(A,4) <  > ROOM THEN  NEXT : PRINT : PRINT "I SEE NO ";S$;" HERE!": PRINT : GOTO 100
1090  IF WT + AD%(A,3) > 10 * MD%(0,1) THEN  PRINT : PRINT "IT IS TOO HEAVY FOR YOU.": PRINT : GOTO 100
1100  PRINT : PRINT "GOT IT.":AD%(A,4) =  - 1:WT = WT + AD%(A,3): PRINT : IF AD%(A,2) < 2 OR MD%(0,9) <  >  - 1 THEN 300
1110  GOTO 16000
1120  FOR A = 1 TO NA: IF AD%(A,4) <  > ROOM THEN 1150
1130  IF WT + AD%(A,3) > 10 * MD%(0,1) THEN  PRINT AN$(A);" IS TOO HEAVY": GOTO 1150
1140  PRINT AN$(A);" TAKEN.":AD%(A,4) =  - 1:WT = WT + AD%(A,3)
1150  NEXT : PRINT : GOTO 300
1950  IF S$ = "" THEN  PRINT : PRINT C$(C);" WHAT";: INPUT S$: GOTO 1950
1960  RETURN 
2000  REM ///DROP COMMAND
2010  GOSUB 1950
2020  IF NBTL THEN  PRINT : PRINT "YOU CAN'T DO THAT WITH UNFRIENDLIES        ABOUT!": PRINT : GOTO 100
2030  IF S$ = "ALL" THEN 2060
2040  FOR A = 1 TO NA: IF AN$(A) <  > S$ OR AD%(A,4) <  >  - 1 THEN  NEXT : PRINT : PRINT "YOU AREN'T CARRYING A ";S$: PRINT : GOTO 100
2050 WT = WT - AD%(A,3): PRINT : PRINT "DROPPED.":AD%(A,4) = ROOM: PRINT : GOTO 300
2060  FOR A = 1 TO NA: IF AD%(A,4) <  >  - 1 THEN 2080
2070 WT = WT - AD%(A,3):AD%(A,4) = ROOM: PRINT AN$(A);" DROPPED."
2080  NEXT A: GOTO 300
3000  REM ///ATTACK COMMAND
3010  GOSUB 1950
3020  IF S$ <  > "RAT" THEN 3050
3030  FOR M = 1 TO 3: IF MD%(M,5) = ROOM THEN S$ = MN$(M)
3040  NEXT M
3050  FOR M = 1 TO NM: IF S$ <  > MN$(M) OR MD%(M,5) <  > ROOM THEN  NEXT : PRINT : PRINT "ATTACK WHO?": PRINT : GOTO 100
3060  IF MD%(0,9) =  - 1 THEN  PRINT : PRINT "YOU HAVE NO WEAPON READY!": PRINT : GOTO 100
3070 OF = 0:DF = M: GOSUB 3500: IF  NOT HIT THEN 3130
3080  IF INC THEN W2 = AD%(MD%(0,9),6):WA%(W2) = WA%(W2) + 2
3090  IF  - EA <  = AE THEN 300
3100  IF  INT (100 *  RND (1) + 1) <  = MD%(0,10) THEN 3130
3110 A = 2: IF EA + AE = 1 THEN A = 1
3120 AE = AE + A:MD%(0,10) = MD%(0,10) + A
3130  IF  NOT (MD%(DF,14)) OR DF = 0 THEN 300
3140 MD%(DF,3) = MD%(DF,3) / 2: IF NBTL THEN MD%(DF,14) = 0:TD%(0) = TD%(0) + MD%(DF,1):TD%(1) = TD%(1) - MD%(DF,1):FD%(0) = FD%(0) + MD%(DF,13):FD%(1) = FD%(1) - MD%(DF,13): GOTO 300
3150 R2 = ROOM:MD%(DF,14) = 0: GOTO 5100
3500 HIT = 0: IF MD%(OF,9) =  - 1 THEN  RETURN 
3505  PRINT MN$(OF);" ATTACKS ";MN$(DF): PRINT "  --";
3510 RL =  INT (100 *  RND (1) + 1):HIT = 0: IF RL < 5 OR RL < MD%(OF,10) THEN HIT = 1
3515  IF HIT THEN 3600
3520  IF RL < 97 THEN  PRINT "A MISS.": RETURN 
3525  PRINT "A FUMBLE!":FR =  INT (100 *  RND (1) + 1): IF FR <  = 35 + 40 * ( NOT MD%(OF,9)) THEN  PRINT "  FUMBLE RECOVERED.": PRINT : RETURN 
3530  IF FR < 76 THEN  PRINT "   WEAPON DROPPED!":AD%(MD%(OF,9),4) = ROOM:MD%(OF,9) =  - 1: PRINT : RETURN 
3535  IF FR > 95 THEN 3550
3540  PRINT "  WEAPON BROKEN!":AD%(MD%(OF,9),4) = 0:MD%(OF,9) =  - 1: IF  RND (1) > .9 THEN  PRINT : RETURN 
3545  PRINT "  BROKEN WEAPON HURTS USER!"
3550  IF FR = 100 THEN 3560
3555 D = MD%(OF,11):S = MD%(OF,12):DF = OF:A = 1: GOTO 3650
3560 D = MD%(OF,11) * 2:S = MD%(OF,12):DF = OF:A = 0: GOTO 3650
3600 INC = ( INT (100 *  RND (1) + 1) > MD%(OF,10)):MD%(OF,10) = MD%(OF,10) + 2 * INC
3605 D = MD%(OF,11):S = MD%(OF,12):A = 1: IF RL > 5 THEN  PRINT "A HIT!": GOTO 3650
3610  PRINT "A CRITICAL HIT!":R2 =  INT (100 *  RND (1) + 1): IF R2 < 51 THEN A = 0: GOTO 3650
3615  IF R2 < 86 THEN S = 1.5 * S: GOTO 3650
3620  IF R2 < 96 THEN D = 2 * D: GOTO 3650
3625  IF R2 < 100 THEN D = 3 * D: GOTO 3650
3630  GOTO 3700
3650 D2 = 0: FOR D3 = 1 TO D:D2 = D2 +  INT (S *  RND (1) + 1): NEXT :D2 = D2 - A * MD%(DF,8): IF D2 < 1 THEN  PRINT "   BLOW BOUNCES OFF ARMOUR": PRINT : RETURN 
3655 MD%(DF,13) = MD%(DF,13) + D2: IF MD%(DF,13) >  = MD%(DF,1) THEN 3700
3660 A = MD%(DF,14):FD%(A) = FD%(A) + D2
3665  ON  INT (MD%(DF,13) * 5 / MD%(DF,1) + 1) GOTO 3670,3675,3680,3685,3690
3670  PRINT : PRINT MN$(DF);" TAKES DAMAGE BUT": PRINT "   IS STILL IN GOOD SHAPE.": RETURN 
3675  PRINT : PRINT MN$(DF);" IS HURTING.": RETURN 
3680  PRINT : PRINT MN$(DF);" IS IN PAIN.": RETURN 
3685  PRINT : PRINT MN$(DF);" IS VERY BADLY INJURED.": RETURN 
3690  PRINT : PRINT MN$(DF);" IS AT DEATH'S DOOR,": PRINT "   KNOCKING LOUDLY.": RETURN 
3700  PRINT MN$(DF);" IS DEAD!": PRINT :A = MD%(DF,14):FD%(A) = FD%(A) + MD%(DF,1) - MD%(DF,13) + D2:MD%(DF,5) = 0:A2 = NA - 1 - NM + DF:AD%(A2,4) = ROOM: IF MD%(DF,9) > 0 THEN AD%(MD%(DF,9),4) = ROOM
3710  IF FD%(0) >  = TD%(0) THEN NBTL = 0
3720  IF DF = 0 THEN DIE = 1: GOTO 23010
3730  IF MN$(DF) = "PIRATE" THEN  PRINT DK$;"READ EAMON.DESC,R203": INPUT A$: PRINT DK$: PRINT : PRINT A$: PRINT :AD%(10,8) = 6:V%(ROOM) = 0: RETURN 
3740  IF MN$(DF) = "MIMIC" THEN  PRINT : PRINT "AS THE MIMIC DIES, IT ROLLS OVER AND": PRINT "YOU FIND A RING UNDERNEATH IT.":AD%(6,4) = ROOM
3750  PRINT : RETURN 
4000  REM ///LOOK COMMAND
4010  IF NBTL THEN 2020
4020  IF S$ = "LABEL" OR S$ = "BOTTLE" THEN 15000
4030 LK = 0
4040  FOR A = 1 TO NA - 1: IF AN$(A) = S$ AND (AD%(A,4) = ROOM OR AD%(A,4) =  - 1) THEN  PRINT DK$;"READ EAMON.DESC,R";A + 100: INPUT A$: PRINT DK$: PRINT : PRINT A$: PRINT :LK = 1
4050  NEXT A: IF LK THEN 300
4060  PRINT DK$;"READ EAMON.DESC,R";ROOM: INPUT A$: PRINT DK$: PRINT : PRINT A$: PRINT : IF ROOM <  > 15 THEN 300
4070  PRINT "YOU FOUND A HIDDEN TUNNEL GOING OFF TO": PRINT "THE EAST!": PRINT : GOTO 300
5000  REM ///MOVE COMMAND
5010  IF NBTL THEN 2020
5020  FOR D = 1 TO 6: IF  LEFT$ (V$,1) <  >  MID$ ("NSEWUD",D,1) THEN  NEXT 
5030  PRINT DK$;"READ EAMON.ROOMS,R";ROOM: FOR D2 = 1 TO D: INPUT R2: NEXT : PRINT DK$
5040  IF R2 THEN 5100
5050  IF ROOM = 1 AND D = 1 THEN  PRINT : PRINT "YOU SUCCESSFULLY RIDE OFF INTO THE": PRINT "SUNSET.": GOTO 23010
5060  PRINT : PRINT " YOU CAN'T GO THAT WAY!":V%(ROOM) = 0: GOTO 100
5100 R3 = ROOM:ROOM = R2:TD%(0) = 0:TD%(1) = MD%(0,1):FD%(0) = 0:FD%(1) = MD%(0,13)
5110  FOR M = 1 TO NM: IF MD%(M,5) = R3 THEN  IF MD%(M,14) OR 200 *  RND (1) < MD%(M,4) THEN MD%(M,5) = ROOM: GOTO 5150
5120  IF MD%(M,5) <  > ROOM THEN 5160
5130 FR = MD%(M,3): IF FR AND FR <  > 100 THEN FR = FR +  INT ((CH - 10) / 2)
5140 MD%(M,14) = (FR > 100 *  RND (1)): IF  NOT MD%(M,14) THEN NBTL = 1
5150 A = MD%(M,14):FD%(A) = FD%(A) + MD%(M,13):TD%(A) = TD%(A) + MD%(M,1)
5160  NEXT M:NBTL = (TD%(0) > 0)
5170  GOTO 100
6000  REM ///POWER SPELL
6010 S = 4: GOSUB 7500: IF  NOT SUC THEN 300
6020 RAISE = 0: FOR M = 1 TO NM:M2 = 13 + M: IF AD%(M2,4) = ROOM OR AD%(M2,4) =  - 1 THEN RAISE = 1: PRINT MN$(M);" COMES ALIVE!":AD%(M2,4) = 0:MD%(M,5) = ROOM:MD%(M,13) = 0: IF MD%(M,9) > 0 THEN AD%(MD%(M,9),4) = 0: IF MD%(M,9) = MD%(0,9) THEN MD%(0,9) = 0
6030  NEXT M: IF RAISE THEN NBTL = 0:R2 = ROOM: GOTO 5100
6040  FOR A = 1 TO NA: IF AD%(A,4) = ROOM THEN RAISE = 1: PRINT AN$(A);" VANISHES!":AD%(A,4) = 0
6050  NEXT A: IF RAISE THEN  PRINT : GOTO 300
6060 RR =  INT (100 *  RND (1) + 1): IF RR < 11 THEN  PRINT : PRINT "THE SECTION OF TUNNEL YOU ARE IN ": PRINT "  COLLAPSES AND YOU DIE.":DIE = 1: GOTO 23010
6070  IF RR < 31 THEN  PRINT : PRINT "YOU ARE TELEPORTED SOMEWHERE IN THE": PRINT "  DUNGEON": PRINT :R2 =  INT (26 *  RND (1) + 1):NBTL = 0: GOTO 5100
6080  IF RR < 86 THEN  PRINT : PRINT "YOU HEAR A VERY LOUD SONIC BOOM": PRINT "  THAT ECHOES THROUGH THE TUNNELS.": PRINT : GOTO 300
6090  IF RR > 95 THEN  PRINT : PRINT "ALL OF YOUR HITS ARE HEALED.": PRINT :MD%(0,13) = 0: GOTO 300
6100  GOTO 10020
7000  REM ///HEAL SPELL
7010 S = 2: GOSUB 7500: IF SUC THEN 14050
7020  GOTO 300
7500 SUC = 0: IF SA%(S) THEN RL =  INT (100 *  RND (1) + 1):SUC = (((RL <  = S2%(S)) OR (RL < 5)) AND (RL < 95))
7510  IF  NOT SUC THEN  PRINT : PRINT "NOTHING HAPPENED.": RETURN 
7520 RL =  RND (100 *  RND (1) + 1): IF RL > S2%(S) THEN S2%(S) = S2%(S) + 2:SA%(S) = SA%(S) + 2
7530 S2%(S) = S2%(S) / 2
7540  RETURN 
8000  REM ///BLAST SPELL
8010  GOSUB 1950
8020  FOR M = 1 TO NM: IF S$ <  > MN$(M) OR MD%(M,5) <  > ROOM THEN  NEXT : PRINT : PRINT "YOU CAN'T BLAST ";S$;"!": PRINT : GOTO 300
8030 S = 1: GOSUB 7500: IF  NOT SUC THEN 300
8040  PRINT : PRINT "DIRECT HIT!": PRINT :S = 5:D = 1:DF = M: GOSUB 3650: PRINT : GOTO 300
10000  REM ///SPEED SPELL
10010 S = 3: GOSUB 7500: IF  NOT SUC THEN 300
10020  IF  NOT SPD THEN MD%(0,10) = MD%(0,10) + 2 * MD%(0,2):MD%(0,2) = 2 * MD%(0,2)
10030 SPD =  INT (25 *  RND (1) + 1): PRINT : PRINT "YOU CAN FEEL THE NEW AGILITY FLOWING": PRINT "  THROUGH YOU!": PRINT : GOTO 300
11000  PRINT : IF NBTL THEN  PRINT "AS YOU SMILE, THE ENEMY ATTACKS YOU.": PRINT : GOTO 300
11010  PRINT "NOTHING HAPPENS.": PRINT : GOTO 300
12000  PRINT : IF NBTL THEN  PRINT "AS YOU WAVE AT YOUR ENEMY, HE ATTACKS": PRINT "  YOU.": PRINT : GOTO 300
12010  PRINT "NOTHING HAPPENS.": PRINT : GOTO 300
13000  REM ///SAY COMMAND
13010  GOSUB 1950
13020  IF S$ = "TROLLSFIRE" THEN 20000
13030  IF S$ = "POWER" THEN 6000
13040  IF S$ = "HEAL" THEN 7000
13050  IF S$ = "BLAST" THEN 8000
13060  IF S$ = "SPEED" THEN 10000
13070  PRINT : PRINT "OKAY, '";S$;"'": PRINT : GOTO 300
14000  REM ///DRINK COMMAND
14010  GOSUB 1950
14020  IF NBTL THEN 2020
14030  IF  RIGHT$ (S$,6) <  > "POTION" AND  RIGHT$ (S$,6) <  > "BOTTLE" THEN 14500
14040  IF AD%(3,4) <  >  - 1 AND AD%(3,4) <  > ROOM THEN 14500
14050  PRINT : IF MD%(0,13) THEN  PRINT "SOME OF YOUR WOUNDS SEEM TO CLEAR UP.": PRINT 
14060 MD%(0,13) = MD%(0,13) -  INT (10 *  RND (1) + 1): IF MD%(0,13) < 0 THEN MD%(0,13) = 0
14070 H2 = MD%(0,13) +  INT (11 *  RND (1) - 5):H2 =  INT (H2 / 10) + 1: ON H2 GOTO 14080,14090,14100,14110
14080  PRINT "YOU FEEL GREAT!": PRINT : GOTO 14120
14090  PRINT "YOU FEEL BETTER.": PRINT : GOTO 14120
14100  PRINT "THOUGH YOU FEEL BETTER, YOU ARE STILL": PRINT "  VERY, VERY SICK!": PRINT : GOTO 14120
14110  PRINT "THOUGH YOU FEEL BETTER, YOU ARE STILL": PRINT "  AT DEATH'S DOOR, KNOCKING LOUDLY.": PRINT 
14120 AD%(3,4) = 0:AD%(13,4) =  - 1
14130  GOTO 300
14500  IF S$ <  > "WATER" OR  RIGHT$ (S$,3) <  > "SEA" THEN  PRINT : PRINT "A JOB SIMILAR TO GETTING BLOOD FROM A": PRINT "  TURNIP.": PRINT : GOTO 300
14510  PRINT : PRINT "THE WATER TASTED SALTY, BUT IT DOESN'T": PRINT "SEEM TO BE POISONOUS.": PRINT : GOTO 300
15000  REM ///READ COMMAND
15010  GOSUB 1950
15020  IF NBTL THEN 2020
15030  IF S$ = "LABEL" OR S$ = "BOTTLE" THEN  IF AD%(3,4) = ROOM OR AD%(13,4) = ROOM OR AD%(3,4) =  - 1 OR AD%(13,4) =  - 1 THEN  PRINT "THE BOTTLE SAYS, 'HEALING POTION'": PRINT : GOTO 300
15040  IF S$ = "TROLLSFIRE" THEN 20000
15050  IF S$ <  > "BOOK" THEN  PRINT : PRINT "THERE ARE NO MARKINGS TO READ!": PRINT : GOTO 300
15060  IF AD%(9,4) <  >  - 1 AND AD%(9,4) <  > ROOM THEN  PRINT "WHAT BOOK?": PRINT : GOTO 300
15070  PRINT "AS YOU READ THE BOOK, YOU FEEL A WEIRD": PRINT "SENSATION OVERTAKING YOU.  YOU SUDDENLY": PRINT "REALIZE THAT YOU ARE TURNING INTO A": PRINT "SMALL FISH.": PRINT 
15080  IF ROOM = 26 THEN  PRINT "YOU FALL INTO THE SEA AND ARE PROMPTLY": PRINT "EATEN BY A BIG FISH.": PRINT 
15090  IF ROOM < 26 THEN  PRINT "YOU FLOP THREE TIMES THEN DIE.": PRINT 
15100 DIE = 1: GOTO 23010
16000  REM ///READY A WEAPON
16010  GOSUB 1950
16020  FOR A = 1 TO NA: IF AN$(A) <  > S$ OR AD%(A,4) <  >  - 1 THEN  NEXT : PRINT : PRINT "YOU AREN'T CARRYING IT!": PRINT : GOTO 100
16030  IF AD%(A,2) < 2 THEN  PRINT : PRINT "THAT ISN'T A WEAPON!": PRINT : GOTO 100
16040 MD%(0,10) = (EA + AE) * ( - EA > AE) + AD%(A,5) + WA%(AD%(A,6)) + 2 * MD%(0,2):MD%(0,9) = A:MD%(0,11) = AD%(A,7):MD%(0,12) = AD%(A,8)
16050  IF S$ <  > "TROLLSFIRE" THEN  PRINT : PRINT "READIED.": PRINT : GOTO 300
16060 TR = 0:MD%(0,12) = 10: GOTO 20000
17000  REM ///FLEE COMMAND
17010  IF  NOT NBTL THEN  PRINT : PRINT "WHAT ARE YOU FLEEING FROM?": PRINT : GOTO 100
17020  IF MD%(7,5) = ROOM THEN  PRINT : PRINT "YOU ARE HELD FAST BY THE MIMIC AND": PRINT "  CANNOT ";V$: PRINT : GOTO 300
17030 M = 0: GOSUB 17500
17040 NBTL = 0: GOTO 5100
17500  PRINT DK$;"READ EAMON.ROOMS,R";ROOM: FOR D = 1 TO 6: INPUT DR%(D): NEXT : PRINT DK$
17510 R2 = DR%(6 *  RND (1) + 1): IF R2 < 1 THEN 17510
17520  RETURN 
18000  PRINT : PRINT "YOU ARE CARRYING THE FOLLOWING--": FOR A = 1 TO NA: IF AD%(A,4) =  - 1 THEN  PRINT "  ";AN$(A)
18010  NEXT : GOTO 300
19000  IF NBTL THEN 2020
19010  GOSUB 1950
19020  IF S$ <  > "WATER" AND S$ <  > "SEA" THEN 19040
19030  PRINT : PRINT "SORRY, BUT I'M AFRAID TO GO INTO THE": PRINT "   WATER WITHOUT MY LIFE PRESERVER!": PRINT : GOTO 300
19040  IF S$ = "CAVE" AND ROOM = 1 THEN V$ = "S": GOTO 5000
19050  PRINT : PRINT "I'M NOT SURE WHAT YOU MEAN BY THAT.": PRINT "TRY GIVING A DIRECTION TO MOVE.": PRINT : GOTO 100
20000  REM ///TROLLSFIRE ACTIVATION.
20010  IF AD%(10,4) <  >  - 1 THEN  PRINT : PRINT "NOTHING HAPPENS.": PRINT : GOTO 300
20020  IF  NOT TR THEN 20500
20030  PRINT DK$;"READ EAMON.DESC,R206": INPUT A$: PRINT DK$: PRINT : PRINT A$: PRINT :TR = 0:AD%(10,8) = 6: IF MD%(0,9) = 10 THEN MD%(0,12) = 6
20040  GOTO 300
20500  PRINT DK$;"READ EAMON.DESC,R204": INPUT A$: PRINT DK$: PRINT : PRINT A$: PRINT : IF MD%(0,9) <  > 10 THEN  PRINT DK$;"READ EAMON.DESC,R205": INPUT A$: PRINT DK$: PRINT A$: PRINT :S = 5:D = 1:DF = 0:A = 0: GOSUB 3650: GOTO 300
20510 TR = 1:MD%(0,12) = 10:AD%(10,8) = 10: GOTO 300
21000  REM ///OPEN COMMAND
21010  IF NBTL THEN 2020
21020  IF S$ <  > "CHEST" OR ROOM <  > AD%(12,4) THEN 21050
21030  PRINT DK$;"READ EAMON.DESC,R201": INPUT A$: PRINT DK$: PRINT : PRINT A$: PRINT :AD%(12,4) = 0:MD%(7,5) = ROOM
21040 R2 = ROOM: GOTO 5100
21050  IF S$ = "DOOR" THEN  PRINT : PRINT "THE DOOR WILL OPEN WHEN YOU MOVE THROUGH": PRINT "IT.": PRINT : GOTO 100
21060  PRINT : PRINT "MIND TELLING ME HOW?": PRINT : GOTO 100
22000  REM ///INIT THINGS
22002  PRINT DK$;"OPEN EAMON.DESC,L256": PRINT DK$;"READ EAMON.DESC,R0": INPUT NR,NA,NE,NM: DIM AN$(NA + 1),AD%(NA + 1,8),MN$(NM),MD%(NM,15): PRINT DK$"CLOSE"
22004  ONERR  GOTO 22010
22006  PRINT DK$"RESTORE FAST.START": POKE 216,0: GOTO 22030
22010  POKE 216,0: PRINT DK$;"OPEN EAMON.ARTIFACTS,L128": FOR A = 1 TO NA: PRINT DK$;"READ EAMON.ARTIFACTS,R";A
22015  INPUT AN$(A): FOR A2 = 1 TO 4: INPUT AD%(A,A2): NEXT A2: IF AD%(A,2) > 1 THEN  FOR A2 = 5 TO 8: INPUT AD%(A,A2): NEXT A2
22020  NEXT A: PRINT DK$;"OPEN EAMON.MONSTERS,L128": FOR A = 1 TO NM: PRINT DK$;"READ EAMON.MONSTERS,R";A
22025  INPUT MN$(A): FOR A2 = 1 TO 12: INPUT MD%(A,A2): NEXT A2,A: PRINT DK$;"CLOSE"
22030  PRINT DK$;"OPEN FRESH.MEAT": PRINT DK$;"READ FRESH.MEAT": INPUT REC: INPUT MN$(0),MD%(0,1),MD%(0,2),CH: FOR A = 1 TO 4: INPUT SA%(A): NEXT 
22040  FOR A = 1 TO 5: INPUT WA%(A): NEXT : INPUT AE,SEX$,GOLD,BANK,AC
22050  FOR A = 1 TO 4: INPUT WN$(A),WT%(A),WO%(A),WD%(A),WS%(A): NEXT : PRINT DK$;"CLOSE"
22060  PRINT DK$;"OPEN EAMON.DESC,L256": PRINT DK$;"OPEN EAMON.ROOM.NAME,L64": PRINT DK$;"OPEN EAMON.ROOMS,L64"
22070  HOME : PRINT "YOU HAVE NO TROUBLE FINDING A HORSE": PRINT "THAT YOU, WELL, BORROW TO TAKE YOU": PRINT "ON YOUR FIRST ADVENTURE.  YOU FOLLOW": PRINT "SEVERAL SIGNS TO TAKE YOU TO THE": PRINT "BEGINNERS CAVE.": PRINT : PRINT DK$;"READ EAMON.DESC,R1": INPUT A$: PRINT DK$: PRINT A$
22080  PRINT : PRINT "AS YOU STAND THERE, YOU SEE THE LOCAL": PRINT "KNIGHT MARSHAL COME OUT TO INSPECT YOU.": PRINT : PRINT 
22090  IF WN$(1) = "NONE" THEN  PRINT "HE SHAKES HIS HEAD AND SAYS, 'YOU MUST": PRINT "HAVE AT LEAST ONE WEAPON TO ADVENTURE": PRINT "HERE! GO BACK TO THE MAIN HALL.'": GOTO 23010
22100  IF AE OR WA%(1) <  > 5 OR WA%(3) <  > 20 OR WA%(5) <  > 0 THEN  PRINT "HE SHAKES HIS HEAD AND SAYS, 'YOU ARE": PRINT "NOT A BEGINNER! YOU CANNOT ADVENTURE": PRINT "HERE! GO BACK TO THE MAIN HALL.'": GOTO 23010
22110  IF WN$(2) = "NONE" THEN W2 = 1: GOTO 22160
22120  PRINT "HE TELLS YOU, 'YOU MAY ONLY TAKE ONE": PRINT "WEAPON INTO THE CAVE. WHICH SHALL IT BE?": FOR W = 1 TO 4: IF WN$(W) <  > "NONE" THEN  PRINT "   ";WN$(W): NEXT W
22130  PRINT : PRINT "(HIT 1-";W - 1;")   ";
22140  GET A$:W2 =  VAL (A$): IF W2 < 1 OR W2 > W - 1 THEN 22140
22150  PRINT A$: PRINT 
22160 NA = NA + 1:AN$(NA) = WN$(W2):AD%(NA,2) = 2:AD%(NA,3) = 2:AD%(NA,4) =  - 1:AD%(NA,5) = WO%(W2):AD%(NA,6) = WT%(W2):AD%(NA,7) = WD%(W2):AD%(NA,8) = WS%(W2)
22170 EA = 0:MD%(0,8) = 0:A2 =  INT (AC / 2): IF A2 * 2 <  > AC THEN MD%(0,8) = 1:EA =  - 5
22180  IF A2 THEN MD%(0,8) = MD%(0,8) + A2:EA = EA - A2 * 10: IF A2 = 3 THEN MD%(0,8) = MD%(0,8) + 2:EA = EA - 30
22190 MD%(0,10) = (EA + AE) * ( - EA > AE) + WO%(W2) + WA%(WT%(W2)) + 2 * MD%(0,2):MD%(0,7) = 0:MD%(0,9) = NA:MD%(0,11) = WD%(W2):MD%(0,12) = WS%(W2)
22200 MD%(0,14) = 1
22210  READ NC: DIM C$(NC): FOR C = 1 TO NC: READ C$(C): NEXT 
22220  FOR S = 1 TO 4:S2%(S) = SA%(S): NEXT 
22230  DIM V%(26):ROOM = 1
22235  FOR A = 1 TO NA - 1: IF AN$(NA) = AN$(A) THEN AN$(A) = AN$(A) + "#": GOTO 22235
22236  NEXT 
22240  PRINT : PRINT "EVENTUALLY THE KNIGHT MARSHAL SAYS,'YOU": PRINT "MAY NOW PROCEED' AND HE WALKS AWAY.": PRINT : PRINT "(HIT ANY KEY TO CONTINUE)  ";: GET A$: PRINT : PRINT : GOTO 100
22250  DATA  36
22260  DATA GET,PICK,DROP,ATTACK,LOOK,EXAMINE,UP,U,DOWN,D,NORTH,N,EAST,E,WEST,W,SOUTH,S,POWER,HEAL,BLAST,SPEED,SMILE,WAVE,SAY,DRINK,READ,READY,ESCAPE,RETREAT,FLEE,INVENTORY,I,ENTER,TROLLSFIRE,OPEN
22270  END 
23000  REM ///END GAME
23010  PRINT : PRINT "(HIT ANY KEY TO RETURN TO THE MAIN HALL)";: GET A$: PRINT 
23020  PRINT DK$;"CLOSE"
23030 AD%(10,8) = 10
23040  IF SPD THEN MD%(0,2) = MD%(0,2) / 2
23050  IF DIE THEN 23240
23060  FOR W = 2 TO 4: IF WN$(W) <  > "NONE" THEN  NEXT 
23070 W2 = W: FOR W3 = 1 TO NA - 1: IF AD%(W3,2) > 1 AND AD%(W3,4) =  - 1 THEN WN$(W2) = AN$(W3):WP%(W2) = W3:W2 = W2 + 1:AD%(W3,4) = 0
23080  NEXT W3: IF W2 < 6 THEN 23160
23090  HOME : VTAB 5: PRINT "AS YOU TRY TO LEAVE, THE KNIGHT": PRINT "MARSHALL REAPPEARS AND TELLS YOU, 'YOU": PRINT "HAVE TOO MANY WEAPONS--4 IS THE LEGAL": PRINT "LIMIT.'": PRINT : PRINT "YOUR WEAPONS ARE--"
23100  FOR W4 = 1 TO W2 - 1: PRINT  SPC( 4);W4;"--";WN$(W4): NEXT : PRINT : PRINT "HIT THE NUMBER KEY FOR ONE TO THROW": PRINT "   AWAY (1-";W2 - 1;")  ";
23110  GET A$:W5 =  VAL (A$): IF W5 < 1 OR W5 > W2 - 1 THEN 23110
23120  IF WP%(W5) THEN AD%(WP%(W5),4) =  - 1
23130 WN$(W5) = WN$(W2 - 1):WP%(W5) = WP%(W2 - 1):W2 = W2 - 1: IF W2 > 5 THEN 23090
23140  FOR W5 = 1 TO 1: NEXT W5: FOR W4 = 2 TO W2 - 1: FOR W5 = 1 TO W4 - 1: IF WN$(W4) = WN$(W5) THEN WN$(W4) = WN$(W4) + "#": GOTO 23140
23150  NEXT W5,W4
23160  FOR W = 1 TO 4: IF WP%(W) THEN WT%(W) = AD%(WP%(W),6):WO%(W) = AD%(WP%(W),5):WD%(W) = AD%(WP%(W),7):WS%(W) = AD%(WP%(W),8)
23170  NEXT W: HOME : VTAB 5: PRINT "AS YOU DELIVER YOUR TREASURES TO SAM": PRINT "SLICKER, THE LOCAL BUYER FOR SUCH": PRINT "THINGS, HE EXAMINES YOUR GOODS AND": PRINT "PAYS YOU ";
23180 TP = 0: FOR A = 1 TO NA - 1: IF AD%(A,4) <  >  - 1 THEN 23210
23190  IF AD%(A,2) <  > 0 THEN AD%(A,1) = AD%(A,1) * CH / 10
23200 TP = TP + AD%(A,1)
23210  NEXT A: PRINT TP;" GOLD PIECES.": PRINT : IF MD%(9,5) = 1 THEN  PRINT "ADDITIONALLY, YOU RECEIVE ";10 * CH;" GOLD": PRINT "PIECES AS A REWARD FOR THE SAFE RETURN": PRINT "OF CYNTHIA.":TP = TP + 10 * CH
23220 GOLD = GOLD + TP
23230  PRINT : PRINT : PRINT "(HIT ANY KEY TO CONTINUE)  ";: GET A$: PRINT 
23240  PRINT 
23242  HOME : VTAB 5: PRINT "(INSERT EAMON MASTER DISKETTE, THEN": PRINT "   HIT 'C' TO CONTINUE)   ";: POKE  - 16368,0: GET A$: PRINT A$: IF A$ <  > "C" THEN 23242
23244  ONERR  GOTO 23248
23246  PRINT DK$"OPEN EAMON.PREFIX": PRINT DK$"READ EAMON.PREFIX": INPUT PX$: PRINT DK$"CLOSE": GOTO 23252
23248  PRINT DK$"CLOSE": PRINT DK$"PREFIX": INPUT CX$
23250  PRINT : PRINT : PRINT CX$: PRINT "     IS THE CURRENT PREFIX": PRINT "INSERT THE MASTER DISK": INPUT "   AND TYPE ITS PREFIX: ";PX$
23252  PRINT DK$"PREFIX"PX$
23254  PRINT DK$"VERIFY MAIN.HALL": POKE 216,0
23258  IF DIE THEN  PRINT DK$;"DELETE THE.ADVENTURER": GOTO 23300
23260  PRINT DK$;"OPEN CHARACTERS,L150": PRINT DK$;"WRITE CHARACTERS,R";REC: PRINT MN$(0): PRINT MD%(0,1): PRINT MD%(0,2): PRINT CH: FOR A = 1 TO 4: PRINT SA%(A): NEXT 
23270  FOR A = 1 TO 5: PRINT WA%(A): NEXT : PRINT AE: PRINT SEX$: PRINT GOLD: PRINT BANK: PRINT AC
23280  FOR A = 1 TO 4: PRINT WN$(A): PRINT WT%(A): PRINT WO%(A): PRINT WD%(A): PRINT WS%(A): NEXT 
23290  PRINT DK$;"OPEN THE.ADVENTURER": PRINT DK$;"WRITE THE.ADVENTURER": PRINT MN$(0): PRINT REC: PRINT DK$;"CLOSE"
23300  PRINT DK$;"RUN MAIN.HALL"