diff --git a/samples/index.txt b/samples/index.txt index 8fb8d00..fbe91b3 100644 --- a/samples/index.txt +++ b/samples/index.txt @@ -32,6 +32,7 @@ sample.building Building (Melvin Rosario) sample.artillery Artillery (Michael "Moose" O'Malley) sample.platformer Platformer (Beckett Bylsma & Brendan Ghareeb) sample.randommaze Maze Generator (Alan Ratliff) +sample.wizardscastle Wizard's Castle (Joseph R. Power, J.F.Stetson) # ____________________________________________ # Graphics diff --git a/samples/sample.wizardscastle.txt b/samples/sample.wizardscastle.txt new file mode 100644 index 0000000..0d30bdd --- /dev/null +++ b/samples/sample.wizardscastle.txt @@ -0,0 +1,917 @@ +1000 REM ***************************************************** +1005 REM * * +1010 REM * WIZARD'S CASTLE GAME FROM JULY/AUGUST 1980 * +1015 REM * ISSUE OF RECREATIONAL COMPUTING MAGAZINE * +1020 REM * WRITTEN FOR EXIDY SORCERER BY JOSEPH R. POWER * +1025 REM * MODIFIED FOR HEATH MICROSOFT BASIC BY J.F.STETSON * +1030 REM * * +1035 REM ***************************************************** +1040 DEFINT A-Z +1045 DIM C$(34),I$(34),R$(4),W$(8),E$(8) +1050 DIM L(512),C(3,4),T(8),O(3),R(3) +1055 DEF FNA(Q)=1+INT(RND(1)*Q) +1060 DEF FNB(Q)=Q+8*((Q=9)-(Q=0)) +1065 DEF FNC(Q)=-Q*(Q<19)-18*(Q>18) +1070 DEF FND(Q)=64*(Q-1)+8*(X-1)+Y +1075 DEF FNE(Q)=Q+100*(Q>99) +1080 Y$="** PLEASE ANSWER YES OR NO" +1085 NG=0 +1090 REM +1095 REM INITIALIZE ARRAYS +1100 REM +1105 NG=NG+1 +1110 Q=RND(1) +1115 RESTORE +1120 FOR Q=1 TO 34 +1125 READ C$(Q),I$(Q) +1130 NEXT Q +1135 FOR Q=1 TO 512 +1140 L(Q)=101 +1145 NEXT Q +1150 FOR Q=1 TO 8 +1155 READ W$(Q),E$(Q) +1160 NEXT Q +1165 FOR Q=1 TO 4 +1170 READ R$(Q) +1175 NEXT Q +1180 IF NG > 1 GOTO 1250 +1185 PRINT CHR$(27);"E" +1190 GOSUB 5375 +1195 PRINT TAB(16);"* * * THE WIZARD'S CASTLE * * *" +1200 PRINT +1205 GOSUB 5375 +1210 PRINT "MANY CYCLES AGO, IN THE KINGDOM OF N'DIC, THE GNOMIC" +1215 PRINT "WIZARD ZOT FORGED HIS GREAT *ORB OF POWER*. HE SOON" +1220 PRINT "VANISHED, LEAVING BEHIND HIS VAST SUBTERRANEAN CASTLE" +1225 PRINT "FILLED WITH ESURIENT MONSTERS, FABULOUS TREASURES, AND" +1230 PRINT "THE INCREDIBLE *ORB OF ZOT*. FROM THAT TIME HENCE, MANY" +1235 PRINT "A BOLD YOUTH HAS VENTURED INTO THE WIZARD'S CASTLE. AS" +1240 PRINT "OF NOW, *NONE* HAS EVER EMERGED VICTORIOUSLY! BEWARE!!" +1245 PRINT +1250 X=1 : Y=4 +1255 L(FND(1))=2 +1260 FOR Z=1 TO 7 +1265 FOR Q1=1 TO 2 +1270 Q=104 +1275 GOSUB 5285 +1280 L(FND(Z+1))=103 +1285 NEXT Q1 +1290 NEXT Z +1295 FOR Z=1 TO 8 +1300 FOR Q=113 TO 124 +1305 GOSUB 5285 +1310 NEXT Q +1315 FOR Q1=1 TO 3 +1320 FOR Q=105 TO 112 +1325 GOSUB 5285 +1330 NEXT Q +1335 Q=125 +1340 GOSUB 5285 +1345 NEXT Q1 +1350 NEXT Z +1355 FOR Q=126 TO 133 +1360 Z=FNA(8) +1365 GOSUB 5285 +1370 NEXT Q +1375 Q=101 +1380 FOR A=1 TO 3 +1385 Z=FNA(8) +1390 GOSUB 5285 +1395 C(A,1)=X +1400 C(A,2)=Y +1405 C(A,3)=Z +1410 C(A,4)=0 +1415 NEXT A +1420 RC=0 +1425 ST=2 +1430 DX=14 +1435 R$(3)="MAN" +1440 Q=112+FNA(12) +1445 Z=FNA(8) +1450 GOSUB 5285 +1455 R(1)=X +1460 R(2)=Y +1465 R(3)=Z +1470 Q=109 +1475 Z=FNA(8) +1480 GOSUB 5285 +1485 O(1)=X +1490 O(2)=Y +1495 O(3)=Z +1500 BF=0 : OT=8 : AV=0 : HT=0 : T=1 : VF=0 : LF=0 +1505 TC=0 : GP=60 : RF=0 : OF=0 : BL=0 : IQ=8 : SX=0 +1510 FOR Q=1 TO 8 +1515 T(Q)=0 +1520 NEXT Q +1525 PRINT CHR$(7); +1530 PRINT "ALL RIGHT, BOLD ONE." +1535 PRINT "YOU MAY BE AN ELF, DWARF, MAN, OR HOBBIT." +1540 GOSUB 5405 +1545 FOR Q=1 TO 4 +1550 IF LEFT$(R$(Q),1)=O$ THEN RC=Q : ST=ST+2*Q : DX=DX-2*Q +1555 NEXT Q +1560 PRINT +1565 OT=OT+4*(RC=1) +1570 IF RC > 0 THEN R$(3)="HUMAN" : GOTO 1585 +1575 PRINT "** THAT WAS INCORRECT. PLEASE TYPE E, D, M, OR H." +1580 GOTO 1535 +1585 PRINT "WHICH SEX TO YOU PREFER"; +1590 GOSUB 5415 +1595 IF O$="M" THEN SX=1 : GOTO 1615 +1600 IF O$="F" GOTO 1615 +1605 PRINT "** CUTE ";R$(RC);", REAL CUTE. TRY M OR F." +1610 GOTO 1585 +1615 PRINT +1620 PRINT "OK, ";R$(RC);", YOU HAVE THE FOLLOWING ATTRIBUTES :" +1625 PRINT "STRENGTH =";ST;" INTELLIGENCE =";IQ;" DEXTERITY =";DX +1630 PRINT "AND";OT;"OTHER POINTS TO ALLOCATE AS YOU WISH." +1635 PRINT +1640 Z$="STRENGTH" +1645 GOSUB 5430 +1650 ST=ST+Q +1655 IF OT=0 GOTO 1695 +1660 Z$="INTELLIGENCE" +1665 GOSUB 5430 +1670 IQ=IQ+Q +1675 IF OT=0 GOTO 1695 +1680 Z$="DEXTERITY" +1685 GOSUB 5430 +1690 DX=DX+Q +1695 PRINT "OK, ";R$(RC);", YOU HAVE 60 GOLD PIECES (GP'S)." +1700 Z$="ARMOR" +1705 GOSUB 5555 +1710 AV=0 : WV=0 : FL=0 : WC=0 +1715 PRINT "PLATE<30> CHAINMAIL<20> LEATHER<10> NOTHING<0>" +1720 GOSUB 5405 +1725 IF O$="N" GOTO 1755 +1730 AV=-3*(O$="P")-2*(O$="C")-(O$="L") +1735 IF AV > 0 GOTO 1755 +1740 PRINT +1745 PRINT "** ARE YOU A ";R$(RC);" OR ";C$(FNA(12)+12);"?" +1750 GOTO 1700 +1755 AH=AV*7 : GP=GP-AV*10 +1760 PRINT +1765 PRINT "OK, BOLD ";R$(RC);", YOU HAVE";GP;"GP'S LEFT." +1770 Z$="WEAPONS" +1775 GOSUB 5555 +1780 PRINT "SWORD<30> MACE<20> DAGGER<10> NOTHING<0>" +1785 GOSUB 5405 +1790 IF O$="N" GOTO 1820 +1795 WV=-3*(O$="S")-2*(O$="M")-(O$="D") +1800 IF WV > 0 GOTO 1820 +1805 PRINT +1810 PRINT "** IS YOUR IQ REALLY";IQ;"?" +1815 GOTO 1770 +1820 GP=GP-WV*10 +1825 IF GP < 20 GOTO 1855 +1830 PRINT +1835 PRINT "DO YOU WANT TO BUY A LAMP FOR 20 GP'S"; +1840 GOSUB 5415 +1845 IF O$="Y" THEN LF=1 : GP=GP-20 : GOTO 1855 +1850 IF O$ <> "N" THEN PRINT : PRINT Y$ : PRINT : GOTO 1835 +1855 PRINT +1860 IF GP < 1 THEN Q=0 : GOTO 1915 +1865 PRINT "OK, ";R$(RC);", YOU HAVE";GP;"GOLD PIECES LEFT." +1870 PRINT +1875 INPUT "FLARES COST 1 GP EACH. HOW MANY DO YOU WANT";O$ +1880 Q=VAL(O$) +1885 PRINT +1890 IF Q > 0 OR ASC(O$)=48 GOTO 1910 +1895 PRINT "** IF YOU DON'T WANT ANY, JUST TYPE 0 (ZERO)." +1900 PRINT +1905 GOTO 1875 +1910 IF Q > GP THEN PRINT "** YOU CAN ONLY AFFORD";GP;"." : PRINT : GOTO 1875 +1915 FL=FL+Q : GP=GP-Q +1920 X=1 : Y=4 : Z=1 +1925 PRINT "OK, ";R$(RC);", YOU ARE NOW ENTERING THE CASTLE!" +1930 GOTO 3450 +1935 REM +1940 REM MAIN PROCESSING LOOP +1945 REM +1950 T=T+1 +1955 IF RF+OF > 0 GOTO 2020 +1960 IF C(1,4) > T(1) THEN T=T+1 +1965 IF C(2,4) > T(3) THEN GP=GP-FNA(5) +1970 IF GP < 0 THEN GP=0 +1975 IF C(3,4) <= T(5) GOTO 2020 +1980 A=X : B=Y : C=Z +1985 X=FNA(8) : Y=FNA(8) : Z=FNA(8) +1990 L(FND(Z))=FNE(L(FND(Z)))+100 +1995 X=A : Y=B : Z=C +2000 IF L(FND(Z)) <> 1 GOTO 2020 +2005 FOR Q=1 TO 3 +2010 C(Q,4)=-(C(Q,1)=X)*(C(Q,2)=Y)*(C(Q,3)=Z) +2015 NEXT Q +2020 IF FNA(5) > 1 GOTO 2165 +2025 PRINT +2030 PRINT "YOU "; +2035 Q=FNA(7)+BL +2040 IF Q > 7 THEN Q=4 +2045 ON Q GOSUB 2125,2065,2115,2055,2135,2145,2155 +2050 GOTO 2165 +2055 PRINT "STEPPED ON A FROG!" +2060 RETURN +2065 PRINT "HEAR "; +2070 ON FNA(4) GOTO 2075,2085,2095,2105 +2075 PRINT "A SCREAM!" +2080 RETURN +2085 PRINT "FOOTSTEPS!" +2090 RETURN +2095 PRINT "A WUMPUS!" +2100 RETURN +2105 PRINT "THUNDER!" +2110 RETURN +2115 PRINT "SNEEZED!" +2120 RETURN +2125 PRINT "SEE A BAT FLY BY!" +2130 RETURN +2135 PRINT "SMELL ";C$(12+FNA(13));" FRYING!" +2140 RETURN +2145 PRINT "FEEL LIKE YOU'RE BEING WATCHED!" +2150 RETURN +2155 PRINT "HEAR FAINT RUSTLING NOISES!" +2160 RETURN +2165 IF BL+T(4) <> 2 GOTO 2185 +2170 PRINT +2175 PRINT C$(29);" CURES YOUR BLINDNESS!" +2180 BL=0 +2185 IF BF+T(6) <> 2 GOTO 2205 +2190 PRINT +2195 PRINT C$(31);" DISSOLVES THE BOOK!" +2200 BF=0 +2205 PRINT +2210 LINE INPUT "ENTER YOUR COMMAND : ";O$ +2215 IF LEFT$(O$,2)="DR" GOTO 2870 +2220 O$=LEFT$(O$,1) +2225 IF O$="N" GOTO 2435 +2230 IF (O$="S") OR (O$="W") OR (O$="E") GOTO 2440 +2235 IF O$="U" GOTO 2465 +2240 IF O$="D" GOTO 2480 +2245 IF O$="M" GOTO 2505 +2250 IF O$="F" THEN ON BL+1 GOTO 2620,2505 +2255 IF O$="L" THEN ON BL+1 GOTO 2750,2505 +2260 IF O$="O" GOTO 2965 +2265 IF O$="G" THEN ON BL+1 GOTO 3185,2505 +2270 IF O$="T" THEN PRINT : ON RF+1 GOTO 3315,3335 +2275 IF O$="Q" GOTO 3390 +2280 IF O$<>"H" GOTO 2420 +2285 PRINT CHR$(27);"E" +2290 PRINT "*** WIZARD'S CASTLE COMMAND AND INFORMATION SUMMARY ***" +2295 PRINT +2300 PRINT "THE FOLLOWING COMMANDS ARE AVAILABLE :" +2305 PRINT +2310 PRINT "H/ELP N/ORTH S/OUTH E/AST W/EST U/P" +2315 PRINT "D/OWN DR/INK M/AP F/LARE L/AMP O/PEN" +2320 PRINT "G/AZE T/ELEPORT Q/UIT" +2325 PRINT +2330 PRINT "THE CONTENTS OF ROOMS ARE AS FOLLOWS :" +2335 PRINT +2340 PRINT ". = EMPTY ROOM B = BOOK C = CHEST" +2345 PRINT "D = STAIRS DOWN E = ENTRANCE/EXIT F = FLARES" +2350 PRINT "G = GOLD PIECES M = MONSTER O = CRYSTAL ORB" +2355 PRINT "P = MAGIC POOL S = SINKHOLE T = TREASURE" +2360 PRINT "U = STAIRS UP V = VENDOR W = WARP/ORB" +2365 PRINT +2370 PRINT "THE BENEFITS OF HAVING TREASURES ARE :" +2375 PRINT +2380 PRINT "RUBY RED - AVOID LETHARGY PALE PEARL - AVOID LEECH" +2385 PRINT "GREEN GEM - AVOID FORGETTING OPAL EYE - CURES BLINDNESS" +2390 PRINT "BLUE FLAME - DISSOLVES BOOKS NORN STONE - NO BENEFIT" +2395 PRINT "PALANTIR - NO BENEFIT SILMARIL - NO BENEFIT" +2400 PRINT +2405 PRINT "PRESS RETURN WHEN READY TO RESUME, ";R$(RC);"."; +2410 LINE INPUT "";O$ +2415 GOTO 1950 +2420 PRINT +2425 PRINT "** SILLY ";R$(RC);", THAT WASN'T A VALID COMMAND!" +2430 GOTO 1950 +2435 IF L(FND(Z))=2 GOTO 4970 +2440 X=X+(O$="N")-(O$="S") +2445 Y=Y+(O$="W")-(O$="E") +2450 X=FNB(X) +2455 Y=FNB(Y) +2460 GOTO 3450 +2465 IF L(FND(Z))=3 THEN Z=Z-1 : GOTO 3450 +2470 Z$="UP" +2475 GOTO 2490 +2480 Z$="DOWN" +2485 IF L(FND(Z))=4 THEN Z=Z+1 : GOTO 3450 +2490 PRINT +2495 PRINT "** THERE ARE NO STAIRS GOING ";Z$;" FROM HERE!" +2500 GOTO 1950 +2505 IF BL <> 1 GOTO 2540 +2510 PRINT +2515 PRINT "** YOU CAN'T SEE ANYTHING, YOU DUMB ";R$(RC);"!" +2520 GOTO 1950 +2525 REM +2530 REM DISPLAY MAP OF CURRENT CASTLE LEVEL +2535 REM +2540 PRINT +2545 A=X : B=Y +2550 FOR X=1 TO 8 +2555 FOR Y=1 TO 8 +2560 Q=L(FND(Z)) +2565 IF Q>99 THEN Q=34 ' LET Q=Q-100 TO SHOW ROOMS +2570 IF X=A AND Y=B THEN PRINT "<";I$(Q);"> "; : GOTO 2580 +2575 PRINT " ";I$(Q);" "; +2580 NEXT Y +2585 PRINT +2590 PRINT +2595 NEXT X +2600 X=A : Y=B +2605 GOTO 2725 +2610 PRINT ") LEVEL";Z +2615 GOTO 1950 +2620 IF FL <> 0 GOTO 2650 +2625 PRINT "** HEY, BRIGHT ONE, YOU'RE OUT OF FLARES!" +2630 GOTO 1950 +2635 REM +2640 REM DISPLAY ADJACENT ROOM CONTENTS WITH FLARE +2645 REM +2650 PRINT +2655 FL=FL-1 +2660 A=X : B=Y +2665 FOR Q1=A-1 TO A+1 +2670 X=FNB(Q1) +2675 FOR Q2=B-1 TO B+1 +2680 Y=FNB(Q2) +2685 Q=FNE(L(FND(Z))) +2690 L(FND(Z))=Q +2695 PRINT " ";I$(Q);" "; +2700 NEXT Q2 +2705 PRINT +2710 PRINT +2715 NEXT Q1 +2720 X=A : Y=B +2725 GOSUB 5570 +2730 GOTO 1950 +2735 REM +2740 REM DISPLAY CONTENTS OF ADJACENT ROOM WITH LAMP +2745 REM +2750 IF LF <> 0 GOTO 2770 +2755 PRINT +2760 PRINT "** YOU DON'T HAVE A LAMP, ";R$(RC);"!" +2765 GOTO 1950 +2770 PRINT +2775 PRINT "WHERE DO YOU WANT TO SHINE THE LAMP (N,S,E,W)"; +2780 GOSUB 5415 +2785 A=X : B=Y +2790 X=FNB(X+(O$="N")-(O$="S")) +2795 Y=FNB(Y+(O$="W")-(O$="E")) +2800 IF A-X+B-Y <> 0 GOTO 2820 +2805 PRINT +2810 PRINT "** THAT'S NOT A DIRECTION, ";R$(RC);"!" +2815 GOTO 1950 +2820 PRINT +2825 PRINT "THE LAMP SHINES INTO (";X;",";Y;") LEVEL";Z;"." +2830 PRINT +2835 L(FND(Z))=FNE(L(FND(Z))) +2840 PRINT "THERE YOU WILL FIND ";C$(L(FND(Z)));"." +2845 X=A : Y=B +2850 GOTO 1950 +2855 REM +2860 REM TAKE A DRINK FROM A POOL +2865 REM +2870 IF L(FND(Z))=5 GOTO 2890 +2875 PRINT +2880 PRINT "** IF YOU WANT A DRINK, FIND A POOL!" +2885 GOTO 1950 +2890 Q=FNA(8) +2895 PRINT +2900 PRINT "YOU TAKE A DRINK AND "; +2905 IF Q < 7 THEN PRINT "FEEL "; +2910 ON Q GOTO 2915,2920,2925,2930,2935,2940,2945,2955 +2915 ST=FNC(ST+FNA(3)) : PRINT "STRONGER." : GOTO 1950 +2920 ST=ST-FNA(3) : PRINT "WEAKER." : ON (1-(ST<1)) GOTO 1950,4910 +2925 IQ=FNC(IQ+FNA(3)) : PRINT "SMARTER." : GOTO 1950 +2930 IQ=IQ-FNA(3) : PRINT "DUMBER." : ON (1-(IQ<1)) GOTO 1950,4910 +2935 DX=FNC(DX+FNA(3)) : PRINT "NIMBLER." : GOTO 1950 +2940 DX=DX-FNA(3) : PRINT "CLUMSIER." : ON (1-(DX<1)) GOTO 1950,4910 +2945 Q=FNA(4) : IF Q=RC GOTO 2945 +2950 RC=Q : PRINT "BECOME A ";R$(RC);"." : GOTO 1950 +2955 SX=1-SX : PRINT "TURN INTO A "; : IF SX=0 THEN PRINT "FE"; +2960 PRINT "MALE ";R$(RC);"!" : GOTO 1950 +2965 IF L(FND(Z)) <> 6 GOTO 2985 +2970 PRINT +2975 PRINT "YOU OPEN THE CHEST AND" +2980 GOTO 3115 +2985 IF L(FND(Z)) <> 12 GOTO 3005 +2990 PRINT +2995 PRINT "YOU OPEN THE BOOK AND" +3000 GOTO 3020 +3005 PRINT +3010 PRINT "** THE ONLY THING OPENED WAS YOUR BIG MOUTH!" +3015 GOTO 1950 +3020 ON FNA(6) GOTO 3025,3040,3050,3060,3075,3090 +3025 PRINT "FLASH! OH NO! YOU ARE NOW A BLIND ";R$(RC);"!" +3030 BL=1 +3035 GOTO 3105 +3040 PRINT "IT'S ANOTHER VOLUME OF ZOT'S POETRY! - YECH!!" +3045 GOTO 3105 +3050 PRINT "IT'S AN OLD COPY OF PLAY";R$(FNA(4));"!" +3055 GOTO 3105 +3060 PRINT "IT'S A MANUAL OF DEXTERITY!" +3065 DX=18 +3070 GOTO 3105 +3075 PRINT "IT'S A MANUAL OF STRENGTH!" +3080 ST=18 +3085 GOTO 3105 +3090 PRINT "THE BOOK STICKS TO YOUR HANDS -" +3095 PRINT "NOW YOU ARE UNABLE TO DRAW YOUR WEAPON!" +3100 BF=1 +3105 L(FND(Z))=1 +3110 GOTO 1950 +3115 ON FNA(4) GOTO 3120,3140,3160,3140 +3120 PRINT "KABOOM! IT EXPLODES!!" +3125 Q=FNA(6) +3130 GOSUB 4860 +3135 ON (1-(ST<1)) GOTO 3105,4910 +3140 Q=FNA(1000) +3145 PRINT "FIND";Q;"GOLD PIECES!" +3150 GP=GP+Q +3155 GOTO 3105 +3160 PRINT "GAS!! YOU STAGGER FROM THE ROOM!" +3165 L(FND(Z))=1 +3170 T=T+20 +3175 O$=MID$("NSEW",FNA(4),1) +3180 GOTO 2440 +3185 IF L(FND(Z))=11 GOTO 3205 +3190 PRINT +3195 PRINT "** IT'S HARD TO GAZE WITHOUT AN ORB!" +3200 GOTO 1950 +3205 PRINT +3210 PRINT "YOU SEE "; +3215 ON FNA(6) GOTO 3220,3230,3240,3250,3285,3305 +3220 PRINT "YOURSELF IN A BLOODY HEAP!" +3225 ST=ST-FNA(2) : ON (1-(ST<1)) GOTO 1950,4910 +3230 PRINT "YOURSELF DRINKING FROM A POOL AND BECOMING ";C$(12+FNA(13));"!" +3235 GOTO 1950 +3240 PRINT C$(12+FNA(13));" GAZING BACK AT YOU!" +3245 GOTO 1950 +3250 A=X : B=Y : C=Z +3255 X=FNA(8) : Y=FNA(8) : Z=FNA(8) +3260 Q=FNE(L(FND(Z))) +3265 L(FND(Z))=Q +3270 PRINT C$(Q);" AT (";X;",";Y;") LEVEL";Z;"." +3275 X=A : Y=B : Z=C +3280 GOTO 1950 +3285 A=FNA(8) : B=FNA(8) : C=FNA(8) +3290 IF FNA(8) < 4 THEN A=O(1) : B=O(2) : C=O(3) +3295 PRINT "***THE ORB OF ZOT*** AT (";A;",";B;") LEVEL";C;"!" +3300 GOTO 1950 +3305 PRINT "A SOAP OPERA RERUN!" +3310 GOTO 1950 +3315 IF RF <> 0 GOTO 3335 +3320 PRINT +3325 PRINT "** YOU CAN'T TELEPORT WITHOUT THE RUNESTAFF!" +3330 GOTO 1950 +3335 Z$="X-COORDINATE" +3340 GOSUB 5485 +3345 X=Q +3350 Z$="Y-COORDINATE" +3355 GOSUB 5485 +3360 Y=Q +3365 Z$="Z-COORDINATE" +3370 GOSUB 5485 +3375 Z=Q +3380 O$="T" +3385 GOTO 3450 +3390 PRINT +3395 PRINT "DO YOU REALLY WANT TO QUIT NOW"; +3400 GOSUB 5415 +3405 PRINT +3410 IF O$="Y" GOTO 3425 +3415 PRINT "** THEN DON'T SAY THAT YOU DO!" +3420 GOTO 1950 +3425 PRINT +3430 GOTO 5030 +3435 REM +3440 REM DISPLAY STATUS INFORMATION +3445 REM +3450 PRINT +3455 IF BL=0 THEN GOSUB 5570 : PRINT +3460 PRINT "STRENGTH =";ST;" INTELLIGENCE =";IQ;" DEXTERITY =";DX +3465 PRINT "TREASURES =";TC;" FLARES =";FL;" GOLD PIECES =";GP +3470 PRINT "WEAPON = ";W$(WV+1);" ARMOR = ";W$(AV+5); +3475 IF LF=1 THEN PRINT " AND A LAMP"; +3480 PRINT +3485 WC=0 +3490 Q=FNE(L(FND(Z))) +3495 L(FND(Z))=Q +3500 Z$="YOU NOW HAVE" +3505 PRINT +3510 PRINT "HERE YOU FIND ";C$(Q);"." +3515 IF (Q<7) OR (Q=11) OR (Q=12) GOTO 1950 +3520 IF Q=7 THEN GP=GP+FNA(10) : PRINT Z$;GP;"." : GOTO 3105 +3525 IF Q=8 THEN FL=FL+FNA(5) : PRINT Z$;FL;"." : GOTO 3105 +3530 IF Q > 9 GOTO 3545 +3535 IF (O(1)=X) AND (O(2)=Y) AND (O(3)=Z) THEN ON (1-(O$="T")) GOTO 2440,5175 +3540 X=FNA(8) : Y=FNA(8) : Z=FNA(8) : GOTO 3450 +3545 IF Q=10 THEN Z=FNB(Z+1) : GOTO 3450 +3550 IF Q <= 25 OR Q >= 34 GOTO 3580 +3555 PRINT +3560 PRINT "IT'S NOW YOURS!" +3565 T(Q-25)=1 +3570 TC=TC+1 +3575 GOTO 3105 +3580 A=L(FND(Z))-12 +3585 WC=0 +3590 IF (A<13) OR (VF=1) GOTO 4185 +3595 PRINT +3600 PRINT "YOU MAY TRADE WITH, ATTACK, OR IGNORE THE VENDOR." +3605 GOSUB 5405 +3610 IF O$="I" GOTO 1950 +3615 IF O$ <> "A" GOTO 3640 +3620 VF=1 +3625 PRINT +3630 PRINT "YOU'LL BE SORRY THAT YOU DID THAT!" +3635 GOTO 4185 +3640 IF O$="T" GOTO 3660 +3645 PRINT +3650 PRINT "** NICE SHOT, ";R$(RC);"!" +3655 GOTO 3595 +3660 FOR Q=1 TO 8 +3665 A=FNA(Q*1500) +3670 IF T(Q)=0 GOTO 3700 +3675 PRINT +3680 PRINT "DO YOU WANT TO SELL ";C$(Q+25);" FOR";A;"GP'S"; +3685 GOSUB 5415 +3690 IF O$="Y" THEN TC=TC-1 : T(Q)=0 : GP=GP+A : GOTO 3700 +3695 IF O$ <> "N" THEN PRINT Y$ : GOTO 3675 +3700 NEXT Q +3705 IF GP >= 1000 GOTO 3725 +3710 PRINT +3715 PRINT "YOU'RE TOO POOR TO TRADE, ";R$(RC);"." +3720 GOTO 1950 +3725 IF GP < 1250 GOTO 3975 +3730 PRINT +3735 PRINT "OK, ";R$(RC);", YOU HAVE";GP;"GP'S AND ";W$(AV+5);" ARMOR." +3740 PRINT +3745 Z$="ARMOR" +3750 GOSUB 5555 +3755 PRINT "NOTHING<0> LEATHER<1250> "; +3760 IF GP > 1499 THEN PRINT "CHAINMAIL<1500> "; +3765 IF GP > 1999 THEN PRINT "PLATE<2000>"; +3770 PRINT +3775 GOSUB 5405 +3780 PRINT +3785 IF O$="N" GOTO 3850 +3790 IF O$="L" THEN GP=GP-1250 : AV=1 : AH=7 : GOTO 3850 +3795 IF O$ <> "C" OR GP >= 1500 GOTO 3810 +3800 PRINT "** YOU HAVEN'T GOT THAT MUCH CASH ON HAND!" +3805 GOTO 3740 +3810 IF O$="C" THEN GP=GP-1500 : AV=2 : AH=14 : GOTO 3850 +3815 IF O$ <> "P" OR GP >= 2000 GOTO 3830 +3820 PRINT "** YOU CAN'T AFFORD PLATE ARMOR!" +3825 GOTO 3740 +3830 IF O$="P" THEN GP=GP-2000 : AV=3 : AH=21 : GOTO 3850 +3835 PRINT +3840 PRINT "** DON'T BE SILLY. CHOOSE A SELECTION." +3845 GOTO 3770 +3850 IF GP < 1250 GOTO 3975 +3855 PRINT +3860 PRINT "YOU HAVE";GP;"GP'S LEFT WITH ";W$(WV+1);" IN HAND." +3865 PRINT +3870 Z$="WEAPON" +3875 GOSUB 5555 +3880 PRINT "NOTHING<0> DAGGER<1250> "; +3885 IF GP > 1499 THEN PRINT "MACE<1500> "; +3890 IF GP > 1999 THEN PRINT "SWORD<2000>"; +3895 PRINT +3900 GOSUB 5405 +3905 PRINT +3910 IF O$="N" GOTO 3975 +3915 IF O$="D" THEN GP=GP-1250 : WV=1 : GOTO 3975 +3920 IF O$ <> "M" OR GP >= 1500 GOTO 3935 +3925 PRINT "** SORRY SIR, I'M AFRAID I DON'T GIVE CREDIT!" +3930 GOTO 3865 +3935 IF O$="M" THEN GP=GP-1500 : WV=2 : GOTO 3975 +3940 IF O$ <> "S" OR GP >= 2000 GOTO 3960 +3945 PRINT "** YOUR DUNGEON EXPRESS CARD - "; +3950 PRINT "YOU LEFT HOME WITHOUT IT!" +3955 GOTO 3865 +3960 IF O$="S" THEN GP=GP-2000 : WV=3 : GOTO 3975 +3965 PRINT "** TRY CHOOSING A SELECTION!" +3970 GOTO 3895 +3975 IF GP < 1000 GOTO 1950 +3980 Z$="STRENGTH" +3985 GOSUB 5525 +3990 IF O$ <> "Y" GOTO 4020 +3995 GP=GP-1000 +4000 ST=FNC(ST+FNA(6)) +4005 Q=ST +4010 GOSUB 5540 +4015 GOTO 3975 +4020 IF O$ <> "N" THEN PRINT Y$ : GOTO 3980 +4025 IF GP < 1000 GOTO 1950 +4030 Z$="INTELLIGENCE" +4035 GOSUB 5525 +4040 IF O$ <> "Y" GOTO 4070 +4045 GP=GP-1000 +4050 IQ=FNC(IQ+FNA(6)) +4055 Q=IQ +4060 GOSUB 5540 +4065 GOTO 4025 +4070 IF O$ <> "N" THEN PRINT Y$ : GOTO 4030 +4075 IF GP < 1000 GOTO 1950 +4080 Z$="DEXTERITY" +4085 GOSUB 5525 +4090 IF O$ <> "Y" GOTO 4120 +4095 GP=GP-1000 +4100 DX=FNC(DX+FNA(6)) +4105 Q=DX +4110 GOSUB 5540 +4115 GOTO 4075 +4120 IF O$ <> "N" THEN PRINT Y$ : GOTO 4080 +4125 IF (GP<1000) OR (LF=1) GOTO 1950 +4130 PRINT +4135 PRINT "DO YOU WANT TO BUY A LAMP FOR 1000 GP'S"; +4140 GOSUB 5415 +4145 IF O$ <> "Y" GOTO 4175 +4150 GP=GP-1000 +4155 LF=1 +4160 PRINT +4165 PRINT "IT'S GUARANTEED TO OUTLIVE YOU!" +4170 GOTO 1950 +4175 IF O$ <> "N" THEN PRINT Y$ : GOTO 4130 +4180 GOTO 1950 +4185 Q1=1+INT(A/2) : Q2=A+2 : Q3=1 +4190 IF (C(1,4)>T(1)) OR (BL=1) OR (DX 14 THEN PRINT "YOU CAN ALSO CAST A SPELL." +4225 PRINT +4230 PRINT "YOUR STRENGTH IS";ST;"AND YOUR DEXTERITY IS";DX;"." +4235 GOSUB 5405 +4240 IF O$ <> "A" GOTO 4445 +4245 IF WV <> 0 GOTO 4265 +4250 PRINT +4255 PRINT "** POUNDING ON ";C$(A+12);" WON'T HURT IT!" +4260 GOTO 4700 +4265 IF BF <> 1 GOTO 4285 +4270 PRINT +4275 PRINT "** YOU CAN'T BEAT IT TO DEATH WITH A BOOK!" +4280 GOTO 4700 +4285 IF DX >= FNA(20)+(3*BL) GOTO 4305 +4290 PRINT +4295 PRINT "YOU MISSED, TOO BAD!" +4300 GOTO 4700 +4305 Z$=RIGHT$(C$(A+12),LEN(C$(A+12))-2) +4310 IF LEFT$(Z$,1)=" " THEN Z$=MID$(Z$,2) +4315 PRINT +4320 PRINT "YOU HIT THE EVIL ";Z$;"!" +4325 Q2=Q2-WV +4330 IF (A <> 9 AND A <> 12) GOTO 4355 +4335 IF FNA(8) <> 1 GOTO 4355 +4340 PRINT +4345 PRINT "OH NO! YOUR ";W$(WV+1);" BROKE!" +4350 WV=0 +4355 IF Q2 > 0 GOTO 4700 +4360 PRINT +4365 MC=MC-1 +4370 PRINT C$(A+12);" LIES DEAD AT YOUR FEET!" +4375 IF H > T-60 GOTO 4395 +4380 PRINT +4385 PRINT "YOU SPEND AN HOUR EATING ";C$(A+12);E$(FNA(8));"." +4390 H=T +4395 IF X <> R(1) OR Y <> R(2) OR Z <> R(3) THEN ON (1-(A=13)) GOTO 4420,5305 +4400 PRINT +4405 PRINT "GREAT ZOT! YOU'VE FOUND THE RUNESTAFF!";CHR$(7) +4410 R(1)=0 +4415 RF=1 +4420 Q=FNA(1000) +4425 PRINT +4430 PRINT "YOU NOW GET HIS HOARD OF";Q;"GP'S!" +4435 GP=GP+Q +4440 GOTO 3105 +4445 IF O$="R" GOTO 4700 +4450 IF O$ <> "C" GOTO 4595 +4455 IF IQ >= 15 OR Q3 <= 1 GOTO 4475 +4460 PRINT +4465 PRINT "** YOU CAN'T CAST A SPELL NOW!" +4470 GOTO 4195 +4475 PRINT +4480 PRINT "WHICH SPELL (WEB, FIREBALL, DEATHSPELL)"; +4485 GOSUB 5415 +4490 PRINT +4495 IF O$ <> "W" GOTO 4515 +4500 ST=ST-1 +4505 WC=FNA(8)+1 +4510 ON (1-(ST<1)) GOTO 4700,4910 +4515 IF O$ <> "F" GOTO 4560 +4520 Q=FNA(7)+FNA(7) +4525 ST=ST-1 +4530 IQ=IQ-1 +4535 IF (IQ < 1) OR (ST < 1) GOTO 4910 +4540 PRINT "IT DOES";Q;"POINTS WORTH OF DAMAGE." +4545 PRINT +4550 Q2=Q2-Q +4555 GOTO 4355 +4560 IF O$="D" GOTO 4580 +4565 PRINT +4570 PRINT "** TRY ONE OF THE OPTIONS GIVEN." +4575 GOTO 4195 +4580 PRINT "DEATH . . . "; +4585 IF IQ < FNA(4)+15 THEN PRINT "YOURS!" : IQ=0 : GOTO 4910 +4590 PRINT "HIS!" : Q2=0 : GOTO 4360 +4595 IF O$="B" AND Q3 <= 1 GOTO 4615 +4600 PRINT +4605 PRINT "** CHOOSE ONE OF THE OPTIONS LISTED." +4610 GOTO 4195 +4615 IF TC <> 0 GOTO 4635 +4620 PRINT +4625 PRINT "ALL I WANT IS YOUR LIFE!" +4630 GOTO 4700 +4635 Q=FNA(8) +4640 IF T(Q)=0 GOTO 4635 +4645 PRINT +4650 PRINT "I WANT ";C$(Q+25);". WILL YOU GIVE IT TO ME"; +4655 GOSUB 5415 +4660 IF O$="N" GOTO 4700 +4665 IF O$ <> "Y" THEN PRINT Y$ : GOTO 4645 +4670 T(Q)=0 +4675 TC=TC-1 +4680 PRINT +4685 PRINT "OK, JUST DON'T TELL ANYONE ELSE." +4690 VF=VF+(L(FND(Z))=25) +4695 GOTO 1950 +4700 Q3=2 +4705 IF WC <= 0 GOTO 4720 +4710 WC=WC-1 +4715 IF WC=0 THEN PRINT : PRINT "THE WEB JUST BROKE!" +4720 Z$=RIGHT$(C$(A+12),LEN(C$(A+12))-2) +4725 IF LEFT$(Z$,1)=" " THEN Z$=MID$(Z$,2) +4730 IF WC <= 0 GOTO 4750 +4735 PRINT +4740 PRINT "THE ";Z$;" IS STUCK AND CAN'T ATTACK NOW!" +4745 GOTO 4805 +4750 PRINT +4755 PRINT "THE ";Z$;" ATTACKS!" +4760 IF DX < FNA(7)+FNA(7)+FNA(7)+3*BL GOTO 4780 +4765 PRINT +4770 PRINT "WHAT LUCK, HE MISSED YOU!" +4775 GOTO 4805 +4780 PRINT +4785 PRINT "OUCH! HE HIT YOU!" +4790 Q=Q1 +4795 GOSUB 4860 +4800 IF ST < 1 GOTO 4910 +4805 IF O$ <> "R" GOTO 4195 +4810 PRINT +4815 PRINT "YOU HAVE ESCAPED!" +4820 PRINT +4825 PRINT "DO YOU WANT TO GO NORTH, SOUTH, EAST, OR WEST"; +4830 GOSUB 5415 +4835 IF O$="N" OR O$="S" OR O$="E" OR O$="W" GOTO 2440 +4840 PRINT +4845 PRINT "** DON'T PRESS YOUR LUCK, ";R$(RC);"!" +4850 PRINT +4855 GOTO 4825 +4860 IF AV=0 GOTO 4900 +4865 Q=Q-AV +4870 AH=AH-AV +4875 IF Q < 0 THEN AH=AH-Q : Q=0 +4880 IF AH >= 0 GOTO 4900 +4885 AH=0 : AV=0 +4890 PRINT +4895 PRINT "YOUR ARMOR HAS BEEN DESTROYED . . . GOOD LUCK!" +4900 ST=ST-Q +4905 RETURN +4910 PRINT CHR$(7) +4915 GOSUB 5375 +4920 PRINT "A NOBLE EFFORT, OH FORMERLY LIVING ";R$(RC);"!" +4925 PRINT +4930 PRINT "YOU DIED DUE TO LACK OF "; +4935 IF ST < 1 THEN PRINT "STRENGTH." +4940 IF IQ < 1 THEN PRINT "INTELLIGENCE." +4945 IF DX < 1 THEN PRINT "DEXTERITY." +4950 PRINT +4955 Q3=1 +4960 PRINT "AT THE TIME YOU DIED, YOU HAD :" +4965 GOTO 5055 +4970 Q3=0 +4975 PRINT +4980 PRINT "YOU LEFT THE CASTLE WITH"; +4985 IF OF=0 THEN PRINT "OUT"; +4990 PRINT " THE ORB OF ZOT." +4995 PRINT +5000 IF OF=0 GOTO 5030 +5005 PRINT +5010 PRINT "AN INCREDIBLY GLORIOUS VICTORY!!" +5015 PRINT +5020 PRINT "IN ADDITION, YOU GOT OUT WITH THE FOLLOWING :" +5025 GOTO 5050 +5030 PRINT +5035 PRINT "A LESS THAN AWE-INSPIRING DEFEAT." +5040 PRINT +5045 PRINT "WHEN YOU LEFT THE CASTLE, YOU HAD :" +5050 IF Q3=0 THEN PRINT "YOUR MISERABLE LIFE!" +5055 FOR Q=1 TO 8 +5060 IF T(Q)=1 THEN PRINT C$(Q+25) +5065 NEXT Q +5070 PRINT W$(WV+1);" AND ";W$(AV+5); +5075 IF LF=1 THEN PRINT " AND A LAMP"; +5080 PRINT +5085 PRINT "YOU ALSO HAD";FL;"FLARES AND";GP;"GOLD PIECES" +5090 IF RF=1 THEN PRINT "AND THE RUNESTAFF" +5095 PRINT +5100 PRINT "AND IT TOOK YOU";T;"TURNS!" +5105 PRINT +5110 PRINT "ARE YOU FOOLISH ENOUGH TO WANT TO PLAY AGAIN"; +5115 GOSUB 5415 +5120 PRINT +5125 IF O$ <> "Y" GOTO 5155 +5130 PRINT "SOME ";R$(RC);"S NEVER LEARN!" +5135 PRINT +5140 PRINT "PLEASE BE PATIENT WHILE THE CASTLE IS RESTOCKED." +5145 PRINT +5150 GOTO 1105 +5155 IF O$ <> "N" THEN PRINT Y$ : GOTO 5110 +5160 PRINT "MAYBE DUMB ";R$(RC);" IS NOT SO DUMB AFTER ALL!" +5165 PRINT +5170 GOTO 5580 +5175 PRINT +5180 PRINT "GREAT UNMITIGATED ZOT!" +5185 PRINT +5190 PRINT "YOU JUST FOUND ***THE ORB OF ZOT***!" +5195 PRINT +5200 PRINT "THE RUNESTAFF HAS DISAPPEARED!" +5205 RF=0 +5210 OF=1 +5215 O(1)=0 +5220 GOTO 3105 +5225 DATA AN EMPTY ROOM,.,THE ENTRANCE,E,STAIRS GOING UP,U +5230 DATA STAIRS GOING DOWN,D,A POOL,P,A CHEST,C,GOLD PIECES,G +5235 DATA FLARES,F,A WARP,W,A SINKHOLE,S,A CRYSTAL ORB,O +5240 DATA A BOOK,B,A KOBOLD,M,AN ORC,M,A WOLF,M,A GOBLIN,M,AN OGRE,M +5245 DATA A TROLL,M,A BEAR,M,A MINOTAUR,M,A GARGOYLE,M,A CHIMERA,M +5250 DATA A BALROG,M,A DRAGON,M,A VENDOR,V,THE RUBY RED,T +5255 DATA THE NORN STONE,T,THE PALE PEARL,T,THE OPAL EYE,T +5260 DATA THE GREEN GEM,T,THE BLUE FLAME,T,THE PALANTIR,T,THE SILMARIL,T +5265 DATA X,"?",NO WEAPON," SANDWICH" +5270 DATA DAGGER," STEW",MACE," SOUP",SWORD," BURGER",NO ARMOR," ROAST" +5275 DATA LEATHER," FILET",CHAINMAIL," TACO",PLATE," PIE" +5280 DATA HOBBIT,ELF,MAN,DWARF +5285 X=FNA(8) : Y=FNA(8) +5290 IF L(FND(Z)) <> 101 GOTO 5285 +5295 L(FND(Z))=Q +5300 RETURN +5305 PRINT +5310 PRINT "YOU GET ALL HIS WARES :" +5315 PRINT "PLATE ARMOR" +5320 AV=3 : AH=21 +5325 PRINT "A SWORD" +5330 WV=3 +5335 PRINT "A STRENGTH POTION" +5340 ST=FNC(ST+FNA(6)) +5345 PRINT "AN INTELLIGENCE POTION" +5350 IQ=FNC(IQ+FNA(6)) +5355 PRINT "A DEXTERITY POTION" +5360 DX=FNC(DX+FNA(6)) +5365 IF LF=0 THEN PRINT "A LAMP" : LF=1 +5370 GOTO 4420 +5375 FOR Q=1 TO 64 +5380 PRINT "*"; +5385 NEXT Q +5390 PRINT +5395 PRINT +5400 RETURN +5405 PRINT +5410 PRINT "YOUR CHOICE"; +5415 INPUT O$ +5420 O$=LEFT$(O$,1) +5425 RETURN +5430 PRINT "HOW MANY POINTS DO YOU WISH TO ADD TO YOUR ";Z$; +5435 INPUT O$ +5440 PRINT +5445 Q=VAL(O$) +5450 IF Q=0 AND ASC(O$) <> 48 THEN Q=-1 +5455 IF Q<0 OR Q>OT OR Q<>INT(Q) THEN PRINT "** "; : GOTO 5430 +5460 OT=OT-Q +5465 RETURN +5470 INPUT O$ +5475 Q=INT(VAL(O$)) +5480 RETURN +5485 PRINT +5490 PRINT Z$; +5495 INPUT O$ +5500 Q=INT(VAL(O$)) +5505 IF Q > 0 AND Q < 9 THEN RETURN +5510 PRINT +5515 PRINT "** TRY A NUMBER FROM 1 TO 8." +5520 GOTO 5485 +5525 PRINT +5530 PRINT "DO YOU WANT TO BUY A POTION OF ";Z$;" FOR 1000 GP'S"; +5535 GOTO 5415 +5540 PRINT +5545 PRINT "YOUR ";Z$;" IS NOW";Q;"." +5550 RETURN +5555 PRINT +5560 PRINT "THESE ARE THE TYPES OF ";Z$;" YOU CAN BUY :" +5565 RETURN +5570 PRINT "YOU ARE AT (";X;",";Y;") LEVEL";Z;"." +5575 RETURN +5580 END