1 REM *********************************************
2 REM Neptunes' Caverns
3 REM Programmed by Steve Rodgers and Marcus Milton
4 REM Adapted from BBC version by Timothy Surtell
5 REM *********************************************
6 REM NC200 Version
7 REM Downloaded from Tim's NC Users' Site
8 REM
http://www.ncus.org.uk
40 PROCinitialise
50 REPEAT
60 PROCinput
70 PROCsort
80 UNTIL wf=TRUE OR lf=TRUE
90 PROCend
100 END
110 REM ***Input***
120 DEF PROCinput
130 vb$="":no$=""
140 PRINTSTRING$(80,"-"):INPUT"What do you do next ? "r$
150 IF r$="" GOTO140
160 FORI=1 TO LEN(r$)
170 IF MID$(r$,I,1)=" " vb$=LEFT$(r$,3):no$=MID$(r$,I+1,3):I=LEN(r$)
180 NEXT
190 IF vb$="GO " OR vb$="MOV" vb$="GO":ENDPROC
200 IF no$<>"" ENDPROC
210 r$=LEFT$(r$,3)
220 IF r$="NOR" OR r$="SOU" OR r$="EAS" OR r$="WES" vb$="GO":no$=r$:ENDPROC
230 IF r$="HEL" OR r$="INV" OR r$="LOO" no$="DOO":vb$=r$:ENDPROC
240 PRINT"I don't understand that!"
250 GOTO140
260 REM ***Sort***
270 DEF PROCsort
280 vb=0:no=0:FORI=1 TO vv
290 IF vb$=LEFT$(vb$(I),3) vb=I:I=vv
300 NEXT
310 FORI=1 TO nn
320 IF no$=no$(I) no=I:I=nn
330 NEXT
340 IF no=0 OR vb=0 PRINT"I don't understand that!":ENDPROC
350 ON vb GOTO360,410,410,500,500,620,620,700,750,870,870,940,1000,1050,1100
360 REM ***Go***
370 IF no>4 PRINT"Go where ?":ENDPROC
380 IF ex(cp,no)=0 PRINT"There is no exit that way!":ENDPROC
390 IF cp=16 AND (no=1 OR no=4) AND ff=FALSE lf=TRUE:ENDPROC
400 cp=ex(cp,no):GOTO1100
410 REM ***Get***
420 IF no=6 AND cp=13 PRINT"It's too heavy!":ENDPROC
430 IF no<8 PRINT"Don't be silly!":ENDPROC
440 IF ob(no-7)=99 AND no$<>"HAN" PRINT"You've already got it!":ENDPROC
450 FORI=7 TO 10
460 IF ob(I)=cp AND no=14 no=I+7:hc=hc+1:I=10
470 NEXT
480 IF ob(no-7)=cp PRINT"O.K":ob(no-7)=99:in=in+1:ENDPROC
490 PRINT"It isn't here!":ENDPROC
500 REM ***Drop***
510 IF cp=3 AND ob(1)=99 AND vb$="THR" PRINT"The knife slams hard into the door. You cannot remove it.":lo$(3)=lo$(3)+" A knife is wedged into the door.":ob(1)=0:in=in-1:ENDPROC
520 IF cp=9 AND ob(1)=99 AND vb$="THR" PRINT"The knife slams hard into the door. You cannot remove it.":lo$(9)=lo$(9)+" A knife is wedged into the door.":ob(1)=0:in=in-1:ENDPROC
530 IF cp=20 AND ob(1)=99 AND vb$="THR" AND ex(20,4)=0 PRINT"The knife hits the octopus. He only gets more angry.":lf=TRUE:ENDPROC
540 IF no<8 PRINT"Don't be silly!":ENDPROC
550 FORI=7 TO 10
560 IF ob(I)=99 AND no=14 no=I+7:hc=hc-1:I=10
570 NEXT
580 IF ob(no-7)<>99 PRINT"You haven't got it!":ENDPROC
590 PRINT"O.K":ob(no-7)=cp:in=in-1
600 IF cp=19 AND no=13 wf=TRUE
610 ENDPROC
620 REM ***Cut***
630 IF ob(1)<>99 PRINT"You've nothing sharp enough!":ENDPROC
640 IF no<>11 PRINT"You can't cut that!":ENDPROC
650 IF cp<>5 PRINT"You can't do that!":ENDPROC
660 IF cf=TRUE PRINT"You've already done that!":ENDPROC
670 PRINT"The seaweed falls away to reveal an open window."
680 ob(4)=5:ex(5,2)=11:cf=TRUE
690 lo$(5)=LEFT$(lo$(5),58)+"an open window in it.":ENDPROC
700 REM ***Wear***
710 IF ff=TRUE AND no$="FLI" PRINT"You've already got them on!":ENDPROC
720 IF ob(2)=99 AND no$="FLI" ff=TRUE:ob(2)=0:PRINT"They fit nicely!":ENDPROC
730 IF no=14 AND hc>0 PRINT"That's really silly!":ENDPROC
740 PRINT"You can't wear that!":ENDPROC
750 REM ***Give***
760 IF cp=10 AND no=11 GOTO800
770 IF cp=7 AND no=12 GOTO830
780 IF cp=20 PRINT"That won't do any good!":ENDPROC
790 PRINT"Nothing here want's it!":ENDPROC
800 IF ob(4)<>99 PRINT"You haven't got it!":ENDPROC
810 ob(4)=0:ob(3)=10
820 PRINT"They crowd around you and something glints in the corner.":ENDPROC
830 IF ob(5)<>99 PRINT"You haven't got it!":ENDPROC
840 ob(5)=0:ex(7,2)=13
850 PRINT"The fish snatches a bone and retires to a corner."
860 lo$(7)="You are in a low cavern. A dog fish is in a corner gnawing on a thigh bone.":ENDPROC
870 REM ***Unlock***
880 IF ob(3)<>99 PRINT"You haven't got a key!":ENDPROC
890 IF no=5 AND (cp=3 OR cp=9) PRINT"There isn't even a keyhole!":ENDPROC
900 IF cp<>13 OR no<>6 PRINT"You can't do that!":ENDPROC
910 IF uf=TRUE PRINT"It's already unlocked!":ENDPROC
920 uf=TRUE:ob(7)=13:PRINT"The key turns easily."
930 lo$(13)="You are in a room that has a large open chest in the middle.":ENDPROC
940 REM ***Use***
950 IF cp<>20 OR no<>14 PRINT"You can't do that here!":ENDPROC
960 IF hc<4 PRINT"You haven't got enough pairs!":ENDPROC
970 PRINT"The octopus can't move. He isn't amused!"
980 FORI=7 TO 10:ob(I)=0:NEXT
990 hc=0:ex(20,4)=19:lo$(20)=LEFT$(lo$(20),57)+"A manacled octopus sitssulking.":ENDPROC
1000 REM ***Inventory***
1010 PRINT"You are carrying :-"'
1020 IF in=0 PRINT"Nothing!":ENDPROC
1030 FORI=1 TO 10:IF ob(I)=99 PRINT"A ";ob$(I)
1040 NEXT:ENDPROC
1050 REM ***Help***
1060 PRINT"These are the words you may use :-"'
1070 PRINT"NORTH SOUTH EAST WEST MOVE ";:FORI=1 TO 7:PRINT;vb$(I);" ";:NEXT:PRINT:FORI=8 TO vv:PRINT;vb$(I);" ";:NEXT
1080 PRINT'"(You need only type the first 3 letters)"
1090 ENDPROC
1100 REM ***Look***
1110 PRINT'lo$(cp):IF cp=22 lf=TRUE:ENDPROC
1120 FORI=1 TO 10
1130 IF I=5 AND cp=15 GOTO1150
1140 IF ob(I)=cp PRINT"A ";ob$(I);" is here."
1150 NEXT
1160 PRINT'"Exits : ";
1170 IF ex(cp,1)>0 PRINT"North ";
1180 IF ex(cp,2)>0 PRINT"South ";
1190 IF ex(cp,3)>0 PRINT"East ";
1200 IF ex(cp,4)>0 PRINT"West ";
1210 PRINT':ENDPROC
1220 REM ***Initialise***
1230 DEF PROCinitialise
1240 CLS:PRINTTAB(23,0)CHR$19"N e p t u n e ' s C a v e r n s"CHR$20TAB(2,2)"Programmed by Steve Rodgers and Marcus Milton. Adapted by Timothy Surtell."
1250 PRINT'"Press any key to start. Type HELP for assistance at any time..."
1260 nn=14:vv=15:cp=3:in=1:hc=0:wf=FALSE:lf=FALSE:uf=FALSE:ff=FALSE:cf=FALSE
1270 DIMlo$(24),ex(24,4),no$(nn),vb$(vv),ob$(10),ob(10)
1280 FORI=1 TO 24
1290 IF I=17 OR I=18 OR I=23 OR I=24 lo$(I)=lo$(12):GOTO1310
1300 READd$:lo$(I)=d$
1310 NEXT
1320 FORI=1 TO 24:FORJ=1 TO 4:READex(I,J):NEXT:NEXT
1330 FORI=1 TO 10:READob$(I),ob(I):NEXT
1340 FORI=1 TO nn:READno$(I):NEXT
1350 FORI=1 TO vv:READvb$(I):NEXT
1360 G=GET:CLS:PRINT"The story so far..."
1370 PRINT'"You have found the magic plug that belongs at the bottom of the sea, and you"'"decide to replace it at all costs before the water drains away. With your"'"scuba gear you dive into the ocean and begin your adventure..."
1380 PRINTSTRING$(80,"-")
1390 GOTO1100:REM Look
1400 REM ***End***
1410 DEF PROCend
1420 IF cp=22 PRINT"With one swift bite, the shark bites off your head."''TAB(30)"T H E E N D"':END
1430 IF cp=20 PRINT"The octopus picks you up and strangles you to death."''TAB(30)"T H E E N D"':END
1440 IF cp=16 PRINT"The spines on the sea-urchins are very poisonous! You die a horrible death! Next time take precautions!"''TAB(30)"T H E E N D"':END
1450 PRINT"With a thunk the plug drops into the hole and the swirling waters grow still. CONGRATULATIONS!!! You saved the seas!"''TAB(30)"T H E E N D"':END
1460 REM ***Descriptions***
1470 DATA "You are on the seabed. The way west is blocked by a high coral reef."
1480 DATA "You are on the seabed. To the south a wall towers above you."
1490 DATA "You are in front of a wooden door set into a barnacled wall. You can see no handle."
1500 DATA "You are on the seabed. To the south a barnacled wall towers above you."
1510 DATA "You are on the seabed. To the south a barnacled wall has a square patch of seaweed growing on it."
1520 DATA "You are on the seabed. To the south is a barnacled wall. A cliff blocks the way."
1530 DATA "You are in a long, low cavern. At the far end a large dog-like fish is swimmingaround."
1540 DATA "You are in a brightly lit chamber. The walls, floor and ceiling all glow in theshimmering light."
1550 DATA "You are in a dimmly lit cavern with a huge door at the far end. You can see no handle."
1560 DATA "You are in a room full of hungry sea-horses! They nuzzle your hand in a friendly manner."
1570 DATA "You are in a small square room. The north wall has a small window in it, though which you can see the seabed."
1580 DATA "You are in an aMAZEingly square room. The walls, floor and ceiling are all square, as are all the exits."
1590 DATA "You are in a tiny room that is almost totally occupied by a chest, inscribed with the initials 'D.J'."
1600 DATA "You are in a cold, murky room. Grey mud swirls around you and you feel a slightcurrent to the east."
1610 DATA "You are in a gloomy and errie place. All around you are the bones of long dead explorers."
1620 DATA "You are in a square room. The south exit has the words 'DO NOT ENTER' above it.The north and west doorways are crawling with sea-urchins."
1630 DATA "You are in a circular room with a very strong current that swirls around the room and down a hole in the floor."
1640 DATA "You are in a corridor with a strong current going west. Your way is blocked by the arms of a huge rainbow coloured octopus."
1650 DATA "You are in a shipwreaked captains cabin. You feel the flow of water to the west."
1660 DATA "You see a rush of swirling water and face the jaws of a great white shark."
1670 REM ***Exits***
1680 DATA0,0,2,0,0,0,3,1,0,0,4,2,0,0,5,3
1690 DATA0,0,6,4,0,0,0,5,0,0,8,0,0,14,0,7
1700 DATA0,15,0,0,0,16,0,0,5,17,12,0,0,18,12,11
1710 DATA7,0,0,0,8,0,15,0,9,21,16,14,10,22,17,15
1720 DATA11,23,18,16,12,24,18,17,0,0,20,0,0,0,21,0
1730 DATA15,0,0,20,16,0,0,0,17,23,24,0,18,24,24,23
1740 REM ***Objects***
1750 DATA "KNIFE",2
1760 DATA "PAIR OF FLIPPERS",6
1770 DATA "KEY",0
1780 DATA "CLUMP OF SEAWEED",0
1790 DATA "MOULDY OLD BONE",15
1800 DATA "MAGIC PLUG",99
1810 DATA "YELLOW PAIR OF HANDCUFFS",0
1820 DATA "GREEN PAIR OF HANDCUFFS",9
1830 DATA "RED PAIR OF HANDCUFFS",17
1840 DATA "BLUE PAIR OF HANDCUFFS",11
1850 REM ***Nouns***
1860 DATA "NOR","SOU","EAS","WES","DOO","CHE","WIN","KNI","FLI","KEY","SEA","BON","PLU","HAN"
1870 REM ***Verbs***
1880 DATA "GO","TAKE","GET","DROP","THROW","CUT","CHOP","WEAR","GIVE","UNLOCK","OPEN","USE","INVENTORY","HELP","LOOK"