Monster Combat

Lee Chapel

Translated for the Atari by Shelia Spencer

This monstrous program offers hours of fun. Think carefully before accepting its offer.

Monster Combat is a game in which you go wandering through a forest trying to win as much treasure as you can from various monsters without getting yourself killed in the process. It was written in Basic for a KIM microprocessor and for display on a high speed video board, but can easily be converted to almost any other Basic or video board. It requires at least 16K of RAM to be run, which is the main reason there are no spaces between commands on the program listing.

Play

When you play the game you will be randomly placed in a forest ten by ten squares in size. Only one of these squares, the one you are in, is displayed, thus allowing you to see only a small part of the forest at a time. The sector you are in is again divided into ten by ten squares. Each of these, too, is divided up to ten by ten; but these hundred smallest squares you see. Each of these little squares is shown by a single character. It covers an area of forest ten by ten yards, making the fuller square that is displayed a hundred by a hundred yards and the entire forest a thousand by a thousand yards. T's are trees,'-'s are paths, I's are walls, 's are inns, and M's are enchanted castles. The '0' is you.

Also displayed with the portion of forest you are in is your combat strength, treasure total, and the various magic spells you have. Your combat strength is used to fight the various monsters you meet, each monster having a combat strength of his own; these range from five (for a goblin) to a hundred (for a basilisk). Your combat strength is also used in movement, the amount used depending upon how far you go, how much treasure you're lugging around, and the type of terrain you end up on after you move.

At the inns you are allowed to regain the strength you began with and all the magic you had at the start. Don't worry when you find yourself displayed in the square below the inn when you stop there; that is the way the program is set up. Of course, the innkeeper takes some of your treasure for providing you with his services. However, sometimes he has information which he passes on to you at no additional cost -- like where the forest edge is, or where an enchanted castle might be found.

There may be up to fifteen enchanted castles in the forest. These usually contain items of great value to treasure hunters, as you will see. (However, they tend to vanish if you make the wrong move, such as falling into a pit when you land on the castle square.)

Most of the time you will not be visiting inns and castles. You will be hacking your way through thick underbrush or trotting along forest paths in search of treasure. And you will find it, usually guarded by some sort of monster. Upon encountering one or more of these creatures you are given a choice of fighting them, running away, bribing them, or casting a spell on them.

To fight you must hit a '1'; then, when it asks you to, you enter however much of your combat strength you wish to use against the monster. If you choose to use strength equal to the monster's strength you then have a fifty-fifty chance of winning. The more strength you use the greater the odds are of winning, the less you use the smaller your odds of winning. Also affecting what you use to fight the monster is your treasure total. The more treasure you have the more strength you must use.

The first and third parts of the sample run give examples of fighting a monster or monsters. In the first case there are three cyclopses. Cyclopses have a combat strength of 20 which means that three of them have a total strength of 60. I used 121 of my combat strength to fight them, over twice the cyclopses' strength, which gave me over a 95% chance of winning. And, as can be seen in the example, I did beat him.

In the third part of the sample run I am fighting 19 goblins. Since goblins have a combat strength of 5, 19 have a combined strength of 95. I used only 60 combat points that time, giving me around a 30% chance of winning. And, as can be seen in the example, I did get myself killed.

If you do not wish to fight the monster you can always run. However, the higher the strength of the monster the less likely you will get away and the more likely that you will be forced to fight. Whether or not you do get away is based upon a random number and the strength of the monster. If you do get away you are randomly placed in an adjacent square and get to find out what is there. Once in a while, when you attempt to run, the monster catches you and kills you.

If you don't care to run or fight you can try to bribe the monster. Few people like to do this since it means handing over some of your hard-earned treasure. Whether your bribe is accepted or not depends upon how much treasure the monster is guarding, his strength, and a random number. The greater the value of the treasure the monster has, the more you'll have to pay him if you don't care to fight. Usually if the monster doesn't care for your bribe you have to fight him. Sometimes, though, he just kills you anyway.

Finally, if you don't care for any of the previous choices, you may cast a spell. There are three types of spells: sleep, charms, and invisibility. Sleep spells tend to be the least effective and invisibility the most effective, with charms somewhere in the middle. Spells, no matter what kind they are, don't always work too well, sometimes not working at all, thus causing you to have to fight the monster.

In addition to the various monsters, there are other things you will occasionally run into; some are good and some bad, as you will see when you run the program. Everything is determined randomly and thus you can go back to a spot you were previously at and find something different there.

You have thirty days to hunt for treasure in the forest. Each little square you move through takes a tenth of a day to cross, meaning it takes an entire day to cross the entire displayed square. To move you enter the direction you wish to go (N meaning North, which is upwards, S meaning South, E meaning East, which is to the right, and W meaning West). Then you enter the distance, each little square being one. For example, in the first part of the sample run I enter S (south) for the direction and then 3 for the distance. This places me on top of the arrow, which is an inn, and thus I am shown in the square below the inn when the next map of the area is drawn. In moving from the inn I again go south, this time a distance of 7, which causes me to end up in the next large square.

