DEFINT A-W: K = 12000: RANDOMIZE TIMER DIM MAP1(K), MAP2(K) ON ERROR GOTO omfel SCREEN 9: WIDTH 80, 25: CLS : EGA = -1 NAMN$ = "BILBO.SNA": DEF SEG = VARSEG(MAP1(0)): BLOAD NAMN$, 0: DEF SEG PALETTE 14, 38 FOR Y! = 100 TO 150 STEP 1.5 CIRCLE (320, Y!), 150, 14, 0, 3.14, .42 NEXT FOR Y! = 100 TO 150 STEP 1.5 CIRCLE (320, Y!), 200, 14, , , .42 NEXT FOR R = 150 TO 200 CIRCLE (320, 100), R, 14, , , .42 NEXT PUT (223, 89), MAP1 COLOR 12 LOCATE 15, 15: PRINT "av": LOCATE 16, 16: PRINT "Nils" LOCATE 17, 19: PRINT "Eng": LOCATE 16, 62: PRINT "ver 2.1" T! = TIMER: COLOR 7 LOCATE 24, 32: PRINT "Kartor laddas..."; NAMN$ = "BILBMAP1.SNA": DEF SEG = VARSEG(MAP1(0)): BLOAD NAMN$, 0: DEF SEG NAMN$ = "BILBMAP2.SNA": DEF SEG = VARSEG(MAP2(0)): BLOAD NAMN$, 0: DEF SEG WHILE TIMER - T! < 1: WEND LOCATE 24, 32: PRINT "Bilbo laddas... "; start0: SPEL = -1: NAMN$ = "" ANTVERB = 30: ANTSAK = 50: XSAK = 10: ANTPERS = 40: ANTRUM = 230: MAXMOVE = 32 DIM V$(ANTVERB + 1), S0$(ANTSAK + XSAK), S1$(ANTSAK + XSAK), SP(ANTSAK), SV(ANTSAK) DIM P$(ANTPERS), P1$(ANTPERS), PP(ANTPERS), MOVE(ANTPERS, MAXMOVE) DIM RUM$(ANTRUM, 4), VS(ANTRUM, 1 TO 8), R1$(25), R1SE$(25), R2$(9) DIM GARB(20) DIM ZRESIST(ANTPERS), ZPOWER(ANTPERS), FATTPRESENT(ANTPERS), KROGPRAT(20) RESTORE tmove FOR I = 0 TO 24 READ R1$(I), R1SE$(I): IF R1SE$(I) = "" THEN R1SE$(I) = R1$(I) NEXT FOR I = 0 TO 9: READ R2$(I): NEXT WHILE TIMER - T! < 2: WEND IF EGA THEN LOCATE 24, 28: PRINT "Nu laddas Saurons ondska."; A$ = "BILBO.DAT": GOSUB haemta2 RESTORE flersaker FOR I = 1 TO XSAK: READ S0$(ANTSAK + I), S1$(ANTSAK + I): NEXT 'fr frgor TIMEACK = 60: VS = 1: RUM$ = RUM$(R, 1): COL = 7 MOVE(3, 0) = 3 + RND * 5: PP(3) = MOVE(3, MOVE(3, 0)) ' svarta ryttare WHILE TIMER - T! < 4: WEND LOCATE 24, 28: PRINT " Instruktioner (j/n) ? "; DO: A$ = UCASE$(INKEY$): LOOP UNTIL A$ = "J" OR A$ = "N" IF A$ = "J" THEN GOSUB information CLS : GOSUB newscreen PRINT "Bilbo sitter i trdgrden och tittar p de blommande trden." GOSUB bilboskondition start: ' **************************** SLINGAN ******************************* IF SLUT AND VNNEXT <> 17 THEN GOSUB gameover SLEEPX = 0: VNOLD = VN: VN = 0: COL = 7 + 4 * (COL = 7): Bilbo$ = "Bilbo " IF VNNEXT > 0 THEN SWAP VN, VNNEXT: GOTO onvn FRAGA = 1: L = 65: GOSUB inputt DO: VN = VN + 1: LOOP UNTIL VN > ANTVERB OR INSTR(A$, V$(VN)) = 1 onvn: IF VN <> VNOLD THEN VNANT = 0 ELSE VNANT = VNANT + 1: IF VNANT > 3 THEN VNANT = 3 ON VN GOSUB gaa, vaenta, sova, inventera, ta, slaeppa, hursa, proviantera, aeta, aeta, hur, anvaenda, ropa, ge, leta, spara, haemta, laesa, visa, sjung, information, slaenga, se, hursa, fraaga, sluta, hursa, hursa, hursa, hursa, hursa IF NOT SLUT THEN GOSUB olikaplatser IF NOT SLUT THEN GOSUB deandra FOR I = 1 TO 4: J = VS(R, I) IF SP(8) = 0 AND SLEEPX = 0 AND (J = PP(19) OR J = PP(20) OR J = PP(21) OR J = PP(28) OR J = PP(31) OR J = PP(32) OR J = PP(33)) THEN PRINT "Sting flammar med blaktig eld.": EXIT FOR NEXT IF NOT SLUT THEN GOSUB bilboskondition GOSUB nytid GOTO start ' ***************************** SUB-BLOCK *********************************** ' ***************************** BILBO ... *********************************** gaa: IF CAPTURED THEN RETURN IF ZF * ZW * ZE = 0 THEN PRINT "Bilbo r fr svag fr att g.": RETURN IF R > 100 AND R < 125 AND (LYKTA <= 0 OR SP(18) <> 0) AND SP(2) <> 0 THEN PRINT "Bilbo trs inte g i mrkret utan ljus.": RETURN K = VS(R, VS): IF K = 0 THEN GOSUB whynomove: IF K = 0 THEN RETURN TIME = VS(R, VS + 4) IF R > 5 THEN ROLD = R: VSOLD = VS: R = K ELSE IF RND < .6 / R AND ABS(VSOLD - VS) = 2 THEN R = ROLD'vilse? J = (1 + CARRY / 40) * 1.5 / (.5 + ZK): IF J > 3 THEN J = 3 TIME = J * TIME * (.9 + .2 * RND) ZE = ZE - (1 + CARRY / 40) * TIME / 450: IF ZE < 0 THEN ZE = 0 se: IF VN = 23 THEN B$ = "Bilbo ser sig om. ": Bilbo$ = "Han " ELSE B$ = "" GOSUB newscreen IF LEN(RUM$) = 2 AND VN <> 23 THEN GOTO nyaplatsen IF LEN(RUM$) = 2 THEN RETURN I = ASC(LEFT$(RUM$, 1)) - 65: J = VAL(MID$(RUM$, 2, 1)) IF I > 0 THEN IF VN = 23 THEN C$ = R1SE$(I) ELSE C$ = R1$(I) IF I <> 21 THEN B$ = B$ + Bilbo$ B$ = B$ + C$ + R2$(J) END IF B$ = B$ + MID$(RUM$, 3) + ". " FOR I = 1 TO ANTPERS IF PP(I) = R THEN B$ = B$ + P$(I) + ", " NEXT: IF RIGHT$(B$, 2) = ", " THEN B$ = LEFT$(B$, LEN(B$) - 2) + " r dr. " C$ = "": FOR I = 1 TO ANTSAK IF SP(I) = R THEN C$ = C$ + S0$(I) + ", " NEXT: IF C$ <> "" THEN B$ = B$ + "Dr finns " + LEFT$(C$, LEN(C$) - 2) + "." GOSUB printout IF VN <> 23 OR R = 71 THEN GOSUB nyaplatsen RETURN vaenta: TIME = 60: ZE = 1: ZE1 = 0: RESTORE vaenta1 IF CAPTURED THEN PRINT "En timme gr...": RETURN FOR I = 0 TO VNANT: READ B$: NEXT: PRINT B$: RETURN vaenta1: DATA Bilbo stter sig ner och vilar.,Och vntar.,Och tiden gr...,Och Bilbo vntar... sova: IF ZS > .7 THEN PRINT "Bilbo frsker sova men r inte trtt.": RETURN SLEEPX = 1: TIME = 360 + 180 * RND ZE = 1: ZE1 = 0: ZS = ZS + TIME / 400: ZS1 = 0: IF ZS > 1 THEN ZS = 1 PRINT Bilbo$; "sover "; CINT(TIME / 60); "timmar." RETURN inventera: PRINT "Vad har jag med mig? tnker Bilbo. Han har "; : B$ = "" IF FOOD > 3 THEN B$ = LEFT$(STR$(FOOD / 10), 4) + " kg mat, " IF WATER > 3 THEN B$ = B$ + LEFT$(STR$(WATER / 10), 4) + " l vatten, " FOR I = 1 TO ANTSAK IF SP(I) = 0 THEN B$ = B$ + S0$(I) + ", " NEXT: IF B$ = "" THEN B$ = "ingenting." ELSE B$ = LEFT$(B$, LEN(B$) - 2) + "." GOSUB printout RETURN ta: IF CAPTURED THEN RETURN K = 0: J = 0: B$ = "" FOR I = 1 TO ANTSAK IF INSTR(A$, S1$(I)) > 3 AND SP(I) = R THEN IF CARRY + SV(I) > 20 THEN K = I ELSE SP(I) = 0: B$ = B$ + S0$(I) + ", " IF I = 20 AND SP(21) = 0 THEN J = 21 IF I = 21 AND SP(20) = 0 THEN J = 20 END IF NEXT: IF B$ <> "" THEN B$ = "Bilbo tar " + LEFT$(B$, LEN(B$) - 2) + ". " IF K > 0 THEN B$ = B$ + "Att bra " + S0$(K) + " blir fr tungt fr Bilbo. " IF J > 0 THEN B$ = B$ + "Bilbo lgger ifrn sig " + S0$(J) + ".": SP(J) = R IF B$ <> "" THEN GOSUB printout RETURN slaeppa: B$ = "" IF INSTR(A$, " PROV") > 5 OR INSTR(A$, " MAT") > 5 OR INSTR(A$, "VATT") > 5 THEN FRAGA = 2: L = 2: GOSUB inputt: MAT = A FRAGA = 3: L = 2: GOSUB inputt: VAT = A IF MAT * 10 > FOOD THEN MAT = FOOD / 10 IF VAT * 10 > WATER THEN VAT = WATER / 10 FOOD = FOOD - MAT * 10: WATER = WATER - VAT * 10 IF MAT > 0 THEN B$ = STR$(MAT) + " kg mat, " IF VAT > 0 THEN B$ = B$ + STR$(VAT) + " l vatten, " END IF FOR I = 1 TO ANTSAK IF INSTR(A$, S1$(I)) > 5 AND SP(I) = 0 THEN SP(I) = R: B$ = B$ + S0$(I) + ", " NEXT IF B$ <> "" THEN B$ = "Bilbo slpper " + LEFT$(B$, LEN(B$) - 2) + ".": GOSUB printout RETURN proviantera: IF (R = 14 OR R = 62 OR R = 191) AND ZRESIST < .3 THEN PRINT "Bilbo tillts inte proviantera p vrdshuset. Vrden sger konstiga": PRINT "saker om nya regler": RETURN J = 0: MAT = 0 IF R = 18 OR R = 27 OR R = 31 OR R = 43 OR R = 53 OR R = 72 OR R = 83 OR R = 84 OR (R > 126 AND R < 130) OR (R > 134 AND R < 144 AND R <> 139) OR R = 152 OR (R > 153 AND R < 157) OR (R > 160 AND R < 169 AND R <> 165) OR R = 174 OR R = 186 THEN J = - _ 1 IF R = 6 OR R = 14 OR R = 62 OR (R = 191 AND CASE191 = 0) THEN J = 2 IF J = 0 THEN RETURN IF J = 2 THEN FRAGA = 2: L = 1: GOSUB inputt: MAT = A IF R = 191 AND MAT > 2 THEN MAT = 2: PRINT "Vrdshusvrden vill bara slja 2 kg mat till Bilbo." IF R = 191 AND MAT > 0 THEN CASE191 = 1 END IF FRAGA = 3: L = 1: GOSUB inputt: VAT = A: J = 0 IF WATER + VAT * 10 > 30 THEN VAT = 3 - WATER / 10: J = -1 IF MAT + VAT + CARRY > 20 THEN PRINT "Bilbo frsker ta"; MAT + VAT; "kg proviant, men det blir fr mycket att bra.": RETURN FOOD = FOOD + MAT * 10: WATER = WATER + VAT * 10: IF J THEN WATER = 30 IF MAT > 0 THEN PRINT "I sin ryggsck lgger Bilbo"; MAT; "kg mat.": Bilbo$ = "Han " IF VAT > 0 THEN PRINT Bilbo$; "fyller p vattenflaskan med"; VAT; "l vatten."; IF J THEN PRINT " (Den rymmer bara 3 liter.)" ELSE PRINT END IF RETURN aeta: K = 0: IF CAPTURED THEN RETURN IF R = 6 OR R = 14 OR (R = 30 AND PP(2) = R) OR (R = 60 AND PP(4) = R) OR R = 62 OR R = 87 OR R = 177 OR R = 191 THEN K = 4: ZF = 1: ZW = 1 ELSE IF INSTR(A$, "T ") > 0 AND ZF < .9 AND FOOD >= 3 THEN K = 1: ZF = 1: FOOD = FOOD - 3 IF INSTR(A$, "DRIC") > 0 AND ZW < .9 AND WATER >= 3 THEN K = K + 2: ZW = 1: WATER = WATER - 3 END IF ZF1 = 0: ZW1 = 0 IF K = 0 OR (AUTO AND INSTR(A$, "AUTO") > 0) THEN RETURN IF K = 1 THEN PRINT "Bilbo tar fram lite mat ur packningen." IF K = 2 THEN PRINT "Bilbo tar lite av vattenfrrdet." IF K = 3 THEN PRINT "Bilbo tar fr sig ur matsck och vattenfrrd." IF K = 4 THEN PRINT "Bilbo tar fr sig av vad huset har att bjuda." RETURN hur: ZF1 = 0: ZW1 = 0: ZS1 = 0: ZE1 = 0: ZI1 = 0: RETURN ropa: RESTORE ropa0: GOSUB posinlist ropa0: DATA " BOMB"," MELL",slut SELECT CASE B$ CASE " BOMB" PRINT "Bilbo ropar p Tom Bombadill." IF R = 53 THEN MOVE(4, 0) = 2 IF R = 57 THEN MOVE(4, 0) = 10 CASE " MELL" IF R = 92 AND S0$(24) = "stngd stenport" AND INSTR(A$, "I") = 0 THEN PRINT "MELLON! ropar Bilbo. Sakta glider stenporten upp." TIME = 10: VS(92, 2) = 100: S0$(24) = "ppen stenport" END IF CASE ELSE END SELECT RETURN ge: J1 = 3: J2 = 70: GOSUB vilkensak: GOSUB vilkenperson IF SN = 0 OR SP(SN) <> 0 OR PN = 0 OR RING THEN RETURN IF SN = 7 THEN IF PN = 27 THEN PRINT "Bilbo ger ringen till Gollum." PRINT "- Min lsskade! Jag har ftt tillbaka min Sskatt! skriker Gollum" PRINT "och r med ens frsvunnen. Men andra hittar honom...": SLUT = -1 ELSEIF ZRESIST(PN) <= .1 THEN PRINT "Bilbo ger ringen till "; P$(PN); ".": SLUT = -1 ELSEIF PN = 6 THEN PRINT "Gandalf tar ringen och tittar p den. - Ringen mste slngas ner i" PRINT "Orodruin, sger han och ger den tillbaka till Bilbo." ELSE PRINT P$(PN); " vgrar att ta emot ringen." END IF ELSE SP(SN) = -PN: PRINT "Bilbo ger "; S0$(SN); " till "; P$(PN); "." IF (SN = 1 OR SN = 5 OR SN = 6 OR SN = 13 OR SN = 17 OR SN = 27 OR SN = 42 OR SN = 43 OR SN = 45 OR SN = 46) AND NOT FATTPRESENT(PN) AND ZRESIST(PN) > 0 AND ZRESIST(PN) < 1 THEN FATTPRESENT(PN) = -1: RINGTIME = RINGTIME - 30: ZRESIST(PN) = (1 + ZRESIST(PN)) / 2 PRINT P$(PN); " blir mycket glad"; IF PN = 26 OR PN = 30 THEN PRINT "a"; PRINT " ver presenten." ELSEIF SN = 38 AND PN = 25 THEN N = 25: GOSUB germat: IF B$ <> "" THEN GOSUB printout END IF END IF RETURN leta: B$ = MID$(A$, 6, 3) SELECT CASE B$ CASE "KAR" IF R = 88 THEN TIME = 20 + 40 * RND PRINT "Bland kartorna hittar Bilbo "; IF SP(21) = 255 THEN PRINT S0$(21); ".": SP(21) = R ELSE PRINT "inget av strre intresse." END IF CASE "BOK", "BC" IF R = 88 THEN TIME = 20 + 40 * RND PRINT "Bland bckerna hittar Bilbo "; IF SP(22) = 255 THEN PRINT S0$(22); ".": SP(22) = R ELSEIF SP(28) = 255 THEN PRINT S0$(28); ".": SP(28) = R ELSE PRINT "inget som intresserar honom." END IF ELSEIF R = 189 AND SP(39) = 255 THEN PRINT "Biblioteket innehller mnga bcker och pergamentrullar. Bilbo gr lngs" PRINT "hyllorna och fastnar s fr en tjock bok med titeln Monsterbok." SP(39) = R END IF CASE "ATH", "RT" TIME = 60 + 60 * RND IF VNOLD <> VN THEN PRINT "Bilbo letar efter athelasblad "; ELSE PRINT "Och letar... "; IF RND < .4 AND SP(17) = 300 + R THEN SP(17) = 0: S0$(17) = STR$(INT(2 + 3 * RND)) + " athelasblad" PRINT "och efter en stund hittar han ngra." ELSE PRINT "men han hittar inga." END IF CASE "TRA" IF R = 196 AND VS(196, 1) = 0 THEN TIME = 20 + 40 * RND IF RND < .5 THEN PRINT "Efter mycket letande hittar Bilbo en smal trappa som r uthuggen i" PRINT "den norra bergvggen.": VS(196, 1) = 197 ELSEIF VN <> VNOLD THEN PRINT "Bilbo letar efter en trappa men hittar ingen." ELSE PRINT "Letandet efter trappan fortstter utan resultat." END IF END IF CASE ELSE END SELECT RETURN laesa: J1 = 4: J2 = 70: GOSUB vilkensak IF SN = 0 OR (SP(SN) <> 0 AND SP(SN) <> R) THEN RETURN SELECT CASE SN CASE 22 PRINT "Ordboken verstter alvsprk." PRINT "- Den kan jag nog f anvndning fr, tnker Bilbo." CASE 23 PRINT "Inskriften tycks vara skriven p alvsprk. Den lyder:" PRINT "PEDO MELLON A MINNO." CASE 28 PRINT "Blomsterboken fngar Bilbos uppmrksamhet fr en stund. Den innehller" PRINT "mnga vackra blomplanscher men misspryds av att det p var femte sida" PRINT "sitter en stmpel: Tillhr biblioteket i Minas Tirith." TIME = 10 + 10 * RND CASE 29 PRINT "Inskriften p sarkofagen lyder: BALIN KONUNG AV MORIA" CASE 32 PRINT "Frsiktigt ppnar Bilbo boken. Mnga sidor fattas, r snderrivna, brnda" PRINT "eller blodflckade. Men Bilbo ser att den handlar om hur dvrgarna byggde" PRINT "upp sitt rike i berget och hur de fann och smidde mithrilen. Men de retade" PRINT "upp andarna djupt nere i berget och fick dem att snda upp eld och de" PRINT "hemskaste varelser. Boken beskriver ocks hur Balin drptes av en orch och" PRINT "dvrgarnas sista strid." CASE 39 IF NOT MONSTERBOK THEN PRINT "Monsterboken beskriver olika monster, men ven orcher och andra varelser" PRINT "som Mrkrets hrskare tagit i sin tjnst. Under de timmar som Bilbo sitter" PRINT "frsjunken i boken lr han sig en hel del om hur man ska mta dem i strid." PRINT "Han fr ocks veta att det i strid med de flesta monster inte lnar sig " PRINT "att gra sig osynlig (om man nu skulle kunna det)." TIME = 120 + 60 * RND: MONSTERBOK = -1 END IF CASE ELSE END SELECT RETURN visa: J1 = 5: J2 = 70: GOSUB vilkensak IF SN = 0 OR (SP(SN) <> 0 AND SP(SN) <> R) THEN RETURN J1 = 5: J2 = 70: GOSUB vilkenperson: IF PN = 0 THEN RETURN PRINT "Bilbo visar "; S0$(SN); " fr "; P$(PN); "." IF PN = 6 AND SN = 7 THEN PRINT "- Den ringen mste kastas i Orodruin, sger Gandalf": RETURN IF PN = 26 AND SN = 38 THEN PRINT "De undersker brevet noga. En av dem ppnar sedan porten och fljer Bilbo in i" PRINT "den stora hallen. Bilbo ser sig frundrad omkring. Golvet r tckt av plattor" PRINT "i olika frger och med hemlighetsfulla tecken. Taket brs upp av skulpterade" PRINT "pelare mlade i guld. Genom en ppen drr i stra vggen syns en mngd vapen." PRINT "Kung Thoden sitter p sin tron p en estrad vid hallens bortre gavel." R = 177: TIME = 32 END IF IF PN = 30 AND (SN = 28 OR SN = 39) THEN PRINT "Nr de ser var den hr hemma fljer en av dem med Bilbo in i staden." R = 189: TIME = 52: GOSUB se END IF RETURN sjung: RESTORE tsjunga: K = INT(3 * RND): PRINT "Bilbo brjar sjunga:" FOR I = 1 TO K: FOR J = 1 TO 8: READ B$: NEXT J: NEXT I FOR J = 1 TO 8: READ B$: PRINT " "; B$: NEXT J IF NOT SJUNGA AND NOT RING THEN B$ = "" FOR I = 1 TO ANTPERS IF PP(I) = R AND ZRESIST(I) > 0 AND ZRESIST(I) < .9 THEN ZRESIST(I) = ZRESIST(I) + .1: B$ = B$ + P$(I) + ", " RINGTIME = RINGTIME - 4 END IF NEXT IF B$ <> "" THEN SJUNGA = -1: B$ = LEFT$(B$, LEN(B$) - 2) + " applderar.": GOSUB printout END IF RETURN slaenga: J1 = 5: J2 = 70: GOSUB vilkensak: IF SN = 0 OR SP(SN) <> 0 THEN RETURN B$ = "": K = 0 IF R = 106 THEN B$ = " i brunnen.": K = -1 ELSEIF R = 112 OR R = 113 THEN B$ = " i sprickan.": K = -1 ELSEIF SN = 7 AND R = 224 THEN IF RINGTIME < 1 THEN PRINT "Bilbo slnger ner ringen i Elden." PRINT "Det hrs ett vrlande dn och ett buller som om jordens inre rkat i vildaste" PRINT "uppror. Elden stiger i vldiga kvastar och slickar tunnelns tak. Hamrandet" PRINT "och dunkandet vxer till ett avgrundslarm och hela berget brjar skaka." SP(7) = 255: VS(223, 3) = 226 ELSE PRINT "Bilbo frmr inte slnga ner ringen i Elden. Ringen som blivit hans" PRINT "kraste skatt." END IF ELSE B$ = ".": SP(SN) = R END IF IF B$ <> "" THEN B$ = "Bilbo slnger " + S0$(SN) + B$: GOSUB printout IF SN = 2 THEN PRINT "Flaskan gr i kras.": SP(2) = 255 IF K THEN SP(25) = 255: ELDIMORIA = -1: VS(113, 3) = 0: VS(112, 3) = 0: GOSUB nyaplatsen RETURN spara: SPAR = -1: FRAGA = 4: L = 30: GOSUB inputt: A$ = RTRIM$(A$) IF A$ = "" THEN SPAR = 0: RETURN OPEN A$ FOR OUTPUT AS #1 WRITE #1, R, RING, CARRY, FOOD, WATER, CAPTURED, MONSTERBOK, LYKTA, ZEXPER, TIDTILLSNOLLA, RESERV, RESERV, RESERV WRITE #1, YEAR, DAT, MON, HOUR, MIN, RINGTIME, ZF, ZW, ZS, ZE, ZI, ZX, ZF1, ZW1, ZS1, ZE1, ZI1 FOR I = 1 TO ANTVERB: WRITE #1, V$(I): NEXT FOR I = 1 TO ANTSAK: WRITE #1, S0$(I), S1$(I), SP(I), SV(I): NEXT FOR I = 1 TO ANTPERS: WRITE #1, P$(I), P1$(I), ZRESIST(I), ZPOWER(I), FATTPRESENT(I): J = 0 DO: WRITE #1, MOVE(I, J): J = J + 1: LOOP UNTIL MOVE(I, J - 1) = 0 NEXT I FOR I = 1 TO ANTRUM WRITE #1, RUM$(I, 1), RUM$(I, 2), RUM$(I, 3), RUM$(I, 4) FOR J = 1 TO 8: WRITE #1, VS(I, J): NEXT J NEXT I CLOSE : SPAR = 0 PRINT "Bilbo har sparat sitt ventyr." RETURN haemta: HAMT = -1: FRAGA = 4: L = 30: GOSUB inputt: A$ = RTRIM$(A$) IF A$ = "" AND SLUT THEN SCREEN 0: CLS : SYSTEM IF A$ = "" THEN HAMT = 0: RETURN haemta2: OPEN A$ FOR INPUT AS #1 INPUT #1, R, RING, CARRY, FOOD, WATER, CAPTURED, MONSTERBOK, LYKTA, ZEXPER, TIDTILLSNOLLA, RESERV, RESERV, RESERV INPUT #1, YEAR, DAT, MON, HOUR, MIN, RINGTIME, ZF, ZW, ZS, ZE, ZI, ZX, ZF1, ZW1, ZS1, ZE1, ZI1 FOR I = 1 TO ANTVERB: INPUT #1, V$(I): NEXT FOR I = 1 TO ANTSAK: INPUT #1, S0$(I), S1$(I), SP(I), SV(I): NEXT FOR I = 1 TO ANTPERS: INPUT #1, P$(I), P1$(I), ZRESIST(I), ZPOWER(I), FATTPRESENT(I): J = 0 DO: INPUT #1, MOVE(I, J): J = J + 1: LOOP UNTIL MOVE(I, J - 1) = 0 PP(I) = MOVE(I, MOVE(I, 0)) NEXT I FOR I = 1 TO ANTRUM: INPUT #1, RUM$(I, 1), RUM$(I, 2), RUM$(I, 3), RUM$(I, 4) FOR J = 1 TO 8: INPUT #1, VS(I, J): NEXT J NEXT I CLOSE IF HAMT THEN CLS : GOSUB newscreen HAMT = 0: SLUT = 0 IF MON = 12 THEN SEASON = 0 ELSE SEASON = INT(MON / 3) RETURN sluta: IF LEN(A$) < 7 THEN SCREEN 0: CLS : SYSTEM ELSE RETURN information: COLOR 3: VIEW PRINT: CLS OPEN "bilbo.txt" FOR INPUT AS #1: J = 0 DO: INPUT #1, A$: PRINT A$: IF A$ = " " THEN GOSUB anykey: CLS : J = J + 1 LOOP UNTIL J = 3 CLOSE CLS : GOSUB newscreen RETURN hursa: PRINT "Bilbo vet inte vad han ska gra. ": RETURN fraaga: '*************** FRGA ************** J1 = 5: J2 = 13: GOSUB vilkenperson IF PN = 0 OR ZRESIST(PN) = 0 OR RING THEN RETURN J1 = JP + 4: J2 = 70: GOSUB vilkensak IF SN = 0 THEN GOSUB vilkensak2 KK = 0 SELECT CASE P$(PN) CASE "Gandalf" IF INSTR(A$, "HUR") > 8 AND INSTR(A$, "MINS") > 11 AND SN = 7 THEN KK = 1 PRINT "Bilbo frgar Gandalf hur man motstr ringens makt." PRINT "- Var osjlvisk. Gr livet gladare fr dem du mter, svarar Gandalf." END IF CASE "Borgmstare Vinbock" IF INSTR(A$, " NYCK") > 0 AND VS(45, 2) = 0 THEN KK = 1 PRINT "Borgmstaren skickar ett bud med nyckeln." PRINT "- Men vill du verkligen ge dig in i Gamla skogen? frgar han." PRINT "- Och vad du gr s hll dig borta frn lven Vitte Spring!" VS(45, 2) = 46 END IF CASE "Kung Thoden" IF INSTR(A$, " VAPE") > 9 AND SP(38) = -25 THEN KK = 1: VS(177, 2) = 178 PRINT "- Min vapenkammare str ppen fr dig, sger kungen och pekar p" PRINT "drren i stra vggen." END IF CASE "Gollum" IF SP(8) = 0 AND INSTR(A$, " VG") > 10 THEN VS = 0 IF R = 4 OR R = 147 THEN PRINT "Med handen p Sting ber Bilbo Gollum att visa vgen genom trsklandet." PRINT "- Men vad ska sm hober i Mordor att gra, det undrar vi, ja min Sskatt," PRINT "det undrar vi, muttrar Gollum, medan han halvkrypande prvar markens brkraft" PRINT "i olika riktningar. Efter flera timmar, medan de fasansfulla bergen i sydst" PRINT "kommit allt nrmare, trffar de p en vg som fljt bergen frn norra sidan." KK = 1: R = 181: TIME = 200 + RND * 150: VS = 3 END IF IF R = 181 OR R = 182 THEN PRINT "Gollum pekar lngs vgen sderut. - Smagol vet att hober inte kan komma in" PRINT "genom portarna. Finns bara en vg. Jaja, bara den vgen! Vid otcka staden" PRINT "finns trappa upp i berget. Och tunnel. Visst! Visst! Snlla Smagol hittade" PRINT "den en gng." END IF IF VS = 3 THEN GOSUB se END IF CASE ELSE END SELECT IF KK = 1 THEN RETURN IF SN > 0 THEN S$ = S0$(SN) IF VAL(S$) > 0 THEN S$ = MID$(S$, 3) '3 athelas > athelas J = INSTR(S$, "-"): IF J > 0 THEN S$ = LEFT$(S$, J - 1) J = INSTR(S$, "("): IF J > 0 THEN S$ = LEFT$(S$, J - 1) RESTORE svar DO READ A: IF A = -1 THEN EXIT DO IF A = SN THEN KK = -1 READ J: IF J = 0 THEN KK = -KK FOR I = 1 TO J READ A: IF A = PN THEN KK = -KK NEXT READ B$ IF KK = 1 THEN PRINT "Bilbo frgar "; P$(PN); " om "; S$; "." B$ = "- " + B$ + ", svarar " + P$(PN) + ".": GOSUB printout ELSE KK = 0 END IF LOOP WHILE KK = 0 END IF IF KK = 1 THEN RETURN IF SN > 0 THEN PRINT "Bilbo frgar "; P$(PN); " om "; S$; "." PRINT "- Frga Gandalf, svarar "; P$(PN); "." END IF RETURN anvaenda: '************* ANVNDA ************ J1 = 5: J2 = 70: GOSUB vilkensak IF SN = 0 OR (SP(SN) <> 0 AND SN <> 20) THEN RETURN ELSE TIME = 2 'bda kartorna fr SN=20 SELECT CASE S1$(SN) CASE "KART" IF EGA = 0 THEN PRINT "Bilbo r ledsen ver att kartan inte kan visas p din skrm." ELSEIF SP(20) = 0 OR SP(21) = 0 THEN PRINT "Bilbo tittar p kartan:" FOR I = 1 TO 11: PRINT : NEXT IF SP(20) = 0 THEN PUT (174, 130), MAP1 ELSE PRINT : PUT (174, 116), MAP2 END IF CASE "RING" IF (INSTR(A$, " EJ ") > 0 OR INSTR(A$, " INTE") > 0) AND RING THEN RING = 0: PRINT "Bilbo tar av sig ringen och blir synlig igen." ELSEIF NOT RING THEN RING = -1: PRINT "Bilbo tar p sig ringen och blir osynlig." END IF CASE "ORDB" FRAGA = 5: L = 12: GOSUB inputt: IF LEN(A$) < 2 THEN RETURN RESTORE anv1: A$ = LEFT$(A$, LEN(A$) - 1): B$ = "" FOR I = 1 TO 5: READ C$, D$: IF A$ = C$ THEN B$ = D$ NEXT IF B$ = "" THEN PRINT "Frgves sker Bilbo efter "; A$; " i ordboken." ELSE PRINT "Ordboken verstter "; A$; " till "; B$; "." anv1: DATA PEDO,TALA (SG/A),MELLON,VN,A,OCH,MINNO,TRD IN,ORODRUIN,DOMEDAGSKLYFTAN CASE "MIRU" SN = 16: GOSUB minska: PRINT "Bilbo tar en klunk strkande miruvor." ZE = 1: ZE1 = 0: ZF = 1: ZF1 = 0: ZW = 1: ZW1 = 0: ZX = 1.5 IF SP(SN) = 255 THEN PRINT "Han tittar i flaskan, det var den sista klunken." CASE "ATHE" IF ZI < 1 THEN SN = 17: GOSUB minska PRINT "Bilbo lgger ett athelas-blad p sin skada och knner sig strax bttre." ZI = (1 + ZI) / 2: ZI1 = 0 END IF CASE "LEMB" SN = 1: GOSUB minska: PRINT "Bilbo ter en lembas-kaka." ZF = 1: ZW = 1: ZF1 = 0: ZW1 = 0 CASE "GALA" IF R = 202 THEN VS(R, 4) = 203: PRINT "Bilbo hller upp Galadriels flaska. Kraften frn vktarstatyerna dr bort." CASE "KRIS" PRINT "Bilbo tittar in i kristallkulan. Drinne glimmar "; INT(10 * ZFIGHT); "sm stjrnor." CASE ELSE END SELECT RETURN olikaplatser: '*************** VAD HNDER P OLIKA PLATSER? ***************** IF SP(7) <> 0 AND SP(7) <> 6 AND SP(7) <> 255 AND RND < .2 THEN PRINT "Ringen hittas av Saurons tjnare.": SLUT = -1: RETURN IF SP(7) = PP(3) THEN PRINT "De svarta ryttarna finner ringen.": SLUT = -1: RETURN SELECT CASE R CASE 14, 62 ' Vrdshus GOSUB nollagarb: g = 0 FOR I = 1 TO ANTPERS IF PP(I) = R AND ZRESIST(I) > 0 AND ZRESIST(I) < 1 THEN g = g + 1: GARB(g) = I NEXT K = INT(6 * RND) 'slumpa prat IF g > 1 AND K < 4 AND KROGPRAT(K) = 0 THEN RESTORE tkrog: FOR I = 1 TO 2 * K: READ B$: NEXT: READ B$, D$ E1 = VAL(MID$(B$, 1, 1)): E2 = VAL(MID$(B$, 2, 1)): B$ = MID$(B$, 3) F1 = VAL(MID$(D$, 1, 1)): F2 = VAL(MID$(D$, 2, 1)): D$ = MID$(D$, 3) E = 0: f = 0 FOR I = 1 TO 3 'slumpa 1:a pratare J = GARB(INT(RND * g) + 1): L = ZRESIST(J) * 10 IF L >= E1 AND L <= E2 THEN E = J NEXT IF INSTR(B$, "athe") > 0 AND SP(17) <> 255 THEN E = 0 IF E > 0 THEN IF INSTR(B$, "athe") > 0 THEN SP(17) = 370 KROGPRAT(K) = 1: B$ = "- " + B$ + ", sger " + P$(E) + ".": GOSUB printout FOR I = 1 TO 3 'slumpa 2:a pratare J = GARB(INT(RND * g) + 1): L = ZRESIST(J) * 10 IF L >= F1 AND L <= F2 AND J <> E THEN f = J NEXT IF INSTR(D$, "rter") > 0 AND SP(17) <> 255 THEN f = 0 IF f > 0 AND D$ <> "" THEN B$ = "- " + D$ + ", svarar " + P$(f) + "." IF INSTR(D$, "rter") > 0 THEN SP(17) = 350 GOSUB printout END IF END IF END IF CASE 30 IF PP(2) = R AND SVAMP = 0 AND NOT RING THEN PRINT "Maggot bjuder Bilbo p stekt svamp.": SVAMP = 1: ZF = 1: ZW = 1: ZF1 = 0: ZW1 = 0 CASE 35 IF PP(12) = R THEN N = 12: GOSUB germat IF SP(45) = 255 THEN SP(45) = 0: B$ = B$ + "Av Gildor fr Bilbo en liten alvsten." IF B$ <> "" THEN GOSUB printout END IF CASE 42 IF VS(45, 2) = 0 THEN PRINT "Borgmstare Vinbock har en stor nyckelknippa p magen." CASE 53 IF PP(4) = R THEN L = 0 IF CAPTURED THEN L = 1: CAPTURED = 0 PRINT "Tom brjar sjunga:" PRINT " Dumma gamla pilgubbe, bort med sina rtter!" PRINT " Tom kommer! Kvll fljer dag, nr man r trtter." END IF IF TOMVISIT = 0 THEN IF L = 1 THEN PRINT "Tom fortstter att sjunga:" ELSE PRINT "Tom brjar sjunga:" PRINT " Skutta p vnner sm, upp lngs Vitte spring!" PRINT " Tom gr fre att tnda er ljus i en ring." PRINT "Tom visar vgen till sitt hus." TOMVISIT = 1: R = 60: PP(4) = 60: MOVE(4, 0) = 1: TIME = TIME + 20 END IF END IF CASE 57 IF PP(4) = R AND CAPTURED THEN CAPTURED = 0: SP(12) = 255 PRINT "Tom sjunger s hr:" PRINT "Ut med dig gamle vtte! Sprick fr sol som skiner!" PRINT "Tvina bort som dimman med ett tjut av vind som viner!" END IF CASE 60 ' Toms hus IF PP(4) = R AND TOMVISIT < 2 THEN TOMVISIT = 2: ZF = 1: ZW = 1: ZE = 1: ZF1 = 0: ZW1 = 0: ZE1 = 0 PRINT "Tom bjuder p mat. Sedan sger Tom: Rkar du i fara s ropa:" PRINT " Vid sol och eld och mne klar lyssna och hr oss!" PRINT " Kom Tom Bombadill ty nu str nden fr oss!" TIME = TIME + 30 + 30 * RND N = 4: GOSUB germat IF ZI < 1 THEN B$ = B$ + "Tom hjlper Bilbo med hans skada.": ZI = (ZI + 1) / 2: ZI1 = 0 IF B$ <> "" THEN GOSUB printout END IF IF PP(4) = R THEN N = 4: GOSUB germat: GOSUB printout CASE 87 N = 5: GOSUB germat IF SP(18) <> 0 THEN SP(18) = 0: LYKTA = 4000: B$ = B$ + "Av Elrond fr Bilbo " IF J = 1 THEN B$ = B$ + "ocks " B$ = B$ + "en lykta (kan lysa tv dygn)." END IF IF B$ <> "" THEN GOSUB printout CASE 177 IF SP(35) = 0 AND CASE177 < 2 THEN PRINT "Vakterna skrattar nr de ser den lille hoben komma slpande" PRINT "p ett stort slagsvrd.": CASE177 = CASE177 + 1 END IF IF SP(8) = 0 AND SP(37) = 0 AND CASE177 < 2 THEN PRINT "- Vad ska du med en yxa till nr du har Sting! sger en av vakterna" PRINT "till Bilbo.": CASE177 = CASE177 + 1 END IF CASE ELSE END SELECT RETURN deandra: '********************** VAD GR DE ANDRA? ************************** TIMEACK = TIMEACK + TIME: EX = 0 deandra0: FOR N = 1 TO ANTPERS IF PP(N) = R AND ZRESIST(N) = 0 THEN GOSUB strid NEXT N N = 4: I = 2 * INT(RND * 8) 'Tom IF PP(N) = R AND SLEEPX = 0 AND I < 5 THEN RESTORE tTom: FOR J = 0 TO I: READ B$: NEXT PRINT "Tom sjunger:": PRINT " "; B$: READ B$: PRINT " "; B$: EX = -1 END IF N = 6 'Gandalf IF PP(N) = R AND SLEEPX = 0 THEN IF SP(38) = 255 AND RND < .2 THEN SP(38) = 0: EX = -1 PRINT "Gandalf ger ett brev till Bilbo." PRINT "- Om din frd fortstter bortom Dimmiga bergen," PRINT "s sk upp kung Thoden i Edoras och ge honom detta brev." ELSEIF RND < .2 THEN RESTORE tGandalf: FOR I = 1 TO 1 + INT(4 * RND): READ B$: NEXT B$ = "- " + B$ + ", sger Gandalf.": GOSUB printout: EX = -1 ELSEIF RND < .3 AND SP(16) <> 0 THEN SP(16) = 0: S0$(16) = "flaska miruvor (3 klunkar)" PRINT "Gandalf ger Bilbo en flaska med den strkande drycken miruvor.": EX = -1 END IF END IF IF EX OR TIMEACK < 60 THEN RETURN TIMEACK = TIMEACK - 60 FOR N = 1 TO ANTPERS - 1 IF ZRESIST(N) = 0 OR NIGHT = 0 OR PP(N) <> MOVE(N, 1) THEN GOSUB flyttaperson: IF PP(N) = R THEN TIMEACK = 0 IF N = 3 AND R = MOVE(N, MOVE(N, 0) + 1) AND SLEEPX = 0 THEN PRINT "Hovslag hrs i "; : IF PP(N) > R THEN PRINT "ster." ELSE PRINT "vster." END IF NEXT N GOTO deandra0 bilboskondition: ' ******************* HUR MR BILBO? *********************** IF RING THEN RINGTIME = RINGTIME + TIME IF RINGTIME > 0 THEN RINGTIME = RINGTIME - TIME / 240 IF RINGTIME > 10000 THEN PRINT "Ringens makt frlamar Bilbo.": SLUT = -1: RETURN IF ZI <= 0 THEN PRINT "Bilbo dr av sina skador.": SLUT = -1: RETURN ZF = ZF - TIME / 1200: IF ZF < 0 THEN ZF = 0 'mat ZW = ZW - TIME / 1000: IF ZW < 0 THEN ZW = 0 'dryck ZI = ZI + TIME / 40000: IF ZI > 1 THEN ZI = 1 'skadad IF SLEEPX = 0 THEN ZS = ZS - TIME / 1440: IF ZS < 0 THEN ZS = 0 'smn ZX = ZX - TIME / 500: IF ZX < 1 THEN ZX = 1 'x styrka (miruvor) ZK = ZX * (ZF * ZW * ZI * ZE) ^ .25: IF ZK < .3 THEN ZK = .3 'kondition IF ZS = 0 THEN PRINT "Bilbo kan inte hlla sig vaken lngre. ": VNNEXT = 3: RETURN IF AUTO AND ZF < .6 THEN A$ = "T AUTO": GOSUB aeta IF AUTO AND ZW < .6 THEN A$ = "DRICK AUTO": GOSUB aeta IF AUTO AND ZE < .6 THEN ZE = 1: ZE1 = 0: TIME = TIME + 20 + 30 * RND B$ = "Bilbo r " IF ZF >= .3 AND ZF < .6 AND ZF1 = 0 THEN ZF1 = 1: B$ = B$ + "hungrig, " IF ZF < .3 AND ZF1 < 2 THEN ZF1 = 2: B$ = B$ + "mycket hungrig, " IF ZW >= .3 AND ZW < .6 AND ZW1 = 0 THEN ZW1 = 1: B$ = B$ + "trstig, " IF ZW < .3 AND ZW1 < 2 THEN ZW1 = 2: B$ = B$ + "mycket trstig, " IF ZS >= .1 AND ZS < .3 AND ZS1 = 0 THEN ZS1 = 1: B$ = B$ + "smnig, " IF ZS < .1 AND ZS1 < 2 THEN ZS1 = 2: B$ = B$ + "mycket smnig, " IF ZI >= .3 AND ZI < .8 AND ZI1 = 0 THEN ZI1 = 1: B$ = B$ + "skadad, " IF ZI < .3 AND ZI1 < 2 THEN ZI1 = 2: B$ = B$ + "svrt skadad, " IF ZE >= .3 AND ZE < .6 AND ZE1 = 0 THEN ZE1 = 1: B$ = B$ + "trtt i benen, " IF ZE < .3 AND ZE1 < 2 THEN ZE1 = 2: B$ = B$ + "mycket trtt i benen, " IF LEN(B$) > 9 THEN B$ = LEFT$(B$, LEN(B$) - 2) + ".": GOSUB printout: BB$ = "Han" ELSEIF LEFT$(A$, 3) = "HUR" THEN PRINT "Bilbo r i bra form.": BB$ = "Men han" ELSE BB$ = "Bilbo" END IF IF LEFT$(A$, 4) = "HUR " AND RINGTIME > 0 THEN PRINT BB$; " skulle inte kunna skilja sig frn ringen." styrka: ZFIGHT = .1 IF SP(36) = 0 THEN ZFIGHT = .2 IF SP(37) = 0 THEN ZFIGHT = .4 IF SP(14) = 0 THEN ZFIGHT = .5 IF SP(8) = 0 THEN ZFIGHT = 1 IF SP(9) = 0 THEN ZFIGHT = ZFIGHT + .4 IF SP(33) = 0 THEN ZFIGHT = ZFIGHT + .1 IF SP(34) = 0 THEN ZFIGHT = ZFIGHT + .2 IF MONSTERBOK THEN ZFIGHT = ZFIGHT + .3 IF SP(41) = 0 AND SP(33) <> 0 AND SP(34) <> 0 THEN ZFIGHT = ZFIGHT + .3 ZFIGHT = ZFIGHT * ZK * ZEXPER 'max 2 * 1.5 * ZEXPER CARRY = 0 FOR I = 1 TO ANTSAK IF SP(I) = 0 THEN CARRY = CARRY + SV(I) NEXT CARRY = CARRY + (FOOD + WATER) / 10 RETURN nytid: ' **************************** NYTID ********************************* IF R > 100 AND R < 125 AND SP(18) = 0 AND SLEEPX = 0 THEN LYKTA = LYKTA - TIME IF LYKTA <= 0 THEN SP(18) = 255: PRINT "Lyktan brinner ut." ELSE IF LYKTA < 400 THEN PRINT "Lyktan brinner svagare." END IF ZRESISTSUM = 0: J = 0 FOR I = 1 TO ANTPERS IF ZRESIST(I) > .1 AND ZRESIST(I) < .9 THEN ZRESIST(I) = ZRESIST(I) - TIME / 150000 IF ZRESIST(I) > 0 AND ZRESIST(I) < 1 THEN ZRESISTSUM = ZRESISTSUM + ZRESIST(I): J = J + 1 NEXT: IF J = 0 THEN ZRESIST = 1 ELSE ZRESIST = ZRESISTSUM / J MIN = MIN + TIME: TIME = 0 WHILE MIN > 60: MIN = MIN - 60: HOUR = HOUR + 1: WEND WHILE HOUR > 24: HOUR = HOUR - 24: DAT = DAT + 1: WEND WHILE DAT > 30: DAT = DAT - 30: MON = MON + 1: WEND IF MON = 13 THEN MON = 0: YEAR = YEAR + 1 IF MON = 12 THEN SEASON = 0 ELSE SEASON = INT(MON / 3) IF HOUR > 21 OR HOUR < 7 THEN NIGHT = -1 ELSE NIGHT = 0 IF PP(27) = 255 AND RND < .2 THEN PP(27) = 181: MOVE(27, 0) = 3 'Gollum TIDTILLSNOLLA = TIDTILLSNOLLA - 1 IF TIDTILLSNOLLA < 0 THEN TIDTILLSNOLLA = 15 + 15 * RND FOR I = 1 TO ANTPERS - 1 IF PP(I) = 255 THEN PP(I) = MOVE(I, 1): MOVE(I, 0) = 1 NEXT SVAMP = 0: HUNDBITEN = 0: SJUNGA = 0 CASE71 = 0: CASE112 = 0: CASE157 = 0: CASE183 = 0: CASE200 = 0 S0$(24) = "stngd stenport": VS(92, 2) = 0 ELDIMORIA = 0: VS(113, 3) = 114: VS(112, 3) = 114 ZRESIST(27) = 0 FOR I = 1 TO 20: KROGPRAT(I) = 0: NEXT END IF GOSUB newscreen RETURN nyaplatsen: '***************** VAD HNDER P NYA PLATSEN? ***************** SELECT CASE R CASE 1 IF ROLD = 157 AND VS = 1 AND RND < .3 THEN R = 130: TITTA = -1 CASE 2 IF (ROLD = 55 OR ROLD = 56) AND RND < .4 THEN PRINT "I dimman vandrar Bilbo rtt in i ett gravkummel": R = 57: TITTA = -1 CASE 3 IF RND < .4 AND SP(27) = 255 THEN SP(27) = 0: PRINT "I en gruvgng hittar Bilbo en mithrilklump." CASE 5 IF RND < .2 AND NOT RING THEN PRINT "I det hr landet tycker man inte om objudna gster. Det gller ocks" PRINT "de orcher som Bilbo stter ihop med.": SLUT = -1 END IF CASE 7 IF PP(1) = 7 AND NIGHT = 0 AND RND < .6 THEN RESTORE tSam: FOR I = 0 TO SEASON: READ B$: NEXT: PRINT "Sam "; B$; "." CASE 31 IF ROLD = 43 THEN SP(11) = 31: VS(31, 2) = 43: VS(43, 4) = 0 CASE 36 IF (ROLD = 34 OR ROLD = 35) AND RND < .4 THEN PRINT "Under klttringen nerfr berget stukar Bilbo foten." ZI = ZI - .2 * RND END IF CASE 38 IF HUNDBITEN = 0 THEN HUNDBITEN = 1: PRINT "Maggots hundar biter Bilbo i benet.": ZI = ZI - .2 * RND CASE 43 IF ROLD = 31 THEN SP(11) = 43: VS(31, 2) = 0: VS(43, 4) = 31 CASE 46 IF ROLD = 45 THEN VS(45, 2) = 0: GOSUB nollagarb PRINT "Porten slr igen bakom Bilbo med en gll klang. Framfr sig har han trd" PRINT "och ter trd, av otroligt skiftande storlek och form, raka och krokiga," PRINT "vridna och lutande, tjocka och slanka, slta och knotiga, med tta gren-" PRINT "verk. Alla stammar r grna eller gr av mossor eller gyttjiga, raggiga" PRINT "parasitvxter." END IF CASE 49, 51 J = INT(6 * RND) IF GARB(J) = 1 THEN IF R = 49 AND VS = 2 THEN R = 50: PRINT "Pltsligt ser Bilbo en ppning bland trden.": TITTA = -1 IF R = 51 AND VS = 4 THEN R = 50: PRINT "Pltsligt ppnar sig skogen.": TITTA = -1 IF R = 51 AND VS = 2 THEN R = 52: GOSUB nollagarb: PRINT "Trden glesnar! Bilbo kommer ut p en trdls srygg.": PRINT "Skogen r inte slut, men den r inte s tt runt sen, och terrngen r": PRINT "mer kuperad. I sder skymtar en lv." PRINT "Bilbo trnger fram genom skogen." ELSE GARB(J) = 1: RESTORE tskogen: FOR I = 0 TO J: READ B$: NEXT: PRINT B$ J = 7 * RND IF J = 1 THEN PRINT "Bilbo snubblar ver en rot och faller. "; IF RND < .5 THEN PRINT "Men han r snabbt p ftter igen. " ELSE PRINT "Han gr illa foten.": ZI = ZI - .2 * RND ELSEIF J = 2 THEN PRINT "En gren kommer svepande "; IF RND < .5 THEN PRINT "men missar Bilbo." ELSE PRINT "och trffar Bilbo i axeln": ZI = ZI - .3 * RND ELSEIF J = 3 THEN PRINT "En vldig gren faller ned och "; IF RND < .5 THEN PRINT "r nra att trffa Bilbo." ELSE PRINT "och skadar Bilbo i armen.": ZI = ZI - .3 * RND ELSEIF J = 4 THEN PRINT "Bilbo fngas in av ngra grenar och hlls fast. Efter vad som tycks vara" PRINT "en evighet slappnar deras grepp, och Bilbo kan ta sig loss.": TIME = TIME + 20 * 40 * RND END IF END IF CASE 52 J = INT(4 * RND) IF GARB(J) = 1 THEN GOSUB nollagarb: R = 53 PRINT "Frden ned mot Vitte Spring gr genom klyftor och ver kullar. Marken" PRINT "brjar bli fuktig och sank, och snart lper stigen bredvid en liten bck." PRINT "Pltsligt ppnar sig landskapet och framfr Bilbo flyter en gyttjig lv" PRINT "kantad av urgamla trpilar, som bildar ett lvvalv ver vattnet." TITTA = -1 ELSE GARB(J) = 1: RESTORE tVitte: FOR I = 0 TO J: READ B$: NEXT: PRINT B$ END IF CASE 53 IF NOT CAPTURED AND PP(4) <> R THEN PRINT "Bilbo fngas av piltrdets rtter.": CAPTURED = -1 CASE 57 IF NOT CAPTURED AND SP(12) = R THEN CAPTURED = -1 PRINT "En hg, svart skepnad kastar sig ver Bilbo och griper honom med hnder kalla-" PRINT "re n is. Bilbo r fngad av Kummelgasten. Gasten sjunger med mumlande rst:" PRINT " Kyla i hjrta och hand och ben!" PRINT " Kall vare smn under kummelsten!" END IF CASE 69 IF ZS < .3 THEN PRINT "Trtt som han r ser Bilbo inte att han kliver rakt ner i ett hl" PRINT "med kvicksand.": SLUT = -1 END IF CASE 71 IF CASE71 = 0 THEN CASE71 = 1 PRINT "Nedanfr berget strcker sig landsvgen, likt ett band som i krkar och" PRINT "backar kommer ringlande frn vster, tills den tonar bort bak en mrk" PRINT "landhjning i ster. Dr bakom reser sig Bergen. Deras nrmaste frelpare" PRINT "r bruna och dystra, bakom dem reser sig hgre, gr formationer, allra lngst" PRINT "bort glimmande sntinnar bland molnen." END IF B$ = "Nere p landsvgen syns " FOR I = 1 TO ANTPERS IF PP(I) = 66 THEN IF I = 3 THEN IF EAST THEN B$ = B$ + "Svarta ryttare ridande sterut, " ELSE B$ = B$ + "Svarta ryttare ridande vsterut, " ELSE B$ = B$ + P$(I) + ", " END IF END IF NEXT: IF LEN(B$) > 24 THEN B$ = LEFT$(B$, LEN(B$) - 2) + "." ELSE B$ = B$ + "ingen." GOSUB printout CASE 84 IF PP(3) = 83 THEN PRINT "De svarta ryttarna rider ver vadet. D framkallar Elrond flodvgen." PRINT "Ryttarna skljs bort.": PP(3) = 255 END IF CASE 87 IF ZI < .9 THEN PRINT "Elronds lkekonst gr Bilbo frisk. Bilbo vaknar upp och ser sig om." R = 86: Bilbo$ = "Han ": ZI = 1: ZI1 = 0: ZE = 1: ZE1 = 0: ZS = 1: ZS1 = 0: TIME = TIME + 300 + 300 * RND: TITTA = -1 END IF CASE 112, 113 IF CASE112 = 0 THEN CASE112 = 1 PRINT "Ett enormt tak vlver sig ver Bilbo. Det brs upp av en dubbel rad" PRINT "majesttiska pelare mitt i salen, skulpterade som trd vars grenar i taket" PRINT "bildar ett invecklat fltverk. Mellan pelarraderna ppnar sig i golvet en" PRINT "kolossal spricka som delar hallen frn norr till sder." END IF IF ELDIMORIA THEN PRINT "I sprickan brinner en eld vars lgor slickar pelarna. Hettan r olidlig." CASE 129 ZE = 1: ZE1 = 0: PRINT "lvens vatten skljer bort all trtthet frn Bilbos ftter." CASE 130 TITTA = -1 PRINT "Alver omringar Bilbo och fr honom till sin huvudstad Caras Galadon." PRINT "Loriens alver bor p plattformar i trden. Caras Galadon r en smaragdgrn" PRINT "kulle omgiven av en vallgrav och befstningsvallar. P kullen vxer tusen-" PRINT "tals av de hgsta gyllentrd som Bilbo skdat. Som vldiga torn reser de" PRINT "sig mot himlen, och p kvllarna glittrar lven av de olikfrgade ljusen" PRINT "frn otaliga sm lyktor. Mitt p kullen str det allra hgsta trdet i vars" PRINT "topp alverna byggt kung Celeborn och drottning Galadriels palats." IF ZI < 1 THEN PRINT "Alverna hjlper Bilbo med hans skada.": ZI = (ZI + 1) / 2: ZI1 = 0 PRINT "Bilbo frs till kungen och drottningen. Kungen sger till Bilbo:" PRINT "- Ingen som inte tillhr vrt folk fr fritt frdas genom vra skogar." PRINT "Men vi kan kalla p en av rnarna som fr dig till Vattnadal." PRINT "Eller s ger vi dig en bt s du kan frdas nerfr floden." PRINT "Vilken r din nskan?": FRAGA = 6 DO: L = 3: GOSUB inputt: A$ = LEFT$(A$, 1): LOOP UNTIL A$ = "" OR A$ = "B" COL = 7 + 4 * (COL = 7): COLOR COL IF A$ = "" THEN PRINT "Bilbo tackar ja till en flygtur." PRINT "Gwaihir sjlv kommer och br Bilbo ver Loriens skogar," PRINT "ver Dimmiga bergen, bort till Vattnadal." R = 85: TIME = 480: VS = 1 ELSE PRINT "Bilbo tar tacksamt emot erbjudandet om en bt." N = 22: GOSUB germat IF SP(1) <> 0 THEN SP(1) = 0: S0$(1) = "3 lembaskakor": B$ = B$ + "Av alverna fr Bilbo 3 lembaskakor. " IF SP(2) = 255 THEN SP(2) = 0: B$ = B$ + "Galadriel ger Bilbo en kristallflaska med aftonstjrnans ljus. " B$ = B$ + "Kungen och drottningen fljer Bilbo till stranden av Stora floden Anduin, dr en alvbt vntar." GOSUB printout: R = 135: TIME = 124 END IF CASE 135, 136, 140, 141 TIME = TIME + 300 'tid hr d Bilbo ej blir trtt i bt CASE 137, 138, 142, 143 IF ROLD = 136 OR ROLD = 141 THEN SP(3) = R CASE 145 PRINT "Bilbo tycker att han ser hela vrlden. I norr Stora floden som ligger som" PRINT "ett band under honom och Dimmiga bergens tandrad. I vster Rohans vida betes-" PRINT "flt och Orthanc, Sarumans torn. I sder strtar Stora floden utfr Rauros-" PRINT "fallen och grenar ut i Ethir Anduins mktiga delta. I sder ser Bilbo ocks" PRINT "Minas Tirith, staden med sina vita murar och mnga torn. Men mitt emot, p" PRINT "andra sidan floden str en annan fstning, Minas Morgul. ver Mordors berg" PRINT "stiger "; IF ZRESIST > .8 THEN PRINT "svaga rksljor." IF ZRESIST <= .8 AND ZRESIST > .5 THEN PRINT "svart rk." IF ZRESIST <= .5 THEN PRINT "mktiga pelare av svart rk mot en svart himmel." PRINT "Till sist ser Bilbo s gat, Saurons ga, i Svarta tornet." CASE 157 IF PP(24) = R AND CASE157 = 0 THEN CASE157 = 1 PRINT "Frst r det svrt att se skillnad mellan Lavskgge och en hg trdstubbe" PRINT "med bara tv bjda grenar i behll. Men s ser Bilbo in ett egendomligt" PRINT "ansikte med ett svepande mossliknande skgg och tv bruna gon med stnk" PRINT "av grnt skimmer. gonen ser intrngande p Bilbo." PRINT "Lavskgge bjuder Bilbo p ent-vatten.": ZF = 1: ZW = 1: ZE = 1: ZF1 = 0: ZW1 = 0: ZE1 = 0 END IF CASE 183 IF CASE183 = 0 THEN CASE183 = 1 PRINT "Intill str en hg stenstaty med avslaget huvud. I huvudets stlle sitter" PRINT "en grovhuggen sten med ett grinande ansikte pmlat. Ett enda eldrtt ga" PRINT "r mlat mitt i pannan." END IF CASE 184, 186 IF PP(28) = 185 THEN PRINT "Orchervakter syns vid stra brofstet." CASE 199 IF PP(29) = R THEN PRINT "I tunneln lever Honmonstret, en enorm spindelvarelse som lever av dem" PRINT "som vgar sig in i grottan." END IF CASE 200 IF CASE200 = 0 THEN CASE200 = 1 PRINT "Men stigen r inte precis det frsta Bilbo lgger mrke till. I norr bara" PRINT "hundra meter frn Bilbo ligger en stor fstning intill klippan, tre etager" PRINT "murverk som sticker ut i spetsvinkliga bastioner. I ster utbreder sig ett" PRINT "svart taggigt landskap inhljt i rk. Bilbo ser nu Eldens berg, som utsnder" PRINT "vg efter vg av gldande lava utefter sina sidor. Bilbo ser Tornet, men fr-" PRINT "mr bara se t det hllet en kort sekund. S ser han nedt. Stigen vrider mot" PRINT "norr och frenar sig med den breda vg som lper frn fstningen sterut." END IF CASE 203 PRINT "Frn stenstoderna kommer ett tjutande ljud som tillkallar orcherna." PP(31) = R: VS(204, 4) = 0 CASE 148, 214, 219 SLUT = -1 CASE 216 IF ROLD = 215 AND SP(7) = 0 THEN PRINT "Allt tyngre knns ringen att bra nr Bilbo nrmar sig Elden," PRINT "dr ringen en gng smiddes av den Mrke Hrskaren." END IF CASE 225 IF SP(7) = 0 THEN SP(7) = 255 PRINT "Effekten blir densamma som om bara ringen kt ner, men det fr inte" PRINT "Bilbo veta ngot om.": SLUT = -1 END IF CASE 226 PRINT "Omkring sig ser Bilbo hur Saurons vlde strtar i gruset. Torn och fstnings-" PRINT "verk, murar och hela berg strtar samman och frsvinner i virvlande moln." PRINT "Jorden skakar som i febervnda, hela sltten hvs och brister, eld och nga" PRINT "vller upp ur kratrar och sprickor. Just som marken hller p att ge vika" PRINT "under Bilbos ftter snker sig frn ovan Gwaihir, rnen, och fngar upp" PRINT "honom. Bort frn Mordor brs Bilbo av Gwaihir, bort frn mrkret och det" PRINT "uppdrag som nu blivit fullbordat." SLUT = -1 CASE ELSE END SELECT IF TITTA THEN TITTA = 0: GOTO se RETURN strid: ' ************************** STRID *********************************** IF RING AND N <> 3 AND N <> 29 AND N <> 35 THEN RETURN IF SP(7) <> 0 AND SP(7) <> R AND (N = 3 OR N = 35) THEN RETURN IF SP(41) = 0 AND R > 207 AND NIGHT THEN PRINT "I mrkret tas Bilbo fr en orch dr han gr i orcherrustningen.": RETURN TIMEACK = 0 B$ = Bilbo$ + "anfalls av " + P$(N) + ". " X = ZPOWER(N) - ZFIGHT + .8 * RND - .4 'skada SELECT CASE N CASE 18 IF X < .2 THEN B$ = B$ + "Men Bilbo driver dem p flykten. " CASE 32 IF SP(41) = 0 THEN B$ = B$ + "Visserligen ser Bilbo nstan ut som en orch i rustningen, men s hr i dagsljuset r det ingen som tar fel. " CASE 19, 20, 21, 28, 31, 33, 36 IF X < .2 THEN B$ = B$ + "Bilbo slss tappert och ddar en av dem. ": SP(4) = R ELSE B$ = B$ + "De hugger ned Bilbo med sina kroksablar. " END IF CASE 27 IF X < .1 THEN B$ = B$ + "Nr Gollum ser Bilbos vapen sjunker han ihop till en liten hg p marken. " B$ = B$ + "- Dda oss inte, dda oss inte, jmrar han sig. - Vi lovar att vara s snlla, s snlla, visst min Sskatt, visst. " ZRESIST(N) = .1 END IF CASE 29 B$ = B$ + "Hon strtar fram mot Bilbo med sin oformliga uppsvllda kropp gungande mellan de bgnande spindelbenen och utdelar hugg efter hugg med sina giftklor och taggar. " IF X < ZI AND (SP(8) = 0 OR SP(14) = 0) THEN B$ = B$ + "Men nr hon kastar sig ver honom, vrker hon sig med hela sin tyngd ner p det upptriktade svrdet. " B$ = B$ + "En sklvning gr genom spindelkroppen, hon vltrar sig t sidan och med ett spr av grnt slem efter sig " B$ = B$ + "kryper hon tillbaka in i sina gngar. " END IF CASE ELSE END SELECT IF X < .1 THEN B$ = B$ + "Bilbo klarar sig oskadd." ELSEIF X > ZI THEN GOSUB printout: PRINT "Bilbo ddas av "; P$(N); ".": SLUT = -1 ELSE ZI = ZI - X END IF GOSUB printout: TIME = TIME + 15 + 15 * RND IF N <> 27 THEN PP(N) = 255 ZEXPER = ZEXPER + ZPOWER(N) / 15 RETURN gameover: ' ********************** GAME OVER ******************************* IF SP(7) = 0 THEN PRINT "Ringen frs till Sauron. Den mrke hrskarens makt r nu obegrnsad." PRINT "Spelet r slut inte bara fr Bilbo..." ELSE PRINT "Hr slutar sagan om Bilbo." END IF DO: FRAGA = 7: L = 1: GOSUB inputt LOOP UNTIL A$ = "S " OR A$ = "H " IF A$ = "S " THEN SCREEN 0: CLS : SYSTEM IF A$ = "H " THEN VNNEXT = 17 RETURN whynomove: ' ***************** VARFR KUNDE INTE BILBO G ******************* IF R = 12 THEN PRINT "- Men frresten, vad ska jag dr att gra? tnker Bilbo och vnder om." IF R = 20 OR R = 44 OR R = 27 OR (R = 47 AND VS = 4) THEN PRINT "- Om jag skulle bada i floden, tnker Bilbo. Men s ngrar han sig." IF (R = 31 AND VS = 2) OR (R = 43 AND VS = 4) THEN PRINT "Frjan ligger p den andra sidan." IF R = 33 THEN PRINT "Bilbo frsker trnga fram genom hasselsnren men trasslar bara in sig." IF R = 45 AND VS = 2 THEN PRINT "Bilbo skakar i gallret, men porten r och frblir lst." IF R = 42 OR (R = 43 AND VS = 3) OR (R = 47 AND VS = 1) THEN PRINT "Efter en stunds vandring kommer Bilbo fram till en hg, ogenomtrnglig": PRINT "hck. Han vnder tillbaka.": TIME = 60 + RND * 30 IF (R = 112 AND VS = 4) OR (R = 113 AND VS = 2) THEN PRINT "Hallen delas av en bred och till synes bottenls spricka som r omjlig": PRINT "att hoppa ver." IF (R = 112 OR R = 113) AND VS = 3 THEN PRINT "Elden hindrar Bilbo frn att komma fram." IF (R = 135 OR R = 136 OR R = 140 OR R = 141) AND VS = 1 THEN PRINT "Bilbo orkar inte paddla mot strmmen." IF (R = 135 OR R = 140) AND VS <> 1 THEN PRINT "Det gr inte att komma iland hr." IF ((R = 137 AND VS = 2) OR (R = 138 AND VS = 4)) AND SP(3) = R THEN K = 136: PRINT "Bilbo kliver i bten och stter ut i floden." IF ((R = 142 AND VS = 2) OR (R = 143 AND VS = 4)) AND SP(3) = R THEN K = 141: PRINT "Bilbo kliver i bten och stter ut i floden." IF (R = 176 AND VS = 3) OR (R = 177 AND VS = 2) OR (R = 188 AND VS = 4) THEN IF NOT RING THEN PRINT "Vakterna stller sig i vgen fr Bilbo." ELSE PRINT "Osynlig smyger Bilbo frbi vakterna men porten r lst." END IF IF R = 183 THEN PRINT "Vgen mot sder ser inbjudande ut, men t det hllet har Bilbo ingenting": PRINT "att gra." IF R = 196 AND VS = 2 THEN PRINT "Bilbo frstr att han inte r vlkommen i spkstaden och avstr grna frn": PRINT "att g t det hllet." IF R = 202 AND VS = 4 THEN PRINT "En osynlig kraft hller tillbaka Bilbo." IF R = 220 OR R = 221 THEN PRINT "Bergssidan ver stigen r fr brant fr att tillta klttring." RETURN ' ********************** VRIGA SUBRUTINER ********************************** newscreen: VIEW PRINT: COLOR 6: LOCATE 22, 1 PRINT ""; STRING$(70, 205); "" PRINT ""; : PRINT USING "##"; DAT; : RESTORE tmonth: FOR I = 1 TO MON: READ A$: NEXT: PRINT " "; A$; ""; : LOCATE 23, 79: PRINT "" PRINT ""; : PRINT USING "##.##"; HOUR + MIN / 100; : PRINT " "; : LOCATE 24, 79: PRINT ""; : LOCATE 25, 1 PRINT ""; STRING$(70, 205); ""; IF AUTO THEN LOCATE 24, 9: PRINT "*"; GOSUB vadserman suddarad: LOCATE 24, 11: PRINT SPACE$(68); VIEW PRINT 1 TO 21: COLOR COL: LOCATE 21, 1 RETURN vadserman: RESTORE tVS: FOR I = 1 TO VS: READ VSN$: NEXT RUM$ = RUM$(R, VS): IF RUM$ = "" THEN RUM$ = RUM$(R, 1) IF LEN(RUM$) < 71 THEN R$ = RUM$ ELSE R$ = LEFT$(RUM$, INSTR(RUM$, ".") - 1) R$ = MID$(R$, 3): RL$ = LEFT$(R$, 1) IF RL$ >= "a" AND RL$ <= "z" THEN RL$ = CHR$(ASC(RL$) - 32) R$ = RL$ + MID$(R$, 2) LOCATE 23, 9: PRINT SPACE$(70): LOCATE 23, 9: PRINT VSN$; ": "; R$; RETURN inputt: VIEW PRINT: COLOR 6: RESTORE tfraga FOR I = 1 TO FRAGA: READ A$: NEXT LOCATE 24, 11: PRINT A$: X = 12 + LEN(A$) L = X + L - 1: L0 = 0: A$ = "": A0$ = "": A = 0: WHILE INKEY$ <> "": WEND DO: LOCATE 24, X: PRINT CHR$(219); : LOCATE 24, X DO: A$ = UCASE$(INKEY$): LOOP UNTIL A$ <> "" IF A$ = "" THEN A$ = "" IF A$ = "" THEN A$ = "" IF A$ = "" THEN A$ = "" IF A$ = "" THEN A$ = "E" IF A$ = "" THEN A$ = "E" A0 = ASC(A$) IF A0 = 0 THEN A = ASC(RIGHT$(A$, 1)) J = (A = 72) * 1 + (A = 77) * 2 + (A = 80) * 3 + (A = 75) * 4 + (A = 71) * 5 + (A = 59) * 6: J = -J IF J > 0 AND J < 5 THEN VS = J: GOSUB vadserman IF J = 5 THEN A0 = 13: A0$ = "G" IF J = 6 THEN AUTO = (AUTO <> -1): LOCATE 24, 9 IF AUTO THEN PRINT "*"; ELSE PRINT " "; END IF ELSEIF A0 = 8 AND L0 > 0 THEN X = X - 1: L0 = L0 - 1: LOCATE 24, X: PRINT " "; : A0$ = LEFT$(A0$, L0) ELSEIF A0 > 31 AND A0 < 154 AND X <= L THEN PRINT A$; : X = X + 1: L0 = L0 + 1: A0$ = A0$ + A$ END IF LOOP UNTIL A0 = 13 OR A0 = 27 IF A0 = 27 THEN A0$ = "" A = VAL(A0$): A$ = A0$ IF A$ = "" AND NOT HAMT AND NOT SPAR AND VN <> 12 THEN A$ = "VNTA" IF A$ = "M" THEN A$ = "T OCH DRICK" IF A$ = "K" THEN A$ = "ANVND KARTAN" A$ = A$ + " ": GOTO suddarad anykey: LOCATE 25, 20: PRINT "Tryck ngon tangent fr att fortstta"; anykey1: WHILE INKEY$ <> "": WEND WHILE INKEY$ = "": WEND RETURN printout: DO: J = INSTR(B$, " "): IF J = 0 THEN J = LEN(B$) C$ = LEFT$(B$, J): B$ = MID$(B$, J + 1) IF POS(0) + LEN(C$) > 78 THEN PRINT PRINT C$; LOOP UNTIL B$ = "" PRINT RETURN vilkensak: FOR SN = 1 TO ANTSAK JS = INSTR(J1, A$, " " + S1$(SN)) IF JS >= J1 AND JS <= J2 THEN EXIT FOR NEXT SN IF SN > ANTSAK THEN SN = 0 RETURN vilkensak2: 'fr frgor FOR SN = ANTSAK + 1 TO ANTSAK + XSAK JS = INSTR(J1, A$, " " + S1$(SN)) IF JS >= J1 AND JS <= J2 THEN EXIT FOR NEXT SN IF SN > ANTSAK + XSAK THEN SN = 0 RETURN vilkenperson: FOR PN = 1 TO ANTPERS JP = INSTR(J1, A$, P1$(PN)) IF JP >= J1 AND JP <= J2 THEN EXIT FOR NEXT PN IF PN > ANTPERS THEN PN = 0 IF PP(PN) <> R THEN PN = 0 RETURN flyttaperson: IF PP(N) = 255 THEN RETURN M = MOVE(N, 0): M = M + 1: IF MOVE(N, M) = 0 THEN M = 1 MOVE(N, 0) = M K = PP(N): PP(N) = MOVE(N, M) IF K = R AND PP(N) <> R AND SLEEPX = 0 THEN PRINT P$(N); " ger sig av." IF K <> R AND PP(N) = R AND SLEEPX = 0 THEN PRINT P$(N); " kommer." IF N = 3 AND PP(N) > K THEN EAST = -1 ELSE EAST = 0 RETURN germat: J = 0: B$ = "" IF FOOD < 30 THEN FOOD = 30: J = 1 IF WATER < 30 THEN WATER = 30: J = 1 IF J = 1 THEN B$ = P$(N) + " ger proviant till Bilbo. " RETURN minska: J0 = 0: I0 = 0: C$ = S0$(SN): OK = 0 FOR I = 1 TO LEN(C$) J = VAL(MID$(C$, I, 1)): IF J > 0 THEN I0 = I: J0 = J: EXIT FOR NEXT I IF J0 > 0 THEN J0 = J0 - 1: OK = -1: S0$(SN) = LEFT$(C$, I0 - 1) + CHR$(J0 + 48) + MID$(C$, I0 + 1): IF J0 = 0 THEN SP(SN) = 255 RETURN posinlist: J = 0: B$ = "x" WHILE B$ <> "slut" AND INSTR(A$, B$) = 0: READ B$: J = J + 1: WEND RETURN nollagarb: FOR I = 0 TO 10: GARB(I) = 0: NEXT: RETURN omfel: IF EGA = 0 AND SPEL = 0 THEN SCREEN 0: WIDTH 80, 25: CLS COLOR 14 LOCATE 10, 35: PRINT "B I L B O" LOCATE 12, 35: PRINT " ver 2.1" LOCATE 14, 35: PRINT " av" LOCATE 16, 35: PRINT "Nils Eng" RESUME start0 ELSEIF NAMN$ <> "" THEN SCREEN 0: CLS : PRINT "Kan inte ladda "; NAMN$ T! = TIMER: WHILE TIMER - T! < 2: WEND: SYSTEM END IF BEEP: CLOSE : IF SPAR THEN RESUME spara ELSE IF HAMT THEN RESUME haemta FRAGA = 8: L = 0: GOSUB inputt: RESUME ' ******************************** TEXTER *********************************** tmove: DATA "","","r ","","befinner sig ","","gr ","" DATA "gr in ","har gtt in ","gr ut ","har gtt ut ","gr fram ","har gtt fram " DATA "vandrar ","","fortstter ","","str ","" DATA "sitter ","","kommer ","har kommit ","kommer in ","har kommit in " DATA "kommer ut ","har kommit ut ","kommer fram ","har kommit fram " DATA "r vilse ","","ser ","","snavar vidare genom ","" DATA "trnger sig vidare genom ","","tar sig fram genom ","" DATA "vadar ","","Vgen gr genom ","" DATA "frs in ","har frts in ","hoppar ner ","har hoppat ner ","klttrar ","har klttrat " DATA "","i ","p ","utanfr ","vid ","ver ","bland ","lngs ","mot ","till " tfraga: DATA ?,Hur mnga kg mat?,Hur mnga l vatten?,"Skriv filnamn:" DATA "Skriv ordet:","Svara p kungens frga (rn/bt):" DATA Vill du hmta sparat spel eller sluta (h/s)? DATA "Rtta felet, tryck sedan RETURN." tmonth: DATA jan,feb,mar,apr,maj,jun,jul,aug,sep,okt,nov,dec tVS: DATA N,,S,V tSam: DATA skottar sn,ptar i jorden,rensar ogrs,arbetar med fruktskrden tTom: DATA "Kom lillan lull, lilla gull, min pulla" DATA Ltt hoppar sparv fastn stormmoln rulla. DATA "Gamle Tom Bombadill han r en lustig fuling," DATA klarbl hans rock och varje sko han br en guling. DATA ... ljus ver bladknoppar; daggdropp i dunet DATA vind ver kullarna; klockblom i tunet ... tsjunga: DATA Den stig jag vandrar gr och gr DATA frn hemmets drr dr upp den rann. DATA Lngt bort i vrlden fr dess spr DATA som jag ska flja om jag kan DATA med idog fot tills vid dess slut DATA den i ett vgskl rinner ner DATA dr tusen stigar mynnar ut DATA och sedan vet jag inte mer. DATA P hrden sprakar elden glatt DATA "i huset str vr sng i natt," DATA "men vi r inte trtta mer:" DATA runt hrnet kanske snart vi ser DATA "ett trd, en sten, som funna bli," DATA som ingen annan sett n vi. DATA "Trd och blommor, grs och blad" DATA Skynda stad! Skynda stad! DATA "Till Vattnadal, dr alver bor" DATA i glntor under hgfjllsflor DATA vi rida ver hed och myr DATA och vet ej var vr framtid bor. DATA "Bakom oss skrck, framfr oss dd!" DATA Vr sng str under himmel rd DATA men en gng r vr mda all DATA "vr frd r ndad, slut vr nd." tskogen: DATA Skogens mrker ttnar alltmer kring Bilbo. DATA Trden drar sig allt nrmare och Bilbo kan inte se mer n en liten bit framt. DATA Det r s tyst i skogen att varje steg ekar i Bilbos ron. DATA Bilbo fr en knsla av att vara iakttagen av trden. DATA Ingen ljusning kan anas i skogen och luften knns tung att andas. DATA Bilbo kmpar vidare genom skogen. tVitte: DATA Bilbo kommer in i en klyfta med branta vggar. Klyftan vrider mot sder. DATA t norr vxer en mur av taggiga buskar. Enda framkomliga vg r mot sder. DATA Bilbo hittar en stig bort frn lven. Men omrkligt vrider den mot sder. DATA Det r som om ngon oknd makt stakat ut en osynlig vg ner mot lven. tkrog: 'siffrorna tiondelar fr ZRESIST DATA 49Hemska saker har man hrt om Gamla skogen DATA 89Men det lr ocks finnas rter med mrkliga och goda egenskaper dr DATA "49Ni pratar om hemska stllen, d ska ni beska kummelgastarna p kummelsarna" DATA "79Och hmta skatterna som de ruvar p, den som vgar" DATA 89Jag hrde att ngon hittat athelas-blad vid Vderklint DATA "49Det gller att vara vaken i de trakterna, fr gr man ner sig i trsken dr hjlper inga blad" DATA 13Det r ingen id att frska st emot de nya herrarna frn Mordor DATA "" tGandalf: DATA Gollum jagar dig. Han vill ha tillbaka sin skatt som du tog ifrn honom DATA "Anvnd inte ringen om du inte mste. Ju mer du anvnder den, desto strre makt fr den ver dig. Men det finns stt att minska ringens makt" DATA Det gller att knna sin styrka DATA Ger du dig bortom Dimmiga bergen s akta dig fr Saruman svar: 'SN, antal personer som svarar (0=alla), PN fr dessa DATA 5,8,4,5,6,12,22,23,24,25 DATA Guld r orsak till mnga olyckor DATA 5,0 DATA Den som hade guld nd DATA 7,2,5,6 DATA "Ringen mste slngas i Orodruin. Om Sauron fr tag p Hrskarringen r det ute med oss" DATA 7,1,27 DATA "Ringen r min Ssskatt" DATA 8,2,1,6 DATA Du minns vl hur du fick ditt svrd DATA 9,2,5,6 DATA Din brynja smidde dvrgarna av mithril DATA 17,0 DATA Athelasblad hjlper sr att lkas DATA 27,2,5,6 DATA Mithril r den vrdefullaste metallen. Och den bsta till rustningar. Din brynja smiddes av mithril DATA 51,2,5,6 DATA Du har vl en ordbok DATA 52,5,5,6,22,23,25 DATA "Sauron vill gra sig till hrskare ver alla. Han vill att hela vrlden skall styras frn Svarta tornet i Mordor" DATA 52,0 DATA Sg inte det namnet hgt DATA 53,1,6 DATA "Gollum heter egentligen Smagol. Innan du tog ringen frn honom hade han den under mnga r" DATA 54,0 DATA "Gandalf gr, trollkarlen, knner vl du" DATA 55,2,5,6 DATA De Svarta ryttarna r Saurons tjnare DATA -1 flersaker: DATA Orodruin,OROD,Sauron,SAUR,Gollum,GOLLUM,Gandalf,GAND,Svarta ryttare,SVART DATA x,x,x,x,x,x,x,x,x,x