Monster Combat
Lee Chapel
Translated for the Atari by Shelia Spencer
|
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.
|
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 Y1 Q10 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 I Q11 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 X Q1 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 N Q5 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 X Q10 THEN Y=Y-Q10:Y1=Y1+Q1:IF Y>Q10 THEN 555 560 IF Y A1 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 A Q5 THEN I=Q5 615 IF I Q5 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 I Q6 THEN ? "It didn't work.":GOTO 480 733 IF M>50 AND I 50 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 A 3 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 Q1 2000 THEN 1630 1640 ? "SLEEP SPELLS";:INPUT S:? "CHARMS";:INPUT R:? "INVISIBILITY";:INPUT V: ? "PREVIOUS LARGEST TOTAL"; 1645 INPUT T1:GOTO 20 1650 IF T1 TL 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 TL Q7 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