When you leave the forest, intentionally or accidentally, you can obtain a listing of the number of monsters you've killed, bribed and run from, plus the amount of treasure you have won so far. If you decide not to return to the forest or your thirty days are up, you are offered several choices: you may go to a new forest with the same strength and magic (the treasure total going back to zero); you may go to a new forest with new strength and magic; or you can stop playing the game. If you should wish to use the strength and magic left over from the game you just played, you can obtain a listing of these at the very end of the game and then write them down or store them however you wish. Then, the next time you play the game, you just answer the initial question asking if you wish to use an old combat strength and magic with a 'Y' and then enter the various things you are asked for.

This game was very popular at my dorm at the University of Wisconsin in Madison. The record treasure total so far, as of this writing, is 7562, set by me. Most of the time the scores run between a thousand and two thousand, with many lower and a few higher. If you get above two thousand you're doing well.


Cast of Characters

The following is a description of each monster, giving its combat strength and telling something about the tales and myths surrounding it.

Goblin (5) -- A mischievous little sprite only about a yard in height. Rather ugly, uses coarse and uncouth language, is generally evil and malicious; all in all, a rather unpleasant little fellow. Even though they're little they can be very vicious, and more than one warrior has been killed underestimating them.

Minotaur (10) -- From Greek mythology, a monster with the head of a bull and the body of a man. Minos, king of Crete, received a bull from Poseidon, god of the sea, which he refused to sacrifice to the god. Poseidon inspired an unnatural love for the bull in Pasiphae, Minos' wife, and the minotaur resulted from the union. Minos enclosed the creature in a labyrinth constructed in the city of Knossos, and fed it seven young men and women (whom Athens had to pay as tribute to Crete) every few years. The original minotaur was eventually slain by the Athenian hero Theseus.

Cyclops (20) -- Also from Greek mythology, a member of a race of one-eyed giants. According to Homer, the cyclopses were shepherds living on an island in the western area. The best known of these was Polyphemus who had his eye poked out by the hero, Odysseus. According to Hesiod, the cyclopses were three of the children of Uranus and Gaea. They forged the thunderbolt for Zeus, king of the gods, and became the assistants of Hephaestus, god of the forge.

Zombie (30) -- From legends in the West Indies, a corpse which has been reanimated. A rather unpleasant person to meet, he generally smells of rot and decay. He often has rotting pieces of himself falling off his body, yet never seems to fall apart completely. He is difficult to kill, since he is already dead. A person has to chop him into tiny pieces and then get away before the monster can pull himself back together.

Giant (40) -- Appears in the mythology of almost all nations, huge beings of terrible aspect. In the Greek myths the giants are said to live in volcanic regions where they were banished after an unsuccessful war against the gods. Some giants are peaceful, but others, like the ones in the forest, would think nothing of having you or anyone else for a snack.

Harpy (50) -- From Greek mythology, disgusting women with the wings and lower body of a bird, generally a bird of prey. They stole and befouled the food of blind Phineus as punishment from the gods. Phineus nearly died before Jason and the Argonauts arrived while sailing in search of the Golden Fleece. Two of the Argonauts, Zetes and Calais, drove the harpies away and were then told by one of the gods that the harpies would bother Phineus no more. The harpies continued their disgusting practices elsewhere.

Griffin (60) -- From Eastern mythology, a creature usually represented as having the head, beak, and wings of an eagle, and the body and legs of a lion. It builds its nest of gold, making it very tempting to hunters and forcing the griffin to keep vigilant guard. It instinctively knows where buried treasure is hidden and does its best to keep any plunderers at a distance.

Chimera (70) -- From Greek mythology, a monster with the foreparts of a lion, the rearparts of a goat with a goat's head in the middle of its back, and with a serpent fora tail. The original chimera was slain by Bellerophon, who was riding on Pegasus, the winged horse. Ironically, Pegasus was a distant relative of the chimera.

Dragon (80) -- Found in many of the world's mythologies, a reptilic monster resembling a giant lizard and usually represented as having wings, huge claws, and a fiery breath. In some places the dragon is considered to be a peaceful creature, notably in Japan and China, where it is regarded as a symbol of good fortune. However, the dragons in the forest are of the other sort; they will kill and eat you if you let them, and they take very unkindly to anyone trying to steal their treasure.

Wyvern (90) -- A distant relative of the dragon, this is a fabulous two-legged creature, with wings and the head of a dragon on a basilisk's body. Although he cannot kill you with one glance like the basilisk, he is still a very unpleasant creature to meet.

Basilisk (100) -- The worst of all eleven monsters, his deadly glare kills anyone who gazes upon his face. From Greek mythology, the basilisk was called the king of serpents, being endowed with a scaly crest upon his head like a crown. This monster was supposedly produced from the egg of a cock hatched under toads or serpents. The weasel, the only animal which can withstand the basilisk's glare, often fought it to the death. Humans must use a mirror if they wish to be assured of victory over a basilisk, for the mirror will reflect the creature's gaze back upon it and kill it. This monster is not to be confused with the basilisk of South America, a harmless lizard with the ability to run across water.


Menu from Monster Disk

