Down in the depths of darkness you go. Armed with only your computer and your keen mind, you have decided to take on the forces of evil. You may be on a desert island, inside a haunted house or castle (as in this program) or trapped in a cave system on a planet 'somewhere in a galaxy far away'. Adventure games take place in all of these scenarios and a thousand more besides. Come with us now as we discover the excitement of the world of Adventure, with The Bannochburn Legacy.
The word 'adventure' is used to describe the class of computer games in which the player moves through an alternative reality. In this 'other world' there are monsters to be fought, treasures to be discovered, maps to be made and puzzles to be solved.
Many people feel that Adventure games are the most exciting games which can be played with the BBC Micro, so we knew we'd have to include one for you in this collection. And what a big program it is, occupying over 16K (17062 bytes, to be exact).
One feature of true Adventure games is that the reality they model is consistent. That is, the world created within the program is solid and the parts of the world do not shift in a random fashion. In a properly constructed Adventure, the rivers stay in place, the dungeon walls to not mysteriously move and shift every time you turn your back, and objects you put down in one cave within an underground labyrinth do not suddenly reappear of their own volition one hundred caves away.
And so it is with this program. Map-making is one of the true Adventure-player's skills and delights. Working your way through an imaginary (but self-consistent) environment, tackling monsters and collecting treasures as you go, is only fascinating if the world you are exploring is mappable. The world of The Bannochburn Legacy is mappable.
In this program, all the activities (except for the very beginning) take place within the castle. This strange monolith contains a number of monsters, including 'an angry warlock' and 'a fire-breathing Fearbringer', who wander through the castle while you are playing the game, waiting for a chance to leap upon you and tear you limb from limb. The castle also contains bottles of magic potion, chests which contain good and bad surprises, sheets of papyrus with magic spells written on them, and more besides. To tell you of everything you will meet would diminish the game somewhat.
The aim of the game is to find the Black Lagoon which lies beneath the castle, but is entered from an ordinary-looking door. The location of the Black Lagoon can change from game to game, although it will not move once a game is underway. This ensures that your interest is maintained in the game even after you first manage to map it.
You are endowed with three 'attributes' when you play: magic, strength and wisdom. You play the whole game in terms of attributes, choosing to battle within the attribute in which you feel strongest, and in which you feel the particular monster is weakest. Your attributes change and develop as the game progresses, gaining value when you win a battle, and diminishing when you lose one.
When you first run the program, you'll see the following:
Please enter your first name ?Ian the Brave Hi there, Ian the Brave Please stand by ... Ian the Brave, your attributes are : Magic : 2 Strength : 4 Wisdom: 4 You are at the entrance to an ancient, forbidding-looking castle. You are standing on the North side of the castle, and as you look South, towards the tumbling structure, you notice the entrance portal is open and unguarded. What do you want to do now ? Go South
The final question ('What do you want to do now ?') comes after most room-descriptions in the game, and you need to give one of the following answers:
N | go north |
S | go south |
E | go east |
W | go west |
F | fight (this is one of the two possible answers you can give when confronted by a monster) |
R | run (this is the other answer and it is not always accepted. 'No, you must stand and fight,' you may be told) |
Q | quit (this is used if you wish to terminate the game before the end) |
L | look (redisplays description of current location) |
Magic : 2 Strength : 9 Widsom: 4 Wealth: £301 This is the most magnificent room in the castle, the Great Hall, with massive hammerbeam roof. You can leave it by the double doors to the North or by those to the East behind which you can hear music playing. Through the windows in the West wall, you can see the Contoured Garden, and beyond that, through windows of a room hung with many, many fine paintings. You see a small bottle engraved with curious, twisted letters ... Will you drink the potion which you can see inside the bottle ? Yes It contained a potion which weakens you further ... The room contains a fire- breathing Fearbringer. His Wisdom is 6 while he has a strength rating of 5 and his Magic skill is 5 What do you want to do now ? Fight The Fearbringer's Magic is 5 Strength is 5 and Wisdom is 6 Which characteristic will you fight with (M/S/W) ? Strength The fight table for this melee reads -1 The melee carries a cost/reward of 5 The monster attacks and the fight is underway
The story of Bannochburn Castle is simple, but tragic. In the famed War of the Clans which ravaged northern Scotland in the closing years of the fifteenth century, the Laird of Bannochburn engaged the services of Wee Sporran McMerlin, a sorcerer originally in the employ of King James in the Edinburgh Court. When the bloodthirsty McKinna clan joined forces with the equally intemperate McClaren hordes, and together attacked Bannochburn, the Laird employed McMerlin to invoke a spell to protect the castle forever.
Unfortunately, Wee Sporran's intelligence was not as good as his magic, and instead of conjuring up some spells to look after the inhabitants, he simply conjured up a storm to protect the castle. The Laird and his retainers were slaughtered, but the castle remained intact. It survived right up to this day, and your task now is to explore it and try to seek out its secrets and gold and slay the Guardian of the Black Lagoon so that the current Bannochburn Clan (now living above a dry cleaner's in Glasgow) can regain their rightful inheritance. You feel that they'll be pretty grateful to you if you manage to slay the Guardian and thus rid the castle of the spooky inhabitants Wee Sporran placed within the walls so many years ago to protect it.
Note that once you enter the castle, there is no way out but through. You cannot leave again by the front entrance, so there is no room for second thoughts.
Good luck, and may the Guardian fall to your mighty powers.
10 REM The Bannochburn Legacy 20 30 *TV 255 40 MODE 7 50 PROC_INIT 60 REPEAT 70 CLS 80 IF M(7)=0 AND S(7)=0 AND W(7)=0 THEN PRINT"This adventure has ended."'"Y ou have exhausted all your powers."''"Yo u fought bravely and well,"'"but could n ot endure."'''"Farewell my friend ... "' ''':PROC_QUIT 90 VDU 26,12 100 PRINT N$;", your attributes are : "' 110 IF M(7)>0 THEN PRINT"[spc3]Magic : ";M(7) 120 IF S(7)>0 THEN PRINT"Strength : ";S(7) 130 IF W(7)>0 THEN PRINT" Widsom : ";W(7) 140 IF MONEY>0 THEN PRINT" Weath : £";MONEY 150 VDU 28,0,24,39,VPOS+1,14 160 PROC_PAUSE 170 Z$="" 180 PROC_ROOM 190 M=0:IF Z>1 THEN IF RND(1)>.5 THE N PROC_CONTENTS 200 PROC_PAUSE 210 PROC_ACTION 220 PROC_PAUSE 230 UNTIL FALSE 240 250 DEF PROC_MELEE 260 ROLL=RND(6) 270 VICTORY=0 280 IF (DIFF<0 AND ROLL>ABS(DIFF)) OR (DIFF>0 AND ROLL<=DIFF) OR (DIFF=0 AND R OLL<4) THEN VICTORY=1 290 PROC_PAUSE 300 ENDPROC 310 320 DEF PROC_MONSTER 330 IF Q=0 THEN ENDPROC 340 PRINT 350 ON Q GOSUB 380,390,400,410,420 360 PROC_PAUSE 370 ENDPROC 380 PRINT"There is an angry Warlock in "'"the room. He has a Magic"'"rating of ";M(1)'"His Strength is ";S(1);" and"'"h is Wisdom is ";W(1):RETURN 390 PRINT"The room contains a fire-"'" breathing Fearbringer. His"'"Wisdom is " ;W(2);" while he"'"has a strength rating of ";S(2)'"and his Magic skill is ";M(2 ):RETURN 400 PRINT"Horrors! You've stumbled in on"'"the hiding place of an awful"'"Soul threat. You can see at a"'"glance his St rength is ";S(3)'"his Magic ability rate s ";M(3)'"and his Wisdom is ";W(3):RETUR N 410 PRINT"You've tripped in the dark." :PROC_PAUSE:PRINT"Something awakes. Oh, you're face"'"to face with Gravelpit, th e"'"Kneecrusher, who has Magic of ";M(4) '"Strength of ";S(4);" and Wisdom"'"of " ;W(4):RETURN 420 PRINT"This room holds the dreaded" '"enemy of all who enter the"'"Castle, W olving of Wolf Glass"'"with Strength of ";S(5);" plus"'"Wisdom of ";W(5);" and"' "Magic of ";M(5):RETURN 430 440 VDU 26,12,15 450 PRINT'"You have stumbled on to the " 460 PRINT"marshy mud surrounding the" 470 PRINT"Black Lagoon underneath the" 480 PRINT"castle. To escape from the" 490 PRINT"castle you must fight The" 500 PRINT"Guardian of the Black Lagoon ." 510 PRINT 520 PRINT"The fight must involve all" 530 PRINT"attributes...and you'll need " 540 PRINT"a total of 10 to escape ..." 550 PRINT''"Press SPACE BAR to continu e":REPEAT UNTIL GET=32:PRINT'' 560 IF MONEY>0 THEN PRINT"You have £" ;MONEY;" worth of gold" 570 PROC_PAUSE 580 PRINT'"The Guardians attributes :" 590 PRINT"[spc3]Magic : ";M(6) 600 PRINT"Strength : ";S(6) 610 PRINT" Wisdom : ";W(6) 620 PRINT'"Your attributes are :"' 630 PRINT"[spc3]Magic : ";M(7) 640 PRINT"Strength : ";S(7) 650 PRINT" Wisdom : ";W(7) 660 PRINT''"Press SPACE BAR to continu e":REPEAT UNTIL GET=32:PRINT'' 670 IF MONEY<100 THEN 930 680 PRINT'"You can buy attribute point s" 690 PRINT"for `100 each ..." 700 PRINT"If you want to buy any, ente r" 710 PRINT"the initial of the attribute " 720 PRINT"followed by the number of" 730 PRINT"that attribute you want." 740 PRINT"Enter 'N' when you've got" 750 PRINT"all the attributes you want" 760 PRINT'"Attribute (M/S/W or N) ? "; 770 REPEAT E$=GET$ 780 IF E$>"Z" THEN E$=CHR$(ASC(E$)-3 2) 790 UNTIL INSTR("NSWN",E$)>0 800 IF E$="N" THEN PRINT"None" 810 IF E$="W" THEN PRINT"Wisdom" 820 IF E$="S" THEN PRINT"Strength" 830 IF E$="M" THEN PRINT"Magic" 840 IF E$="N" THEN 930 850 INPUT"Amount ",AM 860 IF MONEY-AM<1 OR AM<100 THEN 850 870 MONEY=MONEY-AM 880 IF E$="M" THEN M(7)=M(7)+AM DIV100 890 IF E$="S" THEN S(7)=S(7)+AM DIV100 900 IF E$="W" THEN W(7)=W(7)+AM DIV100 910 PRINT'"[spc3]Magic : ";M(7)'"Stren gth : ";S(7)'" Wisdom : ";W(7) 920 IF MONEY>99 THEN 760 930 CLS 940 PRINT'"Now for the Ultimate Test . .." 950 PROC_PAUSE 960 PRINT''"Press RETURN when you're" 970 PRINT"brave enough to fight "; 980 REPEAT UNTIL GET=32:PROC_PAUSE:CLS 990 PRINT'"Fist, Magic ... " 1000 PRINT'"You : ";M(7);TAB(20);"Guard ian : ";M(6) 1010 DIFF=ABS(M(7)-M(6)) 1020 PRINT'"The difference is ";DIFF 1030 IF M(7)>M(6) THEN PRINT"in your fa vour." ELSE PRINT"and the Guardian has t he edge" 1040 PROC_PAUSE 1050 K=M(6)+M(7) 1060 Cost=RND(K) 1070 PRINT'"This round carries a penalt y" 1080 PRINT"of ";Cost;" attribute points ":PROC_PAUSE 1090 PROC_EFFECTS 1100 DIFF=M(7)-M(6) 1110 IF DIFF>5 THEN DIFF=DIFF-6:GOTO 11 10 1120 IF DIFF<-5 THEN DIFF=DIFF+6:GOTO 1 120 1130 PROC_MELEE 1140 IF VICTORY=1 THEN M(7)=M(7)+Cost:P RINT"And you've won...and so" 1150 IF VICTORY=0 THEN M(7)=M(7)+Cost:P RINT"And you've lost...and so" 1160 IF M(7)<1 THEN M(7)=0 1170 PRINT"now have ";M(7);" Magic poin ts..." 1180 PROC_PAUSE 1190 PRINT''"Press RETURN when you're r eady" 1200 PRINT"to continue this epic strugg le"; 1210 REPEAT UNTIL GET=13:CLS 1220 PRINT'"Now it's time for a match o f" 1230 PRINT"Strength, where your rating" 1240 PRINT"is ";S(7);" and the Guardian 's" 1250 PRINT"Strength rating is ";S(6) 1260 DIFF=ABS(S(7)-S(6)) 1270 PRINT'"The difference is ";DIFF 1280 IF S(6)>S(7) THEN PRINT"in the Gua rdian's favour" ELSE PRINT"in the your f avour" 1290 PROC_PAUSE 1300 K=S(6)+S(7) 1310 Cost=RND(K) 1320 PRINT'"The round carries a penalty " 1330 PRINT"of ";Cost;" attribute points .":PROC_PAUSE 1340 DIFF=S(7)-S(6) 1350 PROC_EFFECTS 1360 IF DIFF>5 THEN DIFF=DIFF-6:GOTO136 0 1370 IF DIFF<-5 THEN DIFF=DIFF+6:GOTO 1 370 1380 PROC_MELEE 1390 IF VICTORY=1 THEN S(7)=S(7)+Cost:P RINT"You're the Victor, and so" 1400 IF VICTORY=0 THEN S(7)=S(7)+Cost:P RINT"You're the Loser, and so" 1410 IF S(7)<1 THEN S(7)=0 1420 PRINT"you now have ";S(7);" streng th points" 1430 PROC_PAUSE 1440 PRINT''"Press the RETURN key when" 1450 PRINT"you have stopped trembling" 1460 PRINT"enough to face the third," 1470 PRINT"and final challenge ..."; 1480 REPEAT UNTIL GET=13 1490 PROC_PAUSE:CLS 1500 PRINT'"Now it's time for a match o f" 1510 PRINT"wisdom, where your rating" 1520 PRINT"is ";W(7);" and the Guardian 's" 1530 PRINT"wisdom rating is ";W(6) 1540 DIFF=ABS(W(7)-W(6)) 1550 PRINT'"The difference is ";DIFF 1560 IF W(6)>W(7) THEN PRINT"in the Gua rdian's favour" ELSE PRINT"in your favou r" 1570 PROC_PAUSE 1580 K=W(6)+W(7) 1590 Cost=RND(K) 1600 PRINT'"Now, this final challenge" 1610 PRINT"carries a huge penalty" 1620 PRINT"of ";Cost;" attribute points ":PROC_PAUSE 1630 DIFF=W(7)-W(6) 1640 IF DIFF>5 THEN DIFF=DIFF-6:GOTO 16 40 1650 IF DIFF<-5 THEN DIFF=DIFF+6:GOTO 1 650 1660 PROC_MELEE 1670 PROC_EFFECTS 1680 IF VICTORY=1 THEN W(7)=W(7)+Cost:P RINT"And you defeated the Guardian!" 1690 IF VICTORY=0 THEN W(7)=W(7)-Cost:P RINT"And the Guardian got the better"'"o f you ";N$;"!!" 1700 IF W(7)<1 THEN W(7)=0 1710 PROC_PAUSE 1720 CLS 1730 PRINT''"And now, at the end of the " 1740 PRINT"final battle, your position" 1750 PRINT"is :[spc3]Magic ... ";M(7) 1760 PRINT"[spc6]Wisdom ... ";W(7) 1770 PRINT"[spc4]Strength ... ";S(7) 1780 SUM=M(7)+S(7)+W(7) 1790 PRINT''"Well, ";N$;", your" 1800 PRINT"attribute total is ";SUM 1810 PROC_PAUSE 1820 IF SUM<10 THEN 1920 1830 PRINT'"You needed at least 10 poin ts" 1840 PRINT"to win the game, and you've" 1850 PRINT"done it, ";N$;"!":PROC_PAUSE 1860 PRINT'''''"You've succeeded, O her o of" 1870 PRINT"these dark and dangerous" 1880 PRINT"times. I hereby dub thee" 1890 PRINT"SIR ";N$;" ... Arise..." 1900 PROC_QUIT 1910 1920 PRINT"Unfortunately, you did not" 1930 PRINT"end up with the 10 points" 1940 PRINT"you needed, so it is all ove r" 1950 PRINT'"You fail to escape the clut ches" 1960 PRINT"of the Guardian .... ":PROC_ PAUSE 1970 PRINT"You fought valiantly, but wi ll" 1980 PRINT"now be consumed ...." 1990 PROC_PAUSE:PROC_PAUSE:PROC_EFFECTS :PRINT"[fs1]UHHHhhheer rr[fs7]":PROC_PAU SE:PROC_EFFECTS:PROC_PAUSE:PROC_QUIT 2000 2010 DEF PROC_ACTION 2020 PRINT 2030 Q%=Q 2040 D=4:IF MID$(B$(Z),9,1)="0" OR MID$ (B$(Z),9,1)=" " THEN D=1:IF RND(1)>.8 AN D Z>1 THEN PROC_CONTENTS:GOTO 2040 2050 ACCEPT$="QNSEWFRL" 2060 PRINT'"What do you want to do now ? "; 2070 Z$=FN_COMMAND(ACCEPT$):IF Z$="Q" T HEN PROC_QUIT 2080 IF Z$="L" THEN PROC_ROOM:GOTO 2060 2090 ACCEPT$="QNSEWFRL" 2100 VDU 15 2110 IF Q%>0 AND INSTR("NSEW",Z$)>0 THE N PRINT'"Te ";M$(Q);" blocks your way ou t.":GOTO 2060 2120 IF D=4 AND LEFT$(Z$,1)<>"F" THEN D =0:GOTO 2260 2130 IF LEFT$(Z$,1)="F" THEN 2230 2140 IF Z$="N" AND LEFT$(B$(Z),2)="00" THEN PRINT"No exit.":GOTO 2060 2150 IF Z$="S" AND MID$(B$(Z),3,2)="00" THEN PRINT"There is no door that way":G OTO 2060 2160 IF Z$="E" AND MID$(B$(Z),5,2)="00" THEN PRINT"That is not possible":GOTO 2 060 2170 IF Z$="W" AND MID$(B$(Z),7,2)="00" THEN PRINT"You can't walk through walls !":GOTO 2060 2180 IF Z$="N" THEN Z=VAL(LEFT$(B$(Z),2 )):ENDPROC 2190 IF Z$="S" THEN Z=VAL(MID$(B$(Z),3, 2)):ENDPROC 2200 IF Z$="E" THEN Z=VAL(MID$(B$(Z),5, 2)):ENDPROC 2210 IF Z$="W" THEN Z=VAL(MID$(B$(Z),7, 2)):ENDPROC 2220 IF LEFT$(Z$,1)<>"F" THEN ENDPROC 2230 IF RIGHT$(B$(Z),1)="0" THEN PRINT" There is nothing to fight against!":GOTO 2060 2240 IF Z$="FL" THEN D=RND(2) 2250 IF D=1 THEN PRINT"Which direction ? ";:ACCEPT$="NSEWQ":Q%=0:GOTO 2070 2260 IF D=2 THEN PRINT"No!! You must st and and fight":PROC_PAUSE 2270 PRINT'"The ";M$(Q);"'s Magic is "; M(D)'"Strength is ";S(Q);" and Wisdom is ";W(Q) 2280 PRINT'"Which characteristic will y ou fight"'"with (M/S/W) ? "; 2290 REPEAT Z$=GET$ 2300 IF Z$>"Z" THEN Z$=CHR$(ASC(Z$)-3 2) 2310 UNTIL Z$="M" OR Z$="S" OR Z$="W" 2320 IF Z$="M" THEN HUM=M(7):MON=M(Q):P RINT"Magic" 2330 IF Z$="S" THEN HUM=S(7):MON=S(Q):P RINT"Strength" 2340 IF Z$="W" THEN HUM=W(7):MON=W(Q):P RINT"Wisdom" 2350 DIFF=HUM-MON 2360 IF DIFF>5 THEN DIFF=DIFF-6:GOTO 23 60 2370 IF DIFF<-5 THEN DIFF=DIFF+6:GOTO 2 370 2380 PRINT"The fight table for this mel ee reads ";DIFF 2390 Cost=ABS(DIFF)+RND(6) 2400 PROC_PAUSE 2410 PRINT"The melee carries a cost/rew ard of ";Cost 2420 FI=RND(2)-1:PROC_PAUSE:VDU 26,12 2430 IF FI=0 THEN PRINT"The monster att acks and the"'"fight is underway." 2440 IF FI=1 THEN PRINT"You attack firs t, an the"'"battle is joined ..." 2450 PROC_EFFECTS 2460 ROLL=RND(6) 2470 VICTORY=0 2480 IF (DIFF<0 AND ROLL>ABS(DIFF)) OR (DIFF>0 AND ROLL<=DIFF) OR (DIFF=0 AND R OLL<4) THEN VICTORY=1 2490 IF VICTORY=1 THEN PROC_HUM_VICT 2500 IF VICTORY=0 THEN PROC_MON_VICT 2510 PROC_PAUSE 2520 PRINT'"After that fight, your" 2530 PRINT"attributes are :"' 2540 PRINT"[spc3]Magic : ";M(7) 2550 PRINT"Strength : ";S(7) 2560 PRINT"& Wisdom : ";W(7) 2570 PROC_PAUSE:PRINT 2580 PRINT"And those of the ";M$(Q);" a re:" 2590 PRINT"[spc3]Magic : ";M(Q) 2600 PRINT"Strength : ";M(Q) 2610 PRINT"& Wisdom : ";W(Q) 2620 B$(Z)=LEFT$(B$(Z),8)+"0"+MID$(B$(Z ),10) 2630 PRINT''"Press SPACE BAR to continu e";:REPEAT UNTIL GET=32:CLS 2640 PROC_CONTENTS:ENDPROC 2650 DEF PROC_HUM_VICT 2660 IF Q=0 THEN D=1 2670 PRINT'"You defeated the ";M$(Q) 2680 IF Z$="M" THEN M(7)=M(7)+Cost:M(Q) =M(Q)-Cost:IF M(Q)<1 THEN M(Q)=0 2690 IF Z$="M" THEN W(7)=W(7)+Cost:W(Q) =W(Q)-Cost:IF W(Q)<1 THEN W(Q)=0 2700 IF Z$="S" THEN S(7)=S(7)+Cost:S(Q) =S(Q)-Cost:IF S(Q)<1 THEN S(Q)=0 2710 ENDPROC 2720 DEF PROC_MON_VICT 2730 PRINT'"The ";M$(Q);" defeated you. " 2740 IF Z$="M" THEN M(Q)=M(Q)+Cost:M(7) =M(7)-Cost:IF M(7)<1 THEN M(7)=0 2750 IF Z$="W" THEN W(Q)=W(Q)+Cost:W(7) =W(7)-Cost:IF W(7)<1 THEN W(7)=0 2760 IF Z$="S" THEN S(Q)=S(Q)+Cost:S(7) =S(7)-Cost:IF S(7)<1 THEN S(7)=0 2770 ENDPROC 2780 2790 DEF PROC_EFFECTS 2800 FOR J=1 TO RND(10)+1 2810 CLS 2820 ON RND(6) GOSUB 2870,2880,2890,2 920,2930,2940 2830 FOR P=1 TO 500+RND(500):NEXT 2840 PRINT' 2850 NEXT J 2860 CLS:ENDPROC 2870 PRINT TAB(RND(30),RND(24));"Bash ! !!!":FOR P=1 TO 400:NEXT:RETURN 2880 PRINT TAB(RND(25),RND(24));"Aaaaaa rghhhh !":FOR P=1 TO 80:NEXT:RETURN 2890 PRINT TAB(RND(35),RND(24));"Rip";: FOR P=1 TO 400:NEXT:PRINT TAB(RND(34),RN D(24));"Tear!":FOR P=1 TO 400:NEXT:RETUR N 2900 FOR E=1 TO 20:PRINT TAB(RND(36));" !!!":FOR P=1 TO 60:NEXT:NEXT:CLS:RETURN 2910 RETURN 2920 FOR E=1 TO 20:PRINT TAB(RND(30),RN D(23));CHR$(128+RND(7));"!*&&*@!!";:FOR P=1 TO 80:NEXT:NEXT E:RETURN 2930 2940 DEF PROC_CONTENTS 2950 REPEAT K=1+RND(8) 2960 UNTIL K<>Z 2970 IF RIGHT$(B$(Z),1)<>"0" THEN ENDPR OC 2980 B$(K)=LEFT$(B$(K),8)+MID$(B$(Z),9, 1)+MID$(B$(K),10) 2990 B$(Z)=LEFT$(B$(Z),8)+"0"+MID$(B$(Z ),10) 3000 IF RND(2)>1 THEN ENDPROC 3010 PRINT 3020 REPEAT CT=RND(5) 3030 UNTIL ((CT<>2) OR (POTION<>1)) A ND ((CT<>3) OR (SCROLL<>1)) AND ((CT<>4) OR (SAFE<>1)) 3040 ON CT GOSUB 3080,3200,3320,3420,30 80 3050 PROC_PAUSE 3060 ENDPROC 3070 3080 CHEST=CHEST+1:IF CHEST=5 THEN RETU RN 3090 PRINT"In front of you is a chest" 3100 PRINT"labelled with a large #";CHE ST 3110 PRINT'"Will you open it ? "; 3120 Z$=FN_YN 3130 IF Z$="N" THEN RETURN 3140 J=RND(3)-1:PROC_PAUSE 3150 IF J=0 THEN CASH=100+RND(300):PRIN T"It holds dragon's gold worth `";CASH:MO NEY=MONEY+CASH:PROC_PAUSE:RETURN 3160 IF J=1 THEN PRINT"A goblin leaps o ut, stabbing you!":LOSS=RND(6):MONEY=MON EY-RND(200):IF MONEY<1 THEN MONEY=0 3170 IF J=2 THEN PRINT"A strange smoke comes out"'"making you sleepy and"'"sapp ing your magic power.":LOSS=RND(6):M(7)= M(7)-LOSS:IF M(7)<1 THEN M(7)=0 3180 PROC_PAUSE:ENDPROC 3190 3200 POTION=1 3210 PRINT"You see a small bottle engra ved" 3220 PRINT"with curious, twisted letter s ..." 3230 PRINT'"Will you drink the potion w hich" 3240 PRINT"you can see inside the bottl e ?"; 3250 Z$=FN_YN 3260 IF Z$="N" THEN RETURN 3270 PROC_PAUSE 3280 IF RND(1)>.6 THEN PRINT"It contain ed a potion to"'"enhance your wisdom.":W (7)=W(7)+RND(6):PROC_PAUSE:RETURN 3290 PRINT"It contained a potion which" '"weakens you further ...":PROC_PAUSE:S( 7)=S(7)-RND(6):IF S(7)<1 THEN S(7)=0 3300 RETURN 3310 3320 SCROLL=1 3330 PRINT"You see a papyrus scroll." 3340 PRINT'"Do you wish to read it ? "; 3350 Z$=FN_YN:IF Z$="N" THEN RETURN 3360 IF RND(2)>1 THEN PRINT"You cannot understand"'"then language ,,,":PROC_PAU SE:RETURN 3370 PRINT"It contains a Magic spell. D o"'"you wish to read it ? "; 3380 Z$=FN_YN:IF Z$="N" THEN RETURN 3390 IF RND(2)>1 THEN PRINT"It was a be neficent spell":PROC_PAUSE:M(7)=M(7)+RND (6):RETURN 3400 PRINT"It was an evil spell":PROC_P AUSE:M(7)=0:S(7)=S(7) DIV 2:RETURN 3410 3420 SAFE=1 3430 PRINT"On the wall is a small, guil ded"'"safe, and infront of"'"it is a key ...":PROC_PAUSE 3440 PRINT"Do you wish to open the safe ? "; 3450 Z$=FN_YN 3460 IF Z$="N" THEN RETURN 3470 IF RND(1)>.3 THEN 3530 3480 PROC_PAUSE:PRINT"A shrieking harpy flies out"'"and sinks its teeth into"'" your throat!" 3490 PROC_PAUSE 3500 PRINT"You grapple with it, and ... ":PROC_PAUSE:PRINT"... finally wring its neck." 3510 S(7)=S(7)-RND(6):IF S(7)<1 THEN S( 7)=0 3520 PROC_PAUSE:RETURN 3530 PRINT"A choir of angelic voices is "'"heard ...":PROC_PAUSE 3540 PRINT'"You are healed and refreshe d ..." 3550 M(7)=M(7)+2:S(7)=S(7)+2:W(7)=W(7)+ 2 3560 PROC_PAUSE 3570 RETURN 3580 3590 DEF FN_YN 3600 LOCAL Z$ 3610 REPEAT Z$=GET$ 3620 IF Z$>"Z" THEN Z$=CHR$(ASC(Z$)-3 2) 3630 UNTIL Z$="Y" OR Z$="N" 3640 IF Z$="Y" THEN PRINT"Yes" ELSE PRI NT"No" 3650 =Z$ 3660 DEF PROC_ROOM 3670 CLS 3680 ON Z GOSUB 3740,3830,3890,3940,403 0,4110,4210,4340,4470,4530,4610,4700 3690 IF Z$="L" THEN 3720 3700 Q=0:IF RND(1)>.81 AND Z>1 THEN Q=R ND(6)-1:B$(Z)=LEFT$(B$(Z),8)+STR$(Q)+MID $(B$(Z),10):PROC_MONSTER:ENDPROC 3710 E$=MID$(B$(Z),9,1):IF E$>"0" AND E $<"6" THEN Q=VAL(E$) 3720 IF Q>0 THEN PROC_MONSTER 3730 ENDPROC 3740 PRINT"You are at the entrance to a n" 3750 PRINT"ancient, forbidding-looking" 3760 PRINT"castle. You are standing on" 3770 PRINT"the North side of the castle ," 3780 PRINT"and as you look South, towar ds" 3790 PRINT"the tumbling structure, you" 3800 PRINT"notice the entrance portal" 3810 PRINT"is open and unguarded" 3820 RETURN 3830 PRINT"You are in the entrance hall ," 3840 PRINT"which is hung with rich" 3850 PRINT"fabrics. Doors lead to the" 3860 PRINT"East and the South, and ther e" 3870 PRINT"is an open portal to the wes t." 3880 RETURN 3890 PRINT"There is only a store room." 3900 PRINT"There is a single exit, back " 3910 PRINT"the way you came in," 3920 PRINT"to the West." 3930 RETURN 3940 PRINT"This small room, which" 3950 PRINT"features an ornate sculpture " 3960 PRINT"of the moon goddess on a" 3970 PRINT"pedestal in the North-east" 3980 PRINT"corner, is the Royal" 3990 PRINT"Presence Chamber. Doors lead " 4000 PRINT"to the South, the West and" 4010 PRINT"to the East ..." 4020 RETURN 4030 PRINT"The Hall of Plots, a" 4040 PRINT"wooden-panelled room" 4050 PRINT"redolent with whispers and" 4060 PRINT"rumours, with exits to the E ast" 4070 PRINT"and to the South from which" 4080 PRINT"comes the smell of sulphur a nd" 4090 PRINT"a weird chanting ..." 4100 RETURN 4110 PRINT"You have entered to Wizard's " 4120 PRINT"Den, with a cauldron bubblin g" 4130 PRINT"over a fire with green flame s" 4140 PRINT"in the South-west corner." 4150 PRINT"This room reeks of burning" 4160 PRINT"sulphur, and the echo of" 4170 PRINT"ancient spells. You can leav e" 4180 PRINT"to the North, the South, or to" 4190 PRINT"to the East." 4200 RETURN 4210 PRINT"You find yourself in a place " 4220 PRINT"which seems quiet and peacef ul." 4230 PRINT"This is the castle's Picture " 4240 PRINT"Gallery, with a large painti ng" 4250 PRINT"of the Legendary Guardian of " 4260 PRINT"the Black Lagoon to the left of" 4270 PRINT"the window in the East wall. Through" 4280 PRINT"the window you can see the m ullioned" 4290 PRINT"windows of the Great Hall ac ross the" 4300 PRINT"Contoured Garden. Exits from the" 4310 PRINT"Gallery are to the North and " 4320 PRINT"to the East ..." 4330 RETURN 4340 PRINT"This is the most magnificent " 4350 PRINT"room in the castle, the Grea t" 4360 PRINT"Hall, with massive hammerbea m" 4370 PRINT"roof. You can leave it by th e" 4380 PRINT"double doors to the North or by" 4390 PRINT"those to the East behind whi ch" 4400 PRINT"you can hear music playing." 4410 PRINT"Through the windows in the W est" 4420 PRINT"wall, you can see the Contou red" 4430 PRINT"Garden, and beyond that, thr ough" 4440 PRINT"windows of a room hung with" 4450 PRINT"many, many fine paintings." 4460 RETURN 4470 PRINT"Sounds of a string quartet" 4480 PRINT"fill this room, the Musician s'" 4490 PRINT"Chamber. You can leave by" 4500 PRINT"doors to the West or by one" 4510 PRINT"to the South ..." 4520 RETURN 4530 PRINT"You are now in the Sanctuary " 4540 PRINT"of Silence, a room whose" 4550 PRINT"calmness may be a deception. " 4560 PRINT"The room is damp and cold. A n" 4570 PRINT"exit leaves the room to the" 4580 PRINT"North "; 4590 IF MID$(B$(10),3,2)="12" THEN PRIN T"and one leaves to the South" 4600 PRINT:RETURN 4610 PRINT"This must be the Vestibule" 4620 PRINT"of Sighs, a dank and clammy" 4630 PRINT"room where legend says the" 4640 PRINT"Guardian of the Black Lagoon " 4650 PRINT"can sometimes be heard at" 4660 PRINT"night. There is a door to th e" 4670 PRINT"North "; 4680 IF MID$(B$(11),3,2)="12" THEN PRIN T"and one leaves to the South." 4690 PRINT:RETURN 4700 GOTO 440 4710 IF MID$(B$(Z),9,1)<>"0" THEN Q=VAL (MID$(B$(Z),9,1):PROC_MONSTER 4720 RETURN 4730 4740 DEF PROC_INIT 4750 AUTHOR$="Ian the Brave" 4760 Z%=RND(-TIME) 4770 Z=1 4780 MONEY=0 4790 CHEST=0 4800 POTION=0 4810 SCROLL=0 4820 SAFE=0 4830 DIM B$(12),M$(6),S(7),M(7),W(7) 4840 INPUT''"Please enter your first na me ",N$ 4850 IF N$="" THEN N$=AUTHOR$ 4860 CLS:PRINT''"Hi there, ";N$ 4870 PRINT''"Please stand by ... "; 4880 4890 FOR T%=1 TO 12 4900 READ B$(T%) 4910 L=RND(1) 4920 Q$=STR$(RND(5)) 4930 IF T%>1 AND T%<11 AND L<.63 THEN B$(T%)=B$(T%)+RIGHT$(Q$,1) 4940 IF T%>10 OR L>.63 THEN B$(T%)=B$ (T%)+"0" 4950 NEXT 4960 L=RND(1) 4970 IF L<.5 THEN B$(11)="091200000" 4980 IF L>=.5 THEN B$(11)="061200000" 4990 5000 FOR T%=1 TO 6 5010 READ M$(T%) 5020 S(T%)=RND(6) 5030 M(T%)=RND(6) 5040 S(T%)=RND(6) 5050 NEXT 5060 5070 S(7)=RND(6) 5080 M(7)=RND(6) 5090 W(7)=RND(6) 5100 PROC_PAUSE 5110 ENDPROC 5120 DATA "000200000" 5130 DATA "00080304" 5140 DATA "00000002" 5150 DATA "00070205" 5160 DATA "00060400" 5170 DATA "05100700" 5180 DATA "04000600" 5190 DATA "02000900" 5200 DATA "00110008" 5210 DATA "06000000" 5220 DATA "09000000" 5230 DATA "00000000" 5240 5250 DATA "Warlock","Fearbringer","Soul threat","kneecrusher","Wolving","Guardia n" 5260 5270 DEF PROC_PAUSE 5280 LOCAL T% 5290 T%=TIME+100 5300 REPEAT UNTIL TIME>T% 5310 ENDPROC 5320 5330 DEF FN_COMMAND(ACC$) 5340 LOCAL COM$,X%,Y% 5350 REPEAT 5360 COM$=FN_UCASE(GET$) 5370 UNTIL INSTR(ACC$,COM$)>0 5380 IF COM$="Q" THEN PRINT"Quit" 5390 IF COM$="N" THEN PRINT"Go North" 5400 IF COM$="S" THEN PRINT"Go South" 5410 IF COM$="E" THEN PRINT"Go East" 5420 IF COM$="W" THEN PRINT"Go West" 5430 IF COM$="F" THEN PRINT"Fight" 5440 IF COM$="R" THEN PRINT"Run away":C OM$="FL" 5450 IF COM$="L" THEN PRINT"Look" 5460 =COM$ 5470 5480 DEF FN_UCASE(CHARS$) 5490 LOCAL OUT$,PSN%,CHAR 5500 OUT$="" 5510 FOR PSN%=1 TO LEN(CHARS$) 5520 CHAR=ASC(MID$(CHARS$,PSN%,1)) 5530 IF CHAR>ASC"Z" THEN CHAR=CHAR-32 5540 OUT$=OUT$+CHR$(CHAR) 5550 NEXT 5560 =OUT$ 5570 DEF PROC_QUIT 5580 PRINT'''"Press SPACE BAR to contin ue";:REPEAT UNTIL GET=32 5590 VDU 26,12,15 5600 PRINT''"Your Adventures are at an end." 5610 PRINT'"Waking from your bed and lo oking" 5620 PRINT"at your clock you have to de cide" 5630 PRINT"on your most important decis ion" 5640 PRINT"of the night." 5650 PRINT'"Do you wake up or go back t o sleep" 5660 PRINT"and do further battles with the" 5670 PRINT"depths of your imagination" 5680 PRINT'"The choice is yours O dream y one." 5690 PRINT"What is your desire ..."'"Aw ake or sleep (A / S) ? "; 5700 REPEAT K$=GET$ 5710 IF K$>"Z" THEN K$=CHR$(ASC(K$)-3 5720 UNTIL K$="A" OR K$="S" 5730 IF K$="S" THEN RUN
3-D Maze/Lodestar
You have to find your way around a maze, searching for the precious Lodestar. Throughout the game you see the view ahead. You are told which doors are open ahead, to the left and to the right. As well, you are able to read the output of the 'Lodestar indicator' which gives you a clue as to how close you are to the goal.
If you find you are lost in the maze, you can use the 'H' (for 'help') option. When you press the 'H' key, you'll see a view showing where you are in the maze and indicating with square 'dots' the path you have travelled so far.
The Lodestar can be in one of a number of positions, and the maze changes to some extent from game to game, so you will take a long time to master the program. Start off slowly with this game, until you're familiar with the representation of the 'view', and you'll be pleased to discover how good you'll get at making your way around the maze. You move through the maze using the cursor keys.
10 REM 3-D MAZE 20 30 ON ERROR GOTO 2140 40 MODE 5 50 PROC_INIT 60 REPEAT 70 PROC_NEWGAME 80 PROC_HELP 90 PROC_PLAY 100 UNTIL NOT FN_ANOTHER 110 END 120 130 DEF PROC_PLAY 140 REPEAT move=move+1 150 N=0 160 COLOUR 2:PRINT TAB(0,8);"Move "; move;"." 170 IF A$<>"h" THEN COLOUR 1:PRINT"Y ou are facing ";A$;"." 180 COLOUR 3:PRINT TAB(0,13);"North: "; 190 IF A%(D%+1,E%)=blank THEN PROC_O PEN:IF A$<>"s" THEN N=N+1 200 IF A%(D%+1,E%)=wall THEN PROC_WA LL 210 PRINT'"South: "; 220 IF A%(D%-1,E%)=blank THEN PROC_O PEN:IF A$<>"n" THEN N=N+10 230 IF A%(D%-1,E%)=wall THEN PROC_WA LL 240 PRINT'"East : "; 250 IF A%(D%,E%+1)=blank THEN PROC_O PEN:IF A$<>"w" THEN N=N+100 260 IF A%(D%,E%+1)=wall THEN PROC_WA LL 270 PRINT'"West : "; 280 IF A%(D%,E%-1)=blank THEN PROC_O PEN:IF A$<>"e" THEN N=N+1000 290 IF A%(D%,E%-1)=wall THEN PROC_WA LL 300 COLOUR 1:PRINT''"Lodestar indica tor"'"reads ";100*(loadx-D%)+(loady-E%); " " 310 PROC_DISPLAY 320 W$=FN_GET_COMMAND 330 IF W$="h" THEN PROC_HELP:GOTO 43 0 340 T$=A$:PROC_CONVERT 350 IF A$="n" AND A%(D%+1,E%)=wall T HEN 320 360 IF A$="s" AND A%(D%-1,E%)=wall T HEN 320 370 IF A$="e" AND A%(D%,E%+1)=wall T HEN 320 380 IF A$="w" AND A%(D%,E%-1)=wall T HEN 320 390 IF A$="n" THEN D%=D%+1 400 IF A$="s" THEN D%=D%-1 410 IF A$="e" THEN E%=E%+1 420 IF A$="w" THEN E%=E%-1 430 B%(D%,E%)=46:IF loadx=D% AND loa dy=E% THEN FOUND=TRUE:GOTO 450 440 IF ABS(loadx-D%)<3 THEN IF ABS(l oady-E%)<3 THEN PRINT TAB(0,30);"You are very close." 450 UNTIL FOUND 460 ENDPROC 470 480 DEF PROC_OPEN 490 COLOUR 2:PRINT"Open":COLOUR 3 500 ENDPROC 510 520 DEF PROC_WALL 530 COLOUR 1:PRINT"Wall":COLOUR 3 540 ENDPROC 550 560 DEF PROC_HELP 570 A%(D%,E%)=42 580 CLS 590 COLOUR 1:PRINT TAB(7);"NORTH" 600 COLOUR 2 610 FOR B%=15 TO 1 STEP -1 620 FOR N%=0 TO 1 630 PRINT " "; 640 FOR C%=1 TO 15 650 IF A%(B%,C%)=42 THEN VDU 17, 1,138+N% ELSE IF B%(B%,C%)=46 AND N%=0 T HEN VDU 32 ELSE IF B%(B%,C%)=46 AND N%=1 THEN VDU 17,3,129 ELSE VDU 17,2,A%(B%,C %) 660 NEXT C% 670 PRINT 680 NEXT N% 690 NEXT B% 700 COLOUR 1:PRINT TAB(7);"SOUTH"; 710 move=move+5 720 PROC_wait(600) 730 CLS 740 A%(D%,E%)=wall 750 ENDPROC 760 770 DEF PROC_NEWGAME 780 RESTORE:CLS 790 COLOUR 1 800 PRINT TAB(6,10);"3-D MAZE" 810 wall=ASC"[fs0]" 820 blank=32 830 FOR B%=1 TO 15 840 FOR C%=1 TO 15 850 A%(B%,C%)=wall:B%(B%,C%)=wall 860 IF C%>1 THEN IF B%>1 THEN IF C %<15 THEN IF B%<15 THEN IF RND(1)>.9 THE N A%(B%,C%)=blank 870 NEXT C% 880 NEXT B% 890 D%=2 900 E%=2 910 FOR F=1 TO 69 920 READ B,C 930 A%(B,C)=blank 940 NEXT F 950 rand=RND(3) 960 loadx=13:loady=14 970 IF rand=1 THEN loadx=2 980 IF rand=2 THEN loady=2 990 A%(loadx,loady)=blank 1000 move=-5:A$="e":T$="e":FOUND=FALSE 1010 ENDPROC 1020 1030 DATA 2,2,2,3,2,4,2,5,2,6,2,7 1040 DATA 3,7,4,7,5,7,5,6,5,5,5,4,5,3,6 ,3 1050 DATA 7,3,7,4,7,5,7,6,7,7,7,8,7,9,9 ,8 1060 DATA 9,9,10,9,10,8,10,7,10,6,10,5, 10,4 1070 DATA 10,3,11,3,12,3,13,3,14,3,14,2 ,7,10 1080 DATA 6,10,5,10,4,10,3,10,2,10,2,11 ,2,12 1090 DATA 2,13,2,14,6,11,6,12,6,13,6,14 ,7,12 1100 DATA 14,12,8,12,8,14,9,12,9,13,9,1 4,10,12 1110 DATA 11,9,11,10,11,11,11,12,12,9,1 3,9,13,10 1120 DATA 13,11,13,12,13,13,13,4,14,14 1130 1140 DEF PROC_DISPLAY 1150 IF N=0 THEN P=8 1160 IF A$="h" THEN A$=T$ 1170 IF A$="n" AND N=1 OR A$="s" AND N= 10 OR A$="e" AND N=100 OR A$="w" AND N=1 000 THEN P=5 1180 IF A$="n" AND N=101 OR A$="e" AND N=110 OR A$="w" AND N=100 THEN P=1 1190 IF A$="n" AND N=100 OR A$="s" AND N=1000 OR A$="e" AND N=10 OR A$="w" AND N=1 THEN P=2 1200 IF A$="n" AND N=1000 OR A$="s" AND N=100 OR A$="e" AND N=1 OR A$="w" AND N =10 THEN P=3 1210 IF (A$="n" OR A$="s") AND N=1100 O R (A$="e" OR A$="w") AND N=11 THEN P=4 1220 IF A$="n" AND N=1101 OR A$="s" AND N=1110 OR A$="e" AND N=111 OR A$="w" AN D N=1011 THEN P=6 1230 IF A$="n" AND N=1001 OR A$="s" AND N=110 OR A$="e" AND N=101 OR A$="w" AND N=1010 THEN P=7 1240 PRINT TAB(0,0); 1250 IF P=1 THEN PRINT"[fs0][fs4] [fs7 ] "'"[fs0][fs4] [fs7] "'"[fs0][fs4] [f s7] "'"[fs0][fc4][fs8][fs8][fc1] "'"[fs2 ][spc4][fc3]" 1260 IF P=2 THEN PRINT"[fs0][fs0][fs0][ fs0][fs4] "'"[fs0][fs0][fs0][fs0][fs4] " '"[fs0][fs0][fs0][fs0][fs4] "'"[fs0][fc6 ][fs9][fs9][fc9] "'"[fs2][spc4][fc3]" 1270 IF P=3 THEN PRINT" [fs5][fs0][fs0] [fs0][fs0]"'" [fs5][fs0][fs0][fs0][fs0]" '" [fs5][fs0][fs0][fs0][fs0]"'" [fc8][fs 9][fs9][fc7][fs0]"'"[fc2][spc4][fs3]" 1280 IF P=4 THEN PRINT" [fs5][fs0][fs0] [fs4] "'" [fs5][fs0][fs0][fs4] "'" [fs5] [fs0][fs0][fs4] "'" [fc8][fs9][fs9][fc9] "'"[fc2][spc4][fc3]" 1290 IF P=5 THEN PRINT"[fs0][fs4] [fs5 ][fs0]"'"[fs0][fs4] [fs5][fs0]"'"[fs0][ fs4] [fs5][fs0]"'"[fs0][fc4][fs8][fs8][ fc5][fs0]"'"[fs2][spc4][fs3]" 1300 IF P=6 THEN PRINT" [fs6] [fs7] "' " [fs6] [fs7] "'" [fs6] [fs7] "'" [fc0 ][fs8][fs8][fc1] "'"[fc2][spc4][fc3]" 1310 IF P=7 THEN PRINT" [fs6] [fs5][fs 0]"'" [fs6] [fs5][fs0]"'" [fs6] [fs5][ fs0]"'" [fc0][fs8][fs8][fc5][fs0]"'"[fc2 ][spc4][fs3]" 1320 IF P=8 THEN PRINT"[fs0][fs0][fs0][ fs0][fs0][fs0]"'"[fs0][fs0][fs0][fs0][fs 0][fs0]"'"[fs0][fs0][fs0][fs0][fs0][fs0] "'"[fs0][fc6][fs9][fs9][fc7][fs0]"'"[fs2 ][spc4][fs3]" 1330 ENDPROC 1340 1350 DEF PROC_CONVERT 1360 IF W$="7" OR A$="h" THEN A$=T$ 1370 IF W$="6" AND T$="n" OR W$="8" AND T$="e" OR W$="5" AND T$="w" THEN A$="s" 1380 IF W$="6" AND T$="s" OR W$="8" AND T$="w" OR W$="5" AND T$="e" THEN A$="n" 1390 IF W$="8" AND T$="n" OR W$="5" AND T$="s" OR W$="6" AND T$="w" THEN A$="e" 1400 IF W$="5" AND T$="n" OR W$="8" AND T$="s" OR W$="6" AND T$="e" THEN A$="w" 1410 ENDPROC 1420 1430 DEF PROC_wait(T) 1440 LOCAL DUMMY 1450 *FX 15 1460 DUMMY=INKEY(T) 1470 *FX 15 1480 1490 ENDPROC 1500 DEF FN_GET_COMMAND 1510 KEY$=GET$ 1520 IF KEY$="H" THEN KEY$="h" 1530 IF KEY$="h" OR KEY$="5" OR KEY$="6 " OR KEY$="7" OR KEY$="8" THEN =KEY$ ELS E 1510 1540 1550 DEF PROC_INIT 1560 DIM A%(15,15),B%(15,15) 1570 *FX 4 2 1580 *KEY 11 "H" 1590 *KEY 12 "5" 1600 *KEY 13 "8" 1610 *KEY 14 "6" 1620 *KEY 15 "7" 1630 VDU 23,0,10,32,0;0;0; 1640 VDU 23,128,&FF,&FF,&FF,&FF,&FF,&FF ,&FF,&FF 1650 VDU 23,129,&18,&18,&00,&00,&00,&00 ,&00,&00 1660 VDU 23,130,&FF,&FE,&FC,&F8,&F0,&E0 ,&C0,&80 1670 VDU 23,131,&FF,&7F,&3F,&1F,&0F,&07 ,&03,&01 1680 VDU 23,132,&F0,&F0,&F0,&F0,&F0,&F0 ,&F0,&F0 1690 VDU 23,133,&0F,&0F,&0F,&0F,&0F,&0F ,&0F,&0F 1700 VDU 23,134,&10,&10,&10,&10,&10,&10 ,&10,&10 1710 VDU 23,135,&08,&08,&08,&08,&08,&08 ,&08,&08 1720 VDU 23,136,&00,&00,&00,&00,&FF,&00 ,&00,&00 1730 VDU 23,137,&FF,&FF,&FF,&FF,&FF,&00 ,&00,&00 1740 VDU 23,138,&00,&18,&3C,&3C,&3C,&18 ,&FF,&FF 1750 VDU 23,139,&BD,&BD,&BD,&3C,&24,&24 ,&24,&66 1760 VDU 23,144,&10,&10,&10,&10,&1F,&20 ,&40,&80 1770 VDU 23,145,&08,&08,&08,&08,&F8,&04 ,&02,&01 1780 VDU 23,146,&01,&02,&04,&08,&10,&20 ,&40,&80 1790 VDU 23,147,&80,&40,&20,&10,&08,&04 ,&02,&01 1800 VDU 23,148,&F0,&F0,&F0,&F0,&FF,&E0 ,&C0,&80 1810 VDU 23,149,&0F,&0F,&0F,&0F,&FF,&07 ,&3,&01 1820 VDU 23,150,&FF,&FF,&FF,&FF,&FF,&E0 ,&C0,&80 1830 VDU 23,151,&FF,&FF,&FF,&FF,&FF,&07 ,&03,&01 1840 VDU 23,152,&0F,&0F,&0F,&0F,&1F,&20 ,&40,&80 1850 VDU 23,153,&F0,&F0,&F0,&F0,&F8,&04 ,&02,&01 1860 ENDPROC 1870 1880 DEF FN_ANOTHER 1890 CLS 1900 COLOUR 1 1910 PRINT TAB(2,3);"CONGRATULATIONS" 1920 COLOUR 2 1930 PRINT''" You have found the" 1940 PRINT"precious loadstar in"; 1950 PRINT;move;" moves." 1960 PRINT'" You are rewarded by"; 1970 PRINT" being given another"; 1980 PRINT" mission :- Again to"; 1990 PRINT" search for another" 2000 PRINT" precious loadstar!" 2010 PRINT''" Do you wish to take"; 2020 PRINT"up this generous !!!"; 2030 PRINT"offer ? "; 2040 *FX 15 1 2050 REPEAT KEY$=GET$ 2060 UNTIL KEY$="Y" OR KEY$="y" OR KE Y$="N" OR KEY$="n" 2070 IF KEY$="Y" OR KEY$="y" THEN =TRUE 2080 COLOUR 1 2090 PRINT"No thanks!" 2100 PRINT''"Be like that then!"' 2110 *FX 4 2120 =FALSE 2130 2140 *FX 4 2150 MODE 7 2160 REPORT:PRINT" at line ";ERL
Orpheus in the Underground
In this game, you are in a system of twenty caves which are joined together by a complex maze of tunnels. The caves are populated by a most unusual crowd of people, who make very specific demands upon you. These demands must be satisfied before you will be allowed to proceed.
You are trying to get to cave number 20. As the game proceeds, you're given the chance to pick up objects (such as a wand or gold) which will come in useful later on to bribe the occupants of the caves. You can only carry four things at a time. Therefore, if you are carrying four objects, you must put one down before you can pick up another.
We suggest you should make a map of the cave interconnections as you proceed. In contrast to some so-called 'Adventure' programs, you'll find that in this game the cave system behaves like a 'coherent reality' by remaining stable during the game. As well, if you put something down in a cave, you'll find it is still there if you later return to the same cave. Although the cave interconnections change from run to run of the game, they do not change during the course of a game. Note that not all the systems generated by this program can be solved.
You will have to try and find your way round occupants which demand objects you do not have. A cave containing 'magic' will move you to a random position within the system. There is a time limit of fifty moves. Your score at the end is related to how few moves it took you to find cave number 20. It can take quite a while for the cave system to be built, so a little patience is required when you first run the game.
As a hint to help you play this, you'll find that generally - but not always - tunnels proceed from lower numbers to higher ones, so that higher numbered tunnels are more likely to be close to 20 than are ones with lower numbers.
10 REM ORPHEUS IN THE UNDERGROUND 20 30 ON ERROR GOTO 2160 40 MODE 7 50 PROC_INITIALISE 60 70 REPEAT 80 PROC_NEWGAME 90 PROC_NOW_GET_OUT_OF_THIS 100 UNTIL NOT FN_ANOTHER 110 END 120 130 DEF PROC_NOW_GET_OUT_OF_THIS 140 X=0:Y=1 150 CLS 160 IF FOODLEFT<1 THEN 900:ENDPROC 170 PROC_LOOK 180 IF LEFT$(F$(Y),1)=" " THEN 460 190 PRINT:PROCdelay(10) 200 PRINT"[fs4]Cave contents :- ";F$(Y ) 210 PRINT"[fs8][fs2]Do you want it (Y/ N) ?[fs9]"; 220 *FX 15 1 230 REPEAT KEY$=GET$ 240 UNTIL KEY$="Y" OR KEY$="y" OR KE Y$="N" OR KEY$="n" 250 PRINT KEY$ 260 IF KEY$="N" OR KEY$="n" THEN 460 270 IF LEFT$(R$(1),1)=" " OR LEFT$(R$( 2),1)=" " OR LEFT$(R$(3),1)=" " OR LEFT$ (R$(4),1)=" " THEN 400 280 PROCdelay(10) 290 PRINT"[fs3]You are carrying too mu ch[fs7]" 300 PRINT"[fs6]Which item do you wish to drop (1-4) ?"; 310 *FX 15 0 320 REPEAT KEY$=GET$ 330 UNTIL KEY$>="1" AND KEY$<="4" 340 S=VAL(KEY$) 350 PRINT KEY$ 360 T$=R$(S) 370 R$(S)=F$(Y) 380 F$(Y)=" " 390 GOTO 450 400 FLAG=TRUE 410 FOR G=1 TO 4 420 IF LEFT$(R$(G),1)=" " THEN R$(G) =F$(Y):F$(Y)=" ":FLAG=G:G=4 430 NEXT G 440 IF FLAG>0 THEN G=FLAG 450 PROC_LOOK 460 IF ASC(D$(Y))=32 THEN 650 470 IF D$(Y)="[fs1]***[fs8]MAGIC[fs9]* **[fs7]" THEN PROC_MAGIC:GOTO 160 480 PROCdelay(10) 490 PRINT'"[fs6]There is a";FNvowel(D$ (Y));" here who wants [fs7]" 500 PRINT"[fs6]";E$(Y);" to let you pr ecede" 510 FOR G=1 TO 4 520 FLAG=0 530 IF R$(G)=E$(Y) AND LEFT$(E$(Y),1 )<>" " THEN FLAG=G:G=4 540 NEXT G 550 IF FLAG>0 THEN G=FLAG 560 IF FLAG>0 THEN 610 570 PRINT"[fs1]You must return to ";X 580 PROCdelay(200) 590 P=X:X=Y:Y=P 600 GOTO 160 610 PRINT"[fs6]and luckily you can obl ige.[fs7]" 620 F$(Y)=R$(G) 630 R$(G)=" " 640 PROCdelay(10) 650 PRINT'"[fs1]Tunnels to ";A(Y,1);", ";A(Y,2);",";A(Y,3);" and ";A(Y,4) 660 REPEAT FLAG=FALSE 670 *FX 15 0 680 INPUT"[fs4]Where do you want to go ",M$ 690 IF LEFT$(M$,1)="Q" OR LEFT$(M$,1 )="q" THEN PROCQUIT 700 M=VAL(M$) 710 FOR G=1 TO 4 720 IF A(Y,G)=M THEN FLAG=TRUE 730 NEXT G 740 IF M=Y THEN PRINT"[fs3]You are a lready there![fs7]" 750 UNTIL FLAG 760 X=Y 770 Y=M 780 IF Y=20 THEN 800 790 GOTO 160 800 CLS 810 PRINT''CHR$(141);"[fs1]You have fo und the exit." 820 PRINTCHR$(141);"[fs1]You have foun d the exit." 830 PRINT'"[fs6]Your score is ";100*(1 00-FOODLFT)+2*FOODLEFT 840 FLAG=FALSE 850 FOR Z=1 TO 4 860 IF R$(Z)<>" "THEN FLAG=TRUE 870 NEXT 880 IF FLAG THEN PRINT'"[fs4]You are a ble to keep your treasure. "; ELSE PRINT "[fs4]Unfortunately you have no treasure !" 890 ENDPROC 900 PRINT''STRING$(40,"*") 910 PRINT'"[fs1]YOU HAVE RUN OUT OF FO OD![fs7]" 920 PRINT'"[fs6]Your last place of res t is in cave ";Y 930 FLAG=FALSE 940 FOR Z=1 TO 4 950 IF R$(Z)<>" " THEN FLAG=TRUE 960 NEXT 970 IF FLAG THEN PRINT"[fs4]Your treas ure is not much good now!"' 980 ENDPROC 990 1000 DEF PROC_LOOK 1010 FOR NL=1 TO 5:PRINT:PROCdelay(10): NEXT 1020 PRINT STRING$(40,"*") 1030 FOODLEFT=FOODLEFT-1 1040 PROCdelay(10) 1050 PRINT '"[fs2]You have enough food to last another[fs7]"'"[fs2]";:IF FOODLE FT>1 THEN PRINT;FOODLEFT;" goes.[fs7]" E LSE PRINT"go only.[fs7]" 1060 PROCdelay(10) 1070 PRINT'"[fs1]You are in cave[fs8]"; Y 1080 PROCdelay(10) 1090 IF X>0 THEN PRINT"[fs1]You have ju st come from cave ";X ELSE PRINT"[fs1]Yo u are about to start on your travels." 1100 IF LEFT$(R$(1),1)>" " OR LEFT$(R$( 2),1)>" " OR LEFT$(R$(3),1)>" " OR LEFT$ (R$(4),1)>" " THEN PRINT'"[fs3]You are c arrying:-" 1110 FOR Z=1 TO 4 1120 IF LEFT$(R$(Z),1)>" " THEN PRINT "[fs1]";Z;" -[fs4]";R$(Z):PROCDELAY(10) 1130 NEXT 1140 ENDPROC 1150 1160 DEF PROCdelay(cc) 1170 FINISH=TIME+cc 1180 REPEAT UNTIL TIME>=FINISH 1190 ENDPROC 1200 1210 DEF PROC_MAGIC 1220 PROCdelay(10) 1230 PRINT' 1240 FOR G1=1 TO 2 1250 FOR G=53 TO 101 STEP 6 1260 SOUND 1,-3*(G-53),G,1 1270 NEXT 1280 PRINT CHR$(141);"[fs6]***[fs1][f s8]M[fs2]A[fs3]G[fs4]I[fs5]C[fs9][fs6]** *[fs7]" 1290 FOR G=101 TO 53 STEP -6 1300 SOUND 1,-3*(G-53),G,1 1310 NEXT 1320 NEXT 1330 X=Y 1340 Y=RND(9)+7 1350 PROCdelay(100) 1360 ENDPROC 1370 1380 DEF FNvowel(W$) 1390 LOCAL C$,L% 1400 L%=0 1410 REPEAT L%=L%+1 1420 C$=MID$(W$,L%,1) 1430 UNTIL C$<>" " 1440 IF C$="A" OR C$="E" OR C$="I" OR C $="O" OR C$="U" THEN ="n "+W$ ELSE =" "+ W$ 1450 1460 DEF PROC_ALLOT 1470 FOR E=1 TO 16 1480 F=RND(18)+1 1490 D$(F)=B$(RND(20)) 1500 E$(F)=C$(RND(20)) 1510 E=RND(19)+1 1520 F$(F)=C$(RND(20)) 1530 IF RND(1)>0.8 THEN D$(F)="[fs1]* **[fs8]MAGIC[fs8]***[fs7]" 1540 NEXT E 1550 ENDPROC 1560 1570 DEF PROC_FILL 1580 PRINT TAB(0,6);"[fs1][fs8]D[fs2]A[ fs3]N[fs4]G[fs5]E[fs6]R[fs9][fs1]- FALL ING ROCKS[fs7]" 1590 PRINT TAB(17);"[fs1]CAVE FILLING![ fs7]" 1600 FOR D=1 TO 20 1610 READ B$(D) 1620 NEXT D 1630 FOR D=1 TO 20 1640 READ C$(D) 1650 NEXT 1660 ENDPROC 1670 DATA UHLAN,AARDVARK,ODILO,AEROLITE ,ALHAMBRA,AMYGDALUS,EGRET,EEL,ELEUSIAN,E NZYME,IBEX,ICENI,IGUANA,ILMENITE,INCA,IN FULA,OCTOPUS,OKAPI,ORIOLE,OTTER 1680 DATA "a SWORD","a MAGIC WAND","a S ILVER KEY","a HAMMER","some GOLD","a DEE P BLUE SAPPHIRE","some DIAMONDS","a SWOR D","a MAGIC WAND","a DEEP BLUE SAPPHIRE" 1690 DATA "a SILVER KEY","a HAMMER","so me GOLD","some DIAMONDS","a SWORD","some GOLD","some GOLD","a HAMMER","a SWORD", "a MAGIC WAND" 1700 1710 DEF PROC_BUILD 1720 IF GOES<>1 THEN CLS 1730 PRINT TAB(0,6);"[fs1][fs8]D[fs2]A[ fs3]N[fs4]G[fs5]E[fs6]R[fs9][fs1]- EXPLOSIVES[fs7]" 1740 PRINT TAB(17);"[fs1]CAVE BUILDING! [fs7]" 1750 FOR B=1 TO 20 1760 REPEAT 1770 FOR C=1 TO 4 1780 REPEAT 1790 A(B,C)=B+INT(RND(7)-RND(6) ) 1800 UNTIL NOT (A(B,C)=B OR A(B ,C)<1 OR A(B,C)>20) 1810 NEXT C 1820 UNTIL NOT(A(B,1)=A(B,2) OR A(B ,1)=A(B,3) OR A(B,2)=A(B,4) OR A(B,3)=A( B,4)) 1830 NEXT B 1840 ENDPROC 1850 1860 DEF PROC_NEWGAME 1870 GOES=GOES+1 1880 FOR C=0 TO 20 1890 B$(C)=" ":C$(C)=" ":D$(C)=" ":E$ (C)=" ":F$(C)=" " 1900 IF C<5 THEN R$(C)=" " 1910 NEXT 1920 RESTORE 1930 PROC_BUILD 1940 PROC_FILL 1950 PROC_ALLOT 1960 FOODLEFT=50 1970 VDU 23,0,10,64,0;0;0; 1980 ENDPROC 1990 2000 DEF PROC_INITIALISE 2010 VDU 23,0,10,32,0;0;0; 2020 PRINT TAB(4,2);CHR$(141);"[fs1]ORP HEUS IN THE UNDERGROUND[fs7]" 2030 PRINT TAB(4,3);CHR$(141);"[fs1]ORP HEUS IN THE UNDERGROUND[fs7]" 2040 GOES=0 2050 DIM A(20,4),B$(20),C$(20),D$(20),E $(20),F$(20),R$(4) 2060 ENDPROC 2070 2080 DEF FN_ANOTHER 2090 PRINT''CHR$(141);"[fs1]Do you wish to play again (Y/N) ?" 2100 PRINT CHR$(141);"[fs4]Do you wish to play again (Y/N) ?"; 2110 *FX 15 2120 REPEAT KEY$=GET$ 2130 UNTIL KEY$="Y" OR KEY$="y" OR KE Y$="N" OR KEY$="n" 2140 IF KEY$="Y" OR KEY$="y" THEN PRINT '"Yes please":=TRUE ELSE PRINT'"No thank s":=FALSE 2150 2160 MODE 7:PRINT 2170 IF ERR=17 THEN PRINT"[fs3]I QUIT![ fs7]":END ELSE REPORT:PRINT" at line ";E RL:END 2180 2190 DEF PROCQUIT 2200 PRINT'"[fs3]Do you really want to quit (Y/N) ?"; 2210 *FX 15 2220 REPEAT KEY$=GET$ 2230 UNTIL KEY$="Y" OR KEY$="y" OR KE Y$="N" OR KEY$="n" 2240 IF KEY$="Y" OR KEY$="y" THEN PRINT '"[fs1]CHICKEN![fs7]":END ELSE PRINT"[fs 1]NO[fs7]":ENDPROC 2250 2260 REM the end
Nuclear Fallout
The scenario for this game, written by Tim Rogers, is not particularly pleasant. Your city is the target for a number of nuclear bombs, and your job is to protect as many people as you can from the nuclear blast. If you have strong objections to the basic idea behind this game, you could still use the new framework to produce a game of your choice, protecting a toy factory from an invasion of wicked gnome-missiles or whatever you like.
The game fits into the general 'Kingdoms' category, that class of computer games which attempts to model reality in some way. These programs expect you to make decisions about the expenditure of limited resources in order to acquire items which are needed for the continued existence of your city, country of planet.
In this case, your resource is money, and you need to buy as much shelter as you can, in order to save the maximum number of people. This analysis of the game suggests that any scenario requiring you to buy a single resource to achieve a specific aim could be slotted into the framework of this program. Essentially, all you would need to change would be the print statements.
The idea, then, is to protect as many people as you can from a nuclear blast. You start off with an amount of money which steadily increases as the game progresses. You must decide whether to buy shelter and use up most of your money, or to save it in order to buy the largest possible area of shelter later on. The only problem with this latter idea is that a nuclear attack could be launched when you have no shelter at all. And if you have no shelter, there will be no survivors.
In most Kingdom-type games, the ruler is assassinated, impeached, lynched or otherwise disposed of, if a certain proportion of the people in his or her care die, whether the deaths occur from famine, plagues of rats, attacks by musclebound Norsemen in long boats, or - as in this case - from a nuclear blast. If more than half your city is wiped out, the hitherto complacent masses (or, at least, those who have survived) will rise up in one coordinated movement and wipe you and your family out.
You must balance your delay in spending money for shelter against the fact that, in this game, the longer you delay, the more likely a nuclear attack becomes. This chance increases and, at the end of the game, it is close to one in one.
Full instructions are included within the game.
10 REM Nuclear Fallout 20 30 MODE 7 40 PROC_Instructions 50 REPEAT 60 PROC_Initialise 70 REPEAT 80 PROC_Show_details 90 PROC_Calculate 100 PROC_Outcome 110 UNTIL year=20 OR revolt 120 UNTIL NOT FN_another 130 END 140 150 DEF PROC_Instructions 160 VDU 23,0,10,32,0;0;0; 170 DIM width(24) 180 FOR altitude=0 TO 24 190 READ width(altitude) 200 NEXT 210 PRINT TAB(10,1);CHR$(141);"[fs1]Nu clear Fallout[fs7]" 220 PRINT TAB(10,2);CHR$(141);"[fs1]Nu clear Fallout[fs7]" 230 PRINT TAB(10,3);"[fs3]============ =========[fs7]" 240 FOR L%=0 TO 24 250 VDU 31,0,L%,131 260 NEXT 270 VDU 28,1,24,39,0 280 PRINT TAB(3,10);CHR$(141);"[fs1]Do you require instructions ?" 290 PRINT TAB(3,11);CHR$(141);"[fs1]Do you require instructions ?" 300 REPEAT KEY$=GET$ 310 UNTIL KEY$="Y" OR KEY$="N" 320 PRINT''' 330 IF KEY$="N" THEN ENDPROC 340 CLS 350 PRINT TAB(0,1);"[fs6]Instructions: [fs7]" 360 PRINT'" You are in charge of civil defence for"; 370 PRINT"a local authority in Britain during a" 380 PRINT"period when Nuclear War with another" 390 PRINT"nation is likely. It is your job to" 400 PRINT"decide each year how much yo u are going"; 410 PRINT"to spend on nuclear fallout shelters."' 420 PRINT" You start off ith a populat ion of" 430 PRINT"10,000 ,£10,000 in cash but no shelters"; 440 PRINT"(measured in cubic metres) i n which to" 450 PRINT"protect your population."' 460 PRINT" Each cubic metre of shelter costs £1." 470 PRINT"The money you do not spend o n shelters" 480 PRINT"has 10% interest added on.Yo u have to" 490 PRINT"decide whether you will save up your" 500 PRINT"money to protect the populat ion later" 510 PRINT"or protect as many people as you can" 520 PRINT"from the start.The chances o f nuclear" 530 PRINT"attack increase every year." 540 ENDPROC 550 560 DEF PROC_Initialise 570 money=10000:population=10000 580 shelters=0:dead=0:attacks=0 590 year=0:revolt=FALSE 600 PRINT'"[fs1]GOOD LUCK[fs6]Press an y key ti play"; 610 *FX 15 1 620 dummy=GET 630 CLS 640 ENDPROC 650 660 DEF PROC_Show_details 670 year=year+1 680 PRINT TAB(12,1);CHR$(141);"[fs2]YE AR ";year 690 PRINT TAB(12,2);CHR$(141);"[fs2]YE AR ";year 700 PRINT'"[fc1]pppppppppppppppppppppp pppp[fs7]" 710 PRINT"[fc1]5[fs7]";TAB(25);"[fc1]j [fs7]" 720 PRINT"[fc1]5[fs3]Chances of attack ";22-year;":1";TAB(25);"[fc1]j[fs7]" 730 PRINT"[fc1]5[fs7]";TAB(25);"[fc1]j [fs7]" 740 PRINT"[fc1][ch163][ch163][ch163][c h163][ch163][ch163][ch163][ch163][ch163] [ch163][ch163][ch163][ch163][ch163][ch16 3][ch163][ch163][ch163][ch163][ch163][ch 163][ch163][ch163][ch163][ch163][ch163][ fs7]" 750 PRINT "Population :";population 760 PRINT'"Shelter[spc4]:";shelters 770 PRINT'"Money[spc6]£";money 780 PRINT'"Dead[spc7]:";dead 790 PRINT'"Nuclear" 800 PRINT "Attacks[spc4]:";attacks 810 ENDPROC 820 830 DEF PROC_Calculate 840 REPEAT 850 PRINT TAB(0,22);SPC(45); 860 VDU 7 870 INPUT TAB(0,22);"[fs6]How much t o spend on shelters `"spend 880 UNTIL NOT((money-spend<0) OR (sh elters+spend<0)) 890 money=money-spend 900 shelters=shelters+spend 910 money=money+INT(money/10+0.5) 920 ENDPROC 930 940 DEF PROC_Outcome 950 CLS 960 IF RND(22-year)=1 THEN PROC_attack ELSE PRINT'"[fs1]No attack." 970 ENDPROC 980 990 DEF FN_another 1000 CLS 1010 IF revolt THEN PROC_revolt ELSE PR OC_win 1020 PRINT'''"[fs8][fs7]Another Game (Y /N) ?"; 1030 REPEAT KEY$=GET$ 1040 UNTIL KEY$="Y" OR KEY$="N" 1050 CLS 1060 =(KEY$="Y") 1070 1080 DEF PROC_attack 1090 VDU 26 1100 attacks=attacks+1 1110 SOUND &10,-10,7,255 1120 FOR altitude=0 TO 24 1130 SOUND &11,0,width(altitude)*8,0 1140 PRINT TAB(0,24-altitude);"[fc1]" ;CHR$(154); 1150 PRINT TAB(19-width(altitude),24- altitude);STRING$(2*width(altitude),CHR$ (255)); 1160 PROC_delay(altitude) 1170 NEXT 1180 SOUND &10,-10,6,20 1190 PROC_delay(200) 1200 FOR altitude=0 TO 24 1210 SOUND &11,0,width(altitude)*8,0 1220 PRINT TAB(0,24-altitude);"[fs3]" ;SPC(38); 1230 PROC_delay(altitude) 1240 NEXT 1250 VDU 28,1,24,39,0 1260 protected=INT(shelters/10+0.5) 1270 PRINT'''"[fs1]Population protected :";protected 1280 killed=population-protected 1290 PRINT'"Number killed :";killed 1300 dead=dead+killed 1310 shelters=shelters-INT(shelters/10+ 0.5) 1320 PRINT'"Shelters left :";shelters 1330 PRINT''"[fs1][fs8]Press Any Key to Continue"; 1340 *FX 15 1 1350 dummy=GET 1360 IF killed/population>0.9 THEN revo lt=TRUE 1370 population=population-killed 1380 CLS 1390 ENDPROC 1400 1410 DEF PROC_revolt 1420 PRINT'''"[fs6]More than half the p opulation died in" 1430 PRINT"[fs6]the blast and the masse s have revolted"; 1440 PRINT"[fs6]against you." 1450 ENDPROC 1460 1470 DEF PROC_win 1480 PRINT'''"[fs6]Well done ..." 1490 PRINT'"[fs6]You have managed to ge t through these" 1500 PRINT"[fs6]troubled times with ... " 1510 PRINT'"[fs2]£";money 1520 PRINT'"[fs2] ";shelters;" cubic me tres of shelter" 1530 PRINT''"[spc5]AND" 1540 PRINT''"[fs2] ";population;" have survived." 1550 ENDPROC 1560 1570 DEF PROC_delay(time) 1580 TIME=0 1590 REPEAT UNTIL TIME>=time 1600 ENDPROC 1610 1620 DATA 14,10,7,5,4,3,2,2,1,1,2,2,4,8 ,10,14,16,17,17,17,14,12,8,4,2