1 REM Ins{nd av Daniel Deimert <5439> 1987-08-19 13.05.28 (KERMIT) 10 ! -------------------------------- 11 ! - S T A R W A R S - 12 ! - - 13 ! - - 14 ! - - 15 ! - BY: Daniel Deimert <5439> - 16 ! - - 17 ! -------------------------------- 18 ! 19 ! Ett adventure f|r hela ABC800-serien av <5439> Daniel Deimert. 20 ! 21 ! 100 Z=FNInledning 110 Z=FNInit 120 WHILE -1 130 Z=FNBeskrivning 140 Z=FNH{ndelser 150 Z=FNInputrutin 160 IF LEN(M$)>1 THEN Z=FNAction 170 WEND 180 ! 190 ! - Diverse funktioner - 200 ! 210 DEF FNInit 220 ; CHR$(12); 230 RANDOMIZE 240 INTEGER : EXTEND 250 DIM V$(2),S$(2),L$(30),N(27,6),P$(17),P(17) 260 DIM Trader$=80 270 RESTORE 280 FOR I=1 TO 28 : READ L$(I) : NEXT I 290 RESTORE 3290 : FOR I=1 TO 27 : FOR J=1 TO 6 : READ N(I,J) : NEXT J : NEXT I 300 FOR I=1 TO 17 : READ P$(I) : NEXT I 310 FOR I=1 TO 17 : READ P(I) : NEXT I 320 Destroy=0 330 Mill=0 340 Buy=0 350 Time=0 360 Nott=0 370 R2d2=0 380 Obi=0 390 Wan=0 400 Gong=0 410 Loc=1 420 Noise=1 430 Control=0 440 Leia=0 450 Room=0 460 Enemy=0 470 LET Kill=0 480 Procent=0 490 Rob=0 500 O$="NSEWUDQIR" 510 W$="GOTADRATOPBUCLPUGIREEXSHCA" 520 LET T$="LIROZAR2C3MOJASOMOPADOMAWADA" 530 RETURN 0 540 FNEND 550 DEF FNBeskrivning 560 IF Mill=1 AND Loc=11 THEN LET Loc=14 570 ; : ; TAB(20) "-* * * * * *-" 580 ; : ; "You are ";L$(Loc) 590 Qwerty=FNV{nta(35) 600 ; "Visible exits are :" 610 Qwerty=FNV{nta(10) 620 IF N(Loc,1) THEN ; TAB(8) "North" 630 Qwerty=FNV{nta(10) 640 IF N(Loc,2) THEN ; TAB(8) "South" 650 Qwerty=FNV{nta(10) 660 IF N(Loc,3) THEN ; TAB(8) "East" 670 Qwerty=FNV{nta(10) 680 IF N(Loc,4) THEN ; TAB(8) "West" 690 Qwerty=FNV{nta(10) 700 IF N(Loc,5) THEN ; TAB(8) "Up" 710 Qwerty=FNV{nta(10) 720 IF N(Loc,6) THEN ; TAB(8) "Down" 730 Qwerty=FNV{nta(10) 740 ; "You see :" 750 IF Time<>0 THEN P(12)=-1 : Rob=1 760 IF Buy=1 AND R2d2=1 THEN P(4)=Loc 770 IF Buy=1 THEN P(5)=Loc 780 IF Wan=1 THEN P(14)=Loc 790 IF Control=1 THEN P(4)=17 : P(5)=17 800 IF Leia=1 THEN P(17)=Loc 810 IF Kill=1 THEN P(14)=-1 820 FOR I=1 TO 17 : IF P(I)=Loc THEN ; TAB(8);P$(I) : Nott=1 : Qwerty=FNV{nta(10) 830 NEXT I 840 Enemy=0 850 Jawa=INT(RND*10) ! h{r kan man variera sv}righetsgraden. Ta ett st|rre tal f|r sv}rare, mindre f|r l{ttare. Det h{r {r l{tt. 860 IF Loc<8 AND Loc<>1 AND Loc<>6 AND Jawa>7 THEN ; TAB(8) "a jawa, it looks angry..." : Enemy=1 870 IF Loc>8 AND Loc<>14 AND Loc<>27 AND Loc<>26 AND Jawa>7 THEN ; TAB(4) "an imperial soldier" : Enemy=2 880 IF Nott<>1 AND Enemy=0 THEN ; TAB(8) "Nothing" 890 Nott=0 900 RETURN 0 910 FNEND 920 DEF FNH{ndelser 930 IF Loc<>13 OR Mill<>0 THEN 950 940 ; "Han Solo says:" : ; : ; TAB(8) "I want 150000 for taking you to Aldebaraan." : ; 950 IF Loc<>14 OR Mill<>1 THEN 980 960 ; CHR$(12) : ; CUR(7,1) "You fly away, into deep space. Suddenly your ship is caught in a megnetic" : ; " field, and pulled towards a big moon..." 970 ; " IT IS THE DEATH-STAR!!!! And you're in side of it..." : Mill=0 : Qwerty=FNV{nta(3000) : Z=FNBeskrivning 980 IF Loc>13 AND Buy=1 THEN Destroy=INT(RND*100) 990 IF Destroy>90 AND R2d2=1 AND Control=0 THEN ; ELSE 1020 1000 ; "An Imperial Soldier appears!" : ; "He shoots at R2D2" : ; "R2D2 is destroyed..." 1010 Qwerty=FNV{nta(600) : P(4)=-1 : R2d2=0 1020 Destroy=0 1030 IF Loc=6 AND Obi=0 AND P(4)=Loc THEN ; "Your R2-unit is a bit damaged" : Qwerty=FNV{nta(50) : Obi=1 : RETURN 0 1040 IF Loc=8 AND Gong=0 THEN ; : ; "Some Imperial Soldiers appears." : ; "They want to see your passport" ELSE 1060 1050 Qwerty=FNV{nta(120) : Gong=1 : RETURN 0 1060 IF Loc=14 AND Noise=1 THEN ; : ; "You hear a noise..." : RETURN 0 1070 IF Loc<>17 OR Control<>0 OR P(4)<>Loc THEN 1090 ELSE ; "R2D2 beeps. C3P0 says:" : ; 1080 ; "R2D2 has found out that the princess Leia is" : ; "in block AA-23" : Qwerty=FNV{nta(300) : Control=1 : RETURN 0 1090 IF Loc<>27 OR Room<>0 THEN 1110 ELSE ; "A lot of soldiers are shooting at you." 1100 ; "You can't move north..." : Qwerty=FNV{nta(250) : RETURN 0 1110 IF Loc<>26 OR Room<>0 THEN 1130 ELSE ; : ; "The shooting stops." : ; "THE WALLS STARTS MOVING TOWARDS YOU!!!!" 1120 ; : Room=1 : RETURN 0 1130 IF Loc<>15 OR Room<>1 THEN 1150 ELSE ; : ; "Darth Vader, the dark lord of" : ; "Sith appears." 1140 ; "He attacks Obi-Wan. Obi-Wan is killed..." : LET Kill=1 : Qwerty=FNV{nta(600) : RETURN 0 1150 IF Loc<>14 OR P(17)<>Loc THEN RETURN 0 ELSE ; CHR$(12) 1160 ; CUR(5,8) "YOU FLY AWAY WITH LEIA!" : ; TAB(8) "YOUR MISSION IS COMP-" : ; TAB(8) "LETED!" : ; : ; TAB(8) "WELL DONE!" : Z=FNRestart 1170 RETURN 0 1180 FNEND 1190 DEF FNInputrutin 1200 ; " > "; : INPUT LINE M$ 1210 M$=LEFT$(M$,LEN(M$)-2) 1220 ; 1230 IF Loc<>22 OR M$<>"D" THEN 1250 ELSE ; : ; TAB(8) "You go down. Darth Vader, the Lord of Sith" 1240 ; TAB(8) "attacks you." : ; TAB(8) "You are killed...." : ; : Z=FNRestart 1250 IF Loc=27 AND Room=0 AND N(27,4)<>26 AND M$<>"SHOOT WALL" THEN ; "The Soldiers are quick" : ; "You are killed..." : Z=FNRestart 1260 IF Loc=26 AND N(26,3)<>27 AND M$<>"CALL C3P0" THEN ; TAB(8) "The walls chrushes you." : ; TAB(8) "You are killed..." : Z=FNRestart 1270 IF Loc=20 AND Room=1 AND Kill=1 AND M$<>"N" THEN ; : ; TAB(8) "Darth Vader attacks you." : ; TAB(8) "You are killed..." : Z=FNRestart 1280 IF LEN(M$)=1 AND Enemy<>0 THEN Z=FNDeath 1290 IF LEN(M$)=1 AND M$<>"I" THEN Time=1 1300 IF Loc=14 AND Noise=1 AND M$<>"OPEN DOOR" THEN ; : ; "Some soldiers appears!!" : ; "They shoot you and your friends." ELSE 1320 1310 ; "Yoy are completly dead..!" : Z=FNRestart 1320 IF LEN(M$)=1 THEN Z=FNF|rk : RETURN 0 1330 FOR I=1 TO LEN(M$) : IF MID$(M$,I,1)=" " THEN V$=LEFT$(M$,2) : S$=MID$(M$,I+1,2) : GOTO 1350 1340 NEXT I : ; CHR$(7) "Two words, thank you!" : GOTO 1200 1350 IF Enemy<>0 AND V$<>"AT" THEN Z=FNDeath 1360 IF V$<>"BU" THEN Time=1 1370 IF Loc=8 AND Gong=1 AND S$<>"PA" AND V$<>"GI" THEN ; : ; "You should have done something else..." : ; "You are killed." : Z=FNRestart 1380 FOR I=1 TO LEN(W$) STEP 2 : IF MID$(W$,I,2)<>V$ THEN NEXT I : ; : ; "What is ";M$ " ?" CHR$(7) : GOTO 1200 1390 Verb=I 1400 FOR I=1 TO LEN(T$) STEP 2 : IF MID$(T$,I,2)<>S$ THEN NEXT I : ; : ; "What is ";M$ " ?" CHR$(7) : GOTO 1200 1410 Subs=I 1420 RETURN 0 1430 FNEND 1440 DEF FNAction 1450 IF Verb=1 THEN Z=FNGo : RETURN 0 1460 IF Verb=3 THEN Z=FNTake : RETURN 0 1470 IF Verb=5 THEN Z=FNDrop : RETURN 0 1480 IF Verb=7 THEN Z=FNAttack : RETURN 0 1490 IF Verb=9 THEN Z=FNOpen : RETURN 0 1500 IF Verb=11 THEN Z=FNBuy : RETURN 0 1510 IF Verb=17 THEN Z=FNGive : RETURN 0 1520 IF Verb=19 THEN Z=FNRepair : RETURN 0 1530 IF Verb=21 THEN Z=FNExamine : RETURN 0 1540 IF Verb=23 THEN Z=FNShoot : RETURN 0 1550 IF Verb=25 THEN Z=FNCall : RETURN 0 1560 ; "You can't ";M$;CHR$(7) : Z=FNV{nta(300) : ; CHR$(7); 1570 RETURN 0 1580 FNEND 1590 DEF FNV{nta(Paustid.) LOCAL Paustid. 1600 FOR Paus.=0. TO Paustid. : NEXT Paus. 1610 RETURN 0 1620 FNEND 1630 DEF FNRestart 1640 IF P(17)<>Loc THEN Procent=Loc*3 1650 IF P(17)=Loc THEN Procent=3*Loc+10 1660 IF P(17)=14 THEN Procent=100 1670 ; : ; : ; "You have mastered ";Procent;"% of this game" 1680 ; "Do you want another game (Y/N)"; : INPUT A$ 1690 IF A$="Y" OR A$="y" THEN STOP 1700 IF A$<>"n" AND A$<>"N" THEN GOTO 1680 1710 Z=FNSlut 1720 RETURN 0 1730 FNEND 1740 DEF FNDeath 1750 IF Enemy=1 THEN 1790 1760 IF Enemy=2 THEN 1810 1770 ! 1780 ! 1790 Z=FNV{nta(80) : ; : ; TAB(8) "The jawa is faster.." : ; TAB(8) "You are vicionsly killed..." : Z=FNRestart 1800 ! 1810 Z=FNV{nta(80) : ; : ; TAB(8) "The soldiers dislikes you.." : ; TAB(8) "You are killed..." : Z=FNRestart 1820 RETURN 0 1830 FNEND 1840 DEF FNF|rk 1850 IF Enemy<>0 THEN Z=FNDeath 1860 FOR I=1 TO LEN(O$) : IF M$=MID$(O$,I,1) THEN GOTO 1880 1870 NEXT I 1880 IF I<7 THEN IF N(Loc,I) THEN Loc=N(Loc,I) : RETURN 0 1890 IF I<7 THEN IF N(Loc,I)=0 THEN ; "That way is blocked" CHR$(7) : RETURN 0 1900 IF I=7 THEN Z=FNRestart 1910 IF I=8 THEN Z=FNInventering : RETURN 0 1920 IF I=9 THEN ; CHR$(12); : RETURN 0 1930 IF I=10 THEN Z=FNInledning : RETURN 0 1940 ; "WHAT??" CHR$(7) 1950 RETURN 0 1960 FNEND 1970 DEF FNGo 1980 M$=LEFT$(S$,1) 1990 Z=FNF|rk 2000 RETURN 0 2010 FNEND 2020 DEF FNTake 2030 IF Subs>11 THEN Z=FNError : RETURN 0 2040 IF Subs=1 AND P(1)=Loc THEN P(1)=0 : GOTO 2090 2050 IF Subs=3 AND P(2)=Loc THEN P(2)=0 : GOTO 2090 2060 IF Subs=5 AND P(3)=Loc THEN P(3)=0 : GOTO 2090 2070 IF Subs=11 AND P(6)=Loc THEN P(6)=0 : GOTO 2090 2080 Z=FNError : RETURN 0 2090 ; "You take ";P$(I-INT(I/2)) : Z=FNV{nta(100) 2100 RETURN 0 2110 FNEND 2120 DEF FNDrop 2130 IF Subs>11 THEN Z=FNError : RETURN 0 2140 IF Subs=1 AND P(1)=0 THEN P(1)=Loc : GOTO 2190 2150 IF Subs=3 AND P(2)=0 THEN P(2)=Loc : GOTO 2190 2160 IF Subs=5 AND P(3)=0 THEN P(3)=Loc : GOTO 2190 2170 IF Subs=11 AND P(6)=0 THEN P(6)=Loc : GOTO 2190 2180 Z=FNError : RETURN 0 2190 ; "You drop ";P$(I-INT(I/2)) : Z=FNV{nta(100) 2200 RETURN 0 2210 FNEND 2220 DEF FNAttack 2230 Chans=10 : IF Enemy=0 THEN ; : ; "THAT'S NO EMEMY!" : Z=FNV{nta(100) : ; : RETURN 0 2240 IF P(1)=0 THEN Chans=Chans+10 2250 IF P(3)=0 THEN Chans=Chans+10 2260 Z=FNFightres 2270 IF Result<25 THEN Z=FNDeath 2280 ; : ; TAB(8) "You have killed your enemy!" : Z=FNV{nta(120) : ; 2290 RETURN 0 2300 FNEND 2310 DEF FNOpen 2320 IF Loc=18 AND P(4)=Loc THEN ; "You open the door" : N(18,4)=17 : P(15)=-1 : Z=FNV{nta(100) : RETURN 0 2330 IF Loc=18 AND P(4)<>Loc THEN ; : ; "You can't open it alone..." : RETURN 0 2340 IF Loc<>14 OR Noise<>1 THEN Z=FNError : RETURN 0 2350 ; : ; "You open the door. It opens a hiding-room." : ; "You enter it." : ; "You doesn't hear the noise anymore." 2360 Z=FNV{nta(270) : P(10)=-1 : Noise=0 2370 RETURN 0 2380 FNEND 2390 DEF FNBuy 2400 IF Loc=1 AND Rob=0 THEN ; : ; TAB(8) "You have buyed two robots" : Z=FNV{nta(100) : ; : P(4)=1 : P(5)=1 : Time=1 : Buy=1 : R2d2=1 : RETURN 0 2410 Z=FNError 2420 RETURN 0 2430 FNEND 2440 DEF FNGive 2450 IF Loc<>13 OR P(6)<>0 OR S$<>"MO" THEN 2480 2460 ; "You give Han the money" : ; "He says: Come to the harbour docks." : ; "The Millenium Falcon is there..." : ; 2470 Z=FNV{nta(300) : Mill=1 : P(6)=-1 : RETURN 0 2480 IF Loc=13 AND S$="MO" AND P(6)<>0 THEN ; "YOU HAVE NO MONEY!" : ; : RETURN 0 2490 IF Loc<>8 OR P(14)=Loc OR P(13)<>0 THEN 2520 2500 ; "You give your passport to them." : ; "They don't accept it!" : ; : ; "One of them shoots you." : ; "You are killed." 2510 ; "You needed someones help..." : Z=FNV{nta(200) : Z=FNRestart 2520 IF Loc=8 AND P(14)=Loc AND P(13)=0 THEN ; : ; "You give your passport to them." : ; "They say: That's OK,pass!" : Z=FNV{nta(150) : RETURN 0 2530 Z=FNError 2540 RETURN 0 2550 FNEND 2560 DEF FNRepair 2570 IF Loc<>6 THEN Z=FNError : RETURN 0 2580 IF Loc=6 AND Wan<>1 THEN Wan=1 : ; : ; "You repair your R2-unit,but something happends!" ELSE RETURN 0 2590 ; "A hologram appears!" : ; "It says: Obi-Wan,you are our only hope. Help me!" : ; " Take this R2-unit to Aldebaaran." 2600 Z=FNV{nta(1500) : ; "Obi-Wan says: We must go to Aldebaaran!" : Z=FNV{nta(170) 2610 RETURN 0 2620 FNEND 2630 DEF FNExamine 2640 IF Loc=19 AND Control=1 THEN ; : ; "You examine the map." : ; "You see that block AA-23 is one floor" ELSE 2660 2650 ; "above you." : Z=FNV{nta(600) : RETURN 0 2660 IF Loc=19 AND Control=0 THEN ; : ; "You examine the map." : ; "You see that block AA-23 is one floor" ELSE 2680 2670 ; "bellow you." : Z=FNV{nta(600) : RETURN 0 2680 Z=FNError 2690 RETURN 0 2700 FNEND 2710 DEF FNShoot 2720 IF Loc=27 AND P(3)=0 THEN ; : ; "You shoot a hole in the wall" : N(27,4)=26 : RETURN 0 2730 IF Loc=27 AND P(3)<>0 THEN ; : ; "You have no gun..." : Z=FNV{nta(150) : RETURN 0 2740 RETURN 0 2750 FNEND 2760 DEF FNCall 2770 IF Loc=26 THEN ; : ; "You call C3P0. The walls stop moving and a door opens." : N(26,3)=27 : Z=FNV{nta(180) : RETURN 0 2780 RETURN 0 2790 FNEND 2800 ! Det {r meningen att programmet ska starta om fr}n b|rjan 2810 ! och reset'a alla variabler och funktionsanrop,men det 2820 ! fungerar inte alls! 2830 DEF FNRun(P$) LOCAL Par$=20,Par 2840 Par$=P$+CHR$(13) 2850 Par=VARPTR(Par$) 2860 POKE 64512,213,33,Par,SWAP%(Par),201 2870 Z=CALL(64512,4907) 2880 RETURN 0 2890 FNEND 2900 DEF FNSlut 2910 ; CHR$(12) 2920 Z=FNV{nta(500) 2930 ; CUR(10,25) FLSH DBLE "GAME OVER" 2940 Z=FNV{nta(1000) 2950 ; CUR(25,0);"Vi ses...."; 2960 Z=FNV{nta(500) 2970 CHAIN 'nul:' ! h{r kan man l{gga sitt menyprogram! 2980 RETURN 0 2990 FNEND 3000 DEF FNInventering 3010 ; CHR$(12) 3020 F=0 3030 ; "You are carrying:" 3040 ; 3050 FOR I=1 TO 13 : IF P(I)=0 THEN ; P$(I) : F=1 3060 NEXT I 3070 IF F=0 THEN ; "Nothing" 3080 GET Qwerty$ 3090 RETURN 0 3100 FNEND 3110 DEF FNError 3120 ; "You can't ";M$;CHR$(7) 3130 RETURN 0 3140 FNEND 3150 DEF FNFightres 3160 Result=Chans*INT(RND*10) 3170 IF Enemy=1 THEN Result=Result+20 3180 IF Mill=1 AND Loc=9 THEN Result=Result-30 3190 RETURN 0 3200 FNEND 3210 ! Alla dessa eviga DATA 3220 DATA "at home.","in a cold dessert land.","in a rocky place.","in a dead land.","at a very terryfying place.","at Obi-Wan's place." 3230 DATA "in an unfriendly part of your land.","at the space-harbour City Eisly.","in the Middle of the town." 3240 DATA "in a place where many people seem to live.","by the harbour-docks.","at a big market-place.","in a dark bar..." 3250 DATA "in the Millenium Falcon!","in a huge hangar with many soldiers...","in a looong corridor(get out...)" 3260 DATA "in some sort of control-room.","in a hevily Guarded corridor.","by a terryfying steep...","in the corridor." 3270 DATA "by an endless steep...","in an elevator.","in the elevator.","in the big control-room of the death-staar" 3280 DATA "in another corridor...","in a very slippy place. A garbidge-room.","in block AA-23!","in an empty room." 3290 DATA 2,4,3,5,0,0,0,1,0,7,0,0,0,6,0,1,0,0,1,0,6,0,0,0,0,8,1,0,0,0,3,0,0,4,0,0,0,0,2,0,0,0,5,9,0,0,0,0 3300 DATA 10,12,11,13,0,0,0,9,0,0,0,0,0,0,0,9,0,0,9,0,0,0,0,0,0,0,9,0,0,0,0,15,0,0,0,0,14,18,16,0,0,0,0,0,0,15,0,0,0,0,18,0,0,0 3310 DATA 1,20,19,0,0,0,0,0,0,18,0,29,18,22,21,0,0,0,0,0,0,20,0,28,20,0,0,0,23,28,0,24,0,0,0,22,23,27,25,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0 3320 DATA 24,0,0,0,0,0 3330 DATA "a light-sword","a rope","a Zap-gun","R2D2","C3P0","some money","a lot of people","some big white houses" 3340 DATA "the Millenium Falcon","a door in the floor","a lot of people Han Solo" 3350 DATA "some strange people. They want to sell some robots","a passport","Obi-Wan","a door","a map","Leia" 3360 DATA 6,1,12,-1,-1,7,9,10,11,14,13,1,0,6,18,19,27 3370 DEF FNInledning 3380 ; CHR$(12) 3390 ; TAB(18) DBLE "STAR WARS" 3400 ; : ; 3410 ; "Detta {r STAR WARS. Du {r Luke Skywalker och du ska r{dda Prinsessan Leia." 3420 ; "Du kommer att st|ta p} vissa sv}righeter, men med lite list och eftertanke" 3430 ; "s} kommer du att |vervinna dem." 3440 ; 3450 ; "De verb som finns {r f|ljande:" 3460 ; : ; : ; 3470 ; "TAKE DROP ATTACK OPEN BUY" 3480 ; "GIVE REPAIR EXAMINE SHOOT CALL" 3490 ; 3500 ; "\vriga kommandon {r:" 3510 ; 3520 ; "Q...Sluta" 3530 ; "R...Beskriv plats igen" 3540 ; "I...Inventory (Vad b{r jag?)" 3550 ; "...Dessa instruktioner" 3560 Move=1 3570 Trader$="-- Gjort av : Daniel Deimert i Februari 1986 ---------------------------------" 3580 WHILE SYS(5)=0 3590 ; CUR(25,0) RIGHT$(Trader$,Move);LEFT$(Trader$,Move); 3600 Move=Move+1 3610 IF Move=80 THEN Move=1 3620 Z=FNV{nta(50) 3630 WEND 3640 ; CHR$(12) 3650 RETURN 0 3660 FNEND