0 GRAPHICS 0
1 SETCOLOR 2,0,10:SETCOLOR 1,0,2:SETCOLOR 4,0,10:POKE 82,2:POKE 83,39:POKE 752,1
2 ? "          ***DIRCETORY***":?
6 GOTO 9
8 FOR I=1 TO 1000:NEXT I:RETURN
9 DIM X$(40),L$(20),A$(40),P$(500),N$(2),B0$(40)
10 REM "D1:MENU"
11 OPEN #1,6,0,"D:*.*"
12 B0$="                                  ":GOTO 30
20 N=N+1:X$=A$(3,10):X$(9,9)=".":X$(10,12)=A$(11,13)
22 L$=" ":L$(LEN(L$)+1)=X$:P$(LEN(P$)+1)=X$
24 L$(14,14)="(":FOR I=2 TO LEN(L$):IF L$(I,I)=" " THEN L$(I,I)="."
25 NEXT I:N$=STR$(N):IF N<10 THEN N$(2,2)=N$(1,1):N$(1,1)="0"
27 RETURN
30 INPUT #1,A$
40 IF A$(2,2)<>" " THEN GOTO 90
45 GOSUB 20
50 ? L$;N$;") ";
60 INPUT #1,A$
70 IF A$(2,2)<>" " THEN GOTO 90
75 GOSUB 20
80 ? L$(2,14);N$;") "
85 GOTO 30
90 ? :? "          ";A$
120 POKE 752,0
130 POSITION 1,22:? "   SELECTION";:TRAP 130:INPUT X:? "";:TRAP 40000
131 IF X<>INT(X) THEN 130
135 IF X=1 THEN X$=P$(1,12):GOTO 145
140 X$=P$((X-1)*12+1,(X-1)*12+12):TRAP 40000
141 IF X$(11,11)=" " THEN X$=X$(1,8)
145 IF X$(1,3)="DOS" THEN DOS
150 A$="D1:":A$(LEN(A$)+1)=X$
155 POKE 752,3:POSITION 1,22:PRINT "         LOADING ";X$;
160 TRAP 200:RUN A$:TRAP 40000
200 POSITION 1,22:PRINT " CANNOT RUN ";X$;:GOSUB 8:TRAP 40000:GOTO 130

Monster

