100 ! ********************************************************************** 110 ! Program DEVILS.800 Utg}va 1.0 1984-04-23 120 ! av C Williams Engel, {ndrad av T Alm 130 ! Ins{nd av T Alm 140 ! F|r ABC800M ABC800C ABC802 ABC806 150 ! Testad p} ABC806 160 ! 170 ! Screened by --"-TCP-"-- 190 ! ********************************************************************** 200 REM Devil's Dungeon 210 REM ac C. William Engel 1978 220 REM Engel Enterprises,P.O. Box 16612, 230 REM Tampa, Florida 33687, USA 240 REM Implementerad p} ABC80 av T.Alm 250 REM CoSimSweden 260 REM Set rooms 270 INTEGER : NO EXTEND 280 DIM R.(16),L(65),F(16),X(19),B(16) 290 L=1 : G=0 : E=0 : X=16 300 D=1 : Y1=101 : Y2=101 310 GOSUB 1470 320 RANDOMIZE 330 FOR I=0 TO 65 : L(I)=0 : NEXT I 340 FOR I=1 TO X : N=3.*RND+1 350 IF I=1 THEN N=3 360 FOR J=1 TO N 370 R=64.*RND+1 380 IF L(R) THEN 370 390 L(R)=I 400 NEXT J 410 R.(I)=INT(524287.*RND) : B(I)=0 420 NEXT I : B(L)=1 430 R.(1)=24576. : FOR I=1 TO 19 : X(I)=0 : NEXT I 440 REM Hazards 450 IF RND<.01 THEN ; "Jordb{vning" : FOR I=1 TO 20 : L(I)=X*RND+1 : NEXT I 460 IF RND<.01 THEN ; "Jordb{vning" : FOR I=1 TO 20 : L(I)=0 : NEXT I 470 IF X(1)*X(12) AND (RND<.4) THEN ; "F|rbannad av en Demon" : Y2=Y2/2 480 IF X(9)*X(11) AND (RND<.4) THEN ; "Gasad!" : Y1=Y1/2 490 REM Decrement and test 500 Y1=Y1-D 510 Y2=Y2-D 520 IF Y1<=0 OR Y2<=0 THEN ; "Du {r d|d!" : STOP 530 REM output Status 540 ; : ; "Guld";G;" "; 550 ; "Erf.";E;" Djup";D 560 ; "Hastighet:";Y2;" Styrka: ";Y1 : GOSUB 580 : GOTO 650 570 REM Adjacent rooms 580 FOR I=1 TO X : F(I)=0 : NEXT I 590 FOR I=1 TO 64 600 IF L<>L(I) THEN 630 610 IF L(I+1) AND (L(I+1)<>L) THEN F(L(I+1))=1 620 IF L(I-1) AND (L(I-1)<>L) THEN F(L(I-1))=1 630 NEXT I : RETURN 640 REM convert 650 N.=R.(L) 660 FOR I=1 TO 19 : Q.=INT(N./2.) : X(I)=2.*(N./2.-Q.) : N.=Q. : NEXT I 670 REM Monsters, Demons, Gas 680 IF X(2)=0 THEN M1=0 : GOTO 730 690 IF F=1 THEN 720 700 M1=D*(X(3)+2*X(4)+4*X(5)+L) 710 M2=D*(X(6)+2*X(7)+4*X(8)+L) 720 ; "Monstrets hastighet:";M2;" Styrka:";M1 730 IF X(1)*X(12)=1 THEN ; "Demoner" 740 IF X(9)*X(11)=1 THEN ; "Giftgas" 750 REM skatter 760 IF X(10)<>1 THEN T=0 : GOTO 800 770 T=X(11)+2.*X(12)+4*X(13)+1 780 ; "Maximal m{ngd Guld:";T*L*D+1 790 REM slides and dropoffs 800 S=X(15)+2.*X(16)+4*X(17)+8*X(18)+1 810 IF S>X THEN S=1 820 IF S=0 THEN S=1 830 IF X(14)=0 OR S=L THEN 850 840 ; "Passage till:" S 850 IF X(19)*X(13)=1 THEN ; "Dropoff" 860 REM input move 870 ; "Flytta fr}n";L;" till"; 880 FOR I=1 TO X 890 IF F(I)=1 AND I<>L THEN ; I; 900 NEXT I 910 INPUT M : IF M=88 THEN 1380 920 IF M=77 THEN GOSUB 1470 : GOTO 540 930 IF M=66 THEN GOSUB 1750 : GOTO 540 940 IF M<0 AND X(19)*X(13)=1 THEN D=D+1 : F=0 : GOTO 330 950 IF M<0 THEN ; "Ingen dropoff" : GOTO 450 960 IF M>X AND L=1 THEN ; "Du fann";G;" guldstycken." : STOP 970 IF M<=X THEN 1020 980 REM Magic wand 990 IF RND<.4 THEN ; "Backfire" : Y1=Y1/2 : Y2=Y2/2 : GOTO 450 1000 ; "Trollstaven fungerar" : R.(L)=266240. : GOTO 540 1010 REM move trade 1020 IF M1>0 THEN 1120 1030 IF M<>0 OR L<>1 THEN 1290 1040 ; "Erfarenhet:";E;" Hastighet:";Y2;" Styrka:";Y1 : ; "\ka hastighet"; : INPUT N 1050 IF E-N<0 THEN ; "Beh|ver mer erfarenhet." : GOTO 1040 1060 E=E-N : Y2=Y2+N : ; "Erfarenhet kvar:";E 1070 ; "\ka styrka:"; : INPUT N 1080 IF E-N<0 THEN ; "Beh|ver mer erfarenhet:" : GOTO 1070 1090 E=E-N : Y1=Y1+N 1100 GOTO 540 1110 REM strid 1120 F=1 1130 IF M>0 THEN 1260 1140 Y3=RND*Y1 : M3=RND*M1 1150 IF Y3>M1 THEN Y3=M1 1160 IF M3>Y1 THEN M3=Y1 1170 IF RND*Y2>RND*M2 THEN 1200 1180 ; "Monstret anfaller" : Y1=Y1-M3 : M1=M1-Y3/2 1190 GOTO 1210 1200 ; "Du anfaller" : M1=M1-Y3 : Y1=Y1-M3/2 1210 E=E+2*Y3 1220 IF M1<=0 THEN ; "Monstret har d|tt!" : R.(L)=R.(L)-2. : GOTO 450 1230 ; 1240 ; "Monstret lever {nnu" : GOTO 450 1250 REM spring som bara den 1260 IF RND*Y2>RND*M2 THEN ; "Undkom" : GOTO 1350 1270 ; "Monstret tr{ffade dig" : Y1=Y1-M1*.2 : GOTO 1350 1280 REM Skatter 1290 IF T=0 THEN 1350 1300 G1=RND*T*L*D+1 1310 IF X(1)*X(12)=1 AND RND<.4 THEN ; "Demonen tog guldet!" : G1=0 1320 ; "Du fann";G1;" guldstycken." : G=G+G1 : R.(L)=R.(L)-512. 1330 E=E+G1 1340 REM move 1350 IF F(M)=1 OR M=S THEN L=M : F=0 : E=E+D : B(L)=1 : GOTO 450 1360 ; "Ej bredvid" : GOTO 450 1370 REM print rooms 1380 L1=L : FOR K=1 TO X 1390 IF B(K)<>1 THEN 1450 1400 ; K;"--"; 1410 L=K : GOSUB 580 1420 FOR J=1 TO X 1430 IF F(J)=1 AND J<>K THEN ; J; 1440 NEXT J : ; 1450 NEXT K 1460 L=L1 : GOTO 540 1470 REM Instruktioner 1480 ; CHR$(12);TAB(12);"Devil's Dungeon" 1490 ; TAB(12);"======= =======" 1500 ; "Du befinner dig i ett grottsystem,l}ngt ned under jorden. Det {r fyllt med en" 1510 ; "m{ngd fasansfulla monster, demoner och giftgas-fyllda rum. I grottorna finns" 1520 ; "det ocks} en m{ngd skatter av guld. Din uppgift {r att finna guldet och d|da" 1530 ; "monstren och |verleva. Det senare {r mycket sv}rt, s{rskilt l{ngre ned." 1540 ; "P} varje niv} finns det max 16 rum, som {r f{rbundna som en labyrint. F|r att" 1550 ; "veta var du {r, skriver datorn ut rums- nummer och var du kan g} varje drag." 1560 ; "Vid f{rflyttning anget n{sta rum. F|r att veta var du varit, skriv 88." 1570 ; "F|r att f} guldet i ett rum med ett mon-ster, m}ste du d|da detta. Om du ger 0" 1580 ; "g|rs en attack. N{r monstret {r d|dat erh}lls erfarenhetspo{ng f|r s}v{l" 1590 ; "monster som guld. I rum #1 kan du sedan v{xla EP mot styrka och snabbhet. F|r " 1600 ; "att f|rflytta sig eller sl}ss, kr{vs attman har styrkepo{ng och hastighetspo{ng."; 1610 ; " N{r du l{st, tryck RETURN"; : GET A$ 1620 ; CHR$(12);"I vissa rum anges 'Dropoff. Det inneb{r att man genom att ge -1 g}r ned 1 niv}." 1630 ; "D} skapas ett nytt grottsystem med v{rremonster etc. Ju h|gre niv} ju st|rre" 1640 ; "monster och desto st|rre erfarenhets- po{ng. Gas och Demoner halverar fart" 1650 ; "resp. styrka om man ar otur(40%).Om man ger 77, erh}lls reglerna p} nytt." 1660 ; "Vid 'Jordb{vning' rasar vissa g}ngar igen, under det att andra skapas." 1670 ; "Om man ger 88, erh}ller man kartan som den nu {r. " 1680 ; " En 'Dropoff' kan man skapa med hj{lp av den medhavda Trollstaven. Tyv{rr finns" 1690 ; "det en stor risk f|r 'Backfire'. Om det intr{ffar halveras styrka och fart." 1700 ; "Om man lyckas, d|dar man i st{llet mon- stret och f}r guld och EP." 1710 ; "V{l nere p} l{gre niv}, kan man aldrig komma upp igen. F|r att v{xla till sig" 1720 ; "styrka och fart, m}ste man hitta rum #1 p} den nya niv}n. Lyckas man ej med det" 1730 ; "Kommer man att d| av utmattning d} fart eller styrka g}r ned till 0." 1740 ; " N{r du l{st, tryck RETURN" : GET A$ 1750 ; CHR$(12);" Sammanfattning." 1760 ; " Rum #1 p} en niv}" 1770 ; "F|r att byta till sig ge 0" 1780 ; "styrka eller fart." 1790 ; 1800 ; "F|r att sluta spelet ge 99" 1810 ; 1820 ; " \vriga rum p} en niv}" 1830 ; "F|r att attakera monster ge 0" 1840 ; "F|r att g|ra 'Dropoff' ge -1" 1850 ; "F|r att nyttja Trollstav ge 99" 1860 ; 1870 ; " I alla rum" 1880 ; "F|r att flytta till ett ge rumnummer" 1890 ; "rum bredvid." 1900 ; 1910 ; "F|r att f} k{nda rum och ge 88" 1920 ; "g}ngar." 1930 ; 1940 ; "F|r att f} instruktioner ge 77" 1950 ; "F|r att f} sammanfattning ge 66" 1960 ; : ; 1970 ; " F|r att starta, tryck RETURN" : GET A$ 1980 RETURN