10 GOSUB 1060 20 paper 0:CLS 30 LET J=1:LET H=MP:LET H$="POINTS" 40 GOSUB 810:GOSUB 900 50 LET K=1:LET P=T+1 60 PRINT tab(1,P);">"; ' Look up the PRINT command for your computer ' on page 32 every time you see a command like ' this. 70 GOSUB 720 80 IF K=5 THEN GOTO 70 90 IF I$=";" AND H>0 THEN LET F(J,K)=F(J,K)+1:LET H=H-1:GOSUB 920 100 IF I$="-" AND F(J,K)>1 THEN LET F(J,K)=F(J,K)-1:LET H=H+1:GOSUB 920 110 LET C=1 120 IF F(1,4)>6 AND F(1,8)>7 THEN LET C=2 130 IF F(1,4)>8 AND F(1,7)>7 THEN LET C=3 140 IF F(1,1)>7 AND F(1,8)>5 AND F(1,1)+F(1,2)>10 THEN LET C=4 150 IF F(1,1)>8 AND F(1,2)+F(1,3)>12 AND F(1,8)<6 THEN LET C=5 160 LET M$=C$(C) 170 GOSUB 860 180 IF I$<>" " THEN GOTO 70 190 LET H=GC:LET H$="GOLD COINS:" 200 FOR J=2 TO 4 210 LET K=1:LET P=T+1 220 LET M$="CHOOSE WELL SIRE!" 230 GOSUB 810 240 GOSUB 900 250 PRINT tab(1,P);">"; 260 GOSUB 720 270 LET N=8*(J-2)+K 280 LET M$="MAKE YOUR CHOICE" 290 GOSUB 680 300 LET BR=0:LET OF=0 310 IF I$=";" THEN LET OF=F(J,K):GOSUB 610 320 IF I$="-" THEN LET BR=rnd(3):GOSUB 570 'This line gets the 'computer to create a 'random bargain price 'as much as three gold 'coins less than the 'original price. The 'random command 'varies. Find the right 'one for your computer 'from this box. 330 GOSUB 860 340 IF I$<>" " THEN GOTO 260 350 NEXT J 360 PRINT tab(1,2);"NAME THY CHARACTER"; 370 PRINT tab(1,3);LEFT$(B$,W-2);:PRINT tab(1,3); 380 INPUT N$ 390 IF LEN(N$)>10 THEN GOTO 360 400 PRINT tab(1,3);"ONE MOMENT PLEASE"; 410 PRINT tab(1,3); 420 LET D=D*3 430 LET S$=CHR$(O+AS) 440 FOR I=1 TO 8 450 LET S$=S$+CHR$(F(1,I)+AS) 460 NEXT I 470 FOR I=1 TO O 480 LET S$=S$+CHR$(O(I)+AS) 490 NEXT I 500 LET S$=S$+CHR$(H+AS) 510 LET S$=S$+CHR$(AS) 'This line equals 0 at the moment as it will be 'used for counting treasure and your character 'does not have any when they start the 'game. The line must be included, though, or 'the computer won't know where to store 'treasure when it is found. 520 LET S$=S$+N$+" -"+C$(C) 530 LET S=OPENOUT "HERO" 540 PRINT#S,S$ 550 CLOSE#S 560 STOP 570 LET M$="":GOSUB 860 580 PRINT tab(2,2);"YOUR OFFER"; 590 INPUT OF 600 GOSUB 680 610 IF O(N)>0 AND N<23 THEN LET M$="YOU HAVE IT SIRE":RETURN 620 LET PR=F(J,K)-BR 630 IF H=PR AND Y=1 THEN LET O(N)=O(N)+P(N):LET H=H-PR:LET M$="TIS YOURS'" 650 IF OF1 THEN LET K=K-1 770 IF I$="Z" AND K"; 800 RETURN 810 paper 0:ink 2 ' * 820 PRINT tab(0,0);LEFT$(B$,W); 830 PRINT tab(0,0);F$(J,9) 840 LET BG=2:LET FG=3:LET T=1:LET L=2 850 GOSUB 980 860 paper 2:ink 0 ' * 870 PRINT tab(2,20;LEFT$(B$,17);tab(2,2);M$; 880 PRINT tab(2,3);H$;tab(15,3);H;" "; 890 RETURN 900 LET BG=3:LET FG=2:LET T=5:LET L=15 910 GOSUB 980 920 paper 3, ink 0 ' * 930 FOR I=1 TO 8 940 LET Y=T+(I-1)*2+1 950 PRINT tab(2,Y);F$(J,I);tab(16,Y);F(J,I);" "; 960 NEXT I 970 RETURN 980 PRINT tab(0,T); 990 paper FG:PRINT LEFT$(B$,W); 1000 paper BG:ink FG 1010 FOR I=1 TO L 1020 PRINT CHR$(B);LEFT$(B$,W-2);CHR$(B); 1030 NEXT I 1040 paper FG:PRINT LEFT$(B$,W); 1050 RETURN 1060 GOSUB 1600 ' Initialisation starts here. Lines 1080-1130 ' dimension the arrays. 1070 LET D=8 1080 DIM F(4,D+1) 1090 DIM F$(4,D+1) 1100 DIM C$(5) 1110 DIM O(D*3) 1120 DIM O$(D*3) 1130 DIM P(D*3) REM These are the flags. 1140 DATA "00001","00011","10011","10011","10011","00011","11111","10011" 1150 DATA "00011","00011","10011","11111","00011","11011","11011","11111" 1160 DATA "11100","00100","11100","10100","11100","11100","11111","11111" 1170 FOR I=1 TO D*3 1180 READ O$(I) 1190 NEXT I 1200 FOR I=1 TO 8 1210 LET F(1,I)=rnd(5)+2 1220 NEXT I 1230 LET F(1,5)=1 1240 DATA 20,16,12,15,8,10,8,6 1250 DATA 18,15,9,9,14,8,6,6 1260 DATA 20,15,14,12,10,8,6,6 1270 FOR J=2 TO 4 1280 FOR I=1 TO 8 1290 READ F(J,I) 1300 NEXT I 1310 NEXT J 1320 DATA 5,4,3,3,2,2,1,1 1330 DATA 5,4,3,1,2,1,3,1 1340 DATA 4,3,2,2,3,1,1,1 1350 FOR I=1 TO D*3 1360 READ P(I) 1370 NEXT I REM Here's the array holding the names of attributes and all the REM things that you can buy. 1380 DATA "STRENGTH","VITALITY","AGILITY","INTELLIGENCE" 1390 DATA "EXPERIENCE","LUCK","AURA","MORALITY","CHARACTER CREATION" 1400 DATA "2 HAND SWORD","BROADSWORD","SHORTSWORD" 1410 DATA "AXE","MACE","FLAIL","DAGGER","GAUNTLET","ARMOURY" 1420 DATA "HEAVY ARMOUR","CHAIN ARMOUR","LEATHER ARMOUR","HEAVY ROBE" 1430 DATA "GOLD HELMET","HEADPIECE","SHIELD","TORCH","ACCOUTREMENTS" 1440 DATA "NECRONOMICON","SCROLLS","RING","MYSTIC AMULET","SASH","CLOAK" 1450 DATA "HEALING SALVE","POTIONS","EMPORIUM" 1460 FOR J=1 TO 4 1470 FOR I=1 TO 9 1480 READ F$(J,I) 1490 NEXT I 1500 NEXT J REM 'Here are the names of the character types you can create. 1510 DATA "WANDERER","CLERIC","MAGE","WARRIOR","BARBARIAN" 1520 FOR I=1 TO 5 1530 READ C$(I) 1540 NEXT I 1550 LET MP=3+rnd(5) 1560 LET GC=120+rnd(60) 1570 LET M$="":LET AS=65 1580 LET B$="":FOR I=1 TO W:LET B$=B$+" ":NEXT I 1590 RETURN REM SET UP DETAILS REM GENERAL CONVERSIONS REM REM COMMAND tab(X,Y); REM BBC/ELECTRON TAB(X,Y); REM SPECTRUM AT Y,X REM C64/VIC HM$;LEFT$(CU$,Y);SPC(X); REM REM COMMAND X$=inkey$ REM BBC/ELECTRON X$=INKEY$(0) REM SPECTRUM X$=INKEY$ REM C64/VIC GET X$ REM REM COMMAND paper X REM BBC/ELECTRON COLOUR X+128 REM SPECTRUM PAPER C(X+1) REM C64/VIC PRINT BG$(X); REM REM COMMAND ink X REM BBC/ELECTRON COLOUR X REM SPECTRUM INK C(X+1) REM C64/VIC REM REM COMMAND rnd(X) REM BBC/ELECTRON RND(X) REM SPECTRUM INT(RND*X+1) REM C64/VIC INT(RND(1)*X+1) REM BBC/ELECTRON 1600 MODE 5:VDU 23,0,8202;0;0;0; 1610 W=20:B=224 1620 VDU 23,224,255,255,255,255,255,255,255,255 1630 RETURN REM COMMODORE 64/VIC REM VIC EVERY INIT POKE 44,28:POKE 642,28:SYS(64824) REM BOTH COMMODORE 64/VIC 20 PRINT CHR$(147) 90 REM REPLACE ";" WITH "+" 310 REM REPLACE ";" WITH "+" 380 X=1:Y=3:GOSUB 1700:N$=IN$ 530 OPEN 1,1,1,"HERO" 540 PRINT#1,S$ 550 CLOSE 1 590 X=14:Y=2:GOSUB 1700:OF=VAL(IN$) 875 PRINT HM$:LEFT$(CU$,3);SPC(15);LEFT$(B$,4); 945 PRINT HM$:LEFT$(CU$,Y);SPC(15);LEFT$(B$,5); 1020 PRINT BG$(FG);" ";BG$(BG);LEFT$(B$,W-2);BG$(FG);" "; 1610 GOSUB 4000 1650 RETURN 1700 IN$="" 1710 GET I$:IF I$=CHR$(13) THEN RETURN 1720 IF I$>"/" AND I$<"???" THEN LET IN$=IN$+I$:PRINT HM$;LEFT$(CU$,Y);SPC(X);IN$; 1730 GOTO 1710 4000 BG$(0)=CHR$(146):BG$(1)=CHR$(18)+CHR$(28) 4010 BG$(2)=CHR$(18)+CHR$(158):BG$(3)=CHR$(18)+CHR$(5) 4020 HM$=CHR$(19):CU$="":FOR I=1 TO W:LET CU$=CU$+CHR$(17):NEXT I 4030 POKE 650,255:RETURN REM COMMODORE ONLY 25 POKE 53280,0:POKE 53281,0 1600 LET W=40 REM VIC ONLY 25 POKE 36879,8 1600 LET W=22 REM SPECTRUM 20 BORDER 0:CLS 90 REM REPLACE ";" WITH "K" 310 REM REPLACE ";" WITH "K" 100 REM REPLACE "-" WITH "J" 320 REM REPLACE "-" WITH "J" 370 REM REPLACE LEFT$ (B$,exp) WITH B$( TO exp) 820 REM REPLACE LEFT$ (B$,exp) WITH B$( TO exp) 870 REM REPLACE LEFT$ (B$,exp) WITH B$( TO exp) 990 REM REPLACE LEFT$ (B$,exp) WITH B$( TO exp) 1020 REM REPLACE LEFT$ (B$,exp) WITH B$( TO exp) 1040 REM REPLACE LEFT$ (B$,exp) WITH B$( TO exp) 530 LET Q$(1)=S$ 540 SAVE "HERO" DATA Q$() 550 REM LEAVE OUT THIS LINE 690 IF O$(N)(C)="1" THEN LET Y=1 1090 DIM F$(4,D+1,18) 1100 DIM C$(5,9) 1120 DIM O$(D*3,5):DIM Q$(1,57) 1600 LET B=143:LET W=32 1610 DIM C(4):LET C(1)=0;LET C(2)=2:LET C(3)=6:LET C(4)=7 1620 RETURN