0 GRAPHICS 2:POKE 752,1:POSITION 6,4:? #6;"MONSTER":POSITION 6,6:? #6;"COMBAT":? "             Lee Chapel        "
1 ? "Translated for ATARI by Sheila Spencer":GOSUB 27000:GRAPHICS 0:GOSUB 26000
3 POKE 559,0:Q0=0:Q1=1:Q2=2:Q3=3:Q4=4:Q5=5:Q6=6:Q7=7:Q8=8:Q9=9:Q10=10:Q11=11:
Q12=12:Q100=100:Q10000=10000:N=Q0
4 POKE 752,Q1:DIM A(Q10,Q10),B(Q10,Q10),M(Q11),M$(Q8),N(Q11),T$(50),Z(Q11),
MA$(20),X$(Q3),C(15),D(15),P(Q11)
5 FOR E=Q1 TO Q10:FOR F=Q1 TO Q10:A(E,F)=0:B(E,F)=0:NEXT F:NEXT E
8 GOSUB 26000
9 RESTORE :FOR I=Q1 TO Q11:READ Q:M(I)=Q:NEXT I:FOR I=Q1 TO Q11:READ Z:P(I)=Z:
NEXT I:V=INT(RND(Q1)*Q3)
15 C=INT(RND(Q1)*1501+500):S=INT(RND(Q1)*Q6):R=INT(RND(Q1)*Q4):MA$(Q1)=
"  Sleep Spell":MA$(Q2)="  Charm"
17 MA$(Q3)="Invisibility Spell":POKE 559,34:? "Want the strength and magic from 
another game";:INPUT X$
18 IF X$(Q1,Q1)="Y" THEN 1630
20 D=C:V1=V:S1=S:R1=R:? "Just a moment...":FOR Q=1 TO 750:NEXT Q:POKE 559,Q0
25 FOR I=Q1 TO Q10:FOR J=Q1 TO Q10:T=INT(RND(Q1)*Q10):IF T<>Q1 OR CS=15 THEN T=Q0
26 H=INT(RND(Q1)*Q2):W=INT(RND(Q1)*Q10)
30 P=INT(RND(Q1)*51):A(I,J)=Q10000*T+Q100*P+Q10*W+H
37 IF T=Q1 THEN CS=CS+Q1:C(CS)=I:D(CS)=J
40 NEXT J:NEXT I:T=Q0:SETCOLOR Q2,13,Q6:SETCOLOR Q4,13,Q6:SETCOLOR Q1,13,13
45 X1=INT(RND(Q1)*Q8)+Q2:Y1=INT(RND(Q1)*Q8)+Q2:X=INT(RND(Q1)*Q10)+Q1:
Y=INT(RND(Q1)*Q10)+Q1
55 IF X1Q10 OR Y1Q10 THEN 1000
56 FOR I=Q1 TO Q10:FOR J=Q1 TO Q10:B(I,J)=Q0:NEXT J:NEXT I:CA=INT(A(X1,Y1)/Q10000)
57 P=INT((A(X1,Y1)-(Q10000*CA))/Q100)
60 W=INT((A(X1,Y1)-(Q10000*CA)-(Q100*P))/Q10):H=A(X1,Y1)-Q10000*CA-Q100*P-Q10*W:
I=Q0:J=Q0
67 IF CA=Q1 THEN I=INT(RND(Q1)*Q10+Q1):J=INT(RND(Q1)*Q10+Q1):B(I,J)=Q7
70 IF CA=Q1 AND I=X AND Y=J THEN B(I,J)=Q0:GOTO 67
75 IF H=Q1 THEN I=INT(RND(Q1)*Q10+Q1):J=INT(RND(Q1)*Q9+Q1)
85 IF H=Q1 AND B(I,J)<>Q0 THEN 75
87 IF H=Q1 THEN B(I,J)=Q3
90 B(X,Y)=Q5:IF W=Q0 THEN 115
95 FOR I=Q1 TO W
100 J=INT(RND(Q1)*Q10)+Q1:K=INT(RND(Q1)*Q10+Q1)
105 IF B(J,K)<>Q0 THEN 100
110 B(J,K)=Q2:NEXT I
115 IF P=Q0 THEN 140
120 FOR I=Q1 TO P
125 J=INT(RND(Q1)*Q10)+Q1:K=INT(RND(Q1)*Q10)+Q1
130 IF B(J,K)<>Q0 THEN 125
135 B(J,K)=Q1:NEXT I
140 GOSUB 26000:POKE 559,34:FOR I=Q1 TO Q10:FOR J=Q1 TO Q10:POSITION I,J
145 IF B(J,I)=Q0 THEN ? "T";
150 IF B(J,I)=Q1 THEN ? "-";
155 IF B(J,I)=Q2 THEN ? "I";
160 IF B(J,I)=Q3 THEN ? "H";
165 IF B(J,I)=Q5 THEN ? "O";
167 IF B(J,I)=Q7 THEN ? "M";
170 NEXT J:POSITION Q12,Q0:IF I=Q2 THEN ? "Combat Strength=";C
180 POSITION Q12,Q1:IF I=Q3 THEN ? "Treasure total=";TL
185 POSITION Q12,Q2:IF I=Q4 THEN ? "Magic:"
190 POSITION Q12,Q3:IF I=Q5 THEN ? "Sleep-";S
195 POSITION Q12,Q4:IF I=Q6 THEN ? "Charms-";R
200 POSITION Q12,Q5:IF I=Q7 THEN ? "Invisibility-";V
203 POSITION Q12,Q6:IF I=Q9 THEN ? "DAY ";DA
205 POSITION Q12,Q7:IF I=Q1 OR I=Q8 OR I=Q10 THEN ?
210 NEXT I:? :IF T=Q1 THEN 604
213 IF T=Q2 THEN 515
215 I=INT(RND(Q1)*Q5):IF I=Q2 THEN GOSUB 32000:POSITION Q0,Q12
220 IF I=Q1 AND T<>Q9 THEN POSITION Q0,14:? "Nothing there.":GOTO 515
223 IF I=Q1 AND T=Q9 THEN 513
225 I=INT(RND(Q1)*16+Q1):IF I=Q12 THEN 840
235 IF I=13 THEN 870
237 IF I=14 THEN 900
240 IF I>14 THEN J=Q100:GOTO 270
245 J=INT(RND(Q1)*Q100/M(I)):N1=J:IF J=Q0 THEN J=Q1:N1=J
254 GOSUB 10000
255 IF J=Q1 THEN POSITION Q2,15:? "A ";M$;" is guarding"
260 IF J<>Q1 THEN POSITION Q2,15:? J;" ";M$;"s are guarding"
265 M=M(I)*J:I=INT(RND(Q1)*14+Q1)
270 IF I>Q11 AND J=Q100 THEN 215
271 IF IQ11 THEN 975
273 IF I>Q12 THEN ? "nothing.":P=Q0:GOTO 277
275 GOSUB 10025:? T$:P=P(I)
277 IF M$(1,3)="Bas" AND M1=Q7 THEN 835
279 IF J=Q100 THEN ? "You get the treasure free!":GOTO 500
280 TRAP 280:? "Do you wish to (1)fight, (2)run,":? "(3)bribe, or (4)cast a spell";:
INPUT K:TRAP 40000
285 IF K<1 OR K>4 THEN 280
290 ON K GOTO 295,350,435,670
295 TRAP 295:? "How many combat points";:INPUT K:TRAP 40000
300 IF K>C THEN ? "You only have ";C;" combat points .":GOTO 295
304 GOSUB 14000:I=INT(RND(Q1)*1001):L=Q2:C=C-K:K=K-0.01*TL:FOR H=1000 TO Q0 STEP -50
315 IF L*M<=K AND H>=I THEN 490
320 L=L-0.1:NEXT H
325 GOSUB 30000:GOSUB 13000:? "The ";M$;"s killed you."
330 ? "You lose everything.":?
345 ? "Want to play again";:INPUT X$:IF X$(Q1,Q1)="Y" THEN RUN
346 END
350 I=INT(RND(Q1)*Q12):IF I=Q11 THEN 325
360 FOR H=Q0 TO Q10:IF H*Q10>=M AND H<=I THEN 375
370 NEXT H:GOTO 480
375 A=X:B=Y:K=Q0:T=Q0:C=C-INT((RND(Q1)*21)+1.0E-03*TL)-Q5
380 X=A+INT(RND(Q1)*Q3):Y=B+INT(RND(Q1)*Q3)
385 IF X=A AND Y=B THEN 380
390 DA=DA+0.1:IF X>Q10 THEN X=Q1:X1=X1+Q1:K=Q1
395 IF Y>Q10 THEN Y=Q1:Y1=Y1+Q1:K=Q1
396 IF A>Q10 THEN A=Q1
397 IF B>Q10 THEN B=Q1
400 IF XQ1 AND K=Q0 THEN 380
415 B(A,B)=INT(RND(Q1)*Q3)+Q1:B(X,Y)=Q5:IF I<>Q11 THEN Z=Z+Q1
425 IF K=Q1 THEN 55
430 GOTO 215
435 TRAP 435:? "How much will you pay";:INPUT K:TRAP 40000
440 IF K>TL THEN ? "You only have ";TL:GOTO 435
445 I=INT(RND(Q1)*22):L=Q0:IF I=21 OR (I>15 AND K=H THEN 475
470 L=L+0.1:NEXT H:GOTO 485
475 ? "Your bribe was not accepted."
480 ? "You must fight.":GOTO 295
485 P=Q0:TL=TL-K:B=B+Q1:T=Q0:? "Your bribe was accepted.":GOTO 505
490 N=N+N1
495 FOR O=15 TO Q0 STEP -0.2:SOUND Q0,O,Q2,O:NEXT O:? "You beat the ";M$
500 IF NQ5 AND T<>Q9 THEN TL=TL-P:GOTO 985
505 ? "You now have ";TL;" treasure points."
510 IF T$(Q1,Q5)="a tre" THEN 800
513 IF T=Q9 THEN GOSUB 30100
515 TRAP 515:POSITION Q2,22:POKE 752,1:? "Which direction (Press 1 for map)";:
INPUT X$:TRAP 40000
517 IF X$="1" THEN T=Q2:GOSUB 26000:GOTO 140
520 TRAP 520:T=Q0:? "What distance";:INPUT K:TRAP 40000
521 GOTO 1100
523 A1=X1:B1=Y1:A=X:B=Y:C=C-INT(7.5*K*RND(Q1))
525 IF X$(Q1,Q1)="W" THEN Y=Y-K
530 IF X$(Q1,Q1)="E" THEN Y=Y+K
535 IF X$(Q1,Q1)="S" THEN X=X+K
540 IF X$(Q1,Q1)="N" THEN X=X-K
545 IF X>Q10 THEN X=X-Q10:X1=X1+Q1:IF X>Q10 THEN 545
550 IF XQ10 THEN Y=Y-Q10:Y1=Y1+Q1:IF Y>Q10 THEN 555
560 IF YA1 OR Y1<>B1 THEN 55
573 IF B(X,Y)=Q7 THEN T=Q9
575 IF B(X,Y)=Q2 THEN 590
580 IF B(X,Y)=Q3 THEN 600
584 IF AQ5 THEN I=Q5
615 IF IQ5 THEN ? "You can't use magic to get magic.":GOTO 280
671 IF S+V+R=Q0 THEN ? "You have no magic":GOTO 280
673 ? "What type of spell-":? "(1)Sleep,(2)Charm, or (3)Invisibility";
675 TRAP 673:INPUT K:IF K<1 OR K>3 THEN 670:TRAP 40000
680 ON K GOTO 685,720,745
685 IF S=Q0 THEN ? "You have no Sleep Spells.":GOTO 480
690 IF M$="Zombie" THEN ? "You can't put the ";M$;" to sleep.":S=S-Q1:GOTO 480
695 GOSUB 12000:I=INT(RND(Q1)*Q10):S=S-Q1
700 IF IQ6 THEN ? "It didn't work.":GOTO 480
733 IF M>50 AND I50 AND I>Q8 THEN ? "The ";M$;" smelled you.":GOTO 713
760 IF M<60 AND I=Q0 THEN ? "It wore off too soon.":GOTO 713
765 GOTO 740
770 I=INT(RND(Q1)*Q2)+Q1:ON I GOTO 780,790
780 C=Q2*C:POSITION Q2,Q4:? "You won an enchanted sword."
781 ? "Your combat strength is doubled and is now ";C;".":GOTO 505
790 POSITION Q2,Q4:? "You won an ordinary sword. Your combatstrength remains at ";C:
GOTO 505
800 J=INT(RND(Q1)*Q10):I=INT(RND(Q1)*Q10)
805 IF J=Q7 AND M1<>Q7 THEN M1=Q7:GOTO 820
810 IF I=Q1 THEN 830
815 GOTO 513
820 ? "There was a mirror in the chest. It   will protect yau against any Basilisksyou
meet.":M1=Q7:GOTO 515
830 GOSUB 11000:? "The treasure chest was a trap. You   were killed when you opened it.":
GOTO 330
835 ? "Your mirror killed the Basilisk":N=N+J:M=Q0:GOTO 500
840 GOSUB 15000:? "A giant bat grabbed you and carried   you to a new spot."
845 A=X:B=Y:T=Q0:DA=DA+0.1
850 X=INT(RND(Q1)*Q10+Q1):Y=INT(RND(Q1)*Q10+Q1):IF B(X,Y)>Q1 THEN 850
859 IF A3 THEN 950
960 ON K GOTO 295,350,670
965 I=INT(RND(Q1)*Q11)+Q1:M=M(I):? "A ";M$;" came wandering by.":GOTO 947
975 IF I<>14 THEN 273
980 I=INT(RND(Q1)*Q3+Q1):T=I+Q5:? " a ";MA$(I):P=INT(RND(Q1)*Q11):GOTO 277
985 I=INT(RND(Q1)*Q10)
986 IF I=Q5 THEN ? "You were unable to master the spell."
987 IF I=Q5 THEN GOTO 515
988 IF T=Q6 THEN S=S+Q1:S1=S1+Q1
989 IF T=Q7 THEN R=R+Q1:R1=R1+Q1
990 IF T=Q8 THEN V=V+Q1:V1=V1+Q1
995 ? "You won the spell.":T=Q0:IF S1/Q5+R1/Q3+V1/Q2>Q6 THEN GOSUB 1665
997 GOTO 515
1000 REM
1003 GOSUB 26000:GOSUB 28000:? "You survived the forest!":GOSUB 27000
1004 GOTO 1030
1030 ? :? "TREASURE TOTAL-";TL:? "MONSTERS KILLED-";N:? "MONSTERS ENCHANTED-";N2
1035 IF TL1<>Q0 THEN GOSUB 1650
1040 ? "Congratulations ";:IF TL1<>Q0 AND TL1>TL THEN ? "anyway!":?
1043 ? :X$=""
1045 IF DA<30 THEN ? "Do you wish to return to the forest";:INPUT X$
1050 S=S1:V=V1:R=R1:C=D:IF X$<>"Y" THEN 1600
1055 GOSUB 26000:GOTO 45
1100 DA=DA+K/Q10:IF DA<30 THEN 523
1110 ? "Your time is up, 30 days have passed":GOSUB 27000:GOTO 910
1300 IF CS=Q0 THEN RETURN
1301 I=INT(RND(Q1)*CS+Q1):? "The innkeeper told of a legend of a     castle ";
1303 IF C(I)=X1 AND D(I)=Y1 THEN ? "very close by.":RETURN
1304 J=X1-C(I):I=Y1-D(I)
1305 IF ABS(I)=ABS(J) THEN ? "directly to the ";:GOTO 1307
1306 ? "somewhere to the "
1307 IF J>0 THEN ? "north";
1310 IF J<0 THEN ? "south";
1315 IF I<0 THEN ? "east."
1320 IF I>0 THEN ? "west."
1325 ? :RETURN
1600 GOSUB 27000:? "Want to go to a new forest with the  same strength and magic";:
INPUT X$
1605 IF X$(Q1,Q1)="Y" THEN 1625
1615 ? "Do you wish to go to a new forest withnew strength and magic";:INPUT X$:
IF X$(Q1,Q1)="Y" THEN RUN
1618 ? "Do you plan to use this same strength and magic again some other time";:
INPUT X$
1619 IF X$(Q1,Q1)="Y" THEN GOSUB 1700
1621 ? :? "Once again, your treasure total was ":? TL;".":IF TL>T1 THEN T1=TL
1623 IF T1<>Q0 THEN ? "The largest treasure total you got    with this strength
and magic was":? T1;"."
1624 ? "You killed ";N;" monsters.":? "You successfully worked magic on":? N2;
" Monsters.":END
1625 B=Q0:Z=Q0:DA=Q0:FOR I=Q1 TO Q11:N(I)=Q0:NEXT I:IF Q12000 THEN 1630
1640 ? "SLEEP SPELLS";:INPUT S:? "CHARMS";:INPUT R:? "INVISIBILITY";:INPUT V:
? "PREVIOUS LARGEST TOTAL";
1645 INPUT T1:GOTO 20
1650 IF T1TL THEN ? "You didn't get as much treasure this  time."
1660 RETURN
1665 ? "Your Magic total is rather large.":? "Do you wish to convert it to combat":
? "points";:INPUT X$
1670 IF X$(Q1,Q1)="N" THEN RETURN
1675 S1=S1-Q5:R1=R1-Q3:V1=V1-Q2:IF S1<=Q0 THEN S1=Q1
1680 IF R1<=Q0 THEN R1=Q1
1685 IF V1<=Q0 THEN V1=Q1
1690 S=S1:R=R1:V=V1:C=C+Q100:D=D+Q100:? "Your combat strength is permanently
increased by 100.":RETURN
1700 ? "COMBAT STRENGTH-";D:? "SLEEP SPELLS-";S1:? "CHARMS-";R1:? "INVISIBILITY-";V1:
? :RETURN
2000 DATA 5,10,10,25,20,50,30,100,40,50,50,200,60,50,70,30,80,75,90,100,100,50
9000 END
10000 I=INT(RND(Q1)*Q11)+Q1
10002 IF I=Q1 THEN M$="Goblin"
10004 IF I=Q2 THEN M$="Minotaur"
10006 IF I=Q3 THEN M$="Cyclops"
10008 IF I=Q4 THEN M$="Zombie"
10010 IF I=Q5 THEN M$="Giant"
10012 IF I=Q6 THEN M$="Harpy"
10014 IF I=Q7 THEN M$="Griffin"
10016 IF I=Q8 THEN M$="Chimera"
10018 IF I=Q9 THEN M$="Dragon"
10020 IF I=Q10 THEN M$="Wyvern"
10022 IF I=Q11 THEN M$="Basilisk"
10024 RETURN
10025 I=INT(RND(Q0)*Q11)+Q1
10030 IF I=Q1 THEN T$="10 silver spoons (10 pts)"
10032 IF I=Q2 THEN T$="a sword which might be enchanted      (25 pts)"
10034 IF I=Q3 THEN T$="50 silver coins (50 pts)"
10036 IF I=Q4 THEN T$="100 gold pieces (100 pts)"
10038 IF I=Q5 THEN T$="an emerald bracelet (50 pts)"
10040 IF I=Q6 THEN T$="a treasure chest (200 pts)"
10042 IF I=Q7 THEN T$="a pearl necklace (50 pts)"
10044 IF I=Q8 THEN T$="a jeweled sword (30 pts)"
10046 IF I=Q9 THEN T$="a jar of rubies (75 pts)"
10048 IF I=Q10 THEN T$="a box of jewels (100 pts)"
10050 IF I=Q11 THEN T$="a gold goblet (50 pts)"
10055 RETURN
11000 V=15:FOR O=Q10 TO Q100:SOUND Q1,O,Q0,V:SETCOLOR Q2,O,V:V=0.99*V:NEXT O:
FOR Z=Q0 TO Q10:NEXT Z
11005 SOUND Q1,Q0,Q0,Q0:SETCOLOR Q2,Q9,Q1:GOSUB 26000:RETURN
12000 GOSUB 26000:POSITION 12,12:SETCOLOR Q1,Q5,Q1:? "MAGIC BEING USED...":
SOUND Q1,Q0,Q0,Q3:SOUND Q0,49,Q10,Q5
12001 SETCOLOR Q2,Q1,14:SETCOLOR Q4,Q1,14:FOR O=1 TO 75:NEXT O:SOUND Q0,Q0,Q0,Q0:
SOUND Q0,25,Q10,Q5
12005 SETCOLOR Q2,Q4,14:SETCOLOR Q4,Q4,14:FOR O=Q1 TO 50:NEXT O
12006 SOUND Q0,Q0,Q0,Q0
12010 SOUND Q0,26,Q10,Q5:SETCOLOR Q2,Q5,Q10:SETCOLOR Q4,Q5,Q10:FOR O=Q1 TO 50:NEXT O:
SOUND Q0,Q0,Q0,Q0
12011 SOUND Q1,Q0,Q0,Q0
12015 GOSUB 26000:RETURN
13000 SETCOLOR Q2,Q0,Q0:SETCOLOR Q4,Q0,Q0:RESTORE 13015:FOR Z=Q1 TO 15:READ NTE:
READ DUR
13005 SOUND Q0,NTE,Q10,Q5:FOR Q=Q1 TO DUR:NEXT Q:SOUND Q0,Q0,Q0,Q0
13010 IF NTE=Q0 AND DUR=Q0 THEN SOUND Q0,Q0,Q0,Q0
13011 NEXT Z
13015 DATA 136,8,136,3,102,40,136,9,102,3,85,36,136,8,102,3,85,20,136,8,102,3,85
20,136,8,102,3,85,56,0,0
13020 GOSUB 26000:SETCOLOR Q2,Q9,Q1:RETURN
14000 FOR O=155 TO Q0 STEP -2:SOUND Q0,Q10,Q0,O:NEXT O:SOUND Q0,Q0,Q0,Q0
14005 GOSUB 26000:RETURN
15000 FOR O=255 TO Q0 STEP -3:SOUND Q0,O,O,O:NEXT O:GOSUB 26000:RETURN
16000 FOR O=Q0 TO 255 STEP Q7:SOUND Q0,O,Q2,O:NEXT O:GOSUB 26000:RETURN
17000 FOR O=15 TO Q0 STEP -0.25:SOUND Q0,50,Q10,O:NEXT O:GOSUB 26000:RETURN
19000 FOR O=Q0 TO 15 STEP 0.5:SOUND Q0,O,O,O:NEXT O
19010 FOR O=15 TO 0 STEP -0.5:SOUND 0,O,O,O:NEXT O:GOSUB 26000:RETURN
21000 FOR O=Q0 TO Q8:FOR T=Q1 TO Q8:SOUND Q0,Q10,O,O:SOUND Q1,T,T,T:NEXT T:NEXT O:
SOUND Q0,Q0,Q0,Q0
21005 SOUND Q1,Q0,Q0,Q0:GOSUB 26000:RETURN
22000 FOR O=15 TO Q0 STEP -2:SOUND Q0,Q10,Q8,O:NEXT O:SOUND Q0,Q0,Q0,Q0:GOSUB
26000:RETURN
23000 FOR O=Q0 TO 15:SOUND Q0,Q10,O,O:NEXT O:GOSUB 26000:RETURN
24000 FOR O=Q0 TO 255 STEP Q8:SOUND Q0,O,Q2,O:NEXT O:GOSUB 26000:RETURN
25000 SETCOLOR 2,5,8:SETCOLOR 4,5,8:FOR O=89 TO 24 STEP -10:SOUND 0,O,10,8:SOUND
1,O+10,10,8
25001 SOUND 2,O+20,10,8:SOUND 3,O+30,10,8:NEXT O:FOR VOL=15 TO 0 STEP -1:SOUND
0,O,10,VOL:SOUND 1,O+10,10,VOL
25002 SOUND 2,O+20,10,VOL:SOUND 3,O+30,10,VOL:NEXT VOL:GOSUB 27100:RETURN
26000 ? "}":SETCOLOR Q2,13,Q6:SETCOLOR Q4,13,Q6:SETCOLOR Q1,13,13:POKE 752,1:RETURN
27000 FOR Z=Q1 TO 200:NEXT Z:RETURN
27100 GRAPHICS 3+16:COLOR 5:PLOT Q10,Q1:DRAWTO Q12,Q1:DRAWTO Q12,Q2:DRAWTO 13,Q2:
DRAWTO 14,Q2:DRAWTO 14,Q1:DRAWTO 16,Q1:DRAWTO 16,Q5:DRAWTO 18,Q5:DRAWTO 18,Q3
27110 DRAWTO 23,Q3:DRAWTO 23,Q5:DRAWTO 25,Q5:DRAWTO 25,Q1:DRAWTO 27,Q1:DRAWTO 27,Q2:
DRAWTO 29,Q2:DRAWTO 29,Q1:DRAWTO 31,Q1:DRAWTO 31,20:DRAWTO Q10,20
27120 DRAWTO Q10,Q1:PLOT 18,19:DRAWTO 18,15:DRAWTO 19,14:DRAWTO 20,13:DRAWTO 21,13:
DRAWTO 22,14:DRAWTO 23,15:DRAWTO 23,19
27130 GOSUB 27000:RETURN
28000 SETCOLOR Q2,Q9,Q1:SETCOLOR Q4,Q9,Q1
28010 SOUND Q0,81,Q10,Q10:GOSUB 28100:SOUND Q1,64,Q10,Q10:GOSUB 28100:SOUND
Q2,53,Q10,Q10:GOSUB 28100:SOUND Q3,40,Q10,Q10
28020 FOR TIME=Q1 TO 100:NEXT TIME:FOR ZZ=Q0 TO Q3:SOUND ZZ,Q0,Q0,Q0:NEXT ZZ:RETURN
28100 FOR TIME=Q1 TO Q10:NEXT TIME:RETURN
29000 FOR O=15 TO Q0 STEP -1:SOUND Q0,Q10,Q8,O:NEXT O:SOUND Q0,Q0,Q0,Q0:GOSUB
26000:RETURN
30000 FOR O=15 TO Q0 STEP -0.2:SOUND Q0,O,Q8,O:NEXT O:GOSUB 26000:RETURN
30100 GOSUB 27000:GOSUB 26000:T=Q0
30103 ? "You made it to the enchanted castle":I=INT(RND(Q1)*21)*Q100:
J=INT(RND(Q1)*Q9):A(X1,Y1)=A(X1,Y1)-Q10000
30110 GOSUB 25000:? "You found ";I;" treasure points there":TL=TL+I:IF J<>Q7
OR M1=Q7 THEN 30125
30120 ? "You also found a mirror which will    kill any Basilisks you meet":M1=Q7
30125 J=INT(RND(Q1)*20):IF J=Q2 THEN C=Q2*C
30130 IF J=Q2 THEN ? "You also found an enchanted sword which doubles your strength."
30140 FOR I=Q1 TO CS-Q1:IF C(I)<>X1 THEN NEXT I:GOTO 30145
30141 FOR J=Q1 TO CS-Q1:C(J)=C(J+Q1):D(J)=D(J+Q1):NEXT J
30144 NEXT I
30145 CS=CS-Q1:IF CS=Q0 THEN ? "You found the last castle!"
30150 RETURN
31000 FOR O=Q1 TO Q5:FOR P=15 TO Q0 STEP -3:SOUND Q0,15,Q2,P:SOUND Q0,20,Q2,P:
NEXT P:NEXT O:SOUND Q0,Q0,Q0,Q0
31001 RETURN
32000 I=INT(RND(Q1)*Q11+Q1)
32001 ON I GOTO 32010,32020,32015,32030,32040,32050,32060,32070,32080,32090,32095
32010 POSITION 0,12:? "You stepped into a time warp and lost":? "7 days":
DA=DA+Q7:RETURN
32015 I=INT(RND(Q1)*Q10+Q1):J=DA:DA=DA-I:IF DA<0.1 THEN DA=0.1:I=J-DA
32017 POSITION 0,12:? "You stepped into a time warp and gained":? I;" days":RETURN
32020 IF C>=D THEN RETURN
32023 GOSUB 19000:? "You met an elf who gave you a magic   drink that gave your
strength back":C=D:RETURN
32030 IF V+R+S=V1+R1+S1 THEN RETURN
32033 GOSUB 19000:? "You ran into a wizard who gave you a  potion that restored
all your magic.":V=V1:R=R1:S=S1
32035 RETURN
32040 IF TLQ7 THEN RETURN
32073 GOSUB 23000:? "You tripped over some roots and broke your mirror":M1=Q0:RETURN
32080 POSITION Q2,Q12:? "A hermit told you that there are ";CS;"    castles left":RETURN
32090 IF V+S+R=0 THEN RETURN
32091 GOSUB 24000:? "You wandered into an area where magic doesn't work.":V=Q0:S=Q0:R=Q0:RETURN
32095 IF CS=Q0 THEN RETURN
32096 POSITION Q2,Q12:? "You met a hunter who told of the  legend of a castle ";:
I=INT(RND(Q1)*CS)+Q1:GOSUB 1303
32097 RETURN

Lee Chapel, 2349 Wigging, Springfield, Ill. 62704.

Shelia Spencer, Rt. 8, Orchard Hills, 4225 Beulah Cove, Claremore, OK 74017.

Table of Contents
Previous Section: Mazemaster
Next Section: Scurry