100 COLOR 10, 1: CLS : WIDTH 80 110 PRINT , "Welcome to the VAMPIRE'S CASTLE Adventure": PRINT : PRINT 112 INPUT "Do you need the instructions"; A$: A$ = A$ (1 TO 2) 114 IF A$ = "y" OR A$ = "Y" THEN GO SUB 2000: ELSE PRINT 120 DIM D$(19,74), O$(31), L(25), P(19, 6): L(0) = 1 125 RESTORE 130 FOR x = 1 TO 19: READ D$(x): NEXT x 140 DATA "Entrance Hall","Study","Library","Armory","Tower" 150 DATA "Lower Tower","Chapel",'Brick Fireplace' 160 DATA "Hidden Corridor","Secret Passage" 170 DATA "Underground Lake Chamber","Boat","Alchemist's Lab" 180 DATA "Storeroom","Overhang","Gallery","Antechamber","Vampire's Tomb" 190 DATA "Torture Chamber" 200 FOR x = 1 TO 31: READ O$(x): IF x > 6 THEN READ L(x - 6) 220 NEXT x: T2 = 8: R = 11: WS$ = "Wooden Stakes" 230 DATA "North","South","East","West","Up ","Down","Sledge Hammer",5 240 DATA "Timepiece",1,"Coil of Rope",9,"Parchment Scroll",3,"Axe",4,"Oar",6,"Key",99 250 DATA "Holywater",7,"Flask of Oil",13,"Crate",14,"Bucket",14 260 DATA "Torch",8,"Nails",15,"Tapestry",16,"Boat",11,"Rusty Door",17 270 DATA "Closed Coffin",18,"Fire in the Fireplace",2 280 DATA "Bookcase",3,"Sign",1,"Parapets",5,"Brick Fireplace",2 290 DATA "Rat",19,"Wine",2,"Cheddar Cheese",2 300 FOR Y = 1 TO 19: FOR x = 1 TO 6: READ P(Y, x): NEXT x:NEXT Y 310 DATA 0,0,3,2,0,0,0,0,1,0,0,0,0,0,4,1,0,0,0,0,5,3,0,0,0,0,0,4,0,0,0,7,0,0,5,0,6,0,0,0,4,0 320 DATA 0,2,0,0,0,0,13,0,0,0,3,0,11,8,0,19,0,0,0,10,0,0,0,0,0,11,0,0,0,0,14,9,0,0,0,0 330 DATA 0,13,0,0,2,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,17,0,0,0,0,0,0,10,13,0,0 340 W$ = "GO GETLOODROHITOPETIEPUSKILOILROWCLITAKREATHRBRE" 350 N$ = "N 01S 02E 03W 04U 05D 06HAM07SCR10AX 11WAT14OIL15DOO22COF23VAM23FIR28" 355 O$ = "NORSOUEASWESUP DOWSLETIMROPPARAXEOARKEYHOLFLACRABUCTORNAITAPBOARUSCLOFIRBOOSIGPARBRIRATWINCHE" 357 Y=0:L2=L(Y) 360 COLOR 2, 0: PRINT "You are in the "; D$(Y) 370 IF L(12) = 0 OR L < 10 OR (L > 12 AND L <> 18) THEN GO TO 390 380 PRINT "It's Dark! you can't see": GO TO 440 390 PRINT "You see "; : FOR x = 1 TO 25: IF L(x) = L2 THEN PRINT O$(x + 6); ", "; : Y = Y + 1 400 NEXT x: IF Y = 0 THEN PRINT "nothing interesting.": ELSE PRINT CHR$(29); CHR$(29); " " 420 PRINT "Obvious exits are: "; : FOR x = 1 TO 6: IF P(L, x) > 0 THEN PRINT O$(x); " "; 430 NEXT x: PRINT 440 S = 0: F = 0: COLOR 10, 0: PRINT : INPUT "What do you want to do"; A$: PRINT : COLOR 2 450 A$ = A$: B$ = " ": FOR x = 1 TO LEN(A$) 460 IF A$ (x) = " " THEN B$ = A$ & " "( x + 1, 3) 490 NEXT x: IF LEN(A$) = 1 THEN B$ = A$ & " ": A$ = "GO " 500 GO SUB 1800: L2 = L: T1 = T1 + 1: IF T1 = 60 THEN T1 = 0: T2 = T2 + 1 510 IF T2 = 12 THEN COLOR 7, 0: PRINT " It's midnight: the Vampire is awake, He's at your neck "; : GO TO 1750 520 IF A$ = "SWI" AND L = 11 THEN COLOR 7, 0: PRINT " You have Drowned in the ice cold water "; : GO TO 1750 530 x = INSTR(N$, B$): IF x MOD 5 = 1 THEN S = VAL(N$( x + 3)): GO TO 590 560 x = INSTR(O$, B$): IF x MOD 3 = 1 THEN S = (x + 2) / 3 590 x = INSTR(W$, A$): IF x MOD 3 = 1 THEN F = (x + 2) / 3 620 IF F > 11 THEN F = F - 11 630 IF A$ <> "INV" THEN GO TO 680 640 PRINT "You are carrying: "; : A = 0: FOR x = 1 TO 25 650 IF L(x) = 0 THEN PRINT O$(x + 6); ", "; : A = A + 1 660 NEXT x: IF A = 0 THEN PRINT "nothing"; 670 PRINT : GO TO 440 680 ON F GO TO 720, 890, 1100, 1240, 1300, 1390, 1480, 1560, 1610, 1680, 1720 690 PRINT "I don't know how to do that": GO TO 440 700 PRINT "I don't know that word": GO TO 440 710 REMark -GO- 720 IF S < 1 OR S > 6 THEN GO TO 760 730 IF P(L, S) > 0 THEN L = P(L, S): GO TO 360 740 PRINT "You can't go that way": GO TO 440 750 PRINT "You see nothing special": GO TO 440 760 IF S <> 28 OR L <> 2 THEN GO TO 790 770 IF FI = 0 THEN COLOR 0, 7: PRINT " You have Burned to Death "; : GO TO 1750 780 L = 8: GO TO 360 790 IF S <> 27 OR L <> 5 THEN GO TO 820 800 IF O$( 1 TO 27) = "R" THEN L = 6: PRINT "Climbed down rope": PRINT : GO TO 360 810 COLOR 0, 7: PRINT " You fell and Died "; : GO TO 1750 820 IF S = 21 AND L(15) = L THEN L = 12: GO TO 360 830 IF L = 16 AND B$ = "OVE" THEN GO TO 860 840 IF S < 1 THEN GO TO 700 850 PRINT "You can't go there": GO TO 440 860 IF L(10) = L AND O$(16) = "Crate" THEN L = 15: GO TO 360 870 PRINT "It's a little too high": GO TO 440 880 REMark -GET- 890 IF S < 7 THEN GO TO 700 900 IF C > 6 THEN PRINT "You can't carry any more": GO TO 440 910 IF L(S - 6) <> L THEN GO TO 1070 920 IF S <> 14 THEN GO TO 960 940 V$ = "In": GO SUB 1850: IF A$ = "BUC" AND L(11) = 0 THEN GO TO 1080 950 PRINT "You can't do that": GO TO 440 960 IF S <> 20 THEN GO TO 990 970 IF TA = 0 THEN PRINT "It's nailed to an overhang": GO TO 440 980 P(16, 1) = 17: PRINT "AHA! - A hole in the wall": PRINT : GO TO 1080 990 IF S <> 19 THEN GO TO 1020 1000 IF L(1) <> 0 THEN PRINT "You have no hammer": GO TO 440 1010 IF L(13) = 15 THEN TA = 1: PRINT "The tapestry is loose": GO TO 1080 1020 IF S <> 13 THEN GO TO 1050 1030 L(23) = L: IF L(25) = L THEN GO TO 1080 1040 PRINT "The Rat has it": GO TO 440 1050 IF S > 20 AND S < 30 THEN PRINT "You can't get it": GO TO 440: ELSE GO TO 1080 1070 PRINT "I don't see any "; O$(S): GO TO 440 1080 C = C + 1: L(S - 6) = 0: PRINT "You got the "; O$(S): GO TO 440 1090 REMark -LOOK- 1100 IF S < 7 THEN GO TO 360 1120 IF S = 26 AND L = 1 THEN PRINT "'The Vampire Wakes at Midnight'": GO TO 440 1130 IF S <> 29 THEN GO TO 1160 1140 IF L(23) <> L THEN GO TO 1070 1150 PRINT "A Key is in it's mouth!": L(7) = L: GO TO 440 1160 IF S <> 10 THEN GO TO 1200 1170 IF L(4) = 0 THEN GO TO 1190 1180 PRINT "You don't have it": GO TO 440 1190 PRINT "The Scroll reads: 'Not all exits are obvious.'": GO TO 440 1200 IF S <> 8 THEN GO TO 750 1210 IF L(2) <> 0 THEN GO TO 1180 1220 PRINT_USING "The time is now ##:##"; T2; T1: GO TO 440 1230 REMark -DROP- 1240 IF S < 7 THEN GO TO 700 1250 IF L(S - 6) <> 0 THEN GO TO 1180 1260 IF S <> 14 OR L <> 2 THEN GO TO 1280 1270 O$(24) = "Smoldering Ashes": FI = 1: L(8) = 99: C = C - 1: GO TO 360 1280 PRINT "Okay, the "; O$(S); " is on the "; D$(L); " floor": L(S - 6) = L: C = C - 1: GO TO 440 1290 REMark -HIT- 1300 IF S < 7 THEN GO TO 700 1310 IF L(S - 6) <> L AND (L <> 8 OR S <> 28) THEN GO TO 1070 1330 V$ = "With": GO SUB 1850: IF A$ <> "AXE" OR S <> 16 OR L(5) <> 0 THEN GO TO 1350 1340 O$(16) = WS$: N$ = N$ + "WOO16STA16": GO TO 360 1350 IF (A$ <> "SLE" AND A$ <> "HAM") OR S <> 28 OR L(1) <> 0 THEN GO TO 1370 1360 O$(28) = "Broken Fireplace": P(8, 1) = 10: D$(8) = O$(28): GO TO 360 1370 PRINT "Nothing happened": GO TO 440 1380 REMark -OPEN- 1390 IF S < 7 THEN GO TO 700 1400 IF L(S - 6) <> L THEN GO TO 1070 1410 IF S <> 23 THEN GO TO 1440 1420 IF L(7) <> 0 THEN PRINT "The coffin is locked ... "; : GO TO 1370 1430 O$(23) = "Vampire in the Coffin": GO TO 360 1440 IF S <> 22 THEN GO TO 1370 1450 IF OI = 0 THEN PRINT "Too much rust ... "; : GO TO 1370 1460 O$(22) = "Open Door": P(17, 1) = 18: GO TO 360 1470 REMark -TIE- 1480 IF S < 7 THEN GO TO 700 1490 IF L(S - 6) <> 0 THEN GO TO 1180 1500 IF S <> 9 THEN GO TO 950 1520 V$ = "To": GO SUB 1850: IF A$ <> "PAR" THEN GO TO 950 1530 L(3) = 99: C = C - 1: O$(27) = "Rope tied to the Parapet": N$ = N$ + "ROP27" 1540 PRINT O$(27); "!": GO TO 440 1550 REMark -PUSH- 1560 IF S < 7 THEN GO TO 700 1570 IF L(S - 6) <> L THEN GO TO 1070 1580 IF S <> 25 THEN GO TO 1370 1590 PRINT "Aha! - You have revealed a Doorway": PRINT : P(L, 6) = 9: GO TO 360 1600 REMark -KILL- 1610 IF S < 7 THEN GO TO 700 1620 IF S <> 23 OR O$(1 TO 23) <> "V" THEN GO TO 950 1630 V$ = "With": GO SUB 1850 1640 IF (A$ = "WOO" OR A$ = "STA") AND L(10) = 0 AND O$(16) = WS$ THEN GO TO 1660 1650 COLOR 0, 7: PRINT " You Failed! The Vampire awakes and sucks your Blood! "; : GO TO 1750 1660 COLOR 26: PRINT "Congratulations! You have killed the Vampire": GO TO 1750 1670 REMark -OIL- 1680 IF L(9) <> 0 OR L <> 17 OR S <> 22 THEN GO TO 950 1690 PRINT "The Door squeaks Open": PRINT 1700 OI = 1: O$(22) = "Open Door": P(17, 1) = 18: GO TO 360 1710 REMark -ROW- 1720 IF L <> 12 OR L(6) <> 0 THEN GO TO 950 1730 R = 27 - R: L = R: PRINT "You have rowed to the "; D$(L) 1740 PRINT : L(15) = L: GO TO 360 1750 COLOR 10, 0: PRINT : PRINT : INPUT "Would you like to try again"; A$: GO SUB 1800 1760 IF A$(1 TO 2) = "Y" THEN RUN 100 1770 IF A$(1 TO 2) = "R" THEN T1 = T1 - 2: GO TO 440 1800 REMark - MAKE INPUT U/C - 1810 A$ =A$ + " "(1 TO 3): FOR I = 1 TO 3 1820 CH = ASC(MID$(A$, I, 1)): IF CH > 96 THEN MID$(A$, I, 1) = CHR$(CH - 32) 1830 CH = ASC(MID$(B$, I, 1)): IF CH > 96 THEN MID$(B$, I, 1) = CHR$(CH - 32) 1840 MISTake NEXT: RETURN 1850 REMark - GET "WHAT" - 1860 COLOR 10: PRINT TAB(40); CHR$(30); CHR$(30); : PRINT "-- "; V$; " what"; : INPUT A$ 1870 COLOR 2: PRINT : GO SUB 1800: RETurn 2000 PRINT : PRINT : COLOR 2 2010 PRINT "VAMPIRE'S CASTLE has a concealed goal. You learn what the goal is" 2020 PRINT "by exploring your surroundings. The computer will act as your eyes" 2030 PRINT "and hands. It will accepts short phrases as commands and assumes" 2040 PRINT "that the first word is a verb and the last word is the object." 2050 PRINT "For example: READ THE SIGN. The computer has a vocabulary of about" 2060 PRINT "70 words. Some of the more important words you should know before" 2070 PRINT "you start ğlaying are: GET , DROP , LOOK " 2080 PRINT "or just LOOK, GO or , and INVENTORY (tells what" 2084 PRINT "you are carrying). The computer knows the abbreviations: E, W, N," 2086 PRINT "S, U and D for GO EAST, GO WEST, etc.": PRINT 2090 PRINT "The computer's vocabulary is good, but limited. If you are having" 2100 PRINT "trouble doing something, try re-phrasing the command or you may" 2110 PRINT "need some object to accomplish the task. By the way, the computer" 2120 PRINT "only looks at the first 3 letters of each word.": PRINT 2130 RETurn 2140 DEFine PROCedure COLOR(A) 2150 INK A 2160 END DEFine