5 CLS 10 REM adventure program 20 REM How it works: It chains graphic programs and text files 30 REM Playmode: Menu commands (function keys) 40 DIM T%(100),G%(100),N$(100):REM graphic programs 50 RESTORE 10000:FOR A=1 TO 9 60 READ T%(A),G%(A),N$(A) 70 NEXT 80 DIM O$(100):REM One item 90 DIM OP%(100):REM Item position 100 DIM LLEVADO$(10) 110 LUG=1:ENERGIA=10:MAGIA=20:GOTO 8000 115 KEY ON 120 KEY 1,"MOVE":KEY (1) ON 130 KEY 2,"EXAMINE":KEY (2) ON 140 KEY 3,"SPEAK":KEY (3) ON 150 KEY 4,"FIGHT":KEY (4) ON 160 KEY 5,"MAGIC":KEY (5) ON 170 KEY 6,"ITEMS":KEY (6) ON 180 KEY 7,"DIRECTIONS":KEY (7) ON 190 KEY 8,"":KEY 9,"":KEY 10,"" 200 ON KEY(1) GOSUB 1000 210 ON KEY(2) GOSUB 2000 220 ON KEY(3) GOSUB 3000 230 ON KEY(4) GOSUB 4000 240 ON KEY(5) GOSUB 5000 250 ON KEY(6) GOSUB 6000 260 ON KEY (7) GOSUB 7000 270 KEY ON:GOTO 120 1000 REM MOVE 1010 KEY 1,"NORTH":KEY (1) ON 1020 KEY 2,"SOUTH":KEY (2) ON 1030 KEY 3,"ESAT":KEY (3) ON 1040 KEY 4,"WEST":KEY (4) ON:FOR A=5 TO 10:KEY A,"":NEXT 1050 IF MON$>"" AND ENMON>0 AND MONSAL=1 THEN PRINT "SO YOU WANT TO LEAVE?":GOSUB 4000 1060 IF MON$>"" AND ENMON>0 AND MONSAL=0 THEN PRINT "­BYE!" 1070 ON KEY(1) GOSUB 1120 1080 ON KEY(2) GOSUB 1200 1090 ON KEY(3) GOSUB 1300 1100 ON KEY(4) GOSUB 1400 1110 IF INKEY$=CHR$(27) THEN RETURN ELSE GOTO 1110 1120 IF NORTE=0 THEN PRINT "NO EXIT AT NORTH":GOSUB 7000:RETURN 1130 LUG=NORTE 1140 MOVER=1:GOTO 8000 1200 IF SUR=0 THEN PRINT "NO EXIT AT SOUTH":GOSUB 7000:RETURN 1210 LUG=SUR 1220 MOVER=1:GOTO 8000 1300 IF ESTE=0 THEN PRINT "NO EXIT AT EAST":GOSUB 7000:RETURN 1310 LUG=ESTE 1320 MOVER=1:GOTO 8000 1400 IF OESTE=0 THEN PRINT "NO EXIT AT WEST":GOSUB 7000:RETURN 1410 LUG=OESTE 1420 MOVER=1:GOTO 8000 2000 REM EXAMINAR 2010 KEY OFF 2020 PRINT "1- EXAMINE ALL" 2030 CTR=0 2040 FOR A=1 TO 100 2050 IF OP%(A)=LUG THEN PRINT CTR+2;"-EXAMINAR ";O$(A):CTR=CTR+1:MAX=A 2060 NEXT 2070 INPUT N:IF N=0 THEN RETURN 2080 IF N=1 THEN GOTO 8000 2090 OPEN"DESCRIPCION" FOR INPUT AS #1 2100 CTR=0 :IF MAX=0 THEN PRINT "Not found":RETURN 2110 FOR A=1 TO MAX+1 2120 INPUT #1,D$ :IF A=101 THEN 2140 2130 IF OP%(A)=LUG THEN CTR=CTR+1:IF CTR+1=N THEN PRINT D$ 2140 NEXT :CLOSE #1:RETURN 3000 REM HABLAR 3010 REM MON$=NMONSTRUO;ENMON=ENERGIAMONSTRUO;MONSAL=ALINEAMIENTOMONSTRUO 3020 IF MON$="" THEN PRINT "NOBODY HEARS YOU":RETURN 3030 IF MONSAL=1 THEN PRINT "NOT VERY INTERESTE IN YOUR CHATTER, BUT IT'S UP TO YOU" 3040 IF MONSAL=0 THEN PRINT "AT LEAST, IT SEEMS TO LISTEN" 3050 KEY 1,"INSULTO":KEY (1) ON:ON KEY (1) GOSUB 3100 3060 KEY 2,"SALUDO":KEY (2) ON:ON KEY(2) GOSUB 3200 3070 KEY 3,"'AYUDA'":KEY (3) ON: ON KEY(3) GOSUB 3300 3080 KEY 4,"COMPRA/VENTA":KEY (4) ON:ON KEY(4) GOSUB 3400 3090 FOR A=5 TO 10:KEY A,"":NEXT 3095 IF INKEY$=CHR$(27) THEN RETURN ELSE GOTO 3095 3100 A=INT(RND*5)+1:RESTORE 3105 3105 DATA "'WORTHLESS'","'STUPID'","'MORON'","'SWINE'","'BASTARD'" 3110 FOR B=1 TO 5:READ INSULTO$:IF A=B THEN PRINT INSULTO$ 3120 NEXT 3130 IF MONSAL=1 THEN PRINT "'Oh, you hurted my heart -it says, while showing a strange smile..." 3140 IF MONSAL=0 THEN PRINT "'I wished to help, but now you'll swallow your words!" 3150 RETURN 3200 PRINT "'HI!'" 3210 IF MONSAL=1 THEN PRINT "'­ Hi, you depraved !'":RETURN 3220 IF MONSAL=0 THEN PRINT "'Hello, my friend!'":RETURN 3230 RETURN 3300 SHELL"muestrayuda "+MON$:CLS:GOTO 8000 3400 PRINT "compraventa" 3410 IF MONSAL=0 THEN PRINT "I'LL GIVE "+OBMON$+" FOR "+PET$ ELSE GOTO 3450 3420 CTR=0:FOR A=1 TO 10:IF LLEVADO$(A)=PET$ THEN PRINT "YOU CARRY ";PET$ 3425 NEXT 3426 FOR A=1 TO 100:IF O$(A)=OBMON$ THEN CTOB=A 3427 IF O$(A)=PET$ THEN CTOA=A 3428 NEXT 3430 INPUT "TRADE?";S$:IF MID$(S$,1,1)="Y" OR MID$(S$,1,1)="y" THEN LLEVADO$(A)=OBMON$:PRINT "TRADE OK":O$(CTOA)=PET$:OP%(CTOA)=LUG:OP%(CTOB)=0 3440 RETURN 4000 REM FIGHT 4010 REM MON$=NMONSTRUO;ENMON=ENERGIAMONSTRUO;MONSAL=ALINEAMIENTOMONSTRUO 4020 REM DA=DA¥OMONSTRUO 4025 IF MON$="" THEN PRINT "Nobody here!":RETURN 4026 IF ENMON<=0 THEN PRINT "It's dead!":RETURN 4030 IF MONSAL=1 THEN PRINT "Smiling, it charges agaist you..." 4040 IF MONSAL=0 THEN PRINT "It says: OK, you asked for it...'" 4050 CTRD=0 4060 FOR A=1 TO 10 4070 IF LLEVADO$(A)="Knife" AND CTRD<1 THEN CTRD=1:NA=A 4080 IF LLEVADO$(A)="Spear" AND CTRD<2 THEN CTRD=2:NA=A 4090 IF LLEVADO$(A)="Sword" AND CTRD<3 THEN CTRD=3:NA=A 4100 IF LLEVADO$(A)="Mace" AND CTRD<4 THEN CTRD=4:NA=A 4105 NEXT 4110 PRINT "Tu wield your ";LLEVADO$(NA);" that causes ";CTRD;"d6 hit points...":INPUT "Do you want to summon the power of magic?";A$:IF MID$(A$,1,1)="Y" OR MID$(A$,1,1)="y" THEN GOSUB 5000:USOMAGI=1 ELSE USOMAGI=0 4120 PRINT "You",,"It" 4130 DAO=INT(RND*CTRD*6)+CTRD 4140 DAT=INT(RND*DA*6)+DA 4150 PRINT DAO,,DAT ,"(Dice)" 4160 PRINT ENERGIA,,ENMON,"(Energy)":DAO=DAO+ENERGIA:DAT=DAT+ENMON 4170 PRINT "_______________________":PRINT DAO,,DAT,"(Total) 4180 IF DAO>DAT THEN PRINT"You hit it!":PRINT "It loses ";DAO-DAT;" energy points":ENMON=ENMON-DAO+DAT 4185 IF DAOMAGIA THEN PRINT "Not enough points.":RETURN 5250 IF PUNTOS=0 THEN PRINT "No effect.":RETURN 5260 PRINT "You use ";PUNTOS;"poins." 5270 PRINT "Magic points:";MAGIA:PRINT "Energy:";ENERGA:RETURN 5300 REM fuego 5310 PRINT "You have: ";MAGIA ;"magic points." 5320 IF MAGIA<2 THEN PRINT "Not enough points!" 5330 PRINT "You use 2 enery points" 5340 CTRD=CTRD+1:MAGIA=MAGIA-2 5350 RETURN 6000 REM ITEMS 6010 PRINT "You see here:" 6020 FOR A=1 TO 100 6030 IF OP%(A)=LUG THEN PRINT O$(A) 6040 NEXT 6041 PRINT "Tienes:" 6042 FOR A=1 TO 10 6043 IF LLEVADO$(A)>"" THEN PRINT LLEVADO$(A) 6044 NEXT 6050 KEY 1 ,"TAKE":KEY (1) ON:ON KEY(1) GOSUB 6300 6060 KEY 2 ,"DROP":KEY (2) ON:ON KEY(2) GOSUB 6100 6070 KEY 3,"USE":KEY (3) ON:ON KEY (3) GOSUB 6600 6080 FOR A=4 TO 10:KEY A,"":NEXT 6090 IF INKEY$=CHR$(27) THEN RETURN ELSE GOTO 6090 6100 REM OBJETOS DEJAR 6110 PRINT "You carry:" 6120 FOR A=1 TO 10 6130 IF LLEVADO$(A)>"" THEN PRINT LLEVADO$(A) 6140 NEXT 6150 INPUT "Item to drop? (Enter to drop nothing)",OBJETO$ 6160 IF OBJETO$="" THEN RETURN 6170 CTR=0 6180 FOR A=1 TO 10 6190 IF LLEVADO$(A)=OBJETO$ THEN CTR=1:NUMERO=A 6200 NEXT 6210 IF CTR=0 THEN PRINT "You don't carry it.":RETURN 6220 LLEVADO$(NUMERO)="" 6230 FOR A=1 TO 9 6240 IF LLEVADO$(A)="" THEN SWAP LLEVADO$(A),LLEVADO$(A+1) 6250 NEXT 6260 CTR=0:FOR A=1 TO 100:IF OBJETO$=O$(A) THEN OP%(A)=LUG:CTR=1 6270 NEXT :IF CTR=0 THEN O$(A)=OBJETO$:OP%(A)=LUG 6280 PRINT "You dropped:";OBJETO$:RETURN 6300 REM OBJETOS, coger 6310 IF LLEVADO$(10)>"" THEN PRINT "No room for more items.":RETURN 6320 PRINT "Here you see:" 6330 FOR A=1 TO 100 6340 IF OP%(A)=LUG THEN PRINT O$(A) 6350 NEXT 6360 INPUT "What do you want to take?";OBJETO$ 6370 IF OBJETO$="" THEN RETURN 6380 CTR=0:FOR A=1 TO 100 6390 IF OBJETO$=O$(A) AND LUG=OP%(A) THEN CTR=1:NUMERO=A 6400 NEXT 6410 IF CTR=0 THEN PRINT "It's not here!":RETURN 6420 LLEVADO$(10)=OBJETO$:OP%(NUMERO)=0 6430 FOR A=1 TO 9 6440 IF LLEVADO$(A)="" THEN SWAP LLEVADO$(A),LLEVADO$(A+1) 6450 NEXT 6460 PRINT "You took:";OBJETO$:RETURN 6600 PRINT "You carry:" 6610 FOR A=1 TO 10:IF LLEVADO$(A)>"" THEN PRINT LLEVADO$(A) 6620 NEXT 6630 INPUT "What do you want to use?",OBJETO$ 6640 CTR=0:FOR A=1 TO 10:IF LLEVADO$(A)=OBJETO$ THEN CTR=1 6650 NEXT:IF CTR=0 THEN PRINT"You are not carrying it":RETURN 6660 CHAIN "usar.ave",,ALL:IF CTR=1 THEN RETURN 6670 IF USAR$<>OBJETO$ THEN PRINT "No effect":GOTO 270 6680 LUG=USARLIN:GOTO 8000 7000 REM directions 7010 PRINT "Exists:"; 7020 IF NORTE>0 THEN PRINT "North "; 7030 IF SUR>0 THEN PRINT "South "; 7040 IF ESTE>0 THEN PRINT "East "; 7050 IF OESTE>0 THEN PRINT "West "; 7060 PRINT "." 7070 PRINT "Current energy:";ENERGIA 7080 PRINT "Current magic points:";MAGIA 7090 IF INKEY$=CHR$(27) THEN RETURN ELSE GOTO 7090 8000 CLS:CHAIN "GRAFICOS.ave",G%(LUG),ALL 8010 EMINI=0:LOCATE 15,1:CHAIN "Textos.ave",T%(LUG),ALL 8020 IF MOVER=1 THEN ENMON=EMINI:IF ENMON=0 THEN MON$="" 8030 IF MON$>"" THEN PRINT "Aqu¡ est  ";MON$:IF ENMON=0 THEN PRINT "...It's dead." 8040 REM OBJETOS 8050 PRINT "Here you see:" 8060 FOR A=1 TO 100 8070 IF OP%(A)=LUG THEN PRINT O$(A) 8080 NEXT 8090 GOTO 115 10000 REM lineas data. 10010 REM lineatexto,lineagrafico,nombre 10020 DATA 20,20,"inicio" 10030 DATA 110,20,"HOUSE" 10040 DATA 130,170,"ROAD" 10050 DATA 155,440,"CASTLE" 10070 DATA 175,1025,"DOOR" 10080 DATA 200,1260,"Wood" 10090 DATA 240,1260,"Cauldron" 10100 DATA 300,1260,"WOLF" 10110 DATA 350,1260,"WEREWOLF"